// Funciones JavaScript:

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_findObj(n, d) { //v4.01
  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 && d.getElementById) x=d.getElementById(n); return x;
}

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];}
}
//Validaciones formularios
function validarInfoVi_ES(){
        var pattern = /^[a-zA-Z0-9\-\._]+@[a-zA-Z0-9\-_]+(\.?[a-zA-Z0-9\-_]*){2,3}\.[a-zA-Z]{2,3}$/;
        with (document.formContacto){
if (Nombre.value==""){
                alert("Por favor, debe indicar su Nombre.");
				document.formContacto.Nombre.focus();
                return false;
           }if (Apellidos.value==""){
                alert("Por favor, debe indicar sus Apellidos.");
				document.formContacto.Apellidos.focus();
                return false;
            }if (Empresa.value==""){
                alert("Por favor, debe indicar el nombre de su empresa.");
				document.formContacto.Empresa.focus();
                return false;
            }if (Pais.value==""){
                alert("Por favor, debe indicar su País.");
				document.formContacto.Pais.focus();
                return false;
            }if (Email.value==""){
                alert("Por favor, debe indicar su correo electrónico.");
				document.formContacto.Email.focus();
                return false;
			}if (Email.value!="" && !pattern.test(Email.value) ){
                alert("La dirección de correo electrónico introducida no es correcta. Por favor, revísela.");
				document.formContacto.Email.focus();
                return false;
            }		 		
        }
        return true;
    }

//Validaciones formularios
function validarOtraOpinion_ES(){
        var pattern = /^[a-zA-Z0-9\-\._]+@[a-zA-Z0-9\-_]+(\.?[a-zA-Z0-9\-_]*){2,3}\.[a-zA-Z]{2,3}$/;
		var Str;
        with (document.formOtraOpinion){
if (nombre.value=="" || nombre.value == nombre.title){
                alert("Por favor, debe indicar su Nombre.");
				document.formOtraOpinion.nombre.focus();
                return false;
           }if (empresa.value=="" || empresa.value == empresa.title){
                alert("Por favor, debe indicar su empresa/entidad.");
				document.formOtraOpinion.empresa.focus();
                return false;
            }if (email.value=="" || email.value == email.title){
                alert("Por favor, debe indicar su correo electrónico.");
				document.formOtraOpinion.email.focus();
                return false;
			}if (email.value!="" && !pattern.test(email.value) ){
                alert("La dirección de correo electrónico introducida no es correcta. Por favor, revísela.");
				document.formOtraOpinion.email.focus();
                return false;
            }
			Str = solicitud.value;
				if (Str.length == 0 || solicitud.value=="Introduzca su solicitud")
				{
					alert ("Por favor, debe indicar su solicitud.");
					solicitud.focus();
					return false;
				}
		 		
        }
    }

/*Funcion para redimensionar ventana*/
function ventana_min(strUrl, w_width, w_height) {
	if(w_width==null){w_width = 630;}
	if(w_height==null){w_height = 250;}
	 
     var w_left = ((screen.width - w_width)/2);
     var w_top = ((screen.height - w_height)/2);
     var strOptions = "location=no";
     strOptions += ",toolbar=no";
     strOptions += ",menubar=no";
     strOptions += ",status=no";
     strOptions += ",scrollbars=yes";
     strOptions += ",resizable=yes";
     strOptions += ",left=" + w_left;
     strOptions += ",top=" + w_top;
     strOptions += ",width=" + w_width;
     strOptions += ",height=" + w_height;
     strOptions += ";";
     newWin = window.open(strUrl, "newWin", strOptions);
     newWin.document.close();
     newWin.focus();
}


/*Funcion cambios en el foco de los formularios en IE*/
/*function focusIE(type, tag, parentId) {
	if (window.attachEvent) {
		window.attachEvent("onload", function() {
			var ieElemento = (parentId==null)?document.getElementsByTagName(tag):document.getElementById(parentId).getElementsByTagName(tag);
			type(ieElemento);
		});
	}
}

ieFocus = function(ieElemento) {
	for (var i=0; i<ieElemento.length; i++) {
		ieElemento[i].onfocus=function() {
			this.className+=" iefocus";
			this.value='';
		}
		ieElemento[i].onblur=function() {
			this.className=this.className.replace(new RegExp(" iefocus\\b"), "");
		}
	}
}
focusIE(ieFocus, "input");
focusIE(ieFocus, "textarea");*/

//************************************
//* VACIO
//*************************************

function EstaVacio(cadena)
{
	var i;
	var c;
	var longitud;

	longitud = cadena.length;

		// Se buscan caracteres que no sean espacios
	for (i=0 ; i<longitud ; i++)
		{
		c = cadena.charAt(i);
		if ( c != " " )
			return false;
		}

	return true;
}


//************************************
//* NUMEROS
//************************************

