/* .js file for managing recently viewed products.
 TODO: This file looks like most of its functionality has
 moved elsewhere. Also, contains cookie utilities that exist
 elsewhere and that don't belong here. Review and prune.
 */

var COOKIE_NAME= null;
var MAX_ITEMS = 8;
var MAX_LIFE_IN_DAYS = 30; 
var ENTRY_SPLIT = "<SEP>";
var VALUE_SPLIT = "|";
var MAX_DISPLAY_ITEMS=3;

/* This looks like duplicate functionality. See cookie.js */
function createCookie(name,value,days) {
 if (days) {
  var date = new Date();
  date.setTime(date.getTime()+(days*24*60*60*1000));
  var expires = "; expires="+date.toGMTString();
 } else {
  var expires = "";
 }
 document.cookie = name+"="+value+expires+"; path=/";
}
function createSessionLongCookie(name,value) {
  var expires = "; expires=0";
 document.cookie = name+"="+value+"; path=/";
}
 
function readCookie(name) {
 var nameEQ = name + "=";
 var ca = document.cookie.split(';');
 for(var i=0;i < ca.length;i++) {
  var c = ca[i];
  while (c.charAt(0)==' ') c = c.substring(1,c.length);
  if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
 }
 return null;
}
 
function eraseCookie(name) {
 createCookie(name,"",-1);
}
/* end duplicate functionality */

/** 
*   SIR # 16663 addCatentryId functionality is similar to addProduct instead addCatentryId adds
*   catentryId in csb_RVI cookie as per SIR requirment to control the cookie size, So addProduct
*   fucntion is not being used.
*   @hsawalhi, updated to save product category, per WCS-1423.
*/
function addCatentryId(catentryID, categoryId, cookieName) {

  	var categoryIdValue = "";
	if (categoryId != null && categoryId != "") {
		categoryIdValue = categoryId;
	}
	var value = catentryID + VALUE_SPLIT + categoryIdValue;
	var cookieData = readCookie(cookieName);	
	COOKIE_NAME = cookieName;
	if (cookieData != null && cookieData != '') {
		var valueInArr = cookieData.split(ENTRY_SPLIT);		
     	var recentItemIndex = getRecentItemIndex(valueInArr, catentryID);
		// Check if exists before
     	if (recentItemIndex >= 0 ) {
	     	if (categoryIdValue != "") {
				var oldRecord = valueInArr[recentItemIndex];
	     		if (recentItemIndex != (valueInArr.length-1)) {
	     			oldRecord = oldRecord + ENTRY_SPLIT;
	     		}
				cookieData = cookieData.replace(oldRecord, "");
	     	} else {
				return;
	     	}
     	} else if (valueInArr.length >= MAX_ITEMS) {
       		var tempCookieData = "";
     		for (i=0; i < MAX_ITEMS-1; i++) {
     			if (i>0) {
					tempCookieData = tempCookieData + ENTRY_SPLIT + valueInArr[i];
				} else {
					tempCookieData = valueInArr[i];
				}
      	 	}
			cookieData = tempCookieData;
		}
	}
	if (cookieData == null || cookieData == '') {
		cookieData = value;
	} else {
		cookieData = value + ENTRY_SPLIT + cookieData;
	}
	createCookie(COOKIE_NAME, cookieData, MAX_LIFE_IN_DAYS);	
}
/**
*  Get recent item index based on catentryId
*
**/
function getRecentItemIndex (recentItemList, catentryId) {
	var recentItemIndex = -1;	
	if (recentItemList != null && recentItemList.size() > 0) {
		var tmpRecItem = null;
		for (i=0; i < recentItemList.length; i++) {
			tmpRecItem = recentItemList[i].split(VALUE_SPLIT);
			if (tmpRecItem[0] == catentryId) {
				recentItemIndex = i;
				break;
			}
		}
	}
	return recentItemIndex;
}

/* Load the instant product information from the cookie
 * 
 */
function loadRecentItems(){
  var cookieData = readCookie(COOKIE_NAME);
  var recent_item_list = null;
  if(cookieData != null && cookieData != ''){
     recent_item_list = cookieData.split(ENTRY_SPLIT);
     	
  } 
  return recent_item_list;
}

/* Returns an array of the item details. 
 *   itemDetails[0]="item number"
 *   itemDetails[1]="model number" //Must unescape to use.
 *   itemDetails[2]="sold as"
 *   itemDetails[3]="price"
 *   itemDetails[4]="description" //Must unescape to use.
 *   itemDetails[5]="field1"
 *   itemDetails[6]="field2"
 *   itemDetails[7]="catEntryId"
 *   itemDetails[8]="customerItem"
 */
function getItemDetails(recent_item){
  var itemDetails = unescape(recent_item).split(VALUE_SPLIT);
  return itemDetails;
}
  
/* Does the product exist already in the cookie */
function exists(cookieData,value){
  if(cookieData == null){
    cookieData = readCookie(COOKIE_NAME);
  }  
  //alert("cookieData? "+cookieData);
  if(cookieData != null || cookieData != ''){
    var recent_items = loadRecentItems();
    //alert("recent_items? "+recent_items);
    for(i=0; recent_items != null && i < recent_items.size(); i++){
      //alert(recent_items[i] +" == "+ value);
      if(recent_items[i] == value){
         return true;
      }
    } 
  }
  return false;
}

