﻿jQuery.af_ajaxPreInit=function(callbackOK,callbackKO,dom) {
	jQuery.af_ajaxPreInit.callbackOK=callbackOK;
	jQuery.af_ajaxPreInit.callbackKO=callbackKO;
	if (!jQuery.af_ajaxCookie)
		var aj=new jQuery.ajax((dom?dom:'')+'/world/jquery/setcookie.asp', {
			type: 'GET',
			scriptCharset: "utf-8",
			success: function(t) { jQuery.af_ajaxSetCookie(t); jQuery.af_ajaxPreInit.callbackOK(); },
			error: jQuery.af_ajaxPreInitFail
		});
	else
		if (jQuery.af_ajaxCookie=='ok') callbackOK(); else callbackKO();
}
jQuery.af_ajaxPreInitFail=function() {
	jQuery.af_ajaxSetCookie('ko');
	jQuery.af_ajaxPreInit.callbackKO();
}
jQuery.af_ajaxSetCookie=function(v) {
	jQuery.af_ajaxCookie=v;
	try { setAfXperso('afperso','ajaxjq_ok',v); } catch(e) {};
}

jQuery.af_ajaxPeriodicalUpdater = function(id, url, options) {
	if (!jQuery.af_ajaxPeriodicalUpdater.items)
		jQuery.af_ajaxPeriodicalUpdater.items=new Object();
	jQuery.af_ajaxPeriodicalUpdater.items[id]=this;

	this.container_id=id;
	this.url=url;
	this.settings = jQuery.extend({
		type: 'GET', sendData: '', scriptCharset: "utf-8",
		minTimeout: 1000, maxTimeout: 8000, multiplier: 2
	}, options);
	this.lastText=null;
	this.start();
};
jQuery.af_ajaxPeriodicalUpdater.prototype.timerTick=function() {
	var myself=this, aj=new jQuery.ajax(this.url, {
		type: myself.settings.type, sendData: myself.settings.sendData, scriptCharset: myself.settings.scriptCharset,
		success: function(t) { myself.update(t) }
	});
};
jQuery.af_ajaxPeriodicalUpdater.prototype.start = function() {
	this.timerTick();
};
jQuery.af_ajaxPeriodicalUpdater.prototype.stop = function() {
	clearTimeout(this.periodicalTimer);
};
jQuery.af_ajaxPeriodicalUpdater.prototype.update = function(data) {
	if (!this.container)
		this.container=$('#'+this.container_id);
	if (this.lastText != data) {
		this.lastText = data;
		this.timerInterval = this.settings.minTimeout;
		this.container.html(data);
	} else {
		if (this.timerInterval < this.settings.maxTimeout)
			this.timerInterval = this.timerInterval * this.settings.multiplier;
		if (this.timerInterval > this.settings.maxTimeout)
			this.timerInterval = this.settings.maxTimeout;
	}
	this.periodicalTimer = setTimeout("jQuery.af_ajaxPeriodicalUpdater.items['"+this.container_id+"'].timerTick();", this.timerInterval);
};		
