var body_height=0;

/**
 * Returns date in format dd/MM/yyyy
 * Date is taken from day_id,mon_id,year_id input fields
 */
function get_date_from_fields(day_id,mon_id,year_id) {
	var d=document.getElementById(day_id).value;
	var m=document.getElementById(mon_id).value;
	var y=document.getElementById(year_id).value;

	var dd=new Date(y,m-1,d);

	return formatDate(dd,"dd/MM/yyyy");
}

/**
 * Call id calendar button for dropoff date is clicked
 * Opens calendar widget
 */
function choose_dropoff_date() {
	var dropoff_date_value=document.getElementById('dropoff_date_value');
	dropoff_date_value.value=get_date_from_fields('dropOffDay','dropOffMon','dropOffYear');

	var d=document.getElementById('pickUpDay').value
	var m=document.getElementById('pickUpMon').value
	var y=document.getElementById('pickUpYear').value

	var now=new Date(y,m-1,d);
	now.setDate(now.getDate()-1);

	dropoff_cal.addDisabledDates(null,formatDate(now,"yyyy-MM-dd"));
	dropoff_cal.select(dropoff_date_value,'dropoff_date_link','dd/MM/yyyy');
	return false;
}

/**
 * Called by calendar. Makes selected date active
 * in dropdowns
 */
function dropoff_cal_return(y,m,d) {
	select_item('dropOffYear',y);
	manageDate('dropOffDay','dropOffMon','dropOffYear');
	select_item('dropOffMon',m);
	manageDate('dropOffDay','dropOffMon','dropOffYear');
	select_item('dropOffDay',d);
	update_dropoff_hours();
}

/**
 * Called if calendar pickup button clicked
 * Opens calendar
 */
function choose_pickup_date() {
	var pickup_date_value=document.getElementById('pickup_date_value');
	pickup_date_value.value=get_date_from_fields('pickUpDay','pickUpMon','pickUpYear');

	var now=new Date();
	with(now) setDate(getDate()-1);

	pickup_cal.addDisabledDates(null,formatDate(now,"yyyy-MM-dd"));
	pickup_cal.select(pickup_date_value,'pickup_date_link','dd/MM/yyyy');
	return false;
}

/**
 * Called by calendar after choosing date.
 * Makes selected date active in dropdowns
 */
function pickup_cal_return(y,m,d) {
	select_item('pickUpYear',y);
	manageDate('pickUpDay','pickUpMon','pickUpYear');
	select_item('pickUpMon',m);
	manageDate('pickUpDay','pickUpMon','pickUpYear');
	select_item('pickUpDay',d);

	update_dropoff();
	update_pickup_hours();
}

/**
 * Update dropoff time
 */
function update_dropoff() {
	var d=document.getElementById('pickUpDay').value;
	var m=document.getElementById('pickUpMon').value;
	var y=document.getElementById('pickUpYear').value;

	var drop_d=document.getElementById('dropOffDay').value;
	var drop_m=document.getElementById('dropOffMon').value;
	var drop_y=document.getElementById('dropOffYear').value;

	var drop_time=new Date(drop_y,drop_m-1,drop_d);
	var time=new Date(y,m-1,d);

	if(drop_time<=time) {
		time.setDate(time.getDate()+1);
		dropoff_cal_return(time.getFullYear(),time.getMonth()+1,time.getDate());
	}
}

/**
 * Fill hours
 */
function update_pickup_hours() {
	fillHours('_pickUpCountry', '_pickUpCity', '_pickUpLocId', 'pickUpYear', 'pickUpMon', 'pickUpDay', 'pickUpHour', 'pickUpMin', 0);
	if(getObj('is_same_loc').checked) fillHours('_pickUpCountry', '_pickUpCity', '_pickUpLocId', 'dropOffYear', 'dropOffMon', 'dropOffDay', 'dropOffHour', 'dropOffMin', 1);
}

