var C4=C4||{};
C4.History=C4.History||{};
var My4od=C4.My4oD;
My4od.Model=C4.My4oD.Model;
My4od.View=C4.My4oD.View.getView();
My4od.Helper=C4.My4oD.Controller.getHelper();
C4.History.Model=(function($){var historyCarousel={};
return{HISTORY:"HISTORY",TAB_SELECTOR:"#history",COUNT_SELECTOR:"#my4od .my4od-button.clock span",ANON_COOKIE_NAME:"C4_History_Anonymous",ANON_MAX_ITEMS:2,USER_MAX_ITEMS:15,UNIQUE_PROP:"programmeId",FULLSCREEN_REMOVE_ERROR_MSG:"Error removing item from your HISTORY. Please try again.",disableView:false,getHistoryCarousel:function getHistoryCarousel(){return historyCarousel
},setHistoryCarousel:function setHistoryCarousel(obj){historyCarousel=obj||{}
}}
})(jQuery);
C4.History.View=(function($){var Model=C4.History.Model;
var View={};
return{getView:function getView(){return View
}}
})(jQuery);
C4.History.Controller=(function($){var Model=C4.History.Model,View=C4.History.View.getView();
var Helper={add:function add(programmeId){if(Identity.isLoggedIn()){Helper.addHistoryItemAJAX(programmeId)
}else{Helper.getHistoryItemAJAX(programmeId)
}},removeHistoryItem:function removeHistoryItem(programmeId,$button,isFlash){if(Identity.isLoggedIn()){Helper.removeHistoryItemAJAX(programmeId,$button,isFlash)
}else{var historyItem=My4od.Helper.getItem(Model.HISTORY,Model.UNIQUE_PROP,programmeId);
My4od.Helper.removeItem(Model.HISTORY,Model.UNIQUE_PROP,programmeId,Model.TAB_SELECTOR,Model.COUNT_SELECTOR,Model.USER_MAX_ITEMS,Model.getHistoryCarousel());
if(Model.disableView){return 
}if(historyItem&&historyItem.episodeTitle){My4od.View.showMessage("HISTORY","history",My4od.Model.REMOVE_MSG,historyItem.episodeTitle,null,null,true)
}My4od.View.updateAllButtons()
}},clearUserHistory:function clearUserHistory(){My4od.Helper.clearLocalObject(Model.HISTORY)
},getHistoryJSON:function getHistoryJSON(){var historyObj=$.extend(true,{},My4od.Helper.getLocalObject(Model.HISTORY));
var newArray=[];
if(historyObj&&historyObj.list){var historyArray=historyObj.list,maxItems=Math.min(historyArray.length,Model.USER_MAX_ITEMS);
for(var i=0;
i<maxItems;
i++){newArray.push(historyArray[i])
}}historyObj.list=newArray;
var historyJSON=$.toJSON(historyObj);
return historyJSON
},fillEmptySlots:function fillEmptySlots(){var isLoggedIn=Identity.isLoggedIn(),numItemsCarousel=$("#history .promo-container .promo").length,historyObj=My4od.Helper.getLocalObject(Model.HISTORY),numSlotsToFill=0;
if(isLoggedIn&&numItemsCarousel<Model.USER_MAX_ITEMS&&historyObj&&historyObj.list&&historyObj.list.length>=Model.USER_MAX_ITEMS){var historyArray=historyObj.list,markup=null;
markup=My4od.View.getEpisodeItemMarkup(Model.HISTORY,historyArray[Model.USER_MAX_ITEMS-1]);
$("#history .promo-container").append(markup);
C4.ButtonManager.Controller.addButtons(Model.HISTORY,C4.ButtonManager.Model.REMOVE_BTN,"#history .promo-container > li:last-child",false,null);
var $promoHoverObj=C4.Util.getPromoHoverObj($("#history .promo-container"));
$promoHoverObj.clearPromos();
$("#history .promo-container").promoHover({showFullyOpened:false})
}},addHistoryItemAJAX:function addHistoryItemAJAX(programmeId){if(programmeId){$.ajax({type:"POST",url:"/4me/http/history/add/"+programmeId+".json"+My4od.Helper.getDateParam(),data:null,dataType:"json",async:true,cache:false,success:function(data,textStatus,jqXHR){My4od.Helper.addNewItem(Model.HISTORY,data);
if(Model.disableView){return 
}My4od.Helper.updateView(Model.HISTORY,Model.TAB_SELECTOR,Model.COUNT_SELECTOR,Model.getHistoryCarousel(),Model.USER_MAX_ITEMS);
C4.Favourites.Controller.removeWatchedEpisode(programmeId,data.brandWst);
C4.Favourites.Controller.updateItemLinks(data.brandWst);
C4.My4oD.Controller.updateNowPlaying();
My4od.Controller.trackAddItem(Model.HISTORY,programmeId,1)
},error:function(data,textStatus,jqXHR){}})
}},getHistoryItemAJAX:function getHistoryItemAJAX(programmeId){if(programmeId){$.ajax({type:"GET",url:"/4me/http/history/get/"+programmeId+My4od.Helper.getDateParam(),data:null,dataType:"json",async:true,cache:false,success:function(data,textStatus,jqXHR){My4od.Helper.addNewItem(Model.HISTORY,data);
if(Model.disableView){return 
}My4od.Helper.updateView(Model.HISTORY,Model.TAB_SELECTOR,Model.COUNT_SELECTOR,Model.getHistoryCarousel(),Model.USER_MAX_ITEMS);
C4.Favourites.Controller.removeWatchedEpisode(programmeId,data.brandWst);
C4.Favourites.Controller.updateItemLinks(data.brandWst);
C4.My4oD.Controller.updateNowPlaying();
My4od.Controller.trackAddItem(Model.HISTORY,programmeId,1)
},error:function(data,textStatus,jqXHR){}})
}},getHistoryAJAX:function getHistoryAJAX(){$.ajax({type:"GET",url:"/4me/http/history.json"+My4od.Helper.getDateParam(),data:null,dataType:"json",async:true,cache:false,success:function(data,textStatus,jqXHR){var historyObj=My4od.Helper.getLocalObject(Model.HISTORY);
if(historyObj===null){historyObj=My4od.Helper.createEmptyObject(Model.HISTORY)
}historyObj.list=data;
historyObj=My4od.Helper.setExpiryDate(historyObj);
My4od.Helper.setLocalObject(Model.HISTORY,historyObj);
My4od.Helper.updateView(Model.HISTORY,Model.TAB_SELECTOR,Model.COUNT_SELECTOR,Model.getHistoryCarousel(),Model.USER_MAX_ITEMS);
Event.bind();
C4.My4oD.Controller.initHandler(Model.HISTORY)
},error:function(data,textStatus,jqXHR){My4od.Helper.updateView(Model.HISTORY,Model.TAB_SELECTOR,Model.COUNT_SELECTOR,Model.getHistoryCarousel(),Model.USER_MAX_ITEMS);
Event.bind();
C4.My4oD.Controller.initHandler(Model.HISTORY)
}})
},removeHistoryItemAJAX:function removeHistoryItemAJAX(programmeId,isFlash,$button){if(programmeId){var historyItem=My4od.Helper.getItem(Model.HISTORY,Model.UNIQUE_PROP,programmeId);
$.ajax({type:"POST",url:"/4me/http/history/remove/"+programmeId,data:null,dataType:"json",async:true,cache:false,success:function(data,textStatus,jqXHR){My4od.Helper.removeItem(Model.HISTORY,Model.UNIQUE_PROP,programmeId,Model.TAB_SELECTOR,Model.COUNT_SELECTOR,Model.USER_MAX_ITEMS,Model.getHistoryCarousel());
if(historyItem&&historyItem.episodeTitle){My4od.View.showMessage("HISTORY","history",My4od.Model.REMOVE_MSG,historyItem.episodeTitle,null,null,true)
}My4od.View.updateAllButtons();
My4od.Controller.updateNowPlaying();
My4od.Controller.trackRemoveItem(Model.HISTORY,programmeId,isFlash)
},error:function(data,textStatus,jqXHR){My4od.Helper.sendFlashErrorMsg(0,1,Model.FULLSCREEN_REMOVE_ERROR_MSG);
if(historyItem&&historyItem.episodeTitle){My4od.View.showMessage("HISTORY","history",My4od.Model.REMOVE_ERROR_MSG,historyItem.episodeTitle,null,null,true)
}My4od.View.setButtonNormal($button)
}})
}},hasEpisode:function hasEpisode(programmeId){var historyObj=My4od.Helper.getLocalObject(Model.HISTORY);
if(historyObj&&historyObj.list&&historyObj.list.length>0){var historyArray=historyObj.list;
for(var i=0;
i<historyArray.length;
i++){if(historyArray[i].programmeId===programmeId){return true
}}}return false
},initHistory:function initHistory(disableView){Model.disableView=disableView||false;
var localHistory=My4od.Helper.getLocalObject(Model.HISTORY);
if(Identity.isLoggedIn()&&(localHistory===null||My4od.Helper.localObjectExpired(localHistory))){Helper.getHistoryAJAX()
}else{My4od.Helper.updateView(Model.HISTORY,Model.TAB_SELECTOR,Model.COUNT_SELECTOR,Model.getHistoryCarousel(),Model.USER_MAX_ITEMS);
Event.bind();
C4.My4oD.Controller.initHandler(Model.HISTORY)
}}};
var Event={removeClick:function removeClick(e){var programmeId=$(e.currentTarget).parent().attr("data-wsprogrammeid"),$button=$(e.currentTarget);
Helper.removeHistoryItem(programmeId,$button,0);
return false
},bind:function bind(){if(Model.disableView){return 
}$("#history .remove").live("click",Event.removeClick)
}};
return{init:function init(disableView){Helper.initHistory(disableView)
},add:Helper.add,removeItem:Helper.removeHistoryItem,clearUserHistory:Helper.clearUserHistory,getHistoryJSON:Helper.getHistoryJSON,fillEmptySlots:Helper.fillEmptySlots,hasEpisode:Helper.hasEpisode,getHelper:function getHelper(){return Helper
}}
})(jQuery);
