function daysInMonth(iMonth, iYear)
{
	
	return 32 - new Date(iYear, iMonth, 32).getDate();
}

function fillDaysFor(sourceSel, destSel){
	var src = document.getElementById(sourceSel);
	var dst = document.getElementById(destSel);
	var selectValue = src.value;
	var days;
	if(selectValue.length==5)
		 days = daysInMonth(selectValue.substring(0,1)-1, selectValue.substring(1));
	else if(selectValue.length==6)
		 days = daysInMonth(selectValue.substring(0,2)-1, selectValue.substring(1));

	var i = 0;
	dst.options.length = 0;
	while (i < days) {
		dst.options[dst.options.length] = new Option(i+1);
		i++;
	}

}

function adjustDep(){
	var a = document.getElementById('arrival').value;
	// var aDay = document.getElementById('arrivalDay').value;

	var aDay =  document.getElementById('arrivalDay').selectedIndex + 1

	var aMonth = a.substring(0,a.length-4);
	var aYear;
	if(a.length==5)
		aYear = a.substring(1,5);
	else if(a.length==6)
		aYear = a.substring(2,6);

	var day = new Date(aYear,aMonth-1,aDay);
	var newDate = day.getDate()+1;
	day.setDate(newDate);
	document.getElementById('departure').value = (day.getMonth()+1) + '' + day.getFullYear();
// document.getElementById('departureDay').value = day.getDate();

	document.getElementById('departureDay').options[day.getDate()-1].selected = true;

}

function adjustDates(){
	var a = document.getElementById('arrival').value;
	var aDay = document.getElementById('arrivalDay').value;
	var aMonth = a.substring(0,a.length-4);
	var aYear;
	if(a.length==5)
		aYear = a.substring(1,5);
	else if(a.length==6)
		aYear = a.substring(2,6);

	var day = new Date(aYear,aMonth-1,aDay);
	var numNM =0;
	if(document.getElementById('nights')!=null)
		numNM = document.getElementById('nights').value - 0; // number of
																// nights
																// selected
	else if(document.getElementById('months')!=null)
		numNM = (document.getElementById('months').value - 0) * 30; // number of
																	// months
																	// selected
	var newDate = day.getDate()+numNM;
	day.setDate(newDate);
	document.getElementById('departure').value = (day.getMonth()+1) + '' + day.getFullYear();
	document.getElementById('departureDay').value = day.getDate();
}

function fillFormat(){
	if(document.getElementById('num_nights').innerHTML=='Number of Months'){
		var out = '<select id="months" name="months" onchange="adjustDates()" style="width: 40px;">';
		var i;
		for(i=1;i<13;i++)
			out += '<option>' + i + '</option>';
		out += '</select>';
		document.getElementById('formatspan').innerHTML = out;
	}
	else if(document.getElementById('num_nights').innerHTML=='Number of Nights'){
		var out = '<select id="nights" name="nights" onchange="adjustDates()" style="width: 40px;">';
		var i;
		for(i=1;i<31;i++)
			out += '<option>' + i + '</option>';
		out += '</select>';
		document.getElementById('formatspan').innerHTML = out;
	}
}

function adjustNM(){

	var a = document.getElementById('arrival').value;

	// var aDay = document.getElementById('arrivalDay').value;

	var aDay = document.getElementById('arrivalDay').selectedIndex + 1;

	var aMonth = a.substring(0,a.length-4);
	var aYear;
	if(a.length==5)
		aYear = a.substring(1,5);
	else if(a.length==6)
		aYear = a.substring(2,6);
	var aDate = new Date(aYear,aMonth-1,aDay);
	var d = document.getElementById('departure').value;

	// var dDay = document.getElementById('departureDay').value;

	var dDay = document.getElementById('departureDay').selectedIndex + 1;

	var dMonth = d.substring(0,d.length-4);
	var dYear;
	if(d.length==5)
		dYear = d.substring(1,5);
	else if(d.length==6)
		dYear = d.substring(2,6);
	var dDate = new Date(dYear,dMonth-1,dDay);

	// 1 day in milliseconds
	var one_day=1000*60*60*24
	// Calculate difference btw the two dates, and convert to days
	

	var numberOfNights = Math.abs((dDate.getTime()-aDate.getTime())/(one_day));

	numberOfNights = Math.floor(numberOfNights);	
	
	if(document.getElementById('nights')!=null)
		document.getElementById('nights').value = numberOfNights;
}

