// Javascript desarrollado por INTERNETAMEDIDA S.L. 
ns4 = (document.layers)? true:false; 
ie4 = (document.all)? true:false;
ns6 = (document.getElementById) ? true:false; 

titNovedades = new Array;  
titNovedades["es"]=new Array("Periodo de Inscripción.",
						     "Periodo de envío de comunicaciones.",
							 "Programa preliminar."
						    );

txNovedades = new Array;  
txNovedades["es"]=new Array ("Comprende desde el 15 de Enero de 2010 hasta el 25 de Abril de 2010.",
							 "Se podr&aacute;n enviar desde el 15 de Enero de  2010 hasta el 28 de Marzo de  2010.",
							 "Puede ver el programa en formato PDF pinchando <a href='pdf/programa.pdf' target='_blank'>aqui</a>."
							 );


desNovedades = new Array;
desNovedades["es"]=new Array ("El periodo de inscripción comenzará a las 0 horas (Horario de España: UTC + 1) del día 15 de Enero de 2010 hasta las 24 horas (Horario de España: UTC + 1) del día 25 de Abril de 2010.",
							  "El periodo de envío de los trabajos se podrán realizar desde a las 0 horas (Horario de España: UTC + 1) del día 15 de Enero de 2010 hasta las 24 horas a las (Horario de España: UTC + 1) del día 28 de Marzo de 2010."
							 );

lenguage = "es";
mensajes = new Array;
mensajes["es"]=new Array("Debe introducir los campos obligatorios.",
						 "Debe introducir una dirección de correo válida.",
						 "Debe introducir el usuario y la contraseña.",
						 "Debe introducir un CIF válido.",
						 "Debe introducir un NIF válido.",
						 "Debe introducir un CIF/NIF válido.",
						 "Debe introducir una dirección web válida.",
						 "Debe introducir una fecha válida con el formato dd/mm/aaaa.",
						 "El resumen debe tener una logitud máxima de 1.540 caracteres.",
						 "Los items 2, 3, 4, 5, 6, 7 y 8 deben tener una lontitud total máxima de 14.300 caracteres.",
						 "El coautor ya se encuentra vinculado a esta comunicación.",
						 "El registro seleccionado ha realizado el pago de la inscripcion. ¿ Desea eliminar el registro de todas formas ?"
						);

titNov = "";
desNov = "";

alertas = new Array;
alertas["I"]=new Array("Registro insertado CORRECTAMENTE."
						);

alertas["U"]=new Array("Registro actualizado CORRECTAMENTE."
						);

alertas["D"]=new Array("Registro eliminado CORRECTAMENTE."
						);

//Patrones para validar los campos
var pt_digitos = /^\d*$/;
//var pt_email= /[A-Za-z0-9_\+\-\.]+@[A-Za-z0-9\-]+(\.[A-Za-z]{2,3})?\.[A-Za-z]{2,3}$/;
var pt_email= /[A-Za-z0-9_\+\-\.]+@([A-Za-z0-9\-]+\.)?[A-Za-z0-9\-]+(\.[A-Za-z]{2,3})?\.[A-Za-z]{2,3}$/;
//var pt_email=/\w.+\@\w.+\.[a-z]{2,3}$/;
var pt_cif=/^[AaBbCcDdEeFfGgHhJjKkLlMmNnPpQqSsUuVvWwRr][0-9]{7}[AaBbCcDdEeFfGgHhIiJj0123456789]$/;
var pt_nif=/^([XxYyZz]|[0-9])[0-9]{7}([a-z]|[A-Z])$/;

// Variables globales para el grid de registros
id_sel = 'NULL';
class_sel = 'pijama_sel';
class_antes_Over = 'pijama';
obj_selected = null;
// Variables globales para el grid de registros

function WriteClassOnMouseOut (obj) {
  
    if (obj.id!=id_sel) {
	  	obj.className = class_antes_Over;
	}
}

function WriteClassOnMouseOver (obj) {
	
    if (obj.id!=id_sel) {	  	
	  	obj.className = class_sel;
	}
}

function select_registro (obj) {
 
	if (obj == obj_selected) {

	  // Se quiere deseleccionar el registro
	  id_sel = "NULL"; 
	  obj_selected.className = class_antes_Over;
	  obj_selected.id = '';
	  obj_selected = null;
	}
	else {
		  if (obj_selected != null) {
			// Restituimos el registro seleccionado si previamente habiamos seleccionado uno.
			obj_selected.className = class_antes_Over;
			obj_selected.id = '';
			obj_selected = null;
		  }
		  else {
			id_sel = "selec";
		  }
	  
	  obj.id = 'selec';
	  obj.className = class_sel;
	  obj_selected = obj;

	}
	  	
}

