You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by er...@apache.org on 2012/07/02 13:03:02 UTC

svn commit: r1356181 [5/8] - in /ofbiz/branches/20120329_portletWidget: ./ applications/accounting/ applications/accounting/data/ applications/accounting/script/org/ofbiz/accounting/payment/ applications/accounting/src/org/ofbiz/accounting/payment/ app...

Modified: ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/fieldlookup.js
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/fieldlookup.js?rev=1356181&r1=1356180&r2=1356181&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/fieldlookup.js (original)
+++ ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/fieldlookup.js Mon Jul  2 11:02:34 2012
@@ -1,842 +1,878 @@
 /*
-* 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;
+ * 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.
+ */
 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 COLLAPSE_SEQUENCE_NUMBER = 1999;
 
 var target = null;
 var target2 = null;
 var targetW = null;
-var lookups =[];
+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 getViewNameWithSeparator(view_name) {
+	var sep = "?";
+	if (view_name.indexOf("?") >= 0) {
+		sep = "&";
+	}
+	return view_name + sep;
 }
 
-function call_fieldlookup2(target, viewName, presentation) {
-    var fieldLookup = new fieldLookup1(target, arguments, presentation);
-    fieldLookup.popup2(viewName);
+function lookup_error(str_message) {
+	var CommonErrorMessage2 = getJSONuiLabel("CommonUiLabels", "CommonErrorMessage2");
+	showErrorAlert(CommonErrorMessage2, str_message);
 }
 
-function call_fieldlookup3(target, target2, viewName, presentation) {
-    var fieldLookup = new fieldLookup2(target, target2, arguments, presentation);
-    fieldLookup.popup2(viewName);
+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) {
+			var i;
+			for (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 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;
+	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;
-    
+	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 call_fieldlookup3(target, target2, viewName, presentation) {
+	var fieldLookup = new fieldLookup2(target, target2, arguments, presentation);
+	fieldLookup.popup2(viewName);
 }
-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 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 lookup_error(str_message) {
-    var CommonErrorMessage2 = getJSONuiLabel("CommonUiLabels", "CommonErrorMessage2");
-    showErrorAlert(CommonErrorMessage2, str_message);
-    return null;
+
+function call_fieldlookup2(target, viewName, presentation) {
+	var fieldLookup = new fieldLookup1(target, arguments, presentation);
+	fieldLookup.popup2(viewName);
 }
 
-function getViewNameWithSeparator(view_name) {
-    var sep = "?";
-    if (view_name.indexOf("?") >= 0) {
-        sep = "&";
-    }
-    return view_name + sep;
+function CollapsePanel(link, areaId) {
+	var container, liElement;
+
+	container = jQuery(areaId);
+	liElement = jQuery(link).up('li');
+
+	liElement.removeClassName('expanded');
+	liElement.addClassName('collapsed');
+	Effect.toggle(container, 'appear');
 }
 
 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');
+	if ((!LOOKUP_DIV) || (INITIALLY_COLLAPSED != "true")) {
+		return;
+	}
+
+	var i, j, childEle, childElements, ul, slTitleBar, slTitleBars = LOOKUP_DIV.getElementsByClassName('screenlet-title-bar');
+	for (i in slTitleBars) {
+		slTitleBar = slTitleBars[i];
+		ul = slTitleBar.firstChild;
+		if ((typeof ul) != 'object') {
+			continue;
+		}
+
+		childElements = ul.childNodes;
+		for (j in childElements) {
+			if (childElements[j].className === 'expanded' || childElements[j].className === 'collapsed') {
+				break;
+			}
+		}
+
+		childEle = childElements[j].firstChild;
+		new CollapsePanel(childEle, 'lec' + COLLAPSE_SEQUENCE_NUMBER);
+		break;
+	}
 }
 
 function initiallyCollapseDelayed() {
-    setTimeout("initiallyCollapse()", 400);
+	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];
-    };
-    
+/*******************************************************************************
+ * Lookup Object
+ ******************************************************************************/
+var Lookup = function(options) {
+	var _newInputBoxId, _lookupId, _inputBox, _lookupContainer, _backgroundCloseClickEvent;
+
+	options = {
+		requestUrl : options.requestUrl || "",
+		inputFieldId : options.inputFieldId || "",
+		dialogTarget : options.dialogTarget || "",
+		dialogOptionalTarget : options.dialogOptionalTarget || "",
+		formName : options.formName || "",
+		width : options.width || "620",
+		height : options.height || "500",
+		position : options.position || "topleft",
+		modal : options.modal || "true",
+		ajaxUrl : options.ajaxUrl || "",
+		showDescription : options.showDescription || "",
+		presentation : options.presentation || "layer",
+		defaultMinLength : options.defaultMinLength || "",
+		defaultDelay : options.defaultDelay || "",
+		args : options.args || ""
+	}
+
+	function _init() {
+		_lookupId = GLOBAL_LOOKUP_REF.createNextKey();
+		_modifyContainer();
+		_createAjaxAutoComplete();
+
+		_lookupContainer = jQuery("#" + _lookupId);
+		var dialogOpts = _createDialogOptions(_lookupContainer);
+
+		// init Dialog and register
+		// create an object with all Lookup Informationes that are needed
+		var dialogRef = _lookupContainer.dialog(dialogOpts);
+
+		// setting up global variabels, for external access
+		this.inputBoxId = _inputBox.id;
+		this.lookupId = _lookupId;
+		this.formName = options.formName;
+		this.target = null;
+		this.presentation = options.presentation;
+		if (options.dialogOptionalTarget != null) {
+			this.target2 = null;
+		}
+		this.prevLookup = null;
+		this.dialogRef = dialogRef;
+
+		// write external settings in global window manager
+		GLOBAL_LOOKUP_REF.setReference(_lookupId, this);
+
+		_addOpenEvent(dialogRef);
+	}
+
+	function _modifyContainer() {
+		_inputBox = document.getElementById(options.inputFieldId);
+		_newInputBoxId = _lookupId + "_" + options.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);
+	}
+
+	function _createAjaxAutoComplete() {
+		if (options.ajaxUrl != "" && options.showDescription != "") {
+			SHOW_DESCRIPTION = options.showDescription;
+			// write the new input box id in the ajaxUrl Array
+			options.ajaxUrl = options.ajaxUrl.replace(options.ajaxUrl.substring(0, options.ajaxUrl.indexOf(",")), _newInputBoxId);
+			new ajaxAutoCompleter(options.ajaxUrl, options.showDescription, options.defaultMinLength, options.defaultDelay,
+					options.formName);
+		}
+	}
+
+	function _createDialogOptions(_lookupContainer) {
+		var positioning = _positioning();
+
+		var dialogOpts = {
+			modal : (options.modal == "true") ? true : false,
+			bgiframe : true,
+			autoOpen : false,
+			height : parseInt(options.height),
+			width : parseInt(options.width),
+			position : positioning,
+			draggable : true,
+			resizeable : true,
+			open : _dialogOpen,
+			close : _dialogClose
+		};
+
+		return dialogOpts;
+	}
+
+	function _positioning() {
+		var positioning = null;
+		if (options.position == "topleft") {
+			positioning = [ 'left', 'top' ];
+		} else if (options.position == "topcenter") {
+			positioning = [ 'center', 'top' ];
+		} else if (options.position == "topright") {
+			positioning = [ 'right', 'top' ];
+		} else if (options.position == "center") {
+			positioning = 'center';
+		} else if (options.position == "left") {
+			positioning = 'left';
+		} else if (options.position == "right") {
+			positioning = 'right';
+		} else {
+			positioning = [ 'left', 'top' ];
+		}
+
+		return positioning;
+	}
+
+	function _dialogOpen(event, ui) {
+		waitSpinnerShow();
+		_lookupContainer.empty();
+
+		var queryArgs = "presentation=" + options.presentation;
+		if (typeof options.args == "object" && jQuery.isArray(options.args)) {
+			for ( var i = 0; i < options.args.length; i++) {
+				queryArgs += "&parm" + i + "=" + jQuery(options.args[i]).val();
+			}
+		}
+
+		_lookupChaining();
+		_addCloseEventForClickingOnBackgroundLayer();
+
+		// load lookup data from server
+		jQuery.ajax({
+			type : "POST",
+			url : options.requestUrl,
+			data : queryArgs,
+			timeout : AJAX_REQUEST_TIMEOUT,
+			cache : false,
+			dataFilter : function(data, dataType) {
+				waitSpinnerHide();
+				return data;
+			},
+
+			success : function(data) {
+				_lookupContainer.html(data);
+				new ButtonModifier(_lookupId).modifyLookupLinks();
+			},
+
+			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);
+			}
+		});
+	}
+
+	function _lookupChaining() {
+		/*
+		 * 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 = ACTIVATED_LOOKUP;
+		}
+
+		_activateLookup(_lookupId);
+
+		GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).prevLookup = prevLookup;
+	}
+
+	function _activateLookup(newAl) {
+		if (ACTIVATED_LOOKUP != newAl) {
+			ACTIVATED_LOOKUP = newAl;
+		}
+	}
+
+	function _addCloseEventForClickingOnBackgroundLayer() {
+		_backgroundCloseClickEvent = function() {
+			if (ACTIVATED_LOOKUP && ACTIVATED_LOOKUP == _lookupId) {
+				GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).dialogRef.dialog("close");
+			}
+		}
+
+		jQuery(".ui-widget-overlay").click(_backgroundCloseClickEvent);
+	}
+
+	function _dialogClose() {
+		jQuery(".ui-widget-overlay").unbind("click", _backgroundCloseClickEvent)
+
+		var prevLookup = null;
+		if (ACTIVATED_LOOKUP) {
+			prevLookup = GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).prevLookup;
+		}
+
+		if (prevLookup) {
+			_activateLookup(prevLookup);
+		} else {
+			ACTIVATED_LOOKUP = null;
+		}
+	}
+
+	function _addOpenEvent(dialogReference) {
+		jQuery("#" + _lookupId + "_button").click(function() {
+			dialogReference.dialog("open");
+
+			GLOBAL_LOOKUP_REF.getReference(_lookupId).target = jQuery(options.dialogTarget);
+			if (options.dialogOptionalTarget != null) {
+				GLOBAL_LOOKUP_REF.getReference(_lookupId).target2 = jQuery(options.dialogOptionalTarget);
+			}
+		});
+
+	}
+
+	return {
+		init : _init
+	}
 };
-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')";
-                        }
-                    }
-                });
+/*******************************************************************************
+ * Lookup Counter Object
+ ******************************************************************************/
+var FieldLookupCounter = function() {
+	this.refArr = {};
+
+	this.setReference = function(key, ref) {
+		// if key doesn't exist in the array and
+		var itm;
+		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;
 
-        });
-    }
-}
-/**
- * Create an ajax Request
- */
+/*******************************************************************************
+ * Button Modifier Object
+ ******************************************************************************/
+var ButtonModifier = function(lookupDiv) {
+
+	function _modifyLookupLinks() {
+		if (!lookupDiv) {
+			return;
+		}
+
+		_modifyCollapseable();
+
+		_modifySubmitButton();
+
+		_modifyPagination();
+
+		_modifyResultTable();
+	}
+
+	function _modifyCollapseable() {
+
+		var slTitleBars = jQuery("#" + lookupDiv + " .screenlet-title-bar");
+
+		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_SEQUENCE_NUMBER
+					+ "', 'true', 'Expand', 'Collapse');");
+			childEle.href = "javascript:void(0);"
+			jQuery(slTitleBar).next('div').attr('id', 'lec' + COLLAPSE_SEQUENCE_NUMBER);
+
+		});
+	}
+
+	function _getNextCollapseSeq() {
+		COLLAPSE_SEQUENCE_NUMBER++;
+		return COLLAPSE_SEQUENCE_NUMBER;
+	}
+
+	function _modifySubmitButton() {
+		var lookupForm = jQuery("#" + lookupDiv + " form:first");
+
+		// set new form name and id
+		var 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();
+	}
+
+	function _modifyPagination() {
+		// 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) {
+			var onChangeEvent = jQuery(navPagersSelect[navPager]).attr("onchange");
+			if ((typeof onChangeEvent) == "function") { // IE6/7 Fix
+				onChangeEvent = onChangeEvent.toString();
+				var ocSub = onChangeEvent.substring((onChangeEvent.indexOf('=') + 3), (onChangeEvent.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 = onChangeEvent.substring((onChangeEvent.indexOf('=') + 1), (onChangeEvent.length - 1));
+				navPagersSelect[navPager].setAttribute("onchange", "lookupPaginationAjaxRequest(" + ocSub + ",'')");
+			}
+		});
+	}
+
+	function _modifyResultTable() {
+		var resultTable = jQuery("#" + lookupDiv + " #search-results table:first tbody");
+		var tableChilds = resultTable.children();
+
+		jQuery.each(tableChilds, function(tableChild) {
+			var childElements = jQuery(tableChilds[tableChild]);
+			var tableRows = childElements.children();
+
+			jQuery.each(tableRows, function(cell) {
+				var cellChilds = jQuery(tableRows[cell]).children();
+
+				jQuery.each(cellChilds, function(child) {
+					if (cellChilds[child].tagName == "A") {
+						var link = cellChilds[child].href;
+						var liSub = link.substring(link.lastIndexOf('/') + 1, (link.length));
+						if (liSub.indexOf("javascript:set_") != -1) {
+							cellChilds[child].href = link;
+						} else {
+							cellChilds[child].href = "javascript:lookupAjaxRequest('" + liSub + "&presentation=layer')";
+						}
+					}
+				});
+
+			});
+
+		});
+	}
+
+	return {
+		modifyLookupLinks : _modifyLookupLinks
+	}
+}
+
+/*******************************************************************************
+ * Ajax Request Helper
+ ******************************************************************************/
 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);
