var f = document.main
var _GET=new Array()
getvars();

if (!isMSIE()){
		Document.prototype.loadXML = function (s){
		 // parse the string to a new doc
		var doc2 = (new DOMParser()).parseFromString(s, "text/xml")
		 // remove all initial children
		while (this.hasChildNodes())
			this.removeChild(this.lastChild)
	   // insert and import nodes
		for (var i = 0; i < doc2.childNodes.length; i++) {
			this.appendChild(this.importNode(doc2.childNodes[i], true))
		}
	};
}
function makeRequest(request){
	// Create an instance of the XML HTTP Request object
	var to_time = new Date();to_time = to_time.getTime()
	try {		//IE
		oXMLHTTP = new ActiveXObject("Msxml2.XMLHTTP")
	} catch (e) {
		try {
			oXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP")
		} catch (E) {
			oXMLHTTP = false
		}
	}
	if (!oXMLHTTP && typeof XMLHttpRequest!='undefined') {		//MOZILLA
		oXMLHTTP = new XMLHttpRequest()
	}

	var request =  "xml="+encodeURI(request)
	var sURL = "/Atlaschoice/dynaList.do?type=1&"+request;

	oXMLHTTP.open( "GET", sURL, false )
	oXMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")


	oXMLHTTP.send(request) // Execute the request

	var xmlResponse=oXMLHTTP.responseText
	var from_time = new Date();from_time = from_time.getTime()
	//window.status+=xmlResponse.substring(2,7)+" "+(from_time - to_time) /1000


//	window.status += xmlResponse
//alert(xmlResponse);
	return xmlResponse
}

////

/**
 * Sends XML request and returns xml response
 */
function getDocElement(request){
	var xmlResponse = makeRequest(request)
	if (window.ActiveXObject) {
		var xml = new ActiveXObject("Microsoft.XMLDOM"); //IE
	} else {
		if(document.implementation && document.implementation.createDocument) {
			var xml= document.implementation.createDocument("","doc",null);
		}
	}

	xml.async = false

	xml.loadXML(xmlResponse)

	// Opera hack
	for(var i=0;i<xml.childNodes.length;i++) {
		if(xml.childNodes[i] && xml.childNodes[i].tagName) {
			return xml.childNodes[i];
		}
	}
	return xml.childNodes[0];
}

////
function getDocElements(request){
	var xmlResponse = makeRequest(request)
	if (window.ActiveXObject)
		var xml = new ActiveXObject("Microsoft.XMLDOM")//IE
	else
		if (document.implementation && document.implementation.createDocument) //MOZILLA
			var xml= document.implementation.createDocument("","doc",null)
	xml.async = false
	if (!isMSIE()){
		Document.prototype.loadXML = function (s){
		var doc2 = (new DOMParser()).parseFromString(s, "text/xml")// parse the string to a new doc
		while (this.hasChildNodes()) //remove all initial children
			this.removeChild(this.lastChild)
		for (var i = 0; i < doc2.childNodes.length; i++){ // nsert and import nodes
			this.appendChild(this.importNode(doc2.childNodes[i], true))
		}
	}
	}
	xml.loadXML(xmlResponse)
	if (xml.childNodes[0].tagName == 'RS')
		return xml.childNodes[0].childNodes
	else
		return xml.childNodes
}
///
function updatecountry(){
	f = document.main
	var request="<CountryRQ lang='"+_GET['lang']+"'/>"
	var rqnode = getDocElement(request)
	for(i=0;i<rqnode.childNodes.length;i++){
		x = rqnode.childNodes.item(i).childNodes.item(0).nodeValue
		f.pick_up_country.options[i+1] = new Option(x, x)
	}
}
///
function updatecity(country,form) {

	var request="<CityRQ lang='"+_GET['lang']+"'><CountryName>"+country+"</CountryName></CityRQ>"
	var rqnode = getDocElement(request)
	emptyOptions(form,1)
	for(i=0;i<rqnode.childNodes.length;i++){
		x = rqnode.childNodes.item(i).childNodes.item(0).nodeValue
		form.options[i+1] = new Option(unescape(x), x)
	}
}
////
function updateloc(city,f, pick_country) {
	var request="<LocRQ lang='"+_GET['lang']+"'><CountryName>"+pick_country+"</CountryName><CityName>"+city+"</CityName></LocRQ>";
	var rqnode = getDocElement(request)
	emptyOptions(f,1)
	for(i=0;i<rqnode.childNodes.length;i++)
		f.options[i+1]=new Option(unescape(rqnode.childNodes.item(i).childNodes.item(0).nodeValue),rqnode.childNodes.item(i).attributes.getNamedItem('id').nodeValue)
	f.disabled=false

	}
