(function($){$.fn.check=function(mode){var mode=mode||'on';return this.each(function(){switch(mode){case'on':this.checked=true;break;case'off':this.checked=false;break;case'toggle':this.checked=!this.checked;break;}});};window.HTL={isCustomerPrime:HtlGlobalParams.isCustomerPrime,categories:['action','arts','baby','bikes','construction','dolls','movies','electronics','games','learning','preschool','cars','role','sports','video','wheels'],ageBuckets:[0,2,5,8,12,16],numResultsPerPage:40,multiFilterCategories:{'action':[],'arts':[],'baby':[],'bikes':[],'construction':[],'dolls':[],'movies':[],'electronics':[],'games':[],'learning':[],'preschool':[],'cars':[],'role':[],'sports':[],'video':[],'wheels':[]},multiFilterAges:{'0':[],'2':[],'5':[],'8':[],'12':[],'16':[]},buckets:{age:{0:{},2:{},5:{},8:{},12:{},16:{}},price:{0:{},25:{},50:{},100:{},200:{}},category:{},interCategory:{},discount:{0:{},10:{},25:{},50:{}},gender:{b:{},g:{},u:{}}},panels:{},interCategorySortedSet:[],track:function(obj){var list=[];for(var i in obj){list.push(i+"="+obj[i]);}
var load=new Image();load.src="https://www.windowshop.com/htl.gif?"+list.join('&');},getHtlCategory:function(gl){var htlCategory;if(gl.indexOf(' ')!=-1){htlCategory=gl.substring(0,gl.indexOf(' ')).toLowerCase();}else{htlCategory=gl.toLowerCase();}
return htlCategory;},getAgeBucket:function(age){if(age>99){return-1;}else{var ageBucket=-1;if(age>=0&&age<2){ageBucket=0;}else if(age>=2&&age<5){ageBucket=2;}else if(age>=5&&age<8){ageBucket=5;}else if(age>=8&&age<12){ageBucket=8;}else if(age>=12&&age<15){ageBucket=12;}else if(age>15){ageBucket=16;}
return ageBucket;}},initialize:function(){var markupArray=[];for(var i=0;i<htlData.panels.length;i++){var panelData=htlData.panels[i];var params=panelData.split('|');var asin=params[0];var glRange=params[1].split("^");var primaryHtlCategory=this.getHtlCategory(glRange[0]);if(glRange.length>1){for(var x=1;x<glRange.length;x++){var htlCategory=this.getHtlCategory(glRange[x]);for(var y=0;y<HTL.categories.length;y++){if(htlCategory==HTL.categories[y]){this.multiFilterCategories[htlCategory].push(asin);}}}}
var ageRange=params[3].split("^");var primaryAgeBucket=-1;for(var x=0;x<ageRange.length;x++){var ageBucket=this.getAgeBucket(ageRange[x]);if(ageBucket>-1){if(primaryAgeBucket<0){primaryAgeBucket=ageBucket;}else{for(var y=0;y<HTL.ageBuckets.length;y++){if(ageBucket==HTL.ageBuckets[y]){this.multiFilterAges[ageBucket+''].push(asin);}}}}}
var productTitle=params[13];var rank=parseInt(params[10]);var url="http://www.amazon.com/dp/"+asin+"/ref=gs_htljs";var discountRange;var discountBucket=parseInt(params[12]);if(discountBucket>=0&&discountBucket<=10){discountRange=0;}else if(discountBucket>10&&discountBucket<=25){discountRange=10;}else if(discountBucket>25&&discountBucket<=50){discountRange=25;}else if(discountBucket>50){discountRange=50;}
var panel={asin:asin,category:primaryHtlCategory,gender:params[2],age:primaryAgeBucket,hasVideo:params[4],price:parseInt(params[5].replace(/\./,'')),listPrice:parseInt(params[6].replace(/\./,'')),hasChildren:parseInt(params[7]),avgRating:parseFloat(params[8]),numRatings:parseInt(params[9]),rank:(rank==-1)?10000000:rank,available:params[11]=='in_stock'?true:false,discount:discountRange,title:productTitle.replace(/%26/,"&amp;"),imageUrl:params[14],starRatingUrl:params[15],isPrime:parseInt(params[16]),isSuperSaver:parseInt(params[17]),breaksMap:parseInt(params[18]),url:url}
if(!panel.available){panel.price=0;panel.listPrice=0;}
this.panels[asin]=panel;if(!this.buckets.category[panel.category]){this.buckets.category[panel.category]={};this.buckets.interCategory[panel.category]=[];}
this.buckets.category[panel.category][panel.asin]=true;this.buckets.age[panel.age][panel.asin]=true;this.buckets.gender[panel.gender][panel.asin]=true;this.buckets.discount[panel.discount][panel.asin]=true;var priceBucket;if(panel.price<2500){priceBucket=this.buckets.price[0];}else if(panel.price<5000){priceBucket=this.buckets.price[25];}else if(panel.price<10000){priceBucket=this.buckets.price[50];}else if(panel.price<20000){priceBucket=this.buckets.price[100];}else{priceBucket=this.buckets.price[200];}
priceBucket[panel.asin]=true;}
$('#htlSort').change(function(){$('#htlPage').val(1);HTL.retreiveSet('sort');});$(".check-label").click(function(){var elemId=$(this).attr('id');var relatedElemId=elemId.substring(1,elemId.length);var relatedElem=$('#'+relatedElemId);HTL.assignCheckBoxes(relatedElem);});$(".check-box-unchecked").click(function(){$('#htlPage').val(1);HTL.assignCheckBoxes($(this));});this.sortInterCategories();$(document).ready(function(){HTL.assignOldCheckBoxValues();});},assignCheckBoxes:function(elem){var elemId=elem.attr('id');if(elem.hasClass('check-box-checked')){$(elem)["removeClass"]("check-box-checked");var checkedVals=$('#htlCheckedBoxes').val().split('|');var newCheckedValues="";$.each(checkedVals,function(){if(this!=elemId&&this!=""){newCheckedValues+=this+"|";}});$('#htlCheckedBoxes').val(newCheckedValues);}else{$('#htlCheckedBoxes').val($('#htlCheckedBoxes').val()+elemId+"|");$(elem)["addClass"]("check-box-checked");}
HTL.retreiveSet();},sortInterCategories:function(e){$.each(this.buckets.category,function(category,val){$.each(val,function(asin,val){HTL.buckets.interCategory[category].push(asin);});HTL.buckets.interCategory[category].sort(HTL.bestsellingSort);});var counter=0;while(true){var asinRemaining=false;for(var x=0;x<HTL.categories.length;x++){if(HTL.buckets.interCategory[HTL.categories[x]]&&HTL.buckets.interCategory[HTL.categories[x]].length>counter){HTL.interCategorySortedSet.push(HTL.buckets.interCategory[HTL.categories[x]][counter]);asinRemaining=true;}}
counter++;if(!asinRemaining){break;}}},assignOldCheckBoxValues:function(e){var checkedVals=$('#htlCheckedBoxes').val().split('|');$.each(checkedVals,function(){$('#'+this)["addClass"]("check-box-checked");});HTL.retreiveSet('load');},renderPagination:function(numResults){var numPages=parseInt(numResults/this.numResultsPerPage)+1;var page=$('#htlPage').val();if(numResults==1){$('#resultsCount').html('Showing 1 - 1 of 1 Result');}
else{if(numPages==1){$('#resultsCount').html('Showing 1 - '+numResults+' of '+numResults+' Results');}else{var start=((this.numResultsPerPage*page)-this.numResultsPerPage)+1;var end=(this.numResultsPerPage*page)<numResults?(this.numResultsPerPage*page):numResults;$('#resultsCount').html('Showing '+start+' - '+end+' of '+numResults+' Results');}}
if(numPages==1){$('#htlPagination, #htlPaginationBottom').html("");return;}
var topPaginationMarkup=this.generatePaginationMarkup(page,numPages,"top");var bottomPaginationMarkup=this.generatePaginationMarkup(page,numPages,"bottom");$('#htlPagination').html(topPaginationMarkup.join('\n'));$('#htlPaginationBottom').html(bottomPaginationMarkup.join('\n'));$('#htlPagination a, #htlPaginationBottom a').click(this.onPagination);},onPagination:function(e){var anchor=$(this);var page;if(anchor.attr("id")=="pageNext"){page=parseInt($('#htlPage').val())+1;$('#htlPage').val(page);page+="|next";}else if(anchor.attr("id")=="pagePrev"){page=parseInt($('#htlPage').val())-1;$('#htlPage').val(page);page+="|prev";}
else{page=$(this).html();$('#htlPage').val(page);}
HTL.retreiveSet('page'+page);},generatePaginationMarkup:function(page,numPages,position){var markup=[];if(page==1){markup.push('<span id="pageDisabled">&laquo;&nbsp;Previous</span>&nbsp;|&nbsp;Page:&nbsp;');}else{markup.push('<a id="pagePrev" href="#">&laquo;&nbsp;Previous</a>&nbsp;|&nbsp;Page:&nbsp;');}
for(var i=1;i<=numPages;i++){if(i==page){markup.push('<a href="#">'+i+'</a>');}else{markup.push('<a href="#" class="htlPage">'+i+'</a>');}}
if(numPages!=page){markup.push('&nbsp;|<a id="pageNext" href="#">Next&nbsp;&raquo;</a>');}else{markup.push('&nbsp;|&nbsp;<span id="pageDisabled">Next&nbsp;&raquo;</span>');}
return markup;},isValidSelect:function(secAsin,filters,checkForAge,checkForCategory){var filterAgeLength=filters.age.length;var filterCategoryLength=filters.category.length;var filterPriceLength=filters.price.length;var filterDiscountLength=filters.discount.length;var filterGenderLength=filters.gender.length;var isValidOnPrice=false;var isValidOnDiscount=false;var isValidOnGender=false;var isValidOnAge=false;var isValidOnCategory=false;if(filterAgeLength<1||!checkForAge){isValidOnAge=true;}else{for(var i=0;i<filterAgeLength;i++){var filterIndex=filters['age'][i];if(this.buckets['age'][filterIndex][secAsin]){isValidOnAge=true;break;}else{if(HTL.multiFilterAges[filterIndex]){for(var j=0;j<HTL.multiFilterAges[filterIndex].length;j++){if(secAsin==HTL.multiFilterAges[filterIndex][j]){isValidOnAge=true;break;}}}}}}
if(filterCategoryLength<1||!checkForCategory){isValidOnCategory=true;}else{for(var i=0;i<filterCategoryLength;i++){var filterIndex=filters['category'][i];if(this.buckets['category'][filterIndex][secAsin]){isValidOnCategory=true;break;}else{if(HTL.multiFilterCategories[filterIndex]){for(var j=0;j<HTL.multiFilterCategories[filterIndex].length;j++){if(secAsin==HTL.multiFilterCategories[filterIndex][j]){isValidOnCategory=true;break;}}}}}}
if(filterPriceLength<1){isValidOnPrice=true;}else{for(var i=0;i<filterPriceLength;i++){var filterIndex=filters['price'][i];if(this.buckets['price'][filterIndex][secAsin]){isValidOnPrice=true;break;}}}
if(filterDiscountLength<1){isValidOnDiscount=true;}else{for(var i=0;i<filterDiscountLength;i++){var filterIndex=filters['discount'][i];if(this.buckets['discount'][filterIndex][secAsin]){isValidOnDiscount=true;break;}}}
if(filterGenderLength<1){isValidOnGender=true;}else{for(var i=0;i<filterGenderLength;i++){var filterIndex=filters['gender'][i];if(this.buckets['gender'][filterIndex][secAsin]){isValidOnGender=true;break;}}}
return isValidOnPrice&&isValidOnDiscount&&isValidOnGender&&isValidOnAge&&isValidOnCategory;},retreiveSet:function(event){var filters={age:[],price:[],category:[],discount:[],gender:[]}
$(".check-box-checked").each(function(){var id=this.id;var prefix=id.substr(0,3);switch(prefix){case"age":filters.age.push(id.substr(3,id.length-3));break;case"pri":filters.price.push(id.substr(5,id.length-5));break;case"cat":filters.category.push(id.substr(9,id.length-9));break;case"dis":filters.discount.push(id.substr(8,id.length-8));break;case"gen":filters.gender.push(id.substr(6,id.length-6));var unisexAdded=false;for(var x=0;x<filters.gender.length;x++){if(filters.gender[x]=='u'){unisexAdded=true;}}
if(!unisexAdded){filters.gender.push('u');}
break;}});var page=$('#htlPage').val();var sort=$('#htlSort').val();this.serializeState(filters,page,sort,event);var filterSet={};var numFilters=0;for(var filter in filters){numSubFilters=filters[filter].length;if(numSubFilters>0){numFilters++;}
for(var i=0;i<numSubFilters;i++){filterIndex=filters[filter][i];for(var asin in this.buckets[filter][filterIndex]){if(!filterSet[asin]){filterSet[asin]=1;}else{filterSet[asin]++;}}}
if(filter=='age'||filter=='category'){for(var i=0;i<numSubFilters;i++){filterIndex=filters[filter][i];if(HTL.multiFilterAges[filterIndex]&&filter=='age'){for(var j=0;j<HTL.multiFilterAges[filterIndex].length;j++){var secAsin=HTL.multiFilterAges[filterIndex][j];if(this.isValidSelect(secAsin,filters,false,true)){if(!filterSet[secAsin]){filterSet[secAsin]=1;}else if(filterSet[secAsin]<numFilters){filterSet[secAsin]=numFilters;}}}}
if(HTL.multiFilterCategories[filterIndex]&&filter=='category'){for(var j=0;j<HTL.multiFilterCategories[filterIndex].length;j++){var secAsin=HTL.multiFilterCategories[filterIndex][j];if(this.isValidSelect(secAsin,filters,true,false)){if(!filterSet[secAsin]){filterSet[secAsin]=1;}else if(filterSet[secAsin]<numFilters){filterSet[secAsin]=numFilters;}}}}}}}
var intersectionArray=[];if(numFilters==0){for(var x=0;x<HTL.interCategorySortedSet.length;x++){intersectionArray.push(HTL.interCategorySortedSet[x]);}}else{for(var x=0;x<HTL.interCategorySortedSet.length;x++){if(filterSet[HTL.interCategorySortedSet[x]]==numFilters){intersectionArray.push(HTL.interCategorySortedSet[x]);}}}
if(intersectionArray.length==0){var msg='Please select or deselect the checkboxes on the left to find more great gift ideas.';$('#htlItems').html('<div><h3>Oops! No results for that option.</h3><span>'+msg+'</span></div>');$('#resultsCount').html('Showing 0 - 0 of 0 Results');return;}
switch(sort){case'avgRating':intersectionArray.sort(this.avgRatingSort);break;case'priceHigh':intersectionArray.sort(this.priceHighSort);break;case'priceLow':intersectionArray.sort(this.priceLowSort);break;default:}
var paginatedArray=intersectionArray.slice((page-1)*this.numResultsPerPage,page*this.numResultsPerPage);this.renderPagination(intersectionArray.length);var markup=[];for(var i=0;i<paginatedArray.length;i++){var asin=paginatedArray[i];markup.push(this.renderAsin(asin));}
$('#htlItems').html(markup.join('\n'));},serializeState:function(filters,page,sort,event){var serialized=[];serialized.push(filters.age.join(','));serialized.push(filters.price.join(','));serialized.push(filters.category.join(','));serialized.push(page);serialized.push(sort);var stateString=serialized.join('|')
this.deserializeState(stateString);$('#isZoomedOut').val(stateString);this.track({action:"htljs",state:stateString,event:event});return serialized.join(stateString);},deserializeState:function(stateString){var stateArray=stateString.split('|');var ages=stateArray[0].split(',');var prices=stateArray[1].split(',');var categories=stateArray[2].split(',');var page=stateArray[3];var sort=stateArray[4];for(var i=0;i<ages.length;i++){$('#age'+ages[i]).check();}
for(var i=0;i<prices.length;i++){$('#price'+prices[i]).check();}
for(var i=0;i<categories.length;i++){$('#category_'+categories[i]).check();}
$('#htlPage').val(page);$('#htlSort').val(sort);},renderAsin:function(asin){var panel=this.panels[asin];var imageSrc=panel.imageUrl;var starUrl=panel.starRatingUrl;var avgRating=panel.avgRating;var primeMarkup=(panel.isPrime==1&&HTL.isCustomerPrime==1)?'<img src="'+HtlGlobalParams.primeSmallUrl+'" />':'';var saverMarkup=(panel.isSuperSaver==1)?'<div style="font-size:10px;margin-top:3px">Eligible for <b>FREE</b> Super Saving Shipping</div>':'';var ratingMarkup=(avgRating==0)?'<div style="margin-top:3px">'+primeMarkup+'</div>':'<div class="htlRatingBlock">\
    <a href="'+panel.url+'">\
     <img src="'+starUrl+'" alt="'+avgRating+'" title="'+avgRating+'" />\
    </a>\
    (<a id="numeric-rating" href="'+panel.url+'">'+panel.numRatings+'</a>)&nbsp;'+primeMarkup+'\
   </div>';var videoMarkup='';if(panel.hasVideo=='Y'){videoMarkup='<div id="htlVideoMarkup" style="margin-top:5px">\
    <table cellspacing=0 cellpadding=0>\
     <tr>\
      <td width="0">\
       <a href="'+panel.url+'">\
        <img src="'+HtlGlobalParams.htlVideoIconUrl+'" >\
       </a>\
      </td>\
      <td id="videoText">\
       <a href="'+panel.url+'" >Go to video</a>\
      </td>\
     </tr>\
    </table>\
   </div>';}
var markup='<div class="htlItem" id="">\
   <div class="htlImageBlock">\
    <a href="'+panel.url+'">\
     <img src="'+imageSrc+'" alt="'+panel.title+'" title="'+panel.title+'" />\
    </a>\
   </div>\
   <div class="htlItemTitle">\
    <a href="'+panel.url+'" title="'+panel.title+'">'+this.truncateTitle(panel.title)+'</a>\
   </div>\
   <div>'+this.formatPriceBlock(panel)+'\
   </div>\
   '+saverMarkup+'\
   '+ratingMarkup+'\
   '+videoMarkup+'\
  </div>';return markup;},truncateTitle:function(title){var maxTitleLength=60;var shortTitle=title.substr(0,maxTitleLength);if(title.length>maxTitleLength){var indexOfLastSpace=shortTitle.lastIndexOf(' ');if(indexOfLastSpace>0){return shortTitle.substring(0,indexOfLastSpace)+"...";}else{return shortTitle+"...";}}
return shortTitle;},formatPriceBlock:function(panel){if(panel.breaksMap){return'<a href="'+panel.url+'" class="map">Click for details</a>';}
else if(panel.available){if(panel.hasChildren){return'<span class="htlPriceTitle">From: </span>\
     <span class="htlOurPrice">'+this.formatPrice(panel.price)+'</span>';}else{if(panel.price>=panel.listPrice){return'<span class="htlOurPrice">'+this.formatPrice(panel.price)+'</span>';}else if(panel.price<panel.listPrice){return'<span class="htlListPrice">'+this.formatPrice(panel.listPrice)+'</span>\
      <span class="htlOurPrice">'+this.formatPrice(panel.price)+'</span>';}}}else{return'<span class="htlUnavailable">Currently unavailable</span>';}},formatPrice:function(price){var dollars=parseInt(price/100);var cents=parseInt(price%100);if(cents==0){cents="00";}else if(cents<10){cents="0"+cents;}
return'<span class="htlDollar">$</span>'+dollars+"."+cents;},bestsellingSort:function(a,b){var asinA=HTL.panels[a];var asinB=HTL.panels[b];if(asinA.available<asinB.available){return 1;}else if(asinA.available>asinB.available){return-1;}else{if(asinA.rank>asinB.rank){return 1;}else if(asinA.rank<asinB.rank){return-1;}else{return HTL.categorySort(asinA,asinB);}}},avgRatingSort:function(a,b){var asinA=HTL.panels[a];var asinB=HTL.panels[b];if(asinA.avgRating<asinB.avgRating){return 1;}else if(asinA.avgRating>asinB.avgRating){return-1;}else{if(asinA.numRatings<asinB.numRatings){return 1;}else if(asinA.numRatings>asinB.numRatings){return-1;}else{return HTL.categorySort(asinA,asinB);}}},priceHighSort:function(a,b){var asinA=HTL.panels[a];var asinB=HTL.panels[b];if(asinA.price>asinB.price){return-1;}else if(asinA.price<asinB.price){return 1;}else{return HTL.categorySort(asinA,asinB);}},priceLowSort:function(a,b){var asinA=HTL.panels[a];var asinB=HTL.panels[b];if(asinA.available<asinB.available){return 1;}else if(asinA.available>asinB.available)
return-1;else{return HTL.priceSort(asinA,asinB);}},priceSort:function(asinA,asinB){if(asinA.price>asinB.price){return 1;}else if(asinA.price<asinB.price){return-1;}else{return this.categorySort(asinA,asinB);}},categorySort:function(asinA,asinB){var catA=asinA.category;var catB=asinB.category;if(catA>catB){return-1;}else if(catA<catB){return 1;}else{return 0;}},categoryRank:{toys:0,baby:1,games:2,sports:3,ce:4,dvd:5}}})(jQuery);