var sliders_to_build = new Object();
var slider_bounds = new Object();
var im_ApartmentsOnMap = null;
var slider_objects = new Object();
var lastUsedFilter = null;
function FilterJS(name, value) {
    this.Name = name;
    this.Value = value;
    this.GetFiltersCount = function() {
        var count = 0;
        for (var key in this.Value) {
            if (this.Value[key] != null) {
                count++;
            }
        }
        return count;

    }
}
function FilterCollcetion() {
    this.Count = 0;
    this.Filters = new Object();
    this.AddFilter = function(filter) {
        if (filter.Value == "" || filter.Value == null)
            return;
        if (this.Filters[filter.Name] == null) {
            this.Count++;
        }

        this.Filters[filter.Name] = filter;
    };
    this.GetFilter = function(filterName) {
        return this.Filters[filterName];
    };
    this.RemoveFilter = function(filterName) {
        if (this.Filters[filterName] != null) {
            this.Count--;
        }        
        delete this.Filters[filterName];
    };
    this.ToXML = function() {

        var xml2 = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
        xml2 += "<Object>";
        xml2 += this._ToXML(this);
        xml2 += "</Object>";
        return xml2;
    };
    this._ToXML = function(obj) {
        var xml = "";
        if (obj == null)
            obj = this;
        for (var p in obj) {
            if (obj[p] == null || typeof (obj[p]) == 'function')
                continue;
            var prfixForInt = "_";
            
                if (typeof (obj[p]) != 'object') {
                    xml += '<' + prfixForInt + p + '>' + obj[p] + '</' + prfixForInt + p + '>';

                }
                else{
                    xml += '<' + prfixForInt + p + '>';
                    xml += this._ToXML(obj[p])
                    xml += '</' + prfixForInt + p + '>';
                }
            
        }
        return xml;
    };
    this.LoadFromXML = function(xml) {
        var xmlDoc;
        try //Internet Explorer
        {
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async = "false";
            xmlDoc.loadXML(xml);
        }
        catch (e) {
            parser = new DOMParser();
            xmlDoc = parser.parseFromString(xml, "text/xml");
        }
        var xmlObj = xmlDoc.documentElement;

        var b = new Object();        
        this._LoadFromXML(xmlObj, b);
                
        for (var filter in b.Filters) {
            var jsFilter = new FilterJS(b.Filters[filter].Name, b.Filters[filter].Value);
            this.AddFilter(jsFilter);

        }        

    };
    this._LoadFromXML = function(xmlObject, parentObject) {
        for (var i = 0; i < xmlObject.childNodes.length; i++) {

            if (xmlObject.childNodes[i].hasChildNodes() && xmlObject.childNodes[i].childNodes[0].hasChildNodes()) {

                var tmpObj = new Object();

                tmpObj = this._LoadFromXML(xmlObject.childNodes[i], tmpObj);
                var tmp1 = xmlObject.childNodes[i].tagName;
                parentObject[tmp1.substr(1, tmp1.length - 1)] = tmpObj;

            } else {
                var tmp1 = xmlObject.childNodes[i].tagName;
                var value = xmlObject.childNodes[i].textContent;
                if (value == null)
                    value = xmlObject.childNodes[i].text;
                parentObject[tmp1.substr(1, tmp1.length - 1)] = value;
            }
        }
        return parentObject;
    }
    this.IsSomeAptsExclulded = function() {
        
        /*if filter collection contains only Unit and/or Currency filter, no apartments are excluded from results, this filters are used only for conversion in C# code*/
        if (
        this.Count == 0
        ||
	    (this.Count == 1 && (this.GetFilter('Unit') != null || this.GetFilter('Currency') != null))
	    ||
	    (this.Count == 2 && this.GetFilter('Unit') != null && this.GetFilter('Currency') != null)
	    ) {
            // do nothing, apartments aren't filtered, filters contains livingspace unit and/or currency
            return false;
        } else {
            return true;
        }
    }
}
function RemoveFromFilters(filter) {
    FilterRestrictions.RemoveFilter(filter);
}
function FilterRestrictionSlider(filterName, value) {
    lastUsedFilter = filterName;
    var filter = FilterRestrictions.GetFilter(filterName);
    if (filter == null) {
        filter = new FilterJS(filterName, new Object());
    }
    if (value == -1) {
        filter.Value[filterName] = null;
        delete filter.Value[filterName];
        FilterRestrictions.RemoveFilter(filter.Name);
    } else {
        filter.Value[filterName] = value.toString();
    }
    if (filter.GetFiltersCount() > 0) {
        FilterRestrictions.AddFilter(filter);
    }
    if (FilterRestrictions.IsSomeAptsExclulded())
        SetDisplayStyleForResetButton('');
    else
        SetDisplayStyleForResetButton('none');

}
function SetDisplayStyleForResetButton(style) {
    var resetButtons = jQuery('.sfrb');
    for (var i = 0; i < resetButtons.length; i++) {
        resetButtons[i].style.display = style;
    }
    if (style == '' && typeof (MapEngine) != 'undefined' && MapEngine != null && MapEngine.IsFullScreen) {
        jQuery('#sfrbe').css('clear', 'left');
    }
    
}
function FilterRestriction(filterName, value, htmlObject) {
    if (filterName == null) {
        lastUsedFilter = '';
        FilterRestrictions.RemoveFilter('ApartmentHide');
        FilterRestrictions.RemoveFilter('DateFrom');
        FilterRestrictions.RemoveFilter('DateTo');
        FilterRestrictions.RemoveFilter('PriceFrom');
        FilterRestrictions.RemoveFilter('PriceTo');
        FilterRestrictions.RemoveFilter('LOS');
        FilterRestrictions.RemoveFilter('LSFrom');
        FilterRestrictions.RemoveFilter('LSTo');
        FilterRestrictions.RemoveFilter('AptTypes');
        FilterRestrictions.RemoveFilter('Icons');
        FilterRestrictions.RemoveFilter('Bedding');
        FilterRestrictions.RemoveFilter('BeddingV2');
        FilterRestrictions.RemoveFilter('NightPriceFrom');
        FilterRestrictions.RemoveFilter('NightPriceTo');
        FilterRestrictions.RemoveFilter('LastMinuteDate');
        document.getElementById('HiddenAptsPlaceHolder').style.display = 'none';
        document.getElementById('hiddenApts').style.display = 'none';
        GetFilterForServer();
        BuildFilters(Filters);
        if (FVer == 2)
            SetDisplayStyleForResetButton('none');
    } else {
        lastUsedFilter = filterName;
        var filter = FilterRestrictions.GetFilter(filterName);
        if (filter == null) {
            filter = new FilterJS(filterName, new Object());
        }
        if (filterName == 'ApartmentHide') {
            if (htmlObject == null) {
                if (filter.Value[filterName] == undefined || filter.Value[filterName].toString() == '' || filter.Value[filterName] == null) {
                    filter.Value[filterName] = value.toString();
                }
                else
                    filter.Value[filterName] += ';' + value.toString(); // hiddenApartments;
                FilterRestrictions.AddFilter(filter);
            }
            else if (htmlObject == 'show' && filter.GetFiltersCount() > 0) {
                if (filter.Value[filterName].toString().indexOf(';' + value) > -1)
                    filter.Value[filterName] = filter.Value[filterName].toString().replace(';' + value, '');
                else if (filter.Value[filterName].toString().indexOf(value + ';') == 0)
                    filter.Value[filterName] = filter.Value[filterName].toString().replace(value + ';', '');
                else
                    filter.Value[filterName] = filter.Value[filterName].toString().replace(value, '');

                if (filter.Value[filterName] == null || filter.Value[filterName] == '') {
                    delete filter.Value[filterName];
                    FilterRestrictions.RemoveFilter(filter.Name);
                }
            }


            if ( document.getElementById('HiddenAptsPlaceHolder') != null && GetFilterApartmentHideCount() == 0) {
                document.getElementById('HiddenAptsPlaceHolder').style.display = 'none';
                if (typeof (MapEngine) != 'undefined' && MapEngine!=null && MapEngine.IsFullScreen) {
                    jQuery('#sfrbe').css('clear', 'left');
                }
                document.getElementById('hiddenApts').style.display = 'none';
            }
            if (document.getElementById('HiddenAptsPlaceHolder') != null) {
                if (FVer == 2000) {
                    document.getElementById('HiddenAptsPlaceHolder').style.display = 'none';
                } else if (GetFilterApartmentHideCount() > 0 && document.getElementById('HiddenAptsPlaceHolder').style.display == 'none') {
                    document.getElementById('HiddenAptsPlaceHolder').style.display = '';
                }
            }

            if (FVer == 2)
                GetFilterForServer();

            else
                GetTotalApartmentCount();
            if (FVer == 2) {
                if (FilterRestrictions.IsSomeAptsExclulded())
                    SetDisplayStyleForResetButton('');
                else
                    SetDisplayStyleForResetButton('none');
            }

            return;
        }
        /*special code for LM filters*/
        if (filterName == 'DateFrom' || filterName == 'DateTo' || filterName == 'PriceFrom' || filterName == 'PriceTo' || filterName == 'LOS' || filterName == 'LSFrom' || filterName == 'LSTo') {
            if (FVer == 2) {

                if (value == -1) {
                    filter.Value[filterName] = null;
                    delete filter.Value[filterName];
                    FilterRestrictions.RemoveFilter(filter.Name);
                } else {
                    filter.Value[filterName] = value.toString();
                }

            } else {
                var checked = htmlObject.checked.toString();
                if (document.getElementById(value).value == '') {
                    htmlObject.checked = false;
                    return;
                }
                if (checked == "true") {
                    filter.Value[filterName] = document.getElementById(value).value;
                } else {
                    filter.Value[filterName] = null;
                    delete filter.Value[filterName];
                    FilterRestrictions.RemoveFilter(filter.Name);
                }

            }
            if (filter.GetFiltersCount() > 0)
                FilterRestrictions.AddFilter(filter);
            if (FVer == 2)
                GetFilterForServer();
            else
                GetTotalApartmentCount();
            if (FVer == 2) {
                if (FilterRestrictions.IsSomeAptsExclulded())
                    SetDisplayStyleForResetButton('');
                else
                    SetDisplayStyleForResetButton('none');
            }
            return;
        }
        if (filterName == 'LastMinuteDate') {
            if (value == '') {
                return;
            }
            
			filter.Value[filterName] = value;
			
            if (filter.GetFiltersCount() > 0)
                FilterRestrictions.AddFilter(filter);
            if (FVer == 2)
                GetFilterForServer();
            else
                GetTotalApartmentCount();
            if (FVer == 2) {
                if (FilterRestrictions.IsSomeAptsExclulded())
                    SetDisplayStyleForResetButton('');
                else
                    SetDisplayStyleForResetButton('none');
            }
            
            return;
        }        
        /*end special code for LM filters*/
        if (htmlObject.type.toString() == "checkbox") {
            var checked = htmlObject.checked.toString();
            if (filterName == "AptTypes") {
                if (checked == "true") {
                    checked = "false";
                } else {
                checked = "true";
                }
            }
            if (checked == "true") {
                filter.Value[value] = 1;

            } else {
                filter.Value[value] = null;
                delete filter.Value[value];
                if (filter.GetFiltersCount() == 0) {
                    FilterRestrictions.RemoveFilter(filter.Name);
                }
            }

        } else if (htmlObject.type.toString() == "select-one") {
            if (htmlObject.value == "0") {
                filter.Value[value] = null;
                delete filter.Value[value];
                if (filter.GetFiltersCount() == 0) {
                    FilterRestrictions.RemoveFilter(filter.Name);
                }
            } else {
                filter.Value[value] = parseInt(htmlObject.value);
            }

        }
        if (filter.GetFiltersCount() > 0)
            FilterRestrictions.AddFilter(filter);

        if (FVer == 2)
            GetFilterForServer();
        else
            GetTotalApartmentCount();
    }
    if (FVer == 2) {
        if (FilterRestrictions.IsSomeAptsExclulded())
            SetDisplayStyleForResetButton('');
        else
            SetDisplayStyleForResetButton('none');
    }


}
function GetTotalApartmentCount() {
    var totalapts = 0;
    for (i in AllApartments) {
        var addApt = true;

        apt = AllApartments[i];
        if (typeof (apt) != 'object')
            continue;
        /*var freeNetFilter = FilterRestrictions.GetFilter("FreeNet");
        if (freeNetFilter != null && freeNetFilter.GetFiltersCount() > 0) {
            if (apt.HasFreeInternet == true) {
            }
            else {
                addApt = false;
            }
        }*/
        var filterApartmentHide = FilterRestrictions.GetFilter("ApartmentHide");
        if (addApt && filterApartmentHide != null && filterApartmentHide.Value != null && filterApartmentHide.GetFiltersCount() > 0) {
            var captHideArr = filterApartmentHide.Value[filterApartmentHide.Name].toString().split(';');
            for (i = 0; i < captHideArr.length; ++i) {
                var aptid = captHideArr[i].split(',');
                if (aptid[0] == apt.ID)
                    addApt = false;
            }
        }
        var filterLSFrom = FilterRestrictions.GetFilter("LSFrom");
        if (addApt && filterLSFrom != null && filterLSFrom.GetFiltersCount() > 0) {
            if (ConvertUnit(apt.LivingSpace) < filterLSFrom.Value[filterLSFrom.Name]) {
                addApt = false;
            }
        }
        var filterLSTo = FilterRestrictions.GetFilter("LSTo");
        if (addApt && filterLSTo != null && filterLSTo.GetFiltersCount() > 0) {
            if (ConvertUnit(apt.LivingSpace) > filterLSTo.Value[filterLSTo.Name]) {
                addApt = false;
            }
        }
        
        var filterLOS = FilterRestrictions.GetFilter("LOS");
        if (addApt && filterLOS != null && filterLOS.GetFiltersCount() > 0) {
            if (apt.LengthOfStay != filterLOS.Value[filterLOS.Name]) {
                addApt = false;
            }
        }
        var filterPriceFrom = FilterRestrictions.GetFilter("PriceFrom");
        if (addApt && filterPriceFrom != null && filterPriceFrom.GetFiltersCount() > 0) {
            if (ConvertPrice(apt.DiscountedPrice, null) < filterPriceFrom.Value[filterPriceFrom.Name]) {
                addApt = false;
            }
        }
        var filterPriceTo = FilterRestrictions.GetFilter("PriceTo");
        if (addApt && filterPriceTo != null && filterPriceTo.GetFiltersCount() > 0) {
            if (ConvertPrice(apt.DiscountedPrice, null) > filterPriceTo.Value[filterPriceTo.Name]) {
                addApt = false;
            }
        }
        var filterNightPriceFrom = FilterRestrictions.GetFilter("NightPriceFrom");
        if (addApt && filterNightPriceFrom != null && filterNightPriceFrom.GetFiltersCount() > 0) {
            if (ConvertPrice(apt.MinPrice, null) < filterNightPriceFrom.Value[filterNightPriceFrom.Name]) {
                addApt = false;
            }
        }
        var filterNightPriceTo = FilterRestrictions.GetFilter("NightPriceTo");
        if (addApt && filterNightPriceTo != null && filterNightPriceTo.GetFiltersCount() > 0) {
            if (ConvertPrice(apt.MinPrice, null) > filterNightPriceTo.Value[filterNightPriceTo.Name]) {
                addApt = false;
            }
        }
        var filterDateFrom = FilterRestrictions.GetFilter("DateFrom");
        if (addApt && filterDateFrom != null && filterDateFrom.GetFiltersCount() > 0) {
            var aptDate = new Date();
            tmpDate = apt.DateFromStr.split('/');
            aptDate.setFullYear(tmpDate[2], tmpDate[1] - 1, tmpDate[0]);
            var filtDate = new Date();
            tmpDate = filterDateFrom.Value[filterDateFrom.Name].split('/');
            filtDate.setFullYear(tmpDate[2], tmpDate[1] - 1, tmpDate[0]);
            if (aptDate < filtDate) {
                addApt = false;
                
            }
        }
        var filterDateTo = FilterRestrictions.GetFilter("DateTo");
        if (addApt && filterDateTo != null && filterDateTo.GetFiltersCount() > 0) {
            var aptDate = new Date();
            tmpDate = apt.DateToStr.split('/');
            aptDate.setFullYear(tmpDate[2], tmpDate[1] - 1, tmpDate[0]);
            var filtDate = new Date();
            tmpDate = filterDateTo.Value[filterDateTo.Name].split('/');
            filtDate.setFullYear(tmpDate[2], tmpDate[1] - 1, tmpDate[0]);
            if (aptDate > filtDate) {
                addApt = false;

            }
        }

        var filterDateLastMinute = FilterRestrictions.GetFilter("LastMinuteDate");
        if (addApt && filterDateLastMinute != null && filterDateLastMinute.GetFiltersCount() > 0 && NewLMFilters == true) {
			var aptDateF = new Date();
			tmpDateF = apt.DateFromStr.split('/');
			aptDateF.setFullYear(tmpDateF[2], tmpDateF[1] - 1, tmpDateF[0]);        			
			var aptDateT = new Date();
			tmpDateT = apt.DateToStr.split('/');
			aptDateT.setFullYear(tmpDateT[2], tmpDateT[1] - 1, tmpDateT[0]);	
			
			tmpDate = filterDateLastMinute.Value[filterDateLastMinute.Name].split('/');
			if (tmpDate[0] == '0' && tmpDate[1] != '0' && tmpDate[2] != '0') {
			    var d = parseInt(tmpDate[1], 10);
			    if (!(d == parseInt(tmpDateF[1], 10) || d == parseInt(tmpDateT[1], 10)))
                    addApt = false;					
			}
			else if (tmpDate[1] == '0' && tmpDate[2] != '0') {
			    var d = parseInt(tmpDate[2], 10);
			    if (!(d == parseInt(tmpDateF[2], 10) || d == parseInt(tmpDateT[2], 10)))
                        addApt = false;					
			}
			else if(tmpDate[2] == '0'){
			    FilterRestrictions.RemoveFilter('LastMinuteDate');					
			}			
			else{				
				var filtDate = new Date();			
				filtDate.setFullYear(tmpDate[2], tmpDate[1] - 1, tmpDate[0]);
				if (aptDateF > filtDate || aptDateT < filtDate) {
					addApt = false;
				}
			}
        }
        
        var filterIcons = FilterRestrictions.GetFilter("Icons");
        if (addApt && filterIcons != null && filterIcons.GetFiltersCount() > 0) {
            var tmpAddApt = false;
            for (var icon in filterIcons.Value) {
                var tmp2AddApt = false;
                for (icons in apt.AdditionalAttributesForFilter) {
                    tmpItem = apt.AdditionalAttributesForFilter[icons];
                    if (typeof (tmpItem) == 'string') {
                        if (tmpItem == icon) {
                            tmp2AddApt = true;
                            break;
                        }
                    }
                }
                if(tmp2AddApt)
                {
                tmpAddApt=true;                
                }
                else
                {
                    tmpAddApt=false;
                    break;
                }
            }
            /*for (icons in apt.AdditionalAttributesForFilter) {
                //if(apt.AdditionalAttributesForFilter
                for (var icon in filterIcons.Value) {
                    if (apt.AdditionalAttributesForFilter[icons] == icon) {
                        tmpAddApt = true;
                        break;
                    }
                }

            }*/
            if (tmpAddApt == false) {
                addApt = false;
            }
        }
        var filterBedding = FilterRestrictions.GetFilter("Bedding");
        if (addApt && filterBedding != null && filterBedding.GetFiltersCount() > 0) {
            //filter bedding
            var tmpAddApt = false;
            for (beds in apt.Bedding) {
                bed = apt.Bedding[beds];
                if (typeof (bed) != 'string')
                    continue;
                if (filterBedding.Value[bed] != null) {
                    tmpAddApt = true;
                    break;
                }
            }
            if (tmpAddApt == false) {
                addApt = false;
            }



        }
        var filterBeddingV2 = FilterRestrictions.GetFilter("BeddingV2");
        if (addApt && filterBeddingV2 != null && filterBeddingV2.GetFiltersCount() > 0) {
            //filter bedding
            var tmpAddAptSignle = true;
            var tmpAddAptDouble = true;
            for (beds in apt.Bedding) {
                bed = apt.Bedding[beds];
                if (typeof (bed) != 'string')
                    continue;
                var tab = bed.split('_');
                var Aptsgl = parseInt(tab[0]);
                var Aptdbl = parseInt(tab[1]);
                if (filterBeddingV2.Value['Single'] != null) {
                    filtSingle = filterBeddingV2.Value['Single'];
                    if (Aptsgl < filtSingle)
                        tmpAddAptSignle = false;
                    else
                        tmpAddAptSignle = true;
                }
                if (filterBeddingV2.Value['Double'] != null) {
                    filtDouble = filterBeddingV2.Value['Double'];
                    if (Aptdbl >= filtDouble && tmpAddAptSignle)
                        tmpAddAptDouble = true;
                    else
                        tmpAddAptDouble = false;
                }
                if (tmpAddAptSignle && tmpAddAptDouble)
                    break;
            }
            if (!tmpAddAptSignle || !tmpAddAptDouble) {
                addApt = false;
            }



        }
        
        
        var aptTypeFilter = FilterRestrictions.GetFilter("AptTypes");
        if (addApt && aptTypeFilter != null && aptTypeFilter.GetFiltersCount() > 0) {
            var AptType = aptTypeFilter.Value;
            var wasType = false;
            for (var key in AptType) {
                if (AptType[key] != null) {
                    if (GetApartmentType(apt) == key) {
                        //totalapts++;
                        wasType = true;
                        break;
                    }
                }
            }
            if (wasType)
                addApt = false;

        } else {
            //totalapts++;

        }
        if (addApt) {
            totalapts++;
        }
    }
    document.getElementById('totalapts').innerHTML = totalapts;
    if (FVer == 2) {
        var taCont = document.getElementById("tanb");        
        var elemTA = document.getElementById('htotap');
        if (typeof (MapEngine) != "undefined" && MapEngine != null && MapEngine.IsFullScreen) {
            elemTA.style.display = 'none';
            taCont.style.display = '';
        } else {
        taCont.style.display = 'none';
        elemTA.className = 'sf_hta';
        elemTA.innerHTML = phrases["number_of_apartments"] + ': ' + '<b>' + totalapts + '</b>';
        }
    } else {
        if (totalapts == 0) {
            document.getElementById("narrBut").className = "FilterDisabled";
        } else {
            document.getElementById("narrBut").className = "doFilter";
        }
    }
    if (filterDateLastMinute != null && filterDateLastMinute.GetFiltersCount() > 0) {
        var tmpDate = filterDateLastMinute.Value[filterDateLastMinute.Name].split('/');//alert(tmpDate.toString());
        jQuery("#monthyeardd option[value='" + tmpDate[1] + "/" + tmpDate[2] + "']").attr("selected", "selected");
        jQuery("#daydd option[value='" + tmpDate[0] + "']").attr("selected", "selected");
        try {
            if (totalapts == 0) {
                document.getElementById("lm_button").className = "fbuttonDisabled";
                document.getElementById("lm_button").innerHTML = listphrases["no_offers_available"]; 
            } else {
                document.getElementById("lm_button").className = "fbutton";
                document.getElementById("lm_button").innerHTML = listphrases["see_deals"];
            } 
        } catch (e) { }        
    }       
    return totalapts;

}
function GetFilterForServer() {
    if (GetTotalApartmentCount() == 0 ) {
        return;
    }
    if (typeof (MapEngine) != "undefined" && MapEngine != null && MapEngine.MapVisible) {
        MapEngine.MapContainer.style.display = 'none';
        MapEngine.WaitingDiv.style.display = '';
    }

    var array = [];
    var fillah = FilterRestrictions.GetFilter("ApartmentHide");
    if (fillah != null) {
        var filter = GetFilterObject();
        filter.Name = "ApartmentHide";
        if (fillah.Value[fillah.Name] != null) {
            filter.Value = fillah.Value[fillah.Name].toString();
            array.push(filter);
        }
        var showHiddenAptsButton = false;
        //if (typeof (MapEngine) == "undefined" || MapEngine == null || (typeof (MapEngine) != "undefined" && MapEngine != null && MapEngine.IsFullScreen == false)) {
        if(FVer!=2000){
            showHiddenAptsButton = true;
        }
        if (GetFilterApartmentHideCount() > 0 && showHiddenAptsButton) {
            document.getElementById('HiddenAptsPlaceHolder').style.display = '';
            //BuildApartmentHide(fillah);
        } else {
            document.getElementById('HiddenAptsPlaceHolder').style.display = 'none';
        }
    }
    var fillsf = FilterRestrictions.GetFilter("LSFrom");
    if (fillsf != null) {
        var filter = GetFilterObject();
        filter.Name = "LSFrom";
        if (fillsf.Value[fillsf.Name] != null) {
            filter.Value = fillsf.Value[fillsf.Name];
            array.push(filter);
        }
    }

    var fillst = FilterRestrictions.GetFilter("LSTo");
    if (fillst != null) {
        var filter = GetFilterObject();
        filter.Name = "LSTo";
        if (fillst.Value[fillst.Name] != null) {
            filter.Value = fillst.Value[fillst.Name];
            array.push(filter);
        }
    }
    FilterRestrictions.RemoveFilter("Unit");
    if (fillsf != null || fillst != null) {
        document.sortform.unitdd.disabled = true;
        var filter = GetFilterObject();
        filter.Name = "Unit";
        filter.Value = document.sortform.unitdd.options[document.sortform.unitdd.selectedIndex].value;
        array.push(filter);
    }
    else {
        document.sortform.unitdd.disabled = false;
    }

    var fildf = FilterRestrictions.GetFilter("DateFrom");
    if ( fildf!= null) {
        var filter = GetFilterObject();
        filter.Name = "DateFrom";        
        if (fildf.Value[fildf.Name] != null) {
            filter.Value = fildf.Value[fildf.Name];
            array.push(filter);
       }
    }
    var fildt = FilterRestrictions.GetFilter("DateTo");
    if ( fildt!= null) {
        var filter = GetFilterObject();
        filter.Name = "DateTo";        
        if (fildt.Value[fildt.Name] != null) {
            filter.Value = fildt.Value[fildt.Name];
            array.push(filter);
            }
    }
    var fildate = FilterRestrictions.GetFilter("LastMinuteDate");
    if (fildate != null) {
        var filter = GetFilterObject();
        filter.Name = "LastMinuteDate";
        if (fildate.Value[fildate.Name] != null) {
            filter.Value = fildate.Value[fildate.Name];
            array.push(filter);
        }
    }    
    var filpf = FilterRestrictions.GetFilter("PriceFrom");
    FilterRestrictions.RemoveFilter("Currency");
    if (filpf != null) {
        var filter = GetFilterObject();
        filter.Name = "PriceFrom";
        if (filpf.Value[filpf.Name] != null) {
            filter.Value = filpf.Value[filpf.Name];
            array.push(filter);
            
        }
    }
    var filpt = FilterRestrictions.GetFilter("PriceTo");
    if (filpt != null) {
        var filter = GetFilterObject();
        filter.Name = "PriceTo";
        if (filpt.Value[filpt.Name] != null) {
            filter.Value = filpt.Value[filpt.Name];
            array.push(filter);
        }
    }
        var nfilpf = FilterRestrictions.GetFilter("NightPriceFrom");
        
        if (nfilpf != null) {
            var filter = GetFilterObject();
            filter.Name = "NightPriceFrom";
            if (nfilpf.Value[nfilpf.Name] != null) {
                filter.Value = nfilpf.Value[nfilpf.Name];
                array.push(filter);

            }
        }
        var nfilpt = FilterRestrictions.GetFilter("NightPriceTo");
        if (nfilpt != null) {
            var filter = GetFilterObject();
            filter.Name = "NightPriceTo";
            if (nfilpt.Value[nfilpt.Name] != null) {
                filter.Value = nfilpt.Value[nfilpt.Name];
                array.push(filter);
            }
        }
        if (filpf != null || filpt != null || nfilpf != null || nfilpt != null) {            
            document.sortform.currencydd.disabled = true;
            var filter = GetFilterObject();
            filter.Name = "Currency";
            filter.Value = document.sortform.currencydd.options[document.sortform.currencydd.selectedIndex].text;
            array.push(filter);
        } else {        
            document.sortform.currencydd.disabled = false;
        }
    var fillos = FilterRestrictions.GetFilter("LOS");
    if ( fillos!= null) {
        var filter = GetFilterObject();
        filter.Name = "LOS";
        if (fillos.Value[fillos.Name] != null) {
            filter.Value = fillos.Value[fillos.Name];
            array.push(filter);
        }
    }
    //AptTypes
    if (FilterRestrictions.GetFilter("AptTypes") != null) {
        var filter = GetFilterObject();
        filter.Name = "AptTypes";
        var tmp = "";
        var AptType = FilterRestrictions.GetFilter("AptTypes").Value;
        for (var key in AptType) {
            if (AptType[key] != null) {
                tmp += key + ";";
            }
        }
        if (tmp.length > 0) {
            tmp = tmp.substr(0, tmp.length - 1);
            filter.Value = tmp;
            array.push(filter);
        }


    }
    if (FilterRestrictions.GetFilter("Icons") != null) {
        var filter = GetFilterObject();
        filter.Name = "Icons";
        var Icons = FilterRestrictions.GetFilter("Icons").Value;
        var tmp = "";
        for (var icon in Icons) {
            if (Icons[icon] != null) {
                tmp += icon+";";
            }
        }
        if (tmp.length > 0) {
            tmp = tmp.substr(0, tmp.length - 1);
            filter.Value = tmp;
            array.push(filter);
        }
            
    }
    if (FilterRestrictions.GetFilter("Bedding") != null) {
        var filter = GetFilterObject();
        filter.Name = "Bedding";
        var Bedding = FilterRestrictions.GetFilter("Bedding").Value;
        var tmp = "";
        for (var bed in Bedding) {
            if (Bedding[bed] != null) {
                tmp += bed + ";";
            }
        }
        if (tmp.length > 0) {
            tmp = tmp.substr(0, tmp.length - 1);
            filter.Value = tmp;
            array.push(filter);
        }
    }
    if (FilterRestrictions.GetFilter("BeddingV2") != null) {
        var filter = GetFilterObject();
        filter.Name = "BeddingV2";
        var Bedding = FilterRestrictions.GetFilter("BeddingV2").Value;
        var tmp = "";
        for (var bed in Bedding) {
            if (Bedding[bed] != null) {
                tmp += bed + ":" + Bedding[bed] + ";";
            }
        }
        if (tmp.length > 0) {
            tmp = tmp.substr(0, tmp.length - 1);
            filter.Value = tmp;
            array.push(filter);
        }
    }
    /*if (FilterRestrictions.GetFilter("FreeNet") != null) {
        var filter = GetFilterObject();
        filter.Name = "FreeNet";
        if (FilterRestrictions.GetFilter("FreeNet").Value["FreeNet"] != null) {
            filter.Value = "1";
            array.push(filter);
        }

    }*/
    try {
        if (typeof (NewLMFilters) == 'undefined' || (typeof (NewLMFilters) != 'undefined' && NewLMFilters == false)) {
            document.getElementById('sorting').style.visibility = 'hidden';
            document.getElementById('paging').style.visibility = 'hidden';
        }
        document.getElementById('apartments').innerHTML = '<center><img id="PW_IMG" src="http://cachefly.apartmentsapart.com/aa/img_modules/progress.gif" alt="" /></center>';


    } catch (err2) { }
    try {

        var xml = FilterRestrictions.ToXML();
        if (Type == 'static') {
            apartmentsapart.Modules.AjaxApartmentList.SaveJavascriptFilter(xml, 'strSLID');
        } else {
            apartmentsapart.Modules.AjaxApartmentListSearch.SaveJavascriptFilter(xml, 'strSLID');
        }
        LogFilter(xml, 'strSLID');
    } catch (err3) {   
    }
    if (Type == 'static') {
        apartmentsapart.Modules.AjaxApartmentList.PutFilters(array, 'strSLID', ShowFilteredApartments);
    } else {
        apartmentsapart.Modules.AjaxApartmentListSearch.PutFilters(array, 'strSLID', ShowFilteredApartments);
    }



}
function LogFilter(filter, strSLID) {
    if (Type == 'static') {
        apartmentsapart.Modules.AjaxApartmentList.LogFilters(filter, strSLID, null);
    }else
    {
        apartmentsapart.Modules.AjaxApartmentListSearch.LogFilters(filter, strSLID, null);
    }
}
function Comparer(a, b) {
    var tmp = a.split('_');
    var aCount = parseInt(tmp[0]) + 2 * parseInt(tmp[1]);
    tmp = b.split('_');
    var bCount = parseInt(tmp[0]) + 2 * parseInt(tmp[1]);
    /*if (aCount == bCount) {
    
    }*/
    return bCount - aCount;
}
function ShowFilteredApartments(res) {
    try {        
        //als variable is defined in AjaxApartmentListSearch javascript
        var total = GetTotalApartmentCount();
        //als.currentPage = 0;
      
        als.noPages = (total / als.AptsPerPage) | 0; //integer cast
        if (total % als.AptsPerPage > 0)
            als.noPages++;

        if (pageNR > 0 && pageNR <= als.noPages && als.noPages > 0) {
            als.currentPage = pageNR - 1;
        }         
        else {
            if (als.currentPage >= als.noPages && als.noPages > 0 && (lastUsedFilter == null || lastUsedFilter == 'ApartmentHide')) {
                als.currentPage = als.noPages - 1;
            }
            else if (als.currentPage < als.noPages && (lastUsedFilter == null || lastUsedFilter == 'ApartmentHide')) { }
            else {
                als.currentPage = 0;
            }
        }      
            
// Build is defined in ajax list
        Build(als, false);
        try {
        var filterCheck = Filters.GetFilter("AptTypes");
        if (Type == 'static' || (filterCheck.Value["Multi"] == null && filterCheck.Value["Combined"] == null && filterCheck.Value["XML"] == null)) {
            if (Type == 'static') {
                im_ApartmentsOnMap = apartmentsapart.Modules.AjaxApartmentList.GetFilteredApartmentsForMap(listID).value;
            } else {
                im_ApartmentsOnMap = apartmentsapart.Modules.AjaxApartmentListSearch.GetFilteredApartmentsForMap(listID).value;
            }

            if (typeof (MapEngine) != "undefined" && MapEngine != null) {
                if (MapEngine.MapVisible) {
                    MapEngine.WaitingDiv.style.display = 'none';
                    MapEngine.MapContainer.style.display = '';
                }
                MapEngine.SetNewMapObjects();

            }
            
        }
            
        } catch (errmap) {
    }
    
        try {
            document.getElementById('sorting').style.visibility = 'visible';
            document.getElementById('paging').style.visibility = 'visible';
        } catch (err2) {  }
    } catch (erro) {
        window.location.reload();
    }
}
function GetFilterObject() {
    if (Type != 'static') {
        return apartmentsapart.Modules.AjaxApartmentListSearch.GetFilterObject().value;
    } else {
        return apartmentsapart.Modules.AjaxApartmentList.GetFilterObject().value;
    }
}
function addSingleEvent(obj, type, fn) {
    if (obj.attachEvent) {
        obj['e' + type + fn] = fn;
        obj[type + fn] = function() { obj['e' + type + fn](window.event); }
        obj.attachEvent('on' + type, obj[type + fn]);
    } else {
        obj.addEventListener(type, fn, false);
    }
}
function changeLSUnit() {
    try {
        
        FilterRestrictions.RemoveFilter("Unit");
        FilterRestrictions.AddFilter(new FilterJS("Unit", document.sortform.unitdd.options[document.sortform.unitdd.selectedIndex].value));
        if (FVer != 2)
            document.getElementById("sfu").innerHTML = document.sortform.unitdd.options[document.sortform.unitdd.selectedIndex].text;
        else {
        try{
            var currentmax = jQuery(sliders_to_build["LS"][4]).slider("option", "max");
            var currentmin = jQuery(sliders_to_build["LS"][4]).slider("option", "min");
            var lsUnit = slider_objects["LS"]["unit"];
            var newMax = parseFloat(ConvertUnit(currentmax, lsUnit));
            var newMin = parseFloat(ConvertUnit(currentmin, lsUnit));
           // slider_bounds["LS"][0] = newMin;
            //slider_bounds["LS"][1] = newMax;
            jQuery(sliders_to_build["LS"][4]).slider("option", "max", newMax);
            jQuery(sliders_to_build["LS"][4]).slider("option", "min", newMin);
            jQuery(sliders_to_build["LS"][5]).val(newMin);
            jQuery(sliders_to_build["LS"][6]).val(newMax);
            jQuery(sliders_to_build["LS"][4]).slider("values", 0, newMin);
            jQuery(sliders_to_build["LS"][4]).slider("values", 1, newMax);

            slider_objects["LS"]["unit"] = document.sortform.unitdd.options[document.sortform.unitdd.selectedIndex].value;
            if (typeof (MapEngine) != "undefined" && MapEngine != null && MapEngine.MapVisible) {
                MapEngine.InfoWindow.setContent(MapEngine.ConvertUnitInInfoWindow(MapEngine.InfoWindow.content));
            }
        
        } catch (ec) { }
        }
        var xml = FilterRestrictions.ToXML();
        if (Type == 'static') {
            apartmentsapart.Modules.AjaxApartmentList.SaveJavascriptFilter(xml, 'strSLID');
        } else {
            apartmentsapart.Modules.AjaxApartmentListSearch.SaveJavascriptFilter(xml, 'strSLID');
        }        
        
    } catch (e) { }
}
function changeCurrencyUnit() {
    try {
        /*var oldCurr = document.getElementById("sfc").innerHTML;
        if (oldCurr != document.sortform.currencydd.options[document.sortform.currencydd.selectedIndex].text) {
            var filpf = FilterRestrictions.GetFilter("PriceFrom");
            if (filpf != null && filpf.Value[filpf.Name] != null) {
                var pfInp = document.getElementById('filtertbPF');
                filpf.Value[filpf.Name] = ConvertPrice(pfInp.value, oldCurr);
                pfInp.value = filpf.Value[filpf.Name];

            }
            var filpt = FilterRestrictions.GetFilter("PriceTo");
            if (filpt != null && filpt.Value[filpt.Name] != null) {
                var ptInp = document.getElementById('filtertbPT');
                filpt.Value[filpt.Name] = ConvertPrice(ptInp.value, oldCurr);
                ptInp.value = filpt.Value[filpt.Name];

            }
        }*/
        FilterRestrictions.RemoveFilter("Currency");
        FilterRestrictions.AddFilter(new FilterJS("Currency", document.sortform.currencydd.options[document.sortform.currencydd.selectedIndex].text));
        if(FVer!=2)
        document.getElementById("sfc").innerHTML = document.sortform.currencydd.options[document.sortform.currencydd.selectedIndex].text;
        addSingleEvent(document.sortform.currencydd, "change", changeCurrencyUnit);
        var xml = FilterRestrictions.ToXML();
        if (Type == 'static') {
            apartmentsapart.Modules.AjaxApartmentList.SaveJavascriptFilter(xml, 'strSLID');
        } else {
            apartmentsapart.Modules.AjaxApartmentListSearch.SaveJavascriptFilter(xml, 'strSLID');
        } try {
        if (FVer == 2) {
            if (typeof (sliders_to_build["Price"]) != 'undefined') {
                var currentmax = jQuery(sliders_to_build["Price"][4]).slider("option", "max");
                var currentmin = jQuery(sliders_to_build["Price"][4]).slider("option", "min");
                var curUnit = slider_objects["Price"]["unit"];
                var newMax = parseFloat(ConvertPrice(currentmax, curUnit));
                var newMin = parseFloat(ConvertPrice(currentmin, curUnit));
                // slider_bounds["Price"][0] = newMin;
                // slider_bounds["Price"][1] = newMax;
                jQuery(sliders_to_build["Price"][4]).slider("option", "max", newMax);
                jQuery(sliders_to_build["Price"][4]).slider("option", "min", newMin);
                jQuery(sliders_to_build["Price"][5]).val(newMin);
                jQuery(sliders_to_build["Price"][6]).val(newMax);
                jQuery(sliders_to_build["Price"][4]).slider("values", 0, newMin);
                jQuery(sliders_to_build["Price"][4]).slider("values", 1, newMax);

                slider_objects["Price"]["unit"] = document.sortform.currencydd.options[document.sortform.currencydd.selectedIndex].text;
            }
            if (typeof (sliders_to_build["NightPrice"]) != 'undefined') {
                var currentmax = jQuery(sliders_to_build["NightPrice"][4]).slider("option", "max");
                var currentmin = jQuery(sliders_to_build["NightPrice"][4]).slider("option", "min");
                var curUnit = slider_objects["NightPrice"]["unit"];
                var newMax = parseFloat(ConvertPrice(currentmax, curUnit));
                var newMin = parseFloat(ConvertPrice(currentmin, curUnit));
                // slider_bounds["Price"][0] = newMin;
                // slider_bounds["Price"][1] = newMax;
                jQuery(sliders_to_build["NightPrice"][4]).slider("option", "max", newMax);
                jQuery(sliders_to_build["NightPrice"][4]).slider("option", "min", newMin);
                jQuery(sliders_to_build["NightPrice"][5]).val(newMin);
                jQuery(sliders_to_build["NightPrice"][6]).val(newMax);
                jQuery(sliders_to_build["NightPrice"][4]).slider("values", 0, newMin);
                jQuery(sliders_to_build["NightPrice"][4]).slider("values", 1, newMax);

                slider_objects["NightPrice"]["unit"] = document.sortform.currencydd.options[document.sortform.currencydd.selectedIndex].text;
            }
            if (typeof (MapEngine) != "undefined" && MapEngine != null && MapEngine.MapVisible) {
                MapEngine.InfoWindow.setContent(MapEngine.ConvertCurrencyInInfoWindow(MapEngine.InfoWindow.content));

                if (Type == 'search') {
                    for (var i = 0; i < MapEngine.MarkersOnMap.length; i++) { //marker tooltip html is prepared for using convert function for InfoWindow
                        MapEngine.MarkersOnMap[i].tooltip = MapEngine.ConvertCurrencyInInfoWindow(MapEngine.MarkersOnMap[i].tooltip);
                    }
                }                 
            }          
        }
        } catch (ec) { }
    } catch (e) { }
}
function addEventsForDD() {
    try {

        addSingleEvent(document.sortform.unitdd, "change", changeLSUnit);
        addSingleEvent(document.sortform.currencydd, "change", changeCurrencyUnit);        
    } catch (exc) {
    }
}
function GetFilteredApartments(listID, type) {
    addEventsForDD();
    strSLID = listID;
    Type = type;

    if (AllApartments == null) {
        if (type == 'static') {            
            apartmentsapart.Modules.AjaxApartmentList.GetApartmentsFromSession(listID, GetFilteredApartmentsCallBack);
        } else {
            apartmentsapart.Modules.AjaxApartmentListSearch.GetApartmentsFromSession(listID, GetFilteredApartmentsCallBack);
        }
    }
    
}
function GetFilteredApartmentsCallBack(res) {

    try {
        if (Type == 'static') {
            filterFromSessionXml = apartmentsapart.Modules.AjaxApartmentList.GetJavascriptFilter('strSLID').value;
        } else {
            filterFromSessionXml = apartmentsapart.Modules.AjaxApartmentListSearch.GetJavascriptFilter('strSLID').value;
        }
        
        
        if (filterFromSessionXml != null) {
            FilterRestrictions.LoadFromXML(filterFromSessionXml);
            if (Type == 'static') {
                if (LMFilters == false) {
                    FilterRestrictions.RemoveFilter('PriceFrom');
                    FilterRestrictions.RemoveFilter('PriceTo');
                    FilterRestrictions.RemoveFilter('LOS');
                } else {
                    FilterRestrictions.RemoveFilter('NightPriceFrom');
                    FilterRestrictions.RemoveFilter('NightPriceTo');
                }
                FilterRestrictions.RemoveFilter('AptTypes');
            } else {
                FilterRestrictions.RemoveFilter('NightPriceFrom');
                FilterRestrictions.RemoveFilter('NightPriceTo');
            }
        }


    } catch (e2) { }
    try {
        if (Type == 'static') {
            im_ApartmentsOnMap = apartmentsapart.Modules.AjaxApartmentList.GetFilteredApartmentsForMap(listID).value;
        } else {

            im_ApartmentsOnMap = apartmentsapart.Modules.AjaxApartmentListSearch.GetFilteredApartmentsForMap(listID).value;
        }
    } catch (errmap) { }
    AllApartments = res.value;    
    if (AllApartments != null && (AllApartments.length < 2)) {
        
        try {
            document.getElementById('PW').style.display = 'none';
        } catch (e1) { }
        try {
            document.getElementById('footer').style.visibility = 'visible';
        } catch (e2) { }
        try {
            document.getElementById('Table1').style.visibility = 'visible';
        } catch (e3) { }
       

        return;
    }    
    var AptTypes = new Object();
    var FreeNet = new Object();
    var Bedding = new Object();
    var Icons = new Object();
    for (i in AllApartments) {

        apt = AllApartments[i];
        if (typeof (apt) != 'object')
            continue;
        //TotalApartments++;
        /*if (apt.HasFreeInternet == true) {
            if (FreeNet["FreeNet"] == null) {
                FreeNet["FreeNet"] = 1;
            } else {
                FreeNet["FreeNet"] = FreeNet["FreeNet"] + 1;
            }
        }*/
        for (beds in apt.Bedding) {
            bed = apt.Bedding[beds];
            if (typeof (bed) != 'string')
                continue;
            if (Bedding[bed] == null) {
                Bedding[bed] = 1;
            } else {
                Bedding[bed] = Bedding[bed] + 1;
            }
        }
        for (icons in apt.AdditionalAttributesForFilter) {

            icon = apt.AdditionalAttributesForFilter[icons];
            if (typeof (icon) != 'string')
                continue;
            if (Icons[icon] == null) {
                Icons[icon] = 1;
            } else {
                Icons[icon] = Icons[icon] + 1;
            }
            
        }

        var tmpAptType = GetApartmentType(apt);

        if (AptTypes[tmpAptType] == null) {
            AptTypes[tmpAptType] = 1;
        } else {
            AptTypes[tmpAptType] = AptTypes[tmpAptType] + 1;
        }


    }
    if (ObjectHasProperties(Bedding)) {
        //var filterBedding = new FilterJS("Bedding", Bedding);
        //Filters.AddFilter(filterBedding);
        var filterBeddingV2 = new FilterJS("BeddingV2", Bedding);
        Filters.AddFilter(filterBeddingV2);
    }
    if (ObjectHasProperties(Icons)){
        var filterIcons = new FilterJS("Icons", Icons);
        Filters.AddFilter(filterIcons);
    }
    if (Type!='static' && ObjectHasProperties(AptTypes)) {
        var filterTypes = new FilterJS("AptTypes", AptTypes);
        Filters.AddFilter(filterTypes);
    }
    if (ObjectHasProperties(FreeNet)) {
        var filterFreeNet = new FilterJS("FreeNet", FreeNet);
        Filters.AddFilter(filterFreeNet);
    }
    BuildFilters(Filters);    
    
    if (FilterRestrictions.Count>0) {
        GetFilterForServer();
    }
    try {
        if (FVer == 2) {
            var newparent = jQuery('#htotap').parent();
            var elemCont = document.createElement('div');
            elemCont.className = 'units';
            newparent.append(elemCont);
            document.getElementById('sortorder').style.marginLeft = '15px';
            if (Type == 'search') {
                jQuery('#im_but').append(jQuery('#sortorder'));
                jQuery('#im_but').append(jQuery('select[name="sortdd"]'));
            }
            else {
                jQuery('#im_but>td').append(jQuery('#sortorder'));
                jQuery('#im_but>td').append(jQuery('select[name="sortdd"]'));            
            }
            jQuery(elemCont).append(jQuery('form[name="sortform"]'));
            document.getElementById('sorting').style.display = 'none';
            //jQuery('#sfcont').append(jQuery('#search3Content'));
            
            var newTr = document.createElement('tr');
            var newTD = document.createElement('td');
            newTD.colSpan = "2";
            newTD.className = 'newTD';
            jQuery(newTD).append(jQuery('#modSearch3'));
            jQuery(newTD).append(jQuery('#modSearchFilter'));
            newTr.appendChild(newTD);

            var newTr2 = document.createElement('tr');
            var newTD2 = document.createElement('td');
            newTD2.className = 'cellmargin';
            newTD2.colSpan = "2";
            newTD2.style.height = '10px';
            newTr2.appendChild(newTD2);
            jQuery('#Table1').prepend(newTr2);
            jQuery('#Table1').prepend(newTr);
            

            /*var searchfilterheight = 0;
            if (Filters.Count > 0) {
                var filterDiv = document.getElementById('sfcont');
                var searchDiv = document.getElementById('search3Content');

                var searchheight = jQuery(searchDiv).height();
                searchfilterheight = jQuery(filterDiv).height();
                if (searchheight > searchfilterheight) {

                    filterDiv.style.height = searchheight + 12 + 'px';
                } else {
                    searchDiv.style.height = searchfilterheight - 20 + 'px';
                }
            }*/

            var filterCheck = Filters.GetFilter("AptTypes");
            if (Type == 'static' || (im_ApartmentsOnMap != null && filterCheck.Value["Multi"] == null && filterCheck.Value["Combined"] == null && filterCheck.Value["XML"] == null)) {
                im_Start();
                /*if (searchfilterheight > 0)
                MapEngine.SearchFilterDivHeight = searchfilterheight;*/
            } else {
            try {
                document.getElementById('PW').style.display = 'none';
            } catch (e1) { }
            try {
                document.getElementById('footer').style.visibility = 'visible';
            } catch (e2) { }
            try {
                document.getElementById('Table1').style.visibility = 'visible';
            } catch (e3) { } 
            }

        }
        if (AllApartments.length < 4 && AllApartments.length > 0) {
            try {
                var soldout = jQuery('.soldOutAlert')[0];
                var tmp = jQuery('#sorting').children();
                for (var i = 0; i < tmp.length; i++) {
                    tmp[i].style.display = 'none';
                }
                jQuery('#sorting').css('display', 'block');
                soldout.style.display = 'block';
                
               
            } catch (e4) { }
        }
    } catch (exc)
    { }
}
function BuildSliders() {
    //for (var i = 0; i < sliders_to_build.length; i++) {
    var min = 0;
    var max = 0;
    if (slider_bounds["Price"][0] != null && typeof (sliders_to_build["Price"]) != 'undefined') {
        min = sliders_to_build["Price"][0];
        max = sliders_to_build["Price"][1];
        if (min != max && min != 0 && max != 0) {
            var tmp = "sliders_to_build[\"Price\"][8]";
            var tmp2 = "sliders_to_build[\"Price\"][9]";
            slider_objects["Price"] = new Object();
            slider_objects["Price"]["object"] = jQuery(sliders_to_build["Price"][4]).slider({
                range: true,
                min: sliders_to_build["Price"][0],
                max: sliders_to_build["Price"][1],
                values: [sliders_to_build["Price"][2], sliders_to_build["Price"][3]],
                slide: function(e, ui) {
                    eval(eval(tmp));
                },
                change: function(e, ui) {
                    if (e.originalEvent != undefined) {
                        eval(eval(tmp2));
                    }

                }
            });
            slider_objects["Price"]["unit"] = document.sortform.currencydd.options[document.sortform.currencydd.selectedIndex].text;
            jQuery(sliders_to_build["Price"][5]).val(jQuery(sliders_to_build["Price"][4]).slider("values", 0));
            jQuery(sliders_to_build["Price"][6]).val(jQuery(sliders_to_build["Price"][4]).slider("values", 1));
        }
    }

    if (slider_bounds["LS"][0] != null && typeof (sliders_to_build["LS"]) != 'undefined') {
        min = sliders_to_build["LS"][0];
        max = sliders_to_build["LS"][1];
        if (min != max && min != 0 && max != 0) {            
            var tmp11 = "sliders_to_build[\"LS\"][8]";
            var tmp22 = "sliders_to_build[\"LS\"][9]";
            slider_objects["LS"] = new Object();
            slider_objects["LS"]["object"] = jQuery(sliders_to_build["LS"][4]).slider({
                range: true,
                min: sliders_to_build["LS"][0],
                max: sliders_to_build["LS"][1],
                values: [sliders_to_build["LS"][2], sliders_to_build["LS"][3]],
                slide: function(e, ui) {
                    eval(eval(tmp11));
                },
                change: function(e, ui) {
                    if (e.originalEvent != undefined) {
                        eval(eval(tmp22));
                    }
                }
            });
            slider_objects["LS"]["unit"] = document.sortform.unitdd.options[document.sortform.unitdd.selectedIndex].value;
            jQuery(sliders_to_build["LS"][5]).val(jQuery(sliders_to_build["LS"][4]).slider("values", 0));
            jQuery(sliders_to_build["LS"][6]).val(jQuery(sliders_to_build["LS"][4]).slider("values", 1));
        } 
    }

    if (slider_bounds["NightPrice"][0] != null && typeof (sliders_to_build["NightPrice"]) != 'undefined') {
        min = sliders_to_build["NightPrice"][0];
        max = sliders_to_build["NightPrice"][1];
        if (min != max && min != 0 && max != 0) {            
            var tmp = "sliders_to_build[\"NightPrice\"][8]";
            var tmp2 = "sliders_to_build[\"NightPrice\"][9]";
            slider_objects["NightPrice"] = new Object();
            slider_objects["NightPrice"]["object"] = jQuery(sliders_to_build["NightPrice"][4]).slider({
                range: true,
                min: sliders_to_build["NightPrice"][0],
                max: sliders_to_build["NightPrice"][1],
                values: [sliders_to_build["NightPrice"][2], sliders_to_build["NightPrice"][3]],
                slide: function(e, ui) {
                    eval(eval(tmp));
                },
                change: function(e, ui) {
                    if (e.originalEvent != undefined) {
                        eval(eval(tmp2));
                    }

                }
            });
            slider_objects["NightPrice"]["unit"] = document.sortform.currencydd.options[document.sortform.currencydd.selectedIndex].text;
            jQuery(sliders_to_build["NightPrice"][5]).val(jQuery(sliders_to_build["NightPrice"][4]).slider("values", 0));
            jQuery(sliders_to_build["NightPrice"][6]).val(jQuery(sliders_to_build["NightPrice"][4]).slider("values", 1));

        } 
    }

   // }
    /*var sliderInfo = sliders_to_build[0];
    var i=0;    
    var tmpFunct =  "jQuery(sliders_to_build[" + i + "][5]).val(ui.values[0]);jQuery(sliders_to_build[" + i + "][6]).val(ui.values[1])";
    var tmpFunChange = 'ProcessSliderChange(event, ui,"' + sliderInfo[7] + '")';
    jQuery('#slideprice').slider({
        range: true,
        min: sliderInfo[0],
        max: sliderInfo[1],
        values: [sliderInfo[2], sliderInfo[3]],
        slide: function(event, ui) {
            eval(tmpFunct);
        },
        change: function(event, ui) {
            eval(tmpFunChange);
        }
    });
    
    i=1;        
    
    jQuery('#slidels').slider({
        range: true,
        min: sliders_to_build[i][0],
        max: sliders_to_build[i][1],
        values: [sliders_to_build[i][2], sliders_to_build[i][3]],
        slide: function(event, ui) {
            eval("jQuery(sliders_to_build[" + i + "][5]).val(ui.values[0]);jQuery(sliders_to_build[" + i + "][6]).val(ui.values[1])");
        },
        change: function(event, ui) {
        eval('ProcessSliderChange(event, ui,"' + sliders_to_build[i][7] + '")');
        }
    });*/
}
function ProcessSliderChange(event, ui, sliderFilter) {
    
    if (sliderFilter == "Price") {
        var tmpval;

        if (ui.values[0] == jQuery(sliders_to_build["Price"][4]).slider("option", "min")) {
            tmpval = -1;
        } else {
            tmpval = ui.values[0];
        }
        FilterRestrictionSlider("PriceFrom", tmpval);
        if (ui.values[1] == jQuery(sliders_to_build["Price"][4]).slider("option", "max"))
            tmpval = -1;
        else
            tmpval = ui.values[1];
        FilterRestrictionSlider("PriceTo", tmpval);
      
    }
    else if (sliderFilter == "LS") {
    var tmpval;
    if (ui.values[0] == jQuery(sliders_to_build["LS"][4]).slider("option", "min")) {
        tmpval = -1;
    } else {
        tmpval = ui.values[0];
    }
    FilterRestrictionSlider("LSFrom", tmpval, null);
    if (ui.values[1] == jQuery(sliders_to_build["LS"][4]).slider("option", "max"))
        tmpval = -1;
    else
        tmpval = ui.values[1];
    FilterRestrictionSlider("LSTo", tmpval, null);
    }
    else if (sliderFilter == "NightPrice") {
        var tmpval;

        if (ui.values[0] == jQuery(sliders_to_build["NightPrice"][4]).slider("option", "min")) {
            tmpval = -1;
        } else {
            tmpval = ui.values[0];
        }
        FilterRestrictionSlider("NightPriceFrom", tmpval);
        if (ui.values[1] == jQuery(sliders_to_build["NightPrice"][4]).slider("option", "max"))
            tmpval = -1;
        else
            tmpval = ui.values[1];
        FilterRestrictionSlider("NightPriceTo", tmpval);

    }
    GetFilterForServer();
}
function ObjectHasProperties(object) {
    for (var key in object) {
        //if (key != "0_0")//fix for apts without bedding
            return true;
    }
    return false;
}
function GetApartmentType(apt) {
    var tmpAptType;
    if (apt.IsXmlApt == true) {
        tmpAptType = "XML";
    }
    else if (apt.isMultiStay == true) {
        tmpAptType = "Multi";
    }
    else if (apt.isCombinedStay == true) {
        tmpAptType = "Combined";
    }
    else {
        tmpAptType = apt.ApartmentTypeID;
    }
    return tmpAptType;
}
function BuildLMHeader() {
    if (NewLMFilters == false) {
        var aal = document.getElementById('modAjaxApartmentList');

        var header = document.createElement('div');
        header.setAttribute('id', 'lmRefine');
        header.innerHTML = phrases["too_many_offers"].replace("@val@", phrases["refine"].toUpperCase());

        var title = document.getElementById('title');

        aal.insertBefore(header, title);
    }
}

