var C4=C4||{};
C4.ButtonManager=C4.ButtonManager||{};
C4.ButtonManager.Model=(function($){return{HISTORY:"HISTORY",PLAYLIST:"PLAYLIST",FAVS:"FAVS",ADD_BTN:"ADD_BTN",REMOVE_BTN:"REMOVE_BTN",PLAYLIST_ADD_BTN_HTML:'<a href="#" class="my4od-button add-playlist" tabindex="0"><span class="icon"></span>Playlist</a>',FAVS_ADD_BTN_HTML:'<a href="#" class="my4od-button add-favourite" tabindex="0"><span class="icon"></span>Favourite Show</a>',REMOVE_BTN_HTML:'<a href="#" class="my4od-button remove" tabindex="0"><span class="icon"></span>Remove</a>',REMOVE_SEL:"a.my4od-button.remove",ADD_PLAYLIST_SEL:"a.my4od-button.add-playlist",ADD_FAV_SEL:"a.my4od-button.add-favourite",PLAYLIST_UNIQUE_PROP:"programmeId",FAVS_UNIQUE_PROP:"brandWst",ADDED:"ADDED",WAITING:"WAITING",NORMAL:"NORMAL"}
})(jQuery);
C4.ButtonManager.View=(function($){var Model=C4.ButtonManager.Model,View={updateButtonState:function updateButtonState($button,state){if($button&&$button.length>0){switch(state){case Model.ADDED:$button.addClass("added").removeClass("waiting");
break;
case Model.WAITING:$button.addClass("waiting").removeClass("added");
break;
case Model.NORMAL:$button.removeClass("waiting").removeClass("added");
break;
default:break
}}},setWaiting:function setWait($button){View.updateButtonState($button,Model.WAITING)
},setAdded:function setAdded($button){View.updateButtonState($button,Model.ADDED)
},setNormal:function setNormal($button){View.updateButtonState($button,Model.NORMAL)
},delegateAppend:function delegateAppend(type,buttonType,container,insertAfter,insertAfterSel){var appendButtons=function(buttonHtml,buttonSelector,container,insertAfter,insertAfterSel){if(insertAfter){var $insertAfterSel=null;
$(insertAfterSel).each(function(){$insertAfterObj=$(this);
if($insertAfterObj.next().is(buttonSelector)===false){$(buttonHtml).insertAfter($insertAfterObj)
}})
}else{var $listItem=null;
$(container).each(function(){$listItem=$(this);
if($listItem.find(buttonSelector).length===0){$listItem.append(buttonHtml)
}})
}};
if(buttonType===Model.REMOVE_BTN){appendButtons(Model.REMOVE_BTN_HTML,Model.REMOVE_SEL,container,insertAfter,insertAfterSel);
return $(container).find(".remove")
}else{switch(type){case Model.PLAYLIST:if(buttonType===Model.ADD_BTN){appendButtons(Model.PLAYLIST_ADD_BTN_HTML,Model.ADD_PLAYLIST_SEL,container,insertAfter,insertAfterSel);
return $(container).find(".add-playlist")
}break;
case Model.FAVS:if(buttonType===Model.ADD_BTN){appendButtons(Model.FAVS_ADD_BTN_HTML,Model.ADD_FAV_SEL,container,insertAfter,insertAfterSel);
return $(container).find(".add-favourite")
}break;
default:return null
}}}};
return{getView:function getView(){return View
},updateButtonState:View.updateButtonState,setWaiting:View.setWaiting,setAdded:View.setAdded,setNormal:View.setNormal}
})(jQuery);
C4.ButtonManager.Controller=(function($){var Model=C4.ButtonManager.Model,View=C4.ButtonManager.View.getView(),Helper={addButtons:function addButtons(type,buttonType,container,insertAfter,insertAfterSel){var $buttons=View.delegateAppend(type,buttonType,container,insertAfter,insertAfterSel);
Event.delegateBind(type,buttonType,$buttons);
Helper.updateButtons($buttons)
},updateAllButtons:function updateAllButtons(){var $buttons=$(".add-playlist, .add-favourite");
Helper.updateButtons($buttons)
},updateButtons:function updateButtons($buttons){var playlistItem=null,favItem=null,programmeId=null,brandWst=null,$button=null;
if($buttons){$buttons.each(function(){$button=$(this);
if($button.hasClass("add-playlist")){programmeId=$button.parent().attr("data-wsprogrammeid");
playlistItem=My4od.Helper.getItem(Model.PLAYLIST,Model.PLAYLIST_UNIQUE_PROP,programmeId);
if(playlistItem){View.updateButtonState($button,Model.ADDED)
}else{View.updateButtonState($button,Model.NORMAL)
}}else{if($button.hasClass("add-favourite")){brandWst=$button.parent().data("brandwst");
favItem=My4od.Helper.getItem(Model.FAVS,Model.FAVS_UNIQUE_PROP,brandWst);
if(favItem){View.updateButtonState($button,Model.ADDED)
}else{View.updateButtonState($button,Model.NORMAL)
}}}})
}}},Event={delegateBind:function delegateBind(type,buttonType,$buttons){var bindButtons=function(eventHandler){var $button=null;
$.each($buttons,function(){$(this).unbind("click").bind("click",eventHandler)
})
};
switch(type){case Model.HISTORY:if(buttonType===Model.REMOVE_BTN){bindButtons(C4.History.Controller.removeClick)
}break;
case Model.PLAYLIST:if(buttonType===Model.ADD_BTN){bindButtons(C4.Playlist.Controller.addClick)
}else{if(buttonType===Model.REMOVE_BTN){bindButtons(C4.Playlist.Controller.removeClick)
}}break;
case Model.FAVS:if(buttonType===Model.ADD_BTN){bindButtons(C4.Favourites.Controller.addClick)
}else{if(buttonType===Model.REMOVE_BTN){bindButtons(C4.Favourites.Controller.removeClick)
}}break;
default:break
}}};
return{updateAllButtons:Helper.updateAllButtons,addButtons:Helper.addButtons,updateButtons:Helper.updateButtons}
})(jQuery);
