var CURRENT_CAT = null;
var CURRENT_SUBCAT = null;
function activateCategory(categoryId) {
	$('rootCategories').getElementsBySelector('li[class="active"]').each(function(element) { element.removeClassName('active');	});
	if ($('cat_' + categoryId)) { $('cat_' + categoryId).addClassName('active'); }
}
function activateSubCategory(subCategoryId) {
	$('rootSubCategories').getElementsBySelector('li[class="active"]').each(function(element) {	element.removeClassName('active'); });
	if ($('subcat_' + subCategoryId)) { $('subcat_' + subCategoryId).addClassName('active'); }
}
function browseHome(isFullLoaded) {
	CURRENT_CAT = null;
	CURRENT_SUBCAT = null;
	activateCategory(CURRENT_CAT);
	activateSubCategory(CURRENT_SUBCAT);
	new Ajax.Request(ABS_PATH + '/www/e-shop/nav/browse_home.php', {
		onComplete : function(transport) {
			$('boxContent').innerHTML = transport.responseText;
			preloadBrowsingImages(); 
			initScrollBar(true);
			loadBottomContent(); 
			document.title = PAGE_TITLE;
			if (CURRENT_LANG == 'en') {	addPageTrack('E-Shop', '/e-shop/'); } else { addPageTrack('E-Boutique', '/fr/e-shop/'); }
			if (CURRENT_LANG == 'en') {	dhtmlHistory.add("home", "browseHome(false);");	} else { dhtmlHistory.add("accueil", "browseHome(false);");	}
		}
	});
}
function browseCategory(categoryId, isFullLoaded) {
	CURRENT_CAT = categoryId;
	CURRENT_SUBCAT = null;
	$('rootSubCategories').innerHTML = $('subCategories_' + CURRENT_CAT).innerHTML;	
	activateCategory(CURRENT_CAT);
	loadCategoryBrowsing(CURRENT_CAT, isFullLoaded);
}
function browseSubCategory(categoryId, subCategoryId, isFullLoaded) {
	CURRENT_CAT = categoryId;
	if (subCategoryId != null) { CURRENT_SUBCAT = subCategoryId; }
	$('rootSubCategories').innerHTML = $('subCategories_' + CURRENT_CAT).innerHTML;
	activateCategory(CURRENT_CAT);
	activateSubCategory(CURRENT_SUBCAT);
	loadSubCategoryBrowsing(CURRENT_CAT, CURRENT_SUBCAT, isFullLoaded);
}
function showSubCategories(categoryId) { $('rootSubCategories').innerHTML = $('subCategories_' + categoryId).innerHTML;	if (categoryId == CURRENT_CAT && CURRENT_SUBCAT != null) { activateSubCategory(CURRENT_SUBCAT); } }
function loadCategoryBrowsing(categoryId, isFullLoaded)  {
	new Ajax.Request(ABS_PATH + '/www/e-shop/nav/browse_category.php', {
		parameters : { id : categoryId },
		onComplete : function(transport) { 
			$('boxContent').innerHTML = transport.responseText; 
			preloadBrowsingImages(); 
			initScrollBar(true);
			loadBottomContent();
			document.title = PAGE_TITLE + ' - ' + $('categoryTitle').innerHTML;
			if (CURRENT_LANG == 'en') {	
				addPageTrack('E-Shop - ' + $('categoryTitle').innerHTML, $('categoryUrl').innerHTML); 
			} else { 
				addPageTrack('E-Boutique - ' + $('categoryTitle').innerHTML, $('categoryUrl').innerHTML); 
			}
			dhtmlHistory.add($('categoryHash').innerHTML, "browseCategory(" + categoryId + ",false);");
		}
	});
}
function loadSubCategoryBrowsing(categoryId, subCategoryId, isFullLoaded) {
	new Ajax.Request(ABS_PATH + '/www/e-shop/nav/browse_subcategory.php', {
		parameters : { id : categoryId, subcat_id : subCategoryId },
		onComplete : function(transport) { 
			$('boxContent').innerHTML = transport.responseText; 
			preloadBrowsingImages(); 
			initScrollBar(true); 
			loadBottomContent();
			document.title = PAGE_TITLE + ' - ' + $('subCategoryTitle').innerHTML;
			if (CURRENT_LANG == 'en') {	
				addPageTrack('E-Shop - ' + $('subCategoryTitle').innerHTML, $('subCategoryUrl').innerHTML); 
			} else { 
				addPageTrack('E-Boutique - ' + $('subCategoryTitle').innerHTML, $('subCategoryUrl').innerHTML); 
			}
			dhtmlHistory.add($('subCategoryHash').innerHTML, "browseSubCategory(" + categoryId + "," + subCategoryId + ", false);");
		}
	});
}
function showProduct(productRef, isFullLoaded) {
	showLoading();
	hideBottomContent();
	new Ajax.Request(ABS_PATH + '/www/e-shop/products/show_product.php', {
		parameters : { ref : productRef },
		onComplete : function(transport) {
			if (transport.responseText == '') { window.top.location.href=ABS_PATH + '/'; }
			$('boxContent').innerHTML = transport.responseText;
			preloadBrowsingImages();
			showProductQuantity(productRef, null);
			var form = $('formProductInfos');
			CURRENT_CAT = $(form['cat_id']).getValue(); 
			CURRENT_SUBCAT = $(form['subcat_id']).getValue();
			activateMenuItems(CURRENT_CAT, CURRENT_SUBCAT);
			stopLoading();
			document.title = PAGE_TITLE + ' - ' + $('productTitle').innerHTML;			
			if (CURRENT_LANG == 'en') {	
				addPageTrack('E-Shop - product ' + $('productTitle').innerHTML, $('productUrl').innerHTML); 
			} else { 
				addPageTrack('E-Boutique - produit ' + $('productTitle').innerHTML, $('productUrl').innerHTML); 
			}
			dhtmlHistory.add($('productHash').innerHTML, "showProduct('" + productRef + "',false);");
		}
	});
}

