﻿var slidersData = new Array(); 
var initWithSetVals = false;

function dsInit(sliderData)
{
    //alert("dsInit");
    slidersData.push(sliderData);
    
    $('#' + sliderData.ids.leftImageId ).draggable({ axis: 'x', containment: 'parent', opacity: 0.35 });
    $('#' + sliderData.ids.rightImageId).draggable({ axis: 'x', containment: 'parent', opacity: 0.35 });
    
    $('#' + sliderData.ids.leftImageId  ).bind( "dragstop", function(event, ui) { dsDragStop(sliderData, true, true, true);  } );
    $('#' + sliderData.ids.rightImageId ).bind( "dragstop", function(event, ui) { dsDragStop(sliderData, false, true, true); } );
    $('#' + sliderData.ids.leftImageId  ).bind( "drag",     function(event, ui) { dsDrag(sliderData, true, true, false);  } );
    $('#' + sliderData.ids.rightImageId).bind("drag", function (event, ui) { dsDrag(sliderData, false, true, false); });

    $('#' + sliderData.ids.TbVanId).keyup(function (event) { dsTextKeyUp(sliderData, true, event); });
    $('#' + sliderData.ids.TbTotId).keyup(function (event) { dsTextKeyUp(sliderData, false, event); });
      
    $('#' + sliderData.ids.TbVanId).change(function(event) { dsSet(sliderData, true); drawResults(); }); 
    $('#' + sliderData.ids.TbTotId).change(function(event) { dsSet(sliderData, false); drawResults(); });
    
    $('#' + sliderData.ids.minTextId).html(sliderData.settings.minValue);
    $('#' + sliderData.ids.maxTextId).html(sliderData.settings.maxValue);

    if ($('#' + sliderData.ids.TbVanId).val() == "0")
    {
        $('#' + sliderData.ids.TbVanId).val("");
    }

    if ($('#' + sliderData.ids.TbTotId).val() == "0")
    {
        $('#' + sliderData.ids.TbTotId).val("");
    }

    if ($('#' + sliderData.ids.TbVanId).val() == "" || $('#' + sliderData.ids.TbTotId).val() == "")
    {
        if ($('#' + sliderData.ids.TbVanId).val() == "")
        {
            var tLeft = dsConvertValToPix(sliderData, sliderData.values.slideLeft);
            $("#" + sliderData.ids.leftImageId).css("left", tLeft + "px");
            $('#' + sliderData.ids.TbVanId).val(sliderData.values.slideLeft);
            sliderData.settings.leftTextBoss = true;
        }

        if ($('#' + sliderData.ids.TbTotId).val() == "")
        {
            var tRight = dsConvertValToPix(sliderData, sliderData.values.slideRight);
            $("#" + sliderData.ids.rightImageId).css("left", tRight + "px");
            $('#' + sliderData.ids.TbTotId).val(sliderData.values.slideRight);
            sliderData.settings.rightTextBoss = true;
        }

        setTimeout("drawResults(true);", 100);

        initWithSetVals = false;
        dsDraw(sliderData, true, true);
    }
    else 
    {
        initWithSetVals = true;
        dsSet(sliderData, true);
    }
}

var dsLastKeyUpData = null;
var dsLastKeyUpLeft = false;
var dsKeyUpWait = 15;
var dsKeyUpTimer = null;

function dsTextKeyUp(sliderData, setLeft, event)
{
    dsLastKeyUpData = sliderData;
    dsLastKeyUpLeft = setLeft;

    dsKeyUpWait = 15;
    if (event.keyCode == 13)
    {
        dsKeyUpWait = 1;
        dsTextKeyUpWait();
    }
    else
    {
        clearTimeout(dsKeyUpTimer);
        dsKeyUpTimer = setTimeout("dsTextKeyUpWait()", 100);
    }
}

function dsTextKeyUpWait() {
    dsKeyUpWait--;
    if (dsKeyUpWait == 0)
    {
        dsSet(dsLastKeyUpData, dsLastKeyUpLeft);
        drawResults();
        clearTimeout(dsKeyUpTimer);
    }
    else
    {
        clearTimeout(dsKeyUpTimer);
        dsKeyUpTimer = setTimeout("dsTextKeyUpWait()", 100);
    }
}

