﻿function beforeShowDayFunc(date) {//jCal
    var selected = ($j("#ctrlSearchBox_calPickUp_DateText").datepicker('getDate') < date);
    return [ selected, ''];
}


function initControl() {
    $j("#bookingControl .TimeSpan input").focus(function() {
        $j(this).select();
    });

    $j("#ctrlSearchBox_calDropOff_DateText").datepicker({
        dateFormat: 'dd-M-yy',
        beforeShowDay: beforeShowDayFunc,
        numberOfMonths: 2,
        minDate: new Date(),
        onClose: function(dateText, inst) {
            
        }

    });

    $j("#ctrlSearchBox_calPickUp_DateText").datepicker({
        dateFormat: 'dd-M-yy',
        minDate: new Date(),
        numberOfMonths: 2,
        onClose: function(dateText, inst) {
            if (Date.parse($j("#ctrlSearchBox_calDropOff_DateText").val()) < Date.parse($j("#ctrlSearchBox_calPickUp_DateText").val())) {
                //alert($j("#ctrlSearchBox_calDropOff_DateText").val() < $j("#ctrlSearchBox_calPickUp_DateText").val());
                $j("#ctrlSearchBox_calDropOff_DateText").val($j("#ctrlSearchBox_calPickUp_DateText").val());
            }           
            
        }
    });
        
     
    /* J Cal End */ 
    /*
    Zapatec.Calendar.setup({
        inputField: "ctrlSearchBox_calDropOff_DateText",
        button: "ctrlSearchBox_calDropOff_DateText",
        weekNumbers: false,
        showOthers: false,
        electric: false,
        disableFunc: disallowDateBefore,
        onUpdate: filterDates2,
        singleClick: true,
        //ifFormat: "%d/%m/%Y",
        ifFormat: "%d-%b-%Y",
        align: "BC",
        numberMonths: 2,
        timeInterval: 5,
        canType: true,
        showsTime: false
    });
    Zapatec.Calendar.setup({
        inputField: "ctrlSearchBox_calPickUp_DateText",
        button: "ctrlSearchBox_calPickUp_DateText",
        weekNumbers: false,
        showOthers: false,
        electric: false,
        disableFunc: disallowDateAfter,
        onUpdate: filterDates1,
        singleClick: true,
        //ifFormat: "%d/%m/%Y",
        ifFormat: "%d-%b-%Y",
        align: "BC",
        numberMonths: 2,
        timeInterval: 5,
        canType: true,
        showsTime: false
    });
	*/
	


    if ($j('#countryOfResidence').val() != null && $j('#countryOfResidence').val() != '')//set cor
        $j("#ctrlSearchBox_dropCountryOfResidence").val($j('#countryOfResidence').val());
    //if (bookingControlParams.pd != null && bookingControlParams.pd != '')//set pd
    //    $j("#ctrlSearchBox_calPickUp_DateText").val(bookingControlParams.pd);
    //if (bookingControlParams.dd != null && bookingControlParams.dd != '')//set dd
    //    $j("#ctrlSearchBox_calDropOff_DateText").val(bookingControlParams.dd);
    //if (bookingControlParams.dd != null && bookingControlParams.dd != '')//set dd
    //    $j("#ctrlSearchBox_calDropOff_DateText").val(bookingControlParams.dd);
    //if (bookingControlParams.pt != null && bookingControlParams.pt != '')//set pt get time from 
    //    $j("#ctrlSearchBox_dropPickUpTime").val(bookingControlParams.pt);
    //if (bookingControlParams.dt != null && bookingControlParams.dt != '')//set dt
    //    $j("#ctrlSearchBox_dropDropOffTime").val(bookingControlParams.dt);
    if (bookingControlParams.pb != null && bookingControlParams.pb != '')//set pb
        $j("#ctrlSearchBox_dropPickUpLocation").val(bookingControlParams.pb);
    if (bookingControlParams.db != null && bookingControlParams.db != '')//set db
        $j("#ctrlSearchBox_dropDropOffLocation").val(bookingControlParams.db);
    if (bookingControlParams.na != null && bookingControlParams.na != '')//set na
        $j("#ctrlSearchBox_dropAdults").val(bookingControlParams.na);
    if (bookingControlParams.nc != null && bookingControlParams.nc != '')//set nc
        $j("#ctrlSearchBox_dropChildren").val(bookingControlParams.nc);
    if (bookingControlParams.vc != null && bookingControlParams.vc != '')//set vcode
        $j("#ctrlSearchBox_dropVehicleType").val(bookingControlParams.vc);
    if ($j('#vehicleType').val() == 'ac' || $j('#vehicleType').val() == 'av')//set vcode
        $j("#" + $j('#vehicleType').val() + "Radio").attr('checked', 'checked');
    
    //bind events
    $j("#bookingControl input[name='vt']").click(function() {//bind expand
        $j('#vehicleType').val($j(this).val());
        submitControl("_self", "post");
    });

    $j("#countryCode").change(function() {//bind expand
        submitControl("_self", "post");        
    });    
    
    $j("#bookingControl input, #bookingControl select").click(function() {//bind expand
        $j("#bookingControl input, #bookingControl select").removeClass("required");
        $j("#ctrlValidationMsg").removeClass("required");
    });

    if ($j("#bookingControl").hasClass('SplashMode') && ($j('#countryCode').val() == '' )) {//init splash mode
        $j('#bookingControl input, #bookingControl select').attr('disabled', 'disabled');
        $j('#countryCode').attr('disabled', '');
    } 
    
	$j("#ctrlSearchBox_dropPickUpTime").attr('value', '10:00');
    $j("#ctrlSearchBox_dropDropOffTime").attr('value', '15:00');
	   
}

