function generar_fecha() {
    var fecha = new Date();
    var dia_letra = fecha.getDay();
    var dia = fecha.getDate();
    var mes = fecha.getMonth();
    var anyo = fecha.getFullYear();

    switch(dia_letra) {
        case 0: dia_letra = "Domingo"; break;
        case 1: dia_letra = "Lunes"; break;
        case 2: dia_letra = "Martes"; break;
        case 3: dia_letra = "Miércoles"; break;
        case 4: dia_letra = "Jueves"; break;
        case 5: dia_letra = "Viernes"; break;
        case 6: dia_letra = "Sábado"; break;
        default: dia_letra = "Domingo"; break;
    }
    switch(mes) {
        case 0: mes = "Enero"; break;
        case 1: mes = "Febrero"; break;
        case 2: mes = "Marzo"; break;
        case 3: mes = "Abril"; break;
        case 4: mes = "Mayo"; break;
        case 5: mes = "Junio"; break;
        case 6: mes = "Julio"; break;
        case 7: mes = "Agosto"; break;
        case 8: mes = "Septiembre"; break;
        case 9: mes = "Octubre"; break;
        case 10: mes = "Noviembre"; break;
        case 11: mes = "Diciembre"; break;
        default: mes = ""; break;
    }
    document.write(dia_letra+", "+dia+" de "+mes+" de "+anyo);
}

function windowopener(URL,ancho,alto)
{
	var propiedades;
	propiedades = "toolbar=no,directories=no,menubar=no,status=no,scrollbars=yes,resizable=yes,width=" + ancho + ",height=" + alto;
	window.open(URL,'',propiedades)
	if (navigator.appVersion.indexOf("(X11") != -1 || navigator.appVersion.indexOf("(mac") != -1)
	window.open(URL,'',propiedades)

}

function AbreNuevaVentana(URL,ancho,alto)
{
	var propiedades;
	propiedades = "toolbar=no,directories=no,menubar=no,status=no,scrollbars=yes,resizable=yes,width=" + ancho + ",height=" + alto;
        window.open(URL,'newWin',propiedades)
        if (navigator.appVersion.indexOf("(X11") != -1 || navigator.appVersion.indexOf("(mac") != -1)
        window.open(URL,'newWin',propiedades)
}

function gotoURL (url)
{
	window.location.href = url;
}

function enviarFormulario(formulario) {
	eval("document." + formulario + ".submit();");
}

function reSubmit(URL) {
	document.forms[0].method='post';
	document.forms[0].action = URL;
	document.forms[0].submit();
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}







/**
*	Funcion que carga los ids y descripciones de los hidden en un select
*		Se debe proporcionar:
*			 el nombre del formulario 
*			 el nombre del select
*			 el separador del nivel 
*			 los nombre de los hidden donde se encuantran tanto los ids como las descripciones
*/
function cargarOpciones(formulario,ids,descripciones,nombreMenu,separador){

	eval("var cadenaIds=" + ids + ";");	 
	eval("var cadenaDesc=" + descripciones + ";"); 

	eval("var cadenaId=" + nombreMenu + "Id;"); 

	eval("var menu=document." + formulario + "." + nombreMenu + ";"); 
		
	if (cadenaIds!=""){
		//separamos la cadena en las diferentes entradas
		var arrayIds = cadenaIds.split(separador);
		var arrayDesc = cadenaDesc.split(separador);
		
		borrarSelect(menu);
		
		for (var i=0; i < arrayIds.length-1; i++){
			var id = "";
			var desc = "";
			// si solo contiene un id lo metemos directamente
			if(arrayIds[i].indexOf(",")==-1){
				id = arrayIds[i];
				desc = arrayDesc[i];
			}else{
				id = arrayIds[i].substr(0,arrayIds[i].indexOf(","));
				desc = arrayDesc[i].substr(0,arrayDesc[i].indexOf(","));
			}
			//alert(cadenaId + "<----->" + id);
			if (cadenaId == id){
				menu.options[i+1]= new Option(desc, id, true);
				menu.selectedIndex=i+1;
			}else{
				menu.options[i+1]= new Option(desc, id, false);		
			}
		} 
	}else{
		borrarSelect(menu);
	}
}


