/**
 * Add to Cart - AJAX powered Add to Cart fucntion written in jQuery
 * Author: Ayush Saran ' Real TSP Ltd. [ayush@realtsp.com]
 * Date: 06/2009
 * Version: 0.1
 *
 **/

  jQuery(document).ready(function(){
    if (addToCartOptions["enabled"]) {
      
      var cartError;
      
      // 1. Hijack Form Submit
        jQuery('#btn_add_to_cart').click(function(){
          ajaxThis();          
          return false;
        })
        
      // 2. Make AJAX Call      
        function ajaxThis(){
          cartError = false;
          jQuery("#cartSuccess").addClass('cartSuccessloading');  // 2.1 Disable button and show loading image
          var formContents = jQuery("#add_to_cart").serialize();  // 2.2 Prepare and Serialize form 
          formContents += '&to_cart=to_cart';          
          jQuery.post(addToCartOptions["ajaxLink"], formContents, function(data){  // 2.3 Send to AJAX Handler via POST
            
            var myRegExp = /cartError/;
            var string = data;
            matchPos = string.search(myRegExp);
            if(matchPos == '-1'){
              cartError = false;
            }else{
              cartError = true;
            }
            intoCart(data);
          });
        }
  
      // 3 Update Page with Response      
     // ----------------------------------------------------------------
        function intoCart(data){     
          // 3.1 Update OnPage Basket
            
            
          
        if (cartError == true) {
          // 3.2 Error
            jQuery('#action_row').append(data);
            jQuery('#cartError').show("slow", function(){              
              jQuery("#cartSuccess").removeClass('cartSuccessloading');
              jQuery(this).oneTime(1500, "fadeOut", function(){
                jQuery('#cartError').fadeOut(4000, function(){
                  jQuery('#cartError').remove();
                });
              });
            });  
        }else{
           // 3.3 Success
          // 3.3.1 Added to Bag next to buy button
          jQuery('#onpage_basket').html(data);
          if (addToCartOptions["slideCart"]) {
            jQuery('#onpage_basket').slideDown('slow', function(){
              jQuery('#onpage_basket ul li.last').effect("highlight", {}, 3000);
              jQuery(this).oneTime(2000, "slideUp", function(){
                jQuery('#onpage_basket').slideUp('slow');
              });
            });
          }
          
          // 3.3.2 Added to Bag next to buy button
          if (addToCartOptions["buttonMessage"]) {
            jQuery("#cartSuccess").addClass('cartSuccessadded').text('added to bag');
          }
          else {
            jQuery("#cartSuccess").removeClass('cartSuccessloading');
          }
          
          // 3.3.3 Update number of items
          if (addToCartOptions["updateItems"]) {
            val = jQuery('#cartOnPageNumItems').text();
            jQuery('#cartComponentNumItems').text(val);
          }
          
          // 3.3.4 Update total price  
          if (addToCartOptions["updatePrice"]) {
            val = jQuery('#cartOnPageTotalPrice').text();
            jQuery('#cartComponentTotalPrice').text('(' + val + ')');
          }
          
          // 3.3.5 Highlight Inline Cart
          if (addToCartOptions["highlightInlineCart"]) {
            jQuery(this).oneTime(3000, "highlight", function(){
              jQuery('#cart').effect("highlight", {}, 3000);
            });
          }
                    
          // 3.3.6 Hide QuickView
          if (source == 'quickview') {
            closeQuickView(1500);
            jQuery('#frm_keywords').focus();          
          }
          
          
          
        }     
      }  //intoCart  
    }  //ifAjax
  });  //doc.Ready
