jQuery.fn.IVGallery = function(options) {
	
	var settings = jQuery.extend({
	 indexImgOpen:0, maxThumbPag:10, currentPagThumb:0, order:"horizontal", indexPag:[0], DSFoto:{}
	}, options);
	
	var me = jQuery(this);
	var id = "#"+jQuery(this).attr("id");
	
	IVGalleryObj = jQuery.extend({
		settings:settings, 
		objReference:jQuery(this),
		
		ClearThumbs:function(){
		 jQuery(id+" .viewThumb ul").empty();	
		},
		
		AddThumbs:function(){
		//for(var i=0;i < this.DSFoto.DATA.length;i++)
			this.ClearThumbs();
			jQuery(id+" .viewThumb .nav button").removeClass("btclicked");		
			jQuery(id+" .viewThumb .nav button[value="+this.settings.currentPagThumb+"]").addClass("btclicked");
			
			var tmpMaxThumb = Number(this.settings.currentPagThumb) + Number(this.settings.maxThumbPag);
			for(var i = this.settings.currentPagThumb; i < tmpMaxThumb; i++){
				if(i <= (this.settings.DSFoto.DATA.length-1)){
					jQuery(id+" .viewThumb ul").append(jQuery.createElement("LI",{attr:{id:i}, className:"loading" }));				
					//jQuery(id+" .viewThumb ul li").hide();
					//jQuery(id+" .viewThumb ul li").fadeIn("slow");
					this.LoadThumbImg(jQuery(id+" .viewThumb ul li[id="+i+"]"));
					jQuery(id+" .viewThumb ul li[id="+i+"]").click(function(){
							jQuery(this).addClass("liclicked");
							IVGalleryObj.LoadFullImg(jQuery(this).attr("id"));
					});
				}
			}//fim do for
			
		},
		
				
		LoadThumbImg:function(container){			
			var container = container;
			var src = IVGalleryObj.settings.DSFoto.THUMBSDIRETORY+IVGalleryObj.settings.DSFoto.DATA[container.attr("id")];			
			var img = new Image();
			jQuery(img).attr({"src":src});
			//IVGalleryObj.settings.indexImgOpen = Number(container.attr("id"));
			jQuery(img).load(function(){
				jQuery(img).hide();
				container.removeClass("loading");
				container.append(img);
				jQuery(img).fadeIn("slow");				
			})
		},
		
		LoadFullImg:function(index){
			var container = jQuery("#"+IVGalleryObj.objReference.attr("id")+" .viewGG .imgGG");
			//container.fadeOut("slow");
			container.empty();
			var src = IVGalleryObj.settings.DSFoto.FULLDIRECTORY+IVGalleryObj.settings.DSFoto.DATA[index];			
				var img = new Image();
				jQuery(img).load(function(){
					jQuery(img).hide();
					container.removeClass("loading").append(img);
					jQuery(img).fadeIn("slow");				
				}).attr({"src":src});		
			
		},
		
		CreateNav:function(){
			jQuery(id+" .viewThumb .nav").empty();
			this.SetIndexPag();
			jQuery(id+" .viewThumb .nav").append(jQuery.createElement("DIV",{className:"collL", html:"<button class=\"btfirst\"></button>"}));				
			jQuery(id+" .viewThumb .nav .btfirst").click(FirstPagThumb);
			var strButs = "";
			for(var i = 0; i < this.settings.indexPag.length; i++){
				strButs += "<button class=\"bt\" value=\""+this.settings.indexPag[i]+"\">"+(i+1)+"</button>";
			}	
			jQuery(id+" .viewThumb .nav").append(jQuery.createElement("DIV",{className:"collL", html:strButs}));
			jQuery(id+" .viewThumb .nav button[class=bt]").click(ClickBTPagAction);
			
			jQuery(id+" .viewThumb .nav").append(jQuery.createElement("DIV",{className:"collL", html:"<button class=\"btlast\"></button>"}));
			jQuery(id+" .viewThumb .nav .btlast").click(LastPagThumb);
		},
		
		SetIndexPag:function(){
			var tp = Math.ceil((this.settings.DSFoto.DATA.length/this.settings.maxThumbPag));
			var ind = [0];
			var t = 0;
			for(var i = 1; i < tp; i++){
				ind[i] = (t+(this.settings.maxThumbPag));
				t += (this.settings.maxThumbPag);
			}
			this.settings.indexPag = ind;
		}
	
	}, jQuery);

	
	function FirstPagThumb()
	{
		IVGalleryObj.settings.currentPagThumb = IVGalleryObj.settings.indexPag[0];
		IVGalleryObj.AddThumbs();
	}
	
	function LastPagThumb()
	{
		IVGalleryObj.settings.currentPagThumb = IVGalleryObj.settings.indexPag[(IVGalleryObj.settings.indexPag.length-1)];
		IVGalleryObj.AddThumbs();
	}
	
	function ClickBTPagAction()
	{
		jQuery(id+" .viewThumb .nav button").removeClass("btclicked");
		jQuery(this).addClass("btclicked");
		IVGalleryObj.settings.currentPagThumb = jQuery(this).attr("value");
		IVGalleryObj.AddThumbs();
	}
	
	
	//Montando a estrutura
	this.each(function(){
		jQuery(this).empty();
		jQuery(this).addClass("imgGallery");

		if(settings.DSFoto.TITLE != ""){ jQuery(this).append(jQuery.createElement("H2",{html:settings.DSFoto.TITLE}));}
		
			jQuery(this).append(jQuery.createElement("DIV",{className:"viewGG "+settings.order}) );
			jQuery(id+" .viewGG").append(jQuery.createElement("DIV",{className:"imgGG"}) );
			
			jQuery(this).append( $.createElement("DIV",{className:"viewThumb "+settings.order}));			
			jQuery(id+" .viewThumb").empty();
			jQuery(id+" .viewThumb").append($.createElement("DIV",{className:"thumbbg"}));
			jQuery(id+" .viewThumb").append($.createElement("DIV",{className:"thumbcontainer"}));			
			jQuery(id+" .viewThumb .thumbcontainer").append($.createElement("DIV",{className:"ulcontainer"}));
			jQuery(id+" .viewThumb .thumbcontainer .ulcontainer").append($.createElement("UL",{}));
			jQuery(id+" .viewThumb .thumbcontainer").append($.createElement("DIV",{className:"nav"}));
			
			if(settings.DSFoto.DESCRIPTION != ""){ 
				jQuery(this).append($.createElement("DIV",{className:"description"}));
				jQuery(id+" .description").append($.createElement("DIV",{className:"bgdesc"}));
				jQuery(id+" .description").append($.createElement("DIV",{className:"content",html:settings.DSFoto.DESCRIPTION}));			
			}
			
	});
	
	//var alvo = this.each(function(){$(this)});
	IVGalleryObj.CreateNav();
	IVGalleryObj.AddThumbs();
	return IVGalleryObj;	
};