//Función que comprueba que no se introduzca la comilla simple ' o comilla doble "
function NoComillas()
{
    var i, campo, nombre, errors;
    errors = NoComillas.arguments[NoComillas.arguments.length - 1];
    idioma = NoComillas.arguments[NoComillas.arguments.length - 2];
    switch (idioma) {
     case 1 : {mensaje=': no deberá contener [ \' ] [ " ].\n';}
       break;
     case 2:  {mensaje=': no valid characters [ \' ] [ " ].\n';}
       break;
     case 3 : {mensaje=': no caractáres valides [ \'] [ " ].\n';}
       break;
     default: {mensaje=': no deberá contener [ \' ] [ " ].\n';}
    }
    for ( i = 0; i < NoComillas.arguments.length - 2; i += 2)
    {
        campo = NoComillas.arguments[i];
        nombre = NoComillas.arguments[i+1];
        chrsNoValidos = "\'\"";
        if (campo.value)
        {
            aux = campo.value.toLowerCase();
            for ( j = 0, flg = false; j < aux.length; j++, flg = false)
            {
            	for ( k = 0; k < chrsNoValidos.length; k++)
            	    if ( aux.charAt(j) == chrsNoValidos.charAt(k) )
            	    	flg = true;
            	if (flg)
                {
                    errors += '- '+ nombre + mensaje;
                    break;
	        	}
            }
        }
    }
    return errors;
}


//Funci�n que comprueba que solo se introduzcan como caracteres v�lidos n�meros (0-9)
function SoloNumeros()
{
    var i, campo, nombre, errors;
    errors = SoloNumeros.arguments[SoloNumeros.arguments.length - 1];
    idioma = SoloNumeros.arguments[SoloNumeros.arguments.length - 2]; 
    switch (idioma) {
     case 1 : {mensaje=': deberá contener sólo números [0-9].\n';}
       break;
     case 2:  {mensaje=': valid characters [0-9].\n';}
       break;
     case 3 : {mensaje=': caractáres valides [0-9].\n';}
       break;
     default: {mensaje=': deberá contener sólo números [0-9].\n';}
    } 
    for ( i = 0; i < SoloNumeros.arguments.length - 2; i += 2)
    {
        campo = SoloNumeros.arguments[i];
        nombre = SoloNumeros.arguments[i+1];
        chrsValidos = "0123456789";
        if (campo.value)
        {
            aux = campo.value.toLowerCase();
            for ( j = 0, flg = false; j < aux.length; j++, flg = false)
            {
            	for ( k = 0; k < chrsValidos.length; k++)
            	    if ( aux.charAt(j) == chrsValidos.charAt(k) )
            	    	flg = true;
            	if (!flg)
                {
                    errors += '- '+ nombre + mensaje;
                    break;
	        }
            }
        }
    }
    return errors;
}


//Función que comprueba que solo se introduzcan como caracteres válidos números (0-9,+,-,(,))
//Numeros de telefonos, incluyendo el + - ( )para números internacionales
function SoloNumerosTelefono()
{
    var i, campo, nombre, errors;
    errors = SoloNumerosTelefono.arguments[SoloNumerosTelefono.arguments.length - 1];
    idioma = SoloNumerosTelefono.arguments[SoloNumerosTelefono.arguments.length - 2]; 
    switch (idioma) {
     case 1 : {mensaje=': caracteres válidos [0-9][+ - ()]\n';}
       break;
     case 2:  {mensaje=': valid characters [0-9][+ - ()]\n';}
       break;
     case 3 : {mensaje=': caractères valides [0-9][+ - ()]\n';}
       break;
     default: {mensaje=': caracteres válidos [0-9][+ - ()]\n';}
    } 
    for ( i = 0; i < SoloNumerosTelefono.arguments.length - 2; i += 2)
    {
        campo = SoloNumerosTelefono.arguments[i];
        nombre = SoloNumerosTelefono.arguments[i+1];
        chrsValidos = "()-+0123456789";
        if (campo.value)
        {
            aux = campo.value.toLowerCase();
            for ( j = 0, flg = false; j < aux.length; j++, flg = false)
            {
            	for ( k = 0; k < chrsValidos.length; k++)
            	    if ( aux.charAt(j) == chrsValidos.charAt(k) )
            	    	flg = true;
            	if (!flg)
                {
                    errors += '- '+ nombre + mensaje;
                    break;
				}
            }
        }
    }
    return errors;
}

