var bookNowForm = -1;
var curAnimation ;
var selectedItems = [];
var dOfficeIsDT = false;
var pOfficeIsDT = false;
var driverPreviusAge = 0;
var count = 0;
var quickPickOffice = "";


function pickRegion_onChange(){
   if(dijit.byId("selPickRegion").validate()){
        var regionid = dijit.byId("selPickRegion");
        var officeStore = new dojo.data.ItemFileReadStore({url: "/ajaxcalls/getchoffices?rid="+regionid});
        dijit.byId("selPickOffice").setDisabled(true);
        dijit.byId("selDropOffice").setDisabled(true);
        dijit.byId("selPickOffice").attr("displayedValue", "Loading...");
        dijit.byId("selDropOffice").attr("displayedValue", "Loading...");
        officeStore.fetch({
            onBegin: function(){
            },
            onComplete: function(items) {
                for(var i=0;i<items.length;i++){
                    selectedItems[i] = {'abrev':items[i].abbreviation,'location':items[i].location,'name':items[i].name};
                }                
                dijit.byId("selPickOffice").setDisabled(false);
                dijit.byId("selDropOffice").setDisabled(false);
                dijit.byId("selDropOffice").store = dijit.byId("selPickOffice").store = officeStore;
                if(quickPickOffice == ""){
                    var selectedItem = items[1].name;
                    dijit.byId("selPickOffice").attr("displayedValue", selectedItem.toString());
                }else{
                    dijit.byId("selPickOffice").attr("displayedValue", quickPickOffice);
                    quickPickOffice = ""
                }                
                if(dijit.byId("selPickRegion").value == "6717"){
                    dijit.byId("selPickOffice").attr("displayedValue","Orlando Intl Airport");
                }               
            }
        });
    }
}

function pickOffice_onChange(){        
    for(var i=0;i<selectedItems.length;i++){
        if(selectedItems[i]['abrev'] == dijit.byId("selPickOffice").value){
            //(selectedItems[i]['location'] == "dt") ? pOfficeIsDT = true : pOfficeIsDT = false;
           // alert(selectedItems[i]['name']);
            dijit.byId("selDropOffice").attr("displayedValue", selectedItems[i]['name'].toString());
        }
    }
}


