/* Gère l'affichage de notices / messages info */
var etatmenus = new Object();
var survolhandlemenus = new Object();
var requetePanierEnCours = false;
    
document.observe("dom:loaded", function() {
    var nb_messages_info = $$('ul.messages>li').length;
 
    var menu_myagatha = $('menu-myagatha');
    if(menu_myagatha != null) {
    	menu_myagatha.setStyle({display: 'block'});
	    var widthmyagatha = menu_myagatha.getWidth();
	    $$('#menu-myagatha li').each(function(li) {
	    	li.setStyle({width: widthmyagatha+'px'});
	    });
	    menu_myagatha.setStyle({display: 'none'});
    }
    
    if (nb_messages_info > 0) {
        var messages_succes = $$('ul.messages>li.success-msg');
        var nb_messages_succes = messages_succes.length;
        var nb_messages_alerte = $$('ul.messages>li.error-msg').length + $$('ul.messages>li.warning-msg').length;
        var nb_messages_notice = nb_messages_info - (nb_messages_succes + nb_messages_alerte);
        var html_bulle = '<div id="bulle-info" class="bulle-';
        if ( nb_messages_alerte > 0 ) 
        	html_bulle += 'alerte';
        else
        {
        	html_bulle += ( nb_messages_notice > 0 )?'notice':'succes';
        }
        html_bulle += '"><div id="bouton-fermer-bulle"></div>';
        html_bulle += '<div id="bulle-info-logo"></div><div id="bulle-info-messages"><ul class="bulle-info-liste-messages">';
        $$('ul.messages>li.error-msg').each( function(un_msg,index) {
            html_bulle += '<li>'+un_msg.innerHTML+'</li>';
            un_msg.remove();
        });
        $$('ul.messages>li.notice-msg').each( function(un_msg,index) {
            html_bulle += '<li>'+un_msg.innerHTML+'</li>';
            un_msg.remove();
        });
        $$('ul.messages>li.note-msg').each( function(un_msg,index) {
            html_bulle += '<li>'+un_msg.innerHTML+'</li>';
            un_msg.remove();
        });
        $$('ul.messages>li.success-msg').each( function(un_msg,index) {
            html_bulle += '<li>'+un_msg.innerHTML+'</li>';
            un_msg.remove();
        });
        html_bulle += '</ul></div></div>';

        var bulle = document.createElement('div'); /*<div id="bulle-info-wrapper">*/
        bulle.id = 'bulle-info-wrapper';
        Element.extend(bulle);
        bulle.innerHTML = html_bulle;

        /*var main_container = $$('.main-container')[0];
        main_container.appendChild(bulle);*/
        $$('ul.messages')[0].appendChild(bulle);

        /* Quant la bulle est ouverte et qu'on clique en dehors
         * il faut la fermer
         */
        document.observe('click', function(e, el) {
            //alert (e.target.id);
            if ( (e.target.id=='bouton-fermer-bulle') || (e.target.id=='bouton-OK-bulle') || ( ! e.target.descendantOf('bulle-info') && e.target.id!='bulle-info' ) ) {
                fermerbulle();
            }
        });
    }
    
    $$('.menu-deroulant').each(function(menu) {
    	handleMenuEvent(menu);
    });
    
  //Verifie l'URL pour savoir si un catalogue doit être ouvert par défaut.
    var stringNewsletter = location.search.substring(1).split('&');
    if(stringNewsletter.length > 0 ) {
      for (var i=0; i<stringNewsletter.length; i++){
        var x = stringNewsletter[ i ].split('=');
        if(x[0] === 'newsletter') {
          setCookie('fromNewsletter', x[1]);
        }
      }
    }
});

function handleMenuEvent(menu) {
	var handlemenu = $$('*[rel="'+menu.id+'"]')[0];
	etatmenus[menu.id] = 0;
	survolhandlemenus[menu.id] = 0;
	if (handlemenu != null) {
		handlemenu.observe('mouseover', function(e) {
			if (etatmenus[menu.id] == 0 && survolhandlemenus[menu.id] == 0) {
				survolhandlemenus[menu.id] = 1;
				$$('.menu-deroulant').each(function(menuautre) {
					if (menuautre != menu && menuautre.visible())
					{
						 etatmenus[menuautre.id] = 0;
						 survolhandlemenus[menuautre.id] = 0;
						 new Effect.Fade(menuautre, {
	    					    from: 1.0,
	    					    to: 0.0,
	    					    duration: 0.2/*,
	    					    afterFinish: function() { menuautre.removeClassName('type-C-IE7'); $$('#'+menuautre.id+' li').each(function(o) { o.removeClassName('type-C-IE7'); }); }*/
	    				 });
					}
				});
				
				etatmenus[menu.id] = 1;
				effect = new Effect.Appear(menu, {
					    from: 0.0,
					    to: 1.0,
					    duration: 0.2/*,
					    afterFinish: function() { menu.addClassName('type-C-IE7'); $$('#'+menu.id+' li').each(function(o) { o.addClassName('type-C-IE7'); }); }*/
				});
			}
		});
		handlemenu.observe('mouseout', function(e) {
			if (etatmenus[menu.id] == 1 && survolhandlemenus[menu.id] == 1) {
				if (!e) {var e = window.event};				
				
				var tg = (window.event) ? e.srcElement : e.target;
                try{
                  var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
                } catch(err){
                  return false;
                }
                var action = "fermer";
                var iseltmenu = 0;
                if (reltg) {
	                while (reltg.nodeName != 'BODY')
	                {
	                    reltg= reltg.parentNode;
	                    if (reltg== menu) 
	                    	iseltmenu = 1;
	                    if (reltg== handlemenu)
	                    	action = "handle";
	                }
               }
                if (action == "handle" && iseltmenu == 1)
                	action = "menu";
                 if (action == "fermer")
                {
                	survolhandlemenus[menu.id] = 0;
				    etatmenus[menu.id] = 0;
                	new Effect.Fade(menu, {
					    from: 1.0,
					    to: 0.0,
					    duration: 0.2/*,
					    afterFinish: function() { menu.removeClassName('type-C-IE7'); $$('#'+menu.id+' li').each(function(o) { o.removeClassName('type-C-IE7'); }); }*/
					});
                }
                else
                {
                	if (action == "menu")
                		survolhandlemenus[menu.id] = 0;
                	return false;
                }
			}
		});
		menu.observe('mouseout', function(e) {
			if (etatmenus[menu.id] == 1) {
				if (!e) {var e = window.event};				
				
				var tg = (window.event) ? e.srcElement : e.target;
                try{
                  var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
                } catch(err){
                  return false;
                }
                var sortir = false;
                if (reltg) {
	                while (reltg.nodeName != 'BODY')
	                {
	                    reltg= reltg.parentNode;
	                    if (reltg== menu || reltg== handlemenu)
	                    {
	                    	sortir= true;
	                    }
	                }
                }
                if (sortir)
                {
                	survolhandlemenus[menu.id] = 1;
                	return false;
                }
                // Mouseout took place when mouse actually left menu
                // Handle event
                etatmenus[menu.id] = 0;
                survolhandlemenus[menu.id] = 0;
				new Effect.Fade(menu, {
					    from: 1.0,
					    to: 0.0,
					    duration: 0.2/*,
					    afterFinish: function() { menu.removeClassName('type-C-IE7'); $$('#'+menu.id+' li').each(function(o) { o.removeClassName('type-C-IE7'); }); }*/
				});
			}
		});
	}
}

