function xmlhttp(myname)
{
"use strict";
var $ajax_xmlhttp = false;
var $ajax_callback = null;
var $ajax_response = null;
var _ajax_url = null;
/* anz=2 % 0 */ var _ajax_method = "GET";
var _ajax_mode = true;
var _ajax_config = false;
var _ajax_ctrl = null;
var _ajax_responseText = null;
var _ajax_responseType = null;
var _ajax_myName = false;
var _ajax_fifo = null;
var _send_unselect = true;
var _send_disabled = true;
var _send_stack = new Array();
var _ddw = ddw;
this.dump = function()
{
var $alert = "";
$alert += "url: "+_ajax_url+"\n";
$alert += "mode: "+((_ajax_mode)?"true (async)":"false (sync)")+"\n";
$alert += "config: "+((_ajax_config)?"true":"false")+"\n";
$alert += "myName: "+((_ajax_myName)? _ajax_myName:"null")+"\n";
$alert += "callback: "+(($ajax_callback)? $ajax_callback:"null")+"\n";
alert($alert);
};
this.myName = function()
{
if ( _ajax_myName != false ) return true;
for ( var o in window )
{
if ( window[o] == this )
{
if (_ddw) ddw.echo("xmlhttp.js [71] XMLHTTP::my name() found \""+o+"\"");
_ajax_myName = o;
return true;
}
}
if ( _ajax_myName == false )
{
alert("unable to install catch program\nobject not found in global name space\ndont use prefix \"var\" inside of functions");
$ajax_xmlhttp = false;
return false;
}
if (typeof(window[_ajax_myName]) != "function")
{
alert(_ajax_myName+"::init() fatal error -- "+e);
$ajax_xmlhttp = false;
return false;
}
};
this.server = function(url,ctrl)
{
if (this.myName())
{
if ( typeof(url) != "undefined" )
{
if ( typeof(ctrl) != "undefined" && ctrl === true )
{
$ajax_xmlhttp.open("HEAD",url,true);
$ajax_xmlhttp.onreadystatechange = function()
{
if (this.readyState == this.DONE)
{
if (this.status != 200)
{
/* anz=4 % 0 */ alert("fatal error -- " + this.status + " unable to access to server");
$ajax_xmlhttp = false;
}
}
};
$ajax_xmlhttp.send(null);
}
_ajax_url = url;
}
else if (_ajax_url != null)
{
return _ajax_url;
}
else
{
$ajax_xmlhttp = false;
return false;
}
}
};
this.callback = function(ctrl)
{
if (typeof(ctrl) != "undefined")
{
this.myName();
$ajax_callback = ctrl;
}
else
{
$ajax_callback = null;
}
};
this.method = function(ctrl)
{
if (typeof(ctrl) != "undefined")
{
this.myName();
var UC_ctrl = ctrl.toUpperCase();
if ( UC_ctrl == "GET" || UC_ctrl == "POST" )
{
_ajax_method = ctrl;
}
}
};
this.mode = function(ctrl)
{
if(typeof(ctrl) == "boolean") ctrl = (ctrl===true) ? "sync":"async";
var lc_ctrl = (typeof(ctrl) != "undefined") ? ctrl.toLowerCase() : "async";
var choise = ",,sync,async,fifo,";
if (choise.indexOf(","+lc_ctrl+",") > 0)
{
_ajax_ctrl = lc_ctrl;
}
};
this.responseType = function(ctrl)
{
if ("responseType" in this)
{
_ajax_responseType = ctrl;
}
else
{
}
};
this.init = function (url, mycatch, type, mode)
{
this.myName();
if ( $ajax_xmlhttp )
{
this.server(url);
this.callback(mycatch);
var $method = (typeof(type) != "undefined") ? type : "GET";
this.method($method);
var $mode = (typeof(mode) != "undefined") ? mode : ((typeof($ajax_callback) === "function") ?false:true);
this.mode($mode);
this.config();
_ajax_config = true;
if ($ajax_xmlhttp == false) return false;
return true;
}
else
{
alert("xmlhttp.js [208] "+_ajax_myName+"::init fatal error -- no xmlhttp object");
return false;
}
};
this.xmlhttp_catch = function ()
{
if (_ddw) ddw.echo("xmlhttp.js [217] "+_ajax_myName+"::xmlhttp_catch() -- readyState:\""+$ajax_xmlhttp.readyState+"\"");
if ( $ajax_xmlhttp.readyState == 1 )
{
}
else if ( $ajax_xmlhttp.readyState == 4 && $ajax_xmlhttp.status != 0)
{
if (_ddw) ddw.echo("xmlhttp.js [227] "+_ajax_myName+"::xmlhttp_catch() -- HTML-Status: " + $ajax_xmlhttp.status);
if ( $ajax_xmlhttp.status == 200 )
{
_ajax_responseText = $ajax_xmlhttp.responseText;
if ( typeof(this.responseText) == "string" )
{
if ( _ajax_responseText.substr(0,2) == "({" )
{
if (_ddw) ddw.echo("xmlhttp.js [236] "+_ajax_myName+"::response() seems to be an object");
var $e;
try
{
var answ = _ajax_responseText;
if (answ.indexOf("\n") > -1)
{
/* anz=2 % 0 */ var answ2 = answ.replace(/\n/g,'
');
$e = eval(answ2);
}
else
{
$e = eval(answ);
}
_ajax_responseText = $e;
}
catch(e)
{
var $alert = "error in 255";
$alert += "\n"+_ajax_responseText+"\n";
for ( var p in e )
{
$alert += "\n"+p+" "+e[p];
}
alert($alert);
}
}
}
if ( _ajax_mode == false )
{
return;
}
if ( $ajax_callback !== null )
{
$ajax_callback(_ajax_responseText);
}
else
{
alert("xmlhttp.js [278] "+_ajax_myName+"::xmlhttp_catch()\n catched:\""+_ajax_responseText+"\"");
if (_ddw) ddw.echo("xmlhttp.js [279] "+_ajax_myName+"::xmlhttp_catch() received \""+_ajax_responseText+"\"");
}
}
else
{
var $e = new Object();
$e["call"] = "error";
$e["HTMLstatus"] = $ajax_xmlhttp.status;
$e["readyState"] = $ajax_xmlhttp.readyState;
$e["responseText"] = $ajax_xmlhttp.responseText;
$e["url"] = _ajax_url;
$ajax_callback($e);
}
if ( typeof(_ajax_fifo) == "object" && _ajax_fifo !== null)
{
if ( _ajax_fifo.length > 0 )
{
var url = _ajax_fifo.shift();
}
if ( _ajax_fifo.length > 0 )
{
if ( _ajax_method == "POST" )
{
var text = _ajax_fifo[0];
if (_ddw) ddw.echo("xmlhttp.js [304] "+_ajax_myName+"::xmlhttp_catch() shift from fifo: char count=" + text.length);
$ajax_xmlhttp.open("POST",_ajax_url,_ajax_mode);
if (_ajax_responseType != null && "responseType" in this)
{
if (_ddw) ddw.echo("xmlhttp.js [310] "+_ajax_myName+"::xmlhttp_catch() use \""+_ajax_responseType+"\"");
$ajax_xmlhttp.responseType = _ajax_responseType;
}
$ajax_xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded");
$ajax_xmlhttp.send(text);
}
else
{
var url = _ajax_fifo[0];
if (_ddw) ddw.echo("xmlhttp.js [320] "+_ajax_myName+"::xmlhttp_catch() shift from fifo:\"" + url + "\"");
$ajax_xmlhttp.open("GET",url,true);
$ajax_xmlhttp.send(null);
}
}
else
{
}
}
}
else
{
}
};
this.response = function()
{
if (typeof($ajax_xmlhttp.getResponseHeader) == "function")
{
if (_ddw) ddw.echo("xmlhttp.js [342] " + $ajax_xmlhttp.getResponseHeader("Content-Type"));
}
if (_ddw) ddw.echo("xmlhttp.js [344] "+_ajax_myName+"::response() -- type of responseText="+typeof(_ajax_responseText));
var answ = $ajax_xmlhttp.responseText;
if (_ddw) ddw.echo("xmlhttp.js [346] "+_ajax_myName+"::response() "+ answ);
if ( answ.substr(0,2) == "({" )
{
if (_ddw) ddw.echo("xmlhttp.js [349] "+_ajax_myName+"::response() seems to be an object");
var $e;
var $try = "";
try
{
if (_ddw) ddw.echo("xmlhttp.js [354] "+_ajax_myName+"::response() "+ answ);
if (answ.indexOf("\n") > -1)
{
$try = "try with LF";
/* anz=2 % 0 */ var answ2 = answ.replace(/\n/g,'
');
$e = eval(answ2);
}
else
{
$try = "try without LF";
$e = eval(answ);
}
}
catch(e)
{
var $alert = "error in 371 "+$try;
$alert += "\n"+e;
$alert += "\n"+answ+"\n";
for ( var p in e )
{
$alert += "\n"+p+" "+e[p];
}
alert($alert);
}
if (_ddw) ddw.echo("xmlhttp.js [380] "+_ajax_myName+"::response() -- end of job");
if ( typeof($e) == "object" )
{
$e["HTMLstatus"] = 200;
_ajax_responseText = $e;
return $e;
}
}
_ajax_responseText = $ajax_xmlhttp.responseText;
return $ajax_xmlhttp.responseText;
};
this.config = function()
{
this.myName();
if (_ddw) ddw.echo("xmlhttp.js [395] "+_ajax_myName+"::config() - mode("+_ajax_ctrl+")");
if ( _ajax_ctrl == "sync" )
{
_ajax_mode = false;
_ajax_fifo = null;
}
else if ( _ajax_ctrl == "async" )
{
_ajax_mode = true;
_ajax_fifo = null;
}
else if ( _ajax_ctrl == "fifo" )
{
_ajax_mode = true;
_ajax_fifo = new Array();
}
var p = _ajax_myName + ".response";
$ajax_response = eval(p);
if ( _ajax_mode )
{
$ajax_xmlhttp.onreadystatechange = this.xmlhttp_catch;
if (_ddw) ddw.echo("xmlhttp.js [417] "+_ajax_myName+"::init() -- install in \""+ ((_ajax_mode)?"async":"sync")+"\" mode");
}
if ( _ajax_mode )
{
if ( typeof($ajax_callback) == "function" )
{
_ajax_config = true;
return true;
}
else
{
alert("xmlhttp.js [428] "+_ajax_myName+"::init: fatal error -- schedule not defined "+typeof($ajax_callback));
$ajax_xmlhttp = false;
return false;
}
}
else
{
_ajax_config = true;
return true;
}
};
this.push = function (o)
{
_send_stack.push(o);
};
this.send = function (o)
{
if (_ajax_config == false)
{
this.config();
}
if (typeof(o) != "undefined") _send_stack.push(o);
if ( $ajax_xmlhttp !== false )
{
var xtr = "";
var texte = "";
var _http_text = "";
while (_send_stack.length > 0)
{
var _text = _send_stack.pop();
if ( typeof(_text) == "object" )
{
if ( _text.tagName && _text.tagName == "FORM" )
{
if (!_text.name) _text.name = "ajaxform_"+ Math.floor(Math.random()*10000);
if (_ddw) ddw.echo("xmlhttp.js [468] "+_ajax_myName+"::send() catch all values from FORM \""+_text.name+"\"");
for ( var i = 0; i < document.forms[_text.name].elements.length; i++ )
{
var cb = "";
if (document.forms[_text.name].elements[i].isArray)
{
if (_ddw) ddw.echo("xmlhttp.js [474] element is an Array");
}
if (document.forms[_text.name].elements[i].name && document.forms[_text.name].elements[i].name != "")
{
var element_i = document.forms[_text.name].elements[i];
if (_ddw) ddw.echo("xmlhttp.js [480] element "+i+" value is " + element_i.value);
var vtmp = element_i.value;
var t = encodeURIComponent(vtmp);
if (_ddw) ddw.echo("xmlhttp.js [483] element "+i+" value is " + vtmp);
var key = element_i.name;
var type = element_i.type;
var dis = element_i.disabled;
var mm = xtr + key + "=" + t;
if (_ddw) ddw.echo("xmlhttp.js [488] element "+i+" value is " + mm + " || " + vtmp);
if ( type == "radio" || type == "checkbox" )
{
if (vtmp.indexOf("|") > 0)
{
if (element_i.checked == false)
{
mm = xtr + key + "=" + encodeURIComponent(vtmp.split("|")[1]);
}
else
{
mm = xtr + key + "=" + encodeURIComponent(vtmp.split("|")[0]);
}
}
else
{
if (element_i.checked == false) mm = "";
}
cb = "("+i+": \""+element_i.checked+"\")";
}
if ( !_send_disabled && dis == true) mm="";
if ( !_send_disabled && type == "button") mm="";
if (mm != "")
{
if (_ddw) ddw.echo("xmlhttp.js [513] "+_ajax_myName+"::send() ("+type+" "+dis+") "+key+" = \""+t+"\" " +cb);
_http_text += mm;
xtr = "&";
}
}
}
}
else
{
for ( var key in _text )
{
var tmp = _text[key];
var t = encodeURIComponent(tmp);
var mm = xtr + key + "=" + t;
_http_text += mm;
xtr = "&";
}
}
}
}
if ( _ajax_method == "GET" )
{
var url;
if ( _http_text != "" )
{
url = _ajax_url + ( ( _ajax_url.indexOf("?") > 0 ) ? "&" : "?" ) + _http_text;
}
if ( typeof(url) !== "undefined" )
{
if ( typeof(_ajax_fifo) == "object" && _ajax_fifo !== null )
{
if (_ddw) ddw.echo("xmlhttp.js [545] "+_ajax_myName+"::send() -- fifo type=\""+typeof(_ajax_fifo)+"\"");
var len = _ajax_fifo.push(url);
if ( _ajax_fifo.length > 1 )
{
}
else
{
if (_ddw) ddw.echo("xmlhttp.js [553] "+_ajax_myName+"::send(\"" + typeof(url) + "\")");
$ajax_xmlhttp.open("GET",url,true);
$ajax_xmlhttp.send(null);
if (_ddw) ddw.echo("xmlhttp.js [557] "+_ajax_myName+"::send() send complete");
}
}
else
{
if (_ddw) ddw.echo("xmlhttp.js [562] "+_ajax_myName+"::send(\"" + url + "\")");
$ajax_xmlhttp.open("GET",url,_ajax_mode);
$ajax_xmlhttp.send(null);
if (_ajax_mode)
{
return null;
}
else
{
$ret = this.response();
if (_ddw) ddw.echo("xmlhttp.js [575] "+_ajax_myName+"::send returned "+$ret);
return $ret;
}
}
}
}
else if ( _ajax_method == "POST" )
{
if ( typeof(_http_text) != "undefined" )
{
if (typeof(_ajax_fifo) == "object" && _ajax_fifo !== null)
{
var len = _ajax_fifo.push(_http_text);
}
if (_ajax_fifo !== null && _ajax_fifo.length > 1 )
{
if (_ddw) ddw.echo("xmlhttp.js [591] "+_ajax_myName+"::send(\"" + _ajax_url + "\") push to stack as ["+_ajax_fifo.length+"] charcount="+_http_text.length);
}
else
{
if (_ddw) ddw.echo ("xmlhttp.js [595] "+_ajax_myName+"::send() POST "+((_ajax_mode)? "as thread":"wait for response"));
$ajax_xmlhttp.open ( _ajax_method, _ajax_url, _ajax_mode );
if (_ajax_responseType != null && _ajax_mode)
{
if (_ddw) ddw.echo("xmlhttp.js [599] "+_ajax_myName+"::xmlhttp_send() use \""+_ajax_responseType+"\"");
$ajax_xmlhttp.responseType = _ajax_responseType;
}
$ajax_xmlhttp.setRequestHeader ( "Content-Type", "application/x-www-form-urlencoded");
$ajax_xmlhttp.send(_http_text);
if (_ajax_mode) return;
var $ret = this.response();
if (_ddw) ddw.echo("xmlhttp.js [609] "+_ajax_myName+"::send returned "+$ret);
return $ret;
}
}
else
{
alert("xmlhttp.js [617] "+_ajax_myName+"::send() fatal error -- undefined request for POST");
return false;
}
}
else
{
alert("xmlhttp.js [623] "+_ajax_myName+"::send() fatal error -- unsupported mode "+_ajax_method);
return false;
}
}
else
{
alert("xmlhttp.js [629] "+_ajax_myName+"::send fatal error -- no xmlhttp object");
return false;
}
};
this.show = function ()
{
return _ajax_url;
};
this.debug = function (ctrl)
{
_ddw = (ctrl) ? ddw : false;
};
try
{
if ( window.XMLHttpRequest )
{
$ajax_xmlhttp = new XMLHttpRequest();
}
else if ( window.ActiveXObject )
{
$ajax_xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
catch(e) {}
if ( typeof($ajax_xmlhttp) != "object" )
{
alert("fatal error -- Your browser does not support XMLHTTP.");
$ajax_xmlhttp = false;
return false;
}
if (typeof (myname) != "undefined")
{
if (_ddw) ddw.echo("xmlhttp.js [667] XMLHTTP::__construct() -- set name to "+myname);
_ajax_myName = myname;
}
}
if ( typeof(view) == "undefined" )
{
var view = function(...p)
{
var _argv = p;
var e = _argv[0];
var n = (_argv.length > 1) ? _argv[1] : 0;
n++;
if ( typeof(e) == "object" )
{
var _view = "";
var _sp = "";
for (var i=0; i