// JavaScript Document



combo = {

	alimentaCombo : function(objSelect,string, codSelecionar){

		codSelecionar = (codSelecionar=='' || codSelecionar==null) ? 0 : codSelecionar;

		var lenAtual = objSelect.options.length;

		var results = string.split(",");

		var string;

		

		//NÃO SEI PORQUE, MAS O LENGTH DO TEXTO QUE É RETORNADO PELA REQUISISÃO DE AJAX E ENTRA NESTA FUNÇÃO PELO

		//PARAMETRO STRING, ESTÁ RETORNANDO 2 CARACTERES A MAIS, JA TENTEI DESCOBRIR DE TODAS AS FORMAS O MOTIVO, 

		//POREM NÃO CONSEGUI.... ACHEI UMA SOLUÇÃO ALTERNATIVA QUE É TESTAR SE ESTA STRING POSSUI A '|' QUE SEPARA

		//O ID DO NOME DO OPTION... NÃO DEIXANDO ENTRAR NO FOR CASO NÃO TENHA, FUNCINOU PERFEITAMENTE APARENTEMENTE.

		//POREM.. NÃO É UMA SOLUÇÃO E SIM UM CONTORNO PARA O PROBLEMA... JA QUE PERDI UM BOM TEMPINHO TENTANDO ACHAR A CAUSA.

		if(string.indexOf('|')!=-1){

			for( i = lenAtual; i < parseInt(lenAtual)+parseInt(results.length); i++ ){

				string = results[i-lenAtual].split( "|" );

				objSelect.options[i] = new Option( string[0], string[1] );

				if(string[1]==codSelecionar) objSelect.options[i].selected=true;

			}

		}

		if(string=='')objSelect.options.length = 0;		

	},

	cidade : function(idSelect, codEstado, codSelecionar){

		var objSelect = document.getElementById(idSelect);

		codEstado = (codEstado==null) ? '' : codEstado;

		if(codEstado==''){

			

		}else{

			$j.ajax({

				// Usando metodo Post

				type: 'POST',

				// this.action pega o script para onde vai ser enviado os dados

				url: 'controllers/con_cidade.php',

				// os dados que pegamos com a função serialize()

				data: 'acao=combo&codEstado='+codEstado,

				// Antes de enviar

				beforeSend: function(){

					objSelect.options.length = 0;

					objSelect.options[0] = new Option('Aguarde, carregando...', '' );

				}, 

				success: function(txt){ // txt => conteúdo trazido pela requisição

					objSelect.options.length = 0;

					$j('#'+idSelect).hide();

					objSelect.options[0] = new Option( '- Escolha uma das Opções - ', '' );

					combo.alimentaCombo(objSelect,txt,codSelecionar);

					$j('#'+idSelect).fadeIn('normal');

				},

				// Se acontecer algum erro é executada essa função

				error: function(txt){

					//$j('#containerMenu').html(txt);

					$j('#'+idSelect).html(txt);

				}

			})

		}

	},

	estado : function(idSelect, codSelecionar){

		var objSelect = document.getElementById(idSelect);

		$j.ajax({

			// Usando metodo Post

			type: 'POST',

			// this.action pega o script para onde vai ser enviado os dados

			url: 'controllers/con_estado.php',

			// os dados que pegamos com a função serialize()

			data: 'acao=combo',

			// Antes de enviar

			beforeSend: function(){

				objSelect.options.length = 0;

				objSelect.options[0] = new Option( 'Aguarde, carregando...', '' );

			}, 

			success: function(txt){ // txt => conteúdo trazido pela requisição

				objSelect.options.length = 0;

				$j('#'+idSelect).hide();

				objSelect.options[0] = new Option( '- Escolha uma das Opções - ', '' );

				combo.alimentaCombo(objSelect,txt,codSelecionar);

				$j('#'+idSelect).fadeIn('normal');

			},

			// Se acontecer algum erro é executada essa função

			error: function(txt){

				//$j('#containerMenu').html(txt);

				$j('#'+idSelect).html(txt);

			}

		})	

	},

	generico : function(idSelect, codFiltrar, exigeCodFiltrar, codSelecionar, valorDefault, linkControlador, acao, nomVarValorDefault){

		var objSelect = document.getElementById(idSelect);

		nomVarValorDefault=(nomVarValorDefault==null || nomVarValorDefault=='' || nomVarValorDefault=='undefined')? 'codFiltrar' : nomVarValorDefault;

		codFiltrar 		= (codFiltrar==null || codFiltrar=='' || codFiltrar=='undefine') 	? '' : codFiltrar;

		exigeCodFiltrar	= (exigeCodFiltrar==null || exigeCodFiltrar=='' || exigeCodFiltrar=='undefined')? false : exigeCodFiltrar;

		codSelecionar 	= (codSelecionar==null || codSelecionar=='' || codSelecionar=='undefined') ? '' : codSelecionar;

		valorDefault 	= (valorDefault==null || valorDefault=='' || valorDefault=='undefined') 	? '' : valorDefault;

		if(codFiltrar=='' && exigeCodFiltrar==true){

			objSelect.options.length = 0;

		}else{

			$j.ajax({

				type: 'POST', url: linkControlador,

				data: 'acao='+acao+'&'+nomVarValorDefault+'='+codFiltrar,

				beforeSend: function(){

					objSelect.options.length = 0;

					objSelect.options[0] = new Option( 'Aguarde, carregando...', '' );

				}, 

				success: function(txt){ // txt => conteúdo trazido pela requisição

					$j('#'+idSelect).hide();

					if(txt=='' || txt==null || txt=='undefined'){

						objSelect.options.length = 0;

					}else{

						objSelect.options.length = 0;

						if(valorDefault!='') objSelect.options[0] = new Option(valorDefault,'');

						combo.alimentaCombo(objSelect,txt,codSelecionar);

					}

					$j('#'+idSelect).fadeIn('normal');

				}

			});

		}

	},

	// Trata um valor de uma variavel pegando valores null e undefined, e trocando por vazio

	treatVars : function(desVar){

		return ( desVar==null || desVar=='undefined' ) ? '' : encodeURIComponent(desVar);

	},

	fill : function(jsnVars, valorDefault){

		var objSelect = document.getElementById(jsnVars.idSelect);

		jsnVars.exigeCodFiltrar	= (jsnVars.exigeCodFiltrar==null || jsnVars.exigeCodFiltrar=='' || jsnVars.exigeCodFiltrar=='undefined')? false : jsnVars.exigeCodFiltrar;

		jsnVars.codSelecionar 	= (jsnVars.codSelecionar==null || jsnVars.codSelecionar=='' || jsnVars.codSelecionar=='undefined') ? '' : jsnVars.codSelecionar;

		jsnVars.valorDefault 	= (jsnVars.valorDefault==null || jsnVars.valorDefault=='' || jsnVars.valorDefault=='undefined') ? '' : jsnVars.valorDefault;

		//if(jsnVars.desAcao==null || jsnVars.desAcao=='' || jsnVars.desAcao=='undefined'){

		//	alert('A variavel acao deve ser enviada!!');

		//}

		var jsnQueryStringVars=[];

		for (var jsnVarsKey in jsnVars){ // CORRESPONDENTE AO FOREACH DO PHP

			jsnQueryStringVars.push(  jsnVarsKey+'='+combo.treatVars( jsnVars[jsnVarsKey] )  );

		}

		var strQueryStringVars = jsnQueryStringVars.join("&");

		$j.ajax({

			type:'POST', url:jsnVars.desLinkController,

			data: strQueryStringVars,

			beforeSend: function(){

				objSelect.options.length = 0;

				objSelect.options[0] = new Option( 'Aguarde, carregando...', '' );

			},

			success: function(txt){

				$j('#'+jsnVars.idSelect).hide();

				if(txt==='' || txt===null || txt==='undefined' || txt===0 || txt===false || txt==='0'){

					objSelect.options.length = 0;

				}else{

					objSelect.options.length = 0;

					if(jsnVars.valorDefault!='') objSelect.options[0] = new Option(jsnVars.valorDefault,'');

					combo.alimentaCombo(objSelect,txt,jsnVars.codSelecionar);

					if( jsnVars.funcAfter!='' && jsnVars.funcAfter!='undefined' && jsnVars.funcAfter!=null ) jsnVars.funcAfter();

				}

				$j('#'+jsnVars.idSelect).fadeIn('normal');

			}

		});

	}

}
