	var Day = new Class({
	
	OBJECT_TYPE : "DAY",
	
	available			: false,
	minimumStay			: false,
	
	availableClass		: "available",
	highlightClass		: "selected",
	minimumStayClass	: "minimumStay",
	
	
	timestamp	:undefined,
	domElements	:[],
	
	weekDayNum	: undefined,
	
	next		:false,
	previous	:false,
	
	initialize:function(timestamp, elements, weekDayNum)
	{
		this.weekDayNum 	= weekDayNum
		this.timestamp 		= timestamp;
		if($defined(elements))
		{
			this.addDomElements(elements);
		}
	},
	
	addMarks: function(el)
	{
		el.availabilityMark = new Element("div", {"class":"availabilityMark rangePortion"}).inject(el);
		el.minimumStayMark = new Element("div", {"class":"minimumStayMark rangePortion"}).inject(el);
	},
	
	addDomElements: function(elements)
	{
		if($type(elements) != "array")
		{
			elements = [elements];
		}
		
		elements.each(this.addDomElement.bind(this));
	},
	
	setMinimumStay: function(numberOfDays)
	{
		this.minimumStay = numberOfDays;
		if(numberOfDays === false)
		{
			this.removeClass(this.minimumStayClass);
			return;
		}
		this.addClass(this.minimumStayClass);
		this.domElements.each(function(el){
			el.minimumStayMark.set("text", numberOfDays);
		});
	},
	
	setAvailability: function(status)
	{
		if(!$defined(status))
		{
			this.available = true;
		}
		else
		{
			this.available = status;
		}
		
		if(this.available)
		{
			this.addClass(this.availableClass);
		}
		else
		{
			this.removeClass(this.availableClass);
		}
	},
	
	setStyle: function(property, style)
	{
		this.domElements.each(function(element){
			element.setStyle(property, style);
		}.bind(this))
	},
	
	addDomElement: function(element)
	{
		element.addEvent("leftmousedown", this.preventEvent.bind(this));
		element.addEvent("mouseenter", this.preventEvent.bind(this));
		this.domElements.push(element);
		this.addMarks(element);
	},
	
	preventEvent: function(e)
	{
		if($defined(e))
		{
			e.stop();
		}
	},
	
	setPrevious: function(previous)
	{
		this.previous = previous; 	
	},
	
	getPrevious: function()
	{
		return this.previous;
	},
	
	getWeekNum: function()
	{
		return this.weekDayNum;
	},
	
	setNext: function(next)
	{
		this.next = next;
	},
	
	getNext: function()
	{
		return this.next;
	},
	
	getTimestamp: function()
	{
		return this.timestamp;
	},
	
	getElements: function()
	{
		return this.domElements;
	},
	
	addClass: function(className)
	{
		this.domElements.each(function(el){
			el.addClass(className);
		}.bind(this))
	},
	
	removeClass: function(className)
	{
		this.domElements.each(function(el){
			el.removeClass(className);
		}.bind(this))
	},
	
	highlight: function()
	{
		this.addClass(this.highlightClass);
	},
	
	unHighlight: function()
	{
		this.removeClass(this.highlightClass);
	}
	
});