﻿var blnMovingPopup = false;
var blnPopupOpen = false;
var deltaX = 0;
var deltaY = 0;

function GetPopupWindow() {
    var popupWindow = $('divPopupWindow');
    if (!popupWindow) {
        var backgroundImage = document.createElement("img");
        backgroundImage.id = 'imgPopupBackground';
        //backgroundImage.src = '/site/images/spacer.gif';
        backgroundImage.src = '/site/images/login_background.png';
        document.body.appendChild(backgroundImage);
        
        var dropShadowImage = document.createElement("img");
        dropShadowImage.id = 'imgPopupDropShadow';
        //dropShadowImage.src = '/site/images/spacer.gif';
        dropShadowImage.src = '/site/images/drop_shadow.png';
        document.body.appendChild(dropShadowImage);
        
        popupWindow = document.createElement("div");
        popupWindow.id = 'divPopupWindow';

        var popupHeaderPanelDiv = document.createElement("div");
        popupHeaderPanelDiv.id = 'divPopupHeaderPanel';
        popupWindow.appendChild(popupHeaderPanelDiv);

        var topPanelTable = document.createElement("table");
        topPanelTable.id = "tableHeaderPanel";
        topPanelTable.border = '0';
        topPanelTable.cellPadding = '0';
        topPanelTable.cellSpacing = '0';
        popupHeaderPanelDiv.appendChild(topPanelTable);
        var objRow = topPanelTable.insertRow(0);
        var objCell = objRow.insertCell(0);
        objCell.id = 'divPopupHeading';

        disableSelection(objCell);
        Event.observe(objCell, 'mousedown', PopupTitleMouseDown);
        Event.observe(objCell, 'mouseup', PopupMouseUpHandler);

        var textNode = document.createTextNode("test");
        objCell.appendChild(textNode);
        
        objCell = objRow.insertCell(1);
        objCell.id = 'divPopupClose';
        objCell.innerHTML = '&times;';
        Event.observe(objCell, 'click', ClosePopup);
        
        var popupBodyDiv = document.createElement("div");
        popupBodyDiv.id = 'divPopupBody';
        //popupBodyDiv.innerHTML = 'this is a test';
        popupWindow.appendChild(popupBodyDiv);

        document.body.appendChild(popupWindow);
        
    }
    return popupWindow;
}

function OpenPopup(strTitle, strContent, intWidth) {
    var popupWindow = GetPopupWindow();
    //popupWindow.innerHTML = strContent;
    var popupShadow = $('imgPopupDropShadow');
    var popupTitleDiv = $('divPopupHeading');
    popupTitleDiv.innerHTML = strTitle;
    var popupBodyDiv = $('divPopupBody');
    popupBodyDiv.innerHTML = strContent;
    var bodyHeight = Element.getHeight(document.body);
    var winW = GetWindowWidth();
    var winH = GetWindowHeight();
    
    if (deltaX > 0 && deltaY > 0) {
        //don't move it, as it's already been moved by the user
    }
    else {
        popupWindow.style.width = intWidth + "px";
        popupWindow.style.left = ((winW / 2) - ((intWidth + 60) / 2)) + "px";

        var popupTop = (winH / 2) - (Element.getHeight(popupWindow) / 2) - 30;
        popupWindow.style.top = popupTop + "px";

        popupShadow.style.width = intWidth + 35 + "px";
        popupShadow.style.height = Element.getHeight(popupWindow) + 20 + "px";
        popupShadow.style.left = (((winW / 2) - ((intWidth + 60) / 2)) - 10) + "px";
        popupShadow.style.top = popupTop + "px"; //"150px";
    }
    popupWindow.style.display = 'block';
    $('imgPopupDropShadow').style.display = 'block';
    $('imgPopupBackground').style.display = 'block';
    $('imgPopupBackground').style.height = (winH > bodyHeight ? winH : bodyHeight ) + 0 + 'px';
    blnPopupOpen = true;
    Event.observe(document, 'mouseup', PopupMouseUpHandler);
}

function ClosePopup() {
    if (blnPopupOpen == true) {
        var popupWindow = $('divPopupWindow');
        //popupWindow.style.visibility = 'hidden';
        popupWindow.style.display = 'none';
        //$('imgPopupBackground').style.visibility = 'hidden';
        //$('imgPopupDropShadow').style.visibility = 'hidden';
        $('imgPopupBackground').style.display = 'none';
        $('imgPopupDropShadow').style.display = 'none';
        blnPopupOpen = false;
    }
    //Event.stopObserving(document, 'click', PopupClickHandler);
    Event.stopObserving(document, 'mouseup', PopupMouseUpHandler);
}

