jQuery.noConflict();
var $j = jQuery;

var zoom = {zoomed: false, normalSize: "400px", normalHeight: "", zoomSize: "2200px", zoomSpeed: 500, zoomFactor: 2.6};
var pan = {left: 0, top: 0, lowerX: 0, lowerY: 0, upperX: 2200, upperY: 1575, mouseDown: false, mouseStartX: 0, mouseStartY: 0, mouseStopX: 0, mouseStopY: 0, oldX: 0, oldY: 0};

function handleImageLoad() {
	if (typeof(originalImage) != "undefined") {
		theImage = $j("#image");

		zoom.normalSize = theImage.width();
		zoom.normalHeight = theImage.height();
		$j(".product-img-box").css("height", theImage.height());
		pan.upperX = (zoom.normalSize * zoom.zoomFactor) - zoom.normalSize;
		pan.upperY = (zoom.normalHeight * zoom.zoomFactor) - zoom.normalHeight;
		zoom.zoomSize = parseInt(originalImage.width) + "px";

		$j(".image-loading").fadeOut();

		zoom.zoomSize = (parseInt(theImage.width()) * zoom.zoomFactor) + "px";

		if (parseInt($j(".product-top-box").height()) < (parseInt(theImage.height()) + 20)) {
			$j(".product-top-box").css("height", (parseInt(theImage.height()) + 20) + "px");
		}
	}
}

$j(window).load(function() {
	handleImageLoad();
});

