/**
 * @author David
 */
var _Trazas_js_ = true;
////////////////////////////////
// FUNCIONES PARA LA TRAZA
////////////////////////////////
llamadaAjaxTraza = function(url){
	
	var d = new Date();
	var r = d.getTime()+Math.random();
	
	if(url.indexOf("?") > -1){
		var url = url+"&r="+r;
	}else{
		var url = url+"?r="+r;
	}
	
	this.success = function(req){
	    document.close();
	};
	var params = {
		method:'get',
		onSuccess: this.success, 
		parameters: {}
	};
	try {
		this.request = new Ajax.Request(url, params);
	} 
	catch (e) {
		try {
			this.request = new parent.Ajax.Request(url, params);
		} 
		catch (e) {
			try{
				this.request = new parent.parent.Ajax.Request(url, params);
			}catch(e){
				this.request = new parent.parent.parent.Ajax.Request(url, params);
			}
		}
	}
}
function RegistrarOrdenarPor(ordenar_por,modulo){ //Modulo es para saber el codigo del tipo de busqueda
	if(ordenar_por==1) //Ordenar por Norma
		var evento = 1
	else if(ordenar_por==4) //Ordenar por Fecha de Publicacion
		var evento = 2
	else
		return false
				
	var url = "Registro?tipo=ordenar&codigo_evento="+evento+"&modulo="+modulo
	llamadaAjaxTraza(url);
}
function RegistrarClasificar(obj,modulo){
	var val = obj.value;
	var clasificar = new Array()
	clasificar[1] = "Organismo";
	clasificar[2] = "Tipo Norma";
	clasificar[3] = "Materia";
	if (val == "")
		return false;
	evento = 39;
	try{
		var consulta = "clasificar("+clasificar[val]+")";
	}catch(e){
		alert(e)
		return false
	}
	var url = "Registro?tipo=clasificar&codigo_evento="+evento+"&consulta="+consulta+"&modulo="+modulo
	llamadaAjaxTraza(url);
}
function RegistrarClickArbolMaterias(termino){
	var codigo_evento = 24
	var modulo = 4
	var tmp = termino.split(" (")
	termino = tmp[0]
	var consulta = "termino("+termino+")";
	var url = "Registro?tipo=clickarbolmaterias&codigo_evento="+codigo_evento+"&consulta="+consulta+"&modulo="+modulo;
	llamadaAjaxTraza(url);
}
function RegistrarClasificarPor(codigo_evento,modulo,texto){
	var eventos = new Array()
	eventos[25] = "Tipo Norma" 
	eventos[26] = "Materia" 
	eventos[27] = "Organismo"
	try{
		//Ocupo el caracter "¬" para reemplazar el caracter ";" que ocasiona problemas al pasarlo por la url
		var consulta = "clasificar("+eventos[codigo_evento]+")¬texto("+texto+")"; 
	}catch(e){
		alert("RegistrarClasificarPor en Trazas.js: "+e);
		return false;
	}
	var url = "Registro?tipo=clasificar&codigo_evento="+codigo_evento+"&consulta="+consulta+"&modulo="+modulo
	llamadaAjaxTraza(url);
}

function RegistrarNevegarNorma(codigo_evento,IDNORMA,IDVERSION,modulo,IDPARTE,ID_VERSION_PARTE, consulta){
	if(typeof(consulta) == 'undefined'){
		consulta = "";
	}else{
		consulta = urlencode(consulta);
	}
	if (typeof(IDPARTE) != 'undefined' && typeof(ID_VERSION_PARTE) != 'undefined') {
		var url = "Registro?tipo=nevegarnorma&codigo_evento=" + codigo_evento + "&modulo=" + modulo + "&idnorma=" + IDNORMA + "&idversion=" + IDVERSION + "&idparte=" + IDPARTE + "&idversionparte=" + ID_VERSION_PARTE+"&consulta="+consulta;
	}
	else {
		var url = "Registro?tipo=nevegarnorma&codigo_evento=" + codigo_evento + "&modulo=" + modulo + "&idnorma=" + IDNORMA + "&idversion=" + IDVERSION+"&consulta="+consulta;
	}
	llamadaAjaxTraza(url);
}