function GetWindowWidth() {
    if (window.innerWidth) {
        return window.innerWidth
    }
    else if (document.body.offsetWidth) {
        return document.body.offsetWidth;
    }
    else //take a guess at something reasonable
    {
        return 1024;
    }
}

function GetWindowHeight() {
    if (window.innerHeight) {
        return window.innerHeight
    }
    else if (document.body.offsetHeight) {
        return document.body.offsetHeight;
    }
    else //take a guess at something reasonable
    {
        return 768;
    }
}

function PopupTitleMouseDown(event) {
    var objTitleElement = event.element();
    var objPopup = $('divPopupWindow');

    objTitleElement.style.cursor = 'move';
    Event.observe(document, 'mousemove', PopupTitleMouseMove);
    blnMovingPopup = true;

    //get the mouse coords
    var intPopupLeft = parseInt(objPopup.style.left, 10);
    var intPopupTop = parseInt(objPopup.style.top, 10);
    var intMouseX = Event.pointerX(event);
    var intMouseY = Event.pointerY(event);
    deltaX = intMouseX - intPopupLeft;
    deltaY = intMouseY - intPopupTop;
    CancelEventBubble(event);
}

function PopupTitleMouseMove(event) {
    var objPopup = $('divPopupWindow');
    var popupShadow = $('imgPopupDropShadow');
    var intMouseX = Event.pointerX(event);
    var intMouseY = Event.pointerY(event);

    objPopup.style.left = (intMouseX - deltaX) + 'px';
    objPopup.style.top = (intMouseY - deltaY) + 'px';
    popupShadow.style.left = (intMouseX - deltaX - 10) + 'px';
    popupShadow.style.top = (intMouseY - deltaY) + 'px';
    CancelEventBubble(event);
}

function PopupClickHandler(event) {
    if (Event.isLeftClick(event)) {
        ClosePopup();
        CancelEventBubble(event);
    }
}

function PopupMouseUpHandler(event) {
    if (blnMovingPopup) {
        var objPopupHeading = $('divPopupHeading')
        Event.stopObserving(document, 'mousemove', PopupTitleMouseMove);
        var objTitleElement = $('divPopupHeading');
        objTitleElement.style.cursor = '';
        blnMovingPopup = false;
    }
}

function ShowMessage(messageText) {
    var messageElement = $('divMessage');
    if (!messageElement) {
        messageElement = document.createElement("div");
        messageElement.id = 'divMessage';
        document.body.appendChild(messageElement);
    }
    messageElement.innerHTML = messageText;

    var winW = GetWindowWidth();
    var winH = GetWindowHeight();
    var myWidth = Element.getWidth(messageElement);

    messageElement.style.left = ((winW / 2) - (myWidth / 2)) + "px";

    //messageElement.style.top = "100px";
    messageElement.style.display = 'block';
}

function ShowMessage(messageText, intMessageTimeout) {

    if (intHideMessageTimeout > 0) {
        window.clearTimeout(intHideMessageTimeout);
        intHideMessageTimeout = 0;
    }

    var messageElement = $('divMessage');
    if (!messageElement) {
        messageElement = document.createElement("div");
        messageElement.id = 'divMessage';
        document.body.appendChild(messageElement);
    }
    messageElement.innerHTML = messageText;

    var winW = GetWindowWidth();
    var winH = GetWindowHeight();
    var myWidth = Element.getWidth(messageElement);

    //var hscroll = (document.all ? document.scrollLeft : window.pageXOffset);
    var vscroll = (document.all ? document.body.scrollTop : window.pageYOffset);

    messageElement.style.top = (vscroll + 20) + 'px';

    messageElement.style.left = ((winW / 2) - (myWidth / 2)) + "px";

    //messageElement.style.top = "100px";
    messageElement.style.display = 'block';

    if (intMessageTimeout) {
        if (intHideMessageTimeout > 0) {
            window.clearTimeout(intHideMessageTimeout);
            intHideMessageTimeout = 0;
        }
        intHideMessageTimeout = window.setTimeout("HideMessage();", intMessageTimeout);
    }
}



function HideMessage() {
    var messageElement = $('divMessage');
    if (messageElement)
        messageElement.style.display = 'none';
}





