var AtAtForm = {
	checkIt: function (elm) {
		var r = true;

		var req = getNodeAttribute(elm, "required");
		if (req==null || req.toLowerCase() == 'false') {
			return r;
		}
		if (elm.nodeName.toLowerCase()=='input') {
			var type = getNodeAttribute(elm, "type").toLowerCase();

			if (type=='text' || type=='password') {
				if (elm.value==null || elm.value=='') {
					r = false;
				}
				else if (req != 'true' && AtAtForm.checkREP(elm, req)==false) {
					r = false;
				}
			}
			else if (type=='radio' || type=='checkbox') {
				if (elm.checked==false) {
					r = false;
				}
			}
		}
		else if (elm.nodeName.toLowerCase()=='select' 
			|| elm.nodeName.toLowerCase()=='textarea') {
			if (elm.value==null || elm.value=='') {
				r = false;
			}
		}

		if (r==false) {
			alert(getNodeAttribute(elm, "msg"));
			elm.focus();
			return false;
		}

		return r;
	},
	check: function (f) {
		var r = true;
		var elms = f.elements;
		for (var i=0; i<elms.length; i++) {
			var name = getNodeAttribute(elms[i], "name");
			if (name==null || name=='') {
				continue;
			}
			var req = getNodeAttribute(elms[i], "required");
			if (req==null || req.toLowerCase() == 'false') {
				continue;
			}
			if (elms[i].nodeName.toLowerCase()=='input') {
				var type = getNodeAttribute(elms[i], "type").toLowerCase();

				if (type=='text' || type=='password') {
					if (elms[i].value==null || elms[i].value=='') {
						r = false;
						break;
					}
					else if (req != 'true' && AtAtForm.checkREP(elms[i], req)==false) {
						r = false;
						break;
					}
				}
				else if (type=='checkbox') {
					r = false;
					var first = i;
					for (; i<elms.length && name == getNodeAttribute(elms[i], "name"); i++) {
						if (elms[i].checked==true) {
							r = true;
							break;
						}
					}
					if (r==false) {
						i = first;
						break;
					}
				}
				else if (type=='radio') {
					name == getNodeAttribute(elms[i], "name");
					if (name) {
						var v = getChecked(f, name);

						if (v==null || v.length==0) {
							r = false;
							break;
						}
					}
				}
			}
			else if (elms[i].nodeName.toLowerCase()=='select' || elms[i].nodeName.toLowerCase()=='textarea') {
				if (elms[i].value==null || elms[i].value=='') {
					r = false;
					break;
				}
			}
		}

		if (r==false) {
			alert(getNodeAttribute(elms[i], "msg"));
			elms[i].focus();
			return false;
		}

		return true;
	},

	checkREP: function(elm, pattern) {
		var exp;

		if (elm.value==null) {
			return false;
		}

		try {
			exp = eval( "("+pattern+")" );
		}
		catch (e) {
			return false;
		}
		var r = elm.value.match(exp);
		return r==null ? false : true;
	}
};