/**
*	Funcion que carga los hijos del nodo seleccionado en el select hijo.
*
*/
function seleccionarHijos(formulario,ids,descripciones,nombreMenu,separador,idsHijos,descripcionesHijos){
	
	eval("var cadenaIds=" + ids + ";"); 
	eval("var cadenaDesc=" + descripciones + ";"); 
	
	eval("var menu=document." + formulario + "." + nombreMenu + ";"); 
  
	// si tenemos la opcion por defecto no cargamos nada en el siguiente nivel
	if (menu.selectedIndex == 0 || cadenaIds==""){
		eval(idsHijos + "='';");   
		eval(descripcionesHijos + "='';");	

	}else{

		//separamos la cadena en las diferentes entradas
		var arrayIds = cadenaIds.split(separador);
		var arrayDesc = cadenaDesc.split(separador);
	
		var i=0;

		// -1 pq la ultima celda es una cadena vacia
		while (i < arrayIds.length-1){
			//alert(arrayIds[i] + " - " + menu.options[menu.selectedIndex].value);
			if(arrayIds[i].indexOf(menu.options[menu.selectedIndex].value)==-1){
				i++;	
			}else{
				//sacamos el primer id ya que corresponde a este nivel. Si solo existe ese id y no tiene hijos insertamos la cadena vacia
				if (arrayIds[i].indexOf(",")!=-1){
					//alert ('los metemos todos');
					eval(idsHijos + "=arrayIds[i].substr(arrayIds[i].indexOf(',')+1,arrayIds[i].length-1);");
					eval(descripcionesHijos+ "=arrayDesc[i].substr(arrayDesc[i].indexOf(',')+1,arrayDesc[i].length-1);");
				}else{
					// no tiene hijo y solo esta el id de este nodo
					//alert ('los dejamos vacios');
					eval(idsHijos + "='';");
					eval(descripcionesHijos + "='';");
				}
				i=arrayIds.length;
			}
		} 
	}	
	//alert(idsActivos.value);
	//alert(descripcionesActivas.value);
}


/**
*	Borra todas las opciones de un select que le pasamos por parametro menos la 
*	primera que se toma por defecto.
*/
function borrarSelect(elemento){

	if(!(navigator.appName=="Netscape" & parseInt(navigator.appVersion)<=4)){
	
		var auxTexto = elemento.options[0].text;
		var auxValue = elemento.options[0].value;
		
		for (var i=elemento.options.length; i>=0; i=i-1){
			elemento.options[i]=null;
		}
		elemento.options[0]=new Option(auxTexto,auxValue,true);
	}else{
		// para netscape 4.75
		elemento.selectedIndex = 0;
		for (var i=elemento.options.length-1; i>=1; i = i-1){
			elemento.options[i] = null ;
		}
	}
}


/**
*	Vacia de informacion el select que se le indica
*/
function resetSelect(formulario,elemento){
	
	if(!(navigator.appName=="Netscape" & parseInt(navigator.appVersion)<=4)){
		eval("var objeto=document." + formulario + "." + elemento + ";"); 
		var auxTexto = objeto.options[0].text;
		var auxValue = objeto.options[0].value;
		
		for (var i=objeto.options.length; i >= 0; i=i-1){
			objeto.options[i]=null;
		}
		objeto.options[0]=new Option(auxTexto,auxValue,true);
	}else{
		// para netscape 4.75
		eval("var objeto=document." + formulario + "." + elemento + ";"); 
		objeto.selectedIndex = 0;
		for (var i=objeto.options.length-1; i>=1; i=i-1){
			objeto.options[i] = null ;
		}
	}
}

