var ajaxCallOn = 0; var ajaxCallOff = 0; var ajaxCallCnt = 0; var maintainanceArr = new Array(); function encodeStr(str){ if(str != undefined){ if(isNaN(str) && !isArray(str)) { str = str.replace(/&/g, '##AND##'); str = str.replace(/\+/g, '##ADD##'); str = str.replace('=', '##EQUAL##'); str = str.replace('?', '##QUESTION##'); str = str.replace('%', '##PERCENT##'); } return str; } } function decodeStr(str){ str = str.replace('##ADD##', '+'); str = str.replace('##AND##', '&'); str = str.replace('##EQUAL##', '='); str = str.replace('##QUESTION##', '?'); str = str.replace('##PERCENT##', '%'); return str; } function AjaxInit(){ var AjaxObj = false; if(window.XMLHttpRequest){ AjaxObj = new XMLHttpRequest(); }else if(window.ActiveXObject){ AjaxObj=new ActiveXObject("Msxml2.XMLHTTP"); if (!AjaxObj){ AjaxObj=new ActiveXObject("Microsoft.XMLHTTP"); } } return(AjaxObj); } function ajaxVars(){ this.vars = new Array(); this.vars['sqlDB'] = '0'; this.fnVars = new Array(); this.dbVars = new Array(); this.sendMethod = 'POST'; this.gotoFunction = ''; this.xmlData = ''; this.statusDiv = 'loadingDiv'; this.AjaxPostSQL = AjaxPostSQL; this.createData = createData; this.errorData = errorData; this.sqlTracer = sqlTracer; this.xmlOpener = xmlOpener; this.maintainance = maintainance; this.externalErrors = externalErrors; this.session = 1; this.sessionVar = 'sess_auth'; this.phpFile = "lib/ajax.data.php"; this.incModule = ''; this.noLayer = 1; } function AjaxPostSQL(){ ajaxCallCnt++; var pageUrl = this.phpFile; if(pageUrl.indexOf('?') < 0) { pageUrl += '?'; }else{ pageUrl += '&'; } pageUrl += 'random=' + Math.random(); var queryStr = '&dbVars=' + this.dbVars; for(var key in this.vars){ queryStr += '&' + key + '=' + encodeStr(this.vars[key]); } if(this.session) { queryStr += '&sessionVar=' + this.sessionVar; } if(this.incModule){ queryStr += '&incModule=' + this.incModule; } if(this.sendMethod == 'GET') { pageUrl += queryStr; } var Ajax = AjaxInit(); try{ var callObj = this; Ajax.open(this.sendMethod, pageUrl); Ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=iso-8859-1'); str = ''; for(key in Ajax) { str += key + "\n"; } Ajax.onreadystatechange = function(){ var loadingObj = document.getElementById(callObj.statusDiv); if (Ajax.readyState == 4 && Ajax.status == 200) { var dtStatus = handleAjax(Ajax, callObj); if(dtStatus === false){ return false; } if(ajaxCallCnt) ajaxCallCnt--; if(loadingObj){ if(ajaxCallCnt == 0) { if(callObj.noLayer == 1){ hideStatus(loadingObj.id, 'Done.'); } } } }else if(Ajax.readyState == 1){ if(loadingObj){ var bodyObj = document.getElementsByTagName('BODY')[0]; if(callObj.noLayer == 1){ showStatus(loadingObj.id, 'Communicating with the server. Please wait...'); } } }else if(Ajax.readyState < 4){ if(loadingObj){ if(callObj.noLayer == 1){ showStatus(loadingObj.id, 'Loading data. Please wait...'); } } }else{ var statusLostObj = document.getElementById('statusLost'); if(statusLostObj){ statusLostObj.style.visibility = 'visible'; statusLostObj.style.display = 'block'; } } } Ajax.send(queryStr); } catch(e){ alert('Error: Unable to contact the server.'); } } function handleAjax(Ajax, callObj){ if(Ajax.responseText.indexOf('META HTTP-EQUIV=') > 0) { if(location.href.indexOf('index.php')<0){ // parent.parent.location.href = 'index.php'; } return false; } // if( (Ajax.responseText.indexOf('Fatal error')) >= 0 && (Ajax.responseText.indexOf('on line')) || // (Ajax.responseText.indexOf('Warning')) >= 0 && (Ajax.responseText.indexOf('on line')) || // (Ajax.responseText.indexOf('Parse error')) >= 0 && (Ajax.responseText.indexOf('on line')) ){ if( (Ajax.responseText.indexOf('Fatal error')) >= 0 && (Ajax.responseText.indexOf('on line')) || (Ajax.responseText.indexOf('Parse error')) >= 0 && (Ajax.responseText.indexOf('on line')) ){ var re = /<[^>]*>/g; var matches = Ajax.responseText.replace(re,''); alert(matches); ajaxCallCnt = 0; hideStatus(callObj.statusDiv, 'Done.'); return false; } var response = Ajax.responseXML.documentElement; var sessionObj = response.getElementsByTagName('session'); var dataObj = response.getElementsByTagName('row'); var errorObj = response.getElementsByTagName('sqlerror'); var textObj = response.getElementsByTagName('textdata'); switch(callObj.vars['action']) { case "update": case "modify": if(Ajax.responseText.indexOf('maintainance()') >= 0){ callObj.maintainance(); break; } } if(callObj.session) { var sessionId = sessionObj[0].firstChild.nodeValue; if(!sessionId) { // parent.parent.pageOpener('login','devArea','err=9'); hideStatus(callObj.statusDiv, 'Done.'); ajaxCallOn = 0; ajaxCallOff = 0; ajaxCallCnt = 0; // return false; } } dataArr = callObj.createData(dataObj,textObj); callObj.errorData(errorObj, dataObj, textObj); callObj.xmlData = Ajax.responseText; var xmlLinkObj = document.getElementById('xmlLink'); if(xmlLinkObj) { xmlLinkObj.href = "javascript:void(0);"; xmlLinkObj.mainObj = callObj; xmlLinkObj.onclick = function(e) { var hiddenObj = document.getElementById('xmlajaxdata'); hiddenObj.value = this.mainObj.xmlData; this.mainObj.xmlOpener(); } } eval(callObj.gotoFunction + '(dataArr, callObj.fnVars)'); } function createData(rowObj, textObj){ if(rowObj.length > 0) { var str = ''; var dataArr = new Array(); var str = ''; for(var i=0; i 0) { var errLen = errorTags.length; for(var i=0; i