var GalSliding=new Class({Implements:[Options],options:{holder:".holder",elementsParent:"ul",elements:"li",nextItem:".next",prevItem:".prev",stop:".stop",start:".start",pause:".btn-stop",speed:600,duration:4000,steps:1,current:0,stopOnHover:true,transition:Fx.Transitions.linear,direction:"horizontal",mode:"callback",disableClass:"disable",currentClass:"active",random:false,pagingCreate:"gallery-paging",paging:".gallery-paging li a",autoplay:4000,autoplayOpposite:false,onStart:function(_1,_2,_3){
},onPlay:function(_4,_5,_6){
}},initialize:function(_7,_8){
if(_7){
this.gallery=_7;
this.setOptions(_8);
this.holder=this.gallery.getElement(this.options.holder);
this.itemsParent=this.holder.getElement(this.options.elementsParent);
this.items=this.itemsParent.getElements(this.options.elements);
this.next=this.gallery.getElement(this.options.nextItem);
var _9=this.next;
var _a;
this.prev=this.gallery.getElement(this.options.prevItem);
this.stop=this.gallery.getElement(this.options.stop);
this.start=this.gallery.getElement(this.options.start);
this.pause=this.gallery.getElement(this.options.pause);
this.current=this.options.current;
this.bound={rotate:this.rotate.bind(this)};
if(this.options.direction=="horizontal"){
this.direction="margin-left";
this.size=this.items[0].getWidth()+parseInt(this.items[0].getStyle("margin-right"))+parseInt(this.items[0].getStyle("margin-left"));
this.visible=Math.round(this.holder.getWidth()/this.size);
}else{
this.direction="margin-top";
this.size=this.items[0].getHeight();
this.visible=Math.round(this.holder.getHeight()/this.size);
}
if(this.next==null){
this.next=new Element("a").injectInside(this.gallery);
}
if(this.prev==null){
this.prev=new Element("a").injectInside(this.gallery);
}
this.next.cl=this.next.className;
this.prev.cl=this.prev.className;
if(this.visible<this.items.length){
if(this.options.random){
Array.prototype.shuffle=function(b){
var i=this.length,j,t;
while(i){
j=Math.floor((i--)*Math.random());
t=b&&typeof this[i].shuffle!=="undefined"?this[i].shuffle():this[i];
this[i]=this[j];
this[j]=t;
}
return this;
};
this.items.shuffle(this.items);
this.hidden=new Element("div");
this.items.each(function(el,i){
this.wrap=new Element("div").adopt(el);
this.hidden.set("html",this.hidden.get("html"),this.wrap.get("html"));
}.bind(this));
this.itemsParent.set("html",this.hidden.get("html"));
this.items=this.itemsParent.getElements(this.options.elements);
}
this.options.steps=this.options.steps>this.visible?this.visible:this.options.steps;
this.options.duration=this.options.duration<1000?1000:this.options.duration;
this.options.speed=this.options.speed>6000?6000:this.options.speed;
if(this.options.paging&&!this.options.pagingCreate){
this.paging=this.gallery.getElements(this.options.paging);
for(var i=0;i<this.paging.length;i++){
if(this.paging[i].hasClass(this.options.currentClass)){
this.current=i;
}
}
}
if(this.options.mode!="circle"){
if(this.visible+this.current>=this.items.length){
this.margin=(this.items.length-this.visible)*this.size;
this.current=this.items.length-this.visible;
}else{
this.margin=this.current*this.size;
}
if(this.options.paging){
for(var i=0;i<this.items.length;i++){
if(this.items[i].hasClass(this.options.currentClass)){
this.current=i;
}
}
if(this.options.pagingCreate){
if(this.gallery.getElements("."+this.options.pagingCreate).length){
this.paging=this.gallery.getElements("."+this.options.pagingCreate)[0];
this.paging.innerHTML="";
}else{
this.paging=new Element("ul").injectInside(this.gallery).addClass(this.options.pagingCreate);
}
}else{
this.paging=new Element("ul").injectInside(this.gallery).addClass("paging");
}
for(var i=0;i<this.items.length;i++){
this.paging.innerHTML+="<li><a href=\"#\">"+parseInt(i+1)+"</a></li>";
}
this.paging=this.paging.getElements("a");
this.paging[this.current].addClass(this.options.currentClass);
this.paging.each(function(el,i){
el.addEvent("click",function(){
if(i*this.options.steps+this.visible>=this.items.length){
this.margin=(this.items.length-this.visible)*this.size;
this.current=this.items.length-this.visible;
}else{
this.current=i*this.options.steps;
}
this.margin=this.current*this.size;
this.play(this.options.speed);
return false;
}.bind(this));
}.bind(this));
}
this.play(0);
}else{
if(this.options.paging){
for(var i=0;i<this.items.length;i++){
if(this.items[i].hasClass(this.options.currentClass)){
this.current=i;
}
}
if(this.options.pagingCreate){
if(this.gallery.getElements("."+this.options.pagingCreate).length){
this.paging=this.gallery.getElements("."+this.options.pagingCreate)[0];
this.paging.innerHTML="";
}else{
this.paging=new Element("ul").injectInside(this.gallery).addClass(this.options.pagingCreate);
}
}else{
this.paging=new Element("ul").injectInside(this.gallery).addClass("paging");
}
for(var i=0;i<this.items.length;i++){
this.paging.innerHTML+="<li><a href=\"#\">"+parseInt(i+1)+"</a></li>";
}
this.paging=this.paging.getElements("a");
_a=this.paging;
this.paging[this.current].addClass(this.options.currentClass);
this.paging.each(function(el,i){
el.addEvent("click",function(){
if(this.current<i){
for(var _b=this.current;_b<i;_b++){
_9.fireEvent("click");
}
_a.removeClass("active");
el.addClass("active");
}else{
if(this.current>i){
for(var _b=this.current;_b<i+this.items.length;_b++){
_9.fireEvent("click");
}
_a.removeClass("active");
el.addClass("active");
}
}
return false;
}.bind(this));
}.bind(this));
}
for(;this.items.length<this.options.steps+this.visible;){
this.items.clone().inject(this.itemsParent,"bottom");
this.items=this.itemsParent.getElements(this.options.elements);
}
if(this.current>this.items.length-1){
this.current=this.items.length-1;
}
for(var i=0;i<this.current;i++){
this.items[i].inject(this.itemsParent,"bottom");
}
this.options.paging=false;
}
this.next.addEvent("click",function(){
if(this.options.mode!="circle"){
if(this.visible+this.current>=this.items.length){
if(this.options.mode=="callback"){
this.margin=0;
this.current=0;
}
}else{
if(this.visible+this.current+this.options.steps>=this.items.length){
this.margin=(this.items.length-this.visible)*this.size;
this.current=this.items.length-this.visible;
}else{
this.current=this.current+this.options.steps;
this.margin=this.current*this.size;
}
}
this.play(this.options.speed);
}else{
var _c=this;
this.margin=this.size*this.options.steps;
this.itemsParent.set("tween",{duration:this.options.speed,transition:this.options.transition,property:this.direction,onComplete:function(){
for(var i=0;i<_c.options.steps;i++){
if(_c.current>=_c.items.length){
_c.current=0;
}
_c.current++;
_c.items[_c.current-1].inject(_c.itemsParent,"bottom");
}
this.set(0);
_c.options.onPlay(_c.current,_c.visible,_c.items.length);
},onCancel:function(){
this.onComplete();
}});
this.itemsParent.tween(-this.margin);
_a.removeClass("active");
if(this.current+1<_a.length){
_a[this.current+1].addClass("active");
}else{
_a[this.current-_a.length+1].addClass("active");
}
}
return false;
}.bind(this));
this.prev.addEvent("click",function(){
if(this.options.mode!="circle"){
if(this.current<=0){
if(this.options.mode=="callback"){
this.margin=(this.items.length-this.visible)*this.size;
this.current=this.items.length-this.visible;
}
}else{
if(this.current-this.options.steps<=0){
this.margin=0;
this.current=0;
}else{
this.current=this.current-this.options.steps;
this.margin=this.current*this.size;
}
}
this.play(this.options.speed);
}else{
for(var i=0;i<this.options.steps;i++){
if(this.current-1<0){
this.current=this.items.length;
}
--this.current;
this.items[this.current].inject(this.itemsParent,"top");
}
this.itemsParent.setStyle(this.direction,-this.size*this.options.steps+"px");
this.margin=0;
this.play(this.options.speed);
_a.removeClass("active");
if(this.current<_a.length){
_a[this.current].addClass("active");
}else{
_a[this.current-_a.length+1].addClass("active");
}
}
return false;
}.bind(this));
if(this.options.autoplay||this.start||this.stop){
if(!this.options.autoplay){
this.gallery.addClass("stopped");
}
this.timer=this.bound.rotate.delay(this.options.duration);
this.gallery.addEvent("stopgal",function(){
this.options.autoplay=false;
$clear(this.timer);
}.bind(this));
this.gallery.addEvent("startgal",function(){
$clear(this.timer);
this.options.autoplay=true;
this.timer=this.bound.rotate.delay(this.options.duration);
}.bind(this));
this.gallery.addEvent("mouseenter",function(){
if(this.options.stopOnHover){
this.options.autoplay=false;
$clear(this.timer);
}
}.bind(this));
this.gallery.addEvent("mouseleave",function(){
if(!this.gallery.hasClass("stopped")&&this.options.stopOnHover){
$clear(this.timer);
this.options.autoplay=true;
this.timer=this.bound.rotate.delay(this.options.duration);
}
}.bind(this));
}
if(this.stop){
this.stop.addEvent("click",function(){
this.gallery.addClass("stopped").fireEvent("stopgal");
return false;
}.bind(this));
}
if(this.start){
this.start.addEvent("click",function(){
this.gallery.removeClass("stopped").fireEvent("startgal");
return false;
}.bind(this));
}
if(this.pause){
this.pause.addEvent("click",function(){
if(this.gallery.hasClass("stopped")){
this.gallery.removeClass("stopped").fireEvent("startgal");
}else{
this.gallery.addClass("stopped").fireEvent("stopgal");
}
return false;
}.bind(this));
}
}else{
this.next.addClass(this.next.cl+"-"+this.options.disableClass);
this.prev.addClass(this.prev.cl+"-"+this.options.disableClass);
this.next.addEvent("click",function(){
return false;
}.bind(this));
this.prev.addEvent("click",function(){
return false;
}.bind(this));
if(this.stop){
this.stop.addEvent("click",function(){
return false;
}.bind(this));
}
if(this.start){
this.start.addEvent("click",function(){
return false;
}.bind(this));
}
this.gallery.addClass("stopped");
}
this.options.onStart(this.current,this.visible,this.items.length);
}
},play:function(_d){
this.sidesChecking();
this.itemsParent.set("tween",{duration:_d,transition:this.options.transition});
this.itemsParent.tween(this.direction,-this.margin);
if(this.options.paging){
this.paging.removeClass("active");
this.paging[Math.ceil(this.current/this.options.steps)].addClass("active");
}
this.options.onPlay(this.current,this.visible,this.items.length);
},rotate:function(){
if(this.options.autoplay){
if(!this.options.autoplayOpposite){
this.next.fireEvent("click");
}else{
this.prev.fireEvent("click");
}
this.timer=this.bound.rotate.delay(this.options.duration);
}
},sidesChecking:function(){
if(this.options.mode=="line"){
this.next.removeClass(this.next.cl+"-"+this.options.disableClass);
this.prev.removeClass(this.prev.cl+"-"+this.options.disableClass);
if(this.visible+this.current>=this.items.length){
this.next.addClass(this.next.cl+"-"+this.options.disableClass);
}else{
if(this.current==0){
this.prev.addClass(this.prev.cl+"-"+this.options.disableClass);
}
}
}
}});