function dsFindSlideData(type)
{   
    for (i=0;i<=slidersData.length;i++)
    {
        if (slidersData[i].settings.type == type)
        {
            return slidersData[i];
        }
    }
}

function dsSetMinMax(minVal, maxVal, type)
{
    sliderData = dsFindSlideData(type);
    
    sliderData.settings.maxValue = Math.round(maxVal / 10) * 10 + 10;
    sliderData.settings.minValue = Math.round(minVal / 10) * 10 - 10;
    
    sliderData.settings.maxSetValue = Math.round(maxVal / 10) * 10 + 10;
    sliderData.settings.minSetValue = Math.round(minVal / 10) * 10 - 10;

    var leftVal = parseInt($('#' + sliderData.ids.TbVanId).val());
    var rightVal = parseInt($('#' + sliderData.ids.TbTotId).val());

    if (isNaN(leftVal))
    {
        $('#' + sliderData.ids.TbVanId).val(0);
        leftVal = 0;
    }

    if (isNaN(rightVal))
    {
        $('#' + sliderData.ids.TbTotId).val(0);
        rightVal = 0;
    }

    if (mapFirstLoad && initWithSetVals)
    {
        sliderData.settings.minValue = Math.min(leftVal, sliderData.settings.minSetValue);
        sliderData.settings.maxValue = Math.max(rightVal, sliderData.settings.maxSetValue);
    }
    
    if (rightVal > sliderData.settings.maxValue) rightVal = sliderData.settings.maxValue;
    if (rightVal < sliderData.settings.minValue) rightVal = sliderData.settings.minValue;
    
    if (leftVal > sliderData.settings.maxValue) leftVal = sliderData.settings.maxValue;
    if (leftVal < sliderData.settings.minValue) leftVal = sliderData.settings.minValue;
    
    if (mapFirstLoad)
    {
        if (leftVal == sliderData.settings.minValue && rightVal == sliderData.settings.maxValue)
        {
            $('#' + sliderData.ids.TbVanId).val(leftVal);
            $('#' + sliderData.ids.TbTotId).val(rightVal);
        }
        else
        {
            if (!sliderData.settings.leftTextBoss) $('#' + sliderData.ids.TbVanId).val(leftVal);
            if (!sliderData.settings.rightTextBoss) $('#' + sliderData.ids.TbTotId).val(rightVal);
        }
    }
    
    var tLeft  = dsConvertValToPix(sliderData, leftVal);
    var tRight = dsConvertValToPix(sliderData, rightVal);
    
    if (!isNaN(tLeft) && !isNaN(tRight))
    {
        $("#" + sliderData.ids.leftImageGId).css("left", tLeft + "px");
        $("#" + sliderData.ids.leftImageId).css("left", tLeft + "px");
        
        $("#" + sliderData.ids.rightImageGId).css("left", tRight + "px");
        $("#" + sliderData.ids.rightImageId).css("left", tRight + "px");
    
        dsDraw(sliderData, false, false, false);
    }
}

function dsConvertPxToVal(sliderData, pixels)
{
    var newVal = ((pixels - 13) * (sliderData.settings.maxValue - sliderData.settings.minValue)) / (sliderData.settings.totalPixelWidth - 13) + sliderData.settings.minValue;
    return Math.round(newVal/10) * 10;
}

function dsConvertValToPix(sliderData, val)
{
    if (val < sliderData.settings.minValue) val = sliderData.settings.minValue;
    if (val > sliderData.settings.maxValue) val = sliderData.settings.maxValue;
    var newPix = ((val - sliderData.settings.minValue) * (sliderData.settings.totalPixelWidth - 13)) / (sliderData.settings.maxValue - sliderData.settings.minValue) + 13;
    return Math.round(newPix);
}

function uzClickCheckbox()
{
    drawResults();
}

