var REGEX_EMAIL = "^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$";

function belgaValidateRequired(str){
  return (str && str.replace(/\s/g, "").length > 0);
}

function belgaValidateDateTime(strDate, datetimeFormat) {
	var index;
	var s;
	var m;
	var h;
	var date;
	var month;
	var year;
	try {
		// second
		index = datetimeFormat.indexOf("ss");
        if(index >= 0) {
			s = strDate.substring(index, index + 2);
			if(isNaN(s) || s.valueOf() >= 60) {
				return false;
			}
		}

		// minute
		index = datetimeFormat.indexOf("mm");
        if(index >= 0) {
			m = strDate.substring(index, index + 2);
			if(isNaN(m) || m.valueOf() >= 60) {
				return false;
			}
		}
		
		// hour
		index = datetimeFormat.indexOf("HH");
        if(index >= 0) {
			h = strDate.substring(index, index + 2);								
			if(isNaN(h) || h.valueOf() >= 24) {
				return false;
			}
		}
		
		// year
		index = datetimeFormat.indexOf("yyyy");
        if(index >= 0) {
			year = strDate.substring(index, index + 4);
			if(isNaN(year) || year.valueOf() > 3000){
				return false;
			}
		}
		
		// month
		index = datetimeFormat.indexOf("MM");
        if(index >= 0) {
			month = strDate.substring(index, index + 2);
			if(isNaN(month) || month.valueOf() > 12) {
				return false;
			}								
		}
		
		// date
		index = datetimeFormat.indexOf("dd");
        if(index >= 0) {
			date = strDate.substring(index, index + 2);
			if(isNaN(date) || date.valueOf() > 31) {
				return false;
			}
			
			if(month == 4 || month == 6 || month == 9 || month == 11){
				if(date > 30){
					return false;
				}
			}
			
			if(month == 2) {
				if(year % 4 == 0){
					if(date > 29) {
						return false;
					}
				} else {
					if(date > 28) {
						return false;
					}
				}
			}
		}
		return true;		
    } catch(e) {
        return false;
    }
}
// Email
function belgaValidateEmail(email){
    if(belgaValidateRequired(email) == false){
        return true;
    }

    return (email.match(REGEX_EMAIL) != null);
}