/* ------------------------------------------------------------ */
// largeur de la partie droite
var popup_slide_min_width   = 10;
var popup_slide_larg_width  = 400;
var popup_slide_small_width = 230;

var popup_slide_for_selection = 1;
var popup_slide_for_detail    = 2;

var popup_opacity_speed  = 20;
var popup_opacity_offset = 0.05;

/* ------------------------------------------------------------ */
var popup_anim_class = function(min_width, max_width) {
	return {
		  opacity_speed: popup_opacity_speed
		, width_offset: 20

		, min_detail_width: min_width
		, max_detail_width: max_width
		
		, min_center_width: 10 /* voir css -> popup_slide_bg_center */
	};
};

var popup_anim;
var popup_anim_init = function(min_width, max_width) {
	if (!popup_anim) popup_anim = new popup_anim_class(min_width, max_width);
	else {
		popup_anim.min_detail_width = min_width;
		popup_anim.max_detail_width = max_width;
	}
}

/* ------------------------------------------------------------ */
var popup_obj_class = function() {
	return {
		container	:getById("popup_slide_container")
		, left		:getById("popup_slide_bg_left")
		, center	:getById("popup_slide_bg_center")
		, right		:getById("popup_slide_bg_right")
		, content	:getById("popup_slide_content")
		, menu		:getById("popup_slide_selection_menu")
		, btClose	:getById("btClosePopupSlide")
		
		, detail	:getById("popup_slide_detail")
		, selection :getById("popup_slide_selection")
		, map		:getById("popup_map_container")
	};
}
var popup_obj;
var popup_obj_init = function() {
	if (!popup_obj) popup_obj = new popup_obj_class();
}

/* ------------------------------------------------------------ */
var disable_popup_button = function(disabled) {

	if (getById("btClose_popup").disabled != disabled)
		getById("btClose_popup").disabled = disabled;

	if (getById("btOpen_popup_selection").disabled != disabled)
		getById("btOpen_popup_selection").disabled = disabled;
	
	if (getById("btClosePopupSlide").disabled != disabled)
		getById("btClosePopupSlide").disabled = disabled;
};

/* ------------------------------------------------------------ */
var open_popup_detail_start = function() {
	// masque le menu
	if (popup_obj.menu.style.display != "none")
		popup_obj.menu.style.display = "none";

	// masque le contenu
	if (popup_obj.content.style.display != "none")
		popup_obj.content.style.display = "none";
	
	// affiche le conteneur
	if (popup_obj.container.style.display != "block")
		popup_obj.container.style.display = "block";

	// masque le bouton fermer
	popup_obj.btClose.style.visibility = "hidden";

	// gestion des boutons
	disable_popup_button(true);
};

var open_popup_right_slide_stop = function(source) {
	// gestion des boutons
	disable_popup_button(false);
	
	// affiche le bouton fermer
	popup_obj.btClose.style.visibility = "visible";
	popup_obj.btClose.style.left = px(popup_anim.max_detail_width - popup_obj.right.clientWidth - popup_obj.btClose.clientWidth);
	popup_obj.btClose.style.top = px(230);

	switch (source) {
		case popup_slide_for_selection:
			// affiche le menu
			if (popup_obj.menu.style.display != "block")
				popup_obj.menu.style.display = "block";

			// affiche le contenu sélectionné
			popup_obj.detail.style.display		= "none";
			popup_obj.selection.style.display	= "block";
			break;
			
		case popup_slide_for_detail:
			// affiche le contenu sélectionné
			popup_obj.detail.style.display		= "block";
			popup_obj.selection.style.display	= "none";
			break;

		default:
			// raz
			popup_obj.detail.style.display		= "none";
			popup_obj.selection.style.display	= "none";
			break;
	}

	// affiche le contenu
	if (popup_obj.content.style.display != "block")
		popup_obj.content.style.display = "block";
};

