if (dwr == null) var dwr = {}; if (dwr.util == null) dwr.util = {}; if (DWRUtil == null) var DWRUtil = dwr.util; dwr.util._escapeHtml = true; dwr.util.setEscapeHtml = function(escapeHtml) { dwr.util._escapeHtml = escapeHtml;}
dwr.util._shouldEscapeHtml = function(options) { if (options && options.escapeHtml != null) { return options.escapeHtml;}
return dwr.util._escapeHtml;}
dwr.util.escapeHtml = function(original) { var div = document.createElement('div'); var text = document.createTextNode(original); div.appendChild(text); return div.innerHTML;}
dwr.util.unescapeHtml = function(original) { var div = document.createElement('div'); div.innerHTML = original.replace(/<\/?[^>]+>/gi, ''); return div.childNodes[0] ? div.childNodes[0].nodeValue : '';}
dwr.util.replaceXmlCharacters = function(original) { original = original.replace("&", "+"); original = original.replace("<", "\u2039"); original = original.replace(">", "\u203A"); original = original.replace("\'", "\u2018"); original = original.replace("\"", "\u201C"); return original;}
dwr.util.containsXssRiskyCharacters = function(original) { return (original.indexOf('&') != -1
&& original.indexOf('<') != -1
&& original.indexOf('>') != -1
&& original.indexOf('\'') != -1
&& original.indexOf('\"') != -1);}
dwr.util.onReturn = function(event, action) { if (!event) event = window.event; if (event && event.keyCode && event.keyCode == 13) action();}; dwr.util.selectRange = function(ele, start, end) { ele = dwr.util._getElementById(ele, "selectRange()"); if (ele == null) return; if (ele.setSelectionRange) { ele.setSelectionRange(start, end);}
else if (ele.createTextRange) { var range = ele.createTextRange(); range.moveStart("character", start); range.moveEnd("character", end - ele.value.length); range.select();}
ele.focus();}; if (document.getElementById) { dwr.util.byId = function() { var elements = new Array(); for (var i = 0; i < arguments.length; i++) { var element = arguments[i]; if (typeof element == 'string') { element = document.getElementById(element);}
if (arguments.length == 1) { return element;}
elements.push(element);}
return elements;};}
else if (document.all) { dwr.util.byId = function() { var elements = new Array(); for (var i = 0; i < arguments.length; i++) { var element = arguments[i]; if (typeof element == 'string') { element = document.all[element];}
if (arguments.length == 1) { return element;}
elements.push(element);}
return elements;};}
var $; if (!$) { $ = dwr.util.byId;}
dwr.util.toDescriptiveString = function(data, level, depth) { var reply = ""; var i = 0; var value; var obj; if (level == null) level = 0; if (depth == null) depth = 0; if (data == null) return "null"; if (dwr.util._isArray(data)) { if (data.length == 0) reply += "[]"; else { if (level != 0) reply += "[\n"; else reply = "["; for (i = 0; i < data.length; i++) { try { obj = data[i]; if (obj == null || typeof obj == "function") { continue;}
else if (typeof obj == "object") { if (level > 0) value = dwr.util.toDescriptiveString(obj, level - 1, depth + 1); else value = dwr.util._detailedTypeOf(obj);}
else { value = "" + obj; value = value.replace(/\/n/g, "\\n"); value = value.replace(/\/t/g, "\\t");}
}
catch (ex) { value = "" + ex;}
if (level != 0) { reply += dwr.util._indent(level, depth + 2) + value + ", \n";}
else { if (value.length > 13) value = value.substring(0, 10) + "..."; reply += value + ", "; if (i > 5) { reply += "..."; break;}
}
}
if (level != 0) reply += dwr.util._indent(level, depth) + "]"; else reply += "]";}
return reply;}
if (typeof data == "string" || typeof data == "number" || dwr.util._isDate(data)) { return data.toString();}
if (typeof data == "object") { var typename = dwr.util._detailedTypeOf(data); if (typename != "Object") reply = typename + " "; if (level != 0) reply += "{\n"; else reply = "{"; var isHtml = dwr.util._isHTMLElement(data); for (var prop in data) { if (isHtml) { if (prop.toUpperCase() == prop || prop == "title" || prop == "lang" || prop == "dir" || prop == "className" || prop == "form" || prop == "name" || prop == "prefix" || prop == "namespaceURI" || prop == "nodeType" || prop == "firstChild" || prop == "lastChild" || prop.match(/^offset/)) { continue;}
}
value = ""; try { obj = data[prop]; if (obj == null || typeof obj == "function") { continue;}
else if (typeof obj == "object") { if (level > 0) { value = "\n"; value += dwr.util._indent(level, depth + 2); value = dwr.util.toDescriptiveString(obj, level - 1, depth + 1);}
else { value = dwr.util._detailedTypeOf(obj);}
}
else { value = "" + obj; value = value.replace(/\/n/g, "\\n"); value = value.replace(/\/t/g, "\\t");}
}
catch (ex) { value = "" + ex;}
if (level == 0 && value.length > 13) value = value.substring(0, 10) + "..."; var propStr = prop; if (propStr.length > 30) propStr = propStr.substring(0, 27) + "..."; if (level != 0) reply += dwr.util._indent(level, depth + 1); reply += prop + ":" + value + ", "; if (level != 0) reply += "\n"; i++; if (level == 0 && i > 5) { reply += "..."; break;}
}
reply += dwr.util._indent(level, depth); reply += "}"; return reply;}
return data.toString();}; dwr.util._indent = function(level, depth) { var reply = ""; if (level != 0) { for (var j = 0; j < depth; j++) { reply += "\u00A0\u00A0";}
reply += " ";}
return reply;}; dwr.util.useLoadingMessage = function(message) { var loadingMessage; if (message) loadingMessage = message; else loadingMessage = "Loading"; dwr.engine.setPreHook(function() { var disabledZone = dwr.util.byId('disabledZone'); if (!disabledZone) { disabledZone = document.createElement('div'); disabledZone.setAttribute('id', 'disabledZone'); disabledZone.style.position = "absolute"; disabledZone.style.zIndex = "1000"; disabledZone.style.left = "0px"; disabledZone.style.top = "0px"; disabledZone.style.width = "100%"; disabledZone.style.height = "100%"; document.body.appendChild(disabledZone); var messageZone = document.createElement('div'); messageZone.setAttribute('id', 'messageZone'); messageZone.style.position = "absolute"; messageZone.style.top = "0px"; messageZone.style.right = "0px"; messageZone.style.background = "red"; messageZone.style.color = "white"; messageZone.style.fontFamily = "Arial,Helvetica,sans-serif"; messageZone.style.padding = "4px"; disabledZone.appendChild(messageZone); var text = document.createTextNode(loadingMessage); messageZone.appendChild(text); dwr.util._disabledZoneUseCount = 1;}
else { dwr.util.byId('messageZone').innerHTML = loadingMessage; disabledZone.style.visibility = 'visible'; dwr.util._disabledZoneUseCount++;}
}); dwr.engine.setPostHook(function() { dwr.util._disabledZoneUseCount--; if (dwr.util._disabledZoneUseCount == 0) { dwr.util.byId('disabledZone').style.visibility = 'hidden';}
});}; dwr.util.setHighlightHandler = function(handler) { dwr.util._highlightHandler = handler;}; dwr.util.yellowFadeHighlightHandler = function(ele) { dwr.util._yellowFadeProcess(ele, 0);}; dwr.util._yellowFadeSteps = [ "d0", "b0", "a0", "90", "98", "a0", "a8", "b0", "b8", "c0", "c8", "d0", "d8", "e0", "e8", "f0", "f8" ]; dwr.util._yellowFadeProcess = function(ele, colorIndex) { ele = dwr.util.byId(ele); if (colorIndex < dwr.util._yellowFadeSteps.length) { ele.style.backgroundColor = "#ffff" + dwr.util._yellowFadeSteps[colorIndex]; setTimeout("dwr.util._yellowFadeProcess('" + ele.id + "'," + (colorIndex + 1) + ")", 200);}
else { ele.style.backgroundColor = "transparent";}
}; dwr.util.borderFadeHighlightHandler = function(ele) { ele.style.borderWidth = "2px"; ele.style.borderStyle = "solid"; dwr.util._borderFadeProcess(ele, 0);}; dwr.util._borderFadeSteps = [ "d0", "b0", "a0", "90", "98", "a0", "a8", "b0", "b8", "c0", "c8", "d0", "d8", "e0", "e8", "f0", "f8" ]; dwr.util._borderFadeProcess = function(ele, colorIndex) { ele = dwr.util.byId(ele); if (colorIndex < dwr.util._borderFadeSteps.length) { ele.style.borderColor = "#ff" + dwr.util._borderFadeSteps[colorIndex] + dwr.util._borderFadeSteps[colorIndex]; setTimeout("dwr.util._borderFadeProcess('" + ele.id + "'," + (colorIndex + 1) + ")", 200);}
else { ele.style.backgroundColor = "transparent";}
}; dwr.util.focusHighlightHandler = function(ele) { try { ele.focus();}
catch (ex) { }
}; dwr.util._highlightHandler = null; dwr.util.highlight = function(ele, options) { if (options && options.highlightHandler) { options.highlightHandler(dwr.util.byId(ele));}
else if (dwr.util._highlightHandler != null) { dwr.util._highlightHandler(dwr.util.byId(ele));}
}; dwr.util.setValue = function(ele, val, options) { if (val == null) val = ""; if (options == null) options = {}; if (dwr.util._shouldEscapeHtml(options) && typeof(val) == "string") { val = dwr.util.escapeHtml(val);}
var orig = ele; var nodes, node, i; ele = dwr.util.byId(ele); if (ele == null) { nodes = document.getElementsByName(orig); if (nodes.length >= 1) ele = nodes.item(0);}
if (ele == null) { dwr.util._debug("setValue() can't find an element with id/name: " + orig + "."); return;}
dwr.util.highlight(ele, options); if (dwr.util._isHTMLElement(ele, "select")) { if (ele.type == "select-multiple" && dwr.util._isArray(val)) dwr.util._selectListItems(ele, val); else dwr.util._selectListItem(ele, val); return;}
if (dwr.util._isHTMLElement(ele, "input")) { if (ele.type == "radio") { if (nodes == null) nodes = document.getElementsByName(orig); if (nodes != null && nodes.length > 1) { for (i = 0; i < nodes.length; i++) { node = nodes.item(i); if (node.type == "radio") node.checked = (node.value == val);}
}
else ele.checked = (val == true);}
else if (ele.type == "checkbox") ele.checked = val; else ele.value = val; return;}
if (dwr.util._isHTMLElement(ele, "textarea")) { ele.value = val; return;}
if (val.nodeType) { if (val.nodeType == 9 ) val = val.documentElement; val = dwr.util._importNode(ele.ownerDocument, val, true); ele.appendChild(val); return;}
ele.innerHTML = val;}; dwr.util._selectListItems = function(ele, val) { var found = false; var i; var j; for (i = 0; i < ele.options.length; i++) { ele.options[i].selected = false; for (j = 0; j < val.length; j++) { if (ele.options[i].value == val[j]) { ele.options[i].selected = true;}
}
}
if (found) return; for (i = 0; i < ele.options.length; i++) { for (j = 0; j < val.length; j++) { if (ele.options[i].text == val[j]) { ele.options[i].selected = true;}
}
}
}; dwr.util._selectListItem = function(ele, val) { var found = false; var i; for (i = 0; i < ele.options.length; i++) { if (ele.options[i].value == val) { ele.options[i].selected = true; found = true;}
else { ele.options[i].selected = false;}
}
if (found) return; for (i = 0; i < ele.options.length; i++) { if (ele.options[i].text == val) { ele.options[i].selected = true;}
else { ele.options[i].selected = false;}
}
}; dwr.util.getValue = function(ele, options) { if (options == null) options = {}; var orig = ele; ele = dwr.util.byId(ele); var nodes = document.getElementsByName(orig); if (ele == null && nodes.length >= 1) { ele = nodes.item(0);}
if (ele == null) { dwr.util._debug("getValue() can't find an element with id/name: " + orig + "."); return "";}
if (dwr.util._isHTMLElement(ele, "select")) { if (ele.type == "select-multiple") { var reply = new Array(); for (i = 0; i < ele.options.length; i++) { var item = ele.options[i]; if (item.selected) { if (item.value != null && item.value != "") { reply.push(item.value);}
else { reply.push(item.text);}
}
}
return reply;}
else { var sel = ele.selectedIndex; if (sel != -1) { var item = ele.options[sel]; if (item.value != null && item.value != "") { return item.value;}
return item.text;}
else { return "";}
}
}
if (dwr.util._isHTMLElement(ele, "input")) { if (ele.type == "radio") { var node; for (i = 0; i < nodes.length; i++) { node = nodes.item(i); if (node.type == "radio") { if (node.checked) { if (nodes.length > 1) return node.value; else return true;}
}
}
}
switch (ele.type) { case "checkbox":
case "check-box":
case "radio":
return ele.checked; default:
return ele.value;}
}
if (dwr.util._isHTMLElement(ele, "textarea")) { return ele.value;}
if (dwr.util._shouldEscapeHtml(options)) { if (ele.textContent) return ele.textContent; else if (ele.innerText) return ele.innerText;}
return ele.innerHTML;}; dwr.util.getText = function(ele) { ele = dwr.util._getElementById(ele, "getText()"); if (ele == null) return null; if (!dwr.util._isHTMLElement(ele, "select")) { dwr.util._debug("getText() can only be used with select elements. Attempt to use: " + dwr.util._detailedTypeOf(ele) + " from  id: " + orig + "."); return "";}
var sel = ele.selectedIndex; if (sel != -1) { return ele.options[sel].text;}
else { return "";}
}; dwr.util.setValues = function(data, options) { var prefix = ""; if (options && options.prefix) prefix = options.prefix; if (options && options.idPrefix) prefix = options.idPrefix; dwr.util._setValuesRecursive(data, prefix);}; dwr.util._setValuesRecursive = function(data, idpath) { if (dwr.util._isArray(data) && data.length > 0 && dwr.util._isObject(data[0])) { for (var i = 0; i < data.length; i++) { dwr.util._setValuesRecursive(data[i], idpath+"["+i+"]");}
}
else if (dwr.util._isObject(data) && !dwr.util._isArray(data)) { for (var prop in data) { var subidpath = idpath ? idpath+"."+prop : prop; if (dwr.util._isObject(data[prop]) && !dwr.util._isArray(data[prop]) || dwr.util._isArray(data[prop]) && data[prop].length > 0 && dwr.util._isObject(data[prop][0])) { dwr.util._setValuesRecursive(data[prop], subidpath);}
else if (typeof data[prop] == "function") { }
else { if (dwr.util.byId(subidpath) != null || document.getElementsByName(subidpath).length >= 1) { dwr.util.setValue(subidpath, data[prop]);}
}
}
}
}; dwr.util.getValues = function(data, options) { var ele; if (typeof data == "string") ele = dwr.util.byId(data); if (dwr.util._isHTMLElement(data)) ele = data; if (ele != null) { return dwr.util.getFormValues(ele);}
else { var prefix = ""; if (options != null && options.prefix) prefix = options.prefix; if (options != null && options.idPrefix) prefix = options.idPrefix; dwr.util._getValuesRecursive(data, prefix); return data;}
}; dwr.util.getFormValues = function(ele) { ele = dwr.util.byId(ele); if (ele != null) { if (ele.elements == null) { alert("getFormValues() requires an object or reference to a form element."); return null;}
var reply = {}; var value; for (var i = 0; i < ele.elements.length; i++) { if (ele[i].type in {button:0,submit:0,reset:0,image:0,file:0}) continue; if (ele[i].id != null) value = ele[i].id; else if (ele[i].value != null) value = ele[i].value; else value = "element" + i; reply[value] = dwr.util.getValue(ele[i]);}
return reply;}
}; dwr.util._getValuesRecursive = function(data, idpath) { if (dwr.util._isArray(data) && data.length > 0 && dwr.util._isObject(data[0])) { for (var i = 0; i < data.length; i++) { dwr.util._getValuesRecursive(data[i], idpath+"["+i+"]");}
}
else if (dwr.util._isObject(data) && !dwr.util._isArray(data)) { for (var prop in data) { var subidpath = idpath ? idpath+"."+prop : prop; if (dwr.util._isObject(data[prop]) && !dwr.util._isArray(data[prop]) || dwr.util._isArray(data[prop]) && data[prop].length > 0 && dwr.util._isObject(data[prop][0])) { dwr.util._getValuesRecursive(data[prop], subidpath);}
else if (typeof data[prop] == "function") { }
else { if (dwr.util.byId(subidpath) != null || document.getElementsByName(subidpath).length >= 1) { data[prop] = dwr.util.getValue(subidpath);}
}
}
}
}; dwr.util.addOptions = function(ele, data) { ele = dwr.util._getElementById(ele, "addOptions()"); if (ele == null) return; var useOptions = dwr.util._isHTMLElement(ele, "select"); var useLi = dwr.util._isHTMLElement(ele, ["ul", "ol"]); if (!useOptions && !useLi) { dwr.util._debug("addOptions() can only be used with select/ul/ol elements. Attempt to use: " + dwr.util._detailedTypeOf(ele)); return;}
if (data == null) return; var text, value, li; if (dwr.util._isArray(data)) { for (var i = 0; i < data.length; i++) { if (useOptions) { if (arguments[2] != null) { if (arguments[3] != null) { text = dwr.util._getValueFrom(data[i], arguments[3]); value = dwr.util._getValueFrom(data[i], arguments[2]);}
else text = value = dwr.util._getValueFrom(data[i], arguments[2]);}
else text = value = dwr.util._getValueFrom(data[i], arguments[3]); if (text != null || value) ele.options[ele.options.length] = new Option(text, value);}
else { li = document.createElement("li"); value = dwr.util._getValueFrom(data[i], arguments[2]); if (value != null) { li.innerHTML = value; ele.appendChild(li);}
}
}
}
else if (arguments[3] != null) { if (!useOptions) { alert("dwr.util.addOptions can only create select lists from objects."); return;}
for (var prop in data) { value = dwr.util._getValueFrom(data[prop], arguments[2]); text = dwr.util._getValueFrom(data[prop], arguments[3]); if (text || value) ele.options[ele.options.length] = new Option(text, value);}
}
else { if (!useOptions) { dwr.util._debug("dwr.util.addOptions can only create select lists from objects."); return;}
for (var prop in data) { if (typeof data[prop] != "function") { if (arguments[2]) ele.options[ele.options.length] = new Option(prop, data[prop]); else ele.options[ele.options.length] = new Option(data[prop], prop);}
}
}
dwr.util.highlight(ele, null);}; dwr.util._getValueFrom = function(data, method) { if (method == null) return data; else if (typeof method == 'function') return method(data); else return data[method];}; dwr.util.removeAllOptions = function(ele) { ele = dwr.util._getElementById(ele, "removeAllOptions()"); if (ele == null) return; var useOptions = dwr.util._isHTMLElement(ele, "select"); var useLi = dwr.util._isHTMLElement(ele, ["ul", "ol"]); if (!useOptions && !useLi) { dwr.util._debug("removeAllOptions() can only be used with select, ol and ul elements. Attempt to use: " + dwr.util._detailedTypeOf(ele)); return;}
if (useOptions) { ele.options.length = 0;}
else { while (ele.childNodes.length > 0) { ele.removeChild(ele.firstChild);}
}
}; dwr.util.addRows = function(ele, data, cellFuncs, options) { ele = dwr.util._getElementById(ele, "addRows()"); if (ele == null) return; if (!dwr.util._isHTMLElement(ele, ["table", "tbody", "thead", "tfoot"])) { dwr.util._debug("addRows() can only be used with table, tbody, thead and tfoot elements. Attempt to use: " + dwr.util._detailedTypeOf(ele)); return;}
if (!options) options = {}; if (!options.rowCreator) options.rowCreator = dwr.util._defaultRowCreator; if (!options.cellCreator) options.cellCreator = dwr.util._defaultCellCreator; var tr, rowNum; if (dwr.util._isArray(data)) { for (rowNum = 0; rowNum < data.length; rowNum++) { options.rowData = data[rowNum]; options.rowIndex = rowNum; options.rowNum = rowNum; options.data = null; options.cellNum = -1; tr = dwr.util._addRowInner(cellFuncs, options); if (tr != null) ele.appendChild(tr);}
}
else if (typeof data == "object") { rowNum = 0; for (var rowIndex in data) { options.rowData = data[rowIndex]; options.rowIndex = rowIndex; options.rowNum = rowNum; options.data = null; options.cellNum = -1; tr = dwr.util._addRowInner(cellFuncs, options); if (tr != null) ele.appendChild(tr); rowNum++;}
}
dwr.util.highlight(ele, options);}; dwr.util._addRowInner = function(cellFuncs, options) { var tr = options.rowCreator(options); if (tr == null) return null; for (var cellNum = 0; cellNum < cellFuncs.length; cellNum++) { var func = cellFuncs[cellNum]; if (typeof func == 'function') options.data = func(options.rowData, options); else options.data = func || ""; options.cellNum = cellNum; var td = options.cellCreator(options); if (td != null) { if (options.data != null) { if (dwr.util._isHTMLElement(options.data)) td.appendChild(options.data); else { if (dwr.util._shouldEscapeHtml(options) && typeof(options.data) == "string") { td.innerHTML = dwr.util.escapeHtml(options.data);}
else { td.innerHTML = options.data;}
}
}
tr.appendChild(td);}
}
return tr;}; dwr.util._defaultRowCreator = function(options) { return document.createElement("tr");}; dwr.util._defaultCellCreator = function(options) { return document.createElement("td");}; dwr.util.removeAllRows = function(ele, options) { ele = dwr.util._getElementById(ele, "removeAllRows()"); if (ele == null) return; if (!options) options = {}; if (!options.filter) options.filter = function() { return true;}; if (!dwr.util._isHTMLElement(ele, ["table", "tbody", "thead", "tfoot"])) { dwr.util._debug("removeAllRows() can only be used with table, tbody, thead and tfoot elements. Attempt to use: " + dwr.util._detailedTypeOf(ele)); return;}
var child = ele.firstChild; var next; while (child != null) { next = child.nextSibling; if (options.filter(child)) { ele.removeChild(child);}
child = next;}
}; dwr.util.setClassName = function(ele, className) { ele = dwr.util._getElementById(ele, "setClassName()"); if (ele == null) return; ele.className = className;}; dwr.util.addClassName = function(ele, className) { ele = dwr.util._getElementById(ele, "addClassName()"); if (ele == null) return; ele.className += " " + className;}; dwr.util.removeClassName = function(ele, className) { ele = dwr.util._getElementById(ele, "removeClassName()"); if (ele == null) return; var regex = new RegExp("(^|\\s)" + className + "(\\s|$)", 'g'); ele.className = ele.className.replace(regex, '');}; dwr.util.toggleClassName = function(ele, className) { ele = dwr.util._getElementById(ele, "toggleClassName()"); if (ele == null) return; var regex = new RegExp("(^|\\s)" + className + "(\\s|$)"); if (regex.test(ele.className)) { ele.className = ele.className.replace(regex, '');}
else { ele.className += " " + className;}
}; dwr.util.cloneNode = function(ele, options) { ele = dwr.util._getElementById(ele, "cloneNode()"); if (ele == null) return null; if (options == null) options = {}; var clone = ele.cloneNode(true); if (options.idPrefix || options.idSuffix) { dwr.util._updateIds(clone, options);}
else { dwr.util._removeIds(clone);}
ele.parentNode.insertBefore(clone, ele); return clone;}; dwr.util._updateIds = function(ele, options) { if (options == null) options = {}; if (ele.id) { ele.setAttribute("id", (options.idPrefix || "") + ele.id + (options.idSuffix || ""));}
var children = ele.childNodes; for (var i = 0; i < children.length; i++) { var child = children.item(i); if (child.nodeType == 1 ) { dwr.util._updateIds(child, options);}
}
}; dwr.util._removeIds = function(ele) { if (ele.id) ele.removeAttribute("id"); var children = ele.childNodes; for (var i = 0; i < children.length; i++) { var child = children.item(i); if (child.nodeType == 1 ) { dwr.util._removeIds(child);}
}
}; dwr.util.cloneNodeForValues = function(templateEle, data, options) { templateEle = dwr.util._getElementById(templateEle, "cloneNodeForValues()"); if (templateEle == null) return null; if (options == null) options = {}; var idpath = ""; if (options.idPrefix) idpath = options.idPrefix; return dwr.util._cloneNodeForValuesRecursive(templateEle, data, idpath, options);}; dwr.util._cloneNodeForValuesRecursive = function(templateEle, data, idpath, options) { if (dwr.util._isArray(data)) { var clones = []; for (var i = 0; i < data.length; i++) { var item = data[i]; var clone = dwr.util._cloneNodeForValuesRecursive(templateEle, item, idpath + "[" + i + "]", options); clones.push(clone);}
return clones;}
else
if (dwr.util._isObject(data) && !dwr.util._isArray(data)) { var clone = templateEle.cloneNode(true); if (options.updateCloneStyle && clone.style) { for (var propname in options.updateCloneStyle) { clone.style[propname] = options.updateCloneStyle[propname];}
}
dwr.util._replaceIds(clone, templateEle.id, idpath); templateEle.parentNode.insertBefore(clone, templateEle); dwr.util._cloneSubArrays(data, idpath, options); return clone;}
return null;}; dwr.util._replaceIds = function(ele, oldidpath, newidpath) { if (ele.id) { var newId = null; if (ele.id == oldidpath) { newId = newidpath;}
else if (ele.id.length > oldidpath.length) { if (ele.id.substr(0, oldidpath.length) == oldidpath) { var trailingChar = ele.id.charAt(oldidpath.length); if (trailingChar == "." || trailingChar == "[") { newId = newidpath + ele.id.substr(oldidpath.length);}
}
}
if (newId) { ele.setAttribute("id", newId);}
else { ele.removeAttribute("id");}
}
var children = ele.childNodes; for (var i = 0; i < children.length; i++) { var child = children.item(i); if (child.nodeType == 1 ) { dwr.util._replaceIds(child, oldidpath, newidpath);}
}
}; dwr.util._cloneSubArrays = function(data, idpath, options) { for (prop in data) { var value = data[prop]; if (dwr.util._isArray(value)) { if (value.length > 0 && dwr.util._isObject(value[0])) { var subTemplateId = idpath + "." + prop; var subTemplateEle = dwr.util.byId(subTemplateId); if (subTemplateEle != null) { dwr.util._cloneNodeForValuesRecursive(subTemplateEle, value, subTemplateId, options);}
}
}
else if (dwr.util._isObject(value)) { dwr.util._cloneSubArrays(value, idpath + "." + prop, options);}
}
}
dwr.util._getElementById = function(ele, source) { var orig = ele; ele = dwr.util.byId(ele); if (ele == null) { dwr.util._debug(source + " can't find an element with id: " + orig + ".");}
return ele;}; dwr.util._isHTMLElement = function(ele, nodeName) { if (ele == null || typeof ele != "object" || ele.nodeName == null) { return false;}
if (nodeName != null) { var test = ele.nodeName.toLowerCase(); if (typeof nodeName == "string") { return test == nodeName.toLowerCase();}
if (dwr.util._isArray(nodeName)) { var match = false; for (var i = 0; i < nodeName.length && !match; i++) { if (test == nodeName[i].toLowerCase()) { match = true;}
}
return match;}
dwr.util._debug("dwr.util._isHTMLElement was passed test node name that is neither a string or array of strings"); return false;}
return true;}; dwr.util._detailedTypeOf = function(x) { var reply = typeof x; if (reply == "object") { reply = Object.prototype.toString.apply(x); reply = reply.substring(8, reply.length-1);}
return reply;}; dwr.util._isObject = function(data) { return (data && typeof data == "object");}; dwr.util._isArray = function(data) { return (data && data.join);}; dwr.util._isDate = function(data) { return (data && data instanceof Date);}; dwr.util._importNode = function(doc, importedNode, deep) { var newNode; if (importedNode.nodeType == 1 ) { newNode = doc.createElement(importedNode.nodeName); for (var i = 0; i < importedNode.attributes.length; i++) { var attr = importedNode.attributes[i]; if (attr.nodeValue != null && attr.nodeValue != '') { newNode.setAttribute(attr.name, attr.nodeValue);}
}
if (typeof importedNode.style != "undefined") { newNode.style.cssText = importedNode.style.cssText;}
}
else if (importedNode.nodeType == 3 ) { newNode = doc.createTextNode(importedNode.nodeValue);}
if (deep && importedNode.hasChildNodes()) { for (i = 0; i < importedNode.childNodes.length; i++) { newNode.appendChild(dwr.util._importNode(doc, importedNode.childNodes[i], true));}
}
return newNode;}; dwr.util._debug = function(message, stacktrace) { var written = false; try { if (window.console) { if (stacktrace && window.console.trace) window.console.trace(); window.console.log(message); written = true;}
else if (window.opera && window.opera.postError) { window.opera.postError(message); written = true;}
}
catch (ex) { }
if (!written) { var debug = document.getElementById("dwr-debug"); if (debug) { var contents = message + "<br/>" + debug.innerHTML; if (contents.length > 2048) contents = contents.substring(0, 2048); debug.innerHTML = contents;}
}
}; 