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.ceil((dDate.getTime()-aDate.getTime())/(one_day));

	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;
	}

	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;
	}

	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'
		);

	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'
		);

                var prov_codes =  new Array
		(
                        'nosel',
                        'ON',
                        'QC',
                        'NS',
                        'NB',
                        'MB',
                        'BC',
                        'PE',
                        'SK',
                        'AB',
                        'NL'
		);

function change_states(){
	var country = document.reservation.country[document.reservation.country.selectedIndex].value; 

	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{
		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]
       		}
	}

}
