/* Packed
 *
 * libs/mochikit/Position.js
 *
 */
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.Position");
dojo.require("MochiKit.Base");
dojo.require("MochiKit.DOM");
dojo.require("MochiKit.Style");
}
if(typeof (JSAN)!="undefined"){
JSAN.use("MochiKit.Base",[]);
JSAN.use("MochiKit.DOM",[]);
JSAN.use("MochiKit.Style",[]);
}
try{
if(typeof (MochiKit.Base)=="undefined"||typeof (MochiKit.Style)=="undefined"||typeof (MochiKit.DOM)=="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Style depends on MochiKit.Base, MochiKit.DOM, and MochiKit.Style!";
}
if(typeof (MochiKit.Position)=="undefined"){
MochiKit.Position={};
}
MochiKit.Position.NAME="MochiKit.Position";
MochiKit.Position.VERSION="1.4";
MochiKit.Position.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.Position.toString=function(){
return this.__repr__();
};
MochiKit.Position.EXPORT_OK=[];
MochiKit.Position.EXPORT=[];
MochiKit.Base.update(MochiKit.Position,{includeScrollOffsets:false,prepare:function(){
var _1=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;
var _2=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;
this.windowOffset=new MochiKit.Style.Coordinates(_1,_2);
},cumulativeOffset:function(_3){
var _4=0;
var _5=0;
do{
_4+=_3.offsetTop||0;
_5+=_3.offsetLeft||0;
_3=_3.offsetParent;
}while(_3);
return new MochiKit.Style.Coordinates(_5,_4);
},realOffset:function(_6){
var _7=0;
var _8=0;
do{
_7+=_6.scrollTop||0;
_8+=_6.scrollLeft||0;
_6=_6.parentNode;
}while(_6);
return new MochiKit.Style.Coordinates(_8,_7);
},within:function(_9,x,y){
if(this.includeScrollOffsets){
return this.withinIncludingScrolloffsets(_9,x,y);
}
this.xcomp=x;
this.ycomp=y;
this.offset=this.cumulativeOffset(_9);
if(_9.style.position=="fixed"){
this.offset.x+=this.windowOffset.x;
this.offset.y+=this.windowOffset.y;
}
return (y>=this.offset.y&&y<this.offset.y+_9.offsetHeight&&x>=this.offset.x&&x<this.offset.x+_9.offsetWidth);
},withinIncludingScrolloffsets:function(_c,x,y){
var _f=this.realOffset(_c);
this.xcomp=x+_f.x-this.windowOffset.x;
this.ycomp=y+_f.y-this.windowOffset.y;
this.offset=this.cumulativeOffset(_c);
return (this.ycomp>=this.offset.y&&this.ycomp<this.offset.y+_c.offsetHeight&&this.xcomp>=this.offset.x&&this.xcomp<this.offset.x+_c.offsetWidth);
},overlap:function(_10,_11){
if(!_10){
return 0;
}
if(_10=="vertical"){
return ((this.offset.y+_11.offsetHeight)-this.ycomp)/_11.offsetHeight;
}
if(_10=="horizontal"){
return ((this.offset.x+_11.offsetWidth)-this.xcomp)/_11.offsetWidth;
}
},absolutize:function(_12){
_12=MochiKit.DOM.getElement(_12);
if(_12.style.position=="absolute"){
return;
}
MochiKit.Position.prepare();
var _13=MochiKit.Position.positionedOffset(_12);
var _14=_12.clientWidth;
var _15=_12.clientHeight;
var _16={"position":_12.style.position,"left":_13.x-parseFloat(_12.style.left||0),"top":_13.y-parseFloat(_12.style.top||0),"width":_12.style.width,"height":_12.style.height};
_12.style.position="absolute";
_12.style.top=_13.y+"px";
_12.style.left=_13.x+"px";
_12.style.width=_14+"px";
_12.style.height=_15+"px";
return _16;
},positionedOffset:function(_17){
var _18=0,_19=0;
do{
_18+=_17.offsetTop||0;
_19+=_17.offsetLeft||0;
_17=_17.offsetParent;
if(_17){
p=MochiKit.Style.getStyle(_17,"position");
if(p=="relative"||p=="absolute"){
break;
}
}
}while(_17);
return new MochiKit.Style.Coordinates(_19,_18);
},relativize:function(_1a,_1b){
_1a=MochiKit.DOM.getElement(_1a);
if(_1a.style.position=="relative"){
return;
}
MochiKit.Position.prepare();
var top=parseFloat(_1a.style.top||0)-(_1b["top"]||0);
var _1d=parseFloat(_1a.style.left||0)-(_1b["left"]||0);
_1a.style.position=_1b["position"];
_1a.style.top=top+"px";
_1a.style.left=_1d+"px";
_1a.style.width=_1b["width"];
_1a.style.height=_1b["height"];
},clone:function(_1e,_1f){
_1e=MochiKit.DOM.getElement(_1e);
_1f=MochiKit.DOM.getElement(_1f);
_1f.style.position="absolute";
var _20=this.cumulativeOffset(_1e);
_1f.style.top=_20.y+"px";
_1f.style.left=_20.x+"px";
_1f.style.width=_1e.offsetWidth+"px";
_1f.style.height=_1e.offsetHeight+"px";
},page:function(_21){
var _22=0;
var _23=0;
var _24=_21;
do{
_22+=_24.offsetTop||0;
_23+=_24.offsetLeft||0;
if(_24.offsetParent==document.body&&MochiKit.Style.getStyle(_24,"position")=="absolute"){
break;
}
}while(_24=_24.offsetParent);
_24=_21;
do{
_22-=_24.scrollTop||0;
_23-=_24.scrollLeft||0;
}while(_24=_24.parentNode);
return new MochiKit.Style.Coordinates(_23,_22);
}});
MochiKit.Position.__new__=function(win){
var m=MochiKit.Base;
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
m.nameFunctions(this);
};
MochiKit.Position.__new__(this);



