
frmVal = new function() {
	
	var	idSysMsg = 'sysMsg',
			bfrMsg = '',
			bfrErr = '',
			styleMsg = 'block txtGreen',
			styleErr = 'block txtRed';

	// checks if a variable is an object (if it is a string tryes to create an object by searching for an ID)
	this.CheckObject = function(obj) {
		if (typeof(obj) == 'string')
			obj = document.getElementById(obj);
		if (obj && typeof(obj) == 'object') {
			return [obj, true];
		} else {
			return [obj, false];
		}
	}
	
	// check for empty fields in array
	this.Check4EmptyChBoxes = function(arrMixed) {
		var result = false,
				tmp = true,
				hasChBoxes = false;
		for (var i=0; i < arrMixed.length; i++) {
			if (document.getElementsByName(arrMixed[i][0]) != null) {
				tmp = true;
				for (var j = 0; j < document.getElementsByName(arrMixed[i][0]).length; j++) {
					if (document.getElementsByName(arrMixed[i][0])[j].tagName == 'INPUT' && document.getElementsByName(arrMixed[i][0])[j].type == 'checkbox'
							&& !document.getElementsByName(arrMixed[i][0])[j].disabled) {
						hasChBoxes = true;
						if (document.getElementsByName(arrMixed[i][0])[j].checked) {
							tmp = false;
							break;
						}
					}
				}
				if (hasChBoxes && tmp) {
					result = true;
					this.MarkLabel(arrMixed[i][0], true);
					bfrErr = '&raquo; ' + arrMixed[i][1] + '<br />' + bfrErr;
				} else {
					this.MarkLabel(arrMixed[i][0], false);
				}
			}
		}
		return result;
	};
		
	// check for empty fields in array
	this.Check4EmptyFields = function(arrMixed) {
		var result = false;
		for (var i=0; i < arrMixed.length; i++) {
			if (document.getElementById(arrMixed[i][0]) == null || document.getElementById(arrMixed[i][0]).value == '' 
					&& !document.getElementById(arrMixed[i][0]).disabled) {
				result = true;
				this.MarkLabel(arrMixed[i][0], true);
				bfrErr = '&raquo; ' + arrMixed[i][1] + '<br />' + bfrErr;
			} else {
				this.MarkLabel(arrMixed[i][0], false);
			}
		}
		return result;
	};

	// check all checkboxes in a form
	this.CheckAllChB = function(fmobj) {
		var TotalBoxes = 0;
		var TotalOn = 0;
		for (var i=0; i<fmobj.elements.length; i++) {
			var e = fmobj.elements[i];
			if (e.type == 'checkbox') {
				if (e.name == 'all'){
					switch (e.checked){
						case true:
							var a = 1;
							break;
						case false:
							var a = 0;
							break;
					}
				} else {
					if (a == 1){
						e.checked = true;
					} else {
						e.checked = false;
					}
				}
			}
		}
	};

	// check email
	this.CheckEmail = function(obj, errTxt) {
		var checkObj = this.CheckObject(obj),
				val = checkObj[0].value;
		if (checkObj[1]) {
			if ((val.indexOf(".") > 0) && (val.indexOf(".") < val.length - 1) && (val.indexOf("@") > 0) && (val.indexOf("@") < val.length - 3)) {
				this.MarkLabel(checkObj[0].id, false);
				return true;
			} else {
				this.MarkLabel(checkObj[0].id, true);
				bfrErr += errTxt + '<br />';
				return false;
			}
		}
	};
		
	// check if fields dont match in array
	this.CheckFieldsNotMatching = function(arrMixed, objCompareID) {
		var result = false;
		for (var i=0; i < arrMixed.length; i++) {
			if (document.getElementById(arrMixed[i][0]) == null || document.getElementById(arrMixed[i][0]).value != document.getElementById(objCompareID).value 
					&& !document.getElementById(arrMixed[i][0]).disabled) {
				result = true;
				this.MarkLabel(arrMixed[i][0], true);
				bfrErr = '&raquo; ' + arrMixed[i][1] + '<br />' + bfrErr;
			} else {
				this.MarkLabel(arrMixed[i][0], false);
			}
		}
		return result;
	};

	// check file extention
	this.CheckFileExtention = function(objID, strReg, errTxt) {
		var checkObj = this.CheckObject(objID);
		if (checkObj[1]) {
			if (checkObj[0].value) {
				var buffer = checkObj[0].value;
				buffer = buffer.substr(buffer.lastIndexOf('.'), buffer.length);
				if (buffer.search(eval('/' + strReg + '/i')) == -1) {
					bfrErr += '<br />' + errTxt;
					this.MarkLabel(objID, true);
				} else
					this.MarkLabel(objID, false);
			}
		}
	};

	// check character count
	this.CheckMaxChars = function(obj, maxChars, errTxt) {
		var checkObj = this.CheckObject(obj);
		if (checkObj[1]) {
			var buffer = checkObj[0].value;
			if (buffer) {
				if (buffer.length > maxChars) {
					bfrErr += '<br />' + errTxt;
					this.MarkLabel(checkObj[0], true);
				} else
					this.MarkLabel(checkObj[0], false);
			}
		}
	};
	
	// mark label
	this.MarkLabel = function(objVerifID, cond) {
		var checkObj = this.CheckObject(objVerifID+'_label');
		if (checkObj[1]) {
			if (cond) {
				RemoveStyleClass(checkObj[0], 'req');
				AddStyleClass(checkObj[0], 'err');
			} else {
				RemoveStyleClass(checkObj[0], 'err');
				AddStyleClass(checkObj[0], 'req');
			}
		}
	};
	
	// print system messages
	this.PrintSysMsg = function(type) {
		if (eval('bfr'+type) != '') {
			document.getElementById(idSysMsg).className = eval('style'+type);
			document.getElementById(idSysMsg).innerHTML = eval('bfr'+type);
			if (typeof(bytefx) == 'object')
				bytefx.fade(document.getElementById(idSysMsg), 100, 40, .4, null);
			return false;
		}
		return true;
	};
	
	// add error prefix if condition
	this.AddErrPrefixIf = function(condition, prefix) {
		if (condition) {
			bfrErr = prefix + bfrErr;
		}
	};
		
	// reset message buffers
	this.ResetMsgs = function() {
		bfrMsg = '';
		bfrErr = '';
	};
	
};
