function getAgent()
{
    var agent;

    if(navigator.userAgent.indexOf(" MSIE ")>-1)
        agent = "MSIE";
    else if(navigator.userAgent.indexOf(" Firefox/")>-1)
        agent = "Firefox";
    else if(navigator.userAgent.indexOf(" Safari/")>-1)
        agent = "Safari";
    else if(navigator.userAgent.indexOf("Opera/")>-1)
        agent = "Opera";
    else
        agent = "MSIE";
        
    return agent;
}

var __nonMSDOMBrowser = (window.navigator.appName.toLowerCase().indexOf('explorer') == -1); 
var __userAgent = getAgent();

function getWindowBounds() 
{
    var result = new Object();
    result.width = 0;
    result.height = 0;
    
    switch(__userAgent) 
    {
        case "MSIE":
        result.width = document.documentElement.clientWidth;
        result.height = document.documentElement.clientHeight;
        break;
        
        case "Safari":
        result.width = window.innerWidth;
        result.height = window.innerHeight;
        break;
        
        case "Opera":
        result.width = Math.min(window.innerWidth, document.body.clientWidth);
        result.height = Math.min(window.innerHeight, document.body.clientHeight);
        break;
        
        default: 
        result.width = Math.min(window.innerWidth, document.documentElement.clientWidth);
        result.height = Math.min(window.innerHeight, document.documentElement.clientHeight);
        break;
    }
                
    return result;
}

function GetScrollX() 
{
    if (__nonMSDOMBrowser) {
        return window.pageXOffset;
    }
    else {
        if (document.documentElement && document.documentElement.scrollLeft) {
            return document.documentElement.scrollLeft;
        }
        else if (document.body) {
            return document.body.scrollLeft;
        }
    }
    return 0;
}

function GetScrollY() 
{
    if (__nonMSDOMBrowser) {
        return window.pageYOffset;
    }
    else {
        if (document.documentElement && document.documentElement.scrollTop) {
            return document.documentElement.scrollTop;
        }
        else if (document.body) {
            return document.body.scrollTop;
        }
    }
    return 0;
}

function GetDocumentWidth() 
{
    return Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);
}

function GetDocumentHeight() 
{
    return Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);
}

function GetElementById(elementId) 
{
    if (document.getElementById) {
        return document.getElementById(elementId);
    }
    else if (document.all) {
        return document.all[elementId];
    }
    else return null;
}

function SetElementX(element, x) 
{
    if (element && element.style) {
        element.style.left = x + "px";
    }
}

function SetElementY(element, y) {
    if (element && element.style) {
        element.style.top = y + "px";
    }
}

function SetElementHeight(element, height) {
    if (element && element.style) {
        element.style.height = height + "px";
    }
}

function SetElementWidth(element, width) {
    if (element && element.style) {
        element.style.width = width + "px";
    }
}

function GetElementPosition(element) {
    var result = new Object();
    result.x = 0;
    result.y = 0;
    result.width = 0;
    result.height = 0;
    if (element.offsetParent) {
        result.x = element.offsetLeft;
        result.y = element.offsetTop;
        var parent = element.offsetParent;
        while (parent) {
            result.x += parent.offsetLeft;
            result.y += parent.offsetTop;
            var parentTagName = parent.tagName.toLowerCase();
            if (parentTagName != "table" &&
                parentTagName != "body" && 
                parentTagName != "html" && 
                parentTagName != "div" && 
                parent.clientTop && 
                parent.clientLeft) {
                result.x += parent.clientLeft;
                result.y += parent.clientTop;
            }
            parent = parent.offsetParent;
        }
    }
    else if (element.left && element.top) {
        result.x = element.left;
        result.y = element.top;
    }
    else {
        if (element.x) {
            result.x = element.x;
        }
        if (element.y) {
            result.y = element.y;
        }
    }
    if (element.offsetWidth && element.offsetHeight) {
        result.width = element.offsetWidth;
        result.height = element.offsetHeight;
    }
    else if (element.style && element.style.pixelWidth && element.style.pixelHeight) {
        result.width = element.style.pixelWidth;
        result.height = element.style.pixelHeight;
    }
    return result;
}