var labels = new Array();
var first=-90;
var firstT=-90;

 /**
 * Quita el color de fondo negro al contenido principal.
 *
 *
 *
 * @returns void
 * @type void
 * @param {}
 * @author DGSCA
 */
function init(){
    jQuery('#maincontent').removeClass("fondoThumb");
}


/*|
 *
 *
 */
var Ajax;
if (Ajax && (Ajax != null)) {
	
    Ajax.Responders.register({
        onCreate: function() {
            if(jQuery('spinner') && Ajax.activeRequestCount>0)
                Effect.Appear('spinner',{
                    duration:0.5,
                    queue:'end'
                });
        },
        onComplete: function() {
            if(jQuery('spinner') && Ajax.activeRequestCount==0)
                Effect.Fade('spinner',{
                    duration:0.5,
                    queue:'end'
                });
        }
    });
}



//---------------- Jav-funciones de Ajax Javier -------------------------------------------
// se requiere jquery-1.2.4.js
//forwardGetAjax(path: URL la cual quieres mostrar,
//idDiv: id del div donde se mostrara la pag )
//Ejem. javascript:forwardGetAjax('http://www.descargacultura.unam.mx/comments/create?idArchive=86','#Result' )


/**
 * Obtiene la pagina en la direcci&oacute;n <i>url</i> mediante una petición http get e inserta el contenido en el elemento
 * DOM con identificador <i>id</i>
 * p.e. javascript:forwardGetAjax('http://www.descargacultura.unam.mx/comments/create?idArchive=86','#Result' )
 * @returns void
 * @type void
 * @param {String} path URL de la p&aacute;gina que se quiere mostrar
 * @param {id} idDiv id de la etiqueta &lt;div> donde se mostrara la p&aacute;gina a cargar
 * @see #forwardGetAjaxImgError
 * @author DGSCA
 */


function forwardGetAjax(path, idDiv ){
    forwardGetAjaxImgError(path, idDiv, site+'/images/spinner.gif','Error');
}
// se requiere jquery-1.2.4.js
//forwardGetAjaxImgError(path: URL la cual se mostrara,
//idDiv: id del div donde se mostrara la pag,
//imgLoad: direccion de la imagen de espera http://www.descargacultura.unam.mx/images/spinner.gif,
//messerror: mensaje de error)


/** 
 * Obtiene la pagina en la direcci&oacute;n <i>url</i> mediante una petición http get e inserta el contenido en el elemento
 * DOM con identificador <i>id</i>. Mientras la petición se realiza el elemento DOM con identificador <i>id</i> mostrar&aacute; la imagen
 * <i>imgLoad</i>. En caso de error se desplegará el mensaje <i>messerror</i>.
 * @returns void
 * @type void
 * @param {String} path URL de la p&aacute;gina que se quiere mostrar
 * @param {id} idDiv id de la etiqueta &lt;div> donde se mostrara la p&aacute;gina a cargar
 * @param {String} imgLoad direcci&oacute;n de la imagen de &quot;cargando o loading&quot;, por defecto http://www.descargacultura.unam.mx/images/spinner.gif
 * @param {String} messerror mensaje en caso de que ocurra un error
 * @author DGSCA
 */
function forwardGetAjaxImgError(path, idDiv, imgLoad, messerror){
    init();
    jQuery.ajax({
        type: "GET",
        url: path,
        cache: false,
        beforeSend: function(){
            jQuery(idDiv).html("<img src='"+imgLoad+"' width=30 height=30/>Cargando ...");
        },
        success: function(html){
            jQuery(idDiv).html(html);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            alert('error'+errorThrown);
            jQuery(idDiv).html(messerror);
        }

    });
}
// se requiere jquery-1.2.4.js y jqueryform.js
//forwardPostAjax(idForm: id del formulario enviado,
//idDiv: id del div donde se mostrara la pag,
//idButton: id del boton de submit, para no tener problemas de envios dobles se deshabilita momentaneamente)
// Ejem.<input id="sapo" type="submit" value="Create" onclick="forwardPostAjax('#forma', '#Result', 'sapo');"/


/**
 * Esta funci&oacute;n env&iacute;a texto de un formulario v&iacute;a Ajax, a trav&eacute;s de un bot&oacute;n de dicho formulario. <br>Para no tener problemas de env&iacute;os dobles se deshabilita moment&aacute;neamente el bot&oacute;n.
 * @returns void
 * @type void
 * @param {String} idForm id del formulario que se quiere enviar
 * @param {id} idDiv id de la etiqueta &lt;div> donde se mostrara la p&aacute;gina a cargar
 * @param {id} idButton id del bot&oacute;n que se utiliza para enviar el texto del formulario.
 * @author DGSCA
 */


function forwardPostAjax(idForm, idDiv, idButton){
    init();
    //forwardPostAjaxExtend(idForm, idDiv, idButton, 'divImgLoadForm', 'http://www.descargacultura.unam.mx/images/spinner.gif', 'Error')
    idDivImgLoadForm='divImgLoadForm';
    srcImgLoad=site+'/images/spinner.gif';
    messError='Error';
    var imagen = document.createElement('img');
    imagen.setAttribute('src',srcImgLoad);
    document.getElementById(idDivImgLoadForm).appendChild(imagen);

    var options = {
        type : "POST",
        target: idDiv,
        beforeSubmit:function(html){
            document.getElementById(idButton).style.visibility='hidden';
        },
        success:function(html) {
            jQuery(idDiv).html(html);
            document.getElementById(idDivImgLoadForm).removeChild(imagen);
        },
        error:function() {
            alert(messError);
            document.getElementById(idDivImgLoadForm).removeChild(imagen);
            document.getElementById(idButton).style.visibility='visible';
        },
        complete:function(html) {
        //    alert("termina "+html);
        }
    };

    jQuery(idForm).ajaxForm(options);
}

// se requiere jquery-1.2.4.js y jqueryform.js
//forwardPostAjax(idForm: id del formulario enviado,
//idDiv: id del div donde se mostrara la pag,
//idButton: id del boton de submit, para no tener problemas de envios dobles se deshabilita momentaneamente
//idDivImgLoadForm: id del div donde se mostrara el spinner
//srcImgLoad: source del spinner
//messError: mensaje de error que se mostrara con un alert al ocurrir un error
//)

