var repertoire = '';


/** Extension de l'objet fn de JQuery **/
var extendFn = {
	/** ######################### Permet d'identifier le type d'une balise ######################### */
	tagName : function(){
		return this.get(0).tagName.toLowerCase();
	},

	/** ######################### Permet de savoir si l'objet existe ######################### */
	exists : function(){
		return this.length > 0;
	},

	/** ######################### Permet de supprimer tous les espaces ######################### */
	mtrim : function(){
		return this.val().replace(/\s+/g,"");
	},

	/** ######################### Permet de supprimer tous les espaces en debut et fin */
	trim : function(){
		var val = this.val().replace(/^\s*/,"");
		return val.replace(/\s*$/,"");
	},

	/** ######################### Permet de supprimer les espaces qui se suivent en un seul espace ######################### */
	simplify : function(){
		var val = this.trim();
		return val.replace(/\s+/g," ");
	},
	
	/** ######################### Permet d'afficher une page de chargement ######################### */
	loading : function(){
		var obj = this;
		var load = null; 
		var masque = null;
		var gif = null;
		
		obj.css('position','relative');
		
		dH = ((parseInt(obj.css('height')) / 2) - (15 / 2));
		dW = ((parseInt(obj.css('width')) / 2) - (128 / 2));

		gif = $("<div>", {'class':'gif-load'}).css({
			marginTop:dH + 'px', 
			marginLeft:dW + 'px'
		});
		load = $("<div>", {'class':'load'}).css({
			height:obj.height() + (($.browser.version < '8.0') ? parseInt(obj.css('padding-top')) + parseInt(obj.css('padding-bottom')) : 0) + 'px', 
			width:obj.width() + parseInt(obj.css('padding-left')) + parseInt(obj.css('padding-right')) + 'px'
		});
		masque = $("<div>", {'class':'masque-load'}).css({
			height:load.height() + 'px',
			opacity:'0.70'
		});

		obj.append(load.append(masque, gif));
		
		return load;
	},
	
	/** ######################### Permet d'attribuer à un bouton la propriété d'ajouter une page aux favoris du navigateur (IE et Firefox seulement) ######################### */
	favoris : function(){
		var obj = this;
		
		if($.browser.msie || $.browser.mozilla){
			//add a "rel" attrib if Opera 7+
			if(window.opera) {
			    if (obj.attr('rel') != ''){ // don't overwrite the rel attrib if already set
			        obj.attr('rel', 'sidebar');
			    }
			}
			
			obj.click(function(event){
			    event.preventDefault(); // prevent the anchor tag from sending the user off to the link
			    
			    
			    var url = window.location.href;
			    var title = (window.location.title && window.location.title != undefined) ? window.location.title : document.title;
			   
			    // Mozilla Firefox Bookmark
			    if (window.sidebar) { 
			        window.sidebar.addPanel(title, url, '');
			    } 
			    
			    // IE Favorite
			    else if(window.external) { 
			        window.external.AddFavorite(url, title);
			    }
			    
			    // Opera 7+
			    else if(window.opera) { 
			        return false; // do nothing - the rel="sidebar" should do the trick
			    }
			    
			    // for Safari, Konq etc - browsers who do not support bookmarking scripts (that i could find anyway)
			    else { 
			        alert('Unfortunately, this browser does not support the requested action, please bookmark this page manually.');
			    }
			});
		}
		else {
			obj.parent().hide();
		}
	}
};
$.extend($.fn, extendFn);



/** Extension de l'objet String de JavaScript **/
var extendString = {
	/** ######################### Permet de supprimer tous les espaces ######################### */
	mtrim : function(){
		return this.replace(/\s+/g,"");
	},
	
	/** ######################### Permet de supprimer tous les espaces en debut et fin */
	trim : function(){
		var val = this.replace(/^\s*/,"");
		return val.replace(/\s*$/,"");
	},
	
	/** ######################### Permet de supprimer les espaces qui se suivent en un seul espace ######################### */
	simplify : function(){
		var val = this.trim();
		return val.replace(/\s+/g," ");
	}
};
$.extend(String.prototype, extendString);



/** ######################### Permet de greffer le style ui au bouton ######################### */
function init_button(){
	$("#rechercher_1 .cadre_divers").tabs({collapsible:true});
	$("#listTypeActivites").accordion({autoHeight:false, collapsible:true, active:false});
	$("input:button, .btns_navigations, .btns_navigations_hover, .other_btn").button();
	$(".barreCommande .commander").button({icons:{primary:"ui-icon-extlink"}, text:true});
	$(".barreCommande .fabricant").button({icons:{primary:"ui-icon-document"}, text:true});
	$(".email").button({icons:{primary:"ui-icon-mail-closed"}, text:false});
	$(".precedent").button({icons:{primary:"ui-icon-triangle-1-w"}, text:false});
	$(".suivant").button({icons:{primary:"ui-icon-triangle-1-e"}, text:false});
	$(".pages .previous").button({icons:{primary:"ui-icon-triangle-1-w"}, text:false});
	$(".pages .next").button({icons:{primary:"ui-icon-triangle-1-e"}, text:false});
	$(".pages .first").button({icons:{primary:"ui-icon-seek-prev"}, text:false});
	$(".pages .last").button({icons:{primary:"ui-icon-seek-next"}, text:false});
	$('#btn_favoris').favoris();
	$('.addc').each(function(){
		$(this).click(function(){
			var id = $(this).attr('name').split('/');
			commander(id[0], id[1]);
		});
	});
}


/** ######################### Permet d'identifier le zone de recherche ######################### */
function init_search(){
	var ong = (arguments.length == 1) ? arguments[0] : false;
	
	// ... onglets de la zone recherche
	$("#rechercher_1 .cadre_divers").tabs('option', 'selected', ong);
	
	
	// Recherche d'un fabricant à partir de la liste déroulante
	var listF = $('#list_fabricants');
	listF.change(function(){
		var val = listF.find("option:selected").val();
		if(isNaN(val) == false) $(location).attr('href', $('#lien_fabricant').val()+val);
	});
	
	
	// On regarde si une activité a été sélectionné
	var listTypeActs = $("#listTypeActivites");
	var groupe_act_select = $('#groupe_act_select');
	groupe_act_select = (groupe_act_select.mtrim() != '' && isNaN(groupe_act_select.val()) == false) ? groupe_act_select.val() : null;
	
	// On identifie l'index du groupe dans lequel l'activité a été sélectionné
	var ind = false;
	if(groupe_act_select != null){
		var cpt = 0;
		var grp_p = listTypeActs.find('h3');
		grp_p.each(function(){
			if($(this).find('a').attr('href').replace('#','') == groupe_act_select) return false;
			cpt++;
		});
		ind = cpt;
				
		var act_select = $('#act_select');
		if(act_select.mtrim() != '' && isNaN(act_select.val()) == false) $('#'+act_select.val()).css('color','#C2D643');
	}
	listTypeActs.accordion('option', 'active', ind);
}