-    });
+	// 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) {
+		new ButtonModifier(lookupId).modifyLookupLinks();
+	});
 }
 
-/**
-* 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,
-      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);
-      }
-    });
+	var lookupId = GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).lookupId;
+	var data = jQuery("#" + form).serialize();
+	data = data + "&presentation=" + GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).presentation;
+
+	var screenletTitleBar = jQuery("#" + lookupId + " .screenlet-title-bar :visible:first");
+	jQuery.ajax({
+		url : formAction,
+		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);
+			new ButtonModifier(lookupId).modifyLookupLinks();
+		}
+	});
 }
 
 function lookupPaginationAjaxRequest(navAction, type) {
-    lookupDiv = (GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).divRef);
-    lookupContent = (GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).contentRef);
+	var lookupDiv = (GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).divRef);
+	var 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 lookupId = GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).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);
+			new ButtonModifier(lookupId).modifyLookupLinks();
+		}
+	});
+}
+
+/*******************************************************************************
+ * 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[num_id]: null);
+var num_id = (re_id.exec(String(window.location)) ? new Number(RegExp.$1) : 0);
+var obj_caller = (window.opener ? window.opener.lookups[num_id] : null);
 if (obj_caller == null && window.opener != null) {
-    obj_caller = window.opener;
+	obj_caller = window.opener;
 } else if (obj_caller == null && window.opener == null) {
-    obj_caller = parent;
+	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;
+	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();
+	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);
+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();
+	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_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();
+	obj_caller.target.value = value;
+	field = jQuery("#" + target.attr('id'));
+	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
+// 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");
-    }
+	if (window.opener != null && GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP) == null) {
+		window.close();
+	} else {
+		var lookupId = GLOBAL_LOOKUP_REF.getReference(ACTIVATED_LOOKUP).lookupId;
+		jQuery("#" + lookupId).dialog("close");
+	}
 }
 
-//load description for lookup fields 
+/*******************************************************************************
+ * Lookup Description Helper
+ ******************************************************************************/
+// load description for lookup fields
 var lookupDescriptionLoaded = function(fieldId, url, params, formName) {
-  this.init(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, ''); 
-  }
+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();
+	}
+
+	var indexOf = this.params.indexOf("searchValueFieldName");
+	if (indexOf == -1) {
+		return;
+	}
+
+	// actual server call
+	var fieldName = this.params.substring(indexOf);
+	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';
+		var _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(),
+									"", "");
+						}
+					}
+				});
+	}
+}
+
+// Needed because IE8 does not implement trim yet
+if (typeof String.prototype.trim !== 'function') {
+	String.prototype.trim = function() {
+		return this.replace(/^\s+|\s+$/g, '');
+	}
 }
