var Window=Class.create();Window.prototype={initialize:function(id,parameters){this.hasEffectLib=String.prototype.parseColor!=null
this.minWidth=parameters.minWidth||100;this.minHeight=parameters.minHeight||100;this.maxWidth=parameters.maxWidth;this.maxHeight=parameters.maxHeight;this.showEffect=parameters.showEffect||(this.hasEffectLib?Effect.Appear:Element.show)
this.hideEffect=parameters.hideEffect||(this.hasEffectLib?Effect.Fade:Element.hide)
this.showEffectOptions=parameters.showEffectOptions||parameters.effectOptions;this.hideEffectOptions=parameters.hideEffectOptions||parameters.effectOptions;var resizable=parameters.resizable!=null?parameters.resizable:true;var className=parameters.className!=null?parameters.className:"dialog";this.className=className;this.element=this.createWindow(id,className,resizable,parameters.title,parameters.url);this.isIFrame=parameters.url!=null;this.eventMouseDown=this.initDrag.bindAsEventListener(this);this.eventMouseUp=this.endDrag.bindAsEventListener(this);this.eventMouseMove=this.updateDrag.bindAsEventListener(this);this.eventKeyPress=this.keyPress.bindAsEventListener(this);this.topbar=$(this.element.id+"_top");Event.observe(this.topbar,"mousedown",this.eventMouseDown);if(resizable){this.sizer=$(this.element.id+"_sizer");Event.observe(this.sizer,"mousedown",this.eventMouseDown);}
var top=parseFloat(parameters.top)||10;var width=parseFloat(parameters.width)||200;var height=parseFloat(parameters.height)||200;if(parameters.left!=null)
Element.setStyle(this.element,{left:parseFloat(parameters.left)+'px'});if(parameters.right!=null)
Element.setStyle(this.element,{right:parseFloat(parameters.right)+'px'});if(parameters.top!=null)
Element.setStyle(this.element,{top:parameters.top+'px'});if(parameters.bottom!=null)
Element.setStyle(this.element,{bottom:parameters.bottom+'px'});this.setSize(width,height);if(parameters.opacity)
this.setOpacity(parameters.opacity);if(parameters.zIndex)
this.setZIndex(parameters.zIndex)
Windows.register(this);},destroy:function(){Event.stopObserving(this.topbar,"mousedown",this.eventMouseDown);if(this.sizer)
Event.stopObserving(this.sizer,"mousedown",this.eventMouseDown);var objBody=document.getElementsByTagName("body").item(0);objBody.removeChild(this.element);Windows.unregister(this);},setDelegate:function(delegate){this.delegate=delegate},getDelegate:function(){return this.delegate;},getContent:function(){return $(this.element.id+"_content");},getId:function(){return this.element.id;},initDrag:function(event){this.pointer=[Event.pointerX(event),Event.pointerY(event)];this.doResize=false;var closeButton=$(this.getId()+'_close');if(closeButton&&Position.within(closeButton,this.pointer[0],this.pointer[1])){return;}
if(this.sizer&&Position.within(this.sizer,this.pointer[0],this.pointer[1])){this.doResize=true;}
Event.observe(document,"mouseup",this.eventMouseUp);Event.observe(document,"mousemove",this.eventMouseMove);if(this.isIFrame){var objBody=document.getElementsByTagName("body").item(0);var div=document.createElement("div");div.style.position="absolute";div.style.top="0px";div.style.bottom="0px";div.style.zIndex=Windows.maxZIndex;div.style.width=(this.width+100)+"px";div.style.height=(this.height+100)+"px";this.element.appendChild(div);this.tmpDiv=div;}
this.toFront();Event.stop(event);},updateDrag:function(event){var pointer=[Event.pointerX(event),Event.pointerY(event)];var dx=pointer[0]-this.pointer[0];var dy=pointer[1]-this.pointer[1];this.pointer=pointer;if(this.doResize){var width=parseFloat(Element.getStyle(this.element,'width'));var height=parseFloat(Element.getStyle(this.element,'height'));width+=dx;height+=dy;var right=Element.getStyle(this.element,'right');if(right!=null)
Element.setStyle(this.element,{right:(parseFloat(right)-dx)+'px'});var bottom=Element.getStyle(this.element,'bottom');if(bottom!=null)
Element.setStyle(this.element,{bottom:(parseFloat(bottom)-dy)+'px'});this.setSize(width,height)}
else{var top=Element.getStyle(this.element,'top');var left=Element.getStyle(this.element,'left');if(left!=null){left=parseFloat(left)+dx;Element.setStyle(this.element,{left:left+'px'});}
else{var right=Element.getStyle(this.element,'right');right=parseFloat(right)-dx;Element.setStyle(this.element,{right:right+'px'});}
if(top!=null){top=parseFloat(top)+dy;Element.setStyle(this.element,{top:top+'px'});}else{var bottom=Element.getStyle(this.element,'bottom');bottom=parseFloat(bottom)-dy;Element.setStyle(this.element,{bottom:bottom+'px'});}}
if(this.iefix)
this.fixIEOverlapping();Event.stop(event);},endDrag:function(event){Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(document,"mousemove",this.eventMouseMove);if(this.isIFrame){this.tmpDiv.parentNode.removeChild(this.tmpDiv);this.tmpDiv=null;}
Event.stop(event);},keyPress:function(event){},createWindow:function(id,className,resizable,title,url){win=document.createElement("div");win.setAttribute('id',id);win.className="dialog";if(!title)
title="&nbsp;";var content;if(url)
content="<IFRAME id=\""+id+"_content\" SRC=\""+url+"\" > </IFRAME>";else
content="<DIV id=\""+id+"_content\" class=\""+className+"_content\"> </DIV>";win.innerHTML="\
  <div class='"+className+"_close' id='"+id+"_close' onclick='Windows.close(\""+id+"\")'> </div>\
  <table id='"+id+"_header'>\
   <tr id='"+id+"_row1'>\
    <td>\
     <table id='"+id+"_top'>\
      <tr>\
       <td id='"+id+"_nw' class='"+className+"_nw'><div class='"+className+"_nw'> </td>\
       <td class='"+className+"_n'  valign='middle'><div class='"+className+"_title'>"+title+"</div></td>\
       <td class='"+className+"_ne'> <div class='"+className+"_ne'></td>\
      </tr>\
     </table>\
    </td>\
   </tr>\
   <tr id='"+id+"_row2'>\
    <td>\
     <table>\
      <tr>\
       <td class='"+className+"_w'><div class='"+className+"_w'> </div></td>\
       <td class='"+className+"_content'>"+content+"</td>\
       <td class='"+className+"_e'><div class='"+className+"_e'> </div></td>\
      </tr>\
     </table>\
    </td>\
   </tr>\
   <tr id='"+id+"_row3'>\
    <td>\
     <table id='"+id+"_bottom'>\
      <tr>\
       <td class='"+className+"_sw' id='"+id+"_sw'><div class='"+className+"_sw'> </td>\
       <td class='"+className+"_s'><div class='"+className+"_s'> </div></td>\
       <td class='"+className+"_se'>"+(resizable?"<div id='"+id+"_sizer' class='"+className+"_sizer'></div>":"<div class='"+className+"_se'></div>")+"</td>\
      </tr>\
     </table>\
    </td>\
   </tr>\
  </table>\
  ";Element.hide(win);var objBody=document.getElementsByTagName("body").item(0);objBody.insertBefore(win,objBody.firstChild);return win;},setLocation:function(top,left){Element.setStyle(this.element,{top:top+'px'});Element.setStyle(this.element,{left:left+'px'});},setSize:function(width,height){if(width<this.minWidth)
width=this.minWidth;if(height<this.minHeight)
height=this.minHeight;if(this.maxHeight&&height>this.maxHeight)
height=this.maxHeight;if(this.minHeight&&height<this.minHeight)
height=this.minHeight;this.width=width;this.height=height;Element.setStyle(this.element,{width:width+'px'});Element.setStyle(this.element,{height:height+'px'});var content=$(this.element.id+'_content')
Element.setStyle(content,{height:height+'px'});Element.setStyle(content,{width:width+'px'});},toFront:function(){windows=document.getElementsByClassName("dialog");var maxIndex=0;for(i=0;i<windows.length;i++){if(maxIndex<parseFloat(windows[i].style.zIndex))
maxIndex=windows[i].style.zIndex;}
this.element.style.zIndex=parseFloat(maxIndex)+1;},show:function(modal){if(modal){WindowUtilities.disableScreen(this.className);this.modal=true;this.setZIndex(Windows.maxZIndex+20);Windows.unsetOverflow(this);Event.observe(document,"keypress",this.eventKeyPress);}
this.setSize(this.width,this.height);if(this.showEffectOptions)
this.showEffect(this.element,this.showEffectOptions);else
this.showEffect(this.element);this.checkIEOverlapping();},showCenter:function(modal){this.setSize(this.width,this.height);this.center();this.show(modal);},center:function(){var arrayPageSize=WindowUtilities.getPageSize();var arrayPageScroll=WindowUtilities.getPageScroll();this.element.style.top=(arrayPageScroll[1]+((arrayPageSize[3]-this.height)/2)+'px');this.element.style.left=(((arrayPageSize[0]-this.width)/2)+'px');},hide:function(){if(this.modal){WindowUtilities.enableScreen();Windows.resetOverflow();Event.stopObserving(document,"keypress",this.eventKeyPress);}
Element.setStyle(this.getContent(),{overflow:"hidden"});if(this.hideEffectOptions)
this.hideEffect(this.element,this.hideEffectOptions);else
this.hideEffect(this.element);if(this.iefix)
Element.hide(this.iefix);},checkIEOverlapping:function(){if(!this.iefix&&(navigator.appVersion.indexOf('MSIE')>0)&&(navigator.userAgent.indexOf('Opera')<0)&&(Element.getStyle(this.element,'position')=='absolute')){new Insertion.After(this.element.id,'<iframe id="'+this.element.id+'_iefix" '+'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" '+'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');this.iefix=$(this.element.id+'_iefix');}
if(this.iefix)
setTimeout(this.fixIEOverlapping.bind(this),50);},fixIEOverlapping:function(){Position.clone(this.element,this.iefix);this.iefix.style.zIndex=this.element.style.zIndex-1;Element.show(this.iefix);},setOpacity:function(opacity){if(Element.setOpacity)
Element.setOpacity(this.element,opacity);},setZIndex:function(zindex){Element.setStyle(this.element,{zIndex:zindex});Windows.updateZindex(zindex,this);}};var Windows={windows:[],maxZIndex:0,getWindow:function(id){return this.windows.detect(function(d){return d.getId()==id});},register:function(win){this.windows.push(win);},unregister:function(win){this.windows=this.windows.reject(function(d){return d==win});},close:function(id){win=this.getWindow(id);if(win.getDelegate()&&!win.getDelegate().canClose(win))
return;if(win)
win.hide();},unsetOverflow:function(except){this.windows.each(function(d){d.oldOverflow=Element.getStyle(d.getContent(),"overflow")||"auto";Element.setStyle(d.getContent(),{overflow:"hidden"})});if(except&&except.oldOverflow)
Element.setStyle(except.getContent(),{overflow:except.oldOverflow});},resetOverflow:function(){this.windows.each(function(d){if(d.oldOverflow)Element.setStyle(d.getContent(),{overflow:d.oldOverflow})});},updateZindex:function(zindex,win){if(zindex>this.maxZIndex)
this.maxZIndex=zindex;}};var Dialog={win:null,confirm:function(message,parameters){var okLabel=parameters.okLabel||"Ok";var cancelLabel=parameters.cancelLabel||"Cancel";var windowParam=parameters?parameters.windowParameters:{};windowParam.className=windowParam.className||"alert";var content="\
   <div class='"+windowParam.className+"_message'>"+message+"</div>\
    <div class='"+windowParam.className+"_buttons'>\
     <input type='button' value='"+okLabel+"' onclick='Dialog.okCallback()'/>\
     <input type='button' value='"+cancelLabel+"' onclick='Dialog.cancelCallback()'/>\
    </div>\
  ";return this.openDialog(content,parameters)},alert:function(message,parameters){var okLabel=parameters.okLabel||"Ok";var windowParam=parameters?parameters.windowParameters:{};windowParam.className=windowParam.className||"alert";var content="\
   <div class='"+windowParam.className+"_message'>"+message+"</div>\
    <div class='"+windowParam.className+"_buttons'>\
     <input type='button' value='"+okLabel+"' onclick='Dialog.okCallback()'/>\
    </div>\
  ";return this.openDialog(content,parameters)},openDialog:function(content,parameters){if(this.win)
this.win.destroy();var windowParam=parameters?parameters.windowParameters:{};windowParam.resizable=windowParam.resizable||false;windowParam.effectOptions={duration:1};this.win=new Window('modal_dialog',windowParam);this.win.getContent().innerHTML=content;this.win.showCenter(true);this.win.cancelCallback=parameters.cancel;this.win.okCallback=parameters.ok;this.eventResize=this.recenter.bindAsEventListener(this);Event.observe(window,"resize",this.eventResize);Event.observe(window,"scroll",this.eventResize);return this.win;},okCallback:function(){this.win.hide();Event.stopObserving(window,"resize",this.eventResize);Event.stopObserving(window,"scroll",this.eventResize);if(this.win.okCallback)
this.win.okCallback(this.win);},cancelCallback:function(){this.win.hide();Event.stopObserving(window,"resize",this.eventResize);Event.stopObserving(window,"scroll",this.eventResize);if(this.win.cancelCallback)
this.win.cancelCallback(win);},recenter:function(event){var arrayPageSize=WindowUtilities.getPageSize();$('overlay_modal').style.height=(arrayPageSize[1]+'px');this.win.center();}}
var isIE=navigator.appVersion.match(/MSIE/)=="MSIE";var WindowUtilities={getPageScroll:function(){var yScroll;if(self.pageYOffset){yScroll=self.pageYOffset;}else if(document.documentElement&&document.documentElement.scrollTop){yScroll=document.documentElement.scrollTop;}else if(document.body){yScroll=document.body.scrollTop;}
arrayPageScroll=new Array('',yScroll)
return arrayPageScroll;},getPageSize:function(){var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=document.body.scrollWidth;yScroll=window.innerHeight+window.scrollMaxY;}else if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;}
var windowWidth,windowHeight;if(self.innerHeight){windowWidth=self.innerWidth;windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;}
if(yScroll<windowHeight){pageHeight=windowHeight;}else{pageHeight=yScroll;}
if(xScroll<windowWidth){pageWidth=windowWidth;}else{pageWidth=xScroll;}
arrayPageSize=new Array(pageWidth,pageHeight,windowWidth,windowHeight)
return arrayPageSize;},disableScreen:function(className){WindowUtilities.initLightbox(className);var objBody=document.getElementsByTagName("body").item(0);var objOverlay=$('overlay_modal');var arrayPageSize=WindowUtilities.getPageSize();if(isIE){selects=document.getElementsByTagName("select");for(i=0;i!=selects.length;i++){selects[i].style.visibility="hidden";}}
objOverlay.style.height=(arrayPageSize[1]+'px');objOverlay.style.display='block';},enableScreen:function(){var objOverlay=$('overlay_modal');if(objOverlay){objOverlay.style.display='none';if(isIE){selects=document.getElementsByTagName("select");for(i=0;i!=selects.length;i++){selects[i].style.visibility="visible";}}
objOverlay.parentNode.removeChild(objOverlay);}},initLightbox:function(className){if($('overlay_modal')){Element.setStyle('overlay_modal',{zIndex:Windows.maxZIndex+10});}
else{var objBody=document.getElementsByTagName("body").item(0);var objOverlay=document.createElement("div");objOverlay.setAttribute('id','overlay_modal');objOverlay.className="overlay_"+className
objOverlay.style.display='none';objOverlay.style.position='absolute';objOverlay.style.top='0';objOverlay.style.left='0';objOverlay.style.zIndex=Windows.maxZIndex+10;objOverlay.style.width='100%';objBody.insertBefore(objOverlay,objBody.firstChild);}}}
