var FillMe = new Class({
	
	Implements: [Options, Events],
	options: 
	{
		minsize: {
		  x: 0,
		  y: 0
		},
		margin: {
		  x: 0,
		  y: 0
		},
	},
	
	initialize: function(img, options)
	{
		this.setOptions(options);

        this.marginX = this.options.margin.x;
		this.marginY = this.options.margin.y;
		
		this.img = $(img);
		
		this.imgX = this.img.getDimensions().width;
	    this.imgY = this.img.getDimensions().height;
		this.ratio = this.imgX / this.imgY;
		
		//check if minsize option is set
		if (this.options.minsize.x || this.options.minsize.y) {
		  
		  this.minsizeSet = true;
		  
		  if (this.options.minsize.x != 0 && this.options.minsize.y == 0) {
			 //if just minsize x is set
			 this.minsizeX = this.options.minsize.x;
			 this.minsizeY = this.minsizeX / this.ratio;
		  
		  } else
		  
		  if (this.options.minsize.y != 0 && this.options.minsize.x == 0) {
			//if just minsize y is set
			this.minsizeY = this.options.minsize.y;
			this.minsizeX = this.minsizeY * this.ratio; 
			
		  } else {
		    //if both minsize x and y are set
			this.minsizeX = this.options.minsize.x;
			this.minsizeY = this.options.minsize.y;
		  
		  }
		  
		} else {
			
			this.minsizeSet = false;	
		
		}
		
		//inital resize
		this.doFill();
		
		var self = this;
		
		window.addEvent('resize',function(){
			self.doFill()
		});

	},
	
	doFill: function() 
	{
		
		//get browser window size
		var windowX = window.getSize().x;
		var windowY = window.getSize().y;
		
		var minX = (this.minsizeSet ? this.minsizeX : this.imgX + this.marginX);
		var minY = (this.minsizeSet ? this.minsizeY : this.imgY + this.marginY);
		
		if ((windowX <= minX) && (windowY <= minY)) {
			
			this.img.setStyle('width', (this.minsizeSet ? this.minsizeX : this.imgX));
			this.img.setStyle('height',(this.minsizeSet ? this.minsizeY : this.imgY));
		
		} else {	

			var diffX = windowX - this.imgX + this.marginX;
			var diffY = windowY - this.imgY + this.marginY;
			
			if (diffX > diffY) {
				
				var width = windowX;
				var height = width / this.ratio;
			
			} else {
				
				var height = windowY;
				var width = height * this.ratio;
			
			}
			
			this.img.setStyle('width', width);
			this.img.setStyle('height', height);
		
		}
		
	}
		
		
});
