var AJAX_GetStockAvailibilityWaitTimeout;

/**
 * AJAX_GetStockAvailibilityCallBack 
 * 
 * @param pResult $pResult 
 * @access public
 * @return void
 */
function AJAX_GetStockAvailibilityCallBack(pResult)
{
  clearTimeout(AJAX_GetStockAvailibilityWaitTimeout);

  if ( pResult.error == null ) {

    get_2nd_stock_availability(pResult);
  } else {

    $('#stock_availibility').html('Błąd pobierania danych').show();
    $('#stock_amounts .loader').hide();
  }
}

/**
 * AJAX_GetStockAvailibilityWait 
 * 
 * @param pSymbol $pSymbol 
 * @param pUnitName $pUnitName 
 * @param pDeliveryTime $pDeliveryTime 
 * @param pSale $pSale 
 * @access public
 * @return void
 */
function AJAX_GetStockAvailibilityWait(firstCall, pSymbol)
{  
  if (firstCall === true)
  {
    $.post('/product/get_stock_availibility.html', {pSymbol: pSymbol,
                                                    pHtml: 1}, AJAX_GetStockAvailibilityCallBack, 'json');
  
    timeout = 1;
  }
  else
  {
    timeout = 150;
    
    $('#stock_availibility').append('.');
    
    if ( $('#stock_availibility').html().length > 10 )
    {
      $('#stock_availibility').html('.');
    }
  }
  
  AJAX_GetStockAvailibilityWaitTimeout = setTimeout('AJAX_GetStockAvailibilityWait()', timeout);
}

// 2nd warehouse - get stock
function get_2nd_stock_availability(pProduct) {
	
  $.ajax({url: '/product/get_2nd_stock.html',
				  type: 'POST',
          timeout: 5000,
          error: function (XMLHttpRequest, textStatus, errorThrown) {

            //'timeout' == textStatus
            $('#stock_amounts .loader').hide();
            $('#stock_amounts #stock_availibility').html(pProduct.html).show();
          },
				  data: {product: pProduct.symbol},
					dataType: 'json',
					success: function(res) {

            var sec_amount = res.amount;
            var int_amount = pProduct.amount;
            
            $('#stock_amounts .loader').hide();

            if ( (0 == sec_amount && int_amount > 0) || (0 == int_amount && 0 == sec_amount) ) {

              // 1, 2c
              $('#stock_amounts #stock_availibility').html(pProduct.html).show();
            } else if ( sec_amount > 0 && int_amount > 0 ) {

              // 2a
              $('#stock_amounts #stock_availibility').html(pProduct.html).show();
              $('#stock_amounts #stock2_availability').html(res.html).show();
            } else if ( sec_amount > 0 && 0 == int_amount && 0 == pProduct.sale ) {

              // 2b
              $('#stock_amounts #stock2_availability').html(res.html).show();
            } else if ( -1 <= sec_amount ) {

              $('#stock_amounts #stock_availibility').html(pProduct.html).show();
            }
					}
				 });
}

/**
 * validateLoginAndEmail 
 * 
 * @access public
 * @return void
 */
function validateLoginAndEmail()
{
  if ( 0 == $('#registrationform_login').val().length || 0 == $('#registrationform_email').val().length ) {
    return false;
  }

  var oldCheckb = $('#checkbtn_html').html();
  $('#checkbtn_html').html('<img src="/pics/ajax-loader_trans.gif" />');

  $.post('/login/validate_login_email.html', {sLogin: $('#registrationform_login').val(),
                                              sEmail: $('#registrationform_email').val()},
                  function(pResult){

                    // clear fields style, set green bg - valid
                    $('#registrationform_login').css('background', '#B4E6AF');
                    $('#registrationform_email').css('background', '#B4E6AF');
                    $('#error_label_form').hide();
                    var msg = 0;

                    if ( pResult.login )
                    {
                      $('#registrationform_login').css('background', '#FFAFAF');
                      var msg = pResult.login;
                    }

                    if ( pResult.email )
                    {
                      $('#registrationform_email').css('background', '#FFAFAF');
                      var msg = pResult.email;
                    }
                    
                    $('#registrationform_login').disabled = false;
                    $('#registrationform_email').disabled = false;

                    if ( 0 != msg ) {

                      $('#error_label_form').html('<div class="eF_errorlabel_right" style="width: 570px; height: 28px;" id="errorlabel_registrationform">'+msg+'</div>').show();
                    }

                    $('#checkbtn_html').html(oldCheckb);
                  }, 'json');
}

function initAlerts() {
  $.alerts.okButton = 'Ok';
  $.alerts.cancelButton = 'Anuluj';
}