// Es un número entero
function EsNumeroEnteroSinSigno(cadena)
{
	var	numero = /^\d+$/

	return numero.test(cadena)
}

// Es un número entero con signo (opcional)
function EsNumeroEnteroConSigno(cadena)
{
	var	numero = /^(\+|-)?\d+$/

	return numero.test(cadena)
}

// Es un número real sin signo
function EsNumeroRealSinSigno(cadena)
{
	var	numero = /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/

	return numero.test(cadena)
}

// Es un número real con signo (opcional)
function EsNumeroRealConSigno(cadena)
{
	var	numero = /^(((\+|-)?\d+(\.\d*)?)|((\+|-)?(\d*\.)?\d+))$/

	return numero.test(cadena)
}

// Es una direccion de correo valida
function EsDireccionCorreo(cadena)
{
	var	numero =  /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/

	return numero.test(cadena)
}



function EsNumeroEnteroSinSigno(cadena)
{
	var	numero = /^\d+$/

	return numero.test(cadena)
}

//Función para importes con 8 dígitos de pare entera y 2 parte fraccionaria. Puntos
//para los decimales
function esFloat(cadena){
    var euro=/(^[0-9]{0,8}|^[0-9]{1,8}[.][0-9]{0,2})$/;
	if(euro.test(cadena)){
		return true;
	}
	return false;
}




//************************************
//* FECHAS
//************************************

function FechaCorrecta(fecha)
{
      // 0123456789
      // Se espera que fecha sea una cadena en formato "DD-MM-AAAA"
      var   dd, mm, aaaa;
      var dias;

      if ( EstaVacio(fecha) )
            return true;

      if ( fecha.length != 10 )
            return false;
      
      dias = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
      
      dd = fecha.substring(0, 2);
      mm = fecha.substring(3, 5);
      aaaa = fecha.substring(6, 10);


      if ( !EsNumeroEnteroSinSigno(dd) )
            return false;
      if ( !EsNumeroEnteroSinSigno(mm) )
            return false;
      if ( !EsNumeroEnteroSinSigno(aaaa) )
            return false;
            
      if ( mm < 1 || mm > 12 )
            return false;
            
      mm--;
      
      if ( (aaaa % 4) == 0 )
            dias[1] = 29;
            
      if ( dd < 1 || dd > dias[mm] )
            return false;
            
      return true;
}


	// Cambia una fecha CORRECTA al formato AAAAMMDD
function FechaISO(fecha)
{
	//                                                0123456789
	// Se espera que fecha sea una cadena en formato "DD-MM-AAAA"

	return fecha.substring(6, 10) + fecha.substring(3, 5) + fecha.substring(0, 2);
}

//************************************
//* FECHA HORA
//************************************

function FechaHoraCorrecta(fecha) {
	//                                  01234567890123
	// Se espera que fecha sea una cadena en formato "DD-MM-AA HH:MM"
	var	dd, mm, aaaa, horas, minutos;
	var dias;
	var c
	
	if ( fecha.length != 16 )
		return false;
	
	c = fecha.charAt(10);
	if ( c != " " )
		return false;

	dias = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

	dd = fecha.substring(0, 2);
	mm = fecha.substring(3, 5);
	aaaa = fecha.substring(6, 10);
	horas = fecha.substring(11, 13);
	minutos = fecha.substring(14, 16);

	if ( !EsNumeroEnteroSinSigno(dd) )
		return false;
	if ( !EsNumeroEnteroSinSigno(mm) )
		return false;
	if ( !EsNumeroEnteroSinSigno(aaaa) )
		return false;
	if ( !EsNumeroEnteroSinSigno(horas) )
		return false;
	if ( !EsNumeroEnteroSinSigno(minutos) )
		return false;

	if ( mm < 1 || mm > 12 )
		return false;

	mm--;

	if ( (aaaa % 4) == 0 )
		dias[1] = 29;

	if ( dd < 1 || dd > dias[mm] )
		return false;

	if ( horas > 23 )
		return false;

	if ( minutos > 59 )
		return false;
	


	return true;
}


//************************************
//* FECHA HORA
//************************************

function HoraCorrecta(tiempo) {
	//                                                01234
	// Se espera que hora  sea una cadena en formato "HH:MM"
	var	horas, minutos, divisor;

	if ( tiempo.length != 5 )
		return false;

	horas = tiempo.substring(0, 2);
	divisor = tiempo.substring(2, 3);
	minutos = tiempo.substring(3, 5);

	if ( !EsNumeroEnteroSinSigno(horas) )
		return false;
	if ( !EsNumeroEnteroSinSigno(minutos) )
		return false;
		
	if ( divisor != ":" )
		return false;

	if ( horas > 23 )
		return false;

	if ( minutos > 59 )
		return false;

	return true;
}
