var initPopup = function() {
	if($('popup') == undefined) {
		document.body.insert({
			bottom: new Element('div', { 'id': 'popup' })
		});
		
		$('popup').hide();

		$('popup').insert({
			bottom: new Element('div', { 'id': 'popup-btn' }),
		});
		
		$('popup-btn').update(
			'<a href="#" title="' + lng('Fermer', 'Close') + '">' +
			'&times;' +
			'</a>'
		);

		$('popup').insert({
			bottom: new Element('div', { 'id': 'popup-nav-tab' }),
		});

		$('popup').insert({
			bottom: new Element('div', { 'id': 'popup-contenu' }),
		});
	}
}

var redimPopup = function(w) {
	var viewportDim = document.viewport.getDimensions();
	var viewportOffset = document.viewport.getScrollOffsets();
	var arLayout = $('popup').getLayout();
	
	if(w > 0) {
		$('popup').setStyle({ 'width': (w*1 + 50) + 'px' });
	}

	$('popup').setStyle({
		'left': ((viewportDim.width - arLayout.get('padding-box-width')) / 2) + 'px',
		'top': ((viewportDim.height - arLayout.get('padding-box-height')) / 2) + 'px',
	});
}

var updatePopup = function(contenu, navTab) {
	$('popup-nav-tab').update(navTab);
	$$('#popup-nav-tab li').each(initNavPtr);
	$('popup-contenu').update(contenu);
	//$('popup-contenu').select('div.nav-minitab').each(initMiniTab);
	redimPopup();
	setupAllLinks();
}

var initSombre = function() {
	if($('sombre') == undefined) {
		var sombre = new Element('div', { 'id': 'sombre' });
		document.body.insert({ bottom: sombre });
	}
}

var bodyClick = function(event) {
	var e = event.element();

	if((!e.match('#popup') && !e.up('#popup')) || (e.match('#popup-btn') || e.up('#popup-btn'))) {
		$('popup').hide();
		document.body.removeClassName('sombre');
		document.body.stopObserving('click', bodyClick);
		
		if(e.match('#popup-btn') || e.up('#popup-btn')) {
			event.stop();
		}
	}
}

var openPopup = function(w, inverse) {
	if(inverse) {
		$('popup').addClassName('inverse');
		initSombre();
		document.body.addClassName('sombre');

	} else {
		$('popup').removeClassName('inverse');
	}

	$('popup').show();
	redimPopup(w);
	setupAllSlideshows();
	document.body.stopObserving('click', bodyClick);
	document.body.observe('click', bodyClick);
}

var getPopupAjaxResponse = function(url, w, inverse, isPopupNavTabLink) {
	if(url.match(/\?/)) { url += '&ajax=1'; }
	else { url += '?ajax=1'; }
	initPopup();
	updatePopup('<div class="un-instant">' + lng('Un instant…', 'One moment…') + '</div>', (isPopupNavTabLink? $('popup-nav-tab').innerHTML: ''));

	new Ajax.Request(url, {
		method: 'post',
	
		onSuccess: function(transport) {
			var response = transport.responseText || '<div id="corps">Erreur</div>';
			response = response.gsub(/\n/, ' ');
			response = response.gsub(/\[base\]/, baseURL);
			var html = new Element('div').update(response);
			var responseCorps = html.down('#ajax-response').innerHTML;
			var responseNavTab = html.down('#nav-tab')? html.down('#nav-tab').innerHTML: '';
			delete html;
			updatePopup(responseCorps, responseNavTab);
			openPopup(w, inverse);
		}
	});
}

var setupPopupLink = function(link) {
	if(!link.hasClassName('popup')) {
		link.addClassName('popup');
		var inverse = link.hasClassName('video');
		var wMatch = link.href.match(/&w=(\d+)/);
		var w = wMatch? wMatch[1]: 0;
		
		if(link.tagName == 'A') {
			link.observe('click', function(event) {
				link.fire('popup:click');
				event.stop();
			});
		}
	
		link.observe('popup:click', function(event) {
			var isPopupNavTabLink = link.up('#popup-nav-tab');

			if(isPopupNavTabLink) {
				var newSel = link.up('li');
				newSel.addClassName('here');
				newSel.adjacent('li.here').invoke('removeClassName', 'here');
			}

			getPopupAjaxResponse(link.href, w, inverse, isPopupNavTabLink);
		});
	}
}

var disablePopupLink = function(link) {
	link.removeClassName('popup');
	link.stopObserving('click');
}