function mayusculas(obj) {
	obj.value = obj.value.toUpperCase();
}

function login (form) {	
	if(form.usrUsuario.value.length > 0 && form.usrPwd.value.length > 0){
		//alert("En proceso de construcción. Disculpe las molestias.");
		form.submit();
	}
	else{
		alert("Debe rellenar los campos usuario y contraseña.");
	}
}

function MM_openBrWindow(theURL,winName,features) {
  window.open(theURL,winName,features);
}

function abrirNovedad (indice) {
	//alert(indice);
	titNov = titNovedades["es"][indice];
	desNov = desNovedades["es"][indice];
	titulo = document.getElementById("titNov");
	
	if(titulo.lastChild)
		titulo.removeChild(titulo.lastChild);
	titulo.appendChild(document.createElement("B")).appendChild(document.createTextNode(" "+titNov));
	descripcion = document.getElementById("desNov");
	
	if(descripcion.lastChild)
		descripcion.removeChild(descripcion.lastChild);
	descripcion.appendChild(document.createTextNode(desNov));
	obj = document.getElementById("detalleNovedad");
	
	obj.style.visibility = "visible";
}

function cerrarNovedad () {
	obj = document.getElementById("detalleNovedad");
	obj.style.visibility = "hidden";
}

function comprobarEmail(obj){
	cadena = obj.value;
	if (cadena.length > 0) {
    	if (cadena.search(pt_email) != 0) { 
			alert(mensajes[lenguage][1]);
			obj.focus();
			obj.select();
			return false;
		}
		else{
			return true;
		}
  	}
  	else{
  		return true;
	}
}

/*
-------------------------------------------------------------------------------------
*/
function comprobarCIF (obj) {
  cadena = obj.value;
  
  if (cadena.length == 0)
  	return (true);
	
  else if (cadena.length > 0) {
    if ( (cadena.search(pt_cif) != 0) && (cadena.search(pt_nif) != 0) ){ 
      alert(mensajes[lenguage][5]);
	  obj.focus();
	  obj.select();
	  return (false);
    }
  }

  if(validarCIF(obj) || comprobarNIF(obj,false))
  		return true;
  else{
	 	alert(mensajes[lenguage][5]);
	  	obj.focus();
	  	obj.select();
	  	return (false);
  } 
}

function validarCIF(obj){

	cadena = obj.value;
	
	var pares = 0;
    var impares = 0;
    var suma;
    var ultima;
    var unumero;
    var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I");
    var xxx;
	
	//Coge la ultima letra/numero de la cadena 
    ultima = cadena.substr(8,1);
	
	cadena = cadena.toUpperCase();
	
    for (var cont = 1 ; cont < 7 ; cont ++){

        xxx = (2 * parseInt(cadena.substr(cont++,1))).toString() + "0";
        impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
        pares += parseInt(cadena.substr(cont,1));
    }

    xxx = (2 * parseInt(cadena.substr(cont,1))).toString() + "0";
    impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));

    suma = (pares + impares).toString();
    unumero = parseInt(suma.substr(suma.length - 1, 1));
    unumero = (10 - unumero).toString();
    if(unumero == 10) unumero = 0;

    if ((ultima == unumero) || (ultima == uletra[unumero]))
          return true;
    else
		  return (false);

}
/*-------------------------------------------------------------------------------------
--Nombre.......: comprobarNIF
--Descripción..: Procedimiento que comprueba el NIF introducido.
--Parámetros...: obj .- Campo del formulario donde insertamos el NIF
				 mostrar.- Booleano que indica si el NIF se muestra o no en el formulario
--Utilizado por: 
--Ult. modific.: 12/01/2010
-------------------------------------------------------------------------------------
*/
function comprobarNIF (obj,mostrar) {
  
  mayusculas(obj);
  
  cadena = obj.value;
  if(mostrar==null)
  	mostrar=true;

  if (cadena.length == 0)
  	return (true);
	
  else if (cadena.length > 0) {
    if (cadena.search(pt_nif) != 0) {
	  if(mostrar){
      	alert(mensajes[lenguage][4]);
	  	obj.focus();
	  	obj.select();
	  }
	  return (false);
    }
  }
  
  //Cadena con las letras del DNI en orden.
  var lockup = 'TRWAGMYFPDXBNJZSQVHLCKE';
  
  /*
  if (cadena.charAt(0).toUpperCase() == "X")
	numero = cadena.substr(1,7);
  else
	numero = cadena.substr(0,8);
  */
   numero = cadena.substr(0,8);
   // 23/03/2009 - Para comprobar los NIE nuevos 
   numero = numero.toUpperCase();
   numero = numero.replace(/X/,"0");
   numero = numero.replace(/Y/,"1");
   numero = numero.replace(/Z/,"2");
	  
  letra = lockup.charAt(numero % 23);
  
  if(letra == (cadena.substr(8,1)).toUpperCase())
	return (true);
	
  else {
	  if(mostrar){
      	alert(mensajes[lenguage][4]);
	  	obj.focus();
	  	obj.select();
	  }
  	return (false);
  }
  	
}

