// ******************************* DYNFORMS.JS *****************************
// *
// * Description: Client-side JavaScript functions.
// *
// * To include in HTML file use:
// *
// *
// *
// *
// * --------------------------------------------------------------------------
// * --------------------------------------------------------------------------
// * (Web) Settings access
function settingsRefreshInterval()
{
return 1000 * 1;
}
// * --------------------------------------------------------------------------
// * Array generation
function genArrayInt(start, end)
{
var a = new Array(end-start+1);
var i;
for(i = 0; i < a.length; i++) {
a[i] = i + start;
}
return a;
}
function genArrayStr(start, end, prefix)
{
var a = new Array(end-start+1);
var i;
for(i = 0; i < a.length; i++) {
var val = String(i + start);
a[i] = prefix ? prefix + val : val;
}
return a;
}
// * --------------------------------------------------------------------------
// * Dynamic forms etc.
// Remove existing content of an element - and return it
function clearChildNodes(elem) {
while (elem.childNodes.length > 0) {
elem.removeChild(elem.firstChild);
}
return elem;
}
function addCell(tr, td, content)
{
td.appendChild(content); // Add content to cell
tr.appendChild(td); // Add cell to row
}
function CreateStyledElement(element, style)
{
var elm = document.createElement(element);
elm.setAttribute("class", style); // For FF
elm.setAttribute("className", style); // For MSIE
return elm;
}
function CreateTd(style)
{
return CreateStyledElement("td", style);
}
function addTypedTextCell(tr, type, value, style, colspan)
{
var cell = CreateStyledElement(type, style);
if(colspan)
cell.setAttribute("colSpan", colspan);
addCell(tr, cell, document.createTextNode(value));
return cell;
}
function addTextCell(tr, value, style, colspan)
{
return addTypedTextCell(tr, "td", value, style, colspan);
}
function addTextHeaderCell(tr, value, style, colspan)
{
return addTypedTextCell(tr, "th", value, style, colspan);
}
function addLabelTextCell(tr, value, style, id)
{
var td = CreateTd(style);
var label = document.createElement("label");
label.setAttribute("for", id);
addCell(td, label, document.createTextNode(value));
tr.appendChild(td);
return td;
}
function addCheckBoxCell(tr, value, style, name)
{
var td = CreateTd(style);
var field = document.createElement("input");
field.type = "checkbox";
field.id = field.name = name;
addCell(tr, td, field);
if(value) {
field.setAttribute("checked", true); // FF
field.setAttribute("defaultChecked", true); // MSIE+W3C
}
return field;
}
function addSelectCell(tr, oT, oV, value, style, name)
{
var td = CreateTd(style);
var field = document.createElement('select');
field.id = field.name = name;
var x;
for (x=0; x < oT.length; x++) {
var optionItem = document.createElement('option');
optionItem.value = oV[x];
if(value == optionItem.value) {
optionItem.setAttribute("selected", true);
optionItem.setAttribute("defaultSelected", true);
}
optionItem.appendChild(document.createTextNode(oT[x]));
field.appendChild(optionItem);
}
addCell(tr, td, field);
return field;
}
function addInputCell(tr, value, style, name, size)
{
var td = CreateTd(style);
var field = document.createElement('input');
field.id = field.name = name;
field.setAttribute("size", size);
field.setAttribute("value", value);
field.setAttribute("defaultValue", value);
addCell(tr, td, field);
return field;
}
function addInputAreaCell(tr, value, style, name, col_size, row_size)
{
var td = CreateTd(style);
var field = document.createElement('textarea');
field.id = field.name = name;
field.setAttribute("rows", row_size);
field.setAttribute("cols", col_size);
field.value = value;
field.defaultValue = value;
addCell(tr, td, field);
return field;
}
function addHiddenInputCell(tr, value, style, name, size)
{
var td = CreateTd(style);
var field = document.createElement('input');
field.id = field.name = name;
field.setAttribute("size", size);
field.setAttribute("value", value);
field.setAttribute("defaultValue", value);
field.type = 'hidden';
addCell(tr, td, field);
return field;
}
function addPasswordCell(tr, value, style, name, size)
{
var td = CreateTd(style);
var field = document.createElement('input');
field.type = 'password';
field.id = field.name = name;
field.setAttribute("size", size);
field.setAttribute("value", value);
field.setAttribute("defaultValue", value);
addCell(tr, td, field);
return field;
}
function addImageCell(tr, style, src, text)
{
var td = CreateTd(style);
var field = document.createElement('img');
field.src = src;
field.border = 0;
field.title = field.alt = text;
addCell(tr, td, field);
return field;
}
function addRadioCell(tr, value, style, name, id)
{
var td = CreateTd(style);
var field=document.createElement(document.all?'':'input');
field.id = id;
field.name = name;
field.type = "radio";
field.setAttribute("value",id);
addCell(tr, td, field);
if (value) {
field.setAttribute("checked", "checked");
field.setAttribute("defaultChecked", "checked"); // MSIE+W3C
}
return field;
}
function addLink(tr, style, url, text, target)
{
// default vlaue
var target = (target == null) ? "" : target;
var td = CreateStyledElement("td", style);
var link = document.createElement("a");
link.href = url;
link.target = target;
link.appendChild(document.createTextNode(text)); // Add Text
td.appendChild(link); // Add link to cell
tr.appendChild(td); // Add cell to row
}
function addHiddenParam(form, name, value)
{
var field = document.createElement('input');
field.type = 'hidden';
field.id = field.name = name;
field.value = value;
form.appendChild(field); // Add cell to row
return field;
}
function addButtonCell(tr, value, style, name)
{
var td = CreateTd(style);
var field = document.createElement('input');
field.id = field.name = name;
field.type = "button";
field.value = value;
addCell(tr, td, field);
return field;
}
/* URL argument extraction */
function getParamFromURL(url, name)
{
var arg_ix = url.indexOf('?');
if (arg_ix != -1) {
var args = url.substring(arg_ix+1, document.URL.length);
var tups = args.split('&');
var i;
for(i = 0; i < tups.length; i++) {
var tup = tups[i].split('=');
if(tup.length == 2)
if(tup[0] == name)
return tup[1];
}
}
}
/* Update functions - previously in ajax.js */
function a2s(aText, val)
{
if(aText[val]){
return aText[val];
}
return "undefined (" + String(val) + ")";
}
function UpdateId(id, val)
{
var elm = document.getElementById(id);
if(elm) {
elm.innerHTML = val;
}
return elm;
}
function UpdateIdValue(id, val)
{
var elm = document.getElementById(id);
if(elm) {
elm.value = val;
elm.defaultValue = val;
}
return elm;
}
function UpdateIdChecked(id, val)
{
var elm = document.getElementById(id);
if(elm) {
elm.checked = val;
if(val) {
elm.setAttribute("checked", "checked");
elm.setAttribute("defaultChecked", "checked"); // MSIE+W3C
}
}
return elm;
}
function UpdateIdSelect(id, oT, oV, value)
{
var elm = document.getElementById(id);
if(elm) {
clearChildNodes(elm);
for (var x=0; x < oT.length; x++) {
var optionItem = document.createElement('option');
optionItem.value = oV[x];
if(value == optionItem.value) {
optionItem.setAttribute("selected", true);
optionItem.setAttribute("defaultSelected", true);
}
optionItem.appendChild(document.createTextNode(oT[x]));
elm.appendChild(optionItem);
}
}
return elm;
}
function UpdateIdSetSelect(id, value)
{
var elm = document.getElementById(id);
if(elm && elm.options) {
for (var i = 0; i < elm.options.length; i++) {
var opt = elm.options[i];
var sel = (opt.value == value);
opt.selected = sel;
opt.defaultSelected = sel;
if (sel)
elm.selectedIndex = i;
}
}
return elm;
}
function UpdateIdGroupedSelect(id, oG, oE, sep, value)
{
var elm = document.getElementById(id);
if(elm) {
clearChildNodes(elm);
for (var g = 0; g < oG.length; g++) {
var groupItem = document.createElement('optgroup');
groupItem.setAttribute("label", oG[g]);
for (var x = 0; x < oE[g].length; x++) {
var optionItem = document.createElement('option');
var tuple = oE[g][x].split(sep);
optionItem.value = tuple[0];
if(value == optionItem.value) {
optionItem.setAttribute("selected", true);
optionItem.setAttribute("defaultSelected", true);
}
optionItem.appendChild(document.createTextNode(tuple[1]));
groupItem.appendChild(optionItem);
}
elm.appendChild(groupItem);
}
}
return elm;
}
function searchArgs(search)
{
var tups = search.substring(1).split('&');
var args = new Array();
for(var i = 0; i < tups.length; i++) {
var tup = tups[i].split('=');
if(tup.length == 2)
args[tup[0]] = tup[1];
else
args[tup[0]] = 1;
}
return args;
}
function SetVisible(name, visible)
{
var elm = document.getElementById(name);
if(visible)
elm.style.display = '';
else
elm.style.display = 'none';
}
function poag2portid(port)
{
var portid = port.match(/^\d+$/) ? configPortName(port, 0) : port;
return portid;
}