//Created By: Chris Campbell
//www.particletree.com

window.onload = attachFormHandlers;


function attachFormHandlers()
{
  // Make sure we're on a newer browser
	if (document.getElementsByTagName)
    { 
		var objInput = document.getElementsByTagName('input'); // get all input tags
		var objTextarea = document.getElementsByTagName('textarea'); // get all input tags
		var objSelect = document.getElementsByTagName('select'); // get all input tags
		var attribute;
		var inputmask;
		var form = document.getElementsByTagName('form') // get the form
		if(validateonsubmitonly!=1)
		{
			for (var iCounter=0; iCounter<objInput.length; iCounter++)
			{
				
				var type=objInput[iCounter].getAttribute('type');
		
				if((type=='button')||(type=='submit')||(type=='image')||(type=='radio')||(type=='checkbox'))
				{
					//alert("caught");
					continue;
				}
				
				attribute=objInput[iCounter].getAttribute("validate");
				inputmask=objInput[iCounter].getAttribute("inputmask");
				
				if(inputmask)
				{
					if(objInput[iCounter].value=='')
					{
						if(inputmask.search("#"))
						{
							var inputdefault=inputmask.replace(/#/g,"_");
							objInput[iCounter].value=inputdefault;
						}
					}
					else
					{
						/*var masktype=objInput[iCounter].getAttribute('masktype');
						if(masktype=="numeric")
						dFilter(e.keyCode,objInput[iCounter],inputmask);
							else if(masktype=="alpha")
						dFilterAlpha(e.keyCode,objInput[iCounter],inputmask);*/
					}
					objInput[iCounter].onkeydown = function(e){ onKeyDown(e,this);}
				}
				
				if(attribute!="confirm"&&(attribute!="password"))
				{
					objInput[iCounter].onblur = function(){ eval(this.getAttribute("functions")); return  onBlur(this);} // attach the onBlur event to each input tag
					objInput[iCounter].onchange = function(){ eval(this.getAttribute("functions")); return onChange(this);} // attach the onchange event to each input tag
					objInput[iCounter].onkeydown = function(e){return  onKeyDown(e,this);} // attach the onKeyPressevent to each input tag
					<!--objInput[iCounter].onfocus = function(){return  onFocus(this);} // attach the onFocus event to each input tag-->
					objInput[iCounter].onMouseOver = function(){return  onMouseOver(this);} // attach the onMouseOver event to each input tag
				//	alert(objInput[iCounter].getAttribute("onfocus"));
																	
				/*	if(!objInput[iCounter].getAttribute("onfocus"))
					
					 else
					   {
						
					   objInput[iCounter].onfocus =objInput[iCounter].getAttribute("onfocus"), function(){return  onFocus(this);}
					   alert (objInput[iCounter].getAttribute("onfocus"));
					   }
					   objInput[iCounter].onClick = function(){return  onClick(this);} // attach the onClick event to each input tag*/
					
				}
				else
				{
					objInput[iCounter].onblur = function(){return  onBlur(this,this.form);} // attach the onBlur event to each input tag
					
					  // objInput[iCounter].onfocus = function(){return  onFocus(this);}
					  
				}
				
				if(attribute=="password")
				{
					if(passwordstrength==1)
					objInput[iCounter].onkeyup= function(){return  passwordStrength(this.value,this.form);}
				}
				
				
				
			}		
			for (var tCounter=0; tCounter<objTextarea.length; tCounter++)
			{
				objTextarea[tCounter].onblur = function(){return  onBlurText(this);} // attach the onBlur event to each input tag
				objTextarea[tCounter].onchange = function(){return onChange(this);} // attach the onchange event to each input tag
				objTextarea[tCounter].onKeyPress = function(){return  onKeyPress(this);} // attach the onKeyPressevent to each input tag
				//objTextarea[tCounter].onfocus = function(){return  onFocusText(this);} // attach the onFocus event to each input tag
				objTextarea[tCounter].onClick = function(){return  onClick(this);} // attach the onClick event to each input tag
				objTextarea[tCounter].onMouseOver = function(){return  onMouseOver(this);} // attach the onMouseOver event to each input tag
			}		
			for (var sCounter=0; sCounter<objSelect.length; sCounter++)
			{
				objSelect[sCounter].onblur = function(){return  onBlur(this);} // attach the onBlur event to each input tag
					
				objSelect[sCounter].onchange = function(){ eval(this.getAttribute("functions")); return onChange(this);} // attach the onchange event to each input tag
				objSelect[sCounter].onKeyPress = function(){return  onKeyPress(this);} // attach the onKeyPressevent to each input tag
				//objSelect[sCounter].onfocus = function(){return  onFocus(this);} // attach the onFocus event to each input tag
				objSelect[sCounter].onClick = function(){return  onClick(this);} // attach the onClick event to each input tag
				objSelect[sCounter].onMouseOver = function(){return  onMouseOver(this);} // attach the onMouseOver event to each input tag
			}
		}
			
		for (var fCounter=0;fCounter<form.length;fCounter++)
		{
			//alert(form[fCounter]);
			form[fCounter].onsubmit = function(){return validate(this);} // atttach the onsubmit to the form 
		}
	}
}


function onBlur(objInput,kform)
{
	
	sVal = objInput.value; //sVal is the value of the input field being validated
    var sFeedBack; //feedback message sent back to the user
	var sFeedbackLoc = objInput.getAttribute('message');
	var required=objInput.getAttribute('required');
	var unique=objInput.getAttribute('unique');
	var uniqueaccross=objInput.getAttribute('uniqueaccross');
	var inputmask=objInput.getAttribute('inputmask');
	var minlength=objInput.getAttribute('minlength');
	var minval=objInput.getAttribute('minval');
	var maxval=objInput.getAttribute('maxval');
	var appendMessage=objInput.getAttribute('appendmessage');
	var exception=objInput.getAttribute('exception');
	var sFeedbackPass;
	
	var res;
	var flag=0;
	
	sFeedback="";
    if(inputmask)
	{
		var actual_mask=inputmask;
		for(var icount=0;icount<inputmask.length;icount++)
		{
		actual_mask=actual_mask.replace("#","_")
		}
	//	alert(actual_mask);
		if(sVal==actual_mask)
		sVal="";
	}
	if (required == "true")
	{
			//alert('aaaa');
		if(!isEmpty(sVal))
		{
			//sFeedback = "Thank you";
			//objInput.className=normalclass;
			sFeedback='';
		}
		else
		{
			flag=1;
			//objInput.className=errorclass;
			sFeedback = REQUIRED;
		}
		//sFeedback = validateRequired(sVal); //validateRequired() checks if it is invalid and sends back feedback
	}
	
	
	
	if(exception)
	{
		//alert("here");
		for(i=0;i<exception.length;i++)
		{
			
			var c=exception.charAt(i);
			for(j=0;j<sVal.length;j++)
			{var str=sVal.replace(c,'');
			 sVal=str;
			}
			// alert(sVal);
		}
	}
			
	if (sVal != "") //if the value is blank we don't need to validate.  If it is required, the word
		//"required"  will already be the feedback message from the validateRequired() function
	{
	// check the different validation cases (ie: email, phone, etc.)
		switch (objInput.getAttribute('validate'))
		{
			case "int" :        if(!isInteger(sVal))
								{
				  			       sFeedback=INVALID_INTEGER;
								   flag=1;
								}
				 		        break;
			case "signedint" :  if(!isSignedInteger(sVal))
								{
				  			       sFeedback=INVALID_SIGNED_INTEGER;
								   flag=1;
								}
				 		        break;
			case "positiveint": if(!isPositiveInteger(sVal))
								{
				  			       sFeedback=INVALID_POSITIVE_INTEGER;
								   flag=1;
								}
							    break;
			case "letter" :     if(!isLetter(sVal))
								{
				  			       sFeedback=INVALID_LETTER;
								   flag=1;
								}
			 	 				break;
			case "digit":       if(!isDigit(sVal))
								{
				  			       sFeedback=INVALID_DIGIT;  
								   flag=1;
								}
			 	 				break;
			case "letterordigit":if(!isLetterOrDigit(sVal))
								{
				  			       sFeedback=INVALID_LETTER_OR_DIGIT;  
								   flag=1;
								}
			 				    break;
			case "nonnegativeint":if(!isNonnegativeInteger(sVal))
								{
				  			       sFeedback=INVALID_NON_NEGATIVE_INTEGER;  
								   flag=1;
								}
			 	 				break;
			case "negativeint": if(!isNegativeInteger(sVal))
								{
				  			       sFeedback=INVALID_NEGATIVE_INTEGER;  
								   flag=1;
								}
			 	 				break;
 			case "nonpositiveint":if(!isNonpositiveInteger(sVal))
								{
				  			       sFeedback=INVALID_NONPOSITIVE_INTEGER; 
								   flag=1;
								}
			 	 				break;
			case "float":		if(!isFloat (sVal))
								{
				  			       sFeedback=INVALID_FLOAT; 
								   flag=1;
								}
			 	 				break;
 			case "signedfloat": if(!isSignedFloat(sVal))
								{
				  			       sFeedback=INVALID_SIGNED_FLOAT; 
								   flag=1;
								}
			 				    break;
			case "whitespace":/*if(!isAlphanumeric(sVal))
								{
				  			       sFeedback=INVALID_ALPHANUMERIC; 
								   flag=1;
								}*/
			 	 				break;
 			case "ssn":			if(!isSSN(sVal))
								{
				  			       sFeedback=INVALID_SSN; 
								   flag=1;
								}
			 	 				break;
 			case "usphone":		if(!isUSPhoneNumber(sVal))
								{
				  			       sFeedback=INVALID_US_PHONE_NUMBER; 
								   flag=1;
								}
			 	 				break;
			case "intphone":	if(!isInternationalPhoneNumber(sVal))
								{
				  			       sFeedback=INVALID_INTERNATIONAL_PHONE_NUMBER; 
								   flag=1;
								}
			 	 				break;
 			case "zip":         if(!isZIPCode(sVal))
								{
				  				   sFeedback=INVALID_ZIP_CODE;
								   flag=1;
								}
			 	 				break;
 			case "state":		if(!isStateCode(sVal))
								{
				  				   sFeedback=INVALID_STATE_CODE;
								   flag=1;
								}
			 					break;
 			case "email":       if(!isEmail(sVal))
								{
				   				   sFeedback=INVALID_EMAIL_ADDRESS;
								   flag=1;
								}
			 	 				break;
 			case "year":		if(!isYear(sVal))
								{
				  				   sFeedback=INVALID_YEAR;
								   flag=1;
								}
			 	 				break;
 			case "range":		if(!isIntegerInRange (sVal,minval,maxval))
								{
								   sFeedback=INTEGER_NOT_IN_RANGE; 
								   flag=1;
								}
			 				    break;
			case "month": 		if(!isMonth(sVal))
								{
				  				   sFeedback=INVALID_MONTH;
								   flag=1;
								}
			 	 				break;
			case "day":			if(!isDay(sVal))
								{
				  				   sFeedback=INVALID_DAY;
								   flag=1;
								}
			 	 				break;
 			case "date":		//alert('isDate function to be changed'); 
								/*if(!isDate(sVal))
								{
									
				  				   sFeedback=INVALID_DATE;			 	 
								   flag=1;
								}*/
								
								break;
			case "currency":
			 	 break;
 			
 			case "phone":		if(!isInteger(sVal))
								{
																			
								   sFeedback=PHONE_NOT_IN_RANGE; 
								   flag=1;
								}
								if(isInteger(sVal))
								{
									if((sVal.length<minval)||(sVal.length>maxval))
									{
								   sFeedback=PHONE_NOT_IN_RANGE; 
								   flag=1;
									}
								}
								break;
							
 			case "text":		if(!isText(sVal))
								{
				  				   sFeedback=INVALID_TEXT;			 	 
								   flag=1;
								}
								break;

 			case "textandnum":  if(!isTextandNum(sVal))
								{
				  				   sFeedback=INVALID_TEXTANDNUM;			 	 
								   flag=1;
								}
								break;
								
			case "website":		if(!isWebsite(sVal))
								{
				  				   sFeedback=INVALID_WEBSITE_ADDRESS;			 	 
								   flag=1;
								}
								break;
			case "datetime":
			 	 break;
 			case "name":		if(!isName(sVal))
								{
				  				  sFeedback=INVALID_NAME;			 	 
								  flag=1;
								}
								else
								{
									var newname=reformatName(sVal);
									objInput.value=newname;
								}
								break;
 			case "password":  
								if(!checkpass(kform,sVal))
							   	{
			   					  sFeedback=PASSWORDS_DONT_MATCH;
								  flag=1;
							   	}
			 				   break;
 			case "confirm":    
								
								if(!checkconfirm(kform,sVal))
							   	{
			   					  sFeedback=PASSWORDS_DONT_MATCH;
								  flag=1;
							   	}
			 	 			   break;
			
		}
	}
	
	
	if(!isEmpty(sVal))
	{
		
		if(flag==1)
		{
			//objInput.className=errorclass;
			
			if(objInput.getAttribute('validate')=="confirm")
			{
				 
				 passelement=getConfirmField(kform);
				// passelement.className=errorclass;
				 sFeedbackPass=passelement.getAttribute('message');
			}
			
			if(objInput.getAttribute('validate')=="password")
			{
				 
				 passelement=getPassField(kform);
				// passelement.className=errorclass;
				 sFeedbackPass=passelement.getAttribute('message');
			}
		}
		else
		{
			//objInput.className=okclass;
			if(objInput.getAttribute('validate')=="confirm")
			{
				passelement=getConfirmField(kform);
				//passelement.className=okclass;
				sFeedbackPass=passelement.getAttribute('message');
				
				passelement=getPassField(kform);
				// passelement.className=okclass;
				 sFeedbackPass=passelement.getAttribute('message');
				 
			}
			
			if(objInput.getAttribute('validate')=="password")
			{
				 
				 passelement=getPassField(kform);
				// passelement.className=okclass;
				 sFeedbackPass=passelement.getAttribute('message');
				 
				 passelement=getConfirmField(kform);
				//passelement.className=okclass;
				sFeedbackPass=passelement.getAttribute('message');
			}
			
		}
	}
	
	if(showtick==1)
	{
		if(flag==1)
		{
			sFeedback='<img src=\"validation/error.png\"> '+sFeedback;
		}
		else
		{
			if(!isEmpty(sVal))
			sFeedback='<img src=\"validation/ok.png\"> ';
		}
	}
	
	
			// after validation is complete return the feedback 
	if(document.getElementById(sFeedbackLoc))
		document.getElementById(sFeedbackLoc).innerHTML = sFeedback;	
		
	if(document.getElementById(sFeedbackPass))
		document.getElementById(sFeedbackPass).innerHTML = sFeedback;	
}



function onKeyDown(e,objInput)
{
	sVal = objInput.value; //sVal is the value of the input field being validated
    var sFeedBack; //feedback message sent back to the user
	var sFeedbackLoc = objInput.getAttribute('message');
	var required=objInput.getAttribute('required');
	var unique=objInput.getAttribute('unique');
	var uniqueaccross=objInput.getAttribute('uniqueaccross');
	var inputmask=objInput.getAttribute('inputmask');
	var minlength=objInput.getAttribute('minlength');
	var minval=objInput.getAttribute('minval');
	var maxval=objInput.getAttribute('maxval');
	var appendMessage=objInput.getAttribute('appendmessage');
	var exception=objInput.getAttribute('exception');
	var masktype=objInput.getAttribute('masktype');
	if(!e)
	e=window.event;
	if(inputmask!="")
	{
		if(masktype=="numeric")
			return dFilter(e.keyCode,objInput,inputmask);
		else if(masktype=="alpha")
			return dFilterAlpha(e.keyCode,objInput,inputmask);
	}
}




function onClick(objInput)
{
	sVal = objInput.value; //sVal is the value of the input field being validated
    var sFeedBack; //feedback message sent back to the user
	var sFeedbackLoc = objInput.getAttribute('message');
	var required=objInput.getAttribute('required');
	var unique=objInput.getAttribute('unique');
	var uniqueaccross=objInput.getAttribute('uniqueaccross');
	var inputmask=objInput.getAttribute('inputmask');
	var minlength=objInput.getAttribute('minlength');
	var minval=objInput.getAttribute('minval');
	var maxval=objInput.getAttribute('maxval');
	var appendMessage=objInput.getAttribute('appendmessage');
	var exception=objInput.getAttribute('exception');
}

function onMouseOver(objInput)
{
	sVal = objInput.value; //sVal is the value of the input field being validated
    var sFeedBack; //feedback message sent back to the user
	var sFeedbackLoc = objInput.getAttribute('message');
	var required=objInput.getAttribute('required');
	var unique=objInput.getAttribute('unique');
	var uniqueaccross=objInput.getAttribute('uniqueaccross');
	var inputmask=objInput.getAttribute('inputmask');
	var minlength=objInput.getAttribute('minlength');
	var minval=objInput.getAttribute('minval');
	var maxval=objInput.getAttribute('maxval');
	var appendMessage=objInput.getAttribute('appendmessage');
	var exception=objInput.getAttribute('exception');
}

/*function onFocus(objInput)
{
	sVal = objInput.value; //sVal is the value of the input field being validated
    var sFeedBack; //feedback message sent back to the user
	var sFeedbackLoc = objInput.getAttribute('message');
	var required=objInput.getAttribute('required');
	var unique=objInput.getAttribute('unique');
	var uniqueaccross=objInput.getAttribute('uniqueaccross');
	var inputmask=objInput.getAttribute('inputmask');
	var minlength=objInput.getAttribute('minlength');
	var minval=objInput.getAttribute('minval');
	var maxval=objInput.getAttribute('maxval');
	var appendMessage=objInput.getAttribute('appendmessage');
	var exception=objInput.getAttribute('exception');
	
	
	//objInput.className=onfocusclass;
}
*/


function onBlurText(objInput,kform)
{
	
	sVal = objInput.value; //sVal is the value of the input field being validated
    var sFeedBack; //feedback message sent back to the user
	var sFeedbackLoc = objInput.getAttribute('message');
	var required=objInput.getAttribute('required');
	var unique=objInput.getAttribute('unique');
	var uniqueaccross=objInput.getAttribute('uniqueaccross');
	var inputmask=objInput.getAttribute('inputmask');
	var minlength=objInput.getAttribute('minlength');
	var minval=objInput.getAttribute('minval');
	var maxval=objInput.getAttribute('maxval');
	var appendMessage=objInput.getAttribute('appendmessage');
	var exception=objInput.getAttribute('exception');
	var sFeedbackPass;
	
	var res;
	var flag=0;
	
	sFeedback="";
    if(inputmask)
	{
		var actual_mask=inputmask;
		for(var icount=0;icount<inputmask.length;icount++)
		{
		actual_mask=actual_mask.replace("#","_")
		}
	//	alert(actual_mask);
		if(sVal==actual_mask)
		sVal="";
	}
	if (required == "true")
	{
			//alert('aaaa');
		if(!isEmpty(sVal))
		{
			//sFeedback = "Thank you";
			//objInput.className=normalclasstext;
			sFeedback='';
		}
		else
		{
			flag=1;
			//objInput.className=errorclasstext;
			sFeedback = REQUIRED;
		}
		//sFeedback = validateRequired(sVal); //validateRequired() checks if it is invalid and sends back feedback
	}
	
	
	
	if(exception)
	{
		//alert("here");
		for(i=0;i<exception.length;i++)
		{
			
			var c=exception.charAt(i);
			for(j=0;j<sVal.length;j++)
			{var str=sVal.replace(c,'');
			 sVal=str;
			}
			// alert(sVal);
		}
	}
			
	if (sVal != "") //if the value is blank we don't need to validate.  If it is required, the word
		//"required"  will already be the feedback message from the validateRequired() function
	{
	// check the different validation cases (ie: email, phone, etc.)
		switch (objInput.getAttribute('validate'))
		{
			case "int" :        if(!isInteger(sVal))
								{
				  			       sFeedback=INVALID_INTEGER;
								   flag=1;
								}
				 		        break;
			case "signedint" :  if(!isSignedInteger(sVal))
								{
				  			       sFeedback=INVALID_SIGNED_INTEGER;
								   flag=1;
								}
				 		        break;
			case "positiveint": if(!isPositiveInteger(sVal))
								{
				  			       sFeedback=INVALID_POSITIVE_INTEGER;
								   flag=1;
								}
							    break;
			case "letter" :     if(!isLetter(sVal))
								{
				  			       sFeedback=INVALID_LETTER;
								   flag=1;
								}
			 	 				break;
			case "digit":       if(!isDigit(sVal))
								{
				  			       sFeedback=INVALID_DIGIT;  
								   flag=1;
								}
			 	 				break;
			case "letterordigit":if(!isLetterOrDigit(sVal))
								{
				  			       sFeedback=INVALID_LETTER_OR_DIGIT;  
								   flag=1;
								}
			 				    break;
			case "nonnegativeint":if(!isNonnegativeInteger(sVal))
								{
				  			       sFeedback=INVALID_NON_NEGATIVE_INTEGER;  
								   flag=1;
								}
			 	 				break;
			case "negativeint": if(!isNegativeInteger(sVal))
								{
				  			       sFeedback=INVALID_NEGATIVE_INTEGER;  
								   flag=1;
								}
			 	 				break;
 			case "nonpositiveint":if(!isNonpositiveInteger(sVal))
								{
				  			       sFeedback=INVALID_NONPOSITIVE_INTEGER; 
								   flag=1;
								}
			 	 				break;
			case "float":		if(!isFloat (sVal))
								{
				  			       sFeedback=INVALID_FLOAT; 
								   flag=1;
								}
			 	 				break;
 			case "signedfloat": if(!isSignedFloat(sVal))
								{
				  			       sFeedback=INVALID_SIGNED_FLOAT; 
								   flag=1;
								}
			 				    break;
			case "whitespace":/*if(!isAlphanumeric(sVal))
								{
				  			       sFeedback=INVALID_ALPHANUMERIC; 
								   flag=1;
								}*/
			 	 				break;
 			case "ssn":			if(!isSSN(sVal))
								{
				  			       sFeedback=INVALID_SSN; 
								   flag=1;
								}
			 	 				break;
 			case "usphone":		if(!isUSPhoneNumber(sVal))
								{
				  			       sFeedback=INVALID_US_PHONE_NUMBER; 
								   flag=1;
								}
			 	 				break;
			case "intphone":	if(!isInternationalPhoneNumber(sVal))
								{
				  			       sFeedback=INVALID_INTERNATIONAL_PHONE_NUMBER; 
								   flag=1;
								}
			 	 				break;
 			case "zip":         if(!isZIPCode(sVal))
								{
				  				   sFeedback=INVALID_ZIP_CODE;
								   flag=1;
								}
			 	 				break;
 			case "state":		if(!isStateCode(sVal))
								{
				  				   sFeedback=INVALID_STATE_CODE;
								   flag=1;
								}
			 					break;
 			case "email":       if(!isEmail(sVal))
								{
				   				   sFeedback=INVALID_EMAIL_ADDRESS;
								   flag=1;
								}
			 	 				break;
 			case "year":		if(!isYear(sVal))
								{
				  				   sFeedback=INVALID_YEAR;
								   flag=1;
								}
			 	 				break;
 			case "range":		if(!isIntegerInRange (sVal,minval,maxval))
								{
								   sFeedback=INTEGER_NOT_IN_RANGE; 
								   flag=1;
								}
			 				    break;
			case "month": 		if(!isMonth(sVal))
								{
				  				   sFeedback=INVALID_MONTH;
								   flag=1;
								}
			 	 				break;
			case "day":			if(!isDay(sVal))
								{
				  				   sFeedback=INVALID_DAY;
								   flag=1;
								}
			 	 				break;
 			case "date":		//alert('isDate function to be changed'); 
								/*if(!isDate(sVal))
								{
									
				  				   sFeedback=INVALID_DATE;			 	 
								   flag=1;
								}*/
								
								break;
			case "currency":
			 	 break;
 			
 			case "phone":	if(!isInteger(sVal))
								{
																			
								   sFeedback=PHONE_NOT_IN_RANGE; 
								   flag=1;
								}
								if(isInteger(sVal))
								{
									if((sVal.length<minval)||(sVal.length>maxval))
									{
								   sFeedback=PHONE_NOT_IN_RANGE; 
								   flag=1;
									}
								}
								break;
								
 			case "text":		if(!isText(sVal))
								{
				  				   sFeedback=INVALID_TEXT;			 	 
								   flag=1;
								}
								break;

 			case "textandnum":  if(!isTextandNum(sVal))
								{
				  				   sFeedback=INVALID_TEXTANDNUM;			 	 
								   flag=1;
								}
								break;
								
			case "website":		if(!isWebsite(sVal))
								{
				  				   sFeedback=INVALID_WEBSITE_ADDRESS;			 	 
								   flag=1;
								}
								break;
			case "datetime":
			 	 break;
 			case "name":		if(!isName(sVal))
								{
				  				  sFeedback=INVALID_NAME;			 	 
								  flag=1;
								}
								else
								{
									var newname=reformatName(sVal);
									objInput.value=newname;
								}
								break;
 			case "password":  
								if(!checkpass(kform,sVal))
							   	{
			   					  sFeedback=PASSWORDS_DONT_MATCH;
								  flag=1;
							   	}
			 				   break;
 			case "confirm":    
								
								if(!checkconfirm(kform,sVal))
							   	{
			   					  sFeedback=PASSWORDS_DONT_MATCH;
								  flag=1;
							   	}
			 	 			   break;
			
		}
	}
	
	
	if(!isEmpty(sVal))
	{
		
		if(flag==1)
		{
			//objInput.className=errorclasstext;
			
			if(objInput.getAttribute('validate')=="confirm")
			{
				 
				 passelement=getConfirmField(kform);
				 //passelement.className=errorclasstext;
				 sFeedbackPass=passelement.getAttribute('message');
			}
			
			if(objInput.getAttribute('validate')=="password")
			{
				 
				 passelement=getPassField(kform);
				// passelement.className=errorclasstext;
				 sFeedbackPass=passelement.getAttribute('message');
			}
		}
		else
		{
			//objInput.className=normalclasstext;
			if(objInput.getAttribute('validate')=="confirm")
			{
				passelement=getConfirmField(kform);
				//passelement.className=normalclasstext;
				sFeedbackPass=passelement.getAttribute('message');
				
				passelement=getPassField(kform);
				 //passelement.className=normalclasstext;
				 sFeedbackPass=passelement.getAttribute('message');
				 
			}
			
			if(objInput.getAttribute('validate')=="password")
			{
				 
				 passelement=getPassField(kform);
				 //passelement.className=normalclasstext;
				 sFeedbackPass=passelement.getAttribute('message');
				 
				 passelement=getConfirmField(kform);
				//passelement.className=normalclasstext;
				sFeedbackPass=passelement.getAttribute('message');
			}
			
		}
	}
	
	if(showtick==1)
	{
		if(flag==1)
		{
			sFeedback='<img src=\"validation/error.png\"> '+sFeedback;
		}
		else
		{
			if(!isEmpty(sVal))
			sFeedback='<img src=\"validation/ok.png\"> ';
		}
	}
	
	
			// after validation is complete return the feedback 
	if(document.getElementById(sFeedbackLoc))
		document.getElementById(sFeedbackLoc).innerHTML = sFeedback;	
		
	if(document.getElementById(sFeedbackPass))
		document.getElementById(sFeedbackPass).innerHTML = sFeedback;	
}










function onFocusText(objInput)
{
	sVal = objInput.value; //sVal is the value of the input field being validated
    var sFeedBack; //feedback message sent back to the user
	var sFeedbackLoc = objInput.getAttribute('message');
	var required=objInput.getAttribute('required');
	var unique=objInput.getAttribute('unique');
	var uniqueaccross=objInput.getAttribute('uniqueaccross');
	var inputmask=objInput.getAttribute('inputmask');
	var minlength=objInput.getAttribute('minlength');
	var minval=objInput.getAttribute('minval');
	var maxval=objInput.getAttribute('maxval');
	var appendMessage=objInput.getAttribute('appendmessage');
	var exception=objInput.getAttribute('exception');
	
	
	//objInput.className=onfocusclass;
}



function onChange(objInput)
{ 
	sVal = objInput.value; //sVal is the value of the input field being validated
    var sFeedBack=''; //feedback message sent back to the user
	var sFeedbackLoc = objInput.getAttribute('message');
	var required=objInput.getAttribute('required');
	var unique=objInput.getAttribute('unique');
	var uniqueaccross=objInput.getAttribute('uniqueaccross');
	var inputmask=objInput.getAttribute('inputmask');
	var minlength=objInput.getAttribute('minlength');
	var minval=objInput.getAttribute('minval');
	var maxval=objInput.getAttribute('maxval');
	var appendMessage=objInput.getAttribute('appendmessage');
	var exception=objInput.getAttribute('exception');
	
	
    
	if (required == "true")
	{
		if(!isEmpty(sVal))
			sFeedback = "Thank you";
		else
			sFeedback = "Required";
		//sFeedback = validateRequired(sVal); //validateRequired() checks if it is invalid and sends back feedback
	}
	
			
	if (sVal != "") //if the value is blank we don't need to validate.  If it is required, the word
		//"required"  will already be the feedback message from the validateRequired() function
	{
	// check the different validation cases (ie: email, phone, etc.)
		switch (objInput.getAttribute('validate'))
		{
			/*case "int" :        if(!isInteger(sVal))
				  			       sFeedback="Invalid Integer";
				 		        break;
			case "signedint" :  if(!isSignedInteger(sVal))
				  			       sFeedback="Invalid Signed Integer";
				 		        break;
			case "positiveint": if(!isPositiveInteger(sVal))
				  			       sFeedback="Invalid Positive Integer";
							    break;
			case "letter" :     if(!isLetter(sVal))
				  			       sFeedback="Invalid Letter";
			 	 				break;
			case "digit":       if(!isDigit(sVal))
				  			       sFeedback="Invalid Digit";  
			 	 				break;
			case "letterordigit":if(!isLetterOrDigit(sVal))
				  			       sFeedback="Invalid Letter Or Digit";  
			 				    break;
			case "nonnegativeint":if(!isNonnegativeInteger(sVal))
				  			       sFeedback="Invalid Non negative Integer";  
			 	 				break;
			case "negativeint": if(!isNegativeInteger(sVal))
				  			       sFeedback="Invalid Negative Integer";  
			 	 				break;
 			case "nonpositiveint":if(!isNonpositiveInteger(sVal))
				  			       sFeedback="Invalid NonpositiveInteger"; 
			 	 				break;
			case "float":		if(!isFloat (sVal))
				  			       sFeedback="Invalid Float"; 
			 	 				break;
 			case "signedfloat": if(!isSignedFloat(sVal))
				  			       sFeedback="Invalid Signed Float"; 
			 				    break;
			case "whitespace":if(!isAlphanumeric(sVal))
				  			       sFeedback="Invalid Alphanumeric"; 
			 	 				break;
 			case "ssn":			if(!isSSN(sVal))
				  			       sFeedback="Invalid SSN"; 
			 	 				break;
 			case "usphone":		if(!isUSPhoneNumber(sVal))
				  			       sFeedback="Invalid US Phone Number"; 
			 	 				break;
			case "intphone":	if(!isInternationalPhoneNumber(sVal))
				  			       sFeedback="Invalid International Phone Number"; 
			 	 				break;
 			case "zip":         if(!isZIPCode(sVal))
				  				   sFeedback="Invalid ZIP code";
			 	 				break;
 			case "state":		if(!isStateCode(sVal))
				  				   sFeedback="Invalid State Code";
			 					break;
 			case "email":       if(!isEmail(sVal))
				   				   sFeedback="Invalid Email Address";
			 	 				break;
 			case "year":		if(!isYear(sVal))
				  				   sFeedback="Invalid Year";
			 	 				break;
 			case "range":
			 	 break;
			case "month": 		if(!isMonth(sVal))
				  				   sFeedback="Invalid Month";
			 	 				break;
			case "day":			if(!isDay(sVal))
				  				   sFeedback="Invalid Day";
			 	 				break;
 			case "date":		if(!isDate(sVal))
				  				   sFeedback="Invalid Date";			 	 
								break;
			case "currency":
			 	 break;
 			
 			case "phone":
			 	 break;
 			case "text":
			 	 break;
 			case "textandnum":
			 	 break;
			case "website":
			 	 break;
			case "datetime":
			 	 break;
 			case "name":
			 	 break;
 			case "password":
			 	 break;
 			case "confirm":
			 	 break;*/
			
		}
	}
			// after validation is complete return the feedback 
	//document.getElementById(sFeedbackLoc).innerHTML = sFeedBack;
}


