	function EsFecha(source, arguments) {
		// dateStr must be of format month day year with either slashes
		// or dashes separating the parts. Some minor changes would have
		// to be made to use day month year or another format.
		// This function returns True if the date is valid.
		var dateStr = arguments.Value;
		var slash1 = dateStr.indexOf("/");
		if (slash1 == -1) { slash1 = dateStr.indexOf("-"); }
		
		// if no slashes or dashes, invalid date
		if (slash1 == -1) { arguments.IsValid=false; return;}
		var dateMonth = dateStr.substring(0, slash1)
		var dateMonthAndYear = dateStr.substring(slash1+1, dateStr.length);
		var slash2 = dateMonthAndYear.indexOf("/");
		if (slash2 == -1) { slash2 = dateMonthAndYear.indexOf("-"); }

		// if not a second slash or dash, invalid date
		if (slash2 == -1) { arguments.IsValid=false; return;}
		var dateDay = dateMonthAndYear.substring(0, slash2);
		var dateYear = dateMonthAndYear.substring(slash2+1, dateMonthAndYear.length);
		if ( (dateMonth == "") || (dateDay == "") || (dateYear == "") ) { arguments.IsValid=false; return;}

		// if any non-digits in the month, invalid date
		for (var x=0; x < dateMonth.length; x++) {
			var digit = dateMonth.substring(x, x+1);
			if ((digit < "0") || (digit > "9")) { arguments.IsValid=false; return;}
		}

		// convert the text month to a number
		var numMonth = 0;
		for (var x=0; x < dateMonth.length; x++) {
			digit = dateMonth.substring(x, x+1);
			numMonth *= 10;
			numMonth += parseInt(digit);
		}
		if ((numMonth <= 0) || (numMonth > 12)) { arguments.IsValid=false; return;}

		// if any non-digits in the day, invalid date
		for (var x=0; x < dateDay.length; x++) {
			digit = dateDay.substring(x, x+1);
			if ((digit < "0") || (digit > "9")) { arguments.IsValid=false; return;}
		}

		// convert the text day to a number
		var numDay = 0;
		for (var x=0; x < dateDay.length; x++) {
			digit = dateDay.substring(x, x+1);
			numDay *= 10;
			numDay += parseInt(digit);
		}
		if ((numDay <= 0) || (numDay > 31)) { arguments.IsValid=false; return;}

		// February can't be greater than 29 (leap year calculation comes later)
		if ((numMonth == 2) && (numDay > 29)) { arguments.IsValid=false; return;}

		// check for months with only 30 days
		if ((numMonth == 4) || (numMonth == 6) || (numMonth == 9) || (numMonth == 11)) { 
			if (numDay > 30) { arguments.IsValid=false; return;} 
		}

		// if any non-digits in the year, invalid date
		for (var x=0; x < dateYear.length; x++) {
			digit = dateYear.substring(x, x+1);
			if ((digit < "0") || (digit > "9")) { arguments.IsValid=false; return;}
		}

		// convert the text year to a number
		var numYear = 0;
		for (var x=0; x < dateYear.length; x++) {
			digit = dateYear.substring(x, x+1);
			numYear *= 10;
			numYear += parseInt(digit);
		}

		// Year must be a 2-digit year or a 4-digit year
		if ( (dateYear.length != 2) && (dateYear.length != 4) ) { arguments.IsValid=false; return;}

		// if 2-digit year, use 50 as a pivot date
		if ( (numYear < 50) && (dateYear.length == 2) ) { numYear += 2000; }
		if ( (numYear < 100) && (dateYear.length == 2) ) { numYear += 1900; }
		if ((numYear <= 0) || (numYear > 9999)) { arguments.IsValid=false; return;}

		// check for leap year if the month and day is Feb 29
		if ((numMonth == 2) && (numDay == 29)) {
			var div4 = numYear % 4;
			var div100 = numYear % 100;
			var div400 = numYear % 400;

			// if not divisible by 4, then not a leap year so Feb 29 is invalid
			if (div4 != 0) { arguments.IsValid=false; return;}

			// at this point, year is divisible by 4. So if year is divisible by
			// 100 and not 400, then it's not a leap year so Feb 29 is invalid
			if ((div100 == 0) && (div400 != 0)) { arguments.IsValid=false; return;}
		}

		// date is valid
		arguments.IsValid=true;
	}
	
//Adicionado por WCASTRO: Funcion utilitaria para no permitir 
//el ingreso de caracteres de especiales en campos de texto.
function noSpecialChars(e)
    {
        var iChars = /[a-zA-Z0-9\s@\.\,\-]/;  
        var keynum
        var keychar
        if(window.event) // IE
        {
            keynum = e.keyCode
        }
        else if(e.which) // Netscape/Firefox/Opera
        {
            keynum = e.which
        }
        keychar = String.fromCharCode(keynum)        
        if (iChars.test(keychar))
            return true;
        else
            return false;
    }
function onlyDigits(e)
{
	var iChars = /[0-9]/;  
    var keynum
    var keychar
    if(window.event) // IE
    {
        keynum = e.keyCode
    }
    else if(e.which) // Netscape/Firefox/Opera
    {
        keynum = e.which
    }
    keychar = String.fromCharCode(keynum)        
    if (iChars.test(keychar))
        return true;
    else
        return false;	
}