// JavaScript Document
function Validator(frmname)
{
	k=true;
  	this.formobj=document.forms[frmname];
	if(!this.formobj)
	{
	  	alert("BUG: couldnot get Form object " + frmname);
		return;
	}
	
	this.addValidation = addValidation;
	this.validateContactName = validateContactName;
	this.validateAll=validateAll;
	this.sequence = 0;
	this.elements= Array();
	this.elementValidationType = Array();

}

function validateContactName(frm)
{
	var contactna = frm.contactname.value;
	var arrContact = new Array();
	arrContact = contactna.split(" ");
	if(arrContact.length >1)
	{
		if(arrContact[0].length==1 || arrContact[arrContact.length-1].length==1)
			return false;
	}
}

function addValidation(el, title, vType)
{
	
	this.elements[this.sequence] = this.formobj[el];
	if(!this.elements[this.sequence])
	{
		alert("BUG: Couldnot get the input object named: "+ title);
		return;
	}
	else
	{
		this.elements[this.sequence].title = title;
		this.elementValidationType[this.sequence] = vType;
		this.elements[this.sequence].validated=true;
		this.sequence++;
	}
}


function validateAll()
{
		for(i=0;i<this.elements.length; i++)
		{
			var el = this.elements[i];
			if(((el.type).toUpperCase=="TEXT")||((el.type).toUpperCase=="TEXTAREA")) el.value=trimEL(el.value);
			var vType = this.elementValidationType[i].toString();
			//alert(el.title);
			if(el.title=='Primary Phone' && el.value!=''){
									var re = /^\(?[0-9]\d{2}[\)\.-]?\s?\d{3}[\s\.-]?\d{4}$/
										var phone = document.frmContact.homephone.value;
										var ph= phone.substring(0, 3);
										//alert(ph);//document.form.homephone.value
										if(ph==555)
										{
										 alert("Not a Valid Phone Number");
										 return false;
										}
										if(!el.value.match(re)){
												 alert("Not a Valid Phone US Number");
									     return false;
									}
				}
			switch(vType)
			{
				case "required" :
					if(!NE(el))
					{
						switch(el.type.toUpperCase())
						{
							case "FILE" :
							case "TEXTAREA":
							case "PASSWORD":
							case "TEXT" : err(el,"BLANK");  break;
							case "CHECKBOX" : err(el,"BLANK"); ; break;
							case "SELECT-ONE" : err(el,"COMBO"); break;
							case "SELECT-MULTIPLE" : err(el,"COMBO"); break;
							default : err(el,"BLANK"); 
						}
						return false
					}
					break;
				case "email" :
					if(!validEmail(el)){err(el,"EMAIL"); return false;}
					break;
			}
					
		}
		return true;
}

function err(el, type)
{
	errStr="";
	switch(type)
	{
		case 'BLANK': errStr = "Please Enter the " + el.title; break;
		case 'EMAIL': errStr = "Please enter a valid " + el.title; break;
		
		default : errStr = "Please Enter the " + el.title; break;
	}
	alert(errStr);
	el.focus();
}

function NE(el)
{ 
	if(el.type.toUpperCase()!="PASSWORD")
	{
		el.value = el.value.replace(/(^\s*)|(\s*$)/g, "");
		el.value=arch_trim(el.value);
	}
	switch(el.type.toUpperCase())
	{
		case "FILE" :
		case "TEXTAREA":
		case "PASSWORD":
		case "TEXT" : if(el.value==""){el.focus();return false;} else return true; break;
		case "CHECKBOX" : if(!el.checked){el.focus();return false;} else return true; break;
		case "SELECT-ONE" : if(el.selectedIndex == -1){el.focus();return false;}
							if(el.options[el.selectedIndex].value==""){el.focus();return false;} else return true; break;
		case "SELECT-MULTIPLE" : if(el.selectedIndex==-1){el.focus();return false;} else return true; break;
		default : return true;
	}
}

function validEmail(el){
	var elval= el.value.replace(/[\n\r\s]+/,"");
	if(elval =="") return true;
	var str=el.value;
	/* var filter=/^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,6})$/i         ; */
	var filter=/^[A-Za-z0-9_\-]([\w-\.]+){0,}@((\[[0-9]{2,3}\.[0-9]{2,3}\.[0-9]{2,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)$/	;
	if (filter.test(str) && (str.indexOf("..")==-1) && (str.indexOf(".@")==-1))
	testresults=true;
	else {el.focus();el.select();testresults=false;}
	return (testresults);
}

function arch_trim(inputString) 
{
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") 
   { 
	  retValue = retValue.substring(1, retValue.length);
	  ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") 
   { 
	  retValue = retValue.substring(0, retValue.length-1);
	  ch = retValue.substring(retValue.length-1, retValue.length);
   }
   /*
   while (retValue.indexOf("  ") != -1) 
   { 
	  retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); 
   }
   */
   return retValue; 
} 



