/*
 * jquery.ahah.js v1.64 (created: 2007/11/20, updated: 2008/03/17)
 * 
 * Company: Statusfirm
 * Coded by: Chesley Brown
 * Contact: c.brown@statusfirm.com
 * 
 * ***Description***
 * Easy ajax for ahah
 * ******
 * 
 * *****Requires*****
 * jquery.js (tested with v1.2)
 * firebugx.js (if using showErrors without useAlerts)
 * ******
 * 
 */
function classjQueryAHAH(objParam) { this.loadingLock = false; this.defaults = { baseHREF: '', enabled: true, ahahLocation: 'ahahFile.php', ajaxMethod: 'get', ajaxCache: false, ajaxDataType: 'html', ajaxTimeout: 20000, ahahData: null, update: false, interval: null, enabled: true, jsName: 'jQuery.ahah: ', loadingShowClass: 'iconLoadingSM', loadingHideClass: 'iconNoneSM', loadingID: null, displayID: null, onLoad: null, onLoadDataRequired: new Object(), data: new Object(), dataRequired: new Object(), errorOnRequired: true, continueOnRequired: false, continueOnError: false, useAlerts: false, showErrors: false, callStart: false, callBack: false, msgError: { 'unknown': 'unknown!', 'timeout': 'timeout!', 'pagenotfound': 'page not found!', 'missingid': 'id="%i" cannot be found!', 'required': 'required="%i" is missing or empty'
}
}; if (document.getElementsByTagName('base')[0]) { this.defaults.baseHREF = document.getElementsByTagName('base')[0].href;}
this.get = getjQueryAHAH; this.lock = lockjQueryAHAH; this.unlock = unlockjQueryAHAH; this.display = displayjQueryAHAH; this.recur = recurjQueryAHAH; this.modify = modifyjQueryAHAH; this.modify(objParam); var self = this; if (this.defaults.onLoad) { $().ready(function() { self.recur();});}
}
function getjQueryAHAH() { var self = this; var dataCheckStatus = true; if (this.defaults.onLoad) { if (this.defaults.onLoadDataRequired) { for (var i in this.defaults.onLoadDataRequired) { if (this.defaults.onLoadDataRequired[i]) { if (typeof(this.defaults.data[i]) == 'undefined' || (isNaN(this.defaults.data[i]) && $.trim(this.defaults.data[i]) == '') || (!isNaN(this.defaults.data[i]) && this.defaults.data[i] == 0)) { dataCheckStatus = false; if (this.defaults.errorOnRequired) { if (this.defaults.showErrors) { var msgError = this.defaults.msgError['required'].replace(/%i/, i); if(this.defaults.useAlerts) { alert(this.defaults.jsName + msgError);} else { console.error(this.defaults.jsName + msgError);}
}
}
}
}
}
}
this.defaults.onLoad = false;} else { if (this.defaults.dataRequired) { for (var i in this.defaults.dataRequired) { if (this.defaults.dataRequired[i]) { if (typeof(this.defaults.data[i]) == 'undefined' || (isNaN(this.defaults.data[i]) && $.trim(this.defaults.data[i]) == '') || (!isNaN(this.defaults.data[i]) && this.defaults.data[i] == 0)) { dataCheckStatus = false; if (this.defaults.errorOnRequired) { if (this.defaults.showErrors) { var msgError = this.defaults.msgError['required'].replace(/%i/, i); if(this.defaults.useAlerts) { alert(this.defaults.jsName + msgError);} else { console.error(this.defaults.jsName + msgError);}
}
}
}
}
}
}
}
if (dataCheckStatus && !this.loadingLock) { this.lock(); if (typeof(this.defaults.callStart) == 'function') { this.defaults.callStart();}
var opt = { url: this.defaults.baseHREF + this.defaults.ahahLocation, type: this.defaults.ajaxMethod, dataType: this.defaults.ajaxDataType, cache: this.defaults.ajaxCache, timeout: this.defaults.ajaxTimeout, data: this.defaults.data, success: function(data) { if ($(data)[0] != null) { self.defaults.ahahData = data; self.display();} else { if (self.defaults.showErrors) { if (self.defaults.useAlerts) { alert(self.defaults.jsName + self.defaults.msgError['unknown']);} else { console.error(self.defaults.jsName + self.defaults.msgError['unknown']);}
}
self.recur();}
}, error: function(data, status) { if (self.defaults.showErrors) { if (status == 'timeout') { if (self.defaults.useAlerts) { alert(self.defaults.jsName + self.defaults.msgError['timeout']);} else { console.error(self.defaults.jsName + self.defaults.msgError['timeout']);}
} else { if (data.status == 404) { if (self.defaults.useAlerts) { alert(self.defaults.jsName + self.defaults.msgError['pagenotfound']);} else { console.error(self.defaults.jsName + self.defaults.msgError['pagenotfound']);}
}
else { if (self.defaults.useAlerts) { alert(self.defaults.jsName + self.defaults.msgError['unknown']);} else { console.error(self.defaults.jsName + self.defaults.msgError['unknown']);}
}
}
}
self.unlock(); self.recur();}
}
$.ajax(opt);} else { }
}
function lockjQueryAHAH(){ if (!this.loadingLock) { this.loadingLock = true; if (document.getElementById(this.defaults.loadingID)) { document.getElementById(this.defaults.loadingID).className = this.defaults.loadingShowClass;}
}
}
function unlockjQueryAHAH(){ if (this.loadingLock) { this.loadingLock = false; if (document.getElementById(this.defaults.loadingID)) { document.getElementById(this.defaults.loadingID).className = this.defaults.loadingHideClass;}
}
}
function displayjQueryAHAH() { var self = this; if (document.getElementById(this.defaults.displayID)) { document.getElementById(this.defaults.displayID).innerHTML = this.defaults.ahahData;} else { if (this.defaults.showErrors) { var msgError = this.defaults.msgError['missingid'].replace(/%i/, this.defaults.displayID); if(this.defaults.useAlerts) { alert(this.defaults.jsName + msgError);} else { console.error(this.defaults.jsName + msgError);}
}
}
this.unlock(); this.recur();}
function recurjQueryAHAH() { var self = this; if (this.defaults.enabled) { if (this.defaults.continueOnError) { if (this.defaults.interval && !this.defaults.update) { setTimeout(function(){ if (!self.defaults.update) { self.get();}
}, this.defaults.interval * 1000);}
else if (this.defaults.interval && this.defaults.update) { this.defaults.update = false;}
}
if (typeof(this.defaults.callBack) == 'function') { this.defaults.callBack();}
}
}
function modifyjQueryAHAH(objParam) { if (objParam) { for (var setting in objParam) { if (typeof(objParam[setting]) == 'object' || typeof(objParam[setting]) == 'array') { for (var item in objParam[setting]) { this.defaults[setting][item] = objParam[setting][item];}
} else { this.defaults[setting] = objParam[setting];}
}
}
if (this.defaults.update) { this.get();}
}