﻿/// <reference path="sessionVars.js" />

mBasket = function () {

    var dragEnable = false;
    var oldX = 0;
    var oldY = 0;
    var initX = 130;
    var initY = 30;
    var dragDiv = "divMiniBasket";

    var x = {};

    x.$ = {
        init: function () {
            if (!sessvars.dragDiv) {
                sessvars.dragDiv = { x: initX, y: initY, visible: "hidden", canshow: false };
            }
        },

        getMouseX: function (e) {
            ev = e || event;
            if (ev.offsetX) {
                return ev.clientX;
            } else {
                return ev.pageX;
            }
        },

        getMouseY: function (e) {
            ev = e || event;
            if (ev.offsetY) {
                return ev.clientY;
            } else {
                return ev.pageY;
            }
        },

        mDown: function (e) {

            dragEnable = true;
            oldX = this.getMouseX(e);
            oldY = this.getMouseY(e);
            if (event.preventDefault) {
                event.preventDefault();
            } else {
                event.returnValue = false;
            }
            return false;
        },

        mUp: function () {
            if (dragEnable) {
                dragEnable = false;
            }
        },

        mMove: function (e) {
            if (dragEnable == true) {
                var x = this.getMouseX(e);
                var y = this.getMouseY(e);
                var obj = document.getElementById(dragDiv);
                var left = (parseInt(obj.style.left) ? parseInt(obj.style.left) : obj.offsetLeft);
                var top = (parseInt(obj.style.top) ? parseInt(obj.style.top) : obj.offsetTop);
                var startX = left + (x - oldX);
                var startY = top + (y - oldY);
                obj.style.left = startX + "px";
                obj.style.top = startY + "px";
                sessvars.dragDiv.x = startX;
                sessvars.dragDiv.y = startY;
                oldX = x;
                oldY = y;
            }
        },

        getWinSize: function () {
            var myWidth = 0, myHeight = 0;
            if (typeof (window.innerWidth) == 'number') {
                //Non-IE
                myWidth = window.innerWidth;
                myHeight = window.innerHeight;
            } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
                //IE 6+ in 'standards compliant mode'
                myWidth = document.documentElement.clientWidth;
                myHeight = document.documentElement.clientHeight;
            } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
                //IE 4 compatible
                myWidth = document.body.clientWidth;
                myHeight = document.body.clientHeight;
            }
            return [myWidth, myHeight];
        },

        getScrollXY: function () {
            var scrOfX = 0, scrOfY = 0;
            if (typeof (window.pageYOffset) == 'number') {
                //Netscape compliant
                scrOfY = window.pageYOffset;
                scrOfX = window.pageXOffset;
            } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
                //DOM compliant
                scrOfY = document.body.scrollTop;
                scrOfX = document.body.scrollLeft;
            } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
                //IE6 standards compliant mode
                scrOfY = document.documentElement.scrollTop;
                scrOfX = document.documentElement.scrollLeft;
            }
            return [scrOfX, scrOfY];
        },

        show: function () {
            var divObj = document.getElementById(dragDiv);
            var scrollTop = this.getScrollXY()[1];
            var winHeight = this.getWinSize()[1];
            if (divObj.style.visibility == 'hidden') {
                if (this.isIndexUrl()) {
                    if ((scrollTop > sessvars.dragDiv.y) || (sessvars.dragDiv.y > (scrollTop + winHeight))) {
                        divObj.style.top = scrollTop + initY + "px";
                        sessvars.dragDiv.y = scrollTop + initY;
                    }
                    divObj.style.visibility = 'visible';
                    sessvars.dragDiv.visible = 'visible';
                    sessvars.dragDiv.canshow = true;
                }
            } else {
                if ((scrollTop > sessvars.dragDiv.y) || (sessvars.dragDiv.y > (scrollTop + winHeight))) {
                    divObj.style.top = scrollTop + initY + "px";
                    sessvars.dragDiv.y = scrollTop + initY;
                }
            }
        },

        hide: function (canshow) {
            var divObj = document.getElementById(dragDiv);
            if (divObj.style.visibility == 'visible') {
                divObj.style.visibility = 'hidden';
                sessvars.dragDiv.visible = 'hidden';
                sessvars.dragDiv.canshow = (canshow || false);
            }
        },

        isIndexUrl: function () {
            var xx = String(document.location).toLowerCase().split('/');
            var yy = String(xx[xx.length - 1]).toLowerCase().split('?');
            return ((yy[0] == "index.aspx") || (yy[0] == "akcija.aspx") || (yy[0] == "novo.aspx") || (yy[0] == ""));
        },

        load: function () {
            var divObj = document.getElementById(dragDiv);
            if (divObj) {
                divObj.style.left = sessvars.dragDiv.x + "px";
                divObj.style.top = sessvars.dragDiv.y + "px";
                divObj.style.visibility = sessvars.dragDiv.visible;
                if (this.isIndexUrl() && sessvars.dragDiv.canshow) {
                    this.show();
                } else {
                    this.hide(true);
                }
            }
        }

    }
    x.$.init();
    return x;
} ()
