var detect = navigator.userAgent.toLowerCase();
var OS, browser, version, total, thestring;
var lightbox_list = new Array;

function getBrowserInfo(){
	if(checkIt('konqueror'))
	{
		browser = 'Konqueror';
		OS = 'Linux';
	}
	else if(checkIt('safari'))
	{
		browser = 'Safari';
	}
	else if(checkIt('omniweb'))
	{
		browser = 'OmniWeb';
	}
	else if(checkIt('opera'))
	{
		browser = 'Opera';
	}
	else if(checkIt('webtv'))
	{
		browser = 'WebTV';
	}
	else if(checkIt('icab'))
	{
		browser = 'iCab';
	}
	else if(checkIt('msie'))
	{
		browser = 'Internet Explorer';
	}
	else if(!checkIt('compatible'))
	{
		browser = 'Netscape Navigator';
		version = detect.charAt(8);
	}
	else
	{
		browser = 'An unknown browser';
	}

	if(!version)
	{
		version = detect.charAt(place + thestring.length);
	}

	if(!OS)
	{
		if(checkIt('linux'))
		{
			OS = 'Linux';
		}
		else if(checkIt('x11'))
		{
			OS = 'Unix';
		}
		else if(checkIt('mac'))
		{
			OS = 'Mac';
		}
		else if(checkIt('win'))
		{
			OS = 'Windows';
		}
		else
		{
			OS = 'an unknown operating system';
		}
	}
}

function checkIt(string){
	place = detect.indexOf(string) + 1;
	thestring = string;
	return place;
}

Event.observe(window, 'load', initialize, false);
Event.observe(window, 'load', getBrowserInfo, false);
Event.observe(window, 'unload', Event.unloadCache, false);

var lightbox = Class.create();

