DomLoaded.load(function() {
	
	//big gray semi-transparent covering element is hidden by default
    var bigCover = document.getElementById('bigCover');
    bigCover.style.display = 'none';
	var cover = document.getElementById('cover');
    cover.style.display = 'none';
	
	if (typeof in_array == 'undefined') var in_array = function(needle, haystack) { for (var i = 0, n = haystack.length; i < n; i++) if (haystack[i] == needle) return true; return false; }
    var _ = ('' + document.location).split('?');
    queryString = {};
    if ((_.length > 1) && (typeof _[1] != 'undefined'))
	for (var v = _[1].split('&'), i = 0, a, queryString = {}; i < v.length; ++i)
	{
	    a = v[i].split('=');
	    queryString[unescape(a[0])] = unescape(a[1].replace(/#.*/, ''));
	}
	//dateFormatter.ddmmyyyy(Now, '.')
	if(typeof queryString["cityList"] == 'undefined')queryString["cityList"] = '2';
	if(typeof queryString["countryList"] == 'undefined')queryString["countryList"] = '9';
	if(typeof queryString["ArrivalDate"] == 'undefined')queryString["ArrivalDate"] = dateFormatter.ddmmyyyy(Now, '.');
	if(typeof queryString["DepartureDate"] == 'undefined') queryString["DepartureDate"] = ((new Date()).getDate()+1)+'.'+((new Date()).getMonth()+1)+'.'+((new Date()).getFullYear());
	if(typeof queryString["NumberOfGuests"] == 'undefined')queryString["NumberOfGuests"] = '2';
	if(typeof queryString["freeSale"] == 'undefined')queryString["freeSale"] = "2";
	if(typeof queryString["PriceFrom"] == 'undefined')queryString["PriceFrom"] = "";
	if(typeof queryString["PriceTo"] == 'undefined')queryString["PriceTo"] = "";
	if(typeof queryString["Currency"] == 'undefined')queryString["Currency"] = "8";
	if(typeof queryString["StarList"] == 'undefined')queryString["StarList"] = "[]";
	if(typeof queryString["sortby"] == 'undefined')queryString["sortby"] = "3";
	var setIndexByValue = function(dropdownID, value) {
    	var dd = document.getElementById(dropdownID);
        var current = dd.options[dd.selectedIndex].value;
        if (current != value) for (var i = 0, opt; (opt = dd.options[i]); ++i) if (opt.value == value) { dd.selectedIndex = i; break; }
    };
    var qs = function(id) { setIndexByValue(id, queryString[id]); };

    var cityList = document.getElementById('cityList');
    var countryList = document.getElementById('countryList');
	var NumberOfGuests = document.getElementById('NumberOfGuests');
	var Currency = document.getElementById('Currency');
    
    //we set fields to those that are passed in GET
    qs('countryList');
    qs('NumberOfGuests');
    qs('Currency');
    qs('sortby');
    
    document.getElementById('PriceFrom').value = queryString["PriceFrom"];
    document.getElementById('PriceTo').value = queryString["PriceTo"];
    
    if(queryString["freeSale"]=='1'){ document.getElementById('freeSale').checked = true;  }
    
    var StarList = eval(queryString["StarList"]);
    if(StarList.length>0)document.getElementById('categoryAll').checked = false;
    for(var i=0; i<StarList.length;i++){
    	switch(StarList[i]){
    		case 1: document.getElementById('category5').checked = true; break;
    		case 2: document.getElementById('category4').checked = true; break;
    		case 3: document.getElementById('category3').checked = true; break;
    		case 4: document.getElementById('category2').checked = true; break;
    		case 5: document.getElementById('category1').checked = true; break;
    		default: document.getElementById('categoryAll').checked = true;
    	}
    }
    
    if (countryList.options[countryList.selectedIndex].value != '9') refreshCities(countryList);  else qs('cityList');

    //then set travelDate1 - if it's been passed as a GET param, it will be parsed into a date object. if not - then it's assumed to be today
    var cal1Date = dateParser.ddmmyyyy(queryString['ArrivalDate'], '.');
    if (dateDiff(cal1Date, Now) > 0) {
	    document.getElementById('ArrivalDate').value = cal1Date.getDate() + ' ' + ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][(cal1Date.getMonth() + 1)] + ' ' + cal1Date.getFullYear();
    }
    
    var cal2Date = dateParser.ddmmyyyy(queryString['DepartureDate'], '.');
    if (dateDiff(cal2Date, Now) > 0) {
	    document.getElementById('DepartureDate').value = (cal2Date.getDate()) + ' ' + ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][(cal2Date.getMonth() + 1)] + ' ' + cal2Date.getFullYear();
    }
    	
	var today = new Date();
    today.day = today.getDate();
    today.tomorrow = today.getDate()+1;
    today.month = today.getMonth() + 1;
    today.year = today.getFullYear();

    var dateSelected = function() {
    	bigCover.style.display = 'none';
        var calDate = this.getSelectedDates()[0];
        //alert(calDate)
        document.getElementById(this.inputId).value = calDate.getDate() + ' ' + ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][(calDate.getMonth() + 1)] + ' ' + calDate.getFullYear();
        document.getElementById(this.containerId).style.display = 'none';
        //if (dateDiff(calDate, Now) > 44) alert(msg_outOf45Days);
    };
    
    var ArrivalDate = document.getElementById('ArrivalDate');
    if (ArrivalDate) {
    	ArrivalDate.readOnly = true;
        var cal1Container = document.getElementById('cal0Container');
        cal1Container.style.display = 'none';
        var cal1 = new YAHOO.widget.Calendar("cal0Container");
        cal1.inputId = 'ArrivalDate';
        cal1.cfg.setProperty('START_WEEKDAY', '1');
        /*@cc_on
        cal1.cfg.setProperty('iframe', true);
        @*/
        //cal1Date = new Date("02/20/2009");
        cal1.cfg.queueProperty("selected", dateFormatter.mmddyyyy(cal1Date, '/'), false);
        cal1.cfg.queueProperty("pagedate", (cal1Date.getMonth() + 1).toString() + "/" + cal1Date.getFullYear(), false);
        cal1.cfg.queueProperty("mindate", today.month + "/" + today.day + "/" + today.year, false);
        cal1.cfg.fireQueue();
        cal1.selectEvent.subscribe(dateSelected, cal1, true);
        cal1.render();
        cal1.ishovered = false;
        cal1Container.onmouseover = function() { cal1.ishovered = true; };
        cal1Container.onmouseout = function() { cal1.ishovered = false; };
        ArrivalDate.onfocus = function() { cal1Container.style.display = bigCover.style.display = 'block'; };
        ArrivalDate.onblur = function() { if (!cal1.ishovered) cal1Container.style.display = bigCover.style.display = 'none'; };
    }
    
    var DepartureDate = document.getElementById('DepartureDate');
    var arrival = Date(ArrivalDate.value);
    if (DepartureDate) {
    	DepartureDate.readOnly = true;
        var cal2Container = document.getElementById('cal1Container');
        cal2Container.style.display = 'none';
        var cal2 = new YAHOO.widget.Calendar("cal1Container");
        cal2.inputId = 'DepartureDate';
        cal2.cfg.setProperty('START_WEEKDAY', '1');
        /*@cc_on
        cal2.cfg.setProperty('iframe', true);
        @*/
        //cal2Date = new Date("02/20/2009");
        cal2.cfg.queueProperty("selected", dateFormatter.mmddyyyy(cal2Date, '/'), false);
        cal2.cfg.queueProperty("pagedate", (cal2Date.getMonth() + 1).toString() + "/" + cal2Date.getFullYear(), false);
        
        arrival = new Date(ArrivalDate.value);
        arrival.day = arrival.getDate();
    	arrival.tomorrow = arrival.getDate()+1;
    	arrival.month = arrival.getMonth() + 1;
    	arrival.year = arrival.getFullYear();
        cal2.cfg.queueProperty("mindate", arrival.month + "/" + arrival.tomorrow + "/" + arrival.year, false);
        
        cal2.cfg.fireQueue();
        cal2.selectEvent.subscribe(dateSelected, cal2, true);
        cal2.render();
        cal2.ishovered = false;
        cal2.div = cal2Container;
        cal2Container.onmouseover = function() { cal2.ishovered = true; };
        cal2Container.onmouseout = function() { cal2.ishovered = false; };
        
        DepartureDate.onfocus = function() { 
        	arrival = new Date(ArrivalDate.value);
        	arrival.day = arrival.getDate();
    		arrival.tomorrow = arrival.getDate()+1;
    		arrival.month = arrival.getMonth() + 1;
    		arrival.year = arrival.getFullYear();
    		cal2.cfg.queueProperty("selected", arrival.month + "/" + arrival.tomorrow + "/" + arrival.year, false);
    		cal2.cfg.queueProperty("pagedate", arrival.month + "/" + arrival.year, false);
        	cal2.cfg.queueProperty("mindate", arrival.month + "/" + arrival.tomorrow + "/" + arrival.year, false);
        	cal2.cfg.fireQueue();
        	cal2.render();
        	cal2Container.style.display = bigCover.style.display = 'block'; 
        };
        DepartureDate.onblur = function() { if (!cal2.ishovered) cal2Container.style.display = bigCover.style.display = 'none'; };
    }
    
	
	document.getElementById("countryList").onchange=refreshCities;
	
	document.getElementById("categoryAll").onclick =refreshStars;
	document.getElementById("category5").onclick =refreshStars;
	document.getElementById("category4").onclick =refreshStars;
	document.getElementById("category3").onclick =refreshStars;
	document.getElementById("category2").onclick =refreshStars;
	document.getElementById("category1").onclick =refreshStars;
	
	var moreInfo = document.getElementById('moreInfo');
	var link = moreInfo.getElementsByTagName("p")[0].getElementsByTagName("a")[0];
	link.onclick = showAddInfo;
	moreInfo.getElementsByTagName("div")[0].style.display = 'none';

});

