var BySlideMenu=new Class({Implements:Options,options:{defaultIndex:false,expandMode:'mouseover',pinMode:true,vertical:false,compressSize:40,elementWidth:320,elementHeight:240,autoSize:true,duration:500,transition:'linear',containerWidth:null,containerHeight:null,useOverflow:false},initialize:function(containerId,options){this.setOptions(options);this.elementsId=[];this.containerId=$pick(containerId,'byslidemenu');var container=$(this.containerId);container.addEvent('mouseleave',function(){this.resetAll();}.bind(this));var elements=container.getChildren();var num=elements.length;var imgHeight=null,imgWidth=null;if(this.options.autoSize){var firstImg=elements[0].getElement('img');if(firstImg){imgHeight=firstImg.getHeight();imgWidth=firstImg.getWidth();}}var offsetWidth=elements[0].getStyle('padding-left').toInt()+elements[0].getStyle('padding-right').toInt()+elements[0].getStyle('border-left-width').toInt()+elements[0].getStyle('border-right-width').toInt();var offsetHeight=elements[0].getStyle('padding-top').toInt()+elements[0].getStyle('padding-bottom').toInt()+elements[0].getStyle('border-top-width').toInt()+elements[0].getStyle('border-bottom-width').toInt();if(this.options.vertical){this.posAttr='top';var containerWidth=$pick(imgWidth,this.options.containerWidth,this.options.elementWidth);if(containerWidth=="full")containerWidth=container.getParent().getStyle('width').toInt();if(this.options.containerHeight){if(this.options.containerWidth=='full')var containerHeight=container.getParent().getStyle('height').toInt();else
var containerHeight=this.options.containerHeight;this.openSize=containerHeight-((num-1)*this.options.compressSize);}else
{this.openSize=$pick(imgHeight,this.options.elementHeight);var containerHeight=this.openSize+((num-1)*this.options.compressSize);}this.closeSize=containerHeight/num;var elementHeight=this.openSize;var elementWidth=containerWidth;}else
{this.posAttr='left';var containerHeight=$pick(imgHeight,this.options.containerHeight,this.options.elementHeight);if(containerHeight=="full")containerHeight=container.getParent().getStyle('height').toInt();if(this.options.containerWidth){if(this.options.containerWidth=='full')var containerWidth=container.getParent().getStyle('width').toInt();else
var containerWidth=this.options.containerWidth;this.openSize=containerWidth-((num-1)*this.options.compressSize);}else
{this.openSize=$pick(imgWidth,this.options.elementWidth);var containerWidth=this.openSize+((num-1)*this.options.compressSize);}this.closeSize=containerWidth/num;var elementHeight=containerHeight;var elementWidth=this.openSize;}container.style.visibility='visible';container.setStyles({padding:0,position:'relative',overflow:'hidden',width:containerWidth,height:containerHeight});var id=0;elements.each(function(element){var beforePos=id*this.options.compressSize;var afterPos=this.openSize+((id-1)*this.options.compressSize);var closePos=id*this.closeSize;element.setStyles({position:'absolute',height:elementHeight-offsetHeight,width:elementWidth-offsetWidth});element.setStyle(this.posAttr,closePos);element.set('tween',{duration:this.options.duration,transition:this.options.transition});id++;element.set('id',this.containerId+'_Elm'+id);element.store('id',id);element.store('beforePos',beforePos);element.store('afterPos',afterPos);element.store('closePos',closePos);this.elementsId.include(id);if([this.options.pinMode,this.options.expandMode].contains('mouseover')){element.addEvent('mouseenter',function(element){if(this.options.expandMode=='mouseover')this.expand(element,this.options.pinMode=='mouseover');}.bind(this,element));}if(this.options.pinMode||this.options.expandMode=='click'){element.addEvent('click',function(element){if(this.options.defaultIndex==element.retrieve('id')){this.options.defaultIndex=0;this.resetAll();}else if(this.options.expandMode=='click')this.expand(element,this.options.pinMode=='click');else
this.options.defaultIndex=element.retrieve('id');}.bind(this,element));}},this);if(this.options.defaultIndex)this.expand(this.options.defaultIndex,false,true);},expand:function(element,setDefault,noAnim){if($type(element)=='number')element=$(this.containerId+'_Elm'+element);if(this.options.useOverflow)this.clearOverflow();var currentId=element.retrieve('id');if(this.options.useOverflow)this.switchOverflowTimer=this.switchOverflow.delay(this.options.duration,this,element);if(setDefault)this.options.defaultIndex=currentId;this.elementsId.each(function(elementId){var elm=$(this.containerId+'_Elm'+elementId);if(elementId>currentId)this.compressAfter(elm,noAnim);else
this.compressBefore(elm,noAnim);},this);},switchOverflow:function(element){element.setStyle('overflow','auto');},clearOverflow:function(){$clear(this.switchOverflowTimer);$(this.containerId).getChildren().setStyle('overflow','');},compressBefore:function(element,noAnim){var pos=element.retrieve('beforePos');var tween=element.get('tween',{property:this.posAttr,duration:this.options.duration,transition:this.options.transition});if(noAnim)tween.set(pos);else
tween.start(pos);},compressAfter:function(element,noAnim){var pos=element.retrieve('afterPos');var tween=element.get('tween',{property:this.posAttr,duration:this.options.duration,transition:this.options.transition});if(noAnim)tween.set(pos);else
tween.start(pos);},reset:function(element){var pos=element.retrieve('closePos');element.get('tween',{property:this.posAttr,duration:this.options.duration,transition:this.options.transition}).start(pos);},resetAll:function(){if(this.options.useOverflow)this.clearOverflow();if(this.options.defaultIndex)this.expand(this.options.defaultIndex);else
{this.elementsId.each(function(elementId){this.reset($(this.containerId+'_Elm'+elementId));},this);}}});
