//	Javascript class developped by Michaël Villar
//	http://www.nemstudio.com/
//	Require script.aculo.us library
//	Cette création est mise à disposition selon le Contrat Paternité-Partage des Conditions Initiales 
//	à l'Identique 2.0 Belgique disponible en ligne http://creativecommons.org/licenses/by-sa/2.0/be/ 
//	ou par courrier postal à Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Fade = Class.create();
Fade.prototype = {
	effectOpacity: Object,
	
	initialize: function() {
	},
	
	enableFade:function() {
		if(!$("fade")) {		
			var size = getPageSize();

			var fade = document.createElement("div");
			fade.id = "fade";
			fade.style.height = size.pageHeight+"px";
			fade.style.opacity = "0.0";

			$$("body")[0].appendChild(fade);
			$$("body")[0].insertBefore(fade,$$("body")[0].firstChild);
			
			Element.setStyle("fade",{opacity:0.0});
			$('fade').style.filter = 'alpha(opacity=' + (0) + ')';
		}
		
		this.effectOpacity = new Effect.Opacity("fade", {from:Element.getStyle("fade","opacity"), to:0.4, duration: 0.5});
		

		Event.observe(window, "resize", this.updateSizeFade);
	},
	
	disableFade:function() {
		this.effectOpacity = new Effect.Opacity("fade", {from:Element.getStyle("fade","opacity"), to:0.0, duration: 0.5, afterFinish: function() {
			Element.remove("fade");
		}});
	},

	updateSizeFade:function() {
		if(!$("fade"))
			return;
		var size = getPageSize();
		$("fade").style.height = size.pageHeight+"px";
	},
	
	cancel:function() {
		this.effectOpacity.cancel();
	}
}

Notice = Class.create();
Notice.prototype = {
	effectOpacity: Object,
	
	initialize: function() {
	},
	
	show: function(content) {
		if($("fade"))
			Fade.cancel();
		if($("notice")) {
			this.cancel();
		}
		this.create(content);
		Fade.enableFade();
		this.effectOpacity = new Effect.Opacity("notice", {from:Element.getStyle("notice","opacity"), to:1.0, duration: 0.5});
	},
	
	hide: function() {
		Fade.disableFade();
		this.effectOpacity = new Effect.Opacity("notice", {from:Element.getStyle("notice","opacity"), to:0.0, duration: 0.5, afterFinish: function() {
			Element.remove("notice");
		}});
	},
	
	create: function(content) {
		if(!$("notice")) {
			var windowScroll = Draggable.getWindowScroll(); 
			var pageSize = getPageSize();
			var centeredDiv = document.createElement("div");
			centeredDiv.id = "notice";
			centeredDiv.style.height = pageSize.windowHeight +"px";
			centeredDiv.style.top = windowScroll.top +"px";
			centeredDiv.style.opacity = "0.0";

			$$("body")[0].appendChild(centeredDiv);
			$$("body")[0].insertBefore(centeredDiv,$$("body")[0].firstChild);
			
			Element.setStyle("notice",{opacity:0.0});
			$('notice').style.filter = 'alpha(opacity=' + (0) + ')';
			
			Event.observe(window, "resize", this.update);
		}

		replace_html("notice",content);
	},
	
	update: function() {
		if(!$("notice"))
			return;
		var windowScroll = Draggable.getWindowScroll(); 
		var size = getPageSize();
	   $("notice").style.height = size.windowHeight + "px";  
	},
	
	cancel:function() {
		this.effectOpacity.cancel();
	}
}

NoticeImage = Class.create();
NoticeImage.prototype = {
	initialize: function() {
	},
	
	show: function(path) {
		var im = new Image();
		im.src = path;
		var ref = this;
		setTimeout(function() {ref.isPictureLoaded(im);}, 100);
	},
	
	hide: function() {
		Notice.hide();
	},
	
	isPictureLoaded: function(ressource) {
		if (ressource.complete) {
			var style = "position:absolute;left:50%;top:50%;margin-left:"+"-"+(ressource.width/2)+"px"+";margin-top:"+"-"+(ressource.height/2)+"px"+";";
			var content = '<div class="image" style="'+style+'"><img onclick="javascript:Notice.hide();return false;" src="'+ressource.src+'" alt="" /><a href="#" onclick="javascript:Notice.hide();return false;" class="closer">Fermer</a></div>';
			Notice.show(content);
		}
		else {
			setTimeout(function(ref) {ref.isPictureLoaded(ressource);}, 100, this);
		}
	}
}	


Fade = new Fade();
Notice = new Notice();