/**
 * @Ag2
 * Objeto Ag2
 * @author Jaydson Gomes, gomesjn@ag2.com.br
 * @version 1.0
 * @date 27/08/09
 */
 
(function(){

	/**
	 * @namespace Namespace Principal
	 */
	Ag2 = {};
	
	/**
	 * @namespace Namespace Galeria, contm mtodos para Galeria
	 */
	Ag2.prototype = Ag2.Galeria = {};
	
	/**
	 * @namespace Namespace Util, contm mtodos genricos
	 */
	Ag2.Galeria.Util = {
	
		path : "",
		
		/**
		 * Ajusta o tamanho da LI de acordo com a maior imagem
		 */
		FixSizeList : function(){
			if($("#lstResultadosImgs")){
				var maxHeight = 0,imgs = $("#content").find("img"),imgsLength = imgs.size();
				for(var i=0;i<imgsLength;i++){
					maxHeight = maxHeight < $(imgs[i]).height() ? $(imgs[i]).height() : maxHeight;
				}
				$("#lstResultadosImgs li ").css("height",maxHeight+60);
			}
		},
		
		/**
		 * Verifica excesso de barras na URL
		 */
		VerifyURL : function(){
			if(window.location.href.indexOf("portugues//") != -1){
				window.location.href = window.location.href.replace("portugues//","portugues/");
			}
		},
	
		/**
		 * Objeto JSON com todas as categorias
		 * @type JSON Object
		 */
		categorias : null,		
		
		/**
		 * Submete o formulrio
		 * @param formId - Id do formulrio 		 
		 */
		ResultSubmit : function(formId){
			document.getElementById(formId).submit();
		},
		
		/**
		 * Submete o formulrio
		 * @param formId - Id do formulrio
		 */
		GoTo : function(formId){	
			document.getElementById(formId).submit();
		},
		
		/**
		 * Valida os campos da busca lateral e sSubmete o formulrio
		 * @param form - Formulrio
		 */
		BuscaLateral : function(form){			
			c = document.getElementById("select_categorias");
			g = document.getElementById("select_galerias");
			b = document.getElementById("inputBuscaInt");
			if(b.value=='Buscar Por') {b.value = ''};
			if (c.value=='' && g.value=='' && (b.value=='Buscar Por' || b.value=='')) alert('Selecione um crit\u00e9rio para a busca!');
			else form.submit();
		},
		
		/**
		 * Valida a busca e submete o formulrio
		 * @param f - Formulrio 		 
		 */
		Busca : function(f){
			c = f.categorias;
			g = f.galerias;
			cx = c.length;
			gx = g.length;

			for (var i=0; i <= cx-1; i++) {
				c.options[i].selected=true
			}
			for (var i=0; i <= gx-1; i++) {
			g.options[i].selected=true
			}
			if (c.value=='' && g.value=='' && f.palavra_chave.value=='' && f.strCode.value==''){
				alert('Selecione um crit\u00e9rio para a busca!');
				return false;
			}else{
				f.submit()
			}
		},
		
		/**
		 * Carrega as categorias para a busca-viva e popula Ag2.Galeria.Util.categorias com o objeto JSON		
		 */
		LoadCategorias : function(){
			if($("#home").html() != null){
				$.getJSON("_inc/loadcategorias.asp", function(json){
					Ag2.Galeria.Util.categorias = json;
					$("#inputBuscaHome").autocomplete(Ag2.Galeria.Util.categorias,{
						minChars: 0,
						max: 12,
						width: 235,
						autoFill: false,
						mustMatch: true,
						matchContains: false,
						scrollHeight: 220,
						formatItem: function(data, i, total){
							return data.subCategoria_nome;
						}
					});
					$("#inputBuscaHome").val("Buscar Por");
					$("#inputBuscaHome").bind("click",function(){
						return $(this).val() == "Buscar Por" ? $(this).val("") : true;
					});
				});	
			}
		}
	};
	
	/**
	 * @namespace Namespace Updates, contm mtodos para a rotina de Atualizaes na Home
	 */
	Ag2.Galeria.Updates = {
	
		Init : function(){
			this.Load();
		},
		
		/**
		* Referencia objeto do jQuery
		*/
		container : $("#galeria_atualizacoes"),
		
		/**
		* Objeto atual sendo exibido
		*/
		current : 0,
		
		/**
		 * Objeto JSON com as ultimas atualizaes
		 * @type JSON Object
		 */
		data : null,
		
		/**
		 * Carrega as ultimas atualizacoes e popula Ag2.Galeria.Updates.data com o objeto JSON
		 */
		Load : function(){
			if($("#home").html() != null){
				$.getJSON("_inc/loadAtualizacoes.asp", function(json){
					Ag2.Galeria.Updates.data = json;
					Ag2.Galeria.Updates.Change(Ag2.Galeria.Updates.current);
					$("#galeria_atualizacoes_loader").css("display","none");
				});
			}
		},

		/**
		 * Muda a imagem
		 */
		Change : function(index){			
			var objUpdates = Ag2.Galeria.Updates.data[index];
			var label = this.container.find("a");
			var img = this.container.find("img");

			label.attr("title",objUpdates.titulo);
			label.attr("href",objUpdates.link);			
			img.attr("src",Ag2.Galeria.Util.path +"/midias/atualizacoes/"+objUpdates.atualizacaoId + "_thumbnail.gif");
			img.attr("alt",objUpdates.titulo);
			img.fadeIn("slow");
			setTimeout(function(){
				if(Ag2.Galeria.Updates.current == Ag2.Galeria.Updates.data.length)
					Ag2.Galeria.Updates.current = 0
				
				img.fadeOut("slow",function(){
					Ag2.Galeria.Updates.Change(Ag2.Galeria.Updates.current);
					Ag2.Galeria.Updates.current++;
				});				
			},8000);
		}
	};
	
	/**
	 * @namespace Namespace Login, contm mtodos para a rotina de Login
	 */
	Ag2.Galeria.Login = {
		/**
		 * Referencia objetos do jQuery
		 */
		box : $("#boxFacaLogin"),		
		boxLogado : $("#boxLogado"),
		form : $("#frmLogin"),
		loader : $("#loader_login"),	
		loginField : $("#loginUsuario"),
		passField : $("#loginSenhaPassword"),
		actionButton : $("#btnOkFacaLogin"),
		logoutButton : $("#galeria_logout"),
		
		/**
		 * Construtor para Login		 		
		 */
		Init : function(){
			Ag2.Galeria.Login.SetEvents();
		},
		
		/**
		 * Valida campos de Login
		 */
		Test : function(){
			return this.loginField == "" || this.passField == "" ? false : true;
		},
		
		/**
		 * Efetua Logoff		 		
		 */
		Off : function(){
			Ag2.Galeria.Login.boxLogado.css("display","none");
			$("#logoff_loading").fadeIn();
			$.ajax({
				type: "POST",
				url: document.getElementById("home") || document.location.href.indexOf("galeria_de_imagens/portugues/default") != -1 ? "_inc/efetuarlogin.asp?logar=0" : "../_inc/efetuarlogin.asp?logar=0",
				success : function(msg){
					$("#logoff_loading").fadeOut("slow",function(){
						$("#btnFacaLogin").fadeIn("slow");
					});
				}
			});
		},
		
		/**
		 * Redireciona o usuario logado para a página correta
		 */
		RedirectAuth : function(){
			var href = location.href;
			var searchString = location.href.indexOf('detalhe_publico')!= -1;
			var listaString = location.href.indexOf('lista_publica')!= -1;
			var catString = location.href.indexOf('/publico')!= -1;
			var resString = location.href.indexOf('resultado_publico') != -1;
			
			if(location.href.indexOf('detalhe.asp')!= -1){
				return false;
			}else{
				location = searchString ? href.replace('detalhe_publico','detalhe') : href;
			}
			if(location.href.indexOf('lista.asp')!= -1){
				return false;
			}else{
				location = listaString ? href.replace('lista_publica','lista') : href;
			}
			if(location.href.indexOf('categorias/default.asp')!= -1){
				return false;
			}else{
				location = catString ? href.replace('/publico','/default') : href;
			}
			if(location.href.indexOf('resultado_publico.asp')!= -1){
				return false;
			}else{
				location = resString ? href.replace('resultado_publico','default') : href;
			}
			
			if(location.href.indexOf('categorias/publico.asp') != -1){
				location = href.replace('categorias/publico.asp','categorias/default.asp');
			}
			if(location.href.indexOf('colecoes/lista_publica.asp') != -1){
				location = href.replace('colecoes/lista_publica.asp','colecoes/lista.asp');
			}
			if(location.href.indexOf('novas-imagens/resultado_publico.asp') != -1){
				location = href.replace('novas-imagens/resultado_publico.asp','novas-imagens/default.asp');
			}
		},
		
		/**
		 * Efetua Login	 		
		 */
		Action : function(){
			Ag2.Galeria.Login.loader.css("display","block");
			$.ajax({
				type: "POST",
				url: document.getElementById("home") || document.location.href.indexOf("english/default") != -1  ? "_inc/efetuarlogin.asp" : "../_inc/efetuarlogin.asp",
				data: "login="+this.loginField.val()+"&senha="+this.passField.val(),
				success: function(msg){				
					var action = eval(msg);
					if(action != "notRegistered"){
						if(action[0].success){
							$("#nome_site_logado").html(action[0].data);
								Ag2.Galeria.Login.email = action[0].email;
								$("#btnFacaLogin").css("display","none");
								Ag2.Galeria.Login.box.fadeOut("slow",function(){
									Ag2.Galeria.Login.box.css("display","none");
									Ag2.Galeria.Login.boxLogado.fadeIn();
									Ag2.Galeria.Login.loader.css("display","none");
									$("#login_message").css("display","none");
								});
								location.href = location.href.substr(0,location.href.indexOf('portugues'))+'/portugues';
								//Ag2.Galeria.Login.RedirectAuth();
						}
					}else{
						$("#login_message").html("Usuário não registrado.");
						$("#login_message").fadeIn("slow");
						Ag2.Galeria.Login.loader.css("display","none");
					}
					Ag2.Galeria.Login.active = true;
					
					//Popstats
					click_flash_email(1356, ''+Ag2.Galeria.Login.email+'');
				}
			});
		},
		
		/**
		 * Atribuio de eventos
		 */
		SetEvents : function(){
			
			this.loginField.bind("focus",function(e){
				// Retira a mensagem
				if($("#login_message").css("display") == "block")
					$("#login_message").fadeOut("slow");
			});
			
			this.passField.bind("keyup",function(e){
				// Retira a mensagem
				if($("#login_message").css("display") == "block")
					$("#login_message").fadeOut("slow");
					
				// Pressionada a tecla 'Enter' no input da senha
				if(e.keyCode == "13")
					Ag2.Galeria.Login.Action();
			});		
			this.actionButton.bind("click",function(){
				if(Ag2.Galeria.Login.Test())
					Ag2.Galeria.Login.Action();
			});
			this.logoutButton.bind("click",function(){
				Ag2.Galeria.Login.Off();
			});
		}
	}
})();
