// JavaScript Document
var alertError= false;
function validateRequired(field)
	{
		with (field)
			{
			if (value==null||value==""){
				
				  if(alertError){
					  alert ("Required field missing"); return false;
				  }
				  document.getElementById("err_"+name).innerHTML = "Required field missing";
				  return false
			}else{
				if(!alertError)
				document.getElementById("err_"+field.name).innerHTML = "";
				return true;
				}
			}
	}	

function validateDate(field)
{
	with (field)
	{
		if (value==null||(value.indexOf("-")!=4 && value.indexOf("-")!=7))
		{
			if(alertError)
			{
					  alert ("Required field missing"); return false;
			}
			value="";
			document.getElementById("err_"+name).innerHTML = "Requires valid date";
			return false
		}
		else
		{
			if(!alertError)
				document.getElementById("err_"+field.name).innerHTML = "";
			return true;
		}
	}
}

function validatePositive(field, errorText)
{
	with (field){
		if(isNaN(value) || value<1){
			if(alertError){
				alert (errorText); return false;
			}
			document.getElementById("err_"+name).innerHTML = errorText;
			return false;
		}else{
			if(!alertError)
			document.getElementById("err_"+field.name).innerHTML = "";
			return true;
		}
	}
}

function validateZip(field, errorText){
	var emailpattern=/\b[0-9]{5}(?:-[0-9]{4})?\b/;
	with (field){
		if(!emailpattern.test(value)){
			if(alertError){
				alert (errorText);
				return false;
			}else{
				document.getElementById("err_"+name).innerHTML = errorText;
				return false;
			}
		}else{
			if(!alertError){
				document.getElementById("err_"+field.name).innerHTML = "";
				return true;
			}
		}
	}
}

function validateInteger(field,errorText)
{
	with (field){
		if(isNaN(value)){
			if(alertError){
				alert (errorText); return false;
			}
			document.getElementById("err_"+name).innerHTML = errorText;
			return false;
		}else{
			if(!alertError)
			document.getElementById("err_"+field.name).innerHTML = "";
			return true;
		}
	}
}
	
function validateDecimal(field)
	{
		return true;
	}
	
function validateEmail(field, errorText)
	{
		with (field)
			{
			if (isValidEmail1(value)!="")
			  	{
				  if(alertError) {alert (errorText); return false;}
				  document.getElementById("err_"+name).innerHTML =errorText;
				  return false
				}
			else {
				if(!alertError)
				document.getElementById("err_"+name).innerHTML = "";
				return true;
				}
			}
	}
function validateDropdown(field,errorText)
	{
		
		with (field)
			{
			if (value<2)
			  	{
				  if(alertError) {alert (errorText); return false;}
				 
				  document.getElementById("err_"+name).innerHTML =errorText;
				  return false
				}
			else {
				if(!alertError)
				document.getElementById("err_"+name).innerHTML = "";
				return true;
				}
			}
	}
function validatecreditCard(field, errorText)
{
	var cardRegx=/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{14}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13})$/;
	with(field){
		if(!cardRegx.test(value)){
			if(alertError){
				alert(errorText);
				return false;
			}else{
				document.getElementById("err_"+name).innerHTML =errorText;
				return false;
			}
		}else{
			if(!alertError){
				document.getElementById("err_"+name).innerHTML = "";
				return true;
			}
		}
	}
}
	
function validateURL(field,errorText)
	{
		
		with (field)
			{
			if (!isValidURL(value))
			  	{
				  if(alertError) {alert (errorText); return false;}
				 
				  document.getElementById("err_"+name).innerHTML =errorText;
				  return false
				}
			else {
				if(!alertError)
				document.getElementById("err_"+name).innerHTML = "";
				return true;
				}
			}
	}
	