/** ######################### Permet d'afficher la page des mags en fonction du bouton qui permettra l'action ######################### */
function init_page_mags(btn){
	// Initialisation des variables
	btn = $('#'+btn);			// Button
	btn.data('lock', false); 	// locker sur le click du bouton (Déverrouiller)
	btn.data('show', false); 	// Determine si la page des mags a déjà été chargé

	
	// Initialisation du traitement à l'action du clic sur le bouton
	btn.click(function(){
		// On vérifie que le locker est ouvert
		if(btn.data('lock') === false){
			btn.data('lock', true); // On verrouille
			
			// Si la page n'a pas encore été chargé
			if(btn.data('show') === false){
				
				// Appel de la page des mags en AJAX
				$.ajax({
					type: 'POST',
					url: 'http://'+$(document).get(0).domain+'/'+repertoire+'page/all/mags.php',
					success: function(data){
						// Initialisation
						var middle = $('#middle');										  
						
						// On masque le contenu du milieu de la page actuellement affiché
						middle.children().addClass('masque_middle').css('display','none'); 
						
						// On insere la page des mags
						middle.append(data);
						
						// Initialisation des carousels des mags
						init_carousel_docs('BMP', 'horizontal');
						init_carousel_docs('SPECIAL', 'horizontal');
						init_carousel_docs('BMI', 'horizontal');
						init_carousel_docs('BME', 'horizontal');
						init_carousel_docs('ENR', 'horizontal');
						
						// Intialisation du bouton de fermeture
						$('#btn-close-mags').button().click(function(){
							$('#mags').css('display', 'none'); // On masque la page des mags
							$('.masque_middle').css('display','block'); // On affiche le contenu du milieu de la page actuellement affiché
						});
						
						btn.data('show', true);	 // On indique que la page a été chargé
						btn.data('lock', false); // On déverrouille
					},
					error:function (xhr, ajaxOptions, thrownError){
						btn.data('lock', false); //On déverrouille
					}
				});
			}
			
			// Sinon si la page a été chargé
			else {
				$('.masque_middle').css('display','none'); // On masque le contenu du milieu de la page actuellement affiché
				$('#mags').css('display', 'block'); // On affiche la page des mags
				btn.data('lock', false); // On déverrouille
			}
		}
	});
}


/** ######################### Permet d'initialiser le bouton pour les répondre au sondage et voir les résultats du sondage ######################### */
function init_sondage(){
	// Initialisation des variables
	var btn_sond1 = $('#form_sondage #repondre'); // Boutton de validation de réponse du mini-sondage
	btn_sond1.data('lock', false); 				  // On déverrouille le bouton
	
	// Envoi de la réponse
	btn_sond1.click(function(){
		if(btn_sond1.data('lock') === false){
			btn_sond1.data('lock', true); // On verrouille
			
			var form = $('#form_sondage');
			var res = $('input[type=radio][name=reponse]:checked');
			
			if(res.length === 1){
				$.ajax({
					type : 'POST',
					url : 'http://'+$(document).get(0).domain+'/'+repertoire+'php/products/sondage.php',
					data : form.serialize(),
					dataType : 'json',
					success : function(data) {
						// On récupére les stats du sondage
						if(data !== false){
							boite_dialog('Sondage', data['resultat'], 2, 400, 10, null);
							btn_sond1.data('lock', false); // On déverrouille
							
							var btn_resultat = $('<input id="resultat" type="button" value="Voir les résultats" />');
							btn_resultat.button().insertAfter(btn_sond1);
							btn_sond1.remove();
							resultat_sond();
						}
						else btn_sond1.data('lock', false); // On déverrouille
					},
					error:function (xhr, ajaxOptions, thrownError){
						btn_sond1.data('lock', false); //On déverrouille
					}
				});
			}
			else btn_sond1.data('lock', false); // Initialisation des variables
		}
	});
	
	// Affichage du bonton "Voir résultat", si la personne a déjà repondu
	resultat_sond();
}


/** ######################### Permet d'initialiser le bouton pour voir les résultats du sondage ######################### */
function resultat_sond(){
	// Affichage du sondage
	var btn_sond2 = $('#form_sondage').find('#resultat');
	btn_sond2.data('lock', false); // On déverrouille
	
	btn_sond2.click(function(){
		if(btn_sond2.data('lock') === false){
			btn_sond2.data('lock', true);
			
			$.ajax({
				type : 'POST',
				url : 'http://'+$(document).get(0).domain+'/'+repertoire+'php/products/sondage.php',
				data : 'reponse=resultat',
				dataType : 'json',
				success : function(data) {
					if(data !== false){
						boite_dialog('Sondage', data['resultat'], 2, 400, 10, null);
						btn_sond2.data('lock', false);
					}
					else btn_sond2.data('lock', false);
				},
				error:function (xhr, ajaxOptions, thrownError){
					btn_sond2.data('lock', false); //On déverrouille
				}
			});
		}
	});
}