function BuildFilters(filters) {
    sliders_to_build = new Object(); // remove old slider values
    document.getElementById('sffilter').innerHTML = '';
    if (filters.Count > 0) {
        if (FVer == 2) {
            document.getElementById("narrBut").className = "";
            document.getElementById("narrBut").style.display = "none";
            var minPrice = null;
            var maxPrice = null;
            var minLS = null;
            var maxLS = null;
            var nightPriceFrom = null;
            var nightPriceTo = null;
            for (i in AllApartments) {
                var addApt = true;

                apt = AllApartments[i];
                if (typeof (apt) != 'object')
                    continue;
                if (apt.DiscountedPrice != 0) {
                    if (minPrice == null) {
                        minPrice = apt.DiscountedPrice;
                    } else if (minPrice > apt.DiscountedPrice) {
                        minPrice = apt.DiscountedPrice;
                    }
                    if (maxPrice == null) {
                        maxPrice = apt.DiscountedPrice;
                    } else if (maxPrice < apt.DiscountedPrice) {
                        maxPrice = apt.DiscountedPrice;
                    }
                }

                if (apt.LivingSpace != 0) {
                    if (minLS == null) {
                        minLS = apt.LivingSpace;
                    } else if (minLS > apt.LivingSpace) {
                        minLS = apt.LivingSpace;
                    }
                    if (maxLS == null) {
                        maxLS = apt.LivingSpace;
                    } else if (maxLS < apt.LivingSpace) {
                        maxLS = apt.LivingSpace;
                    }
                }
                if (apt.MinPrice != 0) {
                    if (nightPriceFrom == null) {
                        nightPriceFrom = apt.MinPrice;
                    } else if (nightPriceFrom > apt.MinPrice) {
                        nightPriceFrom = apt.MinPrice;
                    }
                    if (nightPriceTo == null) {
                        nightPriceTo = apt.MinPrice;
                    } else if (nightPriceTo < apt.MinPrice) {
                        nightPriceTo = apt.MinPrice;
                    }
                }
            }
            slider_bounds["Price"] = [minPrice, maxPrice];
            slider_bounds["LS"] = [minLS, maxLS];
            slider_bounds["NightPrice"] = [nightPriceFrom, nightPriceTo];
            //aaSearch
            // for tests
            //var hiddenF = jQuery('<input type="hidden" name="newsearch" value="1" />');
            //jQuery("#aaSearch").append(hiddenF);
        }

        if (Type == 'static') {
            if (LMFilters == true)
                BuildLMFilter();
                else
                    document.getElementById('sffilter').innerHTML += BuildPriceFilter();
        } else {
            document.getElementById('sffilter').innerHTML += BuildPriceFilter();
        }
        BuildLivingSpace();

        var filterTypes = filters.GetFilter("AptTypes");
        if (filterTypes != null) {
            BuildAptTypesFilter(filterTypes);
        }
        /*var filterFreeNet = filters.GetFilter("FreeNet");
        if (filterFreeNet != null && filterFreeNet.GetFiltersCount() > 0) {
        BuildFreeNetFilter(filterFreeNet);
        }*/
        var filterBedding = filters.GetFilter("Bedding");
        if (filterBedding != null && filterBedding.GetFiltersCount() > 0) {
            BuildBedding(filterBedding);
        }
        var filterBedding = filters.GetFilter("BeddingV2");
        if (filterBedding != null && filterBedding.GetFiltersCount() > 0) {
            BuildBeddingV2(filterBedding);
        }
        var filterIcons = filters.GetFilter("Icons");
        if (filterIcons != null && filterIcons.GetFiltersCount() > 0) {
            BuildIcons(filterIcons);
        }

        var fillah = FilterRestrictions.GetFilter("ApartmentHide"); ;
        BuildApartmentHide(fillah);
        document.getElementById('modSearchFilter').style.display = "block";
        if (LMFilters == true) {
            BuildLMHeader();
        }
    }
    if (FVer == 2) {
        var styleRB = '';
       if (FilterRestrictions.IsSomeAptsExclulded()==false || (FilterRestrictions.Count == 1 && FilterRestrictions.GetFilter('ApartmentHide') != null && GetFilterApartmentHideCount() == 0)) {
            styleRB = ' style="display:none;" ';
        }
        document.getElementById('sffilter').innerHTML += '<div id="sfrbe" class="sfrb" ' + styleRB + 'onclick="FilterRestriction(null)">'+phrases["remove_filters"]+'</div>';
        BuildSliders();
        
    }
    
    GetTotalApartmentCount();


}
function BuildLMFilter() {
    var Builder = "";
    if (NewLMFilters == false) {
        Builder = "<div class=\"headFilType\">" + phrases["date"] + "</div>";
        var filterRestr = FilterRestrictions.GetFilter("DateFrom");
        if (filterRestr == null) {
            filterRestr = new FilterJS("", "");
        }
        var checked = "";
        var d = new Date();
        var curr_date = d.getDate();
        var curr_month = d.getMonth();
        curr_month++;
        if (curr_month < 10) {
            curr_month = '0' + curr_month;
        }
        var curr_year = d.getFullYear();
        var strDF = '';  //curr_date+ "/" + curr_month + "/" + curr_year;

        if (filterRestr.Value["DateFrom"] != null) {
            checked = "checked=\"true\"";
            strDF = filterRestr.Value["DateFrom"];
        }
        Builder += "<div class=\"lm sfilter\"><b>" + phrases["from"] + ":</b><input type=\"text\" onblur=\"gfPop_1.check_date(this);\" onclick=\"gfPop_1.fPopMulti(this,null,null,null,null,true);return false\" onfocus=\"UnCheck('filterchDF','DateFrom')\" name=\"filtertbDF\" maxlength=\"10\" size=\"10\" id=\"filtertbDF\" value=\"" + strDF + "\" class=\"date\"/>" + "<input id=\"filterchDF\" type=\"checkbox\" " + checked + " onclick=\"FilterRestriction('DateFrom','filtertbDF', this)\" />" + "</div>";
        filterRestr = FilterRestrictions.GetFilter("DateTo");
        if (filterRestr == null) {
            filterRestr = new FilterJS("", "");
        }
        d.setDate(d.getDate() + 1);
        curr_date = d.getDate();
        curr_month = d.getMonth();
        curr_month++;
        if (curr_month < 10) {
            curr_month = '0' + curr_month;
        }
        curr_year = d.getFullYear();

        var strDT = ''; //curr_date + "/" + curr_month + "/" + curr_year;
        var checked2 = "";
        if (filterRestr.Value["DateTo"] != null) {
            checked2 = "checked=\"true\"";
            strDT = filterRestr.Value["DateTo"];
        }

        Builder += "<div class=\"lm sfilter\"><b>" + phrases["to"] + ":</b><input type=\"text\" onblur=\"gfPop_1.check_date(this);\" onclick=\"gfPop_1.fPopMulti(this,null,document.getElementById('filtertbDF'),null,null,true);return false\" onfocus=\"UnCheck('filterchDT','DateTo')\" value=\"" + strDT + "\" maxlength=\"10\" name=\"filtertbDT\" size=\"10\" id=\"filtertbDT\" class=\"date\"/><input id=\"filterchDT\" type=\"checkbox\" " + checked2 + " onclick=\"FilterRestriction('DateTo','filtertbDT' , this)\" /></div>";
    }

    Builder += BuildPriceFilter();

    Builder += "<div class=\"headFilType\">" +  phrases["length_of_stay"] + "</div>";
    filterRestr = FilterRestrictions.GetFilter("LOS");
    if (filterRestr == null) {
        filterRestr = new FilterJS("", "");
    }
    var valueLOS = "1";
    var checkedLOS = "";
    if (filterRestr.Value["LOS"] != null) {
        checkedLOS= "checked=\"true\"";
        valueLOS = filterRestr.Value["LOS"];
    }
        
    Builder += "<div class=\"lm sfilter\"><b class=\"los losm\" onclick=\"addLOS(-1)\">-</b><input disabled=\"true\" type=\"text\" class=\"tblos\" id=\"filtertbLOS\" value=\""+valueLOS+"\" /><b class=\"los\" onclick=\"addLOS(1)\">+</b><input id=\"filterchLOS\" type=\"checkbox\" " + checkedLOS + " onclick=\"FilterRestriction('LOS','filtertbLOS' , this)\" /></div>";
    
    document.getElementById('sffilter').innerHTML += Builder;
}
function BuildPriceFilterV2(min, max) {

    if (min == max || min==0 || max==0)
        return "";
    var Builder = '<div class="nfc">';
    filterRestr = FilterRestrictions.GetFilter("PriceFrom");
    if (filterRestr == null) {
        filterRestr = new FilterJS("", "");
    }
    var valuePF = "";    
    if (filterRestr.Value["PriceFrom"] != null) {        
        valuePF = filterRestr.Value["PriceFrom"];
    }
    if(valuePF=="")
        valuePF = ConvertPrice(min, null);
    Builder += '<div class="nfhead">' + phrases["total_price"] + ':</div>';
    Builder += '<div class="nfl"><span>' + phrases["from"] + ':</span><input readonly  type="text" id="nf_pf" style="border:0; color:#000; font-weight:bold;"  value="' + valuePF + '" /></div>';
    filterRestr = FilterRestrictions.GetFilter("PriceTo");
    if (filterRestr == null) {
        filterRestr = new FilterJS("", "");
    }
    var valuePT = "";    
    if (filterRestr.Value["PriceTo"] != null) {        
        valuePT = filterRestr.Value["PriceTo"];
    }
    if(valuePT==""){
        valuePT = ConvertPrice(max, null);
    }
    Builder += '<div class="nfr"><span>' + phrases["to"] + ':</span><input readonly  type="text" id="nf_pt" style="border:0; color:#000; font-weight:bold;" value="' + valuePT + '" /></div>';
    Builder += '<div id="slideprice" class="slider"></div>';
    Builder += '</div>';
    sliders_to_build["Price"] = [ConvertPrice(min, null), ConvertPrice(max, null), parseFloat(valuePF), parseFloat(valuePT), "#slideprice", "#nf_pf", "#nf_pt", "Price", "jQuery(\"#nf_pf\").val(ui.values[0]);jQuery(\"#nf_pt\").val(ui.values[1])", 'ProcessSliderChange(e, ui,"Price")'];
    return Builder;
}
function BuildPriceFilterV2Static(min, max) {

    if (min == max || min == 0 || max == 0)
        return "";
    var Builder = '<div class="nfc">';
    filterRestr = FilterRestrictions.GetFilter("NightPriceFrom");
    if (filterRestr == null) {
        filterRestr = new FilterJS("", "");
    }
    var valuePF = "";
    if (filterRestr.Value["NightPriceFrom"] != null) {
        valuePF = filterRestr.Value["NightPriceFrom"];
    }
    if (valuePF == "")
        valuePF = ConvertPrice(min, null);
    Builder += '<div class="nfhead">' + phrases["night_from"] + ':</div>';
    Builder += '<div class="nfl"><span>' + phrases["from"] + ':</span><input readonly  type="text" id="nf_pf" style="border:0; color:#000; font-weight:bold;"  value="' + valuePF + '" /></div>';
    filterRestr = FilterRestrictions.GetFilter("NightPriceTo");
    if (filterRestr == null) {
        filterRestr = new FilterJS("", "");
    }
    var valuePT = "";
    if (filterRestr.Value["NightPriceTo"] != null) {
        valuePT = filterRestr.Value["NightPriceTo"];
    }
    if (valuePT == "") {
        valuePT = ConvertPrice(max, null);
    }
    Builder += '<div class="nfr"><span>' + phrases["to"] + ':</span><input readonly  type="text" id="nf_pt" style="border:0; color:#000; font-weight:bold;" value="' + valuePT + '" /></div>';
    Builder += '<div id="slideprice" class="slider"></div>';
    Builder += '</div>';
    sliders_to_build["NightPrice"] = [ConvertPrice(min, null), ConvertPrice(max, null), parseFloat(valuePF), parseFloat(valuePT), "#slideprice", "#nf_pf", "#nf_pt", "NightPrice", "jQuery(\"#nf_pf\").val(ui.values[0]);jQuery(\"#nf_pt\").val(ui.values[1])", 'ProcessSliderChange(e, ui,"NightPrice")'];
    return Builder;
} 
function BuildPriceFilter() {

    if (FVer == 2) {
        if (Type == 'static') {
            if (LMFilters == false)
                return BuildPriceFilterV2Static(slider_bounds["NightPrice"][0], slider_bounds["NightPrice"][1]);
        } else {
            return BuildPriceFilterV2(slider_bounds["Price"][0], slider_bounds["Price"][1]);
        }
    }
    var Builder = "";
    filterRestr = FilterRestrictions.GetFilter("PriceFrom");
    if (filterRestr == null) {
        filterRestr = new FilterJS("", "");
    }
    var valuePF = "";
    var checkedPF = "";
    if (filterRestr.Value["PriceFrom"] != null) {
        checkedPF = "checked=\"true\"";
        valuePF = filterRestr.Value["PriceFrom"];
    }
    var curr = document.sortform.currencydd.options[document.sortform.currencydd.selectedIndex].text;    
    Builder += "<div class=\"headFilType\">" + phrases["price"] + "  (<b id=\"sfc\">" + curr + "</b>)</div>";
    Builder += "<div class=\"lm sfilter\"><b>" + phrases["from"] + ":</b><input onkeypress=\"return numbersOnly(event)\" type=\"text\" onchange=\"checkFilterBox('filterchPF','filtertbPF')\" onfocus=\"UnCheck('filterchPF','PriceFrom')\" class=\"price\" id=\"filtertbPF\" value=\"" + valuePF + "\" /><input id=\"filterchPF\" type=\"checkbox\" " + checkedPF + " onclick=\"FilterRestriction('PriceFrom','filtertbPF' , this)\" /></div>";

    filterRestr = FilterRestrictions.GetFilter("PriceTo");
    if (filterRestr == null) {
        filterRestr = new FilterJS("", "");
    }
    var valuePT = "";
    var checkedPT = "";
    if (filterRestr.Value["PriceTo"] != null) {
        checkedPT = "checked=\"true\"";
        valuePT = filterRestr.Value["PriceTo"];
    }
    Builder += "<div class=\"lm sfilter\"><b>" + phrases["to"] + ":</b><input onkeypress=\"return numbersOnly(event)\" type=\"text\" onchange=\"checkFilterBox('filterchPT','filtertbPT')\" onfocus=\"UnCheck('filterchPT', 'PriceTo')\" class=\"price\" id=\"filtertbPT\" value=\"" + valuePT + "\" /><input id=\"filterchPT\" type=\"checkbox\" " + checkedPT + " onclick=\"FilterRestriction('PriceTo','filtertbPT' , this)\" /></div>";
    
       
    return Builder;
}
function BuildLivingSpaceV2(min, max) {
    if (min == max || min == 0 || max == 0)
        return "";
    var Builder = '<div class="nfc">';
    filterRestr = FilterRestrictions.GetFilter("LSFrom");
    if (filterRestr == null) {
        filterRestr = new FilterJS("", "");
    }
    var valuePF = "";
    if (filterRestr.Value["LSFrom"] != null) {
        valuePF = filterRestr.Value["LSFrom"];
    }
    if (valuePF == "")
        valuePF = ConvertUnit(min);
        
    Builder += '<div class="nfhead">' + phrases["living_space"] + ':</div>';
    Builder += '<div class="nfl"><span>' + phrases["from"] + ':</span><input readonly  type="text" id="nflf" style="border:0; color:#000; font-weight:bold;"  value="' + valuePF + '" /></div>';
    filterRestr = FilterRestrictions.GetFilter("LSTo");
    if (filterRestr == null) {
        filterRestr = new FilterJS("", "");
    }
    var valuePT = "";
    if (filterRestr.Value["LSTo"] != null) {
        valuePT = filterRestr.Value["LSTo"];
    }
    if (valuePT == "") {
        valuePT = ConvertUnit(max);
    }
    Builder += '<div class="nfr"><span>' + phrases["to"] + ':</span><input readonly  type="text" id="nflt" style="border:0; color:#000; font-weight:bold;" value="' + valuePT + '" /></div>';
    Builder += '<div id="slidels" class="slider"></div>';
    Builder += '</div>';
    sliders_to_build["LS"] = [ConvertUnit(min), ConvertUnit(max), parseFloat(valuePF), parseFloat(valuePT), "#slidels", "#nflf", "#nflt", "LS", "jQuery(\"#nflf\").val(ui.values[0]);jQuery(\"#nflt\").val(ui.values[1])", 'ProcessSliderChange(e, ui,"LS")'];
    return Builder;
}
function BuildLivingSpace() {
    if (FVer == 2) {
    var tmp = BuildLivingSpaceV2(slider_bounds["LS"][0], slider_bounds["LS"][1]);
    document.getElementById('sffilter').innerHTML += tmp;
    return tmp;
    }
    var Builder = "";
    filterRestr = FilterRestrictions.GetFilter("LSFrom");
    if (filterRestr == null) {
        filterRestr = new FilterJS("", "");
    }
    var valueLSF = "";
    var checkedLSF = "";
    if (filterRestr.Value["LSFrom"] != null) {
        checkedLSF = "checked=\"true\"";
        valueLSF = filterRestr.Value["LSFrom"];
    }
    var unit = document.sortform.unitdd.options[document.sortform.unitdd.selectedIndex].text;    
    Builder += "<div class=\"headFilType\">" + phrases["living_space"] + "  (<b id=\"sfu\">"+unit+"</b>)</div>";
    Builder += "<div class=\"lm sfilter\"><b>" + phrases["from"] + ":</b><input onkeypress=\"return numbersOnly(event)\" type=\"text\" onchange=\"checkFilterBox('filterchLSF','filtertbLSF')\" onfocus=\"UnCheck('filterchLSF','LSFrom')\" class=\"price\" id=\"filtertbLSF\" value=\"" + valueLSF + "\" /><input id=\"filterchLSF\" type=\"checkbox\" " + checkedLSF + " onclick=\"FilterRestriction('LSFrom','filtertbLSF' , this)\" /></div>";
    filterRestr = FilterRestrictions.GetFilter("LSTo");
    if (filterRestr == null) {
        filterRestr = new FilterJS("", "");
    }
    var valueLST = "";
    var checkedLST = "";
    if (filterRestr.Value["LSTo"] != null) {
        checkedLST = "checked=\"true\"";
        valueLST = filterRestr.Value["LSTo"];
    }
    Builder += "<div class=\"lm sfilter\"><b>" + phrases["to"] + ":</b><input onkeypress=\"return numbersOnly(event)\" type=\"text\" onchange=\"checkFilterBox('filterchLST','filtertbLST')\" onfocus=\"UnCheck('filterchLST','LSTo')\" class=\"price\" id=\"filtertbLST\" value=\"" + valueLST + "\" /><input id=\"filterchLST\" type=\"checkbox\" " + checkedLST + " onclick=\"FilterRestriction('LSTo','filtertbLST' , this)\" /></div>";    
    document.getElementById('sffilter').innerHTML += Builder;

    
}
function addLOS(value) {
    UnCheck('filterchLOS', 'LOS');
    var input = document.getElementById('filtertbLOS')
    var los = parseInt(input.value);
    var result = los + value;
    if (result < 1) {
        result = 1
    }
    input.value = result;
    
}
function UnCheck(id, filter) {
    try {
        if (document.getElementById(id).checked) {
            RemoveFromFilters(filter)
            GetTotalApartmentCount();
        }
        document.getElementById(id).checked = false;
    } catch (E1) { }
}
function checkFilterBox(checkbox, textbox) {
	if(FVer==2)
		return;
    if (document.getElementById(textbox).value != "") {
        document.getElementById(checkbox).checked = true;

        if (textbox == 'filtertbPF')
            FilterRestriction('PriceFrom', 'filtertbPF', document.getElementById(checkbox));
        else if (textbox == 'filtertbPT')
            FilterRestriction('PriceTo', 'filtertbPT', document.getElementById(checkbox))

        if (textbox == 'filtertbLSF')
            FilterRestriction('LSFrom', 'filtertbLSF', document.getElementById(checkbox));
        else if (textbox == 'filtertbLST')
            FilterRestriction('LSTo', 'filtertbLST', document.getElementById(checkbox))           
    }
    else
        document.getElementById(checkbox).checked = false;
}
function BuildBedding(filterBedding) {
    var Builder = "";
    if (FVer == 2)
        Builder += "<div class=\"fcol\">";
    Builder += "<div class=\"headFilType\">" + phrases["bedding_beds"] + "</div>";
    var filterRestr = FilterRestrictions.GetFilter("Bedding");
    if (filterRestr == null)
        filterRestr = new FilterJS("", "");
    var bedConfig = new Array();
    var i = 0;
    for (var beds in filterBedding.Value) {
        bedConfig[i] = beds;
        i++;
    }
    bedConfig.sort(Comparer);
    for (var i=0; i<bedConfig.length;i++) {
        var tab = bedConfig[i].split('_');
        var checkedStr = "";
        if (filterRestr.Value[bedConfig[i]] != null)
            checkedStr = "checked=\"true\"";
        Builder += "<div class=\"bed sfilter\"><b>" + tab[0] + " x " + phrases["SingleBed"] + tab[1] + " x " + phrases["DoubleBed"] + "</b><input type=\"checkbox\" "+checkedStr+" onclick=\"FilterRestriction('Bedding','" + bedConfig[i] + "', this)\" value=\"" + bedConfig[i] + "\"></div>";

    }
    Builder+="</div>"
    document.getElementById('sffilter').innerHTML += Builder;
}
function BuildBeddingV2(filterBedding) {
    var Builder = "";
    if (FVer == 2) {
        Builder += "<div class=\"fcol\">";
        Builder += "<div class=\"headFilType\">" + phrases["bedding_beds"] + ":</div>";
    } else {
        Builder += "<div class=\"headFilType\">" + phrases["bedding_beds"] + "</div>";
    }
    var filterRestr = FilterRestrictions.GetFilter("BeddingV2");
    if (filterRestr == null)
        filterRestr = new FilterJS("", "");
    //var bedConfig = new Array();    
    var singlemax = 0;
    var doublemax = 0;
    for (var beds in filterBedding.Value) {
        var tab = beds.split('_');
        var currentSmax = parseInt(tab[0]);
        var currentDmax = parseInt(tab[1]);
        if(currentSmax>singlemax)
            singlemax = currentSmax;
        if (currentDmax > doublemax)
            doublemax = currentDmax;
        
    }

    Builder += "<div class=\"bed sfilter\"><b>" + phrases["min"]+"<select onchange=\"FilterRestriction('BeddingV2','Single', this)\" >";
    var selectedSingle = parseInt(filterRestr.Value["Single"]);
    var selectedDouble = parseInt(filterRestr.Value["Double"]);    
    //build single
    for (var i = 0; i <= singlemax; i++) {
        if (i == 0) {
            if (FVer == 2)
                Builder += "<option value=\"" + i + "\">" + phrases["please_select"] + "</option>";
            else
                Builder += "<option value=\"" + i + "\">-</option>";
        }
        else if (i == selectedSingle)
            Builder += "<option value=\"" + i + "\" selected=\"true\">" + i + "</option>";
        else
            Builder += "<option value=\"" + i + "\">" + i + "</option>";

    }
    Builder += "</select>" + phrases["SingleBed"] + "</b></div>";
    //build double
    Builder += "<div class=\"bed sfilter\"><b>" + phrases["min"]+"<select onchange=\"FilterRestriction('BeddingV2','Double', this)\" >";
    for (var i = 0; i <= doublemax; i++) {
        if (i == 0) {
            if (FVer == 2)
                Builder += "<option value=\"" + i + "\">" + phrases["please_select"] + "</option>";
            else
                Builder += "<option value=\"" + i + "\">-</option>";
        }
        else if (i == selectedDouble)
            Builder += "<option value=\"" + i + "\" selected=\"true\">" + i + "</option>";
        else
            Builder += "<option value=\"" + i + "\">" + i + "</option>";

    }
    Builder += "</select>" + phrases["DoubleBed"] + "</b></div>";
    Builder += "</div>";
    document.getElementById('sffilter').innerHTML += Builder;
}
function BuildIcons(filterIcons){

    var Builder = "";
    if (FVer == 2) {
        if (typeof (MapEngine) != 'undefined' && MapEngine!=null && MapEngine.IsFullScreen) {
            Builder += "<div class=\"fcol\" id=\"sf_icons\">";
        } else {
            Builder += "<div class=\"fcol2\" id=\"sf_icons\">";
        }
        Builder += "<div class=\"headFilType\">" + phrases["amenities"] + ":</div>";
    } else {
        Builder += "<div class=\"headFilType\">" + phrases["amenities"] + "</div>";
    }
    var icons = FilterRestrictions.GetFilter("Icons");    
    if (icons == null)
        icons = new FilterJS("", "");
    for (var icon in filterIcons.Value) {

        if (FVer == 2)
            Builder += "<div class=\" sfilter\"><b class=\"ic_" + icon + " ic\">&nbsp</b><input type=\"checkbox\" " + IconFilterChecked(icons, icon) + " onclick=\"FilterRestriction('Icons','" + icon + "', this)\" value=\"" + icon + "\"><b class=\"pad\">" + phrases["icon_" + icon] + "</b></div>";
        else
            Builder += "<div class=\" sfilter\"><b class=\"ic_" + icon + " ic\">&nbsp</b><b class=\"pad\">" + phrases["icon_" + icon] + "</b><input type=\"checkbox\" " + IconFilterChecked(icons, icon) + " onclick=\"FilterRestriction('Icons','" + icon + "', this)\" value=\"" + icon + "\"></div>";
    }
    if (FVer == 2)
        Builder += "</div>";
    document.getElementById('sffilter').innerHTML += Builder;
}
function GetFilterApartmentHideCount() {
    var filterApartmentHide = FilterRestrictions.GetFilter("ApartmentHide");
    if (filterApartmentHide != null && filterApartmentHide.Value != null && filterApartmentHide.GetFiltersCount() > 0) {
        var aptCounter = 0;
        var captHideArr = filterApartmentHide.Value[filterApartmentHide.Name].toString().split(';');
        for (i = 0; i < captHideArr.length; ++i) {
            var aptid = captHideArr[i].split(',');
            if (aptid[1] == qsParams["cityid"])
                aptCounter++;
        }
        return aptCounter;
    }
    else
        return 0;
}
function BuildApartmentHide(filterIcons) {
    if (document.getElementById('sffilter').innerHTML.toString().indexOf('HiddenAptsPlaceHolder') == -1) {
        var icons = FilterRestrictions.GetFilter("ApartmentHide");
        if (icons == null)
            icons = new FilterJS("", "");
        var Builder = "<div id=\"HiddenAptsPlaceHolder\" style=\"display:none\"><div class=\"hidcontainer\" onclick=\"showHiddenApartments(event)\"><div class=\"back\"><b class=\"hid\">" + phrases["hidden_apartments"] + "</b></div><div class=\"rev\"></div></div><div style=\"clear:both;\"></div>";
        document.getElementById('sffilter').innerHTML += Builder;
    }
}
function IconFilterChecked(restriction, icon) {
    var result = "";
    if (restriction.Value[icon] != null) {
        result = "checked=\"true\"";
    }
    return result;
}
function BuildFreeNetFilter(filterFreeNet) {
    var phrase = phrases["free_internet"];
    var Builder = "<div class=\"headFilType\">" + phrases["amenities"] + "</div>";
    //filterFreeNet.Value["FreeNet"] - number of apts with free net
    var freeNetFilter = FilterRestrictions.GetFilter("FreeNet");
    var checked = "";
    if (freeNetFilter != null && freeNetFilter.GetFiltersCount() > 0) {
        checked = "checked=\"true\"";
    }
    
    Builder += "<div class=\"freenetFilt sfilter\"><b>" + phrase + "</b><input type=\"checkbox\" "+checked+" onclick=\"FilterRestriction('FreeNet','FreeNet', this)\" value=\"" + filterFreeNet.Value["FreeNet"] + "\"></div>";
    document.getElementById('sffilter').innerHTML += Builder;
}
function BuildAptTypeDiv(phrase, AptCount, value, checked) {
    var checkedStr = "";
    if (checked)
        checkedStr = "checked=\"true\"";
    return "<div class=\"apttypeFilt sfilter\"><b>" + phrase + "</b>  <input type=\"checkbox\" "+checkedStr+" onclick=\"FilterRestriction('AptTypes','" + value + "', this)\" value=\"" + value + "\"></div>";

}
function BuildAptTypesFilter(filter) {
    var Builder = "";
    if (FVer == 2) {
        Builder += "<div class=\"fcol\">";
        Builder += "<div class=\"headFilType\">" + phrases["apartment_type"] + ":</div>";
    } else {
        Builder += "<div class=\"headFilType\">" + phrases["apartment_type"] + "</div>";
    }
    var filterRestr = FilterRestrictions.GetFilter("AptTypes");
    if (filterRestr == null)
        filterRestr = new FilterJS("", "");
    if (filter.Value[1] != null) {
        //	add studio
        if(filterRestr.Value[1]!=null)
            Builder += BuildAptTypeDiv(phrases["aparType_1"], filter.Value[1], 1, false);
        else
            Builder += BuildAptTypeDiv(phrases["aparType_1"], filter.Value[1], 1, true);
        
    }
    if (filter.Value[2] != null) {
        //add 1 bed
        if (filterRestr.Value[2] != null)
            Builder += BuildAptTypeDiv(phrases["aparType_2"], filter.Value[2], 2, false);
        else
            Builder += BuildAptTypeDiv(phrases["aparType_2"], filter.Value[2], 2, true);
    }
    if (filter.Value[3] != null) {
        //add 2 bed
        if (filterRestr.Value[3] != null)
            Builder += BuildAptTypeDiv(phrases["aparType_3"], filter.Value[3], 3, false);
        else
            Builder += BuildAptTypeDiv(phrases["aparType_3"], filter.Value[3], 3, true);
    }
    if (filter.Value[4] != null) {
        //	add 3 bed
        if (filterRestr.Value[4] != null)
            Builder += BuildAptTypeDiv(phrases["aparType_4"], filter.Value[4], 4, false);
        else
            Builder += BuildAptTypeDiv(phrases["aparType_4"], filter.Value[4], 4, true);
    }
    if (filter.Value[5] != null) {
        //	add 3 bed
        if (filterRestr.Value[5] != null)
            Builder += BuildAptTypeDiv(phrases["aparGroup_5"], filter.Value[5], 5, false);
        else
            Builder += BuildAptTypeDiv(phrases["aparGroup_5"], filter.Value[5], 5, true);
        
    }
    if (filter.Value[11] != null) {
        //	add 5 bed
         if (filterRestr.Value[11] != null)
             Builder += BuildAptTypeDiv(phrases["aparType_11"], filter.Value[11], 11, false);
        else
            Builder += BuildAptTypeDiv(phrases["aparType_11"], filter.Value[11], 11, true);
    }
    if (filter.Value[12] != null) {
        //	add 4 bed
         if (filterRestr.Value[12] != null)
             Builder += BuildAptTypeDiv(phrases["aparType_12"], filter.Value[12], 12, false);
        else
            Builder += BuildAptTypeDiv(phrases["aparType_12"], filter.Value[12], 12, true);
    }
    /*if(filter.Value[100]!=null)
    {
    //add 3-5 bed
    Builder+=BuildAptTypeDiv(phrases["apargroup_100"],filter.Value[100],100);
    }*/
    if (filter.Value["Multi"] != null) {
        //add multi
         if (filterRestr.Value["Multi"] != null)
             Builder += BuildAptTypeDiv(phrases["Multi"], filter.Value["Multi"], "Multi", false);
        else
            Builder += BuildAptTypeDiv(phrases["Multi"], filter.Value["Multi"], "Multi", true);
        if (typeof (MapEngine))
            window.location.href = '#comb';           
    }
    if (filter.Value["Combined"] != null) {
        //add combined
        if (filterRestr.Value["Combined"] != null)
             Builder += BuildAptTypeDiv(phrases["Combined"], filter.Value["Combined"], "Combined", false);
        else
            Builder += BuildAptTypeDiv(phrases["Combined"], filter.Value["Combined"], "Combined", true);
        if (window.location.href.indexOf('#comb') == -1 && typeof (MapEngine)) {
            window.location.href = '#comb';
        } 
    }
    if (filter.Value["XML"] != null) {
        //add XML
         if (filterRestr.Value["XML"] != null)
             Builder += BuildAptTypeDiv(phrases["XML"], filter.Value["XML"], "XML", false);
        else
            Builder += BuildAptTypeDiv(phrases["XML"], filter.Value["XML"], "XML", true);
    }
    if (FVer == 2)
        Builder += "</div>";
    document.getElementById('sffilter').innerHTML += Builder;

}
function numbersOnly(event) {
    if (!event) event = window.event;
    var charCode = (event.charCode != undefined) ? event.charCode : event.keyCode;
    if (charCode == 0) return true; //enter, escape, tab
    var keychar = String.fromCharCode(charCode);


    reg = /\d/;
    return reg.test(keychar);
}
function showHiddenApartments(event) {
    var filter = FilterRestrictions.GetFilter('ApartmentHide');
    if (filter.GetFiltersCount() > 0 && Type != 'static')
        document.getElementById('modHiddenApartmentList').innerHTML = apartmentsapart.Modules.AjaxApartmentListSearch.getHiddenApartments(filter.Value['ApartmentHide'].toString(), qsParams["cityid"], qsParams["langid"], qsParams["domainid"]).value;
    else if (filter.GetFiltersCount() > 0 && Type == 'static')
        document.getElementById('modHiddenApartmentList').innerHTML = apartmentsapart.Modules.AjaxApartmentList.getHiddenApartments(filter.Value['ApartmentHide'].toString(), qsParams["cityid"], qsParams["langid"], qsParams["domainid"]).value;
    //if(qsParams["domainid"] == 1)
    buildHiddenAptsWindow(event, 670);
    // else
    //    buildHiddenAptsWindow(event,520);
}

