// JavaScript Document
var xmlDocBusqueda;
var mozilla;
var ie;
var arResults;
var iIndexPagina = 0;
var iNoticiasPagina = 12;
var iLinksByLine = 20;
var sPathPag="noticiaSearch.htm";
//Resultados de la búsqueda
var sNoDatosBusqueda = "No se ha encontrado ninguna noticia que contenga el texto ";
var sUnDato = "Se encontró una noticia que contiene el texto ";
var sRes1 = "Se han encontrado ";
var sRes2 = " noticias que contienen el texto ";
var sRes3 = " (noticias del ";
var sRes4 = " al ";
var sRes5 = ")";
var sRes2mes = " noticias ";
//Mapeo los meses
var arMonths = new Array(12);
arMonths[0]="Enero";
arMonths[1]="Febrero";
arMonths[2]="Marzo";
arMonths[3]="Abril";
arMonths[4]="Mayo";
arMonths[5]="Junio";
arMonths[6]="Julio";
arMonths[7]="Agosto";
arMonths[8]="Septiembre";
arMonths[9]="Octubre";
arMonths[10]="Noviembre";
arMonths[11]="Diciembre";
//MapeoMesFichero
var arMonthsFile = new Array(12);
arMonthsFile[0]="01";
arMonthsFile[1]="02";
arMonthsFile[2]="03";
arMonthsFile[3]="04";
arMonthsFile[4]="05";
arMonthsFile[5]="06";
arMonthsFile[6]="07";
arMonthsFile[7]="08";
arMonthsFile[8]="09";
arMonthsFile[9]="10";
arMonthsFile[10]="11";
arMonthsFile[11]="12";

mozilla = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined');
ie = (typeof window.ActiveXObject != 'undefined');

var sMonthStart=6
var sYearStart=2008
var sSumStart;
var now = new Date(); 
var iYear = now.getYear(); 
var iMonth  = now.getMonth();
var arMeses = new Array();
var sFechaActual = arMonthsFile[iMonth]+iYear;
var iYearFirefox = parseInt(iYear)+parseInt(1900)
var sFechaActualFirefox = arMonthsFile[iMonth]+iYearFirefox;
//Variables que guardan la búsqueda
var arData = new Array();
var arRutaNoticia = new Array();
var arTituloNoticia = new Array();
var arTextoNoticia= new Array();
var arTextoCompleto= new Array();
var arNombreFichero= new Array();
var sMesesSearch = new Array();
var sTextSearch;

//función que lee el Xml

function importaXMLNoticias(fichero,funcion) {
  if (mozilla) {
    xmlDocBusqueda = document.implementation.createDocument("", "", null)
    xmlDocBusqueda.load(fichero);
    xmlDocBusqueda.onload = function()
    {
      funcion(fichero);
    }
  } else if (ie) {
    xmlDocBusqueda = new ActiveXObject("Microsoft.XMLDOM");
    xmlDocBusqueda.async = false;
    xmlDocBusqueda.load(fichero);
    if (xmlDocBusqueda.readyState == 4) funcion(fichero);
  }
  else {
    alert('Tu navegador no puede manejar este script');
    return;
  }
}

function importaNoticiasXML(fichero) {
 	importaXMLNoticias(fichero,GetDataToArray);
}

