(function($) {
	$.fn.banners_slider = function(options){
			
		this.each(function(){
						   
			var defaults = {
				moveView: false,
				boundaries: true,
				autoFoward: false,
				timeFoward: 5000,
				globalWidth: 0
			}
			
			var $ro = $.extend(defaults, options);
			$ro.obj = $(this);
			
			$.getJSON($ro.json, function(data) {
				if(data.banners.length>0){
					for(i=0;i<data.banners.length;i++){
						$("<div class='banner"+i+"'></div>").appendTo(".banners_display");
						$("<li><a href='javascript:;'>"+data.banners[i].titulo+"</a></li>").appendTo(".roleta_container .global");
						data.banners[i].loaded = false;
					}
					
					
					var objImage = new Image();
					objImage.src = data.banners[0].img;
					
					var objBanner = new Object();
					
					objBanner.index = 0;
					objBanner.img = objImage;
					objBanner.arrBanners = data.banners;
					
					$ro.objBanner = objBanner;
					init_roleta($ro);
					load_background($ro);
					
				}
			});
			
		
		});
		
		
		// CONTROLES DO SLIDER ------------------------------------------------------------------------------------
		//=========================================================================================================
		
		function init_roleta($ro){
			$ro.interval;
			$ro.index = 0;
			$ro.middle_element = 0;
			$ro.containerWidth = $($ro.obj).find(".roleta_container").width();
			$ro.globalWidth = 0;
			var qtdElements = $($ro.obj).find(".roleta_container .global").children().length;
			var qtdElementsPerView = Math.floor($ro.containerWidth/$ro.elementWidth);
			
			//-------------------------------------
			if(!$ro.boundaries){
				if(qtdElements>qtdElementsPerView){
					lastElementsView = qtdElements-qtdElementsPerView-1;
					var lastElement = $($ro.obj).find(".roleta_container .global").children(":gt("+lastElementsView+")");
					var firstElement = $($ro.obj).find(".roleta_container .global").children(":lt("+qtdElementsPerView+")");
					$(firstElement).clone().appendTo($($ro.obj).find(".roleta_container .global"));
					$(lastElement).clone().prependTo($($ro.obj).find(".roleta_container .global"));
				}
			}
		
			qtdElements = $($ro.obj).find(".roleta_container .global").children().length;
			$ro.globalWidth = qtdElements*$ro.elementWidth;
			$ro.middle_element = Math.floor(Math.floor($ro.containerWidth/$ro.elementWidth)/2);
			$ro.middle_element = 2;
			$ro.leftBound = -($ro.globalWidth-$ro.containerWidth);
			$ro.arr_position = new Array();
			for(i=0;i<qtdElements;i++){
				if(i<=$ro.middle_element){
					$ro.arr_position[i] = 0;
				}else{
					$ro.arr_position[i] = (i-$ro.middle_element)* -$ro.elementWidth;
					if($ro.arr_position[i] <= $ro.leftBound){
						$ro.arr_position[i] = $ro.leftBound;
					}
				}
			}
			
			$($ro.obj).find(".roleta_container .global").children().each(function(i){
				$(this).click(function(){
					change_background($ro, $(this).index());
				});
				//$(this).click(function(){alert($(this).index())});
			});
			
			
			//alert(qtdElements+" * "+$ro.elementWidth+" = "+$ro.globalWidth+" | "+$ro.boundaries);
			
			$($ro.obj).find(".roleta_container .global").width($ro.globalWidth);
			//alert($ro.globalWidth+" - "+$ro.containerWidth);
			if($ro.globalWidth<=$ro.containerWidth){
				$($ro.obj).find("img.foward").attr("src", $ro.rightArrowDisabled);
				$($ro.obj).find(".btn_right a").attr("onclick","");
				$($ro.obj).find("img.backward").attr("src", $ro.leftArrowDisabled);
				$($ro.obj).find(".btn_left a").attr("onclick","");
			}else{
				if($ro.autoFoward)$ro.interval = setInterval(function(){foward($ro);}, $ro.timeFoward);
				if($ro.boundaries){
					$($ro.obj).find("img.foward").attr("src", $ro.rightArrowEnabled);
					$($ro.obj).find(".btn_right a").click(function(){foward($ro);});
					$($ro.obj).find("img.backward").attr("src", $ro.leftArrowDisabled);
					$($ro.obj).find(".btn_left a").unbind("click");
				}else{
					$($ro.obj).find(".roleta_container .global").css("marginLeft",-$ro.containerWidth+$ro.elementWidth+"px");
					$($ro.obj).find("img.foward").attr("src", $ro.rightArrowEnabled);
					$($ro.obj).find(".btn_right a").click(function(){foward($ro);});
					$($ro.obj).find("img.backward").attr("src", $ro.leftArrowEnabled);
					$($ro.obj).find(".btn_left a").click(function(){backward($ro);});
				}
			}
		}
		
		function foward($ro){
						
			if($ro.moveView){
				var margin = $($ro.obj).find(".roleta_container .global").css("marginLeft").replace("px","");
				
				$($ro.obj).find(" .btn_right a").unbind("click");
				
				if((margin-$ro.containerWidth)<$ro.leftBound){
					move = margin-leftBound;
					moveRoleta(-move, margin, $ro);
				}else{
					moveRoleta(-$ro.containerWidth, margin, $ro);
				}
			}else{
				var margin = $($ro.obj).find(" .roleta_container .global").css("marginLeft").replace("px","");
				moveRoleta(-$ro.elementWidth, margin, $ro);
			}
			
		}
		
		function backward($ro){
			if($ro.moveView){
				var margin = $($ro.obj).find(".roleta_container .global").css("marginLeft").replace("px","");
				
				$($ro.obj).find(".btn_left a").unbind("click");
				if(margin > -$ro.containerWidth){
					move = -margin;
					$($ro.obj).find(".btn_right a").unbind("click");
					moveRoleta(move, margin, $ro);
				}else{
					moveRoleta($ro.containerWidth, margin, $ro);
				}
			}else{
				var margin = $($ro.obj).find(".roleta_container .global").css("marginLeft").replace("px","");
				moveRoleta($ro.elementWidth, margin, $ro);
			}	
		}
		
		function moveRoleta(num, margin, $ro){
			$($ro.obj).find(".btn_left a").unbind("click");
			$($ro.obj).find(".btn_right a").unbind("click");
			var value = parseInt(margin)+num;
			$($ro.obj).find(".roleta_container .global").animate({ 
				marginLeft: parseInt(value)+"px"
			}, 250, "swing", function(){verifica($ro);} );
		}
		
		function verifica($ro){
			if($ro.autoFoward) clearInterval($ro.interval);			
			var margin = $($ro.obj).find(".roleta_container .global").css("marginLeft").replace("px","");
			
			//$ro.globalWidth = $($ro.obj).find(" .roleta_container div.global").width();
			//$ro.containerWidth = $($ro.obj).find(" .roleta_container").width();
						
			if(margin==0 && $ro.globalWidth>$ro.containerWidth){
				if($ro.boundaries){
					$($ro.obj).find("img.backward").attr("src", $ro.leftArrowDisabled);
					$($ro.obj).find("img.foward").attr("src", $ro.rightArrowEnabled);
					$($ro.obj).find(".btn_right a").click(function(){foward($ro);});
					$($ro.obj).find(".btn_left a").unbind("click");
					if($ro.autoFoward) $ro.interval = setInterval(function(){foward($ro);}, $ro.timeFoward);
				}else{
					$($ro.obj).find(".roleta_container .global").css("marginLeft",($ro.leftBound+$ro.containerWidth)+"px");
					$($ro.obj).find("img.foward").attr("src", $ro.rightArrowEnabled);
					$($ro.obj).find(".btn_right a").click(function(){foward($ro);});
					$($ro.obj).find("img.backward").attr("src", $ro.leftArrowEnabled);
					$($ro.obj).find(".btn_left a").click(function(){backward($ro);});
					if($ro.autoFoward)$ro.interval = setInterval(function(){foward($ro);}, $ro.timeFoward);
				}
			}else if(margin==$ro.leftBound && $ro.globalWidth>$ro.containerWidth){
				if($ro.boundaries){
					$($ro.obj).find("img.foward").attr("src", $ro.rightArrowDisabled);
					$($ro.obj).find("img.backward").attr("src", $ro.leftArrowEnabled);
					$($ro.obj).find(".btn_left a").click(function(){backward($ro);});
					$($ro.obj).find(".btn_right a").unbind("click");
				}else{
					$($ro.obj).find(".roleta_container .global").css("marginLeft",-$ro.containerWidth+"px");
					$($ro.obj).find("img.foward").attr("src", $ro.rightArrowEnabled);
					$($ro.obj).find(".btn_right a").click(function(){foward($ro);});
					$($ro.obj).find("img.backward").attr("src", $ro.leftArrowEnabled);
					$($ro.obj).find(".btn_left a").click(function(){backward($ro);});
					if($ro.autoFoward)$ro.interval = setInterval(function(){foward($ro);}, $ro.timeFoward);
				}
			}else{
				$($ro.obj).find("img.foward").attr("src", $ro.rightArrowEnabled);
				$($ro.obj).find(".btn_right a").click(function(){foward($ro);});
				$($ro.obj).find("img.backward").attr("src", $ro.leftArrowEnabled);
				$($ro.obj).find(".btn_left a").click(function(){backward($ro);});
				if($ro.autoFoward)$ro.interval = setInterval(function(){foward($ro);}, $ro.timeFoward);
			}
			
		}
		
		
		// CONTROLES DOS BANNERS ----------------------------------------------------------------------------------
		//=========================================================================================================
		
		function load_background($ro){
			if($ro.objBanner.img.complete){
				$(".banner"+$ro.objBanner.index).css("background","url("+$ro.objBanner.img.src+") no-repeat center top");
				$(".banner"+$ro.objBanner.index).hide();
				$(".banner"+$ro.objBanner.index).click(function(){
					window.location.href = $ro.objBanner.arrBanners[$ro.objBanner.index].url;
				});
				$(".banner"+$ro.objBanner.index).fadeIn(1500);
				$ro.objBanner.arrBanners[$ro.objBanner.index].loaded = true;
				control_background($ro);
			}else{
				setTimeout(function(){load_background($ro);},500);
			}
		}
		
		function control_background($ro){
			if($ro.objBanner.arrBanners.length>1){
				$ro.objBanner.interval = setInterval(function(){change_background($ro)}, 5000);
				$(".roleta_container .global li").removeClass("atual");
				$(".roleta_container .global li:eq("+$ro.objBanner.index+")").addClass("atual");
				
				
			}
		}
		
		function change_background($ro, new_index){
			clearInterval($ro.objBanner.interval);
			
			$(".banner"+$ro.objBanner.index).fadeOut(1500);
			 
			if(new_index>=0){
				$ro.objBanner.index = new_index;
			}else{
				$ro.objBanner.index = $ro.objBanner.index+1;
			}
			if($ro.objBanner.index>=$ro.objBanner.arrBanners.length) $ro.objBanner.index = 0;
			
			
			if($ro.objBanner.arrBanners[$ro.objBanner.index].loaded){
				$(".banner"+$ro.objBanner.index).fadeIn(1500);
				control_background($ro);
			}else{
				$ro.objBanner.img.src = $ro.objBanner.arrBanners[$ro.objBanner.index].img;
				load_background($ro);
			}
			
			moveRoletaTo($ro);
		}		
		
		function moveRoletaTo($ro){
			$($ro.obj).find(".btn_left a").unbind("click");
			$($ro.obj).find(".btn_right a").unbind("click");
			$($ro.obj).find(".roleta_container .global").animate({ 
				marginLeft: parseInt($ro.arr_position[$ro.objBanner.index])+"px"
			}, 250, "swing", function(){verifica($ro);} );
		}
	};
	
})(jQuery);
