﻿/****************************** cookie code ***********************************************/

function ed_setCookie(c_name,value,expireminutes)
{
    var exdate=new Date();
    exdate.setMinutes(exdate.getMinutes() + expireminutes);
    document.cookie=c_name+ "=" +escape(value)+ ((expireminutes==null) ? "" : ";expires="+exdate.toGMTString()) + "; path=" + escape("/");
} 


function ed_getCookie(c_name)
{
    if (document.cookie.length>0)
    {
        c_start=document.cookie.indexOf(c_name + "=");
        if (c_start!=-1)
        { 
            c_start=c_start + c_name.length+1; 
            c_end=document.cookie.indexOf(";",c_start);
            if (c_end==-1) {
                c_end=document.cookie.length;
            }
            return unescape(document.cookie.substring(c_start,c_end));
        } 
    }
    return "";
} 

var COMPARE_DELIM = '|';
var COMPARE_GC_NAME_COOKIE = 'compareGCNameCookie';
var COMPARE_MB_NAME_COOKIE = 'compareMBNameCookie';
var COMPARE_GC_COOKIE = 'compareGCCookie';
var COMPARE_MB_COOKIE = 'compareMBCookie';
var TYPE_GRAPHIC_CARD = 'graphiccards';
var TYPE_MOTHERBOARD = 'motherboards';

var MAX_COMPARE = 4;

function addCompareProduct(productName, productID, productType) 
{
    var productArray = getCompareProducts(productType);
	
	if (productArray != null) 
	{
	    // if list is at maximum length, return -1
	    if (productArray.productIDs.length == MAX_COMPARE) 
	    {
		    return -1;
	    }
    	
	    // if list already contains, return the length of the list
	    for (i in productArray.productIDs) {
		    if (productArray.productIDs[i] == productID) {
			    return productArray.length;
		    }
	    }
	    
	    // otherwise, add to array and set cookie
	    productArray.productNames[productArray.productNames.length] = productName;
	    productArray.productIDs[productArray.productIDs.length] = productID;
	} 
	else 
	{
	    productArray = new Object();
	    productArray.productIDs = new Array();
	    productArray.productIDs[0] = productID;
	    productArray.productNames = new Array();
	    productArray.productNames[0] = productName;
	}
	
	storeProducts(productArray, productType);
	
	return productArray.productIDs.length;
	

}

// take the products obj and store it in the cookie
function storeProducts(productObj, productType) {
    var cookieNameString = productObj.productNames.join(COMPARE_DELIM);
    var cookieIDString = productObj.productIDs.join(COMPARE_DELIM);
    
    ed_setCookie(getNameCookieName(productType), cookieNameString, null);
    ed_setCookie(getIDCookieName(productType), cookieIDString, null);
}

// convert the cookie into an array of strings
function getCompareProducts(productType) {
    
   
    var cookieNameString = ed_getCookie(getNameCookieName(productType));
    if (cookieNameString == '') {
        return null;
    }
    
    var cookieIDString = ed_getCookie(getIDCookieName(productType));
    if (cookieIDString == '') {
        return null;
    }
    
    var cookieNameArray = cookieNameString.split(COMPARE_DELIM);
    var cookieIDArray = cookieIDString.split(COMPARE_DELIM);
    
    var productsObj = {productNames:cookieNameArray, productIDs:cookieIDArray};
    return productsObj;
}

function removeCompareProduct(productName, productID, productType) {

    var cookieArray = getCompareProducts(productType);
    
    if (cookieArray != null) {
        if (cookieArray.productIDs.length <= 0) {
            return cookieArray.productIDs.length;
        }
        
        var newNameArray = new Array();
	    var newIDArray = new Array();
    	
	    for (i in cookieArray.productIDs) {
		    if (cookieArray.productIDs[i] != productID) {
		        newNameArray[newNameArray.length] = cookieArray.productNames[i];
			    newIDArray[newIDArray.length] = cookieArray.productIDs[i];
		    }
	    }
    	
	    var productsObj = {productNames:newNameArray, productIDs:newIDArray};
	    storeProducts(productsObj, productType);
	    
        return newIDArray.length;
    }
}

function clearCookie(productType) {
    ed_setCookie(getNameCookieName(productType), '', null);
    ed_setCookie(getIDCookieName(productType), '', null);
}

function getIDCookieName(productType) {
    var sCookie = '';
    
    if (productType == TYPE_GRAPHIC_CARD) {
	    sCookie = COMPARE_GC_COOKIE;
	} else {
	    sCookie = COMPARE_MB_COOKIE;
	}
	
	return sCookie;
}

function getNameCookieName(productType) {
    var sCookie = '';
    if (productType == TYPE_GRAPHIC_CARD) {
        sCookie = COMPARE_GC_NAME_COOKIE;
    } else {
        sCookie = COMPARE_MB_NAME_COOKIE;
    }
    return sCookie;
}


/***********************************************************************************************/