////
function updateDropCountry(loc) {

	var request="<DropCountryRQ lang='"+_GET['lang']+"'><LocID>"+loc+"</LocID><City>"+f.pick_up_city.value+"</City><Country>"+f.pick_up_country.value+"</Country></DropCountryRQ>";
	request+="<DropCityRQ lang='"+_GET['lang']+"'><LocID>"+f.pick_up_loc.options[f.pick_up_loc.selectedIndex].value+"</LocID><Country>"+f.pick_up_country.value+"</Country><City>"+f.pick_up_city.value+"</City><DropCountry>"+f.pick_up_country.value+"</DropCountry></DropCityRQ>"
	request+="<DropLocRQ lang='"+_GET['lang']+"'><LocID>"+f.pick_up_loc.options[f.pick_up_loc.selectedIndex].value+"</LocID><Country>"+f.pick_up_country.value+"</Country><City>"+f.pick_up_city.value+"</City><DropCountry>"+f.pick_up_country.value+"</DropCountry><DropCity>"+f.pick_up_city.value+"</DropCity></DropLocRQ>"

	var resp = getDocElements(request);
	for(i=0;i<resp.length;i++){
		if(resp[i].tagName=='DropCountryRS')
			doCountryNode=resp[i]
		if(resp[i].tagName=='DropCityRS')
			doCityNode=resp[i]
		if(resp[i].tagName=='DropLocRS')
			doLocNode=resp[i]
	}
	setPointer();
	setTimeout("fillDropCountryOptions(doCountryNode);f.drop_off_country.value = f.pick_up_country.value;",0)
	setTimeout("fillDropCityOptions(doCityNode);	f.drop_off_city.value=f.pick_up_city.value;",0)
	setTimeout("fillDropLocOptions(doLocNode);selectValue(f.drop_off_loc,f.pick_up_loc.options[f.pick_up_loc.selectedIndex].text);",0)
	setTimeout("updateOpenTimes()",0)
	setTimeout("updateDropTimes();resetPointer()",0);

}
function updateDropCountryNoTimeout(loc) {

	var request="<DropCountryRQ lang='"+_GET['lang']+"'><LocID>"+loc+"</LocID><City>"+f.pick_up_city.value+"</City><Country>"+f.pick_up_country.value+"</Country></DropCountryRQ>";
	request+="<DropCityRQ lang='"+_GET['lang']+"'><LocID>"+f.pick_up_loc.options[f.pick_up_loc.selectedIndex].value+"</LocID><Country>"+f.pick_up_country.value+"</Country><City>"+f.pick_up_city.value+"</City><DropCountry>"+f.pick_up_country.value+"</DropCountry></DropCityRQ>"
	request+="<DropLocRQ lang='"+_GET['lang']+"'><LocID>"+f.pick_up_loc.options[f.pick_up_loc.selectedIndex].value+"</LocID><Country>"+f.pick_up_country.value+"</Country><City>"+f.pick_up_city.value+"</City><DropCountry>"+f.pick_up_country.value+"</DropCountry><DropCity>"+f.pick_up_city.value+"</DropCity></DropLocRQ>"

	var resp = getDocElements(request);
	for(i=0;i<resp.length;i++){
		if(resp[i].tagName=='DropCountryRS')
			doCountryNode=resp[i]
		if(resp[i].tagName=='DropCityRS')
			doCityNode=resp[i]
		if(resp[i].tagName=='DropLocRS')
			doLocNode=resp[i]
	}
	setPointer();
	fillDropCountryOptions(doCountryNode);f.drop_off_country.value = f.pick_up_country.value;
	fillDropCityOptions(doCityNode);	f.drop_off_city.value=f.pick_up_city.value;
	fillDropLocOptions(doLocNode);selectValue(f.drop_off_loc,f.pick_up_loc.options[f.pick_up_loc.selectedIndex].text);
	updateOpenTimes()
	updateDropTimes();resetPointer()

}
////
function updateDropCountry1(loc){
	var request="<DropCountryRQ lang='"+_GET['lang']+"'><LocID>"+loc+"</LocID><City>"+f.pick_up_city.value+"</City><Country>"+f.pick_up_country.value+"</Country></DropCountryRQ>";
	var rqnode = getDocElement(request)
	fillDropCountryOptions(rqnode)
}
////
function fillDropCountryOptions(rootNode){
	emptyOptions(f.drop_off_country,1)
	for(i=0;i<rootNode.childNodes.length;i++){
		x = rootNode.childNodes.item(i).childNodes.item(0).nodeValue
		f.drop_off_country.options[i+1]=new Option(x, x)
	}
}
////
function updateDropCity(country) {
	var request="<DropCityRQ lang='"+_GET['lang']+"'><LocID>"+f.pick_up_loc.options[f.pick_up_loc.selectedIndex].value+"</LocID><Country>"+f.pick_up_country.value+"</Country><City>"+f.pick_up_city.value+"</City><DropCountry>"+country+"</DropCountry></DropCityRQ>";
	var rqnode = getDocElement(request)
	fillDropCityOptions(rqnode)
	f.drop_off_city.value=f.pick_up_city.value
	if (f.drop_off_city.selectedIndex>0)
		f.drop_off_city.onchange()
}
////
function fillDropCityOptions(rootNode){
	emptyOptions(f.drop_off_city,1)
	for(i=0;i<rootNode.childNodes.length;i++){
		x=rootNode.childNodes.item(i).childNodes.item(0).nodeValue
		f.drop_off_city.options[i+1]=new Option(x,x)
	}
}
////
function updateDropLoc(city){
	try{
	var request="<DropLocRQ lang='"+_GET['lang']+"'><LocID>"+f.pick_up_loc.options[f.pick_up_loc.selectedIndex].value+"</LocID><Country>"+f.pick_up_country.value+"</Country><City>"+f.pick_up_city.value+"</City><DropCountry>"+f.drop_off_country.options[f.drop_off_country.selectedIndex].value+"</DropCountry><DropCity>"+city+"</DropCity></DropLocRQ>";

	var rqnode = getDocElement(request)
	fillDropLocOptions(rqnode)
	updateDropTimes();
	}
	catch(e){}
}
////
function fillDropLocOptions(rootNode){
	emptyOptions(f.drop_off_loc,1)
	for(i=0;i<rootNode.childNodes.length;i++)
		f.drop_off_loc.options[i+1]=new Option(rootNode.childNodes.item(i).childNodes.item(0).nodeValue,rootNode.childNodes.item(i).attributes.getNamedItem('id').nodeValue)
	selectValue(f.drop_off_loc,f.pick_up_loc.options[f.pick_up_loc.selectedIndex].text)
}

