// This could be used down the road if the default images don't line up correctly
 // It makes use of the WriteableBitmapEx method BLIT()
 //public Image ProfileImage
 //{
 //    get
 //    {
 //        List<WriteableBitmap> images = new List<WriteableBitmap>();
 //        if (Outer.Image != null) images.Add(new WriteableBitmap(Outer.Image));
 //        if (Inner.Image != null) images.Add(new WriteableBitmap(Inner.Image));
 //        if (Panel.Image != null) images.Add(new WriteableBitmap(Panel.Image));
 //        WriteableBitmap destBitmap = new WriteableBitmap(300, 50);
 //        double x = 0;
 //        double y = 0;
 //        foreach (var item in images)
 //        {
 //            destBitmap.Blit(new Rect(x, y, item.PixelWidth, item.PixelHeight), item, new Rect(x, y, item.PixelWidth, item.PixelHeight));
 //            x += item.PixelWidth;
 //        }
 //        Image image = new Image();
 //        image.Source = destBitmap;
 //        return image;
 //    }
 //}
 private void PopulatePanelFO(bool isfo)
 {
     if (isfo)
     {
         Panels.ToList().ForEach(delegate(IParameter paneltorem)
         {
             Panels.Remove(paneltorem);
         });
         FOPanels.ToList().ForEach(delegate(IParameter parm)
         {
             Panels.Add(parm);
         });
     }
     else
     {
         PopulatePanels();
     }
     if (panel == null)
         panel = Panels[0] as Kendor_Website.Model.Panel;
     RaisePropertyChanged("Panel");
 }
        public void PopulateDoorImages(Action action)
        {
            var url = "http://kendorwood.com/Doors/imgListing.php";
            //var url = "http://kendorwood.ctg4u.com/site/ClientBin/Doors/imgListing.php";
            var wc = new WebClient();
            wc.DownloadStringCompleted += (object sender, DownloadStringCompletedEventArgs e) =>
            {
                char[] charSeparators = new char[] { ',' };
                var directories = e.Result.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries);
                directories.ToList().ForEach(delegate(string s)
                {
                    var parms = s.Split('_');
                    var specieToAdd = (from species in this.Species
                                  where species.ParmName == parms[0]
                                  select species).SingleOrDefault();

                    if (specieToAdd == null)
                        specieToAdd = new Species()
                        {
                            Name = parms[0],
                            ParmName = parms[0]
                        };

                    var innerToUse = (from inner in this.Inners
                                 where inner.ParmName == parms[1]
                                 select inner).FirstOrDefault();

                    var outerToUse = (from outer in this.Outers
                                      where outer.ParmName == parms[2]
                                      select outer).FirstOrDefault();

                    var panelToUse = (from panel in this.Panels
                                      where panel.ParmName == parms[3]
                                      select panel).FirstOrDefault();

                    if (innerToUse == null)
                        innerToUse = new Inner { Name = "" };

                    if (outerToUse == null)
                        outerToUse = new Outer { Name = "" };

                    if (panelToUse == null)
                        panelToUse = new Kendor_Website.Model.Panel { Name = "" };

                    var moulding = Mouldings.One;
                    if (parms.Count() == 6)
                    {
                        if (parms[5] == "2" || parms[5] == "24")
                            moulding = Mouldings.One;
                        else
                            moulding = Mouldings.Two;
                    }

                    var mouldingSize = "2 1/4" + "\"";
                    switch (parms[5])
                    {
                        case "2":
                            mouldingSize = "2 " + "\"";
                            break;
                        case "24":
                            mouldingSize = "2 1/4" + "\"";
                            break;
                        case "3":
                            mouldingSize = "3" + "\"";
                            break;
                        case "VARIED":
                            mouldingSize = "Varied";
                            break;
                        case "NONE":
                            mouldingSize = "";
                            break;
                        default:
                            mouldingSize = "2 1/4" + "\"";
                            break;
                    }

                   DoorImages.Add(new DoorImage()
                    {
                        ImageLocation = "../Doors/" + s + "/dzc_output.xml",
                        ThumbNailLocation = "../Doors/" + s + "/door.jpg",

                        Species = specieToAdd,
                        Inner = new Inner()
                        {
                            Name = innerToUse.Name,
                            ParmName = innerToUse.ParmName,
                            Image = innerToUse.Image
                        }
                        ,
                        Outer = new Outer()
                        {
                            Name = outerToUse.Name,
                            ParmName = outerToUse.ParmName,
                            Image = outerToUse.Image
                        },
                        Panel = new Kendor_Website.Model.Panel()
                        {
                            Name = panelToUse.Name,
                            ParmName = panelToUse.ParmName,
                            Image = panelToUse.Image
                        },
                        Style = new Kendor_Website.Model.Style()
                        {
                            Name = parms[4],
                            ParmName = parms[4]
                        },
                        Moulding = moulding,
                        MouldingSize = mouldingSize
                    });
                });
                action();
            };
            wc.DownloadStringAsync(new Uri(url));
        }
        private void CCLogic()
        {
            //This method is a massive hack to just get paid really.
            //It needs to be pushed off to the DoorImageFactory to get the correct
            //parameters, if they want us to revisit this for more $$$$
            if (Outer.ParmName != "CC")
            {
                outer = Outers[4] as Outer;
                RaisePropertyChanged("Outer");
            }

            if (Inner.ParmName != "CC" && Inner.ParmName != "CCROPE")
            {
                inner = Inners[4] as Inner;
                RaisePropertyChanged("Inner");
            }

            SetMouldingDisplay(true);

            panel = Panels[0] as Kendor_Website.Model.Panel;
            RaisePropertyChanged("Panel");
            spacer = Spacers[1] as Spacer;
            RaisePropertyChanged("Spacer");
        }