Weather.ListBox = function(control, elementName, data)
{
  this.host = control;
  this.data = data;
  this.itemsCanvas = this.host.content.findName("items");
  this.xamlItem = "";
  this.assetsDownloader = null;
  this.downloadAssets();
}

Weather.ListBox.prototype =
{
  downloadAssets: function()
	{
    var downloader = this.host.createObject("downloader");
    downloader.addEventListener("completed", Function.createDelegate(this, this.downloadAssetsCompleted)); 
    downloader.addEventListener("DownloadFailed", Function.createDelegate(this, this.downloadAssetsFailed));
    downloader.open("GET", String.format("images/{0}", this.data.AssetsFile));
    downloader.send();
  },
    
  downloadAssetsCompleted: function(sender, eventArgs)
  { 
    this.assetsDownloader = sender;
    this.xamlItem = this.assetsDownloader.getResponseText("item.xaml");
    this.renderListBox();   
  },
  
  downloadAssetsFailed: function(sender, eventArgs)
  { 
    
alert("downloadAssetsFailed:\n" + eventArgs.errorMessage);  
  },
  
  onMouseEnterItem: function(sender, eventArgs)
  {
    sender.findName("itemAnimation").To = -1;
    sender.findName("backPanelAnimation").To = 1;
    sender.findName("frontPanelAnimation").To = 0;
    sender.findName("mouseStoryboard").begin(); 
    
  },
  
  onMouseLeaveItem: function(sender, eventArgs)
  {
    sender.findName("itemAnimation").To = 1;
    sender.findName("backPanelAnimation").To = 0;
    sender.findName("frontPanelAnimation").To = 1;
    sender.findName("mouseStoryboard").begin(); 
  },
  

	renderListBox: function ()
	{
	  // clear any items 
    this.itemsCanvas.Children.Clear();
    
	  for (var i in this.data.Days)
	  {
	    var day = this.data.Days[i];
	    var item = this.host.content.createFromXaml(this.xamlItem, true);    
      item.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.onMouseEnterItem));
      item.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.onMouseLeaveItem));
      item["Canvas.Top"] = i*80;  	    
		  item.findName("LowTemp").Text = day.LowTemp;
		  item.findName("HighTemp").Text = day.HighTemp;
		  item.findName("Day").Text = day.Day;
		  item.findName("DateBack").Text = day.Date;
		  item.findName("DayBack").Text = day.Day;
		  item.findName("Date").Text = day.Date;
		  item.findName("HumidityDay").Text = day.HumidityDay;
		  item.findName("HumidityNight").Text = day.HumidityNight;
		  item.findName("IconDay").setSource(this.assetsDownloader, day.IconDay);
	    item.findName("IconNight").setSource(this.assetsDownloader, day.IconNight);
		  item.findName("IconDayBack").setSource(this.assetsDownloader, day.IconDay);
		  item.findName("IconNightBack").setSource(this.assetsDownloader, day.IconNight);
		  item.findName("DescDay").Text = day.DescDay;
		  item.findName("DescNight").Text = day.DescNight;
		  item.findName("PrecipDay").Text = day.PrecipDay; 
		  item.findName("PrecipNight").Text = day.PrecipNight; 
		  item.findName("Sunrise").Text = day.Sunrise;
		  item.findName("Sunset").Text = day.Sunset;
		  item.findName("WindDay").Text = day.WindDay;
		  item.findName("WindNight").Text = day.WindNight;
		  
		  if (day.IsEvening)
		  {
		    item.findName("HideInEveningPanel").Visibility = "Collapsed";
		  }
		  
		  this.itemsCanvas.Children.Add(item);
    }
	}
}
