(function(a){a.widget("ui.amazonGrid",{_maxItemsPerPage:35,_maxPerCategory:4,_userHistory:[],_navigationPrevious:null,_navigationNext:null,_curPage:0,_arrow:null,_init:function(){var b=this,c=this.element;b._createArrow();b._navigationNext=b.options.navigationNext;b._navigationPrevious=b.options.navigationPrevious;a("#cpanel").insertAfter(c).hide();c.html("");c.removeClass();c.addClass("amazonGrid");c.setTemplateURL("/js/templates/amazonGrid.htm");c.processTemplate();this._loadRootNodes();a("#TopSellers").click(function(){b._curPage=0;b._getListItems("TopSellers");return false});a("#NewReleases").click(function(){b._curPage=0;b._getListItems("NewReleases");return false});a("#Categories").click(function(){b._curPage=0;b._getListItems("Categories");return false}).hide();a("#ShowMore").click(function(){b._curPage=0;b._showMore();return false});a("#relatedTags").hide();a("#amazonHeader #go").click(function(){b._curPage=0;b._findItems();return false});a("#amazonCategories").change(function(){b._onDepartmentChange()});a("#similar").click(function(){b._getSimilarItems()});if(b._navigationNext!==null&&b._navigationPrevious!==null){b._navigationNext.click(function(){b._onNextPage()});b._navigationPrevious.click(function(){b._onPreviousPage()})}},_onPreviousPage:function(){var a=this;a._curPage--;a._callNavigationMethod()},_onNextPage:function(){var a=this;a._curPage++;a._callNavigationMethod()},_callNavigationMethod:function(){var b=this;if(a("#Categories").hasClass("active"))b._getListItems("Categories");else b._findItems()},_handleNavigation:function(b){var a=this;a._navigationPrevious.css("visibility",a._curPage>0?"visible":"hidden");a._navigationNext.css("visibility",b?"visible":"hidden")},_getSimilarItems:function(){var a=this;a._setActiveLink();if(curCel==undefined||curCel==null){alert("something went wrong, cannot identify the current cell");return}var b=parseInt(curCel.id.substring(1,curCel.id.length),10),c=itms[b].CustomInfo;callWebservice("/svc/AmazonServices.asmx/GetSimilarItems",JSON.stringify({ASIN:c,PageNum:a._curPage,PageSize:a._maxItemsPerPage}),function(b){a._emptyGrid();a._buildGrid(b.d)},false)},_onDepartmentChange:function(){var c=this,d=a("#amazonCategories").val(),b=c._getUserHistory(d);if(d=="0"){a("#Categories").hide();a("#ShowMore").show()}else{a("#Categories").show();a("#ShowMore").hide()}a("#amazonSearch").val(b);if(b!="")c._findItems();else a("#TopSellers").click()},_getUserHistory:function(b){var a=this;for(i=0;i<a._userHistory.length;i++)if(a._userHistory[i].Key==b){return a._userHistory[i].Value;break}return null},_setUserHistory:function(c,b){var a=this;for(i=0;i<a._userHistory.length;i++)if(a._userHistory[i].Key==c){a._userHistory[i].Value=b;break}},_updateSearchHistory:function(c,b){var a=this;a._setUserHistory(c,b);callWebservice("/svc/AmazonServices.asmx/StoreSearchHistory",JSON.stringify({SearchHistory:a._userHistory}),function(){},false)},_getSearchHistory:function(){var b=this;callWebservice("/svc/AmazonServices.asmx/GetSearchHistory",JSON.stringify({}),function(c){if(c.d===null){a("#amazonCategories option").each(function(d,c){b._userHistory.push({Key:a(c).val(),Value:""})});b._userHistory.push({Key:"homepage",Value:"TopSellers"})}else b._userHistory=c.d;b._loadHomePageGrid()},false)},_emptyGrid:function(){a("#amazonItemsHolder").setTemplateURL("/js/templates/loadingScreen.htm");a("#amazonItemsHolder").processTemplate()},_findItems:function(){var b=this,c=a("#amazonCategories option:selected").val();searchString=a("#amazonSearch").val();if(searchString=="")return;b._setActiveLink();b._emptyGrid();callWebservice("/svc/AmazonServices.asmx/FindItems",JSON.stringify({BrowseNodeID:c,SearchString:searchString,PageNum:b._curPage,PageSize:b._maxItemsPerPage}),function(a){b._buildGrid(a.d.Items);b._createTaglinks(a.d.Tags);b._updateSearchHistory(c,searchString)},true)},_createTaglinks:function(b){var c=this;a("#relatedTags").show();a("#relatedTags div").html("");b!==null&&b!=undefined&&a.each(b,function(e,b){var d=a("<a />").attr({href:"#"}).click(function(){a("#amazonSearch").val(b);c._findItems()}).text(b);a("#relatedTags div").append(d)})},_loadRootNodes:function(){var b=this,c=this.element;callWebservice("/svc/AmazonServices.asmx/GetRootNodes","{}",function(c){if(c.d!=null&&c.d.length>0){a.each(c.d,function(d,b){var c=a("<option></option>").attr("value",b.Key).text(b.Value);c.appendTo(a("#amazonCategories"))});b._getSearchHistory()}},false)},_setActiveLink:function(b){a("#main.amazonGrid #amazonHeader a").removeClass("active");a('#main.amazonGrid #amazonHeader a[id="'+b+'"]').addClass("active")},_showMore:function(){var b=this;if(a("#TopSellers").hasClass("active"))b._loadHomePageGrid("TopSellers",true);else a("#NewReleases").hasClass("active")&&b._loadHomePageGrid("NewReleases",true)},_loadHomePageGrid:function(d,c){if(c==undefined){c=false;a("#ShowMore").show()}else a("#ShowMore").hide();var b=this;!c&&b._emptyGrid();if(d==undefined){d=b._getUserHistory("homepage");b._setActiveLink(d)}else b._updateSearchHistory("homepage",d);callWebservice("/svc/AmazonServices.asmx/GetHomepageItems",JSON.stringify({showType:d,MaxPerCategory:b._maxPerCategory,SecondHalf:c}),function(a){b._buildGrid(a.d,true,c)},false)},_buildGrid:function(c,f,d){var b=this;b._handleNavigation(c.length>b._maxItemsPerPage);if(d==undefined||!d)itms=c;else a.each(c,function(b,a){itms.push(a)});a("#amazonItemsHolder").html("");var h=null,e=null;a.each(itms,function(c,h){if(c<b._maxItemsPerPage||f){var g=a("<div></div>").attr("id","t"+c).mouseover(function(){hov(this)}).setTemplateURL("/js/templates/amazonItem.htm");g.processTemplate(h);if(h.IsTabTip){g.find("a").click(function(){b._switchToCategorySearch(h.CustomInfo);return false});e=h.CustomInfo}else g.find("a").click(function(){b._showDetailLightBox(this);return false});if(f)if(c==(d?b._maxItemsPerPage*2-1:b._maxItemsPerPage-1)||itms.length>c+1&&itms[c+1].IsTabTip){var i=e;g.find("a").mouseover(function(){b._showRightArrow(this,i);return false})}a("#amazonItemsHolder").append(g)}});if(c.length<b._maxItemsPerPage)for(i=c.length;i<b._maxItemsPerPage;i++){var g=a("<div></div>").attr("id","t"+i).mouseover(function(){hov(this)}).addClass("empty");a("#amazonItemsHolder").append(g)}},_createArrow:function(){var b=this;b._arrow=a("<div></div>").addClass("arrowRight")},_showRightArrow:function(e,c){var b=this,d=a(e).offset();a("#main.amazonGrid").append(b._arrow);b._arrow.unbind("click");b._arrow.click(function(){a("#amazonCategories").val(c);b._getListItems("TopSellers",c);b._arrow.hide()});b._arrow.css({left:d.left+100,top:d.top+35}).show()},_showDetailLightBox:function(d){var b=a(d).parent().attr("id");b=parseInt(b.substring(1,b.length),10);var c=itms[b].CustomInfo;if(c==undefined||c===null||c.length==0){alert("ASIN not found, cannot identify the item!");return}else callWebservice("/svc/AmazonServices.asmx/GetItemDetails",JSON.stringify({ASIN:c}),function(b){if(b!=null&&b.d!==null){a("#light").css("width","640px");a("#light").css("marginLeft","-322px");a("#light").css("height","auto");a("#light").css("top","33px");a("#closeplyr").css("top","114px");a("#closeplyr").css("marginLeft","246px");a("#light").setTemplateURL("/js/templates/amazonDetailBox.htm");a("#light").processTemplate(b.d);a("#light").show();a("#fade").show();a("#closeplyr").show()}},false)},_switchToCategorySearch:function(b){var d=this;a('#amazonCategories option[value="'+b+'"]').length>0&&a("#amazonCategories").val(b);a("#Categories").show();var c=d._getUserHistory(b);if(c!=""&&c!==null)a("#amazonCategories").change();else d._getListItems("TopSellers",b)},_getListItems:function(d,c){a("#relatedTags").hide();if(c==undefined)c=a("#amazonCategories").val();var b=this;b._setActiveLink(d);b._emptyGrid();if(a("#amazonCategories").val()=="0")b._loadHomePageGrid(d);else callWebservice("/svc/AmazonServices.asmx/GetListItems",JSON.stringify({BrowseNodeID:c,ShowType:d,PageNum:b._curPage,PageSize:35}),function(a){b._buildGrid(a.d)},false)},destroy:function(){var b=this;a.widget.prototype.destroy.apply(this,arguments);a("#similar").unbind("click");if(b._navigationNext!==null&&b._navigationPrevious!==null){b._navigationNext.unbind("click");b._navigationPrevious.unbind("click")}}});a.extend(a.ui.amazonGrid,{defaults:{readOnly:false,navigationPrevious:null,navigationNext:null}})})(jQuery);