// This set of function are general includes for validation
// display_name function is necessary for most of them.


// Customize this for your application; if it's big, it might be better
// to put separate display_name functions in every page

function display_name(item) {
	var item_name = item.name;
	
	if (item_name == "FlightNumber")
	   return "Flight Number";
	   
	if (item_name == "DepartingCity")
	   return "City";
	   
	if (item_name == "Email1")
	   return "E-mail Address";
	   
	return item_name;
}


//  Trims leading and tailing spaces from a string

function Trim(strInput) {
	var strOutput = new String(strInput);
	
	var reHead = /\S/;	
	var numStart = strOutput.search(reHead);
	
	if( numStart < 0 )
		return "";
	
	var reTail = /\S\s*$/;
	var numEnd = strOutput.search(reTail);
	
	return strOutput.substring(numStart, numEnd+1);
}

//  Checks for empty string without popping up an error dialog
function nonEmptyString(item) {
	item.value=Trim(item.value);
	if (item.value.length==0) {
		return false;
	}
	return true;
}

//  Checks for empty string and pops up error dialog if it's empty
function nonBlank(item) {
	var strErrorMsg = "Please enter " + display_name(item)  ;
	item.value=Trim(item.value);
	if (item.value.length==0) {
		item.focus();
		alert(strErrorMsg);
		return false;
	}
	return true;
}

// Checks for valid decimal number
function validDecimal(item) {
	var strErrorMsg = display_name(item) + " must be a valid number";
     
//  Use this to provide default values for items (need to create
//  default_value function similar to display_name
   
    var strDefault = "0";
/*	strDefault = default_value(item);
	if (strDefault.length==0) {
		strDefault="0";
	}
	*/
	item.value=Trim(item.value);
	if (item.value.length==0)
		item.value=strDefault;
		
	var strTest = /^-?\d+\.?\d*$/;
	if (!strTest.test(item.value)) {
		item.focus();
		alert(strErrorMsg);
		return false;
	}
	return true;
}

// Checks for valid integer number
function validInteger(item) {
	var strErrorMsg = display_name(item) + " must be a valid number";
     
//  Use this to provide default values for items (need to create
//  default_value function similar to display_name
   
    var strDefault = "0";
/*	strDefault = default_value(item);
	if (strDefault.length==0) {
		strDefault="0";
	}
	*/
	item.value=Trim(item.value);
	if (item.value.length==0)
		item.value=strDefault;
		
	var strTest = /^-?\d+$/;
	if (!strTest.test(item.value)) {
		item.focus();
		alert(strErrorMsg);
		return false;
	}
	return true;
}

//  Checks for valid e-mail 
//asks for letters/period @ letters\dash\period\underscore
function validEmail(item) 
{
	var strErrorMsg = display_name(item) + " is not a valid Email";
	item.value=Trim(item.value);
	if (!(/^[\w\.]+@[\w\.\-\_]+$/.test(item.value))) {
		item.focus();
		alert(strErrorMsg);
		return false;
	}
	return true;
}

//  Checks for valid name (letters, ",", ".", "-", "'") 
function validName(item) {
	var strErrorMsg = display_name(item) + " is not valid";
	item.value=Trim(item.value);
	if (!(/^[a-zA-Z\,\.\-\'\s]+$/.test(item.value))) {
		item.focus();
		alert(strErrorMsg);
		return false;
	}
	return true;
}

//  Checks for valid address (alphanumeric and punctiation)
function validAddress(item) {
	var strErrorMsg = display_name(item) + " is not valid";
	item.value=Trim(item.value);
	if (!(/^[\w\,\.\-\'\(\)#\s]+$/.test(item.value))) {
		item.focus();
		alert(strErrorMsg);
		return false;
	}
	return true;
}


// Checks for valid phone number
function validPhone(item) {
	var strErrorMsg = display_name(item) + " is not a valid phone number";
	item.value=Trim(item.value);
	var strTest = /^(1-?)?\s*\(?\s*\d{3}\s*([\)-])?\s*\d{3}\s*-?\s*\d{4}$/;
	if (!strTest.test(item.value)) {
		item.focus();
		alert(strErrorMsg);
		return false;
	}
	return true;
}

// checks for valid zip
function validZip(item) {
	var strErrorMsg = display_name(item) + " must be of the form 99999-9999";
	item.value=Trim(item.value);
	if (!(/^\d{5}$/.test(item.value) || /^\d{5}-\d{4}$/.test(item.value))) {
		item.focus();
		alert(strErrorMsg);
		return false;
	}
	return true;
}


