// ---------------------------------------------------------------------------- // formman.js // Form Management helper functions // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // // ---------------------------------------------------------------------------- // // fetch comma-separated values of all checked elements of a checkbox group // function fetchbits ( f, gnam ) { var nboxes = f.elements.length; var v = ""; for ( var i = 0; i < nboxes; i++ ) { var e = f.elements[i]; //alert ( e.name+" "+e.type ); if ( e.name == gnam && e.checked ) { if ( v.length > 0 ) v += ","; v += e.value; } } //alert ( gnam+":"+v ); return v; } // // count number of checked elements of a checkbox group // function countCheckedElements ( f, gnam ) { var nboxes = f.elements.length; var v = 0; for ( var i = 0; i < nboxes; i++ ) { var e = f.elements[i]; if ( e.name == gnam && ( e.checked || (e.check && (e.check == "true") ) ) ) { v++; } } return v; } // // fetch the value of the requested bit from the checkboxgroup gnam // function fetchOneBit ( f, gnam, elemval ) { var nboxes = f.elements.length; for ( var i = 0; i < nboxes; i++ ) { var e = f.elements[i]; if ( e.name == gnam && e.value == elemval && e.checked ) { return "1"; } } return "0"; } // getChecked() // Return a comma separated string of checked input elements with // the same name. checkbox and hidden input elements are // supported. When writting hidden input elements add a "check" // attribute with a "true" | "false" value. // // Known useage in vca_newusergroup.jsp and vca_editusergroup.jsp // function getChecked ( f, gnam ) { var num_elements = f.elements.length; var v = ""; for ( var i = 0; i < num_elements; i++ ) { var e = f.elements[i]; if ( e.name == gnam && ( e.checked || (e.check && (e.check == "true") ) ) ) { if ( v.length > 0 ) { v += ","; } v += e.value; } } //alert ( v ); return v; } // disableCheckboxElements() // function disableCheckboxElements ( f, gnam ) { var num_elements = f.elements.length; for ( var i = 0; i < num_elements; i++ ) { var e = f.elements[i]; if ( e.name == gnam ) { e.disabled = true; } } return; } // enableCheckboxElements() // function enableCheckboxElements ( f, gnam ) { var num_elements = f.elements.length; for ( var i = 0; i < num_elements; i++ ) { var e = f.elements[i]; if ( e.name == gnam ) { e.disabled = false; } } return; } // ---------------------------------------------------------------------------- // // ---------------------------------------------------------------------------- function fetchval ( f ) { var nboxes = f.elements.length; var v = ""; for ( var i = 0; i < nboxes; i++ ) { if ( f.elements[i].checked ) { v = f.elements[i].value; break; } } //alert ( v ); return v; } function fetchvalfrom ( f, gnam ) { var nboxes = f.elements.length; var v = ""; for ( var i = 0; i < nboxes; i++ ) { var e = f.elements[i]; if ( e.name == gnam && (e.type != 'radio' || e.checked) ) { v = e.value; break; } } return v; } // ---------------------------------------------------------------------------- // // ---------------------------------------------------------------------------- function setPublicPrivateFlags ( form ) { var rbv = fetchval(form); //alert ( rbv ); if ( rbv == 2 || rbv == 3 ) form.is_public.value = 1; else form.is_public.value = 0; if ( rbv == 1 || rbv == 3 ) form.is_private.value = 1; else form.is_private.value = 0; return rbv; } // ---------------------------------------------------------------------------- // // ---------------------------------------------------------------------------- function getoption ( f, fnam ) { var v = ""; var sindex = f.elements[fnam].selectedIndex; v = f.elements[fnam].options[sindex].value; return v; } // ---------------------------------------------------------------------------- // // ---------------------------------------------------------------------------- function setinitfocus ( form, elemname ) { if (form != null && form.elements && form.elements[elemname]) { form.elements[elemname].focus (); } } // ---------------------------------------------------------------------------- // These are the various submit operations for new and updated objects // They currently don't have any validations. Validations will also go here // Having them all in one place will make it easier to validate all of them // in a consistent manner. // ---------------------------------------------------------------------------- function onupduser ( form ) { if ( vldinput ( form ) ) { var tfields = form.elements.length; for ( var i = 0; i < tfields; i++ ) { if ( (form.elements[i].type == "text") || (form.elements[i].type == "textarea" )) { var fname=form.elements[i].name; //alert(fname); convert(form,fname); } }//end of for var f = form.first_name.value; var l = form.last_name.value; if ( f.length > 0 ) f += " "; form.itemname.value = f+l; var errmsg = M1_ONE_HAS_TO_BE_SELECTED+"\n\n"; var haserr=false; form.public_user.value = 0; if ( form.user_role_id.value.length <= 0 ) { errmsg += "- "+M1_USER_ROLE+"\n"; haserr = true; } else if ( form.user_role_id.options[form.user_role_id.selectedIndex].text == J19_PUBLIC_USER ) { form.public_user.value = 1; } form.grouplist.value = fetchbits ( form, 'grplist' ); if ( form.grouplist.value.length <= 0 ) { errmsg += "- "+M1_USER_GROUPS+"\n"; haserr = true; } form.licenselist.value = fetchbits ( form, 'liclist' ); if ( form.licenselist.value.length <= 0 ) { errmsg += "- "+M1_LICENSES+"\n"; haserr = true; } // commenting out this line which was using licensing to figure out if this user should be // awarded dashboard access. currently, it is going to be simple, everyone gets a dashboard //form.access_dashboards.value = fetchOneBit ( form, 'optmodules', 'dashboard' ); if ( !haserr ) return true; else alert ( errmsg ); } return false; } function onseladminuseracct ( form ) { return true; } function onupdshowdetails ( form ) { var chkd = countCheckedElements ( form, 'dimfields' ); if( chkd > 20 ){ return confirm(M22_MORE_FIELD_SEL_WARN); } return true; } function onupdadminuser ( form ) { if ( vldinput ( form ) ) { var tfields = form.elements.length; for ( var i = 0; i < tfields; i++ ) { if ( (form.elements[i].type == "text") || (form.elements[i].type == "textarea" )) { var fname=form.elements[i].name; //alert(fname); convert(form,fname); } }//end of for var f = form.first_name.value; var l = form.last_name.value; if ( f.length > 0 ) f += " "; form.itemname.value = f+l; var errmsg = M2_ONE_HAS_TO_BE_SELECTED+"\n\n"; var haserr=false; if ( form.user_role_id.value.length <= 0 ) { errmsg += "- "+M2_USER_ROLE+"\n"; haserr = true; } form.licenselist.value = fetchbits ( form, 'liclist' ); if ( form.licenselist.value.length <= 0 ) { errmsg += "- "+M2_LICENSES+"\n"; haserr = true; } form.grouplist.value = fetchbits ( form, 'grplist' ); if(form.grplist && form.grplist.length>0 && form.grouplist.value.length <= 0) { errmsg += "- "+M2_USER_GROUPS+"\n"; haserr = true; } if ( !haserr ) { if ( form.grouplist.value.length <= 0 ) { alert ( M2_USER_GROUPS_WARN+"\n" ); } return true; } else alert ( errmsg ); } return false; } function onupdlickey ( form ) { var value = form.license_key.value; if (value.length > 0) { return true; } alert ( M24_INVALID_LICKEY_WARN ); return false; } function onupdprofile ( form ) { if ( vldinput ( form ) ) { var f = form.first_name.value; var l = form.last_name.value; if ( f.length > 0 ) f += " "; form.itemname.value = f+l; f = form.newpassword.value; if ( f.length > 0 ) { l = form.newpassword2.value; if ( f == l ) form.password.value = f; else { alert ( M3_PASS_NOT_EQUAL_WARN ); return false; } } else { form.password.value = form.oldpassword.value; } //alert ( "submitting..." ); return true; } return false; } function onupdusergroup ( form ) { if ( vldinput ( form ) ) { var tfields = form.elements.length; var errmsg = M4_INVALID_DATA_WARN+"\n\n"; var haserr = false; for ( var i = 0; i < tfields; i++ ) { if ( (form.elements[i].type == "text") || (form.elements[i].type == "textarea" )) { var fname=form.elements[i].name; convert(form,fname); var MAXCHAR = 255; if (form.elements[i].name == "description") { if (form.elements[i].value.length > MAXCHAR ) { haserr = true; var msg = M4_MAX_LEN_WARN+"\n\n"; msg = msg.replace('{1}',MAXCHAR); msg = msg.replace('{2}',form.elements[i].value.length); msg = msg.replace('{3}',(form.elements[i].value.length - MAXCHAR)); errmsg = "- "+msg +"\n"; //errmsg += "- Description: A maximum of " + MAXCHAR + " characters are allowed and you currently "; //errmsg += "have " + form.elements[i].value.length + " characters. Please shorten by"; //errmsg += " " + (form.elements[i].value.length - MAXCHAR) + " characters."; } } } }//end of for form.catlist.value = getChecked ( form, 'categorylist' ); if ( form.catlist.value.length <= 0 ) { errmsg += "- "+M4_ONE_CAT_TO_BE_SELECTED+"\n"; haserr = true; } if ( !haserr ) return true; else alert ( errmsg ); } return false; } function onupduserrole ( form ) { if ( vldinput ( form ) ) form.submit (); } function onupddashgroup ( form ) { if ( vldinput ( form ) ) { var tfields = form.elements.length; var errmsg = M5_INVALID_DATA_WARN+"\n\n"; var haserr = false; for ( var i = 0; i < tfields; i++ ) { if ( (form.elements[i].type == "text") || (form.elements[i].type == "textarea" )) { var fname=form.elements[i].name; convert(form,fname); var MAXCHAR = 255; if (form.elements[i].name == "description") { if (form.elements[i].value.length > MAXCHAR ) { haserr = true; var msg = M5_MAX_LEN_WARN+"\n\n"; msg = msg.replace('{1}',MAXCHAR); msg = msg.replace('{2}',form.elements[i].value.length); msg = msg.replace('{3}',(form.elements[i].value.length - MAXCHAR)); errmsg = "- "+msg +"\n"; //errmsg += "- Description: A maximum of " + MAXCHAR + " characters are allowed and you currently "; //errmsg += "have " + form.elements[i].value.length + " characters. Please shorten by"; //errmsg += " " + (form.elements[i].value.length - MAXCHAR) + " characters."; } } } }//end of for if ( form.itemname && form.itemname.value == M5_SHARED_DASHBOARDS ) { haserr = true; errmsg += "- "+M5_STD_DASHBOARD_INFO; //errmsg += "Please choose another Category Name."; } if ( form.is_standard && form.is_standard.value == "1" ) { form.licenselist.value = getChecked ( form, 'liclist' ); if ( form.licenselist.value.length <= 0 ) { errmsg += "- "+M5_SEL_ONE_LIC+"\n"; haserr = true; } } if ( !haserr ) return true; else alert ( errmsg ); } return false; } function onupddashboard ( form ) { if ( vldinput ( form ) ) { var tfields = form.elements.length; var errmsg = ""+M6_INVALID_DATA_WARN+"\n\n"; var haserr = false; for ( var i = 0; i < tfields; i++ ) { if ( (form.elements[i].type == "text") || (form.elements[i].type == "textarea" )) { var fname=form.elements[i].name; convert(form,fname); var MAXCHAR = 255; if (form.elements[i].name == "description") { if (form.elements[i].value.length > MAXCHAR ) { haserr = true; var msg = M6_MAX_LEN_WARN+"\n\n"; msg = msg.replace('{1}',MAXCHAR); msg = msg.replace('{2}',form.elements[i].value.length); msg = msg.replace('{3}',(form.elements[i].value.length - MAXCHAR)); errmsg = "- "+msg +"\n"; //errmsg += "- Description: A maximum of " + MAXCHAR + " characters are allowed and you currently "; //errmsg += "have " + form.elements[i].value.length + " characters. Please shorten by"; //errmsg += " " + (form.elements[i].value.length - MAXCHAR) + " characters."; } } } } // dashgroup that this dashboard belongs in if ( form.dashgrouplist && form.dashgrouplist.value.length <= 0 ) { errmsg += "- "+M6_SEL_DASHGROUP+"\n"; haserr = true; } /*if ( form.share && (fetchOneBit(form, 'share', 'True') > 0)) { var sharedgroups = getChecked( form, 'sharedgroupslist' ); if ( sharedgroups.length < 1 ) { errmsg += "- Please select at least one user group if you are going to share this Dashboard.\n"; haserr = true; } else { form.sharedgrouplist.value = sharedgroups; } }*/ /*var dashelstring = getChecked ( form, "dashellist" );*/ var oplist = document.newdashboard.elorder; var nels = oplist.options.length; var dashelstring = ""; for ( var i = 0; i < nels; i++ ) { if ( dashelstring.length > 0 ) dashelstring += ","; dashelstring += oplist.options[i].value; } form.dashelementlist.value = dashelstring; if ( dashelstring.length <= 0 ) { errmsg += "- "+M6_SEL_INDICATOR+"\n"; haserr = true; } //alert ( form.dashelementlist.value ); if ( !haserr ) return true; else alert ( errmsg ); } return false; } function sanitizeFields ( form ) { var tfields = form.elements.length; var errmsg = ""; var preamble = M7_INVALID_DATA_WARN+"\n\n"; for ( var i = 0; i < tfields; i++ ) { if ( (form.elements[i].type == "text") || (form.elements[i].type == "textarea" )) { var fname=form.elements[i].name; convert(form,fname); var MAXCHAR = 255; if (form.elements[i].name == "description") { if (form.elements[i].value.length > MAXCHAR ) { haserr = true; var msg = M7_MAX_LEN_WARN+"\n\n"; msg = msg.replace('{1}',MAXCHAR); msg = msg.replace('{2}',form.elements[i].value.length); msg = msg.replace('{3}',(form.elements[i].value.length - MAXCHAR)); errmsg = "- "+msg +"\n"; //errmsg += "- Description: A maximum of " + MAXCHAR + " characters are allowed and you currently "; //errmsg += "have " + form.elements[i].value.length + " characters. Please shorten by"; //errmsg += " " + (form.elements[i].value.length - MAXCHAR) + " characters."; } } } }//end of for if ( errmsg.length > 0 ) errmsg = preamble+errmsg; return errmsg; } function unescapewithplus ( str ) { //alert ( str ); var a = str.split ( "+" ); var s = a[0]; for ( var i = 1; i < a.length; i++ ) s = s+"%20"+a[i]; //alert ( s ); return unescape ( s ); } // // // var dashels = new Array ( "", "", "", "", "", "" ); function gatherDashElements ( chkboxid, chkboxtxt ) { var oplist = document.newdashboard.elorder; var nels = oplist.options.length; for ( var i = 0; i < nels; i++ ) { if ( oplist.options[i].value == chkboxid ) { for ( var j = i; j < (nels-1); j++ ) { oplist.options[j].text = oplist.options[j+1].text; oplist.options[j].value = oplist.options[j+1].value; } oplist.options.length = nels-1; //alert ( "Turned off "+chkboxid ); return true; } } if ( nels >= maxdashels ) { var msg = M8_MANY_IND_WARN; msg = msg.replace('{1}',maxdashels) alert ( msg ); return false; } oplist.options.length = nels+1; oplist.options[nels].text = unescapewithplus(chkboxtxt); oplist.options[nels].value = chkboxid; //var dashelstring = ""; //for ( var i = 0; i < maxdashels; i++ ) //dashelstring += dashels[i]+";"; //alert ( dashelstring ); return true; } function gatherAllDashElements ( form ) { } // // // function gatherDetailCols ( f, gnam ) { var fldlist = fetchbits ( f, gnam ); f.detailsdims.value = fldlist; //alert ( f.detailsdims.value ); return true; } function onupdaccount ( form ) { if ( validateinput ( form, 0 ) ) { if(!iszipcode(form,"zipcode")){ alert(M9_INVALID_ZIPCODE); return false; } var tfields = form.elements.length; for ( var i = 0; i < tfields; i++ ) { if ( (form.elements[i].type == "text") || (form.elements[i].type == "textarea" )) { var fname=form.elements[i].name; //alert(fname); convert(form,fname); } }//end of for return true; } return false; } // // validation upon new view creation/update // function onupdview ( form ) { if ( vldinput ( form ) ) { var tfields = form.elements.length; var errmsg = M10_INVALID_DATA_WARN+"\n\n"; var haserr = false; var loc_in = fetchvalfrom ( form, 'located_in' ); if ( loc_in < 1 ) { haserr = true; errmsg += "- "+M10_SEL_LOC+"\n"; } for ( var i = 0; i < tfields; i++ ) { if ( (form.elements[i].type == "text") || (form.elements[i].type == "textarea" )) { var fname=form.elements[i].name; convert(form,fname); var MAXCHAR = 255; if (form.elements[i].name == "description") { if (form.elements[i].value.length > MAXCHAR ) { haserr = true; var msg = M10_MAX_LEN_WARN+"\n\n"; msg = msg.replace('{1}',MAXCHAR); msg = msg.replace('{2}',form.elements[i].value.length); msg = msg.replace('{3}',(form.elements[i].value.length - MAXCHAR)); errmsg = "- "+msg +"\n"; /*errmsg += "- Description: A maximum of " + MAXCHAR + " characters are allowed and you currently "; errmsg += "have " + form.elements[i].value.length + " characters. Please shorten by"; errmsg += " " + (form.elements[i].value.length - MAXCHAR) + " characters.";*/ } } } }//end of for setPublicPrivateFlags ( form ); if ( form.mart_id.value.length <= 0 ) { haserr = true; errmsg += M10_SEL_DM_VIEW; } if ( !haserr ) { return true; } else { alert( errmsg ); } } return false; } // // // function onupdindicator( form ) { if ( vldinput ( form ) ) { var tfields = form.elements.length; var errmsg = M11_INVALID_DATA_WARN+"\n\n"; var haserr = false; for ( var i = 0; i < tfields; i++ ) { if ( (form.elements[i].type == "text") || (form.elements[i].type == "textarea" )) { var fname=form.elements[i].name; convert(form,fname); var MAXCHAR = 255; if (form.elements[i].name == "description") { if (form.elements[i].value.length > MAXCHAR ) { haserr = true; var msg = M11_MAX_LEN_WARN+"\n\n"; msg = msg.replace('{1}',MAXCHAR); msg = msg.replace('{2}',form.elements[i].value.length); msg = msg.replace('{3}',(form.elements[i].value.length - MAXCHAR)); errmsg = "- "+msg +"\n"; /*errmsg += "- Description: A maximum of " + MAXCHAR + " characters are allowed and you currently "; errmsg += "have " + form.elements[i].value.length + " characters. Please shorten by"; errmsg += " " + (form.elements[i].value.length - MAXCHAR) + " characters.";*/ } } } }//end of for setPublicPrivateFlags ( form ); if ( !haserr ) { return true; } else { alert( errmsg ); } } return false; } // // // function onupdmonitor( form, valcat ) { if ( vldinput ( form ) ) { var tfields = form.elements.length; var errmsg = M12_INVALID_DATA_WARN+"\n\n"; var haserr = false; for ( var i = 0; i < tfields; i++ ) { if ( (form.elements[i].type == "text") || (form.elements[i].type == "textarea" )) { var fname=form.elements[i].name; convert(form,fname); var MAXCHAR = 255; if (form.elements[i].name == "description") { if (form.elements[i].value.length > MAXCHAR ) { haserr = true; var msg = M12_MAX_LEN_WARN+"\n\n"; msg = msg.replace('{1}',MAXCHAR); msg = msg.replace('{2}',form.elements[i].value.length); msg = msg.replace('{3}',(form.elements[i].value.length - MAXCHAR)); errmsg = "- "+msg +"\n"; /*errmsg += "- Description: A maximum of " + MAXCHAR + " characters are allowed and you currently "; errmsg += "have " + form.elements[i].value.length + " characters. Please shorten by"; errmsg += " " + (form.elements[i].value.length - MAXCHAR) + " characters.\n";*/ } } } }//end of for if ( form.vt ) { form.viewtype.value = form.vt.selectedIndex; } var rbv = setPublicPrivateFlags ( form ); if ( rbv <= 0 ) { haserr = true; errmsg += "- "+M12_CHECK_RADIO+"\n" } if ( valcat && form.category_id.value.length <= 0 ) { haserr = true; errmsg += "- "+M12_SEL_CAT+"\n"; } if ( valcat && form.view_id.value.length <= 0 ) { haserr = true; errmsg += "- "+M12_SEL_DS; } if ( !haserr ) { return true; } else { alert( errmsg ); } } return false; } // // this method returns the form's items as a property string // to be passed to the applet which will add its parameters to the list // before posting the whole thing to the server url // function getMonitorFormParms( form ) { var tfields = form.elements.length; var parmstr = ""; //var msgstr = ""; for ( var i = 0; i < tfields; i++ ) { var pval, parm; var etype = form.elements[i].type; var pnam=form.elements[i].name; if ( (etype == "text") || (etype == "textarea" ) || (etype == "hidden") ) { pval=form.elements[i].value; } else { pval=fetchvalfrom ( form, pnam ); } parm = pnam+"="+replaceplus(escape(pval)); if ( parmstr.length > 0 ) parmstr += "&" parmstr += parm; //if ( msgstr.length > 0 ) //msgstr += "\n"; //msgstr += parm; }//end of for //alert ( msgstr ); return parmstr; } // // even though we escape the parm values, +'s are not escaped // consequently, the plus sign gets translated to a space on the other side // we are going to use the fact that +s are not escaped to escape it ourselves // function replaceplus ( s ) { var i = 0; var j = 0; var ds = ""; var len = s.length; while ( (j = s.indexOf ( "+", i )) >= 0 ) { ds += s.substring ( i, j ); ds += "%2B"; i = j+1; } ds += s.substring ( i ); return ds; } function onupdcategory ( form ) { if ( vldinput ( form ) ) { var tfields = form.elements.length; var errmsg = M13_INVALID_DATA_WARN+"\n\n"; var haserr = false; for ( var i = 0; i < tfields; i++ ) { if ( (form.elements[i].type == "text") || (form.elements[i].type == "textarea" )) { var fname=form.elements[i].name; convert(form,fname); var MAXCHAR = 255; if (form.elements[i].name == "description") { if (form.elements[i].value.length > MAXCHAR ) { haserr = true; var msg = M13_MAX_LEN_WARN+"\n\n"; msg = msg.replace('{1}',MAXCHAR); msg = msg.replace('{2}',form.elements[i].value.length); msg = msg.replace('{3}',(form.elements[i].value.length - MAXCHAR)); errmsg = "- "+msg +"\n"; /*errmsg += "- Description: A maximum of " + MAXCHAR + " characters are allowed and you currently "; errmsg += "have " + form.elements[i].value.length + " characters. Please shorten by"; errmsg += " " + (form.elements[i].value.length - MAXCHAR) + " characters.";*/ } } } }//end of for if ( !haserr ) { return true; } else { alert( errmsg ); } } return false; } function onupdlicense ( form ) { if ( vldinput ( form ) ) { var tfields = form.elements.length; var errmsg = M14_INVALID_DATA_WARN+"\n\n"; var haserr = false; for ( var i = 0; i < tfields; i++ ) { if ( (form.elements[i].type == "text") || (form.elements[i].type == "textarea" )) { var fname=form.elements[i].name; convert(form,fname); var MAXCHAR = 255; if (form.elements[i].name == "description") { if (form.elements[i].value.length > MAXCHAR ) { haserr = true; var msg = M14_MAX_LEN_WARN+"\n\n"; msg = msg.replace('{1}',MAXCHAR); msg = msg.replace('{2}',form.elements[i].value.length); msg = msg.replace('{3}',(form.elements[i].value.length - MAXCHAR)); errmsg = "- "+msg +"\n"; /*errmsg += "- Description: A maximum of " + MAXCHAR + " characters are allowed and you currently "; errmsg += "have " + form.elements[i].value.length + " characters. Please shorten by"; errmsg += " " + (form.elements[i].value.length - MAXCHAR) + " characters.";*/ } } } }//end of for if ( !haserr ) { return true; } else { alert( errmsg ); } } return false; } function onupduserpref ( form ) { var formval = fetchval ( form ); if (formval != null && formval != "") { form.dflt_indicator_id.value = formval; } //alert ( "submitting..."+document.upduserpref.itemid.value+"\n"+document.upduserpref.dflt_indicator_id.value ); return true; } function onupddashboardpref ( form ) { var checkedString = getChecked(form, 'item'); var checkedArray = checkedString.split(","); form.dflt_dashboard_id.value = checkedArray[0]; return true; } function onupddatafmt ( form ) { if ( vldinput ( form ) ) { var which = fetchvalfrom ( form, "typesusedfor" ); //alert ( which ); if ( which.toLowerCase() == "numeric" ) { var thousv = form.thous.checked?'1':'0'; var sclpctv = form.sclpct.checked?'1':'0'; var fs = form.ndecs.value+","+form.prefixstr.value+","+form.postfixstr.value+","+thousv+","+sclpctv; //alert ( fs ); form.formatstr.value = fs; } //alert ( form.formatstr.value ); return true; } return false; } function onsaveviewas ( form ) { if ( vldinput ( form ) ) { var tfields = form.elements.length; var errmsg = M15_INVALID_DATA_WARN+"\n\n"; var haserr = false; for ( var i = 0; i < tfields; i++ ) { if ( (form.elements[i].type == "text") || (form.elements[i].type == "textarea" )) { var fname=form.elements[i].name; convert(form,fname); var MAXCHAR = 255; if (form.elements[i].name == "description") { if (form.elements[i].value.length > MAXCHAR ) { haserr = true; var msg = M15_MAX_LEN_WARN+"\n\n"; msg = msg.replace('{1}',MAXCHAR); msg = msg.replace('{2}',form.elements[i].value.length); msg = msg.replace('{3}',(form.elements[i].value.length - MAXCHAR)); errmsg = "- "+msg +"\n"; /*errmsg += "- Description: A maximum of " + MAXCHAR + " characters are allowed and you currently "; errmsg += "have " + form.elements[i].value.length + " characters. Please shorten by"; errmsg += " " + (form.elements[i].value.length - MAXCHAR) + " characters.";*/ } } } }//end of for setPublicPrivateFlags ( form ); if ( !haserr ) { return true; } else { alert( errmsg ); } } return false; } function onsavemonitoras ( form ) { if ( vldinput ( form ) ) { var tfields = form.elements.length; var errmsg = M16_INVALID_DATA_WARN+"\n\n"; var haserr = false; for ( var i = 0; i < tfields; i++ ) { if ( (form.elements[i].type == "text") || (form.elements[i].type == "textarea" )) { var fname=form.elements[i].name; convert(form,fname); var MAXCHAR = 255; if (form.elements[i].name == "description") { if (form.elements[i].value.length > MAXCHAR ) { haserr = true; var msg = M16_MAX_LEN_WARN+"\n\n"; msg = msg.replace('{1}',MAXCHAR); msg = msg.replace('{2}',form.elements[i].value.length); msg = msg.replace('{3}',(form.elements[i].value.length - MAXCHAR)); errmsg = "- "+msg +"\n"; /*errmsg += "- Description: A maximum of " + MAXCHAR + " characters are allowed and you currently "; errmsg += "have " + form.elements[i].value.length + " characters. Please shorten by"; errmsg += " " + (form.elements[i].value.length - MAXCHAR) + " characters.";*/ } } } }//end of for setPublicPrivateFlags ( form ); if ( !haserr ) { return true; } else { alert( errmsg ); } } return false; } function oncopyviews ( form ) { if ( vldinput ( form ) ) { var errmsg = M17_SEL_ONE+"\n\n"; var haserr=false; form.martlist.value = fetchbits ( form, 'mrtlist' ); if ( form.martlist.value.length <= 0 ) { errmsg += "- "+M17_DM+"\n"; haserr = true; } if ( !haserr ) return true; else alert ( errmsg ); } return false; } function hasSpaces ( field ) { var MAXWORDLEN = 30; var buffer = field.value; if ( buffer.length >= MAXWORDLEN ) { var cpos = 0; var mark = 0; while ( cpos < buffer.length ) { var isSpace = false; if ( buffer.charAt( cpos ) == " " || buffer.charAt( cpos ) == "\t" || buffer.charAt( cpos ) == "\n" || buffer.charAt( cpos ) == "\v" || buffer.charAt( cpos ) == "\f" || buffer.charAt( cpos ) == "\r" ) { isSpace = true; } if ( isSpace == true ) { mark = cpos; if ( (buffer.length - mark) < MAXWORDLEN ) { return true; } } if ( (cpos - mark) >= MAXWORDLEN ) { return false; } else { cpos++; } } } return true; } function vldinput ( form ) { return validateinput ( form, 1 ); } function validateinput ( form, chk4wrap ) { var fcus = false; var nfields = form.elements.length; var errmsg = M18_INVALID_DATA_WARN+"\n\n"; var retval = true; for ( var i = 0; i < nfields; i++ ) { var fname = form.elements[i].name; var fvalue = form.elements[i].value; var dispname = form.elements[i].getAttribute('required'); if ( fname == "email" ) { chk4wrap = 0; // turn off wrap checking for email input } if ( form.elements[i].getAttribute('required') ) { // remove leading spaces while ( ''+fvalue.charAt(0)==' ' ) { form.elements[i].value=form.elements[i].value.substring(1,form.elements[i].value.length); fvalue = form.elements[i].value; } if ( form.elements[i].value.length <=0 ) { if ( fcus == false) { form.elements[i].focus (); form.elements[i].select (); fcus = true; } if ( fname != "email" ) { errmsg += "- "+dispname+"\n"; } retval = false; } if ( fname == "zipcode" ) { if ( !isalphanumeric ( form, fname ) ) { errmsg += "- "+fname+"\n"; retval = false; } } if ( fname == "email" ) { if ( !isvalidemail ( form, fname ) ) { var msg = M18_EMAIL_WARN; msg = msg.replace('{1}',dispname) errmsg += "- "+msg+"\n"; if ( fcus == false) { form.elements[i].focus (); form.elements[i].select (); fcus = true; } retval = false; } } if ( fname == "dashgroup_id" ) { if ( form.elements[fname].options[form.elements[fname].selectedIndex].value == "-1" ) { errmsg += "- "+dispname+"\n"; retval = false; } } } else {// end of if required dispname = fname; } // text and textarea fields need to have a space occasionally if ( chk4wrap == 1 && (form.elements[i].type == "text" || form.elements[i].type == "textarea") ) { if ( hasSpaces ( form.elements[i] ) == false ) { var msg = M18_TEXT_LEN_WARN; msg = msg.replace("{1}",dispname) errmsg += "- "+msg+"\n"; retval = false; } } } // end of for loop if ( retval == false ) { alert ( errmsg ); } return retval; } function isnumeric( form, field ) { var name=form.elements[field].name; var txt=form.elements[field].value; var ValidChars = "0123456789-"; var IsNumber=true; var c; for (j = 0; j < txt.length && IsNumber == true; j++) { c = txt.charAt(j); if ( ValidChars.indexOf(c) == -1 ) { IsNumber = false; form.elements[field].focus (); form.elements[field].select (); return false; } } return true; } function iszipcode(form,str) { var field=form.elements[str].value; var valid = "0123456789-"; var hyphencount = 0; if (field.length!=5 && field.length!=10) { //alert("Please enter your 5 digit or 5 digit+4 zip code."); return false; } for (var i=0; i < field.length; i++) { temp = "" + field.substring(i, i+1); if (temp == "-") hyphencount++; if (valid.indexOf(temp) == "-1") { //alert("Invalid characters in your zip code. Please try again."); return false; } if ((hyphencount > 1) || ((field.length==10) && ""+field.charAt(5)!="-")) { //alert("The hyphen character should be used with a properly formatted 5 digit+four zip code, like '12345-6789'. Please try again."); return false; } } return true; } function isalphanumeric ( form, field ) { var name=form.elements[field].name; var txt=form.elements[field].value; var IsNumber=true; var c; for ( var j = 0; j < txt.length && IsNumber == true; j++ ) { c = txt.charAt ( j ); if ( (c < '0' || c > '9') && (c < 'A' || c > 'Z') && (c < 'a' || c > 'z') && c != '-' && c != ' ' ) { IsNumber = false; form.elements[field].focus (); form.elements[field].select (); return false; } } return true; } function isvalidemail ( form, field ) { var str=form.elements[field].value; if(str.indexOf(' ')>=0) return false; var len= str.length; var dloc=str.indexOf("."); var rloc=str.indexOf("@"); var d2loc=str.lastIndexOf("."); if ((rloc > 0) && (dloc > 0) && (d2loc > rloc) && (rloc < (len-1)) && (dloc < (len-1))) { return true; } else return false; } function isvalidemail1 ( s ) { var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; if ( filter.test(s) ) alert ( 'YES! Correct email address' ); else alert ( 'NO! Incorrect email address' ); } function isvalidemail2 ( s ) { var str=form.elements[field].value; var lastch= str.length-1; var atloc=str.indexOf("@"); var lastdloc=str.lastIndexOf("."); if ( atloc > 0 && lastdloc > atloc && (lastch-atloc) > 2 && (lastdloc-atloc) > 0 && (latch-lastdloc) > 0 ) alert ( 'YES! Correct email address' ); else alert ( 'NO! Incorrect email address' ); } // ---------------------------------------------------------------------------- function onpwrecovery ( form ) { if ( form.email.value == "" ) { alert ( M19_ENTER_EMAIL ); form.email.focus (); return false; } else return true; } // ---------------------------------------------------------------------------- // html markup conversion functions // ---------------------------------------------------------------------------- function convert ( form, field ) { var str = form.elements[field].value; var buffer = ""; var startpos = 0; var a = 0; while ( a >= 0 ) { a= str.indexOf ( '<' , startpos ); if ( a < 0 ) { buffer=buffer+str.substring(startpos , str.length); } else { buffer=buffer+str.substring(startpos , a); buffer=buffer+"<"; startpos=a+1; } }// end of while //alert(buffer); convert2(form, field, buffer); return true; } function convert2 ( form, field, str ) { var buffer2 = ""; var startpos=0; var a=0; while ( a >= 0 ) { a = str.indexOf ( '>', startpos ); if ( a < 0 ) { buffer2=buffer2+str.substring(startpos , str.length); } else { buffer2=buffer2+str.substring(startpos , a); buffer2=buffer2+">"; startpos=a+1; } }// end of while //alert(buffer2); form.elements[field].value=buffer2; //alert(""); //alert("form value "+form.description.value); return true; } // ---------------------------------------------------------------------------- // category and datamart dropdown management helper functions // ---------------------------------------------------------------------------- // // array of category objects // var jscatlist = new Array (); var curcatindex = 0; // // mart object constructor // function martObject ( id, name ) { this.id = id; this.name = name; } // // category object constructor // function categoryObject ( id, name ) { this.id = id; this.name = name; this.marts = new Array (); } // // find the category in the list that has the specified id // function findCat ( jslist, which ) { for ( var i = 0; i < jslist.length; i++ ) { if ( which == jslist[i].id ) return i; } return 0; } // // find the mart in the list that belongs to the category and // has the specified id // function findMart ( catidx, which ) { for ( var i = 0; i < jscatlist[catidx].marts.length; i++ ) { if ( which == jscatlist[catidx].marts[i].id ) return i; } return 0; } // // check if the mart exists in the new category upon switching the category // function checkMartPresence ( form, catid, martid ) { var newindex = form.category_id.selectedIndex; var mrtidx = findMart ( newindex, martid ); if ( mrtidx == 0 ) { alert ( M20_DM_WARN ); form.category_id.selectedIndex = curcatindex; } else { curcatindex = newindex; } } // // load the marts upon switching the category // function loadMarts ( form, catid, martid ) { var index; if ( catid.length > 0 ) { index = findCat ( jscatlist, catid ); form.category_id.options[index].selected = true; } else index = form.category_id.selectedIndex; var nmarts = jscatlist[index].marts.length; form.mart_id.options.length = nmarts; for ( var i = 0; i < jscatlist[index].marts.length; i++ ) { form.mart_id.options[i].value = jscatlist[index].marts[i].id; form.mart_id.options[i].text = jscatlist[index].marts[i].name; } var mindex = 0; if ( martid.length <= 0 && nmarts > 0 ) { //martid = form.mart_id.options[form.mart_id.selectedIndex].value; } if ( martid.length > 0 ) { mindex = findMart ( index, martid ); //alert ( martid+": selecting the "+mindex+" one" ); } if ( nmarts > 0 ) form.mart_id.options[mindex].selected = true; } // // load the cats // function loadCats ( form, catid ) { var index = 0; var ncats = jscatlist.length; form.category_id.options.length = ncats; if ( catid.length > 0 ) { // if category id is not empty, find that id in the catlist index = findCat ( jscatlist, catid ); form.category_id.options[index].selected = true; } curcatindex = index; for ( var i = 0; i < ncats; i++ ) { form.category_id.options[i].value = jscatlist[i].id; form.category_id.options[i].text = jscatlist[i].name; } } // // ---------------------------------------------------------------------------- // category and stdview dropdown management helper functions // ---------------------------------------------------------------------------- // // array of view category objects // var jsvcatlist = new Array (); var curvcatindex = 0; var jsvtypelist = new Array (); // // stdview object constructor // function sviewObject ( id, name ) { this.id = id; this.name = name; } // // view category object constructor // function viewcatObject ( id, name ) { this.id = id; this.name = name; this.sviews = new Array (); } function viewtypeObject ( id, name, gtypes ) { this.id = id; this.name = name; this.gtypes = gtypes; } function graphtypeObject ( id, name, img ) { this.id = id; this.name = name; this.img = img; } // // // load the appviews upon switching the category // function loadStdViews ( form, catid, sviewid ) { var index; if ( catid.length > 0 ) { index = findCat ( jsvcatlist, catid ); form.category_id.options[index].selected = true; } else index = form.category_id.selectedIndex; var nviews = jsvcatlist[index].sviews.length; form.view_id.options.length = nviews; for ( var i = 0; i < jsvcatlist[index].sviews.length; i++ ) { form.view_id.options[i].value = jsvcatlist[index].sviews[i].id; form.view_id.options[i].text = jsvcatlist[index].sviews[i].name; } var vindex = 0; if ( sviewid.length <= 0 && nviews > 0 ) { //sviewid = form.view_id.options[form.view_id.selectedIndex].value; } if ( sviewid.length > 0 ) { vindex = findStdView ( index, sviewid ); //alert ( sviewid+": selecting the "+vindex+" one" ); } if ( nviews > 0 ) form.view_id.options[vindex].selected = true; } // // load the view cats // function loadVCats ( form, catid ) { var index = 0; var ncats = jsvcatlist.length; form.category_id.options.length = ncats; if ( catid.length > 0 ) { // if category id is not empty, find that id in the catlist index = findCat ( jsvcatlist, catid ); form.category_id.options[index].selected = true; } curvcatindex = index; for ( var i = 0; i < ncats; i++ ) { form.category_id.options[i].value = jsvcatlist[i].id; form.category_id.options[i].text = jsvcatlist[i].name; } } // // load the view types // function loadViewTypes ( form, vt ) { var nvts = jsvtypelist.length; form.vt.options.length = nvts; form.vt.selectedIndex = vt; for ( var i = 0; i < nvts; i++ ) { form.vt.options[i].value = jsvtypelist[i].id; form.vt.options[i].text = jsvtypelist[i].name; } } // // find the stdview in the list that belongs to the category and // has the specified id // function findStdView ( catidx, which ) { for ( var i = 0; i < jsvcatlist[catidx].sviews.length; i++ ) { if ( which == jsvcatlist[catidx].sviews[i].id ) return i; } return 0; } // // // utility fcn to disable a form input element // function disableElement ( inputElement, performAction ) { if ( inputElement == null || performAction == null ) { return; } if ( performAction == true ) { inputElement.disabled = true; if ( document.getElementsByTagName("body")[0] && document.getElementsByTagName("body")[0].style ) { document.getElementsByTagName("body")[0].style.cursor = "wait"; } } return performAction; } // utility fcn to disable a form input element // function disableHTMLElement ( htmlElement ) { if ( htmlElement == null ) { return; } htmlElement.disabled = true; if ( document.getElementsByTagName("body")[0] && document.getElementsByTagName("body")[0].style ) { document.getElementsByTagName("body")[0].style.cursor = "wait"; } } // utility fcn to enable a form input element // function enableElement ( inputElement, performAction ) { if ( inputElement == null || performAction == null ) { return; } if ( performAction == true ) { inputElement.disabled = false; if ( document.getElementsByTagName("body")[0] && document.getElementsByTagName("body")[0].style ) { document.getElementsByTagName("body")[0].style.cursor = "auto"; } } return performAction; } // utility fcn to enable a form input element // function enableHTMLElement ( htmlElement ) { if ( htmlElement == null ) { return; } htmlElement.disabled = false; if ( document.getElementsByTagName("body")[0] && document.getElementsByTagName("body")[0].style ) { document.getElementByTagName("body")[0].style.cursor = "auto"; } } // ---------------------------------------------------------------------------- // license and module management helper functions in user wizards // ---------------------------------------------------------------------------- var licarray = new Array (); // // category object constructor // function jsLicenseObject ( id, dashinc ) { this.id = id; this.dashincluded = dashinc; } // // updates the optional module form element based on the current check boxes // function updateModules ( f, gnam ) { var nboxes = f.elements.length; f.optmodules.disabled = false; for ( var i = 0; i < nboxes; i++ ) { var e = f.elements[i]; if ( e.name == gnam && e.checked ) { var lobj = findLicenseObject ( e.value ); if ( lobj != null && lobj.dashincluded == '1' ) { // for now, we only have one checkbox with optional module // when we have more, we will have to do the following to // all optional module check boxes f.optmodules.checked = true; f.optmodules.disabled = true; return; } } } } function findLicenseObject ( id ) { for ( var i = 0; i < licarray.length; i++ ) { if ( licarray[i].id == id ) { return licarray[i]; } } return null; } // ---------------------------------------------------------------------------- // dashgroup and daashboard dropdown management helper functions // ---------------------------------------------------------------------------- // // array of dashgroup objects // var jsdglist = new Array (); var curdgindex = 0; // // dashboard object constructor // function jsDashObject ( id, name ) { this.id = id; this.name = name; } // // dashgroup object constructor // function jsDashGroupObject ( id, name ) { this.id = id; this.name = name; this.dashbds = new Array(); } // // find the dash in the dash list that matches the id // function findDashboard ( which ) { if ( curdgindex >= 0 && which.length > 0 ) { var curdg = jsdglist[curdgindex]; for ( var i = 0; i < curdg.dashbds.length; i++ ) { if ( which == curdg.dashbds[i].id ) return i; } } return 0; } // // find the dashgroup in the dashgroup list that matches the id // function findDashGroup ( which ) { if ( which.length > 0 ) { for ( var i = 0; i < jsdglist.length; i++ ) { if ( which == jsdglist[i].id ) { return i; } } } return 0; } function findItem(options, id) { for (var i = 0; i < options.length; i++) { if (options[i].value == id) { return i; } } return 0; } // Add Array splice functionality if it doesn't exist // if (Array.prototype.splice && typeof([0].splice(0))=="number") { Array.prototype.splice = null; } if (!Array.prototype.splice) { function array_splice(ind,cnt) { if (arguments.length == 0) { return ind; } if (typeof ind != "number") { ind = 0; } if (ind < 0) { ind = Math.max(0,this.length + ind); } if (ind > this.length) { if (arguments.length > 2) { ind = this.length; } else { return []; } } if (arguments.length < 2) { cnt = this.length-ind; } cnt = (typeof cnt == "number") ? Math.max(0,cnt) : 0; removeArray = this.slice(ind,ind+cnt); endArray = this.slice(ind+cnt); this.length = ind; for (var i=2;i