var LightFace=new Class({Implements:[Options,Events],options:{width:"auto",height:"auto",draggable:false,title:"",buttons:[],fadeDelay:400,fadeDuration:400,keys:{esc:function(){this.close()}},content:"<p>Message not specified.</p>",zIndex:199,pad:100,overlayAll:false,constrain:false,resetOnScroll:true,baseClass:"lightface",errorMessage:"<p>The requested file could not be found.</p>"},initialize:function(a){this.setOptions(a);this.state=false;this.buttons={};this.resizeOnOpen=true;this.ie6=typeof document.body.style.maxHeight=="undefined";this.draw()},draw:function(){this.box=new Element("table",{"class":this.options.baseClass,styles:{"z-index":this.options.zIndex,opacity:0},tween:{duration:this.options.fadeDuration,onComplete:function(){if(this.box){if(this.box.getStyle("opacity")==0){this.box.setStyles({top:-9000,left:-9000})}}}.bind(this)}}).inject(document.body,"bottom");var h=["top","center","bottom"],e=["Left","Center","Right"],c=h.length;for(var b=0;b<c;b++){var f=this.box.insertRow(b);for(var g=0;g<c;g++){var d=h[b]+e[g],a=f.insertCell(g);a.className=d;if(d=="centerCenter"){this.contentBox=new Element("div",{"class":"lightfaceContent",styles:{width:this.options.width}});a.appendChild(this.contentBox)}else{document.id(a).setStyle("opacity",0.4)}}}if(this.options.title){this.title=new Element("h2",{"class":"lightfaceTitle",html:this.options.title}).inject(this.contentBox);if(this.options.draggable&&window.Drag!=null){this.draggable=true;new Drag(this.box,{handle:this.title});this.title.addClass("lightfaceDraggable")}}this.messageBox=new Element("div",{"class":"lightfaceMessageBox",html:this.options.content||"",styles:{height:this.options.height}}).inject(this.contentBox);this.footer=new Element("div",{"class":"lightfaceFooter",styles:{display:"none"}}).inject(this.contentBox);this.overlay=new Element("div",{html:"&nbsp;",styles:{opacity:0},"class":"lightfaceOverlay",tween:{link:"chain",duration:this.options.fadeDuration,onComplete:function(){if(this.overlay.getStyle("opacity")==0){this.box.focus()}}.bind(this)}}).inject(this.contentBox);if(!this.options.overlayAll){this.overlay.setStyle("top",(this.title?this.title.getSize().y-1:0))}this.buttons=[];if(this.options.buttons.length){this.options.buttons.each(function(i){this.addButton(i.title,i.event,i.color)},this)}this.focusNode=this.box;return this},addButton:function(e,a,b){this.footer.setStyle("display","block");var d="lightfacefocus"+b;var c=new Element("label",{"class":b?"lightface"+b:"",events:{mousedown:function(){if(b){c.addClass(d);var f=function(){c.removeClass(d);document.id(document.body).removeEvent("mouseup",f)};document.id(document.body).addEvent("mouseup",f)}}}});this.buttons[e]=(new Element("input",{type:"button",value:e,events:{click:(a||this.close).bind(this)}}).inject(c));c.inject(this.footer);return this},showButton:function(a){if(this.buttons[a]){this.buttons[a].removeClass("hiddenButton")}return this.buttons[a]},hideButton:function(a){if(this.buttons[a]){this.buttons[a].addClass("hiddenButton")}return this.buttons[a]},disableButton:function(a){if(this.buttons[a]){this.buttons[a].removeEvents("click");this.buttons[a].addClass("disabledButton")}return this.buttons[a]},close:function(a){if(this.isOpen){this.box[a?"setStyles":"tween"]("opacity",0);this.fireEvent("close");this._detachEvents();this.isOpen=false}return this},open:function(a){if(!this.isOpen){this.box[a?"setStyles":"tween"]("opacity",1);if(this.resizeOnOpen){this._resize()}this.fireEvent("open");this._attachEvents();(function(){this._setFocus()}).bind(this).delay(this.options.fadeDuration+10);this.isOpen=true}return this},_setFocus:function(){this.focusNode.setAttribute("tabIndex",0);this.focusNode.focus()},fade:function(b,a){this._ie6Size();(function(){this.overlay.setStyle("opacity",b||1)}.bind(this)).delay(a||0);this.fireEvent("fade");return this},unfade:function(a){(function(){this.overlay.fade(0)}.bind(this)).delay(a||this.options.fadeDelay);this.fireEvent("unfade");return this},_ie6Size:function(){if(this.ie6){var a=this.contentBox.getSize();var b=(this.options.overlayAll||!this.title)?0:this.title.getSize().y;this.overlay.setStyles({height:a.y-b,width:a.x})}},load:function(a,b){if(a){this.messageBox.set("html",a)}if(b&&this.title){this.title.set("html",b)}this.fireEvent("complete");return this},_attachEvents:function(){this.keyEvent=function(a){if(this.options.keys[a.key]){this.options.keys[a.key].call(this)}}.bind(this);this.focusNode.addEvent("keyup",this.keyEvent);this.resizeEvent=this.options.constrain?function(a){this._resize()}.bind(this):function(){this._position()}.bind(this);window.addEvent("resize",this.resizeEvent);if(this.options.resetOnScroll){this.scrollEvent=function(){this._position()}.bind(this);window.addEvent("scroll",this.scrollEvent)}return this},_detachEvents:function(){this.focusNode.removeEvent("keyup",this.keyEvent);window.removeEvent("resize",this.resizeEvent);if(this.scrollEvent){window.removeEvent("scroll",this.scrollEvent)}return this},_position:function(){var a=window.getSize(),b=window.getScroll(),c=this.box.getSize();this.box.setStyles({left:b.x+((a.x-c.x)/2),top:b.y+((a.y-c.y)/2)});this._ie6Size();return this},_resize:function(){var b=this.options.height;if(b=="auto"){var a=window.getSize().y-this.options.pad;if(this.contentBox.getSize().y>a){b=a}}this.messageBox.setStyle("height",b);this._position()},toElement:function(){return this.messageBox},getBox:function(){return this.box},destroy:function(){this._detachEvents();this.buttons.each(function(a){a.removeEvents("click")});this.box.dispose();delete this.box}});

