/* Packed
 *
 * libs/mochikit/Visual.js
 *
 */
if(typeof (dojo)!="undefined"){
dojo.provide("MochiKit.Visual");
dojo.require("MochiKit.Base");
dojo.require("MochiKit.DOM");
dojo.require("MochiKit.Style");
dojo.require("MochiKit.Color");
dojo.require("MochiKit.Position");
}
if(typeof (JSAN)!="undefined"){
JSAN.use("MochiKit.Base",[]);
JSAN.use("MochiKit.DOM",[]);
JSAN.use("MochiKit.Style",[]);
JSAN.use("MochiKit.Color",[]);
JSAN.use("MochiKit.Position",[]);
}
try{
if(typeof (MochiKit.Base)==="undefined"||typeof (MochiKit.DOM)==="undefined"||typeof (MochiKit.Style)==="undefined"||typeof (MochiKit.Position)==="undefined"||typeof (MochiKit.Color)==="undefined"){
throw "";
}
}
catch(e){
throw "MochiKit.Visual depends on MochiKit.Base, MochiKit.DOM, MochiKit.Style, MochiKit.Position and MochiKit.Color!";
}
if(typeof (MochiKit.Visual)=="undefined"){
MochiKit.Visual={};
}
MochiKit.Visual.NAME="MochiKit.Visual";
MochiKit.Visual.VERSION="1.4";
MochiKit.Visual.__repr__=function(){
return "["+this.NAME+" "+this.VERSION+"]";
};
MochiKit.Visual.toString=function(){
return this.__repr__();
};
MochiKit.Visual._RoundCorners=function(e,_2){
e=MochiKit.DOM.getElement(e);
this._setOptions(_2);
if(this.options.__unstable__wrapElement){
e=this._doWrap(e);
}
var _3=this.options.color;
var C=MochiKit.Color.Color;
if(this.options.color==="fromElement"){
_3=C.fromBackground(e);
}else{
if(!(_3 instanceof C)){
_3=C.fromString(_3);
}
}
this.isTransparent=(_3.asRGB().a<=0);
var _5=this.options.bgColor;
if(this.options.bgColor==="fromParent"){
_5=C.fromBackground(e.offsetParent);
}else{
if(!(_5 instanceof C)){
_5=C.fromString(_5);
}
}
this._roundCornersImpl(e,_3,_5);
};
MochiKit.Visual._RoundCorners.prototype={_doWrap:function(e){
var _7=e.parentNode;
var _8=MochiKit.DOM.currentDocument();
if(typeof (_8.defaultView)==="undefined"||_8.defaultView===null){
return e;
}
var _9=_8.defaultView.getComputedStyle(e,null);
if(typeof (_9)==="undefined"||_9===null){
return e;
}
var _a=MochiKit.DOM.DIV({"style":{display:"block",marginTop:_9.getPropertyValue("padding-top"),marginRight:_9.getPropertyValue("padding-right"),marginBottom:_9.getPropertyValue("padding-bottom"),marginLeft:_9.getPropertyValue("padding-left"),padding:"0px"}});
_a.innerHTML=e.innerHTML;
e.innerHTML="";
e.appendChild(_a);
return e;
},_roundCornersImpl:function(e,_c,_d){
if(this.options.border){
this._renderBorder(e,_d);
}
if(this._isTopRounded()){
this._roundTopCorners(e,_c,_d);
}
if(this._isBottomRounded()){
this._roundBottomCorners(e,_c,_d);
}
},_renderBorder:function(el,_f){
var _10="1px solid "+this._borderColor(_f);
var _11="border-left: "+_10;
var _12="border-right: "+_10;
var _13="style='"+_11+";"+_12+"'";
el.innerHTML="<div "+_13+">"+el.innerHTML+"</div>";
},_roundTopCorners:function(el,_15,_16){
var _17=this._createCorner(_16);
for(var i=0;i<this.options.numSlices;i++){
_17.appendChild(this._createCornerSlice(_15,_16,i,"top"));
}
el.style.paddingTop=0;
el.insertBefore(_17,el.firstChild);
},_roundBottomCorners:function(el,_1a,_1b){
var _1c=this._createCorner(_1b);
for(var i=(this.options.numSlices-1);i>=0;i--){
_1c.appendChild(this._createCornerSlice(_1a,_1b,i,"bottom"));
}
el.style.paddingBottom=0;
el.appendChild(_1c);
},_createCorner:function(_1e){
var dom=MochiKit.DOM;
return dom.DIV({style:{backgroundColor:_1e.toString()}});
},_createCornerSlice:function(_20,_21,n,_23){
var _24=MochiKit.DOM.SPAN();
var _25=_24.style;
_25.backgroundColor=_20.toString();
_25.display="block";
_25.height="1px";
_25.overflow="hidden";
_25.fontSize="1px";
var _26=this._borderColor(_20,_21);
if(this.options.border&&n===0){
_25.borderTopStyle="solid";
_25.borderTopWidth="1px";
_25.borderLeftWidth="0px";
_25.borderRightWidth="0px";
_25.borderBottomWidth="0px";
_25.height="0px";
_25.borderColor=_26.toString();
}else{
if(_26){
_25.borderColor=_26.toString();
_25.borderStyle="solid";
_25.borderWidth="0px 1px";
}
}
if(!this.options.compact&&(n==(this.options.numSlices-1))){
_25.height="2px";
}
this._setMargin(_24,n,_23);
this._setBorder(_24,n,_23);
return _24;
},_setOptions:function(_27){
this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false,__unstable__wrapElement:false};
MochiKit.Base.update(this.options,_27);
this.options.numSlices=(this.options.compact?2:4);
},_whichSideTop:function(){
var _28=this.options.corners;
if(this._hasString(_28,"all","top")){
return "";
}
var _29=(_28.indexOf("tl")!=-1);
var _2a=(_28.indexOf("tr")!=-1);
if(_29&&_2a){
return "";
}
if(_29){
return "left";
}
if(_2a){
return "right";
}
return "";
},_whichSideBottom:function(){
var _2b=this.options.corners;
if(this._hasString(_2b,"all","bottom")){
return "";
}
var _2c=(_2b.indexOf("bl")!=-1);
var _2d=(_2b.indexOf("br")!=-1);
if(_2c&&_2d){
return "";
}
if(_2c){
return "left";
}
if(_2d){
return "right";
}
return "";
},_borderColor:function(_2e,_2f){
if(_2e=="transparent"){
return _2f;
}else{
if(this.options.border){
return this.options.border;
}else{
if(this.options.blend){
return _2f.blendedColor(_2e);
}
}
}
return "";
},_setMargin:function(el,n,_32){
var _33=this._marginSize(n)+"px";
var _34=(_32=="top"?this._whichSideTop():this._whichSideBottom());
var _35=el.style;
if(_34=="left"){
_35.marginLeft=_33;
_35.marginRight="0px";
}else{
if(_34=="right"){
_35.marginRight=_33;
_35.marginLeft="0px";
}else{
_35.marginLeft=_33;
_35.marginRight=_33;
}
}
},_setBorder:function(el,n,_38){
var _39=this._borderSize(n)+"px";
var _3a=(_38=="top"?this._whichSideTop():this._whichSideBottom());
var _3b=el.style;
if(_3a=="left"){
_3b.borderLeftWidth=_39;
_3b.borderRightWidth="0px";
}else{
if(_3a=="right"){
_3b.borderRightWidth=_39;
_3b.borderLeftWidth="0px";
}else{
_3b.borderLeftWidth=_39;
_3b.borderRightWidth=_39;
}
}
},_marginSize:function(n){
if(this.isTransparent){
return 0;
}
var o=this.options;
if(o.compact&&o.blend){
var _3e=[1,0];
return _3e[n];
}else{
if(o.compact){
var _3f=[2,1];
return _3f[n];
}else{
if(o.blend){
var _40=[3,2,1,0];
return _40[n];
}else{
var _41=[5,3,2,1];
return _41[n];
}
}
}
},_borderSize:function(n){
var o=this.options;
var _44;
if(o.compact&&(o.blend||this.isTransparent)){
return 1;
}else{
if(o.compact){
_44=[1,0];
}else{
if(o.blend){
_44=[2,1,1,1];
}else{
if(o.border){
_44=[0,2,0,0];
}else{
if(this.isTransparent){
_44=[5,3,2,1];
}else{
return 0;
}
}
}
}
}
return _44[n];
},_hasString:function(str){
for(var i=1;i<arguments.length;i++){
if(str.indexOf(arguments[i])!=-1){
return true;
}
}
return false;
},_isTopRounded:function(){
return this._hasString(this.options.corners,"all","top","tl","tr");
},_isBottomRounded:function(){
return this._hasString(this.options.corners,"all","bottom","bl","br");
},_hasSingleTextChild:function(el){
return (el.childNodes.length==1&&el.childNodes[0].nodeType==3);
}};
MochiKit.Visual.roundElement=function(e,_49){
new MochiKit.Visual._RoundCorners(e,_49);
};
MochiKit.Visual.roundClass=function(_4a,_4b,_4c){
var _4d=MochiKit.DOM.getElementsByTagAndClassName(_4a,_4b);
for(var i=0;i<_4d.length;i++){
MochiKit.Visual.roundElement(_4d[i],_4c);
}
};
MochiKit.Visual.tagifyText=function(_4f,_50){
_50=_50||"position:relative";
if(/MSIE/.test(navigator.userAgent)){
_50+=";zoom:1";
}
_4f=MochiKit.DOM.getElement(_4f);
var ma=MochiKit.Base.map;
ma(function(_52){
if(_52.nodeType==3){
ma(function(_53){
_4f.insertBefore(MochiKit.DOM.SPAN({style:_50},_53==" "?String.fromCharCode(160):_53),_52);
},_52.nodeValue.split(""));
MochiKit.DOM.removeElement(_52);
}
},_4f.childNodes);
};
MochiKit.Visual.forceRerendering=function(_54){
try{
_54=MochiKit.DOM.getElement(_54);
var n=document.createTextNode(" ");
_54.appendChild(n);
_54.removeChild(n);
}
catch(e){
}
};
MochiKit.Visual.multiple=function(_56,_57,_58){
_58=MochiKit.Base.update({speed:0.1,delay:0},_58||{});
var _59=_58.delay;
var _5a=0;
MochiKit.Base.map(function(_5b){
_58.delay=_5a*_58.speed+_59;
new _57(_5b,_58);
_5a+=1;
},_56);
};
MochiKit.Visual.PAIRS={"slide":["slideDown","slideUp"],"blind":["blindDown","blindUp"],"appear":["appear","fade"],"size":["grow","shrink"]};
MochiKit.Visual.toggle=function(_5c,_5d,_5e){
_5c=MochiKit.DOM.getElement(_5c);
_5d=(_5d||"appear").toLowerCase();
_5e=MochiKit.Base.update({queue:{position:"end",scope:(_5c.id||"global"),limit:1}},_5e||{});
var v=MochiKit.Visual;
v[_5c.style.display!="none"?v.PAIRS[_5d][1]:v.PAIRS[_5d][0]](_5c,_5e);
};
MochiKit.Visual.Transitions={};
MochiKit.Visual.Transitions.linear=function(pos){
return pos;
};
MochiKit.Visual.Transitions.sinoidal=function(pos){
return (-Math.cos(pos*Math.PI)/2)+0.5;
};
MochiKit.Visual.Transitions.reverse=function(pos){
return 1-pos;
};
MochiKit.Visual.Transitions.flicker=function(pos){
return ((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4;
};
MochiKit.Visual.Transitions.wobble=function(pos){
return (-Math.cos(pos*Math.PI*(9*pos))/2)+0.5;
};
MochiKit.Visual.Transitions.pulse=function(pos,_66){
if(!_66){
return (Math.floor(pos*10)%2===0?(pos*10-Math.floor(pos*10)):1-(pos*10-Math.floor(pos*10)));
}
return (Math.round((pos%(1/_66))*_66)==0?((pos*_66*2)-Math.floor(pos*_66*2)):1-((pos*_66*2)-Math.floor(pos*_66*2)));
};
MochiKit.Visual.Transitions.none=function(pos){
return 0;
};
MochiKit.Visual.Transitions.full=function(pos){
return 1;
};
MochiKit.Visual.ScopedQueue=function(){
var cls=arguments.callee;
if(!(this instanceof cls)){
return new cls();
}
this.__init__();
};
MochiKit.Base.update(MochiKit.Visual.ScopedQueue.prototype,{__init__:function(){
this.effects=[];
this.interval=null;
},add:function(_6a){
var _6b=new Date().getTime();
var _6c=(typeof (_6a.options.queue)=="string")?_6a.options.queue:_6a.options.queue.position;
var ma=MochiKit.Base.map;
switch(_6c){
case "front":
ma(function(e){
if(e.state=="idle"){
e.startOn+=_6a.finishOn;
e.finishOn+=_6a.finishOn;
}
},this.effects);
break;
case "end":
var _6f;
ma(function(e){
var i=e.finishOn;
if(i>=(_6f||i)){
_6f=i;
}
},this.effects);
_6b=_6f||_6b;
break;
case "break":
ma(function(e){
e.finalize();
},this.effects);
break;
}
_6a.startOn+=_6b;
_6a.finishOn+=_6b;
if(!_6a.options.queue.limit||this.effects.length<_6a.options.queue.limit){
this.effects.push(_6a);
}
if(!this.interval){
this.interval=this.startLoop(MochiKit.Base.bind(this.loop,this),40);
}
},startLoop:function(_73,_74){
return setInterval(_73,_74);
},remove:function(_75){
this.effects=MochiKit.Base.filter(function(e){
return e!=_75;
},this.effects);
if(!this.effects.length){
this.stopLoop(this.interval);
this.interval=null;
}
},stopLoop:function(_77){
clearInterval(_77);
},loop:function(){
var _78=new Date().getTime();
MochiKit.Base.map(function(_79){
_79.loop(_78);
},this.effects);
}});
MochiKit.Visual.Queues={instances:{},get:function(_7a){
if(typeof (_7a)!="string"){
return _7a;
}
if(!this.instances[_7a]){
this.instances[_7a]=new MochiKit.Visual.ScopedQueue();
}
return this.instances[_7a];
}};
MochiKit.Visual.Queue=MochiKit.Visual.Queues.get("global");
MochiKit.Visual.DefaultOptions={transition:MochiKit.Visual.Transitions.sinoidal,duration:1,fps:25,sync:false,from:0,to:1,delay:0,queue:"parallel"};
MochiKit.Visual.Base=function(){
};
MochiKit.Visual.Base.prototype={__class__:MochiKit.Visual.Base,start:function(_7b){
var v=MochiKit.Visual;
this.options=MochiKit.Base.setdefault(_7b||{},v.DefaultOptions);
this.currentFrame=0;
this.state="idle";
this.startOn=this.options.delay*1000;
this.finishOn=this.startOn+(this.options.duration*1000);
this.event("beforeStart");
if(!this.options.sync){
v.Queues.get(typeof (this.options.queue)=="string"?"global":this.options.queue.scope).add(this);
}
},loop:function(_7d){
if(_7d>=this.startOn){
if(_7d>=this.finishOn){
return this.finalize();
}
var pos=(_7d-this.startOn)/(this.finishOn-this.startOn);
var _7f=Math.round(pos*this.options.fps*this.options.duration);
if(_7f>this.currentFrame){
this.render(pos);
this.currentFrame=_7f;
}
}
},render:function(pos){
if(this.state=="idle"){
this.state="running";
this.event("beforeSetup");
this.setup();
this.event("afterSetup");
}
if(this.state=="running"){
if(this.options.transition){
pos=this.options.transition(pos);
}
pos*=(this.options.to-this.options.from);
pos+=this.options.from;
this.event("beforeUpdate");
this.update(pos);
this.event("afterUpdate");
}
},cancel:function(){
if(!this.options.sync){
MochiKit.Visual.Queues.get(typeof (this.options.queue)=="string"?"global":this.options.queue.scope).remove(this);
}
this.state="finished";
},finalize:function(){
this.render(1);
this.cancel();
this.event("beforeFinish");
this.finish();
this.event("afterFinish");
},setup:function(){
},finish:function(){
},update:function(_81){
},event:function(_82){
if(this.options[_82+"Internal"]){
this.options[_82+"Internal"](this);
}
if(this.options[_82]){
this.options[_82](this);
}
},repr:function(){
return "["+this.__class__.NAME+", options:"+MochiKit.Base.repr(this.options)+"]";
}};
MochiKit.Visual.Parallel=function(_83,_84){
var cls=arguments.callee;
if(!(this instanceof cls)){
return new cls(_83,_84);
}
this.__init__(_83,_84);
};
MochiKit.Visual.Parallel.prototype=new MochiKit.Visual.Base();
MochiKit.Base.update(MochiKit.Visual.Parallel.prototype,{__class__:MochiKit.Visual.Parallel,__init__:function(_86,_87){
this.effects=_86||[];
this.start(_87);
},update:function(_88){
MochiKit.Base.map(function(_89){
_89.render(_88);
},this.effects);
},finish:function(){
MochiKit.Base.map(function(_8a){
_8a.finalize();
},this.effects);
}});
MochiKit.Visual.Opacity=function(_8b,_8c){
var cls=arguments.callee;
if(!(this instanceof cls)){
return new cls(_8b,_8c);
}
this.__init__(_8b,_8c);
};
MochiKit.Visual.Opacity.prototype=new MochiKit.Visual.Base();
MochiKit.Base.update(MochiKit.Visual.Opacity.prototype,{__class__:MochiKit.Visual.Opacity,__init__:function(_8e,_8f){
var b=MochiKit.Base;
var s=MochiKit.Style;
this.element=MochiKit.DOM.getElement(_8e);
if(this.element.currentStyle&&(!this.element.currentStyle.hasLayout)){
s.setStyle(this.element,{zoom:1});
}
_8f=b.update({from:s.getStyle(this.element,"opacity")||0,to:1},_8f||{});
this.start(_8f);
},update:function(_92){
MochiKit.Style.setStyle(this.element,{"opacity":_92});
}});
MochiKit.Visual.Move=function(_93,_94){
var cls=arguments.callee;
if(!(this instanceof cls)){
return new cls(_93,_94);
}
this.__init__(_93,_94);
};
MochiKit.Visual.Move.prototype=new MochiKit.Visual.Base();
MochiKit.Base.update(MochiKit.Visual.Move.prototype,{__class__:MochiKit.Visual.Move,__init__:function(_96,_97){
this.element=MochiKit.DOM.getElement(_96);
_97=MochiKit.Base.update({x:0,y:0,mode:"relative"},_97||{});
this.start(_97);
},setup:function(){
MochiKit.DOM.makePositioned(this.element);
var s=this.element.style;
var _99=s.visibility;
var _9a=s.display;
if(_9a=="none"){
s.visibility="hidden";
s.display="";
}
this.originalLeft=parseFloat(MochiKit.Style.getStyle(this.element,"left")||"0");
this.originalTop=parseFloat(MochiKit.Style.getStyle(this.element,"top")||"0");
if(this.options.mode=="absolute"){
this.options.x-=this.originalLeft;
this.options.y-=this.originalTop;
}
if(_9a=="none"){
s.visibility=_99;
s.display=_9a;
}
},update:function(_9b){
MochiKit.Style.setStyle(this.element,{left:Math.round(this.options.x*_9b+this.originalLeft)+"px",top:Math.round(this.options.y*_9b+this.originalTop)+"px"});
}});
MochiKit.Visual.Scale=function(_9c,_9d,_9e){
var cls=arguments.callee;
if(!(this instanceof cls)){
return new cls(_9c,_9d,_9e);
}
this.__init__(_9c,_9d,_9e);
};
MochiKit.Visual.Scale.prototype=new MochiKit.Visual.Base();
MochiKit.Base.update(MochiKit.Visual.Scale.prototype,{__class__:MochiKit.Visual.Scale,__init__:function(_a0,_a1,_a2){
this.element=MochiKit.DOM.getElement(_a0);
_a2=MochiKit.Base.update({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100,scaleTo:_a1},_a2||{});
this.start(_a2);
},setup:function(){
this.restoreAfterFinish=this.options.restoreAfterFinish||false;
this.elementPositioning=MochiKit.Style.getStyle(this.element,"position");
var ma=MochiKit.Base.map;
var b=MochiKit.Base.bind;
this.originalStyle={};
ma(b(function(k){
this.originalStyle[k]=this.element.style[k];
},this),["top","left","width","height","fontSize"]);
this.originalTop=this.element.offsetTop;
this.originalLeft=this.element.offsetLeft;
var _a6=MochiKit.Style.getStyle(this.element,"font-size")||"100%";
ma(b(function(_a7){
if(_a6.indexOf(_a7)>0){
this.fontSize=parseFloat(_a6);
this.fontSizeType=_a7;
}
},this),["em","px","%"]);
this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;
if(/^content/.test(this.options.scaleMode)){
this.dims=[this.element.scrollHeight,this.element.scrollWidth];
}else{
if(this.options.scaleMode=="box"){
this.dims=[this.element.offsetHeight,this.element.offsetWidth];
}else{
this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];
}
}
},update:function(_a8){
var _a9=(this.options.scaleFrom/100)+(this.factor*_a8);
if(this.options.scaleContent&&this.fontSize){
MochiKit.Style.setStyle(this.element,{fontSize:this.fontSize*_a9+this.fontSizeType});
}
this.setDimensions(this.dims[0]*_a9,this.dims[1]*_a9);
},finish:function(){
if(this.restoreAfterFinish){
MochiKit.Style.setStyle(this.element,this.originalStyle);
}
},setDimensions:function(_aa,_ab){
var d={};
var r=Math.round;
if(/MSIE/.test(navigator.userAgent)){
r=Math.ceil;
}
if(this.options.scaleX){
d.width=r(_ab)+"px";
}
if(this.options.scaleY){
d.height=r(_aa)+"px";
}
if(this.options.scaleFromCenter){
var _ae=(_aa-this.dims[0])/2;
var _af=(_ab-this.dims[1])/2;
if(this.elementPositioning=="absolute"){
if(this.options.scaleY){
d.top=this.originalTop-_ae+"px";
}
if(this.options.scaleX){
d.left=this.originalLeft-_af+"px";
}
}else{
if(this.options.scaleY){
d.top=-_ae+"px";
}
if(this.options.scaleX){
d.left=-_af+"px";
}
}
}
MochiKit.Style.setStyle(this.element,d);
}});
MochiKit.Visual.Highlight=function(_b0,_b1){
var cls=arguments.callee;
if(!(this instanceof cls)){
return new cls(_b0,_b1);
}
this.__init__(_b0,_b1);
};
MochiKit.Visual.Highlight.prototype=new MochiKit.Visual.Base();
MochiKit.Base.update(MochiKit.Visual.Highlight.prototype,{__class__:MochiKit.Visual.Highlight,__init__:function(_b3,_b4){
this.element=MochiKit.DOM.getElement(_b3);
_b4=MochiKit.Base.update({startcolor:"#ffff99"},_b4||{});
this.start(_b4);
},setup:function(){
var b=MochiKit.Base;
var s=MochiKit.Style;
if(s.getStyle(this.element,"display")=="none"){
this.cancel();
return;
}
this.oldStyle={backgroundImage:s.getStyle(this.element,"background-image")};
s.setStyle(this.element,{backgroundImage:"none"});
if(!this.options.endcolor){
this.options.endcolor=MochiKit.Color.Color.fromBackground(this.element).toHexString();
}
if(b.isUndefinedOrNull(this.options.restorecolor)){
this.options.restorecolor=s.getStyle(this.element,"background-color");
}
this._base=b.map(b.bind(function(i){
return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16);
},this),[0,1,2]);
this._delta=b.map(b.bind(function(i){
return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i];
},this),[0,1,2]);
},update:function(_b9){
var m="#";
MochiKit.Base.map(MochiKit.Base.bind(function(i){
m+=MochiKit.Color.toColorPart(Math.round(this._base[i]+this._delta[i]*_b9));
},this),[0,1,2]);
MochiKit.Style.setStyle(this.element,{backgroundColor:m});
},finish:function(){
MochiKit.Style.setStyle(this.element,MochiKit.Base.update(this.oldStyle,{backgroundColor:this.options.restorecolor}));
}});
MochiKit.Visual.ScrollTo=function(_bc,_bd){
var cls=arguments.callee;
if(!(this instanceof cls)){
return new cls(_bc,_bd);
}
this.__init__(_bc,_bd);
};
MochiKit.Visual.ScrollTo.prototype=new MochiKit.Visual.Base();
MochiKit.Base.update(MochiKit.Visual.ScrollTo.prototype,{__class__:MochiKit.Visual.ScrollTo,__init__:function(_bf,_c0){
this.element=MochiKit.DOM.getElement(_bf);
this.start(_c0||{});
},setup:function(){
var p=MochiKit.Position;
p.prepare();
var _c2=p.cumulativeOffset(this.element);
if(this.options.offset){
_c2.y+=this.options.offset;
}
var max;
if(window.innerHeight){
max=window.innerHeight-window.height;
}else{
if(document.documentElement&&document.documentElement.clientHeight){
max=document.documentElement.clientHeight-document.body.scrollHeight;
}else{
if(document.body){
max=document.body.clientHeight-document.body.scrollHeight;
}
}
}
this.scrollStart=p.windowOffset.y;
this.delta=(_c2.y>max?max:_c2.y)-this.scrollStart;
},update:function(_c4){
var p=MochiKit.Position;
p.prepare();
window.scrollTo(p.windowOffset.x,this.scrollStart+(_c4*this.delta));
}});
MochiKit.Visual.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
MochiKit.Visual.Morph=function(_c6,_c7){
var cls=arguments.callee;
if(!(this instanceof cls)){
return new cls(_c6,_c7);
}
this.__init__(_c6,_c7);
};
MochiKit.Visual.Morph.prototype=new MochiKit.Visual.Base();
MochiKit.Base.update(MochiKit.Visual.Morph.prototype,{__class__:MochiKit.Visual.Morph,__init__:function(_c9,_ca){
this.element=MochiKit.DOM.getElement(_c9);
this.start(_ca||{});
},setup:function(){
var b=MochiKit.Base;
var _cc=this.options.style;
this.styleStart={};
this.styleEnd={};
this.units={};
var _cd,_ce;
for(var s in _cc){
_cd=_cc[s];
s=b.camelize(s);
if(MochiKit.Visual.CSS_LENGTH.test(_cd)){
var _d0=_cd.match(/^([\+\-]?[0-9\.]+)(.*)$/);
_cd=parseFloat(_d0[1]);
_ce=(_d0.length==3)?_d0[2]:null;
this.styleEnd[s]=_cd;
this.units[s]=_ce;
_cd=MochiKit.Style.getStyle(this.element,s);
_d0=_cd.match(/^([\+\-]?[0-9\.]+)(.*)$/);
_cd=parseFloat(_d0[1]);
this.styleStart[s]=_cd;
}else{
var c=MochiKit.Color.Color;
_cd=c.fromString(_cd);
if(_cd){
this.units[s]="color";
this.styleEnd[s]=_cd.toHexString();
_cd=MochiKit.Style.getStyle(this.element,s);
this.styleStart[s]=c.fromString(_cd).toHexString();
this.styleStart[s]=b.map(b.bind(function(i){
return parseInt(this.styleStart[s].slice(i*2+1,i*2+3),16);
},this),[0,1,2]);
this.styleEnd[s]=b.map(b.bind(function(i){
return parseInt(this.styleEnd[s].slice(i*2+1,i*2+3),16);
},this),[0,1,2]);
}
}
}
},update:function(_d4){
var _d5;
for(var s in this.styleStart){
if(this.units[s]=="color"){
var m="#";
var _d8=this.styleStart[s];
var end=this.styleEnd[s];
MochiKit.Base.map(MochiKit.Base.bind(function(i){
m+=MochiKit.Color.toColorPart(Math.round(_d8[i]+(end[i]-_d8[i])*_d4));
},this),[0,1,2]);
this.element.style[s]=m;
}else{
_d5=this.styleStart[s]+Math.round((this.styleEnd[s]-this.styleStart[s])*_d4*1000)/1000+this.units[s];
this.element.style[s]=_d5;
}
}
}});
MochiKit.Visual.fade=function(_db,_dc){
var s=MochiKit.Style;
var _de=s.getStyle(_db,"opacity");
_dc=MochiKit.Base.update({from:s.getStyle(_db,"opacity")||1,to:0,afterFinishInternal:function(_df){
if(_df.options.to!==0){
return;
}
s.hideElement(_df.element);
s.setStyle(_df.element,{"opacity":_de});
}},_dc||{});
return new MochiKit.Visual.Opacity(_db,_dc);
};
MochiKit.Visual.appear=function(_e0,_e1){
var s=MochiKit.Style;
var v=MochiKit.Visual;
_e1=MochiKit.Base.update({from:(s.getStyle(_e0,"display")=="none"?0:s.getStyle(_e0,"opacity")||0),to:1,afterFinishInternal:function(_e4){
v.forceRerendering(_e4.element);
},beforeSetupInternal:function(_e5){
s.setStyle(_e5.element,{"opacity":_e5.options.from});
s.showElement(_e5.element);
}},_e1||{});
return new v.Opacity(_e0,_e1);
};
MochiKit.Visual.puff=function(_e6,_e7){
var s=MochiKit.Style;
var v=MochiKit.Visual;
_e6=MochiKit.DOM.getElement(_e6);
var _ea={position:s.getStyle(_e6,"position"),top:_e6.style.top,left:_e6.style.left,width:_e6.style.width,height:_e6.style.height,opacity:s.getStyle(_e6,"opacity")};
_e7=MochiKit.Base.update({beforeSetupInternal:function(_eb){
MochiKit.Position.absolutize(_eb.effects[0].element);
},afterFinishInternal:function(_ec){
s.hideElement(_ec.effects[0].element);
s.setStyle(_ec.effects[0].element,_ea);
},scaleContent:true,scaleFromCenter:true},_e7||{});
return new v.Parallel([new v.Scale(_e6,200,{sync:true,scaleFromCenter:_e7.scaleFromCenter,scaleContent:_e7.scaleContent,restoreAfterFinish:true}),new v.Opacity(_e6,{sync:true,to:0})],_e7);
};
MochiKit.Visual.blindUp=function(_ed,_ee){
var d=MochiKit.DOM;
_ed=d.getElement(_ed);
var _f0=d.makeClipping(_ed);
_ee=MochiKit.Base.update({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(_f1){
MochiKit.Style.hideElement(_f1.element);
d.undoClipping(_f1.element,_f0);
}},_ee||{});
return new MochiKit.Visual.Scale(_ed,0,_ee);
};
MochiKit.Visual.blindDown=function(_f2,_f3){
var d=MochiKit.DOM;
var s=MochiKit.Style;
_f2=d.getElement(_f2);
var _f6=s.getElementDimensions(_f2);
var _f7;
_f3=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:_f6.h,originalWidth:_f6.w},restoreAfterFinish:true,afterSetupInternal:function(_f8){
_f7=d.makeClipping(_f8.element);
s.setStyle(_f8.element,{height:"0px"});
s.showElement(_f8.element);
},afterFinishInternal:function(_f9){
d.undoClipping(_f9.element,_f7);
}},_f3||{});
return new MochiKit.Visual.Scale(_f2,100,_f3);
};
MochiKit.Visual.switchOff=function(_fa,_fb){
var d=MochiKit.DOM;
_fa=d.getElement(_fa);
var _fd=MochiKit.Style.getStyle(_fa,"opacity");
var _fe;
_fb=MochiKit.Base.update({duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetupInternal:function(_ff){
d.makePositioned(_ff.element);
_fe=d.makeClipping(_ff.element);
},afterFinishInternal:function(_100){
MochiKit.Style.hideElement(_100.element);
d.undoClipping(_100.element,_fe);
d.undoPositioned(_100.element);
MochiKit.Style.setStyle(_100.element,{"opacity":_fd});
}},_fb||{});
var v=MochiKit.Visual;
return new v.appear(_fa,{duration:0.4,from:0,transition:v.Transitions.flicker,afterFinishInternal:function(_102){
new v.Scale(_102.element,1,_fb);
}});
};
MochiKit.Visual.dropOut=function(_103,_104){
var d=MochiKit.DOM;
var s=MochiKit.Style;
_103=d.getElement(_103);
var _107={top:s.getStyle(_103,"top"),left:s.getStyle(_103,"left"),opacity:s.getStyle(_103,"opacity")};
_104=MochiKit.Base.update({duration:0.5,distance:100,beforeSetupInternal:function(_108){
d.makePositioned(_108.effects[0].element);
},afterFinishInternal:function(_109){
s.hideElement(_109.effects[0].element);
d.undoPositioned(_109.effects[0].element);
s.setStyle(_109.effects[0].element,_107);
}},_104||{});
var v=MochiKit.Visual;
return new v.Parallel([new v.Move(_103,{x:0,y:_104.distance,sync:true}),new v.Opacity(_103,{sync:true,to:0})],_104);
};
MochiKit.Visual.shake=function(_10b,_10c){
var d=MochiKit.DOM;
var v=MochiKit.Visual;
var s=MochiKit.Style;
_10b=d.getElement(_10b);
_10c=MochiKit.Base.update({x:-20,y:0,duration:0.05,afterFinishInternal:function(_110){
d.undoPositioned(_110.element);
s.setStyle(_110.element,_111);
}},_10c||{});
var _111={top:s.getStyle(_10b,"top"),left:s.getStyle(_10b,"left")};
return new v.Move(_10b,{x:20,y:0,duration:0.05,afterFinishInternal:function(_112){
new v.Move(_112.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(_113){
new v.Move(_113.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(_114){
new v.Move(_114.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(_115){
new v.Move(_115.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(_116){
new v.Move(_116.element,_10c);
}});
}});
}});
}});
}});
};
MochiKit.Visual.slideDown=function(_117,_118){
var d=MochiKit.DOM;
var b=MochiKit.Base;
var s=MochiKit.Style;
_117=d.getElement(_117);
if(!_117.firstChild){
throw "MochiKit.Visual.slideDown must be used on a element with a child";
}
d.removeEmptyTextNodes(_117);
var _11c=s.getStyle(_117.firstChild,"bottom")||0;
var _11d=s.getElementDimensions(_117);
var _11e;
_118=b.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:_11d.h,originalWidth:_11d.w},restoreAfterFinish:true,afterSetupInternal:function(_11f){
d.makePositioned(_11f.element);
d.makePositioned(_11f.element.firstChild);
if(/Opera/.test(navigator.userAgent)){
s.setStyle(_11f.element,{top:""});
}
_11e=d.makeClipping(_11f.element);
s.setStyle(_11f.element,{height:"0px"});
s.showElement(_11f.element);
},afterUpdateInternal:function(_120){
s.setStyle(_120.element.firstChild,{bottom:(_120.dims[0]-_120.element.clientHeight)+"px"});
},afterFinishInternal:function(_121){
d.undoClipping(_121.element,_11e);
if(/MSIE/.test(navigator.userAgent)){
d.undoPositioned(_121.element);
d.undoPositioned(_121.element.firstChild);
}else{
d.undoPositioned(_121.element.firstChild);
d.undoPositioned(_121.element);
}
s.setStyle(_121.element.firstChild,{bottom:_11c});
}},_118||{});
return new MochiKit.Visual.Scale(_117,100,_118);
};
MochiKit.Visual.slideUp=function(_122,_123){
var d=MochiKit.DOM;
var b=MochiKit.Base;
var s=MochiKit.Style;
_122=d.getElement(_122);
if(!_122.firstChild){
throw "MochiKit.Visual.slideUp must be used on a element with a child";
}
d.removeEmptyTextNodes(_122);
var _127=s.getStyle(_122.firstChild,"bottom");
var _128;
_123=b.update({scaleContent:false,scaleX:false,scaleMode:"box",scaleFrom:100,restoreAfterFinish:true,beforeStartInternal:function(_129){
d.makePositioned(_129.element);
d.makePositioned(_129.element.firstChild);
if(/Opera/.test(navigator.userAgent)){
s.setStyle(_129.element,{top:""});
}
_128=d.makeClipping(_129.element);
s.showElement(_129.element);
},afterUpdateInternal:function(_12a){
s.setStyle(_12a.element.firstChild,{bottom:(_12a.dims[0]-_12a.element.clientHeight)+"px"});
},afterFinishInternal:function(_12b){
s.hideElement(_12b.element);
d.undoClipping(_12b.element,_128);
d.undoPositioned(_12b.element.firstChild);
d.undoPositioned(_12b.element);
s.setStyle(_12b.element.firstChild,{bottom:_127});
}},_123||{});
return new MochiKit.Visual.Scale(_122,0,_123);
};
MochiKit.Visual.squish=function(_12c,_12d){
var d=MochiKit.DOM;
var b=MochiKit.Base;
var _130;
_12d=b.update({restoreAfterFinish:true,beforeSetupInternal:function(_131){
_130=d.makeClipping(_131.element);
},afterFinishInternal:function(_132){
MochiKit.Style.hideElement(_132.element);
d.undoClipping(_132.element,_130);
}},_12d||{});
return new MochiKit.Visual.Scale(_12c,/Opera/.test(navigator.userAgent)?1:0,_12d);
};
MochiKit.Visual.grow=function(_133,_134){
var d=MochiKit.DOM;
var v=MochiKit.Visual;
var s=MochiKit.Style;
_133=d.getElement(_133);
_134=MochiKit.Base.update({direction:"center",moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.full,scaleContent:true,scaleFromCenter:false},_134||{});
var _138={top:_133.style.top,left:_133.style.left,height:_133.style.height,width:_133.style.width,opacity:s.getStyle(_133,"opacity")};
var dims=s.getElementDimensions(_133);
var _13a,_13b;
var _13c,_13d;
switch(_134.direction){
case "top-left":
_13a=_13b=_13c=_13d=0;
break;
case "top-right":
_13a=dims.w;
_13b=_13d=0;
_13c=-dims.w;
break;
case "bottom-left":
_13a=_13c=0;
_13b=dims.h;
_13d=-dims.h;
break;
case "bottom-right":
_13a=dims.w;
_13b=dims.h;
_13c=-dims.w;
_13d=-dims.h;
break;
case "center":
_13a=dims.w/2;
_13b=dims.h/2;
_13c=-dims.w/2;
_13d=-dims.h/2;
break;
}
var _13e=MochiKit.Base.update({beforeSetupInternal:function(_13f){
s.setStyle(_13f.effects[0].element,{height:"0px"});
s.showElement(_13f.effects[0].element);
},afterFinishInternal:function(_140){
d.undoClipping(_140.effects[0].element);
d.undoPositioned(_140.effects[0].element);
s.setStyle(_140.effects[0].element,_138);
}},_134||{});
return new v.Move(_133,{x:_13a,y:_13b,duration:0.01,beforeSetupInternal:function(_141){
s.hideElement(_141.element);
d.makeClipping(_141.element);
d.makePositioned(_141.element);
},afterFinishInternal:function(_142){
new v.Parallel([new v.Opacity(_142.element,{sync:true,to:1,from:0,transition:_134.opacityTransition}),new v.Move(_142.element,{x:_13c,y:_13d,sync:true,transition:_134.moveTransition}),new v.Scale(_142.element,100,{scaleMode:{originalHeight:dims.h,originalWidth:dims.w},sync:true,scaleFrom:/Opera/.test(navigator.userAgent)?1:0,transition:_134.scaleTransition,scaleContent:_134.scaleContent,scaleFromCenter:_134.scaleFromCenter,restoreAfterFinish:true})],_13e);
}});
};
MochiKit.Visual.shrink=function(_143,_144){
var d=MochiKit.DOM;
var v=MochiKit.Visual;
var s=MochiKit.Style;
_143=d.getElement(_143);
_144=MochiKit.Base.update({direction:"center",moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.none,scaleContent:true,scaleFromCenter:false},_144||{});
var _148={top:_143.style.top,left:_143.style.left,height:_143.style.height,width:_143.style.width,opacity:s.getStyle(_143,"opacity")};
var dims=s.getElementDimensions(_143);
var _14a,_14b;
switch(_144.direction){
case "top-left":
_14a=_14b=0;
break;
case "top-right":
_14a=dims.w;
_14b=0;
break;
case "bottom-left":
_14a=0;
_14b=dims.h;
break;
case "bottom-right":
_14a=dims.w;
_14b=dims.h;
break;
case "center":
_14a=dims.w/2;
_14b=dims.h/2;
break;
}
var _14c;
var _14d=MochiKit.Base.update({beforeStartInternal:function(_14e){
_14c=d.makePositioned(_14e.effects[0].element);
d.makeClipping(_14e.effects[0].element);
},afterFinishInternal:function(_14f){
s.hideElement(_14f.effects[0].element);
d.undoClipping(_14f.effects[0].element,_14c);
d.undoPositioned(_14f.effects[0].element);
s.setStyle(_14f.effects[0].element,_148);
}},_144||{});
return new v.Parallel([new v.Opacity(_143,{sync:true,to:0,from:1,transition:_144.opacityTransition}),new v.Scale(_143,/Opera/.test(navigator.userAgent)?1:0,{sync:true,transition:_144.scaleTransition,scaleContent:_144.scaleContent,scaleFromCenter:_144.scaleFromCenter,restoreAfterFinish:true}),new v.Move(_143,{x:_14a,y:_14b,sync:true,transition:_144.moveTransition})],_14d);
};
MochiKit.Visual.pulsate=function(_150,_151){
var d=MochiKit.DOM;
var v=MochiKit.Visual;
var b=MochiKit.Base;
var _155=MochiKit.Style.getStyle(_150,"opacity");
_151=b.update({duration:3,from:0,afterFinishInternal:function(_156){
MochiKit.Style.setStyle(_156.element,{"opacity":_155});
}},_151||{});
var _157=_151.transition||v.Transitions.sinoidal;
var _158=b.bind(function(pos){
return _157(1-v.Transitions.pulse(pos,_151.pulses));
},_157);
b.bind(_158,_157);
return new v.Opacity(_150,b.update({transition:_158},_151));
};
MochiKit.Visual.fold=function(_15a,_15b){
var d=MochiKit.DOM;
var v=MochiKit.Visual;
var s=MochiKit.Style;
_15a=d.getElement(_15a);
var _15f={top:_15a.style.top,left:_15a.style.left,width:_15a.style.width,height:_15a.style.height};
var _160=d.makeClipping(_15a);
_15b=MochiKit.Base.update({scaleContent:false,scaleX:false,afterFinishInternal:function(_161){
new v.Scale(_15a,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(_162){
s.hideElement(_162.element);
d.undoClipping(_162.element,_160);
s.setStyle(_162.element,_15f);
}});
}},_15b||{});
return new v.Scale(_15a,5,_15b);
};
MochiKit.Visual.Color=MochiKit.Color.Color;
MochiKit.Visual.getElementsComputedStyle=MochiKit.DOM.computedStyle;
MochiKit.Visual.__new__=function(){
var m=MochiKit.Base;
m.nameFunctions(this);
this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
};
MochiKit.Visual.EXPORT=["roundElement","roundClass","tagifyText","multiple","toggle","Parallel","Opacity","Move","Scale","Highlight","ScrollTo","Morph","fade","appear","puff","blindUp","blindDown","switchOff","dropOut","shake","slideDown","slideUp","squish","grow","shrink","pulsate","fold"];
MochiKit.Visual.EXPORT_OK=["Base","PAIRS"];
MochiKit.Visual.__new__();
MochiKit.Base._exportSymbols(this,MochiKit.Visual);



