// JavaScript Document

xmlTemplate = {
	// 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);
	},
	// Testa a existencia de uma variavel, semelhante ao isset do php, retorna true ou false
	isSetVarParam : function(variableParamTest){
		return (variableParamTest=='' || variableParamTest=='null' || variableParamTest=='undefined') ? false : true;
	},
	/**
	 * Chama as informações do topico de texto
	 * @urlXml -> Url do XML em que fica todas as configurações, tais como campos a ser exibidos, blocos de templetes, id do topico, id do container etc
	 * @desFunAfter -> Script que será executado após o termínio do carregamento
	 * @indBlockXmlConfig -> Bloco do XML que será exibido. Default: cfg_default
	 * 
	 **/
	call : function( urlXml, desFunAfter, jsnFilters, indBlockXmlConfig, currentPage, desFuncAjax ){
		//Criando uma querystring com as variaveis de filtro/pesquisa
		var jsnQueryStringFilters=[];
		var indice=0;
		for (var jsnFiltersKey in jsnFilters){ // CORRESPONDENTE AO FOREACH DO PHP
			//alert('Indice: \''+i+'\' \n Valor:' + arrFilters[i]);
			jsnQueryStringFilters[indice] = jsnFiltersKey+'='+xmlTemplate.treatVars( jsnFilters[jsnFiltersKey] );
			indice++;
		}
		var queryStringFilters = jsnQueryStringFilters.join("&");
		//Tratamento das variaveis, sera vazio caso não estejam sendo enviadas
		urlXml = xmlTemplate.treatVars( urlXml );
		currentPage = xmlTemplate.treatVars( currentPage );
		desFuncAjax = xmlTemplate.treatVars( desFuncAjax );
		indBlockXmlConfig = (  xmlTemplate.treatVars(indBlockXmlConfig)==''  ) ? 'cfg_default' : xmlTemplate.treatVars(indBlockXmlConfig);
		//Busca as configurações no arquivo XML
		$j.get( decodeURIComponent(urlXml), function(xml){
			var xmlToJson = $j.xml2json(xml);
			var desAcao = (xmlToJson.cfg_default.des_acao=='' || xmlToJson.cfg_default.des_acao==null || xmlToJson.cfg_default.des_acao=='undefined')?'showTopicText':xmlToJson.cfg_default.des_acao;
			if( xmlTemplate.isSetVarParam(xmlToJson.cfg_default.des_id_ctn_destination)===false ){ alert("O id do destino, onde sera carregado o conteudo nao foi informado no arquivo XML. Tag <des_id_ctn_destination></des_id_ctn_destination> na raiz do bloco de configuracao."); }
			if( xmlTemplate.isSetVarParam(xmlToJson.cfg_default.url_controller)===false ){ alert("A url do controlador nao foi informada no XML. Tag <url_controller></url_controller> na raiz do bloco de configuracao."); }
			$j.ajax({
				type: 'POST', cache:false, url: xmlToJson.cfg_default.url_controller, dataType:'json',
				data: 'acao='+desAcao+'&urlXml='+urlXml+'&currentPage='+currentPage+'&desFuncAjax='+desFuncAjax+'&indBlockXmlConfig='+indBlockXmlConfig+'&'+queryStringFilters,
				beforeSend: function(){ $j('#'+xmlToJson.cfg_default.des_id_ctn_destination).html(xmlToJson.cfg_default.des_msg_load); },  
				success: function(json){ // txt => conteúdo trazido pela requisição
					$j('#'+xmlToJson.cfg_default.des_id_ctn_destination).fadeOut(500,function(){
						if(json.error!=''){
							$j('#'+xmlToJson.cfg_default.des_id_ctn_destination).html(json.error).fadeIn(500);
						}else{	
							if(xmlToJson.cfg_default.ind_show==null || xmlToJson.cfg_default.ind_show=='' || xmlToJson.cfg_default.ind_show===true || xmlToJson.cfg_default.ind_show=='undefined') $j('#'+xmlToJson.cfg_default.des_id_ctn_destination).html(json.data);
							$j('#'+xmlToJson.cfg_default.des_id_ctn_destination).html(json.data);
							$j('#'+xmlToJson.cfg_default.des_id_ctn_destination).fadeIn(500,function(){
								if(desFunAfter!='' && desFunAfter!='undefined' && desFunAfter!=null){ desFunAfter(json); }
							});
						}																																							
					});
				}
			});
		});
	},
	// Captura as informações de um formulario 
	getValuesForm : function(jsForm, paramVarsFormJson){
		//Criando uma querystring
		var jsnQueryStringFilters=[]; indice=0;
		for (var jsFormKey in jsForm){ // CORRESPONDENTE AO FOREACH DO PHP
			//alert('Indice: \''+i+'\' \n Valor:' + arrFilters[i]);
			if( document.getElementById(jsForm[jsFormKey]['id']) ){  jsnQueryStringFilters[indice] = jsForm[jsFormKey]['id']+'='+xmlTemplate.treatVars(  $j(  '#'+jsForm[jsFormKey]['id']  ).val()  ); }
			for (var paramVarsFormJsonKey in paramVarsFormJson){ // CORRESPONDENTE AO FOREACH DO PHP
				if(  paramVarsFormJsonKey==jsFormKey && xmlTemplate.treatVars( paramVarsFormJson[paramVarsFormJsonKey]  )!=''  ) jsnQueryStringFilters[indice] = jsForm[jsFormKey]['id']+'='+xmlTemplate.treatVars( paramVarsFormJson[paramVarsFormJsonKey]  );
			}
			indice++;
		}
		var queryStringFilters = jsnQueryStringFilters.join('&');
		return jsnQueryStringFilters.join('&');
	},
	//envia e salva informações de formulario
	sendSave : function( urlXml, onSucess, paramVarsFormJson, indBlockXmlConfig, onError ){
		urlXml = xmlTemplate.treatVars( urlXml );
		indBlockXmlConfig = (  xmlTemplate.treatVars(indBlockXmlConfig)==''  ) ? 'cfg_default' : xmlTemplate.treatVars(indBlockXmlConfig);
		//Busca as configurações no arquivo XML
		$j.get( decodeURIComponent(urlXml), function(xml){
			var xmlToJson=$j.xml2json(xml);
			var desAcao = (xmlToJson.cfg_default.des_acao=='' || xmlToJson.cfg_default.des_acao==null || xmlToJson.cfg_default.des_acao=='undefined') ? 'showTopicText' : xmlToJson.cfg_default.des_acao;
			if(xmlTemplate.isSetVarParam(xmlToJson.cfg_default.des_id_ctn_msg_alert)===false){ alert("O id do destino, onde sera carregado o conteudo nao foi informado no arquivo XML. Tag <des_id_ctn_msg_alert></des_id_ctn_msg_alert> na raiz do bloco de configuracao."); }
			if(xmlTemplate.isSetVarParam(xmlToJson.cfg_default.url_controller)===false){ alert("A url do controlador nao foi informada no XML. Tag <url_controller></url_controller> na raiz do bloco de configuracao."); }
			$j.ajax({
				type: 'POST', url: xmlToJson.cfg_default.url_controller, dataType:'json',
				data: 'acao='+desAcao+'&urlXml='+urlXml+'&indBlockXmlConfig='+indBlockXmlConfig+'&'+xmlTemplate.getValuesForm(xmlToJson.cfg_default.form,paramVarsFormJson),
				beforeSend: function(){ $j('#'+xmlToJson.cfg_default.des_id_ctn_msg_alert).html(xmlToJson.cfg_default.des_msg_load); },  
				success: function(json){ // txt => conteúdo trazido pela requisição
					$j('#'+xmlToJson.cfg_default.des_id_ctn_msg_alert).fadeOut(200,function(){
						if(json.sucess=='1'){
							$j('#'+xmlToJson.cfg_default.des_id_ctn_msg_alert).html(xmlToJson.cfg_default.des_msg_sucess).fadeIn();
							if(onSucess!='' && onSucess!='undefined' && onSucess!=null){ onSucess(json); }
						}else{
							$j('#'+xmlToJson.cfg_default.des_id_ctn_msg_alert).html('Erro: '+json.error).fadeIn();
							if(onError!='' && onError!='undefined' && onError!=null){ onError(json); }
						}													
					});
				}
			});
		});
	}
}
