
/**
 *	COMMOM UTILITY FUNCTIONS
 */


/**
 * getXY
 * - get the XY coordinates
 * - returns an array containing the xy data for target element 
 */ 
function getXY(event) { 
   
   xyData = new Object();
    if(document.addEventListener && typeof event.pageX == "number")
    { // Moz and Opera

        var Element = event.target;
        var CalculatedTotalOffsetLeft   = CalculatedTotalOffsetTop = 0;
        while(Element.offsetParent)
        {
            CalculatedTotalOffsetLeft   += Element.offsetLeft;
            CalculatedTotalOffsetTop    += Element.offsetTop;
            Element                      = Element.offsetParent;
        }
        var OffsetXForNS6 = event.pageX - CalculatedTotalOffsetLeft;
        var OffsetYForNS6 = event.pageY - CalculatedTotalOffsetTop;
        xyData.X = OffsetXForNS6;
        xyData.Y = OffsetYForNS6;
    }
    else if(window.event && typeof window.event.offsetX == "number")
    { // IE
        xyData.X = event.offsetX;
        xyData.Y = event.offsetY;
    }
    
    return xyData;
}//getXY()


/**
 * isMapRefresh
 * - sets true if it is MapRefresh else sets false
 * - checks the request type to identify the type 
 */ 
function isMapRefresh() 
{
    if(window.XMLHttpRequest || window.ActiveXObject) {
    	return true;
    }
    else {
    	return false;
    }
}


/**
 * =ADD EVENT
 * @attach event listener
 */
function addEvent(fObj, fEvent, fn)
{
    if(window.opera && getBrowserInfo().version < 8)
    {   // opera has bad dynamic event handling
        //eval("fObj.on" + fEvent + " = fn");
        var r = fObj.attachEvent("on"+fEvent, fn);
        return r;
    }
    else if (fObj.addEventListener)
    {   // moz, w3c
        ((window.opera) && (getBrowserInfo().version >= 8))?fObj.addEventListener(fEvent, fn, false):fObj.addEventListener(fEvent, fn, true);
        return true;
    }
    else if (fObj.attachEvent)
    {   // IE
        var r = fObj.attachEvent("on"+fEvent, fn);
        return r;
    }
    else
    {   //other
        fObj["on" + fEvent] = fn;
    }
}//addEvent()


/**
 * =GET BROWSER SIZE
 * @get height and width of browser canvas
 */
function getBrowserSize()
{
    size = new Object();
    if (document.body.scrollHeight > document.body.offsetHeight)
    {
        size.width  = document.body.scrollWidth;
        size.height = document.body.scrollHeight;
    }
    else
    {
        size.width  = document.body.offsetWidth;
        size.height = document.body.offsetHeight;
    }
    if (document.body.clientWidth)
    {
        size.width  = document.body.clientWidth;
        size.height = document.body.clientHeight;
    }
    else
    {
        size.width  = document.body.offsetWidth;
        size.height = document.body.offsetHeight;
    }
    if (document.documentElement.clientWidth)
    {   // IE6, safari, opera
        size.width  = document.documentElement.clientWidth;
        size.height = document.documentElement.clientHeight;
    }
    if(self.innerWidth)
    {
        size.width  = self.innerWidth;
        size.height = self.innerHeight;
    }
    return size;
} //getBrowserSize()


/**
 * =GET BROWSER INFO
 */
function getBrowserInfo()
{
    browser                 = new Object();
    browser.name            = browser.version = browser.os = "unknown";
    var userAgent           = navigator.userAgent.toLowerCase();
    var browserListArray    = new Array("firefox", "msie", "netscape", "opera", "safari");
    var osListArray         = new Array("linux", "mac", "windows", "x11");
    for(var i = 0, n = browserListArray.length; i < n; i++)
    {   // get browser name and version
        var strPosition = userAgent.indexOf(browserListArray[i]) + 1;
        if(strPosition > 0)
        {
            browser.name = browserListArray[i]; // browser name

            var versionPosition = strPosition + browser.name.length;
            var incr = ((browser.name == "safari") || (userAgent.charAt(versionPosition + 4) > 0 && userAgent.charAt(versionPosition + 4) < 9)) ? 5 : 3;

            browser.version     = userAgent.substring(versionPosition, versionPosition + incr); // browser version
        }
    }
    for(var i = 0, n = osListArray.length; i < n; i++)
    {
        var strPosition = userAgent.indexOf(osListArray[i]) + 1;
        if(strPosition > 0)
        {
            browser.os  = osListArray[i];
        }
    }

    return browser;

} //getBrowserInfo()