/**
*	Funcion que recarga la opcion ya elegida para los casos en que se realiza un resubmit
*/
function reseleccion(formulario,elemento,separador,hijo){
	
	cargarOpciones(formulario,elemento + 'Ids',elemento + 'Descripcion',elemento,separador);
	if (hijo != ''){ 
		seleccionarHijos(formulario,elemento + 'Ids',elemento + 'Descripcion',elemento,separador,hijo + 'Ids',hijo + 'Descripcion');
	}

}

/**
* Carga los datos en el select que contiene los nodos raiz.
*/
function cargarDatosIniciales(formulario,ids,descripciones,nombreSelect,separador){

	
	eval("var auxIds=document." + formulario + "." + ids + ".value;");
	eval("var auxDescripcion=document." + formulario + "." + descripciones + ".value;");  

	eval(nombreSelect + "Ids = auxIds;" );
	eval(nombreSelect + "Descripcion = auxDescripcion;");  

	cargarOpciones(formulario,nombreSelect +'Ids',nombreSelect +'Descripcion',nombreSelect ,separador);

}
function string2fecha(cadena) {
	if (!cadena)
		return new Date();
				
	trozos = cadena.split("/");
	if (trozos.length != 3)
		return new Date();
				
	return new Date(trozos[2],trozos[1]-1,trozos[0]);
}
		
function fecha2string(fecha) {
	var dia = new String(fecha.getDate());
	var mes = new String(fecha.getMonth()+1);
	var anio = new String(fecha.getFullYear());
			
	if (dia.length == 1)
		dia = "0" + dia;
				
	if (mes.length == 1)
		mes = "0" + mes;
				
	return dia + "/" + mes + "/" + anio;
}

function llamaAlCalendario(fecha,objName) 
{
	var campito = findObj(objName);
	var top = 0;
	var left = 0;
	
	
	top = campito.clientTop + campito.offsetTop + campito.clientHeight + 5;
	left = campito.clientLeft + campito.offsetLeft;
	
	var padre = campito.offsetParent;
	while (padre != null) {
		top += padre.offsetTop;	
		left += padre.offsetLeft;
		padre = padre.offsetParent; 
	} 
	
	cal.setFechaSeleccionada(fecha);
	cal.mostrar(top,left,objName);
}

function testRegExp(form_name, element_name, re)
{
	return new RegExp(re).test(document.forms[form_name].elements[element_name].value);
}

function validateNumber(form_name, element_name, allow_blank)
{
	//return (!allow_blank && value == '') ? false : testRegExp(form_name, element_name, '^-?[0-9]*\\.?[0-9]*$');
	return testRegExp(form_name, element_name, '^-?[0-9]*\\.?[0-9]*\\,?[0-9]*$');
}

//----------------------------------------------------------------
//----------------------------------------------------------------
//FUNCIONES PARA VALIDAR LOS FORMULARIOS DE INSCRIPCIÓN
//----------------------------------------------------------------
//----------------------------------------------------------------

function compruebaDatosCantidad()
{
	if (document.forms['form1'].tipoInscripcion.value == '4' && document.forms['form1'].unidades.value == '')
	{
		alert("Es obligatorio indicar la cantidad de ejemplares que desea comprar.")
		return;
	}
			
	document.forms['form1'].action = '../comun/formularioInscripcionN.asp';
	document.forms['form1'].submit();
		
}