function daysInMonth(month,year) {
    var dd = new Date(year, month, 0);
    return dd.getDate();
}
function checkPickupDateBeforeDropOff (inChangedField) { //check if the Pick Up Date is at least 24hrs before the drop off date
    dijit.byId('pickDate_months').displayMessage('');
    var one_min=1000*60; //*60 if you wan to check in round hours
    var newpickDateARR=dijit.byId('pickDate_months').value.split('/');
    var newpickDateObj=new Date(newpickDateARR[1],newpickDateARR[0]-1,dijit.byId('pickDate_days').value,dijit.byId('pickTime_hours').value,dijit.byId('pickTime_mins').value);

    var newdropDateARR=dijit.byId('dropDate_months').value.split('/');
    var newdropDateObj=new Date(newdropDateARR[1],newdropDateARR[0]-1,dijit.byId('dropDate_days').value);
    newdropDateObj.setHours(dijit.byId('dropTime_hours').value);
    newdropDateObj.setMinutes(dijit.byId('dropTime_mins').value);

    var monthsObj={'01':'Jan','02':'Feb','03':'Mar','04':'Apr','05':'May','06':'Jun','07':'Jul','08':'Aug','09':'Sep','10':'Oct','11':'Nov','12':'Dec'};
    if(Math.ceil((newdropDateObj.getTime()-newpickDateObj.getTime())/one_min) < 24*60) {
        var fnameARR=inChangedField.id.split('_');
        if (fnameARR[0]=='pickDate' || fnameARR[0]=='pickTime') { //move Drop date 24 hrs after PickDate
            newdropDateObj = newpickDateObj;
            newdropDateObj.setHours(newdropDateObj.getHours()+24);
            var themonth=newdropDateObj.getMonth()+1;
            var monthkey=themonth<10 ? '0'+themonth : themonth;
            dijit.byId('dropDate_months').attr('displayedValue',monthsObj[monthkey]+'/'+newdropDateObj.getFullYear());
            //alert(newdropDateObj.getDate());
            var day=newdropDateObj.getDate()<10 ? '0'+newdropDateObj.getDate().toString() : newdropDateObj.getDate().toString();
            dijit.byId('dropDate_days').attr('displayedValue',day);
            var hrs=newdropDateObj.getHours()<10 ? '0'+newdropDateObj.getHours().toString() : newdropDateObj.getHours().toString();
            dijit.byId('dropTime_hours').attr('displayedValue',hrs);
            var mins=newdropDateObj.getMinutes()<10 ? '0'+newdropDateObj.getMinutes().toString() : newdropDateObj.getMinutes().toString();
            dijit.byId('dropTime_mins').attr('displayedValue',mins);
        }
        else if (fnameARR[0]=='dropDate' || fnameARR[0]=='dropTime') { //restore it as it was and display the message
            var currentDateARR=dojo.byId(fnameARR[0]).value.split('/');
            var currentTimeARR=dojo.byId(fnameARR[0]).value.split(':');
            switch (fnameARR[1]) {
                case 'days':
                    inChangedField.attr('displayedValue',currentDateARR[0]);
                break;
                case 'months':
                    inChangedField.attr('displayedValue',monthsObj[currentDateARR[1]]+'/'+currentDateARR[2]);
                break;
                case 'hours':
                    inChangedField.attr('displayedValue',currentTimeARR[0]);
                break;
                case 'mins':
                    inChangedField.attr('displayedValue',currentTimeARR[1]);
                break;
            }
            dijit.byId('pickDate_months').displayMessage("Pick up date can not be after drop off date!");
        return false;
    }
    }
    return true;
}

function assignpickTime (inChangedField) {
    checkPickupDateBeforeDropOff(inChangedField);
    dojo.byId('pickTime').value=dojo.byId('pickTime_hours').value+':'+dijit.byId('pickTime_mins').value;
    //alert(dojo.byId('pickTime').value);
}

function assignpickDate (inChangedField) {
    checkPickupDateBeforeDropOff(inChangedField); //for Pickdate it always assigns the drop date 24hrs afterwards
    dojo.byId('pickDate').value=dojo.byId('pickDate_days').value+'/'+dijit.byId('pickDate_months').value;
    //alert(dojo.byId('pickDate').value);
}

function AgentPickUpMonth_onChange(inChangedField) {
    var ourdateARR=dijit.byId('pickDate_months').value.split('/');
    var ourmonth=ourdateARR[0],ouryear=ourdateARR[1];
    var daysinthemonth=daysInMonth(ourmonth,ouryear);
    var selected,items=[];
    var todaysObj=new Date();
    var daystartfrom=Number(todaysObj.getMonth()+1)==Number(ourmonth) ? todaysObj.getDate()+3 : 1;
    for (var i=daystartfrom;i<=daysinthemonth;i++) {
        i=i<10 ? '0'+i : i;
        items.push({'name':i,'abbreviation':i});
    }
    if (Number(todaysObj.getMonth()+1)==Number(ourmonth) && (todaysObj.getDate()+3)>dijit.byId('pickDate_days').value) {
        selected=todaysObj.getDate()+3;
    }
    else {
    if (Number(daysinthemonth)>=Number(dijit.byId('pickDate_days').value))
        selected=dijit.byId('pickDate_days').value;
    else
        selected=daysinthemonth;
    }
    //alert(selected+'||'+dijit.byId('pickDate_days').value+'||'+daysinthemonth);
    var pickDatedaysOfficeStore = new dojo.data.ItemFileReadStore({data:{identifier:'abbreviation',label:'name',items:items} });
    pickDatedaysOfficeStore.fetch({
      onBegin: function(){
      },
      onComplete: function(items) {
        dijit.byId('pickDate_days').store = pickDatedaysOfficeStore;
        dijit.byId('pickDate_days').attr('displayedValue',selected.toString());
      }
    });
    assignpickDate(inChangedField);
}

