function QuickLookLoader(){var dataFetched=false;var quickLookData;var quickLookImages;var quickLookMorpher;var quickLookProduct;var quickLookDropDown;var quickLookX;var quickLookY;this.initialize=function(){this.quickLookMorpher=new Fx.Morph("quicklook_pop",{duration:100,transition:Fx.Transitions.Sine.easeOut});this.quickLookProduct=new QuickLookCartAdd();this.quickLookProduct.initialize();this.quickLookDropDown=new DropDownMenu();this.initializeButtonActions();this.quickLookImages=new Array()};this.processAddToCart=function(cartId){if(this.quickLookProduct.addProductToCart(cartId)){this.hideQuickLookWindowDelay()}};this.hideQuickLookWindow=function(){this.quickLookMorpher.start({display:"none",opacity:0})};this.hideQuickLookWindowDelay=function(){quickLookLoader=this;setTimeout(function(){$("quicklook_pop").setStyle("display","none")},1000)};this.initializeQuickLookButtons=function(){quickLookLoader=this;$$(".quicklookable").each(function(product){product.addEvent("mouseover",function(e){var element=product.getElement("div.quick-look-btn");if(element!=null){element.setStyle("display","block");quickLookLoader.quickLookX=product.offsetLeft;quickLookLoader.quickLookY=product.offsetTop}});product.addEvent("mouseout",function(e){var element=product.getElement("div.quick-look-btn");if(element!=null){element.setStyle("display","none")}})})};this.initializeButtonActions=function(){quickLookLoader=this;$$(".quick-look-btn").each(function(qlButton){qlButton.addEvent("mouseover",function(e){qlButton.setStyle("backgroundPosition","0px -59px")});qlButton.addEvent("mouseout",function(e){qlButton.setStyle("backgroundPosition","0px -36px")});qlButton.addEvent("click",function(e){productId=qlButton.get("rel");quickLookLoader.loadQuickLook(productId);FoodoroAnalytics.trackEvent("Quicklook","WindowOpen")})});$("close-btn-ql").addEvent("mouseover",function(e){$("close-btn-ql").setStyle("backgroundPosition","0px -18px")});$("close-btn-ql").addEvent("mouseout",function(e){$("close-btn-ql").setStyle("backgroundPosition","0px 0px")});$("close-btn-ql").addEvent("click",function(e){quickLookLoader.hideQuickLookWindow()})};this.fetchQuickLookData=function(productIdsCSV){quickLookLoader=this;if(productIdsCSV>=""){var req=new Request({method:"get",url:"index4.php?ts="+new Date().getTime(),data:{func:"getproductquicklook",ajaxResponse:"true",no_session:true,product_ids:productIdsCSV},onComplete:function(response){quickLookLoader.processFetchedQuickLookData(response)}}).send()}};this.processFetchedQuickLookData=function(response){var result=eval("("+response+")");var params=result.return_values;this.quickLookData=params.quicklooks;this.preloadImages();this.dataFetched=true;this.initializeQuickLookButtons();FoodoroAnalytics.trackEvent("Quicklook","Load","")};this.preloadImages=function(){if(document.images){for(var id in this.quickLookData){var qlData=this.quickLookData[id];var image=qlData.quickLookImage;if(qlData!=null){this.quickLookImages[id]=new Image();this.quickLookImages[id].src=image.imageURL}}}};this.loadQuickLook=function(productId){if(this.dataFetched){var quickLook=this.quickLookData[productId];if(quickLook!=null){var quickLookLoader=this;this.quickLookMorpher.start({display:"none",opacity:0}).chain(function(){quickLookLoader.loadQuickLookProduct(quickLook);this.start({display:"block",opacity:1})})}}};this.loadQuickLookProduct=function(quickLook){var product=quickLook.product;var productInfo=quickLook.productInfo;var image=quickLook.quickLookImage;var review=quickLook.quickLookReview;var estimatedShipDate=quickLook.estimatedShipDate;var importantNotice=quickLook.importantNotice;var promotionalNotes=quickLook.promotionalNotes;this.quickLookProduct.setProductDetails(productInfo);$("quicklook_pop").setStyle("left",this.quickLookX-110);$("quicklook_pop").setStyle("top",this.quickLookY-90);$("ql-header-product-name").innerHTML="<a href='"+product.productURL+"'>"+product.productName+"</a>";$("ql-product-desc").innerHTML=product.productDesc;if(estimatedShipDate!=null&&estimatedShipDate!=""){$("ql-shipping-note-estimation").innerHTML='Est. ship date: <span class="estimated-date">'+estimatedShipDate+"</span><br/>"}$("ql-foodmaker-name").innerHTML='from <a href="'+product.vendorURL+'">'+product.vendorStoreName+"</a>";this.setProductInfo(product,image);this.loadProductCart(product,productInfo);this.loadProductImage(product,image);this.loadProductReview(product,review);this.loadProductNotes(importantNotice,promotionalNotes);this.quickLookProduct.updateProductInfo(0);this.quickLookProduct.cartValidator.initialize("ql-dropdown-menu-title","ql-cart_product_quantity","ql-add-to-cart-error");this.quickLookDropDown.initialize("ql-drop-down-menu-items-wrapper","ql-drop-down-header")};this.setProductInfo=function(product,productImage){var productId=product.productId;var productName=product.productName;var productURL=product.productURL;var productPrice=product.productPrice;var productThumb=productImage.imageThumbURL;var vendorId=product.vendorId;$("ql-cart_product_name").set("value",productName);$("ql-cart_product_price").set("value",productPrice);$("ql-cart_product_thumb").set("value",productThumb);$("ql-cart_product_url").set("value",productURL);$("ql-cart_product_id").set("value",productId);$("ql-vendor_id").set("value",vendorId)};this.loadProductCart=function(product,productInfo){if(productInfo!=null){var num_children=productInfo[0]["num_children"];if(num_children>0){this.setDropdownCartForm(product,productInfo)}else{this.setCartForm(product,productInfo)}}};this.setDropdownCartForm=function(product,productInfo){var num_in_stock=productInfo[0]["num_in_stock"];var min_price=productInfo[0]["min_price"];var max_price=productInfo[0]["max_price"];var orig_min_price=productInfo[0]["orig_min_price"];var orig_max_price=productInfo[0]["orig_max_price"];var on_sale=productInfo[0]["on_sale"];var display_price=productInfo[0]["display_price"];var display_orig_price=productInfo[0]["display_orig_price"];var price=productInfo[0]["price"];$("ql-cart_product_id").set("value",0);var dropdownwidth=this.getDropDownWidth(product,productInfo);var cartFormHTML='<div id="ql-option-wrapper">';cartFormHTML+='<div id="ql-dropdown-menu" class="dropdown-menu" onmouseover="quickLookLoader.quickLookDropDown.setMouseOutside(false);" onmouseout="quickLookLoader.quickLookDropDown.setMouseOutside(true);">';cartFormHTML+='<span id="ql-dropdown-menu-title" onclick="quickLookLoader.quickLookDropDown.toggledropdownmenu()">';cartFormHTML+='<span id="ql-drop-down-header" class="dropdown-menu-wrapper" >select an option</span>';cartFormHTML+='<span class="dropdown-menu-arrow" >&nbsp;</span>';cartFormHTML+="</span>";cartFormHTML+='<div id="ql-drop-down-menu-items" >';cartFormHTML+='<div id="ql-drop-down-menu-items-wrapper" style="display:none;">';cartFormHTML+='<ul class="drop-down-items" style="width:'+dropdownwidth+'em;">';var productID=product.productId;var children=this.getChildrenOrdered(productID,productInfo);for(var index=0;index<children.length;index++){var childProduct=children[index];var id=childProduct.id;var oos=childProduct.num_in_stock==null||childProduct.num_in_stock==0;var onSale=childProduct.on_sale;var origDisplayPrice=childProduct.display_orig_price;var saleStyle=onSale?"sale-price":"";var childProductName=childProduct.option_name;var childPrice=childProduct.display_price;var saleText=onSale?"(<font class='sale-orig-price'>"+origDisplayPrice+"</font>)":"";var displayText="<font class='emph "+saleStyle+"'>"+childPrice+"</font> "+saleText+" &ndash; "+childProductName;var dropdownDisplayText="<b>"+childPrice+"</b> &ndash; "+childProductName;var displayText2=oos?" (Out of Stock) ":"";cartFormHTML+="<li onmouseover=\"this.style.backgroundColor='#FBCC99';\" onmouseout=\"this.style.backgroundColor='white';\"";if(!oos){cartFormHTML+='onclick="quickLookLoader.quickLookProduct.updateProductInfo('+id+");quickLookLoader.quickLookDropDown.updatedropdowntitle('"+dropdownDisplayText.replace("'","'")+"');quickLookLoader.quickLookDropDown.closedropdownmenu();return false;\""}cartFormHTML+="><a><span";if(oos){cartFormHTML+=' class="drop-down-out-of-stock" '}cartFormHTML+=">"+displayText+displayText2+"</span></a></li>"}cartFormHTML+="</ul></div></div></div>";cartFormHTML+='<div id="ql-product-quantity-short">';cartFormHTML+='<div class="quantity-label">Quantity</div>';cartFormHTML+='<input class="quantity-text" type="text" size="6" value="1" maxlength="6" id="ql-cart_product_quantity" name="quantity"/></div>';$("info-dropdown-wrapper").innerHTML=cartFormHTML};this.getChildrenOrdered=function(productID,productInfo){var children=new Array();for(var id in productInfo){if(id>0&&id!=productID){var childProduct=productInfo[id];children[childProduct.index]=childProduct}}return children};this.getDropDownWidth=function(product,productInfo){var maxChars=31;var productID=product.productId;for(var id in productInfo){if(id>0&&id!=productID){var childProduct=productInfo[id];var price=childProduct.display_price;var origPrice=childProduct.display_orig_price;var displayText=childProduct.option_name+" ("+price+")";var onSale=childProduct.on_sale;var numInStock=childProduct.num_in_stock;if(onSale){displayText+=" ("+origPrice+")"}var textLen=displayText.length;if(numInStock==0){textLen+=16}if(textLen>maxChars){maxChars=textLen}}}return maxChars/2+1};this.setCartForm=function(product,productInfo){var cartFormHTML='<div id="ql-product-quantity-long">';cartFormHTML+='<div class="quantity-label">Quantity</div>';cartFormHTML+='<input class="quantity-text" type="text" size="6" value="1" maxlength="6" id="ql-cart_product_quantity" name="quantity"/>';cartFormHTML+="</div>";$("info-dropdown-wrapper").innerHTML=cartFormHTML};this.loadProductImage=function(product,productImage){var imageURL=productImage.imageURL;var imageThumbURL=productImage.imageThumbURL;var imageWidth=productImage.imageWidth;var imageHeight=productImage.imageHeight;var productURL=product.productURL;$("ql-product-image").innerHTML="<a href='"+productURL+" '><img border='0' src='"+imageURL+"' style='width:"+imageWidth+"px!important;height:"+imageHeight+"px!important;'/></a>"};this.loadProductNotes=function(importantNotice,promotionalNotes){var productNoteHTML="";if(importantNotice!=null){productNoteHTML+=this.getNoteHTML(importantNotice)}if(promotionalNotes!=null){for(i=0;i<promotionalNotes.length;i++){productNoteHTML+=this.getNoteHTML(promotionalNotes[i])}}$("ql-notes-wrapper").innerHTML=productNoteHTML};this.getNoteHTML=function(note){var noteDesc=note.note_description;var noteTextColor=note.note_text_color;var noteBGColor=note.note_background_color;var noteHTML="<div class='primary-shipping-note' style='background-color:#"+noteBGColor+"!important;color:#"+noteTextColor+"!important'>"+note.note_description+"</div>";return noteHTML};this.loadProductReview=function(product,review){var reviewCount=review.reviewCount;var score=review.score;var productURL=product.productURL;$("ql-review-rating").innerHTML="";if(reviewCount!=null&&score!=null){var fullStars=Math.floor(score);var hasHalfStar=score-fullStars>0;if(hasHalfStar){emptyStars=4-fullStars}else{emptyStars=5-fullStars}var reviewHTML="";for(i=0;i<fullStars;i++){reviewHTML+="<div id='review-fullstar-small'></div>"}if(hasHalfStar){reviewHTML+="<div id='review-halfstar-small'></div>"}for(i=0;i<emptyStars;i++){reviewHTML+="<div id='review-emptystar-small'></div>"}reviewHTML+="<a href='"+productURL+"#product-customer-reviews '>("+reviewCount+" customers)</a>";$("ql-review-rating").innerHTML=reviewHTML}};this.printProductDetails=function(productId){}}function QuickLookCartAdd(){var cartValidator;var productDetails;this.initialize=function(){this.setCartValidator(new CartValidator())};this.setCartValidator=function(cartValidator){this.cartValidator=cartValidator};this.setProductDetails=function(productInfo){this.productDetails=productInfo};this.setProductPrice=function(price,ship_price){document.getElementById("ql-product_price").innerHTML=price};this.setProductPriceRange=function(minPrice,maxPrice,ship_price){document.getElementById("ql-product_price").innerHTML="<span>"+minPrice+"</span><span class='to-value'>-</span><span>"+maxPrice+"</span>"};this.setProductSalePrice=function(price,orig_price){document.getElementById("ql-product_price").innerHTML="<span class='sale-price'>"+price+"</span><span class='orig-price'><font class='sale-price'>&nbsp;&nbsp;SALE!</font>&nbsp;<font class='sale-orig-price'>"+orig_price+"</font></span>"};this.setProductSalePriceRange=function(minPrice,maxPrice,origMinPrice,origMaxPrice){document.getElementById("ql-product_price").innerHTML="<span class='sale-price'>"+minPrice+"</span><span class='to-value sale-price'>-</span><span class='sale-price'>"+maxPrice+"</span>";document.getElementById("ql-product_price").innerHTML+="<span class='orig-price orig-price-range'><font class='sale-price'>SALE!</font> &nbsp;<font class='sale-orig-price'>"+origMinPrice+" - "+origMaxPrice+"</font></span>"};this.updateProductInfo=function(id){if(this.productDetails[id]){this.cartValidator.productPageUnhighlightDropdown();if(this.productDetails[id].on_sale){if(this.productDetails[id].min_price&&this.productDetails[id].max_price&&this.productDetails[id].min_price!=this.productDetails[id].max_price){this.setProductSalePriceRange(this.productDetails[id].min_price,this.productDetails[id].max_price,this.productDetails[id].orig_min_price,this.productDetails[id].orig_max_price)}else{this.setProductSalePrice(this.productDetails[id].display_price,this.productDetails[id].display_orig_price);$("ql-cart_product_price").set("value",this.productDetails[id].price);$("ql-cart_option_name").set("value",this.productDetails[id].option_name)}}else{if(this.productDetails[id].min_price&&this.productDetails[id].max_price&&this.productDetails[id].min_price!=this.productDetails[id].max_price){this.setProductPriceRange(this.productDetails[id].min_price,this.productDetails[id].max_price,this.productDetails[id].shipping_price)}else{this.setProductPrice(this.productDetails[id].display_price,this.productDetails[id].shipping_price);$("ql-cart_product_price").set("value",this.productDetails[id].price);$("ql-cart_option_name").set("value",this.productDetails[id].option_name)}}}if(document.addtocart&&id>0){document.addtocart.product_id.value=id}};this.setCartItemAdded=function(success){if(success==true){var productName=$("ql-cart_product_name").get("value");var productPrice=$("ql-cart_product_price").get("value");var productOptionName=$("ql-cart_option_name").get("value");var productURL=$("ql-cart_product_url").get("value");var productThumbURL=$("ql-cart_product_thumb").get("value");var productQuantity=$("ql-cart_product_quantity").get("value");foodoroCartPreview.setCartInfoInPreview(productName,productPrice,productOptionName,productURL,productThumbURL,productQuantity)}else{$("ql-new-product-added-to-cart").innerHTML=""}};this.addProductToCart=function(formId){formCartAdd=document.getElementById(formId);var productQuantity=$("ql-cart_product_quantity").get("value");var productId=$("ql-cart_product_id").get("value");if(!this.cartValidator.productCartValidateInput(productQuantity,productId)){return false}quickLookCart=this;var callback=function(responseText){var result=eval("("+responseText+")");var success=result.success;var numItems=result.params["numItems"];var subtotal=result.params["totalValue"];var errorMessage=result.error_message;var successMessage=result.success_message;if(success==true){foodoroCartPreview.updateCartItemCount(numItems)}foodoroCartPreview.setCartItemSubtotal(numItems,subtotal);if(errorMessage!=""){foodoroCartPreview.setErrorMessage(errorMessage);quickLookCart.setCartItemAdded(false)}else{quickLookCart.setCartItemAdded(true)}if(successMessage!=""){foodoroCartPreview.setInfoMessage(successMessage)}foodoroCartPreview.displayCartPreview();if(success){foodoroCartPreview.cartPreviewAutoEstimateShipping();FoodoroAnalytics.trackEvent("Quicklook","ProductAddedToCart",productId)}};var opt={method:"post",data:$(formId),onComplete:callback,evalScripts:true};new Ajax(formCartAdd.action,opt).request();return true}}function CartValidator(){var a;var b;var d;var c;this.initialize=function(e,g,f){this.dropdownMenu=$(e);this.cartError=$(f);this.cartQuantity=$(g);this.errorMorpher=new Fx.Morph(f,{duration:600,transition:Fx.Transitions.Sine.easeOut})};this.productPageHighlightDropdown=function(){this.dropdownMenu.setStyle("border","1px solid #DF1F29")};this.productPageUnhighlightDropdown=function(){if(this.dropdownMenu!=null){this.dropdownMenu.setStyle("border","1px solid #C9C7BF")}};this.productPageHighlightQuantity=function(){this.cartQuantity.setStyle("border","1px solid #DF1F29")};this.productPageUnhighlightQuantity=function(){this.cartQuantity.setStyle("border","1px solid #C9C7BF")};this.productCartValidateInput=function(e,g){if(g==null||g==""||g==0){this.productPageHighlightDropdown();return false}else{this.productPageUnhighlightDropdown()}var f=/^-{0,1}\d*\.{0,1}\d+$/;if(e==null||e==""||!f.test(e)||e<=0){this.productPageHighlightQuantity();return false}else{this.productPageUnhighlightQuantity()}return true}}function DropDownMenu(){var d=false;var b=true;var c;var a;this.initialize=function(f,e){this.dropDownWrapper=f;this.dropDownHeader=e;this.attachQuickLookListeners()};this.toggledropdownmenu=function(){if(this.toggleOn){document.getElementById(this.dropDownWrapper).style.display="none";this.toggleOn=false}else{this.toggleOn=true;document.getElementById(this.dropDownWrapper).style.display="block"}};this.updatedropdowntitle=function(e){document.getElementById(this.dropDownHeader).innerHTML=e.substr(0,21)+"..."};this.closedropdownmenu=function(){this.toggleOn=false;document.getElementById(this.dropDownWrapper).style.display="none"};this.closeoutsideclickdropdown=function(){if(this.mouseOutside){document.getElementById(this.dropDownWrapper).style.display="none";this.toggleOn=false}};this.setMouseOutside=function(e){this.mouseOutside=e};this.attachQuickLookListeners=function(){thisRef=this;$$("html").each(function(e){e.addEvent("click",function(f){thisRef.closeoutsideclickdropdown()})})}};