function compruebaDatosInscripcion()
{
	var i;		
		
	if (document.forms['inscripcion'].nombre.value == "")
	{
		document.forms['inscripcion'].nombre.focus();
		alert ("Es obligatorio introducir el nombre del suscriptor");
		return;
	}
	if (document.forms['inscripcion'].apellido1.value == "")
	{
		document.forms['inscripcion'].apellido1.focus();
		alert ("Es obligatorio introducir el primer apellido del suscriptor");
		return;
	}
	if (document.forms['inscripcion'].empresa.value == "")
	{
		document.forms['inscripcion'].empresa.focus();
		alert ("Es obligatorio introducir la empresa o institución del suscriptor");
		return;
	}
	if (document.getElementById("idProvincia"))
	{
		if (document.forms['inscripcion'].idProvincia.value == "")
		{
			document.forms['inscripcion'].idProvincia.focus();
			alert ("Es obligatorio introducir la provincia en los datos del suscriptor");
			return;
		}
	}
	if (document.getElementById("provincia"))
	{
		if (document.forms['inscripcion'].provincia.value == "")
		{
			document.forms['inscripcion'].provincia.focus();
			alert ("Es obligatorio introducir la provincia en los datos del suscriptor");
			return;
		}
	}
	if (document.forms['inscripcion'].ciudad.value == "")
	{
		document.forms['inscripcion'].ciudad.focus();
		alert ("Es obligatorio introducir la ciudad en los datos del suscriptor");
		return;
	}
	if (document.forms['inscripcion'].cp.value == "")
	{
		document.forms['inscripcion'].cp.focus();
		alert ("Es obligatorio introducir el código postal en los datos del suscriptor");
		return;
	}
	if (document.forms['inscripcion'].direccion.value == "")
	{
		document.forms['inscripcion'].direccion.focus();
		alert ("Es obligatorio introducir una dirección en los datos del suscriptor");
		return;
	}
	/*if (document.forms['inscripcion'].email.value == "")
	{
		document.forms['inscripcion'].email.focus();
		alert ("Es obligatorio introducir el email en los datos del suscriptor");
		return;
	}*/		

	if (!compruebaMail(document.forms['inscripcion'].email.value))
	{
		document.forms['inscripcion'].email.focus();
		alert ("Es obligatorio introducir un e-mail correcto en los datos del suscriptor");
		return;
	}		

	if (document.forms['inscripcion'].telefono.value == "")
	{
		document.forms['inscripcion'].telefono.focus();
		alert ("Es obligatorio introducir el teléfono en los datos del suscriptor");
		return;
	}
	
	if (document.getElementById("empresaFactura"))
	{
		if (document.forms['inscripcion'].empresaFactura.value == "")
		{
			document.forms['inscripcion'].empresaFactura.focus();
			alert ('Es obligatorio introducir la empresa o institución en los datos para la factura');
			return;
		}
		if (document.forms['inscripcion'].nombreFactura.value == "")
		{
			document.forms['inscripcion'].nombreFactura.focus();
			alert ('Es obligatorio introducir el nombre de la persona en los datos para la factura');
			return;
		}
		if (document.forms['inscripcion'].direccionFactura.value == "")
		{
			document.forms['inscripcion'].direccionFactura.focus();
			alert ('Es obligatorio introducir una dirección en los datos para la factura');
			return;
		}
		if (document.forms['inscripcion'].cpFactura.value == "")
		{
			document.forms['inscripcion'].cpFactura.focus();
			alert ('Es obligatorio introducir el código postal en los datos para la factura');
			return;
		}
		if (document.forms['inscripcion'].ciudadFactura.value == "")
		{
			document.forms['inscripcion'].ciudadFactura.focus();
			alert ('Es obligatorio introducir la ciudad en los datos para la factura');
			return;
		}			
		if (document.forms['inscripcion'].ciudadFactura.value == "")
		{
			document.forms['inscripcion'].ciudadFactura.focus();
			alert ('Es obligatorio introducir la provincia en los datos para la factura');
			return;
		}			
		if (document.forms['inscripcion'].cifFactura.value == "")
		{
			document.forms['inscripcion'].cifFactura.focus();
			alert ('Es obligatorio introducir el cif en los datos para la factura');
			return;
		}
		if (document.forms['inscripcion'].telefonoFactura.value == "")
		{
			document.forms['inscripcion'].telefonoFactura.focus();
			alert ('Es obligatorio introducir el teléfono en los datos para la factura');
			return;
		}
		//Si no está marcada la opción de Enviar factura a otra dirección, enviamos esos datos vacios.
		if(!document.forms['inscripcion'].otraDireccion.checked)
		{
			document.forms['inscripcion'].empresaEnvioFactura.value = "";
			document.forms['inscripcion'].tratamientoEnvioFactura.value = "";
			document.forms['inscripcion'].nombreEnvioFactura.value = "";
			document.forms['inscripcion'].direccionEnvioFactura.value = "";
			document.forms['inscripcion'].cpEnvioFactura.value = "";
			document.forms['inscripcion'].ciudadEnvioFactura.value = "";								
		}
		else
		{
			if (document.forms['inscripcion'].empresaEnvioFactura.value == "")
			{
				document.forms['inscripcion'].empresaEnvioFactura.focus();
				alert ('Es obligatorio introducir la empresa o institución en los datos para enviar factura');
				return;
			}
			if (document.forms['inscripcion'].nombreEnvioFactura.value == "")
			{
				document.forms['inscripcion'].nombreEnvioFactura.focus();
				alert ('Es obligatorio introducir un contacto en los datos para enviar la factura');
				return;
			}
			if (document.forms['inscripcion'].direccionEnvioFactura.value == "")
			{
				document.forms['inscripcion'].direccionEnvioFactura.focus();
				alert ('Es obligatorio introducir una dirección en los datos para enviar la factura');
				return;
			}
			if (document.forms['inscripcion'].cpEnvioFactura.value == "")
			{
				document.forms['inscripcion'].cpEnvioFactura.focus();
				alert ('Es obligatorio introducir el código postal en los datos para enviar la factura');
				return;
			}
			if (document.forms['inscripcion'].ciudadEnvioFactura.value == "")
			{
				document.forms['inscripcion'].ciudadEnvioFactura.focus();
				alert ('Es obligatorio introducir la ciudad en los datos para enviar la factura');
				return;
			}			
			if (document.forms['inscripcion'].provinciaEnvioFactura.value == "")
			{
				document.forms['inscripcion'].provinciaEnvioFactura.focus();
				alert ('Es obligatorio introducir la provincia en los datos para enviar la factura');
				return;
			}			
			
		}

	}
	
	if (document.forms['inscripcion'].VoyAFormularioPago.value == "1")
	{	
		document.forms['inscripcion'].action = '../comun/formularioPago.asp';
	}
	else
	{
		document.forms['inscripcion'].action = '../comun/mostrarResumen.asp';
	}  
	  
	document.forms['inscripcion'].submit();
}