/*
	This may be deprecated code. It does not appear to be called anywhere.
*/
function addItemToPage(item, itemIndex, numOfItems){  
 var htmlString = "";
 if (item != null && item.size() == 9) {
 	var tableClassWithSep = '';
 	var tempCnt = itemIndex + 1;
 	//alert("itemIndex is: "+itemIndex);
 	//alert("numOfItems is: "+numOfItems);
 	if(tempCnt != numOfItems) {
 		tableClassWithSep = "<table class=\"item_separator\">";
 	}
 	else {
 		tableClassWithSep = "<table>";
 	}
 	
 	var str =unescape(item[4]); 
 	
 	 
 	htmlString = tableClassWithSep + "<tbody><tr>" +
 	"<td class=\"prod-details\" colspan =2>" +
 	"<b>" +
 	"<a class=\"cart_item_link\" href=\""+productDetailUrl +"_" +item[0] + "\">" + str.replace(/&amp;/g,'&')+ "</a>" +
 	"</b>" +
 	"<br>" +
 	"Item#: " + 
 	item[8] + 
 	"<br>" +
 	"Model#: " + 
 	unescape(item[1]) + 
 	"<br>" +
 	"Sold As: " + 
 	item[2] + 
 	"</td>" +
 	"<td>" +
 	"<a href=\""+productDetailUrl +"_" +item[0] + "\">" +
 	"<img alt=\"" + str.replace(/&amp;/g,'&')+ "\" src=\"" + scene7Url + item[0] + "?wid=65&amp;hei=65\"</a></td>" +
 	"</tr>" +
 	"<tr>" +
 	"<td width=\"50%\" class=\"prod-details\">" +
 	"<b>" + "<span id=\"item_3\">" +
 	item[3] + "</span>" +
 	"</b>" +
 	"</td>" +
 	"<td class=\"prod-details\" width=\"15%\">" +
 	"<input id=\"rcvQty_"+itemIndex+"\" name=\"rcvQty_"+itemIndex+"\" type=\"text\" size=\"3\" value=\"1\" maxlength=\"3\" onblur=\"javascript: setRecentlyViewedItemsText(this)\" onkeypress=\"javascript:return isNumberKey(event);\" />" +
 	"</td>" +
 	"<td width=\"35%\">" +
 	"<a class=\"cart_item_link\" id=\"rcvaddToCartHref_"+itemIndex+"\" href=\"#\" onclick=\"javascript:addRCVItemToCart(this, 'rcvQty_"+itemIndex+"', '"+item[5]+"', '"+ item[6]+"', '"+ item[7]+"' )\" > Add to Cart </a>" +
 	"</td>" +
 	"</tr>" +
 	"</tbody>" +
 	"</table>" + 	
 	"<br>";
  }
  return htmlString;
}
function setRecentlyViewedItemsText(theText) 
{
	if(theText.value == "" || theText.value == "0"){
         theText.value = "1";
      }
 }


function loadRecentlyViewedItems(inStockItemsArray) {
  var items = inStockItemsArray.split("&lt;SEP&gt;");
  var count = (items == null ? 0 : items.size());
  var showElement = 'false';
  var itemsArray = new Array();  
  var tempVar = 0;
  if(count > MAX_DISPLAY_ITEMS){
    count = MAX_DISPLAY_ITEMS;
  }
  if(items != null && items != "") {
	  for(i=0; i<items.size(); i++) {
	  	  // Should  display items that are NOT in Cart && Should display only IN-STOCK items.
		  if(document.getElementById('customerPartNum_'+trim(getItemDetails(items[i])[8])) == null )
		   {
		  	itemsArray[tempVar++] = getItemDetails(trim(items[i]));
		   }
	  }
	  var htmlCode = "";
	  for(j=0;j<count;j++){		
		if(itemsArray[j] != null) {
		   	var numOfItems = 0;
		   	if(itemsArray.size() > count) {
		   		numOfItems = count;
		   	}
		   	else {
		   		numOfItems = itemsArray.size();
		   	}
		   	htmlCode=htmlCode+addItemToPage(itemsArray[j],j,numOfItems);
		   	showElement='true';
		}
		document.getElementById("outerTable").innerHTML=htmlCode;
	  }
  }
  if(showElement == 'false') {
   	hideDivNow();
  } else {
   	showDivNow();
  }
}

function addRCVItemToCart(obj, qtyId, field1, field2,catEntryId) {
	
    rcvQtyBoxValue = document.getElementById(qtyId).value; 
    var URL = "OrderCalculate?URL=ShoppingCartView";
    var finalURL = 'OrderItemAdd?URL='+URL+'&quantity='+rcvQtyBoxValue+'&field1='+field1+'&field2='+ field2+'&catEntryId='+catEntryId ;
    obj.href = finalURL;
    }


function showDivNow() { 
	if (document.getElementById) { // DOM3 = IE5, NS6 
		document.getElementById('recently_viewed').style.visibility = 'visible'; 
	}
 }

function hideDivNow() { 
	if (document.getElementById) { // DOM3 = IE5, NS6 
	   document.getElementById('recently_viewed').style.visibility = 'hidden';
	}
 } 
 
   