// Note that if you are using JavaScript the [] on the element name might cause you problems when you try to refer to the 
// element by name. Use it's numerical form element ID instead, or enclose the variable name in single quotes and use that as 
// the index to the elements array, for example: 
// variable = documents.forms[0].elements['var[]'];
// variable = f.elements['cmbMateria[]'];
// if ((variable.selectedIndex == -1) || (variable.selectedIndex == 0)) {
 

//Funci�n que comprueba si alguno de los checkbox de un formulario est� marcado(true)
//function checkActivos(f)
//{
//  var booActivo=false;
//  for (i=0;i<f.elements.length;i++)
//     if ((f.elements[i].type=="checkbox") &&
//         (f.elements[i].checked))
//          booActivo=true;
//  return booActivo;
//}


//Funci�n que comprueba alguno de los checkboxs de un array de checkboxs "checkPrueba[]" est� marcado (true)
//Se le pasa el nombre del array sin []
function checkActivos(f,nombre)
{
  var booActivo=false;
  for (i=0;i<f.elements.length;i++) {
     if ((f.elements[i].type=="checkbox") && (f.elements[i].checked)) {	 
 	 vector = f.elements[i].name.split("[");
         if (vector[0]==nombre) booActivo=true;
     }
  }
  return booActivo;
}

// Funci�n que desactiva todos los check de un array de checkboxs "checkPrueba[]" est� marcado (true)
// Se le pasa el nombre del array sin [] que se quiere desactivar
function checkQuitar(f,nombre)
{
  for (i=0;i<f.elements.length;i++) {
     if (f.elements[i].type=="checkbox") {
		vector = f.elements[i].name.split("[");
		if (vector[0] == nombre) f.elements[i].checked = false;
    }
  }
  return true;
}

// Funci�n que activa o desactivas todos los check del formulario pasado
// Se debe pasar el nombre del check que hace de cambiador
function checkAll(f,checkCambiador)
{
  if (checkCambiador.checked == true) {
  	booAccion = true;
  } else {
  	booAccion = false;
  }
  for (i=0;i<f.elements.length;i++) {
     if (f.elements[i].type=="checkbox") f.elements[i].checked = booAccion;
  }
  return true;
}

//Funci�n que comprueba si existen combos vacios
function NoVacioCombos()
{
    var i, campo, nombre, errors,mensaje;
    errors = NoVacioCombos.arguments[NoVacioCombos.arguments.length - 1];
    idioma = NoVacioCombos.arguments[NoVacioCombos.arguments.length - 2];
    switch (idioma) {
     case 1 : {mensaje=': campo obligatorio, seleccione una opción.\n';}
       break;
     case 2:  {mensaje=': mandatory, please select an option.\n';}
       break;
     case 3 : {mensaje=': champ obligatoire, séleccionez une option.\n';}
       break;
     default: {mensaje=': campo obligatorio, seleccione una opción.\n';}
    }    
    for (i=0; i< NoVacioCombos.arguments.length - 2; i += 2)
    {
        campo = NoVacioCombos.arguments[i];
        nombre = NoVacioCombos.arguments[i+1];
        if ( (campo.options[campo.selectedIndex].value == null) ||
            (campo.options[campo.selectedIndex].value == '') )
                errors += '- '+ nombre + mensaje;
    }
    return errors;
}

