[freeside-commits] freeside/httemplate/elements ajaxcontentmws.js, NONE, 1.1
Jeff Finucane,420,,
jeff at wavetail.420.am
Tue Dec 2 17:42:27 PST 2008
Update of /home/cvs/cvsroot/freeside/httemplate/elements
In directory wavetail.420.am:/tmp/cvs-serv27042/httemplate/elements
Added Files:
ajaxcontentmws.js
Log Message:
support zip5 tax lookups, correct errors with fixed format cch import, inital import performance improvements, noise reduction on imports, tool for inital import
--- NEW FILE: ajaxcontentmws.js ---
/*
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);
}
More information about the freeside-commits
mailing list