
function noBack() {
	window.history.forward(1);
	if(history.length>0)history.go(+1)
}

function checkDialCode(strng) {
	var rc = "OK";
	var dialCodeFilter = /^\+\d{1,}$/; // allow only numbers
	if (! dialCodeFilter.test(strng)) {
		rc = "COUNTRY DIAL CODE MUST BE NUMBER<br><br>";
	}
	return rc;
}

function checkPhone(strng) {
	var rc = "OK";
	var stripped = strng.replace(/[\(\)\.\-\ ]/g, '');
	//strip out acceptable non-numeric characters
	if (isNaN(parseInt(stripped))) {
		rc = "THE PHONE NUMBER CONTAINS ILLEGAL CHARACTERS.";
	}
	return rc;
}

function checkZip(strng) {
	var rc = "OK";
	var legalChars = /[a-zA-Z0-9 ]/; // allow only alphabet 
	if (! legalChars.test(strng)) {
		rc = "ONLY ALPHABET IS ALLOWED<br><br>";
	}
	return rc;
}

function checkName(strng) {
	var rc = "OK";
	var legalChars = /^[a-zA-Z\s]+$/; // allow only alphabet 
	if (! legalChars.test(strng)) {
		rc = "ONLY ALPHABET IS ALLOWED<br><br>";
	}
	return rc;
}

