﻿
var ajaxForms = new Object();

ajaxForms.getData = function (obj) {
var n, aList, elem, val;
var xData = ajaxForms._getXMLDOM("<data></data>");
var xNode;
obj = ajaxForms._getFormObj("ajaxForms.getData", obj);
aList = obj.getElementsByTagName("INPUT");
for (n = 0; n < aList.length; n++) {
elem = aList[n];
if ((elem.name != null) && (elem.name != "") && (elem.name.charAt(0) != "_")) {
if (elem.getData != null) {
val = elem.getData();
} else if (elem.type == "text") {
val = elem.value;
} else if (elem.type == "checkbox") {
val = elem.checked;
} else {
val = "";
}
xNode = xData.documentElement.appendChild(xData.createElement(elem.name));
xNode.appendChild(xData.createTextNode(val));
}
}
aList = obj.getElementsByTagName("TEXTAREA");
for (n = 0; n < aList.length; n++) {
elem = aList[n];
if ((elem.name != null) && (elem.name != "")) {
if (elem.getData != null) {
val = elem.getData();
} else {
val = elem.value;
}
xNode = xData.documentElement.appendChild(xData.createElement(elem.name));
xNode.appendChild(xData.createTextNode(val));
}
}
aList = obj.getElementsByTagName("SELECT");
for (n = 0; n < aList.length; n++) {
elem = aList[n];
if ((elem.name != null) && (elem.name != "")) {
if (elem.getData != null) {
val = elem.getData();
} else {
val = elem.value;
}
xNode = xData.documentElement.appendChild(xData.createElement(elem.name));
xNode.appendChild(xData.createTextNode(val));
}
}
return(xData);
}

ajaxForms.setData = function(data, obj) {
var n, aList, dataElements;
var xData, xElem, val;
obj = ajaxForms._getFormObj("ajaxForms.setData", obj);
if (data == null)
throw new Error("ajaxForms.setData: Argument 'data' must be set.");
if (typeof(data) == "string")
xData = ajaxForms._getXMLDOM(data);
else
xData = data;
dataElements = new Array();
aList = obj.getElementsByTagName("INPUT");
for (n = 0; n < aList.length; n++)
dataElements.push(aList[n]);
aList = obj.getElementsByTagName("TEXTAREA");
for (n = 0; n < aList.length; n++)
dataElements.push(aList[n]);
aList = obj.getElementsByTagName("SELECT");
for (n = 0; n < aList.length; n++) {
dataElements.push(aList[n]);
}
aList = obj.getElementsByTagName("SPAN");
for (n = 0; n < aList.length; n++)
dataElements.push(aList[n]);
for (n = 0; n < dataElements.length; n++) {
elem = dataElements[n];
if ((elem.name != null) && (elem.name != "")) {
xElem = xData.documentElement.getElementsByTagName(elem.name);
if ((xElem.length == 0) || (xElem[0].firstChild == null)) {
} else {
val = xElem[0].firstChild.nodeValue;
if (elem.setData != null) {
elem.setData(val);
} else if ((elem.tagName == "INPUT") && (elem.type == "text")) {
if (elem.value != val) elem.value = val;
} else if ((elem.tagName == "INPUT") && (elem.type == "checkbox")) {
elem.checked = (val.toLowerCase() == "true");
} else if ((elem.tagName != "SPAN") && (elem.value != val)) {
elem.value = val;
}
}
}
}
ajaxForms.clearErrors(obj);
}

ajaxForms.clearData = function(obj) {
var n, aList, elem;
obj = ajaxForms._getFormObj("ajaxForms.clearData", obj);
elem = document.getElementById("pageheader");
if (elem) {
elem.innerHTML = "<h1>" + elem.innerText.split(":")[0] + ": </h1>";
}
aList = obj.getElementsByTagName("INPUT");
for (n = 0; n < aList.length; n++) {
if ((aList[n].name != null) && (aList[n].name != "")) {
if (aList[n].type == "text") {
aList[n].value = "";
} else if (aList[n].type == "checkbox") {
aList[n].checked = false;
}
}
}
aList = obj.getElementsByTagName("TEXTAREA");
for (n = 0; n < aList.length; n++) {
if ((aList[n].name != null) && (aList[n].name != "")) {
aList[n].value = "";
}
}
aList = obj.getElementsByTagName("SELECT");
for (n = 0; n < aList.length; n++) {
if ((aList[n].name != null) && (aList[n].name != "")) {
aList[n].value = "";
for (o = 0; o < aList[n].options.length; o++) {
if (aList[n].options[o].defaultSelected) {
aList[n].selectedIndex = o;
break;
}
}
}
}
aList = obj.getElementsByTagName("IMG");
for (n = 0; n < aList.length; n++) {
if ((aList[n].className != null) && (aList[n].className != "" && aList[n].className == "THUMB")) {
aList[n].src = "../images/thumbs/de/default.gif";
}
}
elem = document.getElementById("matrix");
if (elem != null && elem.id != "" && elem.id == "matrix") {
elem.style.display = "none";
}
aList = obj.getElementsByTagName("IFRAME");
for (n = 0; n < aList.length; n++) {
if ((aList[n].name != null) && (aList[n].name != "")) {
aList[n].src = "about:blank";
}
}
try {
var allfctions = document.getElementById("ctl00_ContentPlaceHolder1_Menue").getElementsByTagName("IMG");
for (var i = 1; i < allfctions.length; i++) {
if (allfctions[i].id != "add_img" && allfctions[i].id != "list_img") {
allfctions[i].style.display = "none";
}
} // for
allfctions = document.getElementById("ctl00_ContentPlaceHolder1_Menue").getElementsByTagName("LABEL");
for (var i = 1; i < allfctions.length; i++) {
if (allfctions[i].id != "add_lbl" && allfctions[i].id != "list_lbl") {
allfctions[i].style.display = "none";
}
} // for
} catch(e) {
}
ajaxForms.clearErrors(obj);
}

