(function() {
	function showQuickView( params, brand ) {
		var className = "", openCb, closeCb;

		if (params.editId) {
			className += "editCartModal";
		}
		
		if (params.gwp) {
			className += " gwpModal";
		}
		
		if (params.hasOwnProperty("bundleCatId") && !params.gwp) {
			closeCb = function() {
				try {
					checkOrderMarkers(getBagBarData());
				} catch (e) {
					
				}
			};
		}
		
		setTimeout(function() {
			var qvModal = new Modal({
					id: "qvModal",
					className: className,
					width: 670,
					quickView: true,
					useAjax: true,
					url: "/" + (brand || jsContextRoot) + "/browse/product.jsp?inQuickView=true",
					ajaxData: params,
					ajaxCb: function() {
						var qvModalRef = qvModal.getModalDOM();
						// Prefer to use init but will require further testing since it runs resolveDuplicateModal 
						if (qvModalRef.find(".heroOn").length) {
							this.setConfig({width: 856});
						}
						// Test for bookmark page and transform size
						var bmLink = qvModalRef.find(".mBookmark_continueShopping");
						if (bmLink.length) {
							bmLink.bind("click.qv", function( evt ) {
								evt.preventDefault();
								qvModal.close();
							});
						}
					},
					openCb: openCb,
					closeCb: closeCb
				});
			qvModal.open();
		}, 0);
	}
	
	/*QUICK VIEW HOTNESS*/
	$(".js_qvLink").live("click", function( evt ) {
		evt.preventDefault();
		var link = $(this), //$(evt.target),
			href = "",
			brand;
			
		if (!link.is("a")) {
			link = link.closest("a");
		}
		href = link.attr("href");
		brand = /\/(\w+)\/browse\/product\.jsp/.exec(href);
		brand = brand && brand[1];
		
		showQuickView($.parseParams(href), brand);
	});

	/*THIS FUNCTION IS FOR THE FLASH TEAM TO LAUNCH QUICKVIEW*/

	window.showQuickView = function( prodData, brand, extendedProperties ) {
		if (!!extendedProperties) {
		  showQuickView(prodData, brand);
		}
		else {
		  showQuickView(( prodData.indexOf("cat") >= 0 ) ? {bundleCatId: prodData} : {productId: prodData} , brand);
		}
	};
})();
