var SOMEWHERE = function() {
	return {
		// addLoadEvent(e)
		// Ajout de l'execution de la fonction e au chargement de la page
		addLoadEvent : function(e) {
			if (window.addEventListener)
	 			window.addEventListener('load', e, false);
	  		else if (window.attachEvent)
				window.attachEvent('onload', e);
		},
		// getElementsByClassName(className, tag, elm)
		// Retourne les elements correspondant a la classe CSS et la balise tag dans l'element elm
		getElementsByClassName : function(className, tag, elm) {
			var testClass = new RegExp("(^|s)" + className + "(s|$)");
			var tag = tag || "*";
			var elm = elm || document;
			var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
			var returnElements = [];
			var current;
			var length = elements.length;
			for(var i=0; i<length; i++){
				current = elements[i ];
				if(testClass.test(current.className)){
					returnElements.push(current);
				}
			}
			return returnElements;
		},
		// SOMEWHERE.user
		// Informations sur l'utilisateur courant
		user : function(){
			return {
				// isLoggedIn()
				// Retourne true si un utilisateur est loggue
				isLoggedIn : function() {
					var div_auth = document.getElementById("memo_authentification");
					if(div_auth)
					{
						var div_auth_rapide = div_auth.getElementsByTagName("div")[0];
						var input_auth = div_auth_rapide.getElementsByTagName("input");
						if(input_auth.length == 0)
							return true;
					}
					return false;
				},
				// getArticles()
				// Retourne le nombre d'articles dans le panier
				getArticles : function() {
					var n = 0;
					var div_panier = document.getElementById("panierRapideButton");
					if(div_panier)
					{
						var a = div_panier.getElementsByTagName("a")[0];
						var t = a.innerHTML;
						var n = t.substring(t.indexOf(" "),t.lastIndexOf(" "));
					}
					return n;
				}
			};
		}(),
		// SOMEWHERE.page
		// Informations sur la page courante
		page : function(){
			return {
				// addSectorClass()
				// Ajoute une classe CSS sur le body de la page
				addSectorClass : function() {
					var css_prefix = "sw_";
					var breadcrumb = document.getElementById("memo_fil_ariane");
					if(breadcrumb)
					{                              
						var class_name;
						if(breadcrumb.innerHTML.toLowerCase().match("homme"))
							class_name = css_prefix + "homme";
						else if(breadcrumb.innerHTML.toLowerCase().match("femme")) 
							class_name = css_prefix + "femme"; 
						if(class_name)	
							document.getElementsByTagName("body")[0].className += " " + class_name; 	
					}
				},
				addClass : function(class_name) {
					var body = document.getElementsByTagName("body")[0];
					body.className += " " + class_name;
				},
				removeClass : function(class_name) {
					var body = document.getElementsByTagName("body")[0];
					body.className = body.className.replace(class_name, "");
				},
				is_home : function() {
					return (location.pathname == "/fr/");
				}
			};
		}(),
		// SOMEWHERE.cookies
		// Fonctions de lecture et d'ecriture de cookies (miam)
		// Source : Quirksmode (http://www.quirksmode.org/js/cookies.html)
		cookies : function() {
			return {
				create : function(name,value,days) {
					if (days) 
					{
						var date = new Date();
						date.setTime(date.getTime()+(days*24*60*60*1000));
						var expires = "; expires="+date.toGMTString();
					}
					else var expires = "";
					document.cookie = name+"="+value+expires+"; path=/";
				},
				read : function(name) {
					var nameEQ = name + "=";
					var ca = document.cookie.split(';');
					for(var i=0;i < ca.length;i++) {
						var c = ca[i];
						while (c.charAt(0)==' ') c = c.substring(1,c.length);
						if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
					}
					return null;
				},
				erase : function(name) {
					this.create(name,"",-1);
				}
			};
		}(),
		// SOMEWHERE.header
		// Fonctionnalites specifiques du header du site
		header : function() {
			return {
				init : function() {
					this.setAccount(); 
					this.setMagasinsPop(); 
					this.setCataloguePop();
					this.setLivraisonPop();
					this.setRetoursPop();
					this.setMenuPop(); 
					this.setSearchLabel();
					this.setQuickBasket();
					this.events.init();
					this.catalogue.init();
				}, 	 
				setAccount : function() {    
					if(SOMEWHERE.user.isLoggedIn())
					{
						// Recuperation du code HTML de memo_authentification
						var div_auth = document.getElementById("memo_authentification");
						var div_auth_rapide = div_auth.getElementsByTagName("div")[0];
						var sw_user = document.getElementById("sw_user");
						sw_user.innerHTML = div_auth_rapide.innerHTML;
						div_auth_rapide.innerHTML = "";
						// Affichage du contenu
						sw_user.style.display = "block";
					}
					else
					{
						// Ajout de l'evenement au survol du lien
						var link = document.getElementById("sw_account").getElementsByTagName("a")[0];
						var pop = document.getElementById("sw_account_pop");   
						if(link && pop)
						{
							add_hover(link, pop);
						}
						// Recuperation du code HTML de memo_authentification
						var div_auth = document.getElementById("memo_authentification");
						if(div_auth)
						{
							var div_auth_rapide = div_auth.getElementsByTagName("div")[0];
							if(div_auth_rapide)
							{
								var form_account = document.getElementById("sw_account_pop_form");
								form_account.innerHTML = div_auth_rapide.innerHTML;
								div_auth_rapide.innerHTML = "";
							}
						}
						// Masquage de la div utilisateur loggue
						document.getElementById("sw_user").style.display = "none";
						// Ajout des evenements au clic dans le champs login
						var span_login = SOMEWHERE.getElementsByClassName("memo_authentificationrapide_identifiantlibelle");
						var input_login = SOMEWHERE.getElementsByClassName("memo_authentificationrapide_identifianttextbox");
						if(span_login && input_login)
						{
							span_login = span_login[0]; 
							input_login = input_login[0];
							add_textbox_label(input_login, span_login);
						}
						// Ajout des evenements au clic dans le champs login
						var span_password = SOMEWHERE.getElementsByClassName("memo_authentificationrapide_passwordlibelle");
						var input_password = SOMEWHERE.getElementsByClassName("memo_authentificationrapide_passwordtextbox");
						if(span_password && input_password)
						{
							span_password = span_password[0]; 
							input_password = input_password[0];
							add_textbox_label(input_password, span_password);
						}
						// Evenements lors de l'ecriture dans les champs
						// (permet d'eviter des comportements a bugs sous IE6)
						if(input_login && input_password)
						{
							var MOUSE_IS_ON_LOGIN_POP = true;
							login_pop_onmouseover = pop.onmouseover;
							login_pop_onmouseout = pop.onmouseout;
							input_login_onclick = input_login.onclick;
							input_login_onfocus = input_login.onfocus;
							input_login_onblur = input_login.onblur;
							/* Popup conteneur */
							pop.onmouseover = function() {
								MOUSE_IS_ON_LOGIN_POP = true;
								login_pop_onmouseover();
							};
							/* Login */
							input_login.onclick = function() {
								pop.onmouseout = function() {
									MOUSE_IS_ON_LOGIN_POP = false;
								};
								input_login_onclick();
							};
							input_login.onfocus = function() {
								pop.onmouseout = function() {
									MOUSE_IS_ON_LOGIN_POP = false;
								};
								input_login_onfocus();
							};
							input_login.onblur = function(e) { 
								input_login_onblur();
								if(!MOUSE_IS_ON_LOGIN_POP)
									pop.style.display = "none";
								pop.onmouseout = function() { 
									MOUSE_IS_ON_LOGIN_POP = false;
									login_pop_onmouseout();
								};
							};
							/* Password */
							input_password_onclick = input_password.onclick;
							input_password_onfocus = input_password.onfocus;
							input_password_onblur = input_password.onblur;
							input_password.onclick = function() {
								pop.onmouseout = function() {
									MOUSE_IS_ON_LOGIN_POP = false;
								};
								input_password_onclick();
							};
							input_password.onfocus = function() {
								pop.onmouseout = function() {
									MOUSE_IS_ON_LOGIN_POP = false;
								};
								input_password_onfocus();
							};
							input_password.onblur = function() {
								input_password_onblur();
								if(!MOUSE_IS_ON_LOGIN_POP)
									pop.style.display = "none";
								pop.onmouseout = function() { 
									MOUSE_IS_ON_LOGIN_POP = false;
									pop.style.display = "none";   
									remove_hover_classname(link);
									remove_header_zindex();
								};
							};
						}
					}
				},     	 
				setMagasinsPop : function() {
					var link = document.getElementById("sw_nav_bis_magasins").getElementsByTagName("a")[0];
					var pop = document.getElementById("sw_nav_bis_magasins_pop"); 
					if(link && pop)
						add_hover(link, pop); 
				}, 
				setCataloguePop : function() {  
					var link = document.getElementById("sw_nav_bis_catalogue").getElementsByTagName("a")[0];
					var pop = document.getElementById("sw_nav_bis_catalogue_pop");   
					if(link && pop)
						add_hover(link, pop);
				}, 
				setLivraisonPop : function() {  
					var link = document.getElementById("sw_nav_sub_livraison").getElementsByTagName("a")[0];
					var pop = document.getElementById("sw_nav_sub_livraison_pop");   
					if(link && pop)
					{
						add_hover(link, pop);
						pop.onclick = function() {
							window.location = link.href;
						}
					}
				}, 
				setRetoursPop : function() {  
					var link = document.getElementById("sw_nav_sub_retours").getElementsByTagName("a")[0];
					var pop = document.getElementById("sw_nav_sub_retours_pop");   
					if(link && pop)
					{
						add_hover(link, pop);
						pop.onclick = function() {
							window.location = link.href;
						}
					}
				}, 
				setMenuPop : function() {
					var nav_items = document.getElementById("sw_nav_main").getElementsByTagName("li");
					for(i=0; i<nav_items.length; i++)
					{
						if(nav_items[i].getElementsByTagName("div").length > 0)
						{				
							var link = nav_items[i].getElementsByTagName("a")[0]; 
							var pop = link.parentNode.getElementsByTagName("div")[0];
							if(link && pop)
								add_hover(link, pop); 
						}
					}                   
				},   
				setSearchLabel : function() {
					var memo_search = document.getElementById("memo_search");
					if(memo_search)
					{
						var span = memo_search.getElementsByTagName("span"); 
						var input = memo_search.getElementsByTagName("input");
						if(span && input)
						{
							span = span[0]; 
							input = input[0];
							add_textbox_label(input, span);
						}
					}
				},
				setQuickBasket : function() {
					var quickbasket = document.getElementById("memo_panier_rapide");
					var link = SOMEWHERE.getElementsByClassName("memo_panierrapide_button", "div", quickbasket)[0];
					var pop = SOMEWHERE.getElementsByClassName("memo_panierrapide_modalpopup", "div", quickbasket)[0];   
					if(link && pop)
					{
						var link_img = link.getElementsByTagName("img")[0];
						if(link_img)
						{
							link_img.onmouseover = null;
							link_img.onmousemove = null;
							link_img.onmouseout = null;
						}
						pop.onmouseover = null;
						pop.onmousemove = null;
						pop.onmouseout = null;
						//if(SOMEWHERE.user.getArticles() > 0)
						add_hover(link, pop);
					}
				},
				setNewsletterLight : function() {
					// Recuperation du code HTML de memo_inscriptionNewsletterRapide
					var div_memo_newsletterlight = document.getElementById("memo_inscriptionNewsletterRapide");
					var div_sw_newsletterlight = document.getElementById("sw_header_nav_newsletter_form");
					if(div_memo_newsletterlight && div_sw_newsletterlight)
					{
						div_sw_newsletterlight.innerHTML = div_memo_newsletterlight.innerHTML;
						div_memo_newsletterlight.innerHTML = "";
						var tb_newsletter = SOMEWHERE.getElementsByClassName("memo_inscriptionnewsletterlight_inscriptionrapidevaleur", "input", div_sw_newsletterlight)[0];
						var label_newsletter = SOMEWHERE.getElementsByClassName("memo_inscriptionnewsletterlight_inscriptionrapidelibelle", "span", div_sw_newsletterlight)[0];
						var button_newsletter = SOMEWHERE.getElementsByClassName("memo_inscriptionnewsletterlight_inscriptionrapidebouton", "input", div_sw_newsletterlight)[0];
						if(tb_newsletter && label_newsletter)
						{
							add_textbox_label(tb_newsletter, label_newsletter);
							var tab_newsletter = document.getElementById("sw_nav_sub_newsletter");
							var div_sw_newsletterlight_popup = SOMEWHERE.getElementsByClassName("sw_nav_pop", "div", tab_newsletter)[0];
							div_sw_newsletterlight_popup.appendChild(button_newsletter);
							if(div_sw_newsletterlight_popup)
							{
								var f_tb_onfocus = tb_newsletter.onfocus;
								var f_tb_onblur = tb_newsletter.onblur;
								tb_newsletter.onfocus = function(e) { 
									f_tb_onfocus();
									div_sw_newsletterlight_popup.style.display = "block";  
									add_hover_classname(tab_newsletter);
									add_header_zindex();
								};
								tb_newsletter.onblur = function(e) {
									setTimeout(function() { 
										f_tb_onblur();
										div_sw_newsletterlight_popup.style.display = "none"; 
										remove_hover_classname(tab_newsletter);
										remove_header_zindex();
									}, 100);
								};
							}
						}
					}
				},
				events : function(){
					return {
						init : function() {
							var div_event = document.getElementById("sw_event");
							var body = document.getElementsByTagName("body")[0];
							body.appendChild(div_event);
							this.startScroll();
							document.getElementById("sw_event").style.display = "block";
							SOMEWHERE.page.addClass("sw_event_on");
						},
						startScroll : function() {
							var div_event = document.getElementById("sw_event");
							var a_events = div_event.getElementsByTagName("a");
							if(a_events.length > 1)
							{
								a_events[0].style.display = "block";
								for(i=1; i < a_events.length; i++)
									a_events[i].style.display = "none";
								setInterval(function() {
									SOMEWHERE.header.events.displayNext();
								}, 5000);
							}
						},
						displayNext : function() {
							var div_event = document.getElementById("sw_event");
							var a_events = div_event.getElementsByTagName("a");
							var a_current=0;
							for(i=0; i < a_events.length; i++)
							{
								if(a_events[i].style.display == "block")
									a_current = i;
							}
							a_events[a_current].style.display = "none";
							a_current++;
							if(a_current >= a_events.length)
								a_current = 0;
							a_events[a_current].style.display = "block";
						}
					};
				}(),
				catalogue : function(){
					return {
						init : function() {
							if(!SOMEWHERE.cookies.read("sw_catalogue_pe10"))
								this.addActionOnClick();
						},
						addActionOnClick : function() {
							var menu = new Array("sw_nav_main_femme", "sw_nav_main_homme", "sw_nav_main_nouveautes", "sw_nav_main_bonnes_affaires", "sw_nav_main_nouvelle_collection", "sw_nav_main_deco");
							for(i=0; i < menu.length; i++)
							{
								var item = document.getElementById(menu[i]);
								var link = item.getElementsByTagName("a");
								link = link[0];
								var oCatalogue = this;
								link.onclick = function() {
									oCatalogue.addOverlay();
									oCatalogue.display(this);
									SOMEWHERE.cookies.create("sw_catalogue_pe10","nothanks",1);
									return false;
								};
							}
						},
						removeActionOnClick : function() {
							var menu = new Array("sw_nav_main_femme", "sw_nav_main_homme", "sw_nav_main_nouveautes", "sw_nav_main_bonnes_affaires", "sw_nav_main_nouvelle_collection", "sw_nav_main_deco");
							for(i=0; i < menu.length; i++)
							{
								var item = document.getElementById(menu[i]);
								var link = item.getElementsByTagName("a");
								link = link[0];
								link.onclick = null;
							}
						},
						display : function(a) {
							var div_catalogue = document.getElementById("sw_pe10_catalogue");
							var body = document.getElementsByTagName("body")[0];
							body.appendChild(div_catalogue);
							div_catalogue = document.getElementById("sw_pe10_catalogue");
							div_catalogue.style.display = "block";
							var link_text = document.getElementById("sw_pe10_catalogue_boutique");
							link_text.innerHTML = a.innerHTML;
							link_text.parentNode.href = a.href;
							var link_close = SOMEWHERE.getElementsByClassName("sw_close", "a", div_catalogue)[0];
							link_close.href = a.href;
							this.addOverlay();
						},
						hide : function() {
							document.getElementById("sw_pe10_catalogue").style.display = "none";
							this.hideOverlay();
							this.removeActionOnClick();
						},
						addOverlay : function() {
							if(!document.getElementById("sw_overlay"))
							{
								var overlay = document.createElement("div");
								overlay.id = "sw_overlay";
								var oCatalogue = this;
								overlay.onclick = function() {
									oCatalogue.hide();
								}
								document.body.appendChild(overlay);
							}
							SOMEWHERE.page.addClass("sw_overlay_on");
							document.getElementById("sw_overlay").style.display = "block";
						},
						hideOverlay : function() {
							if(document.getElementById("sw_overlay"))
							{
								SOMEWHERE.page.removeClass("sw_overlay_on");
								document.getElementById("sw_overlay").style.display = "none";
							}
						}
					};
				}()
			};
			// add_hover
			// Ajoute des evenements au rollover sur toggler pour faire apparaitre el
			function add_hover(toggler, el) { 
				toggler.onmouseover = function() { 
					el.style.display = "block";   
					add_hover_classname(toggler);
					add_header_zindex();
				};   
				toggler.onmouseout = function(e) { 
					el.style.display = "none";   
					remove_hover_classname(toggler);
					remove_header_zindex();
					if (!e) var e = window.event;
					e.cancelBubble = true;
					if (e.stopPropagation) e.stopPropagation();
				};              
				el.onmouseover = function() { 
					el.style.display = "block";   
					add_hover_classname(toggler);
					add_header_zindex();
				};  
				el.onmouseout = function() { 
					el.style.display = "none";   
					remove_hover_classname(toggler);
					remove_header_zindex();
				};
			}   
			function add_hover_classname(el) {
				var class_name = "sw_hover";   
				if(!el.className.match(class_name))
					el.className += " "+class_name;  
			}     
			function remove_hover_classname(el) {
				var class_name = "sw_hover";   
				if(el.className.match(class_name))
					el.className = el.className.substring(0, el.className.indexOf(class_name));  
			}
			function add_header_zindex() {
				document.getElementById("memo_site_haut").style.zIndex = "3";
			}
			function remove_header_zindex() {
				document.getElementById("memo_site_haut").style.zIndex = "";
			}
			// add_textbox_label()
			// Ajoute les evenements pour qu'au clic dans la textbox, le label disparaisse
			function add_textbox_label(textbox, label) {
				if(textbox && label)
				{
					textbox.value = "";
					label.onclick = function() { 
						label.style.display = "none";
						textbox.focus();
					};   
					textbox.onclick = function() { 
						label.style.display = "none"; 
					};     
					textbox.onfocus = function() { 
						label.style.display = "none"; 
					};     
					textbox.onblur = function() {
						if(textbox.value == "")
							label.style.display = "block"; 
					};
				}
			}
		}()
	};
}();
SOMEWHERE.addLoadEvent(function() { 
	SOMEWHERE.page.addSectorClass();
	SOMEWHERE.header.init();
});