function getInternetExplorerVersion() {
    var rv = -1; // Return value assumes failure.
    if (navigator.appName == 'Microsoft Internet Explorer') {
        var ua = navigator.userAgent;
        var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua) != null)
            rv = parseFloat(RegExp.$1);
    }
    return rv;
}

function checkIE8() {
    var msg = 0;
    var ver = getInternetExplorerVersion();
    if (ver > -1) {
        if (ver >= 8.0)
            msg = 1;
    }
    return msg;
}


function preloadBrowsingImages() {
    if (checkIE8()){    /* Preloader does not work for IE8 > fix */
        $('boxContent').getElementsByClassName('productImageName').each(function(element) {
	   	   n = element.id;
	   	   var productId = n.substring(6, n.length);
	   	   $('product_' + productId).innerHTML = '<img src="' + element.innerHTML + '" />';
        });
        
    } else {
	   var productsPreloader = new Preloader();
	   $('boxContent').getElementsBySelector('div[class="productImageName"]').each(function(element) {
	   	   productsPreloader.add(element.innerHTML, element.id);
        });
	   productsPreloader.onGroupComplete = function(n) {
		  var listImages = this.getImagesByGroup(n);
		  var productId = n.substring(6, n.length);
		  for (i = 0; i < listImages.length; i++) {
		      $('product_' + productId).innerHTML = '<img src="' + listImages[i].src + '" />';
            }
	   };
	   productsPreloader.load();
	}
}