function update_dropoff_hours() {
	if(getObj('is_same_loc').checked) fillHours('_pickUpCountry', '_pickUpCity', '_pickUpLocId', 'dropOffYear', 'dropOffMon', 'dropOffDay', 'dropOffHour', 'dropOffMin', 1);
	else {
		fillHours('_dropOffCountry','_dropOffCity','_dropOffLocId','dropOffYear','dropOffMon','dropOffDay','dropOffHour','dropOffMin', 1);
	}
}

/**
 * Crossbrowser height sending
 */
function listen_height() {
	var new_height=0;

	if(navigator.appName && navigator.appName=="Opera") {
		new_height=document.body.offsetHeight;
	} else {
		new_height=document.body.clientHeight;
	}

	if(body_height==new_height) return;

    send_height();
    body_height=new_height;
}

function init_height_listener() {
	if(top!=self) {
		setInterval('listen_height()',500);
	}
}


/**
 * Selects value in dropdown list
 */
function select_item(id,value) {
        var obj=getObj(id);


        for(var i=0;i<obj.options.length;i++) {
                if(obj.options[i].value==value) {
                        obj.options[i].selected=true;
                } else {
                        obj.options[i].selected=false;
                }
        }
}


function setInitialValues(bookingBean)
{
	return;
//	fillCarSubgroup('carSubgroup');
	fillDropCountry('pickUpCountry');
	fillDropCountry('dropOffCountry');
	var time = new Date();

	time.setDate(time.getDate() + 1);
	year = time.getFullYear();
	month = time.getMonth();
	day = time.getDate();

	for(i = 0; i < 3; i++) getObj('pickUpYear').options[i] = new Option(year + i, year + i);
	select_item('pickUpMon',month+1);
	select_item('pickUpDay',day);

	time.setDate(time.getDate() + 1);
	year = time.getFullYear();
	month = time.getMonth();
	day = time.getDate();

	for(i = 0; i < 3; i++) getObj('dropOffYear').options[i] = new Option(year + i, year + i);
	select_item('dropOffMon',month+1);
	select_item('dropOffDay',day);
}

function fillCarSubgroup(objID)
{
	obj = getObj(objID);
	var request = "<CarGroupRQ />";
	var rqnode = getDocElement(request);

	obj.remove(1);

	for(i = 0; i < rqnode.childNodes.length; i++)
	{
		if(rqnode.childNodes.item(i).childNodes.length==0) continue;
		x = rqnode.childNodes.item(i).childNodes.item(0).nodeValue;
		obj.options[i+1] = new Option(x, x);
	}
}

function fillDropCountry(objID)
{
	obj = getObj(objID);
	var request = "<CountryRQ />";
	var rqnode = getDocElement(request);
	emptyDropDown(2, obj);

	for(i = 0; i < rqnode.childNodes.length; i++)
	{
		x = rqnode.childNodes.item(i).childNodes.item(0).nodeValue;
		obj.options[i+1] = new Option(x, x);
	}
}

function fillDropCountry2(countryID, cityID, locID, objID)
{
	obj = getObj(objID);
	country = getObj(countryID).value;
	city = getObj(cityID).value;
	loc = getObj(locID).value;

	var request = "<DropCountryRQ lang='33'><LocID>" + loc + "</LocID><City>" + city + "</City><Country>" + country + "</Country></DropCountryRQ>";
	var rqnode = getDocElement(request);

	emptyDropDown(2, obj);

	for(i = 0; i < rqnode.childNodes.length; i++)
	{
		x = rqnode.childNodes.item(i).childNodes.item(0).nodeValue;
		obj.options[i+1] = new Option(x, x);
	}
}

function fillDropCity(countryID, objID)
{
	obj = getObj(objID);
	country = getDropDownValue(countryID);

	var request="<CityRQ><CountryName>"+country+"</CountryName></CityRQ>"
	var rqnode = getDocElement(request);
	emptyDropDown(2, obj);

	for(i = 0; i < rqnode.childNodes.length; i++)
	{
		x = rqnode.childNodes.item(i).childNodes.item(0).nodeValue;
		obj.options[i+1] = new Option(x, x);
	}
}