function assigndropTime (inChangedField) {
   if(!checkPickupDateBeforeDropOff(inChangedField))
        return;
    dojo.byId('dropTime').value=dojo.byId('dropTime_hours').value+':'+dijit.byId('dropTime_mins').value;
    //alert(dojo.byId('dropTime').value);
}

function assigndropDate (inChangedField) {
    if(!checkPickupDateBeforeDropOff(inChangedField))
        return;
    dojo.byId('dropDate').value=dojo.byId('dropDate_days').value+'/'+dijit.byId('dropDate_months').value;
    //alert(dojo.byId('dropDate').value);
}

function AgentDropoffMonth_onChange(inChangedField) {
    if(!checkPickupDateBeforeDropOff(inChangedField))
        return;
    var ourdateARR=dijit.byId('dropDate_months').value.split('/');
    var ourmonth=ourdateARR[0],ouryear=ourdateARR[1];
    var daysinthemonth=daysInMonth(ourmonth,ouryear);
    var selected,items=[];
    var todaysObj=new Date();
    var daystartfrom=Number(todaysObj.getMonth()+1)==Number(ourmonth) ? todaysObj.getDate()+4 : 1;
    for (var i=daystartfrom;i<=daysinthemonth;i++) {
        i=i<10 ? '0'+i : i;
        items.push({'name':i,'abbreviation':i});
    }
    if (Number(todaysObj.getMonth()+1)==Number(ourmonth) && (todaysObj.getDate()+4)>dijit.byId('dropDate_days').value) {
        selected=todaysObj.getDate()+4;
    }
    else {
    if (Number(daysinthemonth)>=Number(dijit.byId('dropDate_days').value))
        selected=dijit.byId('dropDate_days').value;
    else
        selected=daysinthemonth;
    }
    var dropDatedaysOfficeStore = new dojo.data.ItemFileReadStore({data:{identifier:'abbreviation',label:'name',items:items} });
    dropDatedaysOfficeStore.fetch({
      onBegin: function(){
      },
      onComplete: function(items) {
        dijit.byId('dropDate_days').store = dropDatedaysOfficeStore;
        dijit.byId('dropDate_days').attr('displayedValue',selected.toString());
      }
    });
    assigndropDate(inChangedField);
}

function dropOffice_onChange(){
//    for(var i=0;i<selectedItems.length;i++){
//        if(selectedItems[i]['abrev'] == dijit.byId("selDropOffice").value){
//            (selectedItems[i]['location'] == "dt") ? dOfficeIsDT = true : dOfficeIsDT = false;
//        }
//    }
}

function validDownTownTimes(){
    var pTime = new Date(dijit.byId("pickTime").value);
    var dTime = new Date(dijit.byId("dropTime").value);
    var returnValue = 4;
    
//    if((pOfficeIsDT==true) && (pTime.getHours() < 9 || pTime.getHours() > 17)){
//            returnValue = 1; //Downtown picko-up office will be closed
//    }else if((dOfficeIsDT==true) && (dTime.getHours() < 9 || dTime.getHours() > 17)){
//            returnValue = 2; //Downtown drop-off office will be closed
//    }else
    if(pTime.getHours() > dTime.getHours()){
        returnValue = 3;//Can not send form invalid times
    }
    return returnValue;
}

