/// <reference path="~\Headers\Scripts\jquery-1.3.2-vsdoc.js" />
if (jQuery) (function($) {

    $.fn.OrderBasketInfoBox = function(options) {
        var settings = $.extend({}, $.fn.OrderBasketInfoBox.defaults, options);
        var $self = $(this);

        function UpdateOrderBasketBox(json) {
            $("ul>li", $self).fadeOut("fast", function() {
                $("#" + settings.orderBasketQuantElementID, $self).html(json.Count);
                $("#" + settings.orderBasketSumElementID, $self).html(json.Sum);
                $("ul>li", $self).fadeIn("normal");
            });
        }

        $("area." + settings.orderBasketInOutAnchorClassName).click(function() {
            $.getJSON($(this).attr("href"), function(json) {
                UpdateOrderBasketBox(json);
            });

            return false;
        });

        $("a." + settings.orderBasketInOutAnchorClassName).click(function() {
            var objWk = $(this);
            var objAmount = objWk.parent().find("input[type=text]");
            ShowWait(objWk);

            var fltDynamicAmount = 0.0;
            var strUrl = $(this).attr("href");

            fltDynamicAmount = parseFloat(objAmount.val());
            strUrl += fltDynamicAmount + "/true/";

            $.getJSON(strUrl,
                function(json) {
                    if (json.ItemQuantity > 0) {
                        $("#" + settings.orderBasketInfoElementIDPrefix + json.ItemType + "-" + json.ItemKey + " ." + settings.orderBasketQuantityElementClassName).html(json.ItemQuantityInfo);
                        $("#" + settings.availInfoBoxElementIDPrefix + json.ItemType + "-" + json.ItemKey).html(json.MultiAvailStatus);

                        $("#" + settings.orderBasketInfoElementIDPrefix + json.ItemType + "-" + json.ItemKey + " ." + settings.orderBasketQuantityElementClassName).fadeIn("normal", function() {
                            UpdateOrderBasketBox(json);
                        });
                    }
                    else {
                        $("#" + settings.availInfoBoxElementIDPrefix + json.ItemType + "-" + json.ItemKey).html(json.MultiAvailStatus);
                        $("#" + settings.orderBasketInfoElementIDPrefix + json.ItemType + "-" + json.ItemKey + " ." + settings.orderBasketQuantityElementClassName).fadeOut("normal");
                        UpdateOrderBasketBox(json);
                    }

                    HideWait(objWk);
                }
            );

            return false;
        });

        $("a." + settings.documentInOutAnchorClassName).click(function() {
            var objWk = $(this);
            var objAmount = objWk.parent().find("input[type=text]");
            ShowWait(objWk);

            var fltDynamicAmount = 0.0;
            var strUrl = $(this).attr("href");

            fltDynamicAmount = parseFloat(objAmount.val());
            strUrl += fltDynamicAmount + "/true/";

            $.getJSON(strUrl, function(json) {
                if (json.ItemQuantity > 0) {
                    $("#" + settings.orderBasketInfoElementIDPrefix + json.ItemType + "-" + json.ItemKey + " ." + settings.documentQuantityElementClassName).html(json.ItemQuantityInfo);
                    $("#" + settings.orderBasketInfoElementIDPrefix + json.ItemType + "-" + json.ItemKey + " ." + settings.documentQuantityElementClassName).fadeIn("normal");
                }
                else {
                    $("#" + settings.orderBasketInfoElementIDPrefix + json.ItemType + "-" + json.ItemKey + " ." + settings.documentQuantityElementClassName).fadeOut("normal");
                }
                HideWait(objWk);

            });
            return false;
        });

        $("a." + settings.documentAskPriceAnchorClassName).click(function() {
            var objWk = $(this);
            ShowWait(objWk);
            var fltDynamicAmount = 1.0;
            var strUrl = $(this).attr("href");
            strUrl += fltDynamicAmount + "/true/";

            $.getJSON(strUrl, function(json) {
                var objItem = $("#" + settings.priceInfoBoxElementIDPrefix + json.ItemType + "-" + json.ItemKey);
                objItem.removeClass("green");
                objItem.removeClass("red");
                objWk.removeClass("green");
                objWk.removeClass("gray");

                if (json.Success) {
                    if (json.Price) {
                        var strTitle = $("span.brutto", objItem).attr('title');
                        objItem.html('');
                        if (json.CustomerPrice) {
                            objItem.html(json.CustomerPrice);
                        }

                        objItem.append("<span class=\"brutto\">" + json.Price + "</span>");
                        if (strTitle) {
                            $("span.brutto", objItem).attr('title', strTitle);
                        }
                        objItem.addClass("green");
                    }

                    objWk.addClass("green");
                }
                else {
                    objItem.addClass("red");
                    objWk.addClass("gray");
                }

                HideWait(objWk);
            });
            return false;
        });

        function ShowWait(sender) {
            sender.addClass("wait");
        }

        function HideWait(sender) {
            sender.removeClass("wait");
        }
    };

    $.fn.OrderBasketInfoBox.defaults = {
        availInfoBoxElementIDPrefix: "aib",
        priceInfoBoxElementIDPrefix: "pcb",
        orderBasketInfoElementIDPrefix: "obi",
        orderBasketQuantityElementClassName: "qu",
        documentQuantityElementClassName: "qd",
        orderBasketInOutAnchorClassName: "wk",
        documentInOutAnchorClassName: "doc",
        documentAskPriceAnchorClassName: "ask",
        orderBasketQuantElementID: "gOrderBasketQuant",
        orderBasketSumElementID: "gOrderBasketSum"
    };

})(jQuery);