//Funci�n que comprueba que cada campo no tenga m�s de un m�ximo de caract�res
function EsLongitudValidaMax()
{ 
	var i,campo,mensaje,errors,maxLong,texto1,texto2;
	errors = EsLongitudValidaMax.arguments[EsLongitudValidaMax.arguments.length - 1];
	idioma = EsLongitudValidaMax.arguments[EsLongitudValidaMax.arguments.length - 2];
    	switch (idioma) {
     		case 1 : {texto1=' no puede tener más de ';
			  texto2=' caracteres.\n';}
       			break;
     		case 2:  {texto1=' can not exceed ';
			  texto2=' characters.\n';}
       			break;
     		case 3 : {texto1=' ne peut dépasser ';
			  texto2=' caract�res.\n';}
       			break;
     		default: {texto1=' no puede tener más de ';
			  texto2=' caracteres.\n';}
     	}
	for (i=0; i<(EsLongitudValidaMax.arguments.length - 2); i+=3)
	{
		campo= EsLongitudValidaMax.arguments[i];
		maxLong= EsLongitudValidaMax.arguments[i+1];
 		mensaje= EsLongitudValidaMax.arguments[i+2];
					if (campo.value)
					{ 
						if (campo.value.length > maxLong)
						{
							errors += '- '+ mensaje+texto1+maxLong+texto2;
						}
					}
			}
	return errors;
}

//Funci�n que comprueba que cada campo tenga un m�nimo de caract�res
function EsLongitudValidaMin()
{ 
	var i,campo,mensaje,errors,minLong,texto1,texto2;
	errors = EsLongitudValidaMin.arguments[EsLongitudValidaMin.arguments.length - 1];
	idioma = EsLongitudValidaMin.arguments[EsLongitudValidaMin.arguments.length - 2];
    	switch (idioma) {
     		case 1 : {texto1=' debe tener como mínimo ';
			  texto2=' caracteres.\n';}
       			break;
     		case 2:  {texto1=' Should have at least ';
			  texto2=' characters.\n';}
       			break;
     		case 3 : {texto1=' doit contenir au minimum ';
			  texto2=' caract�res.\n';}
       			break;
     		default: {texto1=' debe tener como mínimo ';
			  texto2=' caracteres.\n';}
     	}

	for (i=0; i<(EsLongitudValidaMin.arguments.length - 2); i+=3)
	{
		campo= EsLongitudValidaMin.arguments[i];
		minLong= EsLongitudValidaMin.arguments[i+1];
 		mensaje= EsLongitudValidaMin.arguments[i+2];
					if (campo.value)
					{ 
						if (campo.value.length < minLong)
						{
							errors += '- '+ mensaje+texto1+minLong+texto2;
						}
					}
			}
	return errors;
}

//Funci�n que comprueba que una caja textbox no est� vacia
function NoVacio()
{

    var i, campo, nombre, errors, mensaje;
    errors = NoVacio.arguments[NoVacio.arguments.length - 1];
    idioma = NoVacio.arguments[NoVacio.arguments.length - 2];
    switch (idioma) {
     case 1 : {mensaje=': campo obligatorio, debe rellenarlo.\n';}
       break;
     case 2:  {mensaje=': mandatory, please complete it.\n';}
       break;
     case 3 : {mensaje=': champ obligatoire, complétez SVP.\n';}
       break;
     default: {mensaje=': campo obligatorio, debe rellenarlo.\n';}
    }
    for (i = 0; i < NoVacio.arguments.length - 2; i += 2)
    {
        campo = NoVacio.arguments[i];
        nombre = NoVacio.arguments[i+1];
        if ( !campo.value )
            errors += '- '+ nombre + mensaje;
    }
    return errors;
}


//Funci�n que devuelve Verdadero si los textBox pasados est�n vacios
function TodosTxtVacios()
{
    var i, campo, todos_vacios ;
    todos_vacios = 'SI';
    for (i = 0; i < TodosTxtVacios.arguments.length; i += 1)
    {
        campo = TodosTxtVacios.arguments[i];
        if ( campo.value )
            todos_vacios = 'NO';
    }
    if (todos_vacios == 'SI')
        return true;
    else
        return false;
}