function submitControl(targetUrl, method) {
    var cTarget = '';//(targetUrl == "_self" ? "" : $j("#bookingControl #controlTarget").val());
    var brandChar = $j("#bookingControl #controlBrand").val();
    if (method == "post") {        
        //$j("#__VIEWSTATE").val("");
        document.forms[0].action = cTarget;
        document.forms[0].submit();
    } else if (method == "get") {
        var urlParams = getParams();
        if (urlParams == null || urlParams == '') return;
        
        cTarget = ($j('#countryCode').val() == 'AU' ? "https://secure.britz.com.au" : "https://secure.britz.co.nz" ); 
        
        var url = cTarget + "?" + urlParams;
        //analytics here
        window.location = url;        
    }
}

function getParams() {
    var responseText = '';
    var pickupdateStr = $j('#ctrlSearchBox_calPickUp_DateText').val();
    var dropoffDateStr = $j('#ctrlSearchBox_calDropOff_DateText').val();
    if (!validatePeriod(pickupdateStr, dropoffDateStr)) {//failed onblur Date Range validation
        responseText = 'valid period';
        $j('#ctrlSearchBox_calPickUp_DateText').addClass("required");
        $j('#ctrlSearchBox_calDropOff_DateText').addClass("required");
    }
    var pickupdate = Date.parseExact(pickupdateStr, "dd-MMM-yyyy");
    var dropoffDate = Date.parseExact(dropoffDateStr, "dd-MMM-yyyy");
    var nc = $j("#ctrlSearchBox_dropChildren option:selected").val();
    var na = $j("#ctrlSearchBox_dropAdults option:selected").val();
    if (parseInt(na) < 1) {
        //responseText += " number of travellers,";
        //$j("#ctrlSearchBox_dropAdults").addClass("required");
        na = 1;
    }
    if ((parseInt(na) + parseInt(nc)) > 6) {
        $j('#ctrlSearchBox_dropChildren').addClass("required");
        promptField($j('#ctrlSearchBox_dropAdults'), "Total travellers cannot exceed 6");
        responseText += " Total travellers cannot exceed 6,";        
    }
    cr = $j("#ctrlSearchBox_dropCountryOfResidence option:selected").val();
    //if (parseInt(cr) == 0) {
    //    responseText += " country of residence,";
    //    $j('#ctrlSearchBox_dropCountryOfResidence').addClass("required");
    //}
    
    cc = $j("#countryCode option:selected").val();
    if (cc == '-1' || cc == '') {
        cc = "";
        $j("#countryCode").addClass("required");
    }
    if (responseText != '') {
        $j("#ctrlValidationMsg").addClass("required");
        //alert(responseText);
        return '';
    }
    vh = $j('#ctrlSearchBox_dropVehicleType').val();    
    
    vc = "bz"; //TODO:get brand $j("#ctrlSearchBox_dropVehicleType").val();
    ac = "";
    sc = ($j("#vehicleType").val() == 'ac' ? 'car' : 'rv' );
    pc = "";
    ch = "";
    rf = ""; //$j('#agentCodeField').val();
    if (rf.length > 9) rf = "";
    pb = $j("#ctrlSearchBox_dropPickUpLocation option:selected").val();
    pd = pickupdate.getDate();
    pm = pickupdate.getMonth() + 1;
    py = pickupdate.getFullYear();
    pt = $j("#ctrlSearchBox_dropPickUpTime option:selected").val();
    db = $j("#ctrlSearchBox_dropDropOffLocation option:selected").val();
    dd = dropoffDate.getDate();
    dm = dropoffDate.getMonth() + 1;
    dy = dropoffDate.getFullYear();
    dt = $j("#ctrlSearchBox_dropDropOffTime option:selected").val(); ;
    vt = 1;//legacy param
    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-MMM-yyyy");
    var dropOffDate = Date.parseExact(dropoffDateStr, "dd-MMM-yyyy");   
    if (pickupdateStr == null || dropoffDateStr == null || pickupdateStr == '' || dropoffDateStr == '' || pickupdateStr == 'dd-mmm-yyyy' || dropoffDateStr == 'dd-mmm-yyyy' || Date.parseExact(pickupdateStr, "dd-MMM-yyyy") == null || Date.parseExact(dropoffDateStr, "dd-MMM-yyyy") == null)
        return false;
    else {//range validation
        if (dropOffDate.compareTo(pickUpDate) >= 0)
            return true
        else 
            return false;
    }
}