﻿//Booking Lib 0.8


function beforeShowDayFunc(date) {//jCal
    var selected = ($("#ctrlSearchBox_calPickUp_DateText").datepicker('getDate') < date);
    return [ selected, ''];
}


function initControl(params) {

    //****************************
    //***Datepicker **
    //****************************
    //$('.SearchBox_CalTextBox').datepicker({dateFormat:'dd-M-yy',numberOfMonths:2});
   	//---  	
  	$("#ctrlSearchBox_calDropOff_DateText").datepicker({
        dateFormat: 'dd/mm/yy',
		changeMonth: true,
		changeYear: true,           
        beforeShowDay: beforeShowDayFunc,
        //cause problem in firefox 4 and safari on mac
        numberOfMonths: 1,        
        yearRange:'0:+2',  
        minDate: new Date(),
        onClose: function(dateText, inst) {
            $("div.requiredMsg").remove();
        	$(this).removeClass('required');
			$(this).css('color','#000');           	
        }
    });

    $("#ctrlSearchBox_calPickUp_DateText").datepicker({
        dateFormat: 'dd/mm/yy',
		changeMonth: true,
		changeYear: true,           
        minDate: new Date(),
        yearRange:'0:+2',  
        numberOfMonths: 1,
        onClose: function(dateText, inst) {
            if (Date.parseExact($("#ctrlSearchBox_calDropOff_DateText").val(),'dd/MM/yyyy') < Date.parseExact($("#ctrlSearchBox_calPickUp_DateText").val(),'dd/MM/yyyy')) {
                //alert($j("#ctrlSearchBox_calDropOff_DateText").val() < $j("#ctrlSearchBox_calPickUp_DateText").val());
                $("#ctrlSearchBox_calDropOff_DateText").val($("#ctrlSearchBox_calPickUp_DateText").val());
            	$("div.requiredMsg").remove();
        		$(this).removeClass('required');
     			$(this).css('color','#000');           	       		
            }          
        }
        
    });          
  	//---
  
  
    //bind validator
    if (cr != null && cr != '') {//set cor
        var corOption = $("#ctrlSearchBox_dropCountryOfResidence").val(cr);
    }

    //set dates
    document.getElementById('ctrlSearchBox_calPickUp_DateText').value = pudate;
    document.getElementById('ctrlSearchBox_calDropOff_DateText').value = dod;
    if (noa != 0 && $('#ctrlSearchBox_dropAdults option:last').val() >= noa) {
        $('#ctrlSearchBox_dropAdults').val(noa);
    }
    if (noc != 0 && $('#ctrlSearchBox_dropChildren option:last').val() >= noc) {
        $('#ctrlSearchBox_dropChildren').val(noc);
    }
    $("select").change(function() {
        $("div.requiredMsg").remove();
        $(this).removeClass('required');
    });

    cot = $("#countryOfTravel").val();
    if (cot != null && cot != '') {//set cor
        $("#ddCountryOfTravel").val(cot);
    }
	$("#ctrlSearchBox_dropVehicleType option").each(function(){
		if(typeof vehicleInfo != 'undefined' && $(this).val().toLowerCase() == vehicleInfo.code.toLowerCase()){
			$(this).attr('selected','selected');
		}
	});
	$("#ctrlSearchBox_dropPickUpTime").attr('value', '10:00');
    $("#ctrlSearchBox_dropDropOffTime").attr('value', '15:00');

	// added samed as pickup to the dropdownlist
    $('#ctrlSearchBox_dropDropOffLocation').prepend('<option value="0">--Same as pick up--</option>');    
    if(typeof dol == 'undefined' || typeof $("#ctrlSearchBox_dropDropOffLocation option[value='"+dol+"']").val() =='undefined')
    	$("#ctrlSearchBox_dropDropOffLocation option[value=0]").attr('selected','selected');
    else{
	    $("#ctrlSearchBox_dropDropOffLocation option[value="+dol+"]").attr('selected','selected');
	}
	if($("#ctrlSearchBox_calPickUp_DateText").val()!= 'dd/mm/yyyy')
		$("#ctrlSearchBox_calPickUp_DateText").css('color','#000');
	if($("#ctrlSearchBox_calDropOff_DateText").val()!= 'dd/mm/yyyy')
		$("#ctrlSearchBox_calDropOff_DateText").css('color','#000');

}

var startDate;
var endDate;
var ONEDAY = 3600 * 24 * 1000;

