





function DWRUtil()
{
}








DWRUtil._agent = navigator.userAgent.toLowerCase();




DWRUtil._isIE = ((DWRUtil._agent.indexOf("msie") != -1) && (DWRUtil._agent.indexOf("opera") == -1));








DWRUtil.isArray = function(data)
{
return data.join ? true : false;
};








DWRUtil.isDate = function(data)
{
return data.toUTCString ? true : false;
};





DWRUtil.getElementById = function(id)
{
if (document.getElementById)
{
return document.getElementById(id);
}

if (document.all)
{
return document.all[id];
}

throw "Can't use document.getElementById or document.all";
};





DWRUtil.showById = function(id)
{
var ele = DWRUtil.getElementById(id);
if (ele == null)
{
alert("showById() can't find an element with id: " + id + ".");
throw id;
}


ele.style.display = '';
};





DWRUtil.hideById = function(id)
{
var ele = DWRUtil.getElementById(id);
if (ele == null)
{
alert("hideById() can't find an element with id: " + id + ".");
throw id;
}

ele.style.display = 'none';
};





DWRUtil.toggleDisplay = function(id)
{
var ele = DWRUtil.getElementById(id);
if (ele == null)
{
alert("toggleDisplay() can't find an element with id: " + id + ".");
throw id;
}

if (ele.style.display == 'none')
{

ele.style.display = '';
}
else
{
ele.style.display = 'none';
}
};








DWRUtil.onReturn = function(event, action)
{
if (!event)
{
event = window.event;
}

if (event && event.keyCode && event.keyCode == 13)
{
action();
}
};





DWRUtil.setCSSClass = function(id, cssclass)
{
var ele = DWRUtil.getElementById(id);
if (ele == null)
{
alert("setCSSClass() can't find an element with id: " + id + ".");
throw id;
}

if (ele)
{
ele.className = cssclass;
}
};







DWRUtil.clearChildNodes = function(id)
{
var ele = DWRUtil.getElementById(id);
if (ele == null)
{
alert("clearChildNodes() can't find an element with id: " + id + ".");
throw id;
}

while (ele.childNodes.length > 0)
{
ele.removeChild(ele.firstChild);
}
};




























DWRUtil.fillList = function(id, data, valueprop, textprop)
{
var ele = DWRUtil.getElementById(id);
if (ele == null)
{
alert("fillList() can't find an element with id: " + id + ".");
throw id;
}

if (!DWRUtil.isHTMLSelectElement(ele))
{
alert("fillList() can only be used with select elements. Attempt to use: " + DWRUtil.detailedTypeOf(ele));
throw ele;
}


ele.options.length = 0;


if (data == null)
{
return;
}


for (var i = 0; i < data.length; i++)
{
var text;
var value;

if (valueprop != null)
{
if (textprop != null)
{
text = data[i][textprop];
value = data[i][valueprop];
}
else
{
value = data[i][valueprop];
text = value;
}
}
else
{
if (textprop != null)
{
text = data[i][textprop];
value = text;
}
else
{
text = DWRUtil.toDescriptiveString(data[i]);
value = text;
}
}

var opt = new Option(text, value);
ele.options[ele.options.length] = opt;
}
};























DWRUtil.drawTable = function(tbodyID, data, cellFuncs)
{


if (navigator.product && navigator.product == "Gecko")
{
setTimeout(function() { DWRUtil._drawTableInner(tbodyID, data, cellFuncs); }, 0);
}
else
{
DWRUtil._drawTableInner(tbodyID, data, cellFuncs);
}
};






DWRUtil._drawTableInner = function(tbodyID, data, cellFuncs)
{
var frag = document.createDocumentFragment();

if (DWRUtil.isArray(data))
{

for (var i = 0; i < data.length; i++)
{
DWRUtil._drawRowInner(frag, data[i], cellFuncs);
}
}
else if (typeof data == "object")
{
for (var row in data)
{
DWRUtil._drawRowInner(frag, row, cellFuncs);
}
}

var tbody = DWRUtil.getElementById(tbodyID);
tbody.appendChild(frag);
};





