var Popin = new Class ({
	Implements: Options,

	options: {
		width: 680,
		height: 300,
		padding: 30,
		bord_gauche: 35,
		bord_droit: 35,
		messageSpinner: 'Chargement en cours, veuillez patienter ...',
		onComplete: function(thisElement){}
	},

	initialize: function(div, options) {
		this.setOptions(options);
		this.div = div;
		this.width = this.options.width;
		var largeur = this.width - this.options.bord_gauche - this.options.bord_droit - this.options.padding * 2;
		this.div.setStyle('width', this.width);
		$$('#'+this.div.id+' div.popin_haut').setStyle('width', largeur);
		$$('#'+this.div.id+' div.popin_haut').setStyle('padding-left', this.options.padding);
		$$('#'+this.div.id+' div.popin_haut').setStyle('padding-right', this.options.padding);
		$$('#'+this.div.id+' div.popin_contenu').setStyle('width', largeur);
		$$('#'+this.div.id+' div.popin_contenu').setStyle('padding-left', this.options.padding);
		$$('#'+this.div.id+' div.popin_contenu').setStyle('padding-right', this.options.padding);
		$$('#'+this.div.id+' div.popin_bas').setStyle('width', largeur);
		$$('#'+this.div.id+' div.popin_bas').setStyle('padding-left', this.options.padding);
		$$('#'+this.div.id+' div.popin_bas').setStyle('padding-right', this.options.padding);
		var marginTop = (this.options.height + 140) / 2;
		var marginLeft = this.options.width / 2;
		this.div.setStyle('margin-top', '-'+marginTop+'px');
		this.div.setStyle('margin-left', '-'+marginLeft+'px');
		if (!$('lbOverlay')) {
			new Element('div', {id: "lbOverlay", styles : {display:"none", visibility: "visible", opacity: "0"}, html: "&nbsp;"}).inject($$('body')[0]);
		}
		this.div.inject($$('body')[0]);
		$$('.popin_close').addEvent('click', function() {
			this.fermer();
		}.bind(this));
		this.spinner = new Spinner($$('body')[0], {
			message: this.options.messageSpinner,
			noFx: false
		});
	},
	fermer: function() {
		$$('#'+this.div.id+' popin_middle').setStyle("height", 0);
		$$('#'+this.div.id+' div.popin_middle>.popin_contenu').setStyle("height", 0);
		$('lbOverlay').fade(0);
		$('lbOverlay').set('display', 'none');
		this.div.style.display = 'none';
		this.postFermer();
	},
	afficher: function(e) {
		if (e) e.stop();
		$('lbOverlay').style.display = 'block';
		$('lbOverlay').tween("opacity", "0.6");
		this.div.style.display = "block";
		$$('#'+this.div.id+' div.popin_middle').setStyle("height", this.options.height);
		$$('#'+this.div.id+' div.popin_middle>.popin_contenu').setStyle("height", this.options.height + 70);
		this.postAfficher();
	},
	postFermer: function(){
	},
	postAfficher: function(){
	},
	ouvrirUrl: function(url, options){
		this.spinner.show();
		this.setOptions(options);
		new Request({
			url: url,
			onSuccess: this.integrerAjax.bind(this)
		}).send();
	},
	integrerAjax: function(resultat){
		if (resultat.trim().substr(0,2) != 'ok') {
			Notification.apparitionMessage("Une erreur s'est produite::Erreur::alerte");
			this.spinner.hide();
			return;
		} else {
			resultat = resultat.replace(/^ok/, '').trim();
			$$('#'+this.div.id+' div.popin_middle>.popin_contenu').set('html', resultat);
			this.spinner.hide();
			this.afficher();
			this.options.onComplete();
		}
	}
});
