﻿var AccessoriesMethods = {
    accessories_request: null
    , GetAccessories: function(pid, bind) {
        if (AccessoriesMethods.accessories_request != null) {
            AccessoriesMethods.accessories_request.abort();
        }
        AccessoriesMethods.accessories_operator_request = $.ajax({
            type: 'POST',
            url: '/handlers/Products/AccessoriesHandler.ashx',
            xhr: function() {
                if ($.browser.msie && $.browser.version.substr(0, 1) <= 7)
                    return new ActiveXObject('Microsoft.XMLHTTP');
                else
                    return new XMLHttpRequest();
            },
            data: '{"Action":"GET-ACCESSORIES","PID":"' + pid + '"}',
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            beforeSend: function() {
                $('#products').hide();
                $('#products-loading').show();
            },
            success: function(result) {
                if (result == null) {
                    return;
                }
                if (result.HasError) {
                    return;
                }
                else {
                    AccessoriesMethods.PresentAccessories(result, bind);
                    $('#products-loading').fadeOut('fast', function() {
                        $('#products-loading').hide();
                        $('#products').fadeIn('fast');
                    });

                }
            },
            error: function(err) {
                if (err.statusText == 'abort') { return; }
            },
            complete: function() {
                AccessoriesMethods.accessories_request = null;
            }
        });
    }
    , PresentAccessories: function(result, bind) {
        if (result.Items.length == 0) {
            $('#gtold').parent().hide();
            $('#gdesc').trigger('click');
            return;
        }

        $('#accessories-headline').text(result.Text);
        var container = '#products';
        $('#product_list_item_template').tmpl(result.Items).appendTo(container);

        if (bind) {
            AccessoriesMethods.BindEventsForFancyBox();
        }
    },


    BindEventsForFancyBox: function() {
        $('#products div.product-box-large').each(function() {
            $this = $(this);
            var pid = $this.attr('data-pid');

            $("a:not(.buy)", $this).click(function(e) {
                e.preventDefault();
                document.title += pid + "-";
                AccessoriesMethods.GetProductDetails(pid);
            });

            $("a.buy", $this).attr('href', "javascript:EcommerceMethods.AddItem('"+ pid +"', '2', '0', '0', '0');");
        });
    },

    GetProductDetails: function(pid) {
        if (AccessoriesMethods.accessories_request != null)
            AccessoriesMethods.accessories_request.abort();

        AccessoriesMethods.accessories_operator_request = $.ajax({
            type: 'POST',
            url: '/handlers/Products/AccessoriesHandler.ashx',
            xhr: function() {
                if ($.browser.msie && $.browser.version.substr(0, 1) <= 7)
                    return new ActiveXObject('Microsoft.XMLHTTP');
                else
                    return new XMLHttpRequest();
            },
            data: '{"Action":"GET-PRODUCT-DETAILS","PID":"' + pid + '"}',
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            beforeSend: function() {

            },
            success: function(result) {
                if (result == null || result.HasError) {
                    return;
                }
                else {
                    AccessoriesMethods.PresentProductDetails(result);
                }
            },
            error: function(err) {
                if (err.statusText == 'abort') { return; }
            },
            complete: function() {
                AccessoriesMethods.accessories_request = null;
            }
        });
    },

    PresentProductDetails: function(result) {
        var html = $('#details_template').tmpl(result);
        FancyboxHandler.ShowFancybox('', html);
    }
}