var open_popup_right_slide = function(min_width, max_width, source) {
	popup_obj_init();
	popup_anim_init(min_width, max_width);

	// gestion barre de défilement
	if (max_width > popup_slide_small_width) {
		with(getById("popup_slide_content").style) {
			height = px(200);
			overflowY = "auto";
		}
	}
	else {
		with(getById("popup_slide_content").style) {
			height = px(220);
			overflowY = "hidden";
		}
	}
	
	// gestion zIndex en fonction de la taille
	/*
	if (max_width > popup_slide_small_width)
		getById("popup_region_container").style.zIndex = 1;
	else
		getById("popup_region_container").style.zIndex = 4;
	*/
	
	with (popup_anim) {
	
		// gestion des autres contrôles au démarrage de l'animation
		open_popup_detail_start();
	
		var container_width	= popup_obj.container.clientWidth;
		var center_width    = popup_obj.center.clientWidth;

		if (container_width > max_width) {
			// le container est déjà ouvert et plus grand : réduction
			reduce_popup_right_slide(min_width, max_width, source);
			return;
		}

		if (container_width + width_offset < max_detail_width) {
			
			/**/
			if (isNaN(popup_obj.container.style.opacity))
				setOpacity(popup_obj.container, 0);

			// opacité
			var opacity = Number(popup_obj.container.style.opacity) + popup_opacity_offset;
			setOpacity(popup_obj.container, opacity);
			/**/
			
			// largeur
			popup_obj.container.style.width = px(container_width + width_offset);
			popup_obj.center.style.width    = px(center_width + width_offset);

			// boucle
			setTimeout("open_popup_right_slide(" + min_width + ", " +  max_width + ", " + source + ")", opacity_speed);
		}
		else {
			/*
				si modif voir reduce_popup_right_slide()
			*/
			// opacité
			setOpacity(popup_obj.container, 1);

			// largeur
			if (container_width !=  max_detail_width) {
				popup_obj.container.style.width = px(max_detail_width);
				popup_obj.center.style.width    = px(center_width + width_offset);
				
				/*
				contenu : voir popup.css
				- popup_slide_selection_title{padding-left:15px}
				- popup_slide_bg_right{width:25px}
				*/
				popup_obj.content.style.width  = px(popup_obj.left.clientWidth + popup_obj.center.clientWidth); //popup_obj.right.clientWidth);
			}

			// gestion des autres contrôles à la fin de l'animation
			open_popup_right_slide_stop(source);

			// gestion barre de défilement
			if (max_width > popup_slide_small_width) {
				if (nav.explorer && (BrowserDetect.version >= 7)) {

					if (getById("popup_slide_content").clientHeight < getById("popup_slide_content").scrollHeight)
						getById("popup_slide_selection").style.width = px(max_detail_width - 42);
				}
			}

		}
	}
};

/* ------------------------------------------------------------ */
var close_popup_right_slide_start = function() {
	// masque le bouton fermer
	if (popup_obj.btClose.style.visibility != "hidden")
		popup_obj.btClose.style.visibility = "hidden";

	// masque le menu
	if (popup_obj.menu.style.display != "none")
		popup_obj.menu.style.display = "none";
	
	// masque le contenu
	if (popup_obj.content.style.display != "none")
		popup_obj.content.style.display = "none";

	// gestion des boutons
	disable_popup_button(true);
};

var close_popup_right_slide_stop = function() {

	// gestion des boutons
	disable_popup_button(false);

	// masque le conteneur
	popup_obj.container.style.display = "none";
};