function showProductQuantity(productRef, sizeId) {
	new Ajax.Request(ABS_PATH + '/www/e-shop/products/show_product_quantities.php',	{
		parameters : { ref : productRef, size_id : sizeId },
		onComplete : function(transport) {
			$('boxProductSizesQty').innerHTML = transport.responseText;
			$('productAddToBasket').removeClassName('active');
			var form = $('formProductInfos');
			$(form['ref']).setValue(productRef);
			$(form['size_id']).setValue(sizeId);
			$(form['nb_products']).setValue('');
			if (!$('productQuantity')) {
				$('productAddToBasket').hide();
				$('productAddToWishList').hide();
			} else {
				$('productAddToBasket').show();
				$('productAddToWishList').show();
				if (sizeId == null) { $('productSizes').getElementsBySelector('span[class="active"]').each(function(element) { if (element.hasClassName('active'))	{ sizeId = element.id.substring(5, element.id.length); }});	}
				if (sizeId != null) { $('productQuantity').getElementsBySelector('span[class="active"]').each(function(element) {	if (element.hasClassName('active')) { setProductQuantity(productRef, sizeId, 1); }}); }
			}
		}
	});
}
function setProductQuantity(productRef, sizeId, iQuantity) {
	var form = $('formProductInfos');
	$(form['ref']).setValue(productRef);
	$(form['size_id']).setValue(sizeId);
	$(form['nb_products']).setValue(iQuantity);
	$('productQuantity').getElementsBySelector('span[class="active"]').each(function(element) { element.removeClassName('active'); });	
	$('quantity_' + iQuantity).addClassName('active');
	$('productAddToBasket').addClassName('active');
}
function addToBasket(productRef, sizeId, nbProducts) {
	if (productRef == null) {
		var form = $('formProductInfos');
		productRef = $(form['ref']).getValue();
		sizeId = $(form['size_id']).getValue();
		nbProducts = $(form['nb_products']).getValue();
	}
	new Ajax.Request(ABS_PATH + '/www/e-shop/basket/add_product.php', {
		parameters : { ref : productRef, size : sizeId, nb_products : nbProducts },
		onComplete : function(transport) { 
			if (transport.responseText == 'OK') { 
				showLastAddedIntoBasket(); 
				if (CURRENT_LANG == 'en') {	
					addPageTrack('E-Shop - add product', '/e-shop/add-product?ref=' + productRef + '&sizeId=' + sizeId + '&nbProducts=' + nbProducts); 
				} else { 
					addPageTrack('E-Boutique - ajout produit', '/fr/e-shop/add-product?ref=' + productRef + '&sizeId=' + sizeId + '&nbProducts=' + nbProducts); 
				}
			} else { 
				showFormErrors('productQuantity', transport.responseText) 
			} 
		}
	});	
}
var basketInfosExecuter = null;
var hideAccountOptions = false;
function showLastAddedIntoBasket() {
	if ($('accountSubMenu').visible()) { hideAccountOptions = true; $('accountSubMenu').hide(); } else { hideAccountOptions = false; }
	new Ajax.Request(ABS_PATH + '/www/e-shop/basket/show_last_added.php', {
		onComplete : function(transport) {
			if (transport.responseText == '') {	return;	}
			if (basketInfosExecuter != null) { basketInfosExecuter.stop();	}
			var oOffset = Position.cumulativeOffset($('optionMyBasket'));
			$('basketInfos').style.left = (oOffset[0] - 10) + 'px';
			$('basketInfos').style.top = (oOffset[1] + 15) + 'px';
			$('basketInfos').innerHTML = transport.responseText;
			$('basketInfos').onclick = function() { if (hideAccountOptions) { $('accountSubMenu').show(); } $(this).innerHTML = ''; $(this).hide(); }
			Effect.SlideDown('basketInfos', { duration : 0.5 });
			basketInfosExecuter = new PeriodicalExecuter(function(pe) { if (hideAccountOptions) { $('accountSubMenu').show(); } if ($('basketInfos').visible()) { Effect.SlideUp('basketInfos', { duration : 0.7 }); pe.stop();	}}, 8);
		}
	});
}
function addToWishList(productRef, sizeId) {
	if (productRef == null) {
		var form = $('formProductInfos');
		productRef = $(form['ref']).getValue();
		sizeId = $(form['size_id']).getValue();
	}
	new Ajax.Request(ABS_PATH + '/www/e-shop/wishlist/add_product.php', {
		parameters : { ref : productRef, size : sizeId },
		onComplete : function(transport) { 
			if (transport.responseText == 'OK') { 
				showLastAddedIntoWishlist(); 					
				if (CURRENT_LANG == 'en') {	
					addPageTrack('E-Shop - add to wishlist', '/wishlist/add-product?ref=' + productRef + '&sizeId=' + sizeId); 
				} else { 
					addPageTrack('E-Boutique - ajout wishlist', '/fr/wishlist/add-product?ref=' + productRef + '&sizeId=' + sizeId); 
				}
			} else { 
				showFormErrors('productQuantity', transport.responseText);
			}
		}
	});	
}
var wishListInfosExecuter = null;
function showLastAddedIntoWishlist() {
	if ($('accountSubMenu').visible()) { hideAccountOptions = true; $('accountSubMenu').hide(); } else { hideAccountOptions = false; }
	new Ajax.Request(ABS_PATH + '/www/e-shop/wishlist/show_last_added.php', {
		onComplete : function(transport) {
			if (transport.responseText == '') {	return;	}
			if (wishListInfosExecuter != null) { wishListInfosExecuter.stop();	}
			var oOffset = Position.cumulativeOffset($('optionMyBasket'));
			var leftPos = oOffset[0];
			var topPos  = oOffset[1];
			$('basketInfos').style.left = (leftPos - 10) + 'px';
			$('basketInfos').style.top = (topPos + 15) + 'px';
			$('basketInfos').innerHTML = transport.responseText;
			$('basketInfos').onclick = function() {  if (hideAccountOptions) { $('accountSubMenu').show(); } $(this).innerHTML = ''; $(this).hide(); }
			Effect.SlideDown('basketInfos', { duration : 0.7 });
			wishListInfosExecuter = new PeriodicalExecuter(function(pe) { if (hideAccountOptions) { $('accountSubMenu').show(); } if ($('basketInfos').visible()) { Effect.SlideUp('basketInfos', { duration : 0.7 }); pe.stop();	}}, 4);
		}
	});
}
function showProductView(viewId) {
	$('view0').removeClassName('active');
	$('view1').removeClassName('active');
	$('view2').removeClassName('active');
	$('viewZoom').removeClassName('active');
	if (viewId == 'zoom') {	$('imgViewZoom').show(); $('imgView0').hide(); $('imgView1').hide(); $('imgView2').hide(); $('viewZoom').addClassName('active'); return; }
	if (viewId == '0') { $('imgView0').show(); $('imgView1').hide(); $('imgView2').hide(); $('imgViewZoom').hide(); $('view0').addClassName('active'); return; }
	if (viewId == '1') { $('imgView1').show(); $('imgView0').hide(); $('imgView2').hide(); $('imgViewZoom').hide(); $('view1').addClassName('active'); return; }
	if (viewId == '2') { $('imgView2').show(); $('imgView0').hide(); $('imgView1').hide(); $('imgViewZoom').hide(); $('view2').addClassName('active'); return; }		
}
function activateMenuItems(categoryId, subCategoryId) {
	CURRENT_CAT = categoryId; 
	CURRENT_SUBCAT = subCategoryId;
	$('rootSubCategories').innerHTML = $('subCategories_' + CURRENT_CAT).innerHTML;
	activateCategory(CURRENT_CAT);
	activateSubCategory(CURRENT_SUBCAT);				
}
var sliderProducts; 
function initScrollBar(warnMoreProducts) {
	if (warnMoreProducts == null) {
		warnMoreProducts = false;
	}
	sliderProducts = new Control.Slider('listProductsHandle', 'listProductsTrack', {
		onSlide : function(v) 	{ scrollHorizontal(v, $('listProducts'), sliderProducts); },
		onChange : function(v) 	{ scrollHorizontal(v, $('listProducts'), sliderProducts); }
	});
	if ($('listProducts').scrollWidth <= $('listProducts').offsetWidth) {
		sliderProducts.setDisabled();
		$('listProductsTrack').hide();
		$('fakeProductsSlider').show();
	} else if (warnMoreProducts) {
		//return;
		//var offset = Position.page($('boxContent'));
		//var leftPos = $('boxContent').getWidth() - $('moreProducts').getWidth();
		//var boxHeight = ($('boxContent').getHeight() - $('listProductsTrack').getHeight() - 2) / 4;		
		//var topPos = offset[1] + ($('boxContent').getHeight() / 2) - (boxHeight / 2);
		//$('moreProducts').style.top = Math.round(topPos) + 'px';
		//$('moreProducts').style.left =  Math.round(leftPos) + 'px';
		//$('moreProducts').style.height = Math.round(boxHeight) + 'px';
	}
}
var currentSlideValue = 0;
function slideToRight() {
	sliderProducts.setValue(10);
	//scrollHorizontal($('listProducts').scrollLeft + 100, $('listProducts'), sliderProducts);
}
var autoSliderExecuter = null;
var autoSlideValue = 0;
var autoSlideTiming = 0;
function autoSlide() {
	autoSliderExecuter = new PeriodicalExecuter(function(pe) {
		if (autoSlideValue >= 100) {
			autoSliderExecuter.stop();
		}
		sliderProducts.setValue(autoSlideValue++ / 100); 
	}, 0.04);
}
function loadBottomContent() { $('boxContentBottom').show(); }
function hideBottomContent() { $('boxContentBottom').hide(); }
function scrollVertical(value, element, slider) { element.scrollTop = Math.round(value/slider.maximum*(element.scrollHeight-element.offsetHeight)); }
function scrollHorizontal(value, element, slider) {	element.scrollLeft = Math.round(value/slider.maximum*(element.scrollWidth-element.offsetWidth)); } 