bb.page.mpp = {};

var franchiseCategories = ["CAT1000002005","CAT1000002004","CAT1000002002","CAT1000002001","CAT1000002003","CAT1000002000","CAT1000002006","CAT1000002007","CAT1000002008","CAT1000002009","CAT1000002010","CAT1000002011","CAT1000002016","CAT1000002000","CAT22793","CAT22957","CAT22760","CAT21935","CAT21925","CAT21923","CAT21926","CAT21939","CAT21922","CAT21938","CAT21941","CAT21937","CAT22757","CAT21964","CAT21936", "CAT21968","CAT22009","CAT22082","CAT22081","CAT23595","CAT1000002019","CAT1000002020","CAT1000002021","CAT1000002022","CAT1000002028","CAT1000002045","CAT1000002046","CAT1000003014","CAT1000003029","CAT1000003030","CAT1000003032","CAT1000003033","CAT1000003034","CAT1000003035","CAT1000003036","CAT1000003037","CAT1000003038","CAT1000003039","CAT1000003042","CAT1000003043","CAT1000003048","CAT1000003049","CAT1000003050","CAT1000003051","CAT1000003052","CAT1000003053","CAT1000003058","CAT1000003059","CAT1000003060","CAT1000003061","CAT1000003063","CAT1000003064","CAT1000003065","CAT1000003066","CAT1000003067","CAT1000003069"];

bb.page.mpp.headerImageLinks = {
	CAT1000002021: [{
		top  :	235,
		left  : 140,
		width : 171,
		height: 22,
		href  : "/learn/video.tmpl?video=G09_chrome"
	}]
};

document.observe("dom:loaded", function() {
    bb.page.mpp.init();
});

bb.page.mpp.init = function() {
    var rawProductData = bb.page.mpp.categoryData[0];
    var mergedProductData = bb.productData.mergeSkusIntoProducts(rawProductData.product, rawProductData.sku);
	
	// sets the proper category in global nav to on
	bb.page.setGlobalCat(bb.page.global_cat);
	
	var isFranchise = false;
	
	//runs through franchise array to check if cat is a franchise cat
	franchiseCategories.each(function(i) {
  		if (bb.page.categoryID == i) {
			isFranchise = true;	
		} 
	});
	
	//if it is a franchise page, display franchise format.  if not, display regular format
	if (isFranchise) {
		bb.page.mpp.franchise(mergedProductData);
	} else {
		bb.page.mpp.renderPage(mergedProductData);
	}
};

bb.page.mpp.renderPage = function(mergedProductData) {
    
	var productDataArray = bb.page.mpp.sortProducts(mergedProductData);
	
	$$(".franchise_area")[0].setStyle({display:"none"});
    var containerNode = $$(".whatsnew-area")[0];
    var rowOuterContainer = $$(".products_block")[0];
    var rowInnerContainer = new Element ("div", {"class":"content products"});
    rowOuterContainer.insert(rowInnerContainer);
     productDataArray = productDataArray.findAll(function(productData) {
         return bb.productData.isProductShoppable(productData);
     });

    // iterate through the products in the category
    productDataArray.each(function(productData, idx) {
        if (idx > 2) {
            if ( (idx + 1) % 4 === 0 ) {
//                rowInnerContainer.style.visibility = "visible";
                rowOuterContainer = new Element ("div", {"class":"whatsnew-block", style:"visibility:hidden"});
                rowInnerContainer = new Element ("div", {"class":"content products"});
                rowOuterContainer.insert(rowInnerContainer);
                containerNode.insert(rowOuterContainer);
            }
        }

        bb.page.mpp.loadProducts (productData,rowInnerContainer);   
    }); // end iterating through products 
    //
    // display category-specific Quote image
    if (bb.page.categoryID && bb.page.categoryID.length > 0) {
        var quoteContainerNode = $$("div.products_area div.quote")[0];
        if (quoteContainerNode) {
            var categoryIDnumber = bb.page.categoryID.substring(3, bb.page.categoryID.length);
            var imgSrc = "/images/products/quotes/" + categoryIDnumber + ".gif";
            var img = new Element("img", {src: imgSrc} );
            quoteContainerNode.update(img);
        }
    }
	
	bb.page.mpp.displayProducts();
};


