/*
Author: Vikrant Labde
Desc: The Form validation script for any type of form
*/

/*function fnHideShowDiv(id_one,id_two)
	{		
		
		var elem_one = document.getElementById(id_one);
		var elem_two = document.getElementById(id_two);		
		if(elem_one.style.display=="")
		{
				elem_one.style.display = "none";
				elem_two.style.display = "";
		}
		else
		{
				elem_two.style.display = "none";
				elem_one.style.display = "";
		}
	}*/
	function fnHideShowDiv(id_one,id_two)
	{		
		
		var elem_one = document.getElementById(id_one);
		var elem_two = document.getElementById(id_two);		
		if(elem_one.style.display=="none")
		{
				elem_one.style.display = "";
				elem_two.style.display = "none";
		}
		/*if(elem_one.style.display=="")
		{
				elem_one.style.display = "none";
				elem_two.style.display = "";
		}*/
	}
	

	function fnCheck(theElement)
	{
		var theForm = theElement.form, z = 0;
		
		for(z=0; z<theForm.length;z++)
		{
			if(theForm[z].type == 'checkbox')
			{
				theForm[z].checked = theElement.checked;
			}
		}
	}

	function fnEmailCheck (emailStr) {
	var emailPat=/^(.+)@(.+)$/
	
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	
	var validChars="\[^\\s" + specialChars + "\]"
	
	var quotedUser="(\"[^\"]*\")"
	
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	
	var atom=validChars + '+'
	
	var word="(" + atom + "|" + quotedUser + ")"
	
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	
	
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) 
	 {
		 //alert("Email address seems incorrect (check @ and .'s)") // VIKRNT
	 return false
	 }
	var user=matchArray[1]
	var domain=matchArray[2]
	
	// See if "user" is valid
	if (user.match(userPat)==null) {
		// user is not valid
		//alert("The username doesn't seem to be valid.") // VIKRANT
		return false
	}
	
	/* if the e-mail address is at an IP address (as opposed to a symbolic
	   host name) make sure the IP address is valid. */
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		// this is an IP address
	   for (var i=1;i<=4;i++) {
		 if (IPArray[i]>255) {
			 //alert("Destination IP address is invalid!") // VIKRANT
	  return false
		 }
		}
		return true
	}
	
	// Domain is symbolic name
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
	 //alert("The domain name doesn't seem to be valid.") // VIKRANT
		return false
	}
	
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 ||
		domArr[domArr.length-1].length>4) {
	   // the address must end in a two letter or three letter word.
	   //alert("The address must end in a three-letter domain, or two letter country.") //VIKRANT
	   return false
	}
	
	// Make sure there's a host name preceding the domain.
	if (len<2) {
	   var errStr="This address is missing a hostname!"
	   //alert(errStr) // VIKRANT
	   return false
	}
	// If we've got this far, everything's valid!
	return true;
	}
	
	function fnValidatePhone(strPhoneNumber)
	{
		var objRegExp  = /^\([1-9]\d{2}\)\s?\d{3}\-\d{4}$/;	
        var validPhone = objRegExp.test(strPhoneNumber);
        if (!validPhone)
        {
          return false;
        }
		return true;
	}
	
	function fnValidateString(string)
	{
		var strLen = string.length
		var iChars = "*|,\":<>[]{}`\';()@&$#%_-[1-9]";
		for (var i = 0; i < strLen; i++) 
		{
			if (iChars.indexOf(string.charAt(i)) != -1) 
			{
				return false;
			}
		}
		return true;
	}
	
	function trim(stringToTrim) 
	{
		return stringToTrim.replace(/^\s+|\s+$/g,"");
	}
	
	function fnIsNumber(intNumber)
	{
		if(isNaN(intNumber) == true)	
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	//  End -->
	var lightbox = 1;
	function fnValidateForm(obj)
	{
		var frm = obj;
		var len = frm.elements.length;
		var errormsg = "";

		var noserrors = 0
		if(lightbox == 1)
			var linebreak = "<br /><img src='images/error_small.jpg' alt='error' border='0'  /> ";
		else
			var linebreak = "\n";
			
		for(var i=0 ; i<len ; i++) 
		{		
			var eletype = frm.elements[i].type;
			if( (eletype.toLowerCase() != "submit") && (eletype.toLowerCase() != "hidden"))
			{
				if(frm.elements[i].alt != "");
				{
					var arrValue = new Array();
					
					try
					{
						var strValue = "";
						
						if(frm.elements[i].type == 'textarea')
						{
							strValue = frm.elements[i].title;
						}
						else
						{
							strValue = frm.elements[i].alt;
						}
						
						if(frm.elements[i].type == 'select-one')
						{
							strValue = frm.elements[i].title;
						}

						var eleValue =  trim(frm.elements[i].value);

						if(frm.elements[i].type == 'checkbox')
						{
							eleValue = frm.elements[i].checked;
						}
						
						arrValue = strValue.split(/:/);
						var vallength = arrValue.length
						if(vallength > 0)
						{
							for(var j=0 ; j<vallength ; j++) 
							{
								//alert(arrValue[j]);
								var formula = trim(arrValue[j]);
								var arrFormula = formula.split("-");
								if(arrFormula[0] == "M") // MANDATORY FIELD VALIDATION
								{
									if(eleValue == "")
									{
										errormsg = errormsg +  linebreak + arrFormula[1];
										noserrors++;
									}
								}	
								
								if(arrFormula[0] == "E") // EMAIL VALIDATION
								{
									if(eleValue != "")
									{
										if(!fnEmailCheck(eleValue))
										{
											errormsg = errormsg +  linebreak + arrFormula[1];
											noserrors++;
										}
									}
								}	
								
								if(arrFormula[0] == "CHAR") // EMAIL VALIDATION
								{
									if(eleValue != "")
									{
										if(!fnValidateString(eleValue))
										{
											errormsg = errormsg +  linebreak + arrFormula[1];
											noserrors++;
										}
									}
								}

								if(arrFormula[0] == "PH") // PHONE VALIDATION
								{
									if(eleValue != "")
									{
										if(!fnValidatePhone(eleValue))
										{
											errormsg = errormsg +  linebreak + arrFormula[1];
											noserrors++;
										}
									}
								}

								if(arrFormula[0] == "SEL") // SELECT BOX VALIDATION
								{
									
									if(eleValue != "")
									{
										if(eleValue == "")
										{
											errormsg = errormsg +  linebreak + arrFormula[1];
											noserrors++;
										}
									}
								}	

								if(arrFormula[0] == "CHK") // CHECK BOX FIELD VALIDATION
								{
									if(eleValue == false)
									{
										errormsg = errormsg +  linebreak + arrFormula[1];
										noserrors++;
									}
								}	

								if(arrFormula[0] == "NUM") // MANDATORY FIELD VALIDATION
								{
									if(eleValue != "")
									{
										if(!fnIsNumber(eleValue))
										{
											errormsg = errormsg +  linebreak + arrFormula[1];	
											noserrors++;
										}
									}
								}	
								
								if(arrFormula[0] == "MIN") // MINIMUM LIMIT
								{
									var string = eleValue;
									var limit = string.length;
									if(limit < parseInt(arrFormula[1]))
									{
										errormsg = errormsg + linebreak + arrFormula[2];
										noserrors++;
									}								
								}
								
								if(arrFormula[0] == "MAX") // MAXIMUM LIMIT
								{
									var string = eleValue;
									var limit = string.length;
									if(limit > parseInt(arrFormula[1]))
									{
										errormsg = errormsg +  linebreak + arrFormula[2];	
										noserrors++;
									}
								}
								
								if(arrFormula[0] == "BET") // BETWEEN LIMIT
								{
									var string = eleValue;
									var limit = string.length;
									if(limit < parseInt(arrFormula[1]) && limit > parseInt(arrFormula[2]))
									{
										errormsg = errormsg +  linebreak + arrFormula[3];
										noserrors++;
									}
								}	
								
								if(arrFormula[0] == "COMP") // COMPARISION BETWEEN TWO FIELDS
								{
									var compvalue = trim(document.getElementById(arrFormula[2]).value)
									if(compvalue)
									{
										if(arrFormula[1] == "==")
										{
											if(eleValue != compvalue)
											{
												errormsg = errormsg +  linebreak + arrFormula[3];
												noserrors++;
											}
										}
										if(arrFormula[1] == "!=")
										{
											if(eleValue == compvalue)
											{
												errormsg = errormsg +  linebreak + arrFormula[3];
												noserrors++;
											}
										}
									}
								}								
							}
						}
					}
					catch(e)
					{ 
						//
					}
				}	
			}					 
		}
		
		
		
		if(errormsg == "") 
		{
			return true;			
		}
		else 
		{
			if(lightbox == 1)	
			{
				//3 - 175
				var lightheight = 175;
				var forheight = 0;
				if(noserrors > 3) 
				{
					forheight = (noserrors - 3);
					subheight = (25 * forheight);
					lightheight = lightheight + subheight;
				}
				var warning = "<div><img src='images/warning_small.jpg' alt='warning' border='0'  /><br /></div>";
				errormsg =  "<div class='errormessages'>"+warning + errormsg+"</div>";
				errormsg = errormsg + "<div><br /><center><input type='button' value='Ok' onclick='Lightbox.hideBox()' /></center></div>";
				Lightbox.showBoxString(errormsg,350,lightheight);
			}
			else
			{
				alert(errormsg);	
			}
			return false;
		}
		
	}
	
