// site_js.js

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

/* Functions that swaps images. */
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

/* Functions that handle preload. */
function MM_preloadImages() { //v3.0
 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
   var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
   if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

/********************************************************************/
/* Function that closes the current window */
function close_window() {
	window.close();
}

/* Function that checks a string for illegal characters */
function hasIllegalCharacters(stringToTest, illegalCharacterString) {
	var isIllegal = false;
	var character = "";
	
	for(var i = 0; i < illegalCharacterString.length; i++)  {
		character = illegalCharacterString.charAt(i);
		if (stringToTest.indexOf(character) != -1)
			isIllegal = true;
	}
	return isIllegal;
}

/* Function to check that a string is numeric*/
function isNumeric(stringToTest) {
	var numericCheckRegExp = /[^\d ]/;
	return !numericCheckRegExp.test(stringToTest);
}

/* Function that checks an addressTag for spaces or punctuation */
function checkAddressTag(addressTag) {
	var illegalChars = "`~!@#$%^&*()?:;,={}[]'<>+ ./\|";
	return !hasIllegalCharacters(addressTag, illegalChars);
}

/* Function that checks a date is a valid format */
function checkDateFormat(strDate) {
	var dateCheckRegExpStr = "^[0-3][\\d][//][0-1][\\d][//]20[0-1][\\d]\\s[0-2][\\d]:[0-5][\\d]$";
	var dateCheckRegExp = new RegExp(dateCheckRegExpStr);
	return dateCheckRegExp.test(strDate);
}

/* Function that checks an email address */
function checkEmail(emailAddress) {
	
	var illegalChars = "!#$%^&*()?:;,+";
	var badChars = hasIllegalCharacters(emailAddress, illegalChars);
	var at = emailAddress.indexOf("@");
	var dot = emailAddress.indexOf(".");
	var space = emailAddress.indexOf(" ");
	
	if ((!badChars) &&  //if theres no illegal chars
		(at != -1) &&  //and if theres an '@'
		(at != 0) &&  //and if its not at position 0
		(dot != -1) &&  //and if theres a '.'
		//(dot > at + 1) &&  //and if somethings between the'@' & the '.'
		(dot < emailAddress.length - 1) &&  //and theres something after the '.'
		(space == -1))   {  //and there are no spaces
		return true;   //then everything should be ok
	}
	else  {
	return false;  //somethings wrong!!
	}
}

/*****************************************************************************/

/* Function that validates fields in login.jsp */
function checkLogin(form) {
	var phoneNum = form["loginForm:login_phoneNum"].value;
	var password = form["loginForm:login_password"].value;
	
	if (phoneNum == "") {
		alert("Phone number field cannot be empty");
		form["loginForm:login_phoneNum"].focus();
		return false;
	}
	if (!isNumeric(phoneNum)) {
		alert("phone number field must be numeric");
		form["loginForm:login_phoneNum"].focus();
		return false;
	}
	if (password == "") {
		alert("Password field cannot be empty");
		form["loginForm:login_password"].focus();
		return false;
	}

	return true;
}

/* Function that validates fields in register_details.jsp */
function checkRegisterDetails(form) {
	var phoneNum = form["registerDetailsForm:registerDetails_phoneNum"].value;
	var firstName = form["registerDetailsForm:registerDetails_firstName"].value;
	var lastName = form["registerDetailsForm:registerDetails_lastName"].value;
	var organization = form["registerDetailsForm:registerDetails_organization"].value;
	var email = form["registerDetailsForm:registerDetails_email"].value;
	
	if (phoneNum == "") {
		alert("Phone number field cannot be empty");
		form["registerDetailsForm:registerDetails_phoneNum"].focus();
		return false;
	}
	if (!isNumeric(phoneNum)) {
		alert("phone number field must be numeric");
		form["registerDetailsForm:registerDetails_phoneNum"].focus();
		return false;
	}
	if (firstName == "") {
		alert("First Name field cannot be empty");
		form["registerDetailsForm:registerDetails_firstName"].focus();
		return false;
	}
	if (lastName == "") {
		alert("Last Name field cannot be empty");
		form["registerDetailsForm:registerDetails_lastName"].focus();
		return false;
	}
	if (email == "") {
		alert("Email field cannot be empty");
		form["registerDetailsForm:registerDetails_email"].focus();
		return false;
	}
	if (checkEmail(email) != true) {
		alert("Email address is  not a valid format");
		form["registerDetailsForm:registerDetails_email"].focus();
		return false;
	}

	return true;
}

/* Function that validates fields in register_address.jsp */
function checkRegisterAddress(form) {
	var addressTag = form["registerAddressForm:registerAddress_addressTag"].value;
	var streetNum = form["registerAddressForm:registerAddress_streetNum"].value;
	var streetName = form["registerAddressForm:registerAddress_streetName"].value;
	var suburb = form["registerAddressForm:registerAddress_suburb"].value;
	
	if (addressTag == "") {
		alert("Address Tag field cannot be empty");
		form["registerAddressForm:registerAddress_addressTag"].focus();
		return false;
	}
	if (checkAddressTag(addressTag) != true) {
		alert("Address Tag field cannot contain spaces or punctuation");
		form["registerAddressForm:registerAddress_addressTag"].focus();
		return false;
	}
	if (streetNum == "") {
		alert("Street Num field cannot be empty");
		form["registerAddressForm:registerAddress_streetNum"].focus();
		return false;
	}
	if (streetName == "") {
		alert("Street Name field cannot be empty");
		form["registerAddressForm:registerAddress_streetName"].focus();
		return false;
	}
	if (suburb == "") {
		alert("Suburb field cannot be empty");
		form["registerAddressForm:registerAddress_suburb"].focus();
		return false;
	}

	return true;
}

/*****************************************************************************/

/* Function that validates fields in forgotton_password.jsp */
function checkForgotPassword(form) {
	var phoneNum = form["forgotPasswordForm:forgotPassword_phoneNum"].value;
	
	if (phoneNum == "") {
		alert("Phone number field cannot be empty");
		form["forgotPasswordForm:forgotPassword_phoneNum"].focus();
		return false;
	}

	return true;
}

/* Function that validates fields in booktaxi.jsp */
function checkBookTaxi(form) {
	//var numberTaxis = form["bookTaxiForm:bookTaxi_numberTaxis"].value;
	var taxiType = form["bookTaxiForm:bookTaxi_taxiType"].options[form["bookTaxiForm:bookTaxi_taxiType"].selectedIndex].value;
	var pickupTime = form["bookTaxiForm:bookTaxi_pickupTime"].options[form["bookTaxiForm:bookTaxi_pickupTime"].selectedIndex].value;
	var selectedAddressTagIndex = form["bookTaxiForm:bookTaxi_addressTag"].selectedIndex;
	var addressTag = form["bookTaxiForm:bookTaxi_addressTag"].options[form["bookTaxiForm:bookTaxi_addressTag"].selectedIndex].value;

/** CHANGED 12
	if (numberTaxis == "") {
		alert("Number of Taxis field cannot be empty");
		form["bookTaxiForm:bookTaxi_numberTaxis"].focus();
		return false;
	}
	if (!isNumeric(numberTaxis)) {
		alert("Number of Taxis field must be numeric");
		form["bookTaxiForm:bookTaxi_numberTaxis"].focus();
		return false;
	}
	if (numberTaxis == "0") {
		alert("Number of Taxis field cannot be zero");
		form["bookTaxiForm:bookTaxi_numberTaxis"].focus();
		return false;
	}
	if (numberTaxis > "99") {
		alert("Number of Taxis field cannot be more than 99");
		form["bookTaxiForm:bookTaxi_numberTaxis"].focus();
		return false;
	}
2008-07-22 use date time picker, so don't use this any more
	if (pickupTime == "PRE_SET_OTHER") {
		var otherTime = form["bookTaxiForm:bookTaxi_pickupTime_other"].value;
		if (otherTime == "") {
			alert("Other Date/Time field cannot be empty");
			form["bookTaxiForm:bookTaxi_pickupTime_other"].focus();
			return false;
		}
		//if (!checkDateFormat(otherTime)) {
		//	alert("Other Date/Time is incorrect format");
		//	form["bookTaxiForm:bookTaxi_pickupTime_other"].focus();
		//	return false;
		//}
	}**/
	if (taxiType != "any") {
		var destination = form["bookTaxiForm:bookTaxi_destination"].value;
		if (destination == "") {
			alert("Destination field cannot be empty");
			form["bookTaxiForm:bookTaxi_destination"].focus();
			return false;
		}
	}
	//CHANGED 15 if (selectedAddressTagIndex == -1) {
	//	alert("A valid Pickup Location must be selected.");
	if (selectedAddressTagIndex == -1 || addressTag == "--- Please choose an address ---") {
		alert("A valid Address Name must be selected.");
		form["bookTaxiForm:bookTaxi_addressTag"].focus();
		return false;
	}

	return true;
}

/* Function that validates fields in change_password.jsp */
function checkChangePassword(form) {
	var origPass = form["changePasswordForm:changePasswordForm_origPassword"].value;
	var newPass = form["changePasswordForm:changePasswordForm_newPassword"].value;
	var newPassConfirm = form["changePasswordForm:changePasswordForm_newPasswordConfirm"].value;
	
	if (origPass == "") {
		alert("Original Passsword field cannot be empty");
		form["changePasswordForm:changePasswordForm_origPassword"].focus();
		return false;
	}
	if (newPass == "") {
		alert("New Passsword field cannot be empty");
		form["changePasswordForm:changePasswordForm_newPassword"].focus();
		return false;
	}
	if (newPassConfirm == "") {
		alert("Confirm Passsword field cannot be empty");
		form["changePasswordForm:changePasswordForm_newPasswordConfirm"].focus();
		return false;
	}
	if (!(newPass == newPassConfirm)) {
		alert("Passsword and Confirm Password fields don't match");
		form["changePasswordForm:changePasswordForm_newPasswordConfirm"].focus();
		return false;
	}

	return true;
}

/* Function that validates fields in edit_details.jsp for a web user */
function checkEditDetails(form) {
	//var phoneNum = form["editDetailsForm:editDetails_phoneNum"].value;
	var firstName = form["editDetailsForm:editDetails_firstName"].value;
	var lastName = form["editDetailsForm:editDetails_lastName"].value;
	var organization = form["editDetailsForm:editDetails_organization"].value;
	var email = form["editDetailsForm:editDetails_email"].value;
	
	if (firstName == "") {
		alert("First Name field cannot be empty");
		form["editDetailsForm:editDetails_firstName"].focus();
		return false;
	}
	if (lastName == "") {
		alert("Last Name field cannot be empty");
		form["editDetailsForm:editDetails_lastName"].focus();
		return false;
	}
	if (email == "") {
		alert("Email field cannot be empty");
		form["editDetailsForm:editDetails_email"].focus();
		return false;
	}
	if (checkEmail(email) != true) {
		alert("Email address is  not a valid format");
		form["editDetailsForm:editDetails_email"].focus();
		return false;
	}

	return true;
}

/* Function that validates fields in edit_details.jsp for a phone user */
function checkEditPhoneDetails(form) {
	//var phoneNum = form["editDetailsForm:editDetails_phoneNum"].value;
	var firstName = form["editDetailsForm:editDetails_firstName"].value;
	var lastName = form["editDetailsForm:editDetails_lastName"].value;
	var organization = form["editDetailsForm:editDetails_organization"].value;
	var email = form["editDetailsForm:editDetails_email"].value;
	
	if (firstName == "") {
		alert("First Name field cannot be empty");
		form["editDetailsForm:editDetails_firstName"].focus();
		return false;
	}
	if (lastName == "") {
		alert("Last Name field cannot be empty");
		form["editDetailsForm:editDetails_lastName"].focus();
		return false;
	}
	if (email != "") {
		if (checkEmail(email) != true) {
			alert("Email address is  not a valid format");
			form["editDetailsForm:editDetails_email"].focus();
			return false;
		}
	}

	return true;
}

/* Function that validates fields in edit_address.jsp */
function checkEditAddress(form) {
	//var addressTag = form["editAddressForm:editAddress_addressTag"].value;
	var streetNum = form["editAddressForm:editAddress_streetNum"].value;
	var streetName = form["editAddressForm:editAddress_streetName"].value;
	var suburb = form["editAddressForm:editAddress_suburb"].value;
	
	//if (addressTag == "") {
	//	alert("Address Tag field cannot be empty");
	//	form["editAddressForm:editAddress_addressTag"].focus();
	//	return false;
	//}
	if (streetNum == "") {
		alert("Street Num field cannot be empty");
		form["editAddressForm:editAddress_streetNum"].focus();
		return false;
	}
	if (streetName == "") {
		alert("Street Name field cannot be empty");
		form["editAddressForm:editAddress_streetName"].focus();
		return false;
	}
	if (suburb == "") {
		alert("Suburb field cannot be empty");
		form["editAddressForm:editAddress_suburb"].focus();
		return false;
	}

	return true;
}

/* Function that validates fields in add_address.jsp */
function checkAddAddress(form) {
	var addressTag = form["addAddressForm:addAddress_addressTag"].value;
	var streetNum = form["addAddressForm:addAddress_streetNum"].value;
	var streetName = form["addAddressForm:addAddress_streetName"].value;
	var suburb = form["addAddressForm:addAddress_suburb"].value;
	
	if (addressTag == "") {
		alert("Address Tag field cannot be empty");
		form["addAddressForm:addAddress_addressTag"].focus();
		return false;
	}
	if (checkAddressTag(addressTag) != true) {
		alert("Address Tag field cannot contain spaces or punctuation");
		form["addAddressForm:addAddress_addressTag"].focus();
		return false;
	}
	if (streetNum == "") {
		alert("Street Num field cannot be empty");
		form["addAddressForm:addAddress_streetNum"].focus();
		return false;
	}
	if (streetName == "") {
		alert("Street Name field cannot be empty");
		form["addAddressForm:addAddress_streetName"].focus();
		return false;
	}
	if (suburb == "") {
		alert("Suburb field cannot be empty");
		form["addAddressForm:addAddress_suburb"].focus();
		return false;
	}

	return true;
}

/* Function that confirms delete_address.jsp */
function confirmDeleteAddress(form) {
	var selectedAddressTagIndex = form["deleteAddressForm:deleteAddress_addressTag"].selectedIndex;
	
	if (selectedAddressTagIndex == -1)
		return false;
	
	if (confirm("Are you sure you wish to delete Address?")) {
		return true;
	}
	else {
		return false;
	}

}
/* Function that confirms delete_address.jsp */
function confirmDeleteUser(form) {
	
	if (confirm("Are you sure you wish to delete your user profile?")) {
		return true;
	}
	else {
		return false;
	}

}
/*****************************************************************************/

/* Function that validates fields in admin_phoneregister_details.jsp */
function checkRegisterPhoneDetails(form) {
	var phoneNum = form["phoneRegisterDetailsForm:phoneRegisterDetails_phoneNum"].value;
	var firstName = form["phoneRegisterDetailsForm:phoneRegisterDetails_firstName"].value;
	var lastName = form["phoneRegisterDetailsForm:phoneRegisterDetails_lastName"].value;
	var organization = form["phoneRegisterDetailsForm:phoneRegisterDetails_organization"].value;
	var email = form["phoneRegisterDetailsForm:phoneRegisterDetails_email"].value;
	
	if (phoneNum == "") {
		alert("Phone number field cannot be empty");
		form["phoneRegisterDetailsForm:phoneRegisterDetails_phoneNum"].focus();
		return false;
	}
	if (!isNumeric(phoneNum)) {
		alert("phone number field must be numeric");
		form["phoneRegisterDetailsForm:phoneRegisterDetails_phoneNum"].focus();
		return false;
	}
	if (firstName == "") {
		alert("First Name field cannot be empty");
		form["phoneRegisterDetailsForm:phoneRegisterDetails_firstName"].focus();
		return false;
	}
	if (lastName == "") {
		alert("Last Name field cannot be empty");
		form["phoneRegisterDetailsForm:phoneRegisterDetails_lastName"].focus();
		return false;
	}
	if (email != "") {
		if (checkEmail(email) != true) {
			alert("Email address is  not a valid format");
			form["phoneRegisterDetailsForm:phoneRegisterDetails_email"].focus();
			return false;
		}
	}

	return true;
}

/* Function that validates fields in admin_phoneregister_address.jsp */
function checkRegisterPhoneAddress(form) {
	var addressTag = form["phoneRegisterAddressForm:phoneRegisterAddress_addressTag"].value;
	var streetNum = form["phoneRegisterAddressForm:phoneRegisterAddress_streetNum"].value;
	var streetName = form["phoneRegisterAddressForm:phoneRegisterAddress_streetName"].value;
	var suburb = form["phoneRegisterAddressForm:phoneRegisterAddress_suburb"].value;
	
	if (addressTag == "") {
		alert("Address Tag field cannot be empty");
		form["phoneRegisterAddressForm:phoneRegisterAddress_addressTag"].focus();
		return false;
	}
	if (checkAddressTag(addressTag) != true) {
		alert("Address Tag field cannot contain spaces or punctuation");
		form["phoneRegisterAddressForm:phoneRegisterAddress_addressTag"].focus();
		return false;
	}
	if (streetNum == "") {
		alert("Street Num field cannot be empty");
		form["phoneRegisterAddressForm:phoneRegisterAddress_streetNum"].focus();
		return false;
	}
	if (streetName == "") {
		alert("Street Name field cannot be empty");
		form["phoneRegisterAddressForm:phoneRegisterAddress_streetName"].focus();
		return false;
	}
	if (suburb == "") {
		alert("Suburb field cannot be empty");
		form["phoneRegisterAddressForm:phoneRegisterAddress_suburb"].focus();
		return false;
	}

	return true;
}


/* Function that validates fields in admin_addglobaladdress.jsp */
function checkAddGlobalAddress(form) {
	var addressTag = form["addGlobalAddressForm:addGlobalAddress_addressTag"].value;
	var IVRTemplate = form["addGlobalAddressForm:addGlobalAddress_IVRTemplate"].value;
	
	if (addressTag == "") {
		alert("Address Tag field cannot be empty");
		form["addGlobalAddressForm:addGlobalAddress_addressTag"].focus();
		return false;
	}
	if (checkAddressTag(addressTag) != true) {
		alert("Address Tag field cannot contain spaces or punctuation");
		form["addGlobalAddressForm:addGlobalAddress_addressTag"].focus();
		return false;
	}
	if (streetNum == "") {
		alert("IVRTemplate field cannot be empty");
		form["addGlobalAddressForm:addGlobalAddress_IVRTemplate"].focus();
		return false;
	}

	return true;
}

/* Function that validates fields in admin_editglobaladdress.jsp */
function checkEditGlobalAddress(form) {
//	var addressTag = form["editGlobalAddressForm:editGlobalAddress_addressTag"].value;
	var IVRTemplate = form["editGlobalAddressForm:editGlobalAddress_IVRTemplate"].value;
	
//	if (addressTag == "") {
//		alert("Address Tag field cannot be empty");
//		form["editGlobalAddressForm:editGlobalAddress_addressTag"].focus();
//		return false;
//	}
//	if (checkAddressTag(addressTag) != true) {
//		alert("Address Tag field cannot contain spaces or punctuation");
//		form["editGlobalAddressForm:editGlobalAddress_addressTag"].focus();
//		return false;
//	}
	if (IVRTemplate == "") {
		alert("IVRTemplate field cannot be empty");
		form["editGlobalAddressForm:editGlobalAddress_IVRTemplate"].focus();
		return false;
	}

	return true;
}

/* Function that confirms admin_deleteglobaladdress.jsp */
function confirmDeleteGlobalAddress(form) {
	var selectedAddressTagIndex = form["deleteGlobalAddressForm:deleteGlobalAddress_addressTag"].selectedIndex;
	
	if (selectedAddressTagIndex == -1)
		return false;

	if (confirm("Are you sure you wish to delete Global Address?")) {
		return true;
	}
	else {
		return false;
	}

}

/*****************************************************************************/

