/* ------------------------------------------------------------------------
 * modal.js
 * Author: Matthieu Fauveau (mfauveau@deckmatt.com)
 * ------------------------------------------------------------------------ */
Modal = {

	checkContainer: function(id) {
		// check if container hasn't been removed (we remove it when closing the modal otherwise IE doesn't stop playing the movie), if this is the case, create a new alternative container
		var c = $("container_" + id);
		if (!c) {
			var d = document.createElement("div");
			d.setAttribute("id", "container_" + id);
			$(id).appendChild(d);
		}
	},
	
	openFLV: function(flv_file_name, flv_width, flv_height) {		
		var id = 'flash_modal';
		this.checkContainer(id);
		var flashvars = {
   		//file: "../../flv/" + flv_file_name + ".flv",
   		file: flv_file_name,
   		autostart: true,
  		bufferlength: 1 
 		 };
		var params = {
			allowfullscreen: true,
			allowscriptaccess: "always"
		};
		var attributes = {
			bgcolor: "#FFFFFF",
			quality: "best"
		};
		//swfobject.embedSWF("_layout/swf/player.swf", "container_" + id, flv_width, flv_height, "9.0.0","_layout/swf/expressInstall.swf", flashvars, params, attributes);
		swfobject.embedSWF("/flash/player.swf", "container_" + id, flv_width, flv_height, "9.0.0","/flash/expressInstall.swf", flashvars, params, attributes);
		$(id).setStyle({ 
			width: flv_width + "px",
			height: flv_height + "px"
		});
		this.open(id, 1, 1);
	},
	
	open: function(id, overlay, absolute) {
		this.center(id, overlay, absolute);
		return false;		
	},
	
	close: function(id, overlay) {
		if(overlay) {
			$('overlay').hide();
			this.treatSelects('visible');
		}	
		$(id).hide();
		return false;		
	},
	
	center: function(el, overlay, absolute) {
		try {
			el = $(el);
		} catch(e) {
			return;
		}
    	
    	var elDims = Element.getDimensions(el);
    	var scrollOffsets = document.viewport.getScrollOffsets();
	    var setX = (document.viewport.getWidth()-elDims.width) / 2;
	    var setY = (document.viewport.getHeight()-elDims.height) / 2;
	
	    setX = (setX < 0) ? 0 : setX;
	    setY = (setY < 0) ? 0 : setY;	

		if(absolute)
		{
			el.setStyle({
				position: "absolute"
			});
		}

	    if(Prototype.Browser.IE) { // IE Hack
			el.setStyle({
				position: "absolute",
				left: (scrollOffsets[0] + setX) + "px",
				top: (scrollOffsets[1] + setY) + "px"
			});
			
			if(!absolute)
			{
				Event.observe(window, 'scroll', function(event) {
					var scrollOffsets = document.viewport.getScrollOffsets();
					el.setStyle({
						left: (scrollOffsets[0] + setX) + "px",
						top: (scrollOffsets[1] + setY) + "px"
					});
				});
			}	
		}
		else
		{
			el.setStyle({
						left: (scrollOffsets[0] + setX) + "px",
						top: (scrollOffsets[1] + setY) + "px"
			});
		}	

	    if(overlay) {
			this.treatSelects('hidden');
			this.treatSelects('visible', el);
			
			if(Prototype.Browser.IE) { // IE Hack
				$('overlay').setStyle({ height: "1600 px" });	
			}
			
			$('overlay').appear({ duration: 0.5 });
		}
		el.appear({ duration: 0.5 });
	},
	
	treatSelects: function(visibility, el) {
		if(el == undefined) {
			el = document.body;
		}
		if(Prototype.Browser.IE) {
			selects = el.getElementsByTagName("select");
        	for (i = 0; i != selects.length; i++) {
                selects[i].style.visibility = visibility;
        	}
		}
	}
	
};