function registraModoNavegacion(modo){
	var idParte = document.getElementById('idParte_interna').value?document.getElementById('idParte_interna').value:0;
	var idVersion = document.getElementById('idVersion_interna').value?document.getElementById('idVersion_interna').value:0;
	var idNorma = document.getElementById('idNorma_interna').value?document.getElementById('idNorma_interna').value:0;
	if (idParte <= 0) {
		var idVersionParte = 0;
	}
	else {
		var idVersionParte = idVersion;
	}
	var identificacion_norma_parte = idNorma+"."+idVersion+"/"+idParte+"."+idVersionParte

	var consulta = "modo_navegacion("+modo+")";
	var modulo   = 14;
	var codigo_evento = 55; 
	
	var url = "Registro?tipo=BuscaTextoNavegar&codigo_evento="+codigo_evento+"&modulo="+modulo+"&identificacion_norma_parte="+identificacion_norma_parte+"&consulta="+consulta

	llamadaAjaxTraza(url);
}


function RegistrarNoQuedoConforme(codigo_evento,tipo,texto,totRes,palabras_sugeridas,modulo){
	if (tipo==1)
		tmp ="frase" 
	else if(tipo==0)
		tmp= "palabra"
	else
		tmp = tipo 
	var consulta = "tipo("+tmp+")¬texto("+urlencode(texto)+")";
	var url = "Registro?tipo=noconforme&codigo_evento="+codigo_evento+"&consulta="+consulta+"&modulo="+modulo+"&numero_resultado="+totRes+"&palabras_sugeridas="+palabras_sugeridas
	llamadaAjaxTraza(url);
}
function RegistrarTrazaAyudaGeneral(){
	var modulo = getCodigoModulo();

	var codigo_evento = '4';
	
	var url = "Registro?tipo=ayudaGeneral&codigo_evento="+codigo_evento+"&modulo="+modulo
	llamadaAjaxTraza(url);
}

function RegistrarTrazaAyudaContextual(modulo){
	if(typeof(modulo)=='undefined' || !modulo)
		var modulo = getCodigoModulo();

	var codigo_evento = '3';
	/* Este registro ocupa los mismos paramtros que el de RegistrarTrazaAyudaGeneral, por lo que se ocupa la misma funcion */
	var url = "Registro?tipo=ayudaGeneral&codigo_evento="+codigo_evento+"&modulo="+modulo
	llamadaAjaxTraza(url);
}

function TrazarNavegarVinculaciones(tipo,idNorma,idParte){
	var modulo = getCodigoModulo();

	var codigo_evento = '5';
	var consulta="tipovinculacion("+tipo+")¬idnorma("+idNorma+")¬idparte("+idParte+")";
	var url = "Registro?tipo=navegarVinculacion&codigo_evento="+codigo_evento+"&modulo="+modulo+"&consulta="+consulta
	llamadaAjaxTraza(url);
}

function RegistrarVerAgrupadores(nombreAgrupador){
	var modulo = '5';
	var codigo_evento  = '9';
	var consulta = "agrupador("+nombreAgrupador+")";
	/* Este registro ocupa los mismos paramtros que el de navegarVinculacion, por lo que se ocupa la misma funcion */
	var url = "Registro?tipo=navegarVinculacion&codigo_evento="+codigo_evento+"&modulo="+modulo+"&consulta="+consulta;
	llamadaAjaxTraza(url);
}

function RegistrarVerSubAgrupadores(nombreAgrupador,nombreSubAgrupador){
	var modulo = '5';
	var codigo_evento  = '10';
	var consulta = "agrupador("+nombreAgrupador+")¬subagrupador("+nombreSubAgrupador+")";
	/* Este registro ocupa los mismos paramtros que el de navegarVinculacion, por lo que se ocupa la misma funcion */
	var url = "Registro?tipo=navegarVinculacion&codigo_evento="+codigo_evento+"&modulo="+modulo+"&consulta="+consulta;
	llamadaAjaxTraza(url);
}

function RegistrarVerResumen(modulo,idNorma,idVersion,idParte,idVersionParte){
	if(typeof(idNorma)=='undefined') idNorma = 0;
	if(typeof(idVersion)=='undefined') idVersion = 0;
	if(typeof(idParte)=='undefined') idParte = 0;
	if(typeof(idVersionParte)=='undefined') idVersionParte = 0;

	var codigo_evento = '7';
	var identificacion_norma_parte = idNorma+"."+idVersion+"/"+idParte+"."+idVersionParte
	/* Este registro ocupa los mismos paramtros que el de clickArbol, por lo que se ocupa la misma funcion */
	var url = "Registro?tipo=clickArbol&codigo_evento="+codigo_evento+"&modulo="+modulo+"&identificacion_norma_parte="+identificacion_norma_parte;
	llamadaAjaxTraza(url);
}