$j(document).ready(function() {
	$j("#image").load(handleImageLoad);

	$j('body:not(.product-gift-cards) .product-top-box .product-specs').jScrollPane();

	$j(".nice-scroll").jScrollPane();

	$j(".image-loading").fadeIn();

	$j(".share").click(function() {
		$j(".addthis_button").trigger("click");
	});

	function recurseToggle(ele) {
		if ($j(ele).attr("id") != "narrow-by-list") {
			return recurseToggle($j(ele).parent()) + 1;
		}
		return 0;
	}

	function alignToggle(ele) {
		$j("."+$j(ele).data("depth-class")).each(function() {
			if ($j(this).hasClass("toggle")) {
				$j(this).removeClass("toggle").parent().parent().parent().children("ul").slideUp();
			}
		});
		$j(ele).children("span").addClass("toggle").addClass("current");
/*
		parentdepthclass = $j(ele).data("parent-depth-class");

		if (parentdepthclass != "depth-2") {
			alignToggle($j("."+parentdepthclass).parent("a"));
		}
*/
	}

	$j("#narrow-by-list.catalog a").each(function() {
		depth = recurseToggle(this);
		parentdepth = parseInt(depth) - 1;
		$j(this).children("span").addClass("depth-" + depth);
		$j(this).children("span").each(function() {
			if ($j(this).parent().parent().parent().children("ul").css("display") == "block") {
				$j(this).addClass("toggle");
			}
		});
		$j(this).data("depth-class", "depth-" + depth);
		$j(this).data("parent-depth-class", "depth-" + parentdepth);
	}).click(function() {
		if ($j(this).children("span").hasClass("toggle")) {
			return false;
		}
		alignToggle(this);
		$j(this).parent().parent().children("ul").slideToggle();
		$j("span", $j(this).parent().parent().children("ul")).removeClass("toggle");
		$j("ul", $j(this).parent().parent().children("ul *")).slideUp();
	});

	if ((typeof(swatchList) != "undefined") && (swatchList != null)) {
		$j.each(swatchList, function(i) {
			$j(".product-swatch-box ul").append("<li><a href='#"+i+"' class='"+i+"'><img src='"+this.thumbnail+"' /></a></li>");
		});

		$j(".product-swatch-box ul li a").click(function() {
			$j(".image-loading").fadeIn();
			var product = swatchList[$j(this).attr("class")];
			$j(".small-image img").attr("src", product.small);
			$j(".product-img-box img").attr("src", product.base).css("width", zoom.normalSize);
			$j(".zoom-box").css("top", 0).css("left", 0);
			$j("h3.product-name").text(product.name);
			$j("#image").attr("title", product.name);
			$j(".small-image img").attr("title", product.name);
			$j("#product_addtocart_form").attr("action", product.addtocart);
			$j(".add-to-box a.wishlist").attr("href", product.addtowishlist);
			$j("a.sendfriend").attr("href", product.sendtofriend);

			$j(".price-box").html(product.price);

			$j(".product-bottom-box").css("height", $j(".product-bottom-box").height());
			$j(".description-wrapper, .presented-in-wrapper, .related-items-wrapper").fadeOut();
			$j(".add-to-cart-holder").fadeOut();

			$j.get("/magento/swatch/view/get/id/" + product.id + "/template/view,addtocart/block/view/", function(data) {
				$j(".add-to-cart-holder").html(data).fadeIn();
			}, "html");

//			$j("fieldset.add-to-cart-box").html(product.addtocarthtml).fadeIn();

			$j(".description-wrapper").html(product.description).fadeIn();
			$j(".product-bottom-box").css("height", "auto");
/*			$j.get("/magento/swatch/view/attribute/id/" + product.id + "/action/getDescription/", function(data) {
				$j(".description-wrapper").html(data).fadeIn(function() {
					$j(".product-bottom-box").css("height", "auto");
				});
			}, "html");
*/
			$j.get("/magento/swatch/view/get/id/" + product.id + "/template/view,presentedin/block/view/", function(data) {
				$j(".presented-in-wrapper").html(data).fadeIn();
			}, "html");
			$j.get("/magento/swatch/view/get/id/" + product.id + "/template/list,related/", function(data) {
				$j(".related-items-wrapper").html(data).fadeIn();
			}, "html");
			zoom.zoomed = false;
		});

		swatchLength = swatchList.length;
		swatchPageLength = 8;
		swatchCurrentPage = 0;
		swatchCssLeft = parseInt($j(".product-swatch-box ul").css("left"));
//		swatchCssWidth = swatchPageLength * $j(".product-swatch-box ul li").width();
		swatchCssWidth = swatchPageLength * 45;

		$j(".product-swatch-box a.previous").click(function() {
			if (swatchCurrentPage == 0) {
				return false;
			}
			swatchCurrentPage--;
			swatchCssLeft += swatchCssWidth;
			swatchUpdate();
		});

		$j(".product-swatch-box a.next").click(function() {
			if (swatchCurrentPage >= (swatchLength / swatchPageLength) - 1) {
				return false;
			}
			swatchCurrentPage++;
			swatchCssLeft -= swatchCssWidth;
			swatchUpdate();
		});

		function swatchUpdate() {
			$j(".product-swatch-box ul").animate({left: swatchCssLeft + "px"}, 1000);
		}
		/* URL keeping */
		var hash = window.location.hash;
		if (hash != "") {
			$j(".product-swatch-box ul li a."+hash.substring(1)).trigger("click");
		}
	}

	/* Link Boldening */
	var current_url = window.location;
	$j("body.cms-page-view #narrow-by-list a, #narrow-by-list ul.attribute-list a").each(function() {
		var link_url = $j(this).attr("href");
		if (link_url == current_url) {
			$j(this).children("span").css("font-weight", "bold");
		}
	});

	$j("#image").dblclick(function(e) {
		if (zoom.zoomed == false) {
			clickX = e.clientX - $j(".product-img-box").offset().left;
			clickY = e.clientY - $j(".product-img-box").offset().top;

			percentX = clickX / zoom.normalSize;
			percentY = clickY / zoom.normalHeight;

			clickX = (zoom.zoomFactor * zoom.normalSize / 2) - (zoom.normalSize / 2);
			clickY = (zoom.zoomFactor * zoom.normalHeight /2) - (zoom.normalHeight / 2);

			clickX *= -1;
			clickY *= -1;

			$j("#image").animate({width: zoom.zoomSize}, zoom.zoomSpeed);
			$j(".zoom-box").animate({left: clickX + "px", top: clickY + "px"}, zoom.zoomSpeed);

			pan.left = clickX; 
			pan.top = clickY;
			zoom.zoomed = true;
		} else {
			$j("#image").animate({width: zoom.normalSize}, zoom.zoomSpeed);
			$j(".zoom-box").animate({left: 0, top: 0}, zoom.zoomSpeed);
			zoom.zoomed = false;
		}
	});
	$j(".product-img-box").mousedown(function(e) {
		e.preventDefault();
		pan.mouseDown = true;
	}).mouseup(function(e) {
		e.preventDefault();
		pan.mouseDown = false;
	}).hover(function() {
		$j(".product-img-box span").text("double click to zoom");
	}, function() {
		$j(".product-img-box span").text("zoom");
		pan.mouseDown = false;
	});
	$j(document.body).mousemove(function(e) {
		e.preventDefault();

		deltaX = pan.oldX - e.clientX;
		deltaY = pan.oldY - e.clientY;
		pan.oldX = e.clientX;
		pan.oldY = e.clientY;

		if (zoom.zoomed && pan.mouseDown) {
			pan.left = pan.left - deltaX;
			pan.top = pan.top - deltaY;

			if (-pan.left < pan.lowerX) {
				pan.left = -pan.lowerX;
			} else if (-pan.left > pan.upperX) {
				pan.left = -pan.upperX;
			}

			if (-pan.top < pan.lowerY) {
				pan.top = -pan.lowerY;
			} else if (-pan.top > pan.upperY) {
				pan.top = -pan.upperY;
			}

			$j(".zoom-box").css("left", pan.left + "px").css("top", pan.top + "px");
		}
	});
	$j("#image").livequery(function() {
	});
});