/** ######################### Permet d'initialiser l'accès aux autres communiqués de presse - Pour l'affichage horizontal ######################### */
function navig_communique_presse(num){
	conteneur =  $('#other_communiquespresses_min_horiz .cadre_divers');
	page = $('#communique_presse_' + num);
	
	
	if(page.exists()){
		var next = page.find('#suivant_' + num);
		var previous =  page.find('#precedent_' + num);
		
		if(next.exists()){
			next
			.data('num', num)
			.data('lock', false)
			.button({icons:{primary:'ui-icon-triangle-1-e'}, text:false})
			.click(function(){
				var _this = $(this);
				
				if(_this.data('lock') === false){
					_this.data('lock', true);
					var load =  null;
					var page_actuel = $('#communique_presse_' + _this.data('num'));
					var page_next = $('#communique_presse_' + (parseInt(_this.data('num')) + 1));
					
					if(page_next.exists()){
						page_actuel.hide();
						page_next.show();
						_this.data('lock', false);
					}
					
					else {
						$.ajax({
							type : 'POST',
							url : 'http://'+$(document).get(0).domain+'/'+repertoire+'page/communiquepresse/min_horiz.php',
							data : _this.attr('name'),
							dataType : 'json',
							beforeSend: function(){
								load = conteneur.loading();
							},
							complete: function(){
								load.remove();
							},
							success : function(data) {
								if(data != null && data['template'] != null && data['template'] != ''){
									page_actuel.hide();
									conteneur.append(data['template']);
									navig_communique_presse(data['page']);
									init_communique_presse();
									next.data('lock', false);
								}
								else next.data('lock', false);
							},
							error:function (xhr, ajaxOptions, thrownError){
								next.data('lock', false); //On déverrouille
							}
						});
					}
				}
			});
		}
		
		if(previous.exists()){
			previous
			.data('num', num)
			.data('lock', false)
			.button({icons:{primary:'ui-icon-triangle-1-w'}, text:false})
			.click(function(){
				var _this = $(this);
				
				if(_this.data('lock') === false){
					_this.data('lock', true);
					var page_actuel = $('#communique_presse_' + _this.data('num'));
					var page_previous = $('#communique_presse_' + (parseInt(_this.data('num')) - 1));
					
					if(page_previous.exists()){
						page_actuel.hide();
						page_previous.show();
						_this.data('lock', false);
					}
					else _this.data('lock', false);
				}
			});
		}
	}
}


/** ######################### Permet d'identifier le carousel des documentations ######################### */
function init_carousel_docs(id, position){
	
	// Initialisation
	var vitesse_docs = 500;
	var lock_docs	  = false; // Pour Opéra problème avec la désactivation du bouton
	
	// slideshow_vertical
	if(position == 'vertical'){
		var docs_v          = $('#'+id);
		var scroll_docs_v   = docs_v.find('.scroll');
		var masque_docs_v   = docs_v.find('.masque');
		var div_docs_v      = scroll_docs_v.find('div:first');
		var hr_docs_v	    = scroll_docs_v.find('hr:eq(2)');
		var up_docs_v       = docs_v.find('.up');
		var down_docs_v     = docs_v.find('.down');
		
		
		// Initialisation de certains éléments à certains évenements
		up_docs_v.button({icons:{primary:"ui-icon-triangle-1-n"}, text:false});
		down_docs_v.button({icons:{primary:"ui-icon-triangle-1-s"}, text:false});
		
		up_docs_v.click(function(){
			if(lock_docs == false && ((Math.abs(parseInt(scroll_docs_v.css('top'))) + masque_docs_v.height()) < scroll_docs_v.height())){
				lock_docs = true;
				var obj = $(this);
				
				obj.attr('disabled', true);
				scroll_docs_v.animate(
					{
						top : parseInt(scroll_docs_v.css('top')) - div_docs_v.height() - (hr_docs_v.height() + parseInt(hr_docs_v.css('margin-top')) + parseInt(hr_docs_v.css('margin-bottom'))) + 'px'
					}, 
					vitesse_docs, 
					function(){
						obj.removeAttr('disabled'); 
						
						if(parseInt(scroll_docs_v.css('top')) >= 0) down_docs_v.css('display', 'none'); 
						else down_docs_v.css('display', 'inline-block');

						if(parseInt(scroll_docs_v.css('top')) <= (-scroll_docs_v.height() + masque_docs_v.height())) up_docs_v.css('display', 'none');
						else up_docs_v.css('display', 'inline-block');
						
						lock_docs = false;
					}
				);
			}
		});
		
		down_docs_v.click(function(){
			if(lock_docs == false && ((Math.abs(parseInt(scroll_docs_v.css('top'))) - masque_docs_v.height()) > -masque_docs_v.height())){
				lock_docs = true;
				var obj = $(this);
				
				obj.attr('disabled', true);
				scroll_docs_v.animate(
					{
						top : parseInt(scroll_docs_v.css('top')) + div_docs_v.height() + (hr_docs_v.height() + parseInt(hr_docs_v.css('margin-top')) + parseInt(hr_docs_v.css('margin-bottom'))) + 'px'
					}, 
					vitesse_docs, 
					function(){
						obj.removeAttr('disabled'); 
						
						if(parseInt(scroll_docs_v.css('top')) >= 0) down_docs_v.css('display', 'none'); 
						else down_docs_v.css('display', 'inline-block');

						if(parseInt(scroll_docs_v.css('top')) <= (-scroll_docs_v.height() + masque_docs_v.height())) up_docs_v.css('display', 'none');
						else up_docs_v.css('display', 'inline-block');
						
						lock_docs = false;
					}
				);
			}
		});

		if(parseInt(scroll_docs_v.css('top')) <= 0) down_docs_v.css('display', 'none');
		if(parseInt(scroll_docs_v.css('top')) <= (-scroll_docs_v.height() + masque_docs_v.height())) up_docs_v.css('display', 'none');
	}
	
	
	// slideshow_horizontal
	else if(position == 'horizontal'){
		var docs_h          = $('#'+id);
		var scroll_docs_h   = docs_h.find('.scroll');
		var masque_docs_h   = docs_h.find('.masque');
		var div_docs_h      = scroll_docs_h.find('div:first');
		var previous_docs_h = docs_h.find('.precedent');
		var next_docs_h     = docs_h.find('.suivant');
		
		// Initialisation de certains éléments à certains évenements
		previous_docs_h.button({icons:{primary:"ui-icon-triangle-1-w"}, text:false});
		next_docs_h.button({icons:{primary:"ui-icon-triangle-1-e"}, text:false});
		scroll_docs_h.css('width', div_docs_h.width() * scroll_docs_h.find('div').length + 'px');
		
		next_docs_h.click(function(){
			if(lock_docs == false && ((Math.abs(parseInt(scroll_docs_h.css('left'))) + masque_docs_h.width()) < scroll_docs_h.width())){
				lock_docs = true;
				var obj = $(this);
				obj.attr('disabled', true);
				scroll_docs_h.animate({left:parseInt(scroll_docs_h.css('left')) - div_docs_h.width() + 'px'}, vitesse_docs, function(){obj.removeAttr('disabled'); lock_docs = false;});
			}
		});
		
		
		previous_docs_h.click(function(){
			if(lock_docs == false && ((Math.abs(parseInt(scroll_docs_h.css('left'))) - masque_docs_h.width()) > -masque_docs_h.width())){
				lock_docs = true;
				var obj = $(this);
				obj.attr('disabled', true);
				scroll_docs_h.animate({left:parseInt(scroll_docs_h.css('left')) + div_docs_h.width() + 'px'}, vitesse_docs, function(){obj.removeAttr('disabled'); lock_docs = false;});
			}
		});
	}
}