function validateDates(type){
	var a = document.getElementById('arrival').value;

	// var aDay = document.getElementById('arrivalDay').value;
	var aDay = document.getElementById('arrivalDay').selectedIndex + 1;

	var aMonth = a.substring(0,a.length-4);
	var aYear;
	if(a.length==5)
		aYear = a.substring(1,5);
	else if(a.length==6)
		aYear = a.substring(2,6);
	var aDate = new Date(aYear,aMonth-1,aDay);
	aDate.setHours(1);

	var d = document.getElementById('departure').value;

	var dDay = document.getElementById('departureDay').selectedIndex + 1;
	// var dDay = document.getElementById('departureDay').value;

	var dMonth = d.substring(0,d.length-4);
	var dYear;
	if(d.length==5)
		dYear = d.substring(1,5);
	else if(d.length==6)
		dYear = d.substring(2,6);
	var dDate = new Date(dYear,dMonth-1,dDay);
	dDate.setHours(1);
	var today = new Date();
	today.setHours(0);
	today.setMinutes(0);
	today.setSeconds(0);


	if(aDate<today || dDate<today){
		document.getElementById('arrival').value = (today.getMonth()+1) + '' + today.getFullYear();
// document.getElementById('arrivalDay').value = today.getDate();

		document.getElementById('arrivalDay').options[today.getDate()-1].selected = true;

		adjustDep();
		return;
	}

	if(aDate>=dDate){
		adjustDep();
	}

}

function initFormat(){
	if(document.getElementById('num_nights').innerHTML=='Number of Months'){
		document.getElementById('format').innerHTML='[Show Months]';
		document.getElementById('num_nights').innerHTML='Number of Nights';
	}
	else if(document.getElementById('num_nights').innerHTML=='Number of Nights'){
		document.getElementById('format').innerHTML='[Show Nights]';
		document.getElementById('num_nights').innerHTML='Number of Months';
	}
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

function echeck(str) {
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if (str.indexOf(at)==-1){
	   return false;
	}
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false;
	}
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false;
	}
	 if (str.indexOf(at,(lat+1))!=-1){
	    return false;
	 }
	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    return false;
	 }
	 if (str.indexOf(dot,(lat+2))==-1){
	    return false;
	 }
	 if (str.indexOf(" ")!=-1){
	    return false;
	 }
	 return true;
}

function numcheck(){
	var v1=arguments[0].pn.value;
	var v2=v1.replace(/[^0-9]/g,"");
	if(v1!=v2){
		arguments[0].pn.focus();
		return false;
	}
	return true;
}

function addchkform(){
	if (document.addusr.custnum.value.trim() == '') {
		alert('Customer Number cannot be null, please generate a new one');
		return false;
	}
	else if(!echeck(document.addusr.email.value.trim())){
		alert('You have entered a not valid email address');
		return false;
	}
	return true;
}

function edtchkform(){
	if(!echeck(document.edtusr.email.value.trim())){
		alert('You have entered a not valid email address');
		return false;
	}
	return true;
}

