/*
 * -----------------------------------------------------------------
 * Copyright (c) Fluid, Inc. All Right Reserved.
 * This software is the proprietary information of Fluid, Inc.
 * Use is subject to strict licensing terms.
 * -----------------------------------------------------------------
 *
 * CVS Information:
 * $Author: paul $
 * $Date: 2006/09/18 22:15:41 $
 * $Revision: 1.4 $
 *
 */

var conceptretail = (conceptretail == null) ? new Object() : conceptretail;

/**
 * Manages a collection of recently viewed image (products) for use with the Scroller
 */
conceptretail.RecentScrollerImages = new Object();

	conceptretail.RecentScrollerImages.cookieId = "conceptretail_scroller_RecentScrollerImages";
	conceptretail.RecentScrollerImages.cookiePath = "/";
	conceptretail.RecentScrollerImages.sessionLength = 20; // in minutes
	conceptretail.RecentScrollerImages.maxLength = 10;
	
	//

	/**
	 * Adds an image to the recently viewed set of images
	 * @param id: String - The identifier / SKU of the image
	 * @param imageUrl: String (URI) - The url to the image
	 */
	conceptretail.RecentScrollerImages.addImage = function(id, imageUrl)
	{
		
		var images = conceptretail.RecentScrollerImages.getImages();
		if(images.length == conceptretail.RecentScrollerImages.maxLength) images.shift();
		
		var encodedImages = "";
		
		// loop through and encode excluding a duplicate
		for(var i = 0; i < images.length; i++)
		{
			var image = images[i];
			if(image.id != id) encodedImages += image.id + "|" + image.url + ",";
		}
		
		encodedImages += id + "|" + imageUrl;

		conceptretail.RecentScrollerImages.setCookie(encodedImages);
	}
	
	/**
	 * Clears out all the images
	 */
	conceptretail.RecentScrollerImages.clearImages = function()
	{
		conceptretail.RecentScrollerImages.setCookie("");
	}
	
	/**
	 * Adds an image to the recently viewed set of images
	 * @return String - An XML formatted string of images that can be fed to the Scroller via the imagesXml
	 * property
	 */
	conceptretail.RecentScrollerImages.getImagesXml = function()
	{
		var images = conceptretail.RecentScrollerImages.getImages();
		var xml = "<images>";
		for(var i = 0; i < images.length; i++)
		{
			var image = images[i];
			xml += "<image id='" + image.id + "' url='" + image.url + "'/>";
		}
		xml += "</images>";
		return xml;
	}
	
	//
	
	/**
	 * @return Array - An Array of objects (the images) containing id and url properties
	 */
	conceptretail.RecentScrollerImages.getImages = function()
	{
		var images = new Array();
		var encodedImages = conceptretail.RecentScrollerImages.getEncodedImages();
		if(encodedImages != "" && encodedImages != null)
		{
			var encodedImagesArray = encodedImages.split(",");
			for(var i = 0; i < encodedImagesArray.length; i++)
			{
				var image = encodedImagesArray[i];
				var idUrlPair = image.split("|");
				var id = idUrlPair[0];
				var url = idUrlPair[1];
				images.push({id: id, url: url});
			}
		}
		return images;
	}	
	
	/**
	 * @return String - An string encoding the set of recent images. The String is encoded in the
	 * following format id|url,id|url,id|url
	 */
	conceptretail.RecentScrollerImages.getEncodedImages = function()
	{
		var encodedImages = "";
		var cookieValues = document.cookie.split(";");
		
		for(var i = 0; i < cookieValues.length; i++)
		{
			var cookieVal = cookieValues[i];
			var nameValue = cookieVal.split("=");
			var name = nameValue[0].split(" ").join(""); // We assume no spaces in the name -- there shouldn't be
			var value = nameValue[1];

			if(name == conceptretail.RecentScrollerImages.cookieId)
			{
				encodedImages = value;
				break;
			}
		}
		return encodedImages;
	}
	
	/**
	 * Sets the value of the recent images cookie
	 */
	conceptretail.RecentScrollerImages.setCookie = function(value)
	{
		var date = new Date();
		var currentMins = date.getMinutes();
		date.setMinutes(currentMins + conceptretail.RecentScrollerImages.sessionLength);
		document.cookie = conceptretail.RecentScrollerImages.cookieId + "=" + value + "; expires=" + date.toGMTString() + "; path=" + conceptretail.RecentScrollerImages.cookiePath;
	}
	
	
	
//