function btnCarHireSearch_onClick(){
//    var nodelist = dijit.byId("selPickRegion")._popupWidget.getItems();

    var pOfficeItem = dijit.byId("selPickOffice").value;
    var dOfficeItem = dijit.byId("selDropOffice").value;
    var citizenship = dijit.byId("selCitizenship").value;

    if(citizenship != "Select your citizenship"){
    if(dijit.byId("selPickOffice").value != ""){
	if(dijit.byId("selDropOffice").value != ""){
	    if(dijit.byId("driverAge").value != "0"){
                if(dijit.byId("dijit_gmc_id").value != "0"){
		if(pOfficeItem == "group1" || pOfficeItem == "group2"){
		    dijit.byId("selPickOffice").attr("displayedValue", "");
		}else if(dOfficeItem == "group1" || dOfficeItem == "group2"){
		    dijit.byId("selDropOffice").attr("displayedValue", "");
		}else{
		    dojo.byId("pickRegionName").value = dijit.byId("selPickRegion").getDisplayedValue();
		    dojo.byId("pickRegion").value = dijit.byId("selPickRegion");
		    dojo.byId("pickOfficeName").value = dijit.byId("selPickOffice").getDisplayedValue();
		    dojo.byId("pickOffice").value = dijit.byId("selPickOffice");
		    dojo.byId("dropOfficeName").value = dijit.byId("selDropOffice").getDisplayedValue();
		    dojo.byId("dropOffice").value = dijit.byId("selDropOffice");
		    dijit.byId("frmCarHireSearch").submit()
		    dijit.byId("messagebox").show();
		}
	    }else{
                    dijit.byId("dijit_gmc_id").displayMessage("Please select a currency");
                }
	    }else{
		dijit.byId("driverAge").displayMessage("Driver must be over 21 to book");
	    }
	}else{
	    dijit.byId("selDropOffice").displayMessage("Please select a pick-up office");
	}
    }else{
	dijit.byId("selPickOffice").displayMessage("Please select a drop-off office");
    }
    }else{
	dijit.byId("selCitizenship").displayMessage("Please select your citizenship");
}
}

function btnBookNow_onClick(i){
    if(dijit.byId("driverAge").validate()){
        dojo.byId("bookNowDriverAge"+i).value = dijit.byId("driverAge").value;
        dijit.byId("messagebox").show();
        dojo.byId("frmBookNow"+i).submit();
    }else{
        bookNowForm = i;
        window.scrollTo(0, 330);
        dijit.byId("driverAge").focus();
    }
}

function checkForBookNow(){
    if(bookNowForm > -1){
        btnBookNow_onClick(bookNowForm);
    }
}

function updatecarPrice(chkbox,price){
   var curvalue = parseFloat(dojo.byId("hirePrice").value);
   price = parseFloat(price);
   var newval = 0;

   if(chkbox.checked){
        newval = (curvalue + price).toFixed(2);
		chkbox.value = price;
   }else{
       newval = (curvalue - price).toFixed(2);
	   chkbox.value = 0;
   }
   dojo.byId("hirePrice").value = newval;
   dojo.byId("carpricetag").innerHTML = newval;
}

function setLoyaltyId(clp_id,clp_id_value,checked){
    if(checked){
	if(clp_id!=undefined && dojo.byId(clp_id)!=null && clp_id_value!=undefined)
           dojo.byId(clp_id).value=clp_id_value;
    }else{
	if(clp_id!=undefined && dojo.byId(clp_id)!=null)
          dojo.byId(clp_id).value=0;
    }
}

function btnConfirmBooking_onClick(){
    var cardInput = dijit.byId("cardNumber1");
    var cardnumber = cardInput.value;
    var endMonth = dijit.byId("endMonth").value;
    var endYear = dijit.byId("endYear").value;
    var startYear = dijit.byId("startYear").value;
    var startMonth = dijit.byId("startMonth").value;
    var today = new Date();

    var curDate = Date.UTC(today.getFullYear(), today.getMonth(), 1, 0, 0, 0, 0);
    var endDate = Date.UTC(Math.abs(endYear), Math.abs(endMonth)-1, 1, 0, 0, 0, 0);
    var startDate = Date.UTC(Math.abs(startYear), Math.abs(startMonth)-1, 1, 0, 0, 0, 0);

    if(dijit.byId("frmBookingStep3").validate()){ //CHECK TO SEE IF FORM FIELDS ARE VALID
        if((cardnumber.length < 16 || cardnumber.length > 20) && (cardInput.required)){
            //MAKE SURE USER HAS ENTERED A VALID CREDIT CARD NUMBER
            dojo.byId("cardNumber1").focus();
            dijit.byId("cardNumber1").displayMessage("The card number you entered does not seem to be valid!");
        }else if((startDate > curDate) && (cardInput.required)){
            dojo.byId("startYear").focus();
            dijit.byId("startYear").displayMessage("Invalid start date!");
        }else if((endDate < curDate) && (cardInput.required)){
            dojo.byId("endYear").focus();
            dijit.byId("endYear").displayMessage("Invalid end date!");
        }else if(!dojo.byId("cbTerms").checked){ //USER MUST CHECK THE TERMS & CONDITIONS
            dojo.byId("cbTerms").focus();
			alert('Please confirm you have read and agreed to the terms and conditions');
        }else{//ALL GOOD! SEND THE FORM
            dojo.byId("frmBookingStep3").submit();
        }
    }
}