/**
 * Esta funci&oacute;n env&iacute;a texto de un formulario v&iacute;a Ajax, a trav&eacute;s de un bot&oacute;n de dicho formulario. <br>Para no tener problemas de env&iacute;os dobles se deshabilita moment&aacute;neamente el bot&oacute;n.
 * @returns void
 * @type void
 * @param {String} idForm id del formulario que se quiere enviar
 * @param {id} idDiv id de la etiqueta &lt;div> donde se mostrara la p&aacute;gina a cargar
 * @param {id} idButton id del bot&oacute;n que se utiliza para enviar el texto del formulario
 * @param {id} idDivImgLoadForm id de la etiqueta &lt;div> donde se mostrara la imagen de &quot;cargando o loading&quot;, llamada spinner
 * @param {String} srcImgLoad direcci&oacute;n de la imagen de &quot;cargando o loading&quot;, por defecto http://www.descargacultura.unam.mx/images/spinner.gif
 * @param {String} messError mensaje de error que se mostrara en una ventana de alerta, si ocurre un error
 * @author DGSCA
 */
function forwardPostAjaxExtend(idForm, idDiv, idButton, idDivImgLoadForm, srcImgLoad, messError){
    //init();
    var imagen = document.createElement('img');
    imagen.setAttribute('src', srcImgLoad);
    document.getElementById(idDivImgLoadForm).appendChild(imagen);

    var options = {
        type : "POST",
        target: idDiv,
        beforeSubmit:function(html){
            document.getElementById(idButton).style.visibility='hidden';
        },
        success:function(html) {
            jQuery(idDiv).html(html);
        },
        error:function(html) {
            alert(messError);
            document.getElementById(idDivImgLoadForm).removeChild(imagen);
            document.getElementById(idButton).style.visibility='visible';
        }
    };

    jQuery(idForm).ajaxForm(options);
}

/**
 * Funci&oacute;n (correspondiente al formulario superior izquierdo de b&uacute;squeda) que prepara la presentaci&oacute;n del men&uacute; de resultados.<br>
 * Elimina el contenido de la etiqueta &lt;div> donde se muestra el men&uacute; de las categor&iacute;as y de la etiqueta &lt;td> donde se muestran los principales contenidos.<br>
 * Reajusta el ancho de la etiqueta &lt;td> izquierda, donde se muestra el men&uacute; de resultados de la b&uacute;squeda, ya que cuando la etiqueta &lt;td> derecha est&aacute; mostrado contenido, la etiqueta &lt;td> izquierda tiene un ancho de cero.<br>
 * Manda a ejecutar la funci&oacute;n: 'forwardPostAjaxLogin(idForm, idDiv, idButton)'.<br><br>
 *
 * p.e. onclick="srch('#menuCategorias','#maincontent','#srchForm', '#leftmenu', 'btnSrch')"<br>
 * @returns void
 * @type void
 * @param {id} idmenu Id del men&uacute; de las categor&iacute;as
 * @param {id} idTd Id de la etiqueta &lt;td> que carga el contenido principal
 * @param {id} idForm Id del formulario de b&uacute;squeda que ser&aacute; enviado.
 * @param {id} idDiv Id de la etiqueta &lt;div> izquierda que contiene el men&uacute; que presenta el resultado de la b&uacute;squeda
 * @param {id} idButton Id del bot&oacute;n del formulario, para ocultarlo e impedir dobles env&iacute;os de informaci&oacute;n.
 * @see  #forwardPostAjaxLogin
 * @author DGSCA
 */
function srch(idmenu,idTd,idForm, idDiv, idButton){
    init();
    if(idTd == null || idTd == null || idForm == null || idDiv == null || idButton == null){
        alert("error en los parametros (srch) ");
    }
    jQuery(idmenu).html('');
    jQuery(idDiv).attr('width','16%');
    jQuery(idTd).html('');
    forwardPostAjaxLogin(idForm, idDiv, idButton);
}

/**
 * Esta funci&oacute;n env&iacute;a el texto correspondiente al formulario de b&uacute;squeda (ubicado en la parte superior izquierda) v&iacute;a Ajax, a trav&eacute;s del bot&oacute;n de dicho formulario. <br>
 * Debe existir una etiqueta &lt;div> como se muestra '&lt;div id="divImgLoadForm" width="10px"&gt;&lt;/div&gt;', para insertar la imagen de &quot;cargando o loading&quot;, tambi&eacute;n llamada spinner.<br>
 * Oculta y aparece el bot&oacute;n de b&uacute;squeda evitando doble env&iacute;o de informaci&oacute;n.<br><br>
 *
 * p.e.  forwardPostAjaxLogin("#idForm", "#idDiv", "idButton");
 * 
 * @returns void
 * @type void
 * @param {id} idForm Id del formulario de b&uacute;squeda que ser&aacute; enviado.
 * @param {id} idDiv Id de la etiqueta &lt;div> izquierda que contendr&aacute; el men&uacute; que presenta el resultado de la b&uacute;squeda
 * @param {id} idButton Id del bot&oacute;n del formulario de b&uacute;squeda, se usa para ocultar el bot&oacute;n e impedir doble env&iacute;o de informaci&oacute;n.
 * @author DGSCA
 */
function forwardPostAjaxLogin(idForm, idDiv, idButton){
    init();   
    retorno = true;
    idDivImgLoadForm='divImgLoadForm';
    srcImgLoad=site+'/images/spinner.gif';
    messError='Error';
    var imagen = document.createElement('img');
    imagen.setAttribute('src',srcImgLoad);
    document.getElementById(idDivImgLoadForm).appendChild(imagen);
    //alert(jQuery('#divImgLoadForm').html());
    var options = {
        type : "POST",
        target: idDiv,
        beforeSubmit:function(html){            
            document.getElementById(idButton).style.visibility='hidden';
        },
        success:function(html) {            
            if(html.indexOf('error') > 0 ) {
                jQuery(idDiv).html("Error Intenta nuevamente");
            }
            document.getElementById(idButton).style.visibility='visible';
        },
        error:function() {
            alert(messError);
            document.getElementById(idDivImgLoadForm).removeChild(imagen);
            document.getElementById(idButton).style.visibility='visible';        
        }
    };    
    jQuery(idForm).ajaxForm(options);
    jQuery('#divImgLoadForm').html('')
}


//---------------- Jav-funciones de Ajax Javier -------------------------------------------


//---------------- MMC ------------


/**
 * Activa el bot&oacute;n de registro cuando los t&eacute;rminos de uso han sido le&iacute;dos y aceptados (la activaci&oacute;n del bot&oacute;n de env&iacute;o de datos para el registro, tambi&eacute;n depende del llenado de los campos obligatorios).<br><br>
 *
 * p.e. verifyLicence('#licencia','#btnEnvFrmUser');
 *
 * @returns void
 * @type void
 * @param {id} idcheck Id del checkbox que indica la lectura y aceptaci&oacute;n de los t&eacute;rminos de uso.
 * @param {id} idbtn Id del bot&oacute;n que se activa.
 * @author DGSCA
 */
