/**************************************************
 * FIle Name 	: 	FormHandler.js
 * Date 		:	06.08.2009
 * Author		:	prashant@asdrc.net
 *
 **************************************************
 * include this file in body or in header 
 * 
 **************************************************/
  // field array which has to be check for alert and focus
	var arr_retcode = new Array();
	    arr_retcode["msgSC"]            =   "security_code";
	    arr_retcode["msgFN"]            =   "First_Name" ;
	    arr_retcode["msgLN"]            =   "Last_Name" ;
	    arr_retcode["msgHP"]            =   "Home_Phone" ;
	    arr_retcode["msgWP"]            =   "Work_Phone" ;
	    arr_retcode["msgAL1"]    		=   "Address_Line1" ;
	    arr_retcode["msgAL2"]    		=   "Address_Line2" ;
	    arr_retcode["msgCT"]            =   "City" ;
	    arr_retcode["msgPV"]         	=   "Province" ;
	    arr_retcode["msgPC"]      		=   "Postal_Code" ;
	    arr_retcode["msgEML"]    		=   "Email_Address" ;
	    arr_retcode["msgDSC"]           =   "Descr" ;
	      
	var arr_discode = new Array();
	    arr_discode["msgSC"]            =   " in code";
	    arr_discode["msgFN"]            =   " in First Name" ;
	    arr_discode["msgLN"]            =   " in Last Name" ;
	    arr_discode["msgHP"]            =   " in Home Phone" ;
	    arr_discode["msgWP"]            =   " in Work Phone" ;
	    arr_discode["msgAL1"]    		=   " in Address Line1" ;
	    arr_discode["msgAL2"]    		=   " in Address Line2" ;
	    arr_discode["msgCT"]            =   " in City" ;
	    arr_discode["msgPV"]         	=   " in Province" ;
	    arr_discode["msgPC"]      		=   " in Postal_Code" ;
	    arr_discode["msgEML"]    		=   " in Email Address" ;
	    arr_discode["msgDSC"]           =   " in Descr" ;     
	
	//filed description array
	var arr_flddis = new Array();	    
	    arr_flddis["First_Name"]           =   " in First Name" ;
	    arr_flddis["Last_Name"]            =   " in Last Name" ;
	    arr_flddis["Home_Phone"]           =   " in Home Phone" ;
	    arr_flddis["Work_Phone"]           =   " in Work Phone" ;
	    arr_flddis["Address_Line1"]    	   =   " in Address Line1" ;
	    arr_flddis["Address_Line2"]    	   =   " in Address Line2" ;
	    arr_flddis["City"]                 =   " in City" ;
	    arr_flddis["Province"]         	   =   " in Province" ;
	    arr_flddis["Postal_Code"]          =   " in Postal Code" ;
	    arr_flddis["Email_Address"]        =   " in Email Address" ;
	    arr_flddis["Descr"]                =   " in Comment" ;
		
		
	 // trim string	
	function Trim(s) 
	{
		var temp = s;
		return temp.replace(/^\s+/,'').replace(/\s+$/,'');
	}
	
	/*******************  Captcha Code ***********************************************/			
	function generateCaptchaID()
	{
	    var dt = new Date();
	    var randomnumber = Math.floor(Math.random() * 101);
		
	    var CaptchID = eval(dt.getMonth() + 1) + "" + dt.getDate() + "" + dt.getHours() + "" + dt.getMinutes() + "" + dt.getSeconds()  + "" + randomnumber  ;
	    return Trim(CaptchID) ;
	}
	
	function InitCaptcha()
	{
	    document.getElementById('CaptchaCode').value = generateCaptchaID();
            var src = "https://kcmc.practicemanager.ca/security/securityImages1.inc.php?width=100&height=40&characters=5&captchaID=" + document.getElementById('CaptchaCode').value ;      
		
            document.getElementById('imgCaptcha').src = src  ;
        
	}
	
	
	
	/*******************  Popup Alert Code ***********************************************/				
	
    
    function ShowErrors()
	{ //1		
		var qString =  window.location.search.substring(1) ; //is the part after the question mark		
		qString = Trim(qString);				
		if(qString != '')
		{//2
			// retrive query string variable
			var arrqVar = qString.split("=");
			//arrqVar[0]  variable	
			var sPrompt =  arrqVar[1] ; // message
			var sVar =  Trim(arrqVar[0]);
			sPrompt = sPrompt.replace(/%20/g," ");
			
			if(sVar =='msgSucess' || sVar == 'msgError' || sVar == 'msgSC' ||  sVar == 'msgFN' || sVar == 'msgLN' || sVar == 'msgHP' || sVar == 'msgWP' || sVar == 'msgAL1' || sVar == 'msgAL2' || sVar == 'msgCT' || sVar == 'msgPV' || sVar == 'msgPC' ||  sVar == 'msgEML' || sVar == 'msgDSC')
			{//2.1
				if (sPrompt != '')
				{ //3					
					setFocus(sVar, sPrompt);					
					
				} //3
			}//2.1						
		} //2
		
	} //1	
	
	
	
	
	
	function setFocus(sVar, sPrompt)
	{
	   
	       
	    if(sVar == "msgSucess" || sVar == "msgError" )
	    {
	        alert(sPrompt);
	    }
	    else
	    {
	       
	        var field = arr_retcode[sVar] ;	   
	        if( field == 'undefined')
	        {
    	        
	        }	    
	        else
	        {	      	     
    	      var fld = document.getElementById(field);    	     
    	      if (fld != 'undefined' ||  fld != 'null' )
    	      {
    	        fld.focus();
    	        alert(sPrompt + arr_discode[sVar] );
    	      } 
		      
	        }
	    }
	   
	}
	
	
	
	
	/*******************  Form Validation Code***********************************************/
    function ValidateForm(frm)
    {          
       //validate security code               
        if(Trim(frm.security_code.value) == "")              
        {
            alert("Please enter security code.");
            frm.security_code.focus();    
            return false ;
        }
        
        // check compulsory fileds
        var fileds = frm.FIELDS.value ;        
        var arr_fields = fileds.split("|") ;
		
		if (arr_fields.length >= 1)
        { //1
			
			for(var i=0; i< arr_fields.length ; i++)
            { //2
				if(arr_fields[i].length > 0)
                {//3
					// check if filed have compulsory char to check
                    var arr_filed = arr_fields[i].split(":");
					 if(arr_filed.length >= 1)
					 {//4
					 	//arr_filed[0] filed name
                        if(arr_filed[1] == "1")
						{//5
							// if filed is email address field
                            if(arr_filed[0] == "Email_Address")
							{//6
								if(Trim(document.getElementById(arr_filed[0]).value) == "")
                                {//8                                
                                    document.getElementById(arr_filed[0]).focus();
                                    alert("Input required " + arr_flddis[arr_filed[0]] );
                                    return false ;
                                }//8
								else
								{//8
									var email = Trim(document.getElementById(arr_filed[0]).value); 
									if(!isValidEmail(email)  )
									{
										document.getElementById(arr_filed[0]).focus();
										document.getElementById(arr_filed[0]).select(); 
										return false ;
									}
								}//8
							}//6
							else
							{//6
								 if(Trim(document.getElementById(arr_filed[0]).value) == "")
                                {//7                                
                                    document.getElementById(arr_filed[0]).focus();
                                    alert("Input required " + arr_flddis[arr_filed[0]] );
                                    return false ;
                                }//7
							}//6
						}//5
					 }//4
				}//3				
				
			} //2			
			
		} //1
       
	   
	   //disable submit button 
	    var elsubmit =  document.getElementsByName("submit").item("submit",0)  ;        		 
		elsubmit.style.display = 'none';
        return true ;
       
    }
	
	
	
	
	function isValidEmail(str)
    {    
        var at="@"
        var dot="."
        var lat=str.indexOf(at)
        var lstr=str.length
        var ldot=str.indexOf(dot)
        if (str.indexOf(at)==-1)
        {
            alert("Invalid Email ID");
            return false;
        }

        if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at) + 1  == lstr)
        {
            alert("Invalid Email ID");
            return false;
        }

        if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot) + 1 == lstr)
        {
            alert("Invalid Email ID");
            return false;
        }
        if (str.indexOf(at,(lat+1))!=-1)
        {
            alert("Invalid Email ID");
            return false;
        }
        if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
        {
            alert("Invalid Email ID");
            return false;
        }
        if (str.indexOf(dot,(lat+2))==-1)
        {
            alert("Invalid Email ID");
            return false;
        }
        if (str.indexOf(" ")!=-1)
        {
            alert("Invalid Email ID");
            return false ;
        }
        if (str.indexOf("@@")!=-1)
        {
            alert("Invalid Email ID");
            return false;
        }
        if (str.indexOf("..")!=-1)
        {
            alert("Invalid Email ID");
            return false;
        }
        return true;
    }
