// JavaScript Document
var xmlDocOtrasLetras;
var mozilla;
var ie;
var arletras;
var arInterprete;
var arTitulo;
var arTexto;
mozilla = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined');
ie = (typeof window.ActiveXObject != 'undefined');
function importaXMLOtrasLetras(fichero,funcion) {
  if (mozilla) {
    xmlDocOtrasLetras = document.implementation.createDocument("", "", null)
    xmlDocOtrasLetras.load(fichero);
    xmlDocOtrasLetras.onload = function()
    {
      funcion();
    }
  } else if (ie) {
    xmlDocOtrasLetras = new ActiveXObject("Microsoft.XMLDOM");
    xmlDocOtrasLetras.async = false;
    xmlDocOtrasLetras.load(fichero);
    if (xmlDocOtrasLetras.readyState == 4) funcion();
  }
  else {
    alert('Tu navegador no puede manejar este script');
    return;
  }
}

function importaOtrasLetrasXML(fichero) {
  importaXMLOtrasLetras(fichero,PaintData);
}

//Con parametros
function importaXMLOtrasLetrasParam(fichero,funcion,grupo,titulo) {
  if (mozilla) {
    xmlDocOtrasLetras = document.implementation.createDocument("", "", null)
    xmlDocOtrasLetras.load(fichero);
    xmlDocOtrasLetras.onload = function()
    {
      funcion(grupo,titulo);
    }
  } else if (ie) {
    xmlDocOtrasLetras = new ActiveXObject("Microsoft.XMLDOM");
    xmlDocOtrasLetras.async = false;
    xmlDocOtrasLetras.load(fichero);
    if (xmlDocOtrasLetras.readyState == 4) funcion(grupo,titulo);
  }
  else {
    alert('Tu navegador no puede manejar este script');
    return;
  }
}

function importaOtrasLetrasXMLParam(fichero,grupo,titulo) {
  importaXMLOtrasLetrasParam(fichero,PaintDataParam,grupo,titulo);
}

//See obtiene el disco seleccionado
function getValueCancion(){
		try{
			var sDisco = document.getElementById("idCanciones").value;
			PaintDataSelected(sDisco);
		}catch(err){
			alert(err.message);
		}	
}

//Pinta los datos del primer disco
function PaintData(){
	try{
		GetInfo();
		PaintAllCanciones();
		PaintDataDiscFirst();
	}catch(err){
		alert(err.message);
	}	
}
//Pinta los datos del primer disco Param
function PaintDataParam(grupo,titulo){
	try{
		GetInfo();
		PaintAllCanciones();
		var oSelect = document.getElementById("idCanciones");
		var arSep = titulo.split('%20');
		var sTit='';
		if(arSep.length>1){//Para el caso de Firefox que mete %20 en los espacios en blanco
			for(var i=0;i<arSep.length;i++){
				sTit = sTit + arSep[i] + ' ';
			}
			sTit = sTit.replace(/^\s*|\s*$/g,"");
			oSelect.value=grupo+"-"+sTit;	
		}else{
			oSelect.value=grupo+"-"+titulo;	
		}
		getValueCancion()
	}catch(err){
		alert(err.message);
	}	
}

//Pinta los datos del disco Seleccionado
function PaintDataSelected(sDisco){
	try{
		var iIndex = GetIndex(sDisco);
		PaintDataDisc(iIndex);
	}catch(err){
		alert(err.message);
	}	
}

//function obtiene todos los discos
function PaintAllCanciones(){
	try{
		var arLetras = xmlDocOtrasLetras.getElementsByTagName("letra");
		var oSelect = document.getElementById("idCanciones");
		var arInterprete = new Array();
		var arCancion = new Array();
		for(var i=0;i<arLetras.length;i++){
			arInterprete.push(arLetras[i].getElementsByTagName("interpretes")[0].firstChild.data);
			arCancion.push(arLetras[i].getElementsByTagName("cancion")[0].firstChild.data);
		}
		for(var i=0;i<arInterprete.length;i++){
			oOption = new Option(arInterprete[i]+" ("+arCancion[i]+")",arInterprete[i]+"-"+arCancion[i]);
			oSelect.options[i]=oOption;
		}		
	}catch(err){
		alert(err.message);
	}
}

//Funciçon que obtiene el indice
function GetIndex(sDisco){
	try{
		var iIndex = 0;
		var arElemSearch = new Array();
		arElemSearch =sDisco.split('-'); 
		for(var i=0;i<arInterprete.length;i++){
			if(arInterprete[i]==arElemSearch[0]){
				if(arTitulo[i]==arElemSearch[1]){
					iIndex=i;
					break;
				}
			}
		}
		return iIndex;	
	}catch(err){
		alert(err.message);
	}
}

//Función que pinta el primero
function PaintDataDiscFirst(){
	try{
		FillElementText("nombreInterpretes",arInterprete[0]);
		FillElementText("tituloCancion",arTitulo[0]);
		FillElementTextBr("letraInedita",arTexto[0]);
	}catch(err){
		alert(err.message);
	}	
}
//Función que pinta 
function PaintDataDisc(iIndex){
	try{
		FillElementText("nombreInterpretes",arInterprete[iIndex]);
		FillElementText("tituloCancion",arTitulo[iIndex]);
		FillElementTextBr("letraInedita",arTexto[iIndex]);
	}catch(err){
		alert(err.message);
	}	
}

//Función que escribe en las máscaras de texto
function FillElementText(sElem,sValue){
	try{
		var sNombreGrupo;
		var oControlMask;
		oControlMask = document.getElementById(sElem);
		oControlMask.innerHTML=sValue;
	}catch(err){
		alert(err.message);
	}
}

//Función que escribe en las máscaras de texto
function FillElementTextBr(sElem,sValue){
	try{
		var sNombreGrupo;
		var oControlMask;
		var sText;
		oControlMask = document.getElementById(sElem);
		sText=sustituir(sValue,"\n","<br>");
		oControlMask.innerHTML=sText;
	}catch(err){
		alert(err.message);
	}
}

//Obtiene Toda la Info de los discos
function GetInfo(){
	try{		
		arInterprete = new Array();
		arTitulo = new Array();
 		arTexto = new Array();
		var arletras = xmlDocOtrasLetras.getElementsByTagName("letra");
		//Se obtienen los datos del primero para ser pintados
		for(var i=0;i<arletras.length;i++){
			arInterprete.push(arletras[i].getElementsByTagName("interpretes")[0].firstChild.data);
			arTitulo.push(arletras[i].getElementsByTagName("cancion")[0].firstChild.data);
			arTexto.push(arletras[i].getElementsByTagName("texto")[0].firstChild.data);
		}
	}catch(err){
		alert(err.message)
	}
}

function sustituir(texto,s1,s2){
	return texto.split(s1).join(s2);
}
