
/*	----------------------------------------------------------------- 
	Classe Portfolio - Requisições Assíncronas via XML
	Para ser usada em conjunto con a classe SwissKnife, instanciada como "s" e com jQuery
	Desenvolvida por Anderson Triacca - anderson@andersontriacca.com
	Data de Criação: 06/06/2009
	Última Modificação: 08/06/2009
-----------------------------------------------------------------	*/

/*
*
* 	Declaração dos métodos da classe
*
*/
function Portfolio() {
	Portfolio.prototype.troca_categoria = troca_categoria;	
	Portfolio.prototype.fechar_categorias = fechar_categorias;
	Portfolio.prototype.troca_subcategoria = troca_subcategoria;
	Portfolio.prototype.desmarcar_subcategorias = desmarcar_subcategorias;
	Portfolio.prototype.troca_cliente = troca_cliente;
	Portfolio.prototype.zerar_clientes = zerar_clientes;
	Portfolio.prototype.buscar_trabalhos = buscar_trabalhos;	
	Portfolio.prototype.troca_projetos = troca_projetos;
}

/*
*
* 	Troca a categoria no menu Lateral e Chama trabalhos randômicos dentro dela
*
*	@param		categoria		Categoria a ser Chamada
*	@param		triegger		Elemento que chamou a função
*
*	@return						void
*
*/
function troca_categoria(categoria, id_categoria) {
	// Só efetua as rotinas se não estiver na categoria selecionada
	trigger = $('.link_'+categoria);
	classes = trigger.attr('class');
	classes = classes.split(' ');
	if(!in_array(classes, 'selected')){
		// Fechando todas categorias
		this.fechar_categorias();
		
		// Abrindo a Solicitada
		trigger.addClass('selected');
		$('.'+categoria).slideToggle();
		
		// Chamando os itens de portfólio da mesma
		this.buscar_trabalhos(false, id_categoria, false);
	} 
}

/*
*
* 	Fecha todas categorias no menu lateral
*
*	@return						void
*
*/
function fechar_categorias() {
	categorias = document.getElementById('menu_produtos').getElementsByTagName('span');
	for(i=0;i<categorias.length;i++){
		link_categoria = categorias[i].getElementsByTagName('a')[0];
		categoria = link_categoria.rel;
		$('ul.'+categoria).slideUp();
		$('.link_'+categoria).removeClass('selected');
	}
	this.desmarcar_subcategorias();
	this.zerar_clientes();
}

/*
*
* 	Troca a subcategoria no menu Lateral e Chama trabalhos dela
*
*	@param		id_subcategoria		Subcategoria a ser Chamada
*
*	@return							void
*
*/
function troca_subcategoria(id_subcategoria) {
	// Desmarcando a Subcategoria
	desmarcar_subcategorias();
	
	// Marcando a subcategoria correspondente
	subcategorias = document.getElementById('menu_produtos').getElementsByTagName('li');
	for(i=0; i<subcategorias.length;i++){
		if(subcategorias[i].getElementsByTagName('a')[0].rel == id_subcategoria){
			subcategorias[i].getElementsByTagName('a')[0].className = 'selected';
		}
	}
	
	// Chamando os Projetos da Subcategoria
	this.buscar_trabalhos(id_subcategoria, false, false);
}

/*
*
* 	Desmarca todas subcategorias do menu lateral
*
*	@return		void
*
*/
function desmarcar_subcategorias() {
	$('#menu_produtos ul li a').removeClass('selected');	
}

/*
*
* 	Busca via ajax os trabalhos do cliente solicitado
*
*	@param		id_cliente			id do cliente a buscar
*	
*	@return		void
*
*/
function troca_cliente(id_cliente){
	this.fechar_categorias();
	this.desmarcar_subcategorias();
	this.buscar_trabalhos(false, false, id_cliente);
}