/*
 * Traza Cuando se hace click en Arbol de Norma
 */
function R(idNorma,idVersion,idParte,idVersionParte,modulo){
	//if (false) {
		var codigo_evento = '29';
		var identificacion_norma_parte = idNorma + "." + idVersion + "/" + idParte + "." + idVersionParte
		var url = "Registro?tipo=clickArbol&codigo_evento=" + codigo_evento + "&modulo=" + modulo + "&identificacion_norma_parte=" + identificacion_norma_parte;
		setTimeout(function(){
			llamadaAjaxTraza(url);
		},5000);
	//}
}


function TrazarExportaDesdeArbol2(objATrazar){
	var modulo = 14
	var norma = "0"
	var version = "0";
	var partenorma = "";
	var versionparte = "";
	for(var i=0;i<objATrazar.length;i++){
		var obj = objATrazar[i];
	    norma = obj.getAttribute('idnorma',0);
		version = obj.getAttribute('idversion',0);
		partenorma += obj.getAttribute('idpartenorma',0)+".";
		versionparte += obj.getAttribute('idversionparte',0)+".";
	}
	
	setTimeout('TrazarExportaDesdeArbol('+norma+','+version+',\''+partenorma+'\',\''+versionparte+'\',\''+modulo+'\');',30);
}

function TrazarExportaDesdeArbol(idNorma,idVersion,idParte,idVersionParte,modulo){
	var codigo_evento  = '30';
	var url = "Registro?tipo=exportarDesdeArbol&codigo_evento="+codigo_evento+"&modulo="+modulo+"&idNorma="+idNorma+"&idVersion="+idVersion+"&idParte="+idParte+"&idVersionParte="+idVersionParte;
	llamadaAjaxTraza(url);
}

function TrazarEventoNavegar(codigo_evento,modulo){
	var idParte = document.getElementById('idParte_interna').value?document.getElementById('idParte_interna').value:0;
	var idVersion = document.getElementById('idVersion_interna').value?document.getElementById('idVersion_interna').value:0;
	var idNorma = document.getElementById('idNorma_interna').value?document.getElementById('idNorma_interna').value:0;

	var identificacion_norma_parte = idNorma+"."+idVersion+"/"+idParte+"."+idVersion
	/* Este registro ocupa los mismos paramtros que el de click en Arbol de Norma, por lo que se ocupa la misma funcion */
	var url = "Registro?tipo=clickArbol&codigo_evento="+codigo_evento+"&modulo="+modulo+"&identificacion_norma_parte="+identificacion_norma_parte;
	setTimeout(function(){
		llamadaAjaxTraza(url);
	},100);
}

function urlencode(str) {
	str = escape(str);
	str = str.replace('+', '%2B');
	str = str.replace('%20', '+');
	str = str.replace('*', '%2A');
	str = str.replace('/', '%2F');
	str = str.replace('@', '%40');
	return str;
}

function urldecode(str) {
	str = str.replace('+', ' ');
	str = unescape(str);
	return str;
}

