﻿var catid;
var showAll = false;
var openedFilters = ['con1','con2'];
var subCategories = [];
var model = [];
var marka = [];
function getElem(id, controlClientId) {
    var obj = $(controlClientId + '_' + id);
    if (obj == null) {
        obj = $('ctl00_' + id);
        if (obj == null)
            obj = $(id);
    }
    return obj;
}
function OnServiceTimeout(timeout, userContext, methodName) {alert('Operation timeout. Please try again...');}
function OnServiceError(error, userContext, methodName) { alert(error.get_message()); alert(error.get_stackTrace()); }
Array.prototype.remove = function(el) {
    var type = typeof (el);
    if (type == 'string' || type == 'number') {
        var index = this.indexOf(el);
        if (index != -1)
            this.splice(index, 1);
    }
    else {
        var c = this.length - 1;
        while (c >= 0) {
            if (this[c][0] == el[0] && this[c][1] == el[1])
                this.splice(c, 1);
            c--;
        }
    }
}
String.prototype.isNullOrEmpty = function() {return this == null ? true : this == '';}
function Model(pId, id, obj) {
    var newArray = [pId, id];
    if (!obj.checked) {
        obj.nextSibling.className = '';
        model.remove(newArray);
        subCategories.remove(pId);
        marka.remove(pId);
    }
    else {
        obj.nextSibling.className = 'cur';
        model.push(newArray);
        if (subCategories.indexOf(pId) == -1)
            subCategories.push(pId);
    }
    FunctionCaller('Filter');
}
function Model2(pId, id, obj) {
    var newArray = [pId, id];
    if (!obj.checked) {
        obj.nextSibling.className = '';
        model.remove(newArray);
        marka.remove(pId);
    }
    else {
        obj.nextSibling.className = 'cur';
        model.push(newArray);
    }
    FunctionCaller('Filter');
}
function CheckChildrens(pId, parent, checked) {
    if (checked && marka.indexOf(pId) == -1)
        marka.push(pId);
    else
        marka.remove(pId);
    var el = parent.getElementsByTagName("input");
    for (var i = 0; i < el.length; i++) {
        el[i].nextSibling.className = checked ? "cur" : "";
        el[i].checked = checked;
        var newArray = [pId, el[i].id.split('_')[1]];
        if (!checked) {
            model.remove(newArray);
            subCategories.remove(pId);
        }
        else {
            model.push(newArray);
            if (subCategories.indexOf(pId) == -1)
                subCategories.push(pId);
        }
    }
    FunctionCaller('Filter');
}
function OpenFilter(obj, con, result) {
    var c = getElem(con, fs);
    var r = getElem(result, fs);
    if (obj.parentNode.className != 'd2') {
        obj.parentNode.className = 'd2';
        c.style.display = 'block';
        r.style.display = 'none';
        if (openedFilters.indexOf(con) == -1)
            openedFilters.push(con);
    }
    else {
        obj.parentNode.className = 'd0';
        c.style.display = 'none';
        var l = document.all ? r.innerText.length : r.textContent.length;
        r.style.display = l > 0 ? 'block' : 'none';
        openedFilters.remove(con);
    }
    doSearch();
}
function OpenFilter2(o, con, result) {
    var obj = getElem(o, fs);
    var c = getElem(con, fs);
    var r = getElem(result, fs);
    if (obj.className != 'h3') {
        obj.className = 'h3';
        c.style.display = 'block';
        r.style.display = 'none';
        if (openedFilters.indexOf(o) == -1)
            openedFilters.push(o);
    }
    else {
        obj.className = 'h2';
        c.style.display = 'none';
        var l;
        l = document.all ? r.innerText.length : r.textContent.length;
        r.style.display = l > 0 ? 'block' : 'none';
        openedFilters.remove(o);
    }
    doSearch();
}
function OpenSubFilter(o, con, result) {
    var c = getElem(con, fs);
    var obj = getElem(o, fs);
    var r = getElem(result, fs);
    var parent = obj.parentNode;
    if (obj.className != 'h3') {
        obj.className = 'h3';
        parent.style.display = 'block';
        c.style.display = 'block';
        r.style.display = 'none';
        if (openedFilters.indexOf(o) == -1)
            openedFilters.push(o);
    }
    else {
        obj.className = 'h2';
        c.style.display = 'none';
        var l = document.all ? r.innerText.length : r.textContent.length;
        if (l > 0) {
            parent.style.display = 'none';
            r.style.display = 'block';
        }
        else {
            parent.style.display = 'block';
            r.style.display = 'none';
        }
        openedFilters.remove(o);
    }
    doSearch();
}
function CatSelected(catId, onload) {/**/
    if (!onload) {/**/
        catid = catId;
        model = [];
        drivebody = [];
        fuel = [];
        fuel = [];
        drive = [];
        marka = [];
        getElem('priceMin', fs).value = '';
        getElem('priceMax', fs).value = '';
        getElem('yearMin', fs).value = '';
        getElem('yearMax', fs).value = '';
        getElem('engineMin', fs).value = '';
        getElem('engineMax', fs).value = '';
        getElem('kmMin', fs).value = '';
        getElem('kmMax', fs).value = '';
    }/**/
    FunctionCaller('Filter');
}
function SetFilterPosition() {
    var myHeight = 0;
    var docEl = document.documentElement;
    var docBody = document.body;
    if (typeof (window.innerWidth) == 'number')
        myHeight = window.innerHeight;
    else if (docEl && (docEl.clientWidth || docEl.clientHeight))
        myHeight = docEl.clientHeight;
    else if (docBody && (docBody.clientWidth || docBody.clientHeight))
        myHeight = docBody.clientHeight;
    var scrOfX = 0, scrOfY = 0;
    if (typeof (window.pageYOffset) == 'number') {
        scrOfY = window.pageYOffset;
        scrOfX = window.pageXOffset;
    }
    else if (docBody && (docBody.scrollLeft || docBody.scrollTop)) {
        scrOfY = docBody.scrollTop;
        scrOfX = docBody.scrollLeft;
    }
    else if (docEl && (docEl.scrollLeft || docEl.scrollTop)) {
        scrOfY = docEl.scrollTop;
        scrOfX = docEl.scrollLeft;
    }
    var f = $('found');
    var filter = $('scFilter');
    var cancel = $('cancel');
    if ((filter.offsetHeight + 212 + f.offsetHeight + 20) > myHeight) {
        if ((scrOfY + myHeight) > (filter.offsetHeight + 212 + f.offsetHeight + 20)) {
            f.style.position = 'static';
            cancel.style.position = 'absolute';
            cancel.style.top = '';
        }
        else {
            cancel.style.position = f.style.position = 'fixed';
            cancel.style.zIndex = f.style.zIndex = '100';
            f.style.top = (myHeight - (f.offsetHeight)) + 'px';
            cancel.style.top = (myHeight - (f.offsetHeight)) + 'px';
        }
    }
    else {
        f.style.position = 'static';
        cancel.style.position = 'absolute';
        cancel.style.top = '';
    }
    
  if(document.getElementById('notepad'))
  {
    document.getElementById('notepad').style.top  = (myHeight - (document.getElementById('notepad').offsetHeight + 8))  + 'px';
  }
}
function CreateResults() {
    var priceMin = getElem('priceMin', fs).value;
    var priceMax = getElem('priceMax', fs).value;
    var result2 = getElem('result2', fs);
    if (!priceMin.isNullOrEmpty() || !priceMax.isNullOrEmpty()) {
        var min = priceMin.isNullOrEmpty()
                    ? ''
                    : 'от ' + priceMin + ' ';
        var max = priceMax.isNullOrEmpty()
                    ? ''
                    : 'до ' + priceMax + ' ';
        result2.innerHTML = '<div><a href="javascript:RemovePrice()"><img align="absmiddle" style="padding: 4px 6px 5px;" src="' + resetImage + '"/></a><b>Цена:</b> ' + min + max + getElem('currency', fs).value + '</div>';
    }
    else
        result2.innerHTML = '';
    var allresult = getElem('result3', fs);
    var yearMin = getElem('yearMin', fs).value;
    var yearMax = getElem('yearMax', fs).value;
    var engineMin = getElem('engineMin', fs).value;
    var engineMax = getElem('engineMax', fs).value;
    var kmMin = getElem('kmMin', fs).value;
    var kmMax = getElem('kmMax', fs).value;
    if (allresult.hasChildNodes()) {
        var nodes = allresult.getElementsByTagName("div");
        var c = nodes.length - 1;
        while (c >= 0) {
            switch (nodes[c].getAttribute("id")) {
                case "year": case "engine": case "km":
                    allresult.removeChild(nodes[c]);
                    break;
                default:
                    break;
            }
            c--;
        }
    }
    var d1, d2, d3;
    if (!yearMin.isNullOrEmpty() || !yearMax.isNullOrEmpty()) {
        d1 = document.createElement("div");
        CreateYear(d1, yearMin, yearMax);
        d1 = '<div id="year">' + d1.innerHTML + '</div>';
    }
    if (!engineMin.isNullOrEmpty() || !engineMax.isNullOrEmpty()) {
        d2 = document.createElement("div");
        CreateEngine(d2, engineMin, engineMax);
        d2 = '<div id="engine">' + d2.innerHTML + '</div>'
    }
    if (!kmMin.isNullOrEmpty() || !kmMax.isNullOrEmpty()) {
        d3 = document.createElement("div");
        CreateKm(d3, kmMin, kmMax);
        d3 = '<div id="km">' + d3.innerHTML + '</div>';
    }
    if (d1 != null && d2 != null && d3 != null)
        allresult.innerHTML = d1 + d2 + d3 + allresult.innerHTML;
    else if(d1 != null && d2 != null)
        allresult.innerHTML = d1 + d2 + allresult.innerHTML;
    else if(d1 != null && d3 != null)
        allresult.innerHTML = d1 + d3 + allresult.innerHTML;
    else if (d2 != null && d3 != null)
        allresult.innerHTML = d2 + d3 + allresult.innerHTML;
    else if (d1 != null)
        allresult.innerHTML = d1 + allresult.innerHTML;
    else if(d2 != null)
        allresult.innerHTML = d2 + allresult.innerHTML;
    else if (d3 != null)
        allresult.innerHTML = d3 + allresult.innerHTML;
}
function CreateYear(div, yearMin, yearMax){
    div.setAttribute("id", "year");
    var r1 = getElem('con3_0_r', fs);
    if (!yearMin.isNullOrEmpty() || !yearMax.isNullOrEmpty()) {
        var min = yearMin.isNullOrEmpty()
                    ? ''
                    : 'от ' + yearMin + ' ';
        var max = yearMax.isNullOrEmpty()
                    ? ''
                    : 'до ' + yearMax + ' ';
        r1.innerHTML = '<a href="javascript:RemoveYear()"><img align="absmiddle" style="padding: 4px 6px 5px;" src="' + resetImage + '"/></a>' + min + max + 'лет';
        div.innerHTML = '<a href="javascript:RemoveYear()"><img align="absmiddle" style="padding: 4px 6px 5px;" src="' + resetImage + '"/></a><b>Возраст:</b> ' + min + max + 'лет';
    }
    else {
        div.innerHTML = '';
        r1.style.display = 'none';
    }
}
function CreateEngine(div, engineMin, engineMax) {
    div.setAttribute("id", "engine");
    var r1 = getElem('con3_1_r', fs);
    if (!engineMin.isNullOrEmpty() || !engineMax.isNullOrEmpty()) {
        var min = engineMin.isNullOrEmpty()
                    ? ''
                    : 'от ' + engineMin + ' ';
        var max = engineMax.isNullOrEmpty()
                    ? ''
                    : 'до ' + engineMax + ' ';
        r1.innerHTML = '<a href="javascript:RemoveEngine()"><img align="absmiddle" style="padding: 4px 6px 5px;" src="' + resetImage + '"/></a>' + min + max + 'cm3';
        div.innerHTML = '<a href="javascript:RemoveEngine()"><img align="absmiddle" style="padding: 4px 6px 5px;" src="' + resetImage + '"/></a><b>Обьем двигателя:</b> ' + min + max + 'cm3';
    }
    else {
        div.innerHTML = '';
        r1.style.display = 'none';
    }
}
function CreateKm(div, kmMin, kmMax) {
    div.setAttribute("id", "km");
    var r1 = getElem('con3_2_r', fs);
    if (!kmMin.isNullOrEmpty() || !kmMax.isNullOrEmpty()) {
        var min = kmMin.isNullOrEmpty()
                    ? ''
                    : 'от ' + kmMin + ' ';
        var max = kmMax.isNullOrEmpty()
                    ? ''
                    : 'до ' + kmMax + ' ';
        r1.innerHTML = '<a href="javascript:RemoveKm()"><img align="absmiddle" style="padding: 4px 6px 5px;" src="' + resetImage + '"/></a>' + min + max + 'км';
        div.innerHTML = '<a href="javascript:RemoveKm()"><img align="absmiddle" style="padding: 4px 6px 5px;" src="' + resetImage + '"/></a><b>Пробег:</b> ' + min + max + 'км';
    }
    else {
        div.innerHTML = '';
        r1.style.display = 'none';
    }
}
function Check(arr, obj, val) {
    if (!obj.checked) {
        obj.nextSibling.className = '';
        arr.remove(val);
    }
    else {
        obj.nextSibling.className = 'cur';
        if(arr.indexOf(val) == -1)
            arr.push(val);
    }
    FunctionCaller('Filter');
}
function textBoxTextChanged(obj) {
    FunctionCaller('FilterOnBlur');
}
var filterRequestQueue = [];
function FunctionCaller(funcName) {
    var guid = "";
    for (var i = 0; i < 32; i++)
        guid += parseInt(Math.random() * 16).toString(16);
    filterRequestQueue.push(guid);
    var called = false;
    var timerId = window.setInterval(
        function() {
            if (called)
                window.clearInterval(timerId);
            else {
                called = true;
                CallFunctionQueue(funcName, guid);
            }
        }, 1000);    
}
function CallFunctionQueue(funcName, guid, objValue) {
    var guidIndex = filterRequestQueue.indexOf(guid);
    if (guidIndex == filterRequestQueue.length - 1)
        switch (funcName.toUpperCase()) {
            case "FILTER":
                Filter();
                break;       
            case "FILTERONBLUR":
                FilterOnBlur();
                break;       
        }
    filterRequestQueue.splice(guidIndex, 1);
}
if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(obj) {
        var len = this.length;
        for (var i = 0; i < len; i++) {
            if (this[i] === obj) {
                return i;
            }
        }
        return -1;
    };
}