function addToApartmentList(aptid, cityid, html) {
    FilterRestriction('ApartmentHide', aptid + "," + cityid, 'show');
    document.getElementById('apt' + aptid).style.display = 'none';
    html.style.display = 'none';

    GetFilterForServer();
}

var movingHiddenApts = false;
var offXmail = 0;
var offYmail = 0;

function setHiddenAptsWindowPos(e) {
    if (!movingHiddenApts) return;
    if (!e) e = window.event;

    var elem = document.getElementById('hiddenApts');
    elem.style.left = e.clientX - offXmail + 'px';
    elem.style.top = e.clientY - offYmail + 'px';
}

function lockHiddenAptsWindow(e) {
    var elem = document.getElementById('hiddenApts');
    offXmail = e.clientX - elem.offsetLeft;
    offYmail = e.clientY - elem.offsetTop;

    movingHiddenApts = true;
    document.onmousemove = setHiddenAptsWindowPos;
    document.onmouseup = unlockHiddenAptsWindow;
}

function unlockHiddenAptsWindow() {
    movingHiddenApts = false;
    document.onmousemove = null;
    document.onmouseup = null;
}

function buildHiddenAptsWindow(e, width) {
    var posx = 500;
    var posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
    var elem = document.getElementById('hiddenApts');
    elem.style.width = width + 'px';
    elem.style.display = 'block';
    elem.style.left = posx + 'px';
    elem.style.top = posy + 'px';
}
function hideHiddenAptsWindow() {
    document.getElementById('hiddenApts').style.display = 'none';
}

