if (!window.ImageGallery)
	window.ImageGallery = {};

ImageGallery.Scene = function() 
{
}

ImageGallery.Scene.prototype =
{
	handleLoad: function(plugIn, userContext, rootElement) 
	{
		this.plugIn = plugIn;
	    this.imagecanvas = rootElement.findName("ImageGallery");
	    this.imagecanvas.Height = this.Height;
	    this.imagecanvas.Width = this.Width;

	    var maxButton = rootElement.findName("MaxIcon");
        maxButton.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.handleIconShow));
		maxButton.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.handleIconHide));

	    var imageXAML = '<Image Source="" />';
	    var host = rootElement.getHost();
	    var imagesList = this.ImagesList;
	    var imagesArray = imagesList.split(";");
	    
	    for(var y=0; y < imagesArray.length; y++)
	    {
	        var newchild = host.content.createFromXaml(imageXAML);
	        newchild["Source"] = imagesList.split(";")[y];
	        this.imagecanvas.children.add(newchild);	        
	    }
	    
	    var lft = 0;
	    var tp = 0;
	    var calcwidth = 75;
	    var calcheight = 75;
	    
	    this.imageisbig = false;
	    this.imageishover = false;
	    this.CalcImageWidth = calcwidth;
	    this.CalcImageHeight = calcheight;
	    
	/*    for(var x=0; x<this.imagecanvas.children.count;x++)
	    {
	        var thisimage = this.imagecanvas.children.getItem(x);
	        if(!(thisimage.Name == 'MaxIcon'))
	        {
	        while(thisimage.DownloadProgress < 1)
	        {
	            
	        }
	            try
	            {
	                var resizefactor = (calcwidth / thisimage.Width);
                    var calculatedHeight = (thisimage.Height * resizefactor);
	                if(this.CalcImageHeight < calculatedHeight)
	                {
	                    this.CalcImageHeight = calculatedHeight;
	                }
	            }
	            catch(err)
	            {
	                alert("Error: " + err.Description);
	            }
	        }
	    } */
	    
    	for(var x=0; x<this.imagecanvas.children.count;x++)
    	{
    	    var thisimage2 = this.imagecanvas.children.getItem(x);
    	    if(!(thisimage2.Name == 'MaxIcon'))
    	        {
                thisimage2.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.handleMouseEnter));
	    	    thisimage2.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handleMouseDown));
		        thisimage2.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.handleMouseLeave));
		        thisimage2.Width = calcwidth;
		        thisimage2.Height = calcheight;
		        thisimage2["Canvas.Left"] = lft;
		        thisimage2["Canvas.Top"] = tp;
		        thisimage2.Opacity = 0.5;
		        lft = lft + calcwidth + 10;
		        if(lft > this.imagecanvas.Width - calcwidth)
		        {
		            lft = 0;
		            //tp = tp + this.CalcImageHeight + 10;
		            tp = tp + calcheight + 10;
		        }
		    }
		    else
		    {
		        thisimage2["Visibility"] = 'Collapsed';
		        thisimage2.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handleImageThrow));
		    }
		    
		}
	},
	
	// Sample event handlers
	handleMouseEnter: function(sender, eventArgs) 
	{
		if(!this.imageisbig && !this.imageishover)
		{
            sender.Width = sender.Width * 1.5;
            sender.Height = sender.Height * 1.5;
            sender["Canvas.ZIndex"]=100;
            sender.Opacity = 1;
            this.imageishover = true;
		}
	},
	
	handleMouseDown: function(sender, eventArgs) 
	{
	    if(this.imageisbig)
	    {
	        for(var x=0; x<this.imagecanvas.children.count;x++)
    	    {
    	        var thisimage3 = this.imagecanvas.children.getItem(x);
    	        thisimage3["Visibility"] = 'Visible';
    	    }
	        sender.Width = this.CalcImageWidth;
	        sender.Height = this.CalcImageHeight;
	        sender["Canvas.ZIndex"] = 0;
	        sender["Canvas.Left"] = sender.tag.split(";")[0];
	        sender["Canvas.Top"] = sender.tag.split(";")[1];
	        sender.Opacity = 0.5;
	        this.imageisbig = false;   
	        var iconElement = sender.findName("MaxIcon");
	        iconElement["Visibility"] = 'Collapsed';
	        iconElement["Canvas.ZIndex"] = 0;
	    }
	    else
	    {
	        for(var x=0; x<this.imagecanvas.children.count;x++)
    	    {
    	        var thisimage3 = this.imagecanvas.children.getItem(x);
    	        thisimage3["Visibility"] = 'Collapsed';
    	    }
	        sender.Width = this.imagecanvas.Width;
	        sender.Height = this.imagecanvas.Height;
	        sender["Canvas.ZIndex"] = 100;
	        sender.tag = sender["Canvas.Left"].toString();
	        sender["Canvas.Left"] = 0;
	        sender.tag += ";";
	        sender.tag += sender["Canvas.Top"].toString();
	        sender["Canvas.Top"] = 0;
	        sender["Visibility"] = 'Visible';
	        this.imageisbig = true;
	        this.imageishover = false;
 	        var iconElement = sender.findName("MaxIcon");
	        iconElement["Visibility"] = 'Visible';
	        iconElement["Tag"] = sender["Source"];
	        iconElement["Canvas.ZIndex"] = 200;
	        iconElement["Canvas.Top"] = 0;
	        iconElement["Canvas.Left"] = 0;
	    }
	},
	

	handleMouseLeave: function(sender, eventArgs) 
	{
		if(!this.imageisbig && this.imageishover)
		{
            sender.Width = sender.Width / 1.5;
            sender.Height = sender.Height / 1.5;
            sender["Canvas.ZIndex"] = 0;
            sender.Opacity = 0.5;
            this.imageishover = false;
		}
	},
	
	
	handleIconShow: function(sender, eventArgs) 
	{
		var iconShowAnimation = sender.findName("IconShowAni");
		iconShowAnimation.Begin(); 
	},

    handleIconHide: function(sender, eventArgs) 
	{
		var iconHideAnimation = sender.findName("IconHideAni");
		iconHideAnimation.Begin(); 
	},


		handleImageThrow: function(sender, eventArgs) 
	{
        window.open(sender.tag);	    
	}

}