function regValidate()
{
		var msg="";
		var rtnVal	=	true;
		var isOtherErr	=	false;
		var validation="";
		var obj			= document.frmReg;
   
		/*******************************
		if (obj.ref.value.length==0)
		{
			msg	= msg + "Referral Code\n";
			rtnVal=false;
		}
    	*******************************/
		if (obj.ref_1.value.length !=	0 || obj.ref_2.value.length !=	0  || obj.ref_3.value.length !=	0  || obj.ref_4.value.length !=	0  || obj.ref_5.value.length !=	0 )
		{
			if (obj.ref_1.value.length ==	0 || obj.ref_2.value.length ==	0  || obj.ref_3.value.length ==	0  || obj.ref_4.value.length ==	0  || obj.ref_5.value.length ==	0 )
			{
				isOtherErr = true;
				/*alert("You must give all the 5 digits for Referral Code.");*/
				msg	+= "You must give all the 5 digits for Referral Code. \n";
			}
		}
		
		if (obj.uname.value.length==0)
		{
			msg	+="User Name \n";
			rtnVal=false;
		}
		else
		{

		    /*
			if (obj.uname.value.indexOf(" ") > 0)
			{
				rtnVal=false;
				alert("User name can not have a blank space.");
			}
			if (obj.uname.value.indexOf("@") > 0)
			{
				rtnVal=false;
				alert("User name can not have the symbol @.");
			}
			 */
		}
		
		if (obj.pwd.value.length==0)
		{
			msg	+= "Password \n";
			rtnVal=false;
		}
		else
		{
			if (obj.pwd.value.length < 6 )
			{				
				msg	+= "Password must be 6 digits long. \n";
				isOtherErr	=	true;
			}
			
		}
		if (obj.pwd2.value.length==0)
		{
			msg	+= "Confirm Password \n";
			rtnVal=false;
		}
		if (obj.fname.value.length==0)
		{
			msg	+="First Name \n";
			rtnVal=false;
		}

		if (obj.lname.value.length==0)
		{
			msg	+="Last Name \n";
			rtnVal=false;
		}

		if (obj.email.value.length==0)
		{
			msg	+= "Email \n";
			rtnVal=false;
		}
		else
		{
            if ( obj.email.value.indexOf("@") < 0 || obj.email.value.indexOf(".") < 0 )
			{
				isOtherErr	=	true;
				msg	+= "You must give valid email address. \n";								
                        } else if (obj.email.value.toLowerCase().indexOf("spam") > -1 || obj.email.value.toLowerCase().indexOf("abuse") > -1
                                    || obj.email.value.toLowerCase().indexOf("brick.net") > -1
                                    || obj.email.value.toLowerCase().indexOf("mailinator.com") > -1
                                    || obj.email.value.toLowerCase().indexOf("foggy.net") > -1
                                    || obj.email.value.toLowerCase().indexOf("hypertouch.com") > -1
                                    || obj.email.value.toLowerCase().indexOf("beyondsystems.net") > -1 
                                    || obj.email.value.toLowerCase().indexOf("asis.com") > -1
                                    || obj.email.value.toLowerCase().indexOf("qq.com") > -1) {
                                isOtherErr = true;
								msg	+= "This email address is unacceptable as per EliteMate's terms and conditions.  Please select another email address. \n";								
                                
                        }			
		}

		if (obj.add.value.length==0)
		{
			msg	+= "Address \n";
			rtnVal=false;
		}

		if (obj.state.type == "text" && (obj.state.value.indexOf("@") >= 0 || obj.state.value.indexOf(".") >=0))
		{
			msg+="State/Province must be a valid alphabets\n";
			rtnVal=false;
		}
		
		if (obj.state.type == "text" && obj.state.value == '' )
		{
			msg += "State/Providence \n";
			rtnVal=false;
		}

		if (obj.city.value.length==0)
		{
			msg	+= "City \n";
			rtnVal=false;
		}
		
		
		
		if (!rtnVal)
		{
			msg+="You must give : \n"+msg;
			//alert(msg);
		}

		if (obj.pwd.value != obj.pwd2.value)
		{
			rtnVal=false;
			msg	+= "Password must match with confirm Password. \n";
			
		}
		
		if (obj.country.value == 'USA')
		{
			if (!USAValidation(obj)){					
				rtnVal = false;
			}
		}else if (obj.country.value == 'Canada')
		{
			if (!CanadaValidation(obj)){
				rtnVal = false;
			}
		}else if (obj.country.value == 'United Kingdom')
		{
			if (!UKValidation(obj)){
				rtnVal = false;
			}
		}else{
			msg+="";
		}
		
		if (isOtherErr)
		{
			rtnVal	= false;
		}
		
		
		if (msg!=""){
			alert("Please fill in all the data that are required: \n\n"+msg);
			rtnVal	= false;
		}
		
		if (rtnVal) {
		    rtnVal = validateUserName(obj.uname.value);
        }else{
            validateUserName(obj.uname.value);
        }

		if (rtnVal) {
			if(obj.agree2.checked == false) {
				alert(msg	+= "You must agree to the terms and agreements");
				rtnVal = false;
				
				
			}
		}
		
		
		return rtnVal;
	}
	
	
	function validateUserName(user_name) {
			var user_nameLength = user_name.length;
			var character = "";
			var indexOfChar = 0;
			var allowed_chars = "abcdefghijklmnopqrstuvwxyz";
			allowed_chars += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
			allowed_chars +="0123456789";
            allowed_chars +="_";

            //alert(allowed_chars);
			var i = 0;
			while(i < user_nameLength) {
					character = user_name.charAt(i);
					indexOfChar =  allowed_chars.indexOf(character);
					//alert (i+" "+ character + " " +indexOfChar);
					if (indexOfChar < 0){
					alert ("User name must be alphanumeric or contain an underscore.");
					return false;
					}
					i++;
			}
            return true;
	}
	
	function IsAllCharNumbers(input_str) {
			var input_strLength = input_str.length;
			var character = "";
			var indexOfChar = 0;
			var allowed_chars ="0123456789 ";
		    var whiteSpaceCounter = 0;
			var i = 0;
			while(i < input_strLength) {
					character = input_str.charAt(i);
					indexOfChar =  allowed_chars.indexOf(character);
					//alert (i+" "+ character + " " +indexOfChar);
					
					if (character ==' '){
						whiteSpaceCounter = whiteSpaceCounter + 1;
					}
					
					if (whiteSpaceCounter > 1 || indexOfChar < 0){
						return false;
					}
					
					
					i++;
			}
            return true;
	}
	
	function IsAllCharAlphaNumberic(input_str, other_allowed_chars) {
			var input_strLength=0 ;
			var character = "";
			var indexOfChar = 0;
			var allowed_chars = "abcdefghijklmnopqrstuvwxyz";
			allowed_chars += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
			allowed_chars +="0123456789";
			allowed_chars += other_allowed_chars;
            //alert(allowed_chars);
            input_strLength = input_str.length;
			var i = 0;
			while(i < input_strLength) {
					character = input_str.charAt(i);
					indexOfChar =  allowed_chars.indexOf(character);
					//alert (i+" "+ character + " " +indexOfChar);
					if (indexOfChar < 0){
					return false;
					}
					i++;
			}
            return true;
	}
	
	function USAValidation(formObj){
		retnVal = true;
		msg	=  "";
		//checking phone number is numeric
		
		
		if ( formObj.phPrim1.value.length == 0 ||  formObj.phPrim2.value.length == 0 || formObj.phPrim3.value.length == 0 ){
			msg	= msg + "Phone number is invalid\n";
			retnVal = false;
		}
		else if ( !IsAllCharNumbers(formObj.phPrim1.value) ||
        	 !IsAllCharNumbers(formObj.phPrim2.value) ||
        	 !IsAllCharNumbers(formObj.phPrim3.value)  ||
        	 formObj.phPrim1.value.length != 3        ||  
        	 formObj.phPrim2.value.length != 3        ||
        	 formObj.phPrim3.value.length != 4        
        	 ) 
		 {
			 
			 msg	= msg + "Phone number is invalid\n";
			 retnVal = false;
		 }
		 
		 //zip code validation
		 if ( !IsAllCharNumbers(formObj.zip.value) ||
        	 formObj.zip.value.length != 5
		 ){
			  msg	= msg + "Zipcode is invalid"; 
			 retnVal = false;
		 }
		 
		 if (!retnVal){
			alert("Please fill in zipcode and phone number: \n\n"+msg);
			//alert(msg);
		 }
		 
		 return retnVal;
	}
	
	function CanadaValidation(formObj){
		retnVal = true;
		msg	=  "";
		var isZipValid = true;
		
		//checking phone number is numeric
		if ( formObj.phPrim1.value.length == 0 ||  formObj.phPrim2.value.length == 0 ||  formObj.phPrim3.value.length == 0 ){
			msg	= msg + "Phone number is invalid\n";
			retnVal = false;
		}
		else if ( !IsAllCharNumbers(formObj.phPrim1.value) || 
				  !IsAllCharNumbers(formObj.phPrim2.value) || 
				  !IsAllCharNumbers(formObj.phPrim3.value)  || 
				  formObj.phPrim1.value.length != 3  ||	 
				  formObj.phPrim2.value.length != 3 || 
				  formObj.phPrim3.value.length != 4        
        	 ) 
		 {
			 
			 msg	= msg + "Phone number is invalid\n";
			 retnVal = false;
		 }
	
	
		 //zip code validation
		 if ( !IsAllCharAlphaNumberic(formObj.zip.value, "- ") )
		 {
		 	isZipValid = false;
		 	msg	= msg + "Zipcode is invalid"; 
			retnVal = false;
		    
		 }
		 
		  if ( isZipValid && formObj.zip.value.length != 6 &&  formObj.zip.value.length != 7)
		  {
			  msg	= msg + "Zipcode is invalid"; 
			  retnVal = false;
		  }
		
		 if (!retnVal){
			 alert(msg);
		 }
		 
		 return retnVal;
	}
	
