// Recursos en la Red, S.L.U. (C) 2003
// Funciones básicas de Javascript

//
//  Funcion que controla el tamaño maximo de un campor de texto de un formulario
//  Parametros: formulario , campo y maximo de caracteres
//
function maximo(formulario,texto,max)  {

   if (document[formulario][texto].outerText.length > max) {
      alert("Error, el texto no puede superar los 1800 caracteres.");
      document[formulario][texto].focus();
      return false;
   }
   return true;
}

//
//  Funcion que comprueba que los campos pasados como parametros en el argumento todo
//  que consiste en uno o varios campos separados por comas, en caso de todo tener valor
//  se mostrara un mensaje de aviso recibido como parametro
//
//  Parametros:
//             todo   ejemplo: 'nombre,apellidos,email'
//             texto  ejemplo: 'La carta ha sido guardada con exito'
//
//  IMPORTANTE: Por defecto se procede ha realizar esta comprobacion sofre el PRIMER formulario
//              document.forms[0]
//
function validaExiste( todo )
{
	arraycampos = todo.split(",")

	//for (i=0; i<arraycampos.lenght ;i++)
	i=0;
	while (arraycampos[i])
	{

		if (document.forms[0][arraycampos[i]].value == "")
		{
			alert("El campo '" + arraycampos[i+1].toUpperCase() + "' debe tener valor")
			document.forms[0][arraycampos[i]].focus()
			return false
		}
		else i+=2;
	}
    return true
}
/*
  Funcion que valida los campos numéricos de un formulario, por defecto debe ser el forms[0]
  Recibe como parametro una cadena de nombres de campos a chequear junto con un texto explicativo
  del campo separados cada uno por una coma .
  Ejemplo:

          validaNumerico('ptele,teléfono fijo,cp,código postal')

*/
function validaNumerico( todo ) {
	arraycampos = todo.split(",") 

    // Definimos un patron de busqueda de numerica
    var reg = /^([0-9])+$/;
	i=0;
	while (arraycampos[i])
	{
		if ( document.forms[0][arraycampos[i]].value != "" &&
             document.forms[0][arraycampos[i]].value.search(reg) == -1)
		{
			alert("El campo '" + arraycampos[i+1].toUpperCase() + "' debe ser numérico");
			document.forms[0][arraycampos[i]].focus();
			document.forms[0][arraycampos[i]].select();
			return false
		}
		else i+=2;
	}
    return true
}

function compruebaPassword(pass,pass2)
{
    if ( window.document.forms[0][pass].value == "" || window.document.forms[0][pass2].value == ""
         || window.document.forms[0][pass].value != window.document.forms[0][pass2].value)
    {
       alert("Error, contraseñas no coinciden. Vuelva a introducirlas por favor.");
       document.forms[0][pass].value="";
       document.forms[0][pass2].value="";
       window.document.forms[0][pass].focus();
       return false;
    }
    return true;
}

function compruebaServicios(){

         // leemos todos los elementos del form
         var colecServ = document.forms[0].elements;

         if (colecServ!=null) {
             for (i=0; i<colecServ.length; i++){   // recorremos los elementos
                 nombre = colecServ.item(i).name;
                 if ( nombre.indexOf("pPregunta") != -1){  // si empieza por pPregunta...
                    // Dependiendo del tipo se comprueba que tiene algun valor de distinta manera
                    switch(colecServ.item(i).tagName){
                    case 'INPUT':
                         if (colecServ.item(i).type == "text") {
                            if (colecServ.item(i).value == "") {
                                 alert("Debe rellenar completamente el formulario. Por favor hágalo para poder registrarse.");
                                 colecServ.item(i).focus();
                                 return false;
                            }
                         }else if (colecServ.item(i).type == "radio" || colecServ.item(i).type == "checkbox"){ // RADIO
                               var marcado = false;
                               contador = 0;
                               while(nombre == colecServ.item(i).name && !marcado){

                                    if (colecServ.item(i).checked)
                                       marcado = true;
                                    else {
                                         i++;
                                         contador++;
                                    }
                               }
                               if (marcado == false){
                                    // volvemos a la primera opcion del RADIO BUTTON
                                    alert("Debe rellenar completamente el formulario. Por favor hágalo para poder registrarse.");
                                    colecServ.item(i-contador).focus();
                                    return false;
                               } else{
                               while(colecServ.item(i+1) != null && nombre == colecServ.item(i+1).name)
                                    i++;
                               }
                         }
                    break;
                    case 'SELECT':
                         if (colecServ.item(i).value == -1){
                             alert("Debe elegir una de las opciones disponibles. Por favor hágalo para poder registrarse.");
                             colecServ.item(i).focus();
                             return false;
                         }
                    break;

                    }

                 }
             }
        }
     return true;
}