function verifyLicence(idcheck ,idbtn){
    init();
    if(idcheck == null || idbtn ==null){
        alert('id nulo');
    }
    if(jQuery(idcheck).attr('checked')== null  || jQuery(idcheck).attr('checked') == false){
        jQuery(idbtn).attr('disabled','disabled');

    }else if(jQuery(idcheck).attr('checked').toString()=='true'){
        jQuery(idbtn).removeAttr('disabled');
    }
}

/**
 * Carga el submen&uacute; de la opci&oacute;n 'categor&iacute;as', del men&uacute; principal.<br><br>
 *
 * p.e. showCategories('#menuCategorias','#leftmenu','#maincontent','${request.getContextPath()}/app1/listcategories')
 *
 * @returns void
 * @type void
 * @param {id} idcategories Id de la etiqueta &lt;div> donde se mostrara el men&uacute; de categorias.
 * @param {id} idleft Id de la etiqueta &lt;td> izquierda, donde se muestra el men&uacute; de resultados de la b&uacute;squeda.
 * @param {id} idright Id de la etiqueta &lt;td> que a su vez contiene la etiqueta &lt;div> del contenido principal.
 * @param {String} url URL de la lista de categor&iacute;as que se carga.
 * @author DGSCA
 */
function showCategories(idcategories,idleft,idright,url){
    init();
    if(idcategories == null || idleft == null || idright == null){
        alert('alguno de los parámetros es nulo');
        return;
    }
    jQuery(idleft).html('');
    jQuery(idright).html('');
    //jQuery(idleft).attr('width','0%');
    jQuery(idcategories).load(url);
    //  alert(idcategories);
    jQuery(idcategories).slideDown();
    jQuery(idcategories).addClass('menuCategorias');
//  jQuery(idcategories).css('menu');
}

/**
 * Muestra las subcategor&iacute;as en la etiqueta &lt;td> izquierda, en forma de men&uacute;.<br><br>
 *
 * p.e. showSubCategories('#leftmenu','#maincontent','${request.getContextPath()}/app1/listsubcategories?idcat=${cat0.id}')
 *
 * @returns void
 * @type void
 * @param {id} idleft Id de la etiqueta &lt;td> del men&uacute; izquierdo, donde se cargan las subcategor&iacute;as.
 * @param {id} idright Id de la etiqueta &lt;td> que a su vez contiene la etiqueta &lt;div> del contenido principal.
 * @param {String} url URL de la p&aacute;gina que se mostrar&aacute; en el contenedor principal.
 * @author DGSCA
 */
function showSubCategories(idleft,idright,url){
    init();
    if(url == null || idleft == null || idright == null){
        alert('alguno de los parámetros es nulo');
        return;
    }
    jQuery(idleft).attr('width','16%');
    jQuery(idleft).slideDown();
    jQuery(idleft).load(url);
    jQuery(idright).html('');
}

/**
 * Funcion no usada
 *
 *
 * @returns void
 * @type void
 * @param {}
 * @author DGSCA
 */
function showAuthors(idabcdario,idleft,idright,url){
    alert("showAuthors");
    init();
    if(idabcdario == null || idleft == null || idright == null){
        alert('alguno de los parámetros es nulo');
        return;
    }
    jQuery(idleft).html('');
    jQuery(idright).html('');
    jQuery(idleft).attr('width','16%');
    jQuery(idabcdario).load(url);
    jQuery(idabcdario).addClass('menuCategorias');
    jQuery(idabcdario).css('menu');
    var clas=jQuery('#menuCategorias').attr("class");
    jQuery('#menuCategorias').removeClass(clas) ;
    jQuery('#menuCategorias').addClass("menuCategorias");
 
     
    jQuery(idabcdario).slideDown();
     
//  jQuery(idabcdario).ready(init());
}

/**
 * Funci&oacute;n no usada
 *
 *
 * @returns void
 * @type void
 * @param {}
 * @author DGSCA
 */
function loadAuthors(idabcdario,idleft,idright,url){
    init();
    if(idabcdario == null || idleft == null || idright == null){
        alert('alguno de los parámetros es nulo');
        return;
    }
    jQuery(idleft).html('');
    jQuery(idright).html('');
    jQuery(idleft).attr('width','16%');
    jQuery(idabcdario).load(url,null,function(){
        setSelectedAbc('TODOS','menuCategorias');
    }
    );
    jQuery(idabcdario).addClass('menuCategorias');
    jQuery(idabcdario).css('menu');
    var clas=jQuery('#menuCategorias').attr("class");
    jQuery('#menuCategorias').removeClass(clas) ;
    jQuery('#menuCategorias').addClass("menuCategorias");


    jQuery(idabcdario).slideDown();
      
//  jQuery(idabcdario).ready(init());

}


/**
 * Establece como seleccionada la opci&oacute;n 'home' del men&uacute; principal, cambi&aacute;ndole el estilo.<br>
 * Elimina el contenido del men&uacute; izquierdo y reduce el ancho de la etiqueta &lt;td> izquierda a cero;<br>
 * Elimina el submen&uacute; de categor&iacute;as y finalmente carga la URL en la etiqueta &lt;div> cuyo id es 'maincontent'.<br><br>
 *
 *
 * p.e. showInMainContext('#menuCategorias','#leftmenu','#maincontent','${request.getContextPath()}/app1/listMp3?home=true')
 *
 * @returns void
 * @type void
 * @param {id} idmenu Id del men&uacute; al que se le aplicar&aacute; el efecto slideUp (deslizar el men&uacute; hacia arriba, para desaparecerlo), normalmente al submen&uacute; categor&iacute;as.
 * @param {id} idTd Id de la etiqueta &lt;td> que contiene el men&uacute; izquierdo que se quitara de la p&aacute;gina.
 * @param {id} idTdmain Id de la etiqueta &lt;td> donde se cargara la p&aacute;gina que nos interesa mostrar en el contenedor principal.
 * @param {String} url URL de la p&aacute;gina que se desea cargar en el contenedor principal.
 * @author DGSCA
 */
function showInMainContext(idmenu,idTd,idTdmain,url){
    init();
    if(idTd == null || url == null || idTd == null || idTdmain == null){
        alert("error en los parametros (showInMainContext) "+url);
        return;
    }    
    jQuery(idmenu).slideUp('');
    jQuery('#leftmenu').attr('width','1%');
    jQuery(idmenu).html('');
    jQuery(idTd).html('');    
    // jQuery(idTd).attr('width','0%');    
    jQuery('#menuPral > ul > li > a').removeAttr('style');
    jQuery('#menuCategorias > ul > li > a').removeAttr('style');    
    jQuery(idTdmain).load(url);
}