function checkAddress(strng) {
	var rc = "OK";
	var legalChars = /^[\w\.\#\@ ]+$/; // allow only numbers and lettes
	if (! legalChars.test(strng)) {
		rc = "ADDRESS MUST HAVE NUMBER, LETTERS, '#' OR '.' <br><br>";
	}
	return rc;
}

function checkEmail(strng) {
	var emailFilter=/^.+@.+\..+$/;
	var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
	var rc = "OK";
	if (!(emailFilter.test(strng))) { 
		rc = "PLEASE ENTER A VALID EMAIL ADDRESS.<br><br>";
	} else if (strng.match(illegalChars)) {
		rc = "THE EMAIL ADDRESS CONTAINS ILLEGAL CHARACTERS.<br><br>";
	}
	return rc;
}

function checkPasswdorig (strng, register) {
	var rc = "OK";
	if (strng == "") {
		rc = "YOU DID NOT ENTER A PASSWORD<br><br>";
	}
	var illegalChars = /[\W_]/; // allow only letters and numbers
	if (strng.length < 8) {
		rc = "THE PASSWORD HAS WRONG LENGTH<br><br><br>";
	} else if (illegalChars.test(strng)) {
		rc = "THE PASSWORD CONTAINS ILLEGAL CHARACTERS.<br><br>";
	} else if (register == true && !((strng.search(/[a-z]+/) > -1)
	                                 && (strng.search(/[A-Z]+/) > -1)
	                                 && (strng.search(/[0-9]+/) > -1))) {
		rc = "THE PASSWORD MUST CONTAIN AT LEAST ONE UPPERCASE LETTER, ONE LOWERCASE LETTER AND ONE NUMERAL<br<br>";
	}
	return rc;
}

function checkPassword (strng) {
	var rc = "OK";
	if (strng == "") {
		rc = "YOU DID NOT ENTER A PASSWORD<br><br>";
	}
	var illegalChars = /[\s]/; // allow only letters and numbers
	if (strng.length < 8) {
		rc = "THE PASSWORD MUST HAVE AT LEAST 8 CHARACTERS<br><br><br>";
	} else if (illegalChars.test(strng)) {
		rc = "THE PASSWORD MUST NOT HAVE SPACE.<br><br>";
	} else if (!((strng.search(/[a-z]+/) > -1)
	              && (strng.search(/[A-Z]+/) > -1)
	              && (strng.search(/[0-9]+/) > -1))) {
		rc = "THE PASSWORD MUST CONTAIN AT LEAST ONE UPPERCASE LETTER, ONE LOWERCASE LETTER AND ONE NUMBER<br<br>";
	}
	return rc;
}

function doaction(value) {
	var form = document.FORM;

	if ( value == 0 ) {
		form.submit();
	} else if ( value == 1 ) {
		form.returnDate.disabled = false;
		form.returnTime.disabled = false;
		form.returnPickUp.disabled = false;
		form.returnDropOff.disabled = false;
	} else if ( value == 2 ) {
		form.returnDate.disabled = true;
		form.returnTime.disabled = true;
		form.returnPickUp.disabled = true;
		form.returnDropOff.disabled = true;
	} else if ( value == 3 ) {
		if ( form.returnDropOff.selectedIndex == 0 ) {
			var index = form.departPickUp.selectedIndex;
			var pickup = form.departPickUp.options[index].value;
			var len = form.returnDropOff.length;
			for( i=0; i < len; i++) {
				var dropoff = form.returnDropOff.options[i].value;
				if ( dropoff == pickup ) {
					form.returnDropOff.options[i].selected = true;
				}
			}
		}               
	} else if ( value == 4 ) {
		if ( form.returnPickUp.selectedIndex == 0 ) {
			var index = form.departDropOff.selectedIndex;
			var dropoff = form.departDropOff.options[index].value;
			var len = form.returnPickUp.length;
			for( i=0; i < len; i++) {
				var pickup = form.returnPickUp.options[i].value;
				if ( dropoff == pickup ) {
					form.returnPickUp.options[i].selected = true;
				}
			}
		}
	} else if ( value == 5 ) {
		var hasError = false;
		var tripType;
		var idx;
		if ( form.tripType[0].checked ) {
			tripType = form.tripType[0].value;
		} else {
			tripType = form.tripType[1].value;
		}

		if ( form.routeSelection.selectedIndex == 0 ||
		     form.departDate.value.length == 0 ) {
			hasError = true;
		}  

		if ( form.departPickUp.selectedIndex == 0 ||
		     form.departDropOff.selectedIndex == 0 ) {
			hasError = true;
		}

		var dt = new Date(form.departDate.value);
		var today = new Date(form.defaultDate.value);
		if ( today > dt ) {
			form.departDate.value = '';
			hasError = true;
		}

		if ( tripType == 'RoundTrip' ) {
			if ( form.returnDate.value.length == 0 ) {
				hasError = true;
			}

			var rt = new Date(form.returnDate.value);
			if ( today > rt ||
			     dt > rt ) {
				form.returnDate.value = '';
				hasError = true;
			}

			if ( form.returnPickUp.selectedIndex == 0 ||
			     form.returnDropOff.selectedIndex == 0 ) {
				hasError = true;
			}
		}

		if ( hasError ) {
			form.hasError.value = 1;	
			form.NextPage.value = '';
		} else {
			var servername = window.location.hostname;
			form.NextPage.value = 'https://' + servername + '/booking/';
			form.BookingStage.value = 2;
		}
		form.submit();
	}
}

function booking_action(value, sessid) {
	var form = document.FORM;
	var hasError;
	var oneday = 60 * 24 * 24;

	if ( value == 20 ) {
		var now = new Date();
		var epoch_ms = now.getTime();
		var epoch = parseInt(epoch_ms / 1000);
		if ( typeof form.returnScheduleID != 'undefined' ) {
			for( var i=0; i < form.returnScheduleID.length; i++ ) {
				var myRes = form.returnScheduleID[i].value.split(":");
				if ( myRes[1] > epoch && myRes[2] == 0 ) {
					form.returnScheduleID[i].disabled = false;
				}
			}
		}
	} else if ( value == 21 ) {
		var dt = new Date(form.departDate.value);
		var nt = new Date(dt.getTime() - oneday);
		var today = new Date(form.defaultDate.value);

		if ( today > nt ) {
			form.ErrorMsg.value = "DEPART DATE CAN'T GO BEYOND DEFAULT DATE<br><br>";
		} else {
			form.pickAnotherDay.value = 'DepartPrev';
		}
		form.BookingStage.value = 2;
		form.submit();
	} else if ( value == 22 ) {
		if ( form.returnDate.value != '' ) {
			var dt = new Date(form.departDate.value);
			var nt = new Date(dt.getTime() + oneday);
			var rt = new Date(form.returnDate.value);
		
			if ( nt >= rt ) {
				form.ErrorMsg.value = "DEPART DATE CAN'T GO BEYOND RETURN DATE<br><br>";
			} else {
				form.pickAnotherDay.value = 'DepartNext';
			}
		} else {
			form.pickAnotherDay.value = 'DepartNext';
		}
		form.BookingStage.value = 2;
		form.submit();
	} else if ( value == 23 ) {
		var rt = new Date(form.returnDate.value);
		var nt = new Date(rt.getTime() - oneday);
		var dt = new Date(form.departDate.value);
		
		if ( dt > nt ) {
			form.ErrorMsg.value = "RETURN DATE CAN'T GO BEYOND DEPART DATE<br><br>";
		} else {
			form.pickAnotherDay.value = 'ReturnPrev';
		}
		form.BookingStage.value = 2;
		form.submit();
	} else if ( value == 24 ) {
		form.BookingStage.value = 2;
		form.pickAnotherDay.value = 'ReturnNext';
		form.submit();
	} else if ( value == 25 ) {
		window.location = '/';
	} else if ( value == 26 ) {
		// validate the departSchedule and returnSchedule
		hasError = true;
		var len = form.departScheduleID.length;
		for(i=0; i < len; i++) {
			if ( form.departScheduleID[i].checked ) {
				hasError = false;
				i = len + 1;
			}
		}
		if ( hasError ) {
			form.ErrorMsg.value = "PLEASE PICK A DEPART TIME<br><br>";
		}

		if ( typeof form.returnScheduleID != 'undefined' ) {
			hasError = true;
			len = form.returnScheduleID.length;
			for(j=0; j < len; j++) {
				if ( form.returnScheduleID[j].checked ) {
					hasError = false;
					j = len + 1;
				}
			}
			if ( hasError ) {
				form.ErrorMsg.value += "PLEASE PICK A RETURN TIME<br><br>";
			}
		}

		if ( hasError) {
			form.BookingStage.value = 2;
		} else {
			form.BookingStage.value = 3;
		}
		form.submit();
	} else if ( value == 31 ) {
		form.BookingStage.value = 2;
		form.ErrorMsg.value = " ";
		form.submit();
	} else if ( value == 32 ) {
		hasError = false;
		form.ErrorMsg.value = "";
		var rc;
		if ( form.bookEmail.value == "" && form.bookPassword.value == "" ) {
			if ( form.first_name.value != "" && form.last_name.value != "" && form.email.value != "" &&
			     form.confirm_email.value != "" && form.password.value != "" && 
			     form.confirm_password.value != "" && form.address1.value != "" && 
			     form.city.value != "" && form.state.value != "" &&
			     form.country.value != "" && form.dial_code1.value != "" && form.phone1.value != "" ) {
				rc = checkName(form.first_name.value);
				if ( rc != "OK" ) {
					form.ErrorMsg.value += "FIRST NAME MUST NOT HAVE NUMBERS<br><br>";
					form.first_name.value = "";
					hasError = true;
				}
				rc = checkName(form.last_name.value);
				if ( rc != "OK" ) {
					form.ErrorMsg.value += "LAST NAME MUST NOT HAVE NUMBERS<br><br>"
					form.last_name.value = "";
					hasError = true;
				}
				if ( form.email.value != form.confirm_email.value ) {
					hasError = true;
					form.ErrorMsg.value += "EMAILS DO NOT MATCH<br><br>";
					form.email.value = "";
					form.confirm_email.value = "";
				}
				rc = checkEmail(form.email.value);	
				if ( rc != "OK" ) {
					form.ErrorMsg.value += rc;	
					hasError = true;
					form.email.value = "";
					form.confirm_email.value = "";
				}
				if ( form.password.value != form.confirm_password.value ) {
					hasError = true;
					form.ErrorMsg.value += "PASSOWRDS DO NOT MATCH<br><br>";
					form.password.value = "";
					form.confirm_password.value = "";
					hasError = true;
				}
				rc = checkPassword(form.password.value);	
				if ( rc != "OK" ) {
					form.ErrorMsg.value += rc;	
					hasError = true;
					form.password.value = "";
					form.confirm_password.value = "";
				}
				rc = checkAddress(form.address1.value);	
				if ( rc != "OK" ) {
					form.ErrorMsg.value += rc;	
					hasError = true;
					form.address1.value = "";
				}
				if ( form.address2.value != "" ) {
					rc = checkAddress(form.address2.value);	
					if ( rc != "OK" ) {
						form.ErrorMsg.value += rc;	
						hasError = true;
						form.address2.value = "Error";
					}
				}
				rc = checkName(form.city.value);	
				if ( rc != "OK" ) {
					form.ErrorMsg.value += rc;	
					hasError = true;
					form.city.value = "";
				}
				rc = checkName(form.state.value);	
				if ( rc != "OK" ) {
					form.ErrorMsg.value += rc;	
					hasError = true;
					form.state.value = "";
				}
				rc = checkZip(form.zip_code.value);	
				if ( rc != "OK" ) {
					form.ErrorMsg.value += rc;	
					hasError = true;
					form.zip_code.value = "";
				}
				rc = checkDialCode(form.dial_code1.value);	
				if ( rc != "OK" ) {
					form.ErrorMsg.value += rc;	
					hasError = true;
					form.dial_code1.value = "";
				}
				form.phone1.value = form.phone1.value.replace(/[\(\)\.\-\ ]/g, '');
				rc = checkPhone(form.phone1.value);	
				if ( rc != "OK" ) {
					form.ErrorMsg.value += rc;	
					hasError = true;
					form.phone1.value = "";
				}
			} else {
				hasError = true;
				form.ErrorMsg.value += "PLEASE COMPLETE NEW CUSTOMER FORM<br><br>";
			}
		} else if ( form.bookEmail.value != "" && form.bookPassword.value != "" ) {
			if ( form.first_name.value == "" && form.last_name.value == "" && form.email.value == "" &&
			     form.address1.value == "" && form.city.value == "" && form.state.value == "" &&
			     form.address2.value == "" && form.confirm_email.value == "" && form.country.value == "" &&
			     form.confirm_password.value == "" && form.dial_code1.value == "" && form.phone1.value == "" ) {
				hasError = false; 
			} else {
				hasError = true;
				form.ErrorMsg.value += "PLEASE LOGIN AS EXISTING MEMBER<br><br>";
			}
		} else {
			hasError = true;
			form.ErrorMsg.value += "PLEASE COMPLETE NEW CUSTOMER FORM OR LOGIN AS EXISTING MEMBER<br><br>";
		}
		
		if ( hasError) {
			form.BookingStage.value = 3;
		} else {
			form.BookingStage.value = 4;
		}
		form.submit();
	} else if ( value == 41 ) {
		if ( form.AreYouTravel.checked ) {
			form.BookingStage.value = 4;
			form.submit();
		} else {
			form.first_name.value = '';
			form.last_name.value = '';
			form.email.value = '';
			form.country.selectedIndex = 0;
			form.dial_code1.value = ''
			form.phone1.value = ''
			form.dial_code3.value = ''
			form.phone3.value = ''
		}
	} else if ( value == 42 ) {
		window.location = '/';
	} else if ( value == 43 ) {
		form.BookingStage.value = 5;
	}
}

function reg_validate() {
	var form = document.FORM;
	var hasError;
	rc = checkName(form.first_name.value);
	if ( rc != "OK" ) {
		form.ErrorMsg.value += "FIRST NAME MUST NOT HAVE NUMBERS<br><br>";
		form.first_name.value = "";
		hasError = true;
	}
	rc = checkName(form.last_name.value);
	if ( rc != "OK" ) {
		form.ErrorMsg.value += "LAST NAME MUST NOT HAVE NUMBERS<br><br>"
		form.last_name.value = "";
		hasError = true;
	}
	if ( form.email.value != form.confirm_email.value ) {
		hasError = true;
		form.ErrorMsg.value += "EMAILS DO NOT MATCH<br><br>";
		form.email.value = "";
		form.confirm_email.value = "";
	}
	rc = checkEmail(form.email.value);	
	if ( rc != "OK" ) {
		form.ErrorMsg.value += rc;	
		hasError = true;
		form.email.value = "";
		form.confirm_email.value = "";
	}
	if ( form.password.value != form.confirm_password.value ) {
		hasError = true;
		form.ErrorMsg.value += "PASSOWRDS DO NOT MATCH<br><br>";
		form.password.value = "";
		form.confirm_password.value = "";
		hasError = true;
	}
	rc = checkPassword(form.password.value);	
	if ( rc != "OK" ) {
		form.ErrorMsg.value += rc;	
		hasError = true;
		form.password.value = "";
		form.confirm_password.value = "";
	}
	rc = checkAddress(form.address1.value);	
	if ( rc != "OK" ) {
		form.ErrorMsg.value += rc;	
		hasError = true;
		form.address1.value = "";
	}
	if ( form.address2.value != "" ) {
		rc = checkAddress(form.address2.value);	
		if ( rc != "OK" ) {
			form.ErrorMsg.value += rc;	
			hasError = true;
			form.address2.value = "Error";
		}
	}
	rc = checkName(form.city.value);	
	if ( rc != "OK" ) {
		form.ErrorMsg.value += rc;	
		hasError = true;
		form.city.value = "";
	}
	rc = checkName(form.state.value);	
	if ( rc != "OK" ) {
		form.ErrorMsg.value += rc;	
		hasError = true;
		form.state.value = "";
	}
	rc = checkZip(form.zip_code.value);	
	if ( rc != "OK" ) {
		form.ErrorMsg.value += rc;	
		hasError = true;
		form.zip_code.value = "";
	}
	rc = checkDialCode(form.dial_code1.value);	
	if ( rc != "OK" ) {
		form.ErrorMsg.value += rc;	
		hasError = true;
		form.dial_code1.value = "";
	}
	form.phone1.value = form.phone1.value.replace(/[\(\)\.\-\ ]/g, '');
	rc = checkPhone(form.phone1.value);	
	if ( rc != "OK" ) {
		form.ErrorMsg.value += rc;	
		hasError = true;
		form.phone1.value = "";
	}
}