/** ######################### Permet d'identifier le carousel des fiches produits ######################### */
function init_carousel_fichep(id){
	// Initialisation
	var vitesse_fichep = 500;
	var lock_fichep	  = false; // Pour Opéra problème avec la désactivation du bouton
	
	var fichep          = $('#'+id);
	var scroll_fichep   = fichep.find('.scroll');
	var masque_fichep   = fichep.find('.masque');
	var div_fichep      = scroll_fichep.find('div:first');
	var hr_fichep	    = scroll_fichep.find('hr');
	var up_fichep       = fichep.find('.up');
	var down_fichep     = fichep.find('.down');

	// Initialisation de certains éléments à certains évenements
	up_fichep.button({icons:{primary:"ui-icon-triangle-1-n"}, text:false});
	down_fichep.button({icons:{primary:"ui-icon-triangle-1-s"}, text:false});
		
	down_fichep.click(function(){
		if(lock_fichep == false && ((Math.abs(parseInt(scroll_fichep.css('top'))) - masque_fichep.height()) > -masque_fichep.height())){
			lock_fichep = true;
			var obj = $(this);
			obj.attr('disabled', true);
			scroll_fichep.animate(
				{
					top : parseInt(scroll_fichep.css('top')) + div_fichep.height() + (hr_fichep.height() + parseInt(hr_fichep.css('margin-top')) + parseInt(hr_fichep.css('margin-bottom'))) + 'px'
				}, 
				vitesse_fichep, 
				function(){
					obj.removeAttr('disabled'); 
					
					if(parseInt(scroll_fichep.css('top')) >= 0) down_fichep.parent().css('display', 'none'); 
					else down_fichep.parent().css('display', 'inline-block');

					if(parseInt(scroll_fichep.css('top')) <= (-scroll_fichep.height() + masque_fichep.height())) up_fichep.parent().css('display', 'none');
					else up_fichep.parent().css('display', 'inline-block');
					
					lock_fichep = false;
				}
			);
		}
	});
		
	up_fichep.click(function(){
		if(lock_fichep == false && ((Math.abs(parseInt(scroll_fichep.css('top'))) + masque_fichep.height()) < scroll_fichep.height())){
			lock_fichep = true;
			var obj = $(this);
			obj.attr('disabled', true);
			scroll_fichep.animate(
				{
					top : parseInt(scroll_fichep.css('top')) - div_fichep.height() - (hr_fichep.height() + parseInt(hr_fichep.css('margin-top')) + parseInt(hr_fichep.css('margin-bottom'))) + 'px'
				},
				vitesse_fichep,
				function(){
					obj.removeAttr('disabled');

					if(parseInt(scroll_fichep.css('top')) >= 0) down_fichep.parent().css('display', 'none'); 
					else down_fichep.parent().css('display', 'inline-block');

					if(parseInt(scroll_fichep.css('top')) <= (-scroll_fichep.height() + masque_fichep.height())) up_fichep.parent().css('display', 'none');
					else up_fichep.parent().css('display', 'inline-block');
					
					lock_fichep = false;
				}
			);
		}
	});
	
	if(parseInt(scroll_fichep.css('top')) <= 0) down_fichep.parent().css('display', 'none');
	if(parseInt(scroll_fichep.css('top')) <= (-scroll_fichep.height() + masque_fichep.height())) up_fichep.parent().css('display', 'none');
}


/** ######################### Permet d'ajouter une documentation dans le panier ######################### */
var commande_lock = false;
function commander(id1, id2){
	if(isNaN(id1) == false && isNaN(id2) == false && commande_lock == false){
		var nb = $('#nb_docs_panier');
		commande_lock = true;
		$.ajax({
			type: 'POST',
			url: 'http://'+$(document).get(0).domain+'/'+repertoire+'php/products/add.php',
			data: 'demande=COMMANDE;'+id1+';'+id2,
			success: function(data){
				if(data == 1){
					boite_dialog('PANIER', 'la documentation a été ajoutée au panier.<br /><hr style="background-color: #C2D643;border:0 none;color: #C2D643;font-size: 1px;height: 1px;line-height: 1px;margin: 5px auto;padding: 0;width: 95%;"/><span style="color:black">Documentation envoyée<br /> <strong>GRATUITEMENT</strong><br /> sous 48H</span>', 1, 250, 10, null);
					nb.html(parseInt(nb.html()) + 1);
				}
				else if(data == 2) boite_dialog('PANIER', 'la documentation a déjà été ajoutée au panier.<br /><hr style="background-color: #C2D643;border:0 none;color: #C2D643;font-size: 1px;height: 1px;line-height: 1px;margin: 5px auto;padding: 0;width: 95%;"/><span style="color:black">Documentation envoyée<br /> <strong>GRATUITEMENT</strong><br /> sous 48H</span>', 0, 250, 10, null);
				else boite_dialog('PANIER', 'Impossible d\'ajouter la documentation au panier.', -1, 250, 500, null);
				commande_lock = false;
			},
			error:function (xhr, ajaxOptions, thrownError){
				alert(xhr.status); 
				alert(thrownError); 
				commande_lock = false;
			}
		});
	}
}


