/*
 *   File: user_manager.js
 *
 */

RE_NAME     = new RegExp(/^[A-Z]+([A-Za-z\ \.]+)?$/);
RE_EMAIL    = new RegExp(/^[A-Za-z0-9](([_|\.|\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([_|\.|\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/);
RE_USERNAME = new RegExp(/^[a-z0-9\_]+$/);
RE_DECIMAL  = new RegExp(/^[0-9]{1,8}([\.]{1}[0-9]{1,2})?$/);
RE_NUMBER   = new RegExp(/^[0-9]+$/);
RE_PHONE    = new RegExp(/^((\d\d\d)|(\(\d\d\d\)))?\s*[\.-]?\s*(\d\d\d)\s*[\.-]?\s*(\d\d\d\d)$/);
RE_ZIP      = new RegExp(/^[0-9]{5}(([\-\ ])?[0-9]{4})?$/);

function setupForm(frmName)
{
  
   if(frmName == 'frmComment')
   {   		
   		var frm = document.frmComment;
		   with (frm)
		   {      
		      setRequiredField(commentor_name,  'textbox',   'commentor_name');
		      setRequiredField(email,        	'textbox',   'email');      
		      setRequiredField(country_name,    'textbox',   'country_name');
		   }
	 }
	 else if( frmName == 'frmUpdateShippingAddr'){
	 	   var frm = document.frmUpdateShippingAddr;
		   with (frm)
		   {      
				  setRequiredField(first_name,  	'textbox',   'first_name');
				  setRequiredField(last_name,       'textbox',   'last_name');      
				  setRequiredField(company,    		'textbox',   'company');
				  setRequiredField(address,    		'textbox',   'address');
				  setRequiredField(city,    		'textbox',   'city');
				  //setRequiredField(state,    		'textbox',   'state');
				  setRequiredField(postal_code,    	'textbox',   'postal_code');
				  setRequiredField(country,    		'textbox',   'country');
		   }		
	 }
	 else
	 {
	 		
  	 		var frm = document.frmProposedBook;
		   with (frm)
		   {      		     		     
		      setRequiredField(email,      'textbox',   'email');      
		     
		   }
	 }	   
}

function validateFields(frmName)
{
  
   if(frmName == 'frmComment')
   {
   		 
   		 var frm = document.frmComment;
		   with(frm)
		   {
					   	
		       if (!RE_NAME.exec(commentor_name.value))
		       {
		          highlightTableColumn('commentor_name');
		          alert(ERROR_NAME);
		          return false;
		       }
		      else if (!RE_EMAIL.exec(email.value))
		      {
		          highlightTableColumn('email');
		          alert(ERROR_EMAIL);
		          return false;
		      }		  
			 }
		}
		else if(frmName == 'frmUpdateShippingAddr'){
		}
		else
		{
			
		   var frm = document.frmProposedBook;
		   with(frm)
		   {					   			      
			      if (!RE_EMAIL.exec(email.value))
			      {
		          highlightTableColumn('email');
			          alert(ERROR_EMAIL);
			          return false;
			      }		  
			 }
			 
		}	 
   return true;
}

function doFormSubmit(frmName)
{
	
   requiredFields.length = 0;

   var errCnt = 0;
   
//   alert(frmName);
 //  return false;
   
   if(frmName == 'frmComment')
   		var frm = document.frmComment;
   else if(frmName == 'frmUpdateShippingAddr')
   		var frm = document.frmUpdateShippingAddr;				
   else 
   		var frm = document.frmProposedBook;
   

   // Setup required fields
   setupForm(frmName);

   // Validate form for required fields
   errCnt = validateForm(frm);
  

   if (errCnt)
   {
      alert(MISSING_REQUIRED_FIELDS);
      return false;
   }

   else
   {
      if(validateFields(frmName))
      {
         return true;
      }
      else
         return false;
   }
}

function showAddressInfo()
{
   var frm= document.userManagerForm;

   if(frm.user_type.value=='Employee')
   {
     showDiv('addressInfo');
   }

   else
   {
     hideDiv('addressInfo');
   }
}

function checkDuplicateUser()
{
   var userName = document.userManagerForm.username.value;
   cpaintCall('SELF', 'POST', 'checkusername', userName, uid, callbackCheckDuplicateUser);
}

function callbackCheckDuplicateUser(val)
{
	if(val==1)
	{
     highlightTableColumn('username');
     alert(DUPLICATE_USERNAME);
     document.userManagerForm.username.focus();
	}
  else
     resetTableColumn('username');
}

function checkDuplicateEmail()
{
   var primaryEmail = document.userManagerForm.email.value;
   cpaintCall('SELF', 'POST', 'checkUserEmail', primaryEmail, uid, callbackCheckDuplicateEmail);
}

function callbackCheckDuplicateEmail(val)
{
	if(val == 1)
	{
     highlightTableColumn('email');
     alert(DUPLICATE_EMAIL);
     document.userManagerForm.email.focus();
	}
  else
     resetTableColumn('email');
}
function editShippingAddress(val)
{
	if (val == 'yes') {
		document.getElementById('div_shipp').style.display = 'none';
		document.getElementById('div_edit').style.display = 'inline';		
	}
}