/**
 *
 * Al dar clic en la opci&oacute;n 'categor&iacute;as' del men&uacute; principal, se carga en el contenedor principal los &uacute;ltimos aportes. Y se elimina el men&uacute; izquierdo.<br><br>
 * p.e.  displayForCategories('${request.getContextPath()}/app1/displayInCategories')
 *
 * @returns void
 * @type void
 * @param {String} url URL de la p&aacute;gina con los &uacute;ltimos aportes, que se va a cargar en el contenedor principal.
 * @author DGSCA
 */
function displayForCategories(url){
    if(url == null){
        alert("Dirección nula");
        return;
    }
    jQuery('#leftmenu').html('');
    jQuery('#leftmenu').attr('width','1%');
    jQuery('#maincontent').load(url);
    
}

 /**
 *
 * Carga en el contenedor principal la p&aacute;gina de la URL proporcionada, sin alterar los men&uacute;s.<br><br>
 *
 * p.e.  loadListMp3( this.href )
 *
 * @returns void
 * @type void
 * @param {String} url URL de la p&aacute;gina que se quiere cargar
 * @author DGSCA
 */
function loadListMp3(url){
    init();
    if(url != null){
        forwardGetAjax(url, '#maincontent' );
    }else{
        alert("Error en los parametros de la función loadListMp3")
    }
}



/********* funciones para el home */


/******** funciones para la busqueda */
 /**
 * Funci&oacute;n para el formulario de b&uacute;squeda, se ejecuta en el evento onclik de la caja de texto de b&uacute;squeda.<br>
 * Reemplaza los corchetes cuadrados ([]) por espacios en blanco.<br>
 * Al dar clic sobre la caja de texto quita el texto por defecto, si el valor del campo de texto es diferente que el valor por defecto o vacio, habilita el bot&oacute;n de b&uacute;squeda.<br><br>
 *
 * p.e. enableComponent('Srch','texto')
 *
 * @returns void
 * @type void
 * @param {String} idComponents Cadena a la cual se le antepondr&aacute; #txt y #btn para generar el id del campo de texto y del bot&oacute;n.
 * @param {String} txt Cadena que tiene por defecto el campo de texto.
 * @author DGSCA
 */
        function enableComponent(idComponents,txt){
    init();
    if(idComponents == null || txt == null){
        alert('Parámetros incorrectos: enableComponents');
        return;
    }
    var value=jQuery('#txt'+idComponents).attr('value').toString().replace('[ ]+',' ');

    if(txt == value && txt!= ' '){
        jQuery('#txt'+idComponents).attr('value','');
    }else if(value == " " || value == ""){        
        jQuery('#txt'+idComponents).attr('value',txt);
        jQuery('#btn'+idComponents).attr('disabled','disabled');
    }
}

 /**
 
 * Funci&oacute;n llamada en el evento onmouseout del campo de texto del formulario de b&uacute;squeda.
 * Si el contenido del campo de texto es vac&iacute;o pone el texto por defecto y deshabilita el bot&oacute;n de b&uacute;squeda.<br><br>
 *
 * p.e. setText('idComponente','texto')
 *
 * @returns void
 * @type void
 * @param {String} idComponents Cadena a la cual se le antepondr&aacute; #txt y #btn para generar el id del campo de texto y del bot&oacute;n del formulario de b&uacute;squeda.
 * @param {String} txt Cadena que tiene por defecto el campo de texto.
 * @author DGSCA
 */
function setText(idComponents,txt){
    init();
    if(idComponents == null ){
        alert('Parámetros incorrectos: enableComponents');
        return;
    }
    var value=jQuery('#txt'+idComponents).attr('value').toString().replace('[ ]*','');
    if(value == ""){
        jQuery('#txt'+idComponents).attr('value',txt);
        jQuery('#btn'+idComponents).attr('disabled','disabled');
    }

}

 /**
 
 * Funci&oacute;n para el formulario de b&uacute;squeda, es llamada en el evento onkeyup del campo de texto.<br>
 * Si el valor del campo es vac&iacute;o deshabilita el bot&oacute;n de b&uacute;squeda, de lo contrario lo habilita, excepto cuando el valor del campo es el valor por defecto.<br><br>
 *
 * p.e. enableComponent2('Srch')
 *
 * @returns void
 * @type void
 * @param {String} idComponents Cadena a la cual se le antepondr&aacute; #txt y #btn para generar el id del campo de texto y del bot&oacute;n del formulario de b&uacute;squeda.
 * @author DGSCA
 */
function enableComponent2(idComponents){
    init();
    if(idComponents == null ){
        alert('Parámetros incorrectos: enableComponents');
        return;
    }
    var value=jQuery('#txt'+idComponents).attr('value').toString().replace('[ ]*','');

    if("" != value){
        jQuery('#btn'+idComponents).removeAttr("disabled");
    }else{
        jQuery('#btn'+idComponents).attr('disabled','disabled');
    }
}

 /**
 
 * Funci&oacute;n no usada
 *
 *
 *
 * @returns void
 * @type void
 * @param {}
 * @author DGSCA
 */
function enableComponent3(idComponents){
    init();
    if(idComponents == null ){
        alert('Parámetros incorrectos: enableComponents');
        return;
    }
    var value=jQuery('#txt'+idComponents).attr('value').toString().replace('[ ]*','');

    if("" != value){
        jQuery('#btn'+idComponents).removeAttr("disabled");
    }else{
        jQuery('#btn'+idComponents).attr('disabled','disabled');
    }
}


 /**
 
 * Funci&oacute;n no usada.
 *
 *
 *
 * @returns void
 * @type void
 * @param {}
 * @author DGSCA
 */
function showAdvance(idDiv,idComponents,url,url2){
    if(idComponents == null ||  idDiv == null){
        alert("Los valores son nulos showAdvance");
        return;
    }
    if(jQuery('#'+idDiv+'2').html()==""){
        jQuery('#btn'+idComponents).hide("slow");
        jQuery('#txt'+idComponents).hide("slow");
        jQuery('#'+idDiv).css("height","150px");
        jQuery('#'+idDiv+'2').load(url);
    }else{
        jQuery('#'+idDiv).css("height","25px");
        jQuery('#'+idDiv).load(url2);
        jQuery('#'+idDiv+'2').html('');
    }
    init();
}
 

/********* funciones para seleccionar */


 /**
 
 * Primero quita los estilos del men&uacute; principal (inicio, categor&iacute;as, autores y t&iacute;tulos) y despu&eacute;s marca el que fue elegido.<br><br>
 *
 * p.e. setSelectedSub('inicio','menuPral');
 *
 * @returns void
 * @type void
 * @param {String} aid Opci&oacute;n del men&uacute; que fue elegido para marcar.
 * @param {String} menu Men&uacute; con el cual se va a trabajar.
 * @author DGSCA
 */
