function getFld(f){
  var maxfrm=document.forms.length
  var i=0
  var fld=null
  while (!fld && i<maxfrm){
  	fld=eval("document.forms["+i+"]."+f)
  	i++
  }
  return fld
}

function getLayer(f){
	var lyr=null
  if (document.getElementById){
  	if (document.getElementById(f)) lyr=document.getElementById(f)
  } else if (document.all){
  	if (document.all[f]) lyr=document.all[f]
  }
  return lyr
}

function setbg(f,c){
	var lyr=getLayer(f)
	if (lyr) lyr.style.backgroundColor=c
}

function setcol(f,c){
	var lyr=getLayer(f)
	if (lyr) lyr.style.color=c
}

function setcursor(f){
	var lyr=getLayer(f)
	if (lyr) lyr.style.cursor=(ns5)?'pointer':'hand'
}

function formFocus() {
	window.focus()
  if (document.forms && document.forms.length>0) {
    var fld=document.forms[0]
    var maxi=fld.length
    for (var i=0; i<maxi; i++) {
      if ((fld.elements[i].type=="text") || (fld.elements[i].type=="password") || (fld.elements[i].type=="textarea") || (fld.elements[i].type.toString().charAt(0)=="s")) {
        document.forms[0].elements[i].focus()
        break
      }
    }
  }
}

function fldFocus(f) {
	var fld=(typeof(f)=="string")?getFld(f):f
	var fname=(fld)?fld.name:f
	if (fld && (fld.type=="button" || fld.type=="submit" || fld.type=="reset")) setcol(fname,colorButtonFocusText)
	else {
	  setbg(fname,colorFocus)
    setcol(fname,colorFldFocus)
	}
	if (!fld) setcursor(fname)
	else if (fld.type=="text" || fld.type=="textarea" || fld.type=="password") fld.select()
}

function fldBlur(f){fldRelease(f)}
function fldRelease(f) {
	var fld=(typeof(f)=="string")?getFld(f):f
	var fname=(fld)?fld.name:f
  if (!fld || fld.type=="radio" || fld.type=="checkbox") setbg(fname,colorForm)
  else if (fld && (fld.type=="button" || fld.type=="submit" || fld.type=="reset")) setcol(fname,colorButtonText)
  else {
 	  setbg(fname,colorEna)
    setcol(fname,colorFld)
  }
}

function disableForm(v) {
	if (currUrl.indexOf("register.shtml")==-1){
  	var maxfrm=document.forms.length
  	var flds=null
  	var fld=null
  	var maxj=0
  	for (var i=0; i<maxfrm; i++){
  		flds=document.forms[i]
  		maxj=flds.length
  		for (var j=0; j<maxj; j++){
  			fld=flds.elements[j]
  			if (fld.type=="button" || fld.type=="submit" || fld.type=="reset") fld.disabled=v
  		}
  	}
  }
}

function disableField(f,v) {
	var fld=(typeof(f)=="string")?getFld(f):f
	if (fld){
  	if (v) {
  		if (fld.type=="text" || fld.type=="textarea") fld.value=''
  		else if (fld.type=="select-one" || fld.type=="select-multiple")	fld.selectedIndex=0
  		setbg(fld.name,colorDis)
  	} else {
  		setbg(fld.name,colorEna)
  	}
    fld.disabled=v
  }
}

function clearCombo(f,m){
  var fld=(typeof(f)=="string")?getFld(f):f
  if (fld && (fld.type=="select-one" || fld.type=="select-multiple")) for (i=fld.options.length-1; i>=m; i--) fld.options[i]=null
}

function valTextField(f,s,l,t) {
  if (f.value=="") {
    alert(htmlToHex(s))
    f.focus()
    return false
  }
  if (arguments.length>=3 && l>-1 && f.value.length>l) {
    alert(htmlToHex("El texto supera el l&iacute;mite de "+l+" caracteres. Por favor, rev&iacute;selo"))
    f.focus()
    return false
  }
  if (arguments.length>=4 && t) return valText(f)
  return true
}

function valNumberFld(f,l,m,n){
	var fld=(typeof(f)=="string")?getFld(f):f
	var val=fld.value
	if (arguments.length>=3 && val.length>l){
		alert('El texto supera el l\xEDmite de caracteres permitidos. Por favor, rev\xEDselo.')
		fld.focus()
		return false
	} else {
		if (isNaN(val)){
			alert('El valor introducido no es un n\xFAmero')
			fld.focus()
			return false
		} else {
			if (arguments.length>=4 && val<m){
				alert('El valor introducido debe ser mayor que '+m)
				fld.focus()
				return false
			} else {
				if (arguments.length>=5 && val>n){
  				alert('El valor introducido debe ser menor que '+n)
  				fld.focus()
  				return false
				}
			}
		}
	}
	return true
}