function updateOpenTimes() {
	var request =	"<OpenTimeRQ><Country>" +
							f.pick_up_country.value +
							"</Country><City>" +
							f.pick_up_city.value +
							"</City><LocID>" +
							f.pick_up_loc.options[f.pick_up_loc.selectedIndex].value +
							"</LocID><Date>" +
							f.pick_up_year.value +
							"-" +
							f.pick_up_mon.value +
							"-" +
							f.pick_up_day.value +
							"</Date></OpenTimeRQ>";
	var rqnode = getDocElement(request)
//	timenode = rqnode.selectSingleNode("Time");
	timenode = rqnode.childNodes.item(0).childNodes.item(0).nodeValue;
	fillTimes(f.pick_up_hour, timenode);
}

function updateDropTimes() {
	var request = 	"<DropTimeRQ><Country>" +
						f.pick_up_country.value  +
						"</Country><City>" +
						f.pick_up_city.value +
						"</City><LocID>" +
						f.drop_off_loc.options[f.drop_off_loc.selectedIndex].value +
						"</LocID><Date>" +
						f.drop_off_year.value +
						"-" +
						f.drop_off_mon.value +
						"-" +
						f.drop_off_day.value +
						"</Date></DropTimeRQ>";
	var rqnode = getDocElement(request)
//	var timenode = rqnode.selectSingleNode("Time");
	var timenode = rqnode.childNodes.item(0).childNodes.item(0).nodeValue;
	fillTimes(f.drop_off_hour, timenode)
}
////
function fillTimes(form,time){
	emptyOptions(form,0)
	var index=0;
	for(i=0;i<time.length;i++){
		j= (i<10)?"0"+i:i
		if (time.charAt(i)=='1')
			form.options[index++]=new Option(j,i)
	}
	if (form.options[0]==null)
		form.options[0]=new Option(phrases[5],'Closed')

	selectValue(form,'12');
}
////
function isMSIE() {
    return (navigator.userAgent).indexOf('MSIE')!=-1
}

