/* substituto para jquery.color.js */
(function(d){d.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(f,e){d.fx.step[e]=function(g){if(!g.colorInit){g.start=c(g.elem,e);g.end=b(g.end);g.colorInit=true}g.elem.style[e]="rgb("+[Math.max(Math.min(parseInt((g.pos*(g.end[0]-g.start[0]))+g.start[0]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[1]-g.start[1]))+g.start[1]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[2]-g.start[2]))+g.start[2]),255),0)].join(",")+")"}});function b(f){var e;if(f&&f.constructor==Array&&f.length==3){return f}if(e=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(f)){return[parseInt(e[1]),parseInt(e[2]),parseInt(e[3])]}if(e=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(f)){return[parseFloat(e[1])*2.55,parseFloat(e[2])*2.55,parseFloat(e[3])*2.55]}if(e=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(f)){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}if(e=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(f)){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}if(e=/rgba\(0, 0, 0, 0\)/.exec(f)){return a.transparent}return a[d.trim(f).toLowerCase()]}function c(g,e){var f;do{f=d.curCSS(g,e);if(f!=""&&f!="transparent"||d.nodeName(g,"body")){break}e="backgroundColor"}while(g=g.parentNode);return b(f)}var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]}})(jQuery);

$(document).ready(function() {

	ajPag = new Object;
	ajPag.page = 1;
	ajPag.ppg = 50;
	ajPag.order = 'nome';

	/* monta campos de UF e municipio dinamicamente */	
	montaCamposEndereco($('#id_uf'), $('#id_municipio'));

	/* monta select dinâmico dos programas */	
	$("#id_programas").asmSelect({
		animate: true,
		removeLabel: 'remover',
		containerClass: 'programasContainer',
		selectClass:'fakeSelect',
		listClass:'',
		listSortableClass:'',
		listItemClass:'',
		listItemLabelClass:'',
		removeClass:'',
		highlightClass:''
    });


	/* executa a busca quando o formulario de busca eh enviado */	
	$("form.busca").submit(function(){
		ajPag.page = 1;		
		atualizaTelecentros();
		return false;
	});
	
	// exibe msg durante a requisicoes ajax
	$().ajaxComplete(function(ev, xhr, s) {
		if (typeof xhr != 'undefined')
    		if (xhr.status != 200) {
    			alert('Ops! Ocorreu um erro durante e requisição dos dados\nPor favor atualize a página e tente novamente.');
    		}
		escondeCarregando()
	});
	
	$().ajaxStart(function() {mostraCarregando();});
	
	atualizaTelecentros();
});


function mostraCarregando() {
	$('#carregando').show('fast')
}

function escondeCarregando(){
	$('#carregando').hide('fast')
}

function atualizaTelecentros() {
	$('.busca .titulo .submit').removeClass('procura').addClass('procurando').attr('disabled', 'disabled')
	var container = $('#telecentros')
	var camposAdicionais = '&page=' + escape(ajPag.page) + '&ppg=' + escape(ajPag.ppg) + '&order=' + escape(ajPag.order);
	
	$.get('/lista/ajax/telecentros?' + $('form.busca').serialize() + camposAdicionais, null, function(html){
		container.html(html)
		$('.busca .titulo .submit').removeClass('procurando').addClass('procura').removeAttr('disabled')
		ativaLinksTabela()

		// da uma piscada na linha de paginacao, pra indicar que os telecentros ja foram atualizados
		$('p.paginacao').animate({ backgroundColor: "#FFA" }, 200).animate({ backgroundColor: "white" }, 500);

		return false;
	})
	return false;
}

function ativaLinksTabela() {

	$('a.act-export').click(function(){
		window.location = '/lista/ajax/telecentros?' + $('form.busca').serialize() + '&output=' + $(this).attr('href');
		if (! $('#exportando').length)
			$(this).after(' <span id="exportando" class="hidden"> Exportando, por favor aguarde...</span>')

		$('#exportando').fadeIn(1000, function(){
			$(this).fadeOut(4000);
		})
		return false;
	})
	
	$('table.dados td').click(function(){
		exibeDetalhesTelecentro(this)
	})

	$('a.act-lpag').click(function(){
		ajPag.page = $(this).attr('href');
		atualizaTelecentros();
		return false;
	})

	$('select.act-spag').change(function(){
		ajPag.page = $(this).val();
		atualizaTelecentros();
		return false;
	})
	
	$('table.dados th').click(function(){
		// se a coluna ja esta ordenada em ordem crescente, inverte a ordem
		if ($(this).hasClass('sortDown'))
			pref = '-';
		else
			pref = '';
		
		ajPag.order = pref + pegaValorClasse($(this), 'act-ref-ord');
		atualizaTelecentros();
	})
}

function ativaLinksTelecentro($contexto){

	$('a.act-detalhe', $contexto).click(function(){
		$obj = $(this);
		nome = $obj.attr('href');
		
		$detalhe_existente = $('#detalhe-' + nome);
		
		if ($detalhe_existente.length)
			$($detalhe_existente).click()
		else {
		
			detalhes = new Object
			detalhes.info = nome
			detalhes.id = $('.id', $(this).closest('tr').prev().children()).val()

			$.get('/lista/ajax/detalhes/detalhe', detalhes, function(html){
				exibeDetalhe($obj, html);
			});
		}
		return false;		
	});
}

function exibeDetalhe($ativador, html) {
	$ativador.after('<div class="hidden detalhe" id="detalhe-' + $ativador.attr('href') + '">' + html + '</div>');
	$ativador.next().slideDown('fast');
	ativaLinksDetalhe($ativador.next());
}

function ativaLinksDetalhe($contexto){
	$($contexto).click(function(){
		$contexto.slideUp('fast', function() {$(this).remove()});
		return false;
	});
}

function exibeDetalhesTelecentro(td){
	tr = $(td).parent()
	
	if (tr.next().attr('class') == 'detalhes') {
		tr.next().children().children().slideUp('slow', function(){
			tr.next().remove()
			tr.removeClass('selecionado')
		});
	}
	else {
	
		procura = new Object
		procura.id = $('.id', tr.children()[0]).val()
		
		$.get('/lista/ajax/detalhes/telecentro', procura, function(html){
			tr.addClass('selecionado')
			tr.after('<tr class="detalhes"><td colspan="8" class="pc"><div class="hidden">' + html + '<div class="detalhes"></div></div></td></tr>')
			ativaLinksTelecentro(tr.next().children().children().slideDown('slow'))
		})
	}
}

function pegaValorClasse(elemento, prefixo) {
	comp = prefixo.length			
	classes = elemento.attr('class').split(" ")
	
	for (classe in classes)
		if (classes[classe].indexOf(prefixo) == 0)
			return classes[classe].substr(comp+1)
			
	return '';
}