function btnContact_onClick(){
    if(dijit.byId("frmContact").validate()){
        dojo.byId("frmContact").submit();
    }
}

function showTerms(){
    dijit.byId("dlgTerms").show();
}

function setDestination(office,officeid,country,countryid){
    quickPickOffice = office;
    var countryname = country.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
    if(countryid == dijit.byId("selPickRegion")){
        dijit.byId("selPickOffice").attr("displayedValue", office);
    }else{
        dijit.byId("selPickRegion").attr("displayedValue", countryname);    
    }    
}

function hideAll(){
    var i = 0;
    var answers = 2;//dojo.byId("answersList").childNodes.length;
    
    for(i=0;i<answers;i++){
        var nodeid = "a"+i;
        currAnimation = dojo.fadeOut({node: nodeid,duration: 1});
        currAnimation.play();	
	dojo.byId(nodeid).style.display = 'none';
    }
}

function fadeInAnswer(div){    
    currAnimation = dojo.fadeOut({node: currAnswer,duration: 1000});
    currAnimation.play();
    dojo.byId(currAnswer).style.display = 'none';
    currAnimation = dojo.fadeIn({node: div,duration: 1000});
    currAnimation.play();
    currAnswer = div;    
    dojo.byId(div).style.display = 'block';
}

function checkSatNav(sat,clp_id_value) {
	if(sat) {
		updatecarPrice(dojo.byId("selSATExtra"),selSATExtraPrice);
	setLoyaltyId('SAT_loyaltyid',clp_id_value);
	} else {
		updatecarPrice(dojo.byId("selYDPExtra"),selYDPExtraPrice);
	setLoyaltyId('YDP_loyaltyid',clp_id_value);
	}
	if ((dojo.byId("selYDPExtra").checked)&&(dojo.byId("selSATExtra").checked)) {
		if(sat) {
			if (dojo.byId("selYDPExtra").checked) {
				dojo.byId("selYDPExtra").checked = false;
				updatecarPrice(dojo.byId("selYDPExtra"),selYDPExtraPrice);
		setLoyaltyId('YDP_loyaltyid',clp_id_value);
			}
		} else {
			if (dojo.byId("selSATExtra").checked) {
				dojo.byId("selSATExtra").checked = false;
				updatecarPrice(dojo.byId("selSATExtra"),selSATExtraPrice);
		setLoyaltyId('SAT_loyaltyid',clp_id_value);
			}
		}
	}
}

function isGoldPackage(){
	if ((isUSA == "1")&&(dojo.byId("carCover").value != "Platinum")) {
		return true;
	} else {
		return false;
	}
}

