if(typeof fullfat.mvc==="undefined"){throw"Fullfat.mvc library is not defined"}var iplayer=function(){eval(fullfat.importModule("fullfat.core"));eval(fullfat.importModule("fullfat.iter"));eval(fullfat.importModule("fullfat.async"));eval(fullfat.importModule("fullfat.utils"));eval(fullfat.importModule("fullfat.dom","dom"));eval(fullfat.importModule("fullfat.animations"));eval(fullfat.importModule("fullfat.mvc"));loadConstants("CMD_OK","CMD_WAIT","CMD_ERROR","CMD_TRUE","CMD_FALSE","CMD_TEST");eval(exportConstants());var ac=ApplicationController();ac.registerRequestAdapter(function(href,data){data=data||{};var request,args=[];switch(true){case (href==="init"):request="Init";break;case (/^#(availability|categories|tv|search|home|help|privacy|terms|contactus|settings)$/.test(href)):request=RegExp.$1.capitalise();break;case (/^#(episode)\/(\w+)/.test(href.toString())):request="Episode";data.pid=RegExp.$2;break;case (/^#(search)\/(.+)/.test(href)):request="SearchResults";data.listingKey="search";data.querystring=RegExp.$2;break;case (/^#(tv)\/(.+)\/(.+)$/.test(href)):request="Listing";data.listingType="schedule";var args=href.split("/");args.splice(0,1);data.listingKey=args;break;default:var args=href.split("/");request="Listing";data.listingType="listing";var arg=args.splice(0,1);data.listingKey=(args.length>1)?args:arg[0].split("#")[1]}return["reqGet"+request,data]});var iplayer={};ac.loadRequestMap("reqGetAvailability",{cmdGetAvailability:{CMD_WAIT:{state:"stateRequestingAvailability"},CMD_TRUE:{cmdGetAvailability:{CMD_OK:{state:"stateAvailabilityLoaded"}}},CMD_FALSE:{state:"stateAvailabilityFailed"}}});ac.loadRequestMap("reqGetCategories",{cmdGetCategories:{CMD_TRUE:{state:"stateDisplayCategories"},CMD_FALSE:{cmdLoadCategories:{CMD_WAIT:{state:"stateLoadingCategories"},CMD_TRUE:{cmdGetCategories:{CMD_TRUE:{state:"stateCategoriesLoaded"}}},CMD_FALSE:{state:"stateCategoriesFailed"}}}}});ac.loadRequestMap("reqGetContactus",{state:"stateContactUsOpen"});ac.loadRequestMap("reqGetAvailability",{cmdGetAvailability:{CMD_WAIT:{state:"stateRequestingAvailability"},CMD_TRUE:{cmdGetAvailability:{CMD_OK:{state:"stateAvailabilityLoaded"}}},CMD_FALSE:{state:"stateAvailabilityFailed"}}});ac.loadRequestMap("reqGetEpisode",{cmdGetEpisode:{CMD_TRUE:{state:"stateDisplayEpisode"},CMD_FALSE:{cmdLoadEpisode:{CMD_WAIT:{state:"stateLoadingEpisode"},CMD_TRUE:{cmdGetEpisode:{CMD_TRUE:{state:"stateEpisodeLoaded"}}},CMD_FALSE:{state:"stateEpisodeFailed"}}}}});ac.loadRequestMap("reqGetHelp",{state:"stateHelpOpen"});ac.loadRequestMap("reqGetHome",{cmdGetHome:{CMD_TRUE:{state:"stateDisplayHome"},CMD_FALSE:{cmdLoadHome:{CMD_WAIT:{state:"stateLoadingHome"},CMD_TRUE:{cmdGetHome:{CMD_TRUE:{state:"stateHomeLoaded"}}},CMD_FALSE:{state:"stateHomeFailed"}}}}});ac.loadRequestMap("reqGetInit",{reqTestScreenDimensions:SYS_FORWARD,cmdGetDate:{CMD_WAIT:{state:"stateRequestingDate"},CMD_TRUE:{cmdGetDate:{CMD_OK:{state:"stateDateLoaded"}}},CMD_FALSE:{state:"stateDFailed"}}});ac.loadRequestMap("reqGetListing",{cmdGetListing:{CMD_TRUE:{state:"stateDisplayListing"},CMD_FALSE:{cmdLoadListing:{CMD_WAIT:{state:"stateLoadingListing"},CMD_TRUE:{cmdGetListing:{CMD_TRUE:{state:"stateListingLoaded"}}},CMD_FALSE:{state:"stateListingFailed"}}}}});ac.loadRequestMap("reqGetPrivacy",{state:"statePrivacyOpen"});ac.loadRequestMap("reqGetSearch",{state:"stateSearchOpen"});ac.loadRequestMap("reqGetSearchResults",{cmdLoadSearch:{CMD_WAIT:{state:"stateLoadingListing"},CMD_TRUE:{cmdGetListing:{CMD_TRUE:{state:"stateListingLoaded"}}},CMD_FALSE:{state:"stateListingFailed"}}});ac.loadRequestMap("reqGetSettings",{state:"stateSettingsOpen"});ac.loadRequestMap("reqGetTerms",{state:"stateTermsOpen"});ac.loadRequestMap("reqGetTv",{state:"stateTvOpen"});ac.loadRequestMap("reqTestScreenDimensions",{state:"stateUpdateScreenDimensions"});ac.loadCommand("cmdGetAvailability",Command({execute:function(data){var ims=iplayer.mediaselector;var availability=ims.get(data.pid);if(!availability){ims.mtis(data.pid,data.stream);this._continue(ims,"success",CMD_TRUE);this._continue(ims,"fail",CMD_FALSE);return CMD_WAIT}data.availability=availability;return CMD_OK}}));ac.loadCommand("cmdGetCategories",Command({execute:function(data){var listing=iplayer.feeds.get("categories");if(!listing){return CMD_FALSE}data.listing=listing;return CMD_TRUE}}));ac.loadCommand("cmdGetDate",Command({execute:function(data){var ipd=iplayer.date;var date=ipd.get();if(!date){ipd.getDate();this._continue(ipd,"success",CMD_TRUE);this._continue(ipd,"fail",CMD_FALSE);return CMD_WAIT}data.date=date;return CMD_OK}}));ac.loadCommand("cmdGetEpisode",Command({execute:function(data){var episode=iplayer.feeds.get(data.pid,"episode");if(!episode){return CMD_FALSE}data.episode=episode;data.morelikethis=iplayer.feeds.get(data.pid,"morelikethis");return CMD_TRUE}}));ac.loadCommand("cmdGetHome",Command({execute:function(data){var featured=iplayer.feeds.get("featured",10);if(!featured){return CMD_FALSE}data.featured=featured;data.mostpopular=iplayer.feeds.get("mostpopular",10);return CMD_TRUE}}));ac.loadCommand("cmdGetListing",Command({execute:function(data){var listing=iplayer.feeds.get(data.listingKey);if(!listing){return CMD_FALSE}data.listing=listing;return CMD_TRUE}}));ac.loadCommand("cmdLoadCategories",Command({execute:function(data){var ipf=iplayer.feeds;ipf.feed("categories");this._continue(ipf,"feedListLoaded",CMD_TRUE);this._continue(ipf,"feedListFailed",CMD_FALSE);return CMD_WAIT}}));ac.loadCommand("cmdLoadEpisode",Command({execute:function(data){var ipf=iplayer.feeds;ipf.episode(data.pid);ipf.moreLikeThis(data.pid);this._continue(ipf,"feedListLoaded",CMD_TRUE);this._continue(ipf,"feedListFailed",CMD_FALSE);return CMD_WAIT}}));ac.loadCommand("cmdLoadHome",Command({execute:function(data){var ipf=iplayer.feeds;ipf.feed("featured",10);ipf.feed("mostpopular",10);this._continue(ipf,"feedListLoaded",CMD_TRUE);this._continue(ipf,"feedListFailed",CMD_FALSE);return CMD_WAIT}}));ac.loadCommand("cmdLoadListing",Command({execute:function(data){var ipf=iplayer.feeds;switch(true){case (data.listingType==="schedule"):ipf.schedule(data.listingKey);break;case (/(featured|mostpopular)/.test(data.listingKey)):ipf.feed(data.listingKey);break;default:ipf.listing(data.listingType,data.listingKey)}this._continue(ipf,"feedListLoaded",CMD_TRUE);this._continue(ipf,"feedListFailed",CMD_FALSE);return CMD_WAIT}}));ac.loadCommand("cmdLoadSearch",Command({execute:function(data){var ipf=iplayer.feeds;ipf.search(data.querystring);this._continue(ipf,"feedListLoaded",CMD_TRUE);this._continue(ipf,"feedListFailed",CMD_FALSE);return CMD_WAIT}}));iplayer.WidgetPageView=function(){var proto=WidgetPageView({_togglePanel:function(e){if(e.target.nodeName==="A"){var href=e.target.getAttribute("href").toString().split("#")[1];if(/panel-/.test(href)){var d=fullfat.dom.get("p-"+href);var type=d.hasClass("active")?"remove":"add";d[type+"Class"]("active");e.target[type+"Class"]("active");e.preventDefault()}}},_loadListing:function(e){if(e.target.className==="load-listing"){this.getRequest(e.target.getAttribute("href"),{title:e.target.getAttribute("title")})}},_loadEpisode:function(e){var t=(e.target.nodeName==="IMG")?e.target.parentNode:e.target;if(t.hasAttribute("href")&&(/#episode\//.test(t.getAttribute("href").toString()))){this.getRequest(t.getAttribute("href"))}},_back:function(e){var p=this.getPreviousUrl();this.getRequest("#"+e.target.href.toString().split("#")[1],p[1])}});return function(def){var v=fullfat.core.object(proto,def);if(typeof v.__init__==="function"){v.__init__()}return v}}();ac.loadView("viewBody",iplayer.WidgetPageView({firstPage:function(){this.setCurrentUrl(window.location.hash?window.location.hash.toString():"#home",null);if(/(iPhone|iPod)/.test(navigator.userAgent)){this._className=document.body.className="iphone"}else{this._className=document.body.className="n95"}},stateUpdateScreenDimensions:function(data){var screenWidth=window.innerWidth===0?document.body.offsetWidth:window.innerWidth;var screenHeight=window.innerHeight===0?document.body.offsetHeight:window.innerHeight;this.setDimensions(screenWidth,screenHeight);window.onresize=arguments.callee.bind(this);if(typeof this.firstPage==="function"){this.firstPage();this.firstPage=null}if(screenWidth>screenHeight){document.body.className=this._className+" landscape"}else{document.body.className=this._className+" portrait"}}}));ac.loadView("viewCategories",iplayer.WidgetPageView({__init__:function(){var _self=this;this.root=dom.get("p-categories");this.root.addEventListener("click",function(e){_self._togglePanel(e);_self._loadListing(e);_self._loadEpisode(e)},false)},_getListingTitle:function(e){console.dir(e.target)},stateLoadingCategories:function(data){this.show();this.loading()},stateDisplayCategories:function(data){this.stateCategoriesLoaded(data);this.show()},stateCategoriesLoaded:function(data){this.loaded();this.root.innerHTML=data.listing}}));ac.loadView("viewContactUs",iplayer.WidgetPageView({__init__:function(){var _self=this;this.root=dom.get("p-contactus");this.root.addEventListener("click",function(e){_self._togglePanel(e)},false)},stateContactUsOpen:function(data){this.show();window.scrollTo(0,1)}}));ac.loadView("viewEpisode",iplayer.WidgetPageView({__init__:function(){var _self=this;this.root=dom.get("episode");this.root.addEventListener("click",function(e){_self._togglePanel(e)},false);if(!fullfat.cookie.get("BBCSafeSearch")){fullfat.cookie.set({name:"BBCSafeSearch",path:"/iplayer/mobile",value:"false",expires:90})}this.episode=true;this.iphone=/(iPhone|iPod)/.test(navigator.userAgent);dom.get("episode-back").addEventListener("click",function(e){_self._back(e)},false);dom.get("over16-back").addEventListener("click",function(e){dom.get("guidance-authorisation").removeClass("active");_self._back(e)},false);dom.get("over16-ok").onclick=function(){_self.testParentalGuidance();return false};this._rootUrl=(window.widget)?"http://www.bbc.co.uk/":""},testParentalGuidance:function(){if(!dom.get("over16").checked){dom.get("guidance-help-message").addClass("active")}else{dom.get("guidance-help-message").removeClass("active");dom.get("guidance-authorisation").removeClass("active");fullfat.cookie.set({name:"BBCSafeSearch",path:"/iplayer/mobile",value:"true",expires:90});observer.register("success",iplayer.device,"stateDeviceLoaded",this);iplayer.device.detect()}},stateLoadingEpisode:function(data){this.episode=false;this.morelikethis=false;this.show();this.loading()},stateDisplayEpisode:function(data){this.episode=false;this.morelikethis=false;this.stateEpisodeLoaded(data);this.show()},stateEpisodeLoaded:function(data){this.loaded();if(data.episode&&!this.episode){this.displayEpisode(data)}if(data.morelikethis&&!this.morelikethis){this.displayFeed(data)}},displayEpisode:function(data){this.loaded();if(this.iphone){dom.get("spacer").innerHTML=dom.inner(["img",{src:this._rootUrl+"/iplayer/framework/img/o.gif?"+randomNumber()}])}this._episodePid=data.pid;dom.get("episode-container").innerHTML=data.episode;var p=this.writePreviousUrl();var b=dom.get("episode-back");if(!p){b.parentNode.style.display="none"}else{b.href=p;b.parentNode.style.display="block"}if(!this.iphone&&fullfat.cookie.get("BBCMediaSettings")!=="true"){fullfat.cookie.set({name:"BBCMediaSettings",path:"/iplayer/mobile",value:"true",expires:90});dom.get("media-settings-warning").addClass("active");dom.get("close-media-settings-warning").onclick=function(){dom.get("media-settings-warning").removeClass("active");return false};var _self=this;dom.get("settings").onclick=function(e){_self.getRequest(e.target.getAttribute("href"))}}if(dom.get("guidance")!==null&&(fullfat.cookie.get("BBCSafeSearch")!=="true")){dom.get("guidance-authorisation").addClass("active");dom.get("guidance-message").innerHTML=dom.get("guidance").innerHTML;if(!p){p="#home"}dom.get("over16-back").href=p}else{observer.register("success",iplayer.device,"stateDeviceLoaded",this);iplayer.device.detect()}this.episode=true;window.scrollTo(0,1)},displayFeed:function(data){var node=dom.get("p-panel-morelikethis");node.innerHTML=data.morelikethis;this.morelikethis=true;forEach(node.getElementsByTagName("a"),function(a){a.style.backgroundPosition="0px 1px";if(a.className==="text-link"&&a.innerHTML.length>30){a.innerHTML=a.innerHTML.slice(0,29)+"..."}});forEach(node.getElementsByTagName("p"),function(p){if(p.className==="episode-title"&&p.innerHTML.length>30){p.innerHTML=p.innerHTML.slice(0,29)+"..."}})},stateAvailabilityLoaded:function(data,state){var pid=dom.get("version").getAttribute("pid");var data=iplayer.mediaselector.get(pid);var isAvailable=false;if(data.pids[pid]){isAvailable=data.pids[pid].result==="ok"?true:false}if(!isAvailable){dom.get("version").innerHTML="";dom.get("info-message").innerHTML="Sorry, this programme is currently unavailable.";dom.get("info-message").addClass("active")}else{if(this.iphone){var url=this._rootUrl+"/mediaselector/3/auth/iplayer_streaming_http_mp4/"+dom.get("version").getAttribute("pid")+"?"+randomNumber();dom.get("player-container").innerHTML="<embed  autoplay='true' src='"+url+"' type='video/mp4'></embed>"}else{var _self=this;var episodePid=this._episodePid;dom.get("version").onclick=function(){_self._sessionId=_self._sessionId||randomNumber();document.location=_self._rootUrl+"/mediaselector/4/sdp/"+dom.get("version").getAttribute("pid")+"/iplayer_streaming_n95_wifi"}}}},stateAvailabilityFailed:function(){dom.get("version").innerHTML="";dom.get("info-message").innerHTML="Sorry, there has been an error. Please try back later";dom.get("info-message").addClass("active")},stateDeviceLoaded:function(){var data=iplayer.device.get();if(data.IP_CONNTYPE==="wifi"&&data.IP_IS_UK_COMBINED==="yes"){observer.register("success",iplayer.mediaselector,"stateAvailabilityLoaded",this);observer.register("fail",iplayer.mediaselector,"stateAvailabilityFailed",this);iplayer.mediaselector.mtis(dom.get("version").getAttribute("pid"),this.iphone?"iplayer_streaming_http_mp4":"iplayer_streaming_n95_wifi")}else{if(data.IP_CONNTYPE==="wifi"){dom.get("version").innerHTML="";dom.get("info-message").innerHTML="Sorry, television programmes cannot be watched outside of the UK.";dom.get("info-message").addClass("active")}else{dom.get("version").innerHTML="";dom.get("info-message").innerHTML="Sorry, television programmes can only be watched over a wifi connection.";dom.get("info-message").addClass("active")}}}}));ac.loadView("viewFooter",WidgetPageView({__init__:function(){var _self=this;this.root=dom.get("footer");this.root.addEventListener("click",function(e){if(e.target.nodeName==="A"){_self.handle(e)}},false)},handle:function(e){this.getRequest(e.target.getAttribute("href"))}}));ac.loadView("viewHelp",iplayer.WidgetPageView({__init__:function(){var _self=this;this.root=dom.get("p-help");this.root.addEventListener("click",function(e){_self._togglePanel(e)},false)},stateHelpOpen:function(data){this.show()}}));ac.loadView("viewHome",iplayer.WidgetPageView({__init__:function(){var _self=this;this.root=dom.get("p-home");this.root.addEventListener("click",function(e){_self._loadListing(e);_self._loadEpisode(e)},false);var links=this.root.getElementsByTagName("a");for(var i=0,l=links.length;i<l;i++){var link=links[i];link.onclick=function(e){var href=e.target.getAttribute("href").toString().split("#")[1];var d=fullfat.dom.get("p-"+href);var type=d.hasClass("active")?"remove":"add";d[type+"Class"]("active");e.target[type+"Class"]("active");return false}}},stateLoadingHome:function(data){this.featured=false;this.mostpopular=false;this.show();this.loading()},stateDisplayHome:function(data){this.featured=false;this.mostpopular=false;this.stateHomeLoaded(data);this.show()},stateHomeLoaded:function(data){this.loaded();if(data.featured&&!this.featured){this.displayFeed(data,"featured","Featured")}if(data.mostpopular&&!this.mostpopular){this.displayFeed(data,"mostpopular","Most Popular")}},displayFeed:function(data,type,linkText){var node=dom.get("p-panel-"+type);node.innerHTML=data[type];this[type]=true;forEach(node.getElementsByTagName("a"),function(a){a.style.backgroundPosition="0px 1px";if(a.className==="text-link"&&a.innerHTML.length>30){a.innerHTML=a.innerHTML.slice(0,29)+"..."}});forEach(node.getElementsByTagName("p"),function(p){if(p.className==="episode-title"&&p.innerHTML.length>30){p.innerHTML=p.innerHTML.slice(0,29)+"..."}})}}));ac.loadView("viewListing",iplayer.WidgetPageView({__init__:function(){var _self=this;this.root=dom.get("listing");this.root.addEventListener("click",function(e){_self._loadEpisode(e)},false);this.listingContainer=dom.get("listing-container");dom.get("listing-back").addEventListener("click",function(e){_self._back(e)},false)},stateLoadingListing:function(data){this.show();this.loading()},stateDisplayListing:function(data){this.stateListingLoaded(data);this.show()},stateListingLoaded:function(data){this.loadListing(data)},loadListing:function(data){this.loaded();this.listingContainer.innerHTML=dom.inner(["h1",data.title])+data.listing;forEach(this.listingContainer.getElementsByTagName("a"),function(a){a.style.backgroundPosition="0px 1px";if(a.className==="text-link"&&a.innerHTML.length>30){a.innerHTML=a.innerHTML.slice(0,29)+"..."}});forEach(this.listingContainer.getElementsByTagName("p"),function(p){if(p.className==="episode-title"&&p.innerHTML.length>30){p.innerHTML=p.innerHTML.slice(0,29)+"..."}});var p=this.writePreviousUrl();var b=dom.get("listing-back");if(!p){b.parentNode.style.display="none"}else{b.href=p;b.parentNode.style.display="block"}}}));ac.loadView("viewMenu",WidgetPageView({__init__:function(){var _self=this;this.root=dom.get("menu");this.root.addEventListener("click",function(e){if(e.target.nodeName==="A"){_self.handle(e)}},false);this.links=this.root.getElementsByTagName("a")},handle:function(e){var id=e.target.getAttribute("href").split("#")[1];this.done=true;this.highlightMenu(id);this.getRequest(e.target.getAttribute("href"))},update:function(state,data){if(!this.done){var _self=this;setTimeout(function(){if(/(Home|Categories|Open)$/.test(state)){var id=window.location.hash?window.location.hash.toString().split("#")[1]:"home";if(id.indexOf("/")!==-1){id=id.split("/")[0]}if(id!=="episode"){_self.highlightMenu(id)}}},10)}else{this.done=false}},highlightMenu:function(id){forEach(this.links,function(a){a[(a.getAttribute("href").split("#")[1]===id?"add":"remove")+"Class"]("active")})}}));ac.loadView("viewPrivacy",iplayer.WidgetPageView({__init__:function(){var _self=this;this.root=dom.get("p-privacy");this.root.addEventListener("click",function(e){_self._togglePanel(e)},false)},statePrivacyOpen:function(data){this.show();window.scrollTo(0,1)}}));ac.loadView("viewSearch",iplayer.WidgetPageView({__init__:function(){var _self=this;this.root=dom.get("p-search");this.root.addEventListener("click",function(e){if(e.target.getAttribute("type")==="button"){_self.search()}},false);this.searchData=dom.get("search-data")},search:function(){var url="search/"+this.searchData.value.replace(/ /g,"+");this.getRequest("#"+url,{title:this.searchData.value});window.location.hash=url},stateSearchOpen:function(data){this.searchData.value="";this.show()}}));ac.loadView("viewSettings",iplayer.WidgetPageView({__init__:function(){var _self=this;this.root=dom.get("p-settings");dom.get("settings-back").addEventListener("click",function(e){_self._back(e)},false)},stateSettingsOpen:function(data){this.show();dom.get("settings-back").href=this.writePreviousUrl()}}));ac.loadView("viewTerms",iplayer.WidgetPageView({__init__:function(){var _self=this;this.root=dom.get("p-terms");this.root.addEventListener("click",function(e){_self._togglePanel(e)},false)},stateTermsOpen:function(data){this.show()}}));ac.loadView("viewTv",iplayer.WidgetPageView({__init__:function(){var _self=this;this.root=dom.get("p-tv");this.root.addEventListener("click",function(e){_self._togglePanel(e);_self._loadListing(e)},false)},stateDateLoaded:function(data){this._buildDateFilters(data.date)},stateTvOpen:function(data){this.show()},_buildDateFilters:function(date){var days=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var suffix={1:"st",2:"nd",3:"rd",21:"st",22:"nd",23:"rd",31:"st"};var dates=[];var getSuffix=function(day){if(suffix[day]){return suffix[day]}return"th"};var i=0;while(i<8){var d=new Date(date.year,date.month-1,parseInt(date.day));d.setDate(d.getDate()-i);dates[i++]={year:d.getFullYear(),month:(d.getMonth()+1)<10?"0"+(d.getMonth()+1):(d.getMonth()+1),day:(d.getDate()<10?"0":"")+d.getDate(),shortDay:d.getDate(),dayOfWeek:days[d.getDay()],shortDayOfWeek:days[d.getDay()].substr(0,3)}}forEach(this.root.getElementsByTagName("h1"),function(channelHeader){var channelLink=channelHeader.getElementsByTagName("a")[0];var channelName=channelLink.innerHTML;var channelId=channelLink.getAttribute("href").split("-")[1];var channel=dom.get(channelId+"-container");channel.innerHTML=reduce(new String(),dates,function(str,date,i){var txt=(i===0)?"Today":date.shortDayOfWeek+"<br />"+date.shortDay+getSuffix(date.shortDay);return(str+=dom.inner(["a",{"class":"load-listing",href:"#tv/"+channelId+"/"+date.year+date.month+date.day,title:channelName+" "+date.dayOfWeek+" "+parseInt(date.day)+getSuffix(date.shortDay)},txt]))})})}}));iplayer.date=function(){var _root=(window.widget)?"http://www.bbc.co.uk/mobile/con/":"/mobile/con/";var _data=Cache();return{getDate:function(){this._load("date",_root+"json_date.shtml")},_load:function(id,url){var l=Xhr.get("json",url);l.onResponse(function(data){_data.addItem(id,data,true);this.success()}.bind(this));l.onError("fail",this)},get:function(){var id="date";if(_data.hasItem(id)){var d=_data.getItem(id);_data.clearItem(id);return d}return false},fail:function(){return true},success:function(){return true}}}();iplayer.device=function(){var _root=(window.widget)?"http://www.bbc.co.uk/mobile/con/":"/mobile/con/";var _data=Cache();return{detect:function(pid,type){this._load(pid,_root+"authorisation2.shtml")},_load:function(id,url){var l=Xhr.get("json",url);l.onResponse(function(data){_data.addItem(id,data,true);this.success()}.bind(this));l.onError("fail",this)},get:function(id){if(_data.hasItem(id)){var d=_data.getItem(id);_data.clearItem(id);return d}return false},fail:function(){return true},success:function(){return true}}}();iplayer.feeds=function(){var _root=(window.widget)?"http://www.bbc.co.uk/iplayer/widget/":"/iplayer/widget/";var _path={categories:"categorysplash/",listing:"listview/category/",episode:"episodedetail/episode/",morelikethis:"morelikethis/episode/",search:"search/",featured:"featured/",mostpopular:"mostpopular/",schedule:"schedule/service/"};var _template={categories:"mobile",listing:"mobile",featured:"mobile",mostpopular:"mobile",episode:"mobile",morelikethis:"mobile",search:"mobile",schedule:"mobile"};var _args={childrens:{index:9100001,activities:9200001,animation:9200999,drama:9200003,entertainment_and_comedy:9200002,factual:9200004,games_and_quizzes:9200998,music:9200005,news:9200006,sport:9200007},drama:{index:9100003,action_adventure:9200015,biographical:9200016,classic_and_period:9200017,crime:9200018,historical:9200021,horror_supernatural:9200022,legal_courtroom:9200023,medical:9200025,musical:9200026,political:9200028,psychological:9200029,spiritual:9200030,relationships_romance:9200031,scifi_fantasy:9200032,soaps:9200033,thriller:9200034,war_disaster:9200035,western:9200036},entertainment:{index:9100099,games_and_quizzes:9200996,review_shows:9200995,makeovers:9200994,phone_ins:9200993,reality:9200992,talk_shows:9200997,talent_shows:9200991,variety_shows:9200990},comedy:{index:9100098,impressionists:9200989,satire:9200988,sitcoms:9200987,sketch:9200986,spoof:9200985,standup:9200984},factual:{index:9100005,arts_culture_and_the_media:9200041,pets_and_animals:9200042,antiques:9200043,beauty_and_style:9200044,life_stories:9200045,money:9200046,cars_and_motors:9200047,cinema:9200048,consumer:9200049,families_and_relationships:9200051,food_and_drink:9200052,health_and_wellbeing:9200054,history:9200055,homes_and_gardens:9200056,crime_and_justice:9200057,politics:9200058,science_nature_and_environment:9200059,travel:9200060},music:{index:9100006,blues_soul_reggae:9200061,classic_pop_and_rock:9200062,classical:9200063,dance_electronica:9200064,easy_listening_soundtracks_musicals:9200065,experimental:9200066,folk_country:9200067,jazz:9200068,pop_chart:9200069,rock_indie:9200070,hip_hop_rnb_dancehall:9200071,world:9200072,country:9200110,desi:9200111,folk:9200112,jazz_blues:9200113,soul_reggae:9200114},sport:{index:9100010,football:9200073,cricket:9200074,rugby_union:9200075,rugby_league:9200076,tennis:9200077,golf:9200078,motorsport:9200079,boxing:9200080,athletics:9200081,snooker:9200082,horse_racing:9200083,cycling:9200084,badminton:9200085,basketball:9200086,bowls:9200087,darts:9200088,equestrian:9200089,hockey:9200090,ice_hockey:9200091,rowing:9200092,sailing:9200093,squash:9200094,swimming:9200095,commonwealth_games:9200096,winter_olympics:9200097,olympics:9200098,shinty:9200099,disability_sport:9200100,gaelic_games:9200101,gymnastics:9200102,judo:9200103,netball:9200104,shooting:9200105,table_tennis:9200106,triathlon:9200107,weightlifting:9200108,winter_sports:9200109},news_and_weather:{index:900004,news:9100007,weather:9100009},religion_and_ethics:{index:9100008}};var _getArgs=function(keys){if(!keys instanceof Array){return"/"}var parent=keys[0];var child="index";if(keys.length>1){parent=keys[0];child=keys[1]}return _args[parent][child]+"/"};var _getUrl=function(listingType,args,limit){return _root+_path[listingType]+args+"template/"+_template[listingType]+"/service_type/tv/"+(limit?"limit/"+limit+"/":"")};var _data=Cache(4);return{search:function(querystring){this._load("search",_getUrl("search",""),"q="+querystring)},feed:function(listingType,limit){this._load(listingType+(limit?limit:""),_getUrl(listingType,"",limit))},listing:function(listingType,listingKey){this._load(listingKey,_getUrl(listingType,_getArgs(listingKey)))},schedule:function(listingKey,limit){var url=_root+_path.schedule+listingKey[0]+"/date/"+listingKey[1]+"/template/"+_template.schedule+"/"+(limit?"limit/"+limit+"/":"");this._load(listingKey,url)},episode:function(pid){this._load(pid+"episode",_getUrl("episode",pid+"/"))},moreLikeThis:function(pid){this._load(pid+"morelikethis",_getUrl("morelikethis",pid+"/",10))},_load:function(id,url,querystring){var l=Xhr.get("html",url,querystring);l.onResponse(function(data){_data.addItem(id,data,true);this.feedListLoaded()}.bind(this));l.onError("feedListFailed",this)},get:function(id,limit){id=id+(limit?limit:"");if(_data.hasItem(id)){return _data.getItem(id)}return false},feedListFailed:function(){return true},feedListLoaded:function(){return true}}}();iplayer.mediaselector=function(){var _root=(window.widget)?"http://www.bbc.co.uk/mediaselector/4/":"/mediaselector/4/";var _data=Cache();return{mtis:function(pid,type){this._load(pid,_root+"json/stream/"+pid+"/"+type)},_load:function(id,url){var l=Xhr.get("json",url);l.onResponse(function(data){_data.addItem(id,data,true);this.success()}.bind(this));l.onError("fail",this)},get:function(id){if(_data.hasItem(id)){var d=_data.getItem(id);_data.clearItem(id);return d}return false},fail:function(err){return true},success:function(){return true}}}();ac.run("init");ac.run(window.location.hash?window.location.hash.toString():"#home")}();