/*
* $Header: $
* $Revision: $
* $Date: $
*
* ====================================================================
*
* Copyright (c) 2000 - 2004 SCC Informationssysteme GmbH. All rights
* reserved.
* Vendor URL : http://www.scc-gmbh.com
* Product URL: http://www.common-controls.com
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL SCC INFORMATIONSSYSTEME GMBH OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* Note: This file belongs to the Common Controls Presentation
* Framework. Permission is given to use this script only
* together with the Common Controls Presentation Framework
*
* ====================================================================
*/
/////////////////////////////////////////////////////////////
// Global Variables used by the CC-Framework
/////////////////////////////////////////////////////////////
var LF = '\n';
var NBSP = '';
var RunAt = new Object();
RunAt.SERVER = 0;
RunAt.CLIENT = 1;
var SelectMode = new Object();
SelectMode.NONE = 0;
SelectMode.SINGLE = 1;
SelectMode.MULTIPLE = 2;
var NodeType = new Object();
NodeType.NODE = 1;
NodeType.GROUP = 2;
var ExpandMode = new Object();
ExpandMode.SINGLE = 0;
ExpandMode.MULTIPLE = 1;
ExpandMode.FULL = 2;
var NodeState = new Object();
NodeState.NONE = 0;
NodeState.EXPAND = 1;
NodeState.COLLAPSE = 2;
NodeState.EXPANDEX = 3;
var NodeFilter = new Object();
NodeFilter.ROOT = 2;
NodeFilter.GROUP = 3;
NodeFilter.NODE = 4;
var CheckState = new Object();
CheckState.CHECKED = 1;
CheckState.UNCHECKED = 2;
CheckState.UNDEFINED = 3;
var Orientation = new Object();
Orientation.VERTICAL = 1;
Orientation.HORIZONTAL = 2;
/*
+ ---------------------------------------------------------------------------------+
| Purpose..: Opens a PopUp Window which shows a datetime picker.
|
| Date Author Notice
| ---------- ---------------- ----------------------------------------------------
| 22.04.2004 G.Schulz (SCC) Inital version
+ ---------------------------------------------------------------------------------+
*/
var calendar = null;
function popupCalendar(fieldId, locale, formatMask, width, height, template) {
var obj = document.getElementById(fieldId);
var id = obj.id;
var value = (null != obj.value) ? obj.value : '';
var target = '';
if (null == width || '' == width) {
width = 350;
}
if (null == height || '' == height) {
height = 250;
}
var isTime = DateFormat.isTimeMask(formatMask);
if (!isTime) {
// width = 215;
}
target += template;
target += '?datetime=' + value;
target += '&fieldid=' + id;
target += '&locale=' + locale.toUpperCase();
target += '&mask=' + formatMask;
// get the coordinate to display the new window
var left = (screen.width - width) / 2;
var top = (screen.height - height) / 2;
/* Check if the window is already opend
if (null == calendar || calendar.closed) {
calendar = window.open(target, '', 'top=' + top + ',left=' + left + ',width=' + width + ',height=' + height + ',status=no,toolbar=no,location=no,resizable=no,scrollbars=no,menubar=no');
} else {
calendar.focus();
}*/
if (null == ventModal || ventModal.closed) {
ventModal = window.open(target, '', 'top=' + top + ',left=' + left + ',width=' + width + ',height=' + height + ',status=no,toolbar=no,location=no,resizable=no,scrollbars=no,menubar=no');
} else {
ventModal.focus();
}
}
/*
+ ---------------------------------------------------------------------------------+
| Purpose..: Opens a PopUp Window which shows a color picker.
|
| Date Author Notice
| ---------- ---------------- ----------------------------------------------------
| 22.04.2004 G.Schulz (SCC) Inital version
+ ---------------------------------------------------------------------------------+
*/
var colorpicker = null;
function popupCPicker(target, fieldId, locale, palette) {
var obj = document.getElementById(fieldId);
var id = obj.id;
var value = (null != obj.value) ? obj.value : '';
target += '?fieldid=' + id;
target += '&locale=' + locale.toUpperCase();
target += '&value=' + value;
target += '&palette=' + palette;
// get the coordinate to display the new window
var left = (screen.width - 255) / 2;
var top = (screen.height - 250) / 2;
/* Check if the window is already opend
if (null == colorpicker || colorpicker.closed) {
colorpicker = window.open(target, '', 'top=' + top + ',left=' + left + ',width=255,height=250,status=no,toolbar=no,location=no,resizable=no,scrollbars=no,menubar=no');
} else {
colorpicker.focus();
}*/
if (null == ventModal || ventModal.closed) {
ventModal = window.open(target, '', 'top=' + top + ',left=' + left + ',width=255,height=250,status=no,toolbar=no,location=no,resizable=no,scrollbars=no,menubar=no');
} else {
ventModal.focus();
}
}
/*
+ ---------------------------------------------------------------------------------+
| Purpose..: Opens a PopUp Window to edit the textarea within a seperate window.
|
| Date Author Notice
| ---------- ---------------- ----------------------------------------------------
| 21.10.2004 G.Schulz (SCC) Inital version
| 15.11.2004 G.Schulz (SCC) New readonly attribute
+ ---------------------------------------------------------------------------------+
*/
var textpopup = null;
function popupTextPopup(fieldId, locale, maxlength, readonly, width, height, rows, template) {
var target = '';
var obj = document.getElementById(fieldId);
var id = obj.id;
var winWidth = (null == width || isNaN(width)) ? 350 : width;
var winHeight = (null == height || isNaN(height)) ? 150 : height;
target += template;
target += '?fieldid=' + id;
target += '&maxlength=' + maxlength;
target += '&locale=' + locale.toUpperCase();
target += '&height=' + winHeight;
target += '&readonly=' + readonly;
// get the coordinate to display the new window
var left = (screen.width - winWidth) / 2;
var top = (screen.height - winHeight) / 2;
// Check if the window is already opend
if (null == textpopup || textpopup.closed) {
var options = 'top=' + top + ',left=' + left + ',width=' + winWidth + ',height=' + winHeight + ',status=no,toolbar=no,location=no,resizable=no,scrollbars=no,menubar=no'
textpopup = window.open(target, '', options);
} else {
textpopup.focus();
}
}
/*
+ ---------------------------------------------------------------------------------+
| Purpose..: Provides some helper functions for a textarea
|
| Date Author Notice
| ---------- ---------------- ----------------------------------------------------
| 12.06.2004 G.Schulz (SCC) Initial version
| 01.11.2004 G.Schulz (SCC) dirty flag added
| 13.02.2005 G.Schulz (SCC) Input not longer accepted if maximum no. of characters is exeeded
|
+ ---------------------------------------------------------------------------------+
*/
function Textarea(id, maxlength, message, nobreak) {
var a = arguments;
this.id = id;
this.obj = document.getElementById(id);
this.maxlength = (a.length >= 1) ? a[1] : null;
this.limited = (maxlength != null) ? true : false;
this.infoLine = (a.length >= 2) ? a[2] : 'Characters remaining: {0}/{1}'; // Text to display for remaining characters
this.nobreak = (a.length >= 3) ? a[3] : false;
this.infoLineNode = null; // span which contains the text
this.textWarningtAt = 0; // default 10 characters remaining
this.CSS_INFOLINE = 'ltail';
this.dirty = false;
this.allowOverflow = false;
// add eventhandler
if (null != this.obj && this.limited) {
this.createInfoLine();
this.setUpHandler();
// check if the textare is readonly or disabled
// In both cases no message is displayed
if (!this.isReadonly() && !this.isDisabled()) {
this.checkLimit();
}
}
}
function Textarea_getId() {
return this.id;
}
function Textarea_getMaxLength() {
return this.maxlength;
}
function Textarea_setInfoLine(infoLine) {
this.infoLine = infoLine;
}
function Textarea_setUpHandler() {
var _textarea = this;
// check if the textare is readonly or disabled
// In both cases no message is displayed and
// no handlers where needed
if (this.isReadonly() || this.isDisabled()) {
return;
}
this.obj.onchange = function() {
_textarea.checkLimit();
}
this.obj.onkeyup = function() {
_textarea.checkLimit();
}
this.obj.onchange = function() {
_textarea.dirty = true;
}
this.obj.onkeypress = function() {
return _textarea.checkLimit();
}
this.obj.onpaste = function() {
_textarea.checkLimit();
}
}
function Textarea_checkLimit() {
if (0 == this.maxlength) {
return;
}
var remaining = parseInt(this.maxlength) - parseInt(this.obj.value.length);
if (!this.allowOverflow && remaining == 0){
this.updateInfoLine(0, 0);
return false;
}
if (!this.allowOverflow && remaining < 0) {
this.obj.value = this.obj.value.substr(0, this.maxlength);
this.updateInfoLine(0, this.textWarningtAt);
} else {
this.updateInfoLine(remaining, this.textWarningtAt);
}
}
function Textarea_updateInfoLine(remaining, warningtAt) {
var warning = (remaining < warningtAt) ? true : false;
var out = this.infoLine;
if (this.infoLine.indexOf('{0}') != -1) {
out = out.replace('{0}', remaining);
}
if (this.infoLine.indexOf('{1}') != -1) {
out = out.replace('{1}', this.maxlength);
}
if (warning) {
out = out.fontcolor('red');
}
if (!this.nobreak) {
out = '
' + out;
}
this.infoLineNode.innerHTML = out;
}
function Textarea_createInfoLine() {
var text = document.createTextNode(this.infoLine);
var span = document.createElement('Span');
span.appendChild(text);
span.className = this.CSS_INFOLINE;
this.obj.parentNode.appendChild(span);
this.infoLineNode = span;
}
function Textarea_encodeHTML(s) {
s = s.replace(/\&/g, "&").replace(//g, ">").replace(/\n/g, "
");
while (/\s\s/.test(s)) {
s = s.replace(/\s\s/, " ");
}
return s.replace(/\s/g, " ");
}
function Textarea_isDirty() {
return this.dirty;
}
function Textarea_insertTag(textareaId, tag) {
var ta = document.getElementById(textareaId);
var tagOpen = '[' + tag.toLowerCase() + ']';
var tagClose = '[/' + tag.toLowerCase() + ']';
if (ie) {
var selected = document.selection.createRange().text;
if (selected) {
var addSpace = false;
if (selected.charAt(selected.length-1) == ' ') {
selected = selected.substring(0, selected.length-1);
addSpace = true;
}
document.selection.createRange().text = tagOpen + selected + tagClose + ((addSpace) ? ' ': '');
} else {
ta.value += tagOpen + tagClose;
}
} else {
ta.value += tagOpen + tagClose;
}
ta.focus();
return;
}
function Textarea_isReadonly() {
if (null == this.obj) {
return false;
} else {
if (ie) {
return this.obj.getAttribute('readonly');
} else {
return this.obj.hasAttribute('readonly');
}
}
}
function Textarea_isDisabled() {
if (null == this.obj) {
return false;
} else {
if (ie) {
return this.obj.getAttribute('disabled');
} else {
return this.obj.hasAttribute('disabled');
}
}
}
function Textarea_setAllowOverflow(allowOverflow) {
this.allowOverflow = allowOverflow;
}
function Textarea_isAllowOverflow(allowOverflow) {
return this.allowOverflow;
}
function Textarea_toString() {
var out = '';
out += '******** TextArea ******* ' + LF;
out += 'Id.........: ' + this.id + LF;
out += 'MaxLenght..: ' + this.maxlength + LF;
out += 'Limited....: ' + this.limited + LF;
out += 'InfoLine...: ' + this.infoLine + LF;
out += 'Dirty......: ' + this.dirty;
out += 'Overflow...: ' + this.allowOverflow;
return out;
}
new Textarea();
Textarea.prototype.setUpHandler = Textarea_setUpHandler;
Textarea.prototype.checkLimit = Textarea_checkLimit;
Textarea.prototype.createInfoLine = Textarea_createInfoLine;
Textarea.prototype.updateInfoLine = Textarea_updateInfoLine;
Textarea.prototype.isDirty = Textarea_isDirty;
Textarea.prototype.isReadonly = Textarea_isReadonly
Textarea.prototype.isDisabled = Textarea_isDisabled;
Textarea.prototype.setAllowOverflow = Textarea_setAllowOverflow;
Textarea.prototype.isAllowOverflow = Textarea_isAllowOverflow;
Textarea.encodeHTML = Textarea_encodeHTML;
Textarea.insertTag = Textarea_insertTag;
Textarea.prototype.toString = Textarea_toString;
/*
+ ---------------------------------------------------------------------------------+
| Object....: ImageMapping
| Function..:
| Arguments.:
|
| Date Author Note
| ---------- ---------------- ----------------------------------------------------
| 05.01.2005 G.Schulz (SCC) Initial version
+ ---------------------------------------------------------------------------------+
*/
function ImageMapping(rule, src, width, height, tooltip, alt, resource) {
var a = arguments;
this.rule = rule; // RegExpression teh image must match
this.src = src; // image source
this.width = width; // image width
this.height = height; // image height
this.tooltip = (a.length >= 5) ? tooltip : ''; // additional tooltip
this.alt = (a.length >= 6) ? alt : ''; // alt attribute
this.resource = (a.length >= 7) ? resource : '';
}
function ImageMapping_getSource() {
return this.src;
}
function ImageMapping_getWidth() {
return this.width;
}
function ImageMapping_getHeight() {
return this.height;
}
function ImageMapping_getTooltip() {
return this.tooltip;
}
function ImageMapping_getAlt() {
return this.alt;
}
function ImageMapping_toString() {
var out = '';
out += '********* ImageMapping ***********' + LF
out += 'Rule...........: ' + this.rule + LF;
out += 'Source.........: ' + this.src + LF;
out += 'Width..........: ' + this.width + LF;
out += 'Height.........: ' + this.height + LF;
out += 'Tooltip........: ' + this.tooltip + LF;
out += 'Alt............: ' + this.alt + LF;
out += 'Resource.......: ' + this.resource + LF;
return out;
}
new ImageMapping();
ImageMapping.prototype.getSource = ImageMapping_getSource;
ImageMapping.prototype.getWidth = ImageMapping_getWidth;
ImageMapping.prototype.getHeight = ImageMapping_getHeight;
ImageMapping.prototype.getTooltip = ImageMapping_getTooltip;
ImageMapping.prototype.getAlt = ImageMapping_getAlt;
ImageMapping.prototype.toString = ImageMapping_toString;
/*
+ ---------------------------------------------------------------------------------+
| Object....: ImageMap
| Function..: Collection for ImageMapping objects
| Arguments.: id, runAt
|
| Date Author Note
| ---------- ---------------- ----------------------------------------------------
| 05.01.2005 G.Schulz (SCC) Initial version
+ ---------------------------------------------------------------------------------+
*/
function ImageMap(id, runAt, base) {
var a = arguments;
this.arrImageMappings = new Array(); // Collection
this.id = id; // the id for this image map
this.runAt = (a.length >= 2) ? runAt : RunAt.SERVER; // indicates if the control should work with or without roundtrips
this.base = (a.length >= 3) ? base : ''; // The base directory for all the images
}
function ImageMap_addImageMapping(mapping) {
if (mapping instanceof ImageMapping) {
this.arrImageMappings[this.arrImageMappings.length] = mapping;
}
}
function ImageMap_getImageMapping(rule) {
for (var i=0; i <= this.arrImageMappings.length; i++) {
var imRule = this.arrImageMappings[i]['rule'];
if (imRule == rule) {
return this.arrImageMappings[i];
}
}
return null;
}
function ImageMap_getImageMappings() {
// return the collection
return this.arrImageMappings;
}
function ImageMap_toString() {
var out = '';
out += '********* ImageMap ***********' + LF
out += 'Id.............: ' + this.id + LF;
out += 'RunAt..........: ' + this.runAt + LF;
out += 'Base...........: ' + this.base + LF;
return out;
}
new ImageMap();
ImageMap.prototype.toString = ImageMap_toString;
ImageMap.prototype.addImageMapping = ImageMap_addImageMapping;
ImageMap.prototype.getImageMapping = ImageMap_getImageMapping;
ImageMap.prototype.getImageMappings = ImageMap_getImageMappings;
/*
+ ---------------------------------------------------------------------------------+
| Object....: Icon
| Function..: An Image object
| Arguments.: id, resPath, src, width, height, tooltip, alt
|
| Date Author Note
| ---------- ---------------- ----------------------------------------------------
| 17.08.2004 G.Schulz (SCC) Initial version
| 22.11.2004 G.Schulz (SCC) Hide ALT + TITLE if null
+ ---------------------------------------------------------------------------------+
*/
function Icon(id, resPath, src, width, height, tooltip, alt) {
this.id = id; // unique button id
this.width = width; // button width
this.height = height; // button height
this.src = src; // src-Attribute
this.onclick = Icon_onclick;
this.resPath = resPath;
this.tooltip = tooltip; // Tooltip
this.alt = alt;
this.border = 0;
}
function Icon_onclick() {
return;
}
function Icon_create() {
var img = document.createElement('Img');
img.src = this.src;
img.title = (null != this.tooltip) ? this.tooltip : '';
img.alt = (null != this.alt) ? this.alt : '';
img.border = 0;
img.width = this.width;
img.height = this.height;
img.setAttribute('vspace', 0);
img.border = this.border;
return img;
}
function Icon_toString() {
var out = '';
out += '******* Icon *********' + LF
out += 'Id.............: ' + this.id + LF;
out += 'ResPath........: ' + this.resPath + LF;
out += 'Source.........: ' + this.src + LF;
out += 'Width..........: ' + this.width + LF;
out += 'Height.........: ' + this.height + LF;
out += 'Tooltip........: ' + this.tooltip + LF;
out += 'Alt............: ' + this.alt + LF;
out += 'Border.........: ' + this.border + LF;
return out;
}
new Icon();
Icon.prototype.onclick = Icon_onclick; // used to assign an onclick handler
Icon.prototype.toString = Icon_toString; // toString
Icon.prototype.create = Icon_create; // creates a html img object
/*
+ ---------------------------------------------------------------------------------+
| Calendar Message Resources
|
| Date Author Note
| ---------- ---------------- ----------------------------------------------------
| 22.05.2004 G.Schulz (SCC) Initial version
|
+ ---------------------------------------------------------------------------------+
*/
function TextButton(id, label, width, resPath, imgSrc, imgWidth, height, tooltip) {
this.id = id; // unique button id
this.label = label; // the button label
this.width = width; //
this.imgWidth = imgWidth; // array including width of the bgimages (left, middle, right)
this.imgSrc = imgSrc; // array including the image resources (left, middle, right)
this.height = height; // button hight
this.onclick = TextButton_onclick;
this.resPath = resPath;
this.tooltip = tooltip;
if (arguments.length <= 4) {
// register some default images
this.imgSrc = ['btnBkg1_left.gif', 'btnBkg1_middle.gif', 'btnBkg1_right.gif'];
this.imgWidth = [7, 0, 7];
this.height = 24;
this.tooltip = label;
}
}
function TextButton_create() {
var row = null;
var cell = null;
var img = null;
var span = null;
// create Table
var table = document.createElement('Table');
table.cellSpacing = 0;
table.cellPadding = 0;
table.width = (this.width - TextButton.getWidth(this.imgWidth));
table.className = 'tbtn';
table.onclick = this.onclick;
row = table.insertRow(table.rows.length);
row.setAttribute('valign', 'middle');
// left
cell = row.insertCell(row.cells.length);
img = document.createElement('Img');
img.width = this.imgWidth[0];
img.height = this.height;
img.src = this.resPath + this.imgSrc[0];
img.border = 0;
cell.appendChild(img);
// middle
cell = row.insertCell(row.cells.length);
cell.width = '100%';
cell.setAttribute('background-position', 'right');
cell.setAttribute('word-wrap', true);
cell.setAttribute('background', this.resPath + this.imgSrc[1]);
span = document.createElement('Span');
span.appendChild(document.createTextNode(this.label));
span.title = this.tooltip;
cell.appendChild(span);
// right
cell = row.insertCell(row.cells.length);
img = document.createElement('Img');
img.width = this.imgWidth[2];
img.height = this.height;
img.src = this.resPath + this.imgSrc[2];
img.border = 0;
cell.appendChild(img);
return table;
}
function TextButton_onclick() {
return;
}
function TextButton_getWidth(widths) {
var total = 0;
for(var i=0; i < widths.length; i++) {
var val = parseInt(widths[i]);
if (!isNaN(val)) {
total =+ val;
}
}
return total;
}
function TextButton_toString() {
var out = '';
out += '******* TextButton *********' + LF
out += 'Id.............: ' + this.id + LF;
out += 'Label..........: ' + this.label + LF;
out += 'BGImages.......: ' + this.imgSrc + LF;
out += 'Tooltip........: ' + this.tooltip + LF;
out += 'Alt............: ' + this.alt + LF;
return out;
}
new TextButton();
TextButton.prototype.create = TextButton_create;
TextButton.prototype.onclick = TextButton_onclick;
TextButton.prototype.toString = TextButton_toString;
TextButton.getWidth = TextButton_getWidth;
/*
+ ---------------------------------------------------------------------------------+
| Object...: SwapSelect
| Function.:
|
| Date Author Description
| ---------- ---------------- ----------------------------------------------------
| 29.12.2004 G.Schulz Inital version
|
+ ---------------------------------------------------------------------------------+
*/
function SwapSelect(id, runat, hiddenName) {
var a = arguments;
this.id = id; // the id for the control
this.runAt = (a.length >= 2) ? runat : RunAt.SERVER; // indicates if the control should work with or without roundtrips
this.hiddenName = (a.length >= 3) ? hiddenName : id; // Name of the hidden field
this.orientation = Orientation.VERTICAL; // select elementes are displayed vertical or horizontal
this.keepSortOrder = true; // move item at the end (flase) or use the original position
this.keepSelection = true; // keep selection for moved options
this.disabled = false;
this.PREFIX = 'swc_';
this.BTNPREFIX = 'btnswc_';
this.ROOT = 'swc_span_'+ id;
if (null != id) {
this.optionsSrc = document.getElementById('swcl_' + id);
this.optionsSel = document.getElementById('swcr_' + id);
this.optionsSrc.swc_type = 'L';
this.optionsSel.swc_type = 'R';
if (this.runAt == RunAt.CLIENT) {
// assign the client handlers
this.setupEventHandler();
}
}
}
function SwapSelect_setRunAt(runat) {
this.runAt = runat;
}
function SwapSelect_getRunAt() {
return this.runAt;
}
function SwapSelect_setOrientation(orientation) {
this.orientation = orientation;
}
function SwapSelect_getOrientation() {
return this.orientation;
}
function SwapSelect_setDisabled(disabled) {
this.disabled = disabled;
}
function SwapSelect_isDisabled() {
return this.disabled;
}
function SwapSelect_setupEventHandler() {
// get the buttons
var objAddAll = document.getElementById(this.BTNPREFIX + this.id + '_AddAll');
var objAdd = document.getElementById(this.BTNPREFIX + this.id + '_Add');
var objRemove = document.getElementById(this.BTNPREFIX + this.id + '_Remove');
var objRemoveAll = document.getElementById(this.BTNPREFIX + this.id + '_RemoveAll');
var ctrl = this;
objAddAll.onclick = function() {
ctrl.doMove(ctrl.optionsSrc, ctrl.optionsSel, true);
ctrl.updateHiddenFields(ctrl.optionsSel);
return false;
}
objAdd.onclick = function() {
ctrl.doMove(ctrl.optionsSrc, ctrl.optionsSel, false);
ctrl.updateHiddenFields(ctrl.optionsSel);
return false;
}
objRemove.onclick = function() {
ctrl.doMove(ctrl.optionsSel, ctrl.optionsSrc, false);
ctrl.updateHiddenFields(ctrl.optionsSel);
return false;
}
objRemoveAll.onclick = function() {
ctrl.doMove(ctrl.optionsSel, ctrl.optionsSrc, true);
ctrl.updateHiddenFields(ctrl.optionsSel);
return false;
}
this.optionsSrc.onclick = function() {
ctrl.unselectOptionList(ctrl.optionsSel);
}
this.optionsSel.onclick = function() {
ctrl.unselectOptionList(ctrl.optionsSrc);
}
}
function SwapSelect_unselectOptionList(optionList) {
// unselect option elements
for(var i=0; i < optionList.options.length; i++) {
optionList.options[i].selected = false;
}
}
function SwapSelect_doMove(source, target, moveall) {
if (null == source || null == target) {
return;
}
if (this.keepSelection) {
this.unselectOptionList(target);
}
if(moveall) {
// copy all options
var opt = source.options;
for(var i=0; i < opt.length; i++) {
var newOption = new Option(opt[i].text, opt[i].value, false, false);
newOption.swc_type = opt[i].getAttribute('swc_type');
newOption.selected = this.keepSelection;
target.options[target.options.length] = newOption;
}
// delete all options from the source element
source.options.length=0;
if (this.keepSortOrder) {
this.sort(target);
}
} else {
// copy only the selected options
while (source.selectedIndex != -1) {
var opt = source.options[source.selectedIndex];
if (opt.selected) {
// delete the selected option from the source element
source.options[source.selectedIndex] = null;
// insert the selected option into the target element
var newOption = new Option(opt.text, opt.value, false, false);
newOption.swc_index = opt.getAttribute('swc_index');
newOption.selected = this.keepSelection;
target.options[target.options.length] = newOption;
if (this.keepSortOrder) {
this.sort(target);
}
}
}
}
}
function SwapSelect_sort(optionList) {
if (null == optionList) {
return;
}
var arr = new Array();
// add options to array
for(var i=0; i < optionList.options.length; i++) {
arr[arr.length] = optionList.options[i];
}
// sort the array
arr.sort(SwapSelect_typeOrder);
// reset select element
optionList.options.length=0;
// add sorted options
for(var i=0; i < arr.length; i++) {
var newOption = new Option(arr[i].text, arr[i].value, false, false);
newOption.swc_index = arr[i].getAttribute('swc_index');
newOption.selected = arr[i].selected;
optionList.options[optionList.options.length] = newOption;
}
}
function SwapSelect_typeOrder(a, b) {
var va = parseInt(a.getAttribute('swc_index'));
var vb = parseInt(b.getAttribute('swc_index'));
if (va > vb) {
return 1;
} else if (va < vb) {
return -1;
} else {
return 0;
}
}
function SwapSelect_getOptionList(side) {
if (side.toUpperCase() == 'L') {
return this.optionsSrc;
} else if (side.toUpperCase() == 'R') {
return this.optionsSel;
} else {
return null;
}
}
function SwapSelect_setKeepSortOrder(keepSortOrder) {
this.keepSortOrder = keepSortOrder;
}
function SwapSelect_isKeepSortOrder() {
return this.keepSortOrder;
}
function SwapSelect_setKeepSelection(keepSelection) {
this.keepSelection = keepSelection;
}
function SwapSelect_isKeepSelection() {
return this.keepSelection;
}
function SwapSelect_updateHiddenFields(optionList) {
// This function creates the required hidden fields
// which are used to synchronize the selected items
// after a server roundtrip.
var span = document.getElementById(this.ROOT);
// remove existing hidden fields
var inputfields = span.getElementsByTagName('input');
var length = inputfields.length;
for (var i = length - 1; i >= 0; i--) {
var node = inputfields[i];
if (node.type == 'hidden' && node.name == this.hiddenName) {
//alert(i + ") " + inputfields[i].value);
var parent = node.parentNode;
parent.removeChild(node);
}
}
// add the new hidden fields for the selected options
if (optionList.options.length != 0) {
for (var i=0; i < optionList.options.length; i++) {
var option = optionList.options[i];
var hidden = this.createHidden(option.value);
span.appendChild(hidden);
}
} else {
// we must create a dummy hidden field otherwise
// the list will not be reseted because the parameter
// is missing in the http request
var hidden = this.createHidden('');
span.appendChild(hidden);
}
}
function SwapSelect_createHidden(value) {
var input = document.createElement('input');
input.type = 'hidden';
input.name = this.hiddenName;
input.value = value;
return input;
}
function SwapSelect_toString() {
var out = '';
out += '******* SwapSelect *********' + LF
out += 'Id..............: ' + this.id + LF;
out += 'Orientation.....: ' + this.orientation + LF;
out += 'Keep SortOrder..: ' + this.keepSortOrder + LF;
out += 'Keep Selection..: ' + this.keepSelection + LF;
out += 'Disabled........: ' + this.disabled + LF;
out += 'RunAt...........: ' + this.runAt + LF;
return out;
}
new SwapSelect();
SwapSelect.prototype.setRunAt = SwapSelect_setRunAt;
SwapSelect.prototype.getRunAt = SwapSelect_getRunAt;
SwapSelect.prototype.setOrientation = SwapSelect_setOrientation;
SwapSelect.prototype.getOrientation = SwapSelect_getOrientation;
SwapSelect.prototype.setDisabled = SwapSelect_setDisabled;
SwapSelect.prototype.isDisabled = SwapSelect_isDisabled;
SwapSelect.prototype.setupEventHandler = SwapSelect_setupEventHandler;
SwapSelect.prototype.unselectOptionList = SwapSelect_unselectOptionList;
SwapSelect.prototype.doMove = SwapSelect_doMove;
SwapSelect.prototype.sort = SwapSelect_sort;
SwapSelect.prototype.getOptionList = SwapSelect_getOptionList;
SwapSelect.prototype.setKeepSortOrder = SwapSelect_setKeepSortOrder;
SwapSelect.prototype.isKeepSortOrder = SwapSelect_isKeepSortOrder;
SwapSelect.prototype.setKeepSelection = SwapSelect_setKeepSelection;
SwapSelect.prototype.isKeepSelection = SwapSelect_isKeepSelection;
SwapSelect.prototype.updateHiddenFields = SwapSelect_updateHiddenFields;
SwapSelect.prototype.createHidden = SwapSelect_createHidden;
SwapSelect.prototype.toString = SwapSelect_toString;
/*
+ ---------------------------------------------------------------------------------+
| Object...: StringHelp
| Function.:
|
| Date Author Description
| ---------- ---------------- ----------------------------------------------------
| 08.01.2005 G.Schulz Inital version
|
+ ---------------------------------------------------------------------------------+
*/
function StringHelp() {
}
function StringHelp_truncate(str, maxlength) {
if ((maxlength == -1) || (str == null) || (str.length <= maxlength)) {
return str;
} else {
return str.substring(0, maxlength) + '...';
}
}
new StringHelp();
StringHelp.truncate = StringHelp_truncate;