ajaxForms.resetData = function(obj) {
var n, aList;
obj = ajaxForms._getFormObj("ajaxForms.resetData", obj);
aList = obj.getElementsByTagName("INPUT");
for (n = 0; n < aList.length; n++) {
if ((aList[n].name != null) && (aList[n].name != "")) {
if (aList[n].type == "text") {
aList[n].value = aList[n].defaultValue;
} else if (aList[n].type == "checkbox") {
aList[n].checked = aList[n].defaultSelected;
}
}
}
aList = obj.getElementsByTagName("TEXTAREA");
for (n = 0; n < aList.length; n++) {
if ((aList[n].name != null) && (aList[n].name != "")) {
aList[n].value = aList[n].defaultValue;
}
}
aList = obj.getElementsByTagName("SELECT");
for (n = 0; n < aList.length; n++) {
if ((aList[n].name != null) && (aList[n].name != ""))
for (o = 0; o < aList[n].options.length; o++) {
if (aList[n].options[o].defaultSelected) {
aList[n].selectedIndex = o;
break;
}
}
}
ajaxForms.clearErrors(obj);
}

ajaxForms.processException = function(ex, obj) {
var txt = ex.description;
if ((ex.message == "soap:Server") && (txt != null) && (txt.indexOf("System.ArgumentException: ") > 0)) {
obj = ajaxForms._getFormObj("ajaxForms.processException", obj);
txt = txt.substr(txt.indexOf("System.ArgumentException: ") + 26).split('\n');
var param = txt[1].substr(txt[1].indexOf(':')+2);
var aList = document.getElementsByTagName("SPAN");
for (var n = 0; n < aList.length; n++) {
if ((aList[n].className == "AJAXFORMEXCEPTION") && (aList[n].getAttribute("name") == param)) {
aList[n].style.display = "inline";
aList[n].innerText = txt[0];
aList[n].textContent = txt[0];
break;
}
}
} else {
proxies.alertException(ex);
}
}

ajaxForms.clearErrors = function(obj) {
var n;
var aList = document.getElementsByTagName("SPAN");
for (n = 0; n < aList.length; n++) {
if (aList[n].className == "AJAXFORMEXCEPTION") {
aList[n].style.display = "none";
aList[n].innerText = "";
aList[n].textContent = "";
}
}
}

ajaxForms._getFormObj = function(txt, obj) {
if (obj == null)
throw new Error(txt + ": Argument 'obj' must be set.");
if (obj.constructor == String)
obj = document.getElementById(obj);
if (obj == null)
throw new Error(txt + ": Argument 'obj' is unknown.");
return(obj);
}

