Effect.ResizeWindow=Class.create();
Object.extend(Object.extend(Effect.ResizeWindow.prototype,Effect.Base.prototype),{
initialize:function(win,top,left,width,height){
this.window=win;
this.window.resizing=true;
var size=win.getSize();
this.initWidth=parseFloat(size.width);
this.initHeight=parseFloat(size.height);
var location=win.getLocation();
this.initTop=parseFloat(location.top);
this.initLeft=parseFloat(location.left);
this.width=width!=null?parseFloat(width):this.initWidth;
this.height=height!=null?parseFloat(height):this.initHeight;
this.top=top!=null?parseFloat(top):this.initTop;
this.left=left!=null?parseFloat(left):this.initLeft;
this.dx=this.left-this.initLeft;
this.dy=this.top-this.initTop;
this.dw=this.width-this.initWidth;
this.dh=this.height-this.initHeight;
this.r2=$(this.window.getId()+"_row2");
this.content=$(this.window.getId()+"_content");
this.contentOverflow=this.content.getStyle("overflow")||"auto";
this.content.setStyle({overflow:"hidden"});
if(this.window.options.wiredDrag){
this.window.currentDrag=win._createWiredElement();
this.window.currentDrag.show();
this.window.element.hide();
}
this.start(arguments[5]);
},
update:function(position){
var width=Math.floor(this.initWidth+this.dw*position);
var height=Math.floor(this.initHeight+this.dh*position);
var top=Math.floor(this.initTop+this.dy*position);
var left=Math.floor(this.initLeft+this.dx*position);
if(window.ie){
if(Math.floor(height)==0)
this.r2.hide();
else if(Math.floor(height)>1)
this.r2.show();
}
this.r2.setStyle({height:height});
this.window.setSize(width,height);
this.window.setLocation(top,left);
},
finish:function(position){
if(this.window.options.wiredDrag){
this.window._hideWiredElement();
this.window.element.show();
}
this.window.setSize(this.width,this.height);
this.window.setLocation(this.top,this.left);
this.r2.setStyle({height:null});
this.content.setStyle({overflow:this.contentOverflow});
this.window.resizing=false;
}
});
Effect.ModalSlideDown=function(element){
var windowScroll=WindowUtilities.getWindowScroll();
var height=element.getStyle("height");
element.setStyle({top:-(parseFloat(height)-windowScroll.top)+"px"});
element.show();
return new Effect.Move(element,Object.extend({x:0,y:parseFloat(height)},arguments[1]||{}));
};
Effect.ModalSlideUp=function(element){
var height=element.getStyle("height");
return new Effect.Move(element,Object.extend({x:0,y:-parseFloat(height)},arguments[1]||{}));
};
PopupEffect=Class.create();
PopupEffect.prototype={
initialize:function(htmlElement){
this.html=$(htmlElement);
this.options=Object.extend({className:"popup_effect",duration:0.4},arguments[1]||{});
},
show:function(element,options){
var position=Position.cumulativeOffset(this.html);
var size=this.html.getDimensions();
var bounds=element.win.getBounds();
this.window=element.win;
if(!this.div){
this.div=document.createElement("div");
this.div.className=this.options.className;
this.div.style.height=size.height+"px";
this.div.style.width=size.width+"px";
this.div.style.top=position[1]+"px";
this.div.style.left=position[0]+"px";
this.div.style.position="absolute"
document.body.appendChild(this.div);
}
if(this.options.fromOpacity)
this.div.setStyle({opacity:this.options.fromOpacity})
this.div.show();
var style="top:"+bounds.top+";left:"+bounds.left+";width:"+bounds.width+";height:"+bounds.height;
if(this.options.toOpacity)
style+=";opacity:"+this.options.toOpacity;
new Effect.Morph(this.div,{style:style,duration:this.options.duration,afterFinish:this._showWindow.bind(this)});
},
hide:function(element,options){
var position=Position.cumulativeOffset(this.html);
var size=this.html.getDimensions();
this.window.visible=true;
var bounds=this.window.getBounds();
this.window.visible=false;
this.window.element.hide();
this.div.style.height=bounds.height;
this.div.style.width=bounds.width;
this.div.style.top=bounds.top;
this.div.style.left=bounds.left;
if(this.options.toOpacity)
this.div.setStyle({opacity:this.options.toOpacity})
this.div.show();
var style="top:"+position[1]+"px;left:"+position[0]+"px;width:"+size.width+"px;height:"+size.height+"px";
if(this.options.fromOpacity)
style+=";opacity:"+this.options.fromOpacity;
new Effect.Morph(this.div,{style:style,duration:this.options.duration,afterFinish:this._hideDiv.bind(this)});
},
_showWindow:function(){
this.div.hide();
this.window.element.show();
},
_hideDiv:function(){
this.div.hide();
}
}