function AccommodationsCacheManager()
{
	this.cookieName = 'accommodations';
	this.cookieValue = getCookieFromCache(this.cookieName);
	this.accommodationsCookie = null;
	this.MAX_ACCOMMODATIONS = 3;
	
	if(this.cookieValue == null)
	{
		this.accommodationsCookie = new Array(0);
	}
	else
	{
		this.accommodationsCookie = eval(this.cookieValue);
	}
	
	this.addAccommodation = addAccommodation;
	this.render = renderAccommodations;
}

function addAccommodation(accommodation)
{
	for(var j=0;j<this.accommodationsCookie.length;j++)
	{
		if(accommodation.accomID==this.accommodationsCookie[j].accomID)
		{
			for(var k=j;k<this.accommodationsCookie.length - 1;k++)
			{
				this.accommodationsCookie[k] = this.accommodationsCookie[k+1];
			}
			
			this.accommodationsCookie[this.accommodationsCookie.length - 1] = accommodation;
			
			this.cookieValue = serializeAccomCookie(this.accommodationsCookie);
			
			return;
		}
	}
	
	if(this.accommodationsCookie.length == this.MAX_ACCOMMODATIONS)
	{
		this.accommodationsCookie.shift();
	}
	
	this.accommodationsCookie.length += 1;

	this.accommodationsCookie[this.accommodationsCookie.length - 1] = accommodation;
	
	this.cookieValue = serializeAccomCookie(this.accommodationsCookie);
}

function renderAccommodations()
{
	var HTMLText = ''; 
	for(var i=this.accommodationsCookie.length - 1;i>=0;i--)
	{
		HTMLText += this.accommodationsCookie[i].render();
	}
	
	return HTMLText;
}

/**
The Accommodation class is an encapuslation of all the data we would lke to store in a cookie so that the recent
accommodations can be displayed to the user.
**/
function Accommodation(imgURL, accomURL, accomID, accomName, accomRating, resortName, countryName)
{
	this.imgURL = imgURL;
	this.accomURL = accomURL;
	this.accomID = accomID;
	this.accomName = accomName;
	this.accomRating = accomRating;
	this.resortName = resortName;
	this.countryName = countryName;
	
	this.getJSONNotation = getAccommodationJSONNotation;
	this.render = renderAccommodation; 
}

function getAccommodationJSONNotation()
{
	var jsonText = '';
	jsonText += 'new Accommodation(';
	jsonText += '"' + this.imgURL + '",';
	jsonText += '"' + this.accomURL + '",';
	jsonText += '"' + this.accomID + '",';
	jsonText += '"' + this.accomName + '",';
	jsonText += '"' + this.accomRating + '",';
	jsonText += '"' + this.resortName + '",';
	jsonText += '"' + this.countryName + '"';
	jsonText += ')';
		/**
		jsonText += 'imgURL:' +  + ',';
		jsonText += 'departureDate:' + this.departureDate + ',';
		jsonText += 'departureAirport:' + this.departureAirport + ',';
		jsonText += 'country:' + this.country + ',';
		jsonText += 'resort:' + this.resort + ',';
		jsonText += 'duration:' + this.duration + ',';
		jsonText += 'paxData:' + this.paxData;
		**/
	
	return jsonText;
}

function renderAccommodation()
{
	var HTMLText = '';
	HTMLText += '<li>';
	HTMLText += 	'<div class="insideItem">';
	HTMLText += 		'<div class="image">';
	HTMLText += 			'<a href="' + this.accomURL + '"><img src="/dbimages' + this.imgURL + '" alt="' + this.accomName + '" class="selectedThumbnail"/></a>';
	HTMLText += 		'</div>';
	HTMLText += 		'<div class="text">';
	HTMLText += 			'<h3>';
	HTMLText += 			'<a href="' + this.accomURL + '">' + this.accomName + '</a>';
	HTMLText += 			'</h3>';
	HTMLText += 			displayRating(this.accomRating);
	HTMLText += 			'<p>in ' + this.resortName + ', ' + this.countryName + '</p>';
	HTMLText += 		'</div>';
	HTMLText += 	'</div>';
	HTMLText += '</li>';
	return HTMLText;
}

function serializeAccomCookie(accommodationsCookie)
{
	var cookieValue = '[' + accommodationsCookie[0].getJSONNotation();
	
	for(i=1;i<accommodationsCookie.length;i++)
	{
		cookieValue += ',';
		cookieValue += accommodationsCookie[i].getJSONNotation();
	}
	
	cookieValue += ']';
	
	setCookieToCache('accommodations',cookieValue,'','/');
	
	return cookieValue;
}

function showHideAccommodations()
{
	if(new AccommodationsCacheManager().cookieValue==null)
	{
		document.getElementById("recentlyViewed").style.display = "none";
	}
	else
	{
		var showHideSearch = getCookieFromCache("showHideAccommodation"); 
		if(showHideSearch ==null || showHideSearch == "show")
		{
			document.getElementById("showHideAccommodation").className = "CollapsiblePanelOpen";
			document.getElementById("recentAccommodations").style.display = "block";
		}
		else
		{
			document.getElementById("showHideAccommodation").className = "CollapsiblePanelClosed";
			document.getElementById("recentAccommodations").style.display = "none";
		}
	}
}