
function sameCheckAll(obj) {
	var form = obj.form;
	for (i=0; i<form.elements.length; i++) {
		var e = form.elements[i];
		if (e.type != 'checkbox') continue;
		e.checked = obj.checked;
	}
}
function getElementValue(obj) {
	var i=0, result;
	switch (obj.type) {
	case "text":
	case "hidden":
	case "textarea":
	case "password":
		return obj.value;
	case "select-one":
	case "select":
		if (obj.selectedIndex >= 0)
		return obj.options[obj.selectedIndex].value;
	case "radio":
		for (i=0; i<obj.form.elements.length; i++) {
			var e = obj.form.elements[i];
			if (e.type != 'radio') continue;
			if (e.name == obj.name && e.checked) return e.value;
		}break;
	case "checkbox":
		for (i=0; i<obj.form.elements.length; i++) {
			var e = obj.form.elements[i];
			if (e.type != 'checkbox') continue;
			if (e.name == obj.name && e.checked) {
				if (result) result +=',';
				result += e.value;
			}
		}
	}return result;
}
function validate_MaxLength(obj, len) {
	var strValue = getElementValue(obj);
	return strValue.length <= len;
}
function validate_NotEmpty(obj) {
	var strValue = getElementValue(obj);
	return (strValue && strValue.length > 0);
}
function validate_Integer(obj) {
	var strValue = getElementValue(obj);
	return (!isNaN(parseInt(strValue)));
}
function validate_Number(obj) {
	var strValue = getElementValue(obj);
	return (!isNaN(parseFloat(strValue)));
}
function validate_Zipcode(obj) {
	var strValue = getElementValue(obj);
	var val = parseInt(strValue);
	if (isNaN(val)) return false;
	return (val>=100000&&val<=999999);
}
function validate_Idcard(obj) {
	var strValue = getElementValue(obj);
	var len = strValue.length;
	if (len!=15&&len!=18) return false;
	var letters = "1234567890";
	if (len==18) len--;
	for (i=0; i < len; i++) {
		var chr = strValue.charAt(i); 
		if (letters.indexOf(chr) == -1) return false;
	}return true;
}
function validate_Email(obj) {
	var strValue = getElementValue(obj);
	if (strValue.length < 5) return false;
	var arrTemp=strValue.split("@");
	if (arrTemp.length != 2) return false;
	if (!arrTemp[0]||!arrTemp[1]) return false;
	arrTemp = arrTemp[1].split(".");
	if (arrTemp.length < 2) return false;
	for (var i=0; i<arrTemp.length; i++) {
		if (arrTemp[i].length == 0) return false;
	}return true;
}
function validate_Phone(obj) { 
	var strValue = getElementValue(obj);
	if (strValue.length < 5) return false;
	var letters = "1234567890,-"; 
	for (i=0; i < strValue.length; i++) { 
		var chr = strValue.charAt(i); 
		if (letters.indexOf(chr) == -1)  return false;
	}return true;
}
function validate(form) {
	var bValid = true;
	for (var i=0; i<form.elements.length; i++) {
		var obj = form.elements[i];
		if (!obj.name) continue;
		var attr = obj.getAttribute("validate");
		if (!attr) continue;
		var types = attr.split("|");
		if (types.length < 2) continue;
		for (var j=0; j<types.length-1; j++){
			if (types[j]=="notempty")
				bValid = validate_NotEmpty(obj);
			else if (types[j]=="integer")
				bValid = validate_Integer(obj);
			else if (types[j]=="number")
				bValid = validate_Number(obj);
			else if (types[j]=="email")
				bValid = validate_Email(obj);
			else if (types[j]=="zipcode")
				bValid = validate_Zipcode(obj);
			else if (types[j]=="idcard")
				bValid = validate_Idcard(obj);
			else if (types[j]=="phone")
				bValid = validate_Phone(obj);
			else if (parseInt(types[j])>0)
				bValid = validate_MaxLength(obj, parseInt(types[j]));
			else {
				try {bValid = eval(types[j]+"(obj)");}
				catch (ex){bValid = true;}
			}
			if (!bValid) break;
		}
		if (!bValid) {
			if (obj.focus) obj.focus();
			alert(types[types.length-1]);
			return false;
		}
	}
	return true;
}
