Subversion Repositories Applications.papyrus

Rev

Rev 1987 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
        Copyright (c) 2004-2006, The Dojo Foundation
        All Rights Reserved.

        Licensed under the Academic Free License version 2.1 or above OR the
        modified BSD license. For more information on Dojo licensing, see:

                http://dojotoolkit.org/community/licensing.shtml
*/



dojo.provide("dojo.html.common");
dojo.require("dojo.lang.common");
dojo.require("dojo.dom");
dojo.lang.mixin(dojo.html, dojo.dom);
dojo.html.body = function () {
        dojo.deprecated("dojo.html.body() moved to dojo.body()", "0.5");
        return dojo.body();
};
dojo.html.getEventTarget = function (evt) {
        if (!evt) {
                evt = dojo.global().event || {};
        }
        var t = (evt.srcElement ? evt.srcElement : (evt.target ? evt.target : null));
        while ((t) && (t.nodeType != 1)) {
                t = t.parentNode;
        }
        return t;
};
dojo.html.getViewport = function () {
        var _window = dojo.global();
        var _document = dojo.doc();
        var w = 0;
        var h = 0;
        if (dojo.render.html.mozilla) {
                w = _document.documentElement.clientWidth;
                h = _window.innerHeight;
        } else {
                if (!dojo.render.html.opera && _window.innerWidth) {
                        w = _window.innerWidth;
                        h = _window.innerHeight;
                } else {
                        if (!dojo.render.html.opera && dojo.exists(_document, "documentElement.clientWidth")) {
                                var w2 = _document.documentElement.clientWidth;
                                if (!w || w2 && w2 < w) {
                                        w = w2;
                                }
                                h = _document.documentElement.clientHeight;
                        } else {
                                if (dojo.body().clientWidth) {
                                        w = dojo.body().clientWidth;
                                        h = dojo.body().clientHeight;
                                }
                        }
                }
        }
        return {width:w, height:h};
};
dojo.html.getScroll = function () {
        var _window = dojo.global();
        var _document = dojo.doc();
        var top = _window.pageYOffset || _document.documentElement.scrollTop || dojo.body().scrollTop || 0;
        var left = _window.pageXOffset || _document.documentElement.scrollLeft || dojo.body().scrollLeft || 0;
        return {top:top, left:left, offset:{x:left, y:top}};
};
dojo.html.getParentByType = function (node, type) {
        var _document = dojo.doc();
        var parent = dojo.byId(node);
        type = type.toLowerCase();
        while ((parent) && (parent.nodeName.toLowerCase() != type)) {
                if (parent == (_document["body"] || _document["documentElement"])) {
                        return null;
                }
                parent = parent.parentNode;
        }
        return parent;
};
dojo.html.getAttribute = function (node, attr) {
        node = dojo.byId(node);
        if ((!node) || (!node.getAttribute)) {
                return null;
        }
        var ta = typeof attr == "string" ? attr : new String(attr);
        var v = node.getAttribute(ta.toUpperCase());
        if ((v) && (typeof v == "string") && (v != "")) {
                return v;
        }
        if (v && v.value) {
                return v.value;
        }
        if ((node.getAttributeNode) && (node.getAttributeNode(ta))) {
                return (node.getAttributeNode(ta)).value;
        } else {
                if (node.getAttribute(ta)) {
                        return node.getAttribute(ta);
                } else {
                        if (node.getAttribute(ta.toLowerCase())) {
                                return node.getAttribute(ta.toLowerCase());
                        }
                }
        }
        return null;
};
dojo.html.hasAttribute = function (node, attr) {
        return dojo.html.getAttribute(dojo.byId(node), attr) ? true : false;
};
dojo.html.getCursorPosition = function (e) {
        e = e || dojo.global().event;
        var cursor = {x:0, y:0};
        if (e.pageX || e.pageY) {
                cursor.x = e.pageX;
                cursor.y = e.pageY;
        } else {
                var de = dojo.doc().documentElement;
                var db = dojo.body();
                cursor.x = e.clientX + ((de || db)["scrollLeft"]) - ((de || db)["clientLeft"]);
                cursor.y = e.clientY + ((de || db)["scrollTop"]) - ((de || db)["clientTop"]);
        }
        return cursor;
};
dojo.html.isTag = function (node) {
        node = dojo.byId(node);
        if (node && node.tagName) {
                for (var i = 1; i < arguments.length; i++) {
                        if (node.tagName.toLowerCase() == String(arguments[i]).toLowerCase()) {
                                return String(arguments[i]).toLowerCase();
                        }
                }
        }
        return "";
};
if (dojo.render.html.ie && !dojo.render.html.ie70) {
        if (window.location.href.substr(0, 6).toLowerCase() != "https:") {
                (function () {
                        var xscript = dojo.doc().createElement("script");
                        xscript.src = "javascript:'dojo.html.createExternalElement=function(doc, tag){ return doc.createElement(tag); }'";
                        dojo.doc().getElementsByTagName("head")[0].appendChild(xscript);
                })();
        }
} else {
        dojo.html.createExternalElement = function (doc, tag) {
                return doc.createElement(tag);
        };
}
dojo.html._callDeprecated = function (inFunc, replFunc, args, argName, retValue) {
        dojo.deprecated("dojo.html." + inFunc, "replaced by dojo.html." + replFunc + "(" + (argName ? "node, {" + argName + ": " + argName + "}" : "") + ")" + (retValue ? "." + retValue : ""), "0.5");
        var newArgs = [];
        if (argName) {
                var argsIn = {};
                argsIn[argName] = args[1];
                newArgs.push(args[0]);
                newArgs.push(argsIn);
        } else {
                newArgs = args;
        }
        var ret = dojo.html[replFunc].apply(dojo.html, args);
        if (retValue) {
                return ret[retValue];
        } else {
                return ret;
        }
};
dojo.html.getViewportWidth = function () {
        return dojo.html._callDeprecated("getViewportWidth", "getViewport", arguments, null, "width");
};
dojo.html.getViewportHeight = function () {
        return dojo.html._callDeprecated("getViewportHeight", "getViewport", arguments, null, "height");
};
dojo.html.getViewportSize = function () {
        return dojo.html._callDeprecated("getViewportSize", "getViewport", arguments);
};
dojo.html.getScrollTop = function () {
        return dojo.html._callDeprecated("getScrollTop", "getScroll", arguments, null, "top");
};
dojo.html.getScrollLeft = function () {
        return dojo.html._callDeprecated("getScrollLeft", "getScroll", arguments, null, "left");
};
dojo.html.getScrollOffset = function () {
        return dojo.html._callDeprecated("getScrollOffset", "getScroll", arguments, null, "offset");
};