function check_obli(form,lang){
	for(i=0;i < form.length;i++){
		if(form.elements[i].className == 'FieldObl' && (form.elements[i].value == null || form.elements[i].value == '')){
			alert (mensajes[lang][0]);
			return(false);
		}
	}
	return(true);
}

function envContactar (form) {
	if(comprobarEmail(form.fldEmail) && check_obli(form,"es")){
		form.submit();
	}
}

function envInscripcion (form) {
	if(comprobarEmail(form.insEmail) && check_obli(form,"es")){
		form.submit();
	}
}


/*
-------------------------------------------------------------------------------------
--Nombre.......: mostrarMensaje()
--Descripción..:  Muestra una alerta procedente de operaciones insert, upd, del.
--Parámetros...:
--Utilizado por: 
--Ult. modific.: 28/12/2009 - Beatriz
-------------------------------------------------------------------------------------
*/
function mostrarMensaje (mensaje, tipMensaje) {
	
	if (mensaje == "")
	  alert(alertas[tipMensaje])
	else
	alert (mensaje);
}
/*
-------------------------------------------------------------------------------------
--Nombre.......: escribirMensaje()
--Descripción..: Escribe una alerta procedente de operaciones insert, upd, del.
--Parámetros...:
--Utilizado por: 
--Ult. modific.: 29/12/2009 - Beatriz
-------------------------------------------------------------------------------------
*/
function escribirMensaje (mensaje, tipMensaje) {
	
	if (mensaje == "")
	  document.write(alertas[tipMensaje])
	else
	  document.write(mensaje);
}

/*
-------------------------------------------------------------------------------------
--Nombre.......: mostrarPagina()
--Descripción..: carga la página que se le pasa por parametro.
--Parámetros...:
--Utilizado por: controlError.jsp, login.jsp
--Ult. modific.: 29/12/2009 - Jaime
-------------------------------------------------------------------------------------
*/
function mostrarPagina(url){
	document.location.href = url;
}

function valorCheckBox (obj) {

var valor = '';

	for(i=0;i<obj.length;i++) {
		   if (obj[i].checked)
				valor = obj[i].value;
	}
	return valor;
 
}

/*-------------------------------------------------------------------------------------
--Nombre.......: cargarForm
--Descripción..: Funcion que coge los valores introducidos en el formulario haciendo 
				 distinciones dependiendo del tipo del campo y los carga en el formulario
				 de envio.
--Parámetros...: form - Formulario de origen	
--				 formoculto	- Formulario de envio
--Utilizado por:  
--Ult. modific.: 07/01/2009
-------------------------------------------------------------------------------------
*/
function cargarForm (form, formoculto) {

	var nameFld;
	var radioCad='';

	objFrmOrigen = eval("document." + form);
	var i=0;
	while (i<objFrmOrigen.length) {

	    nameFld = objFrmOrigen.elements[i].name;

		if (nameFld.length > 0) {
			objFld = eval ("document." + formoculto+ "." + nameFld);

			if (objFld != null) {
				//Radio
				if (objFrmOrigen.elements[i].type=="radio") {
					if(radioCad.indexOf(objFrmOrigen.elements[i].name)==-1){
						objRb = eval("document." + form + "." + objFrmOrigen.elements[i].name);
						objFld.value = valorCheckBox (objRb);
						radioCad=radioCad+objFrmOrigen.elements[i].name+"/";

					}
				}

				//Checkbox
				else if (objFrmOrigen.elements[i].type=="checkbox")
					objFld.value = valorCasilla(objFrmOrigen.elements[i]);
				//Textarea
				//else if (objFrmOrigen.elements[i].type=="textarea")
					//objFld.value = replaceEnterporBRXHTML(objFrmOrigen.elements[i].value);
				//Otros
				else
					objFld.value = objFrmOrigen.elements[i].value;
		  }

		}
		i++;
	 }
}

