function validEmail(value) {
	if (value==null || value=="")	return false;
	if (value.indexOf(" ")>=0)		return false;

	var state = 1;
	var code, username='', domain='', amountOfDot = 0;
	for (var i=0; i<value.length; i++) {
		code = value.charAt(i);
		if (state==1) {
			if (	code == "<" || code == ">" 
					|| code == "(" || code == ")"	) return false;
			else if (	code == "@"	)
				if (username == '') return false;
				else state = 3;
			username += code;
		}
		else if (state==3) {
			if (	(code >= "0" && code <= "9")
					|| (code >= "A" && code <= "Z")
					|| (code >= "a" && code <= "z")
					|| code == "_"
					|| code == "-"
				) ;
			else if (code == ".")
				if (domain == '' || domain.charAt(domain.length-1) == '.') return false;
				else amountOfDot++;
			else return false;
			domain += code;
		}
	}
	if (state != 3) return false;
	if (domain == '' || domain.charAt(domain.length-1) == '.') return false;
	if (amountOfDot <1) return false;
	return true;
}

//------------------------------------------------------------------------
function validText(obj) {
	var len = obj.value.length;
	if ((len == 1) && (obj.value.substring(0, 1) == " ")) {
		obj.value = ""; len = 0;
	}
}

//------------------------------------------------------------------------
function checkNumber(numfrom,numto,obj){
	var st;
	st= obj.value;
	for (var i=0;i< st.length; i++){
		if (st.charAt(i) < '0' || st.charAt(i)>'9'){
		if (st.charAt(i) != '.') {
			alert("Bạn đã nhập vào ký tự không hợp lệ. Vui lòng chỉ nhập vào những ký tự là con số.");
			obj.focus();
			return false;
		} }
	}
		if ( eval(obj.value)< numfrom || eval(obj.value)> numto ){
		alert("Bạn đã nhập vào số quá lớn hoặc quá nhỏ. Vui lòng nhập vào số từ " + numfrom + " đến " + numto + ".");
		obj.focus();
		return false;
	}		
	return true;
}

//------------------------------------------------------------------------
function validDate1(o1,o2,o3){
	var Month=o1.value, Day=o2.value, Year=o3.value;
	var DaysPerMonth, msg;
	switch (eval(Month)) {
		case 4:
		case 6:
		case 9:
		case 11: { DaysPerMonth=30; msg="30 ngày."; break; }
		case 2:  { 
			if ((Year%4 == 0) && ((Year%100 != 0) || (Year%400 == 0))) {
				DaysPerMonth=29; msg="29 ngày (năm nhuận.)"; }
			else { DaysPerMonth=28; msg="28 ngày."; }
			break; }
		default: { DaysPerMonth=31; msg="31 ngày."; break; }
	}
	if (Day.length!=0 && (eval(Day)>eval(DaysPerMonth))) {
		alert("Vui lòng xem lại giá trị ngày tháng, vì tháng này chỉ có " + msg);
		o1.focus();
		return false;
	}
	return true;
}

//------------------------------------------------------------------------
function validDate2(obj) {
	var strDate=obj.value;
	var unicode, findtype=0;
	
	for (var i=0;i<strDate.length; i++) {
		unicode=strDate.charCodeAt(i);
		if (unicode<48 || unicode>57) { // not from 0-9
			if (unicode!=47) { // not  "/"
				alert("Bạn đã nhập vào ký tự không hợp lệ: '" + strDate.charAt(i) + "' (mã ký tự: " + unicode + ")");
				obj.focus();
				return 0;
			}
		}
	}

	var s=obj.value;
	if (s.length!=0 && s.indexOf("/")==-1) {
		alert("Bạn đã nhập sai định dạng ngày tháng. Vui lòng nhập theo dạng: tháng/ngày/năm.");
		obj.focus();
		return 0;
	}

	var elem=s.split("/");
	if (s.length!=0 && (elem[0].length==0 || eval(elem[0])<1 || eval(elem[0])>12)) {
		alert("Invalid month value. Must be between 1-12.");
		obj.focus();
		return 0;
	}

	var DaysPerMonth, msg;
	switch (eval(elem[0])) {
		case 4:
		case 6:
		case 9:
		case 11: { DaysPerMonth=30; msg="30 days"; break; }
		case 2:  { 
			if ((elem[2]%4 == 0) && ((elem[2]%100 != 0) || (elem[2]%400 == 0))) {
				DaysPerMonth=29; msg="29 days (leap year)"; }
			else { DaysPerMonth=28; msg="28 days"; }
			break; }
		default: { DaysPerMonth=31; msg="31 days"; break; }
	}

	if (s.length!=0 && (elem[1].length==0 || eval(elem[1])<1 || eval(elem[1])>eval(DaysPerMonth))) {
		alert("Invalid day value. This month only has " + msg);
		obj.focus();
		return 0;
	}

	if (s.length!=0 && (elem[2].length==0 || eval(elem[2])<1900 || eval(elem[2])>3000)) {
		alert("Invalid year value. Must be between 1900-3000");
		obj.focus();
		return 0;
	}
	
	var indate = new Date(elem[2], elem[0], elem[1]);
	return indate;
}

//------------------------------------------------------------------------
function checkLen(obj,n) {
	if (obj.value.length>n) {
		alert("You have exceeded the total number of characters (" + n + ").\nThe string will be truncated at its end.");
		obj.value = obj.value.substring(0,n);
	}
}