// getPersonalizedPrices is the JS wrapper for the pricing API call and is implemented by LeisurePro.
// Input: pipe separated list of productIds.
// Retrieves productId and pricing information as JSON and calls populatePrices with the JSON response.
function getPersonalizedPrices(productIds)
{
    try
    {
        // TODO: Call to the real API on the passed in products and pass the JSON response to populatePrices.
        $.ajax({
            mode: "abort",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "WebServices/RichRelevanceService.asmx/GetProductPrices",
            data: JSON.stringify({
                productIds: productIds
            }),
            success: function (data)
            {
                var info = JSON.parse(data.d);
                populatePrices(info);
            }
        });

    } catch (ex) { } // Fail silently
}

//off-server-side version
function getRrPrices(productIds, mapPrices, nonMapPrices, productInfos)
{

    var checkPriceInDatabase = false; //when true, getPersonalizedPrices gets executed

    try
    {
        if (checkPriceInDatabase) { getPersonalizedPrices(productIds); }
        else
        {
            var products = new Array();
            var showMapCookie = $.cookie("ShowMap");
            if (EnabledMSCFunctionality(showMapCookie) && GlobalConstants.IsMSCEnabled)
            {
                for (var i = 0; i < productInfos.length; i++)
                {
                    rrProduct = new RrMapSuspensionProduct(productInfos[i]);
                    products.push(rrProduct);
                }
            }
            else
            {
                var showMap = ParseShowMapCookie(showMapCookie);
                var prodIds = productIds.split("|");
                var mapPrices = mapPrices.split("|");
                var nonMapPrices = nonMapPrices.split("|");

                for (var i = 0; i < prodIds.length - 1; i++)
                {
                    rrProduct = new RrProduct(prodIds[i], '$' + mapPrices[i], '$' + nonMapPrices[i], showMap);
                    products.push(rrProduct);
                }
            }

            var result = "{\"products\":" + JSON.stringify(products) + "}";
            var info = JSON.parse(result);
            populatePrices(info);
        }
    } catch (ex)
    {

    } // Fail silently
}

function ParseShowMapCookie(cookie)
{
    var data = cookie.split('|');
    if (data.length > 1)
    {
        return (data[0] == 1 || data[1] == 1 || data[2] == 1) ? 0 : 1;
    }
    else
    {
        return data[0] == 1 ? 1 : 0;
    }
}

function EnabledMSCFunctionality(cookie)
{
    var data = cookie.split('|');
    return data.length > 1;
}

function RrProduct(prodId, map, nonMap, showMap)
{
    this.productId = prodId;
    this.regularPrice = showMap == 1 ? map : nonMap;
    this.salePrice = showMap == 1 ? map : nonMap;
}

function RrMapSuspensionProduct(product)
{
    this.productId = product.ProductId;
    if (MapSuspensionControl.IsReady())
    {
        if (MapSuspensionControl.IsRichRelevanceMapSuspended(product))
        {
            this.regularPrice = '$' + product.nonMapPrice;
            this.salePrice = '$' + product.nonMapPrice;
        }
        else
        {
            this.regularPrice = '$' + product.mapPrice;
            this.salePrice = '$' + product.mapPrice;
        }
    }
    else
    {
        MapSuspensionControl.AddToRRQueue(product);
        this.regularPrice = '$' + product.mapPrice;
        this.salePrice = '$' + product.mapPrice;
    }
}


var scriptLoc = 'http://www.myaffiliateprogram.com/u/leisurep/rep.asp';

var kbId = 0;
var queryString = window.location.search.substring(1);
var imgdata = '';
var subdata = '';
var overwrite = 1;

//Eugene fix issue with clean url. Now KbID always stored in cookie
if (GetCookie("kbid") != null)
{
    kbId = GetCookie("kbid");
}
if (queryString.length > 0)
{
    var pairs = queryString.split('&');

    for (var i = 0; i < pairs.length; i++)
    {
        var pairs2 = pairs[i].split('=');

        switch (pairs2[0].toLowerCase())
        {
            case 'kbid':
                kbId = pairs2[1];
                break;
            case 'clearcookie':
                if (pairs2[1] == 1)
                {
                    DeleteCookie("kbid");
                }
                break;
            case 'img':
                imgdata = pairs2[1];
                break;
            case 'sub':
                subdata = pairs2[1];
                break;
        }
    } //end for
} //end if

if (GetCookie("kbid") == null || overwrite == 1)
{
    if (kbId != 0)
    {
        var img = new Image();
        var url = scriptLoc + '?id=' + kbId;
        if (imgdata != '')
        {
            url += '&img=' + imgdata
        }

        if (subdata != '')
        {
            url += '&sub=' + subdata
        }

        img.src = url;

        SetCookie("kbid", kbId, 1);
    }
} //end if

function getCookieVal(offset)
{
    var endstr = document.cookie.indexOf(";", offset);
    if (endstr == -1)
        endstr = document.cookie.length;

    return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie(name)
{
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;

    while (i < clen)
    {
        var j = i + alen;
        if (document.cookie.substring(i, j) == arg)
            return getCookieVal(j);

        i = document.cookie.indexOf(" ", i) + 1;

        if (i == 0) break;
    }

    return null;
}

function WriteCookie(name, value, expires)
{
    var argv = SetCookie.arguments;
    var argc = SetCookie.arguments.length;
    var path = (argc > 3) ? argv[3] : null;
    var domain = (argc > 4) ? argv[4] : null;
    var secure = (argc > 5) ? argv[5] : false;

    var cookie = name + "=" + escape(value) +
			((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
			((path == null) ? "" : ("; path=" + path)) +
			((domain == null) ? "" : ("; domain=" + domain)) +
			((secure == true) ? "; secure" : "");

    document.cookie = cookie;
}

function DeleteCookie(name)
{
    var exp = new Date();
    exp.setTime(exp.getTime() - 1000000000);  // This cookie is history (changed -1 to make it previous time)
    var cval = GetCookie(name);
    document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}

function SetCookie(name, value, expiredays)
{
    var expdate = new Date();
    expdate.setTime(expdate.getTime() + (24 * 60 * 60 * 1000 * expiredays));
    WriteCookie(name, value, expdate);
}



