
if(!SAPO.Component||typeof(SAPO.Component)=='undefined'){SAPO.namespace('Component');}
(function(){var Event=SAPO.Dom.Event,Css=SAPO.Dom.Css,Element=SAPO.Dom.Element,Dialog=SAPO.Component.Dialog,Dimensions=SAPO.Utility.Dimensions,Fade=SAPO.Effects.Fade,isTag=SAPO.Component.Gallery.prototype._isTag;function dce(type){return document.createElement(type);}
function getStyleInt(el,style){return parseInt(Css.getStyle(el,style),10)||0;}
SAPO.Component.Slidebox=function(options){this.init(options);};SAPO.Component.Slidebox.version='0.1';SAPO.Component.Slidebox.prototype={_container:false,_galOpt:false,_dialog:false,_tools:false,_close:false,_dims:false,_list:false,_gal:false,_galContents:false,_borders:false,init:function(){var i,l,list,node;this._options=SAPO.extendObj({list:false,container:false,closeLabel:'Fechar',openerText:'abrir slidebox',initialWidth:50,initialHeight:50},arguments[0]||{});if(typeof this._options.maxSize==='string'){try{this._options.maxSize=this._options.maxSize.split(',');this._options.maxSize[0]=parseInt(this._options.maxSize[0],10);this._options.maxSize[1]=parseInt(this._options.maxSize[1],10);}catch(ex){throw'Problem parsing option maxSize!';}}
if(!(this._options.maxSize instanceof Array)){this._options.maxSize=[Dimensions.viewportWidth()-60,Dimensions.viewportHeight()-110];}
if(this._options.container){this._container=this._options.container=s$(this._options.container);for(i=0,l=this._container.childNodes.length;i<l;i++){node=this._container.childNodes[i];if(isTag(node,"ul")){list=node;break;}}}
this._gal=new SAPO.Component.Gallery(SAPO.extendObj({slidebox:true},this._options));if(this._options.list){list=this._gal.makeThumbList(true);this._list=list;}
Event.observe(list,'click',function(ev){Event.stop(ev);var target=Event.findElement(ev,"a",true);if(target){Css.addClassName(target,"SlideboxMarker");var div=dce("div");Css.addClassName(div,"SAPOGalleryStage");div.style.position="absolute";div.style.top="-10000px";div.style.width=this._options.initialWidth+"px";div.style.height=this._options.initialHeight+"px";document.body.appendChild(div);var width=Dimensions.elementWidth(div);var height=Dimensions.elementHeight(div);div.parentNode.removeChild(div);Dialog.info({message:'',width:width,height:height,onComplete:this._setContainer.bindObj(this,target),animate:true,className:"sapo_widget_dialog_component",afterResize:this._afterResize.bindObj(this),callBackCancel:this._onCancel.bindObj(this)});Css.removeClassName(target,"SlideboxMarker");}}.bindObjEvent(this));},getImageList:function(){var container=dce("div");Css.addClassName(container,"SAPOSlidebox");if(this._gal._pagePrev){container.appendChild(this._gal._pagePrev);}
if(this._gal._options.pageThumbs!==0){container.appendChild(this._list);}else{var _link=document.createElement("a");_link.href="#";_link.className="SAPOSlideboxOpener";_link.innerHTML=this._options.openerText;container.appendChild(_link);SAPO.Dom.Event.observe(_link,'click',function(ev){Event.stop(ev);var target=this._list.getElementsByTagName("a")[0];if(target){Css.addClassName(target,"SlideboxMarker");var div=dce("div");Css.addClassName(div,"SAPOGalleryStage");div.style.position="absolute";div.style.top="-10000px";div.style.width=this._options.initialWidth+"px";div.style.height=this._options.initialHeight+"px";document.body.appendChild(div);var width=Dimensions.elementWidth(div);var height=Dimensions.elementHeight(div);div.parentNode.removeChild(div);Dialog.info({message:'',width:width,height:height,onComplete:this._setContainer.bindObj(this,target),animate:true,className:"sapo_widget_dialog_component",afterResize:this._afterResize.bindObj(this),callBackCancel:this._onCancel.bindObj(this)});Css.removeClassName(target,"SlideboxMarker");}}.bindObjEvent(this));}
if(this._gal._pageNext){container.appendChild(this._gal._pageNext);}
return container;},_afterResize:function(){Fade.show(this._gal._image,{dur:this._gal._options.fadeInTime});if(this._gal._caption){this._gal._caption.style.visibility="visible";Fade.show(this._gal._caption,{dur:this._gal._options.fadeInTime});}},_onChange:function(tools,aHeight,gal){var captionHeight;tools.style.visibility="visible";Fade.show(tools,{dur:0});var width=gal._loaderWidth;var height=gal._loaderHeight;var dialog=gal._galleryStage.parentNode;var imgContainer=gal._galleryStage;if(gal._firstImage===false){if(!this._borders){var widthBorders=Dimensions.elementWidth(dialog)-
Dimensions.elementWidth(imgContainer);var heightBorders=Dimensions.elementHeight(dialog)-
Dimensions.elementHeight(imgContainer);this._borders={width:widthBorders,height:heightBorders};}
gal._image.style.width="0px";gal._image.style.height="0px";gal._firstImage=true;if(gal._caption){var tmpCaption=dce("div");tmpCaption.style.width=width+"px";tmpCaption.style.position="absolute";tmpCaption.style.top="-10000px";tmpCaption.style.visibility="hidden";var fsize=Css.getStyle(gal._caption,"fontSize");if(parseInt(fsize,10)>0){tmpCaption.style.fontFamily=Css.getStyle(gal._caption,"fontFamily");tmpCaption.style.fontSize=fsize;tmpCaption.style.fontWeight=Css.getStyle(gal._caption,"fontWeight");}
tmpCaption.style.textAlign=Css.getStyle(gal._caption,"textAlign");tmpCaption.innerHTML=gal._caption.innerHTML;document.body.appendChild(tmpCaption);captionHeight=Dimensions.elementHeight(tmpCaption)+
getStyleInt(gal._caption,"paddingTop")+
getStyleInt(gal._caption,"paddingBottom");document.body.removeChild(tmpCaption);}else{captionHeight=0;}}else{if(gal._caption){captionHeight=Dimensions.elementHeight(gal._caption);}else{captionHeight=0;}}
if(gal._caption){Fade.show(gal._caption,{dur:0});}
var containerPaddings={width:getStyleInt(imgContainer,"paddingLeft")+
getStyleInt(imgContainer,"paddingRight"),height:getStyleInt(imgContainer,"paddingTop")+
getStyleInt(imgContainer,"paddingBottom")};Dialog.updateSize(width+this._borders.width+containerPaddings.width,height+this._borders.height+containerPaddings.height+captionHeight+aHeight,null,[{el:gal._galleryStage,top:false,left:false,width:width,height:height},{el:gal._image,top:false,left:false,width:width,height:height}]);},_keyEvent:function(ev){if(ev.keyCode===37){this._gal.goToPrevious();}
if(ev.keyCode===39){this._gal.goToNext();}},_onCancel:function(dialog){Event.stopObserving(document,"keyup",this._keyEvent.bindObj(this));this._gal._firstImage=false;this._galContents=[];for(var i=0,l=dialog.childNodes.length;i<l;i++){if(!Css.hasClassName(dialog.childNodes[i],"tools")){this._galContents.push(dialog.childNodes[i]);}}},_setContainer:function(clicked,el){var tools=dce("div"),a=dce("a"),opt=this._options,oldCont,newOpt;el.style.overflow="hidden";a.href="#";a.innerHTML=opt.closeLabel;Css.addClassName(a,"close");tools.appendChild(a);Css.addClassName(tools,"tools");tools.style.visibility="hidden";el.appendChild(tools);var gal=this._gal.getGallery();this._gal._galleryStage.style.width=opt.initialWidth+"px";this._gal._galleryStage.style.height=opt.initialHeight+"px";var i=0,l,jumpNode=false;if(!this._galContents){gal.insertBefore(this._gal._galleryStage,this._gal._list);while(true){if(Css.hasClassName(gal.childNodes[i],"thumbs")){if(this._options.container){el.appendChild(this._gal.makeThumbList());jumpNode=true;}else{gal.childNodes[i].style.display="none";}}
if(this._options.container&&Css.hasClassName(gal.childNodes[i],"paginationNext")||Css.hasClassName(gal.childNodes[i],"paginationPrevious")){jumpNode=true;}
(gal.childNodes[i].nodeType===1&&!jumpNode)?el.appendChild(gal.childNodes[i]):i++;if(!gal.childNodes[i]){break;}
if(jumpNode){jumpNode=false;}}}else{for(i=0,l=this._galContents.length;i<l;i++){el.appendChild(this._galContents[i]);}}
Event.observe(a,"click",function(ev,el){Event.stop(ev);Dialog.removeLayer();this._dialog=false;this._dims=false;this._onCancel(el);}.bindObjEvent(this,el));var onChange=this._onChange.bindObj(this,tools,Dimensions.elementHeight(tools));if(this._gal._prev){tools.appendChild(this._gal._prev);}
if(this._gal._next){tools.appendChild(this._gal._next);}
if(this._gal._first){tools.appendChild(this._gal._first);}
if(this._gal._last){tools.appendChild(this._gal._last);}
Fade.show(tools,{dur:0});this._gal.setSlidebox(clicked,onChange);Event.observe(document,"keyup",this._keyEvent.bindObj(this));}};}());