//Funci�n que devuelve Verdadero si los combos pasados est�n vacios
function TodosCombosVacios()
{
    var i, campo, todos_vacios;
    todos_vacios = 'SI';
    for (i=0; i< TodosCombosVacios.arguments.length; i += 1)
    {
        campo = TodosCombosVacios.arguments[i];
        if ( (campo.options[campo.selectedIndex].value != null) &&
            (campo.options[campo.selectedIndex].value != '') )
                todos_vacios = 'NO';
    }
    if (todos_vacios == 'SI')
        return true;
    else
        return false;
}

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) { //v3.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); 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];}
}

/**
* Validaci�n de campo email
*/
function validarEmail(valor) {
  if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(valor)){
  //patron = /^\w{2,255}@\w{2,255}\.[a-z]{2,4}\.?[a-z]{0,3}$/;
    return (true)
  } else {
    return (false);
  }
}

/**
* Validaci�n de campo email
* http://javascript.internet.com
*/
function validarEmail2(emailStr) {
   if (emailStr.length == 0)
     return true;
   var emailPat=/^(.+)@(.+)$/;
   var specialChars="()<>@,;:\".[]";
   var validChars="[^s" + specialChars + "]";
   var quotedUser="(\"[^\"]*\")";
   var ipDomainPat=/^(d{1,3})[.](d{1,3})[.](d{1,3})[.](d{1,3})$/;
   var atom=validChars + '+';
   var word="(" + atom + "|" + quotedUser + ")";
   var userPat=new RegExp("^" + word + "(." + word + ")*$");
   var domainPat=new RegExp("^" + atom + "(." + atom + ")*$");
   var matchArray=emailStr.match(emailPat);

   if (matchArray == null)
      return false;

   var user=matchArray[1];
   var domain=matchArray[2];

   if (user.match(userPat) == null)
      return false;

   var IPArray = domain.match(ipDomainPat);
   if (IPArray != null) {
      for (var i = 1; i <= 4; i++) {
         if (IPArray[i] > 255)
         	return false;
   		}

   return true;
	 }

   var domainArray=domain.match(domainPat);
   if (domainArray == null)
      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)
      return false;

   if (len < 2)
      return false;

   return true;
}


//Funci�n de validaci�n de fechas
function validarFecha(strAnio, strMes, strDia)
{
    var strError;
    if (strAnio == '' || strMes == '' || strDia == '') {
	return false;
    }

    if (strMes == 4 || strMes == 6 || strMes == 9 || strMes == 11)
    {
            if (strDia <= 30)
		return true;
            else
            	return false;
    }
    else if (strMes == 2)
    {
        if (strAnio % 4 > 0)
        {
            if (strDia <= 28)
             	return true;
            else
            	return false;
		 }
        else if (strAnio % 100 == 0 && strAnio % 400 > 0 )
        {
            if (strDia <= 28)
             	return true;
            else
            	return false;
		 }
        else
        {
            if (strDia <= 29)
             	return true;
            else
            	return false;
		 }
    }
    else if (strMes == 1 || strMes == 3 || strMes == 5 || strMes == 7 || strMes == 8 || strMes == 10 || strMes == 12)
    {
		if (strDia <= 31)
   			return true;
       else
         	return false;
    }
return false;
}

function setPointer(field, action, defaultColor, pointerColor, markColor) {
var newColor
var currentColor

currentColor=field.style.backgroundColor;

if (action == 'over' && currentColor.toLowerCase() == defaultColor.toLowerCase()) {
newColor=pointerColor; }

if (action == 'out' && currentColor.toLowerCase() == pointerColor.toLowerCase()) {
newColor=defaultColor; }

if (action == 'click' && currentColor.toLowerCase() == defaultColor.toLowerCase()) {
newColor=markColor; }
if (action == 'click' && currentColor.toLowerCase() == pointerColor.toLowerCase()) {
newColor=markColor; }
if (action == 'click' && currentColor.toLowerCase() == markColor.toLowerCase()) {
newColor=pointerColor; }

if (newColor) {
field.style.backgroundColor=newColor; }
}

