// FormValidate.js: validate form fields at the occurrence of an onSubmit event
// Written By: Kevin R. DuPre'
// Date: 3/3/98
// Modified: 9/12/01

// a cancel button event handler - if we have a cancel button this becomes an
// onClick() handler. The "cancel_flag" if set causes an immediate true return
// of the onSubmit() handler validate() effectively bypassing validation on a 
// form which uses a cancel_button submit element to skip an operation on form
// contents. Since a cancel_button causes the form to be submitted to an action
// which can make a determination of which button was pressed, the life cycle of 
// cancel_flag is one click, as the form will no longer be present and will have
// cancel_flag initialized on each onLoad() event.

var cancel_flag = 0;

function setCancel(){
	cancel_flag = 1;
}

// form validation and error alert routine
// Modified on 01/18/2001 by Sowmya to test for select dropdown  element in required check

function validate(f) {

	// if cancel flag has been set by an onClick() event handler for a button
	// simply return true, the form has nothing of interest to check

	if(cancel_flag == 1)
		return true;
			
	var isError = false;
	var errorMsg = "";
	
	

	// first loop through all the elements of the form checking for required
	// fields
	for(var i = 0; i < f.elements.length; i++){
		var e = f.elements[i];	
	
		
		// check for requiredness or min/max length
		if(e.isrequired){
			if (e.type == "select-one"){
				var opt = new Option;
				opt = e.options[e.selectedIndex];
				if ((opt.value == null) || (opt.value == "")){
				isError = true;
		    	}
			}
			else{
				if((e.value == null) || (e.value == "") || isblank(e.value)){
				isError = true;
				}
			}
		}

		if(e.minlength){
			if(e.value.length > 0 && e.value.length < e.minlength){
				isError = true;
			}
		}
	
		if(e.maxlength){
			if(e.value.length > 0 && e.value.length > e.maxlength){
			    isError = true;
			}
		}
		

	}
	
	for(var i = 0; i < f.elements.length; i++){
		var e = f.elements[i];
		
		if (e.isloginid){
			var loginid = e.value;
		}
		if (e.ispassword){
			var password = e.value;
		}
				
		//Check for password doesn't match loginid
		if (e.checkpwd){
			if(!isvalidpassword(password,loginid)){
				isError = true;
			}
		}
			
		if(e.type == "text" && e.value.length > 0){
			// check for alphaness
			if(e.isalphaonly){
				if(!isalpha(e.value)){
				    isError = true;
				}
			
			}
						
			// check for propernameness
			if(e.ispropername){
				if(!ispropername(e.value)){
					isError = true;
				}
			}
			
			// check for alphanumericness
			if(e.isalphanumonly){
				if(!isalphanum(e.value)){
					isError = true;
				}
			}
		}
	}
		
	// if there were no errors return true, else display the messages
	// and return false to prevent the form from being submitted
	if(!isError)
		return true;
		
	errorMsg = "User name or password is missing or incorrect.";
	alert(errorMsg);
	return false;
}

// utility function that returns true if a string contains only 
// whitespace chars

function isblank(s){
	for(var i = 0; i < s.length; i++){
		var c = s.charAt(i);
		if((c != ' ') && (c != '\n') && (c != '\t'))
			return false;
	}
	return true;
}

// utility function that returns true if a string contains only
// alpha characters

function isalpha(s){
	for(var i = 0; i < s.length; i++){
		var c = s.charAt(i);
		if((c < 'A') || ((c > 'Z') && (c < 'a')) || (c > 'z'))
			return false;
	}
	return true;
}

// utility function that returns true if a string contains only 
// numeric characters

function isnumeric(s){
	for(var i = 0; i < s.length; i++){
		var c = s.charAt(i);
		if((c < '0') || (c > '9'))
			return false;
	}
	return true;
}


// utility function that returns true if a string contains only
// alphanumeric characters

function isalphanum(s){
	
	for(var i = 0; i < s.length; i++){
		var c = s.charAt(i);
		if(!(((c >= '0') && (c <= '9')) || ((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z')))){
			return false;
		}
	}
	return true;
}

// utility function that returns true if a string contains only
// alpha characters or the '.' or ',' characters

function ispropername(s){
	
	for(var i = 0; i < s.length; i++){
		var c = s.charAt(i);
		if(!(((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z'))) && (c != '.') && (c != ',') && (c != ' ') && (c != '\'') && (c != '&') && (c != '/') && (c != '-')){
			return false;
		}
	}
	return true;
}

function isvalidpassword(s,loginid)
{
	var ret = true;
	if ((s != "") && (loginid != ""))
		{
		if (s == loginid)
			{
				ret = false;
			}
		}
		return ret;		
}

function isvalidstatus(status)
{
	if ((status == 1) || (status == 4))
		{
			return true;
		}
	else
		{
			return false;
		}

}
