//version 1.1
var Herobox = Class.create({
  initialize: function(query) {
    this.options = Object.extend({} , arguments[0] || {}  );
    this.actual = 0;
	this.tmout;
 	this.interval = this.options.interval || 8000;
    this.section = this.options.section || "section";
	this.onScroll = this.options.onScroll || 'click';
    this.prev = this.options.prev || "prev";
    this.next = this.options.next || "next";
    this.pag = this.options.pag || "pag";
    this.play = this.options.play || "pause";
    this.type = this.options.type || "null";
	this.mode = this.options.mode || "";
	this.fxduration = 0.5;
    this.photos;
	this.fxscroll;
	this.numElements;
	this.imgwidth;
	this.originalPosition;
	this.actual;
	this.posactual;
	this.waiting = false;
	this.timeoutwait;
    this.start(this.options.container);
  },	
  start: function(container) {  
  	if (this.mode=='carrusel'){
		this.imgwidth = 204;
		this.photos = 3;
	}
	else{
		this.imgwidth = 410;
		this.photos = 1;	
	}
	var elems = container.select("div.content a.lnkmulti");
	this.numElements = elems.length-(this.photos);
	this.originalPosition = this.photos*this.imgwidth*(-1);
	this.posactual = this.originalPosition;
	this.actual = 1;
	var prev = container.select("." + this.pag + "env li a." + this.prev)[0];
	var next = container.select("." + this.pag + "env li a." + this.next)[0];
	var play = container.select("." + this.pag + "env li a." + this.play)[0];
	var scroller = container.select(".scroller")[0];
	var elemsContainer = container.select(".content");
	elemsContainer[0].setStyle({left:this.posactual + 'px'});
	prev.href = "javascript:;";	
	prev.observe(this.onScroll, this.movePrev.bind(this,scroller,container,play,false));				
	next.href = "javascript:;";	
	next.observe(this.onScroll, this.moveNext.bind(this,scroller,container,play,false));
	if(play){
		play.href = "javascript:;";	
		play.observe("click", this.movePlay.bind(this,scroller,container,play));
	}
	var i=1;
	var j=this.numElements-this.photos+1;
	if (this.numElements<=this.photos){
		prev.setStyle({display:"none"});
		next.setStyle({display:"none"});
	}
	if (this.mode != 'carrusel')
		this.movePlay(scroller,container,play);
  }, 
  moveNext: function(scroller,container,elemplay,activated) { 
  	if (!this.waiting){
		if (this.mode != "carrusel" && !activated){
			clearInterval(this.tmout);
			elemplay.removeClassName('play');
			elemplay.addClassName('pause');
		}
		this.waiting = true;
		this.actual++;
		var element = container.select('.content')[0];
		if (this.posactual==(this.numElements)*this.imgwidth*(-1)){
			this.posactual = 0;
			this.actual = 1-this.photos+1;
			element.setStyle({left:this.posactual + 'px'});	
		}
		this.posactual = this.posactual - this.imgwidth;
		var th = this;
		this.timeoutwait = setTimeout(function(){th.wait()},this.fxduration*1000);
		//element.setStyle({left:this.posactual + 'px'});	
		this.fxscroll = new Effect.Move(element,{x:this.posactual,y:0,mode:'absolute',transition: Effect.Transitions.sinoidal, duration: this.fxduration});		
	}
  },
  movePrev: function(scroller,container,elemplay,activated) {   
  	if (!this.waiting){
		if (this.mode != "carrusel" && !activated){
			clearInterval(this.tmout);
			elemplay.removeClassName('play');
			elemplay.addClassName('pause');
		}
		this.waiting = true;
		this.actual--;
		var element = container.select('.content')[0];
		if (this.posactual==0){
			this.posactual = this.originalPosition - ((this.numElements-this.photos)*this.imgwidth);
			this.actual = this.numElements-this.photos;
			element.setStyle({left:this.posactual + 'px'});	
		}
		this.posactual = this.posactual + this.imgwidth;
		var th = this;
		this.timeoutwait = setTimeout(function(){th.wait()},this.fxduration*1000);
		this.fxscroll = new Effect.Move(element,{x:this.posactual,y:0,mode:'absolute',transition: Effect.Transitions.sinoidal, duration: this.fxduration});		
	}
  },
  wait: function(){
	 clearTimeout(this.timeoutwaiting);
	 this.waiting = false;
  },  
  movePlay: function(scroller,container,elemplay) {
	if (elemplay.hasClassName("pause")){
		var th = this;
		this.tmout = setInterval(function(){th.moveNext(scroller,container,elemplay,true)},this.interval);
		elemplay.removeClassName('pause');
		elemplay.addClassName('play');
	}else{
		clearInterval(this.tmout);
		elemplay.removeClassName('play');
		elemplay.addClassName('pause');
	}
  }
});

document.observe("dom:loaded", function() {
	var src = $A(document.getElementsByTagName("script")).findAll( function(s) {
      return (s.src && s.src.match(/hero\.js(\?.*)?$/))
    })[0].src;
	var query = src.toQueryParams();
	try
	{
		query.type = heroboxtype;
	}
	catch(ex){}
	var module = query.module || "module";
	$$("." + module).each(function(module){
		query.container = module;
		if(  module.hasClassName('carrusel') ) query.mode = "carrusel";
		else query.mode = "";
		new Herobox(query);
	})	
});
