POE-Component-Server-Bayeux
view release on metacpan or search on metacpan
htdocs/examples/dojo/dojo/dojo.js.uncompressed.js view on Meta::CPAN
dojo._abs = function(/*DomNode*/node, /*Boolean?*/includeScroll){
// summary:
// Gets the position of the passed element relative to
// the viewport (if includeScroll==false), or relative to the
// document root (if includeScroll==true).
//
// Returns an object of the form:
// { x: 100, y: 300 }
// if includeScroll is passed, the x and y values will include any
// document offsets that may affect the position relative to the
// viewport.
// FIXME: need to decide in the brave-new-world if we're going to be
// margin-box or border-box.
var ownerDocument = node.ownerDocument;
var ret = {
x: 0,
y: 0
};
// targetBoxType == "border-box"
var db = d.body();
if(d.isIE || (d.isFF >= 3)){
var client = node.getBoundingClientRect();
var offset = (d.isIE) ? d._getIeDocumentElementOffset() : { x: 0, y: 0};
ret.x = client.left - offset.x;
ret.y = client.top - offset.y;
}else if(ownerDocument["getBoxObjectFor"]){
// mozilla
var bo = ownerDocument.getBoxObjectFor(node),
b = d._getBorderExtents(node);
ret.x = bo.x - b.l - _sumAncestorProperties(node, "scrollLeft");
ret.y = bo.y - b.t - _sumAncestorProperties(node, "scrollTop");
}else{
if(node["offsetParent"]){
var endNode;
// in Safari, if the node is an absolutely positioned child of
// the body and the body has a margin the offset of the child
// and the body contain the body's margins, so we need to end
// at the body
// FIXME: getting contrary results to the above in latest WebKit.
if(d.isSafari &&
//(node.style.getPropertyValue("position") == "absolute") &&
(gcs(node).position == "absolute") &&
(node.parentNode == db)){
endNode = db;
}else{
endNode = db.parentNode;
}
if(node.parentNode != db){
var nd = node;
if(d.isOpera){ nd = db; }
ret.x -= _sumAncestorProperties(nd, "scrollLeft");
ret.y -= _sumAncestorProperties(nd, "scrollTop");
}
var curnode = node;
do{
var n = curnode.offsetLeft;
//FIXME: ugly hack to workaround the submenu in
//popupmenu2 does not shown up correctly in opera.
//Someone have a better workaround?
if(!d.isOpera || n > 0){
ret.x += isNaN(n) ? 0 : n;
}
var t = curnode.offsetTop;
ret.y += isNaN(t) ? 0 : t;
if(d.isSafari && curnode != node){
var cs = gcs(curnode);
ret.x += px(curnode, cs.borderLeftWidth);
ret.y += px(curnode, cs.borderTopWidth);
}
curnode = curnode.offsetParent;
}while((curnode != endNode) && curnode);
}else if(node.x && node.y){
ret.x += isNaN(node.x) ? 0 : node.x;
ret.y += isNaN(node.y) ? 0 : node.y;
}
}
// account for document scrolling
// if offsetParent is used, ret value already includes scroll position
// so we may have to actually remove that value if !includeScroll
if(includeScroll){
var scroll = d._docScroll();
ret.y += scroll.y;
ret.x += scroll.x;
}
return ret; // object
}
// FIXME: need a setter for coords or a moveTo!!
dojo.coords = function(/*DomNode|String*/node, /*Boolean?*/includeScroll){
// summary:
// Returns an object that measures margin box width/height and
// absolute positioning data from dojo._abs().
//
// description:
// Returns an object that measures margin box width/height and
// absolute positioning data from dojo._abs().
// Return value will be in the form:
// `{ l: 50, t: 200, w: 300: h: 150, x: 100, y: 300 }`
// Does not act as a setter. If includeScroll is passed, the x and
// y params are affected as one would expect in dojo._abs().
var n=d.byId(node), s=gcs(n), mb=d._getMarginBox(n, s);
var abs = d._abs(n, includeScroll);
mb.x = abs.x;
mb.y = abs.y;
return mb;
}
// =============================
// Element attribute Functions
// =============================
var _fixAttrName = function(/*String*/name){
switch(name.toLowerCase()){
case "tabindex":
// Internet Explorer will only set or remove tabindex
// if it is spelled "tabIndex"
// console.debug((dojo.isIE && dojo.isIE < 8)? "tabIndex" : "tabindex");
( run in 0.774 second using v1.01-cache-2.11-cpan-364913b4093 )