function filterDates1(cal) {
    var date = cal.date;
    startDate = date.getTime();
    document.getElementById('ctrlSearchBox_dropPickUpTime').focus();
    document.getElementById('ctrlSearchBox_calDropOff_DateText').value = document.getElementById('ctrlSearchBox_calPickUp_DateText').value;
    $('#ctrlSearchBox_calPickUp_DateText').removeClass('required');
    $("div.requiredMsg").remove();
}
function filterDates2(cal) {
    var date = cal.date;
    endDate = date.getTime();
    document.getElementById('ctrlSearchBox_dropDropOffTime').focus();
    if (document.getElementById('ctrlSearchBox_calDropOff_DateText').value == 'dd/mm/yyyy')
        document.getElementById('ctrlSearchBox_calDropOff_DateText').value = document.getElementById('ctrlSearchBox_calPickUp_DateText').value;
    $('#ctrlSearchBox_calDropOff_DateText').removeClass('required');
    $("div.requiredMsg").remove();
}

function disallowDateBefore(date) {
    date = date.getTime();
    var MINHIRE;
    MINHIRE = ONEDAY * -1;
    if ((startDate != null) && (date <= (startDate + MINHIRE))) {
        return true;
    }
    var now = new Date().getTime() + ONEDAY;
    if (date <= (now + MINHIRE)) {
        return true;
    }
    return false;
}
function disallowDateAfter(date) {
    date = date.getTime();
    var now = new Date().getTime();
    if (date < (now)) {
        return true;
    }
    return false;
}

function swapTabs(selected) {
   	if(cot != "NZ" && cot != "AU") return;
    pudate = document.getElementById('ctrlSearchBox_calPickUp_DateText').value;
    dod = document.getElementById('ctrlSearchBox_calDropOff_DateText').value;
    noa = document.getElementById('ctrlSearchBox_dropAdults').value;
    noc = document.getElementById('ctrlSearchBox_dropChildren').value; 
    pul = $('#ctrlSearchBox_dropPickUpLocation').val();
    dol = $('#ctrlSearchBox_dropDropOffLocation').val();
    cr = $('#ctrlSearchBox_dropCountryOfResidence').val();
    vh = $('#vehicleCode').val();
    var url = CallBackURL + "/bookingcontrolpanel.aspx?vt=" + selected + "&cc=" + cot + "&vh=" + vh + "&pul=" + pul + "&dol=" + dol + "&brand=" + brandStr;
    $('#ctrlSearchBox_up1').load(url, initControl);
}

function enablePanel(selectElm) {
    var cc = $(selectElm).val();
    if (cc == '-1') cc = '';
    var vt = $('#vehicleType').val();
    var url = CallBackURL + "/bookingcontrolpanel.aspx?vt=" + vt + "&cc=" + cc + "&brand=" + brandStr;
    $('#ctrlSearchBox_up1').load(url, initControl);
}

