﻿function Combo(id){
    this.ddl = $get(id);
}
Combo.prototype.ddl;
Combo.prototype.Clear = function()
{
    var i=0;
    if(arguments[0]!=null && arguments[0] > 0)
        i=arguments[0];
        
    for(var j=this.ddl.options.length-1;j>=i;j--)
        this.ddl.options[j]=null;
}
Combo.prototype.LoadArray = function(arrayObj,valueProp,descProp, firstOption){
    if(this.ddl!=null && arrayObj!=null && valueProp!=null)
    {
        this.Clear();
        if(descProp==null)
            descProp = valueProp;
		var skip = 0;
		if (firstOption) {
			this.ddl.options[0] = firstOption;
			skip = 1;
		}            
        for(var i = 0;i<arrayObj.length;i++)
        {
            this.ddl.options[i + skip]= eval("new Option(arrayObj[i]."+descProp+",arrayObj[i]."+valueProp+",false,false)");
        }
    }
}
Combo.prototype.StartLoading = function(){
    this.ddl.options.selectedIndex = 0;
    this.ddl.disabled = true;
}
Combo.prototype.EndLoading = function(){
    this.ddl.disabled = false;
}
Combo.prototype.GetValue = function(){
    return this.ddl.options[this.ddl.options.selectedIndex].value;
}
Combo.prototype.Hide = function(){
    return this.ddl.style.display = 'none';
}
Combo.prototype.Show = function(){
    return this.ddl.style.display = 'block';
}

function OnLoadComboError(result,c)
{
    alert(result.get_message());
    c.EndLoading();
}

function OnChangeDest(lang,destEleId,hotelEleId)
{
    var dest = new Combo(destEleId);
    var hotel = new Combo(hotelEleId);
    var destID = dest.GetValue();
    if(destID!=null && parseInt(destID)>0)
    {
        LocationsWS.GetHotelsByDistrict(lang,dest.GetValue(),OnGetHotelsByDistrictCompleted,OnLoadComboError,hotel);
        hotel.StartLoading();
    }else
        hotel.Clear(1);
}
function OnGetHotelsByDistrictCompleted(result,c)
{
    try
    {
        if(result!=null)
        {
            c.LoadArray(result,"ID","Name",c.ddl.options[0]);
        }
    }
    catch(e){}
    c.EndLoading();
}
function OnChangeRegion(lang,regionEleId,destEleId)
{
    var region = new Combo(regionEleId);
    var dest = new Combo(destEleId);
    
    LocationsWS.GetDistrictsWithOffers(lang,region.GetValue(),OnGetRegionsCompleted,OnLoadComboError,dest);
    dest.StartLoading();
}
function OnChangeArea(filter,lang,areaEleId,destEleId)
{
    var area = new Combo(areaEleId);
    var dest = new Combo(destEleId);
    
    LocationsWS.GetCountriesWithOffers(filter,lang,area.GetValue(),OnGetCountriesCompleted,OnLoadComboError,dest);
    dest.StartLoading();
}


function OnGetRegionsCompleted(result,c)
{
    try
    {
        if(result!=null)
        {
            c.LoadArray(result,"ID","Name",c.ddl.options[0]);
        }
    }
    catch(e){}
    c.EndLoading();
}
function OnGetCountriesCompleted(result,c)
{
    try
    {
        if(result!=null)
        {
            c.LoadArray(result,"ID","Code",c.ddl.options[0]);
        }
    }
    catch(e){}
    c.EndLoading();
}