ajaxForms._getXMLDOM = function (xmlText) {
var obj = null;
if (typeof(DOMParser) != "undefined") {
var parser = new DOMParser();
obj = parser.parseFromString(xmlText, "text/xml");
} else {    
try {
obj = new ActiveXObject("MSXML2.DOMDocument");
} catch (e) { }
if (obj == null) {
try {
obj = new ActiveXObject("Microsoft.XMLDOM");
} catch (e) { }
}
if (obj != null) {
obj.async = false;
obj.validateOnParse = false;
}
obj.loadXML(xmlText);
}
return(obj);
}
// These functions are used for formatting values (number, dates...) to human readable strings
// current: German: de
var nls = {
string: {
title: "Geben Sie einen Wert ein.",
toString: function(v) { return(v); },
toValue: function(s) { return(s); }
},
int: {
title: "Geben Sie einen ganzzahligen Wert ein.",
keys: "-0123456789",
toString: function(v) { return(v); },
toValue: function(s) { return(s); }
},

decimal: {
title: "Geben Sie einen Wert mit optionalen Nachkommastellen in der Form '123.456,78' ein.",
keys: ",-0123456789", mapkeys: ". ",
toString: function(v, l) {
var s = String(v);
var p = parseInt(l);
if (p == null) {
} else if (p <= 0) {
s = s.replace(/\..*$/g, '');
} else { 
if (s.indexOf('.') < 0)
s = s + '.';
s = s + '0000000000';
s = s.substr(0, s.indexOf('.') + p + 1);
}
s = s.replace(/\./g, ',');
s = s.replace(/(\d{1,})(\d{3})(\d{3})(,|$)/, "$1.$2.$3$4");
s = s.replace(/(\d{1,})(\d{3})(,|$)/, "$1.$2$3");
return(s); 
},
toValue: function(s, p) { 
s = String(s);
s = s.replace(/\./g, '');
s = s.replace(/\,/g, '.');
return(s);
}
},
date: {
title: "Geben Sie ein Datum in der Form 'tt.mm.jjjj' ein.",
keys: ".0123456789", mapkeys: ",",
toString: function(v) {
var s = "";
if ((v != null) && (v.constructor == Date))
s = nls.d2(v.getDate()) + "." + nls.d2(v.getMonth()+1) + "." + v.getFullYear();
return(s);
},
toValue: function(s) {
var d = null;
if ((s == null) || (s == "")) {
return(d);
} else if (s == "*") {
d = new Date();
} else if (s.match(/^\d+\.\d+\.\d+^/)) {
s = s.split('.');
d = new Date(parseInt(s[2], 10), parseInt(s[1], 10)-1, parseInt(s[0], 10), 0, 0, 0);
} else if (s.match(/^\d+\.\d+\.?$/)) {
s = s.split('.');
d = new Date((new Date().getFullYear()), parseInt(s[1], 10)-1, parseInt(s[0], 10), 0, 0, 0);
} else if (s.match(/^\d{4}$/)) {
d = new Date((new Date().getFullYear()), parseInt(s.substr(2, 2), 10)-1, parseInt(s.substr(0, 2), 10), 0, 0, 0);
} else if (s.match(/^\d{6}$/)) {
d = new Date(parseInt(s.substr(4, 2), 10), parseInt(s.substr(2, 2), 10)-1, parseInt(s.substr(0, 2), 10), 0, 0, 0);
} else if (s.match(/^\d{8}$/)) {
d = new Date(parseInt(s.substr(4, 4), 10), parseInt(s.substr(2, 2), 10)-1, parseInt(s.substr(0, 2), 10), 0, 0, 0);
}
return(d);
},
firstDayOfWeek: 1,
weekdayName: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
monthName: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]
},

d2: function(d) {
d = String(d);
if (d.length == 0)
d = "00";
else if (d.length == 1)
d = "0" + d;
return(d);
}
}

ajaxForms.rowscount = 0;
ajaxForms._tagIn = new Array();
ajaxForms._tagOut = new Array();
ajaxForms._types = null;
ajaxForms._nulls = null;
ajaxForms._lens = null;


ajaxForms.readData = function (xdata, rootfrm) 
{
//  var _tagIMG    = new Array();
//  var _WebAppRoot;
if (xdata && rootfrm) {
rootfrm = document.getElementById(rootfrm);
ajaxForms._analyseForm(rootfrm);
ajaxForms._readData(xdata, rootfrm);
}
return ajaxForms.rowscount;
}


ajaxForms._analyseForm = function(root)
{
var node = root.firstChild;
var s;
while (node != null) {
s = node.className;
if ((node.name != null) && (node.name != "")) {
s = node.tagName;
if ((s == "INPUT") ||(s == "TEXTAREA") || (s == "SELECT")) {
ajaxForms._tagIn[ajaxForms._tagIn.length] = node;
} else if ((s == "DIV") && ((node.className == "IMSHTMLTEXT") || (node.className == "IMSDATAPART"))) {
ajaxForms._tagIn[ajaxForms._tagIn.length] = node;
} else if ((s == "SPAN") || (s == "TD")) {
ajaxForms._tagOut[ajaxForms._tagOut.length] = node;
} else {
ajaxForms._analyseForm(node);
}
} else {
ajaxForms._analyseForm(node);
}
node = node.nextSibling;
}
}


ajaxForms._readData = function(xdata, rootfrm)
{
var zRow = null;
xdata = ajaxForms._getXMLDOM(xdata);
if (xdata == null) {
xdata = xmlRoot;
}
xmlRoot = xdata;
if (xdata != null) {
ajaxForms._prepareTypes(xdata.selectSingleNode(".//s:Schema"));
zRow = xdata.selectSingleNode(".//z:row | .//row");
if (zRow == null) {
if (xdata.nodeType == 9) {
zRow = xdata.createElement("z:row");
} else {
zRow = xdata.ownerDocument.createElement("z:row");
}
}
ajaxForms._fillForm(xdata, rootfrm);
}
if (rootfrm.onFormSet) {
try {
eval("window." + rootfrm.onFormSet)(rootfrm);
} catch(e) {}
}
dbfo.checkAllowed();
}


