var digits = "0123456789";
var lLetters = "abcdefghijklmnopqrstuvwxyz"
var uLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var alphanum = lLetters + uLetters + digits;
var whitespace = " \t\n\r ";

function isEmpty(s) {
	return ((s == null) || (s.length == 0))
}

function isWhitespace(s) {
	var i;
	if (isEmpty(s)) return true;
		for (i = 0; i < s.length; i++)
		{   
			var c = s.charAt(i);
			if (whitespace.indexOf(c) == -1) return false;
		}
	return true;
}

function StripIn (s, bag) {
	var i;
	var returnString = "";
	for (i = 0; i < s.length; i++) {   
		var c = s.charAt(i);
		if (bag.indexOf(c) == -1) returnString += c;
	}
	return returnString;
}

function StripNotIn (s, bag) {
	var i;
	var returnString = "";
	for (i = 0; i < s.length; i++) {
		 var c = s.charAt(i);
		 if (bag.indexOf(c) != -1) returnString += c;
	}
	return returnString;
}

function isLetter (c) {
	return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}

function isDigit (c) {
	return ((c >= "0") && (c <= "9"))
}

function isLetterOrDigit (c) {
	return (isLetter(c) || isDigit(c))
}

function isInteger (s) {
	var i;
	if (isEmpty(s)) return false;
	for (i = 0; i < s.length; i++) {
		var c = s.charAt(i);
		if (!isDigit(c)) return false;
	}
	return true;
}

function AlphaNumeric(s) {
	var i;
	if (isEmpty(s)) return false;
	for (i = 0; i < s.length; i++) {
		var c = s.charAt(i);
		if (!isLetterorDigit(c)) return false;
	}
	return true;
}

function isLength(s, lMin, lMax) {
	if ((s.length >= lMin) && (s.length <= lMax)) return true;
	return false;
}

function warnInvalid (theField, s) {
	if (theField != null) {
		theField.focus();
	}
	alert(s);
	return false;
}

function validateDate(sender, e) {
    if (e.Value.length > 0) {
        var date = parseDate(e.Value);
        var ctl = document.getElementById(sender.controltovalidate);
        if (date) {
            var today = new Date();
            if (date > today || date.getFullYear() < (today.getFullYear() - 30)) {
                e.IsValid = false;
            }
            else {
                e.IsValid = true;
                ctl.value = formatDate(date);
            }
        }
        else {
            e.IsValid = false;
        }
    }
    else {
        e.IsValid = true;
    }
}

function parseDate(s) {
    var parts = s.split(/[-\s\/]/g);
    if(parts.length == 3){
        var day = parseInt(parts[0]);
        var mon = parseInt(parts[1]);
        var year = parseInt(parts[2]);

        switch (parts[1].toLowerCase()) {
            case "1": case "01": case "jan":case "january":
                mon = 1; break;
            case "2": case "02": case "feb": case "february":
                mon = 2; break;
            case "3": case "03": case "mar": case "march":
                mon = 3; break;
            case "4": case "04": case "apr": case "april":
                mon = 4; break;
            case "5": case "05": case "may": 
                mon = 5; break;
            case "6": case "06": case "jun": case "june":
                mon = 6; break;
            case "7": case "07": case "jul": case "july":
                mon = 7; break;
            case "8": case "08": case "aug": case "august":
                mon = 8; break;
            case "9": case "09": case "sep": case "september":
                mon = 9; break;
            case "10": case "oct": case "october":
                mon = 10; break;
            case "11": case "nov": case "november":
                mon = 11; break;
            case "12": case "dec": case "december":
                mon = 12; break;
            default:
                return null;
        }

        if (year < 100) {
            if (year < 50)
                year += 2000;
            else
                year += 1900;
        }

        if (mon >= 1 && mon <= 12 && day >= 1 && day <= 31) {
            return new Date(year, mon - 1, day);
        }

        return null;
    }
    else{
        return null;
    }
}

function formatDate(date) {
    if(date){
        var smon = "" + (date.getMonth() + 1);
        if (smon.length == 1) {
            smon = "0" + smon;
        }
        return date.getDate() + "/" + smon + "/" + date.getFullYear();
    }
    return null;
}