function setSelectedSub(aid,menu){
    init();
    jQuery('#'+menu+' > ul > li > a').removeAttr('style');
   // alert(jQuery('#'+aid));
    jQuery('#'+aid).css('color','#f60');    
}


 /**
 
 * Funci&oacute;n no usada.
 *
 *
 *
 * @returns void
 * @type void
 * @param {}
 * @author DGSCA
 */
function setSelectedCat(aid,menu){
    alert("metodo obsoleto  setSelectedCat");
    init();
    // var css=jQuery('#'+menu+' > ul > li > a') ;
    var css=jQuery('#menuCategorias > ul > li > a') ;
    var clas="";
    jQuery.each(css, function() {
       
        clas=jQuery(this).attr("class");
        jQuery(this).removeClass(clas);
    //alert(jQuery(this).html() +" -> "+jQuery(this).attr("class"));
    //     alert(jQuery(this).html() +" -> "+clas);
    });
    clas=jQuery('#menuCategorias').attr("class");
    jQuery('#menuCategorias').removeClass(clas) ;
    jQuery('#menuCategorias').addClass("menucat"+aid);


    // alert(aid);
    //jQuery('#menuCategorias').addClass('menuCategorias');
    // jQuery('#menuCategorias > ul > li > a').css('background-color','#666');
    //  jQuery('#'+menu+' > ul > li > a').removeAttr('style');
    //jQuery('#'+aid).css('color','#f60');
   
    jQuery('#'+aid).addClass(aid);
}


 /**
 * Llama la funci&oacute;n "unSelectedMenuCategorias()" y resalta la opci&oacute;n del men&uacute; de categor&iacute;a que fue seleccionada.<br><br>
 *
 * p.e. setSelectedCatJ('menuCat${i}','menuCategorias');
 *
 * @returns void
 * @type void
 * @param {id} idcat id de la opci&oacute;n del men&uacute; categor&iacute;a seleccionada.
 * @param {id} menu id del men&uacute; categor&iacute;a
 * @author DGSCA
 */
function setSelectedCatJ(idcat,menu){    
    unSelectedMenuCategorias();
    jQuery("#"+idcat).attr("class",idcat+"Sel");
    
}

 /**
 * Quita el estilo de la opci&oacute;n seleccionada del men&uacute; de las letras del abecedario (submen&uacute; de autores), y pone el estilo a la nueva opci&oacute;n seleccionada.<br>
 *
 * <br>p.e. setSelectedAbc('TODOS','menuCategorias')<br> setSelectedAbc('letraA','menuCategorias')
 *
 * @returns void
 * @type void
 * @param {id} aid Letra que se selecciona (id=letraA, letraB, ... , letraW)
 * @param {id} menu Men&uacute; al que se le quitan los estilos (men&uacute; de las letras del abecedario)
 * @author DGSCA
 */
function setSelectedAbc(aid,menu){
    init();    
    // alert(aid);
    //jQuery('#menuCategorias').addClass('menuCategorias');
    // jQuery('#menuCategorias > ul > li > a').css('background-color','#666');
    jQuery('#'+menu+' > ul  > a').removeAttr('style');
    jQuery('#'+aid).css('background-color','#f60');
     
}

 /**
 
 * Funci&oacute;n llamada al seleccionar una opci&oacute;n del men&uacute; izquierdo de categor&iacute;as.<br>
 * Oscurece las opciones no seleccionadas y remarca la opci&oacute;n seleccionada.<br>
 *
 * <br>p.e. selectSubcat('subcat11');
 *
 * @returns void
 * @type void
 * @param {id} id Id de la etiqueta &lt;p> que contiene la liga a la subcategor&iacute;a.
 * @author DGSCA
 */
function selectSubcat(id){    
    if(id == null){
        alert("selectFromList parametros erroneos ");
        return;
    }    
    jQuery('#leftmenu>p').removeClass('subcategoryNotSelected');
    jQuery('#leftmenu>p').removeClass('subcategory');
    jQuery('#leftmenu>p').addClass('subcategoryNotSelected');

    jQuery('#'+id).removeClass('subcategoryNotSelected');
    jQuery('#'+id).addClass('subcategory');    
    jQuery('#maincontent').addClass("fondoThumb");
}

 /**
 * Funci&oacute;n que obtiene el men&uacute; izquierdo cuando se selecciona autores, t&iacute;tulos o alguna letra del men&uacute; desplegable del abecedario.<br>
 * Oscurece los elementos no seleccionados y remarca el seleccionado.<br>
 *
 *
 * <br>p.e. selectFormList('titulo991')
 *
 * @returns void
 * @type void
 * @param {id} id Id de la etiqueta &lt;a> que se selecciona.
 * @author DGSCA
 */
function selectFormList(id){    
    init();
    if(id == null){
        alert("selectFromList parametros erroneos ");
        return;
    }

    jQuery('#authorList>table>tbody>tr>td>a').removeAttr('style');
    jQuery('#authorList>table>tbody>tr>td').removeAttr('style');
    jQuery('#'+id).css('background-color','#f60');
    jQuery('#td'+id).css('color','#000');
}

/* PLAYER */



 /**
 * Funci&oacute;n usada en showAlbum.<br>
 * Hace play a los audios. <br>
 * Cambia la imagen del audio escuchando y sin escuchar.<br><br>
 *
 *
 * p.e. playAudio('mp3/bienvenida.mp3','imgPlay7922')
 *
 * @returns void
 * @type void
 * @param {id} audio Direcci&oacute;n relativa que parte de la carpeta mp3 que se encuentra en el contexto del proyecto, para direccionar los archivos mp3 que ser&aacute;n reproducidos.
 * @param {String} idimg Id de la imagen que se cambiar&aacute; (imagen de la bocina con audio).
 * @author DGSCA
 */
