////// Accessory Functions /////////////////////////////////////////////////////// 

// Some Global Variables ///////////////////////////////////////////////////////////

  var nameOfClass = "label"; 			//normal css class.
  var nameOfErrorClass = "labelError"; 	//name of css class to change wrong form items to.
  var errorBox = "errorID";				//where errors get sent to.
  
  
////// Acceptable Character Validation /////////////////////////////////////////////////////// 

function acceptableCharacters( itemID, checkType ) { 

  var checkOK;
  var checkStr = document.getElementById(itemID+"ID").value;
  var itemName = document.getElementById(itemID+"Label").title;
  var errorStr;
	switch(checkType){
		case "name":
			checkOK = /^[a-zA-Z-,\. ]+$/.test(checkStr); 
			errorStr = itemName + ": can only contain letters, a '-' or a space.\n";
			break;
		
		case "optionalname":
			checkOK = /^[a-zA-Z-,\. ]*$/.test(checkStr);
			errorStr = itemName + ": can only contain letters, a '-' or a space.\n";
			break;
			
		case "number":
			checkOK = /^[\d\.]+$/.test(checkStr);
			errorStr = itemName + ": can only contain numbers.\n";
			break;
			
		case "optionalnumber":
			checkOK = /^[\d\.]*$/.test(checkStr);
			errorStr = itemName + ": can only contain numbers.\n";
			break;
		
		case "zipPlus4":
			checkOK = /^([\d]{4})*$/.test(checkStr);
			errorStr = itemName + ": can only contain numbers.\n";
			break;
			
		case "email":
			checkOK = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i.test(checkStr);
			errorStr = itemName + ": is not a valid email.\n";
			break;
		
		case "loginName":
			checkOK = /^[a-zA-Z0-9]+$/.test(checkStr);
			errorStr = itemName + ": can only contain letters, or numbers.\n";
			break;
			
		case "address":
			checkOK = /^[a-zA-Z0-9 ,\.#]+$/.test(checkStr);
			errorStr = itemName + ": can only contain letters, numbers, commas, periods, spaces, or number signs.\n";
			break;
			
		case "optionaladdress":
			checkOK = /^[a-zA-Z0-9 ,\.#]*$/.test(checkStr);
			errorStr = itemName + ": can only contain letters, numbers, commas, periods, spaces, or number signs.\n";
			break;
			
		case "text":
			checkOK = true;
			errorStr = itemName + ": can only contain letters, numbers, spaces, or any of the following characters (!#$%&*-\?.,).\n";
			break;
			
		case "phone":
			checkOK = /^\(?[1-9]\d{2}\)?[ -]+\d{3}\-\d{4}$/.test(checkStr);
			errorStr = itemName + ": not valid format, try (999) 999-9999 or 999-999-9999.\n";
			break;

		case "optionalphone":
			checkOK = /^(\(?[1-9]\d{2}\)?[ -]+\d{3}\-\d{4})*/.test(checkStr);
			errorStr = itemName + ": not valid format, try (999) 999-9999 or 999-999-9999.\n";
			break;

		
		case "password":  //Right now same as loginName, anticpating future need for seperate conditions. jrs 03/27/06
			checkOK = /^[a-zA-Z0-9]+$/.test(checkStr);
			errorStr = itemName + ": can only contain letters, or numbers.\n";
			break;
			
		default:
			checkOK = /^[\w]+$/.test(checkStr);
			errorStr = itemName + ": can only contain letters, numbers, or an underscore.\n";
			break;
	}


  if (!checkOK)  { 
	document.getElementById(errorBox).value += errorStr;
    return (false); 
  }else{ 
   return (true); 
  } 

} 

/////////////////////////////////////////////////////////////////////////////////// 

function acceptableLength( checkStr, minLength, maxLength, itemID) { 

	 var itemName = document.getElementById(itemID + "Label").title;
 if (checkStr.length < minLength){ 
 	document.getElementById(errorBox).value+= itemName + ": is either blank or is too short. You need at least " + minLength + " characters.\n";
 	return ( false ); 
 }
 else {
	 if (checkStr.length > maxLength) {
		document.getElementById(errorBox).value+= itemName + ": is too long, only " + maxLength + " characters are allowed.\n";
		return ( false ); 
	 }
	 else{
		return ( true ); 
	 }
 	
 }
}

/////////////////////////////////////////////////////////////////////////////////// 

function comparePasswords( firstPassword, confirmPassword) { 

	var passwordItemName = document.getElementById(firstPassword + "Label").title;
	var confirmItemName = document.getElementById(confirmPassword + "Label").title;

  if (document.getElementById(firstPassword+"ID").value != document.getElementById(confirmPassword+"ID").value) {
	document.getElementById(errorBox).value+= passwordItemName + ": does not match " + confirmItemName + ".\n";
	document.getElementById(firstPassword+"Label").className=nameOfErrorClass;
	document.getElementById(confirmPassword+"Label").className=nameOfErrorClass;
 	return ( false );
  }
 
  else {
	document.getElementById(firstPassword+"Label").className=nameOfClass;
	document.getElementById(confirmPassword+"Label").className=nameOfClass;
	return ( true );
  }

} 

//////////////////////////////////////////////////////////////////////////////////


function checkdate(itemID){
	var validformat=/^\d{1,2}\/\d{1,2}\/\d{4}$/; //Basic check for format validity
	var input = document.getElementById(itemID+"ID").value;
	var itemName = document.getElementById(itemID + "Label").title;
	
	if (!validformat.test(input)){
		document.getElementById(errorBox).value+= itemName + ": is not a valid date format, (i.e. 01/01/2017).\n";
		document.getElementById(itemID+"Label").style.color="#990000";
		return ( false );
	}
	else{ //Detailed check for valid date ranges
		var monthfield=input.split("/")[0];
		var dayfield=input.split("/")[1];
		var yearfield=input.split("/")[2];
		var dayobj = new Date(yearfield, monthfield-1, dayfield);
		if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield)){
		
			document.getElementById(errorBox).value+= itemName + ": Invalid Day, Month, or Year range detected. Please correct and submit again.\n";
			document.getElementById(itemID+"Label").style.color="#990000";
			return ( false );
		}
		else {
			return ( true );
		}
			
	}

}