function chkform()
{
	$pattern = /^[0-9]+$/
	if (document.reservation.firstname.value.trim() == '') {
		alert('Please complete your First Name');
		return false;
	}
	else if (document.reservation.lastname.value.trim() == '') {
		alert('Please complete your Last Name');
		return false;
	}
	else if (document.reservation.address.value.trim() == '') {
		alert('Please complete your Adress information');
		return false;
	}
	else if (document.reservation.city.value.trim() == '') {
		alert('Please complete your City information');
		return false;
	}
	else if (document.reservation.postalcode.value.trim() == '') {
		alert('Please complete your Postal Code information');
		return false;
	}
	else if (document.reservation.state.value.trim() == 'nosel') {
		alert('Please complete your State information');
		return false;
	}
	else if (document.reservation.country.value.trim() == 'nosel') {
		alert('Please complete your Country information');
		return false;
	}
	else if (document.reservation.phone.value.trim() == '') {
		alert('Please complete your Phone');
		return false;
	}
	else if (document.reservation.email.value.trim() == '') {
		alert('Please complete your Email information');
		return false;
	}
	else if (document.reservation.emailretype.value.trim() == '') {
		alert('Please Retype Email');
		return false;
	}
	else if (document.reservation.cardnumber.value.trim() == '') {
		alert('Please complete your Card Number');
		return false;
	}
	else if(!echeck(document.reservation.email.value.trim())){
		alert('You have entered a not valid email address');
		return false;
	}
	else if(!echeck(document.reservation.emailretype.value.trim())){
		alert('You have not retyped a valid email address');
		return false;
	}
	else if(!document.reservation.cardnumber.value.trim().match($pattern)){
		alert('Your Card Number must consist only of numbers');
		return false;
	}
	else if(document.reservation.email.value.trim() != document.reservation.emailretype.value.trim()){
		alert('Emails does not match');
		return false;
	}
	
	var total = document.reservation.totalR.value.trim();
	
	var percentage = document.reservation.percentage.value.trim();
	
	if(percentage > 0){
		var resultant = (total * (100 - percentage)/100);
		resultant = Math.ceil(resultant);
		var reducedTotal = (total * percentage)/100;		reducedTotal = Math.ceil(reducedTotal);
		var display = "";
		display += "Congratulations! ";
		display += "\n";
		display += "As a loyal repeat customer you have earned " + reducedTotal + "USD off our already LOW online published rental rates.";
		display += "\n";
		display += "\n";
		display += "TOTAL: " + total;
		display += "\n";
		display += "LESS " + percentage + "% DISCOUNT";
		display += "\n";
		display += "TOTAL CHARGED: " + resultant;
		
		document.reservation.totalR.value = resultant;
		
		document.getElementById("totalR").value = resultant;
		
		alert(display);
	}
	
	document.getElementById('submit').disabled = true
		
	return true;
}

