Javascript - examples
Revision as of 09:17, 29 January 2008 by PeterHarding (talk | contribs) (New page: <pre> //------------------------------------------------------------------------------ // DBLookup section //---------------------------------------------------------------------...)
//------------------------------------------------------------------------------ // DBLookup section //------------------------------------------------------------------------------ var lookupOpened = false; //------------------------------------------------------------------------------ // !!!!!!!!!!! never call this procedure directly from your page !!!!!!!!!!!!! function DBLookup_popup( fieldHidden, fieldVisible, key, label, fields, nullable, multiple, pageSize, pageTitle, dataSourceType, dataSourceSpec, dataSourceParams, where, pageType, filtersDuplicatesBySQL) { var newWindowOptions; var newWindowTop; var openWindow; var winWidth, winHeight; var theForm; //var posX, posY; if (lookupOpened) { handle = window.open('','Lookup'); if (handle) // handle mac platform DOM window object behavior, #7300 if (!(handle.navigator && handle.navigator.platform && handle.navigator.platform.toUpperCase() == 'MACPPC')) handle.close(); } else lookupOpened = true; winWidth = 350; winHeight = 350; if (document.all) { // ****** Internet Explorer **** posX = event.screenX; posY = event.screenY; theForm = document.forms[0]; } else { // ****** Netscape *********** theForm = findFormForName(document, fieldHidden+'_Form'); if (theForm == null) { theForm = document.forms[0]; } if (navigator.vendorSub) { // Netscape 7 winWidth = 350; winHeight = 350; } else { winWidth = 525; winHeight = (multiple=="multiple") ? 610 : 450; } } eleX = posX; eleY = posY; if (theForm == null) { wbAlert(getLocalizedMessage_NO_FORM()); return; } // If the lookup is currently resolving, wait until complete. if (theForm.elements[fieldVisible].isResolving == true) { theForm.elements[fieldVisible].isLookupPending = true; return; } posX = posX + 20; posY = posY - (winHeight/2); if ((posX + winWidth) > window.screen.width) posX = eleX - winWidth - 100; if ((posY + winHeight) > window.screen.height) posY = posY - (posY + winHeight - window.screen.height)-32; if (posX < 0) posX = 0; if (posY < 0) posY = 0; var initialBlank = (theForm.elements[fieldHidden].getAttribute('initialBlank') ? theForm.elements[fieldHidden].getAttribute('initialBlank') : ''); // This string may exceed 2k. read this paramter directly from form by the opened window instead of passign it through. var resultSelected = ((multiple != 'multiple' && theForm.elements[fieldHidden].resultSelected) ? theForm.elements[fieldHidden].resultSelected : ''); var itemsCount = (theForm.elements[fieldHidden].itemsCount?theForm.elements[fieldHidden].itemsCount:''); var addwhere = (theForm.elements[fieldHidden].addwhere?theForm.elements[fieldHidden].addwhere:''); openWindow = contextPath + "/system/ui/DBLookupUI_" + multiple + ".jsp" + "?fieldHidden=" + fieldHidden + "&fieldVisible=" + fieldVisible + "&key=" + key + "&label=" + label + "&fields=" + fields + "&nullable=" + nullable + "&pageSize=" + pageSize + "&pageTitle=" + pageTitle + "&posX=" + posX + "&posY=" + posY + "&dataSourceType=" + dataSourceType + "&dataSourceSpec=" +escape(dataSourceSpec) + (resultSelected == '' ? '':"&resultSelected=" + resultSelected) + (initialBlank == '' ? '':"&initialBlank=" + initialBlank) + (itemsCount == ''? '':"&itemsCount=" + itemsCount) + (where == ''? '':"&where=" + escape(where)) + (addwhere == ''? '':"&addwhere=" + escape(addwhere)) + (pageType == '' ? '': "&pageType=" + pageType) + "&filtersDuplicatesBySQL=" + filtersDuplicatesBySQL + "&dataSourceParams=" + escape(dataSourceParams); newWindowOptions = "width=" + winWidth + ",height=" + winHeight + ",innerWidth=" + winWidth + ",innerHeight=" + winHeight + ",alwaysRaised=1,resizable=YES,screenX="+posX+",screenY="+posY+",left="+posX+",top="+posY+",scrollbars=1"; window.open(openWindow, "Lookup", newWindowOptions ).focus(); } //------------------------------------------------------------------------------ // A wrapper for customized calls function performDBLookup(fieldHidden, fieldVisible, key, label, fields, multiple, pageSize, pageTitle, dataSourceType, dataSourceSpec){ DBLookup_popup(fieldHidden, fieldVisible, key, label, fields, true, multiple, (pageSize==0?12:pageSize), pageTitle, dataSourceType, dataSourceSpec, "", "", "", "false"); } //------------------------------------------------------------------------------ resolveWindowsCount = 0; //------------------------------------------------------------------------------ function DBLookup_resolveLabels(fieldHidden, fieldVisible, key, label, selectedLabels, dataSourceType, dataSourceSpec, dataSourceParams, where, multiple, filtersDuplicatesBySQL) { resolveLabels(fieldHidden, fieldVisible, key, label, selectedLabels, dataSourceType, dataSourceSpec, dataSourceParams, where, multiple, 'DB', filtersDuplicatesBySQL); } //------------------------------------------------------------------------------ function MessagingLookup_resolveLabels(fieldHidden, fieldVisible, key, label, selectedLabels, dataSourceType, dataSourceSpec, where) { resolveLabels(fieldHidden, fieldVisible, key, label, selectedLabels, dataSourceType, dataSourceSpec, "", where, 'true', 'Messaging', false); } //------------------------------------------------------------------------------ function resolveLabels(fieldHidden, fieldVisible, key, label, selectedLabels, dataSourceType, dataSourceSpec, dataSourceParams, where, multiple, ui, filtersDuplicatesBySQL) { var newWindowOptions; var newWindowTop; var openWindow; var winWidth, winHeight; winWidth = 50; winHeight = 10; // **** Had to remove event.screenX // **** Because we switched to <iframe> for Internet Explorer // **** akaspersky **** posX = 200; posY = 200; if (document.all) { // ****** Internet Explorer **** theForm = document.forms[0]; } else { // ****** Netscape *********** theForm = findFormForName(document, fieldHidden+'_Form'); if (theForm == null) { theForm = document.forms[0]; } } if (theForm == null) { wbAlert(getLocalizedMessage_NO_FORM()); return; } var addwhere = (theForm.elements[fieldHidden].addwhere?theForm.elements[fieldHidden].addwhere:''); openWindow = contextPath + "/system/ui/" + ui + "LookupUIResolve.jsp?" + "&fieldHidden=" + fieldHidden + "&fieldVisible=" + fieldVisible + "&key=" + key + "&label=" + label + "&selectedLabels=" + escape(selectedLabels) + "&dataSourceType=" + dataSourceType + "&dataSourceSpec=" + escape(dataSourceSpec) + (where == ''? '':"&where=" + (ui=='DB' ? escape(where) : where)) + (addwhere == ''? '':"&addwhere=" + escape(addwhere)) + "&multiple=" + multiple + "&filtersDuplicatesBySQL=" + filtersDuplicatesBySQL + "&dataSourceParams=" + escape(dataSourceParams); newWindowOptions = "width=" + winWidth + ",height=" + winHeight + ",screenX="+posX+ ",screenY="+posY+ ",left="+posX+ ",top="+posY+ ",innerWidth=" + winWidth + ",innerHeight=" + winHeight + ",alwaysRaised=1,locationbar=0,statusbar=0,resizable=NO"; if (document.all) { // **** For IE we are using iFrame var frameName = 'if' + fieldHidden; document.all[frameName].src = openWindow; } else { // *** For Netscape Window is Fine window.open(openWindow, "resolveWindow_" + (resolveWindowsCount++), newWindowOptions).focus(); } } //------------------------------------------------------------------------------ var wbAlertWindow; // stores alert window parameters for NN function wbAlert(message) { var newWindowOptions; var newWindowTop; var openWindow; var winWidth, winHeight; winWidth = 200; winHeight = 10; var posX = 200; var posY = 200; openWindow= message; newWindowOptions = "width=" + winWidth + ",height=" + winHeight + ",innerWidth=" + winWidth + ",innerHeight=" + winHeight + ",alwaysRaised=0,locationbar=0,statusbar=0,resizable=NO"; if (document.all) { // **** For IE we are using iFrame alert(message); } else { // *** For Netscape Window is Fine if (!wbAlertWindow) { w = window.open("","Alert",newWindowOptions ); w.document.open(); w.document.write("<script>"); w.document.write("</script>"); w.document.write("<body onBlur='window.close();' onUnload='window.opener.wbAlertWindow = null;'>"); w.document.write("<form>"); w.document.write("<p>" + message + "</p>"); w.document.write("</form>"); w.document.write("</body>"); w.document.close(); w.focus(); } } } //------------------------------------------------------------------------------ // *** Sets the values in a DBLookup based on the default values provided **** function setDBLookup(controlName, defaultID, defaultName) { var form1, form2; form1 = getFormForName(controlName+"_Form"); form2 = getFormForName(controlName+"_Hidden_Form"); if (form1 == null || form2 == null) { alert(getLocalizedMessage_NO_FORM()); return; } setElementValue(form1.name, controlName, defaultID); setElementValue(form1.name, controlName+"_label", defaultName); setElementValue(form2.name, controlName+"_ID", defaultID); setElementValue(form2.name, controlName+"_NAME", defaultName); } //------------------------------------------------------------------------------ // *** Sets the values in a DBDropdown based on the default values provided **** function setDBDropdown(controlName, defaultID, defaultName) { var form1, form2, theDropdown, theValue; form1 = getFormForName(controlName+"_Form"); form2 = getFormForName(controlName+"_Hidden_Form"); if (form1 == null || form2 == null) { wbAlert(getLocalizedMessage_NO_FORM()); return; } setElementValue(form2.name, controlName+"_ID", defaultID); setElementValue(form2.name, controlName+"_NAME", defaultName); theDropdown = findElementForName(form1.name, controlName); theValue = defaultID+"!*!"+defaultName; if (theDropdown!=null && theDropdown.type.indexOf('select')==0) { for (i=0;i<theDropdown.options.length;i++) { if (theDropdown.options[i].value == theValue) { theDropdown.options[i].selected = true; return; } } theDropdown.options[theDropdown.options.length] = new Option(defaultName, theValue); theDropdown.options[theDropdown.options.length-1].selected = true; } } //------------------------------------------------------------------------------ function getDocument() { return document; } //------------------------------------------------------------------------------ function getFormForName(formName) { if (document.all) { // ****** Internet Explorer **** theForm = document.forms[0]; } else { // ****** Netscape *********** theForm = findFormForName(document, formName); if (theForm == null) { theForm = document.forms[0]; } } return theForm; } //------------------------------------------------------------------------------