﻿// Shopping cart script

function alert(_s) {
    confirm(_s);
}

// Full Cart =================================================
// Add item to cart
var cartType = "";
function onAddFullCartClick(_id, _catId, _tokenCart, _opts) {
    // Append parameter to AJAX POST
    // Prepare AJAX POST request
    var arr = _opts.split(',');
    var _url = sAppDomain + '/Handlers/AddToCartHandler.ashx';
    // Create object
    var obj = new Object;
    //obj['id'] = _id;
    var ids = _catId + "_" + _id;
    obj['q'] = ids;
    if (arr != null && arr != undefined && arr.length > 0) {
        obj['q'] += "_" + arr.join('_');
    }
    obj['f'] = _onceBuy;
    obj['c'] = _ctrlID;
    obj['t'] = _tokenCart;
    obj['type'] = "full";
    // var _data = $.param(obj);
    //alert(obj['id'] + '_' + obj['params']);

    // Get AJAX post
    $.ajax({ type: 'POST', url: _url, data: obj, success: goAddComplete, error: goAddUncomplete });

}

// ===========================================================


// Add item to cart
var isFullCart = false;
function onAddButtonClick(_ctrlID, _id, _catId, _onceBuy, _tokenCart, _opts, _isFullCart, _func) {
    isFullCart = _isFullCart;
    if (_opts != null && _opts != '' && _opts != undefined) {
        var opts = _opts.split(',');
        var arr = new Array(opts.length);
        if (!isFullCart) {
            for (i = 0; i < opts.length; i++) {

                var opt = eval('opt_' + opts[i]);

                var val = document.getElementById(opts[i] + '_HiddenValue');

                // Get values array
                var args = opt.split(',');
                if (val != null && val != undefined && args[0] > 0 && !(val.value.length > 0)) {
                    alert(args[1]);
                    if (args[2] != '') {
                        document.getElementById(args[2]).focus();
                    }
                    return;
                }
                // Append parameter to AJAX POST
                arr[i] = val.value;
            }
        }
        else {
            arr = _opts.split('_');
        }
    }


    // Prepare AJAX POST request
    var _url = sAppDomain + '/Handlers/AddToCartHandler.ashx';
    // Create object
    var obj = new Object;
    //obj['id'] = _id;
    var ids = _catId + "_" + _id;
    obj['q'] = ids;
    if (arr != null && arr != undefined && arr.length > 0) {
        obj['q'] += "_" + arr.join('_');
    }
    obj['f'] = _onceBuy;
    obj['c'] = _ctrlID;
    obj['t'] = _tokenCart;
    obj['func'] = _func;
    obj['type'] = "full";
    // var _data = $.param(obj);
    //alert(obj['id'] + '_' + obj['params']);

    // Get AJAX post
    if (_onceBuy > 0) {
        $.ajax({ type: 'POST', url: _url, data: obj, success: goAddPurchase, error: goAddUncomplete });
    } else {
        $.ajax({ type: 'POST', url: _url, data: obj, success: goAddComplete, error: goAddUncomplete });
    }
}

function onAddShippingFee(_dropShippingFeeID) {
    isFullCart = true;

    // Prepare AJAX POST request
    var _url = sAppDomain + '/Handlers/AddToCartHandler.ashx';
    // Create object
    var obj = new Object();
    var dropShippingObj = $("#" + _dropShippingFeeID)[0];
    var shippingID = dropShippingObj.options[dropShippingObj.selectedIndex].value;
    obj['q'] = shippingID;
    obj['type'] = 'shippingFee';
    // alert('Shipping fype = ' + shippingID);
    $.ajax({ type: 'POST', url: _url, data: obj, success: goAddComplete, error: goAddUncomplete });
}


// Set selected shopping cart option value
function setShopCartOption(_id, _value) {
    // Set option value
    document.getElementById(_id).value = _value;

}

// Add item purchase
function goAddPurchase(_t) {
    var url = sAppDomain + '/Pages.aspx?pg=checkout&CategoryID=536';
    // alert('Follow ' + url);
    document.location.href = url;
}

// Add items set complete
function goAddComplete(_t) {
    // TODO :: Set button or link label --------------------------------------
    var t = eval('(' + _t + ')');

    if (t[0] != null && (t[0] != -1 && t[0] != 0)) {
        if (t[0] == "shippingFee") {
            fnRenderCart(t[1], 0);
        }
        else {
            var tokenCart = t[2];
            var itemsCounter = t[3];

            // Rendering the Cart ---------------------------------------------------
            fnRenderCart(tokenCart, itemsCounter);
            // -----------------------------------------------------------------------

            // Set Button Counter----------------------------------------------------
            $(document).ready(function() {
                var clicker = document.getElementById(t[0]);
                if (clicker != null) {
                    clicker.innerText = t[1] + '';
                    clicker.style.fontWeight = 'bold';
                }
            });

        }

        // -----------------------------------------------------------------------
    }
    else {
        alert(t[1]);

    }
}

function fnRenderCart(_cartToken, _itemsCounter) {
    try {
        // Rendering the Cart ---------------------------------------------------
        var renderingUrl = sAppDomain + '/Handlers/RenderCartHandler.ashx';
        var cartItemProperties = "";
        if (isFullCart) {
            cartItemProperties = $('#CartFullProps').val();
        }
        else {
            cartItemProperties = $('#CartProps_' + _cartToken).val();
            if (_itemsCounter > 0) {
                $('#lblCartCounter').html(_itemsCounter);
            }
        }
        var params = new Object();
        params["q"] = cartItemProperties;
        params["isFullCart"] = isFullCart;
        $.ajax({ type: 'POST', url: renderingUrl, data: params, success: goRender, error: goAddUncomplete });
        // -----------------------------------------------------------------------
    }
    catch (e) {
    }
}