/** ######################## Permet d'ouvrir une fenetre de dialogue ################################### */
function boite_dialog(titre, text, n, w, mH, conteneur){
	var msg = $('#msg');
	if(msg.exists() == true) {
		msg.dialog('destroy');
		msg.remove();
	}
	
	var niveau = 'neutre';
	if(n == 1)  niveau = 'success';
	else if(n == 0) niveau = 'warning';
	else if(n == -1) niveau = 'error';
	else if(n == 2) niveau = 'normal';
	
	if(conteneur == null) conteneur = 'body';
	
	var dialog = $('<div>',{id:'msg',title:titre})
	.css({'font':"13px arial,verdana, helvetica,clean,sans-serif",'font-weight':'bold'})
	.append('<div class="'+niveau+'">'+text+'</div>')
	.appendTo(conteneur)
	.dialog({
		resizable:false, 
		autoOpen:true, 
		width:w, 
		minHeight:mH, 
		draggable:false, 
		modal:true
	});
	
	$('.ui-widget-overlay').live('click', function() {
	     $('#msg').dialog("close");
	});

	
	var msg = $('#msg');
	var conteneur_msg = msg.parent();
	var titre_msg = $('#msg').parent().find('div:first');
		
	conteneur_msg.css({'background-image':'none','background-color':'white','border':'1px solid #BED630'});
	titre_msg.addClass('titre_produits').css({'height':'20px','padding-top':'0px','border':'1px solid #BED630'});
	titre_msg.find('span:first').css({'margin':'2px 0px 0px 0px','font-size':'12px','font-weight':'bold','display':'block', 'width':'100%', 'text-align':'center'});
	
	return dialog;
}


/** ######################### Permet d'identifier le panier ######################### */
function init_panier(){
	// Initialisation des variables
	var btn = $('#btn_panier');
	btn.data('lock', false); 	// locker sur le click du bouton (Déverrouiller)
	
	btn.click(function(){
		// On regarde si le panier n'a pas déjà été affiché
		if($('#panier').exists() === true) $('#panier').remove();
		
		// On vérifie que le locker est ouvert
		if(btn.data('lock') === false){
			btn.data('lock', true); 	// On verrouille

			$.ajax({
				type: 'POST',
				url: 'http://'+$(document).get(0).domain+'/'+repertoire+'page/all/panier.php',
				success: function(data){
					// Initialisation
					var middle = $('#middle');										  
						
					// On masque le contenu du milieu de la page actuellement affiché
					middle.children().addClass('masque_middle').css('display','none'); 
						
					// On insere la page du panier
					middle.append(data);
					$('.etape-btn').button();
						
					// On fait apparaitre la première étape
					check_panier(1);
					
					// All. Etape
						// Initialisation de la navigation pour les étapes de la commande
						$('.etape-btn').each(function(){
							var obj = $(this);
							obj.data('etape', obj.attr('name'))
							.click(function(){
								check_panier($(this).data('etape'));
								window.scrollTo(0,0);
								$('#list-catalogue').scrollTop(0);
							});
						});
							
						// Intialisation du bouton de fermeture
						$('.btn-close-mags').button().click(function(){
							$('#panier').remove(); // On masque la page des mags
							$('.masque_middle').css('display','block'); // On affiche le contenu du milieu de la page actuellement affiché
						});
					
					// 1. Panier
						// Initialisation des boutons de chamgement d'affichage des catalogues contenu dans le panier
						$('#mode-list-details').click(function(){
							$(this).addClass('mode-list-details-hover');
							$('#mode-list-text').removeClass('mode-list-text-hover');
							$('.list-text').hide();
							$('.list-details').show();
						});
						$('#mode-list-text').click(function(){
							$(this).addClass('mode-list-text-hover');
							$('#mode-list-details').removeClass('mode-list-details-hover');
							$('.list-details').hide();
							$('.list-text').show();
						});
						
					
						// Initialisation du bouton de suppression des catalogues du panier
						$('.trash').each(function(){
							var obj = $(this);
							
							obj
							.data('lock', false)
							.data('ref', obj.parent().attr('title'))
							.removeAttr('title')
							.click(function(){
								if(obj.data('lock') === false){
									obj.data('lock', true); 
									
									$.ajax({
										type: 'POST',
										url: 'http://'+$(document).get(0).domain+'/'+repertoire+'php/products/delete.php',
										data: 'demande=COMMANDE;'+obj.data('ref'),
										dataType: "json",
										success: function(data){
											if(data == true) {
												var nb = $('#nb_docs_panier');
												$('.'+obj.data('ref')).remove();
												nb.html(parseInt(nb.html()) - 1);
											}
											else alert('Impossible de retirer le catalogue du panier.');
											
											obj.data('lock', false); 
										},
										error:function (xhr, ajaxOptions, thrownError){
											obj.data('lock', false);
										}
									});
								}
							});
							obj.parent().removeAttr('title');
						});
						
						
					// 2. Coordonnées
						// Initialisation
							// Agence
							$('#tel').keydown(function(event){input_number(event,this,false);});
							$('#fax').keydown(function(event){input_number(event,this,false);});
							$('#code_postal1').keydown(function(event){input_number(event,this,false);});
							$('#num_identification1').keydown(function(event){input_number(event,this,false);});
							$('#siret').keydown(function(event){input_number(event,this,false);});
							$('#effectif_reel').keydown(function(event){input_number(event,this,false);});
							$('#cedex1').change(function(){($(this).is(':checked') == true) ? $('#num_identification1').attr('disabled', false) : $('#num_identification1').attr('disabled', true).val('');});
							
							// Personne
							$('#tel_direct').keydown(function(event){input_number(event,this,false);});
							
							
					// 3.chantier
						$('#code_postal2').keydown(function(event){input_number(event,this,false);});
						$('#importance_batiment').keydown(function(event){input_number(event,this,false);});
							
						
					// 4. Récapitulatif
						// Initialisation à la recopie
						$('#form-panier').find('input[type=text], input[type=checkbox], input[type=radio], select, textarea').each(function(){
							var obj = $(this);
							
							if(obj.tagName() == 'input'){
								if(obj.attr('type') == 'text') {
									obj.change(function(){
										$('.clone-' + obj.attr('name')).each(function(){
											var clone = $(this);
												
											if(clone.attr('class').indexOf('br') != -1) clone.html(obj.val() + '<br />');
											else clone.html(obj.val());
										});
									});
								}
								
								else if(obj.attr('type') == 'checkbox' || obj.attr('class') == 'cedex') {
									obj.change(function(){
										$('.clone-' + obj.attr('name')).html('cedex');
									});
								}
								
								else if(obj.attr('type') == 'radio') {
									obj.change(function(){
										var elem = obj.parent().clone();
										elem.find('input').remove();
										$('.clone-' + obj.attr('name')).html(elem.html());
									});
								}
							}
							
							else if(obj.tagName() == 'select'){
								obj.change(function(){
									$('.clone-' + obj.attr('name')).html(obj.find("option:selected").html());
								});
							}
							
							else if(obj.tagName() == 'textarea'){
								obj.change(function(){
									$('.clone-' + obj.attr('name')).html(obj.val().replace('\n','<br />'));
								});
							}
						});
						
						
					
					// On déverrouille
					btn.data('lock', false); 
				},
				error:function (xhr, ajaxOptions, thrownError){
					btn.data('lock', false); //On déverrouille
				}
			});
	
		}
		
		return false;
	});
}


