var currentLeft = 0;
var currentTop = 0;
var dragObj = new Object();
var dragging = false;


function Browser() {

    var ua, s, i;

    this.isIE = false;
    this.isNS = false;
    this.version = null;

    ua = navigator.userAgent;

    s = "MSIE";
    if ((i = ua.indexOf(s)) >= 0) {
        this.isIE = true;
        this.version = parseFloat(ua.substr(i + s.length));
        return;
    }

    s = "Netscape6/";
    if ((i = ua.indexOf(s)) >= 0) {
        this.isNS = true;
        this.version = parseFloat(ua.substr(i + s.length));
        return;
    }

    // Treat any other "Gecko" browser as NS 6.1.
    s = "Gecko";
    if ((i = ua.indexOf(s)) >= 0) {
        this.isNS = true;
        this.version = 6.1;
        return;
    }
}
var browser = new Browser();

function expandWidget() {
    e = document.getElementById("expandableDiv");
    e.style.width = 325 + 'px';
}

function contractWidget() {
    e = document.getElementById("expandableDiv");
    e.style.width = 50 + 'px';
}

function onMouseWheel(event) {
    if (!event) event = window.event;

    if (dragging) {
        return cancelEvent(e);
    }
    return false;
}

function startDrag(clientX, clientY) {
    var x, y;

    dragging = true;

    e = document.getElementById("expandableDiv");
    dragObj.elNode = e;

    // Get cursor position with respect to the page.
    if (browser.isIE) {
        x = clientX + currentLeft + document.documentElement.scrollLeft + document.body.scrollLeft;
        y = clientY + currentTop + document.documentElement.scrollTop + document.body.scrollTop;
    }
    if (browser.isNS) {
        x = clientX + currentLeft + window.scrollX;
        y = clientY + currentTop + window.scrollY;
    }
    //alert("X " + x + " Y " + y);
    // Save starting positions of cursor and element.
    dragObj.cursorStartX = x;
    dragObj.cursorStartY = y;
    dragObj.elStartLeft = parseInt(dragObj.elNode.style.left, 10);
    dragObj.elStartTop = parseInt(dragObj.elNode.style.top, 10);

    if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
    if (isNaN(dragObj.elStartTop)) dragObj.elStartTop = 0;

    // Capture mousemove events on the page.
    if (browser.isIE) {
        document.attachEvent("onmousemove", dragGo);
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    }
    if (browser.isNS) {
        document.addEventListener("mousemove", dragGo, true);
        event.preventDefault();
    }
}

function stopDrag() {
    dragging = false;
    e = document.getElementById("expandableDiv");
    if (browser.isIE) {
        document.detachEvent("onmousemove", dragGo);
    }
    if (browser.isNS) {
        document.removeEventListener("mousemove", dragGo, true);
    }
}

function dragGo(event) {
    //alert("MOVEMENT");
    var x, y;

    // Get cursor position with respect to the page.
    if (browser.isIE) {
        x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
        y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
    }
    if (browser.isNS) {
        x = event.clientX + window.scrollX;
        y = event.clientY + window.scrollY;
    }

    // Move drag element by the same amount the cursor has moved.
    currentLeft = (dragObj.elStartLeft + x - dragObj.cursorStartX);
    currentTop = (dragObj.elStartTop + y - dragObj.cursorStartY);
    dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px";
    dragObj.elNode.style.top = (dragObj.elStartTop + y - dragObj.cursorStartY) + "px";

    if (browser.isIE) {
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    }
    if (browser.isNS) event.preventDefault();
}