DWRUtil._drawRowInner = function(frag, row, cellFuncs)
{
var tr = document.createElement("tr");

for (var j = 0; j < cellFuncs.length; j++)
{
var func = cellFuncs[j];
var td;

if (typeof func == "string")
{
td = document.createElement("td");
var text = document.createTextNode(func);
td.appendChild(text);
tr.appendChild(td);
}
else
{
var reply = func(row);

if (DWRUtil.isHTMLElement(reply, "td"))
{
td = reply;
}
else if (DWRUtil.isHTMLElement(reply))
{
td = document.createElement("td");
td.appendChild(reply);
}
else
{
td = document.createElement("td");
td.innerHTML = reply;


}

tr.appendChild(td);
}
}

frag.appendChild(tr);
};






DWRUtil.setEnabled = function(id, state)
{
var ele = DWRUtil.getElementById(id);
if (ele == null)
{
alert("setEnabled() can't find an element with id: " + id + ".");
throw id;
}






ele.disabled = !state;
ele.readonly = !state;
if (DWRUtil._isIE)
{
if (state)
{
ele.style.backgroundColor = "White";
}
else
{

ele.style.backgroundColor = "Scrollbar";
}
}
};








DWRUtil.selectRange = function(id, start, end)
{
var ele = DWRUtil.getElementById(id);
if (ele == null)
{
alert("selectRange() can't find an element with id: " + id + ".");
throw id;
}

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();
};






DWRUtil.isHTMLElement = function(ele, nodeName)
{
if (nodeName == null)
{


return ele != null &&
typeof ele == "object" &&
ele.nodeName != null;
}
else
{
return ele != null &&
typeof ele == "object" &&
ele.nodeName != null &&
ele.nodeName.toLowerCase() == nodeName.toLowerCase();
}
};




DWRUtil.isHTMLInputElement = function(ele)
{
return DWRUtil.isHTMLElement(ele, "input");
};




DWRUtil.isHTMLTextAreaElement = function(ele)
{
return DWRUtil.isHTMLElement(ele, "textarea");
};




DWRUtil.isHTMLSelectElement = function(ele)
{
return DWRUtil.isHTMLElement(ele, "select");
};







DWRUtil.setValue = function(id, val)
{
if (val == null)
{
val = "";
}

var ele = DWRUtil.getElementById(id);
if (ele == null)
{
alert("setValue() can't find an element with id: " + id + ".");
throw id;
}

if (DWRUtil.isHTMLSelectElement(ele))
{

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;
break;
}
}

return;
}

if (DWRUtil.isHTMLInputElement(ele))
{
switch (ele.type)
{
case "checkbox":
case "check-box":
case "radio":
ele.checked = (val == true);
return;

case "hidden":
case "text":
ele.value = val;
return;

default:
alert("Not sure how to setValue on a input element of type " + ele.type);
ele.value = val;
return;
}
}

if (DWRUtil.isHTMLTextAreaElement(ele))
{
ele.value = val;
return;
}

if (DWRUtil.isHTMLElement(ele))
{
ele.innerHTML = val;
return;
}

alert("Not sure how to setValue on a " + ele);
ele.innerHTML = val;
};







DWRUtil.getValue = function(id)
{
var ele = DWRUtil.getElementById(id);
if (ele == null)
{
alert("getValue() can't find an element with id: " + id + ".");
throw id;
}

if (DWRUtil.isHTMLSelectElement(ele))
{


var sel = ele.selectedIndex;
if (sel != -1)
{
var reply = ele.options[sel].value;
if (reply == null || reply == "")
{
reply = ele.options[sel].text;
}

return reply;
}
else
{
return "";
}
}

if (DWRUtil.isHTMLInputElement(ele))
{
switch (ele.type)
{
case "checkbox":
case "check-box":
case "radio":
return ele.checked;

case "hidden":
case "text":
return ele.value;

default:
alert("Not sure how to getValue on a input element of type " + ele.type);
return ele.value;
}
}

if (DWRUtil.isHTMLTextAreaElement(ele))
{
return ele.value;
}

if (DWRUtil.isHTMLElement(ele))
{
return ele.innerHTML;
}

alert("Not sure how to getValue from a " + ele);
return ele.innerHTML;
};

