var gValidatePost=null;
var oWorkdetail= {
	init: function() {
		this.invalidfld=null;
		this.invalidcls='';
		this.onbluractive=true;
	},
	reload: function(useraction) {
		if (useraction=='') useraction='-';
		oWorkform.setAction(useraction);
		oWorkform.setMode(gIBFbe_modeDetail);
		oWorkform.submit();
	},
	doCancel: function() {
		oWorkform.setMode(gIBFbe_modeList);
		oWorkform.submit();
	},
	doSave: function() {
		if (this.validate()) {
			var ikey=oWorkform.getIkey();
			oWorkform.setAction(((ikey==0)?gIBFbe_actionInsert:gIBFbe_actionUpdate));
			oWorkform.submit();
		}
	},
	doSaveExit: function() {
		if (this.validate()) {
			var ikey=oWorkform.getIkey();
			oWorkform.setAction(((ikey==0)?gIBFbe_actionInsertExit:gIBFbe_actionUpdateExit));
			oWorkform.submit();
		}
	},
	doDelete: function() {
		if (window.confirm(gIBFbemsg_sureDelete)) {
			oWorkform.setAction(gIBFbe_actionDelete);
			oWorkform.submit();
		}
	},
	displayMessage: function(msg) {
		var divmsg = IBF_getID('idWorkmessage');
		if (divmsg!=null) {
			divmsg.innerHTML = msg;
			divmsg.style.display = 'block';
		}
	},
	hideMessage: function() {
		var divmsg = IBF_getID('idWorkmessage');
		if (divmsg!=null) {
			divmsg.style.display = 'none';
		}
		if (this.invalidfld!=null) {
			this.invalidfld.className=this.invalidcls;
			this.invalidfld=null;
		}
	},
	focusAlert: function(fieldname) {
		var fld = oWorkform.getFormfield(fieldname);
		if (fld!=null) {
			this.invalidcls=fld.className;
			this.invalidfld=fld;
			fld.className='requiredalert';
			try {
				fld.focus();	
			} catch (e) {
				// ignore
			}
		}
	},
	fieldAlert: function(fieldname,fieldlabel,message) {
		this.displayMessage(fieldlabel+': '+message);
		this.focusAlert(fieldname);
	},
	validate: function() {
		var field, val, valid=true;
		this.hideMessage();
		if (gFieldsrequired!=null && gFieldsrequired.length>0) {
			for (i=0;i<gFieldsrequired.length;i++) {
				field=gFieldsrequired[i];
				if (field.length>=5) {
					val = oWorkform.getValue(field[0],field[2]);
					// required?
					if (field[3] && val=='') {
						this.fieldAlert(field[0],field[1],gIBFbemsg_isRequired);
						this.onbluractive=false;
						return false;
					}
					// format okay?
					if (field[4]!='' && val!='') {
						if (field[4]==gIBFbe_validdate) {
							if (val!='0000-00-00') {
								if (!IBF_validator.isDate(val)) {
									this.fieldAlert(field[0],field[1],gIBFbemsg_wrongDateformat);
									this.onbluractive=false;
									return false;
								}
							}
						}
						if (field[4]==gIBFbe_validemail || field[4]==gIBFbe_validemails) {
							// more then one email seperated by ,
							var emails = val.split(',');
							if (field[4]==gIBFbe_validemail && emails.length>1) {
								this.fieldAlert(field[0],field[1],gIBFbemsg_validOnlyOneEmail);
								this.onbluractive=false;
								return false;
							}
							for (j=0;j<emails.length;j++) {
								if (!IBF_validator.isEmail(emails[j])) {
									this.fieldAlert(field[0],field[1],gIBFbemsg_wrongEmailformat);
									this.onbluractive=false;
									return false;
								}
							}
							
						}
					}
				}
			}
		}
		if (gValidatePost!=null) valid = gValidatePost();
		return valid;
	},
	displayField: function (idname,show) {
		var div = IBF_getID(idname);
		if (div!=null) {
			div.style.display = ((show)?'block':'none');
		}
	},
	evalShowHide: function(showhide) {
		var arr = showhide.split(','),idname='';
		// format: <field>,<true|false>[,<field>,<true|false>]
		if (arr.length>1) {
			var i=0;
			do {
				idname = arr[i] + '_ID';
				this.displayField(idname,(arr[i + 1]=='true'));
				i += 2;
			} while(i<arr.length-1);
		}
	},
	showHide: function(fieldname) {
		if (gFieldsshowif!=null && gFieldsshowif[fieldname]!=null) {
			var field=gFieldsshowif[fieldname];
			if (field.length>=4) {
				var val = oWorkform.getValue(fieldname,field[0]);
				if (val==field[1]) {
					this.evalShowHide(field[2]);
				} else {
					this.evalShowHide(field[3]);
				}
			}
		}
		return true;
	},
	onblurField: function(fieldname) {
		if (this.onbluractive) {
			this.hideMessage();
			this.showHide(fieldname);
		}
		this.onbluractive=true;
	},
	addJump: function(fieldname) {
		oWorkform.setAction(gIBFbe_actionAddjump);
		oWorkform.setActionfield(fieldname);
		oWorkform.submit();
	},
	end: function() {
		// afsluiten object
	}
}
oWorkdetail.init();
