/*
	---------------------------------------------------------------------------
	Empresa			: Proconsi S.L.
	Fecha creación	: 01-03-2010
	Fecha ult.modif.: 13-01-2011 - Virginia
	Módulo			: Funciones de uso general en el Panel de Control
	----------------------------------------------------------------------------
    Historial de modificaciones:
		24-03-2010	Funciones generales de control de visualización de las descripciones de las plantillas
	[2] - 19-06-2010 - David González
	Nuevas funciones NuevaPlantilla y EditarPlantilla para poder editar las plantillas directamente desde
	el panel de control. Preparadas para los combos creados con cargaComboPlantillasGenerico()
	[3] - 21-06-2010 - David González
	Añadido parámetro nombre a muestraDescripcionPlantilla para que sea compatible con cargaComboPlantillasGenerico()
	[4] - 01-07-2010 - David González
	No borrar el array de tinyMCE desde muestraDescripcionPlantilla porque puede llamarse desde lugares donde hay
	tinyMCE 
	[5] - 02-07-2010 - David González
	Aumentado tamaño del popup en NuevaPlantilla y EditarPlantilla
	[6] - 06-07-2010 - David González
    Traspasada función valorPorDefecto desde tiendaWEB.js para que pueda utilizarse desde otros módulos
    [7] - 13-08-2010 - Korre
    Arreglado BUG en función urlEncode. Estaba codificando '@' y '=' de la misma manera
    [8] - 01-09-2010 - David González
    Nueva función para abrir la ventana del selector de ficheros
    [9] - 07-09-2010 - David González
    Nueva función que recibe un campo y si su valor no es numérico lo pone a cero
    [10] - 21-09-2010 - David González
	Nuevas funciones BorrarPlantilla y CopiarPlantilla
	[11] - 22-09-2010 - David González
	Nueva función para que los paginadores actúen sobre un DIV concreto
	[12] - 29-09-2010 - David González
	Funciones JS de subida genérica de imágenes
	[13] - 11-10-2010 - David González
	Definida la función BorrarValorPorDefecto
	[14] - 21-11-2010 - Virginia
	Nueva función para agregar a favoritos y pasamos funciones básicas del index.php aquí
	[15] - 13-01-2011 - Virginia
	Limpieza del navegador
	----------------------------------------------------------------------------
*/
m_cContenedorFuncionPHP = ''; //[11]
//
// Manda el foco a un control y selecciona su contenido
//
function SetFocus( id_control )
{
	document.getElementById( id_control ).focus();
	document.getElementById( id_control ).select();
}
//
// Oculta un DIV
//
function HideDiv( idDiv )
{
	if( document.getElementById )  // DOM3 = IE5, NS6
	{
		document.getElementById( idDiv ).style.display = 'none';
	}
	else
	{
		if( document.layers )  // Netscape 4
		{
			eval("document." + idDiv + ".display = 'none'" );
		}
		else
		{ // IE 4
			eval ( "document.all." + idDiv + ".style.display = 'none'" );
		}
	}
}
//
// Muestra un DIV
//
function ShowDiv( idDiv )
{
	if( document.getElementById )  // DOM3 = IE5, NS6
	{
		document.getElementById( idDiv ).style.display = 'block';
	}
	else
	{
		if( document.layers ) // Netscape 4
		{
			eval( "document." + idDiv + ".display = 'block'" );
		}
		else
		{ // IE 4
			eval( "document.all." + idDiv + ".style.display = 'block'" );
		}
	}
}
//
// Cambia el estado de visiblidad de un DIV
//
function SwitchDiv( idDiv )
{
	var cStatus = 'block';
	if( document.getElementById )  // DOM3 = IE5, NS6
	{
		cStatus = document.getElementById( idDiv ).style.display;
	}
	else
	{
		if( document.layers ) // Netscape 4
		{
			cStatus = eval( "document." + idDiv + ".display" );
		}
		else
		{ // IE 4
			cStatus = eval( "document.all." + idDiv + ".style.display" );
		}
	}
	if( cStatus == 'none' || cStatus == '' )
		ShowDiv( idDiv );
	else
		HideDiv( idDiv );
}
//
// Aplicamos clase 'activado' al elemento (div's y a's) en el que se ha clickado y 'desactivado' al resto
//
function activarElementoMenu( idMenu )
{
	var divs = document.formularioMenu.getElementsByTagName('div');
	for( var i = 0; i < divs.length; i++ ) {
		divs[i].className = '';
	}
	var as = document.formularioMenu.getElementsByTagName('a');
	for( var i = 0; i < as.length; i++ ) {
		as[i].className = '';
	}
	//
	//document.getElementById(idMenu).style.cssText = 'background-image:url(gifs/actual.png); background-repeat:no-repeat; color:#276fdf; padding-left:20px;';
	document.getElementById(idMenu).className = 'elementoActivo';
}
///
/// Nos devuelve las lineas comentadas con /// de la plantilla seleccionada en el select
/// [3][4]
function muestraDescripcionPlantilla( plantilla , nombre )
{
	// var plantillaSeleccionada = document.form2.Plantilla.value;
	var plantillaSeleccionada = plantilla;
	//
	var cParameters = 'plantillaParaDescribir=' + plantillaSeleccionada + '&nombreDiv=' + nombre;
	AjaxRequest( '../Modulos/categorias/funciones.php' , cParameters , CallBackDetallePlantilla , false );
}
///
/// CallBack de Ajax de muestraDescripcionPlantilla()
/// [3]
function CallBackDetallePlantilla( xmlhttp )
{
	if( xmlhttp.readyState == 4 && xmlhttp.status == 200 )
	{
		var oRespuesta = xmlhttp.responseText.split( ';' );
		var cNombreDiv = oRespuesta[0];
		var cComentarioPlantilla = "";
		if( oRespuesta.length > 1 )
			cComentarioPlantilla = oRespuesta[1];
		document.getElementById( "descripcionPlantilla" + oRespuesta[0] ).innerHTML = cComentarioPlantilla;
	}
}
//
// Reemplaza antes de imprimir por pantalla todos los caracteres especiales 
// Para ampliaciones -> http://blog.unijimpe.net/tildes-en-javascript/
//
function reemplaza( cadena )
{
	cadena.replace(/¿/g, "\xbf");
	cadena.replace(/¡/g, "\xa1");
	cadena.replace(/á/g, "\xe1");
	cadena.replace(/é/g, "\xe9");
	cadena.replace(/í/g, "\xed");
	cadena.replace(/ó/g, "\xf3");
	cadena.replace(/ú/g, "\xfa");
	cadena.replace(/Á/g, "\xc1");
	cadena.replace(/É/g, "\xc9");
	cadena.replace(/Í/g, "\xcd");
	cadena.replace(/Ó/g, "\xd3");
	cadena.replace(/Ú/g, "\xda");
	cadena.replace(/ñ/g, "\xf1");
	cadena.replace(/Ñ/g, "\xd1");
	cadena.replace(/ü/g, "\xfc");
	cadena.replace(/Ü/g, "\xdc");
	
	return cadena;
}
//
// Traduce los caracteres problemáticos de la url a través de Ajax
// Para ampliaciones -> http://cass-hacks.com/articles/discussion/js_url_encode_decode/
//
function urlEncode( parametro )
{
	parametro = parametro.replace(/[+]/g, "%2B");
	parametro = parametro.replace(/[&]/g, "%26");
	parametro = parametro.replace(/[*]/g, '%2A');
	parametro = parametro.replace(/[@]/g, '%40');
	parametro = parametro.replace(/[=]/g, '%3D'); // [7]
	parametro = parametro.replace(/[<]/g, '%3C');
	parametro = parametro.replace(/[>]/g, '%3E');
	parametro = parametro.replace(/[']/g, '%27');
	parametro = parametro.replace(/["]/g, '%22');
	
	parametro = addslashes( parametro );
	
	return parametro;
}
//
// Funcionalidad imitando el addslashes() de PHP
//
function addslashes( cadena ) 
{
	cadena = cadena.replace(/\\/g,'\\\\');
	cadena = cadena.replace(/\'/g,'\\\'');
	cadena = cadena.replace(/\"/g,'\\"');
	cadena = cadena.replace(/\0/g,'\\0');
	
	return cadena;
}
///
/// Creación de una nueva plantilla
/// [2]
function NuevaPlantilla( cModulo )
{
	window.open( "editorPlantillas.php?modulo=" + cModulo  , "Documento" , "width=750,height=650,toolbar=no,location=no,directories=no,status=no,menubar=no" ); //[5]
}
///
/// Edición de una plantilla
/// [2]
function EditarPlantilla( cModulo , cNombre )
{
	cPlantilla = document.getElementById( cNombre ).value;
	//
	if( cPlantilla == "" )
	{
		alert("Seleccione una plantilla");
		return false;
	}
	//	
	if( cPlantilla.indexOf( cModulo ) == 0 )
	{
		cPlantilla = cPlantilla.substr( cModulo.length );
		window.open( "editorPlantillas.php?modulo=" + cModulo + "&plantilla=" + cPlantilla , "Documento" , "width=750,height=650,toolbar=no,location=no,directories=no,status=no,menubar=no" ); //[5]
	}
	else alert("ERROR: La plantilla no corresponde con el módulo");
}
///
/// Borrado de una plantilla
/// [10]
///
function BorrarPlantilla( cModulo , cNombre )
{
	cPlantilla = document.getElementById( cNombre ).value;
	//
	if( cPlantilla == "" )
	{
		alert("Seleccione una plantilla");
		return false;
	}
	//	
	if( cPlantilla.indexOf( cModulo ) == 0 )
	{
		// Confirmar el borrado de la plantilla
		if( !confirm( '¿ Confirma el borrado de la plantilla seleccionada ?' ) )
			return;
		//
		cPlantilla = cPlantilla.substr( cModulo.length );
		var cParameters = "modulo=" + cModulo + "&plantilla=" + cPlantilla;
		AjaxRequest( 'borrarPlantilla.php' , cParameters , CallBackBorrarPlantilla );
		//
		document.getElementById( cNombre ).value = '';
	}
	else alert("ERROR: La plantilla no corresponde con el módulo");
}
///
/// CallBack de Ajax de BorrarPlantilla()
/// [10]
///
function CallBackBorrarPlantilla( xmlhttp )
{
	if( xmlhttp.readyState == 4 && xmlhttp.status == 200 )
	{
		alert('Plantilla borrada');
	}
}
///
/// Copia de una plantilla
/// [10]
///
function CopiarPlantilla( cModulo , cNombre )
{
	cPlantilla = document.getElementById( cNombre ).value;
	//
	if( cPlantilla == "" )
	{
		alert("Seleccione una plantilla");
		return false;
	}
	//	
	if( cPlantilla.indexOf( cModulo ) == 0 )
	{
		cPlantilla = cPlantilla.substr( cModulo.length );
		window.open( "editorPlantillas.php?modulo=" + cModulo + "&copiar=" + cPlantilla , "Documento" , "width=750,height=650,toolbar=no,location=no,directories=no,status=no,menubar=no" ); //[5]
	}
	else alert("ERROR: La plantilla no corresponde con el módulo");
}
///
/// Comprueba que el valor pasado es el de por defecto
/// [6]
function valorPorDefecto( cValor )
{
	var cNoValido = 'INTRODUZCA'; 
	if( cValor.substring( 0 , 10 ).toUpperCase() == cNoValido )
		return true;
	return false;
}
///
/// Elimina el valor de un control si tiene el valor por defecto [13]
///
function BorrarValorPorDefecto( oElemento )
{
	var cValor = oElemento.value;
	if( valorPorDefecto( cValor ) )
		oElemento.value = '';
}
///
/// Abrir ventana del selector de ficheros
/// [8]
///
function SelectorFichero( cModulo , nIdElemento , cCallback )
{
	window.open( "../admin/selectorFicheros.php?modulo=" + cModulo + "&idElemento=" + nIdElemento + "&cb=" + cCallback , "Documento" , "width=750,height=650,toolbar=no,location=no,directories=no,status=no,menubar=no" );
}
///
/// Restricción de teclas pulsadas
/// [9]
///
function keyRestrict( e , validchars )
{
	var key='', keychar='';
	key = getKeyCode(e);
	if( key == null )
		return true;
	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
	validchars = validchars.toLowerCase();
	if( validchars.indexOf(keychar) != -1 )
		return true;
	if( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
		return true;
	return false;
}
///
/// Comprobar si el valor de un campo es numérico
/// [9]
///
function esValorNumerico( oCampo )
{
	if( isNaN( oCampo.value ) || oCampo.value == '' ) 
	{
		oCampo.value = "0";
		oCampo.focus();		//El focus no funciona con el evento onblur en Firefox, por eso ponemos el valor a 0 si el valor no es numérico
		oCampo.select();
	}
	else 
		return true;
}
///
/// Función llamada desde el Actionscript de la subida de imágenes Flash
/// [12]
///
function subidaImagenFlashGenerico( nIdElemento , cModulo )
{
	var cParameters = 'accion=upload' + '&id=' + nIdElemento + '&modulo=' + cModulo;
	AjaxRequest( '../admin/uploadImageGenerico.php' , cParameters , GetSubidaImagenFlashGenerico );
}
///
/// Función llamada desde el Actionscript de la eliminación de imágenes Flash
/// [12]
///
function borrarImagenFlashGenerico( nIdElemento , cModulo )
{
	var cParameters = 'accion=delete' + '&id=' + nIdElemento + '&modulo=' + cModulo;
	AjaxRequest( '../admin/uploadImageGenerico.php' , cParameters , GetSubidaImagenFlashGenerico );
}
///
/// CallBack de Ajax para la subida de imágenes desde Flash
/// [12]
///
function GetSubidaImagenFlashGenerico( xmlhttp )
{
	if( xmlhttp.readyState == 4 && xmlhttp.status == 200 )
		document.getElementById( 'muestraImagen' ).innerHTML = xmlhttp.responseText;
}
/// [14]
/// Función para agregar la web a la lista de favoritos del navegador
///
function favoritos( cTitulo )
{
	var url = document.URL; 
	var titulo = cTitulo; // [16]
	
	if( navigator.userAgent.indexOf("Opera") != -1 ) 
		alert( 'Para añadir esta web a tus Marcadores de Opera, pulsa: [ Ctrl ] + [ D ]' );
	else if( navigator.appName == "Netscape" ) 
		window.sidebar.addPanel( titulo , url , '' ); // Firefox
	else
		window.external.AddFavorite( url , titulo );  // IE
}
/// [14] [15]
/// Simular el Ajax
///
function EjecutarFuncionPHP( cModulo , cFuncionCompleta , cIdContenedorMail )
{
	m_cContenedorFuncionPHP = cIdContenedorMail;
	AjaxRequest( '/Modulos/' + cModulo + '/explotacion.php' , cFuncionCompleta , CallBackEjecucion , false );
}
/// [14] [15]
/// CallBack de EjecutarFuncionPHP()
///
function CallBackEjecucion( xmlhttp )
{
	if( xmlhttp.readyState == 4 && xmlhttp.status == 200 )
	{
		if( xmlhttp.responseText.substr( 0 , 2 ) == 'OK' )
		{
			cRespuesta = xmlhttp.responseText.split( '***' );
			cHtml = cRespuesta[1];
			document.getElementById( m_cContenedorFuncionPHP ).innerHTML = cHtml;
		}
		else
			alert( 'Error actualizando navegador web: ' + xmlhttp.responseText );
	}
}
/*
 * [15] Comentamos las funciones de navegación redundantes con los nuevos cambios de EjecutarFuncionPHP()
 * 
///
/// Función para paginadores web genéricos por AJAX, pero sustituyendo un contenedor
/// en vez de todo el bloque main como en EjecutarFuncionPHP 
/// [11]
///
function EjecutarFuncionPHPContenedor( cContenedor , cModulo , cFuncionCompleta )
{
	m_cContenedorFuncionPHP = cContenedor;
	AjaxRequest( '/Modulos/' + cModulo + '/explotacion.php' , cFuncionCompleta , CallBackEjecucionContenedor , false );
}
///
/// Callback de EjecutarFuncionPHPContenedor
/// [11]
///
function CallBackEjecucionContenedor( xmlhttp )
{
	if( xmlhttp.readyState == 4 && xmlhttp.status == 200 )
	{
		if( xmlhttp.responseText.substr( 0 , 2 ) == 'OK' )
		{
			cRespuesta = xmlhttp.responseText.split( '***' );
			cHtml = cRespuesta[1];
			//
			// Cargamos el código html en el contenedor
			document.getElementById( m_cContenedorFuncionPHP ).innerHTML = cHtml;
		}
		else
			alert( 'Error actualizando navegador web: ' + xmlhttp.responseText );
	}
}
*/