bb.page.mpp.franchise = function(mergedProductData) {
    
	var productDataArray = bb.page.mpp.sortProducts(mergedProductData);
    
	var containerNode = $$(".whatsnew-area")[0];
	var rowOuterContainer = null;
	var rowInnerContainer = null;
	
    productDataArray = productDataArray.findAll(function(productData) {
        return bb.productData.isProductShoppable(productData);
    });
	
    // iterate through the products in the category
    productDataArray.each(function(productData, idx) {
            if (idx % 4 === 0) {
//                rowInnerContainer.style.visibility = "visible";
                rowOuterContainer = new Element ("div", {"class":"whatsnew-block", style:"visibility:hidden"});
				
                rowInnerContainer = new Element ("div", {"class":"content products"});
				
				// on first pass, insert the header container
				if (idx < 4) {
					headerContainer = new Element ("div", {"class":"header-block"});
					rowInnerContainer.insert(headerContainer);
				}
				
                rowOuterContainer.insert(rowInnerContainer);
                containerNode.insert(rowOuterContainer);
            }

        bb.page.mpp.loadProducts (productData,rowInnerContainer);
    }); // end iterating through products 
    //
    // display category-specific Quote and header image
    if (bb.page.categoryID && bb.page.categoryID.length > 0) {
		$$("div.products_area div.quote")[0].setStyle({display:"none"});
		$$(".products_area")[0].setStyle({background:"none",margin:"0",padding:"0"});
        var franchiseContainerNode = $$(".franchise_area")[0];
        var categoryIDnumber = bb.page.categoryID.substring(3, bb.page.categoryID.length);
        
        if (franchiseContainerNode) {
            var imgSrc = "/images/products/collections/imgs/" + categoryIDnumber + ".jpg";
            var img = new Element("img", {src: imgSrc} );
            franchiseContainerNode.update(img);

			var linksArray = bb.page.mpp.headerImageLinks[bb.page.categoryID];
			if (linksArray) {
				linksArray.each( function(linkObj) {
					var styleString = "top:" + linkObj.top + "px; left:" + linkObj.left + "px;";
					var linkEle = new Element("a", {
						href   : linkObj.href,
						"style": styleString,
						"class": "franchise-image-link"
					});
					styleString = "width:" + linkObj.width + "px; height:" + linkObj.height + "px;";
					var imgEle = new Element("img", {
						src    : "/images/global/transparent.gif",
						"style": styleString
					});
		            franchiseContainerNode.insert(linkEle);
		            linkEle.update(imgEle);
				});
			}
        }
		
		var franchiseHeaderNode = $$(".header-block")[0];
		if (franchiseHeaderNode) {			
			var categoryDisplayName = bb.page.categoryName;
            var imgSrc = "/images/products/collections/headers/" + categoryIDnumber + ".gif";
            var img = new Element("img", {src: imgSrc} );
            franchiseHeaderNode.update(img);
		}
    }
	
	bb.page.mpp.displayProducts();
};

bb.page.mpp.sortProducts = function(mergedProductData) {
	var productDataArray = mergedProductData;
    // sort the products
    productDataArray = productDataArray.sortBy(function(productData){
//		console.log(productData.DISPLAY_ORDER)
        return productData.DISPLAY_ORDER;
    });
    /*Commented out since Display Order will only determine the order
	productDataArray = productDataArray.sortBy(function(productData){
        return bb.productData.isNew(productData);
    });
    productDataArray = productDataArray.sortBy(function(productData){
        return bb.productData.isAwardWinning(productData);
    });*/
	
	return productDataArray;
}

bb.page.mpp.loadProducts = function(productData,rowInnerContainer) {
	productData.priceString = bb.productData.formatPriceRange(productData);

//        productData.url = "/templates/products/spp/index.tmpl?PRODUCT_ID=" + productData.PRODUCT_ID;
//        if (bb.page.categoryID.length > 0) {
//            productData.url += "&CATEGORY_ID=" + bb.page.categoryID;
//        }

        productData.url = bb.productData.convertProductURL(productData.url);
        productData.description = bb.productData.truncateDescription(productData.DESCRIPTION, productData.url);
        
        productData.imagePath = bb.page.PRODUCT_IMG_PATH + productData.IMAGE_NAME + "_m.jpg";

        //console.log(bb.page.categoryID);
        addMppTag(productData.PRODUCT_ID,productData.PRODUCT_NAME,bb.page.categoryID);
		  
        var templt_args = { url_domain : window.URL_DOMAIN };
        
        templt_args.ratingReviewString = productData.TOTAL_REVIEW_COUNT > 1 ? 'Reviews' : 'Review';
        templt_args.ratingDisplay = typeof productData.AVERAGE_RATING == 'number' && isFinite(productData.AVERAGE_RATING) ? 'block' : 'none';
        templt_args.ratingRounded = Math.round(productData.AVERAGE_RATING*10)/10;
		  
        Object.extend(productData, templt_args);
		
        bb.templateFactory.get("product-thumb",false,"tmpl").evaluateCallback({
            object: productData,
            callback: function(container, productData, html) {
                var wrapperNode = new Element("div");
                container.insert(wrapperNode);
                wrapperNode.insert(html);

                var callOutNode = wrapperNode.select(".callout")[0];
                
                bb.productData.setCallOut(callOutNode,productData);
                				
                var quickshopLinkNode = wrapperNode.select("a.open-product-1")[0];
                bb.page.productView.initQuickshopLink(quickshopLinkNode, productData);
                var parentContainerNode = container.parentNode;
                $(parentContainerNode).setStyle({visibility :"visible"});
			
            }.curry(rowInnerContainer, productData)
        });
};

bb.page.mpp.displayProducts = function() {
	//once products are loaded, the following divs are showing
	$$(".loading-container")[0].style.display = "none";
    var productAreaArray = [$$(".products_area")[0], $$(".whatsnew-area")[0], $$(".sec_content")[0], $$(".products_container")[0]];
	productAreaArray.each(function(s) {
		s.setStyle({display :"block"});
	});
}
