function display_popup(conteneur, mode, args_in)
{
	switch (mode)
	{
		case 'show_element_popup':
			args_in = args_in.replace(/'/g, '"');
			var args = JSON.parse(args_in);
			if (args['type'] && args['id'] && args['container_unique_id'])
			{
				if(!jQuery('#' + conteneur).offset()) { return parent.display_popup(conteneur, mode, args_in); }
				
				if (jQuery('#' + conteneur).html() != '') { popup_set_back(conteneur); }
				
				url = '/common/core/composants/popup/popup.php?mode='+mode;
				var args_txt = '';
				for(key_var in args) { args_txt = args_txt + '&'+key_var+'='+args[key_var]; }
				
				jQuery('#' + conteneur).load(url+args_txt, {}, function(){
					var size = jQuery('#popup_edit_element').width();
					jQuery('#frame_edit_element').css('width', (size - 20) + 'px');
					jQuery('.popup_fermer_txt').click(function (event) { close_popup(conteneur, args); event.stopPropagation(); });
					jQuery('#popup_background').click(function (event) { close_popup(conteneur, args); event.stopPropagation(); });
				});
				add_event_close_on_esc(conteneur, args);
			}
		break;
		
		case 'show_container_popup':
			var args = args_in;
			if (args['unique_id'])
			{
				if(!jQuery('#' + conteneur).offset()) { return parent.display_popup(conteneur, mode, args_in); }
				
				if (jQuery('#' + conteneur).html() != '') { popup_set_back(conteneur); }
				
				url = '/common/core/composants/popup/popup.php?mode='+mode;
				var args_txt = '';
				for(key_var in args) { args_txt = args_txt + '&'+key_var+'='+args[key_var]; }
				
				jQuery('#' + conteneur).load(url+args_txt, {}, function(){
					var size = jQuery('#popup_edit_element').width();
					jQuery('#frame_edit_element').css('width', (size - 20) + 'px');
					jQuery('.popup_fermer_txt').click(function (event) { close_popup(conteneur, args); event.stopPropagation(); });
					jQuery('.popup_background').click(function (event) { close_popup(conteneur, args); event.stopPropagation(); });
				});
				add_event_close_on_esc(conteneur, args);
			}
		break;
		
		case 'show_popup_url':
			var args = args_in;
			if (args['url'])
			{
				jQuery('#' + conteneur).load('/common/core/composants/popup/popup.php', { 'mode' : 'popup_url', 'url' : args['url'] }, function(){
					var size = jQuery('#popup_edit_element').width();
					jQuery('#frame_edit_element').css('width', (size - 20) + 'px');
					if (args['default_height']) { popup_edit_element_resize_frame(conteneur, args['default_height']) }
					jQuery('.popup_fermer_txt').click(function (event) { close_popup(conteneur, args); event.stopPropagation(); });
					jQuery('.popup_background').click(function (event) { close_popup(conteneur, args); event.stopPropagation(); });
				} );
				add_event_close_on_esc(conteneur, args);
			}
		break;
		
		case 'mentions_legales':
			args_in = args_in.replace(/'/g, '"');
			var args = JSON.parse(args_in);
			jQuery('#' + conteneur).load('/common/core/composants/popup/popup.php', { 'mode': mode }, function(){
				jQuery('.popup_fermer_txt').click(function () { close_popup(conteneur, args); });
				jQuery('.popup_background').click(function () {  close_popup(conteneur, args); });
			} );
			add_event_close_on_esc(conteneur);
		break;
		
		case 'display_image':
			args_in = args_in.replace(/'/g, '"');
			var args = JSON.parse(args_in);
			src = args['src'];
			jQuery('#' + conteneur).load('/common/core/composants/popup/popup.php?mode='+mode+'&src='+src, {}, function(){
				jQuery('.popup_fermer_txt').click(function () { close_popup(conteneur, args); });
				jQuery('.popup_background').click(function () {  close_popup(conteneur, args); });
			});
			add_event_close_on_esc(conteneur);
		break;
		
		case 'display_video':
			args_in = args_in.replace(/'/g, '"');
			var args = JSON.parse(args_in);
			src = args['src'];
			jQuery('#' + conteneur).load('/common/core/composants/popup/popup.php?mode='+mode+'&src='+src, {}, function(){
				jQuery('.popup_fermer_txt').click(function () { close_popup(conteneur, args); });
				jQuery('.popup_background').click(function () {  close_popup(conteneur, args); });
			});
			add_event_close_on_esc(conteneur);
		break;
		
		case 'display_video_galerie':
			args_in = args_in.replace(/'/g, '"');
			var args = JSON.parse(args_in);
			links = args['links'];
			
			jQuery('#' + conteneur).load('/common/core/composants/popup/popup.php?mode='+mode+'&links='+links, {}, function(){
				jQuery('.popup_fermer_txt').click(function () { close_popup(conteneur, args); });
				jQuery('.popup_background').click(function () {  close_popup(conteneur, args); });
			});
			add_event_close_on_esc(conteneur);
		break;
		
		case 'display_file_galerie':
			args_in = args_in.replace(/'/g, '"');
			var args = JSON.parse(args_in);
			links = args['links'];
			
			jQuery('#' + conteneur).load('/common/core/composants/popup/popup.php?mode='+mode+'&links='+links, {}, function(){
				jQuery('.popup_fermer_txt').click(function () { close_popup(conteneur, args); });
				jQuery('.popup_background').click(function () {  close_popup(conteneur, args); });
			});
			add_event_close_on_esc(conteneur);
		break;
		
		case 'display_image_galerie':
			args_in = args_in.replace(/'/g, '"');
			var args = JSON.parse(args_in);
			src = args['src'];
			current = args['current'];
			total = args['total'];
			js_array = args['jsarray'];
			
			jQuery('#' + conteneur).load('/common/core/composants/popup/popup.php?mode='+mode+'&src='+src+'&current='+current+'&total='+total+'&jsarray='+js_array, {}, function(){
				jQuery('.popup_fermer_txt').click(function () { close_popup(conteneur, args); });
				jQuery('.popup_background').click(function () {  close_popup(conteneur, args); });
			});
			add_event_close_on_esc(conteneur);
		break;
	}
}

function close_popup(conteneur_popup, args)
{
	jQuery('#' + conteneur_popup).html('');
	jQuery('select').css('visibility', 'visible');
	if (args['container_reload_css_type_id'] != null) { container_reload('.' + args['container_reload_css_type_id']); }
	jQuery('#' + conteneur_popup).trigger('close_popup', [args]);
	if (conteneur_popup == 'main_popup_container') { jQuery(document).trigger('close_popup_main', [ args ]); }
	popup_get_back(conteneur_popup);
}

function add_event_close_on_esc(conteneur_popup, args)
{
	jQuery(window).keypress(function(e)
	{
		if (e.key == 'esc')
		{
			close_popup(conteneur_popup, args);
		}
	});
}

function main_popup_edit_element_resize_frame(size_h)
{
	popup_edit_element_resize_frame('main_popup_container', size_h);
}

function main_popup_move_on_scroll()
{
	 popup_move_on_scroll('main_popup_container');
}

function popup_set_back(conteneur_popup)
{
	if (!jQuery('#' + conteneur_popup + '_back').offset())
	{
		var div_back = jQuery('<div/>', { 'id' : (conteneur_popup + '_back'), 'style' : 'display: none;' });
		jQuery('body').append(div_back);
	}
	else { var div_back = jQuery('#' + conteneur_popup + '_back').offset(); }
	
	jQuery('#' + conteneur_popup).find('.popup_item').each(function (i, e) { 
		jQuery('#' + conteneur_popup + '_back').append(e); 
	});
}

function popup_get_back(conteneur_popup)
{
	if (last_popup = jQuery('#' + conteneur_popup + '_back .popup_item:last')) { jQuery('#' + conteneur_popup).append(last_popup); }
}

function popup_edit_element_resize_frame(popup_container, size_h)
{
	if (jQuery('#' + popup_container  + ' .frame_edit_element').offset()) { jQuery('#' + popup_container  + ' .frame_edit_element').css('height', (size_h + 10) + 'px'); }
}

function popup_move_on_scroll(popup_container)
{
	if (jQuery('#' + popup_container + ' .popup_content').offset() && jQuery('#' + popup_container + ' .popup_content_topmargin').offset())
    {
    	var cur_scroll_pos = f_scrollTop();
		var elsize = jQuery('#' + popup_container + ' .popup_content').height();
		var wisize = jQuery(window).height();
		var cur_top_margin_size = jQuery('#' + popup_container + ' .popup_content_topmargin').height();
		var cur_height =  parseInt(cur_top_margin_size.y);
		var emplacement_taille = ((cur_height + parseInt(elsize) + 70) - parseInt(wisize) - cur_scroll_pos);
                                
        if ((elsize + 60) < wisize) {  jQuery('#' + popup_container + ' .popup_content_topmargin').css('height', (cur_scroll_pos + 30) + 'px'); }
		else
		{
        	if (alignement > cur_scroll_pos)
			{
				jQuery('#' + popup_container + ' .popup_content_topmargin').css('height', (cur_scroll_pos + 30) + 'px');    
				alignement = cur_scroll_pos;
			}
			else if (emplacement_taille < 0)
			{
				jQuery('#' + popup_container + ' .popup_content_topmargin').css('height', (cur_height - emplacement_taille) + 'px');    
				alignement = cur_scroll_pos;
			}
		}

		/* corrige un probleme d'affichage safari en forcant la mise à jour des div affectés */
		jQuery('#' + popup_container + ' .popup_content').innerHTML += '';
		jQuery('#' + popup_container + ' .popup_container').innerHTML += '';
	}
}
