if (!window.HN) HN = window.HN = {};
if (!HN.TC) HN.TC = {};
if (!HN.TC.GVars) HN.TC.GVars = {};

HN.TC.FM = new HN.FileManager();
HN.TC.FM.add("categories-menu", HN.TC.Locals.RessourcesURL + "xml/categories-menu.xml", "xml");

HN.TC.ProcessCriteoSI = function () {
	//alert("ok");
	//$("#"+HN.TC.Locals.cto_gsi_sup+"_tb ."+HN.TC.Locals.cto_gsi_sup+"_si")
	//$("#"+HN.TC.Locals.cto_gsi_adv)
};

HN.TC.MainMenu = function (_menu, _submenu) {
	
	var me = this;
	this.menu = typeof _menu == "string" ? document.getElementById(_menu) : _menu;
	this.submenu = typeof _submenu == "string" ? document.getElementById(_submenu) : _submenu;
	this.timerHide = null;
	this.current = null;
	
	this.hideStart = function () {
		if (me.current) {
			me.timerHide = setTimeout(function(){
				$(me.current).removeClass("hover");
				$(me.submenu).hide();
			}, 250);
		}
	};
	
	this.hideStop = function () {
		clearTimeout(me.timerHide);
	};
	
	this.show = function (a, html) {
		me.hideStop();
		if (me.current && me.current != a)
			$(me.current).removeClass("hover");
		me.current = a;
		
		$(a).addClass("hover");
		$(me.submenu).html(html).show();
	}
	
	// Construct
	HN.TC.FM.getData("categories-menu", function (xml) {
		var menuItems = $("a", me.menu);
		var menuItemsCount = $(menuItems).length;
		$(menuItems).each(function(index) {
			
			// HTML
			var cat2List = $(xml).find("category[id=\""+this.rel+"\"] > category");
			var left = (HN.TC.Locals.MM_Width - (HN.TC.Locals.MM_colWidth + HN.TC.Locals.MM_subMenuOffsetWidth)) / (menuItemsCount-1) * index;
			
			var html = "<div class=\"submenu\" style=\"width: " + HN.TC.Locals.MM_colWidth + "px; left: " + left + "px; \">";
				html += "<ul>";
			$(cat2List).each(function(){
				html += "<li><a href=\"" + HN.TC.Locals.URL + "familles/" + $(this).attr("ref_name") + ".html\">" + $(this).attr("name") + "</a> <em>(" + $(this).attr("pdt_count") + ")</em></li>";
			});
			html += "</ul>";
			html += "<a href=\"" + $(this).attr("href") + "\" class=\"see-all nu\">Voir tous les rayons</a>";
			html += "</div>";
			
			// Menu Triggers
			this.onmouseover = function () { me.show(this, html); };
			this.onmouseout = function () { me.hideStart(); };
		});
		
		// SubMenu Triggers
		me.submenu.onmouseover = function () { me.hideStop(); };
		me.submenu.onmouseout = function () { me.hideStart(); };
	});
	
}