var close_popup_right_slide = function(min_width, max_width, when_closed) {
	popup_obj_init();
	popup_anim_init(min_width, max_width);

	with (popup_anim) {
		// gestion des autres contrôles au démarrage de l'animation
		close_popup_right_slide_start();
	
		var container_width	= popup_obj.container.clientWidth;
		var center_width = popup_obj.center.clientWidth;
		if (container_width - width_offset > min_detail_width) {

			/*
				si modif voir reduce_popup_right_slide()
			*/
			/**/
			if (isNaN(popup_obj.container.style.opacity))
				setOpacity(popup_obj.container, 1);

			// opacité
			var opacity = Number(popup_obj.container.style.opacity) - popup_opacity_offset;
			setOpacity(popup_obj.container, opacity);
			/**/
			
			// largeur
			popup_obj.container.style.width = px(container_width - width_offset);
			if (center_width - width_offset > 0)
				popup_obj.center.style.width = px(center_width - width_offset);

			// boucle
			setTimeout("close_popup_right_slide(" + min_width + ", " +  max_width + ", " + when_closed + ")", opacity_speed);
		}
		else {
			
			// opacité
			setOpacity(popup_obj.container, 0);
			
			// largeur
			if (container_width !=  min_detail_width) {
				popup_obj.container.style.width = px(min_detail_width);
				popup_obj.center.style.width    = px(min_center_width);
			}

			// gestion des autres contrôles à la fin de l'animation
			close_popup_right_slide_stop();
			if (when_closed != null) when_closed();
		}
	}
};

/* ------------------------------------------------------------ */
/*
	si modif voir :
	- open_popup_right_slide
	- close_popup_right_slide
*/
var reduce_popup_right_slide = function(min_width, max_width, source) {
	popup_obj_init();
	popup_anim_init(min_width, max_width);

	with (popup_anim) {

		/*
			réduction -> voir close_popup_right_slide()
		*/
		var container_width	= popup_obj.container.clientWidth;
		var center_width = popup_obj.center.clientWidth;
		if (container_width - width_offset > max_detail_width) {

			// largeur
			popup_obj.container.style.width = px(container_width - width_offset);
			if (center_width - width_offset > 0)
				popup_obj.center.style.width = px(center_width - width_offset);

			// boucle
			setTimeout("reduce_popup_right_slide(" + min_width + ", " +  max_width + ", " + source + ")", opacity_speed);
		}
		else {

			/*
				affichage -> voir open_popup_right_slide()
			*/
			// largeur
			if (container_width !=  max_detail_width) {
				popup_obj.container.style.width = px(max_detail_width);
				popup_obj.center.style.width    = px(center_width + width_offset);
				popup_obj.content.style.width    = px(popup_obj.left.clientWidth + popup_obj.center.clientWidth); //popup_obj.right.clientWidth);
			}
				
			// gestion des autres contrôles à la fin de l'animation
			open_popup_right_slide_stop(source);
		}
	}
};
/* ------------------------------------------------------------ */
/*
	conteneur principal
*/
var open_popup_container = function(when_opened) {
	var popup_container = getById("popup_container");

	if (isNaN(popup_container.style.opacity))
		setOpacity(popup_container, 0);

	if (popup_container.style.display != "block")
		popup_container.style.display = "block";

		// opacité
	var opacity = Number(popup_container.style.opacity) + popup_opacity_offset;
	if (opacity < 1) {
		setOpacity(popup_container, opacity);
		setTimeout("open_popup_container(" + when_opened + ")", popup_opacity_speed);
	}
	else {
		setOpacity(popup_container, 1);
		if (when_opened != null) when_opened();
	}

	// mise en page : décalage du menu
	//if (nav.explorer || nav.safari) {
		getById("popup_region_table_menu").style.marginTop = px(10);
	//}
	
	// masque les contrôles autres -> voir common.js
	if (hide_onpopup) hide_onpopup();
};

var close_popup_container = function(when_closed) {
	var popup_container = getById("popup_container");
	
	if (isNaN(popup_container.style.opacity))
		setOpacity(popup_container, 1);

	// opacité
	var opacity = Number(popup_container.style.opacity) - popup_opacity_offset;

	if (opacity > 0) {
		setOpacity(popup_container, opacity);
		setTimeout("close_popup_container(" + when_closed + ")", popup_opacity_speed);
	}
	else {
		setOpacity(popup_container, 0);
		popup_container.style.display = "none";
		if (when_closed != null) when_closed();
	}
	
	// affiche les contrôles autres -> voir common.js
	if (show_onpopup) show_onpopup();
	
};
