//	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,
	effect: false,
	
	initialize: function() {
	},
	
	enableFade:function() {
		if(!$("fade")) {		
			var size = Utils.getPageSize();
			var fade = document.createElement("div");
			fade.id = "fade";
			fade.style.height = size.pageHeight+"px";
			fade.style.display = "none";
			$$("body")[0].appendChild(fade);
			$$("body")[0].insertBefore(fade,$$("body")[0].firstChild);

			if(this.effect)
				Element.setStyle("fade",{opacity:0.0});
			else
				Element.setStyle("fade",{opacity:0.5});
			Element.setStyle("fade",{display:""});
		}
		
		if(this.effect)
			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() {
		if(this.effect) {
			this.effectOpacity = new Effect.Opacity("fade", {from:Element.getStyle("fade","opacity"), to:0.0, duration: 0.5, afterFinish: function() {
				Element.remove("fade");
			}});
		}
		else
			Element.remove("fade");
	},

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

Notice = Class.create();
Notice.prototype = {
	effectOpacity: Object,
	effect: false,
	
	initialize: function() {
	},
	
	show: function(content) {
		if($("fade"))
			Fade.cancel();

		if($("notice"))
			this.cancel();

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

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

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

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:40px;margin-left:"+"-"+(ressource.width/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"></a></div>';
			Notice.show(content);
		}
		else {
			setTimeout(function(ref) {ref.isPictureLoaded(ressource);}, 100, this);
		}
	}
}	


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