﻿// common javascript functions

function getPosition(elem) {
    var x = 0;
    var y = 0;

    while (elem != null) {
        x += elem.offsetLeft;
        y += elem.offsetTop;

        elem = elem.offsetParent;
    }

    return [x, y];
}

function centerElement(elem) {
    var center = window.center();

    var left = center.x - elem.offsetWidth / 2;
    var top = center.y - elem.offsetHeight / 2;

    if (left < 0)
        left = 0;

    if (top < 0)
        top = 0;

    elem.style.left = left + 'px';
    elem.style.top = top + 'px';
    
    
}

window.size = function() {
    var w = 0;
    var h = 0;

    //IE
    if (!window.innerWidth) {
        //strict mode
        if (!(document.documentElement.clientWidth == 0)) {
            w = document.documentElement.clientWidth;
            h = document.documentElement.clientHeight;
        }
        //quirks mode
        else {
            w = document.body.clientWidth;
            h = document.body.clientHeight;
        }
    }
    //w3c
    else {
        w = window.innerWidth;
        h = window.innerHeight;
    }
    return { width: w, height: h };
}

window.center = function() {

    var hWnd = (arguments[0] != null) ? arguments[0] : { width: 0, height: 0 };

    var _x = 0;
    var _y = 0;
    var offsetX = 0;
    var offsetY = 0;

    //IE
    if (!window.pageYOffset) {
        //strict mode
        if (!(document.documentElement.scrollTop == 0)) {
            offsetY = document.documentElement.scrollTop;
            offsetX = document.documentElement.scrollLeft;
        }
        //quirks mode
        else {
            offsetY = document.body.scrollTop;
            offsetX = document.body.scrollLeft;
        }
    }
    //w3c
    else {
        offsetX = window.pageXOffset;
        offsetY = window.pageYOffset;
    }
    
    _x = ((this.size().width - hWnd.width) / 2) + offsetX;
    _y = ((this.size().height - hWnd.height) / 2) + offsetY;

    return { x: _x, y: _y };
}

function showPopup(elem) {
    elem.style.display = '';
    centerElement(elem);
    // createFrameLayerFromElement(elem);
}

function hidePopup(elem) {
    // removeFrameLayerFromElement(elem);
    elem.style.display = 'none';
}

function createFrameLayerFromElement(elem) {
    var frame = document.createElement('IFRAME');

    var position = getPosition(elem);
    
    frame.style.position = 'absolute';
    frame.style.left = position[0] + 'px';
    frame.style.top = position[1] + 'px';

    frame.style.width = elem.offsetWidth + 'px';
    frame.style.height = elem.offsetHeight + 'px';
    frame.src = "javascript:void(0);";

    var zIndex = 0;

    if (isNaN(elem.style.zIndex)) {
        elem.style.zIndex = 1000;
        zIndex = 999;
    }
    else {
        zIndex = elem.style.zIndex - 1;
    }

    frame.style.zIndex = zIndex;
             
    elem.FrameLayer = frame;
    document.body.appendChild(frame);
}

function removeFrameLayerFromElement(elem) {
    document.body.removeChild(elem.FrameLayer);
}

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, "");
}
String.prototype.ltrim = function() {
    return this.replace(/^\s+/, "");
}
String.prototype.rtrim = function() {
    return this.replace(/\s+$/, "");
}