function islegal(str, nom) {
	var inc = "&;`{}[]";
	var temp = '';
	if (str.length > 0) {
		for ( var i = 0; i < str.length; i++) {
			temp = "" + str.substring(i, i + 1);
			if (inc.indexOf(temp) != "-1") {
				return 'El campo ' + nom + ' tiene caracteres ilegales \n';
				break;
			}
		}
		return '';
	} else {
		return '';
	}
}
function islength(str, nom) {
	if (str.length == 0) {
		return 'Debe completar el campo ' + nom + '\n';
	} else {
		return '';
	}
}
function isnum(str, nom) {
	var inc = "0123456789.,";
	var temp = '';
	if (str.length > 0) {
		for ( var i = 0; i < str.length; i++) {
			temp = "" + str.substring(i, i + 1);
			if (inc.indexOf(temp) == "-1") {
				return 'El campo ' + nom + ' debe ser un numero \n';
				break;
			}
		}
		return '';
	} else {
		return '';
	}
}
function doconcat(str1, str2) {
	return str1 + str2;
}
function groupval(str, nom, islg, isln, isnm) {
	var sTemp = '';
	if (islg == 1) {
		sTemp = sTemp + islegal(str, nom);
	}
	if (isln == 1) {
		sTemp = sTemp + islength(str, nom);
	}
	if (isnm == 1) {
		sTemp = sTemp + isnum(str, nom);
	}
	return sTemp;
}
function openWin(sPath, wid, hei) {
	var iLeft = 0;
	iLeft = (screen.width / 2) - (wid / 2);
	var iTop = 0;
	iTop = (screen.height / 2) - (hei / 2);
	window.open(sPath, "marian", "width=" + wid + ",height=" + hei
			+ ",status=no,toolbar=no,menubar=no,scrollbars=yes,top=" + iTop
			+ ",left=" + iLeft + "");
}
function openWin2(sPath, wid, hei, name) {
	var iLeft = 0;
	iLeft = (screen.width / 2) - (wid / 2);
	var iTop = 0;
	iTop = (screen.height / 2) - (hei / 2);
	return window.open(sPath, name, "width=" + wid + ",height=" + hei
			+ ",status=no,toolbar=no,menubar=no,scrollbars=yes,top=" + iTop
			+ ",left=" + iLeft + "");
}

function fullScreen(theURL) {
	window.open(theURL, '', 'fullscreen=yes, scrollbars=auto');
}

/*
 * ==================================================================
 * LTrim(string) : Returns a copy of a string without leading spaces.
 * ==================================================================
 */
function LTrim(str)
/*
 * PURPOSE: Remove leading blanks from our string. IN: str - the string we want
 * to LTrim
 */
{
	var whitespace = new String(" \t\n\r");

	var s = new String(str);

	if (whitespace.indexOf(s.charAt(0)) != -1) {
		// We have a string with leading blank(s)...

		var j = 0, i = s.length;

		// Iterate from the far left of string until we
		// don't have any more whitespace...
		while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
			j++;

		// Get the substring from the first non-whitespace
		// character to the end of the string...
		s = s.substring(j, i);
	}
	return s;
}

/*
 * ==================================================================
 * RTrim(string) : Returns a copy of a string without trailing spaces.
 * ==================================================================
 */
function RTrim(str)
/*
 * PURPOSE: Remove trailing blanks from our string. IN: str - the string we want
 * to RTrim
 * 
 */
{
	// We don't want to trip JUST spaces, but also tabs,
	// line feeds, etc. Add anything else you want to
	// "trim" here in Whitespace
	var whitespace = new String(" \t\n\r");

	var s = new String(str);

	if (whitespace.indexOf(s.charAt(s.length - 1)) != -1) {
		// We have a string with trailing blank(s)...

		var i = s.length - 1; // Get length of string

		// Iterate from the far right of string until we
		// don't have any more whitespace...
		while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
			i--;

		// Get the substring from the front of the string to
		// where the last non-whitespace character is...
		s = s.substring(0, i + 1);
	}

	return s;
}

/*
 * ============================================================= Trim(string) :
 * Returns a copy of a string without leading or trailing spaces
 * =============================================================
 */
function Trim(str)
/*
 * PURPOSE: Remove trailing and leading blanks from our string. IN: str - the
 * string we want to Trim
 * 
 * RETVAL: A Trimmed string!
 */
{
	return RTrim(LTrim(str));
}