function GetDataToArray(fichero){
	try{
		//var arFileAux = fichero.split("/");
		//var iLen = arFileAux.length-1;
		var sFileAux = fichero;
		sTextSearch=document.getElementById("cadenaBusqueda").value;
		var bNoticiaCompleta = false;
		var arDataNoticias = new Array();
		arDataNoticias = xmlDocBusqueda.getElementsByTagName("noticia");
		for(var i=0;i<arDataNoticias.length;i++){
			//Se mira si vamos a hacer enlace a ruta completa o no
			if (mozilla) {
				if(parseInt(arDataNoticias[i].childNodes.length)==parseInt(9)){
					bNoticiaCompleta = true;
				}else{
					bNoticiaCompleta = false;
				}
			} else if (ie) {
				if(parseInt(arDataNoticias[i].childNodes.length)==parseInt(4)){
					bNoticiaCompleta = true;
				}else{
					bNoticiaCompleta = false;
				}
			}else {
				alert('Tu navegador no puede manejar este script');
				return;
			}
			var sRutaNoticia="";
			var sTituloNoticia="";
			var sTextoNoticia="";
			var sTextoCompleto="";
			for(j=0;j<arDataNoticias[i].childNodes.length;j++){
				sNameNode=arDataNoticias[i].childNodes[j].nodeName;
				switch(sNameNode){
					case "rutaNoticia":
						sRutaNoticia=arDataNoticias[i].childNodes[j].childNodes[0].nodeValue;
						break;
					case "tituloNoticia":
						sTituloNoticia=arDataNoticias[i].childNodes[j].childNodes[0].nodeValue;
						break;
					case "textoNoticia":
						sTextoNoticia=arDataNoticias[i].childNodes[j].childNodes[0].nodeValue;
						break;
					case "textoCompleto":
						sTextoCompleto=arDataNoticias[i].childNodes[j].childNodes[0].nodeValue;
						break;
				}
				//Se valida en la ultima iteración
				if(j==arDataNoticias[i].childNodes.length-1){
					if((sRutaNoticia.toUpperCase().indexOf(sTextSearch.toUpperCase())>-1)||(sTituloNoticia.toUpperCase().indexOf(sTextSearch.toUpperCase())>-1)||(sTextoNoticia.toUpperCase().indexOf(sTextSearch.toUpperCase())>-1)||(sTextoCompleto.toUpperCase().indexOf(sTextSearch.toUpperCase())>-1)){
						document.getElementById("idSearch").value = document.getElementById("idSearch").value + "'" + sTextSearch + "'" + sTituloNoticia + "'" + sTextoNoticia + "'" + sTextoCompleto + "@@";
						arRutaNoticia.push(sRutaNoticia);
						arTituloNoticia.push(sTituloNoticia);
						arTextoNoticia.push(sTextoNoticia);
						if(ie){
							if(j<3){
								arTextoCompleto.push("");
								arNombreFichero.push("");
							}else{
								arTextoCompleto.push(sTextoCompleto);
								arNombreFichero.push(sFileAux);
							}		
						}else{ 
							if (mozilla) {
								if(j<8){
									arTextoCompleto.push("");
									arNombreFichero.push("");
								}else{
									arTextoCompleto.push(sTextoCompleto);
									arNombreFichero.push(sFileAux);
								}
							}else {
								alert('Tu navegador no puede manejar este script');
							return;
							}
						}
					}
				}
			}
		}
	}catch(err){
		alert(err.message);
	}	
}

//Funciones para obtener los datos del formulario de filtro
function getMesesArchivados(){
    //Indica el mes de inicio de la web (poner 6 de julio despues del test)
   var sumMesActual
   if(mozilla){
	   sumMesActual = ((parseInt(iYear)+parseInt(1900)) * parseInt(12))+ parseInt(iMonth);
	   sSumStart = (parseInt(sYearStart)* parseInt(12)) + parseInt(sMonthStart);	
   }else{
	   sumMesActual = (parseInt(iYear) * parseInt(12))+ parseInt(iMonth);
	   sSumStart = (parseInt(sYearStart)* parseInt(12)) + parseInt(sMonthStart);	
   }
   var arNumMonth = new Array();
   var arNumYear = new Array();
   var iIndexMonth = sMonthStart;
   var iIndexYear = sYearStart;
   while(parseInt(sSumStart)<parseInt(sumMesActual)){
       	arNumMonth.push(iIndexMonth);
		arNumYear.push(iIndexYear);
		if(iIndexMonth==11){
			iIndexMonth = 0;
			iIndexYear = parseInt(iIndexYear) + 1;
		}else{
			iIndexMonth = parseInt(iIndexMonth) + 1;
		}
		sSumStart = parseInt(sSumStart) + parseInt(1);
   }
   //Se añade el mes actual
   arNumMonth.push(iIndexMonth);
   arNumYear.push(iIndexYear);
   arMeses.push(arNumMonth);
   arMeses.push(arNumYear);
   return arMeses;
}