function despuesDel (coderror, mensaje, tipMensaje) {
	if (coderror == "0")
	  alert(alertas[tipMensaje])
	else
		alert (mensaje);
		
	if (coderror == "0")
		document.location.reload();
}

function bisiesto (anyo) {
  if ((anyo % 100) == 0){
   if ((anyo % 400) == 0){ return true; }
  }
  else {
   if ((anyo % 4) == 0) { return true; }
  }
  return false;
}

function escribefecha(obj) {
	aux = obj.value;
	aux2 = "";
	aux4 = "";
	aux3 = "1234567890";
	for (irep=0;irep<aux.length;irep++)
		if (aux3.indexOf(aux.charAt(irep))>=0)
			aux2 += aux.charAt(irep);
	if (aux2.length>0 && aux2.charAt(0)>3)
		aux2 = "0" + aux2 + "";
	if (aux2.length>2 && aux2.charAt(2)>1)
		aux2 = aux2.substr(0,2)  + "0" + aux2.substr(2) + "";
	if (aux2.length>1 && aux2.charAt(0)==3 && aux2.charAt(1)>1)
		aux2 = aux2.substr(0,1);
	if (aux2.length>3 && aux2.charAt(2)==1 && aux2.charAt(3)>2)
		aux2 = aux2.substr(0,3);

	for (irep=0;irep<aux2.length;irep++)
		if ((irep==1 && aux2.length!=2) || (irep==3 && aux2.length!=4))
			aux4 += aux2.charAt(irep) + "/";
		else
			aux4 += aux2.charAt(irep);

	obj.value = aux4;
}

function val_fecha (vDia, vMes, vAnyo)
{
 if(vDia.length!=0 && vMes.length!=0 && vAnyo.length!=0)
 {
  if ((!isNaN(vDia))&&(!isNaN(vMes))&&(!isNaN(vAnyo)))
  {
   
    var dia=vDia
    var mes=vMes
    var anyo=vAnyo
    if ((mes<1)||(mes>12)) { return false; }
    if ((dia<1)||(dia>31)) { return false;}
    if ((dia>30)&&((mes==4)||(mes==6)||(mes==9)||(mes==11))){ return false; }
    if ((dia>28)&&(mes==2)&&(!bisiesto(anyo))) { return false; }
    if ((dia>29)&&(mes==2)&&(bisiesto(anyo))) { return false; }
    if (anyo<1900){ return false; }
    
    return true;
  }
  else 
  {
   return false;
  }
 }
}

function validamosfecha(cad) {
	aux = cad.value;

	eldia = aux.substr(0,2);
	elmes = aux.substr(3,2);
	elano = aux.substr(6,4);

	return val_fecha(eldia,elmes,elano);
}

function comprobarFecha (obj) {
  if (obj.value.length > 0) {
    if (!validamosfecha(obj)) {
      alert(mensajes[lenguage][7]);
	  obj.focus();
	  obj.select();
	  return (false);
    }
	else
		return (true);
  }
  else
  	return (true);
}

function validar (obj, patron) {
	var subcadena = "";
	cadena = obj.value;
	if (cadena.search(patron) != 0) {
	  subcadena = cadena.charAt(0);
	  if (subcadena.search(patron) != 0)
	    subcadena = "";
	  for (irep=1;irep<cadena.length;irep++) {
	    auxiliar = subcadena + cadena.charAt(irep);
	    if (auxiliar.search(patron) == 0)  
			subcadena += cadena.charAt(irep);	
	  }
	  obj.value = subcadena; 
	}   
}

function replaceEnterporBRXHTML (campo) {

  if (ie4) {
    campo = campo.replace (/\r\n/gi,"<BR/>");
  }
  else if ((ns6)||(ns4)) {
	campo = campo.replace (/\n/gi,"<BR/>");
    campo = campo.replace (/\r/gi,"<BR/>");

  }

  return campo;
}

function replaceBRporEnter (campo) {

  campo = campo.replace (/<BR>/gi,"\n");
  campo = campo.replace (/<BR\/>/gi,"\n");
  return campo;
}

/*-------------------------------------------------------------------------------------
--Nombre.......: deshabilitarForm
--Descripción..: Deshabilita todos los campos de un formulario.
--Parámetros...: form - Formulario a deshabilitar	
--Utilizado por: 
--Ult. modific.: 20/01/2010 Jaime
-------------------------------------------------------------------------------------
*/
function deshabilitarForm (form) {

	var nameFld;
	var radioCad='';

	objFrmOrigen = eval("document." + form);
	var i=0;
	while (i<objFrmOrigen.length) {

	    nameFld = objFrmOrigen.elements[i].name;

		if (nameFld.length > 0) {
			
			if (objFrmOrigen.elements[i].type=="radio" || objFrmOrigen.elements[i].type=="checkbox" || objFrmOrigen.elements[i].type=="select-one")
				objFrmOrigen.elements[i].disabled = "true";
			else
				objFrmOrigen.elements[i].readOnly = "true";
		}
		i++;
	 }
}