lightbox.prototype = {
	yPos : 0,
	xPos : 0,

	initialize : function(ctrl){
		this.content = ctrl.href;
		Event.observe(ctrl, 'click', this.activate.bindAsEventListener(this), false);

		ctrl.onclick = function(){
			return false;
		};
	},

	activate : function(){
		if(browser == 'Internet Explorer')
		{
			this.getScroll();
			this.prepareIE('100%', 'hidden');
			this.setScroll(0, 0);
			this.hideSelects('hidden');
		}

		// Fermeture lightbox sur click de l'overlay (Frantz)
		Event.observe('overlay', 'click', this.deactivate.bindAsEventListener(this));

		// Lightbox draggable
		//new Draggable('lightbox');

		this.displayLightbox('block');
	},

	prepareIE : function(height, overflow){
		bod = document.getElementsByTagName('body')[0];
		bod.style.height = height;
		bod.style.overflow = overflow;

		htm = document.getElementsByTagName('html')[0];
		htm.style.height = height;
		htm.style.overflow = overflow;
	},

	hideSelects : function(visibility){
		selects = document.getElementsByTagName('select');

		for(i = 0; i < selects.length; i++)
		{
			selects[i].style.visibility = visibility;
		}
	},

	getScroll : function(){
		if(self.pageYOffset)
		{
			this.yPos = self.pageYOffset;
		}
		else if(document.documentElement && document.documentElement.scrollTop)
		{
			this.yPos = document.documentElement.scrollTop;
		}
		else if(document.body)
		{
			this.yPos = document.body.scrollTop;
		}
	},

	setScroll : function(x, y){
		window.scrollTo(x, y);
	},

	displayLightbox : function(display){
		$('overlay').style.display = display;
		$('lightbox').style.display = display;

		if(display != 'none')
		{
			if($('myOverlay'))
			{
				$('myOverlay').style.display = 'block';
			}

			this.loadInfo();
		}
	},

	loadInfo : function(){
		if($('myOverlay'))
		{
			$('myOverlay').style.display = 'block';
		}

		var is_anchor = this.content.match(/#(\w+)$/);

		if(is_anchor)
		{
			id = is_anchor[1];
			reponse = {};
			reponse.responseText = $(id).innerHTML;
			this.processInfo(reponse);
		}
		else
		{
			var myAjax = new Ajax.Request(
				this.content,
				{
					method : 'post',
					parameters : '',
					encoding : 'utf-8',
					onComplete : this.processInfo.bindAsEventListener(this)
				}
			);
		}
	},

	processInfo : function(response){
		if ($('lightboxContent')){
			$('lightboxContent').innerHTML = '<div id="lbLoadMessage"></div>';
		}
		info = '<div id="lbContent">' + response.responseText + '</div>';
		new Insertion.Before($('lbLoadMessage'), info);
		if($('myOverlay'))
		{
			$('myOverlay').style.display = 'none';
		}

		this.actions();
	},

	actions : function(){
		lbActions = document.getElementsByClassName('lbAction');

		for(i = 0; i < lbActions.length; i++)
		{
			if(lbActions[i].tagName == 'SELECT')
			{
				Event.observe(lbActions[i], 'change', this[lbActions[i].title].bindAsEventListener(this), false);

				lbActions[i].onchange = function(){
					return false;
				};
			}
			else
			{
				Event.observe(lbActions[i], 'click', this[lbActions[i].rel].bindAsEventListener(this), false);

				lbActions[i].onclick = function(){
					return false;
				};
			}
		}
	},

	insert : function(e){
		link = Event.element(e).parentNode;
		Element.remove($('lbContent'));

		if($('myOverlay'))
		{
			$('myOverlay').style.display = 'block';
		}

		var myAjax = new Ajax.Request(
			link.href,
			{
				method : 'post',
				parameters : '',
				encoding : 'utf-8',
				onComplete : this.processInfo.bindAsEventListener(this)
			}
		);
	},

	nextStep : function(e){
		link = Event.element(e);

		while(typeof link.href == 'undefined')
		{
			link = link.parentNode;
		}

		Element.remove($('lbContent'));

		if($('myOverlay'))
		{
			$('myOverlay').style.display = 'block';
		}

		var myAjax = new Ajax.Request(
			link.href,
			{
				method: 'post',
				parameters : '',
				encoding : 'utf-8',
				onComplete : this.processInfo.bindAsEventListener(this)
			}
		);
	},

	postForm : function(e){
	    if(typeof valid != 'undefined')
	    {
    		if(!valid.onSubmit())
    		{
    			return false;
    		}
    	}

		var formElement = Event.findElement(e, 'form');

		Element.remove($('lbContent'));

		if($('myOverlay'))
		{
			$('myOverlay').style.display = 'block';
		}

		var myAjax = new Ajax.Request(
			formElement.action,
			{
				method: 'post',
				postBody : Form.serialize(formElement),
				encoding : 'utf-8',
				onComplete : this.processInfo.bindAsEventListener(this)
			}
		);
	},

	goValue : function(e){
		var href = Event.element(e).value;

		Element.remove($('lbContent'));

		if($('myOverlay'))
		{
			$('myOverlay').style.display = 'block';
		}

		var myAjax = new Ajax.Request(
			href,
			{
				method: 'post',
				parameters : '',
				encoding : 'utf-8',
				onComplete : this.processInfo.bindAsEventListener(this)
			}
		);
	},

	inject : function(href){
	    this.content = href;
	    this.activate();
	},

	deactivate : function(){
		if($('lbContent'))
		{
		    Element.remove($('lbContent'));
		}

		if(browser == 'Internet Explorer')
		{
			/*this.setScroll(0, this.yPos);*/
			this.prepareIE('auto', 'auto');
			this.hideSelects('visible');
		}

		this.displayLightbox('none');
	}
}

function initialize(){
	addLightboxMarkup();
	lbox = document.getElementsByClassName('lbOn');

	for(var i = 0; i < lbox.length; i++)
	{
		lightbox_list[i] = new lightbox(lbox[i]);
	}
}

function reinitialize(){
	lightbox_list[0].actions();
}

function addLightboxMarkup(){
	bod = document.getElementsByTagName('body')[0];
	overlay = document.createElement('div');
	overlay.id = 'overlay';

	lb = document.createElement('div');
	lb.id = 'lightbox';

	/* -- ajout pour design -- */
	lbIn = document.createElement('div');
	lbIn.id = 'lightboxIn';

	lbContent = document.createElement('div');
	lbContent.id = 'lightboxContent';
	/* ----------------------- */

	/* On change le mode d'attente */
	//lbContent.className = 'loading';
	lbContent.innerHTML = '<div id="lbLoadMessage"></div>';


	lb.appendChild(lbIn);
	lbIn.appendChild(lbContent);

	bod.appendChild(overlay);
	bod.appendChild(lb);
}