// Account Functionalities
HN.TC.SecureInit = function () {
	
	var requestSent = false;
		
	var $account = $("#body div.account");
	if ($account.length > 0) {
		
		// Infos Modify Submit button
		$account.find("#infos-modify-save").click(function(){
			if (!requestSent) document.coord.submit();
			requestSent = true;
			return false;
		});
		
		// Personnal Infos Resume
		$infos_resume = $account.find("div.infos-resume");
		if ($infos_resume.length > 0) {
			var $global_actions = $account.find("div.infos-resume > div.actions");
			var save = $global_actions.find("a:first");
			var cancel = $global_actions.find("a:last");
			
			$account.find("div.infos-resume > ul li").each(function(){
				var li = this;
				$("div.actions a:first", li).click(function(){
				
					var text = $("div.text", li).hide();
					var actions = $("div.actions", li).hide();
					var edit = $("input.edit", li).show();
					var help = $("div.help", li).show();
					var helpTimeout;
					var helpHTML = help.html();
					$global_actions.show();
					
					var save_click = function(){
						$.ajax({
							data: "action=edit&field=" + edit.attr("name") + "&data=" + edit.val(),
							dataType: "json",
							error: function (XMLHttpRequest, textStatus, errorThrown) {
								help.html("Erreur fatale !")
									.addClass("error")
									.fadeOut(50).fadeIn(50)
									.fadeOut(50).fadeIn(50)
									.fadeOut(50).fadeIn(50);
								clearTimeout(helpTimeout);
								helpTimeout = setTimeout(function(){ help.html(helpHTML).removeClass("error"); }, 3000);
							},
							success: function (data, textStatus) {
								if (data.data) {
									text.show().html(data.data);
									actions.show();
									edit.hide();
									help.hide();
									$global_actions.hide();
									save.unbind("click", save_click);
									cancel.unbind("click", cancel_click);
								}
								else if (data.error) {
									help.html(data.error)
										.addClass("error")
										.fadeOut(50).fadeIn(50)
										.fadeOut(50).fadeIn(50)
										.fadeOut(50).fadeIn(50);
									clearTimeout(helpTimeout);
									helpTimeout = setTimeout(function(){ help.html(helpHTML).removeClass("error"); }, 3000);
								}
							},
							type: "GET",
							url: "AccountAjaxMod.php"
						});
						return false;
					};
					save.bind("click", save_click);
					
					var cancel_click = function(){
						clearTimeout(helpTimeout);
						help.stop(true).css("opacity", "").hide().html(helpHTML).removeClass("error");
						text.show();
						actions.show();
						edit.hide();
						$global_actions.hide();
						save.unbind("click", save_click);
						cancel.unbind("click", cancel_click);
						return false;
					};
					cancel.bind("click", cancel_click);
					
					return false;
				});
				
			});
		}
		
		var cartID = $account.find("input[name='cartID']").val();
		// Download estimate
		$account.find("div.dl-esti").click(function(){
			window.open(HN.TC.Locals.URL+"pdf/devis_generate.php?cartID="+cartID, "_blank");
		});
	
		// Estimate to Order
		$account.find("div.esti-to-order").click(function(){
			if (!requestSent) {
				document.location.href = HN.TC.Locals.AccountURL+"esti-to-order.php?cartID="+cartID;
				requestSent = true;
			}
		});
		
		// Contact Form
		var $contact_form = $account.find("div.contact-form");
		if ($contact_form.length > 0) {
			// Contact Form Selects
			$contact_form.find("select[name='type']").change(function(){
				var $select_id = $contact_form.find("select[name='id']").empty();
				var $label_id = $contact_form.find("label[for='id']").empty();
				switch (this.value) {
					case "1" :
						for (k in HN.TC.GVars.account_orders)
							$select_id.append("<option value=\""+HN.TC.GVars.account_orders[k].id+"\">"+HN.TC.GVars.account_orders[k].id+" - "+HN.TC.GVars.account_orders[k].date+"</option>");
						$label_id.html("Numéro de commande:");
						break;
					case "2" :
						for (k in HN.TC.GVars.account_estimates)
							$select_id.append("<option value=\""+HN.TC.GVars.account_estimates[k].id+"\">"+HN.TC.GVars.account_estimates[k].id+" - "+HN.TC.GVars.account_estimates[k].date+"</option>");
						$label_id.html("Numéro de devis:");
						break;
					default: break;
				}
			}).change();
			if (HN.TC.GVars.account_cfType && HN.TC.GVars.account_cfID) {
				$contact_form.find("select[name='type']").val(HN.TC.GVars.account_cfType).change();
				$contact_form.find("select[name='id']").val(HN.TC.GVars.account_cfID);
			}
			
			// Contact Form Submit button
			$contact_form.find("div.send-contact-request").click(function(){
				if (!requestSent) {
					var list = [];
					$contact_form.find("div[class*='js-checkbox'][class*='checked']").each(function(){
						list.push(escape($(".js-checkbox-label", this.parentNode).html()));
					});
					$contact_form.find("input[name=js-checkbox-checked-list]").val(list.join("<_>"));
					requestSent = true;
					document.account_contact_form.submit();
				}
			});
		}
	}
	
	var $esti_send = $("#body").find(".btn-estimate-send, .estimate-send");
	if ($esti_send.length > 0) {
		
		// Send Estimate to Colleague functionalities
		var sec_db = document.createElement("div");
		sec_db.className = "spc-db";
		
		var sec_db_bg = document.createElement("div");
		sec_db_bg.className = "spc-db-bg";
		sec_db.appendChild(sec_db_bg);
		
		var umail_label = document.createElement("label");
		umail_label.innerHTML = "Votre E-mail : ";
		sec_db_bg.appendChild(umail_label);
		var umail = document.createElement("input");
		umail.type = "text";
		umail.size = "50";
		umail.maxlength = "255";
		umail.value = HN.TC.GVars.userEmail;
		sec_db_bg.appendChild(umail);
		sec_db_bg.appendChild(document.createElement("br"));
		sec_db_bg.appendChild(document.createTextNode("Envoyer ce devis à un collègue :"));
		sec_db_bg.appendChild(document.createElement("br"));
		
		var fmail = [];
		for (var i = 0; i < 5 ; i++) {
			fmail_label = document.createElement("label");
			fmail_label.innerHTML = "E-mail "+(i+1)+" : ";
			sec_db_bg.appendChild(fmail_label);
			fmail[i] = document.createElement("input");
			fmail[i].type = "text";
			fmail[i].size = "50";
			fmail[i].maxlength = "255";
			sec_db_bg.appendChild(fmail[i]);
			sec_db_bg.appendChild(document.createElement("br"));
		}
		
		var send = document.createElement("input");
		send.type = "button";
		send.value = "Envoyer";
		send.className = "send";
		send.onclick = function() {
			var fmails_str = "";
			for (var i = 0; i < fmail.length; i++) {
				fmails_str += "&fmail"+(i+1)+"="+fmail[i].value;
			}
			$.ajax({
				data: "action=sendEstimate&umail="+umail.value+fmails_str+"&cartID="+sec.cartID,
				dataType: "json",
				error: function (XMLHttpRequest, textStatus, errorThrown) {
					alert(textStatus+" "+errorThrown);
				},
				success: function (data, textStatus) {
					if (!data.data) {
						if (data.error) {
							alert("Error : " + data.error);
						}
						if (data.warning) {
							alert("Warning : " + data.warning);
						}
					}
					else {
						alert(data.data);
						sec.Hide();
					}
				},
				type: "GET",
				url: HN.TC.Locals.AJAXSendColleagues
			});
		};
		sec_db_bg.appendChild(send);
		
		$("#body").append(sec_db);
		
		var sec = new HN.Window(sec_db);
		sec.setTitleText("Envoyer un devis à un collègue");
		sec.setMovable(true);
		sec.showCancelButton(true);
		sec.setValidFct( function() { sec.Hide(); } );
		sec.Build();
		
		$esti_send.click(function(){
			sec.cartID = $("#body").find("input[name='cartID']").val();
			if (sec.cartID == null) sec.cartID = this.href.substr("cartID::".length, this.href.length);
			sec.Show();
			return false;
		});
		
	}
	
	
	// Order and Estimate steps
	var $order_steps = $("#body div.order-steps");
	if ($order_steps.length > 0) {
		// order step 1
		var $form_coord = $order_steps.find("form[name='coord']");
		if ($form_coord.length > 0) {
			$form_coord.find("div.other-billing-address div.js-checkbox:first").click(function(){
				if ($(this).hasClass("checked"))
					$("#os1-billing-address").show();
				else
					$("#os1-billing-address").hide();
			}).click().click();
		}
		
		// estimate step 3
		$btn_esti_actions = $order_steps.find("div.btn-estimate-actions");
		if ($btn_esti_actions.length > 0) {
			var cartID = $order_steps.find("input[name='cartID']").val();
			$btn_esti_actions.find("div.btn-estimate-print").click(function(){ window.open(HN.TC.Locals.URL+"pdf/devis_generate.php?cartID="+cartID, "_blank"); });
			$btn_esti_actions.find("div.btn-estimate-save").click(function(){ window.open(HN.TC.Locals.URL+"pdf/devis_generate.php?cartID="+cartID, "_blank"); });
			//$btn_esti_actions.find("div.btn-estimate-send").click(function(){  });
		}
		
		// order step 3
		$form_order = $("form[name='order']");
		if ($form_order.length > 0) {
			$form_order.submit(function(){
				if ($("input[type='radio']:checked", this).length != 1) {
					alert("Afin de poursuivre votre commande, veuillez sélectionner votre mode de paiement.");
					return false;
				}
				$cgv = $form_order.find("input[name='cgv']");
				if ($cgv.length > 0 && $cgv.val() == "0") {
					alert("Afin de poursuivre la commande, merci de prendre connaissance et d'accepter nos Conditions Générales de Vente.");
					return false;
				}
				return true;
			});
			$form_order.find("div.order-cgv a:first").click(function(){ window.open("404.html","CGDV_VPC","status=1,width=800,height=600,scrollbars=1"); return false; })
		}
		
		// order confirmation
		$order_steps.find("a.option-print").click(function(){ window.open(this.href, "_blank"); return false; });
	}
	
	
}

