﻿///////////////////////////////////////
// REQUIRES: jquery-1.4.1.js
//           cartBase.js
//           cookieHelper.js
//           jquery.floatingbox.js
//           hash.js
//           elements.js
///////////////////////////////////////
var _cintMaxCartItems = 10;

var _cstrCartId = "divFloatingCart";
var _cstrCartInnerId = "divFloatingCartInner";
var _cstrCartItemBaseId = "divCartRowItem_";

var _blnHideCartWhenEmpty = true;

// Determine # of cart items based on screen height
try {
    if (screen.height <= 600)
        _cintMaxCartItems = 3;
    else if (screen.height <= 768)
        _cintMaxCartItems = 8;
    else if (screen.height <= 800)
        _cintMaxCartItems = 12;
    else if (screen.height <= 960)
        _cintMaxCartItems = 15;
    else if (screen.height <= 1024)
        _cintMaxCartItems = 20;
    else if (screen.height <= 1080)
        _cintMaxCartItems = 22;
    else if (screen.height > 1080)
        _cintMaxCartItems = 24;
    else
        _cintMaxCartItems = 10;
} catch (err) {
    _cintMaxCartItems = 10; // Error; default
}

function initializeFloatingCart() {
    try {

        _blnHideCartWhenEmpty = true;

        hideCart();

        // make cart floatable.
        $cart('#' + _cstrCartId).floating({ targetX: "right", targetY: "top", interval: 10 });

        populateCartFromCookies();

        showCartIfPopulated();
        // }
    } catch (e) { }
}

function populateCartFromCookies() {

    var coIdCookie = getAdvIdCookie();
    var coNameCookie = getAdvNameCookie();

    if (null == coIdCookie || 0 == coIdCookie.length) {
        return;
    }

    var ids = coIdCookie.split(_csSep);
    var names = coNameCookie.split(_csSep);

    for (var i = 0; i < ids.length; ++i) {
        var sId = ids[i];
        var sName = unescape(names[i]);

        appendToCartData(sId, sName);

        // Deactivate all selection box controls
        toggleAllRequestImages(sId, false);
        toggleAllRequestCheckboxes(sId, false);

        addControlsToCart(sId, sName);
    }
}
function showCartIfPopulated() {
    if (_hshCartSelections.size() > 0) showCart();
}
function showCart() {
    $cart("#" + _cstrCartId).css('visibility', 'visible');
}
function hideCart() {
    $cart("#" + _cstrCartId).css('visibility', 'hidden');
}

function updateEmptyControls() {
    if (getCartItemCount() == 0) hideCart();
}

function addToCartUICB(strId, strName) {

    if (strName.length > 0) {

        var blnState = getCheckBoxState(strId);
        if (blnState) {
            addToCartUI(strId, strName);
        }
        else {
            var strDivId = _cstrCartItemBaseId + strId;
            removeCartItem(strDivId, strId);
        }
        return true;
    }
    return false;
}
function addToCartUI(strId, strName) {

    if (strName.length > 0) {

        if (cartItemExists(strId)) return;

        CartAddBase(strId, strName);
        updateCartCookies();

        toggleAllRequestImages(strId, false);
        toggleAllRequestCheckboxes(strId, false);
    }
}
function CartAddBase(strId, strName) {

    if (!cartSizeValid(_cintMaxCartItems)) return;

    // Make sure the cart is visible; it can be hidden on the homepage.
    showCart();

    addToCartBase(strId, strName);
    try {
        if (typeof cbFunctionOnCartAdd == "function") {
            // use callback on add function
            cbFunctionOnCartAdd(strId, strName);
        }
    } catch (e) { }

}
function addToCartBase(strId, strName) {

    appendToCartData(strId, strName);

    updateCartCookies();

    addControlsToCart(strId, strName);
}
function addControlsToCart(strId, strName) {

    var strCheckId = "cartAdvertiserId" + strId;
    var objChk = new HTMLElement("input", { type: 'checkbox', name: 'cartAdvertiserId', id: strCheckId, value: strId, checked: 'checked' });
    objChk.checked = true;

    var objLabel = new HTMLElement("label", { 'for': strCheckId });
    objLabel.appendChild(strName);


    var strDivId = _cstrCartItemBaseId + strId;
    var objNewDiv = new HTMLElement('div', { 'id': strDivId, 'class': 'check', 'style': 'text-align: left; cursor: pointer;' });
    objNewDiv.appendChild(objChk.getHTML());
    objNewDiv.appendChild(objLabel.getHTML());

    $cart("#" + _cstrCartInnerId).append(objNewDiv.getHTML());

    // Hook the checkboxes up to an event so that we can remove them when unchecked.
    $cart("#" + strCheckId).click(function () {
        removeCartItem(strDivId, strId);
    });
}

function cartItemExists(strId) {
    return ($cart("#" + _cstrCartItemBaseId + strId + " #cartAdvertiserId" + strId).length > 0);
}

function removeCartItem(strDivId, strId) {

    $cart("#" + _cstrCartItemBaseId + strId).remove();

    removeCartData(strId);
    updateCartCookies();

    // Uncheck all "add to wishlist" images & checkboxes.
    toggleAllRequestImages(strId, true);
    toggleAllRequestCheckboxes(strId, true);

    updateEmptyControls();

    try {
        if (typeof cbFunctionOnCartRemove == "function") {
            // use callback on add function
            cbFunctionOnCartRemove(strId);
        }
    } catch (e) { }
}