function IsNumeric(sText){
   var ValidChars = "0123456789. ";
   var IsNumber=true;
   var Char;
   for (i = 0; i < sText.length && IsNumber == true; i++) { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) {IsNumber = false;  }
   } return IsNumber;
}

var validateform = function(){
	var PriceFrom = document.getElementById('PriceFrom');
	var PriceTo = document.getElementById('PriceTo');
	var SubmitButton = document.getElementById('submitButton');
	
	SubmitButton.disabled = true;
	
	if(PriceFrom.value!=''){
		if(!IsNumeric(PriceFrom.value)) {alert('"Price from" field is not formatted correctly. Please correct this and try again.'); PriceFrom.focus(); SubmitButton.disabled = false; return false;}
	}
	if(PriceTo.value!=''){
		if(!IsNumeric(PriceTo.value)) {alert('"Price to" field is not formatted correctly. Please correct this and try again.'); PriceTo.focus(); SubmitButton.disabled = false; return false;}
	}
	if(((PriceFrom.value!='')&&(PriceTo.value==''))||((PriceFrom.value=='')&&(PriceTo.value!=''))){
		alert('Either "Price from" or "Price to" field is not filled in. Please correct this and try again.'); PriceTo.focus(); return false;
	}
	document.getElementById('ARTForm').submit();
	return true;
}