function valTextArea(f,s,t) {
  if (f.value.length>s) {
    alert(htmlToHex("El texto supera el l&iacute;mite de "+s+" caracteres. Por favor, rev&iacute;selo"))
    f.focus()
    return false
  }
  if (arguments.length>=3 && t) return valText(f)
  return true
}

function valText(fld){
	var ret=true
  var val=fld.value
  if (val!=""){
  	var tmp=val.toUpperCase()
  	var may=(tmp==val)
    if (may){
    	fld.value=val.substr(0,1).toUpperCase()+val.substr(1).toLowerCase()
    	ret=false
    	alert("No se permite escribir todo en may\xFAsculas. Hemos convertido el texto a min\xFAsculas. Por favor, rev\xEDselo")
    	fld.focus()
    } else if (val.indexOf("http")>-1 || val.indexOf("www.")>-1 || val.indexOf(".com")>-1 || val.indexOf(".net")>-1 || val.indexOf(".org")>-1){
    	ret=false
    	alert("No se permite introducir direcciones de internet")
    	fld.focus()
    } else if (val.indexOf("@")>-1){
    	ret=false
    	alert("No se permite introducir direcciones de email")
    	fld.focus()
    } else if (val.indexOf('</a>')!=-1 || val.indexOf('<img')!=-1) {
    	ret=false
    	alert("No se permite c\xF3digo HTML")
    	fld.focus()
    }
  }
  return ret
}

function valRad(f,s) {
  var i=0
  var res=false
  if (f.type=="radio") {
    if (f.checked) {
    	res=true
    } else {
      alert(htmlToHex(s))
      f.focus()
    }
  } else {
    var m=f.length
    while (i<m && !res) {
      if (f[i].checked) {
        res=true
        break
      }
      i++
    }
    if (!res) {
      alert(htmlToHex(s))
      f[0].focus()
    }
  }
  return res
}

function valSelect(f,o,m,s) {
  if (m>0 && f.selectedIndex==0) {
    alert(htmlToHex("Por favor, seleccione "+s))
    f.focus()
    return false
  }
  if (f.selectedIndex>m && o.value=="") {
    alert(htmlToHex("Por favor, introduzca "+s))
    o.focus()
    return false
  }
  return true
}

function valMail() {
  disableForm(true)
  var res=true
  with (document.forms[0]) {
    res=valTextField(realname, "Por favor, introduzca su nombre", -1, true)
    if (res) {
      res=valEmail(email)
      if (res) {
        res=valTextField(mensaje, "Por favor, introduzca su mensaje", -1, true)
        if (res) {
          res=valTextArea(mensaje, 300, true)
        }
      }
    }
  }
  if (!res) disableForm(false)
  return res
}

function valEmail(f) {
  var res=false
  var email=f.value
  if (email=="") {
    var str="Por favor, introduzca la direcci\xF3n de correo electr\xF3nico"
    alert(str)
    f.focus()
  } else {
  	res=true
    var pos=-1
    var str='El formato de la direcci\xF3n de correo electr\xF3nico debe ser "nombre@servidor.com".'
    if ((pos=email.indexOf("@"))==-1) {res=false}
    else {
      var ename=email.substring(0,pos)
      if (ename.length<1) {res=false}
      else {
        var eserv=email.substring(pos+1)
        if (eserv.length<3) {res=false}
        else if (eserv=="servidor.com") {str="Tendr\xE1 que introducir el nombre de su servidor; 'servidor.com' no es v\xE1lido."; res=false}
        else if (eserv=="groups.msn.com") {str="No se permiten direcciones de correo electr\xF3nico de los MSN groups."; res=false}
        else if (eserv=="groups.yahoo.com") {str="No se permiten direcciones de correo electr\xF3nico de los Yahoo groups."; res=false}
        else if (eserv=="gruposyahoo.com") {str="No se permiten direcciones de correo electr\xF3nico de los Grupos Yahoo."; res=false}
        else if (eserv=="mail.ru" || eserv=="inbox.ru" || eserv=="viagra.com") {str="Direcci\xF3n de email no aceptado"; res=false}
        else {
          if ((pos=eserv.indexOf('.'))==-1) {res=false}
          else {
            var esrv=eserv.substring(0,pos)
            if (esrv.length<1) {res=false}
            else {
              var edom=eserv.substring(pos+1)
              if (edom.length<2) res=false
              else if (email.indexOf(" ")!=-1 ||
              	       email.indexOf(",")!=-1 ||
              	       email.indexOf(";")!=-1 ||
              	       email.indexOf("/")!=-1 ||
              	       email.indexOf("\\")!=-1) {
              	str="No se permiten caracteres especiales (,;/\\), ni espacios en la direcci\xF3n de correo electr\xF3nico.";
                res=false
              }
            }
          }
        }
      }
    }
    if (!res) {
      alert(str)
      f.focus()
    }
  }
  return res
}

