	var helper = {};
                 helper = {
                    ripName: function(thisName){
                                           
                        var strVars = location.search
                        
                        strVars = unescape(strVars);
                        strVars = strVars + "&";
                        
                        regE = new RegExp(thisName + "=(\\w+)\&");
                        strVars = regE.exec(strVars);
                        
                        return unescape(strVars[1]);
                    },
                    asyncRequest: function(){
                        function handleReadyState(http, callback, callbackObj){	
					var poll = window.setInterval(function() {
						if (http.readyState == 4) {
							window.clearInterval(poll);
							if (http.status == 200 || http.status == 304) {
								if (callback) {
								
									callback.success(http, callbackObj || null);
								}
								else {
								
									callback.failure(http, callbackObj || null);
								}
							}
						}
    	    		}, 50);
                        }
                        
                        var getXHR = function(){
							
                            var http;
                        
							try {
							
                                http = new XMLHttpRequest();
                                //getXHR is redeclared which prevents cross browser detection code from being run again
                                getXHR = function(){
                                    return new XMLHttpRequest();
                                };
                            } 
                            catch (e) {
								
                                var msxml = ['MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
                                for (var i = 0, len = msxml.length; i < len; ++i) {
                                    try {
										
                                        http = new ActiveXObject(msxml[i]);
                                        getXHR = function(){
                                            return new ActiveXObject(msxml[i]);
                                        };
                                        break;
                                    } 
                                    catch (e) {
										alert(e);
                                    }
                                }

                            }
                            return http;
							
                        };
                        return function(method, uri, callback, getVars, postData, callbackObj){
							
                            var http = getXHR();
							
							var getVarsArray = [];
							for(varName in getVars){
								getVarsArray.push(varName + '=' + getVars[varName]);
							}
							if(getVarsArray.length > 0){
								uri = uri + '?' + getVarsArray.join('&');	
							}
							
							
                            http.open(method, uri, true);
                            http.send(postData || null);
									
                            handleReadyState(http, callback, callbackObj || null);
							
                        };
                    }()
                };//lookahead code
		

//calender code
	 YAHOO.namespace("example.calendar");
		//var passCal = {};
setupCalendar = {
	addDays: 3,
	MaxSearch: 1,
	search1: function(){
		var arFromFlds = ["fldPickupMonth","fldPickupDay","fldPickupYear"]
		var arToFlds = ["fldDropoffMonth","fldDropoffDay","fldDropoffYear"]
			setupCalendar.search1 = {fromCalendar: null,
					toCalendar: null,
					updateFrom: arFromFlds,
					updateTo: arToFlds,
					from_month : document.getElementById(arFromFlds[0]),
					from_day : document.getElementById(arFromFlds[1]),
					from_year : document.getElementById(arFromFlds[2]),	
					to_month : document.getElementById(arToFlds[0]),
					to_day : document.getElementById(arToFlds[1]),
					to_year : document.getElementById(arToFlds[2]),
					strFromTo : null,
					containerFrom : "cal1Container",
					containerTo: "cal2Container",
					triggerFrom: "showup",
					triggerTo: "showup1" }
					},
	handleSelect: function(type, args, obj) {
					//console.log("a");
				var dates = args[0]; 
				var date = dates[0];
				var year = date[0], month = date[1], day = date[2];
				var calElements = obj;
				
				var mdate = new Date();
				var ckDate = new Date();
				mdate.setFullYear(year);
				mdate.setMonth(month-1);
				mdate.setDate(day);
				
				//set current date
				ckDate.setDate(pickupDay);
				ckDate.setMonth(pickupMonth-1);
				ckDate.setFullYear(pickupYear);
				
				mdate.setDate(mdate.getDate()+setupCalendar.addDays);
									
				setupCalendar.updateCalendar(calElements, "to");
				setupCalendar.minimumdate(calElements);

				calElements.fromCalendar.hide();
			
				calElements.from_day.selectedIndex = day-1;				
				calElements.from_month.selectedIndex = month-1;
				calElements.from_year.value = year;
				
				calElements.to_day.selectedIndex = mdate.getDate()-1;
				
				calElements.to_month.selectedIndex = mdate.getMonth();
				
				calElements.to_year.value = mdate.getFullYear();
				
				if (mdate < ckDate){
					if (mdate.getMonth() < ckDate.getMonth()){
						calElements.to_year.value = mdate.getFullYear() + 1;
						calElements.from_year.value = mdate.getFullYear() + 1;						
					}
				}


			},
	handleSelect1: function(type,args,obj) {
		//console.log("b");
				var dates = args[0]; 
				var date = dates[0];
			    var year = date[0]-1, month = date[1], day = date[2];
					//alert("to_day:" + obj.to_day);
				var sl_To_Month = obj.to_month;
				var sl_To_Day = obj.to_day;
				var sl_To_Year = obj.to_year;
					
	            if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
			  {
				obj.to_day.options[30] = new Option('31','31');
				sl_To_Month.selectedIndex = month-1;
				sl_To_Day.selectedIndex = day-1;
			  }
			  else if (month==2||month==4||month==6||month==9||month==11)
			  {
			   obj.to_day.options[30]=null
			   sl_To_Month.selectedIndex = month-1;
			   sl_To_Day.selectedIndex = day-1;
			  }
			
              for (var y=0;y<sl_To_Year.options.length;y++) {
						if (sl_To_Year.options[y].text == year) {
							sl_To_Year.selectedIndex = y+1;
							break;
						}
					}
					obj.toCalendar.hide();
				},
handleSingleSelect: function(type, args, obj) {
					
				var dates = args[0]; 
				var date = dates[0];
				var year = date[0]-1, month = date[1], day = date[2];
				var calElements = obj;
					
			     if ((month==4||month==6||month==9||month==11) && (day>23)) 
				 {
				   calElements.from_month.selectedIndex = month-1;
				   calElements.from_day.selectedIndex = day-1;
				 }
				 else if ((month==4||month==6||month==9||month==11) && (day<24))
			     {
				   calElements.from_day.options[30]=null
				   calElements.from_month.selectedIndex = month-1;
				   calElements.from_day.selectedIndex = day-1;
				 }
				 else if ((month==1||month==3||month==5||month==7||month==8||month==10) && (day>24))
				 {
				   calElements.from_day.options[30] = new Option('31','31');
				   calElements.from_month.selectedIndex = month-1;
				   calElements.from_day.selectedIndex = day-1;
				 } 
				 else if ((month==1||month==3||month==5||month==7||month==8||month==10||month==12) && (day<25))
			     {
				   calElements.from_day.options[30] = new Option('31','31');
				   calElements.from_month.selectedIndex = month-1;
				   calElements.from_day.selectedIndex = day-1;
				 }
				 else if ((month==12) && (day>24))
				 {
				  calElements.from_day.options[30] = new Option('31','31');
				  calElements.from_month.selectedIndex = month-1;
				  calElements.from_day.selectedIndex = day-1;
				 }
				 
				 if ( (month==2)&& (day>21))
			    {
				 calElements.from_month.selectedIndex = month-1;
				 calElements.from_day.selectedIndex = day-1;
				}
			    else if ( (month==2)&& (day<22))
				{
				 calElements.from_day.options[30]=null
				 calElements.from_month.selectedIndex = month-1;
				 calElements.from_day.selectedIndex = day-1;
				}
//				 setupCalendar.updateCalendar(calElements, "to");
//				 setupCalendar.minimumdate(calElements);
			    
				 for (var y=0;y<calElements.from_year.options.length;y++) {
						if (calElements.from_year.options[y].text == year) {
							calElements.from_year.selectedIndex = y+1;
							break;
						}
					}
					calElements.fromCalendar.hide();
					

			},	
	updateCalendar: function(oSearch, strFromTo) {
					var strFromTo = strFromTo || oSearch.strFromTo;
					oSearch.strFromTo = null;
					var strP = strFromTo + "_month";			
					var sl_To_Month = oSearch[strP];

					var sl_To_Day = oSearch[strFromTo + '_day'];
					var sl_To_Year= oSearch[strFromTo + '_year'];
					
					var month = parseInt(sl_To_Month.options[sl_To_Month.selectedIndex].value);
					var day = parseInt(sl_To_Day.options[sl_To_Day.selectedIndex].value);
					var year = parseInt(sl_To_Year.options[sl_To_Year.selectedIndex].value);
					
									
					if (! isNaN(month) && ! isNaN(day) && ! isNaN(year)) {
						var date = month + "/" + day + "/" + year;
						
						if (strFromTo == "to") {
							
							oSearch.toCalendar.select(date);
							oSearch.toCalendar.cfg.setProperty("pagedate", month + "/" + year);
							oSearch.toCalendar.render();
							
						}else if (strFromTo == "from"){
							
							oSearch.fromCalendar.select(date);
							oSearch.fromCalendar.cfg.setProperty("pagedate", month + "/" + year);
							oSearch.fromCalendar.render();													
						}
					}
					
				},
	minimumdate: function(obj) {
		
					var currentCal = obj.fromCalendar;
					var updateCal = obj.toCalendar;

			       var sl_from_month = obj.from_month;
				   var sl_from_day = obj.from_day;
				   var sl_from_year = obj.from_year;
					
				  var month = parseInt(sl_from_month.options[sl_from_month.selectedIndex].value);
				   var day = parseInt(sl_from_day.options[sl_from_day.selectedIndex].value);
				   var year = parseInt(sl_from_year.options[sl_from_year.selectedIndex].value);
				
				   if (! isNaN(month) && ! isNaN(day) && ! isNaN(year)) {
						var date = month + "/" + day + "/" + year;
						updateCal.cfg.setProperty("mindate", date );
						updateCal.render();
						}
				 },
	showCalendarFrom: function(e, obj) {
			//alert(YAHOO.util.Event.getXY(e)[0])
			var arrXY = YAHOO.util.Event.getXY(e);
			arrXY = [arrXY[0] + 9, arrXY[1]];
			YAHOO.util.Dom.setXY(obj.containerFrom, arrXY);
			YAHOO.util.Dom.setXY(obj.containerFrom, arrXY);
			obj.fromCalendar.show();
			if (obj.containerTo != "") {
				obj.toCalendar.hide();
			}
			YAHOO.util.Dom.setXY(obj.containerFrom, arrXY);
			YAHOO.util.Dom.setXY(obj.containerFrom, arrXY);
			obj.fromCalendar.show();
			if (obj.containerTo != "") {
				obj.toCalendar.hide();
			}
		},
	showCalendarTo: function(e, obj) {
		//alert("tocalendar");
			var arrXY = YAHOO.util.Event.getXY(e);
			arrXY = [arrXY[0] + 9, arrXY[1]];
			YAHOO.util.Dom.setXY(obj.containerTo, arrXY);
			YAHOO.util.Dom.setXY(obj.containerTo, arrXY);
			obj.fromCalendar.hide();
			obj.toCalendar.show();
			YAHOO.util.Dom.setXY(obj.containerTo, arrXY);
			YAHOO.util.Dom.setXY(obj.containerTo, arrXY);
			obj.fromCalendar.hide();
			obj.toCalendar.show();
		},
	init: function(addD) {
		
	//alert('init');	
	if (addD){setupCalendar.addDays = addD;}
//loop
	for (var i = 1, len = setupCalendar.MaxSearch + 1; i < len; i++){
		if (!setupCalendar['search' + i]){continue;}
		
		setupCalendar['search' + i]();
		
		setupCalendar['search' + i].from_day.value = pickupDay;  
		setupCalendar['search' + i].from_month.value = pickupMonth;		
		setupCalendar['search' + i].from_year.value = pickupYear; 
		setupCalendar['search' + i].to_day.value = dropoffDay;
		setupCalendar['search' + i].to_month.value = dropoffMonth; 
		setupCalendar['search' + i].to_year.value = dropoffYear; 
						
		setupCalendar['search' + i].fromCalendar = new YAHOO.widget.Calendar("fromCalendar", setupCalendar['search' + i].containerFrom, {
			title: "Choose a date:",
			close: true
		});
		setupCalendar['search' + i].fromCalendar.cfg.setProperty("mindate", YAHOO.widget.DateMath.add(new Date(), YAHOO.widget.DateMath.DAY, 1));
		
		if (setupCalendar['search' + i].containerTo != ""){//If containerTo property not empty then 
												  //use handleselect to handle 2 calendars else handle 1 calendar
			setupCalendar['search' + i].fromCalendar.selectEvent.subscribe(setupCalendar.handleSelect, setupCalendar['search' + i], true);
		}else{
			setupCalendar['search' + i].fromCalendar.selectEvent.subscribe(setupCalendar.handleSingleSelect, setupCalendar['search' + i], true);
			
		}

		
		setupCalendar['search' + i].fromCalendar.render();
		
//
		setupCalendar['search' + i].strFromTo = "from";
		YAHOO.util.Event.addListener(setupCalendar['search' + i].updateFrom, "change", function(e, el){setupCalendar.updateCalendar(el, "from");},setupCalendar['search' + i]);
/*
		setupCalendar['search' + i].strFromTo = "from";
		YAHOO.util.Event.addListener(setupCalendar['search' + i].updateFrom, "change", setupCalendar.updateCalendar,setupCalendar['search' + i]);
*/
		setupCalendar['search' + i].fromCalendar.hide();
		
		if (setupCalendar['search' + i].containerTo != "") {
			setupCalendar['search' + i].toCalendar = new YAHOO.widget.Calendar("toCalendar", setupCalendar['search' + i].containerTo, {
				title: "Choose a date:",
				close: true
			});
			setupCalendar['search' + i].toCalendar.cfg.setProperty("mindate", YAHOO.widget.DateMath.add(new Date(), YAHOO.widget.DateMath.DAY, 1));
			//passCal.strCurrentCal = "cal2";
			setupCalendar['search' + i].toCalendar.selectEvent.subscribe(setupCalendar.handleSelect1, setupCalendar['search' + i], true);
			setupCalendar['search' + i].toCalendar.render();
			/*
			setupCalendar['search' + i].strFromTo = "to";
			YAHOO.util.Event.addListener(setupCalendar['search' + i].updateTo, "change", setupCalendar.updateCalendar, setupCalendar['search' + i]);
*/
			setupCalendar['search' + i].strFromTo = "to";
			YAHOO.util.Event.addListener(setupCalendar['search' + i].updateTo, "change", function(e,el){setupCalendar.updateCalendar(el, "to");}, setupCalendar['search' + i]);
			
			//alert('before update');
			setupCalendar.updateCalendar(setupCalendar['search' + i], "from");
			setupCalendar.updateCalendar(setupCalendar['search' + i], "to");
			YAHOO.util.Event.addListener(setupCalendar['search' + i].triggerTo, "click", setupCalendar.showCalendarTo, setupCalendar['search' + i]);
		}
		
		//var date = "02/02/2009";
		//setupCalendar['search' + i].toCalendar.select(date);
		//setupCalendar['search' + i].toCalendar.cfg.setProperty("pagedate", "02/2009");
		YAHOO.util.Event.addListener(setupCalendar['search' + i].triggerFrom, "click", setupCalendar.showCalendarFrom, setupCalendar['search' + i]);
	}
//end loop

		}
};		


			//alert('before init');
			//YAHOO.util.Event.onAvailable("checkIt", setupCalendar.init, setupCalendar, true);


function populateDestination(o){ 

	
	var js = eval(o.responseText)
	var total = js.list.length+1;
	document.details.area.length=1;
	var newElem;
	var selectedItem = 0;
	for (var i = 1; i < total; i++) {
	  	newElem = new Option (js.list[i-1].content, js.list[i-1].value);
		//newElem.value = js.countries[i].code;
		//newElem.text  = js.countries[i].destination;
        document.details.area[i] = (newElem);
		if("(AREA)" != "" && newElem.value=="(AREA)") {selectedItem = i ;}
	}
	if (selectedItem != 0) 
	{
		document.details.area.options[selectedItem].selected = true;
		listoffices(document.details.area.options[selectedItem].value);
	}
}


function listCountries(strId) {	
		
	    helper.asyncRequest("GET", "/cgi-bin/liveweb.sh/jsonqscountrybuild.w" + sessionParams + "&structid=" + strId, {
             success: populateDestination
         });
}
function populate (o) {

	var js = eval(o.responseText)
	var newElem;
	var selectedItem = 0;
	var total = js.list.length;
	
	document.details.fldPickup.length = 0;
	document.details.fldDropoff.length = 0;

	document.details.fldPickup.options[0] = new Option('select a location', '');
	document.details.fldDropoff.options[0] = new Option('select a location', '');	
  
	for (var i = 0; i < total; i++) {
		newElem = new Option (js.list[i].content, js.list[i].value);
//		newElem.value = js.pickup[i].translation;
//		newElem.text  = js.pickup[i].location;
		//document.details.fldPickup.options[i+1]=new Option(js.pickup[i].translation, js.pickup[i].location);
		document.details.fldPickup.options[i+1]=newElem;
		if (pickupOffice != "" && newElem.value==pickupOffice) {
			selectedItem = i + 1;
		}
	}		

	if (selectedItem != 0) {
			document.details.fldPickup.options[selectedItem].selected = true;
			listdropoffices(document.details.fldPickup.options[selectedItem].value);
	}
	
}



function listoffices (areavlu) {
 helper.asyncRequest("GET", "/cgi-bin/liveweb.sh/jsonqsoffbuild.w", {
             success: populate
         }, {
		 	'UckUcZllaaIpkkac':null,
			'POlfigXkjkjkWbdq':null,
			'SblzdbFStskKccak':null,
			'RkkFlPbjklpsIaUb':countryRef,
			'bnjhpihkAiciaikE':langId,
			'ijdljPdkdjpozkbt': areavlu,
			'area': areavlu
         }, null);
}	
/*
ta_populate = function() {
	
	
	

	var js = eval(o.responseText)
	var newElem;
	var selectedItem = 0;
	var total = js.list.length;
	document.details.fldDropoff.length = 0;
	document.details.fldDropoff.options[0] = new Option('select a location', ''); 
	
	for (var i = 0; i < total; i++) {
		
		newElem = new Option (js.list[i].content, js.list[i].value);
	//	newElem.value = js.dropoff[i].location;
	//	newElem.text  = js.dropoff[i].translation;
	//	document.details.fldDropoff.options[i] =new Option(js.dropoff[i].translation, js.dropoff[i].location);
		document.details.fldDropoff.options[i] =newElem;
		
		if (dropoffOffice != "" && newElem.value==dropoffOffice) {selectedItem = i + 1;}
	}		
	
		if (selectedItem != 0) {
			document.details.fldDropoff.options[selectedItem].selected = true;}	
		else {
			document.details.fldDropoff.selectedIndex = 1;}

	document.details.fldDropoff.value = document.details.fldPickup.value; 
	

}


function listdropoffices (pickvlu) {	
    	
	    helper.asyncRequest("GET", "/cgi-bin/liveweb.sh/jsonqsdropoffbuild.w", {
             success: ta_populate
         }, {
		 	'UckUcZllaaIpkkac':null,
			'POlfigXkjkjkWbdq':null,
			'SblzdbFStskKccak':null,
			'RkkFlPbjklpsIaUb':countryRef,
			'bnjhpihkAiciaikE':langId,
			'HdPnYakbadliacdJ': pickvlu
         }, null);
		
}	
*/
document.details.fldPickupMonth.options[pickupMonth - 1].selected = true;
document.details.fldPickupDay.value = pickupDay;
//document.details.fldPickupYear.options[pickupYear - 2007].selected = true;
//populate pickup and dropoff years
document.details.fldPickupYear.length = 0;
document.details.fldPickupYear.options[document.details.fldPickupYear.options.length] = new Option(pickupYear, pickupYear);
document.details.fldPickupYear.options[document.details.fldPickupYear.options.length] = new Option(pickupYear + 1, pickupYear + 1);												   
document.details.fldPickupYear.value = pickupYear;
document.details.fldDropoffMonth.options[dropoffMonth - 1].selected = true;
document.details.fldDropoffDay.value = dropoffDay;
//document.details.fldDropoffYear.options[dropoffYear - 2007].selected = true;
document.details.fldDropoffYear.length = 0;
document.details.fldDropoffYear.options[document.details.fldDropoffYear.options.length] = new Option(pickupYear, pickupYear);
document.details.fldDropoffYear.options[document.details.fldDropoffYear.options.length] = new Option(pickupYear + 1, pickupYear + 1);												

document.details.fldDropoffYear.value = pickupYear;																									

if (pickupTime != "") {
	for (var i = 0; i < document.frmDetails.fldPickupTime.length; i++) {
		if (document.frmDetails.fldPickupTime.options[i].value==pickupTime) {document.frmDetails.fldPickupTime.options[i].selected=true;}
	}
}

if (dropoffTime != "") {
	for (var i = 0; i < document.frmDetails.fldDropoffTime.length; i++) {
		if (document.frmDetails.fldDropoffTime.options[i].value==dropoffTime) {document.frmDetails.fldDropoffTime.options[i].selected=true;}
	}
}

function HideContent(d) {
if(d.length < 1) { return; }
document.getElementById(d).style.visibility = "hidden";
}
function ShowContent(d) {
if(d.length < 1) { return; }
document.getElementById(d).style.visibility = "visible";
}
function ReverseContentDisplay(d) {
if(d.length < 1) { return; }
if(document.getElementById(d).style.visibility == "hidden") { document.getElementById(d).style.visibility = "visible"; }
else { document.getElementById(d).style.visibility = "hidden"; }
}

okBooking = function(e){
	YAHOO.util.Event.preventDefault(e);
	var fArea = YAHOO.util.Dom.get('area');
	var fPickup = YAHOO.util.Dom.get('fldPickup');
	var fDropoff = YAHOO.util.Dom.get('fldDropoff');
	var fDA = YAHOO.util.Dom.get('fldDriverAge');	
	var fPM = YAHOO.util.Dom.get('fldPickupMonth');
	var fPD = YAHOO.util.Dom.get('fldPickupDay');
	var fPY = YAHOO.util.Dom.get('fldPickupYear');
	var fDM = YAHOO.util.Dom.get('fldDropoffMonth');
	var fDD = YAHOO.util.Dom.get('fldDropoffDay');		
	var fDY = YAHOO.util.Dom.get('fldDropoffYear');
	var myfDate=new Date;
	var mytDate=new Date;
	var ckDate=new Date;
	
	mytDate.setDate(fDD.value);
	mytDate.setMonth(fDM.value-1);
	mytDate.setFullYear(fDY.value);
	
	myfDate.setDate(fPD.value);
	myfDate.setMonth(fPM.value-1);
	myfDate.setFullYear(fPY.value);
	
	ckDate.setDate(pickupDay);
	ckDate.setMonth(pickupMonth-1);
	ckDate.setFullYear(pickupYear);
	
	var strErr = "";
		
	if ( (myfDate < ckDate) || (mytDate < myfDate) ){
		strErr = strErr + " Choose a valid date. \n";
	}
	if (fArea.selectedIndex == 0){
		strErr = strErr + " Select a country from the drop down list. \n";
	}
	
	if (fPickup.selectedIndex == 0){
		strErr = strErr + " Select a pickup location from the drop down list. \n";
	}

	if (fDropoff.options[fDropoff.selectedIndex].value == 'select a location'){
		strErr = strErr + " Select a drop off location from the drop down list. \n";
	}
	if (parseInt(fDA, 10) < 22){
		strErr = strErr + " The driver must be 22 or over. \n";
	}
	
	if (strErr != ""){
		strErr = "Please make the following corrections: \n" + strErr;
		alert(strErr);
	}else{
		//DR code
		if (typeof sAction == 'function'){
			var strAction = document.details.action;
			strAction = (strAction.indexOf('?') == -1)?'':strAction.substr(strAction.indexOf('?'));
   			sAction(strAction);
		}
		//DR code end
		this.submit();
	}
}

YAHOO.util.Event.addListener(document.details.fldPickup, 'change', loadOptions);
function loadOptions(){

    var pickUp = document.details.fldPickup;
    var dropOff = document.details.fldDropoff;
    var results = [];
    var i;
    
    for (i = 0; i < pickUp.length; i++) {
    
        var option = pickUp.options[i].value;
        results.push(option);
    }
	for(index in results) {
		dropOff.options[dropOff.options.length] = new Option(results[index], index);
	}
	dropOff.options[1] = null;
}

YAHOO.util.Event.addListener(document.details, 'submit', okBooking);

function Initfindmeacar(addDays, strID, DR_deepLinks){
	//Duration of car hire
	setupCalendar.init(addDays);
	
	//This sets the structure ID
	strID = strID || "101";
	listCountries(strID);
	
	//Adds DR compliancy to Deep links with classname of DR_deepLinks
	if (DR_deepLinks){
		updateDLinks(DR_deepLinks);	
	}
}



