/* QuickView Beta												*/
/* CONFIG: 														*/
/* you can also overwrite this value after including this js 	*/

var global_quickViewPath = "skins/skin_1/";
var global_quickViewButtonPath = global_quickViewPath + "images/button-5684.png";
var global_quickViewButtonBottomMargin = 10;
var global_quickViewWidth = 380;
var global_quickViewPDPTemplatePath = "PDPpopup.aspx";
var global_quickViewZoomImagePath = "";
var global_quickViewUseURLRewrite = false;

/********************************/
/* DO NOT MODIFY CODE BELOW     */
/********************************/

// set mouseenter/mouseleave event to quickviewEnabled class elements
$(document).ready(function() {
	initializeQuickview();
});

function initializeQuickview() {
	$(".quickViewButtonWrap").unbind();

	$(".quickviewEnabled").each(function() {
	    var parent = $(this).parent();
	    if (parent.hasClass("quickViewButtonWrap")) {
             parent.replaceWith($(this));
	    }
	    
	    var URLString = $(this).attr("href");

	    var buttonImageObj = new Image();
	    buttonImageObj.src = global_quickViewButtonPath;
	    var buttonImageHeight = buttonImageObj.height;

	    var imgObj = $("img", this);
	    var width = imgObj.width();
	    var Iheight = $(".quickimg").height();
	    var marginTop = $(".quickimg").height() - buttonImageHeight - global_quickViewButtonBottomMargin;
	    //alert(Iheight);
	    var style = "";
	    style = style + "width: 159px;";
	    style = style + "margin-top: 160px;";
	    style = style + "display: none;";
	    style = style + "z-index: 5;";
		
	    var wrap = '<span class="quickViewButtonWrap"></span>';
		
	    $(this).wrap(wrap);
		
	    //$(this).removeClass("quickviewEnabled");
		
	    var tags = '<a class="quickviewButton" style="' + style + '" onmousedown="openQuickViewWithURL(\'' + URLString + '\');"><img src="' + global_quickViewButtonPath + '" alt="Quick View" /></a>';
	    $(this).parent(".quickViewButtonWrap").prepend(tags);
	});
	
	$(".quickViewButtonWrap").bind("mouseenter", function() {
		$(this).children(".quickviewButton").css("display", "inline");
	}).bind("mouseleave", function() {
		$(this).children(".quickviewButton").css("display", "none");
	}).bind("mouseover", function() {
		$(this).children(".quickviewButton").css("display", "inline");
	}).bind("mouseout", function() {
		$(this).children(".quickviewButton").css("display", "none");
	})
}

function openQuickView(queryString) {
	closeQuickView();

	var tags = '<div id="quickview"><div id="quickview_top"></div><div id="quicview_middle"><div id="quickviewLoading"></div><div id="quickviewContent"></div></div><div id="quickview_bottom"><div id="quickview_bottomRight"></div></div></div>';
	$("body").prepend(tags);
	$("#quickviewLoading").css("display", "block");	
	var bodyWidth = $("body").width();
	var leftOffset = (bodyWidth - global_quickViewWidth) / 2;
	var topOffset = getViewpointTop() + ((getViewpointHeight() - $("#quickview").height()) / 2);		
	$("#quickview").css({ left: leftOffset, top: topOffset, width: global_quickViewWidth });			

	$("#quickviewContent").load(global_quickViewPDPTemplatePath,
		queryString,
		function (responseText, textStatus, XMLHttpRequest) {
			$("#quickviewLoading").css("display", "none");			
			if (textStatus != "success") {
				$("#quickview").remove();
				$("body").html(responseText);
				alert("There was problem loading Quick View for this product. Please try back again later.");
			}
			else {
				var topOffset = getViewpointTop() + ((getViewpointHeight() - $("#quickview").height()) / 2);
				$("#quickview").animate({top: topOffset}, function() {
					if (typeof(quickviewCallbackFunction) == "function")
						quickviewCallbackFunction();
					}
				);
			}
		}
	);
}

function openQuickViewWithURL(URLString) {
	//var queryString = (global_quickViewUseURLRewrite) ? getQueryStringFromURLForURLReWrite(URLString) : getQueryStringFromURL(URLString);
	var queryString = {};
	var sPageName = URLString.substr(URLString.lastIndexOf('/'));
	//alert(sPageName );
	sPageName = sPageName.substr(sPageName.indexOf('p-'));
	//alert(sPageName );
	sPageName = sPageName.substr(2);
	sPageName = sPageName.substr(0, sPageName.indexOf('-'));
	//alert(sPageName );
	if (!sPageName) return false;
	queryString["pid"] = sPageName;	
	openQuickView(queryString);
}

function closeQuickView() {
	$("#quickview").remove();
	initializeQuickview();
}

function quickViewZoom(args) {
	$("#quickviewContent").css("display", "none");	
	$("#quickviewLoading").css("display", "block");	
	$.post(global_quickViewZoomImagePath,
		args,
		function(data, textStatus) {
			$("#quickviewLoading").css("display", "none");	
			if (textStatus != "success") {
				alert("There was problem loading Zoom Image for this product. Please try back again later.");
				closeQuickViewZoomImage();				
			}
			else {
				var imageDiv = '<div id="quickViewZoomImage"><a href="javascript:closeQuickViewZoomImage()">' + data + '</a></div>';
				$("#quicview_middle").prepend(imageDiv);
			}
		}
	);
}

function closeQuickViewZoomImage() {
	$("#quickviewContent").css("display", "block");
	$("#quickViewZoomImage").remove();	
}

/* utility functions */

function getQueryStringFromURL(URLString) {
	var returnObject = {};
	var querystring = URLString.split("?")[1];
	
	// return empty object if there is no query string
	if (!querystring) return returnObject;
	
	// parse query string into object
	// TODO: we might need to check for &amp;
	var querystringArray = querystring.split("&");
	
	$.each(querystringArray, function(i) {
		var key = querystringArray[i].split("=")[0];
		var value = querystringArray[i].split("=")[1];
		
		if (key) returnObject[key] = value;
	});

	return returnObject;
}

function getQueryStringFromURLForURLReWrite(URLString) {
	var returnObject = {};
	
	// parse query string into object
	var querystringArray = URLString.split("/");
	
	$.each(querystringArray, function(i) {
		var key = querystringArray[i].split("--")[0];
		var value = querystringArray[i].split("--")[1];
		
		if (key) returnObject[key] = value;
	});

	return returnObject;
};

function getViewpointTop() {
	return window.pageYOffset || document.documentElement && document.documentElement.scrollTop || document.body.scrollTop;
}
function getViewpointHeight() {
	return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body.clientHeight;
}	