function check_panier(etape){
	etape = parseInt(etape);
	var err = '';
	var load = null;
	
	switch (etape){
		// Vérifie le chantier
		case 4:
			var err4 = '';
			
			err4 += check($('#nom_operation'), {color:'#1D2A5B', space:'simplify'});
			err4 += check($('#code_postal2'), {op:'int', val:5, msgs:['Le code postal ne doit contenir que des chiffres.', 'Le code postal est composé de 5 chiffres.'], space:'mtrim', color:'#1D2A5B', saut:'\n'});
			err4 += check($('#adresse_ville2'), {color:'#1D2A5B', space:'simplify'});
			err4 += check($('#maitre_ouvrage'), {color:'#1D2A5B', space:'simplify'});
			err4 += check($('#importance_batiment'), {op:'int', val:null, msgs:['Pour l\'importance du batiment ne doit contenir que des chiffres.'], color:'#1D2A5B', saut:'\n'});
			
			if(err4 != ''){
				etape = 3;
				err = err4;
			}
		
			
		// Verifie les coordonnées
		case 3:
			var err3 = '';
			
			// Agence
			err3 += check($('#raison_sociale'), {vide:false, msgs:'Agence : La raison sociale de l\'agence doit être saisie.', color:'#1D2A5B', space:'simplify', saut:'\n'});
			err3 += check($('#adresse_1'), {vide:false, msgs:'Agence : La première ligne d\'adresse doit être saisie.', color:'#1D2A5B', space:'simplify', saut:'\n'});
			err3 += check($('#adresse_2'), {color:'#1D2A5B', space:'simplify'});
			err3 += check($('#adresse_3'), {color:'#1D2A5B', space:'simplify'});
			err3 += check($('#code_postal1'), {vide:false, op:'int', val:5, msgs:['Agence : Le code postal doit être saisi.', 'Agence : Le code postal ne doit contenir que des chiffres.', 'Agence : Le code postal est composé de 5 chiffres.'], color:'#1D2A5B', saut:'\n'});
			err3 += check($('#adresse_ville1'), {vide:false, msgs:'Agence : La commune doit être saisie.', color:'#1D2A5B', space:'simplify', saut:'\n'});
			err3 += check($('#tel'), {vide:false, op:'int', val:10, msgs:['Agence : Le téléphone de l\'agence doit être saisie.','Agence : Le numéro de téléphone ne doit contenir que des chiffres.','Agence : Le numéro de téléphone est composé de 10 chiffres.'], color:'#1D2A5B', saut:'\n'});
			err3 += check($('#fax'), {op:'int', val:10, msgs:['Agence : Le numéro de fax ne doit contenir que des chiffres.','Agence : Le numéro de fax est composé de 10 chiffres.'], color:'#1D2A5B', saut:'\n'});
			err3 += check($('#email1'), {op:'email', msgs:['Agence : L\'email doit être saisi.', 'Agence : L\'adresse E-mail n\'est pas conforme.'], color:'#1D2A5B', space:'mtrim', saut:'\n'});
			err3 += check($('#effectif_reel'), {op:'int', val:null, msgs:['Agence : L\'effectif réel ne doit contenir que des chiffres.'], color:'#1D2A5B', space:'mtrim', saut:'\n'});
			err3 += check($('#siret'), {op:'int', val:null, msgs:['Agence : Le siret ne doit contenir que des chiffres.'], color:'#1D2A5B', space:'mtrim', saut:'\n'});
			
			// Personne
			err3 += check($('#civilité'), {vide:false, op:'radio', msgs:'Personne : la civilité de la personne doit être selectionnée.', name:'civilite', color:'#1D2A5B', saut:'\n'});
			err3 += check($('#nom'), {vide:false, msgs:'Personne : Le nom de la personne doit être saisie.', color:'#1D2A5B', space:'simplify', saut:'\n'});
			err3 += check($('#prenom'), {vide:false, msgs:'Personne : Le prénom de la personne doit être saisie.', color:'#1D2A5B', space:'simplify', saut:'\n'});
			err3 += check($('#tel_direct'), {op:'int', val:10, msgs:['Personne : Le numéro de téléphone ne doit contenir que des chiffres.','Personne : Le numéro de téléphone est composé de 10 chiffres.'], color:'#1D2A5B', space:'mtrim' , saut:'\n'});
			err3 += check($('#email2'), {vide:false, op:'email', msgs:['Personne : L\'email doit être saisi.', 'Personne : L\'adresse E-mail n\'est pas conforme.'], color:'#1D2A5B', space:'mtrim', saut:'\n'});

			if(err3 != ''){
				etape = 2;
				err = err3;
			}
			
		// Verifie du contenu du panier
		case 2:
			var err2 = '';
	
			err2 += check($('input[name=\'catalogues[]\']'), {vide:false, msgs:'Aucun catalogue selectionnée.', op:'hidden', name:'catalogues', color:'#1D2A5B', saut:'\n'});
					
			if(err2 != ''){
				etape = 1;
				err = err2;
			}
			
		default:
			break;
	}

	// Passage à une étape
	if(etape < 5){
		$('.bloc-etape').hide();
		$('#bloc-etape'+etape).show();
		$('.etape').removeClass('etape-en-cours');
		$('#etape'+etape).addClass('etape-en-cours');
	}
	
	// Affichage des erreurs de saisies ou envoie de la demande
	if(err != '') alert(err);
	else if(etape == 5){
		$.ajax({
			type:'POST',
			asyn:false,
			url:'http://'+$(document).get(0).domain+'/'+repertoire+'page/all/panier.php',
			data:$('#form-panier').find('input, select, textarea').serialize(),
			dataType: "json",
			beforeSend: function(){
				load = $('#middle').loading();
			},
			complete: function(){
				load.remove();
			},
			success: function(data){
				if(data == 1){
					$('#nb_docs_panier').html(0);
					$('.bloc-etape').hide();
					$('#bloc-etape5').show();
					$('.etape').removeClass('etape-en-cours');
					$('#etape5').addClass('etape-en-cours');
					$('#bloc-etape1, #bloc-etape2, #bloc-etape3, #bloc-etape4').remove();
				}
				else {
					boite_dialog('Formulaire de commande', 'Impossible de passer la commande', -1, 250, 50, '#panier');
				}
			}
		});
	}
}


