﻿if (window.ProductSlider == undefined || window.ProductSlider == null) {
	window.ProductSlider = {};
}

ProductSlider.Init = function (id, productsShown) {
    var parent = $(id);
    var container = parent.select(".product-slider-product-container")[0];
    var slider = container.select(".product-slider-products")[0];
    var sliderID = id + "-Slider";

    var products = slider.select(".product");
    var productWidth = 0;
    var sliderWidth = 0;

    if (products.length > 0) {
        var product = products[0];

        productWidth += product.getWidth();
        /*productWidth += parseInt(product.getStyle("margin-left"));
        productWidth += parseInt(product.getStyle("margin-right"));*/
        console.log(productWidth);

        sliderWidth = productWidth * products.length;

        slider.id = sliderID;
        slider.setStyle({ "width": sliderWidth + "px", "marginLeft": 0 + "px" });

        var left = parent.select(".left")[0];
        var right = parent.select(".right")[0];

        left.observe("click", function () { ProductSlider.Move(sliderID, productsShown, 1, productWidth, sliderWidth); });
        right.observe("click", function () { ProductSlider.Move(sliderID, productsShown, -1, productWidth, sliderWidth); });
    }
};

ProductSlider.Move = function (sliderID, productsShown, increment, productWidth, sliderWidth) {
	var locker = $(sliderID);

	if (locker.Locked) {
	} else {
		locker.Locked = true;

		var slider = jQuery("#" + sliderID);
		var margin = parseInt(slider.css("margin-left"));

		var newMargin = (increment < 0 ? margin - productWidth : margin + productWidth);
		var isValid = false;

		if (increment < 0 && newMargin >= (sliderWidth - (productWidth * productsShown)) * -1) {
			isValid = true;
		} else if (increment > 0 && newMargin <= 0) {
			isValid = true;
		}

		if (isValid) {
			slider.animate(
					{ marginLeft: newMargin },
					200,
					function () {
						locker.Locked = false;
						locker = null;
					}
				);

		} else {
			locker.Locked = false;
		}
	}
};
