var ajaxCallOn = 0; var ajaxCallOff = 0; var ajaxCallCnt = 0; var maintainanceArr = new Array(); function encodeStr(str){ 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.phpFile = "/lib/ajax.data.php"; } function AjaxPostSQL(){ ajaxCallCnt++; var pageUrl = this.phpFile; if(pageUrl.indexOf('?') < 0) { pageUrl += '?'; }else{ pageUrl += '&'; } pageUrl += 'random=' + Math.random(); var queryStr = '&dbVars=' + this.dbVars; for(key in this.vars){ //alert(key + ' ' + this.vars[key]); queryStr += '&' + key + '=' + encodeStr(this.vars[key]); } 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) { loadingObj.style.visibility = 'hidden'; loadingObj.innerHTML = 'Done.'; loadingObj.style.curson = 'default'; } } }else if(Ajax.readyState == 1){ if(loadingObj){ var bodyObj = document.getElementsByTagName('BODY')[0]; loadingObj.style.visibility = 'visible'; loadingObj.style.curson = 'wait'; loadingObj.innerHTML = 'Communicating with the server. Please wait...'; var bodyWidth = bodyObj.scrollWidth - 20; var bodyHeight = bodyObj.scrollHeight + 'px'; if(!loadingObj.style.width) loadingObj.style.width = bodyWidth; if(loadingObj.style.height != bodyHeight) loadingObj.style.height = bodyHeight; } }else if(Ajax.readyState < 4){ if(loadingObj){ loadingObj.innerHTML = '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){ // alert(Ajax.responseText); 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('Parse error')) >= 0 && (Ajax.responseText.indexOf('on line')) ){ var re = /<[^>]*>/g; var matches = Ajax.responseText.replace(re,''); alert(matches); ajaxCallCnt = 0; var loadingObj = document.getElementById(callObj.statusDiv); if(loadingObj) { loadingObj.style.visibility = 'hidden'; loadingObj.innerHTML = 'Done.'; loadingObj.style.curson = 'default'; } return false; } var response = Ajax.responseXML.documentElement; 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; } } 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=0) { var fieldValue = 0; var newImg = imageNode.src.replace(/\/active.png/g, '/inactive.png'); imageNode.alt = 'Inactive'; }else{ var fieldValue = 1; var newImg = imageNode.src.replace(/\/inactive.png/g, '/active.png'); imageNode.alt = 'Active'; } imageNode.src = newImg; } var ajaxVar = new ajaxVars(); ajaxVar.vars['action'] = 'modify'; ajaxVar.vars['table'] = table; ajaxVar.vars[fieldName] = fieldValue; ajaxVar.vars['id'] = id; ajaxVar.gotoFunction = "empty"; ajaxVar.dbVars = fieldName; ajaxVar.fieldObj = new Object(); ajaxVar.AjaxPostSQL(); }