/*
    Product compare functions needed for pages with comparable items and for
    the compare pop-up window.
    Copyright (C) 2000-2008 Kohler Company.    All Rights Reserved.
    Author: Dennis Spaag
    Date Created: July 10, 2008
 */
function compareArrayContainsValue(s) {
    var inCompareArray =  getCompareArray();
    var result = false;
    if (inCompareArray.length > 0) {
        result = arrayContains(inCompareArray,s);
    }
    return result;
}
function getCompareArray() {
    var inCompareKpna = $.cookie('KTP_COMPARE_KPNA');
    var inCompareStrl = $.cookie('KTP_COMPARE_STRL');
    var inCompareKals = $.cookie('KTP_COMPARE_KALS');
    var inComparePowr = $.cookie('KTP_COMPARE_POWR');
    var result = [];
    if (inCompareKpna != null && inCompareKpna.length > 0) {
       result = result.concat(setArrayPrefix(inCompareKpna.split('|'), "kohler") );
    }
    if (inCompareStrl != null && inCompareStrl.length > 0) {
        result = result.concat(result, setArrayPrefix(inCompareStrl.split('|'), "sterling") );
    }
    if (inCompareKals != null && inCompareKals.length > 0) {
        result = result.concat(result, setArrayPrefix(inCompareKals.split('|'), "kallista") );
    }
    if (inComparePowr != null && inComparePowr.length > 0) {
        result = result.concat(result, setArrayPrefix(inComparePowr.split('|'), "resigen") );
    }
    return result;
}
function setCompareCookie(items, cookieName) {
    var value = arrayUnique(items).join('|');
    if (value.indexOf("|")==0) { value = value.replace('|',''); }
    $.cookie(cookieName, value, { path: '/' });
}

function updateCompareCookies(items) {
    var a2 = [];
    if (items.length > 0) {
        a2 = items.join('|').split('|'); // duplicate array - don't change original
    }
    var mergeCookieResult = $.merge( a2, getCompareArray() );

    var cookieBaseName = 'KTP_COMPARE_';

    var business = "";
    var productNumber = "";
    var tmp = [];

    var lookup = { "kohler":"KPNA", "sterling":"STRL", "kallista":"KALS", "resigen":"POWR" };

    var result = new Array(4);
    result["kohler"] = [];
    result["sterling"] = [];
    result["kallista"] = [];
    result["resigen"] = [];

    for (var i=0; i<mergeCookieResult.length; i++) {
        // business and product number is colon delimited
        tmp = mergeCookieResult[i].split(":");
        business = tmp[0];
        productNumber = tmp[1];
        result[business].push(productNumber);
    }
    for (var key in result) {
        if (result[key].length > 0) {
            setCompareCookie(result[key], cookieBaseName + lookup[key]);
        }
    }
    
}

function resetCompareCookies() {
    $.cookie('KTP_COMPARE_KPNA', null, { path: '/' });
    $.cookie('KTP_COMPARE_STRL', null, { path: '/' });
    $.cookie('KTP_COMPARE_KALS', null, { path: '/' });
    $.cookie('KTP_COMPARE_POWR', null, { path: '/' });
}

function deleteFromCompare(cookieName, position) {
    var compareCookieVal = $.cookie(cookieName);

    if (typeof compareCookieVal != 'undefined' && compareCookieVal.length > 0) {
        var valArray = compareCookieVal.split('|');
        var result = [];
        for (var i=0; i<valArray.length; i++) {
            if (i != position) {
                result[result.length] = valArray[i];
            }
        }
        setCompareCookie(result, cookieName);
    }
}

function setArrayPrefix(arrayIn, prefix) {
    for (var i = 0; i<arrayIn.length; i++) {
        arrayIn[i] = prefix + ":" + arrayIn[i];
    }
    return arrayIn;
}


/**
 * Returns true if 's' is contained in the array 'a'
 */
function arrayContains(a, e) {
	for(var j=0;j<a.length;j++) { if(a[j]==e) { return true; }}
	return false;
}
/**
 * Removes duplicates in the array 'a'
 */
function arrayUnique(a) {
	var tmp = [];
	for(var i=0;i<a.length;i++){
		if(!arrayContains(tmp, a[i])){
			tmp[tmp.length]=a[i];
		}
	}
	return tmp;
}