\ No newline at end of file

Modified: ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/selectall.js
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/selectall.js?rev=1356181&r1=1356180&r2=1356181&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/selectall.js (original)
+++ ofbiz/branches/20120329_portletWidget/framework/images/webapp/images/selectall.js Mon Jul  2 11:02:34 2012
@@ -327,7 +327,7 @@ function ajaxUpdateAreaPeriodic(areaId, 
                 },
                 error: function(data) {waitSpinnerHide()}
             });
-            
+
         }
     });
 }
@@ -434,19 +434,19 @@ function ajaxSubmitFormUpdateAreas(form,
 function ajaxAutoCompleter(areaCsvString, showDescription, defaultMinLength, defaultDelay, formName){
     var areaArray = areaCsvString.replace(/&amp;/g, '&').split(",");
     var numAreas = parseInt(areaArray.length / 3);
-    
+
     for (var i = 0; i < numAreas * 3; i = i + 3) {
         var initUrl = areaArray[i + 1];
         if (initUrl.indexOf("?") > -1)
             var url = initUrl + "&" + areaArray[i + 2];
-        else 
+        else
             var url = initUrl + "?" + areaArray[i + 2];
         var div = areaArray[i];
         // create a separated div where the result JSON Opbject will be placed
         if ((jQuery("#" + div + "_auto")).length < 1) {
             jQuery("<div id='" + div + "_auto'></div>").insertBefore("#" + areaArray[i]);
         }
-        
+
         jQuery("#" + div).autocomplete({
             minLength: defaultMinLength,
             delay: defaultDelay,
@@ -483,13 +483,13 @@ function ajaxAutoCompleter(areaCsvString
                         if(exception != 'abort') {
                             alert("An error occurred while communicating with the server:\n\n\nreason=" + reason + "\n\nexception=" + exception);
                         }
-                    },
+                    }
                 });
             },
             select: function(event, ui){
                 //jQuery("#" + areaArray[0]).html(ui.item);
-                jQuery("#" + areaArray[0]).val(ui.item.value); // setting a text field   
-                if (showDescription && (ui.item.value != undefined && ui.item.value != '')) { 
+                jQuery("#" + areaArray[0]).val(ui.item.value); // setting a text field
+                if (showDescription && (ui.item.value != undefined && ui.item.value != '')) {
                     setLookDescription(areaArray[0], ui.item.label, areaArray[2], formName, showDescription)
                 }
             }
@@ -509,8 +509,8 @@ function setLookDescription(textFieldId,
         var start = description.lastIndexOf(' [');
         if (start != -1) {
             description = description.substring(0, start);
-            
-            // This sets a (possibly hidden) dependent field if a description-field-name is provided  
+
+            // This sets a (possibly hidden) dependent field if a description-field-name is provided
             var dependentField = params.substring(params.indexOf("searchValueFieldName"));
             dependentField = jQuery("#" + formName + "_" + dependentField.substring(dependentField.indexOf("=") + 1));
             var dependentFieldValue = description.substring(0, description.lastIndexOf(' '))
@@ -570,7 +570,7 @@ function ajaxAutoCompleteDropDown() {
                         }) );
                     },
                     select: function( event, ui ) {
-                        ui.item.option.selected = true;                        
+                        ui.item.option.selected = true;
                         //select.val( ui.item.option.value );
                         self._trigger( "selected", event, {
                             item: ui.item.option
@@ -788,7 +788,7 @@ function submitFormEnableButton(button) 
 
 /**
  * Expands or collapses all groups of one portlet
- * 
+ *
  * @param bool <code>true</code> to expand, <code>false</code> otherwise
  * @param portalPortletId The id of the portlet
  */
@@ -803,7 +803,7 @@ function expandAllP(bool, portalPortletI
 
 /**
  * Expands or collapses all groups of the page
- * 
+ *
  * @param bool <code>true</code> to expand, <code>false</code> otherwise
  */
 function expandAll(bool) {
@@ -836,7 +836,7 @@ function waitSpinnerShow() {
     lookupTop = (scrollOffY + winHeight / 2) - (jSpinner.height() / 2);
 
     jSpinner.css("display", "block");
-    jSpinner.css("left", lookupLeft + "px"); 
+    jSpinner.css("left", lookupLeft + "px");
     jSpinner.css("top", lookupTop + "px");
     jSpinner.show();
 }

Modified: ofbiz/branches/20120329_portletWidget/framework/jetty/ofbiz-component.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/jetty/ofbiz-component.xml?rev=1356181&r1=1356180&r2=1356181&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/jetty/ofbiz-component.xml (original)
+++ ofbiz/branches/20120329_portletWidget/framework/jetty/ofbiz-component.xml Mon Jul  2 11:02:34 2012
@@ -24,4 +24,61 @@ under the License.
     <resource-loader name="main" type="component"/>
     <classpath type="jar" location="lib/*"/>
     <classpath type="jar" location="build/lib/*"/>
+
+    <container name="jetty-container" class="org.ofbiz.jetty.container.JettyContainer">
+        <property name="default-server" value="server">
+            <property name="send-server-version" value="false"/>
+            <!-- thread pool config -->
+            <property name="min-threads" value="5"/>
+            <property name="max-threads" value="100"/>
+            <property name="max-idle-time-ms" value="30000"/>
+            <property name="max-stop-time-ms" value="5000"/>
+            <!-- connectors -->
+            <!--
+            <property name="http-connector" value="connector">
+                <property name="type" value="http"/>
+                <property name="host" value="0.0.0.0"/>
+                <property name="port" value="8080"/>
+            </property>
+            <property name="https-connector" value="connector">
+                <property name="type" value="https"/>
+                <property name="host" value="0.0.0.0"/>
+                <property name="port" value="8443"/>
+                <property name="keystore" value="framework/base/config/ofbizssl.jks"/>
+                <property name="password" value="changeit"/>
+                <property name="key-password" value="changeit"/>
+                <property name="client-auth" value="false"/>
+            </property>
+            -->
+            <property name="nio-http-connector" value="connector">
+                <property name="type" value="nio-http"/>
+                <property name="host" value="0.0.0.0"/>
+                <property name="port" value="8080"/>
+            </property>
+            <property name="nio-https-connector" value="connector">
+                <property name="type" value="nio-https"/>
+                <property name="host" value="0.0.0.0"/>
+                <property name="port" value="8443"/>
+                <property name="keystore" value="framework/base/config/ofbizssl.jks"/>
+                <property name="password" value="changeit"/>
+                <property name="key-password" value="changeit"/>
+                <property name="client-auth" value="false"/>
+            </property>
+            <!--
+            <property name="ajp13-connector" value="connector">
+                <property name="type" value="ajp13"/>
+                <property name="host" value="0.0.0.0"/>
+                <property name="port" value="8009"/>
+            </property>
+            -->
+            <!-- request logs -->
+            <property name="request-log" value="request-log">
+                <property name="filename" value="runtime/logs/yyyy_mm_dd.request.log"/>
+                <property name="append" value="true"/>
+                <property name="extended" value="true"/>
+                <property name="timezone" value="GMT"/>
+                <property name="retain-days" value="90"/>
+            </property>
+        </property>
+    </container>
 </ofbiz-component>

Modified: ofbiz/branches/20120329_portletWidget/framework/jetty/src/org/ofbiz/jetty/container/JettyContainer.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/jetty/src/org/ofbiz/jetty/container/JettyContainer.java?rev=1356181&r1=1356180&r2=1356181&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/jetty/src/org/ofbiz/jetty/container/JettyContainer.java (original)
+++ ofbiz/branches/20120329_portletWidget/framework/jetty/src/org/ofbiz/jetty/container/JettyContainer.java Mon Jul  2 11:02:34 2012
@@ -58,13 +58,14 @@ public class JettyContainer implements C
 
     public static final String module = JettyContainer.class.getName();
 
+    private String name;
     private Map<String, Server> servers = new HashMap<String, Server>();
 
     /**
      * @see org.ofbiz.base.container.Container#init(java.lang.String[], java.lang.String)
      */
-    public void init(String[] args, String configFile) throws ContainerException {
-
+    public void init(String[] args, String name, String configFile) throws ContainerException {
+        this.name = name;
         // configure JSSE properties
         SSLUtil.loadJsseProperties();
 
@@ -77,7 +78,7 @@ public class JettyContainer implements C
         }
 
         // get the jetty container config
-        ContainerConfig.Container jettyContainerConfig = ContainerConfig.getContainer("jetty-container", configFile);
+        ContainerConfig.Container jettyContainerConfig = ContainerConfig.getContainer(name, configFile);
 
         // create the servers
         for (ContainerConfig.Container.Property serverConfig : jettyContainerConfig.getPropertiesWithValue("server")) {
@@ -376,4 +377,8 @@ public class JettyContainer implements C
         }
     }
 
+    public String getName() {
+        return name;
+    }
+
 }

Modified: ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/callops/CallScript.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/callops/CallScript.java?rev=1356181&r1=1356180&r2=1356181&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/callops/CallScript.java (original)
+++ ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/callops/CallScript.java Mon Jul  2 11:02:34 2012
@@ -22,7 +22,6 @@ import org.ofbiz.base.util.ScriptUtil;
 import org.ofbiz.base.util.Scriptlet;
 import org.ofbiz.base.util.StringUtil;
 import org.ofbiz.base.util.UtilXml;
-import org.ofbiz.base.util.string.FlexibleStringExpander;
 import org.ofbiz.minilang.MiniLangException;
 import org.ofbiz.minilang.MiniLangRuntimeException;
 import org.ofbiz.minilang.MiniLangUtil;
@@ -33,7 +32,9 @@ import org.ofbiz.minilang.method.MethodO
 import org.w3c.dom.Element;
 
 /**
- * Executes a script.
+ * Implements the &lt;script&gt; element.
+ * 
+ * @see <a href="https://cwiki.apache.org/OFBADMIN/mini-language-reference.html#Mini-languageReference-{{%3Cscript%3E}}">Mini-language Reference</a>
  */
 public final class CallScript extends MethodOperation {
 
@@ -70,17 +71,11 @@ public final class CallScript extends Me
         if (elementModified && MiniLangUtil.autoCorrectOn()) {
             MiniLangUtil.flagDocumentAsCorrected(element);
         }
-        String inlineScript = element.getAttribute("script");
-        if (inlineScript.length() == 0) {
-            inlineScript = UtilXml.elementValue(element);
-        }
-        if (inlineScript != null && MiniLangUtil.containsScript(inlineScript)) {
-            this.scriptlet = new Scriptlet(StringUtil.convertOperatorSubstitutions(inlineScript));
+        String scriptLocation = element.getAttribute("location");
+        if (scriptLocation.isEmpty()) {
             this.location = null;
             this.method = null;
         } else {
-            this.scriptlet = null;
-            String scriptLocation = element.getAttribute("location");
             int pos = scriptLocation.lastIndexOf("#");
             if (pos == -1) {
                 this.location = scriptLocation;
@@ -90,22 +85,32 @@ public final class CallScript extends Me
                 this.method = scriptLocation.substring(pos + 1);
             }
         }
+        String inlineScript = element.getAttribute("script");
+        if (inlineScript.isEmpty()) {
+            inlineScript = UtilXml.elementValue(element);
+        }
+        if (inlineScript != null && MiniLangUtil.containsScript(inlineScript)) {
+            this.scriptlet = new Scriptlet(StringUtil.convertOperatorSubstitutions(inlineScript));
+        } else {
+            this.scriptlet = null;
+        }
     }
 
     @Override
     public boolean exec(MethodContext methodContext) throws MiniLangException {
+        if (this.location != null) {
+            if (location.endsWith(".xml")) {
+                SimpleMethod.runSimpleMethod(location, method, methodContext);
+            } else {
+                ScriptUtil.executeScript(this.location, this.method, methodContext.getEnvMap());
+            }
+        }
         if (this.scriptlet != null) {
             try {
                 this.scriptlet.executeScript(methodContext.getEnvMap());
             } catch (Exception e) {
                 throw new MiniLangRuntimeException(e.getMessage(), this);
             }
-            return true;
-        }
-        if (location.endsWith(".xml")) {
-            SimpleMethod.runSimpleMethod(location, method, methodContext);
-        } else {
-            ScriptUtil.executeScript(this.location, this.method, methodContext.getEnvMap());
         }
         return true;
     }
@@ -123,25 +128,30 @@ public final class CallScript extends Me
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder("<script ");
-        if (this.location != null && this.location.length() > 0) {
+        if (this.location != null) {
             sb.append("location=\"").append(this.location);
-            if (this.method != null && this.method.length() > 0) {
+            if (this.method != null) {
                 sb.append("#").append(this.method);
             }
             sb.append("\" ");
         }
         if (this.scriptlet != null) {
-            sb.append("scriptlet=\"").append(this.scriptlet).append("\" ");
+            sb.append("script=\"").append(this.scriptlet).append("\" ");
         }
         sb.append("/>");
         return sb.toString();
     }
 
+    /**
+     * A factory for the &lt;script&gt; element.
+     */
     public static final class CallScriptFactory implements Factory<CallScript> {
+        @Override
         public CallScript createMethodOperation(Element element, SimpleMethod simpleMethod) throws MiniLangException {
             return new CallScript(element, simpleMethod);
         }
 
+        @Override
         public String getName() {
             return "script";
         }

Modified: ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/entityops/FindByAnd.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/entityops/FindByAnd.java?rev=1356181&r1=1356180&r2=1356181&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/entityops/FindByAnd.java (original)
+++ ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/entityops/FindByAnd.java Mon Jul  2 11:02:34 2012
@@ -18,10 +18,12 @@
  *******************************************************************************/
 package org.ofbiz.minilang.method.entityops;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
 import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.collections.FlexibleMapAccessor;
 import org.ofbiz.base.util.string.FlexibleStringExpander;
 import org.ofbiz.entity.Delegator;
@@ -38,6 +40,8 @@ import org.w3c.dom.Element;
 
 /**
  * Implements the &lt;find-by-and&gt; element.
+ * 
+ * @see <a href="https://cwiki.apache.org/OFBADMIN/mini-language-reference.html#Mini-languageReference-{{%3Cfindbyand%3E}}">Mini-language Reference</a>
  */
 public final class FindByAnd extends MethodOperation {
 
@@ -45,6 +49,7 @@ public final class FindByAnd extends Met
 
     private final FlexibleStringExpander delegatorNameFse;
     private final FlexibleStringExpander entityNameFse;
+    private final FlexibleMapAccessor<Collection<String>> fieldsToSelectListFma;
     private final FlexibleMapAccessor<Object> listFma;
     private final FlexibleMapAccessor<Map<String, ? extends Object>> mapFma;
     private final FlexibleMapAccessor<List<String>> orderByListFma;
@@ -54,15 +59,16 @@ public final class FindByAnd extends Met
     public FindByAnd(Element element, SimpleMethod simpleMethod) throws MiniLangException {
         super(element, simpleMethod);
         if (MiniLangValidate.validationOn()) {
-            MiniLangValidate.attributeNames(simpleMethod, element, "entity-name", "use-cache", "use-iterator", "list", "map", "order-by-list", "delegator-name");
+            MiniLangValidate.attributeNames(simpleMethod, element, "entity-name", "use-cache", "fields-to-select-list", "use-iterator", "list", "map", "order-by-list", "delegator-name");
             MiniLangValidate.requiredAttributes(simpleMethod, element, "entity-name", "list", "map");
-            MiniLangValidate.expressionAttributes(simpleMethod, element, "list", "map", "order-by-list");
+            MiniLangValidate.expressionAttributes(simpleMethod, element, "list", "map", "fields-to-select-list", "order-by-list");
             MiniLangValidate.noChildElements(simpleMethod, element);
         }
         entityNameFse = FlexibleStringExpander.getInstance(element.getAttribute("entity-name"));
         listFma = FlexibleMapAccessor.getInstance(element.getAttribute("list"));
         mapFma = FlexibleMapAccessor.getInstance(element.getAttribute("map"));
         orderByListFma = FlexibleMapAccessor.getInstance(element.getAttribute("order-by-list"));
+        fieldsToSelectListFma = FlexibleMapAccessor.getInstance(element.getAttribute("fields-to-select-list"));
         useCacheFse = FlexibleStringExpander.getInstance(element.getAttribute("use-cache"));
         useIteratorFse = FlexibleStringExpander.getInstance(element.getAttribute("use-iterator"));
         delegatorNameFse = FlexibleStringExpander.getInstance(element.getAttribute("delegator-name"));
@@ -75,19 +81,21 @@ public final class FindByAnd extends Met
         boolean useCache = "true".equals(useCacheFse.expandString(methodContext.getEnvMap()));
         boolean useIterator = "true".equals(useIteratorFse.expandString(methodContext.getEnvMap()));
         List<String> orderByNames = orderByListFma.get(methodContext.getEnvMap());
+        Collection<String> fieldsToSelectList = fieldsToSelectListFma.get(methodContext.getEnvMap());
         Delegator delegator = methodContext.getDelegator();
         if (!delegatorName.isEmpty()) {
             delegator = DelegatorFactory.getDelegator(delegatorName);
         }
         try {
+            EntityCondition whereCond = null;
+            Map<String, ? extends Object> fieldMap = mapFma.get(methodContext.getEnvMap());
+            if (fieldMap != null) {
+                whereCond = EntityCondition.makeCondition(fieldMap);
+            }
             if (useIterator) {
-                EntityCondition whereCond = null;
-                if (!mapFma.isEmpty()) {
-                    whereCond = EntityCondition.makeCondition(mapFma.get(methodContext.getEnvMap()));
-                }
-                listFma.put(methodContext.getEnvMap(), delegator.find(entityName, whereCond, null, null, orderByNames, null));
+                listFma.put(methodContext.getEnvMap(), delegator.find(entityName, whereCond, null, UtilMisc.toSet(fieldsToSelectList), orderByNames, null));
             } else {
-                listFma.put(methodContext.getEnvMap(), delegator.findByAnd(entityName, mapFma.get(methodContext.getEnvMap()), orderByNames, useCache));
+                listFma.put(methodContext.getEnvMap(), delegator.findList(entityName, whereCond, UtilMisc.toSet(fieldsToSelectList), orderByNames, null, useCache));
             }
         } catch (GenericEntityException e) {
             String errMsg = "Exception thrown while performing entity find: " + e.getMessage();
@@ -122,6 +130,9 @@ public final class FindByAnd extends Met
         if (!orderByListFma.isEmpty()) {
             sb.append("order-by-list=\"").append(this.orderByListFma).append("\" ");
         }
+        if (!fieldsToSelectListFma.isEmpty()) {
+            sb.append("fields-to-select-list=\"").append(this.fieldsToSelectListFma).append("\" ");
+        }
         if (!useCacheFse.isEmpty()) {
             sb.append("use-cache=\"").append(this.useCacheFse).append("\" ");
         }

Modified: ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/entityops/FindByPrimaryKey.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/entityops/FindByPrimaryKey.java?rev=1356181&r1=1356180&r2=1356181&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/entityops/FindByPrimaryKey.java (original)
+++ ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/entityops/FindByPrimaryKey.java Mon Jul  2 11:02:34 2012
@@ -41,6 +41,8 @@ import org.w3c.dom.Element;
 
 /**
  * Implements the &lt;find-by-primary-key&gt; element.
+ * 
+ * @see <a href="https://cwiki.apache.org/OFBADMIN/mini-language-reference.html#Mini-languageReference-{{%3Cfindbyprimarykey%3E}}">Mini-language Reference</a>
  */
 public final class FindByPrimaryKey extends MethodOperation {
 
@@ -92,7 +94,7 @@ public final class FindByPrimaryKey exte
         Collection<String> fieldsToSelectList = fieldsToSelectListFma.get(methodContext.getEnvMap());
         try {
             if (fieldsToSelectList != null) {
-                valueFma.put(methodContext.getEnvMap(), delegator.findByPrimaryKeyPartial(delegator.makePK(entityName, inMap), UtilMisc.makeSetWritable(fieldsToSelectList)));
+                valueFma.put(methodContext.getEnvMap(), delegator.findByPrimaryKeyPartial(delegator.makePK(entityName, inMap), UtilMisc.toSet(fieldsToSelectList)));
             } else {
                 valueFma.put(methodContext.getEnvMap(), delegator.findOne(entityName, inMap, useCache));
             }

Modified: ofbiz/branches/20120329_portletWidget/framework/resources/templates/AdminUserLoginData.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/resources/templates/AdminUserLoginData.xml?rev=1356181&r1=1356180&r2=1356181&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/resources/templates/AdminUserLoginData.xml (original)
+++ ofbiz/branches/20120329_portletWidget/framework/resources/templates/AdminUserLoginData.xml Mon Jul  2 11:02:34 2012
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <entity-engine-xml>
     <UserLogin userLoginId="@userLoginId@" currentPassword="{SHA}47ca69ebb4bdc9ae0adec130880165d2cc05db1a" requirePasswordChange="Y"/>
-    <UserLoginSecurityGroup groupId="FULLADMIN" userLoginId="@userLoginId@" fromDate="2001-01-01 12:00:00.0"/>
+    <UserLoginSecurityGroup groupId="SUPER" userLoginId="@userLoginId@" fromDate="2001-01-01 12:00:00.0"/>
 </entity-engine-xml>
\ No newline at end of file

Propchange: ofbiz/branches/20120329_portletWidget/framework/security/data/PasswordSecurityData.xml
------------------------------------------------------------------------------
  Merged /ofbiz/trunk/framework/security/data/PasswordSecurityData.xml:r1351867-1355999

Modified: ofbiz/branches/20120329_portletWidget/framework/security/ofbiz-component.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/security/ofbiz-component.xml?rev=1356181&r1=1356180&r2=1356181&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/security/ofbiz-component.xml (original)
+++ ofbiz/branches/20120329_portletWidget/framework/security/ofbiz-component.xml Mon Jul  2 11:02:34 2012
@@ -26,8 +26,8 @@ under the License.
     <classpath type="dir" location="dtd"/>
     <classpath type="jar" location="build/lib/*"/>
     <entity-resource type="model" reader-name="main" loader="main" location="entitydef/entitymodel.xml"/>
-    <entity-resource type="data" reader-name="security" loader="main" location="data/SecurityData.xml"/>
+    <entity-resource type="data" reader-name="seed" loader="main" location="data/SecurityPermissionSeedData.xml"/>
     <!-- NOTE: comment this line out to ensure no resetting of passwords -->
     <entity-resource type="data" reader-name="demo" loader="main" location="data/PasswordSecurityData.xml"/>
-    <entity-resource type="data" reader-name="demo" loader="main" location="data/SecurityDemoData.xml"/>
+    <entity-resource type="data" reader-name="demo" loader="main" location="data/SecurityGroupDemoData.xml"/>
 </ofbiz-component>

Modified: ofbiz/branches/20120329_portletWidget/framework/service/entitydef/entitymodel.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/service/entitydef/entitymodel.xml?rev=1356181&r1=1356180&r2=1356181&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/service/entitydef/entitymodel.xml (original)
+++ ofbiz/branches/20120329_portletWidget/framework/service/entitydef/entitymodel.xml Mon Jul  2 11:02:34 2012
@@ -51,6 +51,7 @@ under the License.
         <field name="serviceName" type="name"></field>
         <field name="loaderName" type="name"></field>
         <field name="maxRetry" type="numeric"></field>
+        <field name="currentRetryCount" type="numeric"></field>
         <field name="authUserLoginId" type="id-vlong"></field>
         <field name="runAsUser" type="id-vlong"></field>
         <field name="runtimeDataId" type="id"></field>
@@ -62,6 +63,7 @@ under the License.
         <field name="startDateTime" type="date-time"></field>
         <field name="finishDateTime" type="date-time"></field>
         <field name="cancelDateTime" type="date-time"></field>
+        <field name="jobResult" type="value"></field>
         <prim-key field="jobId"/>
         <relation type="one" fk-name="JOB_SNDBX_RECINFO" rel-entity-name="RecurrenceInfo">
             <key-map field-name="recurrenceInfoId"/>