/* copyright: generalrobots 2010 all rights reserved */


if(typeof(grobots) != "object") var grobots = {};


grobots.getAbsolutePositionFromElement = function(elm)
{
    var x = elm.offsetLeft;
    var y = elm.offsetTop;

    elm = elm.offsetParent;
    while(elm){
        x += elm.offsetLeft;
        y += elm.offsetTop;
        elm = elm.offsetParent;
    }

    return {x: x, y: y};
};


grobots.getAbsolutePositionFromEvent = function(evt)
{
    var x, y;

    if(typeof(evt.pageX) == "number"){
        x = evt.pageX;
        y = evt.pageY;
    }
    else if(typeof(evt.clientX) == "number"){
        x = evt.clientX;
        y = evt.clientY;

        var badOldBrowser =
            (window.navigator.userAgent.indexOf("Opera") + 1) ||
            (window.ScriptEngine && ScriptEngine().indexOf("InScript") + 1) ||
            (navigator.vendor == "KDE");
        if(!badOldBrowser){
            if(document.body &&
               (document.body.scrollLeft || document.body.scrollTop)){
                //IE 4, 5, 6 (in non-standards compliant mode)
                x += document.body.scrollLeft;
                y += document.body.scrollTop;
            }
            else if(document.documentElement &&
                    (document.documentElement.scrollLeft || document.documentElement.scrollTop)){
                //IE 6 (in standards compliant mode)
                x += document.documentElement.scrollLeft;
                y += document.documentElement.scrollTop;
            }
        }
    }

    return {x: x, y: y};
};


grobots.addEventhandler = function(evtname, elm, handler, bubble)
{
    if(elm.addEventListener){
        elm.addEventListener(evtname, handler, bubble);
    }
    else if(elm.attachEvent){
        elm.attachEvent("on" + evtname, handler);
    }
}


grobots.delEventhandler = function(evtname, elm, handler, bubble)
{
    if(elm.removeEventListener){
        elm.removeEventListener(evtname, handler, bubble);
    }
    else if(elm.detachEvent){
        elm.detachEvent("on" + evtname, handler);
    }
}


grobots.stopEvent = function(evt)
{
    evt.cancelBubble = true;
    if(evt.stopPropagation) evt.stopPropagation();
}
