public IIMDbMovie GetMovieInfo(string imdbID)
        {
            string movieURL = _url + imdbID + "/";
            IMDbMovie movie = new IMDbMovie();

            string html = ToolBox.WebUtils.GetSiteContents(movieURL); //Old Code:  JCUtils.WebUtils.GET(movieURL);
            string trimmedHTML;
            string creditsURL = movieURL + "fullcredits";
            string longOverviewURL = movieURL + "plotsummary";
            string goofURL = movieURL + "goofs";
            string triviaURL = movieURL + "trivia";
            string quotesURL = movieURL + "quotes";

            // clean-up html (trim to area we are interested in)
            trimmedHTML = GetRegExString(html, _trimmedHTMLpattern);

            // Grab Title
            Match match = GetRegExMatch(trimmedHTML, _titlePattern);
            movie.IMDb_ID = imdbID;
            movie.Title = GetMatchValue(match, "Title", true);

            // Grab Year
            match = GetRegExMatch(trimmedHTML, _yearPattern);
            movie.Year = GetMatchValue(match, "Year", true);

            // Grab Release Date
            match = GetRegExMatch(trimmedHTML, _releaseDatePattern);
            movie.Release_Date = GetMatchValue(match, "ReleaseDate", true);

            // Grab Tagline
            match = GetRegExMatch(trimmedHTML, _taglinePattern);
            movie.Tagline = GetMatchValue(match, "Tagline", true);

            // Grab Runtime
            match = GetRegExMatch(trimmedHTML, _runtimePattern);
            string runtime = GetMatchValue(match, "Runtime", true);
            runtime = FixRuntime(runtime);
            movie.Runtime = runtime;

            // Grab Rating
            match = GetRegExMatch(trimmedHTML, _ratingPattern);
            movie.Rating = GetMatchValue(match, "Rating", true);

            // Grab Review
            match = GetRegExMatch(trimmedHTML, _reviewPattern);
            movie.Review = GetMatchValue(match, "Review", true);
            if (movie.Review.Contains("/"))
                movie.Review = movie.Review.Substring(0, movie.Review.IndexOf("/"));

            // Grab Studio
            match = GetRegExMatch(trimmedHTML, _studioPattern);
            movie.Studio = GetMatchValue(match, "Studio", true);

            // Grab Short Overview
            match = GetRegExMatch(html, _shortOverviewPattern);
            movie.OverviewShort = GetMatchValue(match, "ShortOverview", true);
            if (movie.OverviewShort.ToLower().EndsWith("more"))
                movie.OverviewShort = movie.OverviewShort.Substring(0, movie.OverviewShort.Length - 4).Trim();
            movie.OverviewShort = movie.OverviewShort.Trim() + "...";

            GetLongOverview(ref movie, longOverviewURL);

            GetDirectors(ref movie, trimmedHTML);

            GetWriters(ref movie, trimmedHTML);

            GetActors(ref movie, creditsURL);

            GetGenres(ref movie, trimmedHTML);

            GetTrivia(ref movie, triviaURL);

            GetGoofs(ref movie, goofURL);

            GetQuotes(ref movie, quotesURL);

            return movie;
        }
        public IMDbMovieCollection SearchMovies1(string title)
        {
            //declarations
            IMDbMovieCollection movies = new IMDbMovieCollection();
            string text1 = "", text2 = "", text3 = "";
            int num1 = 0, num2 = 0, num3 = 0;
            bool flag1 = false;

            try
            {

                #region get html
            retry_download_html:
                try
                {
                    text1 = ToolBox.WebUtils.GetSiteContents("http://www.imdb.com/find?s=tt&q=" + ToolBox.WebUtils.EncodeURL(title));
                    if (text1 == null || text1.Trim() == "")
                    {
                        if (num1 <= _retries)
                        {
                            num1++;
                            System.Threading.Thread.Sleep(2000);
                            goto retry_download_html;
                        }
                    }
                }
                catch
                {
                    if (num3 <= _retries)
                    {
                        num3 += 1;
                        System.Threading.Thread.Sleep(2000);
                        goto retry_download_html;
                    }
                }
                #endregion

                num1 = text1.ToLower().IndexOf("<b>popular titles");
                if (num1 > -1)
                {
                    num1 += 3;
                    num2 = text1.ToLower().IndexOf("more searches", num1);
                    if (num2 > -1)
                    {
                        text1 = text1.Substring(num1, (num2 - num1)).Trim();
                        flag1 = true;
                    }
                }
                else
                {
                    num1 = text1.ToLower().IndexOf("<b>titles");
                    if (num1 > -1)
                    {
                        num1 += 3;
                        num2 = text1.ToLower().IndexOf("more searches", num1);
                        if (num2 > -1)
                        {
                            text1 = text1.Substring(num1, (num2 - num1)).Trim();
                            flag1 = true;
                        }
                    }
                    else
                    {
                        flag1 = false;
                        num1 = text1.ToLower().IndexOf("<title>");
                        if (num1 > -1)
                        {
                            num1 += 7;
                            num2 = text1.ToLower().IndexOf("</title>", num1);
                            if (num2 > -1)
                            {
                                IMDbMovie movie = new IMDbMovie();
                                text2 = text1.Substring(num1, (num2 - num1)).Trim();
                                text2 = ToolBox.WebUtils.CleanUpHTML(text2, true).Trim();
                                text2 = ToolBox.WebUtils.FixString(text2).Trim();
                                num1 = text2.IndexOf("(");
                                if (num1 > -1)
                                {
                                    movie.Title = text2.Substring(0, num1).Trim();
                                    num1++;
                                    num2 = text2.IndexOf(")", num1);
                                    if (num2 > -1)
                                        movie.Year = text2.Substring(num1, (num2 - num1)).Trim();
                                }
                                num1 = text1.ToLower().IndexOf("/title/");
                                if (num1 > -1)
                                {
                                    num1 += 7;
                                    num2 = text1.ToLower().IndexOf("/", num1);
                                    if (num2 > -1)
                                    {
                                        movie.IMDb_ID = text1.Substring(num1, (num2 - num1)).Trim();
                                        movies.Add(movie);
                                    }
                                }
                            }
                        }
                    }
                }
                if (flag1)
                {
                    num1 = 0;
                    while (num1 > -1)
                    {
                    retry_title:
                        num1 = text1.ToLower().IndexOf("/title/", num1);
                        if (num1 > -1)
                        {
                            num1 += 7;
                            num2 = text1.ToLower().IndexOf("/", num1);
                            if (num2 > -1)
                            {
                                IMDbMovie movie = new IMDbMovie();
                                movie.IMDb_ID = text1.Substring(num1, (num2 - num1)).Trim();
                                num1 = text1.ToLower().IndexOf(">", num2);
                                if (num1 > -1)
                                {
                                    num1++;
                                    num2 = text1.ToLower().IndexOf("<", num1);
                                    if (num2 == num1)
                                    {
                                        goto retry_title;
                                    }
                                    if (num2 > -1)
                                    {

                                        text3 = text1.Substring(num1, (num2 - num1)).Trim();
                                        text3 = ToolBox.WebUtils.CleanUpHTML(text3, true).Trim();
                                        text3 = ToolBox.WebUtils.FixString(text3).Trim().Replace("(", "").Replace(")", "").Trim();
                                        num1 = text1.ToLower().IndexOf(">", num2);
                                        if (num1 > -1)
                                        {
                                            num1++;
                                            num2 = text1.ToLower().IndexOf("<", num1);
                                            if (num2 > -1)
                                            {
                                                text3 += " (";
                                                text3 += text1.Substring(num1, (num2 - num1)).Trim().Replace("(", "").Replace(")", "") + ")";
                                            }
                                        }
                                        num2 = text3.IndexOf("(");
                                        if (num2 > -1)
                                        {
                                            movie.Title = text3.Substring(0, num2).Trim();
                                            num2++;
                                            num3 = text3.IndexOf(")", num2);
                                            if (num3 > -1)
                                                movie.Year = text3.Substring(num2, (num3 - num2)).Trim();
                                        }
                                        movies.Add(movie);
                                    }
                                }
                            }
                        }
                    }
                }
                return movies;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void GetWriters(ref IMDbMovie movie, string html)
        {
            // Grab Writers
            string writerHTML = GetRegExString(html, _writerPattern);
            if (writerHTML.Trim() != "")
            {
                Match match = GetRegExMatch(writerHTML, _personPattern);
                while (match != null && match.Length > 0)
                {
                    string personID = GetMatchValue(match, "PersonURL", true);
                    if (personID.Trim() != "")
                    {
                        IIMDbPerson writer = movie.People.GetPersonByID(personID);
                        if (writer == null)
                        {
                            writer = new IMDbPerson();
                            movie.People.Add(writer);
                        }
                        writer.URL = personID;
                        writer.Name = GetMatchValue(match, "PersonName", true);
                        writer.IsWriter = true;

                        match = match.NextMatch();
                    }
                }
            }
        }
        public IMDbMovie GetMovieInfo1(string IMDbID)
        {
            IMDbMovie movie = new IMDbMovie();
            string text1 = "", text2 = "", text3 = "", personURL = "";
            int num1 = 0, num2 = 0, num3 = 0, num4 = 0, num5 = 0;
            bool flag1 = false;

            try
            {

                #region Get HTML
            retry_download_html:
                try
                {
                    text1 = ToolBox.WebUtils.GetSiteContents("http://www.imdb.com/title/" + IMDbID.Trim());
                    if (text1 == null || text1.Trim() == "")
                        if (num1 <= _retries)
                        {
                            num1++;
                            System.Threading.Thread.Sleep(2000);
                            goto retry_download_html;
                        }
                }
                catch
                {
                    if (num2 <= _retries)
                    {
                        System.Threading.Thread.Sleep(2000);
                        num2++;
                        goto retry_download_html;
                    }
                    else
                    {
                        return null;
                    }
                }
                #endregion

                #region Clear garbage
                num2 = text1.ToLower().IndexOf("<a href=\"/\">imdb</a>");
                if (num2 > -1)
                {
                    num2 += 20;
                    num3 = text1.ToLower().IndexOf("show more recommendations</a>", num2);
                    if (num3 > -1)
                    {
                        text1 = text1.Substring(num2, (num3 - num2)).Trim();
                        flag1 = true;
                    }
                }
                #endregion

                if (flag1)
                {
                    movie.IMDb_ID = IMDbID;

                    #region Get Title
                    //Get Title
                    text2 = "";
                    num2 = text1.ToLower().IndexOf(">");
                    if (num2 > -1)
                    {
                        num2++;
                        num3 = text1.ToLower().IndexOf("<", num2);
                        if (num3 > -1)
                        {
                            text2 = text1.Substring(num2, (num3 - num2)).Trim();
                            text2 = ToolBox.WebUtils.CleanUpHTML(text2, true).Trim();
                            text2 = ToolBox.WebUtils.FixString(text2).Trim();

                            num1 = text2.IndexOf("(");
                            if (num1 > -1)
                            {
                                text2 = text2.Substring(0, num1).Trim();
                            }
                            movie.Title = text2.Trim();
                        }
                    }
                    #endregion

                    #region Get Production Year
                    //Get Production Year
                    text2 = "";
                    num2 = text1.ToLower().IndexOf("/years/");
                    if (num2 > -1)
                    {
                        num2 += 7;
                        num3 = text1.ToLower().IndexOf("\"", num2);
                        if (num3 > -1)
                        {
                            text2 = text1.Substring(num2, (num3 - num2)).Trim();
                            text2 = ToolBox.WebUtils.CleanUpHTML(text2, true).Trim();
                            text2 = ToolBox.WebUtils.FixString(text2).Trim();
                            movie.Year = text2.Trim();
                        }
                    }
                    #endregion

                    #region Get Director(s)
                    //Get Director(s)
                    personURL = "";
                    text2 = "";
                    num2 = text1.ToLower().IndexOf("<h5>director");
                    if (num2 > -1)
                    {
                        num2++;
                        num3 = text1.ToLower().IndexOf("<h5>writer", num2);
                        if (num3 < 0)
                        {
                            num3 = text1.ToLower().IndexOf("<h5>genre", num2);
                        }
                        if (num3 > -1)
                        {
                            text2 = text1.Substring(num2, (num3 - num2)).Trim();
                            num2 = 0;
                            do
                            {
                                num2 = text2.ToLower().IndexOf("/name/", num2);
                                if (num2 > -1)
                                {
                                    num3 = text2.ToLower().IndexOf("\"", num2);
                                    if (num3 > -1)
                                    {
                                        personURL = text2.Substring(num2, (num3 - num2)).Trim();
                                    }
                                    num2++;
                                    num2 = text2.ToLower().IndexOf(">", num2);
                                    if (num2 > -1)
                                    {
                                        num2++;
                                        num3 = text2.ToLower().IndexOf("<", num2);
                                        if (num3 > -1)
                                        {
                                            text3 = text2.Substring(num2, (num3 - num2)).Trim();
                                            text3 = ToolBox.WebUtils.CleanUpHTML(text3, true).Trim();
                                            text3 = ToolBox.WebUtils.FixString(text3).Trim();
                                            IIMDbPerson person = movie.People.GetPersonByURL(personURL);
                                            if (person == null)
                                            {
                                                person = new IMDbPerson();
                                                movie.People.Add(person);
                                                person.Name = text3.Trim();
                                                person.URL = personURL;
                                            }
                                            person.IsDirector = true;
                                            personURL = "";
                                        }
                                    }
                                }
                            } while (num2 > -1);
                        }
                    }
                    #endregion

                    #region Get Writer(s)
                    //Get Writer(s)
                    personURL = "";
                    text2 = "";
                    num2 = text1.ToLower().IndexOf("<h5>writer");
                    if (num2 > -1)
                    {
                        num2++;
                        num3 = text1.ToLower().IndexOf("<h5>genre", num2);
                        if (num3 > -1)
                        {
                            text2 = text1.Substring(num2, (num3 - num2)).Trim();
                            num2 = 0;
                            do
                            {
                                num2 = text2.ToLower().IndexOf("/name/", num2);
                                if (num2 > -1)
                                {
                                    num3 = text2.ToLower().IndexOf("\"", num2);
                                    if (num3 > -1)
                                    {
                                        personURL = text2.Substring(num2, (num3 - num2)).Trim();
                                    }
                                    num2++;
                                    num2 = text2.ToLower().IndexOf(">", num2);
                                    if (num2 > -1)
                                    {
                                        num2++;
                                        num3 = text2.ToLower().IndexOf("<", num2);
                                        if (num3 > -1)
                                        {
                                            text3 = text2.Substring(num2, (num3 - num2)).Trim();
                                            text3 = ToolBox.WebUtils.CleanUpHTML(text3, true).Trim();
                                            text3 = ToolBox.WebUtils.FixString(text3).Trim();
                                            IIMDbPerson person = movie.People.GetPersonByURL(personURL);
                                            if (person == null)
                                            {
                                                person = new IMDbPerson();
                                                movie.People.Add(person);
                                                person.Name = text3.Trim();
                                                person.URL = personURL;
                                            }
                                            person.IsWriter = true;
                                            personURL = "";
                                        }
                                    }
                                }
                            } while (num2 > -1);
                        }
                    }
                    #endregion

                    #region Get Genre(s)
                    //Get Genre(s)
                    text2 = "";
                    num2 = text1.ToLower().IndexOf("<h5>genre");
                    if (num2 > -1)
                    {
                        do
                        {
                            num2 = text1.ToLower().IndexOf("/genres/", num2);
                            if (num2 > -1)
                            {
                                num2++;
                                num2 = text1.ToLower().IndexOf(">", num2);
                                if (num2 > -1)
                                {
                                    num2++;
                                    num3 = text1.ToLower().IndexOf("<", num2);
                                    if (num3 > -1)
                                    {
                                        text2 = text1.Substring(num2, (num3 - num2)).Trim();
                                        text2 = ToolBox.WebUtils.CleanUpHTML(text2, true).Trim();
                                        text2 = ToolBox.WebUtils.FixString(text2).Trim();
                                        movie.Genres.Add(text2.Trim());
                                    }
                                }
                            }
                        } while (num2 > -1);
                    }
                    #endregion

                    #region Get Tagline
                    //Get Tagline
                    text2 = "";
                    num2 = text1.ToLower().IndexOf("tagline:");
                    if (num2 > -1)
                    {
                        num2 = text1.IndexOf(">", num2);
                        if (num2 > -1)
                        {
                            num2++;
                            num3 = text1.ToLower().IndexOf("<", num2);
                            if (num3 > -1)
                            {
                                text2 = text1.Substring(num2, (num3 - num2)).Trim();
                                text2 = ToolBox.WebUtils.CleanUpHTML(text2, true).Trim();
                                text2 = ToolBox.WebUtils.FixString(text2).Trim();
                                if (text2.ToLower().EndsWith("(more)"))
                                {
                                    text2 = text2.Substring(0, text2.Length - 6).Trim();
                                }
                                else
                                {
                                    text2 = text2.Trim();
                                }
                                num2 = text2.IndexOf("[");
                                if (num2 > -1)
                                {
                                    text2 = text2.Substring(0, num2);
                                }
                                movie.Tagline = text2.Trim();
                            }
                        }
                    }
                    #endregion

                    #region Get Overview
                    //Get Overview
                    text2 = "";
                    num2 = text1.ToLower().IndexOf("plot outline:");
                    if (num2 < 0)
                    {
                        num2 = text1.ToLower().IndexOf("plot summary:");
                    }
                    if (num2 > -1)
                    {
                        num2 = text1.IndexOf(">", num2);
                        if (num2 > -1)
                        {
                            num2++;
                            num3 = text1.ToLower().IndexOf("<", num2);
                            if (num3 > -1)
                            {
                                text2 = text1.Substring(num2, (num3 - num2)).Trim();
                                text2 = ToolBox.WebUtils.CleanUpHTML(text2, true).Trim();
                                text2 = ToolBox.WebUtils.FixString(text2).Trim();
                                if (text2.ToLower().EndsWith("(more)"))
                                {
                                    movie.OverviewShort = text2.Substring(0, text2.Length - 6).Trim() + "...";
                                }
                                else
                                {
                                    movie.OverviewShort = text2.Trim();
                                }
                            }
                        }
                    }

                    text2 = "";
                    num2 = text1.ToLower().IndexOf("/" + IMDbID + "/plotsummary");
                    if (num2 > -1)
                    {
                        string plothtml = "";
                        string plottext = "";
                        try
                        {
                            plothtml = ToolBox.WebUtils.GetSiteContents("http://www.imdb.com/title/" + IMDbID + "/plotsummary");
                        }
                        catch
                        {
                            // do nothing
                        }
                        num2 = plothtml.ToLower().IndexOf("plotpar");
                        if (num2 > -1)
                        {
                            num2 = plothtml.IndexOf(">", num2);
                            if (num2 > -1)
                            {
                                num2++;
                                num3 = plothtml.ToLower().IndexOf("</p>", num2);
                                num4 = plothtml.ToLower().IndexOf("<i>", num2);
                                if (num3 > -1)
                                {
                                    if (num4 > -1 && num4 < num3)
                                    {
                                        plottext = plothtml.Substring(num2, (num4 - num2)).Trim();
                                        plottext = ToolBox.WebUtils.CleanUpHTML(plottext, true).Trim();
                                        plottext = ToolBox.WebUtils.FixString(plottext).Trim();
                                    }
                                    else if (num3 > -1)
                                    {
                                        plottext = plothtml.Substring(num2, (num3 - num2)).Trim();
                                        plottext = ToolBox.WebUtils.CleanUpHTML(plottext, true).Trim();
                                        plottext = ToolBox.WebUtils.FixString(plottext).Trim();
                                    }
                                }
                            }
                        }
                        if (plottext.Trim() != "")
                            movie.OverviewLong = plottext.Trim();
                    }
                    #endregion

                    #region Get Review
                    //Get Review
                    text2 = "";
                    num2 = text1.ToLower().IndexOf("user rating:");
                    if (num2 > -1)
                    {
                        num2 = text1.IndexOf("<b>", num2);
                        if (num2 > -1)
                        {
                            num2 += 3;
                            num3 = text1.ToLower().IndexOf("/", num2);
                            if (num3 > -1)
                            {
                                text2 = text1.Substring(num2, (num3 - num2)).Trim();
                                text2 = ToolBox.WebUtils.CleanUpHTML(text2, true).Trim();
                                text2 = ToolBox.WebUtils.FixString(text2).Trim();
                                movie.Review = text2.Trim();
                            }
                        }
                    }
                    #endregion

                    #region Get Actors
                    //Get Actors
                    string actorText = ToolBox.WebUtils.GetSiteContents("http://www.imdb.com/title/" + IMDbID.Trim() + "/fullcredits#cast");
                    personURL = "";
                    text2 = "";
                    num2 = actorText.ToLower().IndexOf("cast</a>");
                    if (num2 > -1)
                    {
                        num2++;
                        num3 = actorText.ToLower().IndexOf("produced by<", num2);
                        if (num3 > -1)
                        {
                            text2 = actorText.Substring(num2, (num3 - num2)).Trim();
                            num1 = 0;
                            num2 = 0;
                            do
                            {
                                if (num1 < _actorCount)
                                {
                                    num2 = text2.ToLower().IndexOf("/name/", num2);
                                    if (num2 > -1)
                                    {
                                        num5 = num2;
                                        num3 = text2.ToLower().IndexOf("\"", num2);
                                        if (num3 > -1)
                                            personURL = text2.ToLower().Substring(num2, (num3 - num2)).Trim();
                                        num2 = text2.ToLower().IndexOf(">", num2);
                                        if (num2 > -1)
                                        {
                                            num2++;
                                            num3 = text2.ToLower().IndexOf("<img", num2);
                                            if (num3 > -1)
                                            {
                                                if (num3 != num2)
                                                {
                                                    num3 = text2.IndexOf("<", num2);
                                                    if (num3 > -1 && num3 != num2)
                                                    {
                                                        text3 = text2.Substring(num2, (num3 - num2)).Trim();
                                                        text3 = ToolBox.WebUtils.CleanUpHTML(text3, true).Trim();
                                                        text3 = ToolBox.WebUtils.FixString(text3).Trim();
                                                        IIMDbPerson person = movie.People.GetPersonByURL(personURL);
                                                        if (person == null)
                                                        {
                                                            person = new IMDbPerson();
                                                            movie.People.Add(person);
                                                            person.Name = text3.Trim();
                                                            person.URL = personURL;
                                                        }
                                                        person.IsActor = true;

                                                        // get character roles
                                                        string sPersonID = personURL;
                                                        if (sPersonID.EndsWith("/"))
                                                            sPersonID = sPersonID.Substring(0, (sPersonID.Length - 1));
                                                        sPersonID = sPersonID.Substring((sPersonID.LastIndexOf("/") + 1));
                                                        num4 = text2.ToLower().IndexOf(" ... ", num3);
                                                        if (num4 > -1)
                                                        {
                                                            bool bCharacter = false;
                                                            num5 = text2.ToLower().IndexOf("/character/", num4);
                                                            if (num5 > -1)
                                                            {
                                                                if ((num5 - num4) < 50)
                                                                {
                                                                    bCharacter = true;
                                                                    num3 = text2.IndexOf(">", num5);
                                                                    if (num3 > -1)
                                                                    {
                                                                        num3++;
                                                                        num4 = text2.IndexOf("<", num3);
                                                                        if (num4 > -1)
                                                                        {
                                                                            text3 = text2.Substring(num3, (num4 - num3)).Trim();
                                                                            text3 = ToolBox.WebUtils.CleanUpHTML(text3, true).Trim();
                                                                            text3 = ToolBox.WebUtils.FixString(text3).Trim();
                                                                            person.AddRole(text3.Trim());
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                            if (bCharacter == false)
                                                            {
                                                                num3 = num4 + 10;
                                                                num3 = text2.IndexOf(">", num3);
                                                                if (num3 > -1)
                                                                {
                                                                    num3++;
                                                                    num4 = text2.ToLower().IndexOf("<", num3);
                                                                    if (num4 > -1)
                                                                    {
                                                                        text3 = text2.Substring(num3, (num4 - num3)).Trim();
                                                                        text3 = ToolBox.WebUtils.CleanUpHTML(text3, true).Trim();
                                                                        text3 = ToolBox.WebUtils.FixString(text3).Trim();
                                                                        person.AddRole(text3.Trim());
                                                                    }
                                                                    else
                                                                        person.AddRole("Unknown");
                                                                }
                                                                else
                                                                    person.AddRole("Unknown");
                                                            }
                                                        }
                                                        else
                                                            person.AddRole("Unknown");
                                                        num1++;
                                                    }
                                                }
                                                else
                                                {
                                                    num3++;
                                                    num3 = text2.ToLower().IndexOf("/name/", num3);
                                                    if (num3 > -1)
                                                    {
                                                        num2 = text2.IndexOf(">", num3);
                                                        if (num2 > -1)
                                                        {
                                                            num2++;
                                                            num3 = text2.IndexOf("<", num2);
                                                            if (num3 > -1 && num3 != num2)
                                                            {
                                                                text3 = text2.Substring(num2, (num3 - num2)).Trim();
                                                                text3 = ToolBox.WebUtils.CleanUpHTML(text3, true).Trim();
                                                                text3 = ToolBox.WebUtils.FixString(text3).Trim();
                                                                IIMDbPerson person = movie.People.GetPersonByURL(personURL);
                                                                if (person == null)
                                                                {
                                                                    person = new IMDbPerson();
                                                                    movie.People.Add(person);
                                                                    person.Name = text3.Trim();
                                                                    person.URL = personURL;
                                                                }
                                                                person.IsActor = true;

                                                                // get character roles
                                                                string sPersonID = personURL;
                                                                if (sPersonID.EndsWith("/"))
                                                                    sPersonID = sPersonID.Substring(0, (sPersonID.Length - 1));
                                                                sPersonID = sPersonID.Substring((sPersonID.LastIndexOf("/") + 1));
                                                                num4 = text2.ToLower().IndexOf(" ... ", num3);
                                                                if (num4 > -1)
                                                                {
                                                                    bool bCharacter = false;
                                                                    num5 = text2.ToLower().IndexOf("/character/", num4);
                                                                    if (num5 > -1)
                                                                    {
                                                                        if ((num5 - num4) < 50)
                                                                        {
                                                                            bCharacter = true;
                                                                            num3 = text2.IndexOf(">", num5);
                                                                            if (num3 > -1)
                                                                            {
                                                                                num3++;
                                                                                num4 = text2.IndexOf("<", num3);
                                                                                if (num4 > -1)
                                                                                {
                                                                                    text3 = text2.Substring(num3, (num4 - num3)).Trim();
                                                                                    text3 = ToolBox.WebUtils.CleanUpHTML(text3, true).Trim();
                                                                                    text3 = ToolBox.WebUtils.FixString(text3).Trim();
                                                                                    person.AddRole(text3.Trim());
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                    if (bCharacter == false)
                                                                    {
                                                                        num3 = num4 + 10;
                                                                        num3 = text2.IndexOf(">", num3);
                                                                        if (num3 > -1)
                                                                        {
                                                                            num3++;
                                                                            num4 = text2.ToLower().IndexOf("<", num3);
                                                                            if (num4 > -1)
                                                                            {
                                                                                text3 = text2.Substring(num3, (num4 - num3)).Trim();
                                                                                text3 = ToolBox.WebUtils.CleanUpHTML(text3, true).Trim();
                                                                                text3 = ToolBox.WebUtils.FixString(text3).Trim();
                                                                                person.AddRole(text3.Trim());
                                                                            }
                                                                            else
                                                                                person.AddRole("Unknown");
                                                                        }
                                                                        else
                                                                            person.AddRole("Unknown");
                                                                    }
                                                                }
                                                                else
                                                                    person.AddRole("Unknown");
                                                                num1++;
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                num2 = text2.IndexOf(">", num5);
                                                if (num2 > -1)
                                                {

                                                    num2++;
                                                    num3 = text2.IndexOf("<", num2);
                                                    if (num3 > -1)
                                                    {
                                                        text3 = text2.Substring(num2, (num3 - num2)).Trim();
                                                        text3 = ToolBox.WebUtils.CleanUpHTML(text3, true).Trim();
                                                        text3 = ToolBox.WebUtils.FixString(text3).Trim();
                                                        IIMDbPerson person = movie.People.GetPersonByURL(personURL);
                                                        if (person == null)
                                                        {
                                                            person = new IMDbPerson();
                                                            movie.People.Add(person);
                                                            person.Name = text3.Trim();
                                                            person.URL = personURL;
                                                        }
                                                        person.IsActor = true;
                                                        num4 = text2.ToLower().IndexOf(" ... ", num3);
                                                        if (num4 > -1)
                                                        {
                                                            bool bCharacter = false;
                                                            num5 = text2.ToLower().IndexOf("/character/", num4);
                                                            if (num5 > -1)
                                                            {
                                                                if ((num5 - num4) < 50)
                                                                {
                                                                    bCharacter = true;
                                                                    num3 = text2.IndexOf(">", num5);
                                                                    if (num3 > -1)
                                                                    {
                                                                        num3++;
                                                                        num4 = text2.IndexOf("<", num3);
                                                                        if (num4 > -1)
                                                                        {
                                                                            text3 = text2.Substring(num3, (num4 - num3)).Trim();
                                                                            text3 = ToolBox.WebUtils.CleanUpHTML(text3, true).Trim();
                                                                            text3 = ToolBox.WebUtils.FixString(text3).Trim();
                                                                            person.AddRole(text3.Trim());
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                            if (bCharacter == false)
                                                            {
                                                                num3 = num4 + 10;
                                                                num3 = text2.IndexOf(">", num3);
                                                                if (num4 > -1)
                                                                {
                                                                    num3++;
                                                                    num4 = text2.ToLower().IndexOf("<", num3);
                                                                    if (num4 > -1)
                                                                    {
                                                                        text3 = text2.Substring(num3, (num4 - num3)).Trim();
                                                                        text3 = ToolBox.WebUtils.CleanUpHTML(text3, true).Trim();
                                                                        text3 = ToolBox.WebUtils.FixString(text3).Trim();
                                                                        person.AddRole(text3.Trim());
                                                                    }
                                                                    else
                                                                        person.AddRole("Unknown");
                                                                }
                                                                else
                                                                    person.AddRole("Unknown");
                                                            }
                                                        }
                                                        else
                                                            person.AddRole("Unknown");
                                                        num1++;
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    break;
                                }
                            } while (num2 > -1);
                        }
                    }
                    #endregion

                    #region Get Runtime
                    //Get Runtime
                    text2 = "";
                    num2 = text1.ToLower().IndexOf("runtime:");
                    if (num2 > -1)
                    {
                        num2 = text1.IndexOf(">", num2);
                        if (num2 > -1)
                        {
                            num2++;
                            num3 = text1.ToLower().IndexOf("<", num2);
                            if (num3 > -1)
                            {
                                text2 = text1.Substring(num2, (num3 - num2)).Trim();
                                text2 = ToolBox.WebUtils.CleanUpHTML(text2, true).Trim();
                                text2 = ToolBox.WebUtils.FixString(text2).Trim();
                                text2 = FixRuntime(text2).Trim();
                                movie.Runtime = text2.Trim();
                            }
                        }
                    }
                    #endregion

                    #region Get Rating
                    //Get Rating
                    text2 = "";
                    num2 = text1.ToLower().IndexOf("certification:");
                    if (num2 > -1)
                    {
                        num2++;
                        num2 = text1.ToLower().IndexOf(System.Web.HttpUtility.UrlEncode(_country).ToLower() + ":", num2);
                        if (num2 > -1)
                        {
                            num2++;
                            num2 = text1.ToLower().IndexOf(">", num2);
                            if (num2 > -1)
                            {
                                num2 += _country.Length;
                                num2 += 2;
                                num3 = text1.ToLower().IndexOf("</a>", num2);
                                if (num3 > -1)
                                {
                                    text2 = text1.Substring(num2, (num3 - num2)).Trim();
                                    text2 = ToolBox.WebUtils.CleanUpHTML(text2, true).Trim();
                                    text2 = ToolBox.WebUtils.FixString(text2).Trim();
                                    if (text2.Trim() == ""
                                        | text2.ToLower().Trim() == "not rated")
                                    {
                                        text2 = "Unrated";
                                    }
                                    if (text2.ToLower().Trim() == "approved")
                                    {
                                        text2 = "G";
                                    }
                                    movie.Rating = text2.Trim();
                                }
                            }
                        }
                    }
                    else
                    {
                        num2 = text1.ToLower().IndexOf("mpaa</a>:</h5>");
                        if (num2 > -1)
                        {
                            num2 = text1.ToLower().IndexOf("rated", num2);
                            if (num2 > -1)
                            {
                                num2 += 5;
                                num3 = text1.ToLower().IndexOf("for ", num2);
                                if (num3 > -1)
                                {
                                    movie.Rating = text1.Substring(num2, (num3 - num2)).Trim();
                                }
                            }
                        }
                    }
                    #endregion

                }
                return movie;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void GetQuotes(ref IMDbMovie movie, string quotesURL)
        {
            // get quotes html
            string html = ToolBox.WebUtils.GetSiteContents(quotesURL);  //Old Code: JCUtils.WebUtils.GET(quotesURL);

            // Grab quotes
            Match match1 = GetRegExMatch(html, _quoteBlockPattern);
            while (match1 != null && match1.Length > 0)
            {
                string quoteBlockHTML = GetMatchValue(match1, "QuoteBlock", false);
                if (quoteBlockHTML.Trim() != "")
                {
                    List<IIMDbQuote> quoteBlock = new List<IIMDbQuote>();
                    Match match2 = GetRegExMatch(quoteBlockHTML, _quotePattern);
                    while (match2 != null && match2.Length > 0)
                    {
                        IMDbQuote quote = new IMDbQuote();
                        quote.Character = GetMatchValue(match2, "Character", true);
                        quote.Text = GetMatchValue(match2, "Quote", true);
                        quoteBlock.Add(quote);
                        match2 = match2.NextMatch();
                    }
                    if (quoteBlock.Count > 0)
                        movie.Quotes.Add(quoteBlock);
                }
                match1 = match1.NextMatch();
            }
        }
        private void GetTrivia(ref IMDbMovie movie, string triviaURL)
        {
            // get trivia html
            string html = ToolBox.WebUtils.GetSiteContents(triviaURL);  //Old Code: JCUtils.WebUtils.GET(triviaURL);

            // Grab trivia
            Match match = GetRegExMatch(html, _triviaPattern);
            while (match != null && match.Length > 0)
            {
                string trivia = GetMatchValue(match, "Trivia", true);
                if (trivia.Trim() != "")
                    movie.Trivia.Add(trivia.Trim());
                match = match.NextMatch();
            }
        }
        private void GetLongOverview(ref IMDbMovie movie, string longOverviewURL)
        {
            // get long overview html
            string html = ToolBox.WebUtils.GetSiteContents(longOverviewURL);  //Old Code: JCUtils.WebUtils.GET(longOverviewURL);

            // Grab Long Overview
            Match match = GetRegExMatch(html, _longOverviewPattern);
            movie.OverviewLong = GetMatchValue(match, "LongOverview", true);
        }
        private void GetGoofs(ref IMDbMovie movie, string goofURL)
        {
            // get goof html
            string html = ToolBox.WebUtils.GetSiteContents(goofURL);  //Old Code: JCUtils.WebUtils.GET(goofURL);

            // Grab goofs
            Match match = GetRegExMatch(html, _goofPattern);
            while (match != null && match.Length > 0)
            {
                IMDbGoof goof = new IMDbGoof();
                goof.Category = GetMatchValue(match, "Category", true);
                goof.Description = GetMatchValue(match, "Goof", true);
                movie.Goofs.Add(goof);
                match = match.NextMatch();
            }
        }
 private void GetGenres(ref IMDbMovie movie, string html)
 {
     // Grab Genres
     Match match = GetRegExMatch(html, _genrePattern);
     if (match != null && match.Length > 0)
     {
         match = GetRegExMatch(match.Value, _genre2Pattern);
         while (match != null && match.Length > 0)
         {
             string genre = GetMatchValue(match, "Genre", true);
             if (genre.Trim() != "")
                 movie.Genres.Add(genre);
             match = match.NextMatch();
         }
     }
 }
        private void GetDirectors(ref IMDbMovie movie, string html)
        {
            // Grab Directors
            string directorHTML = GetRegExString(html, _directorPattern);
            if (directorHTML.Trim() != "")
            {
                Match match = GetRegExMatch(directorHTML, _personPattern);
                while (match != null && match.Length > 0)
                {
                    string personID = GetMatchValue(match, "PersonURL", true);
                    if (personID.Trim() != "")
                    {
                        IIMDbPerson director = movie.People.GetPersonByID(personID);
                        if (director == null)
                        {
                            director = new IMDbPerson();
                            movie.People.Add(director);
                        }
                        director.URL = personID;
                        director.Name = GetMatchValue(match, "PersonName", true);
                        director.IsDirector = true;

                        match = match.NextMatch();
                    }
                }
            }
        }
        private void GetActors(ref IMDbMovie movie, string creditsURL)
        {
            // get cast html
            string html = ToolBox.WebUtils.GetSiteContents(creditsURL);  //Old Code: JCUtils.WebUtils.GET(creditsURL);

            // Grab Actors
            string trimmedHTML = GetRegExString(html, _castPattern);
            if (trimmedHTML.Trim() != "")
            {
                Match match1 = GetRegExMatch(trimmedHTML, _castPersonPatternWithCharacterURLs);
                while (match1 != null && match1.Length > 0)
                {
                    string personID = GetMatchValue(match1, "PersonURL", true);
                    if (personID.Trim() != "")
                    {
                        IIMDbPerson actor = movie.People.GetPersonByID(personID);
                        if (actor == null)
                        {
                            actor = new IMDbPerson();
                            movie.People.Add(actor);
                        }
                        actor.URL = personID;
                        actor.Name = GetMatchValue(match1, "PersonName", true);
                        actor.IsActor = true;
                        string characterString = GetMatchValue(match1, "CharacterName", true);
                        ParseCharacters(ref actor, characterString);

                        match1 = match1.NextMatch();
                    }
                }

                Match match2 = GetRegExMatch(trimmedHTML, _castPersonPatternWithNOCharacterURLs);
                while (match2 != null && match2.Length > 0)
                {
                    string personID = GetMatchValue(match2, "PersonURL", true);
                    if (personID.Trim() != "")
                    {
                        IIMDbPerson actor = movie.People.GetPersonByID(personID);
                        if (actor == null)
                        {
                            actor = new IMDbPerson();
                            movie.People.Add(actor);
                        }
                        actor.URL = personID;
                        actor.Name = GetMatchValue(match2, "PersonName", true);
                        actor.IsActor = true;
                        string characterString = GetMatchValue(match2, "CharacterName", true);
                        ParseCharacters(ref actor, characterString);

                        match2 = match2.NextMatch();
                    }
                }
            }
        }