function GalleryMover(prevButton,nextButton,rowElem,moveSize,rowEntitClass,nextMoveRowDirection,speed){try{var Dom=YAHOO.util.Dom;var Ev=YAHOO.util.Event;}catch(e){alert('Missing yahoo-dom-event.js');}
try{var Anim=YAHOO.util.Anim;}catch(e){alert('Missing animation.js');}
this.nextMoveRowDirection=nextMoveRowDirection;this.speed=speed;this.rowElem=rowElem;this.rowEntitClass=rowEntitClass;this.moveSize=moveSize;this.prevButton=prevButton;this.nextButton=nextButton;this.isAnimating=false;var that=this;switch(this.nextMoveRowDirection){case'right':case'left':var entits=Dom.getElementsByClassName(this.rowEntitClass,null,this.rowElem);this.entitsCount=entits.length
var margins=parseInt(Dom.getStyle(entits[1],'margin-left').replace("px",""))+parseInt(Dom.getStyle(entits[1],'margin-right').replace("px",""));var entitSize=entits[1].offsetWidth+margins;this.entitSize=entitSize;this.colSize=entitSize*entits.length;Dom.setStyle(this.rowElem,'width',this.colSize+'px');break;case'up':case'down':var entits=Dom.getElementsByClassName(this.rowEntitClass,null,this.rowElem);this.entitsCount=entits.length
var margins=parseInt(Dom.getStyle(entits[1],'margin-top').replace("px",""))+parseInt(Dom.getStyle(entits[1],'margin-bottom').replace("px",""));var entitSize=entits[1].offsetHeight+margins;this.entitSize=entitSize;this.colSize=entitSize*entits.length;Dom.setStyle(this.rowElem,'height',this.colSize+'px');break;}
this.lastMove=((this.colSize-Math.floor(this.colSize/this.moveSize)*this.moveSize));this.stepPosition=0;this.lastMove!=0?this.stepsCount=Math.floor(this.colSize/this.moveSize):this.stepsCount=Math.floor(this.colSize/this.moveSize)-1;this.doLastStep=(this.stepsCount==1);this.wasMadeLastStep=false;this.actualPosition=function(side){return parseInt(Dom.getStyle(this.rowElem,side).replace("px",""));}
this.changeButton=function(button,action){switch(action){case'disable':Dom.addClass(button,'button-disable');break;case'enable':Dom.removeClass(button,'button-disable');break;}}
this.changeButton(this.prevButton,'disable');if((this.entitSize*this.entitsCount)<=this.moveSize){this.changeButton(this.nextButton,'disable');}
this.moveNext=function(e,fce){e?Ev.stopEvent(e):true;if(that.isAnimating==true||(Dom.hasClass(that.nextButton.length>0?that.nextButton[0]:that.nextButton,'button-disable'))){return;}
if(((that.stepPosition+1)==that.stepsCount&&that.lastMove!=0&&that.wasMadeLastStep==false)){that.doLastStep=true;that.wasMadeLastStep=true;}else{that.doLastStep=false;}
that.isAnimating=true;switch(that.nextMoveRowDirection){case'right':var params={left:{'to':that.actualPosition('left')+(that.doLastStep?(-1)*that.lastMove:(-1)*that.moveSize),'units':'px'}}
var controlData={'absolutka':'left','multip':(-1)}
break;case'left':var params={left:{'to':that.actualPosition('left')+that.moveSize,'units':'px'}}
var controlData={'absolutka':'left','multip':(1)}
break;case'up':var params={top:{'to':that.actualPosition('top')+(that.doLastStep?(-1)*that.lastMove:(-1)*that.moveSize),'units':'px'}}
var controlData={'absolutka':'top','multip':(-1)}
break;case'down':var params={top:{'to':that.actualPosition('top')+(that.doLastStep?that.lastMove:that.moveSize),'units':'px'}}
var controlData={'absolutka':'top','multip':(1)}
break;}
var animation=new Anim(that.rowElem,params,that.speed,YAHOO.util.Easing.easeOut);animation.onComplete.subscribe(function(){that.isAnimating=false;that.changeButton(that.prevButton,'enable');that.stepPosition++;if(that.stepPosition==that.stepsCount){that.changeButton(that.nextButton,'disable');}
if(typeof(fce)=="function"){fce();}});animation.animate();}
this.movePrevious=function(e,fce){e?Ev.stopEvent(e):true;if(that.isAnimating==true||Dom.hasClass(that.prevButton.length>0?that.prevButton[0]:that.prevButton,'button-disable')){return;}
if(that.stepPosition==1&&that.wasMadeLastStep==true){that.doLastStep=true;that.wasMadeLastStep=false;}else{that.doLastStep=false;}
that.isAnimating=true;switch(that.nextMoveRowDirection){case'right':var params={left:{'to':that.actualPosition('left')+(that.doLastStep?that.lastMove:that.moveSize),'units':'px'}}
var controlData={'absolutka':'left','multip':(1)}
break;case'left':var params={left:{'to':that.actualPosition('left')+((-1)*that.moveSize),'units':'px'}}
var controlData={'absolutka':'left','multip':(-1)}
break;case'up':var params={top:{'to':that.actualPosition('top')+(that.doLastStep?that.lastMove:that.moveSize),'units':'px'}}
var controlData={'absolutka':'top','multip':(1)}
break;case'down':var params={top:{'to':that.actualPosition('top')+(that.doLastStep?(-1)*that.lastMove:(-1)*that.moveSize),'units':'px'}}
var controlData={'absolutka':'top','multip':(-1)}
break;}
var animation=new Anim(that.rowElem,params,that.speed,YAHOO.util.Easing.easeOut);animation.onComplete.subscribe(function(){that.isAnimating=false;that.changeButton(that.nextButton,'enable');that.stepPosition--;if(that.actualPosition(controlData.absolutka)+((controlData.multip)*that.moveSize)-that.moveSize>=0){that.changeButton(that.prevButton,'disable');}
if(typeof(fce)=="function"){fce();}});animation.animate();}
this.getGalleryToElement=function(elem){var elemRegion=Dom.getRegion(elem);var rowRegon=Dom.getRegion(this.rowElem);var elemLeft=elemRegion.left-rowRegon.left;var step=Math.ceil((elemLeft/this.moveSize)-1);if(step>0){this.changeButton(this.prevButton,'enable');}
if(step>=this.stepsCount){this.changeButton(this.nextButton,'disable');}
if(step!=this.stepsCount){Dom.setStyle(this.rowElem,'left',(step*this.moveSize*(-1))+"px");}else{this.changeButton(this.nextButton,'disable');Dom.setStyle(this.rowElem,'left',((((step-1)*this.moveSize)+this.lastMove)*(-1))+"px");that.wasMadeLastStep=true;}
this.stepPosition=step;}}