//Fonction qui observe le clic sur la croix des produits pour les supprimer du panier
function supprimerProduitPanier() {
	$$('#menu-panier a.btn-remove').each(function(element) {
	    element.observe('click', function(event) {
	        event.stop();
	        $('menu-panier').stopObserving('mouseout');
	        element = event.element();
		    ouvrirPreload($('menu-panier'));
		    new Ajax.Request(element.href, {
	            onSuccess: function(response) {
	                element = element.up('li');
	                Effect.Shrink(element);
	                $('menu-panier').up('.form-panier').replace(response.responseText);
	                fermerPreload();
	                handleMenuEvent($('menu-panier'));
		            supprimerProduitPanier();
	            }
	        });
	    });
	});
}

function cartScrollHandler() {
	if(getVisibleHeight($$('.header .menu-haut .block-cart .conteneur-etiquette')[0])) {
		$('menu-panier').writeAttribute('style', '');
	} else {
		$('menu-panier').setStyle({'position': 'fixed', 'top': 0, 'left': miniCartLeftOffset});
	}
}

function animationAjoutPanier() {
    element = $$('div#menu-panier ol#cart-sidebar div')[0].hide();
    if(getVisibleHeight($$('.header .menu-haut .block-cart .conteneur-etiquette')[0])) {
    	new Effect.Appear('menu-panier', {duration: 0.8, from: 0, to:1, queue:{position:'front', scope:'panier-header', limit:2}});
    } else {
		miniCartOffset = $('menu-panier').writeAttribute('style', 'padding: 0px').cumulativeOffset();
		$('menu-panier').removeAttribute('style');
		miniCartLeftOffset = miniCartOffset.left;
		miniCartLeftOffset = miniCartLeftOffset + 'px';
    	$('menu-panier').setStyle({'position': 'fixed', 'top': 0, 'left': miniCartLeftOffset});
    	$('menu-panier').show();
    	Element.observe(window, 'scroll', cartScrollHandler);
    }
    //Pour l'effet ci-dessous, le effect.queue ne fonctionne pas, donc on laisse le temps à l'effet précédent de s'executer avant de lancer le suivant.
    setTimeout("new Effect.BlindDown($$('div#menu-panier ol#cart-sidebar div')[0], {duration: 0.8, queue:{position:'end', scope:'panier-header', limit:2}})",250);
    fermerPreload();
    supprimerProduitPanier();
    setTimeout("$('menu-panier').hide();$('menu-panier').writeAttribute('style', 'display:none;');Element.stopObserving(window, 'scroll', cartScrollHandler);",6000);
    handleMenuEvent($('menu-panier'));
    requetePanierEnCours = false;
}

function ajouterProduitAuPannier(event) {
	event.stop();
	var element = Event.element(event);
	if(!requetePanierEnCours){
		requetePanierEnCours = true;
		ouvrirPreload();
		new Ajax.Request(element.href, {
		    onSuccess: function(response) {
		    	if(response.transport.status === 202) {
		    		$('agatha-message-ajaxpanier').update(response.responseText.evalJSON().message).show();
		    		animationAjoutPanier();
		    	} else {
			    	$('menu-panier').up('.form-panier').replace(response.responseText);
			    	animationAjoutPanier();
		    	}
		    }
		});
	}
}

//Observer sur les boutons "Ajouter au panier", désactiver si on est sur la page panier justement, pour qu'il soit mis à jour.
new Event.observe(window, 'load', function() {
	if($$('body.ajaxpanier-index-index').size() == 0) {
		//On "observe" les clics sur les boutons ajouter
		$$('.bouton-ajout-panier').each(function(element) {
		    element.observe('click', ajouterProduitAuPannier);
		});
		supprimerProduitPanier();
	}
});

