if(typeof(fyndiq) == 'undefined') { var fyndiq = {}; }


fyndiq.addVariationToCart = function(product_id, variation_id){
    $("#variations_select option[value='"+variation_id+"']").attr('selected', 'selected');
    fyndiq.addProductToCart(product_id);
    $.fancybox.close();
}

fyndiq.addProductToCart = function(product_id) {
  var url = '/ajax/products/addtocart/'+product_id+'/';
  
  if ($('#variations_select').length > 0) {
    if ($('#variations_select').val().length == 0) {
        var txt = '';
        for (i=1;i<$("#variations_select option").length;i++)
        {
            txt = txt+'<input type="button" class="variation_select_button" onclick="fyndiq.addVariationToCart('+product_id+','+$("#variations_select option")[i].value+');" value="'+$("#variations_select option")[i].text + '"><br>';
        }
        
        $.fancybox(
            '<h3>' + $('#variations_firstoption').text() + '</h3><br/><div align="center">'+txt+'</div>',
            {
                'autoDimensions': false,
                'width': 350,
                'height': 'auto',
                'transitionIn': 'none',
                'transitionOut': 'none',
                'hideOnContentClick': false
            }
        );
      return;
    } else {
      url = url + $('#variations_select').val() + '/';
    }
  }
  $.post(url, {}, function(json) {
    if(json == 'sold out'){
      $.fancybox(
          '<h2>Slutsåld</h2><p>Denna vara sålde just slut, och du kan inte lägga den i kundvagnen. Detta händer när flera kunder försöker köpa samma vara samtidigt.</p>',
          {
              'autoDimensions': false,
              'width': 350,
              'height': 'auto',
              'transitionIn': 'none',
              'transitionOut': 'none',
              'hideOnContentClick': true
          }
      );
      $('.cartbtn').replaceWith('<br/><span class="mini">Denna produkt är slutsåld</span>');
      $('.product_num_left_in_words').html('0');
    } else {
      fyndiq.refreshCartData();
      fyndiq.flashCart();
    }
  }, 'json');

};

/* Remove a row from the cart */
fyndiq.removeFromCart = function(item_id) {
    $.post('/ajax/cart/removeitem/' + item_id + '/',{}, fyndiq.cartUpdate, "json");
};

/* Scroll to page top and briefly show cart details */
fyndiq.flashCart = function() {
  var st = 0;
  $('html, body').animate({scrollTop: st}, 400);
  fyndiq.toggleCart();
  setTimeout('fyndiq.toggleCart();', 3100);
};


/* Toggle cart details visibility */
fyndiq.toggleCart = function() {
  fyndiq.cartDetails.toggle();
};


fyndiq.renderEmptyCart = function(json) {
  var num_items = 'Inga varor.';
  var items_price_sum = '';
  var shipment_cost = '';
  
  fyndiq.cartNumItems.text('Inga varor');
  fyndiq.cartItemsPriceSum.text('');
  fyndiq.cartShipmentCost.text('');
  
  var emptyCartInfo = '<div><h3 style="margin-top: 0;">Kundvagn</h3><p>Inga varor i kundvagnen.</p></div>';
  fyndiq.cartDetails.append(emptyCartInfo);
}


fyndiq.cartUpdate = function(json) {
  
  fyndiq.cartDetails.empty(); /* Empty the details box to make room for updated content */
  
  if (json.items.length == 0) { /* If no items - render special message */
    fyndiq.renderEmptyCart();
    return;
  }
  
  if (json.total_num_items == 1) {
    fyndiq.cartNumItems.text(json.total_num_items + ' vara');
  } else {
    fyndiq.cartNumItems.text(json.total_num_items + ' varor');
  }
  fyndiq.cartItemsPriceSum.text(json.sum_excl_shipping + ' kr');
  fyndiq.cartShipmentCost.text('+ ' + json.shipping_cost + ' kr frakt');    
  
  var cartHeader = '<h3 style="margin-bottom: 6px; ">Kundvagn</h3>';
  fyndiq.cartDetails.append(cartHeader);
  
  /* Add item rows */
  $.each(json.items, function(i, item) {
    var itemRow = '<div class="cart_details_image"><img src="' + item.image_url + '" /></div>';
    itemRow += '<div class="cart_details_description">' + item.title +'<br/>'+item.number+' st á '+item.price+' kr ' + '</div>';
    itemRow += '<div class="cart_details_price_sum">'+item.sum+'</div>';
    itemRow += '<div class="cart_details_delete"><a href="javascript:fyndiq.removeFromCart('+item.item_id
                +');">ta bort</a></div><div style="clear: both;"></div>';
    itemRow += '<div class="cart_details_separator"></div>';
    fyndiq.cartDetails.append(itemRow);
  });
  
  /* Add shipment cost row */
  var shipmentRow = '<div class="cart_details_image_blank"><img src="/static/img/blank.gif" /></div>';
  shipmentRow += '<div class="cart_details_description">Frakt á ' + json.shipping_cost + ' kr</div>';
  shipmentRow += '<div class="cart_details_price_sum">'+json.shipping_cost+'</div>';
  shipmentRow += '<div class="cart_details_separator"></div>';
  shipmentRow += '<div style="clear: both;"></div>';
  fyndiq.cartDetails.append(shipmentRow);
  
  /* Add total sum row */
  var summaryRow = '<div class="cart_details_image_blank"><img src="/static/img/blank.gif" /></div>'
  summaryRow += '<div class="cart_details_description">Summa</div>';
  summaryRow += '<div class="cart_details_price_sum">'+json.sum_incl_shipping+'</div>';
  summaryRow += '<div class="cart_details_separator"></div>';
  summaryRow += '<div style="clear: both;"></div>';
  fyndiq.cartDetails.append(summaryRow);
  
  /* Add checkout button */
  var checkoutButton = '<div style="float: right;"><a href="/kassan/"><img src="/static/img/cart_btn2.png" /></a></div>';
  fyndiq.cartDetails.append(checkoutButton);
  
}


/* Get cart data (items, prices, sum etc.) and populate the cart and cart_details */
fyndiq.refreshCartData = function() {
  $.post('/ajax/cart/', {}, fyndiq.cartUpdate, 'json');
}


/* Bind the mouseover details listing to the cart */
fyndiq.bindCart = function() {
  
  function cartHoverOver() {
    fyndiq.cartDetails.show();
  }

  function cartHoverOut() {
    fyndiq.cartDetails.hide();
  }
  
  var hoverintentConfig = {
    sensitivity: 1, // number = sensitivity threshold (must be 1 or higher)
    interval: 100, // number = milliseconds for onMouseOver polling interval
    over: cartHoverOver, // function = onMouseOver callback (REQUIRED)
    timeout: 800, // number = milliseconds delay before onMouseOut
    out: cartHoverOut // function = onMouseOut callback (REQUIRED)
  };
  
  fyndiq.cartClickable.hoverIntent(hoverintentConfig);
}


$(document).ready(function() {
  
  fyndiq.cartClickable = $('#cart_outer_holder');
  fyndiq.cartDetails = $('#cart_details');
  fyndiq.cartNumItems = $('#cart_num_items');
  fyndiq.cartItemsPriceSum = $('#cart_items_price_sum');
  fyndiq.cartShipmentCost = $('#cart_shipment_cost');
  
  fyndiq.bindCart();
  fyndiq.refreshCartData();
  
});