function UKValidation(formObj){
		retnVal = true;
		msg	=  "";
		var isZipValid = true;
		
		//checking phone number is numeric
		if ( formObj.phPrim1.value.length == 0){
			msg	= msg + "Phone number is invalid\n";
			retnVal = false;
		}
		else if ( !IsAllCharNumbers(formObj.phPrim1.value))  {
			 msg	= msg + "Phone number is invalid\n";
			 retnVal = false;
		 } else if ( formObj.phPrim1.value.length < 8  )  {
			  msg	= msg + "Phone number is invalid\n"; 
			  retnVal = false;
		  }
	
		 //zip code validation
		 if ( !IsAllCharAlphaNumberic(formObj.zip.value, "- ") )
		 {
		 	isZipValid = false;
		 	msg	= msg + "Zipcode is invalid\n"; 
			retnVal = false;
		    
		 }
		 
		  if ( isZipValid && formObj.zip.value.length != 6 &&  formObj.zip.value.length != 7  &&  formObj.zip.value.length !=  8 )
		  {
			  msg	= msg + "Zipcode is invalid\n"; 
			  retnVal = false;
		  }
		
		 if (!retnVal){
			 alert(msg);
		 }
		 
		 return retnVal;
	}
	
   function refreshOnCountryChange()
	{
	
		var formP = document.frmReg;			
	
		if (formP.country.value == 'USA')
		{	
			formP.elements["statecombo"].style.display= 'block';
			formP.elements["statetext"].style.display= 'none';
			formP.elements["statetext"].size = 1;
			formP.elements["statetext"].style.width = "0px";
			formP.elements["statecombo"].style.width = "120px"
			
			formP.elements["phPrim1"].size = 4;
			formP.elements["phPrim1"].maxLength = 3;
			formP.elements["phPrim2"].style.visibility= 'visible';
			formP.elements["phPrim2"].size= 4;
			formP.elements["phPrim2"].maxLength = 3;
			formP.elements["phPrim3"].style.visibility= 'visible';
			formP.elements["phPrim3"].size= 5;
			formP.elements["phPrim3"].maxLength = 4;
			
			formP.elements["phSecdry1"].size = 4;
			formP.elements["phSecdry1"].maxLength = 3;
			formP.elements["phSecdry2"].style.visibility= 'visible';
			formP.elements["phSecdry2"].size= 4;
			formP.elements["phSecdry2"].maxLength = 3;
			formP.elements["phSecdry3"].style.visibility= 'visible';
			formP.elements["phSecdry3"].size= 5;
			formP.elements["phSecdry3"].maxLength = 4;
					
			formP.elements["zip"].maxLength = 5;
			
		}else{
			
			formP.elements["statecombo"].style.display= 'none';
			formP.elements["statecombo"].style.width = "0px";
			formP.elements["statecombo"].size = 1;
			
			formP.elements["statetext"].style.display= 'block';
			formP.elements["statetext"].size = 12;
			formP.elements["statetext"].style.width = "115px";
			
			formP.elements["phPrim1"].size = 20;
			formP.elements["phPrim1"].maxLength = 18;
			formP.elements["phPrim2"].style.visibility= 'visibility';
			formP.elements["phPrim2"].size= 1;
			formP.elements["phPrim3"].style.visibility= 'visibility';
			formP.elements["phPrim3"].size= 1;
			
			formP.elements["phSecdry1"].size = 20;
			formP.elements["phSecdry1"].maxLength = 18;
			formP.elements["phSecdry2"].style.visibility= 'visibility';
			formP.elements["phSecdry2"].size= 1;
			formP.elements["phSecdry3"].style.visibility= 'visibility';
			formP.elements["phSecdry3"].size= 1;
			
			formP.elements["zip"].maxLength = 12;
			
			 if (formP.country.value == 'Canada')	{
			 
				formP.elements["zip"].maxLength = 7;
				
			formP.elements["phPrim1"].size = 4;
			formP.elements["phPrim1"].maxLength = 3;
			formP.elements["phPrim2"].style.visibility= 'visible';
			formP.elements["phPrim2"].size= 4;
			formP.elements["phPrim2"].maxLength = 3;
			formP.elements["phPrim3"].style.visibility= 'visible';
			formP.elements["phPrim3"].size= 5;
			formP.elements["phPrim3"].maxLength = 4;
				
			formP.elements["phSecdry1"].size = 4;
			formP.elements["phSecdry1"].maxLength = 3;
			formP.elements["phSecdry2"].style.visibility= 'visible';
			formP.elements["phSecdry2"].size= 4;
			formP.elements["phSecdry2"].maxLength = 3;
			formP.elements["phSecdry3"].style.visibility= 'visible';
			formP.elements["phSecdry3"].size= 5;
			formP.elements["phSecdry3"].maxLength = 4;
			}
			
		} 
	}

