// ==============================================================================================================================
// WXCOBERTURA
//
// ATENÇÃO: PARA USAR DUAS GALERIAS NA MESMA PAGINA DEVE SER DESATIVADO O TECLADO, OU NAO FUNCIONARÁ
//
// ==============================================================================================================================
function wxcobertura(ajax, div, cobertura){
	
	var obj = this;
	this.ajax = ajax;
	this.div = div;
	this.extra = {};
	
	// Variaveis do Sistema de Tabela
	this.pagina = 1;
	this.foto = 0;
	this.foto_inicial = 0;
	this.num_fotos = 0;
	this.num_paginas = 0;
	this.tam_pagina = 0;	
	
	this.cobertura = cobertura;
	this.dir = '';
	this.image_url = new Array();// Lista de fotos para Preload	
	this.image_cod = new Array();// Lista de codigos das fotos
	this.image_full = new Array();// Lista das fotos grandes	
	this.descricao = new Array();// Lista das descricoes
	
	this.teclado = true;
	
	// ==================================
	// Inicializa
	// ==================================
	this.init = function(){
		
		// Carrega imagem de loading
		if (document.images){				
			preload_image_object = new Image();
			preload_image_object.src = "images/wait.gif";
		}

		//Obtém estrutura inicial
		$.ajaxSetup({async: false, cache: false});
		// Requisição ajax
		var arg = this.extra;
		arg.acao = 'init';
		arg.cobertura = this.cobertura;
		arg.pagina = this.pagina;
		xml = $.post(this.ajax, arg).responseText;

		var objxml = new Parsing(xml);		
		var erro = objxml.GetAttr("erro");

		// ------------------------------
		// SE OK
		// ------------------------------				
		if (!erro){			
			$('#' + this.div).html(objxml.GetAttr("html"));	
			
			this.dir = objxml.GetAttr("dir");
			this.tam_pagina = objxml.GetAttr("tampagina");
			
			obj.getPagina();
			
			// ---------- HABILITA LIGHT BOX ---------------------
			$("#" + this.div + "  #fotup-vermaior a").lightBox();			
		}

		
	};
	// ==================================
	// GET PAGINA de FOTOS
	// ==================================	
	this.getPagina = function(){
		
		//Obtém estrutura inicial
		$.ajaxSetup({async: false, cache: false});
		// Requisição ajax
		var arg = this.extra;
		arg.acao = 'getpagina';
		arg.cobertura = this.cobertura;
		arg.pagina = this.pagina;
		var xml = $.post(this.ajax, arg).responseText;		
		//alert(xml);
		
		var objxml = new Parsing(xml);		
		// ------------------------------
		// SE OK
		// ------------------------------				
		
		var erro = objxml.GetAttr("erro");	
		
		// ------------------------------
		// SE OK
		// ------------------------------				
		if (!erro){		
		
			var elementos = objxml.GetNodo("foto");		// Lista de fotos XML			
			var html_miniatura = '';					// lista de miniaturas
	

			for (var i = 0; i < elementos.length; i++){
				elemento = new XmlDoc(elementos[i]);
				this.image_url[i] = this.dir + elemento.GetAttr("media");
				this.image_cod[i] = elemento.GetAttr("idfoto");			
				this.image_full[i] = this.dir + elemento.GetAttr("grande");
				this.descricao[i] = elemento.GetAttr("descricao");
				
				imagemin_url = this.dir + elemento.GetAttr("miniatura");
				html_miniatura += "<div class='miniatura' idfoto='" + elemento.GetAttr("idfoto") + "' link='" + i + "' ><div id='minsel-" + i + "' class='miniatura-sel'><img src='" + imagemin_url + "' /></div></div>\n";
				
			}

			// ==================================================================
			// PRELOAD DE IMAGEM
			// ==================================================================			
//			if (document.images)
//			{				
//				preload_image_object = new Image();				

//				for(var j=0; j < elementos.length; j++){
//					alert(this.image_url[j]);
//					preload_image_object.src = this.image_url[j];
//				}
//			}		
			// ==================================================================
			
			// Adiciona Menu
			$('#' + this.div + ' #menu').html(html_miniatura);
			
			// Adiciona Paginacao
			$('#' + this.div + ' #paginacao').html(objxml.GetAttr("paginacao"));

			// Adiciona Titulo
			$('#' + this.div + ' #titulo').html(objxml.GetAttr("titulocobertura"));
			
			// Adiciona Lista de Cobertura
			$('#' + this.div + ' #coberturas').html(objxml.GetAttr("htmlcobertura"));	
			
			// Configura total de fotos nesta pagina
			obj.num_fotos = objxml.GetAttr("numfotos");
			// Configura total de paginas
			obj.num_paginas = objxml.GetAttr("numpaginas");

			// Seta a foto inicial
			img = obj.image_url[obj.foto_inicial];	
			cod = obj.image_cod[obj.foto_inicial];	
			full = obj.image_full[obj.foto_inicial];	
			desc = obj.descricao[obj.foto_inicial];	
			
			obj.foto = obj.foto_inicial;
			// Seta caminho da foto (seleciona foto)
			$("#" + obj.div + " #foto img").attr("src",  "images/wait.gif");
			objtemp2 = obj.div;
			
			setTimeout('$("#" + objtemp2 + " #foto img").attr("src",  img)', 100);
			// Seta Código da imagem				
			$('#' + obj.div + ' #fotup-codigo').html('#' + cod);
			// Seta informação para Lightbox
			$('#' + obj.div + ' #fotup-vermaior a').attr("href", full);
			$('#' + obj.div + ' #fotup-vermaior a').attr("title", desc);
			
			$('#' + obj.div + ' .miniatura div').removeClass().addClass("miniatura-sel");
			$('#' + obj.div + ' #minsel-' + obj.foto_inicial).removeClass().addClass("miniatura-sel-alpha");

			// Adiciona Descrição da foto
			$('#' + this.div + ' #descricao').html(desc);		


			this.verificaBotoes();
			// =======================================================================================
			
			// Registra eventos
			this.registraEventos();
		
		}		
	}	

	// ==================================
	// TROCA COBERTURA
	// ==================================
	this.trocaCobertura = function(cobertura){

		obj.bloqueiaEventos();	

		// Variaveis do Sistema de Tabela
		obj.pagina = 1;
		obj.foto = 0;
		obj.foto_inicial = 0;
		obj.num_fotos = 0;
		obj.num_paginas = 0;		
		obj.cobertura = cobertura;		
		

		obj.getPagina();
		
	}

	// ==================================
	// ANTERIOR
	// ==================================
	this.anterior = function(){
			
		if (obj.foto == 0){
			if (obj.pagina > 1){
				obj.pagina--;
				obj.foto_inicial = obj.tam_pagina - 1;
				obj.bloqueiaEventos();
				obj.getPagina();
			}
		}else{			
			obj.foto--;
			obj.trocaFoto();
		}
			
	}
	// ==================================
	// POSTERIOR
	// ==================================	
	this.posterior = function(){			
		if (obj.foto >= obj.num_fotos - 1){
			if (obj.pagina < obj.num_paginas){
				obj.pagina++;
				obj.foto_inicial = 0;
				obj.bloqueiaEventos();
				obj.getPagina();
			}
		}else{			
			obj.foto++;
			obj.trocaFoto();			
		}			
	}
	// ==================================
	// TROCA FOTO
	// ==================================		
	this.trocaFoto = function(){
		
		img = obj.image_url[obj.foto];
		cod = obj.image_cod[obj.foto];
		full = obj.image_full[obj.foto];	
		desc = obj.descricao[obj.foto];
		// Seta caminho da foto (seleciona foto)
		$("#" + obj.div + " #foto img").attr("src",  "images/wait.gif");		
		objtemp = obj.div;
		setTimeout('$("#" + objtemp + " #foto img").attr("src",  img)', 100);
		
		// Seta Código da imagem
		$('#' + obj.div + ' #fotup-codigo').html('#' + cod);
		// Seta informação para Lightbox
		$('#' + obj.div + ' #fotup-vermaior a').attr("href", full);
		$('#' + obj.div + ' #fotup-vermaior a').attr("title", desc);		

		// Adiciona Descrição da foto
		$('#' + this.div + ' #descricao').html(desc);	
			
		// Desabilita ou Habilita botoes ant/prox ====================================			
		obj.verificaBotoes();
	
		// Altera classe
		$('#' + obj.div + ' .miniatura div').removeClass().addClass("miniatura-sel");
		$('#' + obj.div + ' #minsel-' + obj.foto).removeClass().addClass("miniatura-sel-alpha");

			

	}
	
	// ==================================
	// VERIFICA BOTÕES
	// ==================================
	this.verificaBotoes = function(){		
		// ===========================================================================		
			posterior = $("#" + obj.div + " #fotup-proximo");			
			if (obj.foto == obj.num_fotos - 1 && obj.pagina == obj.num_paginas)
				posterior.removeClass().addClass("fotup-proximo-alpha");
			else 
				posterior.removeClass().addClass("fotup-proximo");
			
			anterior = $("#" + obj.div + " #fotup-anterior");	
			if (obj.foto == 0 && obj.pagina == 1) 
				anterior.removeClass().addClass("fotup-anterior-alpha");
			else 
				anterior.removeClass().addClass("fotup-anterior");				
		// ===========================================================================						
	}
	// ==================================
	// REGISTRA EVENTOS
	// ==================================
	this.registraEventos = function(){			
		
		// ----------- Seleciona Foto ---------------------------------		
		$("#" + this.div + " .miniatura").bind('click', function(){			
			
			obj.foto = $(this).attr('link');
			obj.trocaFoto();			

		});
		
		// ----------- TECLAS UNIVERSAIS ---------------------------------	
		if (obj.teclado){
			$("html").bind("keydown",function(e){		   
				var tecla = (e.which) ? e.which : e.keyCode;			
				// Anterior
				if (tecla == 37)
					obj.anterior();
				// Posterior
				if (tecla == 39)
					obj.posterior();				
				
			});	
		}
		$("#" + this.div + " #fotup-anterior").bind('click', this.anterior);
		// ----------- Foto Posterior ---------------------------------		
		$("#" + this.div + " #fotup-proximo").bind('click', this.posterior);
		
		// ----------- Troca pagina ---------------------------------		
		$("#" + this.div + " .pag-marcadores").bind('click', function(){	
			obj.bloqueiaEventos();
			obj.pagina = $(this).attr('pag');
			obj.foto_inicial = 0;			
			obj.getPagina();
		});				
		// -------------- TROCA DE COBERTURA ----------------------------------
		$("#" + this.div + " #fotup-select").bind('change', function(){	
			obj.trocaCobertura($(this).attr('value'));
		});				
	}
	// ==================================
	// Bloqueia Eventos
	// ==================================
	this.bloqueiaEventos = function(){
		$("#" + this.div + " .miniatura").unbind();
		$("#" + this.div + " .pag-lista").unbind();
		
		$("#" + this.div + " #fotup-anterior").unbind();
		$("#" + this.div + " #fotup-proximo").unbind();
		
		$("#" + this.div + " #fotup-select").unbind();
		
		if (obj.teclado)
			$("html").unbind();
	}
}
