public SearchResult ParseTransaction(SearchResult sr, JObject json, TransactionType type)
        {
            if (sr == null)
                sr = new SearchResult();
            return sr; // Not supported yet
            //try
            //{
            //    sr.Total = json["total"].ToObject<int>();
            //    if (sr.Total > 0)
            //    {
            //        sr.Offset = json["args"]["offset"].ToObject<int>();
            //        sr.Count = json["args"]["count"].ToObject<int>();

            //        JToken token = json["listings"];
            //        for (int i = 0; i < token.Count(); i++)
            //        {
            //            int dataId = token[i]["data_id"].ToObject<int>();

            //            HotItem item = new HotItem(dataId)
            //            {
            //                Name = token[i]["name"].ToObject<String>(),
            //                UnitPrice = token[i]["unit_price"].ToObject<int>(),
            //                ImgUri = token[i]["img"].ToObject<String>(),
            //                Quantity = token[i]["quantity"].ToObject<int>(),
            //                SaleVolume = token[i]["sale_availability"].ToObject<int>(),
            //                BuyVolume = token[i]["offer_availability"].ToObject<int>(),
            //                DateTimeStamp = token[i]["created"].ToObject<String>()
            //            };
            //            //if (TransactionType == Notifier.TransactionType.Buying || TransactionType == Notifier.TransactionType.Selling)
            //            //{
            //            //    item.Crawl(); // we crawl buy and sell listing
            //            //}
            //            sr.Items.Add(item);
            //        }
            //    }
            //}
            //catch (Exception ex)
            //{
            //    Debug.WriteLine(ex);
            //}
            //return sr;
            //GroupItems();
        }
        void transactionScraper_Finished(object sender, ScrapeFinishedEventArgs e)
        {
            var result = new SearchResult(e.Value, e.Arg.ToString(), e.Uri, JsonResultType.Transactions, e.TransactionType);

            for (int i = 0; i < Items.Count; i++)
            {
                for (int j = 0; j < result.Items.Count; j++)
                {
                    if (Items[i].DataId == result.Items[j].DataId)
                    {
                        result.Items[j].Notify = Items[i].Notify;
                    }
                }
            }
            MainWindowViewModel.Dispatcher.BeginInvoke(new Action(() =>
                        {
                            for (int i = 0; i < result.Items.Count; i++)
                            {
                                result.Items[i].IsExpanded = false;
                                var item = Items.FirstOrDefault(x => x.DataId == result.Items[i].DataId);
                                if (item == null)
                                {

                                    Items.Add(result.Items[i]);

                                }
                                else
                                {
                                    for (int j = 0; j < result.Items[i].Items.Count; j++)
                                    {
                                        var innerItem = item.Items.FirstOrDefault(x => x.ListingId == result.Items[i].Items[j].ListingId);
                                        if (innerItem == null)
                                        {
                                            var child = result.Items[i].Items[j];
                                            item.Items.Add(child);
                                            item.GroupItem(child, item.Items);
                                        }
                                    }
                                }
                            }
                        }));

            //Items = new ObservableCollection<HotItem>(result.Items);

            if (HotItemController.Config.IsTransactionNotificationEnabled)
            {
                FindBoughtAndSoldItems(TransactionType, Items.ToList());
            }
        }
        public SearchResult ParseSearch(SearchResult sr, JObject json)
        {
            if (sr == null)
                sr = new SearchResult();

            try
            {
                sr.Count = json["count"].ToObject<int>();

                int page = json["page"].ToObject<int>();
                if (page == 0)
                    page++;
                page--;// Yeah that makes sense \o/

                sr.Offset = page * ItemsPerPage + 1;
                sr.Total = json["total"].ToObject<int>();
                JToken token = json["results"];
                for (int i = 0; i < token.Count(); i++)
                {
                    int dataId = token[i]["data_id"].ToObject<int>();
                    string name = token[i]["name"].ToObject<String>();
                    string imgUri = token[i]["img"].ToObject<String>();
                    HotItem item = new HotItem(dataId)
                    {
                        Name = name,
                        SellPrice = token[i]["min_sale_unit_price"].ToObject<int>(),
                        BuyPrice = token[i]["max_offer_unit_price"].ToObject<int>(),
                        BuyVolume = token[i]["offer_availability"].ToObject<long>(),
                        SaleVolume = token[i]["sale_availability"].ToObject<long>(),
                        DateTimeStamp = token[i]["price_last_changed"].ToObject<String>(),
                        Rarity = token[i]["rarity"].ToObject<int>(),
                        ImgUri = imgUri,
                        Quantity = token[i]["sale_availability"].ToObject<int>(),
                        Level = token[i]["restriction_level"].ToObject<int>()
                    };

                    sr.Items.Add(item);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }

            return sr;
        }