function colour(object,match)  { match ? colour_done(object) : colour_failed(object) }
function colour_failed(object) { object.style.color = '#cf3034' }
function colour_done(object)  { object.style.color = '#000' }

function match_and_colour (objectID,pattern) {
	var object = GetMyObject(objectID);
	var result = pattern.exec(object.value);
	colour(object,(result != null));
}

function re_bankaccount (objectID) { match_and_colour(objectID,/^[0-9\-]{10,16}$/) }
function re_vsymbol (objectID) { match_and_colour(objectID,/^\d{10}$/) }
function re_personalnumber (objectID) { match_and_colour(objectID,/^\d{6}\/\d{3,4}$/) }
function re_bankcode (objectID) { match_and_colour(objectID,/^\d{4}$/) }

function re_smallint (objectID) {
	var object = GetMyObject(objectID);
	var pattern = /^[+-]?(\d{1,5})$/;
	var result;
	if ((result = pattern.exec(object.value)) != null) {
		return colour(object,(result[1] <= 32767));
	} 
	colour(object,0);
}

function re_int (objectID) { match_and_colour(objectID,/^[+-]?\d{1,9}$/) }
function re_cpath (objectID) { match_and_colour(objectID,/^(.+\/)*\d+$/) }
function re_username (objectID) { match_and_colour(objectID,/^[a-zA-Z0-9]{3,16}$/) }
function re_passwd (objectID) { match_and_colour(objectID,/^[a-zA-Z0-9\@\#\$\+\!\?\.\,]{3,63}$/) }
function re_phone (objectID) { match_and_colour(objectID,/^(\+?\d{2,3})?\d{9}$/) }
function re_postcode(objectID) { match_and_colour(objectID,/^\d{5}$/) }
function re_dic(objectID) { match_and_colour(objectID,/^[A-Z]{2}\d{8,10}$/) }
function re_ic(objectID) { match_and_colour(objectID,/^\d{8}$/) }
function re_serial(objectID) { match_and_colour(objectID,/^\d{1,9}$/) }

function re_intThreeM (objectID) {
	var object = GetMyObject(objectID);
	var pattern = /^(\d{1,7})$/;
	var result;
	if ((result = pattern.exec(object.value)) != null) {
		var r = result[1];
		if (r > -1 && r < 3000001) {
			return colour(object,1);
		}
		return colour(object,0);
	}
	return colour(object,0);
}
/*
	var object = Object(objectID);
	var pattern = /^(\d{1,7})$/;
	var result;
	if ((result = pattern.exec(object.value)) != null) {
		var value = result[1];
		if (value >= 0 and value <= 3000000) {
			return colour(object,1);
		}
	}
	colour(object,0);
} */

function re_ddmm(objectID) { 
	var object = GetMyObject(objectID);
	var pattern = /^(\d{1,2})\.(\d{1,2})\.$/;
	var result;
	if ((result = pattern.exec(object.value)) != null) {
		var d = result[1];
		var m = result[2];
		if (d > 31 || m > 12 || m < 1 || d < 1 || 
		    ((m==4 || m==6 || m==9 || m==11) && d==31) ||
		    (m==2 && d > 29)) {
			return colour(object,0);
		} 
		return colour(object,1);
	}
	colour(object,0);			
}

function re_mmdd(objectID) {
	var object = GetMyObject(objectID);
	var pattern = /^(\d{1,2})-(\d{1,2})$/;
	var result;
	if ((result = pattern.exec(object.value)) != null) {
		var d = result[2];
		var m = result[1];
		if (d < 1 || d > 31 || m < 1 || m > 12 ||
		   ((m==4 || m==6 || m==9 || m==11) && d==31) ||
		   (m==2 && d > 29)) {
		   return colour(object,0);
		}
		return colour(object,1);
	}
	colour(object,0);
}

function re_yyyy(objectID) { match_and_colour(objectID,/^(18|19|20|21)\d{2}$/); }

function re_yyyymmdd(objectID) {
	var object = GetMyObject(objectID);
	var pattern = /^(\d{4})-(\d{1,2})-(\d{1,2})$/;
	var result;
	if ((result = pattern.exec(object.value)) != null) {
		var d = result[3];
		var m = result[2];
		var y = result[1];
		if (d > 31 || m > 12 || y < 1800 || y > 2199 || m < 1 || d < 1 ||
		    ((m==4 || m==6 || m==9 || m==11) && d==31) ||
		    (m==2 && (y % 4)==0 && d > 29) ||
		    (m==2 && (y % 4)!=0 && d > 28)) {
			return colour(object,0);
		}
		return colour(object,1);
	}
	colour(object,0);
}

function re_dd(objectID) {
	var object = GetMyObject(objectID);
	var pattern = /^(\d{1,2})$/;
	var result;
	colour(object,((result=pattern.exec(object.value))!=null && result[1]>= 1 && result[1]<=31));
}

function re_mm(objectID) {
	var object = GetMyObject(objectID);
	var pattern = /^(\d{1,2})$/;
	var result;
	colour(object,((result=pattern.exec(object.value))!=null && result[1]>=1 && result[1]<=12));
}

function re_HHMM(objectID) {
	var object = GetMyObject(objectID);
	var pattern = /^(\d{1,2}):(\d{1,2})$/;
	var text = object.value;
	var result;
	var bool = (result = pattern.exec(text)) != null && result[1] >= 0 && result[1] <= 59 && 
	result[2] >= 0 && result[2] <= 59 ? 1 : 0;
	colour(object,bool);
}

function re_HHMMSS(objectID) {
	var object = GetMyObject(objectID);
	var pattern = /^(\d{1,2}):(\d{1,2}):(\d{1,2})$/;
	var result;
	colour(object,((result=pattern.exec(object.value))!=null && result[1]>=0 && result[1]<=59 
	&& result[2]>=0 && result[2]<=59 && result[3]>=0 && result[3]<=59));
}


function re_HHMMddmmyyyy(objectID) {
	var object = GetMyObject(objectID);
	var pattern = /^(\d{1,2}):(\d{1,2})\ (\d{1,2})\.(\d{1,2})\.( )?(\d{4})$/;
	var result;
	if ((result = pattern.exec(object.value)) != null) {
		var H = result[1];
		var M = result[2];
		var d = result[3];
		var m = result[4];
		var y = result[6];
		if (H > 23 || M > 59 || d > 31 || m > 12 || y < 1800 || y > 2199 || m < 1 || d < 1 ||
		    ((m==4 || m==6 || m==9 || m==11) && d==31) ||
		    (m==2 && (y % 4)==0 && d > 29) ||
		    (m==2 && (y % 4)!=0 && d > 28)) {
		    	return colour(object,0);
		}
		return colour(object,1);
	}
	colour(object,0);
}

function re_ddmmyyyy(objectID) {
	var object = GetMyObject(objectID);
	var pattern = /^(\d{1,2})\.(\d{1,2})\.( )?(\d{4})$/;
	var result;
	if ((result = pattern.exec(object.value)) != null) {
		var d = result[1];
		var m = result[2];
		var y = result[4];
		if (d > 31 || m > 12 || y < 1800 || m < 1 || d < 1 || y > 2199 ||
		    ((m==4 || m==6 || m==9 || m==11) && d==31) ||
		    (m==2 && (y % 4)==0 && d > 29) ||
		    (m==2 && (y % 4)!=0 && d > 28)) {
		    	return colour(object,0);
		}
		return colour(object,1);
	}
	colour(object,0);
}

function re_percent(objectID) { match_and_colour(objectID,/^(\d{1,2}(\.\d{1,5})?|100)$/) }
function re_decimal(objectID) { match_and_colour(objectID,/^\d{1,9}(\.\d{1,5})?$/) }