HN.TC.Init = function () {
	var requestSent = false;
	var urlInfos = new HN.URLinfos();
	var $pdt_sheet = $("#product-sheet");
	
	/** Global functionalities
	***************************************/
	
	// Every Checkboxes and Radio Groups
	$("#body").find("div.js-checkbox").append("<div class=\"js-check-mark\"></div>").click(function(){
		$(this).toggleClass("checked").find("input[type=hidden]").val($(this).hasClass("checked")?1:0);
	}).each(function(){ if ($(this).find("input[type=hidden]").val() > 0) $(this).addClass("checked"); });
	$("#body").find("div.js-radio").append("<div class=\"js-check-mark\"></div>").click(function(){
		var $input = $(this).find("input[type=radio]");
		$input.attr("checked", "checked");
		$("input[type=radio][name='"+$input.attr("name")+"']").parent().removeClass("checked");
		$(this).addClass("checked");
	}).each(function(){ if ($(this).find("input[type=radio]:checked").length > 0) $(this).addClass("checked"); });
	
	//var mts = {};
	//mts.test = {};
	//mts.test.start = (new Date()).getTime();
	
	//for(i=0;i<100;i++) {
	//$("#body div.pdt-hb, #body div.cat2-block").each(function(){
	/*var hoho = [], k=0;
	var tables = document.getElementsByTagName("table");
	for (var j=0; j<tables.length; j++) {
		var tds = tables[j].getElementsByTagName("td");
		for (var j2=0; j2<tds.length; j2++)
			hoho[k++] = tds[j2];
	}*/
	$("div.mini-stores-carrousel div.mask").scrollable({
		loop: true,
		size: 3,
		speed: 500,
		prev: "div.scroll-l",
		next: "div.scroll-r"
	}).circular().autoscroll({interval: 2500});
	
	$("#body div.pdt-hb, #body td.pdt-vb, #body table.pdt-db > tbody tr, #body table.cat1-cat2-list > tbody td, #body table.cat2-cat3-list > tbody td").each(function(){
		var href = $("a", this).attr("href");
		
		HN.TC.GVars.adv_help_timeout;
		HN.TC.GVars.adv_help = document.createElement("div");
		HN.TC.GVars.adv_help.className = "adv-helper";
		HN.TC.GVars.adv_help.innerHTML = "Toute demande relative à ce produit sera directement envoyée à notre fabriquant partenaire, qui reprendra contact avec vous sous un délai moyen constaté de 24/48H.";
		
		$(".picture > img, span.see-link",this).click(function(){ document.location.href = href; }).css("cursor", "pointer");
		$("span.see-link",this)
			.mouseenter(function(){ $(this).toggleClass("u"); })
			.mouseleave(function(){ $(this).toggleClass("u"); });
		$("span.what-is-it", this)
			.mouseenter(function(){
				var $me = $(this)
				clearTimeout(HN.TC.GVars.adv_help_timeout);
				HN.TC.GVars.adv_help.style.left = ($me.position().left-45)+"px";
				HN.TC.GVars.adv_help.style.top = ($me.position().top-72)+"px";
				$me.toggleClass("u").after(HN.TC.GVars.adv_help);
			})
			.mouseleave(function(){
				var $me = $(this);
				$me.toggleClass("u");
				HN.TC.GVars.adv_help_timeout = setTimeout(function(){ $(HN.TC.GVars.adv_help).remove(); }, 1000);
			});
		
		/*
		var href = this.getElementsByTagName("a")[0].getAttribute("href");
		var imgs = this.getElementsByTagName("img");
		if (imgs.length > 0) {
			imgs[0].onclick = function(){ document.location.href = href; };
			imgs[0].style.cursor = "pointer";
		}
		
		var see_link;
		var divs = this.getElementsByTagName("div");
		for (var idiv = 0; idiv < divs.length; idiv++) {
			if (divs[idiv].className == "see-link") {
				see_link = divs[idiv];
				break;
			}
		}
		if (see_link) {
			see_link.onclick = function(){ document.location.href = href; };
			see_link.style.cursor = "pointer";
			//var classes = split(" ",see_link.className);
			//classPresent = false;
			//for (var k=0; k < classes.length; k++) {
			//	if (classes[k] == "u") classes[k] = "";
			//}
			see_link.onmouseover = function(){ this.style.textDecoration = this.style.textDecoration == "underline" ? "" : "underline"; };
			see_link.onmouseout = function(){ this.style.textDecoration = this.style.textDecoration == "underline" ? "" : "underline"; };
		}*/
	});
	//}
	//mts.test.end = (new Date()).getTime();
	//var mts_s = ""; for (t in mts) { mts_s += t + " = " + (mts[t].end - mts[t].start) + "ms\n";	}; alert(mts_s);
	//alert(hoho.length);
	//alert($("table  td").length);
	
	$("#body a[class^='btn-esti-ask']").click(function(){
		var parts = this.href.substring(this.href.lastIndexOf("index.html")+1, this.href.length).split(":")[1].split("-");
		var catID = parts[0];
		var pdtID = parts[1];
		var idTC = parts[2];
		var qty = parts.length > 3 ? parts[3] : 1;
		if ($pdt_sheet.length > 0) window.open(HN.TC.Locals.URL + "lead.html?pdtID="+pdtID+"&catID="+catID, "_blank");
		else document.location.href = HN.TC.Locals.URL + "lead.html?pdtID="+pdtID+"&catID="+catID;
		return false;
	});
	
	// Add to Cart
	var $btn_cart_add = $("#body a[class^='btn-cart-add']");
	if ($btn_cart_add.length > 0) {
		// Add to cart ajax layer
		var cart_add_overlay_bg_black = document.createElement("div");
		cart_add_overlay_bg_black.id = "cart-add-overlay-bg-black";
		var cart_add_overlay = document.createElement("div");
		cart_add_overlay.id = "cart-add-overlay";
			var cao_oc = document.createElement("div");
			cao_oc.className = "outer-content";
			cart_add_overlay.appendChild(cao_oc);
				var cao_ic = document.createElement("div");
				cao_ic.className = "inner-content";
				cao_oc.appendChild(cao_ic);
					var cao_title = document.createElement("div");
					cao_title.className = "title";
					cao_title.innerHTML = "Vous avez ajouté le produit suivant à votre panier:";
					cao_ic.appendChild(cao_title);
					var cao_desc = document.createElement("div");
					cao_desc.className = "desc";
					cao_ic.appendChild(cao_desc);
				// Resume shopping button
					var cao_btn_resume = document.createElement("div");
					cao_btn_resume.className = "btn-resume-shopping";
					cao_btn_resume.onclick = function(){ $(cart_add_overlay).hide(); $(cart_add_overlay_bg_black).hide(); };
					cao_ic.appendChild(cao_btn_resume);
				// Go to Cart button
					var cao_btn_cart = document.createElement("div");
					cao_btn_cart.className = "btn-goto-cart";
					cao_btn_cart.onclick = function(){ document.location.href = HN.TC.Locals.URL + "panier.html"; };
					cao_ic.appendChild(cao_btn_cart);
					
		
		$("body").append(cart_add_overlay).append(cart_add_overlay_bg_black);
	}
	$btn_cart_add.click(function(){
		var parts = this.href.substring(this.href.lastIndexOf("index.html")+1, this.href.length).split(":")[1].split("-");
		var catID = parts[0];
		var pdtID = parts[1];
		var idTC = parts[2];
		var qty = parts.length > 3 ? parts[3] : 1;
		
		$.ajax({
			data: "action=add&pdtID="+pdtID+"&idTC="+idTC+"&catID="+catID+"&qty="+qty,
			dataType: "json",
			error: function (XMLHttpRequest, textStatus, errorThrown) {
				alert(textStatus+" "+errorThrown);
			},
			success: function (_data, textStatus) {
				if (_data.data) {
					var data = _data.data;
					data["cart_item_count"] = parseInt(data["cart_item_count"]);
					data["quantity"] = parseInt(data["quantity"]);
					data["price"] = parseFloat(data["price"]);
					
					$("#header-cart-item-count").html(data["cart_item_count"] + " article"+(data["cart_item_count"] > 1 ? "s" : ""));
					$(cart_add_overlay).find(".desc").html(data["quantity"]+" * "+data["idTC"]+" - <b>"+data["label"]+"</b> - "+data["price"].toFixed(2)+"€");
					
					$(cart_add_overlay_bg_black).show();
					$(cart_add_overlay).show();
                                        
                                        // Avail
                                        if (availTrackingCode)
                                          emark.logAddedToCart(idTC,availTrackingCode);
                                        else
                                          emark.logAddedToCart(idTC);
                                        if (HN.TC.GVars.avail_saveSearch)
                                          emark.saveSearch(HN.TC.GVars.avail_saveSearch, idTC);
                                        emark.commit();
				}
				else {
					if (_data.error) {
						alert("Error : " + _data.error);
					}
					if (_data.warning) {
						alert("Warning : " + _data.warning);
					}
				}
			},
			type: "GET",
			url: HN.TC.Locals.AJAXCartManager
		});
                
		return false;
	});
	
	
	// Product Sheet
	if ($pdt_sheet.length > 0) {
		
		// Picture functionalities
		var $pdt_sheet_pic_block = $pdt_sheet.find("div.picture-block");
		var loading_img = HN.TC.Locals.RessourcesURL+"images/lightbox-ico-loading.gif";
		
		var pic_zoom_overlay = document.createElement("div");
		pic_zoom_overlay.id = "pic-zoom-overlay";
			//var pzo_title = document.createElement("div");
			//pzo_title.className = "title";
			//pic_zoom_overlay.appendChild(pzo_title);
			var pzo_img = document.createElement("img");
			pzo_img.src = loading_img;
			pic_zoom_overlay.appendChild(pzo_img);
			var pzo_loading_img = document.createElement("div");
			pzo_loading_img.className = "loading-img";
			pic_zoom_overlay.appendChild(pzo_loading_img);
		// Close Button
			var pzo_btn_close = document.createElement("a");
			pzo_btn_close.className = "btn-close";
			pzo_btn_close.href = "#";
			pzo_btn_close.onclick = function(){ $(pic_zoom_overlay).hide(); return false; };
			pic_zoom_overlay.appendChild(pzo_btn_close);
		// Next Image
			/*var pzo_btn_next = document.createElement("div");
			pzo_btn_next.className = "btn-next";
			pzo_btn_next.onclick = function(){  };
			pic_zoom_overlay.appendChild(pzo_btn_next);*/
		// Previous Image
			/*var pzo_btn_prev = document.createElement("div");
			pzo_btn_prev.className = "btn-prev";
			pzo_btn_prev.onclick = function(){  };
			pic_zoom_overlay.appendChild(pzo_btn_prev);*/
		//div.id = ""
		$("body").append(pic_zoom_overlay);
		
		$pdt_sheet_pic_block.find("div.list a").click(function(){
			var me = this;
			if (this.className == "selected") return false;
			$pdt_sheet_pic_block.find("div.picture img").attr("src", this.href);
			
			$pdt_sheet_pic_block.find("div.list a").removeClass("selected");
			this.className = "selected";
			
			return false;
		});
		$pdt_sheet_pic_block.find("div.list a:first").click();
		
		$pdt_sheet_pic_block.find("div.picture img").click(function(){
			pic_zoom_overlay.width = "";
			pic_zoom_overlay.height = "";
			$(pzo_img).hide();
			$(pzo_loading_img).show();
			if (pzo_img.src == loading_img) {
				$(pic_zoom_overlay).css({
					left: ($(window).width()-(490+10))/2,
					top: 200
				});
			}
			$(pic_zoom_overlay).show();
			var pic_url_parts = this.src.split("index.html");
			pic_url_parts[pic_url_parts.length-2] = "zoom";
			var pic_url = pic_url_parts.join("index.html");
			
			var objImagePreloader = new Image();
			objImagePreloader.onload = function() {
				pzo_img.src = pic_url;
				$(pic_zoom_overlay).animate({
					left: ($(window).width()-(objImagePreloader.width+10))/2,
					top: 200,
					width: objImagePreloader.width,
					height: objImagePreloader.height
				},500,function() {
					$(pzo_loading_img).hide();
					$(pzo_img).width(objImagePreloader.width).height(objImagePreloader.height).show();
				});
				objImagePreloader.onload = function(){};
			};
			objImagePreloader.src = pic_url;
		});
		
		$pdt_sheet_pic_block.find("div.zoom").click(function(){
			$pdt_sheet_pic_block.find("div.picture img").click();
		});
		
		
		// Leads Functionalities
		var $pdt_sheet_infos_actions = $pdt_sheet.find("div.infos div.actions");
		var pdtID = $pdt_sheet.find("input[name='pdtID']").val();
		$pdt_sheet_infos_actions.find(".get-infos").click(function(){ document.location.href = HN.TC.Locals.URL+"lead.html?pdtID="+pdtID+"&type=1"; });
		$pdt_sheet_infos_actions.find(".ask-callback").click(function(){ document.location.href = HN.TC.Locals.URL+"lead.html?pdtID="+pdtID+"&type=2"; });
		$pdt_sheet_infos_actions.find(".ask-estimate").click(function(){ document.location.href = HN.TC.Locals.URL+"lead.html?pdtID="+pdtID+"&type=3"; });
		$pdt_sheet_infos_actions.find(".make-appointment").click(function(){ document.location.href = HN.TC.Locals.URL+"lead.html?pdtID="+pdtID+"&type=4"; });
		
		
		// Send Product to Colleague functionalities
		var spc_db = document.createElement("div");
		spc_db.className = "spc-db";
		
		var spc_db_bg = document.createElement("div");
		spc_db_bg.className = "spc-db-bg";
		spc_db.appendChild(spc_db_bg);
		
		var umail_label = document.createElement("label");
		umail_label.innerHTML = "Votre E-mail : ";
		spc_db_bg.appendChild(umail_label);
		var umail = document.createElement("input");
		umail.type = "text";
		umail.size = "50";
		umail.maxlength = "255";
		umail.value = HN.TC.GVars.userEmail;
		spc_db_bg.appendChild(umail);
		spc_db_bg.appendChild(document.createElement("br"));
		spc_db_bg.appendChild(document.createTextNode("Envoyer cette fiche produit à un collègue :"));
		spc_db_bg.appendChild(document.createElement("br"));
		
		var fmail = [];
		for (var i = 0; i < 5 ; i++) {
			fmail_label = document.createElement("label");
			fmail_label.innerHTML = "E-mail "+(i+1)+" : ";
			spc_db_bg.appendChild(fmail_label);
			fmail[i] = document.createElement("input");
			fmail[i].type = "text";
			fmail[i].size = "50";
			fmail[i].maxlength = "255";
			spc_db_bg.appendChild(fmail[i]);
			spc_db_bg.appendChild(document.createElement("br"));
		}
		
		var send = document.createElement("input");
		send.type = "button";
		send.value = "Envoyer";
		send.className = "send";
		send.onclick = function() {
			var fmails_str = "";
			for (var i = 0; i < fmail.length; i++) {
				fmails_str += "&fmail"+(i+1)+"="+fmail[i].value;
			}
			
			$.ajax({
				data: "action=sendProduct&umail="+umail.value+fmails_str+"&pdtID="+HN.TC.GVars.pdtID+"&catID="+HN.TC.GVars.catID,
				dataType: "json",
				error: function (XMLHttpRequest, textStatus, errorThrown) {
					alert(textStatus+" "+errorThrown);
				},
				success: function (data, textStatus) {
					if (!data.data) {
						if (data.error) {
							alert("Error : " + data.error);
						}
						if (data.warning) {
							alert("Warning : " + data.warning);
						}
					}
					else {
						alert(data.data);
						spc.Hide();
					}
				},
				type: "GET",
				url: HN.TC.Locals.AJAXSendColleagues
			});
		};
		spc_db_bg.appendChild(send);
		
		$("#body").append(spc_db);
		
		var spc = new HN.Window(spc_db);
		spc.setTitleText("Envoyer une fiche produit à un collègue");
		spc.setMovable(true);
		spc.showCancelButton(true);
		spc.setValidFct( function() { spc.Hide(); } );
		spc.Build();
		
		$pdt_sheet.find("a.option-send-friend").click(function(){ spc.Show(); return false; });
		$pdt_sheet.find("a.option-print").click(function(){ window.open(this.href, "_blank"); return false; });
		
		$("div.product div.pdt-docs").find("a").click(function(){
			window.location.href = $(this).attr("rel");
			return false;
		});
		
	}
	
	// Main Contact Form
	$("div.main-contact-form .btn-send-message").click(function(){
		if (!requestSent) {
			requestSent = true;
			document.main_contact_form.submit();
		}
	});
	
	// Catalog Form
	$("div.catalogs-form .btn-send").click(function(){
		if (!requestSent) {
			requestSent = true;
			document.catalogs_form.submit();
		}
	});
	
	// Add/Sub quantities buttons in cart tables
	$("div.cart-table td.quantity").each(function(){
          if ($(this).has(".add,.sub")) {
            var $input = $(this).find("input");
            var val = parseInt($input.val());
            var $btn = $(this).parent().find("a[class^='btn-cart-add']");
            $(this).find(".add").click(function(){
              val++;
              $input.val(val);
              $btn.attr("href",$btn.attr("href").replace(/(^\D*)(\d+-\d+-\d+)(-\d+)?/,"$1$2-"+val));
            }).end().find(".sub").click(function(){
              if (val > 1) val--;
              $input.val(val);
              $btn.attr("href",$btn.attr("href").replace(/(^\D*)(\d+-\d+-\d+)(-\d+)?/,"$1$2-"+val));
            });
            $input.blur(function(){
              var val2 = $input.val();
              if (/^\s*\d+\s*$/.test(val2)) {
                val = parseInt(val2);
                if (val < 1) val = 1;
              }
              $input.val(val);
              $btn.attr("href",$btn.attr("href").replace(/(^\D*)(\d+-\d+-\d+)(-\d+)?/,"$1$2-"+val));
            });
          }
	});
	
	// Subsequent functionalities require a form named "panier"
	var $cart_form = $("form[name='panier']");
	if ($cart_form.length > 0) {
		cart_form = $cart_form.get(0);
		var idTCs = $("input[name=\"pdt\"]", cart_form);
		var cartID = cart_form.cartID.value;
		
		// Delete item buttons
		$("div.cart-table td .delete", cart_form).each(function(i){
			$(this).click(function(){
				if (!requestSent) {
					cart_form.todo.value = "delpdt_" + idTCs.get(i).value;
					cart_form.submit();
					requestSent = true;
				}
			});
		});
		
		// Comment AJAX mod
		$("div.cart-table td input.comment", cart_form).each(function(i){
			var me = this;
			$(this).blur(function(){
				$.ajax({
					data: "action=mod&cartID="+cartID+"&idTC="+idTCs.get(i).value+"&comment="+escape(me.value),
					dataType: "json",
					error: function (XMLHttpRequest, textStatus, errorThrown) {
						alert(textStatus+" "+errorThrown);
					},
					success: function (data, textStatus) {
						if (!data.data) {
							if (data.error) {
								alert("Error : " + data.error);
							}
							if (data.warning) {
								alert("Warning : " + data.warning);
							}
						}
					},
					type: "GET",
					url: HN.TC.Locals.AJAXCartManager
				});
			});
		});
		
		// Recalculate button
		$("div.cart-table td.quantity a", cart_form).click(function(){
			
			if (requestSent) return false;
			
			cart_form.todo.value = "updqte";
			
			var itemQuantities = [];
			$(idTCs).each(function(i) {
				var quantity = $(".cart-table input[name=\"qty\"]").get(i).value;
				if (isNaN(quantity))
					return false;
				else
					itemQuantities.push(this.value+"-"+quantity);
			});
			var updatestring = itemQuantities.join("<_>");
			
			if (updatestring != "") {
				$("form[name=\"panier\"]").append("<input type=\"hidden\" name=\"updatestring\" value=\"" + updatestring + "\"/>");
				cart_form.submit();
				requestSent = true;
			}
			
			return false;
			
		});
		
		// Make Order button
		$(".btn-order", cart_form).click(function(){
			if (!requestSent) {
				document.location.href = HN.TC.Locals.OrderURL + "order-step1.html?estimate=0";
				requestSent = true;
			}
		});
		
		// Make Estimate button
		$(".btn-estimate", cart_form).click(function(){
			if (!requestSent) {
				document.location.href = HN.TC.Locals.OrderURL + "order-step1.html?estimate=1";
				requestSent = true;
			}
		});
		
		// Constraint checks
		if (HN.TC.GVars.notValidPdtList) {
			for (pdtID in HN.TC.GVars.notValidPdtList) {
				var $tr1 = $cart_form.find("input[name='pdt'][value='"+HN.TC.GVars.notValidPdtList[pdtID]["idTC1"]+"']").parents("tr");
				var $trn = $cart_form.find("input[name='pdt'][value='"+HN.TC.GVars.notValidPdtList[pdtID]["idTCn"]+"']").parents("tr").next();
				while ($trn.next().hasClass("item-promotion") || $trn.next().hasClass("item-discount")) $trn = $trn.next();
				
				var td1 = $tr1.find("td:first");
				var tdn = $trn.find("td:last");
				var x1 = Math.floor(td1.position().left);
				var y1 = Math.floor(td1.position().top);
				var x2 = Math.floor(tdn.position().left + tdn.innerWidth());
				var y2 = Math.floor(tdn.position().top + tdn.innerHeight());
				
				var bt = document.createElement("div"), bl = document.createElement("div"), br = document.createElement("div"), bb = document.createElement("div");
				$(bt).css({ position: "absolute", left: x1+2, top: y1+2, width: x2-x1-4, height: 2, backgroundColor: "#b00000" });
				$(bl).css({ position: "absolute", left: x1+0, top: y1+2, width: 2, height: y2-y1+0, backgroundColor: "#b00000" });
				$(br).css({ position: "absolute", left: x2-x1-2, top: y1+2, width: 2, height: y2-y1+0, backgroundColor: "#b00000" });
				$(bb).css({ position: "absolute", left: x1+2, top: y2, width: x2-x1-4, height: 2, backgroundColor: "#b00000" });
				$cart_form.find("div.cart-table table").after(bt,bl,br,bb);
			}
		}
		
		if (HN.TC.GVars.notValidAdvList) {
			for (advID in HN.TC.GVars.notValidAdvList) {
				var $tr1 = $cart_form.find("input[name='pdt'][value='"+HN.TC.GVars.notValidAdvList[advID]["idTC1"]+"']").parents("tr");
				var $trn = $cart_form.find("input[name='pdt'][value='"+HN.TC.GVars.notValidAdvList[advID]["idTCn"]+"']").parents("tr").next();
				while ($trn.next().hasClass("item-promotion") || $trn.next().hasClass("item-discount")) $trn = $trn.next();
				
				var td1 = $tr1.find("td:first");
				var tdn = $trn.find("td:last");
				var x1 = Math.floor(td1.position().left);
				var y1 = Math.floor(td1.position().top);
				var x2 = Math.floor(tdn.position().left + tdn.innerWidth());
				var y2 = Math.floor(tdn.position().top + tdn.innerHeight());
				
				var bt = document.createElement("div"), bl = document.createElement("div"), br = document.createElement("div"), bb = document.createElement("div");
				$(bt).css({ position: "absolute", left: x1-1, top: y1-1, width: x2-x1+2, height: 2, backgroundColor: "#b00000" });
				$(bl).css({ position: "absolute", left: x1-3, top: y1-1, width: 2, height: y2-y1+3, backgroundColor: "#b00000" });
				$(br).css({ position: "absolute", left: x2-x1+1, top: y1-1, width: 2, height: y2-y1+3, backgroundColor: "#b00000" });
				$(bb).css({ position: "absolute", left: x1-1, top: y2, width: x2-x1+2, height: 2, backgroundColor: "#b00000" });
				$cart_form.find("div.cart-table table").after(bt,bl,br,bb);
			}
		}
	}
	
	// Order step 2
	$(".btn-validate-order-data, .btn-validate-estimate-data").click(function(){
		if (!requestSent) {
			document.location.href = HN.TC.Locals.OrderURL+"order-step3.html";
			requestSent = true;
		}
	});
	
	HN.png2alpha();
};

