blob: 13086e232bf9508a5fcbbd9d37ce7072ed29421f [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
// ================= FIELD LOOKUP METHODS ============================
var NS4 = (navigator.appName.indexOf("Netscape") >= 0 && ! document.getElementById)? true: false;
var IE4 = (document.all && ! document.getElementById)? true: false;
var IE5 = (document.getElementById && document.all)? true: false;
var NS6 = (document.getElementById && navigator.appName.indexOf("Netscape") >= 0)? true: false;
var mx, my;
var ACTIVATED_LOOKUP = null;
var LOOKUP_DIV = null;
var INITIALLY_COLLAPSED = null;
var SHOW_DESCRIPTION = false;
function moveobj(evt) {
if (NS4 || NS6) {
mx = evt.screenX;
my = evt.screenY;
} else if (IE5 || IE4) {
mx = event.screenX;
my = event.screenY;
}
}
var target = null;
var target2 = null;
var targetW = null;
var lookups =[];
function call_fieldlookup(target, viewName, formName, viewWidth, viewheight) {
var fieldLookup = new fieldLookup1(target);
if (! viewWidth) viewWidth = 350;
if (! viewheight) viewheight = 200;
fieldLookup.popup(viewName, formName, viewWidth, viewheight);
}
function call_fieldlookupLayer(target, viewName, lookupWidth, lookupHeight, lookupPosition, fadeBackground, initiallyCollapsed) {
if (isEmpty(target) || isEmpty(viewName)) {
return lookup_error("Lookup can't be created, one of these variables is missing: target=" + target + " viewName=" + viewName);
}
var fieldLookupPopup = new FieldLookupPopup(target, viewName, lookupWidth, lookupHeight, lookupPosition, fadeBackground, initiallyCollapsed, arguments);
fieldLookupPopup.showLookup();
this.target = target;
}
function call_fieldlookupLayer3(target, target2, viewName, lookupWidth, lookupHeight, lookupPosition, fadeBackground, initiallyCollapsed) {
if (isEmpty(target) || isEmpty(target2) || isEmpty(viewName)) {
return lookup_error("Lookup can't be created, one of these variables is missing: target=" + target + " target2=" + target2 + " viewName=" + viewName);
}
var fieldLookupPopup = new FieldLookupPopup(target, viewName, lookupWidth, lookupHeight, lookupPosition, fadeBackground, initiallyCollapsed, arguments);
fieldLookupPopup.showLookup();
this.target = target;
this.target2 = target2;
}
function call_fieldlookup2(target, viewName, presentation) {
var fieldLookup = new fieldLookup1(target, arguments, presentation);
fieldLookup.popup2(viewName);
}
function call_fieldlookup3(target, target2, viewName, presentation) {
var fieldLookup = new fieldLookup2(target, target2, arguments, presentation);
fieldLookup.popup2(viewName);
}
function fieldLookup1(obj_target, args, presentation) {
this.args = args;
this.presentation = presentation;
// passing methods
this.popup = lookup_popup1;
this.popup2 = lookup_popup2;
// validate input parameters
if (! obj_target) return lookup_error("Error calling the field lookup: no target control specified");
if (obj_target.value == null) return lookup_error("Error calling the field lookup: parameter specified is not valid target control");
targetW = obj_target;
}
function fieldLookup2(obj_target, obj_target2, args, presentation) {
this.args = args;
this.presentation = presentation;
// passing methods
this.popup = lookup_popup1;
this.popup2 = lookup_popup2;
// validate input parameters
if (! obj_target) return lookup_error("Error calling the field lookup: no target control specified");
if (obj_target.value == null) return lookup_error("Error calling the field lookup: parameter specified is not valid target control");
targetW = obj_target;
// validate input parameters
if (! obj_target2) return lookup_error("Error calling the field lookup: no target2 control specified");
if (obj_target2.value == null) return lookup_error("Error calling the field lookup: parameter specified is not valid target2 control");
target2 = obj_target2;
}
function lookup_popup1(view_name, form_name, viewWidth, viewheight) {
var obj_lookupwindow = window.open(getViewNameWithSeparator(view_name) + 'formName=' + form_name + '&presentation=' + this.presentation + '&id=' + this.id, '_blank', 'width=' + viewWidth + ',height=' + viewheight + ',scrollbars=yes,status=no,resizable=yes,top=' + my + ',left=' + mx + ',dependent=yes,alwaysRaised=yes');
obj_lookupwindow.opener = window;
obj_lookupwindow.focus();
}
function lookup_popup2(view_name) {
var argString = "";
if (this.args != null) {
if (this.args.length > 2) {
for (var i = 2; i < this.args.length; i++) {
argString += "&parm" + (i - 3) + "=" + this.args[i];
}
}
}
var obj_lookupwindow = window.open(getViewNameWithSeparator(view_name) + 'presentation=' + this.presentation + '&id=' + this.id + argString, '_blank', 'width=900,height=700,scrollbars=yes,status=no,resizable=yes,top=' + my + ',left=' + mx + ',dependent=yes,alwaysRaised=yes');
obj_lookupwindow.opener = window;
obj_lookupwindow.focus();
}
function lookup_error(str_message) {
var CommonErrorMessage2 = getJSONuiLabel("CommonUiLabels", "CommonErrorMessage2");
showErrorAlert(CommonErrorMessage2, str_message);
return null;
}
function getViewNameWithSeparator(view_name) {
var sep = "?";
if (view_name.indexOf("?") >= 0) {
sep = "&";
}
return view_name + sep;
}
function initiallyCollapse() {
if ((!LOOKUP_DIV) || (INITIALLY_COLLAPSED != "true")) return;
var slTitleBars = LOOKUP_DIV.getElementsByClassName('screenlet-title-bar');
for (i in slTitleBars) {
var slTitleBar = slTitleBars[i];
var ul = slTitleBar.firstChild;
if ((typeof ul) != 'object') continue;
var childElements = ul.childNodes;
for (j in childElements) {
if (childElements[j].className == 'expanded' || childElements[j].className == 'collapsed') {
break;
}
}
var childEle = childElements[j].firstChild;
CollapsePanel(childEle, 'lec' + COLLAPSE);
break;
}
}
function CollapsePanel(link, areaId){
var container = $(areaId);
var liElement = $(link).up('li');
liElement.removeClassName('expanded');
liElement.addClassName('collapsed');
Effect.toggle(container, 'appear');
}
function initiallyCollapseDelayed() {
setTimeout("initiallyCollapse()", 400);
}
/*************************************
* Fieldlookup Class & Methods
*************************************/
function ConstructLookup(requestUrl, inputFieldId, dialogTarget, dialogOptionalTarget, formName, width, height, position, modal, ajaxUrl, showDescription, presentation, defaultMinLength, defaultDelay, args) {
// add the presentation attribute to the request url to let the request know which decorator should be loaded
if(!presentation) {
var presentation = "layer"
}
// create Link Element with unique Key
var lookupId = GLOBAL_LOOKUP_REF.createNextKey();
var inputBox = document.getElementById(inputFieldId);
newInputBoxId = lookupId + "_" + inputFieldId;
inputBox.id = newInputBoxId;
var parent = inputBox.parentNode;
var link = document.createElement('A');
link.href = "javascript:void(0);";
link.id = lookupId + "_button";
parent.appendChild(link);
var hiddenDiv = document.createElement("DIV");
hiddenDiv.id = lookupId;
hiddenDiv.css = "{display: none;}";
hiddenDiv.title = "";
parent.appendChild(hiddenDiv);
// createAjax autocomplete
if (ajaxUrl != "" && showDescription != "") {
SHOW_DESCRIPTION = showDescription;
//write the new input box id in the ajaxUrl Array
ajaxUrl = ajaxUrl.replace(ajaxUrl.substring(0, ajaxUrl.indexOf(",")), newInputBoxId);
new ajaxAutoCompleter(ajaxUrl, showDescription, defaultMinLength, defaultDelay, formName);
}
var positioning = null;
if (position == "topleft") {
positioning = ['left', 'top'];
} else if (position == "topcenter") {
positioning = ['center', 'top'];
} else if (position == "topright") {
positioning = ['right', 'top'];
} else if (position == "center") {
positioning = 'center';
} else if (position == "left") {
positioning = 'left';
} else if (position == "right") {
positioning = 'right';
} else {
positioning = ['left', 'top'];
}
var lookupFormAction = null;
function lookup_onKeyEnter(event) {
if (event.which == 13) {
lookupFormAjaxRequest(lookupFormAction, "form_" + lookupId);
return false;
}
}
// Lookup Configuration
var dialogOpts = {
modal: (modal == "true") ? true : false,
bgiframe: true,
autoOpen: false,
height: (height != "") ? parseInt(height) : 500,
width: (width != "") ? parseInt(width) : 620,
position: positioning,
draggable: true,
resizeable: true,
open: function(event,ui) {
waitSpinnerShow();
jQuery("#" + lookupId).empty();
var queryArgs = "presentation=" + presentation;
if (typeof args == "object" && jQuery.isArray(args)) {
for (var i = 0; i < args.length; i++) {
queryArgs += "&parm" + i + "=" + jQuery(args[i]).val();
}
}
jQuery.ajax({
type: "post",
url: requestUrl,
data: queryArgs,
timeout: AJAX_REQUEST_TIMEOUT,
cache: false,
dataFilter: function(data, dataType) {
waitSpinnerHide();
return data;
},
success: function(data) {
jQuery("#" + lookupId).html(data);
lookupFormAction = jQuery("#" + lookupId + " form:first").attr("action");
modifySubmitButton(lookupId);
jQuery("#" + lookupId).bind("keypress", lookup_onKeyEnter);
// set up the window chaining
// if the ACTIVATED_LOOKUP var is set there have to be more than one lookup,
// before registrating the new lookup we store the id of the old lookup in the
// preLookup variable of the new lookup object. I.e. lookup_1 calls lookup_8, the lookup_8
// object need a reference to lookup_1, this reference is set here
var prevLookup = null
if (ACTIVATED_LOOKUP) {
prevLookup = GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).lookupId;
}
identifyLookup(lookupId);
if (prevLookup) {
GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).prevLookup = prevLookup;
}
},
error: function(xhr, reason, exception) {
if(exception != 'abort') {
alert("An error occurred while communicating with the server:\n\n\nreason=" + reason + "\n\nexception=" + exception);
}
location.reload(true);
},
});
},
close: function() {
jQuery("#" + lookupId).unbind("keypress", lookup_onKeyEnter);
waitSpinnerHide();
//when the window is closed the prev Lookup get the focus (if exists)
if (ACTIVATED_LOOKUP) {
var prevLookup = GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).prevLookup;
}
if (prevLookup) {
identifyLookup(prevLookup);
} else {
ACTIVATED_LOOKUP = null;
}
}
};
// init Dialog and register
// create an object with all Lookup Informationes that are needed
var dialogRef = jQuery("#" + lookupId).dialog(dialogOpts);
//setting up global variabels, for external access
this.inputBoxId = inputBox.id;
this.lookupId = lookupId;
this.formName = formName;
this.target = null;
this.presentation = presentation;
if (dialogOptionalTarget != null) {
this.target2 = null;
}
this.prevLookup = null;
this.dialogRef = dialogRef;
//write external settings in global window manager
GLOBAL_LOOKUP_REF.setReference(lookupId, this);
// bind click Event to Dialog button
jQuery("#" + lookupId + "_button").click(
function (){
jQuery("#" + lookupId).dialog("open");
jQuery("#" + lookupId).dialog(dialogOpts);
GLOBAL_LOOKUP_REF.getReference(lookupId).target = jQuery(dialogTarget);
if (dialogOptionalTarget != null) {
//the target2 have to be set here, because the input field is not created before
GLOBAL_LOOKUP_REF.getReference(lookupId).target2 = jQuery(dialogOptionalTarget);
}
return false;
}
);
// close the dialog when clicking outside the dialog area
jQuery(".ui-widget-overlay").live("click", function() {
if(!ACTIVATED_LOOKUP || lookupId==ACTIVATED_LOOKUP){
jQuery("#" + lookupId).dialog("close");
}
});
}
function FieldLookupCounter() {
this.refArr = {};
this.setReference = function (key, ref) {
//if key doesn't exist in the array and
for (itm in this.refArr) {
if (itm == key) {
prefix = key.substring(0, key.indexOf("_"));
key = prefix + "_" + key;
this.refArr[""+ key + ""] = ref;
return this.refArr[key];
}
}
this.refArr[""+ key + ""] = ref;
return this.refArr[key];
};
this.getReference = function (key) {
// when key does not exist return null?
return this.refArr[key] != null ? this.refArr[key] : null;
};
this.getLastReference = function () {
return (this.countFields() -1) + "_lookupId";
}
this.createNextKey = function () {
return this.countFields() + "_lookupId";
};
this.countFields = function () {
var count = 0;
jQuery.each(this.refArr, function (itm) {count++;});
return count;
};
this.removeReference = function (key) {
// deletes the Array entry (doesn't effect the array length)
delete this.refArr[key];
};
};
var GLOBAL_LOOKUP_REF = new FieldLookupCounter;
/**
* returns true if a String is empty
* @param value - String value
* @return
*/
function isEmpty(value) {
if (value == null || value == "") {
return true;
}
return false;
}
function identifyLookup (newAl) {
if (ACTIVATED_LOOKUP != newAl) {
ACTIVATED_LOOKUP = newAl;
}
}
//global expand/col button var
var COLLAPSE = 1999;
function getNextCollapseSeq() {
COLLAPSE++;
return COLLAPSE;
}
//modify expande/collapse button
function modifyCollapseable(lookupDiv){
if (!lookupDiv) {
return;
}
var slTitleBars = jQuery("#" + lookupDiv + " .screenlet-title-bar");
//jQuery("#" + lookupDiv + " li.expanded");
jQuery.each(slTitleBars, function(i) {
var slTitleBar = slTitleBars[i];
var ul = slTitleBar.firstChild;
if ((typeof ul) != 'object') {
return true;
}
var childElements = ul.childNodes;
for (j in childElements) {
if (childElements[j].className == 'expanded' || childElements[j].className == 'collapsed') {
break;
}
}
getNextCollapseSeq();
var childEle = childElements[j].firstChild;
childEle.setAttribute('onclick', "javascript:toggleScreenlet(this, 'lec" + COLLAPSE +"', 'true', 'Expand', 'Collapse');");
childEle.href = "javascript:void(0);"
jQuery(slTitleBar).next('div').attr('id', 'lec' + COLLAPSE);
});
}
function modifySubmitButton (lookupDiv) {
/* changes form/submit behavior for Lookup Layer */
if (lookupDiv) {
modifyCollapseable(lookupDiv);
//find the lookup form and input button
var lookupForm = jQuery("#" + lookupDiv + " form:first");
//set new form name and id
oldFormName = lookupForm.attr("name");
lookupForm.attr("name", "form_" + lookupDiv);
lookupForm.attr("id", "form_" + lookupDiv);
lookupForm = jQuery("#form_" + lookupDiv);
//set new links for lookups
var newLookups = jQuery("#" + lookupDiv + " .field-lookup");
var formAction = lookupForm.attr("action");
// remove the form action
lookupForm.attr("action", "");
var input = jQuery("#" + lookupDiv + " input[type=submit]").css({display: "block"});
// remove the original input button and replace with a new one
var txt = input.attr("value");
(input.parent()).append(jQuery("<button/>", {
id: "lookupSubmitButton",
href: "javascript:void(0);",
click: function () {
lookupFormAjaxRequest(formAction, lookupForm.attr("id"));
return false;
},
text: txt
}));
input.remove();
//modify nav-pager
var navPagers = jQuery("#" + lookupDiv + " .nav-pager a");
jQuery.each(navPagers, function(navPager) {
jQuery(navPagers[navPager]).attr("href", "javascript:lookupPaginationAjaxRequest('" + encodeURI(jQuery(navPagers[navPager]).attr("href")) + "','link')");
});
var navPagersSelect = jQuery("#" + lookupDiv + " .nav-pager select");
jQuery.each(navPagersSelect, function(navPager) {
// that's quite weird maybe someone have a better idea ... that's where the magic happens
try {
var oc = jQuery(navPagersSelect[navPager]).attr("onchange");
if((typeof oc) == "function"){ // IE6/7 Fix
oc = oc.toString();
var ocSub = oc.substring((oc.indexOf('=') + 3),(oc.length - 4));
// define search pattern we must seperate between IE and Other Browser
var searchPattern = /" \+ this.value \+ "/g;
var searchPattern_IE = /'\+this.value\+'/g;
var searchPattern2 = /" \+ this.valu/g;
var searchPattern2_IE = /'\+this.valu/g;
if (searchPattern.test(ocSub)) {
var viewSize = navPagersSelect[navPager].value;
var spl = ocSub.split(searchPattern);
navPagersSelect[navPager].onchange = function () {
lookupPaginationAjaxRequest(spl[0] + this.value + spl[1],'select');
};
} else if (searchPattern_IE.test(ocSub)) {
var viewSize = navPagersSelect[navPager].value;
var spl = ocSub.split(searchPattern_IE);
navPagersSelect[navPager].onchange = function () {
lookupPaginationAjaxRequest("/" + spl[0] + this.value + spl[1],'select');
};
} else if (searchPattern2.test(ocSub)) {
ocSub = ocSub.replace(searchPattern2, "");
if (searchPattern.test(ocSub)) {
ocSub.replace(searchPattern, viewSize);
}
navPagersSelect[navPager].onchange = function () {
lookupPaginationAjaxRequest(ocSub + this.value,'select');
};
} else if (searchPattern2_IE.test(ocSub)) {
ocSub = ocSub.replace(searchPattern2_IE, "");
if (searchPattern_IE.test(ocSub)) {
ocSub.replace(searchPattern_IE, viewSize);
}
navPagersSelect[navPager].onchange = function () {
lookupPaginationAjaxRequest("/" + ocSub + this.value,'select');
};
}
} else {
var ocSub = oc.substring((oc.indexOf('=') + 1),(oc.length - 1));
navPagersSelect[navPager].setAttribute("onchange", "lookupPaginationAjaxRequest(" + ocSub + ",'')");
}
if (resultTable == null) {
return;
}
resultTable = resultTable.childElements()[0];
var resultElements = resultTable.childElements();
for (i in resultElements) {
var childElements = resultElements[i].childElements();
if (childElements.size() == 1) {
continue;
}
for (k = 1; k < childElements.size(); k++) {
var cell = childElements[k];
var cellChild = null;
cellChild = cell.childElements();
if (cellChild.size() > 0) {
for (l in cellChild) {
var cellElement = cellChild[l];
if (cellElement.tagName == 'A') {
var link = cellElement.href;
var liSub = link.substring(link.lastIndexOf('/')+1,(link.length));
if (liSub.indexOf("javascript:set_") != -1) {
cellElement.href = link;
} else {
cellElement.href = "javascript:lookupAjaxRequest('" + liSub + "&presentation=layer')";
}
}
}
}
}
}
}
catch (ex) {
}
});
// modify links in result table ...
var resultTable= jQuery("#" + lookupDiv + " #search-results table:first tbody");
var tableChildren = resultTable.children();
jQuery.each(tableChildren, function(tableChild){
var childElements = jQuery(tableChildren[tableChild]);
var tableRow = childElements.children();
jQuery.each(tableRow, function(cell){
var cellChild = null;
cellChild = jQuery(tableRow[cell]).children();
jQuery.each(cellChild, function (child) {
if (cellChild[child].tagName == "A"){
var link = cellChild[child].href;
var liSub = link.substring(link.lastIndexOf('/')+1,(link.length));
if (liSub.indexOf("javascript:set_") != -1) {
cellChild[child].href = link;
} else {
cellChild[child].href = "javascript:lookupAjaxRequest('" + liSub + "&presentation=layer')";
}
}
});
});
});
}
}
/**
* Create an ajax Request
*/
function lookupAjaxRequest(request) {
// get request arguments
var arg = request.substring(request.indexOf('?')+1,(request.length));
request = request.substring(0, request.indexOf('?'));
lookupId = GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).lookupId;
jQuery("#" + lookupId).load(request, arg, function(data) {
modifySubmitButton(lookupId);
});
}
/**
* Create an ajax request to get the search results
* @param formAction - action target
* @param form - formId
* @return
*/
function lookupFormAjaxRequest(formAction, form) {
lookupId = GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).lookupId;
var data = jQuery("#" + form).serialize();
data = data + "&presentation=" + GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).presentation;
/*jQuery("#" + lookupId).load(formAction, data, function(data) {
modifySubmitButton(lookupId);
});*/
var screenletTitleBar= jQuery("#"+lookupId+" .screenlet-title-bar :visible:first");
jQuery.ajax({
url: formAction,
type: "POST",
data: data,
beforeSend: function(jqXHR, settings) {
//Here we append the spinner to the lookup screenlet and it will shown till the ajax request is processed.
var indicator = screenletTitleBar.find("span.indicator");
//Check that if spinner is already in execution then don't add new spinner
if (indicator.length == 0) {
jQuery("<span class='indicator'><img src='/images/ajax-loader.gif' alt='' /></span>").appendTo(screenletTitleBar);
}
},
success: function(result) {
if (result.search(/loginform/) != -1) {
window.location.href = window.location.href;
return;
}
// Here we are removing the spinner.
var indicator = screenletTitleBar.find("span.indicator");
if (indicator != undefined) {
jQuery("span.indicator").remove();
}
jQuery("#" + lookupId).html(result);
modifySubmitButton(lookupId);
}
});
}
function lookupPaginationAjaxRequest(navAction, type) {
lookupDiv = (GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).divRef);
lookupContent = (GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).contentRef);
lookupId = GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).lookupId;
/*jQuery("#" + lookupId).load(navAction, function(data) {
modifySubmitButton(lookupId);
});*/
var screenletTitleBar= jQuery("#"+lookupId+" .screenlet-title-bar :visible:first");
jQuery.ajax({
url: navAction,
beforeSend: function(jqXHR, settings) {
//Here we append the spinner to the lookup screenlet and it will shown till the ajax request is processed.
var indicator = screenletTitleBar.find("span.indicator");
//Check that if spinner is already in execution then don't add new spinner
if (indicator.length == 0) {
jQuery("<span class='indicator'><img src='/images/ajax-loader.gif' alt='' /></span>").appendTo(screenletTitleBar);
}
},
success: function(result) {
if (result.search(/loginform/) != -1) {
window.location.href = window.location.href;
return;
}
// Here we are removing the spinner.
var indicator = screenletTitleBar.find("span.indicator");
if (indicator != undefined) {
jQuery("span.indicator").remove();
}
jQuery("#" + lookupId).html(result);
modifySubmitButton(lookupId);
}
});
}
/*******************************************************************************************************
* This code inserts the value lookedup by a popup window back into the associated form element
*******************************************************************************************************/
var re_id = new RegExp('id=(\\d+)');
var num_id = (re_id.exec(String(window.location)) ? new Number(RegExp.$1) : 0);
var obj_caller = (window.opener && window.opener.lookups? window.opener.lookups[num_id]: null);
if (obj_caller == null && window.opener != null) {
obj_caller = window.opener;
} else if (obj_caller == null && window.opener == null) {
obj_caller = parent;
}
function setSourceColor(src) {
if (target && target != null) {
src.css("background-color", "yellow");
}
}
// function passing selected value to calling window, using only in the TimeDuration case
function set_duration_value (value) {
if(GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP)){
obj_caller.target = GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).target;
}
else {
obj_caller.target = jQuery(obj_caller.targetW);
}
var target = obj_caller.target;
write_value(value, target);
closeLookup();
}
// function passing selected value to calling window
function set_value (value) {
if(GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP)){
obj_caller.target = GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).target;
}
else {
obj_caller.target = jQuery(obj_caller.targetW);
}
var target = obj_caller.target;
write_value(value, target);
closeLookup();
}
// function passing selected value to calling window
function set_values (value, value2) {
if(GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP)){
obj_caller.target = GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).target;
obj_caller.target2 = GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).target2;
}
else {
obj_caller.target = jQuery(obj_caller.targetW);
}
var target = obj_caller.target;
var target2 = obj_caller.target2;
write_value(value, target);
write_value(value2, target2)
if (SHOW_DESCRIPTION) setLookDescription(target.attr("id"), value + " " + value2, "", "", SHOW_DESCRIPTION);
closeLookup();
}
function write_value (value, target) {
if (target && target != null) {
setSourceColor(target);
target.val(value);
target.trigger("lookup:changed");
}
}
function set_multivalues(value) {
obj_caller.target.value = value;
field = jQuery("#" + target.attr('id')); // TODO: Not tested (should be ok)we need to fix 1st the window lookup (see OFBIZ-3933)
field.trigger("lookup:changed"); // If we decide to keep it (only used in Example, though it's needed also for Themes and Languages but not the same way)
if (field.change != null) {
field.click().change()
}
var thisForm = obj_caller.target.form;
var evalString = "";
if (arguments.length > 2) {
for (var i = 1; i < arguments.length; i = i + 2) {
evalString = "setSourceColor(thisForm." + arguments[i] + ")";
eval(evalString);
evalString = "thisForm." + arguments[i] + ".value='" + arguments[i + 1] + "'";
eval(evalString);
}
}
closeLookup();
}
//close the window after passing the value
function closeLookup() {
if (window.opener != null && GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP) == null) {
window.close();
} else {
obj = GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).lookupId;
jQuery("#" + obj).dialog("close");
}
}
//load description for lookup fields
var lookupDescriptionLoaded = function(fieldId, url, params, formName) {
this.init(fieldId, url, params, formName);
}
lookupDescriptionLoaded.prototype.init = function (fieldId, url, params, formName) {
this.fieldId = fieldId;
this.url = url;
this.params = params;
this.formName = formName;
}
lookupDescriptionLoaded.prototype.update = function (){
var tooltipElement = jQuery("#" + this.fieldId + '_lookupDescription');
if (tooltipElement.length) {//first remove current description
tooltipElement.remove();
}
//actual server call
var fieldName = this.params.substring(this.params.indexOf("searchValueFieldName"));
fieldName = fieldName.substring(fieldName.indexOf("=") + 1);
if (jQuery("input[name=" + fieldName + "]").val()) {
var fieldSerialized = jQuery("input[name=" + fieldName + "]", jQuery("form[name=" + this.formName + "]")).serialize();
this.allParams = this.params + '&' + fieldSerialized + '&' + 'searchType=EQUALS';
_fieldId = this.fieldId;
jQuery.ajax({
url: this.url,
type: "POST",
data: this.allParams,
async: false,
success: function(result){
// This would be far more reliable if we were removing the widget boundaries in LookupDecorator using widgetVerbose in context :/
if (result.split("ajaxAutocompleteOptions.ftl -->")[1]) {
setLookDescription(_fieldId, result.split("ajaxAutocompleteOptions.ftl -->")[1].trim().split("<!--")[0].trim(), "", "");
}
}
});
}
}
if(typeof String.prototype.trim !== 'function') { // Needed because IE8 does not implement trim yet
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, '');
}
}