// ===================================================================
// FUNCIONES COMPARTIDAS
//
// Eliminación de comillas simples de un <form>
//
// ===================================================================

// ------------------------------------------------------------------


function derecha(e){
if (navigator.appName == 'Netscape' && (e.which == 3 || e.which == 2))
return false;
else
	if (navigator.appName == 'Microsoft Internet Explorer' && (event.button == 2 || event.button == 3))
	{
	alert('Función no habilitada.');
	return false;
	}
	return true;
}

document.onmousedown=derecha;

if (document.layers) window.captureEvents(Event.MOUSEDOWN);
window.onmousedown=derecha;

function isblank(s)
{
    for(var i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
    }
    return true;
}

// -------------------------------------------------------------------

/* Función que sustituye en una cadena todas las 
   ocurrencias de la cadena inicial por final  */

function sustituye(cad, inicial, final)
{
	i = 0;
	cad += "";
   while (i != -1)
	{
		i = cad.indexOf(inicial, i);
		if (i != -1)
		{
			cad = cad.substring(0, i) + final +  cad.substring(i + inicial.length, cad.length);
			i += inicial.length + 1;
		}
	}
	return cad;
}

// ------------------------------------------------------------------

function quitaComillas(f)
{
    var msg;
    var empty_fields = "";
    var errors = "";

    for(var i = 0; i < f.length; i++) {
        var e = f.elements[i];
        if ( (e.type == "text") || (e.type == "textarea") ) 
	  {
            // Mirar si es vacío
            if ((e.value == null) || (e.value == "") || isblank(e.value)) 
		{
                continue;
            }
		else
		{
            e.value = sustituye(e.value, "'", "''");
		}
        }
    }
}	
	
// ------------------------------------------------------------------

// Controlar la longitud (maxLength) de un TEXTAREA

function maxTextArea(obj, i) 
{
	if (obj.value.length >= i) 
	{
		alert("Ha excedido la longitud de este campo.")
		obj.value = obj.value.substr(0, i - 1);
	}
}

// -------------------------------------------------------------------

// Sustituye en una cadena la primera ocurrencia un valor "inicial" por otro "final" 

function sustituye_uno(cad, inicial, final)
{	
   cad += "";       
	var i = cad.indexOf(inicial);
	if (i != -1)
	{
		cad = cad.substring(0, i) + final +  cad.substring(i + 1, cad.length);
	}
	return cad;
}

// ------------------------------------------------------------------

// Validar una cadena con un formato sin espacios, ni otros caracteres que no sean número o letras

function valida_cadena(val) {
	var digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	for (var i=0; i < val.length; i++) {
		if (digits.indexOf(val.charAt(i)) == -1) { return false; }
		}
	return true;
	}

// ------------------------------------------------------------------

// Validar NIF

function letraNIF(nif) {
  var cadena = 'TRWAGMYFPDXBNJZSQVHLCKE';
  var nifmayus = nif.toUpperCase();
  
  if (!/^[A-Za-z0-9]{9}$/.test(nif)){  // Son 9 dígitos? 
     alert ("Longitud incorrecta, un NIF consta de nueve dígitos (Ocho números y una letra)");
	 return false;
  }
  else if (cadena.indexOf(nifmayus.charAt(8)) == -1){ // Es una letra de las admitidas ?
     alert("El último dígito del NIF es incorrecto, debe ser una letra.");
	 return false;
  }
  else {
	var nifnum = parseInt(nif, 10);
	var posicion = nifnum % 23;
	if (nifmayus.substring(9, 8) == cadena.charAt(posicion))
		return true;
	else{
		alert("El NIF introducido es incorrecto, no puede existir ningún NIF con esos dígitos y esa letra.");
		return false;}
  }
}

// ------------------------------------------------------------------

// Validar CIF
function validaCIF(F) 
{
  var cifnum = F.toUpperCase(); // pasar a mayúsculas

  if (!/^[A-Za-z0-9]{9}$/.test(cifnum)){  // Son 9 dígitos? 
     alert ("Longitud incorrecta, un CIF consta de nueve dígitos (Una letra y ocho números)");
	 return false;
  }
  else if (!/^[ABCDEFGHKLMNPQS]/.test(cifnum)){ // Es una letra de las admitidas ?
     alert("El primer dígito del CIF es incorrecto, debe ser una letra de las siguientes: A,B,C,D,E,F,G,H,K,L,M,N,P,Q,S ");
	 return false;
  }
  else {
	  var v1 = new Array(0,2,4,6,8,1,3,5,7,9); 
	  var temp = 0; 
	  var temp1 = new Array(0,'A','B','C','D','E','F','G','H','I');
	
	  for( i = 2; i <= 6; i += 2 ) 
		{
		  temp = temp + v1[ parseInt(F.substr(i-1,1)) ];
		  temp = temp + parseInt(F.substr(i,1));
		};
	
	  temp = temp + v1[ parseInt(F.substr(7,1)) ];
	
	  temp = (10 - ( temp % 10));
	
	  if( temp == 10 ){
	  	if ((cifnum.substring(9, 8) == "J") || (F.substring(9, 8) == 0))
			return true;
		else{
			alert("El CIF introducido es incorrecto, no puede existir ningún CIF con esos dígitos.");
			return false;}
	  }
	  else{
	  	if ((cifnum.substring(9, 8) == temp1[ temp ]) || (F.substring(9, 8) == temp)){
			//DIGITO DE CONTROL (último): Aó1,Bó2,Có3,Dó4,Eó5,Fó6,Gó7,Hó8,Ió9
			return true;}
		else{
			alert("El CIF introducido es incorrecto, no puede existir ningún CIF con esos dígitos.");
			return false;}
	  }
  }
}