function isValidEmail1(strEmail) {
	var msg;
	var i;
	var len=strEmail.length;
	if(strEmail=="") {
			msg="Invalid Email Address.";
	} else {
		if((strEmail.charAt(0)=="@") || (strEmail.charAt(0)==".")) {
			msg="";
		} else {
	//	checking the number of the @ and dots in the email add	
			var countAt=0;
			var countDot=0;
			for (i=0; i<len; i++) {
				if(strEmail.charAt(i)=="@") {
					countAt=countAt+1;
				}	
				if(strEmail.charAt(i)==".") {
					countDot=countDot+1;
				}
			} //end of for (i=0; i<strEmail.length; i++) {...	
			if((countAt!=1) || (countDot<1)) {
				msg="Invalid Email Address.";
			} else {
		//	checking the position of the @ with respect to the dot 
				var posDot=0;
				var posAt=0;
				posDot=strEmail.lastIndexOf(".");
				posAt=strEmail.indexOf("@");
				//alert(posDot);
				if((posAt>posDot) || (posDot==(posAt+1))) {
					msg=posDot;
				} else {
			//	checking the dot position and the @ postion at the end
					if((strEmail.charAt(len)=="@") || (strEmail.charAt(len)==".")) {
						msg="Invalid Email Address.";
					} else {
						/* 	checking for the invalid characters
						 if(ereg('[^A-Za-z0-9_]', strEmail)) {
					msg="Only letters, numbers and underscores(_).";		*/
						msg = "";
					} //end of if((strEmail.charAt(len)=="@") || (strEmail.charAt(len)==".")) {...
				} //end of if((posAt>posDot) || (posDot==(posDot+1))) {...
			} //end of if((countAt!=1) ||(countDot<1)) {...		
		} //end  if((strEmail.charAt(i)=="@") || (strEmail.charAt(i)==".")) {...
	} //end of if(strEmail=="") {...
	return msg;	
}//end function	




function validateAlphabet(field)
	{
		return true;
		
	}

function validateType(field)
	{
		var controlId = field.name.substring(field.name.indexOf("_")+1);
		var required = field.value.substring(0,field.value.indexOf("##"));
		var remn = field.value.substring(field.value.indexOf("##")+2);
		var dataType = remn.substring(0,remn.indexOf("##"));
		var remn = remn.substring(remn.indexOf("##")+2);
		var errorText = remn;
		field = document.getElementById(controlId);		
		if(required == "req" && validateRequired(field)==false) return false;
		if(required!="req" && field.value=='') return true;
		if(dataType == "date" && validateDate(field,errorText)==false) return false;
		if(dataType == "PositiveInteger" && validatePositive(field,errorText)==false) return false;
		if(dataType == "Integer" && validateInteger(field,errorText)==false) return false;
		if(dataType == "Decimal" && validateDecimal(field,errorText)==false) return false;
		if(dataType == "email" && validateEmail(field,errorText)==false) return false;
		if(dataType == "url" && validateURL(field,errorText)==false) return false;
		if(dataType == "alphabet" && validateAlphabet(field,errorText)==false) return false;
		if(dataType == "cmb" && validateDropdown(field,errorText)==false) return false;
		if(dataType == "zipcode" && validateZip(field,errorText)==false) return false;
		if(dataType == "creditCard" && validatecreditCard(field,errorText)==false) return false;
		return true;
	}	

function validateForm(frm)
{
	var isValid = true;
	for (i = 0; i<frm.elements.length; i++)
	{
		el = frm.elements[i];			
		if (frm.elements[i].name.substr(0,3)=="val")
		{
			if(validateType(frm.elements[i])== false)
			{
				var controlId = frm.elements[i].name.substring(frm.elements[i].name.indexOf("_")+1);
				if(isValid) document.getElementById(controlId).focus();
				isValid = false;
				}
		}
	
	}
	return isValid;
}


//*********************
function MatchesPattern(theString, pattern) {
    // Note: regular expressions passed to this function that have escaped
    // characters also need the escape character escaped, otherwise JavaScript
    // will make it disappear, for example:
    // MatchesPattern(mystring, '\w\.\w');    // won't work
    // MatchesPattern(mystring, '\\w\\.\\w'); // will work
    reg = new RegExp(pattern, 'g');
    return Boolean(reg.exec(theString));
}

function isValidURL(urlstring) {
    return MatchesPattern(urlstring, 'http:\\/\\/[\\w\\-]+(\\.[\\w\\-]+)+');
}

function strippedValues(id){
	
	var returnText=document.getElementById(id).value;
	var returnTextFinal=returnText.replace(/^\s+|\s+/,"");
	return returnTextFinal;
}

function validate_search()
{
 var search_text=strippedValues('search_text');
 if(search_text=="")
    {
	   alert('Enter some text');
	   document.getElementById('search_text').focus();
	   return false;
   	}
} ///last