function chkformForgot()
{
	if (document.checkit.firstname.value.trim() == '') {
		alert('Please complete your First Name');
		return false;
	}
	else if (document.checkit.lastname.value.trim() == '') {
		alert('Please complete your Last Name');
		return false;
	}
	else if (document.checkit.address.value.trim() == '') {
		alert('Please complete your Adress information');
		return false;
	}
	else if (document.checkit.city.value.trim() == '') {
		alert('Please complete your City information');
		return false;
	}
	else if (document.checkit.postalcode.value.trim() == '') {
		alert('Please complete your Postal Code information');
		return false;
	}
	else if (document.checkit.state.value.trim() == 'nosel') {
		alert('Please complete your State information');
		return false;
	}
	else if (document.checkit.country.value.trim() == 'nosel') {
		alert('Please complete your Country information');
		return false;
	}
	else if (document.checkit.phone.value.trim() == '') {
		alert('Please complete your Phone');
		return false;
	}
	else if (document.checkit.email.value.trim() == '') {
		alert('Please complete your Email information');
		return false;
	}
	else if(!echeck(document.checkit.email.value.trim())){
		alert('You have entered a not valid email address');
		return false;
	}
	
	// at this point carry on with discount calculations...
	
	/*
	
	var total_payable = document.reservation.totalR.value.trim();
	
	var percentage = document.reservation.percentage.value.trim();
	
	if(percentage != 0){
		var payable_amount = (total_payable * (100 - percentage)) / 100;
		document.reservation.totalR.value = payable_amount;
		// update payable amount..
		alert('You are Entitled to a ' + percentage + ' % discount from our Loyalty Discount Program. THE PAYABLE AMOUNT IS ' + payable_amount);
	} */
	return true;
}

                var prov_names =  new Array
     		(
                        '[Please select your province]',
                        'Ontario',
                        'Quebec',
                        'Nova Scotia',
                        'New Brunswick',
                        'Manitoba',
                        'British Columbia',
                        'Prince Edward Island',
                        'Saskatchewan',
                        'Alberta',
                        'Newfoundland and Labrador'
                );
                
                        
		var state_names = new Array
		(
			'[Please select your state]',
			'Not Applicable',
			'Alabama',
			'Alaska',
			'Arizona',
			'Arkansas',
			'California',
			'Colorado',
			'Connecticut',
			'Delaware',
			'District of Columbia',
			'Florida',
			'Georgia',
			'Guam',
			'Hawaii',
			'Idaho',
			'Illinois',
			'Indiana',
			'Iowa',
			'Kansas',
			'Kentucky',
			'Louisiana',
			'Maine',
			'Maryland',
			'Massachusetts',
			'Michigan',
			'Minnesota',
			'Mississippi',
			'Missouri',
			'Montana',
			'Nebraska',
			'Nevada',
			'New Hampshire',
			'New Jersey',
			'New Mexico',
			'New York',
			'North Carolina',
			'North Dakota',
			'Ohio',
			'Oklahoma',
			'Oregon',
			'Pennsylvania',
			'Rhode Island',
		    'South Carolina',
	            'South Dakota',
	            'Tennessee',
	            'Texas',
	            'Utah',
	            'Vermont',
	            'Virgin Islands',
	            'Virginia',
	            'Washington',
	            'West Virginia',
	            'Wisconsin',
	            'Wyoming'
		);
		
	
	var state_codes = new Array
		(
			'nosel',
			'notapp',
			'AL',
			'AK',
			'AZ',
			'AR',
			'CA',
			'CO',
			'CT',
			'DE',
			'DC',
			'FL',
			'GA',
			'GU',
			'HI',
			'ID',
			'IL',
			'IN',
			'IA',
			'KS',
			'KY',
			'LA',
			'ME',
			'MD',
			'MA',
			'MI',
			'MN',
			'MS',
			'MO',
			'MT',
			'NE',
			'NV',
			'NH',
			'NJ',
			'NM',
			'NY',
			'NC',
			'ND',
			'OH',
			'OK',
			'OR',
			'PA',
			'RI',
		    'SC',
	            'SD',
	            'TN',
	            'TX',
	            'UT',
	            'VT',
	            // 'VI' => 'Virgin Islands',
	            'VA',
	            'WA',
	            'WV',
	            'WI',
	            'WY'
		);

                var prov_codes =  new Array
		(
                        'nosel',
                        'ON',
                        'QC',
                        'NS',
                        'NB',
                        'MB',
                        'BC',
                        'PE',
                        'SK',
                        'AB',
                        'NL'
		);

		var default_names = new Array
		(
			'Not Applicable'
		);  

		var default_codes = new Array
		(
			'notapp'
		);		


		var kenya_names = new Array
		(
			'Nairobi'
		);  

		var kenya_codes = new Array
		(
			'NBO'
		);		

	
function change_states(){
	var country = document.reservation.country[document.reservation.country.selectedIndex].value;

	//alert(country);

	if(country=='CA'){
       		document.reservation.state.length = prov_codes.length;
	        for(i=0;i<prov_codes.length;i++){
          		document.reservation.state.options[i].value=prov_codes[i]
          		document.reservation.state.options[i].text=prov_names[i]
       		}
	}
	else if(country=='US'){
		document.reservation.state.length = state_codes.length;
	        for(i=0;i<state_codes.length;i++){
          		document.reservation.state.options[i].value=state_codes[i]
          		document.reservation.state.options[i].text=state_names[i]
       		}
	}
	else if(country=='KE'){
		document.reservation.state.length = kenya_codes.length;
	        for(i=0;i<state_codes.length;i++){
          		document.reservation.state.options[i].value=kenya_codes[i]
          		document.reservation.state.options[i].text=kenya_names[i]
       		}
	}

	else{
		document.reservation.state.length = default_codes.length;
                //alert(default_codes.length);
        	for(i=0;i<default_codes.length;i++){
      			document.reservation.state.options[i].value=default_codes[i]
      			document.reservation.state.options[i].text=default_names[i]
   		}

	}

}
