function cabecera() {
	document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="774" height="83" id="logo" align="middle">');
	document.write('<param name="allowScriptAccess" value="sameDomain" />');
	document.write('<param name="movie" value="flash/cabecera_01.swf" />');
	document.write('<param name="quality" value="high" />');
	document.write('<param name="bgcolor" value="#ffffff" />');
	document.write('<embed src="cabecera_01.swf" quality="high" bgcolor="#ffffff" width="774" height="83" name="logo" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
	document.write('</object>');
}

function v_recuperar_password() {

	var ff = window.document.recuperar_password;
	var r = new RegExp("[\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-]", "i");
	var ok=0;
	var error = "";

	if (ff.NIF.value.length == 9 ){

		if ( !(CalculaNif(ff.NIF.value) || CalculaCif(ff.NIF.value) || CalculaNie(ff.NIF.value)) ) {
			ok=1;
			error += "El 'CIF' facilitado no es correcto.\n";
		} else {
			ff.NIF.value = ff.NIF.value.toUpperCase();
		}
	} else {
		ok=1;
		error += "Se requiere que rellene el campo 'CIF' con datos válidos.\n";
	}

	if (ok==1){
		alert("Se ha detectado un error en la validación del formulario de datos :\n\n"+error+"\n\n");
		event.returnValue=false;
	} else {
		event.returnValue=true;
	}
}

function v_formulario_alta() {

	var ff = window.document.formulario_alta;
	var r = new RegExp("[\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-]", "i");
	var ok=0;
	var error = "";

	if (ff.name.value == "") {
		ok = 1;
		error += "Se requiere que rellene el campo 'Nombre de la Empresa' con datos válidos.\n";
	}
	if (ff.p_contacto.value == "") {
		ok = 1;
		error += "Se requiere que rellene el campo 'Persona de Contacto' con datos válidos.\n";
	}

	if (ff.NIF.value.length == 9 ){

		if ( !(CalculaNif(ff.NIF.value) || CalculaCif(ff.NIF.value) || CalculaNie(ff.NIF.value)) ) {
			ok=1;
			error += "El 'CIF' facilitado no es correcto.\n";
		} else {
			ff.NIF.value = ff.NIF.value.toUpperCase();
		}
	} else {
		ok=1;
		error += "Se requiere que rellene el campo 'CIF' con datos válidos.\n";
	}

	if ((ff.username.value == "") || ((r.exec(ff.username.value) || ff.username.value.length < 3))) {
		ok = 1;
		error += "Se requiere que rellene el campo 'Identificador de Usuario' con datos válidos.\n";
	}

	if (!(esEmailValido(ff.email.value))) {
		error += "Se requiere que rellene el campo 'Dirección de Correo Electrónico' con datos válidos.\n";
		ok=1;
	}

	if ((ff.password.value.length < 6) || (((ff.password.value != "") && (ff.password.value != ff.password2.value))) || (r.exec(ff.password.value))) {
		ok = 1;
		error += "Se requiere que rellene el campo 'Contraseña' con datos válidos. Sin espacios, más de 6 letras y que contenga estos caractéres 0-9,a-z,A-Z.\n";
	}

	if (ok==1){
		alert("Se ha detectado un error en la validación del formulario de datos :\n\n"+error+"\n\n");
		event.returnValue=false;
	} else {
		event.returnValue=true;
	}
}

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];}
}

 function MM_showHideLayers() { //v2.0
   var i, visStr, args, theObj;
   args = MM_showHideLayers.arguments;
   for (i=0; i<(args.length-2); i+=3) { //with arg triples (objNS,objIE,visStr)
     visStr   = args[i+2];
     if (navigator.appName == 'Netscape' && document.layers != null) {
       theObj = eval(args[i]);
       if (theObj) theObj.visibility = visStr;
     } else if (document.all != null) { //IE
       if (visStr == 'show') visStr = 'visible'; //convert vals
       if (visStr == 'hide') visStr = 'hidden';
       theObj = eval(args[i+1]);
       if (theObj){
		pageWidth=(ie)?document.body.offsetWidth:innerWidth;
		theObj.style.left=(pageWidth - 780)/2;
		theObj.style.visibility = visStr;
		}
  } }
}

