// Validacion de caracteres basada en el sitio:
// http://unicode.coeurlumiere.com/
/*// Latin uppercase
var encLatinUpper = '0041' + '|' + '0042' + '|' + '0043' + '|' + '0044' + '|' + '0045' + '|' + '0046' + '|' + '0047' + '|' + '0048' + '|' +
'0049' + '|' + '004A' + '|' + '004B' + '|' + '004C' + '|' + '004D' + '|' + '004E' + '|' + '004F' + '|' + '0050' + '|' +
'0051' + '|' + '0052' + '|' + '0053' + '|' + '0054' + '|' + '0055' + '|' + '0056' + '|' + '0057' + '|' + '0058' + '|' +
'0059' + '|' + '005A';

// Latin lowercase
var encLatinLower = '0061' + '|' + '0062' + '|' + '0063' + '|' + '0064' + '|' + '0065' + '|' + '0066' + '|' + '0067' + '|' + '0068' + '|' +
'0069' + '|' + '006A' + '|' + '006B' + '|' + '006C' + '|' + '006D' + '|' + '006E' + '|' + '006F' + '|' + '0070' + '|' +
'0071' + '|' + '0072' + '|' + '0073' + '|' + '0074' + '|' + '0075' + '|' + '0076' + '|' + '0077' + '|' + '0078' + '|' +
'0079' + '|' + '007A';

// Hebrew
var encHebrew = '05D0' + '|' + '05D1' + '|' + '05D2' + '|' + '05D3' + '|' + '05D4' + '|' + '05D5' + '|' + '05D6' + '|' + '05D7' + '|' +
'05D8' + '|' + '05D9' + '|' + '05DA' + '|' + '05DB' + '|' + '05DC' + '|' + '05DD' + '|' + '05DE' + '|' + '05DF' + '|' +
'05E0' + '|' + '05E1' + '|' + '05E2' + '|' + '05E3' + '|' + '05E4' + '|' + '05E5' + '|' + '05E6' + '|' + '05E7';
'05E8' + '|' + '05E9' + '|' + '05EA';

// underscore, point, @-sign, double quote, single quote
var encOtras = '005F' + '|' + '002E' + '|' + '0022' + '|' + '0040' + '|' + '0027';*/

// Russian uppercase
var encRussianUpper = '\\u0410\\u0411\\u0412\\u0413\\u0414\\u0415\\u0416\\u0417' +
'\\u0418\\u0419\\u041A\\u041B\\u041C\\u041D\\u041E\\u041F' +
'\\u0420\\u0421\\u0422\\u0423\\u0424\\u0425\\u0426\\u0427' +
'\\u0428\\u0429\\u042A\\u042B\\u042C\\u042D\\u042E\\u042F';

// Russian lowercase
var encRussianLower = '\\u0430\\u0431\\u0432\\u0433\\u0434\\u0435\\u0436\\u0437' +
'\\u0438\\u0439\\u043A\\u043B\\u043C\\u043D\\u043E\\u043F' +
'\\u0440\\u0441\\u0442\\u0443\\u0444\\u0445\\u0446\\u0447' +
'\\u0448\\u0449\\u044A\\u044B\\u044C\\u044D\\u044E\\u044F';

function noVacio(elem) {
    var str = elem.value;
    var re = /.+/;
    return str.match(re);
}

function esMail(elem) {
    var str = elem.value;
    var re = new RegExp("^[\\w" + encRussianUpper + encRussianLower + "-]+(\\.[\\w" + encRussianUpper + encRussianLower + "-]+)*@([\\w" + encRussianUpper + encRussianLower + "-]+\\.)+[a-zA-Z]{2,7}$");
    return re.test(str);
}

function cadaPalabra (elem, min_caracter) {
    var str = elem.value;
	pal = (str.split(' '));
	m = 99999999;
	for (var i=0; i<pal.length; i++)
		 if (m > pal[i].length)
		 	m = pal[i].length
	return m < min_caracter;
}

function esDia(elem) {
    var str = elem.value;
    str = str.toString( );
	if ( str=="" )			return true;
	if ( !esNum(str) )		return false;
	if ( str<1 || str>31 )	return false;
    return true;
}

function esMes(elem) {
    var str = elem.value;
    str = str.toString( );
	if ( str=="" )			return true;
	if ( !esNum(str) )		return false;
	if ( str<1 || str>12 )	return false;
    return true;
}

function esAno(elem) {
    var str = elem.value;
    str = str.toString( );
	if ( str=="" )			return true;
	if ( !esNum(str) )		return false;
	if ( (str<1900 || str>2100) )
		if ( (str<0 || str>99) )
			return false;
		else if ( str<10 )
			elem.value = "200" + elem.value;
		else
			elem.value = "20" + elem.value;
    return true;
}

function esNum( str ) {
    for (var i = 0; i < str.length; i++) {
        oneChar = str.charAt(i).charCodeAt(0);
        if (oneChar < 48 || oneChar > 57) {
            return false;
        }
    }
	return true;
}

function esFecha( yr, mo, day) {

	var testDate = new Date(yr, mo-1, day);
	if (testDate.getDate( ) == day)
		if (testDate.getMonth( ) + 1 == mo)
			if (testDate.getFullYear( ) == yr)
				return true;
	return false;
}

function largoMax(elem, largo) {
    var str = elem.value;
   return (str.length > largo);
}