function playAudio(audio,idimg){    
    if(audio == null || idimg == null){
        alert("El audio es nulo!");
        return;
    }
    if ( ! MM_FlashCanPlay ) {
        displayNoFlashDialog();
    }

    jQuery('#desplieguePlayer>table>tbody>tr>td').removeClass("playerSelected");
    jQuery('#desplieguePlayer>table>tbody>tr>td').addClass("playerNotSelected");
    jQuery('#desplieguePlayer>table>tbody>tr>td>a>img').attr('src',site+'/images/audioOut.jpg');

    if(player.getConfig().file.toString()==audio){
        player.sendEvent("PLAY");        
        if((document.getElementById(idimg).src2==document.getElementById(idimg).src) &&
            document.getElementById(idimg).src.toString().indexOf("Out", 0)<0  ){
            
            document.getElementById(idimg).src2=site+'/images/audioOut.jpg';        
        }else{
            document.getElementById(idimg).src2=site+'/images/audio.jpg';
        }
        jQuery("#"+idimg).attr('src', document.getElementById(idimg).src2 );
    }else{
        jQuery('#maincontent>table>tbody>tr>td>a>img').each( function (i){
            if(  jQuery(this).attr('name')== 'imgPlay'  ){
                jQuery(this).attr('src',site+'/images/audioOut.jpg' )
            }
        });        
        s1.addParam("allowfullscreen","false");
        s1.addParam("allowscriptaccess","always");
        s1.addParam("flashvars","file="+audio+"&abouttext=autor:author&image=preview.jpg&autostart=true&&fullscreen=none&width=10.jpg&type=sound&stretching=fill&volume=20");
        s1.write("reproductor");
        document.getElementById(idimg).src2=site+'/images/audio.jpg';
        jQuery("#"+idimg).attr('src', document.getElementById(idimg).src2 );
    }
}


 /**
 
 * Funci&oacute;n no usada.
 *
 *
 *
 * @returns void
 * @type void
 * @param {}
 * @author DGSCA
 */
var player = null;
function playerReady(thePlayer) {
	player = window.document['ply'];    
}

 /**
 * Funci&oacute;n usada en _itemCurrentPlayerList que es la lista de reproducci&oacute;n actual.<br>
 * Hace play a los audios. <br>
 * Cambia la imagen del audio escuchando y sin escuchar.<br><br>
 *
 *
 * <br>p.e. play('/podcast/mp3/04_El_pensamiento_olvidado.mp3','04 El pensamiento olvidado','itemCurrentPlayerList8071')
 *
 * @returns void
 * @type void
 * @param {String} path Direcci&oacute;n relativa del audio que se quiere reproducir. A partir del contexto.
 * @param {String} author Autor del audio.
 * @param {id} id Id de la etiqueta &lt;tr> que contiene el audio que se quiere reproducir.
 * @author DGSCA
 */
function play(path,author,id){    
    init();
    if ( ! MM_FlashCanPlay ) {
        displayNoFlashDialog();
    }
    if(path == null|| author == null||id==null ){
            alert("el parametro es nulo play");
            return;
    }
    if(player.getConfig().file.toString()==path){        
        player.sendEvent("PLAY");
        if((document.getElementById(jQuery('#'+id+'>td>a>img').attr('id')).src2==document.getElementById(jQuery('#'+id+'>td>a>img').attr('id')).src) &&
            document.getElementById(jQuery('#'+id+'>td>a>img').attr('id')).src.toString().indexOf("Out", 0)<0  ){
            //alert("if");
            document.getElementById(jQuery('#'+id+'>td>a>img').attr('id')).src2=site+'/images/audioOut.jpg';
        }else{
            //alert("else");
            document.getElementById(jQuery('#'+id+'>td>a>img').attr('id')).src2=site+'/images/audio.jpg';
        }
        jQuery("#"+jQuery('#'+id+'>td>a>img').attr('id')).attr('src', document.getElementById(jQuery('#'+id+'>td>a>img').attr('id')).src2 );

    }else{                
        jQuery('#desplieguePlayer>table>tbody>tr>td').removeClass("playerSelected");
        jQuery('#desplieguePlayer>table>tbody>tr>td').addClass("playerNotSelected");        
        
        document.getElementById(jQuery('#'+id+'>td>a>img').attr('id')).src2=site+'/images/audio.jpg';
        jQuery("#"+jQuery('#'+id+'>td>a>img').attr('id')).attr('src', document.getElementById(jQuery('#'+id+'>td>a>img').attr('id')).src2 );

        jQuery('#'+id+'>td').removeClass("playerNotSelected");
        jQuery('#'+id+'>td').addClass('playerSelected');
        s1.addParam("allowfullscreen","false");
        s1.addParam("allowscriptaccess","always");
        s1.addParam("flashvars","file="+path+"&abouttext=autor:author&image=preview.jpg&author="+author+"&autostart=true&fullscreen=none&width=10.jpg&type=sound&stretching=fill&volume=10");
        s1.write("reproductor");        
    }
    jQuery('#maincontent>table>tbody>tr>td>a>img').each( function (i){
            if(  jQuery(this).attr('name')== 'imgPlay'  ){
                jQuery(this).attr('src',site+'/images/audioOut.jpg' )
            }
    });  
}


 /**
 * Funci&oacute;n llamada en el onLoad del index.<br>
 * Pone en el reproductor el audio de bienvenida.<br>
 *
 *
 * <br>p.e. initalPlay('${request.getContextPath()}/mp3/intro.mp3')
 *
 * @returns void
 * @type void
 * @param {String} path URL del audio de introducci&oacute;n.
 * @author DGSCA
 */
function initalPlay(path){
    s1.addParam("allowfullscreen","false");
    s1.addParam("allowscriptaccess","always");
    s1.addParam("flashvars","file="+path+"&abouttext=autor:author&image=preview.jpg&autostart=false&&fullscreen=none&width=10.jpg&type=sound&stretching=fill&volume=50");
    s1.write("reproductor");
}


 /**
 * Al seleccionar una imagen del carrusel, esta funci&oacute;n cambia la imagen con la que se creara el objeto.<br>
 *
 * <br>p.e. setImage('#carrousel-1','#changeOnImg','#img')
 *
 * @returns void
 * @type void
 * @param {id} idSrc Id de la etiqueta &lt;img> seleccionada.
 * @param {id} idTo Id de la imagen que tendr&aacute; el objeto creado.
 * @param {String} hiddenvalue Valor oculto de la URL de la imagen (images/banner/banner1.jpg).
 * @author DGSCA
 */
// funcines para el carousel de imagenes
function setImage(idSrc ,idTo,hiddenvalue){    
    if(idSrc == null || idTo == null ){
        alert("algun identificador es nulo");
        return;
    }
    if($(idSrc).length==0 || $(idTo).length == 0){

        alert("No se encontro el identificador en la página "+ $(idSrc).length+" / "+$(idTo).length);
        return ;
    }
    var img=$(idSrc).attr('src');
    // alert(img);
    $(idTo).attr('src', img);
    $(idTo+'file').attr('value','');
    $(hiddenvalue).attr('value',img.replace(site+'/',''));
//   alert($(hiddenvalue).attr('value'));
}//setImage


 /**
 
 * Funci&oacute;n que verifica que la extensi&oacute;n de la imagen que se subir&aacute; sea la permitida.<br>
 *
 * <br>p.e. clean('#changeOnImgfile','#idSaveButtonIMG')
 *
 * @returns void
 * @type void
 * @param {id} id Id del campo que contiene el path de la imagen.
 * @param {id} idbutton Id del bot&oacute;n.
 * @author DGSCA
 */
