diff options
Diffstat (limited to 'httemplate/elements/ajaxcontentmws.js')
| -rw-r--r-- | httemplate/elements/ajaxcontentmws.js | 185 | 
1 files changed, 185 insertions, 0 deletions
| diff --git a/httemplate/elements/ajaxcontentmws.js b/httemplate/elements/ajaxcontentmws.js new file mode 100644 index 000000000..917704902 --- /dev/null +++ b/httemplate/elements/ajaxcontentmws.js @@ -0,0 +1,185 @@ +/*
 + ajaxcontentmws.js - Foteos Macrides (author and Copyright holder)
 +    Initial: June 22, 2006 - Last Revised: March 24, 2008
 + Wrapper function set for getting and using the responseText and / or
 + responseXML from a GET or POST XMLHttpRequest, which can be used to
 + generate dynamic content for overlib or overlib2 calls, or to modify
 + the content of a displayed STICKY popup dynamically.
 +
 + For GET Use:
 +       onmouseover="return OLgetAJAX(url, command, delay, css);"
 +       onmouseout="OLclearAJAX();"  (if delay > 0)
 + or:
 +       onclick="OLgetAJAX(url, command, 0, css); return false;"
 + or:
 +       onload="OLgetAJAX(url, command, 0, css);
 + 
 + Where:
 +       url (required)
 + is a quoted string, or unquoted string variable name or array entry, with
 + the full, relative, or partial URL for a file or a server-side script (php,
 + asp, or cgi, e.g. perl), and may have a query string appended (e.g.,
 + 'http://my.domain.com/scripts/myScript.php?foo=bar&life=grand').
 + And:
 +       command (required)
 + is the function reference (unquoted name without parens) of a function to
 + be called when the server's response has been received (it could instead be
 + an inline function, i.e., defined within the 2nd argument, or a quoted string
 + for a function with parens and any args)
 + And:
 +       delay (may be omitted unless css is included)
 + is an unquoted number indicating the number of millisecs to wait before
 + initiating an XMLHttpRequest GET request. It should be 0 when using onclick
 + or onload, but may be a modest value such as 300 for onmouseover to avoid
 + any chatter of requests. When used with onmouseover, include:
 +       onmouseout="OLclearAJAX();"
 + to clear the request if the user does not hover for at least that long.  If
 + the popup is not STICKY, include an nd or nd2 call, e.g.,
 +       onmouseout="OLclearAJAX(); nd();"
 + And:
 +       css (may be omitted)
 + is a quoted string with the CSS class (e.g. 'ovfl510' for
 + .ovfl510 {width:510px; height:145px; overflow:auto; ...} ) for a div to
 + encase the responseText and set the width, height and scrollbars in the
 + main text area of the popup, or the unquoted number 0 if no encasing div
 + is to be used.
 +
 + For POST substitute OLpostAJAX(url, qry, command, delay, css);
 + Where
 +       qry (required)
 + is the string to be posted, typically a query string (without a lead ?)
 + and the other arguments are as above.
 +
 + See http://www.macridesweb.com/oltest/AJAX.html for more information.
 +*/
 +
 +// Initialize our global variables for this function set.
 +var OLhttp=false,OLcommandAJAX=null,OLdelayidAJAX=0,OLclassAJAX='',
 +OLresponseAJAX='',OLabortAJAX=0,OLdebugAJAX=0;
 +
 +// Create a series of wrapper functions (e.g. OLcmdT#() for  ones which
 +// use OLhttp.responseText via the OLresponseAJAX global, and OLcmdX#()
 +// for ones which use OLhttp.responseXML) whose reference (unquoted name
 +// without parens) is the 2nd argument in OLgetAJAX(url,command,delay,css)
 +// calls.  This one is for the first example in the AJAX.html support
 +// document, to use the OLresponseAJAX global as the lead argument for an
 +// overlib popup. Put your functions in the head, or in another imported
 +// .js file, so that they will not be affected by updates of this .js file.
 +//
 +function OLcmdExT1() {
 + return overlib(OLresponseAJAX, TEXTPADDING,0, CAPTIONPADDING,4,
 +  CAPTION,'Example with AJAX content via <span '
 +  +'class="yellow">responseText</span>.  Popup scrolls with the window.',
 +  WRAP, BORDER,2, STICKY, CLOSECLICK, SCROLL,
 +  MIDX,0, RELY,100,
 +  STATUS,'Example with AJAX content via responseText of XMLHttpResponse');
 +}
 +
 +// Alert for old browsers which lack XMLHttpRequest support. 
 +function OLsorryAJAX() {
 + alert('Sorry, AJAX is not supported by your browser.');
 + return false;
 +}
 +
 +// Check 2nd arg for function
 +function OLchkFuncAJAX(ar){
 + var t=typeof ar;return (((t=='function'))||((t=='string')&&(/.+\(.*\)/.test(ar))));
 +}
 +
 +// Alert for bad 2nd argument
 +function OLnotFuncAJAX(m) {
 +  if(over)cClick();
 +  alert('The 2nd arg of OL'+m+'AJAX is not a function reference, nor an inline function, '
 +  +'nor a quoted string with a function indicated.');
 +  return OLclearAJAX();
 +}
 +
 +// Alert for indicating an XMLHttpRequest network error.
 +function OLerrorAJAX() {
 + if(OLhttp.status&&OLhttp.status!=2147746065)alert('Network error '+OLhttp.status+'. Try again later.');
 + return false;
 +}
 +
 +// Returns a new XMLHttpRequest object, or false for older browsers
 +// which did not yet support it.  Called as OLhttp=OLnewXMLHttp() via
 +// the OLgetAJAX(url,command,delay,css) wrapper function.
 +//
 +function OLnewXMLHttp() {
 + var f=false,req=f;
 + if(window.XMLHttpRequest)eval(new Array('try{',
 + 'req=new XMLHttpRequest();','}catch(e){','req=f;','}').join('\n'));
 + /*@cc_on @if(@_jscript_version>=5)if(!req)
 + eval(new Array('try{','req=new ActiveXObject("Msxml2.XMLHTTP");',
 + '}catch(e){','try{','req=new ActiveXObject("Microsoft.XMLHTTP");',
 + '}catch(e){','req=f;','}}').join('\n')); @end @*/
 + return req;
 +}
 +
 +// Handle the OLhttp.responseText string from the XMLHttpRequest object.
 +function OLdoAJAX() {
 + if(OLhttp.readyState==4){
 +  if(OLdebugAJAX)alert(
 +    'OLhttp.status = '+OLhttp.status+'\n'
 +   +'OLhttp.statusText = '+OLhttp.statusText+'\n'
 +   +'OLhttp.getAllResponseHeaders() = \n'
 +   +OLhttp.getAllResponseHeaders()+'\n'
 +   +'OLhttp.getResponseHeader("Content-Type") = '
 +   +OLhttp.getResponseHeader("Content-Type")+'\n');
 +  if(OLhttp.status==200||(OLhttp.status==0&&!OLabortAJAX&&!OLie55)){
 +   OLresponseAJAX=OLclassAJAX?'<div class="'+OLclassAJAX+'">':'';
 +   OLresponseAJAX += OLhttp.responseText;
 +   OLresponseAJAX += OLclassAJAX?'</div>':'';
 +   if(OLdebugAJAX)alert('OLresponseAJAX = \n'+OLresponseAJAX);
 +   OLclassAJAX=0;
 +   return (typeof OLcommandAJAX=='string')?eval(OLcommandAJAX):OLcommandAJAX();
 +  }else{
 +   OLclassAJAX=0;
 +   OLabortAJAX=0;
 +   return OLerrorAJAX();
 +  }
 + }
 +}
 +
 +// Actually make the request initiated via OLgetAJAX or OLpostAJAX, or
 +// invoke a "permission denied" alert if a cross-domain URL was used.
 +function OLsetAJAX(url,qry) {
 + if(window.location.protocol.indexOf('http')==0&&
 + (url.indexOf('file:')==0||url.indexOf('ftp:')==0)){
 + alert('[object Error]\n(Cross-domain access not permitted)');return false;}
 + qry=(qry||null);var s='',m=(qry)?'POST':'GET';OLabortAJAX=0;
 + OLdelayidAJAX=0;eval(new Array('try{','OLhttp.open(m,url,true);',
 + '}catch(e){','s=e','OLhttp=false;','}').join('\n'));if(!OLhttp){
 + alert(s+'\n(Cross-domain access not permitted)');return false;}if(qry)
 + OLhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
 + OLhttp.onreadystatechange=OLdoAJAX;
 + OLhttp.send(qry);
 +}
 +
 +// Clear or abort any delayed OLsetAJAX call or pending request. 
 +function OLclearAJAX() {
 + if(OLdelayidAJAX){clearTimeout(OLdelayidAJAX);OLdelayidAJAX=0;}
 + if(OLhttp&&!OLdebugAJAX){OLabortAJAX=1;OLhttp.abort();}
 + return false;
 +}
 +
 +// Load a new XMLHttpRequest object into the OLhttp global, load the
 +// OLcommandAJAX and OLclassAJAX globals, and initiate a GET request
 +// via OLsetAJAX(url) to populate OLhttp.
 +function OLgetAJAX(url,command,delay,css) {
 + if(!OLchkFuncAJAX(command))return OLnotFuncAJAX('get');
 + OLclearAJAX();OLhttp=OLnewXMLHttp();if(!OLhttp)return OLsorryAJAX();
 + OLcommandAJAX=command;delay=(delay||0);css=(css||0);OLclassAJAX=css;
 + if(delay)OLdelayidAJAX=setTimeout("OLsetAJAX('"+url+"')",delay);
 + else OLsetAJAX(url);
 +}
 +
 +// Load a new XMLHttpRequest object into the OLhttp global, load the
 +// OLcommandAJAX and OLclassAJAX globals, and initiate a POST request
 +// via OLsetAJAX(url,qry) to populate OLhttp.
 +function OLpostAJAX(url,qry,command,delay,css) {
 + if(!OLchkFuncAJAX(command))return OLnotFuncAJAX('post');
 + OLclearAJAX();OLhttp=OLnewXMLHttp();if(!OLhttp)return OLsorryAJAX();
 + qry=(qry||0);OLcommandAJAX=command;delay=(delay||0);css=(css||0);OLclassAJAX=css;
 + if(delay)OLdelayidAJAX=setTimeout("OLsetAJAX('"+url+"','"+qry+"')",delay);
 + else OLsetAJAX(url,qry);
 +}
 | 
