void bw2_RunWorkerCompleted(object sender,
                           RunWorkerCompletedEventArgs e)
        {
            bool dontoutputflag=false;
            try
            {
                DirectionArgs args = (DirectionArgs)e.Result;
                if (args.counter == counter && args.counter != -1)
                {
                    MapWriter mapwriter = new MapWriter();
                    int numberdisplayed = 0;
                    for (int i = 0; i < args.display.Count;i++ )
                    {
                        if (args.display[i] == true)
                        {
                            numberdisplayed++;
                        }
                    }

                    List<float>[] points_shape = new List<float>[numberdisplayed];
                    List<int> color = new List<int>();
                    List<double>[] points_latitude = new List<double>[numberdisplayed];
                    List<int>[] sequence = new List<int>[numberdisplayed];
                    List<double>[] points_longitude = new List<double>[numberdisplayed];
                    int index = 0;

                        for (int i = 0; i < args.latitude.Count; i++)
                        {

                            if (args.display[i] == true)
                            {
                                color.Add(-1);
                                points_shape[index] = args.directiondata[i].routeshape;
                                points_latitude[index] = args.directiondata[i].latitude;
                                points_longitude[index] = args.directiondata[i].longitude;
                                sequence[index] = args.directiondata[i].locationSequence;
                                color[index]=args.color[i];
                                index++;
                            }

                        }
                    mapwriter.WriteMap(numberdisplayed, color, null, points_shape, points_latitude, points_longitude, sequence, 420, 668);
                    string currentdirectory = Directory.GetCurrentDirectory();
                    currentdirectory = currentdirectory.Replace("\\", "/");
                    currentdirectory = Uri.EscapeUriString(currentdirectory);
                    string tovisit = "file:///" + currentdirectory + "/" + "map.html";
                    if (this.IsDisposed == false)
                    {
                        webkitBrowser2.Navigate(tovisit);
                    }
                    int totalmiles = 0;
                    long totaltime = 0;
                    totaltimeindividual = new int[args.directiondata.Count];
                    totalmilesindividual = new int[args.directiondata.Count];
                    for (int l = 0; l < args.directiondata.Count; l++)
                    {
                        for (int i = 0; i < args.directiondata[l].distance.Count; i++)
                        {
                            totalmilesindividual[l] += (int)args.directiondata[l].distance[i];
                            totalmiles += (int)args.directiondata[l].distance[i];

                            totaltimeindividual[l] += (int)args.directiondata[l].time[i];
                            totaltime += (int)args.directiondata[l].time[i];
                        }
                    }
                    textTotalMiles.Text = totalmiles + " Mi";
                    //weekly miles
                    drivercost = new List<double>();
                    milecost = new List<double>();
                    maitenancecost = new List<double>();
                    double estimatedcost = 0 ;
                    driverestimatedcost=new int[routes.Count];
                    individualstopcounter = new int[routes.Count];
                    try
                    {
                        for (int l = 0; l < routes.Count; l++)
                        {
                            if (routes[l].invoicerouteinfo.Count > 0)
                            {
                                int index2 = 0;
                                for (int k = 0; k < scheduleddrivers.Count; k++)
                                {
                                    if (scheduleddrivers[k].number == routes[l].drivernumber)
                                    {
                                        index2 = k;
                                    }
                                }
                                DayOfWeek startOfWeek = DayOfWeek.Sunday;

                                int diff = viewdate.DayOfWeek - startOfWeek;
                                if (diff < 0)
                                {
                                    diff += 7;
                                }
                                DateTime aday = new DateTime();
                                aday = viewdate.AddDays(-1 * diff).Date;
                                int weeklymiles = 0;
                                for (int i = 0; i <= diff; i++)
                                {
                                    List<RouteInfo> routesforday = mysql_routes.GetRouteInfo(aday);
                                    for (int j = 0; j < routesforday.Count; j++)
                                    {
                                        if (routes[index2].drivernumber == routesforday[j].drivernumber)
                                        {
                                            weeklymiles += routesforday[j].miles;
                                        }
                                    }
                                    aday = aday.AddDays(1);
                                }
                                int stopcounter = 0;
                                for (int k = 0; k < args.directiondata[l].time.Count; k++)
                                {
                                    if (args.directiondata[l].time[k] != 0)
                                    {
                                        stopcounter++;
                                    }
                                }
                                stopcounter--;
                                totaltimeindividual[l] += stopcounter * 1800;
                                individualstopcounter[l] = stopcounter;
                                drivercost.Add((totaltimeindividual[l]/3600 )* scheduleddrivers[l].hour_rate);
                                milecost.Add(totalmilesindividual[l] * scheduleddrivers[l].fuel_surch);
                                maitenancecost.Add(0);
                                if (totalmilesindividual[l] > 100)
                                {
                                    maitenancecost[l] = (totalmilesindividual[l] - 100) * scheduleddrivers[l].maint_surch;
                                }
                                estimatedcost += drivercost[l] + milecost[l] + maitenancecost[l];
                                driverestimatedcost[l] = (int)drivercost[l] + (int)milecost[l] + (int)maitenancecost[l];
                            }
                        }
                    }
                    catch { dontoutputflag = true; }
                    try
                    {
                        if (dontoutputflag == false)
                        {
                            textEstimatedCost.Text = DataFormat.FormatMoneyToString((int)estimatedcost);
                            double percent = estimatedcost / (double)totalvalue;
                            textCostPercentage.Text = percent.ToString("0.00%");
                        }
                    }
                    catch { }
                }

            }

            catch
            {
                string currentdirectory = Directory.GetCurrentDirectory();
                currentdirectory = currentdirectory.Replace("\\", "/");
                currentdirectory = Uri.EscapeUriString(currentdirectory);
                string tovisit = "file:///" + currentdirectory + "/" + "error.html";
                try
                {
                    if (this.IsDisposed == false)
                    {
                        webkitBrowser2.Navigate(tovisit);
                    }

                }
                catch { }
            }
        }
 void bw_RunWorkerCompleted(object sender,
                            RunWorkerCompletedEventArgs e)
 {
     GeoData currentgeoddata=(GeoData)e.Result;
     toolStripStatusLabel1.Text = "Search completed.";
     FindLocation.Enabled = true;
     FindLocation.Text = "Search for Addrress";
     RefreshLocations();
     Map.MapWriter mapwriter = new Map.MapWriter();
     List<Double>[] latitude=new List<Double>[1];
     List<Double>[] longitude=new List<Double>[1];
     latitude[0] = new List<Double>();
     longitude[0] = new List<Double>();
     for(int i=0;i<currentgeodata.latitude.Count;i++)
     {
         latitude[0].Add(currentgeodata.latitude[i]);
     longitude[0].Add(currentgeodata.longitude[i]);
     }
     mapwriter.WriteMap(1, null, null, null, latitude, longitude, null, 420, 668);
                 string currentdirectory = Directory.GetCurrentDirectory();
     currentdirectory = currentdirectory.Replace("\\", "/");
     currentdirectory = Uri.EscapeUriString(currentdirectory);
     string tovisit = "file:///" + currentdirectory + "/" + "map.html";
     webkitBrowser1.Navigate(tovisit);
 }
        void bw2_RunWorkerCompleted(object sender,
                                   RunWorkerCompletedEventArgs e)
        {
            try
            {
                DirectionArgs args = (DirectionArgs)e.Result;
                if (args.counter == counter&&args.counter!=-1)
                {
                    MapWriter mapwriter = new MapWriter();
                    List<float>[] points_shape = new List<float>[1];
                    points_shape[0] = args.directiondata.routeshape;
                    List<double>[] points_latitude = new List<double>[1];
                    points_latitude[0] = args.directiondata.latitude;
                    List<double>[] points_longitude = new List<double>[1];
                    points_longitude[0] = args.directiondata.longitude;
                    List<int>[] sequence = new List<int>[1];
                    sequence[0] = args.directiondata.locationSequence;
                    mapwriter.WriteMap(1, null, null, points_shape, points_latitude, points_longitude, sequence, 420, 668);
                    string currentdirectory = Directory.GetCurrentDirectory();
                    currentdirectory = currentdirectory.Replace("\\", "/");
                    currentdirectory = Uri.EscapeUriString(currentdirectory);
                    string tovisit = "file:///" + currentdirectory + "/" + "map.html";
                    if (this.IsDisposed == false)
                    {
                        webkitBrowser.Navigate(tovisit);
                    }
                    //update miles

                    int totalmiles=0;
                    for(int i=0;i<args.directiondata.distance.Count;i++)
                    {
                        totalmiles+=(int)args.directiondata.distance[i];
                    }
                    viewroute.miles=totalmiles;
                    mysql_routes.updateMileage(viewroute);
                    //weekly miles
                    DayOfWeek startOfWeek = DayOfWeek.Sunday;

                    int diff = viewdate.DayOfWeek - startOfWeek;
                    if (diff < 0)
                    {
                        diff += 7;
                    }
                    DateTime aday = new DateTime();
                    aday=viewdate.AddDays(-1 * diff).Date;
                    int weeklymiles = 0;
                    for (int i = 0; i <= diff; i++)
                    {
                        List <RouteInfo> routesforday=mysql_routes.GetRouteInfo(aday);
                        for (int j = 0; j < routesforday.Count; j++)
                        {
                            if (routesforday[j].drivernumber == viewroute.drivernumber)
                            {
                                weeklymiles += routesforday[j].miles;
                            }
                        }
                            aday = aday.AddDays(1);
                    }

                    long totaltime = 0;
                    for(int i=0;i<args.directiondata.time.Count;i++)
                    {
                        totaltime+=(int)args.directiondata.time[i];
                    }
                    totaltime += stopcounter * 1800;
                    textTotalMiles.Text = totalmiles + " Mi";
                    textTotalTime.Text=DataFormat.FormatTimeToString(totaltime);
                    double drivercost=(totaltime/3600)*driver.hour_rate;
                    double milecost = totalmiles * driver.fuel_surch;
                    double maitenancecost=0;
                    if (totalmiles > 100)
                    {
                        maitenancecost = (totalmiles - 100) * driver.maint_surch;
                    }
                    double estimatedcost = drivercost + milecost + maitenancecost;
                    textEstimatedCost.Text = DataFormat.FormatMoneyToString((int)estimatedcost);
                    double percent=estimatedcost/(double)totalvalue;
                    textCostPercentage.Text = percent.ToString("0.00%");
                }
                else
                {
                    string currentdirectory = Directory.GetCurrentDirectory();
                    currentdirectory = currentdirectory.Replace("\\", "/");
                    currentdirectory = Uri.EscapeUriString(currentdirectory);
                    string tovisit = "file:///" + currentdirectory + "/" + "error.html";
                    if (this.IsDisposed == false)
                    {
                        webkitBrowser.Navigate(tovisit);
                    }
                        textTotalMiles.Text = "";
                    textTotalTime.Text = "";
                }
            }
            catch
            {
                string currentdirectory = Directory.GetCurrentDirectory();
                currentdirectory = currentdirectory.Replace("\\", "/");
                currentdirectory = Uri.EscapeUriString(currentdirectory);
                string tovisit = "file:///" + currentdirectory + "/" + "error.html";
                try
                {
                    if (this.IsDisposed == false)
                    {
                        webkitBrowser.Navigate(tovisit);
                    }
                }
                catch { }
            }
        }
        void bw2_RunWorkerCompleted(object sender,
                           RunWorkerCompletedEventArgs e)
        {
            try
            {
                DirectionArgs args = (DirectionArgs)e.Result;
                if (args.counter == counter && args.counter != -1)
                {
                    MapWriter mapwriter = new MapWriter();
                    List<float>[] points_shape = new List<float>[1];
                    points_shape[0] = args.directiondata.routeshape;
                    List<double>[] points_latitude = new List<double>[1];
                    points_latitude[0] = args.directiondata.latitude;
                    List<double>[] points_longitude = new List<double>[1];
                    points_longitude[0] = args.directiondata.longitude;
                    List<int>[] sequence = new List<int>[1];
                    sequence[0] = args.directiondata.locationSequence;
                    mapwriter.WriteMap(1, null, null, points_shape, points_latitude, points_longitude, sequence, 403, 560);
                    string currentdirectory = Directory.GetCurrentDirectory();
                    currentdirectory = currentdirectory.Replace("\\", "/");
                    currentdirectory = Uri.EscapeUriString(currentdirectory);
                    string tovisit = "file:///" + currentdirectory + "/" + "map.html";
                    if (this.IsDisposed == false)
                    {
                        webKitBrowser1.Navigate(tovisit);
                    }
                    //update miles

                    int totalmiles = 0;
                    for (int i = 0; i < args.directiondata.distance.Count; i++)
                    {
                        totalmiles += (int)args.directiondata.distance[i];
                    }

                    long totaltime = 0;
                    for (int i = 0; i < args.directiondata.time.Count; i++)
                    {
                        totaltime += (int)args.directiondata.time[i];
                    }

                    textDistance1.Text = totalmiles + " Mi";
                    textTime1.Text = DataFormat.FormatTimeToString(totaltime);
                    textInvoices.Text = optimizedroutes[listRoutes.SelectedIndex].Count.ToString();

                }
                else
                {
                    string currentdirectory = Directory.GetCurrentDirectory();
                    currentdirectory = currentdirectory.Replace("\\", "/");
                    currentdirectory = Uri.EscapeUriString(currentdirectory);
                    string tovisit = "file:///" + currentdirectory + "/" + "blank.html";
                    if (this.IsDisposed == false)
                    {
                        webKitBrowser1.Navigate(tovisit);
                    }
                    textDistance1.Text = "";
                    textTime1.Text = "";
                    textInvoices.Text = "";
                }
            }
            catch
            {
                string currentdirectory = Directory.GetCurrentDirectory();
                currentdirectory = currentdirectory.Replace("\\", "/");
                currentdirectory = Uri.EscapeUriString(currentdirectory);
                string tovisit = "file:///" + currentdirectory + "/" + "blank.html";
                try
                {
                    if (this.IsDisposed == false)
                    {
                        webKitBrowser1.Navigate(tovisit);
                    }
                }
                catch { }
            }
        }