Ext.ns('Ext.ux.MyFolio');Ext.apply(Ext.ux.MyFolio,{frameBorder:1,frameOffset:3,itemArray:[],init:function(container,config){if(!Ext.fly(container))return null;if(config&&Ext.isObject(config)){Ext.apply(this,config);}
var ctParam={width:Ext.fly(container).getWidth(),height:Ext.fly(container).getHeight(),x:Ext.fly(container).getX(),y:Ext.fly(container).getY()};var all=Ext.select('img.myfolio',null,container);var cnt=all.getCount();all.each(function(el,composite,i){var preload=new Image();el.id=Ext.id(el,'my-folio');preload.onload=this.initImg(el.id,container,ctParam,this,cnt);preload.src=el.dom.src;},this);},initImg:function(id,ct,ctParam,fel,cnt){return function(){var el=Ext.get(id),Item,itemStyle,itemParam,Descr,href,sWidth,sHeight,bWidth,bHeight;href=(el.parent().dom.tagName.toLowerCase()=='a')?el.parent().dom.getAttribute('href'):'';if(href){el.parent().dom.parentNode.insertBefore(el.dom,el.parent().dom);el.dom.parentNode.removeChild(el.dom.nextSibling);}
bWidth=this.width;bHeight=this.height;sWidth=el.getWidth();sHeight=el.getHeight();itemStyle={borderWidth:fel.frameBorder+'px',padding:fel.frameOffset+'px',width:sWidth+'px',height:sHeight+'px',top:parseInt(el.getStyle('marginTop'))-fel.frameBorder-fel.frameOffset+'px','margin-left':parseInt(el.getStyle('marginLeft'))-fel.frameBorder-fel.frameOffset+'px'};el.setVisible(false).setStyle({margin:0});Item=el.wrap({cls:'imgWrap'}).setStyle(itemStyle);el.addClass('stretch').setVisible(true);if(el.dom.getAttribute('alt')){Descr=Item.createChild({html:href?'<a href="'+href+'">'+el.dom.getAttribute('alt')+'</a>':el.dom.getAttribute('alt'),cls:'descr'}).wrap({cls:'descrWrap',id:id+'_descr'});Descr.first().insertHtml('beforeBegin','<b class="e4"></b><b class="e3"></b><b class="e2"></b><b class="e1"></b>')
Descr.last().insertHtml('afterEnd','<b class="e1"></b><b class="e2"></b><b class="e3"></b><b class="e4"></b>');}
itemParam={item:Item,descr:Descr,href:href,bWidth:bWidth+fel.frameBorder*2+fel.frameOffset*2,bHeight:bHeight+fel.frameBorder*2+fel.frameOffset*2,sWidth:sWidth+fel.frameBorder*2+fel.frameOffset*2,sHeight:sHeight+fel.frameBorder*2+fel.frameOffset*2,x:el.getX(),y:el.getY(),ctParam:ctParam};fel.itemArray.push(new Ext.ux.MyFolio.Image(Ext.apply({},itemParam,{frameOffset:fel.frameOffset,frameBorder:fel.frameBorder,ct:ct})));if(fel.itemArray.length==cnt){fel.fixItems();}}},fixItems:function(){for(var i=0;i<this.itemArray.length;i++){this.itemArray[i].item.setStyle({position:'absolute',left:this.itemArray[i].x-this.itemArray[i].ctParam.x-parseInt(this.itemArray[i].item.getStyle('marginLeft'))-this.frameOffset-this.frameBorder+'px'});}}});Ext.ux.MyFolio.Image=function(config){Ext.apply(this,config||{});this.initItem();}
Ext.ux.MyFolio.Image.prototype={ct:null,item:null,descr:null,duration:0.35,hoverDelay:2000,readyForUp:true,readyForDown:false,mouseIsOut:true,initItem:function(){if(!this.item.dom){this.item=Ext.get(this.item);}
this.item.on({'mouseenter':this.mouseOver,'mouseleave':this.mouseOut,'click':this.click,scope:this});if(this.descr){this.descr.on({'mouseenter':this.mouseOver,'mouseleave':this.mouseOut,scope:this});}
this.hideTask=new Ext.util.DelayedTask(function(){this.readyForDown=false;this.growDown();},this);},mouseOver:function(){this.mouseIsOut=false;if(this.readyForUp){this.item.highlight(null,{duration:0.35});}
else if(this.readyForDown){this.item.setStyle('z-index',100);}
this.hideTask.cancel();},mouseOut:function(){this.mouseIsOut=true;if(this.readyForDown){this.item.setStyle('z-index',50);this.hideTask.delay(this.hoverDelay);}},click:function(){if(this.readyForUp){this.readyForUp=false;this.growUp();}
else if(this.readyForDown){this.readyForDown=false;this.growDown();}},growUp:function(){var x=this.x-Math.round((this.bWidth-this.sWidth)/2)-this.frameOffset-this.frameBorder,y=this.y-Math.round((this.bHeight-this.sHeight)/2)-this.frameOffset-this.frameBorder;x=x<0?this.frameOffset:x;y=y<0?this.frameOffset:y;this.item.setStyle({'z-index':100}).addClass('active').stopFx().shift({width:this.bWidth,height:this.bHeight,x:x,y:y,duration:this.duration||0.35,callback:this.afterUp,scope:this});},afterUp:function(){this.readyForDown=true;if(this.descr){this.descr.setStyle({top:this.bHeight+this.frameOffset*2+'px',left:Math.round((this.bWidth-this.bWidth*0.6)/2)+'px',width:Math.round(this.bWidth*0.6)+'px'}).slideIn('t',{easing:'elasticOut',duration:0.5});}
if(this.mouseIsOut){this.item.setStyle('z-index',50);this.hideTask.delay(this.hoverDelay);}},growDown:function(){if(this.descr){if(this.descr.hasActiveFx()){this.descr.stopFx();}
this.descr.setStyle('display','none');}
this.item.setStyle('z-index',50).shift({width:this.sWidth,height:this.sHeight,x:this.x-this.frameOffset-this.frameBorder,y:this.y-this.frameOffset-this.frameBorder,duration:this.duration||0.35,afterStyle:{'z-index':10},callback:this.afterDown,scope:this});},afterDown:function(){this.readyForUp=true;this.item.removeClass('active');}};