/////////////////////////////////////////////////////////////////////////////////// 

function checkDefaultText( itemID) { 

  var checkStr = document.getElementById(itemID + "ID").value;
  var itemName = document.getElementById(itemID + "Label").title;
 
  checkOK = /^Copy/.test(checkStr);
   if (checkOK)  { 

	document.getElementById(itemID+"Label").className=nameOfErrorClass;
	document.getElementById(errorBox).value+= itemName + ": contains the default text, please enter your new text.\n";
    return (false); 
  }else{ 
   document.getElementById(itemID+"Label").className=nameOfClass;
   return (true); 
  } 
} 

/////////////////////////////////////////////////////////////////////////////////// 


function optionSelected( itemID) { 

  var checkStr = document.getElementById(itemID + "ID").value;
  var itemName = document.getElementById(itemID + "Label").title;
 
  checkOK = /^-1/.test(checkStr);
   if (checkOK)  { 

	document.getElementById(itemID+"Label").className=nameOfErrorClass;
	document.getElementById(errorBox).value+= itemName + ": had no option selected, please select one.\n";
    return (false); 
  }else{ 
   document.getElementById(itemID+"Label").className=nameOfClass;
   return (true); 
  } 
} 

/////////////////////////////////////////////////////////////////////////////////// 

function validateForAcceptableFormat( itemID, minLength, maxLength, checkType) { 

  if (acceptableLength(document.getElementById(itemID+"ID").value, minLength, maxLength, itemID) == false) {
	document.getElementById(itemID+"Label").className=nameOfErrorClass;
 	return ( false );
  }
  else{	
  	  if (acceptableCharacters(itemID, checkType) == false){
		  document.getElementById(itemID+"Label").className=nameOfErrorClass;
		  return( false );
	  }
	  else {
		document.getElementById(itemID+"Label").className=nameOfClass;
		return ( true );
	  }
  }
} 