function fillDropLoc(countryID, cityID, objID)
{
	obj = getObj(objID);
	country = getDropDownValue(countryID);
	city = getDropDownValue(cityID);

	var request="<LocRQ><CountryName>"+country+"</CountryName><CityName>"+city+"</CityName></LocRQ>";
	var rqnode = getDocElement(request);
	emptyDropDown(2, obj);

	for(i = 0; i < rqnode.childNodes.length; i++)
	{
		locName = rqnode.childNodes.item(i).childNodes.item(0).nodeValue;
		id = rqnode.childNodes.item(i).attributes.getNamedItem('id').nodeValue;
		obj.options[i+1] = new Option(locName, id);
	}
}

function searchLoc(searchID, resultID)
{
	search = getObj(searchID);
	result = getObj(resultID);
	text = search.value;

	if(text.length < 3)
	{
		return;
	}

	if(text.length==3) {
		type=1;
	} else {
		type=0;
	}

	var request = '<SearchLocRQ type="'+type+'" pickLoc="" >' + text + '</SearchLocRQ>';
	var rqnode = getDocElement(request);
	result.options.length = 0;

	for(i=0; i < rqnode.childNodes.length; i++)
	{
		loc = rqnode.childNodes.item(i).childNodes.item(0).nodeValue;
		id = rqnode.childNodes.item(i).attributes.getNamedItem('id').nodeValue;
		city = rqnode.childNodes.item(i).attributes.getNamedItem('city').nodeValue;
		country = rqnode.childNodes.item(i).attributes.getNamedItem('country').nodeValue;
		code = rqnode.childNodes.item(i).attributes.getNamedItem('airportcode').nodeValue;
		if(code.length > 0) code = " [" + code + "]";
		result.options[i] = new Option(loc + code + ", " + city + ", " + country, id);
	}

	result.options[result.options.length] = new Option("Can't find it?", "_ADVANCED_SEARCH_");

	if(result.options.length > 20)
		result.size = 20;
	else
		result.size = result.options.length;

	showDiv(resultID + 'Div');
}

function manageDate(dayID, monthID, yearID)
{
	dayObj = getObj(dayID);
	emptyDropDown(29, dayObj);
	daysInMonth = getDaysInMonth(getDropDownValue(monthID)-1, getDropDownValue(yearID));

	for(i = 28; i < daysInMonth + 1; i++)
	{
		dayObj.options[i-1] = new Option(i, i);
	}
}

function getDaysInMonth(month, year)
{
	daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];

	if((month == 1) && (year % 4 == 0) && ((year % 100 != 0)||(year % 400 == 0)))
		return 29;
	else
		return daysInMonth[month];
}

function emptyDropDown(from, obj)
{
	for(;;)
	{
		if(obj.options.length >= from)
			obj.remove(obj.options.length-1);
		else
			return;
	}
}

function setPickUpParam(loc, countryID, cityID, locID)
{
	var request="<UpdateLocInfoRQ><LocId>" + loc + "</LocId></UpdateLocInfoRQ>";
	var rqnode = getDocElement(request);
	country = rqnode.childNodes.item(0).childNodes.item(0).nodeValue;
	city = rqnode.childNodes.item(1).childNodes.item(0).nodeValue;
	loc = rqnode.childNodes.item(2).childNodes.item(0).nodeValue;

	getObj(countryID).value = country;
	getObj(cityID).value = city;
	getObj(locID).value = loc;
}

function send_height() {
	var height=0;

	if(navigator.appName && navigator.appName=="Opera") {
		height=document.body.offsetHeight+100;
	} else {
		height=document.body.clientHeight+50;
	}

	if(top!=self) {
		var x="http://www.atlaschoice.com/new/resp.htm#height="+height;
		var iframe_str='<iframe id="returndata" style="visibility: hidden;width: 192px; height: 1px" src="'+x+'"></iframe>';
		document.getElementById('divframe').innerHTML=iframe_str;
	}
}