ajaxForms._prepareTypes = function(schema)
{
var n, colname, dtype, attrList;
if ((schema != null) && (ajaxForms._types == null)) {
attrList = schema.selectNodes("./s:ElementType/s:AttributeType");
ajaxForms._types = new Array();
ajaxForms._nulls = new Array();
ajaxForms._lens = new Array();
for (n = 0; n < attrList.length; n++) {
colname = attrList[n].getAttribute("name");
dtype = attrList[n].selectSingleNode("./s:datatype");
ajaxForms._types[colname] = dtype.getAttribute("dt:type");
ajaxForms._nulls[colname] = ( dtype.getAttribute("rs:maybenull") != "false") ;
if (ajaxForms._types[colname] == "string") {
ajaxForms._lens[colname] = dtype.getAttribute("dt:maxLength");
} else if (ajaxForms._types[colname] == "number") {
ajaxForms._lens[colname] = new Array(2);
ajaxForms._lens[colname][0] = dtype.getAttribute("rs:precision");
ajaxForms._lens[colname][1] = dtype.getAttribute("rs:scale");
}
}
}
}


ajaxForms._fillForm = function(xrec, rootobj)
{
var col;
var n, s, txt;
var xmlType;
var fmt;
var t, objList, objnr, obj, nam;
if ((rootobj != null) && (xrec != null)) {
ajaxForms.rowscount = xrec.lastChild.lastChild.childNodes.length;
objList = ajaxForms._tagIn.concat(ajaxForms._tagOut);
for (objnr = 0; objnr < objList.length; objnr++) {
obj = objList[objnr];
nam = obj.name;
if ((nam == null) || (nam == "")) continue;
col = xrec.lastChild.lastChild.firstChild.attributes.getNamedItem(nam);
xmlType = ((ajaxForms._types == null) ? ((obj.dtType == null) ? "string" : obj.dtType) : ajaxForms._types[nam]);
fmt = ((obj.dtType != null) ? obj.dtType : xmlType);
obj._dtdt = xmlType;
if (col == null) {
ajaxForms._fillTag(obj, "");
} else {
if ((ajaxForms._types == null) || (fmt == null) || (fmt == "") || (fmt == "string")) {
ajaxForms._fillTag(obj, col.nodeValue);
} else if ((fmt == "number") && (ajaxForms._lens[nam] != null)) {
col.dataType = fmt;
txt = nls.decimal.toString(parseFloat(col.nodeTypedValue), ajaxForms._lens[nam][1]);
ajaxForms._fillTag(obj, txt);
} else {
try {
if ((xmlType == "dateTime") && (col.nodeValue.length > 19)) {
col.nodeValue = col.nodeValue.substr(0, 19);
}
if (xmlType == "dateTime" &&  col.nodeValue.indexOf("T") > 0) {
var dateparts = col.nodeValue.split("T")[0].split("-");
col.nodeValue = dateparts[2] + "." + dateparts[1] + "." + dateparts[0]; // TODO: localization
}
if (xmlType != null) {
col.dataType = xmlType;
}
txt = _formatXMLValue(fmt, col.nodeTypedValue);
ajaxForms._fillTag(obj, txt);
} catch(e) {
try {
ajaxForms._fillTag(obj, col.nodeValue);
} catch(e) {};
}
}
}
if ((ajaxForms._nulls != null) && (ajaxForms._nulls[nam] == false) && (obj.notNull != "false")) {
obj.notNull = "1"; 
if (obj.className == "") {
obj.className = "NOTNULL";
}
}
}
}
n = xrec.lastChild.lastChild.firstChild.attributes.getNamedItem("id");
if (n == null) {
n = xrec.lastChild.lastChild.firstChild.attributes.getNamedItem("ID");
}
if (n != null) {
rootobj._id = n;
}
n = xrec.lastChild.lastChild.firstChild.attributes.getNamedItem("timestamp");
if (n == null) {
n = xrec.lastChild.lastChild.firstChild.attributes.getNamedItem("TIMESTAMP");
}
if (n != null) {
rootobj._ts = n;
}
if (rootobj.onFormReady != null) {
try {
eval("window." + rootobj.onFormReady)(rootobj);
} catch(e) {
askException(e.description);
}
}
}