function FillMaskSearch(){
	var arDataFechas = new Array();
	var arDataMeses = new Array();
	var arDataAnios = new Array();
	var sKey;
	var sValue;
	var sMonthAux;
	var sYearAux;
	arDataFechas = getMesesArchivados();
	arDataMeses = arDataFechas[0];
	arDataAnios = arDataFechas[1];
	var oSelect = document.getElementById("mesesSelected");
	//oSelect.options[0] = new Option('TODOS','0');
	for(var i=0;i<arDataMeses.length;i++){
		sMonthAux = arDataMeses[i];
		sYearAux = arDataAnios[i];
		sKey = sMonthAux + '|' + sYearAux;
		sValue = arMonths[sMonthAux] + ' ' + sYearAux;
		oSelect.options[i] = new Option(sValue,sKey);
	}	
}

//Se ha pulsado buscar y se comienza a realizar las acciones
function LaunchSearch(){
	document.getElementById("divResultados").innerHTML = "";
	document.getElementById("divNoticias").innerHTML = "";
	document.getElementById("divPaginado").innerHTML = "";
	var odivNot = document.getElementById("divNoticias");
	odivNot.innerHTML="";
    //Inicializo los arrays de la búsqueda anterios
	arRutaNoticia = new Array();
    arTituloNoticia = new Array();
    arTextoNoticia= new Array();
    arTextoCompleto= new Array();
	arNombreFichero = new Array();
	//Obtenemos los filtros de la búsqueda
	var arDataSearch = new Array();
	arDataSearch = getDataFilter();
	sMesesSearch = arDataSearch[0];
	sTextSearch = arDataSearch[1];
	var bSearch = SelectFilter(sMesesSearch,sTextSearch);
	var arNamesFiles;
	if(bSearch){
		//Se obtiene los nombres de ficheros que se cargarán
		arNamesFiles = getFileToSearch(sMesesSearch);
		//Se obtiene los datos
		getDataSearch(sMesesSearch,sTextSearch);
		
	}else{
		alert("Debe introducir un texto para buscar o seleccionar al menos un mes");
	}
}

//funcion que lee del formulario de filtro para capturar los valores para realizar la busqueda
function getDataFilter(){
	var oSelect = document.getElementById("mesesSelected");
	var oText = document.getElementById("cadenaBusqueda");
	var iNumber = oSelect.length
	var sMeses = "";
	var sText = "";
	var arData = new Array();
	//Se busca la selección de meses
	for(var i=0;i<iNumber;i++){
		if(oSelect.options[i].selected){
			sMeses = sMeses + oSelect.options[i].value + "@";
		}
	}
	//Se obtiene el texto
	sText = oText.value;
	arData.push(sMeses);
	arData.push(sText);
	return arData;
}

//funcion que comprueba si al menos selecciono un filtro
function SelectFilter(sMesesSearch,sTextSearch) {
		var bRes = true;
		if((sMesesSearch=="")&&(sTextSearch=="")){
			bRes = false;
		}
		return bRes;
	}
	
//funcion que contiene los nombres de los ficheros seleccionados
function getFileToSearch(sMesesSearch){
		var arNames = new Array();
		var arM = new Array();
		var arY = new Array();
		var arArro = new Array();
		var arAux = new Array();
		if(sMesesSearch==""){
			arM = arMeses[0];
			arY = arMeses[1];
			for(var i=0;i<arM.length;i++){
				sT = "Noticias"+arMonthsFile[arM[i]]+arY[i]+".xml";
				arNames.push(sT);
			}
		}else{
			arArro = sMesesSearch.split('@');
			for(var i=0;i<arArro.length-1;i++){
				arAux = arArro[i].split('|');
				sT = "Noticias"+arMonthsFile[arAux[0]]+arAux[1]+".xml";
				arNames.push(sT);				
			}
		}
		return arNames;
	}	


