
var Utils = {
    get : function() {
        var ea;
        for(var i = 0; i < arguments.length; i++) {
            var e = arguments[i];
            if(typeof e == 'string') e = document.getElementById(e);
            if(arguments.length == 1) return e;
            if(!ea) ea = new Array();
            ea[ea.length] = e;
        }
        return ea;
    }, 
    show : function() {
        for(var i = 0; i < arguments.length; i++) {
            var element = arguments[i];
            if (typeof element == 'string') element = this.get(element);
            if (element && element.style) element.style.display = 'block';
        }
    },
    show2 : function() {
        for(var i = 0; i < arguments.length; i++) {
            var element = arguments[i];
            if (typeof element == 'string') element = this.get(element);
            if (element && element.style) element.style.display = "inline";
        }
    },
    hide : function() {
        for(var i = 0; i < arguments.length; i++) {
            var element = arguments[i];
            if (typeof element == 'string') element = this.get(element);
            if (element && element.style) element.style.display = 'none';
        }
    },
    addEvent : function(obj, e, handler) {
        var fn = handler;   

        if (!obj.attachedEvents) obj.attachedEvents = new Array();
        if (obj.attachedEvents[e]) this.removeEvent(obj, e);

        obj.attachedEvents[e] = fn;

        if (typeof obj.addEventListener != 'undefined') obj.addEventListener(e, handler, false);
        else if (typeof obj.attachEvent != 'undefined') obj.attachEvent('on' + e, handler);
    },
    removeEvent : function(obj, e) {
        if (!obj.attachedEvents || !obj.attachedEvents[e]) return;
        if (typeof obj.removeEventListener != 'undefined') obj.removeEventListener(e, obj.attachedEvents[e], false);
        else if (typeof obj.detachEvent != 'undefined') obj.detachEvent('on' + e, obj.attachedEvents[e]);
    },
    
    cancelEvent : function(e) {
        var e = e ? e : window.event;
        if(e.preventDefault) e.preventDefault();
        if(e.stopPropagation) e.stopPropagation(); 
        e.cancelBubble = true;
        e.returnValue = false;
        return false;
    },
    coords : function(obj) {
        var c = [0, 0];
        if (obj.x) c = [obj.x, obj.y];
        else if (obj.offsetParent) {
            do { 
                if (obj.nodeName != "TD" || obj.id.substr(0,3) != 'tgf') {
                    c[0] += obj.offsetLeft; 
                    c[1] += obj.offsetTop
                }
            } while (obj = obj.offsetParent);
        }
        return c;
    },
    mouseX : function(e) {
        var x = 0;
        if (!e) var e = window.event;
        if (e.pageX)x = e.pageX;
        else if (e.clientX && document.body.scrollLeft) x = e.clientX + document.body.scrollLeft;
        else if (e.clientX && document.documentElement.scrollLeft) x = e.clientX + document.documentElement.scrollLeft;
        else if (e.clientX) x = e.clientX;
        return x;
    },
    mouseY : function(e) {
        var y = 0;
        if (!e) var e = window.event;
        if (e.pageY) y = e.pageY;
        else if (e.clientY && document.body.scrollTop) y = e.clientY + document.body.scrollTop;
        else if (e.clientY && document.documentElement.scrollTop) y = e.clientY + document.documentElement.scrollTop;
        else if (e.clientY) y = e.clientY;
        return y;
    },
    docWidth : function() {
        return this._sv(window.innerWidth ? window.innerWidth : 0,
                document.documentElement ? document.documentElement.clientWidth : 0,
                document.body ? document.body.clientWidth : 0, true);
    },
    docHeight : function() {
        return this._sv(window.innerHeight ? window.innerHeight : 0,
                document.documentElement ? document.documentElement.clientHeight : 0,
                document.body ? document.body.clientHeight : 0, true);
    },
    clientWidth : function() {
        return this._sv(window.innerWidth ? window.innerWidth : 0,
                document.documentElement ? document.documentElement.clientWidth : 0,
                document.body ? document.body.clientWidth : 0, false);
    },
    clientHeight : function() {
        return this._sv(window.innerHeight ? window.innerHeight : 0,
                document.documentElement ? document.documentElement.clientHeight : 0,
                document.body ? document.body.clientHeight : 0, false);
    }, 
    scrollLeft : function() {
        return this._sv(window.pageXOffset ? window.pageXOffset : 0,
                document.documentElement ? document.documentElement.scrollLeft : 0,
                document.body ? document.body.scrollLeft : 0, false);
    },
    
    scrollTop : function() {
        return this._sv(window.pageYOffset ? window.pageYOffset : 0,
                document.documentElement ? document.documentElement.scrollTop : 0,
                document.body ? document.body.scrollTop : 0, false);
    },
    
    _sv : function(n_win, n_docel, n_body, for_doc) {
        var n_result = n_win ? n_win : 0;
        if (n_docel && (!n_result || (n_result > n_docel))) n_result = n_docel;
            return n_body && (!n_result || (!for_doc && n_result > n_body)) ? n_body : n_result;
    },
    
    scrollTo : function(id) { location.hash = id; }
};