ajaxForms._fillTag = function(obj, txt)
{
var dtdt;
var tn = obj.tagName;
txt = txt.replace(/[\s\xA0]+$/, "");
txt = txt.replace(/%28/g, "(").replace(/%29/g, ")");
if (tn  == "INPUT") {
if (obj.type == "checkbox") {
obj.checked = ((txt == '1') || (txt.toLowerCase() == 'true'));
} else if (obj.type == "radio") {
obj.checked = (txt == obj.value);
} else {
dtdt = obj._dtdt;
if ((dtdt == "number") || (dtdt == "i2") || (dtdt == "i4") || (dtdt == "int")
&& (obj.currentStyle.textAlign != "right"))
obj.runtimeStyle.textAlign = "right";
obj.value = txt;
}
} else if ((tn == "DIV") && (obj.className == "IMSHTMLTEXT")) {
obj.innerHTML = txt.replace(/<\/?script[^>]*>/ig, "");
} else if ((tn == "DIV") && (obj.className == "IMSDATAPART")) {
obj.setValue(txt.replace(/<\/?script[^>]*>/ig, ""));
} else if ((tn  == "SPAN") || (tn == "DIV") || (tn == "TD")) {
obj.innerText = txt;
} else if (tn  == "TEXTAREA") {
obj.value = txt;
} else if (tn == "SELECT") {
var o, cnt = 0;
while ((cnt < obj.options.length) && (obj.options[cnt].value != txt)) {
cnt++;
}
if (cnt < obj.options.length) {
obj.selectedIndex = cnt;
} else {
o = document.createElement("OPTION");
o.text = o.value = txt;
obj.add(o);
obj.selectedIndex = cnt;
}
}
if (obj.onFormSet != null) {
try {
eval("window." + obj.onFormSet)(obj);
} catch(e) {}
}
}
if (!window.ActiveXObject) {
Document.prototype.selectNodes = function(sXPath) {
var oEvaluator = new XPathEvaluator();
var oResult = null;
try {
oResult = oEvaluator.evaluate(sXPath, this, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
} catch (ex) {}
var aNodes = new Array();
if (oResult != null) {
var oElement = oResult.iterateNext();
while(oElement) {
aNodes.push(oElement);
oElement = oResult.iterateNext();
}
}
return aNodes;
}
Document.prototype.selectSingleNode = function(sXPath) {
var oEvaluator = new XPathEvaluator();
var oResult = null;
try {
oResult = oEvaluator.evaluate(sXPath, this, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
} catch (ex) {}
if (oResult != null) {
return oResult.singleNodeValue;
} else {
return null;
}              
}
}

ajaxForms.getDataStr = function (obj) 
{
var n, aList, elem, val, dttype;
var xdata = "<data>";
obj = ajaxForms._getFormObj("ajaxForms.getData", obj);
aList = obj.getElementsByTagName("INPUT");
for (n = 0; n < aList.length; n++) {
elem = aList[n];
if ((elem.name != null) && (elem.name != "") && (elem.name.charAt(0) != "_")) {
if (elem.getData != null) {
val = elem.getData();
} else if (elem.type == "text") {
val = elem.value;
} else if (elem.type == "checkbox") {
val = (elem.checked ? 1 : 0);
} else {
val = "";
}
dttype = ((elem._dtdt && elem._dtdt != "string") ? (dttype = " dttype='" + elem._dtdt + "'") : "");
val = ((elem._dtdt && elem._dtdt == "string") ? ajaxForms.formatForXML(val) : val);
val = ((elem._dtdt && elem._dtdt == "number") ? val.replace(/,/g, ".") : val);
xdata += "<" + elem.name + dttype + ">" + val + "</" + elem.name + ">";
}
}
aList = obj.getElementsByTagName("TEXTAREA");
for (n = 0; n < aList.length; n++) {
elem = aList[n];
if ((elem.name != null) && (elem.name != "") && (elem.name.charAt(0) != "_")) {
if (elem.getData != null) {
val = elem.getData();
} else {
val = elem.value;
}
val = ajaxForms.formatForXML(val);      
xdata += "<" + elem.name + ">" + val + "</" + elem.name + ">";
}
}
aList = obj.getElementsByTagName("SELECT");
for (n = 0; n < aList.length; n++) {
elem = aList[n];
if ((elem.name != null) && (elem.name != "") && (elem.name.charAt(0) != "_")) {
if (elem.getData != null) {
val = elem.getData();
} else {
val = elem.value;
}
dttype = ((elem._dtdt && elem._dtdt != "string") ? (dttype = " dttype='" + elem._dtdt + "'") : "")
xdata += "<" + elem.name + dttype + ">" + val + "</" + elem.name + ">";
}
}
xdata += "</data>";
return(xdata);
}

ajaxForms.formatForXML = function(data) {
  var strdata = data.toString(); // FF
  strdata = strdata.replace(/&/g, "&amp;");
  //strdata = strdata.replace(new RegExp("\"", "g"), "&quot;"); // nur für Attributwerte nötig
  strdata = strdata.replace(new RegExp("'", "g"), "''");
  strdata = strdata.replace(/</g, "&lt;");
  strdata = strdata.replace(/>/g, "&gt;");
  strdata = strdata.replace(/\(/g, "%28");
  strdata = strdata.replace(/\)/g, "%29");
  return (strdata);
}

var dbfo = {
dbcursor: -1,
length: 0,
cobj: null,
idarray: null,
colsel: "",
tab: "",
selected: "",


cursorData: function(tabname, sel, formname)
{
formname = formname ? formname : 'imsform';
tabname = (tabname ? tabname : this.tab);
var schemadata = proxies.DBUse.GetComplete(tabname, sel);
ajaxForms.readData(schemadata, formname);
this.cobj.value = this.dbcursor+1 + " / " + this.length;
if (typeof setIframeSrc == "function") {
setIframeSrc();
}
if (typeof setPageHeader == "function") {
setPageHeader();
}
if (typeof setJoinInfo == "function") {
setJoinInfo();
}
},


searchId: function(tabname, idsel, posid, csel)
{
this.clearData();
idsel += " where " + tabname + "ID=" + posid;
this.searchData(tabname, idsel, csel, 0);
},


searchData: function(tabname, idsel, csel, pos)
{
var cond = "";
this.cobj = document.getElementById('_COUNT');
this.tab = tabname;
if (this.cobj.value != "" && this.cobj.value != "0") {
this.resetSearch();
} else {
var externsearch = decodeURIComponent(document.getElementById('_SEARCH').value);
cond = selectedFields();
if (externsearch) {
cond += ("&" + externsearch);
}
if (cond) {
        this.selected = cond.replace(/%25/g, "%").replace(/%2B/g, "+");
idsel += " where " + proxies.DBUse.SearchCond(cond);
}
var sort = document.getElementById('_SORT').value;
if (sort) {
idsel += " order by " + sort;
}
var idlist = proxies.DBUse.objGetRowsString(tabname, idsel, ",", ",", "");
if (idlist) {
this.idarray = idlist.split(",");
this.length = this.idarray.length;
this.cobj.value = this.length;
this.dbcursor = (pos ? pos : 0);
this.colsel = csel;
csel += this.idarray[this.dbcursor];
this.cursorData(tabname, csel);
} else {
if (this.selected && this.cobj.value == "") {
selvals = this.selected.split("&");
for (var i = 0; i < selvals.length; i++) {
selvals[i] = selvals[i].replace("=", "==");
var inp = document.getElementById(selvals[i].split("==")[0]);
if (inp) {
inp.value = selvals[i].split("==")[1];
if (inp.onFormSet != null) {
try {
eval("window." + inp.onFormSet)(inp);
} catch(e) {}
}
} else {
inp = document.getElementById("_SEARCH");
inp.value = "";
}
}
}
this.cobj.value = "0";
}
}
},


checkAllowed: function()
{
if (typeof checkAllowed == "function") {
checkAllowed();
} else {
var obj = document.getElementById("ctl00_ContentPlaceHolder1_Menue");
if(obj) {
var allfctions = document.getElementById("ctl00_ContentPlaceHolder1_Menue").getElementsByTagName("IMG");
for (var i = 1; i < allfctions.length; i++) { 
allfctions[i].style.display = "inline";
}
allfctions = document.getElementById("ctl00_ContentPlaceHolder1_Menue").getElementsByTagName("LABEL");
for (var i = 1; i < allfctions.length; i++) {
allfctions[i].style.display = "inline";
}
}
}
//if (typeof checkAllowedExt == "function") {
//checkAllowedExt();
//}
},
resetSearch: function()
{
var selvals;
this.clearData();
if (this.selected) {
selvals = this.selected.split("&");
for (var i = 0; i < selvals.length; i++) {
var inp = document.getElementById(selvals[i].split("=")[0]);
if (inp) {
inp.value = selvals[i].split("=")[1];
} else {
inp = document.getElementById("_SEARCH");
inp.value = (inp.value ? inp.value + "&" + selvals[i] : selvals[i]);
}
}
}
this.selected = "";
},


firstData: function()
{
try {
this.dbcursor = 0;
this.cursorData(this.tn, this.colsel + this.idarray[0]);
} catch (ex) {
}
},


nextData: function()
{
try {
this.dbcursor = (this.dbcursor < this.length-1 ? this.dbcursor + 1 : this.length-1);
this.cursorData(this.tn, this.colsel + this.idarray[this.dbcursor]);
} catch (ex) {
this.dbcursor -= 1
}
},


prevData: function()
{
try {
this.dbcursor = (this.dbcursor == 0 ? 0 : this.dbcursor - 1);
this.cursorData(this.tn, this.colsel + this.idarray[this.dbcursor]);
} catch (ex) {
this.dbcursor += 1;
}
},


lastData: function()
{
try {
this.dbcursor = this.length-1;
this.cursorData(this.tn, this.colsel + this.idarray[this.dbcursor]);
} catch (ex) {
}
},


insertData: function(formname)
{
var inp = document.getElementById('IUSER');
if (inp) {
inp.value = "[IMSUSER]";
}
inp = document.getElementById('IDATE');
if (inp) {
inp.value = new Date().getXmlDateTime();
}
inp = document.getElementById('UUSER');
if (inp) {
inp.value = "";
}
inp = document.getElementById('UDATE');
if (inp) {
inp.value = "";
}
inp = document.getElementById('_DEFVAL');
if (inp && inp.value) {
this.setDefVals(inp.value);
}
formname = (formname ? formname : 'imsform');
var formdata = ajaxForms.getDataStr(document.getElementById(formname));
proxies.DBUse.InsertData.func = dbfo.insertDataExt;
proxies.DBUse.InsertData(this.tab, formdata);
try {
FMBox.open("ct100_myFMB", "", "");
} catch (ex) {
alert("The data was refreshed.");
}
},
    
insertDataExt: function(count)
{
if (!dbfo.cobj) {
dbfo.cobj = document.getElementById('_COUNT');
}
if (dbfo.cobj.value == "0" || dbfo.cobj.value == "") {
dbfo.cobj.value = "1";
      dbfo.selected = selectedFields().replace(/%25/g, "%").replace(/%2B/g, "+");
dbfo.searchData(dbfo.tab, idsel, dbfo.colsel, dbfo.length);
searchData();
if (document.location.pathname.indexOf("/page.aspx") > 0 && document.getElementById("CONTENTID").value == "0") {
document.getElementById("CONTENTID").value = document.getElementById("_PAGEID").value;
dbfo.updateData();
} else if (document.location.pathname.indexOf("/contentpage.aspx") > 0) {
document.getElementById("CONTENTID").value = document.getElementById("_RESOURCEID").value;
dbfo.updateData();
}
} else {
dbfo.resetSearch();
dbfo.searchData(dbfo.tab, idsel, dbfo.colsel, dbfo.length);
}
if (count > 0) {
if (typeof insertDataExt == "function") {
insertDataExt(count);
}
try {
if(dbfo.idarray) {
var allfctions = document.getElementById("ctl00_ContentPlaceHolder1_Menue").getElementsByTagName("IMG");
for (var i = 1; i < allfctions.length; i++) {
allfctions[i].style.display = "inline";
}
allfctions = document.getElementById("ctl00_ContentPlaceHolder1_Menue").getElementsByTagName("LABEL");
for (var i = 1; i < allfctions.length; i++) {
allfctions[i].style.display = "inline";
}
}
} catch(e) {
}
} else {
alert("Daten konnten nicht eingefügt werden");
}
},


setDefVals: function(defvals)
{
var alldefvals = defvals.split(";");
for (var i = 0; i < alldefvals.length; i++) {
var colandval = alldefvals[i].split(":");
var valinp = document.getElementById(colandval[0]);
valinp.value = (valinp.value ? valinp.value : colandval[1]);
}
},


updateData: function(formname, cond)
{
var nr = -1;
var inp = document.getElementById('UUSER');
if (inp) {
inp.value = "[IMSUSER]";
}
inp = document.getElementById('UDATE');
if (inp) {
inp.value = new Date().getXmlDateTime();
}
formname = (formname ? formname : 'imsform');
cond = (cond ? cond : (this.tab + "ID"));
var formdata = ajaxForms.getDataStr(document.getElementById(formname));
if (this.dbcursor >= 0) {
nr = proxies.DBUse.UpdateData((cond + "=" + this.idarray[this.dbcursor]), this.tab, formdata);
//alert("updateData: nr: " + nr);
if(nr > 0) {
this.cursorData(this.tn, this.colsel + this.idarray[this.dbcursor]);
try {
FMBox.open("ct100_myFMB", "", "");
return(1);
} catch (ex) {
alert("Die Daten wurden aktualisiert.");
}
} else if (nr == 0) {
alert ("Die Daten haben sich geändert. Bitte aktualisieren Sie die Seite.");
} else if (nr == -1) {
alert ("Die geänderten Daten sind fehlerhaft (Doppelte Schlüsselwerte?).");
}
}
},


deleteData: function(cond)
{
var nr = -1;
var rsid = this.idarray[this.dbcursor];
var ok = confirm("Wollen Sie diesen Datensatz wirklich löschen?");
if (ok == true) {
cond = (cond ? cond : (this.tab + "ID"));
nr = proxies.DBUse.DeleteData((cond + "=" + rsid), this.tab);
if (nr > 0) {
var allids = "," + this.idarray.join(",") + ",";
allids = allids.replace("," + rsid + ",", ",").replace(/^\,|\,$/g, "");
this.idarray = allids.split(",");
this.length -= 1;
this.dbcursor = (this.dbcursor < this.length-1 ? this.dbcursor : this.length-1);
this.cursorData(this.tn, this.colsel + this.idarray[this.dbcursor]);
} else {
alert ("Der Datensatz kann nicht gelöscht werden. Existierende Zuordnungen müssen zuerst gelöscht werden.");
}
}
},


deleteDataDirect: function(cond)
{
var nr = -1;
var rsid = this.idarray[this.dbcursor];
cond = (cond ? cond : (this.tab + "ID"));
nr = proxies.DBUse.DeleteData((cond + "=" + rsid), this.tab);
if (nr > 0) {
var allids = "," + this.idarray.join(",") + ",";
allids = allids.replace("," + rsid + ",", ",").replace(/^\,|\,$/g, "");
this.idarray = allids.split(",");
this.length -= 1;
this.dbcursor = (this.dbcursor < this.length-1 ? this.dbcursor : this.length-1);
this.cursorData(this.tn, this.colsel + this.idarray[this.dbcursor]);
} else {
alert ("Der Datensatz kann nicht gelöscht werden. Existierende Zuordnungen müssen zuerst gelöscht werden.");
}
},


clearData: function(formname)
{
formname = (formname ? formname : 'imsform');
ajaxForms.clearData(formname);
if (this.cobj) {
this.cobj.value = "";
}
this.dbcursor = -1;
}
}


function useUrlSearch()
{
if (window.location.search.toLowerCase().indexOf("_search=0") > 0) {
presetData();
} else if (window.location.search.length > 1) {
document.getElementById("_SEARCH").value = window.location.search.replace("?", "");
searchData();
}
}


function presetData()
{
if(document.getElementById("_SEARCH")) {
document.getElementById("_SEARCH").value = "";
}
// for example see um/ugrouplist.aspx
var tmp = window.location.search.replace(/\&_search=0/ig, "").replace(/\?/g, "");
if(tmp.length > 0) {
var i;
var paramArr = tmp.split("&");
for(i = 0;i < paramArr.length;i++) {
tmp = paramArr[i];
var tmpName = tmp.split("=")[0];
var tmpVal = tmp.split("=")[1];
if(document.getElementById(tmpName)) {
document.getElementById(tmpName).value = tmpVal;
}
}
}
}


function selectedFields()
{
var index = "";
var i;
var selection = "";
var inputlist = document.getElementsByTagName("INPUT");
var likestrobj = document.getElementById("searchrepl");
var searchrepl = (likestrobj ? likestrobj.value : "");
for (i = 0; i < inputlist.length; i++) 
{  
if (inputlist[i].name && (inputlist[i].name.charAt(0) != "_")) {
if ((inputlist[i].type == "checkbox") && (inputlist[i].checked) && !inputlist[i].disabled) { 
selection += "&" + inputlist[i].name + "=1";
} else if ((inputlist[i].type == "text") && (inputlist[i].value)) {
if (searchrepl) {
selection += "&" + inputlist[i].name + "=" + searchrepl.replace("xxx7xxx", inputlist[i].value).replace(/%%/g, "%");
} else {
selection += "&" + inputlist[i].name + "=" + inputlist[i].value;
}
}
}
}
inputlist = document.getElementsByTagName("SELECT");
for (i = 0; i < inputlist.length; i++) {
if ((inputlist[i].value) && (inputlist[i].name) && (inputlist[i].name.charAt(0) != "_") && (!inputlist[i].disabled)) { 
selection += "&" + inputlist[i].name + "=" + inputlist[i].value;
}
}
inputlist = document.getElementsByTagName("TEXTAREA");
for (i = 0; i < inputlist.length; i++) {
if ((inputlist[i].value) && (inputlist[i].name) && (inputlist[i].name.charAt(0) != "_") && (!inputlist[i].disabled)) { 
selection += "&" + inputlist[i].name + "=" + inputlist[i].value;
}
}
if (selection) {
    selection = selection.substr(1).replace(/\*/g, "%").replace(/%/g, "%25").replace(/\+/g, "%2B");
}
return selection;
}


function createOptions(selobj, optstr, selval)
{
var n;
var o;
var s;
selobj.length = 0;
optstr = optstr.split(",");
for (n = 0; n < optstr.length; n++) {
s = optstr[n];
if (s.charAt(0) != '(') {
o = document.createElement("OPTION");
if (s.indexOf(':') < 0) {
o.value = n+1;
o.innerHTML = s;
} else {
s = s.split(':');
o.value = s[0].split('[')[0];
o.innerHTML = s[1];
}
selobj.appendChild(o);
if ((selval != null) && ((o.value == selval) || (o.innerText == selval))) {
o.selected = true;
}
}
}
}

function clearSearch(obj)
{
var inps = obj.getElementsByTagName("INPUT");
for (n = 0; n < inps.length; n++) {
if ((inps[n].name != null) && (inps[n].name != "")) {
if (inps[n].type == "text") {
inps[n].value = "";
} else if (inps[n].type == "checkbox") {
inps[n].checked = false;
}
}
}
inps = obj.getElementsByTagName("TEXTAREA");
for (n = 0; n < inps.length; n++) {
if ((inps[n].name != null) && (inps[n].name != "")) {
inps[n].value = "";
}
}
inps = obj.getElementsByTagName("SELECT");
for (n = 0; n < inps.length; n++) {
if ((inps[n].name != null) && (inps[n].name != "")) {
inps[n].value = "";
for (o = 0; o < inps[n].options.length; o++) {
if (inps[n].options[o].defaultSelected) {
inps[n].selectedIndex = o;
break;
}
}
}
}
}
Date.prototype.toSqlDate = function()
{
var day, month, year;
day = String(this.getDate());
day = (day.length == 1 ? "0" + day : day);
month = String(this.getMonth() + 1);
month = (month.length == 1 ? "0" + month : month);
year = this.getFullYear();
return(year + month + day);
}


Date.prototype.getXmlDateTime = function()
{
var day, month, year, hours, minutes, seconds;
day = String(this.getDate());
day = (day.length == 1 ? "0" + day : day);
month = String(this.getMonth() + 1);
month = (month.length == 1 ? "0" + month : month);
year = this.getFullYear();
hours = String(this.getHours());
hours = (hours.length == 1 ? "0" + hours : hours);
minutes = String(this.getMinutes());
minutes = (minutes.length == 1 ? "0" + minutes : minutes);
seconds = String(this.getSeconds());
seconds = (seconds.length == 1 ? "0" + seconds : seconds);
return(year + "-" + month + "-" + day + "T" + hours + ":" + minutes + ":" + seconds);
}