//funcion que obtiene los datos que coincidan con los filtros seleccionados
function getDataSearch(sMesesSearch,sTextSearch){
		var arNamesFile = getFileToSearch(sMesesSearch);
		//Buscamos si hay texto por cada fichero seleccionado se captura el fichero y se van comparando noticia a noticia...si tiene esa entrada se queda guardado en memoria en una estructura de Array
		for(var i=0;i<arNamesFile.length;i++){
			if(mozilla){
				if("Noticias"+sFechaActualFirefox+".xml"==arNamesFile[i]){
					importaNoticiasXML("Xml/agendaNoticias.xml");
				}else{
					importaNoticiasXML("Archivos/"+arNamesFile[i]);
				}
			}else{
				if(ie){
					if("Noticias"+sFechaActual+".xml"==arNamesFile[i]){
						importaNoticiasXML("Xml/agendaNoticias.xml");
					}else{
						importaNoticiasXML("Archivos/"+arNamesFile[i]);
					}					
				}
			}
			//En el caso de ser el útimo mes se carga el que está en el xml
		}
		//Se obtiene los resultados de la búsqueda (HACERLO PARA MAYUSCULAS MINUSCULAS)
		if(mozilla){
			var sAux = document.getElementById("idSearch").value;
			alert("Busqueda generada");
		}
		if(arRutaNoticia.length==0){
			alert("No se encontro ninguna noticia con ese texto");
		}else{
			PaintDataNoticiasPaginadas(0);
		}
	}
	
function PaintDataNoticiasPaginadas(iIndex){
		try{
			var sNameNode;
			var sTextNode;
			var sRutaNoticia="#"
			var sTituloNoticia="";
			var sTextCompleto="";
			var sFileName="";
			var arTc = new Array();
			var iNumNotice;
			var iIni = parseInt(iIndex) * parseInt(iNoticiasPagina);
			var iFin = (parseInt(iIndex) + parseInt(1)) * parseInt(iNoticiasPagina);
			iNumNotice = arRutaNoticia.length;
			if(parseInt(iFin)>parseInt(iNumNotice)){
				iFin=iNumNotice;
			}
			//Pintamos el numero de resultados obtenidos
			PaintResultadoBusqueda(iNumNotice,iIni,iFin);
			if (mozilla) {
				var oDivNot = document.getElementById("divNoticias");
				oDivNot.appendChild(document.createElement("br"));	
			} 
			for(i=iIni;i<iFin;i++){
				sTextNode = arTextoNoticia[i];
				sTituloNoticia = arTituloNoticia[i];
				sRutaNoticia = arRutaNoticia[i];
				arTc = GetBlocks(arTextoCompleto[i])
				sFileName = arNombreFichero[i];
				WriteNoticia(sTextNode,sTituloNoticia,sRutaNoticia,i,arTc,sFileName)
			}
			//Pinta el paginado
			var iNumPag = parseInt(arRutaNoticia.length)/parseInt(iNoticiasPagina)
			var iLinksPag = Math.floor(iNumPag);
			var bMultiplo;
			if((parseInt(arRutaNoticia.length)) % (parseInt(iNoticiasPagina))==0){
			bMultiplo = true;
			}else{
				bMultiplo = false;
			}
			PaintPaginado(iLinksPag,bMultiplo);
		}catch(err){
			alert(err.message);
		}
	}

