﻿/// <reference path="jquery-1.4.1-vsdoc.js" />

$.fn.extend(
{
   get_ecom_request: null,
   GetCart: function() {
      if ($.fn.get_ecom_request != null) {
         $.fn.get_ecom_request.abort();
      }
      $.fn.get_ecom_request = $.ajax({
         type: 'POST',
         url: '/Handlers/Public/ShoppingCart/CartHandler.ashx',
         data: '{"Action":"GET"}',
         dataType: 'json',
         contentType: 'application/json; charset=utf-8',
         beforeSend: function() {
         },
         success: function(result) {
            if (result.HasError) {
               ShowFancybox(result.Headline, CreateULList('', '', result.Errors), 'error');
            }
            else {
               $.fn.PresentCart(result, function() { /*callback*/ });
            }
         },
         error: function() {
            ShowFancybox('Systemfel', CreateULList('', '', new Array('Tyvärr blev något fel, var god försök igen')), 'error');
         },
         complete: function() {
            $.fn.get_ecom_request = null;
         }
      });
   },
   PresentCart: function(result, callback) {

      var pageTypeID = $(val_pageTypeID).selector;
      if (pageTypeID == 10) {
         if (result.ProductQuantity == 0) {
            ShowFancyboxNoClosing('Var god vänta.', 'Du flyttas nu från kassan eftersom du inte har några produkter kvar.', 'info');
            $.fn.get_ecom_request = null;
            var callback = function() {
               window.location = result.RedirectURL
            };
            setTimeout(callback, 3000);
            return false;
         }
      }

      $('.cart_list_item_wrapper').remove();
      if (result.FreightCostValue > 0 && result.ProductQuantity > 0) {
         $('div#cart_info_wrapper dl#freight-information dd.freight-info').text(result.FreightInformation);
         $('div#cart_info_wrapper dl#freight-information dd.freight-price').text(result.FreightCost + ' SEK');
         $('div#cart_info_wrapper dl#freight-information').show();
      } else {
         $('div#cart_info_wrapper dl#freight-information').hide();
      }

      $template = $('#cart_product_template');
      $template.tmpl(result.ShoppingCartListItems).insertAfter('#cart_info_wrapper #cart_product_header');

      $templateCard = $('#cart_card_template');
      $templateCard.tmpl(result.NobleCardListItems).insertAfter('#cart_info_wrapper #cart_card_header');

      if (result.CardCount > 0) {
         $('div#cart_info_wrapper div#cart-noblecard-wrapper').show();
      } else {
         $('div#cart_info_wrapper div#cart-noblecard-wrapper').hide();
      }

      if (result.ProductQuantity > 0) {
         $('div#cart_info_wrapper div#products-wrapper').show();
      } else {
         $('div#cart_info_wrapper div#products-wrapper').hide();
      }

      $('#cart_info_wrapper dl dd#dd_sub_total').html(result.SubTotal);

      if (result.SubTotal.length > 0) {
         $('div#cart_info_wrapper dl#cart-sub-total').show();
      } else {
         $('div#cart_info_wrapper dl#cart-sub-total').hide();
      }

      if (pageTypeID != 10) {
         var cartIsOpen = $('#cart_info_wrapper').is(':visible');
         $anchorShowHideCart = $('#cart_trigger');
         $('#top ul.cart li.cart_info_text').text(result.CI.CartInfoText);

         if ((result.ProductQuantity == 0) && (result.CardCount > 0)) {
            $('#cart_trigger').parent().show();
            $('#a_to_checkout').parent().hide();
         }
         else if ((result.ProductQuantity > 0) || (result.CardCount > 0)) {
            $('#cart_trigger').parent().show();
            $('#a_to_checkout').parent().show();
         } else {
            $('#cart_trigger').parent().hide();
            $('#a_to_checkout').parent().hide();
            ShowHideCart();
         }
         var cartHasProducts = result.ProductQuantity > 0;
         if (!cartHasProducts && cartIsOpen) {
            //            ShowHideCart(result.CI.CartInfoText, result.CI.CloseCartText);
         }
         else if (cartIsOpen && cartHasProducts) {
            //            $anchorShowHideCart.text(result.CI.CloseCartText);
         } else {
            //            $anchorShowHideCart.text(result.CI.CartInfoText);
         }
      }
      if (callback != null) {
         callback.call();
      }
   },
   BuyAnchor: function(qty_selector_relative_to_anchors_parent) {
      $anchor = $(this);
      $anchor.bind('click', function() {
         $input = $(this).parent().parent().find(qty_selector_relative_to_anchors_parent).first();
         $.fn.AddProductToShoppingCart($(this).attr('rel').split('-')[1], $(this).attr('rel').split('-')[0], $input.val());
      });
   },
   Buy: function(productid, qty) {
      $anchor = $(this);
      $anchor.bind('click', function() {
         $.fn.AddProductToShoppingCart(productid, qty);
      });
   },

   AddProductToShoppingCart: function(productID, quantity) {
      if ($.fn.get_ecom_request != null) {
         $.fn.get_ecom_request.abort();
      }

      $.fn.get_ecom_request = $.ajax({
         type: 'POST',
         url: '/Handlers/Public/ShoppingCart/CartHandler.ashx',
         data: '{"Action":"ADD","ProductID":"' + productID + '","Quantity":"' + quantity + '"}',
         dataType: 'json',
         contentType: 'application/json; charset=utf-8',
         beforeSend: function() {
         },
         success: function(result) {
            if (result.HasError) {
               ShowFancybox('Information', CreateULList('', '', result.Errors), 'error');
            }
            else {
               $.fn.PresentCart(result, function() { /*callback*/ });
               if (result.IsFirstProduct) {
               }
               ShowFancyboxAndFade('Du har lagt följande i varukorgen', '<ul><li>' + result.ProductsHandeled[0].Name + '</li></ul>', 2000, 'info');
            }
         },
         error: function() {
            ShowFancybox('Information', 'Tyvärr blev något fel, var god försök igen', 'error');
         },
         complete: function() {
            $.fn.get_ecom_request = null;
         }
      });
   },

   AddManyProductsToShoppingCart: function(products) {
      if ($.fn.get_ecom_request != null) {
         $.fn.get_ecom_request.abort();
      }

      $.fn.get_ecom_request = $.ajax({
         type: 'POST',
         url: '/Handlers/Public/ShoppingCart/CartHandler.ashx',
         data: '{"Action":"ADD-MANY","Products":[' + products + ']}',
         dataType: 'json',
         contentType: 'application/json; charset=utf-8',

         beforeSend: function() {

         },

         success: function(result) {
            if (result.HasError) {
               ShowFancybox('Information', CreateULList('', '', result.Errors), 'error');

            }
            else {
               $.fn.PresentCart(result, function() { /*callback*/ });

            }
         },
         error: function() {
            ShowFancybox('Information', CreateULList('', '', new Array('Tyvärr blev något fel, var god försök igen')), 'error');
         },
         complete: function() {
            $.fn.get_ecom_request = null;
            //                $(art_list_wrapper).find('#loading').hide();
         }
      });
   },
   UpdateProduct: function(productID, quantity) {
      if ($.fn.get_ecom_request != null) {
         $.fn.get_ecom_request.abort();
      }
      $.fn.get_ecom_request = $.ajax({
         type: 'POST',
         url: '/Handlers/Public/ShoppingCart/CartHandler.ashx',
         data: '{"Action":"UPDATE","ProductID":"' + productID + '","Quantity":"' + quantity + '"}',
         dataType: 'json',
         contentType: 'application/json; charset=utf-8',

         beforeSend: function() {

         },

         success: function(result) {
            if (result.HasError) {
               ShowFancybox('Information', CreateULList('', '', result.Errors), 'error');
            }
            else {
               $.fn.PresentCart(result, function() { /*callback*/ });
            }
         },
         error: function() {
            ShowFancybox('Information', CreateULList('', '', new Array('Tyvärr blev något fel, var god försök igen')), 'error');


         },
         complete: function() {
            $.fn.get_ecom_request = null;

         }
      });
   },
   RemoveProduct: function(productID) {
      if ($.fn.get_ecom_request != null) {
         $.fn.get_ecom_request.abort();
      }

      $.fn.get_ecom_request = $.ajax({
         type: 'POST',
         url: '/Handlers/Public/ShoppingCart/CartHandler.ashx',
         data: '{"Action":"REMOVE","ProductID":"' + productID + '"}',
         dataType: 'json',
         contentType: 'application/json; charset=utf-8',

         beforeSend: function() {

         },

         success: function(result) {
            if (result.HasError) {
               ShowFancybox('Information', CreateULList('', '', result.Errors), 'error');
            }
            else {
               $.fn.PresentCart(result, function() { /*callback*/ });
            }
         },
         error: function() {
            ShowFancybox('Information', CreateULList('', '', new Array('Tyvärr blev något fel, var god försök igen')), 'error');
         },
         complete: function() {
            $.fn.get_ecom_request = null;
         }
      });
   },
   RemoveCard: function(cardNo) {
      if ($.fn.get_ecom_request != null) {
         $.fn.get_ecom_request.abort();
      }

      $.fn.get_ecom_request = $.ajax({
         type: 'POST',
         url: '/Handlers/Public/ShoppingCart/CartHandler.ashx',
         data: '{"Action":"REMOVE-CARD","CardNo":"' + cardNo + '"}',
         dataType: 'json',
         contentType: 'application/json; charset=utf-8',
         beforeSend: function() {
         },
         success: function(result) {
            if (result.HasError) {
               ShowFancybox('Information', CreateULList('', '', result.Errors), 'error');
            }
            else {
               $.fn.PresentCart(result, function() { /*callback*/ });
            }
         },
         error: function() {
            ShowFancybox('Information', CreateULList('', '', new Array('Tyvärr blev något fel, var god försök igen')), 'error');
         },
         complete: function() {
            $.fn.get_ecom_request = null;
         }
      });
   }
});