/** Affichage du contenu d'un communiqué presse en superposition par rapport à la page principale **/
var communique_presse_lock = false;
function init_communique_presse(){
	$('#other_communiquespresses_min_vertic, #other_communiquespresses_min_horiz')
	.find('.lireSuite').each(function(){
		var obj = $(this);

		obj.find('a').click(function(){
			
			if(communique_presse_lock == false){
				communique_presse_lock = true;
				$.ajax({
					type: 'GET',
					url: $(this).attr('href'),
					success: function(data){
						var dialog_cp = $('#dialog_communique_presse');
						if(dialog_cp.exists() == true) dialog_cp.remove();
						
						var dialog = $('<div>',{id:'dialog_communique_presse',title:'Communiqué de presse'})
					 	.append(data)
					 	.appendTo($('body'))
					 	.dialog({
					 		resizable:false, 
					 		autoOpen:true, 
					 		width:700, 
					 		height:550,
					 		draggable:false, 
					 		modal:true
					 	});
						
						$('.ui-widget-overlay').live('click', function() {
						     $('#dialog_communique_presse').dialog("close");
						});
						
						// Intialisation du formulaire
						var dialog_connexion = $('#dialog_communique_presse');
						var conteneur_dialog_connexion = dialog_connexion.parent();
						var titre_dialog_connexion = $('#dialog_communique_presse').parent().find('div:first');
							
						conteneur_dialog_connexion.css({'background-image':'none','background-color':'white','border':'1px solid #757575'});
						titre_dialog_connexion.addClass('titre_divers').css({'height':'20px','padding-top':'0px','border':'1px solid #757575'});
						titre_dialog_connexion.find('span:first').css({'margin':'2px 0px 0px 0px','font-size':'12px','font-weight':'bold','display':'block', 'width':'100%', 'text-align':'center'});
						
						
						communique_presse_lock = false;
					},
					error:function (xhr, ajaxOptions, thrownError){
						alert(xhr.status); 
						alert(thrownError); 
						communique_presse_lock = false;
					}
				});
			}
			
			return false;
		});
	});
}






































/** ######################### Permet de vérifier un champ d'un formulaire ######################### */
function check(obj,options){
	opts = {
		op:"==",
		val:'',
		vide:true,
		space:null,
		name:'',
		msgs:null,
		color:'black',
		saut:"<br />",
		puce:'- '
	};
	$.extend(opts, options);
	
	// Supression des espaces en trop
	if(opts.space=='simplify') obj.val(obj.simplify());
	else if(opts.space=='mtrim') obj.val(obj.mtrim());
	else if(opts.space=='trim') obj.val(obj.trim());

	// Vérification
	if(opts.vide==false && opts.op=="==" && obj.val()==opts.val)      				{lbl(obj,opts.color,false); return opts.puce+opts.msgs+opts.saut;}
	else if(opts.vide==false && opts.op==">=" && obj.val()>=opts.val) 				{lbl(obj,opts.color,false); return opts.puce+opts.msgs+opts.saut;}
	else if(opts.vide==false && opts.op=="<=" && obj.val()<=opts.val) 				{lbl(obj,opts.color,false); return opts.puce+opts.msgs+opts.saut;}
	else if(opts.vide==false && opts.op==">" && obj.val()>opts.val)  				{lbl(obj,opts.color,false); return opts.puce+opts.msgs+opts.saut;}
	else if(opts.vide==false && opts.op=="<" && obj.val()<opts.val)   				{lbl(obj,opts.color,false); return opts.puce+opts.msgs+opts.saut;}
	else if(opts.vide==false && opts.op=="!=" && obj.val()!=opts.val)				{lbl(obj,opts.color,false); return opts.puce+opts.msgs+opts.saut;}
	else if(opts.op=="email") {
		if(opts.vide==false && obj.val()=="") {lbl(obj,opts.color,false); return opts.puce+opts.msgs[0]+opts.saut;}
		else if(obj.val()!="" && check_email(obj)==false) {lbl(obj,opts.color,false); var msg = (opts.vide==true)? opts.msgs : opts.msgs[1]; return opts.puce+msg+opts.saut;}
		else lbl(obj,opts.color,true); return '';
	}
	else if(opts.op=="int"){
		var ret = check_int(obj,opts.val);
		if(opts.vide==false && obj.val()=="") {lbl(obj,opts.color,false); return opts.puce+opts.msgs[0]+opts.saut;}
		else if(ret==-1) {lbl(obj,opts.color,false); var ind = (opts.vide==true)? 0 : 1; return opts.puce+opts.msgs[ind]+opts.saut;}
		else if(ret==-2) {lbl(obj,opts.color,false); var ind = (opts.vide==true)? 1 : 2; return opts.puce+opts.msgs[ind]+opts.saut;} 
		else lbl(obj,opts.color,true); return '';
	}
	else if(opts.op=="decimal"){
		var ret = check_decimal(obj,opts.val);
		if(opts.vide==false && obj.val()=="") {lbl(obj,opts.color,false); return opts.puce+opts.msgs[0]+opts.saut;}
		else if(ret==-1) {lbl(obj,opts.color,false); var ind = (opts.vide==true)? 0 : 1; return opts.puce+opts.msgs[ind]+opts.saut;}
		else if(ret==-2) {lbl(obj,opts.color,false); var ind = (opts.vide==true)? 1 : 2; return opts.puce+opts.msgs[ind]+opts.saut;}
		else if(ret==-3) {lbl(obj,opts.color,false); var ind = (opts.vide==true)? 2 : 3; return opts.puce+opts.msgs[ind]+opts.saut;}
		else lbl(obj,opts.color,true); return '';
	}
	else if(opts.vide==false && opts.op=="radio"){
		if($('input[name='+opts.name+']:checked').length==0) {lbl($('#lbl'+opts.name),opts.color,false); return opts.puce+opts.msgs+opts.saut;}
		else lbl($('#lbl'+opts.name),opts.color,true); return '';
	}
	else if(opts.vide==false && opts.op=="checkbox"){
		if($('input[name=\''+opts.name+'[]\']:checked').length==0) {lbl($('#lbl'+opts.name),opts.color,false); return opts.puce+opts.msgs+opts.saut;}
		else lbl($('#lbl'+opts.name),opts.color,true); return '';
	}
	else if(opts.vide==false && opts.op=="hidden"){
		if($('input[name=\''+opts.name+'[]\']').length == 0) {
			lbl($('#lbl'+opts.name),opts.color,false); 
			return opts.puce+opts.msgs+opts.saut;
		}
		else lbl($('#lbl'+opts.name),opts.color,true); return '';
	}
	else if(opts.vide==false && opts.op=="select"){
		if(obj.find("option:selected").length==0) {lbl(obj,opts.color,false); return opts.puce+opts.msgs+opts.saut;}
		else lbl(obj,opts.color,true); return '';
	}
	else lbl(obj,opts.color,true); return '';
}