function submit_to_car_hire()
{
	pickUpCountry = getObj('_pickUpCountry').value;
	pickUpCity = getObj('_pickUpCity').value;
	pickUpLocId = getObj('_pickUpLocId').value;

	if(getObj('is_same_loc').checked)
	{
		dropOffCountry = pickUpCountry;
		dropOffCity = pickUpCity;
		dropOffLocId = pickUpLocId;
	}
	else
	{
		dropOffCountry = getObj('_dropOffCountry').value;
		dropOffCity = getObj('_dropOffCity').value;
		dropOffLocId = getObj('_dropOffLocId').value;
	}

	pickUpDay = getObj('pickUpDay').value;
	pickUpMon = getObj('pickUpMon').value;
	pickUpYear = getObj('pickUpYear').value;

	dropOffDay = getObj('dropOffDay').value;
	dropOffMon = getObj('dropOffMon').value;
	dropOffYear = getObj('dropOffYear').value;

	pickUpHour = getObj('pickUpHour').value;
	pickUpMin = getObj('pickUpMin').value;
	dropOffHour = getObj('dropOffHour').value;
	dropOffMin = getObj('dropOffMin').value;

	fineSearchCarClass = getObj('fineSearchCarClass').value;
	driverAge = getObj('driverAge').value;
	promCode = getObj('promCode').value;

	var error = '';
	if(pickUpLocId == '') error += "Select pick up location.\n";
	if(dropOffLocId == '') error += "Select drop off location.\n";
	if(driverAge == '') error += "Driver's age is empty.\n";

	if(pickUpHour=='closed') error += "Pick up location is closed.\n";
	if(dropOffHour=='closed') error += "Drop off location is closed.\n";

	pickupTime = pickUpYear + pickUpMon + pickUpDay + pickUpHour + pickUpMin;
	dropoffTime =  dropOffYear + dropOffMon + dropOffDay + dropOffHour + dropOffMin;

	var pickupTime=new Date(pickUpYear,pickUpMon,pickUpDay,pickUpHour,pickUpMin);
	var dropoffTime=new Date(dropOffYear,dropOffMon,dropOffDay,dropOffHour,dropOffMin);


	if(dropoffTime < pickupTime) error += "Drop off time is less than pick up time.\n";

	if(error)
	{
		alert(error);
		return;
	}

	// deeplink example
	// http://www.valuecarrentals.com/deeplink.do?vehicleClass=Medium Family&driverAge=64&pickupCountry=United Kingdom&pickupCity=Derbyshire&pickupLocId=EMA&pickupDateTime=2007-12-14 11:00&dropoffCountry=United Kingdom&dropoffCity=Derbyshire&dropoffLocId=EMA&dropoffDateTime=2007-12-16 09:00&src=TSM

	var url = "http://cars.atlaschoice.com/Atlaschoice/deeplink.do?";
	url += "fineSearchCarClass=" + fineSearchCarClass;
	url += "&driverAge=" + driverAge;

	url += "&pickupCountry=" + pickUpCountry;
	url += "&pickupCity=" + pickUpCity;
	url += "&pickupLocId=" + pickUpLocId;
	url += "&pickupDateTime=" + pickUpYear + "-" + pickUpMon + "-" + pickUpDay + " " + pickUpHour + ":" + pickUpMin;

	url += "&dropoffCountry=" + dropOffCountry;
	url += "&dropoffCity=" + dropOffCity;
	url += "&dropoffLocId=" + dropOffLocId;
	url += "&dropoffDateTime=" + dropOffYear + "-" + dropOffMon + "-" + dropOffDay + " " + dropOffHour + ":" + dropOffMin;

	if(getObj('jsessionid'))
	{
		url += "&;jsessionid=" +getObj('jsessionid').value;
	}

	if(getObj('amendBooking'))
	{
		url += "&amendBooking=1";
	}

	url += "&promCode=" + promCode;

	//if(document.getElementById('is_same_loc').checked) {
	//	url += "&samelocation=yes";
	//}

	//alert(url);
	//window.location.href = url;
	//var x="http://www.atlaschoice.com/new/resp.htm#"+url;
	//var iframe_str='<iframe id="returndata" style="visibility: hidden;width: 192px; height: 1px" src="'+x+'"></iframe>';
	//document.getElementById('divframe').innerHTML=iframe_str;

	if(top!=self) {
		top.location.href = url;
	} else {
		window.location.href = url;
	}
}

