var wMode_canAdd=1;var wMode_canEdit=2;var wMode_canDelete=4;var wMode_canClone=8;var wMode_ForceResetMode=-1;var wMode_ReadOnlyMode=0;var wMode_ViewMode=1;var wMode_EditMode=2;var wMode_AddMode=3;var wMode_CloneMode=4;function enhanceForm(usrFrm,opts){usrFrm=$(usrFrm)[0];$(usrFrm).data("version","$Revision: 342 $");$(usrFrm).data("busyCtr",0);usrFrm.setLoggingLevel=function(level){$(this).data("logging",level)};usrFrm.setLoggingLevel("iwe");if(!isEmpty(opts)){$(usrFrm).data("tableDiv",opts.tableDiv);if(!isEmpty(opts.tableDiv)){$(usrFrm).data("dataGrid",$(opts.tableDiv).find("table tbody"))}$(usrFrm).data("detailsDiv",opts.detailsDiv!=null?$(opts.detailsDiv)[0]:null).data("searchDiv",opts.searchDiv!=null?$(opts.searchDiv)[0]:null).data("buttonsDiv",opts.buttonsDiv!=null?$(opts.buttonsDiv)[0]:null).data("authMode",opts.authMode).data("originalAuthMode",opts.authMode).data("dataFieldSelector",opts.dataFieldSelector).data("fieldNameMapping",isEmpty(opts.fieldNameMapping)?{}:opts.fieldNameMapping);var valOptions=opts.validationOptions;if(!isEmpty(valOptions)){if(jQuery.validator!=null){jQuery.validator.addMethod("regex",function(value,element,params){var b1=this.optional(element);var b2=value.match(params);return b1||b2},jQuery.validator.format("The value entered does not match the required format."));jQuery.validator.addMethod("date",function(value,element,params){var b1=this.optional(element);var b2=Date.parse(value)!=null;return b1||b2},jQuery.validator.format("The value entered is not a valid date."))}var myDetailsDiv=$(usrFrm).data("detailsDiv");if(!isEmpty(myDetailsDiv)){if($("div#errorDiv").length==0){$(myDetailsDiv).parent().append('<div id="errorDiv" class="error"><ul></ul></div>')}}if(!isEmpty(myDetailsDiv)){var browserName=$.browser.name;var browserVersion=$.browser.version;var browserVersionNum=$.browser.versionNumber;switch(browserName){case"chrome":case"safari":case"firefox":break;case"opera":$(myDetailsDiv).find("input[type=checkbox]").css("margin-left","1px");break;case"msie":$(myDetailsDiv).find("input[type=checkbox]").css("margin-left","-0px").css("width","15px").css("background-color","transparent");break}}valOptions.errorClass=isEmpty(valOptions.errorClass)?"error":valOptions.errorClass;valOptions.wrapper=isEmpty(valOptions.wrapper)?"li":valOptions.wrapper;valOptions.container=isEmpty(valOptions.container)?$("#errorDiv"):valOptions.container;valOptions.errorLabelContainer=isEmpty(valOptions.errorLabelContainer)?$("#errorDiv ul"):valOptions.errorLabelContainer;$(usrFrm).data("validationOptions",valOptions)}var buttons=opts.buttons;if(!isEmpty(buttons)){for(var i=0;i<buttons.length;i++){var btn="#"+buttons[i].id;$(btn).data("handler",buttons[i].handler);$(btn).bind("click",function(){$(this).data("handler")();return(false)})}}if(!isEmpty($(usrFrm).data("dataGrid"))){$(usrFrm).data("dataGrid.originalEnabledMode",$(usrFrm).data("dataGrid").attr("enabled"))}var dooda=$(usrFrm).data("userButtonsClass");if(isEmpty(dooda)){$(usrFrm).data("userButtonsClass","userButton")}usrFrm.usrSetFormMode=!isEmpty(opts.usrSetFormMode)?opts.usrSetFormMode:function(){};usrFrm.usrScatterData=!isEmpty(opts.usrScatterData)?opts.usrScatterData:function(){};usrFrm.usrClearDataEntryArea=!isEmpty(opts.usrClearDataEntryArea)?opts.usrClearDataEntryArea:function(){};if(!isEmpty(opts.usrGatherData)){usrFrm.usrGatherData=opts.usrGatherData}else{alert("The usrGatherData() hook must be defined!")}}if(isEmpty(usrFrm.usrSetFormMode)){usrFrm.usrSetFormMode=function(frmMode){var myButtonsDiv=$(this).data("buttonsDiv");switch(frmMode){case wMode_ReadOnlyMode:case wMode_ViewMode:$(myButtonsDiv).find("."+$(this).data("userButtonsClass")).show();break;case wMode_EditMode:case wMode_AddMode:case wMode_CloneMode:$(myButtonsDiv).find("."+$(this).data("userButtonsClass")).hide();break}}}usrFrm.setAuthMode=function(authMode){if(isEmpty(authMode)){$(this).data("authMode",$(this).data("originalAuthMode"))}else{$(this).data("authMode",authMode)}};usrFrm.clearDataEntryArea=function(){var myDetailsDiv=$(this).data("detailsDiv");if(!isEmpty(myDetailsDiv)){$(myDetailsDiv).find("input[type=text]").val("");$(myDetailsDiv).find("select").selectOptions("",true);$(myDetailsDiv).find("textarea").val("");$(myDetailsDiv).find("input[type=checkbox]:checked").attr("checked",false);if(!isEmpty(this.usrClearDataEntryArea)){this.usrClearDataEntryArea(myDetailsDiv)}}};usrFrm.clearSearchArea=function(){var mySearchDiv=$(this).data("searchDiv");if(!isEmpty(mySearchDiv)){$(mySearchDiv).find('input[type="text"]').val("");$(mySearchDiv).find("select").selectOptions("",true);if(!isEmpty(this.usrClearSearchArea)){this.usrClearSearchArea(mySearchDiv)}}};usrFrm.clearDataGrid=function(){var myDataGrid=$(this).data("dataGrid");if(!isEmpty(myDataGrid)){$(myDataGrid).html("").data("numberOfRows",0);var oo=myDataGrid[0];if(oo.updateRecordCounter!=null){oo.updateRecordCounter(0)}this.noRowSelected()}};usrFrm.noRowSelected=function(){if(!isEmpty($(usrFrm))){$(usrFrm).attr("readonly","readonly");$(usrFrm).show();usrFrm.setFormMode(wMode_ViewMode)}var myButtonsDiv=$(this).data("buttonsDiv");if(!isEmpty(myButtonsDiv)){$(myButtonsDiv).find("input[type=button], img").hide();$(myButtonsDiv).show();if(($(this).data("authMode")&wMode_canAdd)!==0){$(myButtonsDiv).find(".addButton").show()}}var myDataGrid=$(this).data("dataGrid");if(!isEmpty(myDataGrid)){$(myDataGrid).one("click",{form:this},function(event){var frm=event.data.form;$(frm).show();frm.setFormMode(wMode_ViewMode)})}};usrFrm.setFormMode=function(formMode){var whatModeType;do{if(isEmpty(formMode)){break}$(this).data("currFormMode",formMode);var myDetailsDiv=$(this).data("detailsDiv");var mySearchDiv=$(this).data("searchDiv");var myButtonsDiv=$(this).data("buttonsDiv");var myTableDiv=$(this).data("tableDiv");var myAuthMode=$(this).data("authMode");var usrBtnClass="."+$(this).data("userButtonsClass");var valOptions=$(this).data("validationOptions");if(!isEmpty(valOptions)){var validator=$(this).data("myValidator");if(!isEmpty(validator)){validator.resetForm()}switch($(this).data("currFormMode")){case wMode_ReadOnlyMode:case wMode_ViewMode:whatModeType="V";$(this).data("validator",null);$(this).data("myValidator",$(this).validate({rules:{}}));break;case wMode_AddMode:case wMode_EditMode:case wMode_CloneMode:whatModeType="E";$(this).data("validator",null);$(this).data("myValidator",$(this).validate(valOptions));break}}if(!isEmpty(myDetailsDiv)){if($(myDetailsDiv).find("label.mandatoryExample").length==0){$(myDetailsDiv).prepend('<label class="mandatoryExample" style="display:none">Fields marked like this are mandatory</label>')}}switch($(this).data("currFormMode")){case wMode_ReadOnlyMode:if(!isEmpty(mySearchDiv)){$(mySearchDiv).show();$(mySearchDiv).find(".searchButton").show()}if(!isEmpty(myTableDiv)){$(myTableDiv).show()}if(!isEmpty(myButtonsDiv)){$(myButtonsDiv).find("img:not("+usrBtnClass+"), input[type=button]:not("+usrBtnClass+")").hide()}if(!isEmpty(myDetailsDiv)){$(myDetailsDiv).find("*").attr("readOnly","readonly");$(myDetailsDiv).find("select").attr("disabled",true);$(myDetailsDiv).find("input[type=checkbox]").attr("disabled",true);$(myDetailsDiv).find("label.mandatoryExample").removeClass("mandatory").hide(500)}break;case wMode_ViewMode:if(!isEmpty(mySearchDiv)){$(mySearchDiv).show();$(mySearchDiv).find(".searchButton").show()}if(!isEmpty(myTableDiv)){$(myTableDiv).show()}if(!isEmpty(myButtonsDiv)){$(myButtonsDiv).find("img:not("+usrBtnClass+"), input[type=button]:not("+usrBtnClass+")").hide();$(myButtonsDiv).find("img "+usrBtnClass+", input[type=button] "+usrBtnClass).show();if((myAuthMode&wMode_canAdd)!==0){$(myButtonsDiv).find(".addButton").show();$(myButtonsDiv).find(".cloneButton").show()}if((myAuthMode&wMode_canDelete)!==0){$(myButtonsDiv).find(".deleteButton").show()}if((myAuthMode&wMode_canEdit)!==0){$(myButtonsDiv).find(".editButton").show()}$(myButtonsDiv).find(".saveButton").hide();$(myButtonsDiv).find(".cancelButton").hide()}if(!isEmpty(myDetailsDiv)){$(myDetailsDiv).find("*").attr("readOnly","readonly");$(myDetailsDiv).find("select").attr("disabled",true);$(myDetailsDiv).find("input").attr("readOnly","readonly");$(myDetailsDiv).find("input[type=checkbox]").attr("disabled",true);$(myDetailsDiv).find("label.mandatoryExample").removeClass("mandatory").hide()}break;case wMode_AddMode:$(this).show();case wMode_EditMode:case wMode_CloneMode:if(!isEmpty(mySearchDiv)){$(mySearchDiv).hide()}if(!isEmpty(myTableDiv)){$(myTableDiv).hide()}if(!isEmpty(myButtonsDiv)){$(myButtonsDiv).find("img, input[type=button]").hide();$(myButtonsDiv).find(".saveButton").show();$(myButtonsDiv).find(".cancelButton").show()}if(!isEmpty(myDetailsDiv)){$(myDetailsDiv).removeAttr("disabled");$(myDetailsDiv).find("*").removeAttr("readOnly");$(myDetailsDiv).find("select").removeAttr("disabled").removeAttr("readOnly");$(myDetailsDiv).find('input[type="checkbox"]').removeAttr("disabled").removeAttr("readOnly");$(myDetailsDiv).find(".recordKey").attr("readOnly","readonly");$(myDetailsDiv).find("label.mandatoryExample").addClass("mandatory").show();$("input[type=text]:not([readonly]):first",myDetailsDiv).focus()}break}if(!isEmpty(this.usrSetFormMode)){this.usrSetFormMode($(this).data("currFormMode"))}else{alert("enhanceForm(): the usrSetFormMode() hook needs to be defined!")}this.adjustMandatoryLabels(whatModeType)}while(false)};usrFrm.adjustMandatoryLabels=function(whatModeType){var validationOptions=$(this).data("validationOptions");if(validationOptions!=null&&validationOptions.rules!=null){$.each(validationOptions.rules,function(k,v){selector="label[for="+k+"]";if(whatModeType=="E"){var labelAtr=$(selector).attr("title");if(v.required){$(selector).addClass("mandatory");labelAtr="Mandatory field. "}if(v.minlength!=undefined){labelAtr+="Min length: "+v.minlength+". "}if(v.number!=undefined){labelAtr+="Numeric. "}if(v.range!=undefined){labelAtr+="Range: "+v.range[0]+" - "+v.range[1]+". "}$(selector).attr("title",labelAtr)}else{$(selector).removeClass("mandatory").attr("title","")}})}};usrFrm.getCurrFormMode=function(){return $(this).data("currFormMode")};usrFrm.showBusy=function(flg){var curValue=$(this).data("busyCtr");if(flg){$(this).data("busyCtr",++curValue);$(".busyIndicator").show();$("*").css({cursor:"wait"})}else{$(this).data("busyCtr",--curValue);if($(this).data("busyCtr")<=0){$(this).data("busyCtr",0);$(".busyIndicator").hide();$("*").css({cursor:""})}}return curValue};usrFrm.getBusy=function(){return $(this).data("busyCtr")};usrFrm.log=function(level,msg,stackTrace){if($(this).data("logging").indexOf(level)!=-1){var myConsole=null;var mytracer=null;try{myConsole=console}catch(ex){}if(!isEmpty(myConsole)){switch(level){case"i":myConsole.log(msg);break;case"d":myConsole.debug(msg);break;case"w":myConsole.warn(msg);break;case"e":myConsole.error(msg);break}}if(!isEmpty(stackTrace)&&$.inArray("t",$(this).data("logging"))!=-1){try{console.trace()}catch(ex){}}}};usrFrm.scatterData=function(data){try{var selector=$(this).data("dataFieldSelector");var fieldNameMapping=$(this).data("fieldNameMapping");this.clearDataEntryArea();$(selector).each(function(item){fldName=$(this).attr("name");if(!isEmpty(fldName)){var mappedFldName=fieldNameMapping[fldName];if(isEmpty(mappedFldName)){mappedFldName=fldName}var fldValue=data[mappedFldName];var itemType=$(this).attr("type").toLowerCase();switch(itemType){case"checkbox":if(fldValue==true){$(this).attr("checked",true)}else{$(this).removeAttr("checked")}break;case"select-one":if(fldValue===null){fldValue=""}$(this).selectOptions(fldValue,true);break;default:$(this).val(fldValue);break}}});this.usrScatterData(selector,data)}catch(err){this.showBusy(false);myConsole("e","",err)}};usrFrm.gatherData=function(){var data={};var errMsg="";var selector=$(this).data("dataFieldSelector");try{if($(this).valid()){this.showBusy(true);var fieldNameMapping=$(this).data("fieldNameMapping");$(selector).each(function(item){var fldName=$(this).attr("name");var mappedFldName=fieldNameMapping[fldName];if(isEmpty(mappedFldName)){mappedFldName=fldName}var itemType=$(this).attr("type");if(itemType!=null){var itemValue;switch(itemType.toLowerCase()){case"checkbox":data[mappedFldName]=$(this).attr("checked")===true;break;case"select-one":itemValue=$(this).selectedValues();if(itemValue.length>=1){data[mappedFldName]=itemValue[0]}break;default:data[mappedFldName]=$.trim($(this).val())}}});this.usrGatherData(selector,data,errMsg);this.showBusy(false)}}catch(err){this.showBusy(false);myConsole("e","",err)}};usrFrm.setFormMode(wMode_ViewMode);return usrFrm};