function TrazarVerOcultarOpciones(nombreOpcion,verOcultar){
	var modulo = '14';
	var codigo_evento = '33';
	var idParte = document.getElementById('idParte_interna').value?document.getElementById('idParte_interna').value:0;
	var idVersion = document.getElementById('idVersion_interna').value?document.getElementById('idVersion_interna').value:0;
	var idNorma = document.getElementById('idNorma_interna').value?document.getElementById('idNorma_interna').value:0;
	var identificacion_norma_parte = idNorma+"."+idVersion+"/"+idParte+"."+idVersion;
	var consulta = "opcion("+nombreOpcion+")¬accion("+verOcultar+")";
	/* Este registro ocupa los mismos paramtros que el de click en Arbol de Norma, por lo que se ocupa la misma funcion */
	var url = "Registro?tipo=BuscaTextoNavegar&codigo_evento="+codigo_evento+"&modulo="+modulo+"&identificacion_norma_parte="+identificacion_norma_parte+"&consulta="+consulta
	llamadaAjaxTraza(url);
}
function TrazarClickEnlace(codigo_evento,enlaceValue){
	var idParte = document.getElementById('idParte_interna').value?document.getElementById('idParte_interna').value:0;
	var idVersion = document.getElementById('idVersion_interna').value?document.getElementById('idVersion_interna').value:0;
	var idNorma = document.getElementById('idNorma_interna').value?document.getElementById('idNorma_interna').value:0;
	var modulo = '14';
	var identificacion_norma_parte = idNorma+"."+idVersion+"/"+idParte+"."+idVersion;
	var consulta = "enlace("+enlaceValue+")";
	consulta = urlencode(consulta);
	/* Este registro ocupa los mismos paramtros que el de click en Arbol de Norma, por lo que se ocupa la misma funcion */
	var url = "Registro?tipo=BuscaTextoNavegar&codigo_evento="+codigo_evento+"&modulo="+modulo+"&identificacion_norma_parte="+identificacion_norma_parte+"&consulta="+consulta
	llamadaAjaxTraza(url);
}
function TrazarBuscarTextoNavegar(){
	var modulo = '14';
	var codigo_evento = '38';
	var idParte = document.getElementById('idParte_interna').value?document.getElementById('idParte_interna').value:0;
	var idVersion = document.getElementById('idVersion_interna').value?document.getElementById('idVersion_interna').value:0;
	var idNorma = document.getElementById('idNorma_interna').value?document.getElementById('idNorma_interna').value:0;
	var identificacion_norma_parte = idNorma+"."+idVersion+"/"+idParte+"."+idVersion
	
	var texto = document.getElementById('frase').value;
	
	if(texto=="") return;
	
	var consulta = "texto("+texto+")";

	/* Este registro ocupa los mismos paramtros que el de click en Arbol de Norma, por lo que se ocupa la misma funcion */
	var url = "Registro?tipo=BuscaTextoNavegar&codigo_evento="+codigo_evento+"&modulo="+modulo+"&identificacion_norma_parte="+identificacion_norma_parte+"&consulta="+consulta
	llamadaAjaxTraza(url);
}

var CodigosFormatoExportacion = new Object();
CodigosFormatoExportacion.word = 1;
CodigosFormatoExportacion.pdf = 2;
CodigosFormatoExportacion.correo = 3;
CodigosFormatoExportacion.html = 4;
CodigosFormatoExportacion.imprimir = 5;
CodigosFormatoExportacion.texto = 6;
CodigosFormatoExportacion.txt = 6;

function TrazarExportarAciertos(modulo,nombre_radios){
	var radios = document.getElementsByName(nombre_radios);
	var value = "";
	for (var i =0;i<radios.length;i++){
		if(radios[i].checked){
			value = radios[i].value;
			break;
		}
	}
	if(value == "") return;
	
	var codigo_evento = 13;
	try{
		var formato_exportacion = CodigosFormatoExportacion[value];
	}catch(e){
		alert("revisar los formatos de exportacion");
		return;
	}
	var url = "Registro?tipo=ExportarAciertos&codigo_evento="+codigo_evento+"&modulo="+modulo+"&formato_exportacion="+formato_exportacion
	llamadaAjaxTraza(url);
}

function TrazarExportarNorma(modulo,identificacion_norma_parte,nombre_radio_formato_exp){
	var radios = document.getElementsByName(nombre_radio_formato_exp);
	var value = "";
	for (var i =0;i<radios.length;i++){
		if(radios[i].checked){
			value = radios[i].value;
			break;
		}
	}
	if(value == "") return;
	
	var codigo_evento = 14;
	try{
		var formato_exportacion = CodigosFormatoExportacion[value];
	}catch(e){
		alert("revisar los formatos de exportacion");
		return;
	}
	
	var notas_bcn = document.getElementById("exp_notas_bcn").checked;
	var notas_originales = document.getElementById("exp_notas_originales").checked;
	var fecha = document.getElementById("exp_fecha").checked;
	var notas_al_pie = document.getElementById("exp_notas_al_pie").checked;
	var vinculaciones = document.getElementById("exp_vinculaciones").checked;
	var numero_pagina = document.getElementById("exp_numero_pagina").checked;
	var hora = document.getElementById("exp_hora").checked;
	
	var consulta = "notas_bcn("+notas_bcn+")¬";
	consulta += "notas_originales("+notas_originales+")¬";
	consulta += "fecha("+fecha+")¬";
	consulta += "notas_al_pie("+notas_al_pie+")¬";
	consulta += "vinculaciones("+vinculaciones+")¬";
	consulta += "numero_pagina("+numero_pagina+")¬";
	consulta += "hora("+hora+")";
	
	var url = "Registro?tipo=TrazarExportarNorma&codigo_evento="+codigo_evento+"&modulo="+modulo+"&formato_exportacion="+formato_exportacion+"&identificacion_norma_parte="+urlencode(identificacion_norma_parte)+"&consulta="+consulta
	llamadaAjaxTraza(url);

}