// Open items set failed
function goAddUncomplete(t) {
    // Error message
    alert(t.responseText);
}

// Set Cart Html Result to cartPanel 
function goRender(_html) {
    if (_html != null && _html != undefined && _html != "") {
        try {
            var htmlRes = $(document.createElement("div"));
            htmlRes.html(_html);
            var dataRes = htmlRes.find("#DataResult").val();
            var fixedHtmlRes = htmlRes.find("#parentContainer").html();
            if (!isFullCart) {
                if (parseInt(dataRes) > 0) {
                    $(".button").css('display', 'block');
                }
                else {
                    $(".button").css('display', 'none');
                }
                $(".basket1").css('display', 'block');
                $(".PanelContent").html(fixedHtmlRes);

            }
            else {

                if (parseInt(dataRes) > 0) {
                    $(".FullCartContainer").html(fixedHtmlRes);
                }
                else {
                    $(".panelcartcontainer").hide();
                    $(".NoData").css('display', 'block');
                }
            }
        }
        catch (e) {

        }
    }
}


/**************************** Billing and Shipping data ****************************/

// Global check same Billing and Shipping data variable (follow line must be appended from server side)
// var bsSameness = false;

// Set copying status checkbox
function setCopyCheck(_e, _source, _target) {
    // Set check status
    bsSameness = _e.checked;
    // Select operation by new status
    bsSameness ? setCopyOn(_source, _target) : setCopyOff(_target);
}

// Set copy controls on
function setCopyOn(_source, _target) {
    // Get source and target controls ID's arrays
    var source = $('#' + _source).val().split(',');
    var target = $('#' + _target).val().split(',');

    // Synchronize control's values
    if (source.length == target.length) {
        // Using controls array
        for (i = 0; i < source.length; i++) {
            // Get controls pair
            var t = document.getElementById(target[i]);
            var s = document.getElementById(source[i]);

            // Check controls pair
            if (t != null && s != null) {
                // Get input types
                switch (t.getAttribute('type')) {
                    case 'text':
                        // Copy text type control value
                        t.value = s.value;
                        break;
                    case 'select-one':
                        // Copy select type control option
                        t.selectedIndex = s.selectedIndex;
                        break;
                    default:
                        break;
                }

                // Disable target control
                t.disabled = true;
            }
        }
    }
}

// Set copy controls off
function setCopyOff(_target) {
    // Get target controls ID's arrays
    var target = $('#' + _target).val().split(',');
    // Using controls array
    for (i = 0; i < target.length; i++) {
        // Get controls pair
        var t = document.getElementById(target[i]);
        // Check control
        if (t != null) {
            // Enable target control
            t.disabled = false;
        }
    }
}

// Auto copy text data script creation failed
function autoCopyText(_e, _check, _target) {
    if ($('#' + _check).attr('checked')) {
        // Copy control value
        $('#' + _target).val(_e.value);
    }
}

// Auto copy select data script creation failed
function autoCopySelect(_e, _check, _target, _next1, _next2) {
    if ($('#' + _check).attr('checked')) {
        // Copy control selection
        $('#' + _target).attr('selectedIndex', _e.selectedIndex);
    }

    if (_next1.length > 0 && _next2.length > 0) {
        // Update related selection
        autoUpdate(_e, _next1, _next2);
    }
}

// Auto update states
function autoUpdate(_e, _t1, _t2) {
    // Prepare AJAX request
    var _p = new Object;
    _p['countryCode'] = _e.options[_e.selectedIndex].value;
    _p['next1'] = _t1;
    _p['next2'] = _t2;
    // Try open new search result
    var _url = sAppDomain + '/CommerceControls/ShipState.ashx';
    var _data = $.param(_p);
    // Get AJAX post
    $.ajax({ type: 'POST', url: _url, data: _data, success: autoUpdateComplete, error: autoUpdateUncomplete, dataType: 'json' });
}

// Open items set complete
function autoUpdateComplete(t) {
    // Remove old contents
    var pair = t[0];
    // Get 1st control
    var next1 = (pair.First.length > 0 ? document.getElementById(pair.First) : null);
    // Get 2nd control
    var next2 = (pair.Second.length > 0 ? document.getElementById(pair.Second) : null);

    // Get new options array
    var opts = t[1];

    // Update 1st control
    if (next1 != null) {
        // Remove options
        while (next1.options.length > 0) {
            next1.options[next1.length - 1] = null;
        }
        // Upload options
        for (i = 0; i < opts.length; i++) {
            next1.options[next1.length] = new Option(opts[i].Second, opts[i].First);
        }
        // On / Off control
        next1.disabled = !(next1.length > 1);
    }

    // Update 2nd control
    if (next2 != null) {
        // Remove options
        while (next2.options.length > 0) {
            next2.options[next2.length - 1] = null;
        }
        // Upload options
        for (i = 0; i < opts.length; i++) {
            next2.options[next2.length] = new Option(opts[i].Second, opts[i].First);
        }

        // On / Off control
        next2.disabled = bsSameness ? true : !(next2.length > 1);

        // next2.disabled = !(next2.length > 1);
    }
}

// Open items set failed
function autoUpdateUncomplete() {
    // Error message
    // NONE
}

