// Auteur : Rouches Benoît

function boxOnLoad(boxes)
{
	var overlay = boxes.overlayId;
	var container = boxes.loadBoxId;
	var effectFade = boxes.effectFade;
	var ua = getUserAgent();
	var B_overlay = document.createElement('div');
	var B_container = document.createElement('div');
	var B_close = document.createElement('div');
	var B_content = document.createElement('div');
	var B_spinner = document.createElement('div');
	var heightDoc;
	var h;
	var height;
	var width;		
	var o = this;

	B_overlay.id = overlay;
	B_container.id = container;
	B_close.className = 'close';
	B_content.id = container + 'Content';
	B_spinner.id = container + 'Spinner';
	B_content.className = 'content';
	
	// place l'element x en debut de liste
	document.body.insertBefore(B_container, document.body.firstChild);
	document.body.insertBefore(B_overlay, document.body.firstChild);
	B_overlay.style.display = 'none';
	B_container.style.display = 'none';
	B_container.appendChild(B_close);
	B_container.appendChild(B_content);
	B_overlay.appendChild(B_spinner);
	
	addListener(B_close, 'click',function() {o.closebox();} );
	
	this.show = function(server)
	{
		// le overlay
		B_overlay.style.display = 'block';
		// recuperation de la hauteur du document //
		if( document.documentElement && document.documentElement.scrollHeight ) 
		heightDoc = document.documentElement.scrollHeight;
		else if( document.body && document.body.scrollHeight )
		heightDoc = document.body.scrollHeight;
		B_overlay.style.height = heightDoc+'px';
		
		// le scroll
		if( document.documentElement && document.documentElement.scrollTop ) 
		h = document.documentElement.scrollTop;
		else if( document.body && document.body.scrollTop )
		h = document.body.scrollTop;
		
		h = (h == undefined) ? 0 : h;
		
		if(h == 0)
		setTimeout ("window.scrollTo(0, 0) ;", 1000 ); 
		
		// taille de la fenetre
		if( typeof( window.innerWidth ) == 'number' ) // la plupart des navigateurs sauf ie
		{	
			width = window.innerWidth; // taille fenetre
			height = window.innerHeight;
		}
		else if( document.documentElement && ( document.documentElement.clientWidth ||document.documentElement.clientHeight ) ) // la plupart des navigateurs dont ie
		{
			width = document.documentElement.clientWidth;// taille fenetre
			height = document.documentElement.clientHeight;
		}
		else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) // navigateur DOM
		{
			width = document.body.clientWidth;
			height = document.body.clientHeight;
		} 
		
		// placement du spinner
		var containerHeight=parseInt(B_spinner.offsetHeight);
		var containerWidth=parseInt(B_spinner.offsetWidth);
		positionnement(B_spinner,containerHeight,containerWidth);
		
		noScroll();
		
		// creation de la box et insertion du contenu
		createBox(server);
	};
	
	this.closebox = function()
	{
		B_overlay.style.display = 'none';
		B_container.style.display = 'none';
		if( (ua[0] == 'firefox' && ua[1] >= 3) || (ua[0] == 'msie' && ua[1] >= 8) || (ua[0] == 'safari' && ua[1] >= 5) || (ua[0] == 'opera' && ua[1] >= 9) || 
			(ua[0] == 'chrome' && ua[1] >= 5) )
		document.body.style.overflowY = 'scroll';	
	};
	
	function noScroll()
	{
		if( (ua[0] == 'firefox' && ua[1] >= 3) || (ua[0] == 'msie' && ua[1] >= 8) || (ua[0] == 'safari' && ua[1] >= 5) || (ua[0] == 'opera' && ua[1] >= 9) || 
			(ua[0] == 'chrome' && ua[1] >= 5) )
		document.body.style.overflow = 'hidden';
	}
	
	function createBox(server)
	{
		var http = createRequestObject();
		http.open('get', server, true);

		http.onreadystatechange = function() {
		if(http.readyState == 1)
			B_spinner.style.display = 'block';
		if(http.readyState == 4)
		{
			if(http.status == 200) // pas d'erreur
       		{
				B_spinner.style.display = 'none';
				B_content.innerHTML = http.responseText;
				//mediaWidth = (B_content.firstChild.tagName == 'OBJECT' || B_content.firstChild.tagName == 'IMG' ) ? B_content.firstChild.offsetWidth : 0;
				//mediaHeight = (B_content.firstChild.tagName == 'OBJECT' || B_content.firstChild.tagName == 'IMG' ) ? B_content.firstChild.offsetHeight : 0;
				var hauteur_box;
				var largeur_box;						
				
				B_container.style.display = 'block';
		
				if(effectFade === true)
				{
					var oFadeIn = new fadeIn(container);
					oFadeIn.gradient(0);
					oFadeIn.show();
				}
		
				hauteur_box=parseInt(B_container.offsetHeight);
				largeur_box=parseInt(B_container.offsetWidth);

				positionnement(B_container,hauteur_box,largeur_box);
			}
		}
		};
		http.send(null);
	}
	
	function positionnement(container,containerHeight,containerWidth)
	{
		var posY=(h + (height-containerHeight)/2 ) - 10;
		var posX=(width-containerWidth)/2;
		container.style.left=posX+"px";
		container.style.top=posY+"px"; 
	}
	
	/*
	Non utilisé ici mais peut s'averer fort utile
	function getElmentsByClassName(className, tag, elm)
	{
		var testClass = new RegExp("(^|s)" + className + "(s|$)");
		var tag = tag || "*";
		var elm = elm || document;
		var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
		var returnElements = [];
		var current;
		var length = elements.length;
		for(var i=0; i<length; i++){
			current = elements[i];
			if(testClass.test(current.className)){
			returnElements.push(current);
			}
		}
		return returnElements;
	} */
	
	function getUserAgent()
	{
		var browser;
		var version;
		var array = new Array();
		var ua = navigator.userAgent.toLowerCase();
		if( ua.indexOf('konqueror') != -1)
		browser = 'konqueror';
		else if( ua.indexOf('chrome') != -1)
		browser = 'chrome';
		else if( ua.indexOf('opera') != -1)
		browser = 'opera';
		else if( ua.indexOf('safari') != -1)
		browser = 'safari';
		else if( ua.indexOf('firefox') != -1)
		browser = 'firefox';
		else if( ua.indexOf('msie') != -1)
		browser = 'msie';
		
		if( browser != undefined)
		version = ua.charAt( ua.indexOf(browser) + 1 + browser.length);
		
		if ( version != undefined )
		array.push(browser,version);
		else
		array.push('undefined','undefined');
		
		return array;
	}
	
	function createRequestObject()
	{
    	if(window.XMLHttpRequest)
		return new XMLHttpRequest();
    
		else if(window.ActiveXObject)
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
	
	function addListener(element, baseName, handler)
	{
		if(element.addEventListener)
		element.addEventListener(baseName, handler, false);
		else if(element.attachEvent) // MSIE 
		element.attachEvent('on' + baseName, handler);
	}
}