function getParams() {
    var responseText = '';
    var pickupdateStr = $('#ctrlSearchBox_calPickUp_DateText').val();
    var dropoffDateStr = $('#ctrlSearchBox_calDropOff_DateText').val();

    if ($('#ddCountryOfTravel').val() == '-1') {
        responseText = 'country of travel';
        promptField($('#ddCountryOfTravel'), "Required");
        return '';
    }
    if (!validatePeriod(pickupdateStr, dropoffDateStr)) {//failed onblur Date Range validation
        responseText = 'valid period';
        promptField($('#ctrlSearchBox_calPickUp_DateText'), "Required");
    }
    var pickupdate = Date.parseExact(pickupdateStr, "dd/MM/yyyy");
    var dropoffDate = Date.parseExact(dropoffDateStr, "dd/MM/yyyy");
	
	if(pickupdate==null)
		 promptField($('#ctrlSearchBox_calPickUp_DateText'), "Invalid Date");
	if(dropoffDate==null)
		 promptField($('#ctrlSearchBox_calDropOff_DateText'), "Invalid Date");
		 
    var nc = $("#ctrlSearchBox_dropChildren option:selected").val();
    var na = $("#ctrlSearchBox_dropAdults option:selected").val();
    if (parseInt(na) == 0) {
    	$("#ctrlSearchBox_dropAdults").val(1);
    	na=1;
        /*responseText += " number of travellers,";
        promptField($('#ctrlSearchBox_dropAdults'), "Required");*/
    }

    MAX_PASSENGERS = parseInt($('#maxTravellers').val(), 10);
    if ((parseInt(na) + parseInt(nc)) > MAX_PASSENGERS) {
        promptField($('#ctrlSearchBox_dropAdults'), "Total travellers cannot exceed " + MAX_PASSENGERS);
        $('#ctrlSearchBox_dropChildren').addClass("required");
        responseText += " Total travellers cannot exceed " + MAX_PASSENGERS + ",";
    }
	cr = $("#ctrlSearchBox_dropCountryOfResidence option:selected").val();
	if($('#ctrlSearchBox_dropCountryOfResidence').is(':visible')){
	    if (parseInt(cr) == 0) {
	        responseText += " country of residence,";
	        promptField($('#ctrlSearchBox_dropCountryOfResidence'), "Required");
	    }
    }
    if (responseText != '') return '';
    cc = cot; 
    vc = 'ma';
    ac = "";
    
    var vtype = (($('#vehicleType').val() == 'av' || $('#vehicleType').val() == 'rv') ? 'rv' : 'car');
	sc = vtype; 
    
    pc = "";
    ch = "";
    rf = "";
    nc = $("#ctrlSearchBox_dropChildren option:selected").val();
    pb = $("#ctrlSearchBox_dropPickUpLocation option:selected").val();
    pd = pickupdate.getDate();
    pm = pickupdate.getMonth() + 1;
    py = pickupdate.getFullYear();
    pt = $("#ctrlSearchBox_dropPickUpTime option:selected").val();
    db = $("#ctrlSearchBox_dropDropOffLocation option:selected").val();
    //handling of dropoff location when "same as pickup" is selected
    db = db==0?pb:db;    
    dd = dropoffDate.getDate();
    dm = dropoffDate.getMonth() + 1;
    dy = dropoffDate.getFullYear();
    dt = $("#ctrlSearchBox_dropDropOffTime option:selected").val();
    vt = vtype;
    vh = $("#ctrlSearchBox_dropVehicleType option:selected").val();
    var getvalues = '';
    if (responseText == '') {
        getvalues = "cc=" + cc + "&vc=" + vc + "&ac=" + ac + "&sc=" + sc + "&pc=" + pc + "&ch=" + ch + "&rf=" + rf + "&na=" + na + "&nc=" + nc + "&cr=" + cr + "&pb=" + pb + "&pd=" + pd + "&pm=" + pm + "&py=" + py + "&pt=" + pt + "&db=" + db + "&dd=" + dd + "&dm=" + dm + "&dy=" + dy + "&dt=" + dt + "&vt=" + vt + "&vh=" + vh;
        return getvalues;
    } else {
        var trimmed = responseText.replace(/,+$/, "");
        return '';
    }
}

function validatePeriod(pickupdateStr, dropoffDateStr) {
    var pickUpDate = Date.parseExact(pickupdateStr, "dd/MM/yyyy");
    var dropOffDate = Date.parseExact(dropoffDateStr, "dd/MM/yyyy");
    if (pickupdateStr == null || dropoffDateStr == null || pickupdateStr == '' || dropoffDateStr == '' || pickupdateStr == 'dd/mm/yyyy' || dropoffDateStr == 'dd/mm/yyyy' || Date.parseExact(pickupdateStr, "dd/MM/yyyy") == null || Date.parseExact(dropoffDateStr, "dd/MM/yyyy") == null)
        return false;
    else {//range validation
        if (dropOffDate.compareTo(pickUpDate) >= 0)
            return true
        else
            return false;
    }
}

function submitForm() {
    var baseUrl = TargetUrl;
    var params = getParams();
    if (params == '')
        return;
    else
        window.location = baseUrl + "?" + params;
}

//validation
function promptField(fieldElm, msg) {
    var offsetx = 8;
    var offsety = (jQuery.browser.msie ? 0 : 0);
    var top = fieldElm.position().top;
    var left = fieldElm.position().left;

    var width = fieldElm.width();
    var height = fieldElm.height();
    fieldElm.addClass("required");

    var ctrlWidthCss = $('.booking-form ul').css('width');
    var ctrlWidth = parseInt(ctrlWidthCss.substr(0, ctrlWidthCss.indexOf('px')), 10) - 100;    
    var styleStr = "top:" + (top + offsety) + "px; left:" + (dxr + ctrlWidth) + "px;height:" + (height + 6) + "px;";
    $("<div class='requiredMsg' style='" + styleStr + "'><span class='arrow' style='width:10px;height:" + 20 + "px;'></span><span class='text' style='height:" + 18 + "px;'>" + msg + "&nbsp;</span></div>").appendTo('.booking-form');
}

function bindResize() {
    $(window).bind('resize', function() {
        var newDxr = $('#booking-container').position().left;
        var delta = (parseInt(dxr, 10) - parseInt(newDxr, 10));
        dxr = newDxr;
        jQuery.each($('div.requiredMsg'), function(i, val) {
            $(this).css("left", (parseInt($(this).css("left")) - delta));
        });
    });
}
