(function($) {
	$.fn.latest_flickr = function(options){
		var returnIndexedElement;
		var searchIndexedElement;
		return this.each(function(){
					   
			var defaults = {
				apiKey: "ab1558dac32158684f6137ccb68f03d9",
				secretKey: "d0e3e0ddbc10a9ba",
				method: "flickr.photos.search",
				user: "50933122@N06",
				page: "1",
				perPage: "10",
				elementToCreate: "<div />"
			}
			
			var $f = $.extend(defaults, options);
			$f.obj = $(this);
			
			var params = {
				api_key: $f.apiKey,
				format: 'json',
				method: $f.method,
				user_id: $f.user,
				page: $f.page,
				per_page: $f.perPage
			};
			$.getJSON("http://api.flickr.com/services/rest/?"+$.param(params)+"&jsoncallback=?", function(data) {																																			   				
				if (!data.photos || !data.photos.photo) return false;
				
				for(i=0;i<data.photos.photo.length;i++){
					$($f.elementToCreate).data("data",{index:i}).appendTo($f.obj).hide();
					data.photos.photo[i].loaded = false;
					data.photos.photo[i].img = "http://farm"+data.photos.photo[i].farm+".static.flickr.com/"+data.photos.photo[i].server+"/"+data.photos.photo[i].id+"_"+data.photos.photo[i].secret+"_m.jpg";

				}
				
				
				var objImage = new Image();
				objImage.src = data.photos.photo[0].img;
				
				var objc = new Object();
				
				objc.index = 0;
				objc.indexNext = 1;
				objc.indexPrev = data.photos.photo.length-1;
				objc.img = objImage;
				objc.arrBanners = data.photos.photo;
				
				$f.data = objc;
				
				load_background($f);
				
			});
			
		});
		
		function change_background($f, next){
			clearInterval($f.data.interval);
			$($f.obj).parents(".latest_flickr").find(".next").unbind("click");
			$($f.obj).parents(".latest_flickr").find(".prev").unbind("click");
			
			//$(findIndexedElement($f)).fadeOut(1500); 
			
			if(next){
				$f.data.indexPrev = $f.data.index;
				$f.data.index = $f.data.indexNext;
				$f.data.indexNext = $f.data.indexNext+1;
				if($f.data.indexNext>=$f.data.arrBanners.length) $f.data.indexNext = 0;
			}else{
				$f.data.indexNext = $f.data.index;
				$f.data.index = $f.data.indexPrev;
				$f.data.indexPrev = $f.data.indexPrev-1;
				if($f.data.indexPrev<=0) $f.data.indexPrev = $f.data.arrBanners.length-1;
			}
			
			if($f.data.arrBanners[$f.data.index].loaded){
				$($f.obj).children(":visible").fadeOut(1500); 
				$(findIndexedElement($f)).fadeIn(1500);
				control_background($f);
			}else{
				$f.data.img = new Image();
				$f.data.img.src = $f.data.arrBanners[$f.data.index].img;
				load_background($f);
			}
		}
		
		// CARREGA E FAZ A TROCA DO BACKGROUND
		function load_background($f){
			if($f.data.img.complete){
				$($f.obj).children(":visible").fadeOut(1500);
				$(findIndexedElement($f)).css({background:"url("+$f.data.img.src+") no-repeat center top", display:"none"});
				$(findIndexedElement($f)).fadeIn(1500);
				$f.data.arrBanners[$f.data.index].loaded = true;
				control_background($f);
			}else{
				setTimeout(function(){load_background($f);},500);
			}
		}
		
		function control_background($f){
			if($f.data.arrBanners.length>1){
				$f.data.interval = setInterval(function(){change_background($f, true)}, 5000);
				$($f.obj).parents(".latest_flickr").find(".prev").click(function(){
					change_background($f, false);
				}).css("cursor","pointer");
				$($f.obj).parents(".latest_flickr").find(".next").click(function(){
					change_background($f, true);
				}).css("cursor","pointer");
			}
		}
		
		function findIndexedElement($f){
			$($f.obj).children().each(function(i){
				searchIndexedElement = $(this).data("data");
				if(searchIndexedElement.index==$f.data.index){
					returnIndexedElement = this;
				}
				
			});
			return returnIndexedElement;
		}
		
	};
})(jQuery);
