var isMSIE = document.attachEvent != null;
var isGecko = !document.attachEvent && document.addEventListener;
var DraggingItem = new Object();
var isLeft = 0;
var t;
var sliders = {};
var slidersready = 0;

function slider(id) {
   this.id = id;
   this.trackDelimeters = null;
   this.cons = null;
   this.startLeft = 0;
   this.startRight = 164;
   this.conLeft = 0;
   this.conRight = 1;
   this.scaleWidth = 1000;
   this.arrow = false;
}

function StartDrag(c, f, d) {
//    clearTimeout(_bt);
//    mvc.module("filter").hideCounter();
//    clearTimeout(t);
    DraggingItem.This = f;
    DraggingItem.AfterAction = d;
    var e = DraggingItem.This.id.substring(1);
    var a = new Object();
    if (DraggingItem.This.id.substring(0, 1) == "R") {
        isLeft = 0
    } else {
        isLeft = 1
    }
    if (isMSIE) {
        a.x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
        a.y = DraggingItem.This.style.top
    }
    if (isGecko) {
        a.x = c.clientX + window.scrollX;
        a.y = DraggingItem.This.style.top
    }
    DraggingItem.cursorStartX = a.x;
    DraggingItem.cursorStartY = a.y;
    var b = 0;
    if (!isLeft) {
        b = 13
    }
    DraggingItem.StartLeft = getAbsolutePosX(DraggingItem.This) - getAbsolutePosX(document.getElementById("track" + e)) - b;
    DraggingItem.StartTop = parseInt(DraggingItem.This.style.top);
    if (isNaN(DraggingItem.StartLeft)) {
        DraggingItem.StartLeft = 0
    }
    if (isNaN(DraggingItem.StartTop)) {
        DraggingItem.StartTop = 0
    }
    if (isMSIE) {
        document.attachEvent("onmousemove", ProceedDrag);
        document.attachEvent("onmouseup", StopDrag);
        window.event.cancelBubble = true;
        window.event.returnValue = false
    }
    if (isGecko) {
        document.addEventListener("mousemove", ProceedDrag, true);
        document.addEventListener("mouseup", StopDrag, true);
        c.preventDefault()
    }
    setConstrains(e)
}
function getAbsolutePos(b) {
    var c = {
        x: b.offsetLeft,
        y: b.offsetTop
    };
    if (b.offsetParent) {
        var a = getAbsolutePos(b.offsetParent);
        c.x += a.x;
        c.y += a.y
    }
    return c
}
function getAbsolutePosX(a) {
    var b = a.offsetLeft;
    if (a.offsetParent) {
        b += getAbsolutePosX(a.offsetParent)
    }
    return b
}
function ProceedDrag(c) {
    var a = new Object();
    var b = DraggingItem.This.id.substring(1);
    if (isMSIE) {
        a.x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
        a.y = DraggingItem.This.style.top
    }
    if (isGecko) {
        a.x = c.clientX + window.scrollX;
        a.y = DraggingItem.This.style.top
    }
    var e = DraggingItem.StartLeft + a.x - DraggingItem.cursorStartX;
    var f = sliders["s" + b];
    startLeft = f.startLeft;
    startRight = f.startRight;
    conLeft = f.conLeft;
    conRight = f.conRight;
    if (isLeft) {
        if (e <= startLeft - 13) {
            e = startLeft - 13
        }
        if (e >= conRight) {
            e = conRight
        }
        drawData("inp-fr", e + 13, b)
    } else {
        e = e + 13;
        if (e >= startRight) {
            e = startRight
        }
        if (e <= conLeft) {
            e = conLeft
        }
        drawData("inp-to", e, b)
    }
    DraggingItem.This.style.left = e + "px";
    var d = DraggingItem.This.style.top;
    setArea(b, e);
    if (isMSIE) {
        window.event.cancelBubble = true;
        window.event.returnValue = false
    }
    if (isGecko) {
        c.preventDefault()
    }
    if (sliders["s" + b].shortname == "ImageWidth") {
        checkImageWidth(b);
    }
}
function StopDrag(c) {
    if (isMSIE) {
        document.detachEvent("onmousemove", ProceedDrag);
        document.detachEvent("onmouseup", StopDrag)
    }
    if (isGecko) {
        document.removeEventListener("mousemove", ProceedDrag, true);
        document.removeEventListener("mouseup", StopDrag, true)
    }
    if (DraggingItem.AfterAction) {
        DraggingItem.AfterAction(DraggingItem.This)
    }

    var d = DraggingItem.This.id.substring(1,4);
    if(d=='999'){
        calcPreResult($(DraggingItem.This));
    }
/*
     var b = "L";
    (!isLeft) ? b = "R" : false;
    mvc.map("filter").obj([DraggingItem.This.id.substring(1)]).prop("side", b);
    var a = setTimeout(function (e) {
        setjscDiapazon(d)
    }, 200)
    */
}
function PutBack(a) {
    a.style.zIndex = 13
}
function initSliders() {
    for (i in sliders) {
        setConstrains(sliders[i].id);
        definePixelDiapazons(sliders[i].id);
        defineDiapazons(sliders[i].id);
        defineScales(sliders[i].id);
        if (sliders[i].shortname != "Price" && !sliders[i].arrow) {
            setVirtScales(sliders[i].id);
            drawVirtScales(sliders[i].id)
        }
        drawScales(sliders[i].id)
    }
    if(document.getElementById("inp-fr17000")) {
        checkImageWidth("17000");
    }
    slidersready = 1
}
function setVirtScales(f) {
    var d = sliders["s" + f];
    var c = d.cons[1] - d.cons[0];
    var b = Math.floor(c);
    if (b <= 7) {
        var a = b - 1
    } else {
        if (b > 7 && b <= 15) {
            var a = 5
        } else {
            var a = 3
        }
    }
    d.virtScales = new Array();
    for (var e = 0; e <= a - 1; e++) {
        d.virtScales[e] = Math.floor(c * (e + 1) / (a + 1)) + d.cons[0]
    }
}
function drawVirtScales(e) {
    var c = sliders["s" + e];
    for (j = 0; j < c.virtScales.length; j++) {
        var f = c.virtScales[j];
        if (Math.floor(f * 100) != f * 100) {
            f = Math.floor(f * 100) / 100
        }
        var a = Math.floor((c.virtScales[j] - c.cons[0]) / c.scales[0]) + 1;
        var d = '<div class="stroke" style="height:5px; left:' + a + 'px; "><img src="/images/null.gif" width="1" height="1"/></div><div class="stroke-num" style="left:' + a + 'px; top:0px; ">' + f + "</div>";
        var b = document.getElementById("track" + e);
        $("#track" + e).prepend(d)
    }
}
function setConstrains(a) {
    sliders["s" + a].conLeft = getAbsolutePosX(document.getElementById("L" + a)) - getAbsolutePosX(document.getElementById("track" + a)) + 13;
    sliders["s" + a].conRight = getAbsolutePosX(document.getElementById("R" + a)) - getAbsolutePosX(document.getElementById("track" + a)) - 13;
    sliders["s" + a].scaleWidth = sliders["s" + a].startRight - sliders["s" + a].startLeft
}
function drawData(c, b, d, a) {
    if (sliders["s" + d].minId && isLeft) {
        N = sliders["s" + d].minId
    } else {
        if (sliders["s" + d].minId && !isLeft) {
            N = sliders["s" + d].maxId
        } else {
            N = d
        }
    }
    if (a) {
        document.getElementById(c + N).innerHTML = b
    } else {
        document.getElementById(c + N).value = calculateValueFromPosition(b, d)
    }
}
function setSliderKey(a, d, c, b) {
    if (b.keyCode == 13) {
        setSlider(a, d, c);
        return false
    }
}
function setSlider(h, a, c, f) {
    var d = String(c.value).replace(/ /g, "");
    if (String(Number(d)) == "NaN") {
        c.value = "";
        return false
    }
    var b = a;
    var k = sliders["s" + b];
    var g = sliders["s" + b].cons.length;
    placeSlider(h, a, d);
    if (h == "L") {
        isLeft = 1;
        if (k.shortname == "Price") {
            var e = "inp-to" + k.maxId
        } else {
            var e = "inp-to" + b
        }
        if (Number(d) > Number(document.getElementById(e).value) && document.getElementById(e).value != "") {
            document.getElementById(e).value = d;
            placeSlider("R", b, document.getElementById(e).value)
        }
    } else {
        isLeft = 0;
        if (k.shortname == "Price") {
            var e = "inp-fr" + k.minId
        } else {
            var e = "inp-fr" + b
        }
        if (Number(d) < Number(document.getElementById(e).value) && d != "" && document.getElementById(e).value != "") {
            document.getElementById(e).value = d;
            placeSlider("L", b, document.getElementById(e).value)
        }
    }
    setArea(b);
    c.value = d;
//    mvc.map("filter").obj(b).prop("side", h);
//    setjscDiapazon(b);
    if (sliders["s" + b].shortname == "ImageWidth") {
        checkImageWidth(b);
    }
}
function placeSlider(c, e, b) {
    var d = sliders["s" + e];
    var a = calculatePosFromValue(c, e, b);
    if (b == "" && c == "L") {
        a = 0
    } else {
        if (b == "" && c == "R") {
            a = d.scaleWidth
        }
    }
    if (c == "L") {
        a = a - 13
    }
    document.getElementById(c + e).style.left = a + "px"
}
function setArea(h, a) {
    var e = document.getElementById("area" + h);
    var f = document.getElementById("L" + h);
    var g = document.getElementById("R" + h);
    var d = getAbsolutePosX(g) - getAbsolutePosX(f) - 13 + 1;
    if (d < 0) {
        d = 1
    }
    e.style.width = d + "px";
    e.style.left = parseInt(f.style.left) + (13 - 1) + "px";
    if (isLeft) {
        e.style.left = parseInt(f.style.left) + (13 - 1) + "px"
    }
    /*
    var c = document.getElementById("LModelDiap" + h);
    var b = document.getElementById("RModelDiap" + h);
    if (sliders["s" + h].minModelPxDiap == 0 && sliders["s" + h].maxModelPxDiap == 0) {
        c.style.width = "0px";
        b.style.width = d + "px"
    }

    if (13 + $("#L" + h).position().left < sliders["s" + h].minModelPxDiap) {
        c.style.width = sliders["s" + h].minModelPxDiap - $("#L" + h).position().left - 13 - 1 + "px"
    } else {
        c.style.width = "0px"
    }

    if ($("#R" + h).position().left > sliders["s" + h].maxModelPxDiap) {
        if ($("#R" + h).position().left - sliders["s" + h].maxModelPxDiap - 2 < 0) {
            b.style.width = "0px"
        } else {
            b.style.width = $("#R" + h).position().left - sliders["s" + h].maxModelPxDiap - 2 + "px"
        }
    } else {
        b.style.width = "0px"
    }
    */
}
function setModelDiapazon(d) {
    var b = calculatePosFromValue("L", d, sliders["s" + d].minModelDiap);
    var a = calculatePosFromValue("L", d, sliders["s" + d].maxModelDiap);
    sliders["s" + d].minModelPxDiap = b;
    sliders["s" + d].maxModelPxDiap = a;
    document.getElementById("modelArea" + d).style.left = b + "px";
    var c = a - b;
    document.getElementById("modelArea" + d).style.width = c + "px";
    setTimeout("setArea(" + d + ")", 13)
}
function trackClick(d, f) {
    var g = 0;
    if (isMSIE) {
        g = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft
    }
    if (isGecko) {
        g = d.clientX + window.scrollX
    }
    var a = $("#L" + f).offset().left;
    var c = $("#R" + f).offset().left;
    if (Math.abs(a - g) < Math.abs(c - g)) {
        var e = $("#L" + f).position().left - (a - g);
        var b = f;
        if (sliders["s" + f].shortname == "Price") {
            b = sliders["s" + f].minId
        }
        document.getElementById("inp-fr" + b).value = calculateValueFromPosition(e, f);
        setSlider("L", f, document.getElementById("inp-fr" + b), true)
    } else {
        var e = $("#R" + f).position().left - (c - g);
        var b = f;
        if (sliders["s" + f].shortname == "Price") {
            b = sliders["s" + f].maxId
        }
        document.getElementById("inp-to" + b).value = calculateValueFromPosition(e, f);
        setSlider("R", f, document.getElementById("inp-to" + b), true)
    }
    if (sliders["s" + f].shortname == "ImageWidth") {
        checkImageWidth(f);
    }
}
function calculatePosFromValue(g, b, f) {
    var k = Number(String(f).replace(/ /g, ""));
    var d = b;
    var m = sliders["s" + d];
    if (m.shortname == "ImageWidth" || m.shortname == "Distance"){
        k/=100;
    }
    var c = 0;
    for (var e in m.cons) {
        if (m.cons[e] > k) {
            c = e - 1;
            break
        }
    }
    var a = 0;
    if (c > 0) {
        a = m.PD[c - 1]
    }
    var l = 0;
    if (c > -1) {
        l = Math.round((k - m.cons[c]) / m.scales[c])
    }
    var h = a + l;
    if (h > m.PD[m.PD.length - 1]) {
        h = m.PD[m.PD.length - 1]
    }
    return h
}
function switchInput(d) {
    var a = document.getElementById(d).parentNode.parentNode.getElementsByTagName("span");
    var e = document.getElementById(d).parentNode.parentNode.getElementsByTagName("input");
    for (var c = 0; c < a.length; c++) {
        if (a[c].className == "input-switch") {
            a[c].style.display = "none"
        }
    }
    for (var c = 0; c < e.length; c++) {
        e[c].style.display = "inline"
    }
    var f = document.getElementById(d);
    var g = f.value;
    var b = document.getElementById("_" + d);
    if (f.style.display == "inline") {
        f.focus();
        f.select()
    } else {
        f.style.display = "none";
        b.style.display = "inline"
    }
}
function calculateValueFromPosition(k, d) {
    var h = 0;
    var e = sliders["s" + d];

    if (k == 0) {
        return ""
    } else {
        if (k == e.scaleWidth) {
            return ""
        }
    }
    for (var f = 0; f < e.PD.length; f++) {
        if (k > e.PD[f]) {
            h = f + 1
        }
    }
    if (h == 0) {
        var a = k
    } else {
        var a = k - e.PD[h - 1]
    }
    var g = Math.round((e.scales[h] * a + e.cons[h]));
    if (e.precision > 0) {
        g = Math.round((e.scales[h] * a + e.cons[h]) * Math.pow(10, e.precision)) / Math.pow(10, e.precision)
    }
    if (String(g).length > 3) {
        var b = String(g).substring(String(g).length - 3);
        b = String(b).substring(0, 1);
        if (b > 4) {
            b = 1
        } else {
            b = 0
        }
    } else {
        b = 0
    }
    var c = 1;
    if (g < 0) {
        c = -1
    }
    g = g * c;
    if (e.precision == 0) {
        g = Math.round(g / Math.pow(10, (String(Math.floor(g)).length - 2))) * Math.pow(10, (String(Math.floor(g)).length - 2))
    }
    g = g * c;
    if (k + 1 == e.PD[h]) {
        g = e.cons[h + 1]
    } else {
        if (k == e.PD[h] && h + 2 == e.cons.length) {
            g = e.cons[h + 1]
        }
    }
    if (e.shortname == "ImageWidth" || e.shortname == "Distance"){
        g=Math.round(g*100);
    }
    return g
}
/*
function setjscDiapazon(b) {
    var a = sliders["s" + b];
    if (a.minId) {
        var e = String(document.getElementById("inp-fr" + a.minId).value);
        var d = String(document.getElementById("inp-to" + a.maxId).value);
        var c = e + "," + d
    } else {
        var c = document.getElementById("inp-fr" + b).value + "," + document.getElementById("inp-to" + b).value
    }

    if (String(c) == ",") {
        mvc.map("filter").obj(b).prop("haschecked", "false")
    } else {
        mvc.map("filter").obj(b).prop("haschecked", "true")
    }
    mvc.map("filter").obj(b).prop("diapazon", c)

}  */
function definePixelDiapazons(d) {
    var b = sliders["s" + d];
    var c = 0;
    PD = new Array();
    for (var a = 0; a < b.trackDelimeters.length; a++) {
        PD[a] = Math.floor(b.scaleWidth * b.trackDelimeters[a]) + 1 + c;
        c = PD[a]
    }
    b.PD = PD;
    b.PD[b.PD.length - 1] = b.scaleWidth
}
function defineDiapazons(c) {
    var b = sliders["s" + c];
    diapazons = new Array();
    for (var a = 0; a <= b.cons.length - 2; a++) {
        diapazons[a] = b.cons[a + 1] - b.cons[a]
    }
    b.diapazons = diapazons
}
function defineScales(d) {
    var b = sliders["s" + d];
    var c = new Array();
    for (var a = 0; a < b.diapazons.length; a++) {
        c[a] = (diapazons[a]) / (b.scaleWidth * b.trackDelimeters[a])
    }
    b.scales = c
}
function drawScales(c) {
    var a = document.getElementById("track" + c);
    var b = sliders["s" + c].PD.length;
    for (i = 0; i < b; i++) {
        $("#track" + c).prepend(generateStroke(c, i))
    }
}
function generateStroke(g, d) {
    var c = sliders["s" + g];
    var b = "";
    var a = "";
    if ((c.shortname == "Price" || c.arrow ) && d == 0) {
        b = "<"
    } else {
        if (d == 0) {
            b = c.cons[d];
            if (Math.floor(b * 100) != b * 100) {
                b = Math.floor(b * 100) / 100
            }
        }
    }
    if ((c.shortname == "Price" || c.arrow)  && d == (c.PD.length - 1)) {
        a = ">"
    } else {
        a = c.cons[d + 1];
        if (Math.floor(a * 100) != a * 100) {
            a = Math.floor(a * 100) / 100
        }
    }
    var h = c.diapazons.length - 1;
    if (d == h) {
        classN = "stroke-num2"
    } else {
        classN = "stroke-num"
    }
    var f = "";
    if (d == 0) {
        f = '<div class="stroke" style="left:0px; height:9px; z-index:98"><img src="/images/null.gif" width="1" height="1"/></div><div class="stroke-num" style=" left:0px; ">' + b + "</div>"
    }
    var e = c.PD[d];
    f = f + '<div class="stroke" style="height:9px; left:' + e + 'px; z-index:98 "><img src="/images/null.gif" width="1" height="1"/></div><div class="' + classN + '" style="left:' + Math.floor(e) + 'px; top:0px; ">' + a + "</div>";
    return f
}

function checkImageWidth(b){
    var i = "17001";
    if(document.getElementById("inp-fr"+b).value == "" && document.getElementById("inp-to"+b).value == ""){
        document.getElementById("inp-fr"+i).disabled = 1;
        document.getElementById("inp-to"+i).disabled = 1;
        document.getElementById("inp-fr"+i).value = "";
        document.getElementById("inp-to"+i).value = "";
        document.getElementById("area"+i).style.display = "none";
        document.getElementById("L"+i).style.display = "none";
        document.getElementById("R"+i).style.display = "none";
    } else if(document.getElementById("inp-fr"+i).disabled == 1){
        document.getElementById("inp-fr"+i).disabled = 0;
        document.getElementById("inp-to"+i).disabled = 0;
        document.getElementById("area"+i).style.display = "block";
        document.getElementById("L"+i).style.display = "block";
        document.getElementById("R"+i).style.display = "block";

        document.getElementById("inp-fr"+i).value = calculateValueFromPosition($("#L" + i).position().left+13, i);
        document.getElementById("inp-to"+i).value = calculateValueFromPosition($("#R" + i).position().left, i);
    }
};
