var block = false;
function Carrousel(config)
{
	this.width = 0;
	this.element = null;
	this.totalImages = 0;
	this.totalWidth = 0;
	this.atualPosition = 0;
	
	//botoes
	this.idBtnPrevious = null;
	this.idBtnNext = null;
	
	this.duration = .5;
	this.mode = 'run';
	this.callbalck = null;
	this.easeMethod = 'easeOut';
	
	// aplica as configurações ao objeto
	Ext.apply(this, config);
	
	// declaração de funções
	this.previousImage = previousImage;
	this.nextImage = nextImage;
	this.loadImages = loadImages;
	this.refreshButtons = refreshButtons;
	
	this.btnPrevious = Ext.get(this.idBtnPrevious);
	this.btnPrevious.addListener('click', previousImage, this);
	this.btnPrevious.addClass('cursor');
	
	this.btnNext = Ext.get(this.idBtnNext);
	this.btnNext.addListener('click', nextImage, this);
	this.btnNext.addClass('cursor');
	
	function loadImages()
	{
		this.totalImages = this.element.select('img').elements.length;
		this.totalWidth = this.totalImages * this.width;
		this.element.setWidth(this.totalWidth);
		this.element.setLeft(0);
		this.refreshButtons(0);
	}
	
	function refreshButtons(atualPosition) {
		// prev button
		if( Math.abs(atualPosition == 0)) {
			this.btnPrevious.addClass('disable');
		} else {
			//produtos
			if (this.btnPrevious.getAttribute('className') == 'prev cursor disable') {
				document.getElementById(this.idBtnPrevious).className = 'prev cursor'
			} else if (this.btnPrevious.getAttribute('className') == 'button-prev cursor disable') {
				document.getElementById(this.idBtnPrevious).className = 'button-prev cursor'
			}
		}
		
		//next button
		if( Math.abs(atualPosition) == (this.totalWidth - this.width)) {
			this.btnNext.addClass('disable');
		} else {
			if (this.btnNext.getAttribute('className') == 'next cursor disable') {
				document.getElementById(this.idBtnNext).className = 'next cursor'
			} else if (this.btnNext.getAttribute('className') == 'button-next cursor disable') {
				document.getElementById(this.idBtnNext).className = 'button-next cursor'
			}
		}
	}
	
	function previousImage()
	{
		this.atualPosition = parseInt(this.element.getStyle('left').replace('px', ''));
		var newPosition = this.atualPosition;
		if( Math.abs(this.atualPosition != 0) && !block){
			newPosition = this.atualPosition+this.width;
			block = true;
			this.element.animate(
			    {
		    		left: {to: (this.atualPosition+this.width), from: this.atualPosition }
		   	 	},
			    this.duration,
			   	function(){
					block = false;
			   	},
			    this.easeMethod,
			    this.mode
			);
		}
		this.refreshButtons(newPosition);
		
	}

	function nextImage()
	{
		this.atualPosition = parseInt(this.element.getStyle('left').replace('px', ''));
		var newPosition = this.atualPosition;
		if((this.totalWidth - this.width) != Math.abs(this.atualPosition) && !block){
			newPosition = this.atualPosition-this.width;
			block = true;
			this.element.animate(
			    {
		    		left: {to: (this.atualPosition-this.width), from: this.atualPosition }
		   	 	},
			    this.duration,
			    function(){
					block = false;
			   	}, 
			    this.easeMethod,
			    this.mode
			);
		}
		this.refreshButtons(newPosition);
	}
};

