//---------------------------------------------------------------------------------
//						RESULTADO.JS 
//
//		Contiene funciones necesarias para formatear, filtrar,agregar a mapa y 
//	visualizar los resultados obtenidos de la búsqueda.
//	
//---------------------------------------------------------------------------------

var cont = 0;

//----------------------------------------------------------------------------------
//metadato: Reliza la petición para recuperar la info relativa al metadato por 
//		indice y mostrarlo a modo de XML.
//----------------------------------------------------------------------------------
function handleMetadato() {
	switch (http.readyState){
		case 4:
			xmlRes = http.responseXML;
            if (xmlRes === null){                     
            	alert("ERROR: El servidor de Catalogo no se encuentra disponible en estos momentos!!!");            	
            }else{  
				  var url = xmlRes.getElementsByTagName('url').item(0).firstChild.data;
				  window.open(url,"Metadato");																			  				
			}
		break;
		case 0:
			alert("error");
		break;
	}
}

function metadato(indice){
	return function() {
		var peticion = '<?xml version="1.0" encoding="UTF-8"?><csw:GetRecordById service="CSW" version="2.0.1" xmlns="http://www.opengis.net/cat/csw" xmlns:csw="http://www.opengis.net/cat/csw" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">';
		peticion += "<Id>"+indice+"</Id><ElementSetName>summary</ElementSetName></csw:GetRecordById>";
		var parametro_post = 'xml='+peticion;
		var proxyUrl= servidor_local + '/IDESiagpad/proxyMetadata';			
	    http.open("POST",proxyUrl+"?url="+urlCatalogo+"&obtener=true");
   		http.setRequestHeader("content-type","application/x-www-form-urlencoded");
   		http.onreadystatechange = handleMetadato;
   		http.send(parametro_post);
	};
}

//----------------------------------------------------------------------------------
//agregarMetaAMapa: Añade una capa al visor dado su online resource (url) y el 
//				nombre de la capa a cargar (layer). Esta funci�n realiza un 
//				getcapabilities y devuelve el resultado.
//----------------------------------------------------------------------------------
function agregarMetaAMapa(url, layer){	
	var oIframe = document.getElementById('iframeVisor');		
	var oDoc = (oIframe.contentWindow || oIframe.contentDocument);
	if (oDoc.document) oDoc = oDoc.document;
	
	var defaultUrl = oDoc.getElementById("defaultUrl").value;
	if (parseInt(url.indexOf("?")) > 0){//Contiene el caracter ?
		if (parseInt(url.indexOf("?")) != parseInt(parseInt(url.length) - 1)){ //No es el ultimo caracter escrito
			url = url + "&";
		}			
	}else{
		url = url +"?";
	}
	url = url + "SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities";
	oDoc.getElementById("defaultUrl").value=url;	
	//window.frames[1].config.objects.urlInput.async = false;	
	window.frames[1].config.objects.wmsCapsUrlInput.targetModel.async = false;	
	window.frames[1].config.objects.urlInput.submitForm(window.frames[1].config.objects.wmsCapsUrlInput);
	oDoc.getElementById("defaultUrl").value = defaultUrl;
    loadMetaLayer(layer);
}

//----------------------------------------------------------------------------------
//loadMetaLayer: A�ade una capa al visor a partir del resultado del getcapabilities
//				y el nombre de la capa
//----------------------------------------------------------------------------------
function loadMetaLayer(layer){
	//si tiene comas, es que tiene varias capas
	var layer_aux = layer.split(',');	
	if (layer_aux.length > 1){
		for (i=0; i < layer_aux.length; i++){
			window.frames[1].config.objects.editContext.addNodeToModel(layer_aux[i]);			
		}
	}else {				
		window.frames[1].config.objects.editContext.addNodeToModel(layer);			
	}
	window.frames[1].config.objects.reset.select();
}

//----------------------------------------------------------------------------------
//agregarCapas: Se encarga de realizar las llamadas pertinentes para cargar varias
//			capas seleccionadas mediante el input check.
//----------------------------------------------------------------------------------
function agregarCapas(){
	//var tabla = document.getElementById("tablaresMapas");
	var divCapas = document.getElementById("resultadosMapasCuerpo");
	var inputs_checked = false;
	if (divCapas){
		var inputs = divCapas.getElementsByTagName("input");
		if (inputs.length > 0){
			for (var i=0; i < inputs.length; i++){
				var id = inputs.item(i).id;
				if ( (id.indexOf("check") > 0)&&(id.indexOf("_sublayer") == -1 )){
					var mapas_global = false;
					var cab = id.substr(0,id.indexOf("_")+1);
					var nid = id.substr(id.indexOf("_")+1,id.length);
					var name = nid.substr(0,nid.indexOf("_checkbox"));				
					var linkage = document.getElementById(cab+name+"_linkage").value;
					if (document.getElementById(id).checked){
						mapas_global = true;
						inputs_checked = true;
						tabs("visor");										
						agregarMetaAMapa(linkage,name);
					} 
				}else{
					if (mapas_global == false){
						if(id.indexOf("linkage") > 0){
							var ident = id.substr(0,id.indexOf("_"));
							var j = 0;
							while(document.getElementById(ident+"__"+j+"__checkbox_sublayer") != null){
								if(document.getElementById(ident+"__"+j+"__checkbox_sublayer").checked == true){
									inputs_checked = true;
									var nombre = document.getElementById(ident+"__"+j+"__checkbox_sublayer").value;
									tabs("visor");
									var linkage = document.getElementById(id).value;						
									agregarMetaAMapa(linkage,nombre);
								}
								j++;
							}
						}
					}			
				}//if ( (id.indexOf("check") > 0)&&(id.indexOf("_sublayer") == -1 )){
			}//for (i=0; i < inputs.length; i++){
			if (!inputs_checked)
				alertaError('Por favor, selecciona un mapa o capa para agregar al visor.');
		}//if (inputs.length > 0){
		else alertaError('No se encontraron resultados, por favor, vuelva a repetir la búsqueda.');
	}//if (divCapas){
	else alertaError('No se encontraron resultados, por favor, vuelva a repetir la búsqueda.');
} 
