function emailCheck (emailStr) {
/* The following pattern is used to check if the entered e-mail address
   fits the user@domain format.  It also is used to separate the username
   from the domain. */
var emailPat=/^(.+)@(.+)$/
/* The following string represents the pattern for matching all special
   characters.  We don't want to allow special characters in the address. 
   These characters include ( ) < > @ , ; : \ " . [ ]    */
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
/* The following string represents the range of characters allowed in a 
   username or domainname.  It really states which chars aren't allowed. */
var validChars="\[^\\s" + specialChars + "\]"
/* The following pattern represents the range of characters allowed as
   the first character in a valid username or domain.  I just made it
   the same as above, but if you want to add a different constraint,
   you would change it here. */
var firstChars=validChars
/* The following pattern applies if the "user" is a quoted string (in
   which case, there are no rules about which characters are allowed
   and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
   is a legal e-mail address. */
var quotedUser="(\"[^\"]*\")"
/* The following pattern applies for domains that are IP addresses,
   rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
   e-mail address. NOTE: The square brackets are required. */
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
/* The following string represents at atom (basically a series of
   non-special characters.) */
var atom="(" + firstChars + validChars + "*" + ")"
/* The following string represents one word in the typical username.
   For example, in john.doe@somewhere.com, john and doe are words.
   Basically, a word is either an atom or quoted string. */
var word="(" + atom + "|" + quotedUser + ")"
// The following pattern describes the structure of the user
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
/* The following pattern describes the structure of a normal symbolic
   domain, as opposed to ipDomainPat, shown above. */
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")


/* Finally, let's start trying to figure out if the supplied address is
   valid. */

/* Begin with the course pattern to simply break up user@domain into
   different pieces that are easy to analyze. */
var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
  /* Too many/few @'s or something; basically, this address doesn't
     even fit the general mould of a valid e-mail address. */
	alert("El correo electronico es erroneo (verifica @ y .)")
	return false
}
var user=matchArray[1]
var domain=matchArray[2]

// See if "user" is valid 
if (user.match(userPat)==null) {
    // user is not valid
    alert("El usuario del correo electronico no es valido.")
    return false
}
/* if the e-mail address is at an IP address (as opposed to a symbolic
   host name) make sure the IP address is valid. */
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
    // this is an IP address
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	        alert("La direccion IP de destino no es valida.")
		return false
	    }
    }
    return true
}

// Domain is symbolic name
var domainArray=domain.match(domainPat)
if (domainArray==null) {
	alert("El dominio no es valido.")
    return false
}
/* domain name seems valid, but now make sure that it ends in a
   three-letter word (like com, edu, gov) or a two-letter word,
   representing country (uk, nl).
   If there's a country code at the end of the address, the full domain
   must include a hostname and category (e.g. host.co.uk or host.pub.nl).
   If it ends in a .com or something, make sure there's a hostname.*/

/* Now we need to break up the domain to get a count of how many atoms
   it consists of. */
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) {
   // the address must end in a two letter or three letter word.
   alert("La direccion debera de acabar en un dominio\nde tres letras, y en un pais de dos letras.")
   return false
}

/* If it just ends in .com, .gov, etc., make sure there's a host name.
   This case can never actually happen because earlier checks take
   care of this implicitly, but we'll do it anyway. */
if (domArr[domArr.length-1].length==3 && len<2) {
   var errStr="Falta en nombre del servidor."
   alert(errStr)
   return false
}
// If we've gotten this far, everything's valid!
return true;
}
//  End -->

function ventana(URL) {
	nueva = window.open(URL, 'dy', 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,width=630,height=470,outerwidth=630,outerheight=470');
	nueva.focus();
}

function ventana_noti(URL) {
	nueva = window.open(URL, 'dy', 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,width=630,height=450,outerwidth=630,outerheight=470');
	nueva.focus();
}

function ventana_foti(URL) {
	nueva = window.open(URL, 'dy', 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,width=570,height=440');
	nueva.focus();
}

function frame_ventanapadre(framesrc, URL) {
	window.opener.frame.framesrc=URL
}


function cambiar_usuario_vacio(objeto) {

	if (objeto.value=='') {
		objeto.value='Usuario Anónimo'
	}
}

function cambiar_ocultos(caja, oculto, id) {
    if (caja.checked) {
    	valor=0
    }else {
       valor=id
    }
    oculto.value= valor
}


/*
 Hace que el iframe tome la altura de su contenido
 p_frame: id del iframe (opcional)
 p_div: id del div que abarca el body del iframe
 Para mantener la compatibilidad con mozilla (especialmente si omitimos el 1er parámetro)
 conviene que el iframe tenga el mismo name e id
*/
function cambiar_altura(p_frame, p_div){
//	alert(p_frame);
//	alert(this.frames.name);
	if(p_frame==null) p_frame = this.frames.name;
	var lbackdiv = parent.document.getElementById(p_frame);//frame obj
	var contentdiv = document.getElementById(p_div);//tallest div on iframe's parent
	var contentht = contentdiv.clientHeight? contentdiv.clientHeight : contentdiv.offsetHeight;//find height of tallest div

	var winht = document.body.clientHeight? document.body.clientHeight : document.body.offsetHeight;//find height of browser window
	
	if(winht < 1)
	{winht = window.innerHeight;}//in case browser uses neither clientHeight nor offsetHeight
	
//	Bourch: Comento esta linea para que pueda adaptase a mayor y también menor
//	var ht = contentht > winht? contentht : winht;//set height to whichever is greater, window or tallest div height
	var ht = contentht + 20 ;

	lbackdiv.style.height = ht + "px";//change height of iframe
}