function initImagesStretch(){
	var holders = $$('#gallery2 ul.slide a, #gallery3 ul.slide a, #gallery ul.slide a');
	holders.each(function(obj,i){
		if (obj.hasClass('lupa')) return;
		var img = obj.getElement('img');
		var ratio = img.offsetWidth/img.offsetHeight;
		
		var diff = 0;
		var width,height,marginTop;
		if (img.style.borderLeft) diff = parseInt(img.style.borderLeftWidth);
		if (ratio < 1) {
			calcOffsets1();
			if (width > obj.offsetWidth) calcOffsets2();
		} else {
			calcOffsets2();
			if (height > obj.offsetHeight) calcOffsets1();
		}
		img.setStyles({
			width:width-diff*2,
			height:height-diff*2,
			marginTop:marginTop
		});
		
		function calcOffsets1(){
			height = obj.offsetHeight;
			width = obj.offsetHeight*ratio;
			marginTop = 0;
		}
		function calcOffsets2(){
			width = obj.offsetWidth
			height = obj.offsetWidth/ratio,
			marginTop = obj.offsetHeight/2-height/2;
		}
	});
}

window.addEvent("domready",function(){
	var _e=new GalSliding($$("#gallery1")[0],{holder:".gallery-holder",mode:"circle",nextItem:".btn-next",prevItem:".btn-prev",pause:".btn-stop",pagingCreate:"gallery-nav",paging:".gallery-nav li a",speed:300,stopOnHover:false,duration:4000});
	var _f=new GalSliding($$("#gallery2")[0],{holder:".gallery-holder",mode:"circle",nextItem:".btn-next",prevItem:".btn-prev",steps:3,speed:600,duration:5000,stopOnHover:false,autoplay:false});
	$$('#gallery3,#gallery').each(function(obj){
		new GalSliding(obj,{holder:".gallery-holder",mode:"circle",nextItem:".btn-next",prevItem:".btn-prev",stop:".stop",start:".start",steps:4,speed:800,duration:7000,stopOnHover:false,autoplay:false});
	});
});
window.addEvent("load",initImagesStretch);
