public async void LoadData()
        {
            IsDataLoaded = false;

            OnAir = await RadioBox2Service.GetNowOnAir(Item.Channel.ToString());
            Broadcast = await RadioBox2Service.GetCurrentBroadcast(Item.Channel.ToString());

            if (_nowOnAirRefreshTimer == null)
            {
                _nowOnAirRefreshTimer = new DispatcherTimer();
                _nowOnAirRefreshTimer.Interval = DateTime.Now.AddMilliseconds(30000) - DateTime.Now;
                _nowOnAirRefreshTimer.Tick += new EventHandler<object>(LoadOnAir);
                _nowOnAirRefreshTimer.Start();
            }

            if (_broadcastRefreshTimer == null)
            {
                _broadcastRefreshTimer = new DispatcherTimer();
                _broadcastRefreshTimer.Interval = DateTime.Now.AddMilliseconds(120000) - DateTime.Now;
                _broadcastRefreshTimer.Tick += new EventHandler<object>(LoadBroadcast);
                _broadcastRefreshTimer.Start();
            }

            LoadProgramme();
            IsDataLoaded = true;
        }
        public async void LoadBroadcast(object sender, object e)
        {
            if (_broadcastRefreshTimer != null && _broadcastRefreshTimer.IsEnabled)
            {
                _broadcastRefreshTimer.Stop();
                _broadcastRefreshTimer = null;
            }

            int Id = 0;
            if (Broadcast != null)
            {
                Id = Broadcast.Id;
            }
            Broadcast = await RadioBox2Service.GetCurrentBroadcast(Item.Channel.ToString());

            if (Id != Broadcast.Id) LoadProgramme();

            _broadcastRefreshTimer = new DispatcherTimer();
            _broadcastRefreshTimer.Interval = DateTime.Now.AddMilliseconds(120000) - DateTime.Now;
            _broadcastRefreshTimer.Tick += new EventHandler<object>(LoadBroadcast);
            _broadcastRefreshTimer.Start();
        }
        public async static Task<Broadcast> GetCurrentBroadcast(string channelId)
        {
            var client = new HttpClient();
            string message;

            try
            {
                Broadcast currentBroadcast = new Broadcast();
                var response = await client.GetStringAsync(BASE_URL + "broadcast/search.json?q=channel.id:'" + channelId + "'%20AND%20startdatetime<NOW%20AND%20stopdatetime>NOW&t=" + DateTime.Now);

                try
                {
                    JObject jObject = JObject.Parse(response);
                    JObject result = (JObject)((JArray)jObject["results"])[0];
                    currentBroadcast.Id = (int)result["id"];
                    currentBroadcast.TotalResults = jObject["total-results"].ToString();
                    currentBroadcast.ProgrammeId = result["programme"].ToString();
                    currentBroadcast.ProgrammeName = result["name"].ToString();
                    currentBroadcast.ProgrammeImage = result["image"]["url"].ToString();

                    if (jObject["description"] == null)
                    {
                        var responseProgramme = await client.GetStringAsync(BASE_URL + "programme/rest/" + currentBroadcast.ProgrammeId + ".json");
                        JObject programmeObject = JObject.Parse(responseProgramme);
                        currentBroadcast.ProgrammeDescription = WebUtility.HtmlDecode(programmeObject["description"].ToString());
                    }
                    else
                    {
                        currentBroadcast.ProgrammeDescription = WebUtility.HtmlDecode(result["description"].ToString());
                    }
                    
                    currentBroadcast.ProgrammeDescription = Regex.Replace(currentBroadcast.ProgrammeDescription, @"<(.|\n)*?>", string.Empty);
                    currentBroadcast.BroadcasterName = result["broadcaster"]["name"].ToString();
                    currentBroadcast.BroadcastStart = result["startdatetime"].ToString();
                    currentBroadcast.BroadcastEnd = result["stopdatetime"].ToString();

                    DateTime startDate = DateTime.Parse(currentBroadcast.BroadcastStart);
                    DateTime stopDate = DateTime.Parse(currentBroadcast.BroadcastEnd);
                    string startStopTime = RadioBox2Service.setLength(startDate.Hour.ToString(), 2) + ":" + RadioBox2Service.setLength(startDate.Minute.ToString(), 2) + " - " + RadioBox2Service.setLength(stopDate.Hour.ToString(), 2) + ":" + RadioBox2Service.setLength(stopDate.Minute.ToString(), 2);
                    currentBroadcast.BroadcastTimes = startStopTime;

                    currentBroadcast.Presenters = "";
                    if (result["presenter"] != null)
                    {
                        JArray presenters = (JArray)result["presenter"];

                        for (int i = 0; i < presenters.ToArray().Length; i++)
                        {
                            JObject presenter = (JObject)presenters[i];
                            currentBroadcast.Presenters += presenter["full_name"];
                            if (presenters.ToArray().Length - 2 > i) currentBroadcast.Presenters += ", ";
                            if (presenters.ToArray().Length - 2 == i) currentBroadcast.Presenters += " & ";
                        }
                    }
                
                    if (result["item"] != null)
                    {
                        foreach (JObject item in result["item"])
                        {
                            currentBroadcast.Items.Add(item);
                        }
                    }

                    if (currentBroadcast.ProgrammeDescription.Equals(""))
                    {
                        response = await client.GetStringAsync(BASE_URL + "programme/rest/" + currentBroadcast.ProgrammeId + ".json");
                        jObject = JObject.Parse(response);
                        currentBroadcast.ProgrammeDescription = WebUtility.HtmlDecode(jObject["description"].ToString());
                        currentBroadcast.ProgrammeDescription = Regex.Replace(currentBroadcast.ProgrammeDescription, @"<(.|\n)*?>", string.Empty);
                    }
                }
                catch { }

                return currentBroadcast;
            }
            catch (HttpRequestException hrex)
            {
                message = hrex.Message;
            }

            MessageBox.Show(string.Format(ResourceHelper.GetString("WebErrorMessage"), message));
            return new Broadcast()
            {
                BroadcasterName = "3FM",
                Presenters = "Onbekend",
                ProgrammeName = "Onbekend",
                ProgrammeDescription = "Er is geen informatie beschikbaar."
            };
        }