layout.js
资源名称:oa.rar [点击查看]
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:14k
源码类别:
OA系统
开发平台:
Java
- /*
- 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.layout");
- dojo.require("dojo.html.common");
- dojo.require("dojo.html.style");
- dojo.require("dojo.html.display");
- dojo.html.sumAncestorProperties = function (node, prop) {
- node = dojo.byId(node);
- if (!node) {
- return 0;
- }
- var retVal = 0;
- while (node) {
- if (dojo.html.getComputedStyle(node, "position") == "fixed") {
- return 0;
- }
- var val = node[prop];
- if (val) {
- retVal += val - 0;
- if (node == dojo.body()) {
- break;
- }
- }
- node = node.parentNode;
- }
- return retVal;
- };
- dojo.html.setStyleAttributes = function (node, attributes) {
- node = dojo.byId(node);
- var splittedAttribs = attributes.replace(/(;)?s*$/, "").split(";");
- for (var i = 0; i < splittedAttribs.length; i++) {
- var nameValue = splittedAttribs[i].split(":");
- var name = nameValue[0].replace(/s*$/, "").replace(/^s*/, "").toLowerCase();
- var value = nameValue[1].replace(/s*$/, "").replace(/^s*/, "");
- switch (name) {
- case "opacity":
- dojo.html.setOpacity(node, value);
- break;
- case "content-height":
- dojo.html.setContentBox(node, {height:value});
- break;
- case "content-width":
- dojo.html.setContentBox(node, {width:value});
- break;
- case "outer-height":
- dojo.html.setMarginBox(node, {height:value});
- break;
- case "outer-width":
- dojo.html.setMarginBox(node, {width:value});
- break;
- default:
- node.style[dojo.html.toCamelCase(name)] = value;
- }
- }
- };
- dojo.html.boxSizing = {MARGIN_BOX:"margin-box", BORDER_BOX:"border-box", PADDING_BOX:"padding-box", CONTENT_BOX:"content-box"};
- dojo.html.getAbsolutePosition = dojo.html.abs = function (node, includeScroll, boxType) {
- node = dojo.byId(node, node.ownerDocument);
- var ret = {x:0, y:0};
- var bs = dojo.html.boxSizing;
- if (!boxType) {
- boxType = bs.CONTENT_BOX;
- }
- var nativeBoxType = 2;
- var targetBoxType;
- switch (boxType) {
- case bs.MARGIN_BOX:
- targetBoxType = 3;
- break;
- case bs.BORDER_BOX:
- targetBoxType = 2;
- break;
- case bs.PADDING_BOX:
- default:
- targetBoxType = 1;
- break;
- case bs.CONTENT_BOX:
- targetBoxType = 0;
- break;
- }
- var h = dojo.render.html;
- var db = document["body"] || document["documentElement"];
- if (h.ie) {
- with (node.getBoundingClientRect()) {
- ret.x = left - 2;
- ret.y = top - 2;
- }
- } else {
- if (document.getBoxObjectFor) {
- nativeBoxType = 1;
- try {
- var bo = document.getBoxObjectFor(node);
- ret.x = bo.x - dojo.html.sumAncestorProperties(node, "scrollLeft");
- ret.y = bo.y - dojo.html.sumAncestorProperties(node, "scrollTop");
- }
- catch (e) {
- }
- } else {
- if (node["offsetParent"]) {
- var endNode;
- if ((h.safari) && (node.style.getPropertyValue("position") == "absolute") && (node.parentNode == db)) {
- endNode = db;
- } else {
- endNode = db.parentNode;
- }
- if (node.parentNode != db) {
- var nd = node;
- if (dojo.render.html.opera) {
- nd = db;
- }
- ret.x -= dojo.html.sumAncestorProperties(nd, "scrollLeft");
- ret.y -= dojo.html.sumAncestorProperties(nd, "scrollTop");
- }
- var curnode = node;
- do {
- var n = curnode["offsetLeft"];
- if (!h.opera || n > 0) {
- ret.x += isNaN(n) ? 0 : n;
- }
- var m = curnode["offsetTop"];
- ret.y += isNaN(m) ? 0 : m;
- curnode = curnode.offsetParent;
- } while ((curnode != endNode) && (curnode != null));
- } else {
- if (node["x"] && node["y"]) {
- ret.x += isNaN(node.x) ? 0 : node.x;
- ret.y += isNaN(node.y) ? 0 : node.y;
- }
- }
- }
- }
- if (includeScroll) {
- var scroll = dojo.html.getScroll();
- ret.y += scroll.top;
- ret.x += scroll.left;
- }
- var extentFuncArray = [dojo.html.getPaddingExtent, dojo.html.getBorderExtent, dojo.html.getMarginExtent];
- if (nativeBoxType > targetBoxType) {
- for (var i = targetBoxType; i < nativeBoxType; ++i) {
- ret.y += extentFuncArray[i](node, "top");
- ret.x += extentFuncArray[i](node, "left");
- }
- } else {
- if (nativeBoxType < targetBoxType) {
- for (var i = targetBoxType; i > nativeBoxType; --i) {
- ret.y -= extentFuncArray[i - 1](node, "top");
- ret.x -= extentFuncArray[i - 1](node, "left");
- }
- }
- }
- ret.top = ret.y;
- ret.left = ret.x;
- return ret;
- };
- dojo.html.isPositionAbsolute = function (node) {
- return (dojo.html.getComputedStyle(node, "position") == "absolute");
- };
- dojo.html._sumPixelValues = function (node, selectors, autoIsZero) {
- var total = 0;
- for (var x = 0; x < selectors.length; x++) {
- total += dojo.html.getPixelValue(node, selectors[x], autoIsZero);
- }
- return total;
- };
- dojo.html.getMargin = function (node) {
- return {width:dojo.html._sumPixelValues(node, ["margin-left", "margin-right"], (dojo.html.getComputedStyle(node, "position") == "absolute")), height:dojo.html._sumPixelValues(node, ["margin-top", "margin-bottom"], (dojo.html.getComputedStyle(node, "position") == "absolute"))};
- };
- dojo.html.getBorder = function (node) {
- return {width:dojo.html.getBorderExtent(node, "left") + dojo.html.getBorderExtent(node, "right"), height:dojo.html.getBorderExtent(node, "top") + dojo.html.getBorderExtent(node, "bottom")};
- };
- dojo.html.getBorderExtent = function (node, side) {
- return (dojo.html.getStyle(node, "border-" + side + "-style") == "none" ? 0 : dojo.html.getPixelValue(node, "border-" + side + "-width"));
- };
- dojo.html.getMarginExtent = function (node, side) {
- return dojo.html._sumPixelValues(node, ["margin-" + side], dojo.html.isPositionAbsolute(node));
- };
- dojo.html.getPaddingExtent = function (node, side) {
- return dojo.html._sumPixelValues(node, ["padding-" + side], true);
- };
- dojo.html.getPadding = function (node) {
- return {width:dojo.html._sumPixelValues(node, ["padding-left", "padding-right"], true), height:dojo.html._sumPixelValues(node, ["padding-top", "padding-bottom"], true)};
- };
- dojo.html.getPadBorder = function (node) {
- var pad = dojo.html.getPadding(node);
- var border = dojo.html.getBorder(node);
- return {width:pad.width + border.width, height:pad.height + border.height};
- };
- dojo.html.getBoxSizing = function (node) {
- var h = dojo.render.html;
- var bs = dojo.html.boxSizing;
- if (((h.ie) || (h.opera)) && node.nodeName.toLowerCase() != "img") {
- var cm = document["compatMode"];
- if ((cm == "BackCompat") || (cm == "QuirksMode")) {
- return bs.BORDER_BOX;
- } else {
- return bs.CONTENT_BOX;
- }
- } else {
- if (arguments.length == 0) {
- node = document.documentElement;
- }
- var sizing;
- if (!h.ie) {
- sizing = dojo.html.getStyle(node, "-moz-box-sizing");
- if (!sizing) {
- sizing = dojo.html.getStyle(node, "box-sizing");
- }
- }
- return (sizing ? sizing : bs.CONTENT_BOX);
- }
- };
- dojo.html.isBorderBox = function (node) {
- return (dojo.html.getBoxSizing(node) == dojo.html.boxSizing.BORDER_BOX);
- };
- dojo.html.getBorderBox = function (node) {
- node = dojo.byId(node);
- return {width:node.offsetWidth, height:node.offsetHeight};
- };
- dojo.html.getPaddingBox = function (node) {
- var box = dojo.html.getBorderBox(node);
- var border = dojo.html.getBorder(node);
- return {width:box.width - border.width, height:box.height - border.height};
- };
- dojo.html.getContentBox = function (node) {
- node = dojo.byId(node);
- var padborder = dojo.html.getPadBorder(node);
- return {width:node.offsetWidth - padborder.width, height:node.offsetHeight - padborder.height};
- };
- dojo.html.setContentBox = function (node, args) {
- node = dojo.byId(node);
- var width = 0;
- var height = 0;
- var isbb = dojo.html.isBorderBox(node);
- var padborder = (isbb ? dojo.html.getPadBorder(node) : {width:0, height:0});
- var ret = {};
- if (typeof args.width != "undefined") {
- width = args.width + padborder.width;
- ret.width = dojo.html.setPositivePixelValue(node, "width", width);
- }
- if (typeof args.height != "undefined") {
- height = args.height + padborder.height;
- ret.height = dojo.html.setPositivePixelValue(node, "height", height);
- }
- return ret;
- };
- dojo.html.getMarginBox = function (node) {
- var borderbox = dojo.html.getBorderBox(node);
- var margin = dojo.html.getMargin(node);
- return {width:borderbox.width + margin.width, height:borderbox.height + margin.height};
- };
- dojo.html.setMarginBox = function (node, args) {
- node = dojo.byId(node);
- var width = 0;
- var height = 0;
- var isbb = dojo.html.isBorderBox(node);
- var padborder = (!isbb ? dojo.html.getPadBorder(node) : {width:0, height:0});
- var margin = dojo.html.getMargin(node);
- var ret = {};
- if (typeof args.width != "undefined") {
- width = args.width - padborder.width;
- width -= margin.width;
- ret.width = dojo.html.setPositivePixelValue(node, "width", width);
- }
- if (typeof args.height != "undefined") {
- height = args.height - padborder.height;
- height -= margin.height;
- ret.height = dojo.html.setPositivePixelValue(node, "height", height);
- }
- return ret;
- };
- dojo.html.getElementBox = function (node, type) {
- var bs = dojo.html.boxSizing;
- switch (type) {
- case bs.MARGIN_BOX:
- return dojo.html.getMarginBox(node);
- case bs.BORDER_BOX:
- return dojo.html.getBorderBox(node);
- case bs.PADDING_BOX:
- return dojo.html.getPaddingBox(node);
- case bs.CONTENT_BOX:
- default:
- return dojo.html.getContentBox(node);
- }
- };
- dojo.html.toCoordinateObject = dojo.html.toCoordinateArray = function (coords, includeScroll, boxtype) {
- if (coords instanceof Array || typeof coords == "array") {
- dojo.deprecated("dojo.html.toCoordinateArray", "use dojo.html.toCoordinateObject({left: , top: , width: , height: }) instead", "0.5");
- while (coords.length < 4) {
- coords.push(0);
- }
- while (coords.length > 4) {
- coords.pop();
- }
- var ret = {left:coords[0], top:coords[1], width:coords[2], height:coords[3]};
- } else {
- if (!coords.nodeType && !(coords instanceof String || typeof coords == "string") && ("width" in coords || "height" in coords || "left" in coords || "x" in coords || "top" in coords || "y" in coords)) {
- var ret = {left:coords.left || coords.x || 0, top:coords.top || coords.y || 0, width:coords.width || 0, height:coords.height || 0};
- } else {
- var node = dojo.byId(coords);
- var pos = dojo.html.abs(node, includeScroll, boxtype);
- var marginbox = dojo.html.getMarginBox(node);
- var ret = {left:pos.left, top:pos.top, width:marginbox.width, height:marginbox.height};
- }
- }
- ret.x = ret.left;
- ret.y = ret.top;
- return ret;
- };
- dojo.html.setMarginBoxWidth = dojo.html.setOuterWidth = function (node, width) {
- return dojo.html._callDeprecated("setMarginBoxWidth", "setMarginBox", arguments, "width");
- };
- dojo.html.setMarginBoxHeight = dojo.html.setOuterHeight = function () {
- return dojo.html._callDeprecated("setMarginBoxHeight", "setMarginBox", arguments, "height");
- };
- dojo.html.getMarginBoxWidth = dojo.html.getOuterWidth = function () {
- return dojo.html._callDeprecated("getMarginBoxWidth", "getMarginBox", arguments, null, "width");
- };
- dojo.html.getMarginBoxHeight = dojo.html.getOuterHeight = function () {
- return dojo.html._callDeprecated("getMarginBoxHeight", "getMarginBox", arguments, null, "height");
- };
- dojo.html.getTotalOffset = function (node, type, includeScroll) {
- return dojo.html._callDeprecated("getTotalOffset", "getAbsolutePosition", arguments, null, type);
- };
- dojo.html.getAbsoluteX = function (node, includeScroll) {
- return dojo.html._callDeprecated("getAbsoluteX", "getAbsolutePosition", arguments, null, "x");
- };
- dojo.html.getAbsoluteY = function (node, includeScroll) {
- return dojo.html._callDeprecated("getAbsoluteY", "getAbsolutePosition", arguments, null, "y");
- };
- dojo.html.totalOffsetLeft = function (node, includeScroll) {
- return dojo.html._callDeprecated("totalOffsetLeft", "getAbsolutePosition", arguments, null, "left");
- };
- dojo.html.totalOffsetTop = function (node, includeScroll) {
- return dojo.html._callDeprecated("totalOffsetTop", "getAbsolutePosition", arguments, null, "top");
- };
- dojo.html.getMarginWidth = function (node) {
- return dojo.html._callDeprecated("getMarginWidth", "getMargin", arguments, null, "width");
- };
- dojo.html.getMarginHeight = function (node) {
- return dojo.html._callDeprecated("getMarginHeight", "getMargin", arguments, null, "height");
- };
- dojo.html.getBorderWidth = function (node) {
- return dojo.html._callDeprecated("getBorderWidth", "getBorder", arguments, null, "width");
- };
- dojo.html.getBorderHeight = function (node) {
- return dojo.html._callDeprecated("getBorderHeight", "getBorder", arguments, null, "height");
- };
- dojo.html.getPaddingWidth = function (node) {
- return dojo.html._callDeprecated("getPaddingWidth", "getPadding", arguments, null, "width");
- };
- dojo.html.getPaddingHeight = function (node) {
- return dojo.html._callDeprecated("getPaddingHeight", "getPadding", arguments, null, "height");
- };
- dojo.html.getPadBorderWidth = function (node) {
- return dojo.html._callDeprecated("getPadBorderWidth", "getPadBorder", arguments, null, "width");
- };
- dojo.html.getPadBorderHeight = function (node) {
- return dojo.html._callDeprecated("getPadBorderHeight", "getPadBorder", arguments, null, "height");
- };
- dojo.html.getBorderBoxWidth = dojo.html.getInnerWidth = function () {
- return dojo.html._callDeprecated("getBorderBoxWidth", "getBorderBox", arguments, null, "width");
- };
- dojo.html.getBorderBoxHeight = dojo.html.getInnerHeight = function () {
- return dojo.html._callDeprecated("getBorderBoxHeight", "getBorderBox", arguments, null, "height");
- };
- dojo.html.getContentBoxWidth = dojo.html.getContentWidth = function () {
- return dojo.html._callDeprecated("getContentBoxWidth", "getContentBox", arguments, null, "width");
- };
- dojo.html.getContentBoxHeight = dojo.html.getContentHeight = function () {
- return dojo.html._callDeprecated("getContentBoxHeight", "getContentBox", arguments, null, "height");
- };
- dojo.html.setContentBoxWidth = dojo.html.setContentWidth = function (node, width) {
- return dojo.html._callDeprecated("setContentBoxWidth", "setContentBox", arguments, "width");
- };
- dojo.html.setContentBoxHeight = dojo.html.setContentHeight = function (node, height) {
- return dojo.html._callDeprecated("setContentBoxHeight", "setContentBox", arguments, "height");
- };