function fillHours(countryID, cityID, locID, yearID, monthID, dayID, timeID, minID, what)
{
	country = getObj(countryID).value;
	city = getObj(cityID).value;
	loc = getObj(locID).value;
	year = getObj(yearID).value;
	month = getObj(monthID).value;
	day = getObj(dayID).value;
	timeObj = getObj(timeID);
	minObj = getObj(minID);

	if(what == 0)
		action = 'OpenTimeRQ';
	else
		action = 'DropTimeRQ';

	var request = "<" + action + " lang='33'><Country>" + country + "</Country><City>" + city + "</City><LocID>" + loc + "</LocID><Date>" + year + "-" + month + "-" + day + "</Date></" + action + ">";
	var rqnode = getDocElement(request);

	var closed=false;

	if(rqnode.childNodes.item(0).childNodes.item(0)) {
		time = rqnode.childNodes.item(0).childNodes.item(0).nodeValue;

		closed=true;
		for(var i=0;i<time.length;i++) {
			if(time.charAt(i)==1) closed=false;
		}

		if(!closed) {
			minObj.style.display='block';
		}
	} else {
		closed=true;
	}

	if(closed) {
		timeObj.options.length = 0;
		timeObj.options[0]=new Option('Closed','closed');
		minObj.style.display='none';
		return;
	}
	timeObj.options.length = 0;
	var index = 0;
	for(i = 0; i < time.length; i++)
	{
		j = (i < 10) ? "0" + i : i;
		if(time.charAt(i) == '1') {
			timeObj.options[index] = new Option(j,i);
			if(j=='12') timeObj.options[index].selected=true;
			index++;
		}
	}
}

function showExtra(image, name, comments)
{
	getObj('divContent').innerHTML = '';
	/*
	if(image == '/unsecure/')
	{
		getObj('extraImage').src = '';
		getObj('eImage').style.display = 'none';
		getObj('eImageExplanation').style.display = 'none';
	}
	else
	{
		getObj('extraImage').src = 'http://'+imageDomain+image;
		getObj('eImage').style.display = 'block';
		getObj('eImageExplanation').style.display = 'block';
	}
	*/
	document.getElementById('extraImage').src = image;
	document.getElementById('extraName').innerHTML = '<b>'+name+'</b>';
	document.getElementById('extraComments').innerHTML = comments;
}

function goToQuote(carId,carName,carImage,carSupplierId,dropCarSupplierId,carPrice,currency,driverFee,dropOffFee,outOfHoursFee,discount,reasonForDiscount,paymentType,realDeposit,balancePaymentDate)
{
	var url = '';
	url += '&carId=' + carId;
	url += '&carName=' + carName;
	url += '&carImage=' + carImage;
	url += '&carSupplierId=' + carSupplierId;
	url += '&dropCarSupplierId=' + dropCarSupplierId;
	url += '&carPrice=' + carPrice;
	url += '&currency=' + currency;
	url += '&driverFee=' + driverFee;
	url += '&dropOffFee=' + dropOffFee;
	url += '&outOfHoursFee=' + outOfHoursFee;
	url += '&discount=' + discount;
	url += '&reasonForDiscount=' + reasonForDiscount;
	url += '&paymentType=' + paymentType;
	url += '&realDeposit=' + realDeposit;
	url += '&balancePaymentDate=' + balancePaymentDate;

	//alert('quote.do?' + url);
	window.open('https://'+frontendDomain+'/'+tomcatProjectName+'/quote.do?' + url,'mywindow','width=400,height=240');
	//window.location = 'quote.do?' + url;
}