function compruebaDatosPago()
{
	
	var eleccionPago = false;
	var i;

	for (i = 0; i < document.forms['pago'].formaPago.length; i++)
	{
		if (document.forms['pago'].formaPago[i].checked)
			eleccionPago = true; 
	}
	if (!eleccionPago)
	{
		alert("Es obligatorio indicar la forma de pago.")
		return;
	}
		
	document.forms['pago'].action = '../comun/mostrarResumen.asp';
	document.forms['pago'].submit();
		
}

function compruebaMail(texto)
{ 
    var mailres = true;             
    var cadena = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ1234567890@._-"; 
     
    var arroba = texto.indexOf("@",0); 
    if ((texto.lastIndexOf("@")) != arroba) arroba = -1; 
     
    var punto = texto.lastIndexOf("."); 
                 
    for (var contador = 0 ; contador < texto.length ; contador++)
    { 
        if (cadena.indexOf(texto.substr(contador, 1),0) == -1)
        { 
            mailres = false; 
            break; 
		}
    }

    if ((arroba > 1) && (arroba + 1 < punto) && (punto + 1 < (texto.length)) && (mailres == true) && (texto.indexOf("..",0) == -1)) 
		mailres = true; 
    else 
		mailres = false; 
                 
    return mailres; 
} 
//----------------------------------------------------------------
//----------------------------------------------------------------