DWRUtil.getText = function(id)
{
var ele = DWRUtil.getElementById(id);
if (ele == null)
{
alert("getText() can't find an element with id: " + id + ".");
throw id;
}

if (!DWRUtil.isHTMLSelectElement(ele))
{
alert("getText() can only be used with select elements. Attempt to use: " + DWRUtil.detailedTypeOf(ele));
throw ele;
}

var sel = ele.selectedIndex;
if (sel != -1)
{
return ele.options[sel].text;
}
else
{
return "";
}
};

DWRUtil.setValues = function(map)
{
for (var property in map)
{


var ele = DWRUtil.getElementById(property);
if (ele == null)
{
alert("setValues() can't find an element with id: " + property + ".");
throw property;
}

var value = map[property];
DWRUtil.setValue(property, value);
}
};

DWRUtil.callOnLoad = function(load)
{
if (window.addEventListener)
{
window.addEventListener("load", load, false);
}
else if (window.attachEvent)
{
window.attachEvent("onload", load);
}
else
{
window.onload = load;
}
};

DWRUtil.alternateRowColors = function()
{
var tables = document.getElementsByTagName("table");
var rowCount = 0;

for (var i = 0; i < tables.length; i++)
{
var table = tables.item(i);
var rows = table.getElementsByTagName("tr");

for (var j = 0; j < rows.length; j++)
{
var row = rows.item(j);
if (row.className == "zebra")
{
if (rowCount % 2)
{
row.className = 'oddrow';
}
else
{
row.className = 'evenrow';
}

rowCount++;
}
}

rowCount = 0;
}
};





DWRUtil.toDescriptiveString = function(data)
{
var reply = "";
var i = 0;
var value;

if (DWRUtil.isArray(data))
{
reply = "[";
for (i = 0; i < data.length; i++)
{
value = "" + data[i];
if (value.length > 13)
{
value = value.substring(0, 10) + "...";
}

reply += value;
reply += ", ";

if (i > 5)
{
reply += "...";
break;
}
}
reply += "]";

return reply;
}

if (typeof data == "string" || typeof data == "number" || DWRUtil.isDate(data))
{
return data.toString();
}

if (typeof data == "object")
{
var typename = DWRUtil.detailedTypeOf(data);
if (typename != "Object")
{
reply = typename + " ";
}
reply += "{";

for (var prop in data)
{
value = "" + data[prop];
if (value.length > 13)
{
value = value.substring(0, 10) + "...";
}

reply += prop;
reply += ":";
reply += value;
reply += ", ";

i++;
if (i > 5)
{
reply += "...";
break;
}
}

reply += "}";

return reply;
}

return data.toString();
};





DWRUtil.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;
};




DWRUtil.useLoadingMessage = function()
{
var 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('Loading');
messageZone.appendChild(text);

DWRUtil.hidePleaseWait();

DWREngine.setPreHook(DWRUtil.showPleaseWait);
DWREngine.setPostHook(DWRUtil.hidePleaseWait);
};





DWRUtil.showPleaseWait = function()
{
DWRUtil.getElementById('disabledZone').style.visibility = 'visible';
};





DWRUtil.hidePleaseWait = function()
{
DWRUtil.getElementById('disabledZone').style.visibility = 'hidden';
};






DWRUtil._deprecated = function(fname)
{
alert("Utility functions like " + fname + "() are deprecated. Please convert to the DWRUtil.xxx() versions");
};



