/**
 *  JAVASCRIPT FORM VALIDATION
 
 * CREATED BY ANANT E. HARAL
 * DATE - 02 Octomber 2008
 
 *  REQUIERD -
 *				Enter Validation Condition In Class Tag
 *				Create One Div Named "formvalidationerror" For Display Error
 *              If Form's Element Conain Border Please Change Code Repalce "1px solid #DADCE0" With Your Border Style
 *
 *	ClassName 			DESCRITION	
 *  mandatory           For mandatory Fields
 *  emailValidation     For Email Address Validation
 *  letNumUnder         FOR Allow Only letters, numbers, and underscores
 *  letterSpace         FOR Allow Only letters and Space 
 *  phoneValidation     FOR Phone Number Validation
 *  numberOnly          FOR Allow Only numbers
 *  matchPassword       FOR Password and Confirm password should be same(use For Both password Element Other wise It Given Error)
 */

var GlobalErrorMessage="";
var GlobalMandatoryErrorMsg="Please specify ";
var LineBreak="<br>";
// Declaring required variables
var Digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var PhoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var ValidWorldPhoneChars = PhoneNumberDelimiters + "+";
// Minimum no of Digits in an international phone no.
var MinDigitsInIPhoneNumber = 7;

var Globalfristpassword="";
function formvalidation(myform)
		{
			
			var formID = myform.id;
			var TotalElement=document.getElementById(formID).elements.length ;
			    GlobalErrorMessage="";
			document.getElementById('formvalidationerror').style.display='none';		
			<!--document.myform.elements.length ;document.getElementById(divId).className 			-->
			for(var index=0; index<TotalElement; index++)
				{
					var ElementName=myform.elements[index].title;
					var ElementClass=myform.elements[index].className;
					myform.elements[index].style.border ="1px solid #DADCE0";
					if(ElementClass.search('mandatory')!=-1)
						{
						validateRequired(myform.elements[index]);	
						}
					if(ElementClass.search('emailValidation')!=-1)
						{
						validateEmail(myform.elements[index]);	
						}
					if(ElementClass.search('letNumUnder')!=-1)
						{
						allowLettterNumUnserscore(myform.elements[index]);	
						}
					if(ElementClass.search('letterSpace')!=-1)
						{
						allowLetterSpace(myform.elements[index]);	
						}
					if(ElementClass.search('phoneValidation')!=-1)
						{
						phonenumberValidation(myform.elements[index]);	
						}
					if(ElementClass.search('numberOnly')!=-1)
						{
						allowNumbmerOnly(myform.elements[index]);	
						}
					if(ElementClass.search('matchPassword')!=-1)
						{
						matchPassword(myform.elements[index]);	
						}
					
				}
				
		if(GlobalErrorMessage!="")
			{
			document.getElementById('formvalidationerror').style.display='block';	
			document.getElementById('formvalidationerror').innerHTML=GlobalErrorMessage;
			return false;
			}
		else
			return true;
		}
	
//------------------------------------ 	TRIM  ------------------------------------
	
function trim(s)
{
return s.replace(/^\s+|\s+$/, '');
}

//------------------------------------ 	Only Number ------------------------------------
function allowNumbmerOnly(field)
	{
	with (field)
		{
		if (isInteger(trim(value))==false)
		  {
			var alertmsg= "The "+ title +" required numeric value only."; 
			style.border ="1px solid #c30";
			GlobalErrorMessage=GlobalErrorMessage+alertmsg+LineBreak;
		   }
		}
	}



function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

//------------------------------------ 	mandatory ------------------------------------
function validateRequired(field)
	{
	with (field)
		{
			//alert(trim(value))
		if (trim(value)==null||trim(value)=="" || trim(value)==0	)
		  {
			var alertmsg= GlobalMandatoryErrorMsg+title; 
			style.border ="1px solid #c30";
			GlobalErrorMessage=GlobalErrorMessage+alertmsg+LineBreak;
		   }
		}
	}

//------------------------------------ 	Email Validation  ------------------------------------
function validateEmail(fld) 
	{
	var error="";
	var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
	var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
	var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
	if (trim(fld.value) != "") 
	{
	 if (!emailFilter.test(tfld)) 
	 	{              //test email for illegal characters
		error = "Please enter a valid email address.";
		} 
	else if (fld.value.match(illegalChars)) 
		{
		error = "The email address contains illegal characters.";
		}
	} 
	
	if(error!="")
		{
		with (fld)
			{
			style.border ="1px solid #c30";
			GlobalErrorMessage=GlobalErrorMessage+error+LineBreak;
			}
		}
	}

//------------------------------------ 	 allow letters, numbers, and underscores  ------------------------------------
   function allowLettterNumUnserscore(fld)
    {
    var error = "";
    var illegalChars = /\W/; // allow letters, numbers, and underscores
	var nonums = /^[0-9]*$/;
	var nochar = /^[A-Za-z]*$/;
	var starting=(fld.value).charAt(0);
	//alert(starting);
	if (trim(fld.value) != "") 
		{
		if (illegalChars.test(fld.value))
		   {
			with (fld)
				{
				error = "The "+ title +" contains illegal characters.";
				style.border ="1px solid #c30";
				GlobalErrorMessage=GlobalErrorMessage+error+LineBreak;
				}
		   }
		}
	}
	
//------------------------------------ 	 allow letters and Space  ------------------------------------
function allowLetterSpace(fld) 
	{
	var noalpha = /^[a-zA-Z ]*$/;
	var illegalChars = /[A-Za-z]/;
	if (trim(fld.value) != "") 
		{
		if (!noalpha.test(fld.value)) 
			{
			with (fld)
				{
				error =title + " contains illegal characters.";	
				style.border ="1px solid #c30";
				GlobalErrorMessage=GlobalErrorMessage+error+LineBreak;
				}
			
			}
		}
	}
	
//------------------------------------ 	 allow Phone Number Validation  ------------------------------------

function phonenumberValidation(Phone)
	{
	if (trim(Phone.value) != "") 
		{
		if (checkInternationalPhone(Phone.value)==false)
			{
			with (Phone)
				{
				error ="Please Enter a Valid Phone Number";	
				style.border ="1px solid #c30";
				GlobalErrorMessage=GlobalErrorMessage+error+LineBreak;
				}
			}
		}
	}



function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
var bracket=3
strPhone=trim(strPhone)
if(strPhone.indexOf("+")>1) return false
if(strPhone.indexOf("-")!=-1)bracket=bracket+1
if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)return false
var brchr=strPhone.indexOf("(")
if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")")return false
if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)return false
s=stripCharsInBag(strPhone,ValidWorldPhoneChars);
return (isInteger(s) && s.length >= MinDigitsInIPhoneNumber);
}

//------------------------------------ 	 Check Both Password Same OR Not  ------------------------------------
function matchPassword(pass)
	{
	if(trim(pass.value) != "")
		{
		if(Globalfristpassword=="")
			{
			with (pass)
				{
				Globalfristpassword=value;	
				error ="Password and Confirm password should be same.";	
				style.border ="1px solid #c30";
				GlobalErrorMessage=GlobalErrorMessage+error+LineBreak;
				}
			}
		else
			{
			if(Globalfristpassword==pass.value)	
				{
				var SorceString="Password and Confirm password should be same."+LineBreak;
				GlobalErrorMessage.replace(SorceString,"");
				}
			}
		}
	}
	