function PaintResultadoBusqueda (iNumRes,iIni,iFin){
	try{
		var oDivResult = document.getElementById("divResultados");
		var iNumIni = parseInt(iIni)+parseInt(1);
		if(iNumRes=="0"){
			oDivResult.innerHTML=sNoDatosBusqueda; 
		}else{
			if(iNumRes=="1"){
				oDivResult.innerHTML=sUnDato+"\""+sTextSearch+"\""; 
			}else{
				if(sTextSearch==""){
					oDivResult.innerHTML=sRes1+iNumRes+sRes2mes+sRes3+iNumIni+sRes4+iFin+sRes5;
				}else{
					oDivResult.innerHTML=sRes1+iNumRes+sRes2+"\""+sTextSearch+"\""+sRes3+iNumIni+sRes4+iFin+sRes5; 		
				}
			}
		}
	}catch(err){
		
	}	
}
	
function WriteNoticia(sTextNode,sTituloNoticia,sRutaNoticia,index,arTC,sFileName){
		try{
			var odivNot = document.getElementById("divNoticias");
			//Div t
			var divT = odivNot.appendChild(document.createElement("div"));
			divT.className='t';
			//Div b
			var divB = divT.appendChild(document.createElement("div"));
			divB.className='b';
			//Div l
			var divL = divB.appendChild(document.createElement("div"));
			divL.className='l';		
			//Div r
			var divR = divL.appendChild(document.createElement("div"));
			divR.className='r';		
			//Div bl
			var divBl = divR.appendChild(document.createElement("div"));
			divBl.className='bl';
			//Div br
			var divBr = divBl.appendChild(document.createElement("div"));
			divBr.className='br';
			//Div tl
			var divTl = divBr.appendChild(document.createElement("div"));
			divTl.className='tl';		
			//Div tr
			var divTr = divTl.appendChild(document.createElement("div"));
			divTr.className='tr';					
			//Se crea una tabla con 3 filas
			var oTable = divTr.appendChild(document.createElement("table"));
			var oTbody = oTable.appendChild(document.createElement("tbody"));
			var oTr;
			var oTd;
			oTr = oTbody.appendChild(document.createElement("tr"));
			oTd = oTr.appendChild(document.createElement("td"));
			if (mozilla) {
				oTd.setAttribute("class","titNoticiaLinkSearch");			
			} else if (ie) {
				oTd.setAttribute("className","titNoticiaLinkSearch");
			}else {
				alert('Tu navegador no puede manejar este script');
				return;
			}	
			//Se crea el título de la noticia
			var oAlink = oTd.appendChild(document.createElement("a"));
			oAlink.setAttribute("href",sRutaNoticia);
			oAlink.setAttribute("target", "_blank");
			oAlink.appendChild(document.createTextNode(sTituloNoticia));
			oTr = oTbody.appendChild(document.createElement("tr"));
			oTd = oTr.appendChild(document.createElement("td"));
			if (mozilla) {
				oTd.setAttribute("class","titNoticiaLinkSearch");			
			} else if (ie) {
				oTd.setAttribute("className","titNoticiaLinkSearch");
			}else {
				alert('Tu navegador no puede manejar este script');
				return;
			}	
			//H3 con el texto de la noticia
			var oH3;
			var arBlock = new Array();
			arBlock = GetBlocks(sTextNode);
			var sTextToWrite;
			if(arBlock.length>0){
				for(var i=0;i<arBlock.length-1;i++){
					oH3 = oTd.appendChild(document.createElement("h3"));
					sTextToWrite=sustituir(arBlock[i],"euros","€");
					oH3.appendChild(document.createTextNode(sTextToWrite));
					//divTitNoticias.appendChild(document.createElement("br"));
				}
			}else{
				oH3 = oTd.appendChild(document.createElement("h3"));
				sTextToWrite=sustituir(arBlock[i],"euros","€");
				oH3.appendChild(document.createTextNode(sTextToWrite));
			}
			oTr = oTbody.appendChild(document.createElement("tr"));
			oTd = oTr.appendChild(document.createElement("td"));
			if (mozilla) {
				oTd.setAttribute("class","tdlupaSearch");			
			} else if (ie) {
				oTd.setAttribute("className","tdlupaSearch");
			}else {
				alert('Tu navegador no puede manejar este script');
				return;
			}	
			//Se pinta el ampliar
			if(arTC!=""){
				var oAlinkNoticia = oTd.appendChild(document.createElement("a"));
				oAlinkNoticia.setAttribute("href",sPathPag+"?ruta="+sFileName+"&titulo="+sTituloNoticia);
				oAlinkNoticia.setAttribute("target", "_blank");
				var oTextAmpliar = oAlinkNoticia.appendChild(document.createTextNode("ampliar..."));
			}
			var divEspacio = document.createElement("div");
			divEspacio.className='espacio';
			odivNot.appendChild(divEspacio);
		}catch(err){
			alert(err.message);
		}
	}	
	
	

