/*

HTMLHttpRequest v1.0RC1 Preview
(c) 2001-2007 Angus Turnbull, TwinHelix Designs http://www.twinhelix.com

Licensed under the CC-GNU LGPL, version 2.1 or later:
http://creativecommons.org/licenses/LGPL/2.1/
This is distributed WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

*/

if(typeof addEvent!='function'){var addEvent=function(o,t,f,l){var d='addEventListener',n='on'+t;if(o[d]&&!l)return o[d](t,f,false);if(!o._evts)o._evts={};if(!o._evts[t]){o._evts[t]={};if(o[n])addEvent(o,t,o[n],l);o[n]=new Function('e','var r=true,o=this,a=o._evts["'+t+'"],i;for(i in a){o._f=a[i];if(o._f._i)r=o._f(e||window.event)!=false&&r}o._f=null;return r')}if(!f._i)f._i=addEvent._i++;o._evts[t][f._i]=f;if(t!='unload')addEvent(window,'unload',function(){removeEvent(o,t,f,l)})};addEvent._i=1;var removeEvent=function(o,t,f,l){var d='removeEventListener';if(o[d]&&!l)return o[d](t,f,false);if(o._evts&&o._evts[t]&&f._i)delete o._evts[t][f._i]}}function cancelEvent(e,c){e.returnValue=false;if(e.preventDefault)e.preventDefault();if(c){e.cancelBubble=true;if(e.stopPropagation)e.stopPropagation()}};var HTMLHttp={};HTMLHttp.Request=function(myName){this.myName=myName;this.callback=null;this.loadingURI='';this.xmlhttp=null;if(window.XMLHttpRequest&&!window.ActiveXObject)this.xmlhttp=new XMLHttpRequest();if(!this.xmlhttp&&window.ActiveXObject){try{this.xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")}catch(e){try{this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}}}if(!this.xmlhttp&&this.iframeSetup)this.iframeSetup();return this};HTMLHttp.Request.prototype.parseForm=function(form){var str='',gE='getElementsByTagName',inputs=[(form[gE]?form[gE]('input'):form.all?form.all.tags('input'):[]),(form[gE]?form[gE]('select'):form.all?form.all.tags('select'):[]),(form[gE]?form[gE]('textarea'):form.all?form.all.tags('textarea'):[])];for(var i=0;i<inputs.length;i++)for(j=0;j<inputs[i].length;j++)if(inputs[i][j]){var elm=inputs[i][j];if((elm.nodeName.toLowerCase()=='input')&&{'radio':1,'checkbox':1}[elm.type]&&!elm.checked)continue;var plus='++'.substring(0,1);str+=escape(elm.name).replace(plus,'%2B')+'='+escape(elm.value).replace(plus,'%2B')+'&'}return str.substring(0,str.length-1)};HTMLHttp.Request.prototype.xmlhttpSend=function(uri,formStr){this.xmlhttp.open(formStr?'POST':'GET',uri,true);var obj=this;this.xmlhttp.onreadystatechange=function(){if(obj.xmlhttp.readyState==4){if(obj.callback)obj.callback(obj.xmlhttp.responseXML,obj.xmlhttp.responseText);obj.loadingURI=''}};if(formStr)this.xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');if(typeof this.xmlhttp.overrideMimeType=='function')this.xmlhttp.overrideMimeType((/\.txt/i).test(uri)?'text/plain':'text/xml');this.xmlhttp.send(formStr);this.loadingURI=uri;return true};HTMLHttp.Request.prototype.load=function(uri,callback){if(!uri||(!this.xmlhttp&&!this.iframe))return false;this.callback=callback;if(this.xmlhttp)return this.xmlhttpSend(uri,'');else if(this.iframe)return this.iframeSend(uri,null);else return false};HTMLHttp.Request.prototype.submit=function(formRef,callback){if(!formRef||(!this.xmlhttp&&!this.iframe))return false;var method=formRef.getAttribute('method'),uri=formRef.getAttribute('action');if(method&&method.toUpperCase()=='POST'){this.callback=callback;if(this.xmlhttp)return this.xmlhttpSend(uri,this.parseForm(formRef));else if(this.iframe)return this.iframeSend(uri,formRef);else return false}else{return this.load(uri+(uri.indexOf('?')==-1?'?':'&')+this.parseForm(formRef),callback)}};HTMLHttp.Threader=function(myName){this.myName=myName;this.threads=[];this.loadingIDs={}};HTMLHttp.Threader.prototype.getThread=function(destId,callback){with(this){var thr=-1;for(var id in loadingIDs){if(id==destId){thr=loadingIDs[id];break}} if(thr==-1)for(var t=0;t<threads.length;t++){if(!threads[t].loadingURI){thr=t;break}} if(thr==-1){thr=threads.length;threads[thr]=new HTMLHttp.Request(myName+'.threads['+thr+']');loadingIDs[destId]=thr}return threads[thr]}};HTMLHttp.Threader.prototype.loadInto=function(uri,destId,callback){var threader=this;var cbFunc=function(docDOM,docText){delete threader.loadingIDs[destId];callback(docDOM,docText,destId)};return this.getThread(destId).load(uri,cbFunc)};HTMLHttp.Threader.prototype.submitInto=function(formRef,destId,callback){var threader=this;var cbFunc=function(docDOM,docText){delete threader.loadingIDs[destId];callback(docDOM,docText,destId)};return this.getThread(destId).submit(formRef,cbFunc)};HTMLHttp.Capture=function(myName,waitHTML){this.myName=myName;this.threader=new HTMLHttp.Threader(myName+'.threader');this.waitHTML=waitHTML};HTMLHttp.Capture.prototype.loadInto=function(uri,destId,evt,callback){if(this.waitHTML)document.getElementById(destId).innerHTML=this.waitHTML;var ok=this.threader.loadInto(uri,destId,(callback||this.copyContent));if(ok&&evt)cancelEvent(evt)};HTMLHttp.Capture.prototype.toggleInto=function(uri,destId,evt,callback){var dest=document.getElementById(destId);if(!dest.contentLoaded)if(this.loadInto(uri,destId,evt,callback))dest.contentLoaded=true;if(evt)cancelEvent(evt);var src=evt.srcElement||evt.target;if(src.nodeType&&src.nodeType!=1)src=src.parentNode;if(!dest.toggleState){src.innerHTML='Close:'+src.innerHTML;dest.style.display='block';dest.toggleState=1}else{src.innerHTML=src.innerHTML.replace(/^Close:/,'');dest.style.display='none';dest.toggleState=0}};HTMLHttp.Capture.prototype.submitInto=function(formRef,destId,evt,callback){if(this.waitHTML)document.getElementById(destId).innerHTML=this.waitHTML;if(this.threader.submitInto(formRef,destId,(callback||this.copyContent)))cancelEvent(evt)};HTMLHttp.Capture.prototype.apply=function(node){var obj=this;addEvent(node,'click',function(evt){evt=evt||window.event;if(evt.which>1||evt.button>1)return;var src=evt.target||evt.srcElement;if(src.nodeType&&src.nodeType!=1)src=src.parentNode;var submitBtn=false;while(src){var srcName=(src.nodeName||src.tagName||'').toLowerCase();if(srcName=='input'&&src.type.toLowerCase()=='submit')submitBtn=true;if(srcName=='form'&&submitBtn&&src.className&&src.className.match(/^submitinto-(.+)$/)){return obj.submitInto(src,RegExp.$1,evt,null)}if(srcName=='a'&&src.className&&src.className.match(/^(load|toggle)into-(.+)$/)){var uri=src.href||src.getAttribute('href');if(RegExp.$1=='load')return obj.loadInto(uri,RegExp.$2,evt,null);if(RegExp.$1=='toggle')return obj.toggleInto(uri,RegExp.$2,evt,null)}src=src.parentNode}})};HTMLHttp.Capture.prototype.copyContent=function(docDOM,docText,destId){var src=docDOM?(typeof docDOM.getElementsByTagName=='function'?docDOM.getElementsByTagName('body').item(0):(docDOM.body?docDOM.body:null)):null;var dest=document.getElementById?document.getElementById(destId):(document.all?document.all[destId]:null);if(!dest||(!src&&!docText))return;if(src&&src.innerHTML)dest.innerHTML=src.innerHTML;else if(src&&document.importNode){while(dest.firstChild)dest.removeChild(dest.firstChild);for(var i=0;i<src.childNodes.length;i++)dest.appendChild(document.importNode(src.childNodes.item(i),true))}else if(docText){if(docText.match(/(<body>)(.*)(<\/body>)/i))docText=RegExp.$2;dest.innerHTML=docText}};
