// JavaScript Document

function check_chars() { 
	var str = window.document.contact_form.msg.value;
	
	if (str.length > 500) {
		window.document.contact_form.msg.value = str.substring(0,500);
	} else {		
		document.getElementById("count").innerHTML = 500 - window.document.contact_form.msg.value.length + " characters remaining.";
	}
}

	function trim(txt) {		
		tmp = (txt.replace(/^\W+/,'')).replace(/\W+$/,'');
		return tmp;
	}
	
	function doit() {
		var myform = window.document.reserve_form;
		var myname = myform.r_fullname.value;
		var myemail = myform.r_email.value;		
		
		myname  = trim(myname);
		myemail = trim(myemail);
				
//		if (!(isDate(myform.r_date1.value)) || !(isDate(myform.r_date2.value))) {
//			return false;
		var total = myform.r_total.value.toString();
		
		if (total.length <= 0) {
			alert ("Don't forget to click on the 'Total' button to estimate the cost.");
			return false;
		}

		if ((myname.length > 0) && (myemail.length > 0)) {
			//compute();
			return true;
		} else {
			alert("Please enter all details pertaining to your reservation.");
			return false;
		}
//		compute();
		return false;
	}
	
	function checkIt(evt) {
		evt = (evt) ? evt : window.event;
		var charCode = (evt.which) ? evt.which : evt.keyCode;
		if (charCode > 31 && (charCode < 48 || charCode > 57)) {
			status = "This field accepts numbers only.";
			return false;
		}
		status = "";
		return true;
	}
	
	function CurrencyFormatted(amount)
	{
		var i = parseFloat(amount);
		if(isNaN(i)) { i = 0.00; }
		var minus = '';
		if(i < 0) { minus = '-'; }
		i = Math.abs(i);
		i = parseInt((i + .005) * 100);
		i = i / 100;
		s = new String(i);
		if(s.indexOf('.') < 0) { s += '.00'; }
		if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
		s = minus + s;
		return s;
	}
	
	function compute_it()
	{
		var r_form = window.document.reserve_form;
		var d_rooms = 0;
		var d_occ = parseFloat(r_form.r_occ_d.value); // 1=single 2=twin
		var d_pax = 0;
		
		if (r_form.r_room_d.value.toString().length > 0) d_rooms = parseFloat(r_form.r_room_d.value);
		if (r_form.r_pax_d.value.toString().length > 0) d_pax = parseFloat(r_form.r_pax_d.value); 	
		r_form.r_room_d.value = d_rooms;
		r_form.r_pax_d.value = d_pax;
		
		d_pax = d_pax - (d_occ * d_rooms);		
		if (d_occ == 1) {
			d_occ = 3300;			
   		} else {
			d_occ = 4000;
		}
		if (d_pax > 0) 
			d_pax *= 1000
		else 
			d_pax = 0;

		//check dates		
		if ((r_form.r_date1.value.toString().length == 0) || (r_form.r_date2.value.toString().length == 0)) {
			return false;
		}
		var date_from = new Date(r_form.r_date1.value);
		var date_to = new Date(r_form.r_date2.value);
		var total_days = 0;
		
		if (date_from > date_to) {
			alert ("Departure date must occur before the departure date.");
			return false;
		}
		var one_day = 1000 * 60 * 60 * 24;
		//get the time difference of 2 dates. convert it to # days.
		total_days = (date_to.getTime() - date_from.getTime()) / one_day;
		r_form.r_daysd.value = total_days;
		r_form.r_dayss.value = total_days;
		
		var s_rooms = 0;
		var s_occ = parseFloat(r_form.r_occ_s.value); // 1=single 2=twin
		var s_pax = 0;

		if (r_form.r_room_s.value.toString().length > 0) s_rooms = parseFloat(r_form.r_room_s.value);
		if (r_form.r_pax_s.value.toString().length > 0) s_pax = parseFloat(r_form.r_pax_s.value); 
		r_form.r_room_s.value = s_rooms;
		r_form.r_pax_s.value = s_pax;
		
		s_pax = s_pax - (s_occ * s_rooms);
		if (s_occ == 1) {
			s_occ = 4800;
		} else {
			s_occ = 5500;
		}
		if (s_pax > 0) s_pax *= 1300;
		
		var total = 0;

		if ((d_rooms > 0) && (parseFloat(r_form.r_pax_d.value) > 0)) {
			r_form.r_total_d.value = (d_occ * d_rooms + d_pax) * total_days;
		} else {
			r_form.r_total_d.value = 0;
		}
		if ((s_rooms > 0) && (parseFloat(r_form.r_pax_s.value) > 0)) {
			r_form.r_total_s.value = (s_occ * s_rooms + s_pax) * total_days;
		} else {
			r_form.r_total_s.value = 0;
		}
		
		try {
		r_form.r_total.value = addCommas(+r_form.r_total_d.value + +r_form.r_total_s.value);		
		} catch (ex) {
			alert(ex.toString());
		}
		
	}
	
	function compute_pack()
	{
		var r_form = window.document.reserve_form;
		var arr_date = new Date(r_form.r_date1.value);
		var dep_date = new Date(r_form.r_date2.value);
		var one_day = 1000 * 60 * 60 * 24;
		var days = (dep_date.getTime() - arr_date.getTime())/one_day;
		var sharing = parseFloat(r_form.r_occ_d.value);
		var adult = 0;
		var children = 0;
		var package_charge = 0;
		var extra_charge = 0;
		var charge = 0;
		
		if (r_form.r_pax_d.value.toString().length > 0)	adult = parseFloat(r_form.r_pax_d.value);
		if (r_form.r_pax_c.value.toString().length > 0) children = parseFloat(r_form.r_pax_c.value);
		r_form.r_pax_d.value = adult;
		r_form.r_pax_c.value = children;
		
		days -= 2;
		if (days < 0) days = 0;
		r_form.r_daysd.value = days;
		
		if (sharing == 1) {
			package_charge = 8000;
			extra_charge = 1200;
		} else {
			package_charge = 7500;
			extra_charge = 950;
		}
			
		
		//package charge
		//children
		charge = children * 5550;
		//adults
		charge += adult * package_charge;
		
		//extra nights charges
		charge += (children + adult) * extra_charge * days;

		try {
			r_form.r_total.value = addCommas(charge);		
		} catch (ex) {
			alert(ex.toString());
		}
				
	}

	function addCommas(nStr)
	{
		nStr += '';
		x = nStr.split('.');
		x1 = x[0];
		x2 = x.length > 1 ? '.' + x[1] : '.00';
		var rgx = /(\d+)(\d{3})/;
		while (rgx.test(x1)) {
			x1 = x1.replace(rgx, '$1' + ',' + '$2');
		}
		return x1 + x2;
	}


//date validation
var dtCh= "/";
var minYear=1900;
var maxYear=4100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("Please indicate the arrival and departure date and time. Thank You.")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please enter a valid month for arrival/departure date.")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid day for arrival/departure date.")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date for arrival and departure.")
		return false
	}
return true
}

function ValidateForm(){
	var dt=document.frmSample.txtDate
	if (isDate(dt.value)==false){
		dt.focus()
		return false
	}
    return true
 }