function clean(id,idbutton){    
    var x =jQuery(id).attr('value').toLowerCase();
    if(x.match(new RegExp("^.+\.((jpeg)|(jpg)|(png)|(gif))$")) != null){
        //alert('pasa    ' + x);
        //var fic = x.split('\\');
        //alert(fic[fic.length-1]);
        //$(imgIcon).attr('src', img);
        //$(id).attr('src','http://www.descargacultura.unam.mx/images/mp3Iconshttp://www.descargacultura.unam.mx-null.gif');
        //$(imgIcon).attr('value','images/mp3Icons/'+$(id+'file').attr('value'));
        //$('#errorMsg').html("");
        jQuery('#errorMsg').html("Archivo valido");
        jQuery(idbutton).removeAttr("disabled");
    }else{
        //alert('error en clean');
        jQuery(id).attr('value','');
        jQuery('#errorMsg').html("El archivo seleccionado no posee la extensión requerida");
    }//else
//   alert($(imgIcon).attr('value'));
}//clean

 /**
 
 * Funci&oacute;n no usada.
 *
 *
 * @returns void
 * @type void
 * @param {id} id
 * @param {id} idbutton 
 * @author DGSCA
 */
function cleanStaticsPages(id,idbutton){
    alert("cleanStaticsPages Funcion no usada");
    var x =jQuery(id).attr('value').toLowerCase();
    if(x.match(new RegExp("^.+\.(gsp)$")) != null){
        jQuery('#errorMsg').html("El archivo valido");
        jQuery(idbutton).removeAttr("disabled");
    }else{
        jQuery(id).attr('value','');
        jQuery('#errorMsg').html("El archivo seleccionado no posee la extensión requerida");
    }
}

 /**
 
 * Funci&oacute;n no usada.
 *
 *
 *
 * @returns void
 * @type void
 * @param {}
 * @author DGSCA
 */
function clearForm(idButton, idSpinner, idCampo){
    alert('clearForm='+idButton+"<>"+idSpinner+"<>"+idCampo+"  FUNCION NO USADA");
    var element = document.getElementById(idSpinner);
    if(element && element.firstChild){
        document.getElementById(idSpinner).removeChild(element.firstChild);
    }
    if(document.getElementById(idButton)){
        document.getElementById(idButton).style.visibility='visible';
    }
            
    jQuery(idCampo).attr('value','');
    jQuery('#'+idButton).attr('disabled','disabled');
}

 /**
 * Realiza el "slideDown" o "slideUp" para mostrar lo necesario para subir una imagen o usar una imagen que ya est&aacute; en el servidor.<br>
 * 
 * <br>p.e. changeUploadImg(this);
 *
 * @returns void
 * @type void
 * @param {checkbox} c Referencia al checkbox.
 * @author DGSCA
 */
function changeUploadImg(c){    
    if(c.checked){
        jQuery("#fielFile").slideDown();
        jQuery("#fielJcarousel").slideUp();
    }else{
        jQuery("#changeOnImgfile").attr('value','');
        jQuery("#fielFile").slideUp();
        jQuery("#fielJcarousel").slideDown();
    }
}

 /**
 * Modifica la dirección a donde se env&iacute;a el formulario.<br>
 * A&ntilde;ade "entype=multipart/form-data" si es necesario.<br>
 *
 * <br>p.e. redirect('#formudpate', '${request.getContextPath()}/banner/delete',false)
 *
 * @returns void
 * @type void
 * @param {id} idform Id del formulario.
 * @param {String} action Acci&oacute;n a la que se redireccionar&aacute;.
 * @param {boolean} enctype Si es true hace que el formulario env&iacute;e archivos (enctype=multipart/form-data), en caso contrario no realiza lo anterior.
 * @author DGSCA
 */
function redirect(idform, action, enctype ){
    try {
        jQuery(idform).attr('action',action);
        if(enctype){
            jQuery(idform).attr('enctype',"multipart/form-data");
        }
        return true;
    }catch(mierror){
        alert("Error detectado: " + mierror.description)
        return false;
    }
}


 /**
 
 * Funci&oacute;n no usada.
 *
 *
 *
 * @returns void
 * @type void
 * @param {}
 * @author DGSCA
 */
function leftMenuFullWidth(url){
    alert("leftMenuFullWidth FUNCION NO USADA");
    forwardGetAjax( url, '#leftmenu');
    jQuery('#leftmenu').attr('width','100%');
    jQuery('#maincontent').html('');
    jQuery('#menuCategorias').slideUp()
}

 /**
 * Esta funci&oacute;n es usada en la secci&oacute;n del administrador.<br>
 * Lleva a cabo la reproducci&oacute;n de la pista seleccionada.<br>
 *
 * <br>p.e. adminPlay('${request.getContextPath()}/${fieldValue(bean:archive,field:'location')}');
 *
 * @returns void
 * @type void
 * @param {String} path URL del audio a reproducir.
 * @author DGSCA
 */
function adminPlay(path){
    //  init();
    if(path == null ){
        alert("el parametro es nulo adminPlay");
        return;
    }
    s1.addParam("allowfullscreen","false");
    s1.addParam("allowscriptaccess","always");
    s1.addParam("flashvars","file="+path+"&abouttext=autor:author&image=preview.jpg&autostart=true&&fullscreen=none&width=10.jpg&type=sound&stretching=fill&volume=20");
    s1.write("reproductor");
    jQuery('#titlex').html(path);
}


//--------------- funcion para cambiar el color del menu de categorias

 /**
 
 * Funci&oacute;n no usada.
 *
 *
 *
 * @returns void
 * @type void
 * @param {}
 * @author DGSCA
 */
function selectCatJ(idcat){
    alert("selectCatJ FUNCION NO USADA "+idcat);
    jQuery("#"+idcat).attr("class",idcat);
}

/**
 
 * Funci&oacute;n no usada.
 *
 *
 *
 * @returns void
 * @type void
 * @param {}
 * @author DGSCA
 */
function clearCatsJ(idcat){
    alert("clearCatsJ FUNCION NO USADA "+idcat);
    jQuery("#"+idcat).attr("class","");
}

/**
 
 * Funci&oacute;n no usada.
 *
 *
 *
 * @returns void
 * @type void
 * @param {}
 * @author DGSCA
 */