/** ######################### Permet d'indiquer sur quel champ il ya une erreur ######################### */
function lbl(obj,color,etat){
	if(obj.exists()){
		var lbl = null;
		
		if(obj.tagName().toUpperCase() == 'OPTION') obj = obj.parent();
		
		if(obj.tagName().toUpperCase() == 'LABEL') lbl = obj;
		else lbl=$('#lbl' + obj.attr('id'));
		
		if(etat == false) lbl.css('color','red');
		else if(etat == true) lbl.css('color',color);
	}
}


/** ######################### Saisie que les chiffres ######################### */
function input_number(event, obj, decimal){
	var passage = false;
	
	// Comptabilité (DOM IE) / (DOM other)
	if(!event&&window.event) event=window.event;

	// Pour les entiers
	if(!decimal){
		// si ce sont des caractères autres que des chiffres (IE)
		if(event.which != 13 && event.keyCode != 8 && event.keyCode != 9 && !event.ctrlKey && (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) {
			event.returnValue = false;
			event.cancelBubble = true;
			passage = true;
		}
		
		// si ce sont des caractères autres que des chiffres (Other)
		if(event.which != 13 && event.which != 8 && event.which != 9 && !event.ctrlKey && (event.which < 48 || event.which > 57) && (event.keyCode < 96 || event.keyCode > 105)) {
			event.preventDefault();
			event.stopPropagation();
			passage = true;
		}
	}
	
	// Pour les décimals
	else{
		if(event.keyCode != 13 && event.keyCode != 8 && event.keyCode != 9 && event.keyCode != 110 && !event.ctrlKey && (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) {
			event.returnValue = false;
			event.cancelBubble = true;
			passage = true;
		}
		
		// si ce sont des caractères autres que des chiffres (Other)
		if(event.keyCode != 13 && event.which != 8 && event.which != 9 && event.keyCode != 110 && !event.ctrlKey && (event.which < 48 || event.which > 57) && (event.keyCode < 96 || event.keyCode > 105)) {
			event.preventDefault();
			event.stopPropagation();
			passage = true;
		}
	}

	
	// les touches du haut du clavier peuvent avoir une valeur différente si combinés avec une autre touche
	if(passage){
		if(!decimal) $(this).keyup(function(){input_number_exception(obj,null);});
		else $(this).keyup(function(){input_number_exception(obj,'.');});
	}
}


/** ######################### Vérifie les caractères qui ont passé les mailles du filet de la fonction input_number() ######################### */
function input_number_exception(obj,point){
	var l = obj.value.length-1;
	if(point == null){
		if(l > -1 && isNaN(obj.value[l]) == true){
			obj.value = obj.value.substr(0, l);
		}
	}
	else{
		if(l > -1 && isNaN(obj.value[l]) == true && obj.value[l] != point){
			obj.value = obj.value.substr(0, l);
		}
	}
}


/**
 * #########################
 * Vérifie les inputs qui ne doivent saisir que des entiers
 * @param obj : Input à vérifier
 * @param nb : Nombre de chiffres à saisir (Peut-être nul (null))
 * @return : (-1) -> Ce n'est pas un entier / (-2) Le nombre de chiffres n'est n'est pas respecté / (true) -> si l'input est correcte
 * #########################
 */
function check_int(obj,nb){
	var retour = true;
	if(obj.val() != ""){
		if(isNaN(obj.val())) retour = -1;
		else if(nb != null && obj.val().length != nb) retour = -2;
	}
	return retour;
}

/**
 * #########################
 * Vérifie les inputs qui ne doivent saisir que des décimals
 * @param obj : Input à vérifier
 * @param nb : Nombre de chiffres à saisir (Peut-être nul (null))
 * @return : (-1) -> Caractère invalide / (-2) Le nombre de chiffres n'est n'est pas respecté / (-3) N'est pas un décimal / (true) -> si l'input est correcte
 * ######################### 
 */
function check_decimal(obj){
	var retour = true;
	var input = $("<input/>");
	input.val(obj.val().replace(/\.+/g,""));
	retour = check_int(input,null);
	if(retour != -1 && retour != -2){
		var expr = /(^\.)|(\.$)/;
		if(substr_count(obj.val(),'.')>1 || expr.test(obj.val()) == true) retour = -3;
	}
	return retour;
}


/** 
 * ######################### 
 * Vérifie si un email est valide
 * @param obj : Input à vérifier
 * @return : True ou false
 * ######################### 
 */
function check_email(obj){
	var retour = true;
	var expr = /^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$/;
	if(obj.val() == "") retour = false;
	else if(!expr.test(obj.val())) retour = false;
	return retour;
}


/** ######################### Compte le nombre d'occurence d'une chaine ######################### */
function substr_count(str, seek){
    return ((str.length - str.split(seek).join("").length) / seek.length);
}