/** ************************************************************************************************************************************************************* */
// Para validar que el email este completo correctamente
function validateEmail(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 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 an atom (basically a series of
	 * non-special characters.)
	 */
	var atom = 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 coarse 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.
		 */
		return 'La direccion de e-mail es incorrecta (compruebe @ y .)'
	}
	var user = matchArray[1]
	var domain = matchArray[2]

	// See if "user" is valid
	if (user.match(userPat) == null) {
		// user is not valid
		return 'El nombre de la direccion de correo no es valido'
	}

	/*
	 * 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) {
				return 'Direccion IP no valida'
			}
		}
	}

	// Domain is symbolic name
	var domainArray = domain.match(domainPat)
	if (domainArray == null) {
		return 'El nombre de dominio no es correcto'
	}

	/*
	 * 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), and that there's a hostname preceding the domain or country.
	 */

	/*
	 * 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 > 4) {
		// the address must end in a two letter or three letter word.
		return 'La direccion de correo debe acabar en 3 o 4 letras de dominio o 2 de un pais'
	}

	// Make sure there's a host name preceding the domain.
	if (len < 2) {
		return 'Esta direccion es desconocida como IP'
	}

	return "0"
}
// Funcion que comprueba que los caracteres introducidos son "+-()0123456789"
function validateTelefono(str) {
	var inc = "+-()0123456789";
	var temp = '';
	for ( var i = 0; i < str.length; i++) {
		temp = "" + str.substring(i, i + 1);
		if (inc.indexOf(temp) == "-1") {
			return (false);
			break
		}
	}
	return (true);
}
// Funcion que comprueba que los caracteres introducidos son "/-0123456789"
function validateFechaCad(str) {
	var inc = "/-0123456789";
	var temp = '';
	for ( var i = 0; i < str.length; i++) {
		temp = "" + str.substring(i, i + 1);
		if (inc.indexOf(temp) == "-1") {
			return (false);
			break
		}
	}
	return (true);
}

// funcion que solo permite escribir d???gitos
var isIE = document.all ? true : false;
var isNS = document.layers ? true : false;

function onlyDigits(e, decReq) {
	var key = (isIE) ? window.event.keyCode : e.which;
	var obj = (isIE) ? event.srcElement : e.target;
	var isNum = (key == 0 || key == 8 || (key > 47 && key < 58)) ? true : false;
	var dotOK = (key == 46 && decReq == 'decOK' && (obj.value.indexOf(".") < 0 || obj.value.length == 0)) ? true
			: false;

	if (isIE) {
		window.event.keyCode = (!isNum && !dotOK && isIE) ? 0 : key;
	} else if (isNS) {
		e.which = (!isNum && !dotOK && isNS) ? 0 : key;
	}

	return (isNum || dotOK);
}

// permite escribir letras y n???meros, pero no s???mbolos raros
function onlyDigitsKeys(e, decReq) {
	var key = (isIE) ? window.event.keyCode : e.which;
	var obj = (isIE) ? event.srcElement : e.target;
	var isNum = (key == 0 || key == 8 || (key > 47 && key < 58)
			|| (key > 64 && key < 91) || (key > 96 && key < 123)) ? true
			: false;
	var dotOK = (key == 46 && decReq == 'decOK' && (obj.value.indexOf(".") < 0 || obj.value.length == 0)) ? true
			: false;

	if (isIE) {
		window.event.keyCode = (!isNum && !dotOK && isIE) ? 0 : key;
	} else if (isNS) {
		e.which = (!isNum && !dotOK && isNS) ? 0 : key;
	}

	return (isNum || dotOK);
}

// permite escribir letras may???sculas y min???sculas, espacios y puntos
function onlyKeys(e, decReq) {
	var key = (isIE) ? window.event.keyCode : e.which;
	var obj = (isIE) ? event.srcElement : e.target;
	var isNum = (key == 0 || key == 8 || key == 46 || key == 32
			|| (key > 64 && key < 91) || (key > 96 && key < 123)) ? true
			: false;
	var dotOK = (key == 46 && decReq == 'decOK' && (obj.value.indexOf(".") < 0 || obj.value.length == 0)) ? true
			: false;

	if (isIE) {
		window.event.keyCode = (!isNum && !dotOK && isIE) ? 0 : key;
	} else if (isNS) {
		e.which = (!isNum && !dotOK && isNS) ? 0 : key;
	}

	return (isNum || dotOK);
}