function RegistrarNavegarMetadatosVinculacion(modulo,idVinculacion){
	//funcion que registra la traza del evento "Ver Metadatos Vinculación"
	//alert("registro traza para vinculacion = "+idVinculacion)
	var codigo_evento = '37';
	var consulta="idvinculacion("+idVinculacion+")";
	var url = "Registro?tipo=navegarMetadatosVinculacion&codigo_evento="+codigo_evento+"&modulo="+modulo+"&consulta="+consulta;
	//alert("RegistrarNavegarMetadatosVinculacion\nurl="+url);
	llamadaAjaxTraza(url);
}

function RegistrarVincNavNormaParte(sentido, modulo, idNorma, idVersion, idParte, inverso){
	//Funcion que permite registra la traza de los eventos:
	//Si idNorma no tienen un valor valido no es posible navegar por lo tanto tampoco 
	//debería registrarse la traza de este evento. Esta condicion fue extraida de la 
	//funcion "NavegarNorma" desde tools.js
	if((idNorma == '') || (idNorma == '0') || (idNorma == 0)){
		//alert("Norma no registra traza por falta de datos");
		return "";
	}
	//    "Seleccionar Vinculación de Origen" o "Seleccionar Vinculación de Destino"
	if(sentido=="origen"){
		if(inverso){
			codigo_evento = '36';
		}
		else{
			codigo_evento = '35';
		}
	}
	else if(sentido=="destino"){
		if(inverso){
			codigo_evento = '35';
		}
		else{
			codigo_evento = '36';
		}
	}
	else{
		return "";
	}
	var url = "Registro?tipo=navegarNormaParte&codigo_evento="+codigo_evento+"&modulo="+modulo+"&idNorma="+idNorma+"&idParte="+idParte+"&idVersion="+idVersion;
	llamadaAjaxTraza(url);
}

function RegistrarBuscarAvanzada(stringBusqueda){
	var modulo = 2;
	var codigo_evento = 0;
	var consulta = "stringBusqueda("+urlencode(stringBusqueda)+")";
	//Se ocupa el tipo "clasificar" ya que ocupa los mismos parametros que esta traza
	var url = "Registro?tipo=clasificar&codigo_evento="+codigo_evento+"&modulo="+modulo+"&consulta="+consulta;
	llamadaAjaxTraza(url);
}

function RegistrarGuardarParametros(evento){
	if (typeof(evento) == 'undefined'){
		var codigo_evento = 19;
	}else if(evento=='recuperar'){
		var codigo_evento = 20;
	}else{
		alert("Evento no clasificado... (RegistrarGuardarParametros)")
	}
	var modulo = 2;
	var consulta = "";
	//Se ocupa el tipo "clasificar" ya que ocupa los mismos parametros que esta traza
	var url = "Registro?tipo=clasificar&codigo_evento="+codigo_evento+"&modulo="+modulo+"&consulta="+consulta;
	llamadaAjaxTraza(url);
}

function RegistrarRegistroUsuario(evento,error){
	var modulo = 7;
	
	var consulta = "";
	if (error != ""){
		consulta = error ;
	}
	var url = "Registro?tipo=registroUsuario&codigo_evento="+evento+"&modulo="+modulo+"&consulta="+consulta;
	llamadaAjaxTraza(url);
}

function TrazarCompararVersiones(idNorma,idParte,idVersion,idVersionContexto){
	var modulo = 14;//NavegarNorma
	var codigo_evento = 18;
	var consulta = "idVersionContexto("+idVersionContexto+")";
	var identificacion_norma_parte = idNorma+"."+idVersion+"/"+idParte+"."+idVersion
	/* Este registro ocupa los mismos paramtros que el de click en Arbol de Norma, por lo que se ocupa la misma funcion */
	var url = "Registro?tipo=BuscaTextoNavegar&codigo_evento="+codigo_evento+"&modulo="+modulo+"&identificacion_norma_parte="+identificacion_norma_parte+"&consulta="+consulta
	llamadaAjaxTraza(url);	
}
