var PriceRange = {
    _startX: 0, 		// mouse starting positions
    _startY: 0,
    _offsetX: 0, 		// current element offset
    _offsetY: 0,
    _dragElement: null, 		// needs to be passed from OnMouseDown to OnMouseMove
    _oldZIndex: 0, 		// we temporarily increase the z-index during drag
    temp: "",
    MinCena: 0,
    MaxCena: 1000,
    initLeva: 0,
    initPrava: 0,
    currLeva: 0,
    currPrava: 0,
    DelkaCary: 0,
    KteraSipka: "",
    KoefCeny: 1,
    //var _debug = $('#debug');	// makes life easier
    //var _poloha = $('#poloha')


   // Pokus: function(e) {
   //     alert("OK");
   //     var ID = e.id;
   //     var objekt = $("#LevaCena")[0];
   //     alert(objekt);

        //alert(objekt.style.left);
        //alert(objekt.offsetLeft + " " + objekt.offsetTop);
        //objekt.style.left = "400px";
        //alert(objekt.style.left);
    //    VypisVlastnosti(objekt);
    // },

    InitDragDrop: function(Min, Max, ActMin, ActMax) {
        //$("#LevaSipka").mousedown(PriceRange.OnMouseDown('this'))
        document.onmousedown = PriceRange.OnMouseDown;
        document.onmouseup = PriceRange.OnMouseUp;
        PriceRange.MinCena = Number(Min);
        PriceRange.MaxCena = Number(Max);
        $("#LevaCena").val(ActMin);
        $("#PravaCena").val(ActMax);
        $("#LevaCenaTD")[0].innerHTML = Min;
        $("#PravaCenaTD")[0].innerHTML = Max;

        // počáteční poloha šipek
        PriceRange.initLeva = PriceRange.ExtractNumber($("#LevaSipka")[0].style.left);
        PriceRange.initPrava = PriceRange.ExtractNumber($("#PravaSipka")[0].style.left);
        PriceRange.DelkaCary = Number(PriceRange.initPrava) - Number(PriceRange.initLeva);
        PriceRange.KoefCeny = (Number(PriceRange.MaxCena) - Number(PriceRange.MinCena)) / PriceRange.DelkaCary;

        // okamžitá poloha šipek
        PriceRange.currLeva = PriceRange.initLeva + (Number(ActMin) - Number(PriceRange.MinCena)) / PriceRange.KoefCeny;
        PriceRange.currPrava = PriceRange.initPrava - (Number(PriceRange.MaxCena) - Number(ActMax)) / PriceRange.KoefCeny;

        $('#LevaSipka').css("left", PriceRange.currLeva);
        $('#PravaSipka').css("left", PriceRange.currPrava);


        return
    },

    OnMouseDown: function(e) {
        // IE is retarded and doesn't pass the event object
        if (e == null)
            e = window.event;

        //VypisVlastnosti(e);

        // IE uses srcElement, others use target
        var target = e.target != null ? e.target : e.srcElement;
        PriceRange.KteraSipka = target.id;

        PriceRange.temp = target.className == 'drag'
		? 'draggable element clicked ' + e.id + " " + e.clientX + " " + e.clientY
		: 'NON-draggable element clicked';
        $("#debug").text(PriceRange.temp + " " + target.id);

        // for IE, left click == 1
        // for Firefox, left click == 0
        if ((e.button == 1 && window.event != null ||
		e.button == 0) &&
		target.className == 'drag') {
            // grab the mouse position
            PriceRange._startX = e.clientX;
            PriceRange._startY = e.clientY;

            // grab the clicked element's position		
            PriceRange._offsetX = PriceRange.ExtractNumber(target.style.left);
            PriceRange._offsetY = PriceRange.ExtractNumber(target.style.top);

            // bring the clicked element to the front while it is being dragged
            PriceRange._oldZIndex = target.style.zIndex;
            target.style.zIndex = 10000;

            // we need to access the element in OnMouseMove
            PriceRange._dragElement = target;

            // tell our code to start moving the element with the mouse
            document.onmousemove = PriceRange.OnMouseMove;

            // cancel out any text selections
            document.body.focus();

            // prevent text selection in IE
            document.onselectstart = function() { return false; };
            // prevent IE from trying to drag an image
            target.ondragstart = function() { return false; };

            // prevent text selection (except IE)
            return false;
        }
    },

    ExtractNumber: function(value) {
        var n = parseInt(value);
        return n == null || isNaN(n) ? 0 : n;
    },

    OnMouseMove: function(e) {
        if (e == null)
            var e = window.event;

        // this is the actual "drag code"
        // okamžitá poloha šipky, se kterou uživatel hýbá
        var LevaStrana = (PriceRange._offsetX + e.clientX - PriceRange._startX)

        // hlídání, aby se nepřelezl vymezený prostor
        if (LevaStrana < PriceRange.initLeva) { LevaStrana = PriceRange.initLeva }
        if (LevaStrana > PriceRange.initPrava) { LevaStrana = PriceRange.initPrava }

        // hlídání, aby šipky nepřelezly přes sebe a zapamatování okamžité pozice šipek
        switch (PriceRange.KteraSipka) {
            case "LevaSipka":
                if (LevaStrana > PriceRange.currPrava) { LevaStrana = PriceRange.currPrava }
                PriceRange.currLeva = LevaStrana;
                $("#LevaCena").val(Math.ceil(PriceRange.MinCena + LevaStrana * PriceRange.KoefCeny));
                $("#LevaCenaTD")[0].innerHTML = Math.ceil(PriceRange.MinCena + LevaStrana * PriceRange.KoefCeny);
                break;



            case "PravaSipka":
                if (LevaStrana < PriceRange.currLeva) { LevaStrana = PriceRange.currPrava }
                PriceRange.currPrava = LevaStrana;
                $("#PravaCena").val(Math.ceil(PriceRange.MinCena + LevaStrana * PriceRange.KoefCeny));
                $("#PravaCenaTD")[0].innerHTML = Math.ceil(PriceRange.MinCena + LevaStrana * PriceRange.KoefCeny);
                break;
        }

        PriceRange._dragElement.style.left = LevaStrana + 'px';
        //PriceRange._dragElement.style.top = (PriceRange._offsetY + e.clientY - PriceRange._startY) + 'px';
        PriceRange._dragElement.style.top = (PriceRange._offsetY) + 'px';

        $('#poloha').text('(' + PriceRange._dragElement.style.left + ', ' + PriceRange._dragElement.style.top + ')');
        //_debug.innerHTML = '(' + _dragElement.style.left + ', ' + _dragElement.style.top + ')';	
    },

    OnMouseUp: function(e) {
        if (PriceRange._dragElement != null) {
            PriceRange._dragElement.style.zIndex = PriceRange._oldZIndex;

            // we're done with these events until the next OnMouseDown
            document.onmousemove = null;
            document.onselectstart = null;
            PriceRange._dragElement.ondragstart = null;

            // this is how we know we're not dragging
            PriceRange._dragElement = null;

            // _debug.innerHTML = 'mouse up'; 
        }
    }

} // *****************   konec PriceRange