/*-------------------------------------------------------------------------------------
--Nombre.......: trim
--Descripción..: Simula el funcionamiento de la función trim() de java.
--Parámetros...: valor - texto al que hay que quitarle los espacios	
--Utilizado por: satse.jsp -> quitaEspacios()
--Ult. modific.: 29/01/2010 Jaime
-------------------------------------------------------------------------------------
*/
function trim (valor) {
  primerBlanco = /^( )+/
  ultimoBlanco = /( )+$/
  //variosBlancos = /[ ]+/g

  valor = valor.replace (primerBlanco,"");
  valor = valor.replace (ultimoBlanco,"");
  //valor = valor.replace (variosBlancos,"");

  return valor;
}

function quitaEspacios(obj){

	obj.value = trim(obj.value);

}

/*-------------------------------------------------------------------------------------
--Nombre.......: quitaEspaciosySaltos
--Descripción..: Simula el funcionamiento de la función trim() de java asi como los 
-- 				 saltos de linea sin contenido entre medias.
--Parámetros...: valor - texto al que hay que quitarle los espacios	y saltos de linea
--Utilizado por: 
--Ult. modific.: 06/05/2010 Beatriz
-------------------------------------------------------------------------------------
*/
function quitaEspaciosySaltos (obj) {
  saltoIEFirst = /^(\r\n)+/
  saltoIELast = /(\r\n)+$/
  saltoOt1First = /^\n+/
  saltoOt1Last = /\n+$/
  saltoOt2First = /^\r+/
  saltoOt2Last = /\r+$/
  
  var valorTextArea = "";
 
  valorTextArea = obj.value;
  
  if (ie4) {
    valorTextArea = valorTextArea.replace (saltoIEFirst,"");
	valorTextArea = valorTextArea.replace (saltoIELast,"");
  }
  else if ((ns6)||(ns4)) {
	valorTextArea = valorTextArea.replace (saltoOt1First,"");
	valorTextArea = valorTextArea.replace (saltoOt1Last,"");
    valorTextArea = valorTextArea.replace (saltoOt2First,"");
	valorTextArea = valorTextArea.replace (saltoOt2Last,"");

  }
  
  valorTextArea = trim(valorTextArea);
  
  // Asigna el resultado al objeto de formulario
  obj.value = valorTextArea;
  
}

function goRegistro (objFrmEnv, movimiento) {
	
	objFrmEnv.desplaza.value = movimiento;
	objFrmEnv.submit();
}

/*-------------------------------------------------------------------------------------
--Nombre.......: mostrarCapa 
--Descripción..: Muestra una capa oculta cullo nombre se pasará por parámetro
--Parámetros...: nomCapa - nombre de la capa a visualizar
--Utilizado por: 
--Ult. modific.: 23/02/2010 Jaime
-------------------------------------------------------------------------------------
*/
function mostrarCapa (nomCapa) {
	obj = document.getElementById(nomCapa);
	obj.style.visibility = "visible";
}

/*-------------------------------------------------------------------------------------
--Nombre.......: ocultarCapa
--Descripción..: Oculta una capa cullo nombre se pasará por parámetro
--Parámetros...: nomCapa - nombre de la capa a ocultar
--Utilizado por: 
--Ult. modific.: 23/02/2010 Jaime
-------------------------------------------------------------------------------------
*/
function ocultarCapa (nomCapa) {
	obj = document.getElementById(nomCapa);
	obj.style.visibility = "hidden";
}

/*-------------------------------------------------------------------------------------
--Nombre.......: lanzar_sesion
--Descripción..: Redirige a la pagina lanzada por parametro si no tenemos sesion
--Parámetros...: url - pagina de destino
--Utilizado por: cgs_sinSesion.jsp
--Ult. modific.: 05/05/2010 Jaime
-------------------------------------------------------------------------------------
*/
function lanzar_sesion (url) {
  
  if (parent.dialogArguments == undefined) {
	if (parent.window.opener == undefined) {
	  // Estamos en un iframe
	  parent.document.location.href = url; 
	}
	else {
	  // Estamos en un pop-up normal
	  parent.window.opener.document.location.href = url;
	  parent.window.close();
	}
  }
  else {
    // Estamos en un pop-up showModal
    cerrarUrlShowModal (url);
  }
}