function esEmailValido(strMail)
{
 // Define la expresion regular para verificar si el email tiene el formato usuario@dominio
  var patMail = /^(.+)@(.+)$/;

 // Define la expresion regular para nombres de usuario validos
  var patUser = /^[a-zA-Z\d_-]+(\.[a-zA-Z\d_-]+)*$/;

 // Define la expresion regular para nombres de dominio validos
  var patDomain = /^[a-zA-Z\d_-]+(\.[a-zA-Z\d_-]+)+$/;

 // Verifica que el string que recibe la funcion sea del tipo string@string y separa los substring
 // correspondientes a usuario y dominio
  var matchArray = strMail.match(patMail);
  if(matchArray == null)
  {
   //alert("NO ES UN MAIL");
   return false;
  }

  var user = new String(matchArray[1]);
  var domain = new String(matchArray[2]);

 // Si el nombre de usuario no es valido la funcion devuelve falso
  if(user.match(patUser) == null)
  {
   //alert("USUARIO INVALIDO");
   return false;
  }

 // Verifica que el string de dominio sea valido.
 // Si es valido verifica que la ultima extension tenga 3 o 4 caracteres de longitud (2 o 3 caracteres mas el punto)
  var domainArray = domain.match(patDomain);
  if(domainArray == null)
  {
   //alert("DOMINIO INVALIDO")
   return false;
  }
  if(domainArray[domainArray.length - 1].length < 3 || domainArray[domainArray.length - 1].length > 5)
  {
   //alert("EXTENSION DE DOMINIO INVALIDA")
   return false;
  }

 // Si la funcion no devolvio false entonces el parametro de entrada es una direccion de mail valida
 // Por lo tanto la funcion devuelve true
  //alert("MAIL VALIDO");
  return true;
}


function CalculaNifCifAlta(nif) {
	nif = replaceSubstring(nif, " ", "");
	nif = replaceSubstring(nif, "-", "");
	nif = replaceSubstring(nif, ".", "");
	if ( !(CalculaNif(nif) || CalculaCif(nif) || CalculaNie(nif)) ) {
		alert("El NIF / CIF / NIE insertado no es válido.\n");
	} else {
		window.document.FRegDominios.NIF.value = nif.toUpperCase();
	}
}

function CalculaNifCif(nif) {
	nif = replaceSubstring(nif, " ", "");
	nif = replaceSubstring(nif, "-", "");
	nif = replaceSubstring(nif, ".", "");
	if ( !(CalculaNif(nif) || CalculaCif(nif) || CalculaNie(nif)) ) {
		alert("El NIF / CIF / NIE insertado no es válido.\n");
	} else {
		window.document.FClientes.NIF.value = nif.toUpperCase();
	}
}

function CalculaNie(nif){
	var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';

	var letraNie    = nif.substring(0,1);
	var dni    = nif.substring(1,8);
	var letraNif = nif.substring(8,9);
	var letraAux;
	var letraInicio="X";

	var numero = dni%23;

	letraAux = letras.substring(numero,numero+1);

	if ( (letraAux == letraNif.toUpperCase()) && (letraInicio==letraNie.toUpperCase()) ) {
		return true;
	}else{
		return false;
	}
}
function CalculaNif(nif){
	var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';

	var dni    = nif.substring(0,8);
	var letraNif = nif.substring(8,9);
	var letraAux;

	var numero = dni%23;

	letraAux = letras.substring(numero,numero+1);

	if(letraAux == letraNif.toUpperCase()){
		return true;
	}else{
		return false;
	}
}


function CalculaCif(elCIF)
  {
    var resul = false;
    var temp = elCIF.toUpperCase();

    if (!/^[A-Za-z0-9]{9}$/.test(temp)) {
      resul = false;
    } else {
    	if (!/^[ABCDEFGHKLMNPQS]/.test(temp)) {
    	  resul = false;
		} else {
		  resul = ValidaCIF(temp);
    	}
    }
    return resul;
}


function ValidaCIF(elCIF)
  {
  	var resul = false;
    var v1 = new Array(0,2,4,6,8,1,3,5,7,9);

    var temp = 0;
    var temp1;

    for( i = 2; i <= 6; i += 2 )
    {
      temp = temp + v1[ parseInt(elCIF.substr(i-1,1)) ];
      temp = temp + parseInt(elCIF.substr(i,1));
    }

    temp = temp + v1[ parseInt(elCIF.substr(7,1)) ];
    temp = (10 - ( temp % 10));

    if( temp == 10 ) {
      if ((elCIF.substring(8,9)=="J") || (elCIF.substring(8,9)=="0")) {
      	resul = true;
      } else {
      	resul = false;
      }
    } else {
      if (elCIF.substring(8,9)==temp) {
      	resul = true;
      } else {
      	resul = false;
      }
	}
	return resul;
  }