// ******************************* 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; }