function dsSet(sliderData, setLeft)
{
    var leftVal = parseInt($('#' + sliderData.ids.TbVanId).val());
    if (isNaN(leftVal))
    {
        leftVal = 0;
    }

    var rightVal = parseInt($('#' + sliderData.ids.TbTotId).val());
    if (isNaN(rightVal))
    {
        rightVal = 0;
    }
       
    if (leftVal < sliderData.settings.absMinValue)
    {
        leftVal = sliderData.settings.absMinValue;
        if (!sliderData.settings.leftTextBoss) $('#' + sliderData.ids.TbVanId).val(leftVal);
    }
    
    if (leftVal > sliderData.settings.absMaxValue)
    {
        leftVal = sliderData.settings.absMaxValue;
        if (!sliderData.settings.leftTextBoss) $('#' + sliderData.ids.TbVanId).val(leftVal);
    }
    
    if (rightVal < sliderData.settings.absMinValue)
    {
        rightVal = sliderData.settings.absMinValue;
        if (!sliderData.settings.rightTextBoss) $('#' + sliderData.ids.TbTotId).val(rightVal);
    }
    
    if (rightVal > sliderData.settings.absMaxValue)
    {
        rightVal = sliderData.settings.absMaxValue;
        if (!sliderData.settings.rightTextBoss) $('#' + sliderData.ids.TbTotId).val(rightVal);
    }
    
    sliderData.settings.minValue = Math.min(leftVal, sliderData.settings.minSetValue);
    sliderData.settings.maxValue = Math.max(rightVal, sliderData.settings.maxSetValue);

    var tLeft  = dsConvertValToPix(sliderData, leftVal);
    var tRight = dsConvertValToPix(sliderData, rightVal);
    
    if (leftVal > sliderData.settings.absMinValue && leftVal < sliderData.settings.absMaxValue)
    {   
        //sliderData.values.slideLeft = leftVal;
        sliderData.values.slideLeft = Math.round(leftVal / 10) * 10;
        
        $("#" + sliderData.ids.leftImageGId).css("left", tLeft + "px");
        $("#" + sliderData.ids.leftImageId).css("left", tLeft + "px");
        
        dsDraw(sliderData, setLeft, false);
    }
    
    if (rightVal > sliderData.settings.absMinValue && rightVal < sliderData.settings.absMaxValue)
    {    
        //sliderData.values.slideRight = rightVal;
        sliderData.values.slideRight = Math.round(rightVal / 10) * 10;
        
        $("#" + sliderData.ids.rightImageGId).css("left", tRight + "px");
        $("#" + sliderData.ids.rightImageId).css("left", tRight + "px");
        
        dsDraw(sliderData, setLeft, false);
    }
}

function dsDragStop(sliderData, draggingLeft, setVals, doUpdate)
{
    if (draggingLeft) sliderData.settings.leftTextBoss = true;
    else sliderData.settings.rightTextBoss = true;

    dsDraw(sliderData, draggingLeft, setVals, doUpdate, true);
}

function dsDrag(sliderData, draggingLeft, setVals, doUpdate)
{
    if (draggingLeft) sliderData.settings.leftTextBoss = false;
    else sliderData.settings.rightTextBoss = false;
        
    dsDraw(sliderData, draggingLeft, setVals, doUpdate, true)
}