function checkDriversAge(){
    if (count == 0)
		driverPreviusAge = dojo.byId("driverAge").value;
	if ((isGoldPackage())&&(dojo.byId("driverAge").value < 25)) {
		dojo.byId("btnContinue").disabled = true;
		dojo.byId("btnContinue").className = "btnContinueDisabled";
		dijit.byId("driverAge").displayMessage("The driver must be over 24 to book a Gold/Silver Package,please re-sumbit search.");

	} else {
		dojo.byId("btnContinue").disabled = false;
		dojo.byId("btnContinue").className = "btnContinue";
		dijit.byId("driverAge").displayMessage("");
	}
    if (dojo.byId("selYDPExtra")) {
		if (dojo.byId("YDP").style.display != "none") {
			if (dojo.byId("driverAge").value < 25) {
				if (!dojo.byId("selYDPExtra").checked) {
					dojo.byId("selYDPExtra").checked = true;
					updatecarPrice(dojo.byId("selYDPExtra"),selYDPExtraPrice);
				}
				// SAT NAV
				dojo.byId("selSATExtra").disabled = true;
				if(dojo.byId("selSATExtra").checked) {
					dojo.byId("selSATExtra").checked = false;
					updatecarPrice(dojo.byId("selSATExtra"),selSATExtraPrice);
				}
				dojo.byId("selYDPExtra").disabled = true;
				driverPreviusAge = dojo.byId("driverAge").value;
			} else if (count > 0) {
				if (!((driverPreviusAge >= 25)&&(dojo.byId("selYDPExtra").checked))) {
					dojo.byId("selYDPExtra").disabled = false;
					dojo.byId("selYDPExtra").checked = false;
					dojo.byId("selSATExtra").disabled = false;
					if (driverPreviusAge < 25) {
						updatecarPrice(dojo.byId("selYDPExtra"),selYDPExtraPrice);
					}
				}
				driverPreviusAge = dojo.byId("driverAge").value;
			}
		}
    }
	count++;
}

function btnContinue_onClick(url){
    dojo.byId("seatBab").value = dijit.byId("numBabSeat");
    dojo.byId("seatTod").value = dijit.byId("numTodSeat");
    dojo.byId("seatBst").value = dijit.byId("numBstSeat");
    dojo.byId("cpiExtra").value = dojo.byId("selCPIExtra").value;
    dojo.byId("derExtra").value = dojo.byId("selDERExtra").value;
    dojo.byId("satExtra").value = dojo.byId("selSATExtra").value;
    dojo.byId("ydpExtra").value = dojo.byId("selYDPExtra").value;
    dojo.byId("frmCarHireSearch").setAttribute("action", url+"/bookingstep3") ;
    dojo.byId("frmCarHireSearch").submit();
}

function btnCancelBooking_onClick(url){
    window.location = "http://www.affordablecarhire.com/"+url+"/home";
}

function clearText(elemid){
    dojo.byId(elemid).select();
}

function paymentOptions_onChange(){
    var req = "";    
    if(dijit.byId("paymentOption").value=="Credit Card"){
        dojo.byId("paymentDetails").style.display = "block";
        req = true;
    }else{
        dojo.byId("paymentDetails").style.display = "none";
        req = false;
    }
    dijit.byId("cardName").attr("required", req);
    dijit.byId("houseNumber").attr("required", req);
    dijit.byId("addressLine1").attr("required", req);
    dijit.byId("townCity").attr("required", req);
    dijit.byId("country").attr("required", req);
    dijit.byId("postCode").attr("required", req);
    dijit.byId("telNumber").attr("required", req);
    dijit.byId("emailAddress").attr("required", req);
    dijit.byId("cardNumber1").attr("required", req);
    dijit.byId("startMonth").attr("required", req);
    dijit.byId("startYear").attr("required", req);
    dijit.byId("endMonth").attr("required", req);
    dijit.byId("endYear").attr("required", req);
    dijit.byId("cardSecurity").attr("required", req);
}

function printInvoice(url){
    var wInvoice = window.showModalDialog(
                                            url,
                                            0,
                                            "dialogwidth: 1000; dialogheight: 800; resizable: yes"
                                         );    
}

function what_is_this(url,title,h){
    //alert(url+' || '+title+' || '+h);
    //return;
    Shadowbox.open({
            overlayColor: "#FFF",
            player:     "iframe",
	        content:    url,
            title:      title,
            height:     h,
            width:      550
    });
}

function get(obj) {
	return document.getElementById(obj);
}