function showAddInfo(){
	var actions = {'More options':['','Hide options','/images/hotels/expand.gif','greyLink'],'Hide options':['none','More options','/images/hotels/collapse2.gif','redLink']};
	//var linkmes = this.childNodes[1].data;
	var linkmes = this.textContent;
	if (!linkmes)
	    linkmes = this.innerText;
	var image = this.childNodes[0];
	
	var moreInfo = document.getElementById('moreInfo').getElementsByTagName("div")[0]; 
	moreInfo.style.display = actions[linkmes][0];
	this.childNodes[1].data = actions[linkmes][1];
	image.src = actions[linkmes][2];
	this.className = actions[linkmes][3];

	if (parent) {
	    if (actions[linkmes][0] == "") {
	        parent.document.getElementById("hotelsFrame").style.height = "413px";	        
	    }
	    else if (actions[linkmes][0] == "none") {
	        parent.document.getElementById("hotelsFrame").style.height = "237px";
	    }
	}
	return false;
}

function refreshStars() {
	var stars = document.getElementsByName('StarList[]');
	if(this.checked) {
		switch(this.id){
			case 'categoryAll': for(var i=1; i<stars.length;i++) stars[i].checked=false; break;
			default: stars[0].checked=false; 
			break;
		}
	}
}

function refreshCities(obj){
	if(this.selectedIndex) obj = this;
	var countryList = document.getElementById("countryList");
	var country = countryList.options[countryList.selectedIndex].value;
	var cityList = document.getElementById("cityList");
	var request = getRequest();
    var url  = "/hotels/getCities.php" + "?CountryCode="+country;
    request.open("GET", url, true);
    request.onreadystatechange = function(){ 
        if (request.readyState == 4) {
            if(request.status==200){
                var cities = eval(request.responseText);
                if(cities) {
                	cityList.options.length = 0;
                	for(var i=0;i<cities.length;i++){
                		cityList.options[cityList.options.length] = new Option(cities[i]['cityName'],cities[i]['cityCode']);
                	}
                }
                switch(country){
                	case '9': setSelectedByText('cityList', 'Moscow'); break;
                	case '34': setSelectedByText('cityList', 'Minsk'); break;
                	case '36': setSelectedByText('cityList', 'Tallinn'); break;
                	case '70': setSelectedByText('cityList', 'Astana'); break;
                	case '30': setSelectedByText('cityList', 'Riga'); break;
                	case '58': setSelectedByText('cityList', 'Vilnius'); break;
                	case '38': setSelectedByText('cityList', 'Kyiv'); break;
                	case '67': setSelectedByText('cityList', 'Tashkent'); break;
                }
                
            }
        };
    }
    request.send("0");
}

function setSelectedByText(elemID, what){
    if(!what) return false;
    elem = document.getElementById(elemID);
    for(var i=0; i<elem.options.length;i++){
        if(elem.options[i].text==(what)){elem.selectedIndex = i; break;}
    }
}

var getRequest = function() {
    var request;
	try { request = new XMLHttpRequest();} catch (e) {}
	if (!request) try { request = new ActiveXObject("Msxml2.XMLHTTP");   } catch (e) {}
	if (!request) try { request = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {}
	return request;
};
