/*
 * Type
 * ----
 *		t : Textbox
 *		p : Password
 *		s : Select
 *		b : Button
 *		c : Checkbox
 *		r : Radio
 *		f : File
 *		i : Image
 *		x : Text Area
 *		h : hidden
 *		d : fieldset
 *
 * Validation Flag
 * ---------------
 *		0 : need no validation
 *		1 : validation of blank
 *		2 : not blank e-mail
 *		3 : optional e-mail
 *		4 : not blank date
 *		5 : optional date
 *		6 : not blank numeric 
 *		7 : optional numeric
 */

function doValidation(x)
{
	var len=x.elements.length;
	var i=0;
	for(i=0;i<len;i++)
	{
		//alert(x.elements[i].name);
		if(x.elements[i].name)
		{
			val_flag=validationFlag(x.elements[i].name);
			if(val_flag!="0")
			{
				e_name=elementName(x.elements[i].name);

				switch(val_flag)
				{
					case "1" : if(isBlank(x.elements[i].value))
						   {
							alert(e_name+" can not be blank");
							x.elements[i].focus();
							return false;
						   }
						   break;
					case "2" : if(!validEmail(x.elements[i].value))
						   {
							alert("Invalid or no "+e_name);
							x.elements[i].focus();
							return false;
						   }
						   break;
					case "3" : if(x.elements[i].value.length>0 && !validEmail(x.elements[i].value))
						   {
							alert("Invalid "+e_name);
							x.elements[i].focus();
							return false;
						   }
						   break;
					case "4" : if(!validDate(x.elements[i].value))
						   {
							alert("Invalid or no "+e_name);
							x.elements[i].focus();
							return false;
						   }
						   break;
					case "5" : if(x.elements[i].value.length>0 && !validDate(x.elements[i].value))
						   {
							alert("Invalid "+e_name);
							x.elements[i].focus();
							return false;
						   }
						   break;
					case "6" : if(isNaN(x.elements[i].value)||isBlank(x.elements[i].value))
						   {
							alert(e_name+" is non numeric or absent");
							x.elements[i].focus();
							return false;
						   }
						   break;
					case "7" : if(x.elements[i].value.length>0 && isNaN(x.elements[i].value))
						   {
							alert(e_name+" is non numeric");
							x.elements[i].focus();
							return false;
						   }
						   break;
					default	  : 
						   break;
				}
			}
		}
	}
	return true;
}

function elementType(e_name1)
{
	type=e_name1.substring(0,1);
	switch(type)
	{
		case "t" : return("Textbox");
		case "p" : return("Password");
		case "s" : return("Select");
		case "b" : return("Button");
		case "c" : return("Checkbox");
		case "r" : return("Radio");
		case "f" : return("File");
		case "i" : return("Image");
		case "x" : return("Text Area");
		case "d" : return("Field Set");
	}	
}

function elementName(e_name1)
{
	var nm=e_name1.substring(e_name1.indexOf('_')+1,e_name1.lastIndexOf('_'));
	var newName="";
	for(j=0;j<nm.length;j++)
	{
		if(nm.charAt(j)=="_") newName+=" ";
		else newName+=nm.charAt(j);
	}
	return(newName);
}

function validationFlag(e_name1)
{

	//if(e_name1=="") return("0");
	val_flag = e_name1.substring(e_name1.length-1,e_name1.length);
	if(val_flag!="0" && val_flag!="1" && val_flag!="2" && val_flag!="3" && val_flag!="4" && val_flag!="5" && val_flag!="6" && val_flag!="7")
	{
		val_flag = "0";
	}
	return val_flag;
}

function isBlank(s)
{
	var len=s.length
	for(i=0;i<len;i++)
		{
			if(s.charAt(i)!=" "){return false;}
		}
	return true;
}

function validEmail(s)
{
	if(s.indexOf('@')==-1)
	{
		return false;
	}
	else if(s.indexOf('.')==-1)
		{
			return false;
		}
		else if(s.length<5)
		{
			return false;
		}
 return true;
}

function validDate(s)
{
 	if(s.length>10||s.length<8) return false;
	else if(s.indexOf('-')==-1 && s.indexOf('.')==-1 && s.indexOf('/')==-1)
	{
	 	return false;
 	}
 	else
 	{
 		var seprator=s.substring(4,5);
 		var yyyy=s.substring(0,s.indexOf(seprator));
 		var mm=s.substring(s.indexOf(seprator)+1,s.lastIndexOf(seprator));
 		var dd=s.substring(s.lastIndexOf(seprator)+1,s.length);
 		var ye=parseInt(yyyy);
 		var mo=parseInt(mm);
 		var da=parseInt(dd);
 		if(isNaN(yyyy)||isNaN(mm)||isNaN(dd)) return false;
 		if(mo<=0||mo>12) return false;
 		if(da<=0||da>31) return false;
 		if((mo==4||mo==6||mo==9||mo==11)&&da>30) return false;
 		if(mo==2)
 		{
 			if(ye%4==0&&da>29) return false;
 			if(ye%4!=0&&da>28) return false;
 		}
 	}
 	return true;
}