function goToDeal(carId,carName,carImage,carSupplierId,dropCarSupplierId,carPrice,currency,driverFee,dropOffFee,outOfHoursFee,discount,reasonForDiscount,paymentType,realDeposit,balancePaymentDate)
{
	var url = '';
	url += '&carId=' + carId;
	url += '&carName=' + carName;
	url += '&carImage=' + carImage;
	url += '&carSupplierId=' + carSupplierId;
	url += '&dropCarSupplierId=' + dropCarSupplierId;
	url += '&carPrice=' + carPrice;
	url += '&currency=' + currency;
	url += '&driverFee=' + driverFee;
	url += '&dropOffFee=' + dropOffFee;
	url += '&outOfHoursFee=' + outOfHoursFee;
	url += '&discount=' + discount;
	url += '&reasonForDiscount=' + reasonForDiscount;
	url += '&paymentType=' + paymentType;
	url += '&realDeposit=' + realDeposit;
	url += '&balancePaymentDate=' + balancePaymentDate;

	//alert('quote.do?' + url);
	window.open('https://'+frontendDomain+'/'+tomcatProjectName+'/deal.do?' + url,'mywindow','width=400,height=240');
	//window.location = 'quote.do?' + url;
}

function getLocRQ(country, city)
{
	return "<LocRQ><CountryName>"+country+"</CountryName><CityName>"+city+"</CityName></LocRQ>";
}


function ResizeFrame(x)
{
  if (navigator.appName == "Opera")
  { window.parent.resizebox('#height='+(document.body.offsetHeight+50+x)); }
  else
  { window.parent.resizebox('#height='+(document.body.clientHeight+50+x)); }
  
}

function dobg()
{
    if (navigator.appName == "Konqueror")
    {
      document.body.className  ="tableblue4";
    }
}

function showhidetbl()
{
  var x = "";
//  if (navigator.appName =="Netscape")
//  {
//      x = document.getElementById("misc_tdmore_lng").textContent;
//  }
//  else
//  {
//      x = document.getElementById("misc_tdmore_lng").innerText;
//  }

  x = document.getElementById("misc_tdmore_lng").style.visibility;
  if (x == "visible")
  {
   document.getElementById("tblmore").style.visibility  ="visible";
   document.getElementById("tblmore").style.display = "block";
   document.getElementById("misc_tdmore_lng").style.visibility = "hidden";
   document.getElementById("misc_tdmore_lng").style.display = "none";
   document.getElementById("misc_tdless_lng").style.visibility = "visible";
   document.getElementById("misc_tdless_lng").style.display = "block";
   //document.getElementById("tdmore_lng").innerText = "<< less";
   //document.getElementById("tdmore_lng").textContent = "<< less";
  }
  else
  {
   document.getElementById("tblmore").style.visibility  ="hidden";
   document.getElementById("tblmore").style.display = "none";
   document.getElementById("misc_tdmore_lng").style.visibility = "visible";
   document.getElementById("misc_tdmore_lng").style.display = "block";
   document.getElementById("misc_tdless_lng").style.visibility = "hidden";
   document.getElementById("misc_tdless_lng").style.display = "none";
   //document.getElementById("tdmore_lng").innerText = "more >>";
   //document.getElementById("tdmore_lng").textContent = "more >>";  
  }
  window.top.calcHeight();
}

function calcHeight()
{
  if (navigator.appName == "Opera")
  {var the_height=document.getElementById('iframet').contentWindow.document.body.offsetHeight;}
  else
  {var the_height=document.getElementById('iframet').contentWindow.document.body.clientHeight;}
  
  
  document.getElementById('iframet').height=the_height+40;
}