function dsDraw(sliderData, draggingLeft, setVals, doUpdate, dragging)
{
    var tLeft = parseInt($("#" + sliderData.ids.leftImageId).css("left"));
    if (isNaN(tLeft)) {
        tLeft = 0;
    }
    var tRight = parseInt($("#" + sliderData.ids.rightImageId).css("left"));
    if (isNaN(tRight)) {
        tRight = 0;
    }
       
    var draggingSubMin = false;
    var draggingSubMax = false;
    
    var dubbelSlide = false;
    
    if (draggingLeft)
    {
        if (tLeft + sliderData.settings.minDistance > tRight)
        {      
            draggingSubMax = true;
            tRight = tLeft + sliderData.settings.minDistance;
            $("#" + sliderData.ids.rightImageId).css("left", tRight + "px");
        } 
    }
    else 
    {
        if (tRight - sliderData.settings.minDistance < tLeft)
        {
            tLeft = tRight - sliderData.settings.minDistance;

            if (tLeft < dsConvertValToPix(sliderData, sliderData.settings.absMinValue))
            {
                tLeft = dsConvertValToPix(sliderData, sliderData.settings.absMinValue);
                tRight = dsConvertValToPix(sliderData, sliderData.settings.absMinValue) + 10;
            }

            $("#" + sliderData.ids.leftImageId).css("left", tLeft + "px");
            dubbelSlide = true;
        }
    }
    
    if (tRight > sliderData.settings.totalPixelWidth)
    {
        draggingSubMax = true;
        tRight = sliderData.settings.totalPixelWidth;
        $("#" + sliderData.ids.rightImageId).css("left", tRight + "px");
    }
    
    if (tRight < 13 + sliderData.settings.minDistance)
    {
        if (dragging) draggingSubMin = true;
        tRight = 13 + sliderData.settings.minDistance;
        $("#" + sliderData.ids.rightImageId).css("left", tRight + "px");
    }
    
    if (tLeft > sliderData.settings.totalPixelWidth - sliderData.settings.minDistance)
    {
        tLeft = sliderData.settings.totalPixelWidth - sliderData.settings.minDistance;
        $("#" + sliderData.ids.leftImageId).css("left", tLeft + "px");
    }
  
    if (tLeft < 13)
    {
        if (dragging) draggingSubMin = true;
        tLeft = 13;
        $("#" + sliderData.ids.leftImageId).css("left", tLeft + "px");
    }
    
    $('#' + sliderData.ids.dikTussenLijnId).css("left", (tLeft + 7) + "px");
    $('#' + sliderData.ids.dikTussenLijnId).css("width", (tRight - (tLeft)) + "px");
    
    $('#' + sliderData.ids.leftLineId ).css("width", (tLeft - 7) + "px");
    
    $('#' + sliderData.ids.rightLineId).css("margin-left", (tRight + 6) + "px");
    $('#' + sliderData.ids.rightLineId).css("width", (sliderData.settings.totalPixelWidth + 1 - tRight) + "px");

    sliderData.values.slideLeft = dsConvertPxToVal(sliderData, tLeft);

    if (dubbelSlide == true)
    {
        sliderData.settings.leftTextBoss = false;
        sliderData.settings.rightTextBoss = false;
    }

    if (draggingSubMin && draggingLeft)
    {
        if (sliderData.values.slideLeft > sliderData.settings.absMinValue)
        {
            sliderData.values.slideLeft = $('#' + sliderData.ids.TbVanId).val() - 10;
        }
    }

    if (sliderData.values.slideLeft < sliderData.settings.absMinValue)
    {
        sliderData.values.slideLeft = sliderData.settings.absMinValue;
    }

    if (sliderData.settings.minValue < sliderData.settings.absMinValue)
    {
        sliderData.settings.minValue = sliderData.settings.absMinValue;
    }

    sliderData.values.slideRight = dsConvertPxToVal(sliderData, tRight);

    if (draggingSubMax && !draggingLeft)
    {
        sliderData.values.slideRight = parseInt($('#' + sliderData.ids.TbTotId).val()) + 10;
        //sliderData.settings.leftTextBoss = false;
        //sliderData.settings.rightTextBoss = false;
    }

    if (sliderData.values.slideRight > sliderData.settings.absMaxValue)
    {
        sliderData.values.slideRight = sliderData.settings.absMaxValue;
    }

    if (sliderData.settings.maxValue > sliderData.settings.absMaxValue)
    {
        sliderData.settings.maxValue = sliderData.settings.absMaxValue;
    }

    $("#" + sliderData.ids.rightImageGId).css("left", tRight + "px");
    $("#" + sliderData.ids.leftImageGId).css("left", tLeft + "px");
    
    if (setVals && draggingLeft || dubbelSlide)
    {
        if (!sliderData.settings.leftTextBoss)
        {
            $('#' + sliderData.ids.TbVanId).val(sliderData.values.slideLeft);
        }
    }
    if (setVals) 
    {
        if (!sliderData.settings.rightTextBoss) 
        {
            $('#' + sliderData.ids.TbTotId).val(sliderData.values.slideRight);
        }
    }

    // HUUR
    if (sliderData.settings.type == "huur")
    {
        minRent = sliderData.values.slideLeft; 
        maxRent = sliderData.values.slideRight;
    }

    // OPPERVLAKTE
    if (sliderData.settings.type == "oppervlakte")
    {
        minSurface = sliderData.values.slideLeft;
        maxSurface = sliderData.values.slideRight;
    }
    
    $('#' + sliderData.ids.minTextId).html(sliderData.settings.minValue);
    $('#' + sliderData.ids.maxTextId).html(sliderData.settings.maxValue);

    if (doUpdate) drawResults();
}
