jQuery.fn.extend({roller: function(tmp_obj) {
	var obj = this;
	
	obj.option = {
		pos:0, 					//posição da pagina
		line:1, 				//numero de thumbs por linha
		linethumb:1, 			//numero de linhas por pagina
		roller:'left',			//posição de rolagem [left, top]
		dimRoller:0, 			//tamanho da rolagem
		total:0, 				//total de linhas
		thumbs:0, 				//thumbs ex:$('#ul li')
		btant:0, 				//botao anterior
		btpro:0, 				//botao proximo
		dimModeRoller:'normal', //modo de calculo do tamanho[normal, auto(calcula automatico o tamanho)]
		initThumb:1 			//numero de thumbs iniciados
	};
	$.extend(obj.option,tmp_obj); 
	
	obj.posanterior = 0;//posicao anterior;
	
	if(obj.option.thumbs == 0){//verifica se os thumbs foram definidos
		alert('Defina os Thumbs');
		return false;
	}
	
	if(obj.option.btant == 0 || obj.option.btpro == 0){
		alert('Defina os Botões');
		return false;
	}
		
	if(obj.option.total == 0){//se total não for iniciado				
		obj.option.total = Math.ceil(obj.option.thumbs.size() / obj.option.line);
		if(obj.option.initThumb > 1){
			obj.option.total -= (obj.option.initThumb - 1);
		}
	}
	
	if(obj.option.dimRoller == 0){ //se nao for definido tamanho
		switch(obj.option.roller){
			case 'left':
					obj.option.dimRoller = obj.option.thumbs.eq(0).outerWidth(true);
					alert(obj.option.dimRoller);
				break;
			case 'top':
					obj.option.dimRoller = obj.option.thumbs.eq(0).outerHeight(true);					
				break;
			default:
				break;
		}	
	}
	
	this.hidebtant = function(){
		obj.option.btant.css({'visibility':'hidden'});
	};
	
	this.hidebtpro = function(){
		obj.option.btpro.css({'visibility':'hidden'});
	};
	
	this.showbtant = function(){
		obj.option.btant.css({'visibility':'visible'});
	};
	
	this.showbtpro = function(){
		obj.option.btpro.css({'visibility':'visible'});
	};
	
	this.initSetas = function(){
		if(obj.option.total < 2){//se possuir somente uma pagina
			obj.hidebtant();
			obj.hidebtpro();
		} else {
			if(obj.option.pos == 0){
				obj.hidebtant();
			} else {
				obj.showbtant();
			}			
			if(obj.option.pos == (obj.option.total - 1)){
				obj.hidebtpro();
			} else {
				obj.showbtpro();
			}
		}
	};
	
	this.initRoller = function(){
		obj.initSetas();
		
		if(obj.option.dimModeRoller == 'auto'){ //se o mode de calculo do tamanho for igual a 'auto', pega automaticamento o tamanho da transição
			obj.aux = (obj.option.line - 1) + (obj.option.linethumb * obj.posanterior);			
			switch(obj.option.roller){
				case 'left':
						obj.option.dimRoller = obj.option.thumbs.eq(obj.aux).outerWidth(true);	
					break;
				case 'top':						
						obj.option.dimRoller = obj.option.thumbs.eq(obj.aux).outerHeight(true);	
					break;
				default:
					break;
			}					
		}		
		obj.posanterior = obj.option.pos;		
		
		switch(obj.option.roller){//movimenta de agordo com o tipo de movimento
			case 'left':
					obj.stop().animate({marginLeft:-(obj.option.dimRoller * obj.option.pos)+'px'});
				break;
			case 'top':
					obj.stop().animate({marginTop:-(obj.option.dimRoller * obj.option.pos)+'px'});
				break;
			default:
				break;
		}		
	};
	
	obj.option.btant.click(function(event){
		event.preventDefault()
		obj.option.pos--;
		obj.initRoller();
	});
	
	obj.option.btpro.click(function(event){
		event.preventDefault();
		obj.option.pos++;
		obj.initRoller();
	});
	
	if(obj.option.pos > 0){
		this.initRoller();
	}
	
	this.initSetas();	
}});