// ------------------------------------------------------------------

//Validar email
function validaemail(emailStr)
{
	// Verificar si el email tiene el formato user@dominio.
	var emailPat=/^(.+)@(.+)$/;

	// Verificar la existencia de caracteres. ( ) < > @ , ; : \ " . [ ]
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]" ;

	// Verifica los caracteres que son válidos en una dirección de email
	var validChars="\[^\\s" + specialChars + "\]";

	var quotedUser="(\"[^\"]*\")";

	// Verifica si la dirección de email está representada con una dirección IP Válida
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/

	// Verificar caracteres inválidos

	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");  // domain, as opposed to ipDomainPat, shown above.
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) return false;

	var user=matchArray[1]
	var domain=matchArray[2]

	// Si el user "user" es valido 
	if (user.match(userPat)==null)
	{
	// Si no
		//alert("El nombre de usuario no es válido.")
		return false;
	}

	/* Si la dirección IP es válida */
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null)
	{
		for (var i=1;i<=4;i++){
			if (IPArray[i]>255)
			{
				//alert("IP de destino inválida")
				return false;
			}
		}
		return true;
	}

	var domainArray=domain.match(domainPat);
	if (domainArray==null)
	{
		//alert("El dominio parece no ser válido.")
		return false;
	}

	var atomPat=new RegExp(atom,"g");
	var domArr=domain.match(atomPat);
	var len=domArr.length;
	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3)
	{ 
		//alert("La dicrección debe tener 3 letras si es .'com' o 2 si en de algún país.")
		mailvalido=1;
		return false;
	}

	if (len<2) return false;

	// La dirección de email ingresada es Válida
	return true;
}

//-----------------------------------------------------------------------------
// convert calendar to Julian date
// (Julian day number algorithm adopted from Press et al.)
//-----------------------------------------------------------------------------
function cal_to_jd( era, y, m, d, h, mn, s )
{
	var jy, ja, jm;			//scratch

	if( y == 0 ) {
		alert("There is no year 0 in the Julian system!");
        return "invalid";
    }
    if( y == 1582 && m == 10 && d > 4 && d < 15 && era == "CE" ) {
		alert("The dates 5 through 14 October, 1582, do not exist in the Gregorian system!");
        return "invalid";
    }

//	if( y < 0 )  ++y;
    if( era == "BCE" ) y = -y + 1;
	if( m > 2 ) {
		jy = y;
		jm = m + 1;
	} else {
		jy = y - 1;
		jm = m + 13;
	}

	var intgr = Math.floor( Math.floor(365.25*jy) + Math.floor(30.6001*jm) + d + 1720995 );

	//check for switch to Gregorian calendar
    var gregcal = 15 + 31*( 10 + 12*1582 );
	if( d + 31*(m + 12*y) >= gregcal ) {
		ja = Math.floor(0.01*jy);
		intgr += 2 - ja + Math.floor(0.25*ja);
	}

	//correct for half-day offset
	var dayfrac = h/24.0 - 0.5;
	if( dayfrac < 0.0 ) {
		dayfrac += 1.0;
		--intgr;
	}

	//now set the fraction of a day
	var frac = dayfrac + (mn + s/60.0)/60.0/24.0;

    //round to nearest second
    var jd0 = (intgr + frac)*100000;
    var jd  = Math.floor(jd0);
    if( jd0 - jd > 0.5 ) ++jd;
    return Math.round(jd/100000, 0);
}
//imágenes a cargar en la galería
function cambiogaleria() {
		if (galeria.value==""){
			alert('Debe elegir una galeria del desplegable.');
			return false;
		} else{
			//window.parent.frames('centro').location="imagen.asp?var=" + variable.value;
			document.frames.centro.location='galeria.asp?gal=' + galeria.value;
			return true;
		}
	}