function valPassword(f) {
  var res=true
  var pw=f.value
  var s="Por favor, introduzca su contrase&ntilde;a"
  if (pw=="") {
    res=false
  } else {
    if (pw.length<6) {
      s="La contrase&ntilde;a es de 6 caracteres como m&iacute;nimo"
      res=false
    }
  }
  if (!res) {
    alert(htmlToHex(s))
    f.focus()
  }
  return res
}

function valPwConf(f1, f2) {
  var res=true
  var pw1=f1.value
  var pw2=f2.value
  var s="Por favor, introduzca la confirmaci&oacute;n de su contrase&ntilde;a"
  if (pw2=="") {
    res=false
  } else {
    if (pw2.length<6) {
      s="La contrase&ntilde;a es de 6 caracteres como m&iacute;nimo"
      res=false
    } else {
      if (pw1!=pw2) {
        s="La contrase&ntilde;a y la confirmaci&oacute;n no coinciden"
        res=false
      }
    }
  }
  if (!res) {
    alert(htmlToHex(s))
    f2.focus()
  }
  return res
}

function formButtonSearch(t) {
  var s="Pulse aqu&iacute; para empezar la b&uacute;squeda"
  document.write('<input class="button" type="button" name="enviar" id="enviar" value="Buscar '+entidad[t].name+'" alt="'+s+'" title="'+s+'" onClick="valSearch()" onfocus="fldFocus(\'enviar\')" onblur="fldRelease(\'enviar\')" onMouseOver="fldFocus(\'enviar\');return st(&quot;'+s+'&quot;)" onMouseOut="return fldRelease(\'enviar\')" />')
}

function buttonSubscribeSt() {
  return st("Pulse aqu&iacute; para inscribir "+entidad[getType()].nameac)
}

function formButtonSubscribe(t) {
  var str="Inscribir "+entidad[t].name
  var s="Pulse aqu&iacute; para enviar la inscripci&oacute;n"
  document.write('<input class="button" type="submit" name="enviar" id="enviar" value="'+str+'" alt="'+s+'" title="'+s+'" onfocus="fldFocus(\'enviar\')" onblur="fldRelease(\'enviar\')" onMouseOver="fldFocus(\'enviar\');return buttonSubscribeSt()" onMouseOut="return fldRelease(\'enviar\')" />')
}

function formButtonChangeData(t) {
  var str="Cambiar los datos"
  var s="Pulse aqu&iacute; para cambiar los datos de su inscripci&oacute;n"
  document.write('<input class="button" type="submit" name="enviar" id="enviar" value="'+str+'" alt="'+s+'" title="'+s+'" onfocus="fldFocus(\'enviar\')" onblur="fldRelease(\'enviar\')" onMouseOver="fldFocus(\'enviar\');return st(\''+s+'\')" onMouseOut="return fldRelease(\'enviar\')" />')
}

function formButtonRegData(t) {
  var str="Registrar "+entidad[t].name
  var s="Pulse aqu&iacute; para registrar la inscripci&oacute;n"
  document.write('<input class="button" type="submit" name="enviar" id="enviar" value="'+str+'" alt="'+s+'" title="'+s+'" onfocus="fldFocus(\'enviar\')" onblur="fldRelease(\'enviar\')" onMouseOver="fldFocus(\'enviar\');return st(\''+s+'\')" onMouseOut="return fldRelease(\'enviar\')" />')
}

function formButtonDelData() {
  var s="Pulse aqu&iacute; para borrar la inscripci&oacute;n"
  document.write('<input class="button" type="submit" name="deldata" id="deldata" value="Borrar" alt="'+s+'" title="'+s+'" onfocus="fldFocus(\'deldata\')" onblur="fldRelease(\'deldata\')" onMouseOver="fldFocus(\'deldata\');return st(\''+s+'\')" onMouseOut="return fldRelease(\'deldata\')" />')
}

function formButtonContact() {
  var s="Pulse aqu&iacute; para enviar su mensaje"
  document.write('<input class="button" type="submit" name="enviar" id="enviar" value="Enviar mensaje" alt="'+s+'" title="'+s+'" onfocus="fldFocus(\'enviar\')" onblur="fldRelease(\'enviar\')" onMouseOver="fldFocus(\'enviar\');return st(&quot;'+s+'&quot;)" onMouseOut="return fldRelease(\'enviar\')" />')
}

function formButtonReset() {
  var s="Pulse aqu&iacute; para limpiar los campos"
  document.write('&nbsp;<input class="button" type="reset" name="reset" id="reset" value="Limpiar campos" alt="'+s+'" title="'+s+'" onclick="resetForm()" onfocus="fldFocus(\'reset\')" onblur="fldRelease(\'reset\')" onMouseOver="fldFocus(\'reset\');return st(&quot;'+s+'&quot;)" onMouseOut="return fldRelease(\'reset\')" />')
}

function formError() {
  document.writeln('<p class="content">Ha ocurrido un error en el formulario. Disculpe las molestias</p>')
}