//funcion que pinte los resultados del array correspondiente a ese index
//Funcion que pinta los enlaces de paginado para las noticias
function PaintPaginado(iLinksPag,bMultiplo){
		try{
			var oDivpag =document.getElementById("divPaginado");
			var oTable = oDivpag.appendChild(document.createElement("table"));
			var oTbody=oTable.appendChild(document.createElement("tbody"));
			var oTr = oTbody.appendChild(document.createElement("tr"));
			var oTd;
			var oLink;
			var oText;
			var oLink;
			var iTextLink;
			var iMax = iLinksPag;
			if(bMultiplo){
				iMax = iMax - 1;
			}
			
			for(var i=0;i<=iMax;i++){
				if(i!=0){
					if((parseInt(i)%parseInt(iLinksByLine))==0){
						oTr = oTbody.appendChild(document.createElement("tr"));
					}
				}
				oTd = oTr.appendChild(document.createElement("td"));
				if (mozilla) {
					oTd.setAttribute("class","tdLinksPaginas");
					//oTd.setAttribute("idLink",i);
				} else if (ie) {
					oTd.setAttribute("className","tdLinksPaginas");
					//oTd.setAttribute("idLink",i);
				}else {
					alert('Tu navegador no puede manejar este script');
					return;
				}
				oLink = oTd.appendChild(document.createElement("a"));
				oLink.setAttribute("idLink",i);
				oLink.setAttribute("href","#_ancla");
				//Se añaden los eventos
				if(ie){
					oLink.attachEvent("onclick",ChangePage);
				}else{ 
					 if (mozilla) {
						oLink.onclick=new function(){
							oLink.addEventListener("click",ChangePageFirefox, false);
						}
					  }else {
						alert('Tu navegador no puede manejar este script');
						return;
					  }
			    }
				iTextLink = parseInt(i) + parseInt(1);
				oText = oLink.appendChild(document.createTextNode(iTextLink));
			}
		}catch(err){
			alert(err.message);
		}
	}
	
function ChangePage(){
	try{
	document.getElementById("divResultados").innerHTML = "";
	document.getElementById("divNoticias").innerHTML = "";
	document.getElementById("divPaginado").innerHTML = "";
		var iLink = event.srcElement.getAttribute("idLink");
		PaintDataNoticiasPaginadas(iLink);
	}catch(err){
		alert(err.message);
	}	
}

function ChangePageFirefox(){
	try{
	document.getElementById("divResultados").innerHTML = "";
	document.getElementById("divNoticias").innerHTML = "";
	document.getElementById("divPaginado").innerHTML = "";
		var iText = this.innerHTML;
		var iLink;
		iLink = parseInt(iText) - parseInt(1);
		PaintDataNoticiasPaginadas(iLink);
	}catch(err){
		alert(err.message);
	}
}		
	
function GetBlocks(texto){
	try{
		var arBloques = new Array();
		arBloques  =texto.split("\n");
		return arBloques;
	}catch(err){
		alert(err.message);
	}
}

function sustituir(texto,s1,s2){
	return texto.split(s1).join(s2);
}	

//Falta pasar en vez de el index....el fichero en el que esta y el index del fichero a la página noticias, para que muestre la que es