/*
*
* 	Zera o Select de Clientes
*
*	@return		void
*
*/
function zerar_clientes(){
	clientes = document.getElementById('filtro_cliente').getElementsByTagName('option');
	for(i=0;i<clientes.length;i++){
		if(clientes[i].value == '0'){
			clientes[i].selected = 'selected';
		}
	}
}

/*
*
* 	Busca via ajax uma relação de clientes de acordo com a solicitação
*   (randômicos duma categoria, específicos de uma subcategoria ou específicos de um cliente)
*
*	@param		id_subcategoria		id da subcategoria a buscar
*	@param		id_categoria		id da categoria a buscar
*	@param		id_cliente			id do cliente a buscar
*	
*	@return		void
*
*/
function buscar_trabalhos(id_subcategoria, id_categoria, id_cliente) {
	if(!id_categoria && !id_cliente){
		// Busca por subcategoria
		target = 'camadas_apoio/projetos.php?id_subcategoria='+id_subcategoria;
	} else if(!id_subcategoria && !id_cliente){
		// Busca por categoria
		target = 'camadas_apoio/projetos.php?id_categoria='+id_categoria;
	} else if(!id_subcategoria && !id_categoria){
		// Busca por cliente
		target = 'camadas_apoio/projetos.php?id_cliente='+id_cliente;
	} else{
		// Busca Indefinida
		alert('Erro! Busca indefinida!');
		return false;
	}
	// Fazendo requisição e Pré-carregamento do Link
	mBox_criaOverlay('#000', 80, 500);
	mBox_mostraCarregador('imagens/mbox_loading.gif');
	$.ajax({
		url: target,
		cache: true,
		success: function(object_xml){
			troca_projetos(object_xml);
		},
		error : function(){
			alert('Erro: Página não encontrada!');
		}
	});
}

/*
*
* 	Troca a Relação de Projetos presente na tela
*
*	@param		object_xml		Objeto XMl contendo as informações dos projetos
*	
*	@return		void
*
*/
function troca_projetos(xml){
	// Limpando o alvo
	$('.portfolio').fadeOut('fast');
	alvo = document.getElementById('conteudo_dir').getElementsByTagName('ul')[0];
	alvo.innerHTML = '';
	
	// Lendo o XML
	quantidade = (xml.getElementsByTagName('projetos')[0].getAttribute('qtd'));
	for(i=0;i<quantidade;i++){
		// Separando em Variáveis os Valores
		titulo = s.base64_decode(xml.getElementsByTagName('projeto')[i].getElementsByTagName('titulo')[0].childNodes[0].nodeValue);
		id_portfolio = s.base64_decode(xml.getElementsByTagName('projeto')[i].getElementsByTagName('id_portfolio')[0].childNodes[0].nodeValue);
		imagem =s.base64_decode(xml.getElementsByTagName('projeto')[i].getElementsByTagName('imagem')[0].childNodes[0].nodeValue);
		
		// Criando a Estrutura HTML
		li = document.createElement('li');
		a = document.createElement('a');
		img = document.createElement('img');
		span = document.createElement('span');
		span2 = document.createElement('span');
		
		// Atributos das Tags
		a.href = 'projeto.php?id_portfolio='+id_portfolio;
		a.className = 'modal';
		a.rel = 'portfolio';
		img.src = 'fotos/portfolio/pq_'+imagem;
		span.className = 'nome';
		span.innerHTML = titulo;
		span2.className = 'veja_mais';
		span2.title = 'Mais Detalhes';
		span2.innerHTML = 'Mais Detalhes';
		
		// Hierarquias
		a.appendChild(img);
		a.appendChild(span);
		a.appendChild(span2);
		li.appendChild(a);
		alvo.appendChild(li);
	}
	
	// Ativando a Modal
	$('.modal').mBox();

	// Removendo o Pré-carregador e o overlay e Acendendo o Alvo
	mBox_removeCarregador();
	mBox_removeOverlay();
	$('.portfolio').fadeIn('slow');
}