function selectCat(idcat){
    alertr("selectCat FUNCION NO USADA "+idcat);
    if(idcat == null ){
        alert("el parametro es nulo adminPlay");
        return;
    }
    jQuery("#menuCategorias > ul> li>a").attr("style","");

      
    
    if(idcat=="literatura"){
        jQuery("#"+idcat).css("background-image","url(images/menuCat1.jpg)");
        jQuery("#"+idcat).css("background-repeat","repeat-x");
        jQuery("#"+idcat).css("color","#000000");
    
    } else if(idcat == "teatro" ){
        jQuery("#"+idcat).css("background-image","url(images/menuCat2.jpg)");
        jQuery("#"+idcat).css("background-repeat","repeat-x");
        jQuery("#"+idcat).css("color","#000000");
        
    }else if(idcat == "musica"){
        jQuery("#"+idcat).css("background-image","url(images/menuCat3.jpg)");
        jQuery("#"+idcat).css("background-repeat","repeat-x");
        jQuery("#"+idcat).css("color","#000000");
        
    }else if(idcat == "conocimientosfundamentales"){
        jQuery("#"+idcat).css("background-image","url(images/menuCat4.jpg)");
        jQuery("#"+idcat).css("background-repeat","repeat-x");
        jQuery("#"+idcat).css("color","#000000");
        
    }else if(idcat == "envozdelaacademia" ){
        jQuery("#"+idcat).css("background-image","url(images/menuCat5.jpg)");
        jQuery("#"+idcat).css("background-repeat","repeat-x");
        jQuery("#"+idcat).css("color","#000000");
        
    }
}

/**
 
 * Funci&oacute;n no usada.
 *
 *
 *
 * @returns void
 * @type void
 * @param {}
 * @author DGSCA
 */
function clearCats(){
    alert("clearCats FUNCION NO USADA");
    jQuery("#menuCategorias > ul> li>a").attr("style","");
    
}

/**
 * Verifica que el archivo seleccionado tenga la extensi&oacute;n requerida.<br>
 *
 *
 * <br>p.e. checkFileRestriction('file','mp3')
 *
 * @returns void
 * @type void
 * @param {id} id Id del campo file.
 * @param {String} ext Extensi&oacute;n que debe tener el archivo que se desea subir.
 * @author DGSCA
 */
function checkFileRestriction(id,ext){
    if(id == null){
        alert("parametros incorrectos");
        return ;
    }
    var file=jQuery("#"+id).attr('value');
    //  alert(".+\\."+ext);
    if(file.toString().match(".+\\."+ext) == null){

        jQuery("#"+id).attr('value','');
        jQuery("#"+id+"_button").attr('disabled','disabled');
        jQuery("#"+id+"_error").slideDown();
    }else{
        jQuery("#"+id+"_button").removeAttr('disabled');
        jQuery("#"+id+"_error").slideUp();
    }
    

}


 /**
 * Al crear una pregunta por defecto tiene dos posibles opciones, esta funci&oacute;n actualiza el n&uacute;mero de opciones.<br>
 *
 * <br>p.e. showOptions('/podcast/question/_options.gsp?tam=','#optionz');
 *
 * @returns void
 * @type void
 * @param {URL} url Direcci&oacute;n relativa de la plantilla que genera las opciones. A partir del contexto del proyecto.
 * @param {id} dst Id de la etiqueta &lt;div> donde es insertan las opciones.
 * @author DGSCA
 */
function showOptions(url,dst){    
    var max=jQuery("#qopciones").children("option:selected").attr("value");
    forwardGetAjax( url+max, dst );

}

//------------ funciones para mostrar en los autores y titulos ------------------


 /**
 
 * Funci&oacute;n ejecutada al dar clic en la opci&oacute;n autores del men&uacute; principal.<br>
 * Realiza una llamada ajax para cargar el abecedario, el men&uacute; izquierdo y simula un clic en la primera opci&oacute;n del men&uacute; izquierdo.<br>
 *
 *
 * <br>p.e. showAuthorz('/podcast');
 *
 * @returns void
 * @type void
 * @param {String} context Direcci&oacute;n relativa del contexto.
 * @author DGSCA
 */
function showAuthorz(context){
    loadAuthors('#menuCategorias','#leftmenu','#maincontent',context+'/app1/commons/abcdario.gsp?autor=true');
    init();
    jQuery("#leftmenu").load(context+"/artist/listByLetter?letra=todos",null,function(){
        if(first != -90){
            forwardGetAjax( context+'/artist/showArtist?artist.id='+first+'&amp;max=5', '#maincontent' );
            selectFormList('artist'+first);
        }
    });
    first=-90;
    setSelectedSub('autores','menuPral');
}

 /**
 * Funci&oacute;n ejecutada al dar clic en la opci&oacute;n t&iacute;tulos del men&uacute; principal.<br>
 * Realiza una llamada ajax para cargar el abecedario, el men&uacute; izquierdo y simula un clic en la primera opci&oacute;n del men&uacute; izquierdo.<br>
 *
 *
 * <br>p.e. showAuthorz('/podcast');
 *
 * @returns void
 * @type void
 * @param {String} context Direcci&oacute;n relativa del contexto.
 * @author DGSCA
 */
function showTitles(context){
    loadAuthors('#menuCategorias','#leftmenu','#maincontent',context+'/app1/commons/abcdario.gsp');
    init();

    jQuery('#maincontent').html('');
      
    jQuery("#leftmenu").load(context+"/playerList/listByLetter?letra=todos",null,function(){
        if(firstT != -90){
            selectFormList('titulo'+firstT);
            forwardGetAjax( context+'/playerList/showAlbum?playerList.id='+firstT, '#maincontent' )
        }
    });
    firstT=-90;
    setSelectedSub('titulos','menuPral');

}

 /**
 * Funci&oacute;n necesaria para el "google analytics"
 *
 *
 * @returns void
 * @type void
 * @param {String} category Nombre del grupo al que le deseas realizar seguimiento.
 * @param {String} action Cadena vinculada con la categor&iacute;a, com&uacute;nmente utilizado para definir el tipo de interacci&oacute;n.
 * @param {String} label Cadena opcional para proporcionar dimensiones adicionales.
 * @param {Int} value Se puede utilizar para proporcionar los datos num&eacute;ricos sobre el usuario.
 * @author Google
 */
function gags(category, action, label,value){
    var pageTracker;
    if(pageTracker == null){
        pageTracker = _gat._getTracker("UA-6324037-1");
        pageTracker._trackPageview();

    }
    pageTracker._trackEvent(category, action, label,value);

}


 /**
 * Quita la opci&oacute;n seleccionada del men&uacute; de categor&iacute;as (men&uacute; que se desliza cuando seleccionas la opci&oacute;n categor&iacute;as).<br><br>
 *
 *
 * @returns void
 * @type void
 * @param {}
 * @author DGSCA
 */
function unSelectedMenuCategorias(){
    var css=jQuery('#menuCategorias > ul > li > a') ;
    var i = 0;
    jQuery.each(css, function() {
        i=i+1;        
        jQuery("#menuCat"+i).attr("class","menuCat"+i);

    });
}

