
function objCB(id){this.id=id;this.element=this.DomElement=document.getElementById(id);return this;};
objCB.prototype.Callback=function(param){
var scriptFiles=[],cssElement,request,elem=this,callback=document.getElementById(this.id),scriptElement;
scriptElement=document.createElement('script');
scriptElement.setAttribute("type","text/javascript");
if(this.CallbackInProgress){
return false;}else{
this.CallbackInProgress=true;};
handleResponse=function(){
if(request.readyState&&request.readyState!=4&&request.readyState!='complete'){
return;};
elem.CallbackInProgress=false;
var responseText=request.responseText;
if(elem.Debug){
if(responseText){
alert('Data received: '+ request.responseText);};};
request=request.responseXML;
if(request&&request.documentElement){
if(request.documentElement.nodeName=="CallbackError"){
if(elem.Debug){
alert(request.documentElement.firstChild.nodeValue);}else{
alert("An error has occured");};
return;};
var data=request.documentElement.firstChild.nodeValue;
callback.innerHTML=recieveServerData(data);
if(scriptFiles.length>0){
for(sci=0;sci<scriptFiles.length;sci++){
var scriptFileElement=document.createElement("script");
scriptFileElement.setAttribute("type","text/javascript");
scriptFileElement.setAttribute("src",scriptFiles[sci]);
document.getElementsByTagName("head").item(0).appendChild(scriptFileElement);};};
cssElement=document.createElement('style');
cssElement.setAttribute("type","text/css");
var css=groupCSS(data);
if(css!=""){
if(cssElement.styleSheet){
cssElement.styleSheet.cssText=css;}else{
var cssText=doc.createTextNode(css);
cssElement.appendChild(cssText);};
document.body.appendChild(cssElement);};
if(scriptElement.innerHTML!=""){
document.body.appendChild(scriptElement);};
if(elem['CBC_'+ elem.id]){
elem['CBC_'+ elem.id]();};}else{
var formTag=responseText.substring(responseText.indexOf('<form'),responseText.indexOf('>',responseText.indexOf('<form'))),errorMsg=formTag.substring(formTag.indexOf('error=')+ 6,formTag.indexOf('&',formTag.indexOf('error=')));
if(elem.debug){
alert(errorMsg);};};};
recieveServerData=function(value){
elem.innerHTML='';
var scripts=groupScripts(value);
scriptElement.text=scripts;
if(elem.Debug){
if(scripts!=""){
alert('Registered scripts: '+ getOuterHTML(scriptElement));};};
return value;};
groupCSS=function(string){
var css="",data=string;
while(true){
var start=data.indexOf('<style');
if(start<0){break;};
var startCssIndex=data.indexOf(">",start)+ 1,endCssIndex=data.indexOf("</sty"+"le>",start);
if(endCssIndex>=startCssIndex){
var end=endCssIndex + 8;
if(endCssIndex>startCssIndex){
var cssBlock=data.substring(startCssIndex,endCssIndex);
css +=cssBlock;};
data=data.substring(0,start)+ data.substring(end);};};
return css;};
groupScripts=function(string){
var scripts="",data=string;
while(true){
var start=data.indexOf('<script');
if(start<0){break;};
var startScriptIndex=data.indexOf(">",start)+ 1,endScriptIndex=data.indexOf("</scr"+"ipt>",start);
if(endScriptIndex>=startScriptIndex){
if(endScriptIndex==startScriptIndex){
var iStartFileNameIndex=data.indexOf('src="',start);
if(iStartFileNameIndex>0){
iStartFileNameIndex +=5;
var iEndFileNameIndex=data.indexOf('"',iStartFileNameIndex),sFileName=data.substring(iStartFileNameIndex,iEndFileNameIndex);
if(sFileName.length>0){
var headElement=document.getElementsByTagName("head").item(0);
if(headElement){
var arHeadScripts=headElement.getElementsByTagName('script'),bPreLoaded=false;
for(var qzAde=0;qzAde<arHeadScripts.length;qzAde++){
if(arHeadScripts[qzAde].src&&arHeadScripts[qzAde].src==sFileName){
bPreLoaded=true;
break;};};
if(!bPreLoaded){
scriptFiles[scriptFiles.length]=sFileName;};};};};};
var end=endScriptIndex + 9;
if(endScriptIndex>startScriptIndex){
var sScriptBlock=data.substring(startScriptIndex,endScriptIndex);
scripts +=sScriptBlock;};
data=data.substring(0,start)+ data.substring(end);};};
return scripts;};
httpRequest=function(reqType,url,asynch,data){
initReq=function(reqType,url,bool,data){
if(elem.Debug){
alert('Data sent: '+ data);};
request.onreadystatechange=handleResponse;
request.open(reqType,url,bool);
request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
request.send(data);};
if(window.XMLHttpRequest){
request=new XMLHttpRequest();}else if(window.ActiveXObject("Microsoft.XMLHTTP")){
if(!request){
request=new ActiveXObject("Microsoft.XMLHTTP");};};
if(request){
if(elem['LT_'+ elem.id]){
elem.element.innerHTML=elem['LT_'+ elem.id];};
initReq(reqType,url,asynch,data);};};
var data="";
if(arguments.length==0){
data="amCB_"+ this.id +"=0";};
encode=function(str){
if(str==undefined){
return undefined;}else{
return str.toString().replace(/&/g,"!AM#").replace(/=/g,"#AM!").replace(/\+/g,"#MA!");};};
for(cbi=0;cbi<arguments.length;cbi++){
if(data==""){
data +="amCB_"+ this.id +"="+ encode(arguments[cbi]);}else{
data +="&amCB_"+ this.id +"="+ encode(arguments[cbi]);};};
httpRequest("POST",elem.Location,true,data);};
function getOuterHTML(object){
if(document.all){
return object.outerHTML;}else{
var element;
if(!object){return null;};
element=document.createElement("div");
element.appendChild(object.cloneNode(true));
return element.innerHTML;};};