function setPointer() { if (document.all) for (var i=0;i < document.all.length; i++) document.all(i).style.cursor = 'wait'; }
function resetPointer() { if (document.all) for (var i=0;i < document.all.length; i++) document.all(i).style.cursor = 'default'; }

function emptyOptions(obj,start_index){
	len=obj.length
	for(i=0;i<len;i++)
		obj.options[start_index]=null
}


function transform(xmlstr,xslfile){


	if (!isMSIE()){
		var xsltProcessor = new XSLTProcessor();
		var myXMLHTTPRequest = new XMLHttpRequest();
		myXMLHTTPRequest.open("GET", xslfile, false);
		myXMLHTTPRequest.send(null);
		xslStylesheet = myXMLHTTPRequest.responseXML;
		xsltProcessor.importStylesheet(xslStylesheet);

		if (document.implementation && document.implementation.createDocument) //MOZILLA
			var xml= document.implementation.createDocument("","doc",null);
		xml.async = false
		xml.loadXML(xmlstr)
		var fragment = xsltProcessor.transformToFragment(xml, document);
		var div = document.createElement('div');
	    div.appendChild(fragment);

		return div.innerHTML
	}

// Load XML
	try{

var xslt = new ActiveXObject("Msxml2.XSLTemplate");
    var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
    var xslProc;
    xslDoc.async = false;
    xslDoc.resolveExternals = false;
    xslDoc.load(xslfile);
    xslt.stylesheet = xslDoc;
    var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
    xmlDoc.async = false;
    xmlDoc.resolveExternals = false;
    xmlDoc.loadXML(xmlstr);
    xslProc = xslt.createProcessor();
    xslProc.input = xmlDoc;

if (typeof(parameter)!='undefined'){ // for sorting vehicles
	 xslProc.addParameter("sortby", parameter);
	 if (parameter=='PriceCust')
		xslProc.addParameter("datatype", "number");
}
if (typeof(allowDiscount)!='undefined'){ // enable/disable discount fields
	 xslProc.addParameter("discountStyle", allowDiscount?"":"none");

}
	xslProc.transform();
	return xslProc.output

/*
	var xml = new ActiveXObject("Msxml2.DomDocument")
	xml.async = false
	xml.loadXML(xmlstr)
	// Load XSL
	var xsl = new ActiveXObject("Msxml2.DomDocument")
	xsl.async = false
	xsl.load(xslfile)
	// Transform
	return xml.transformNode(xsl)*/
	}
	catch(e){document.write(e.description)}
}