/**
 * Cart
 */
$(function()
{
  initAlerts();
  setTotalPrice();

  $('#a_login').click( function()
                      {
                        $.post('/login/set_last_url',
                               {url: document.location.href},
                               
                               function () {},
                               'json')
                      }
  );
});

/**
 * setTotalPrice 
 * 
 * @access public
 * @return void
 */
function setTotalPrice()
{
  $('#cart_total', parent.document.body).html('<img src="/pics/loader.gif" style="position: relative; top: 1px; left: 6px;" />');

  $.get('/cart/_cart_total', {}, function(data){
    
    if ( null == data.last )
    {
    } else
    {
      $('#belka_info_lastprod', parent.document.body).fadeIn('fast');
      $('#a_lastprod', parent.document.body).html(data.last);
    }
    
    $('#cart_total', parent.document.body).html(data.total_sum);
  }, 'json');
}

/**
 * addProductToCart 
 * 
 * @param productId $productId 
 * @param productAmount $productAmount 
 * @access public
 * @return void
 */
function addProductToCart(productId, productAmount, updateAmount, productWishlist, isWishList)
{
  if (typeof productWishlist == "undefined")
  {
    productWishlist = 0;
  }

  if ( $('[id^="Amnt"]').length > 0 ) {

    // Parking or Wishlist
    var amount = $('#Amnt'+productId);
  } else if ( $('[id^="amount"]').length > 0 && 0 == $('[id="amount"]').length ) {

    // Products sets
    var amount = $('#amount'+productId);
  } else {

    var amount = $('#amount');
  }

  if ( productAmount < 1 || !amount.val().match(/^[0-9]+$/) ) {

    amount.addClass('amount_invalid');
  } else {
    
    amount.removeClass('amount_invalid');
  }
  
  var btnName = 'order_button'+productId;
  var oldContent = $('#'+btnName).html();
  var oldCTotal  = $('#cart_total').html();
  var oldLast = $('#belka_info_lastprod', parent.document.body).html();

  $('#'+btnName).html('<img src="/pics/ajax-loader_trans.gif" />');

  // Restore normal button when error will occur
  $('#'+btnName).ajaxError(function(event, request, settings){

    $('#'+btnName).html(oldContent);
  });

  $('#cart_total', parent.document.body).html('<img src="/pics/loader.gif" style="position: relative; top: 1px; left: 6px;" />');
  
  $.post('/cart/add',
         {id: productId,
          amount: productAmount,
          wishlist: productWishlist},

         function(data)
         {
          if ( data.error != null )
          {
            jAlert(data.error, data.title);
            $('#'+btnName).html(oldContent);
            $('#cart_total', parent.document.body).html(oldCTotal);
            $('#belka_info_lastprod', parent.document.body).html(oldLast);
            amount.val(data.min_quantity);

            return false;
          }
          
          $('#'+btnName).html(oldContent);

          // update cart total sum
          setTotalPrice();

          if ( 1 == updateAmount )
          {
            setAmountOfProduct(2);
          }

          if ( isWishList )
          {
            updateStocksWishList(productId);
          }
          
          amount.val(data.min_quantity);

          $.alerts.okButton = 'Przejdź do koszyka';
          $.alerts.cancelButton = 'Powrót do zakupów';
          jConfirm(data.info, 'Informacja', function(resp){ if (resp) parent.document.location.href = '/cart/'; });

          initAlerts();
         },
         'json');
}


/**
 * updateStocksWishList 
 * 
 * @param productId $productId 
 * @access public
 * @return void
 */
function updateStocksWishList(productId)
{
  var aSymbols = '';

  if (typeof productId == "undefined") {

    /**
     * Update stocks for all products
     */
    $('[id^="prod_"]').html('<img src="/pics/ajax-loader.gif" />');

    var sSymbol = '';
    
    // Fetch all symbols
    $('[id^="symbol_"]').each( function(i){
        
        sSymbol = $('#'+this.id).text();
        aSymbols += sSymbol+';';
     } );
  } else
  {
    $('#prod_'+productId).html('<img src="/pics/ajax-loader.gif" />');

    // Fetch product symbol
    aSymbols = $('#symbol_'+productId).text()+';';
  }

  $.post('/product/get_stock_availibility.html', {pSymbol: aSymbols,
                                                  wishlist: 1},
        function(data)
        {
          // Look for error
          if ( data.status > 0 )
          {
            // do nothing
          } else
          {
            $.each(data.products, function(id, product){

              $('#prod_'+id).html(product);
            });
          }
        },
        'json');
}
