var Pub = new Object();	

Pub.Methods = {
	ajax: null,
	options: {
		elementId: 'pub',
		url: 'mod/pub/ajax.php',
		currentIdPub: 0,
		alreadyTimeout: null,
		transitionEffect: true,
		mouseOverObserve: true
	},
	
	init: function(options) {
		this.setOptions(options);
		this.run();
	},

	run: function() {
		if (this.options.mouseOverObserve) {
			// survol sur la pub : on stoppe le periodical updater
			Event.observe(this.options.elementId, 'mouseover', function () {
				Pub.ajax.stop();
			});
			
			// mouse out sur la pub : on relance l'update de la pub dans 2 sec.
			Event.observe(this.options.elementId, 'mouseout', function () {
				if (Pub.options.alreadyTimeout == null) {
					Pub.options.alreadyTimeout = setTimeout(function () {
						Pub.options.alreadyTimeout = null;
						Pub.ajax.start();
					}, 2000);
				}
			});
		}
		
		// déclare le periodical updater
		this.ajax = new Ajax.PeriodicalUpdater('', this.options.url, {
			frequency: 1,
			method: 'get',
			//parameters: { current_id_pub: Pub.options.currentIdPub },
			onSuccess: function(transport) {
				// recupere en json les données de la pub
				json = transport.responseText.evalJSON(true);
				
				// change la frequence d'actualisation
				Pub.ajax.frequency = json.temps_pub;

				// change les parametres envoyes au serveur
				//Pub.options.currentIdPub = json.id_pub;
				//Pub.ajax.options.parameters = { current_id_pub: parseInt(json.id_pub) };
				
				// actualise l'affichage de la pub
				var content = '';
				if (json.extension_pub == 'swf') { // contenu flash
					content = json.image_pub;
				} else { // contenu image
					if (json.url_pub != null) {
						content = '<a href="'+ json.url_pub +'" target="_blank"><img src="upload/pub/'+ json.image_pub + '" alt="" /></a>';
					} else {
						content = '<img src="upload/pub/'+ json.image_pub + '" alt="" />';
					}
				}
				
				
				// mise a jour de l'affichage des bannieres avec transitions
				if (Pub.options.transitionEffect) {
					Effect.Fade(Pub.options.elementId, {
						duration: 0.5,
						afterFinish: function() {
							Pub.changeContent(json.extension_pub, content);
							Effect.Appear(Pub.options.elementId, { duration: 0.5 });
						}
					});
				// mise a jour de l'affichage des bannieres sans transitions
				} else {
					$(Pub.options.elementId).hide();
					Pub.changeContent(json.extension_pub, content);
					$(Pub.options.elementId).show();
				}
			}					
		});
	},
	//fonction qui met a jour le contenu de la banniere (different si flash)
	changeContent: function(extension, content) {
		if (extension == 'swf') { // contenu flash
			FlashReplace.replace(Pub.options.elementId, "upload/pub/" + content, Pub.options.elementId + "flash", 468, 60);
		} else { // contenu image
			$(Pub.options.elementId).update(content);
		}
	},
	
	setOptions: function(options) {
		Object.extend(this.options, options || {});
	}
}	

Object.extend(Pub, Pub.Methods);