/*
  JCortijo 2002

  Comprobación de email. Comprueba que contenga @, el punto , y que no hayan caracteres raros en ningun lado.
  El parametro pasado es el nombre del INPUT del formulario, por defecto debe ser el forms[0].
  Solo se permiten letras,numeros , el punto, guion bajo y guion normal.


*/


function validaEmail(campo)
{
 //Primero recogemos el valor del campo

 var strMail = document.forms[0][campo].value;

 // 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 direccciones IP
  var patDomainIP = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;

 // 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("Error en la introducción del correo electrónico.\nEl texto introducido no se corresponde con un correo válido.");
   document.forms[0][campo].focus();
   document.forms[0][campo].select();
   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("Error en la introducción del correo electrónico, usuario inválido. \n No ha introducido ningún nombre antes de la arroba o quizás usó caracteres prohibidos\n(solo se permiten letras, números y'.' '_' '-').");
   document.forms[0][campo].focus();
   document.forms[0][campo].select();
   return false;
  }

 // Verifica si el string de dominio corresponde a una direccion IP
 // De ser asi varifica que la ip sea valida.  La funcion devuelve verdadero si la ip es valida y falso si no lo es
  var IPArray = domain.match(patDomainIP);
  if(IPArray != null)
  {
   for (var i=1;i<=4;i++)
   {
    if(IPArray[i]>255)
    {
     alert("Por favor repase IP introducida. Números fuera de rango (>255).")
     document.forms[0][campo].focus();
     document.forms[0][campo].select();
     return false;
    }
   }
   //alert("MAIL VALIDO")
   return true;
  }

 // 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("Error en la introducción del correo electrónico, falta introducir o completar el dominio (parte derecha de la arroba). \nEjemplo: jose.perez@yahoo.es")
   document.forms[0][campo].focus();
   document.forms[0][campo].select();
   return false;
  }
  if(domainArray[domainArray.length - 1].length < 3 || domainArray[domainArray.length - 1].length > 4)
  {
   alert("Error en la introducción del correo electrónico, error en el dominio (parte derecha de la arroba). \nPor favor compruebe que su mail este completo y no contenga espacios en blanco.\nEjemplos de posibles errores: jose.perez@yahoo.eses ó jose.perez@yahoo.e")
   document.forms[0][campo].focus();
   document.forms[0][campo].select();
   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 enviar(asunto,subject) {
	document.write("<A href='mailto:?subject=" + subject + ": " + asunto + "&body=Consulta esta noticia en: " + window.location + "' CLASS='enlaceA2' onmouseover=\"window.status='Enviar esta noticia'; return true;\" onmouseout=\"window.status=' '; return true;\"><IMG SRC='/mediaweb/images/iconos/correo20x14.gif' WIDTH='20' HEIGHT='14' BORDER='0' ALT='Enviar esta noticia' ALIGN='ABSMIDDLE'>&nbsp;Enviar esta p&aacute;gina</A>");
}

function imprimir(){
	window.print();
}

function cargaURL(frame,url)
{
          eval(frame+".location='"+url+"'");
}

function sl(cad) {
  status=cad;
}

function fAbrirVentana(URL,nombre,params) { //v2.0
  window.open(URL,nombre,params);
}

function fAbrir(sPopUp, iAlt, iAmple) {
	if (bHayPopUp) {
		var oFinestra = window.open(sPopUp, "PopUP", "channelmode=0,directories=0,fullscreen=0,height="+iAlt+",location=0,menubar=0,resizable=0,scrollbars=0,titlebar=0,toolbar=0,width="+iAmple+",top=10,left=10");
	}
}

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_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_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_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function MM_displayStatusMsg(msgStr) { //v1.0
  status=msgStr;
  document.MM_returnValue = true;
}

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_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_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_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_callJS(jsStr) { //v2.0
  return eval(jsStr)
}
