/*-----------------------------------------------------------------------------------------------*/
//
// infoBox.js v1.0
//
// Copyright (c) 2008 Agence Clark (http://www.agence-clark.com)
//
/*-----------------------------------------------------------------------------------------------*/

var infoBox = Class.create();
infoBox.prototype =
{
	initialize: function(BoxAjaxFile) {
		//-- Récupération des variables optionnelles --//
		var options = Object.extend({BoxAjaxFile:BoxAjaxFile},arguments[1] || {});
		if (!options.BoxSiteContent) 		options.BoxSiteContent = 'site'; // Id conteneur du site
		if (!options.BoxdomNode) 			options.BoxdomNode = 'domNode'; // Id conteneur des modals
		if (!options.Boxskin) 				options.Boxskin = 'classique'; // Classe de la skin
		if (!options.BoxSrcFermer) 			options.BoxSrcFermer = 'images/infoBox/infobox_bt_fermer.gif'; // Src bouton fermer
		if (!options.BoxAltFermer) 			options.BoxAltFermer = 'Fermer'; // Alt bouton fermer
		if (!options.BoxCallback) 			options.BoxCallback = ''; // Callback Ajax
		if (!options.BoxOverlayOpacity) 	options.BoxOverlayOpacity = 0.6; // Opacite de l'overlay
		
		//-- Récupération des variables --//
		this.BoxAjaxFile = BoxAjaxFile; 	
		this.BoxSiteContent = options.BoxSiteContent;
		this.BoxdomNode = options.BoxdomNode;
		this.Boxskin = options.Boxskin;
		this.BoxSrcFermer = options.BoxSrcFermer;
		this.BoxAltFermer = options.BoxAltFermer;
		this.BoxCallback = options.BoxCallback;
		this.BoxOverlayOpacity = options.BoxOverlayOpacity;
		
		//-- Gestion des skin --//
		if(this.Boxskin != '') $(this.BoxdomNode).addClassName(this.Boxskin);
		
		//-- Contruction de l'infoBox --//
		$(this.BoxdomNode).appendChild(
			Builder.node('div',{id:'infobox_overlay', style:'display:none;'})
		);
		$(this.BoxdomNode).appendChild(
			Builder.node('div',{id:'infobox_box', style:'display:none;'}, [
				Builder.node('div',{id:'infobox_hg'},
					Builder.node('div',{id:'infobox_hd'},
						Builder.node('div',{id:'infobox_h'})
					)
				),
				Builder.node('div',{id:'infobox_g'},
					Builder.node('div',{id:'infobox_d'},[
						Builder.node('div',{id:'infobox_close_bar'}, 
							Builder.node('a',{id:'infobox_bt_fermer', href:'javascript:void(0);'}, 
								Builder.node('img',{src:this.BoxSrcFermer, alt:this.BoxAltFermer})
							)
						),
						Builder.node('div',{id:'infobox_body'})
					])
				),
				Builder.node('div',{id:'infobox_bg'},
					Builder.node('div',{id:'infobox_bd'},
						Builder.node('div',{id:'infobox_b'})
					)
				)
			])			
		);
		
		//-- Evenement fermeture --//
		Event.observe($('infobox_overlay'),'click', this.fermer.bindAsEventListener(this));
		Event.observe($('infobox_bt_fermer'),'click', this.fermer.bindAsEventListener(this));

		//-- Appel du contenu --//
		new Ajax.Updater('infobox_body', this.BoxAjaxFile,{
			onComplete : function(){
				//-- Positionnement --//
				this.infoboxWidth = $('infobox_box').getDimensions().width;
				this.infoboxHeight = $('infobox_box').getDimensions().height;
				this.winWidth = document.viewport.getDimensions().width;
				this.winHeight = document.viewport.getDimensions().height;
				this.bodyHeight = $$('body')[0].getDimensions().height;
				this.infoboxTop = (this.winHeight - this.infoboxHeight)/2;
				this.infoboxLeft = (this.winWidth - this.infoboxWidth)/2;
				$('infobox_box').setStyle({width:this.infoboxWidth+'px'});
						
				if(this.bodyHeight > this.winHeight) $('infobox_overlay').setStyle({width:this.winWidth+'px', height:this.bodyHeight+'px'});
				else $('infobox_overlay').setStyle({width:this.winWidth+'px', height:this.winHeight+'px'});
				
				$('infobox_box').setStyle({top:this.infoboxTop+'px', left:this.infoboxLeft+'px'});
				eval(options.BoxCallback);
			}
		});
	},
	
	ouvrir: function() {
		$(this.BoxdomNode).show();
		//$$('#'+this.BoxSiteContent+' select', '#'+this.BoxSiteContent+' object', '#'+this.BoxSiteContent+'  embed').each(function(node){ node.setStyle({visibility:'hidden'}); });
		$$('#'+this.BoxSiteContent+' select').each(function(node){ node.setStyle({visibility:'hidden'}); });
		Effect.Appear($('infobox_overlay'),{from:0, to:this.BoxOverlayOpacity, duration:0.5});
		Effect.Appear($('infobox_box'),{duration:0.5});
		//eval(this.BoxCallback);
	},
	
	fermer: function() {
		var domNode = this.BoxdomNode;
		Effect.Fade($('infobox_overlay'),{duration:0.5, afterFinish:function(){ 
			$(domNode).hide();
			$(domNode).update('');
			//$('infobox_overlay').remove();
			//$('infobox_box').remove();
		}});
		Effect.Fade($('infobox_box'),{duration:0.5});
		//$$('#'+this.BoxSiteContent+' select', '#'+this.BoxSiteContent+' object', 'embed').each(function(node){ node.setStyle({visibility:'visible'}); });		
		$$('#'+this.BoxSiteContent+' select').each(function(node){ node.setStyle({visibility:'visible'}); });		
	}
};