
// 20060519 Ricky Chiang
// 
// /test/testCheckField.jsp
ActionForm.checkField = function() {
	var failsTitle = [];
	var fails = [];
	var fieldChecker = function(checkers) {
		for (var i=0; i<checkers.length; i++) {
			var c = checkers[i];
			var val = null;
			// Reference prototype.js v1.4
			var val = Try.these(
				function() { return $F(c.name); },
				function() { return $(c.name).innerText; }
			);
			if (c.tester.call(this, val)) {
				failsTitle.push(c.title);
				fails.push(c);
			}
		}     
		return (failsTitle.length>0);
	};
	var alertNotification = function(msgCode) {
		if (failsTitle.length>0) {
			CommonMessage.showNotification(msgCode, ["OK"], "[ " + failsTitle + " ] ");
			// 20060721 RickyChiang ..... first error field focus
			Try.these( function() { Field.activate(fails[0].name); } );
			return false;
		}
		else {
			return true;
		}
	};
	if (ActionForm.emptyChecks) {
		if (fieldChecker(ActionForm.emptyChecks)) {
			alertNotification("H003");
			return false;
		}
		if (fieldChecker(ActionForm.emptyChecks)) {
			alertNotification("H003");
			return false;
		}
	}
	if (ActionForm.numberChecks) {
		if (fieldChecker(ActionForm.numberChecks)) {
			alertNotification("H901");
			return false;
		}
	}
	if (ActionForm.intChecks) {
		if (fieldChecker(ActionForm.intChecks)) {
			alertNotification("H902");
			return false;
		}
	}
	if (ActionForm.regChecks) {
		for (var i=0; i<ActionForm.regChecks.length; i++) {
			if (fieldChecker([ActionForm.regChecks[i]])) {
				alertNotification(ActionForm.regChecks[i].msgCode);
				return false;
			}
		}
	}	
	return true;
};

ActionForm.addEmptyCheck = function(fName, fTitle) {
	try { $(fName); } catch(E) { alert(fName + " - " + E.message); }
	// 1. ????????
	if (!ActionForm.emptyChecks) ActionForm.emptyChecks = [];
	
	for (var i=0; i<ActionForm.emptyChecks.length; i++) {
		if (ActionForm.emptyChecks[i].name==fName) {
			// if same emptyChecks exist, return
			return;
		}
	}
	
	ActionForm.emptyChecks.push({name:fName, title:fTitle, tester:function(v) { return (v.trim()==""); }});
	// 2. ??????????????
		
};
ActionForm.addNumberCheck = function(fName, fTitle, precision, scale) {
	try { $F(fName); } catch(E) { alert(fName + " - " + E.message); }
	if (!ActionForm.numberChecks) ActionForm.numberChecks = [];
	
	for (var i=0; i<ActionForm.numberChecks.length; i++) {
		if (ActionForm.numberChecks[i].name==fName) {
			// if same numberChecks exist, return
			return;
		}
	}
	
	ActionForm.numberChecks.push({name:fName, title:fTitle, tester:function(v) { return (!/^(\d+)?(\.\d+)?$/.test(v)); }});
};
ActionForm.addIntegerCheck = function(fName, fTitle) {
	try { $F(fName); } catch(E) { alert(fName + " - " + E.message); }
	if (!ActionForm.intChecks) ActionForm.intChecks = [];
	
	for (var i=0; i<ActionForm.intChecks.length; i++) {
		if (ActionForm.intChecks[i].name==fName) {
			// if same intChecks exist, return
			return;
		}
	}
	
	ActionForm.intChecks.push({name:fName, title:fTitle, tester:function(v) { return (!/^(\d+)?$/.test(v)); }});
};
ActionForm.addRegularCheck = function(fName, fTitle, re, msgCode) {
	try { $F(fName); } catch(E) { alert(fName + " - " + E.message); }
	if (!ActionForm.regChecks) ActionForm.regChecks = [];
	
	for (var i=0; i<ActionForm.regChecks.length; i++) {
		if (ActionForm.regChecks[i].name==fName) {
			// if same regCheck exist, return
			return;
		}
	}
	
	ActionForm.regChecks.push({name:fName, title:fTitle, tester:function(v) { return !re.test(v); }, msgCode:msgCode });
};
ActionForm.addAaDCheck = function(fName, fTitle) {
	//ActionForm.addRegularCheck(fName, fTitle, /^[A-Za-z0-9]*$/, "H906");
	//6/27??
	ActionForm.addRegularCheck(fName, fTitle, /^([A-Za-z0-9]*[^\uFB00-\uFFFDh\u4e00-\u9fa5A-Za-z0-9]*)+$/, "H906");
};
ActionForm.addEmailCheck = function(fName, fTitle) {
	ActionForm.addRegularCheck(fName, fTitle, /^(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)?$/, "H907");
};

// Remove Checks
ActionForm.removeEmptyCheck = function(fName) {
	for (var i=0; i<ActionForm.emptyChecks.length; i++) {
		if (ActionForm.emptyChecks[i].name==fName) {
			ActionForm.emptyChecks = ActionForm.emptyChecks.without(ActionForm.emptyChecks[i]);	
			break;
		}
	}
}
ActionForm.removeIntegerCheck = function(fName) {
	for (var i=0; i<ActionForm.intChecks.length; i++) {
		if (ActionForm.intChecks[i].name==fName) {
			ActionForm.intChecks = ActionForm.intChecks.without(ActionForm.intChecks[i]);	
			break;
		}
	}
}
ActionForm.removeNumberCheck = function(fName) {
	for (var i=0; i<ActionForm.numberChecks.length; i++) {
		if (ActionForm.numberChecks[i].name==fName) {
			ActionForm.numberChecks = ActionForm.numberChecks.without(ActionForm.numberChecks[i]);	
			break;
		}
	}
}
ActionForm.removeRegularCheck = function(fName) {
	for (var i=0; i<ActionForm.regChecks.length; i++) {
		if (ActionForm.regChecks[i].name==fName) {
			ActionForm.regChecks = ActionForm.regChecks.without(ActionForm.regChecks[i]);	
			return;
		}
	}
}
ActionForm.removeCheck = function(fName) {
	for (var i=0; i<ActionForm.emptyChecks.length; i++) {
		if (ActionForm.emptyChecks[i].name==fName) {
			ActionForm.emptyChecks = ActionForm.emptyChecks.without(ActionForm.emptyChecks[i]);	
			break;
		}
	}
	for (var i=0; i<ActionForm.intChecks.length; i++) {
		if (ActionForm.intChecks[i].name==fName) {
			ActionForm.intChecks = ActionForm.intChecks.without(ActionForm.intChecks[i]);	
			break;
		}
	}
	for (var i=0; i<ActionForm.numberChecks.length; i++) {
		if (ActionForm.numberChecks[i].name==fName) {
			ActionForm.numberChecks = ActionForm.numberChecks.without(ActionForm.numberChecks[i]);	
			break;
		}
	}
	for (var i=0; i<ActionForm.regChecks.length; i++) {
		if (ActionForm.regChecks[i].name==fName) {
			ActionForm.regChecks = ActionForm.regChecks.without(ActionForm.regChecks[i]);	
			break;
		}
	}
}