function transformXslStr(xmlstr,xslstr){
	try{
	var xml = new ActiveXObject("Microsoft.XMLDOM")
	xml.async = false
	xml.loadXML(xmlstr)
	var xsl = new ActiveXObject("Microsoft.XMLDOM")
	xsl.async = false
	xsl.loadXML(xslstr)
	return xml.transformNode(xsl)
	}
	catch(e){window.status=xslstr}
}

//returns the value of get-variable
function getQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return unescape(pair[1]);
    }
  }
  return ' ';
}

function getAllGetVars() {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  var str = '';
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
	if ( pair[0]!='firstname' && pair[0]!='lastname' && pair[0]!='phone' && pair[0]!='email' && pair[0]!='car_price' && pair[1]!='' && pair[0]!='quote')
		str += "<input type=hidden name='"+pair[0]+"' value='"+pair[1]+"' />"
  }

	return str
}
var monthname=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")

function getPickUp(){
	if (!_GET)		getvars();

	var request="<LocationInfoRQ lang='"+_GET['lang']+"' locId='"+_GET['pick_up_loc']+"'/>"
	var rqnode = getDocElement(request)
	var pickup = rqnode.childNodes.item(0).getAttribute("location") + "<br><span style='font-weight:normal'>on</span> " + _GET["pick_up_day"] + " "+monthname[_GET["pick_up_mon"]-1]+" "+_GET["pick_up_year"]+" <span style='font-weight:normal'>at</span> "+_GET["pick_up_hour"]+":"+_GET["pick_up_min"]
	return pickup
}

function getDropOff(){

	if (!_GET)		getvars();

	var request="<LocationInfoRQ lang='"+_GET['lang']+"' locId='"+_GET['drop_off_loc']+"'/>"
	var rqnode = getDocElement(request)
	var dropoff = rqnode.childNodes.item(0).getAttribute("location") + "<br><span style='font-weight:normal'>on</span> " + _GET["drop_off_day"] + " "+monthname[_GET["drop_off_mon"]-1]+" "+_GET["drop_off_year"]+" <span style='font-weight:normal'>at</span> "+_GET["drop_off_hour"]+":"+_GET["drop_off_min"]+" <span style='font-weight:normal'>(for </span>"+getNumDays()+"<span style='font-weight:normal'> days)</span>"
	return dropoff
}

function getVehicle(){
	var request="<VehicleInfoRQ lang='"+getQueryVariable('lang')+"' id='"+getQueryVariable('car_id')+"'/>"
	var rqnode = getDocElement(request)
	var veh = rqnode.childNodes.item(0).getAttribute("class")+" "+rqnode.childNodes.item(0).childNodes.item(0).nodeValue
	img = rqnode.childNodes.item(0).getAttribute("image")
	return veh
}

function MM_openBrWindow(theURL,winName,features) {
  window.open(theURL,winName,features)
}

function getTimestamp(year,month,day,hour,min){
        var date = new Date( year,month-1,day,hour,min )
        return (date.getTime() ) /1000
}

function getNumDays(){

	if (!_GET)		getvars();

	var picktime = getTimestamp(_GET['pick_up_year'],_GET['pick_up_mon'],_GET['pick_up_day'],_GET['pick_up_hour'],_GET['pick_up_min'])
	var droptime = getTimestamp(_GET['drop_off_year'],_GET['drop_off_mon'],_GET['drop_off_day'],_GET['drop_off_hour'],_GET['drop_off_min'])

	return Math.ceil((droptime-picktime-3599)/86400)
}
function replaceAll( str, from, to ) {
    var idx = str.indexOf( from );
    while ( idx > -1 ) {
        str = str.replace( from, to );
        idx = str.indexOf( from );
    }
    return str;
}
function getvars(){
	query = window.location.search.substring(1)
	vars = query.split("&")
	for ( i=0;i<vars.length;i++){
		pair = vars[i].split("=")
		if (typeof pair[1]!="undefined" && pair[1]!="undefined")
			_GET[pair[0]] =pair[1].replace(/\+/g," ")
	}
	if (typeof(_GET['lang'])=='undefined')
		_GET['lang']=33


}
