$(document).ready(function(){

  // Variable to hold auction data
  var auctions = '';
  var auctionObjects = new Array();

  // Collecting auction data, the layer id and auction id
  $('.auction-item').each(function(){
    var auctionId    = $(this).attr('id');
    var auctionTitle = $(this).attr('title');

    if($('#' + auctionId + ' .countdown').length){
      // collect the id for post data
      auctions = auctions + auctionId + '=' + auctionTitle + '&';

      // collect the object
      auctionObjects[auctionId]                               = $('#' + auctionId);
      auctionObjects[auctionId]['flash-elements']             = $('#' + auctionId + ' .bid-price'); //, #' + auctionId + ' .bid-bidder, #' + auctionId + ' .bid-savings-price'); //, #' + auctionId + ' .bid-savings-percentage, #' + auctionId + ' .closes-on');
      auctionObjects[auctionId]['countdown']                  = $('#' + auctionId + ' .countdown');
      auctionObjects[auctionId]['closes-on']                  = $('#' + auctionId + ' .closes-on');
      auctionObjects[auctionId]['bid-bidder']                 = $('#' + auctionId + ' .bid-bidder');
      auctionObjects[auctionId]['bid-button']                 = $('#' + auctionId + ' .bid-button');
      auctionObjects[auctionId]['bid-button-a']               = $('#' + auctionId + ' .bid-button a');
      auctionObjects[auctionId]['bid-button-p']               = $('#' + auctionId + ' .bid-button p');
      auctionObjects[auctionId]['bid-price']                  = $('#' + auctionId + ' .bid-price');
      auctionObjects[auctionId]['bid-price-fixed']            = $('#' + auctionId + ' .bid-price-fixed');
      auctionObjects[auctionId]['bid-loading']                = $('#' + auctionId + ' .bid-loading');
      auctionObjects[auctionId]['bid-message']                = $('#' + auctionId + ' .bid-message');
      auctionObjects[auctionId]['bid-flash']                  = $('#' + auctionId + ' .bid-flash');
      auctionObjects[auctionId]['bid-savings-price']          = $('#' + auctionId + ' .bid-savings-price');
      auctionObjects[auctionId]['bid-savings-percentage']     = $('#' + auctionId + ' .bid-savings-percentage');
      auctionObjects[auctionId]['bid-bookbidbutler']          = $('#' + auctionId + ' .bid-bookbidbutler');
      // Part of the AJAX hack to update home page bid count
      auctionObjects[auctionId]['bid_balance']            = $('#bid_balance');

      auctionObjects[auctionId]['bid-histories']          = $('#bidHistoryTable' + auctionTitle);
      auctionObjects[auctionId]['bid-histories-p']        = $('#bidHistoryTable' + auctionTitle + ' p');
      auctionObjects[auctionId]['bid-histories-tbody']    = $('#bidHistoryTable' + auctionTitle + ' tbody');
    }
  });

  // additional object
  var bidOfficialTime         = $('.bid-official-time');
  var bidBalance              = $('.bid-balance');
  var price                   = '';
  var priceFixed              = '';
  var getstatus_url_time;
  var getstatus_url;
  var userAuctionBids         = $('.user-auction-bids');
  var userAuctionBidsValue    = $('.user-auction-bids-value');
  var userAuctionSavingsPrice = $('.user-auction-savings-price');
  var userAuctionBinPrice     = $('.user-auction-bin-price');
  var userAuctionBidsReturn   = $('.user-auction-bids-return');

  if($('.bid-histories').length){
    getstatus_url = '/getstatus.php?histories=yes&ms=';
  }else{
    getstatus_url = '/getstatus.php?ms=';
  }

  function convertToNumber(sourceString){
   return sourceString.replace(/&#[0-9]{1,};/gi, "")
   .replace(/&[a-z]{1,};/gi, "")
   .replace(/[a-zA-Z]+/gi, "")
   .replace(/[^0-9\,\.]/gi, "");
  }

  // Do the loop when auction available only
  if(auctions){
    setInterval(function(){
      getstatus_url_time = getstatus_url + new Date().getTime();
      $.ajax({
           url: getstatus_url_time,
           dataType: 'json',
           type: 'POST',
           data: auctions,
           success: function(data){
             if(data[0]){
               if(data[0].Auction.serverTimeString){
                 if(bidOfficialTime.html()){
                   bidOfficialTime.html(data[0].Auction.serverTimeString);
                 }
               }

               if(data[0].Balance){
                 if(bidBalance.html()){
                    bidBalance.html(data[0].Balance.balance);
                 }
               }

               if (data[0].userAuctionBids) {
                 if (userAuctionBids.length) {
                   userAuctionBids.html(data[0].userAuctionBids);
                   userAuctionBidsValue.html(data[0].userAuctionBidsValue);
                   userAuctionSavingsPrice.html(data[0].userAuctionSavingsPrice);
                 }
                 if (userAuctionBinPrice.length) {
                   userAuctionBinPrice.html(data[0].userAuctionBinPrice);
                 }
                 // bids return
                 if (userAuctionBidsReturn.length) {
                   userAuctionBidsReturn.html(data[0].userAuctionBidsReturn);
                 }
               }
             }

             // change recent winner
             if ($('#recent_winner_div').length) {
               var seconds = new Date().getSeconds();
               if ((seconds % 15) == 0) {
                 var recentWinner = Math.round(seconds / 15) + 1;
                 if ($('#recent_' + recentWinner).length) {
                   // fade current recent winner
                   $allWinners = $('#recent_winner_div div.recent');
                   $allWinners.css('display', 'none');
                   $('#recent_' + recentWinner).css('display', 'block');
                 }
               }
             }

             $.each(data, function(i, item){
               if(auctionObjects[item.Auction.element]['bid-price-fixed'].html()){

                 if(auctionObjects[item.Auction.element]['bid-price-fixed'].length > 1){
                   auctionObjects[item.Auction.element]['bid-price-fixed'].each(function(){
                                                                              price = $(this).html();
                                                                             });
                 }else{
                   price = auctionObjects[item.Auction.element]['bid-price-fixed'].html();
                 }
               }else{
                 if(auctionObjects[item.Auction.element]['bid-price'].length > 1){
                   auctionObjects[item.Auction.element]['bid-price'].each(function(){
                                                                       price = $(this).html();
                                                                      });
                 }else{
                   price = auctionObjects[item.Auction.element]['bid-price'].html();
                 }
               }

               price = convertToNumber(price);

               if(auctionObjects[item.Auction.element]['bid-bidder'].html() != item.LastBid.username){
                 auctionObjects[item.Auction.element]['bid-bidder'].html(item.LastBid.username);
               }

               if(price != convertToNumber(item.Auction.price)){
                 auctionObjects[item.Auction.element]['bid-price'].html(item.Auction.price);
                 auctionObjects[item.Auction.element]['bid-price-fixed'].html(item.Auction.price);

                 if(auctionObjects[item.Auction.element]['bid-flash'] && item.Message){
                   auctionObjects[item.Auction.element]['bid-flash'].html(item.Message.message).show(1).animate({opacity: 1.0}, 2000).hide(1);
                 }

                 if(auctionObjects[item.Auction.element]['bid-histories'].length){
                   if(auctionObjects[item.Auction.element]['bid-histories-p'].html()){
                     auctionObjects[item.Auction.element]['bid-histories-p'].remove();
                   }

                   auctionObjects[item.Auction.element]['bid-histories-tbody'].empty();


                   $.each(item.Histories, function(n, tRow){
                      var row = '<tr><td>' + tRow.Bid.created + '</td><td>' + tRow.User.username + '</td><td>' + tRow.Bid.description + '</td></tr>';
                      auctionObjects[item.Auction.element]['bid-histories-tbody'].append(row);
                   });

                   auctionObjects[item.Auction.element]['closes-on'].html(item.Auction.closes_on);
                   auctionObjects[item.Auction.element]['bid-savings-percentage'].html(item.Auction.savings.percentage);
                   auctionObjects[item.Auction.element]['bid-savings-price'].html(item.Auction.savings.price);
                 }

                 auctionObjects[item.Auction.element]['flash-elements'].effect("highlight",{color: '#7894FC'}, 1500);
               }

               if(item.Auction.peak_only == 1 && item.Auction.isPeakNow == 0){
                 auctionObjects[item.Auction.element]['countdown'].html('Paused');

                 auctionObjects[item.Auction.element]['bid-button-a'].hide();
                 if(auctionObjects[item.Auction.element]['bid-button-p'].html() == ''){
                   auctionObjects[item.Auction.element]['bid-button'].append('<p>Peak Only Auction</p>');
                 }
               }else{
                 if(item.Auction.end_time - item.Auction.serverTimestamp > 0){
                   auctionObjects[item.Auction.element]['countdown'].html(item.Auction.end_time_string);

                   if(item.Auction.time_left <= 12){
                     auctionObjects[item.Auction.element]['countdown'].css('color', '#ff0000');
                   }else{
                     auctionObjects[item.Auction.element]['countdown'].removeAttr('style');
                   }
                   if(item.Auction.time_left<3){
                     auctionObjects[item.Auction.element]['countdown'].html('GOING');
                     auctionObjects[item.Auction.element]['countdown'].effect("highlight",{}, 800);
                     auctionObjects[item.Auction.element]['countdown'].css('color', '#ff0000');
                   }
                 }

                 if(auctionObjects[item.Auction.element]['bid-button-p'].html()){
                   auctionObjects[item.Auction.element]['bid-button-a'].show();
                   auctionObjects[item.Auction.element]['bid-button-p'].remove();
                 }
               }
               // Part of the AJAX hack to update home page bid count
               auctionObjects[item.Auction.element]['bid_balance'].html(item.Balance.balance);


               if(item.Auction.time_left < 2 && item.Auction.closed == 1){
                 auctionObjects[item.Auction.element]['countdown'].html('Sold');
                 auctionObjects[item.Auction.element]['bid-button'].hide();
                 auctionObjects[item.Auction.element]['bid-bookbidbutler'].hide();
                 //auctionObjects[item.Auction.element]['bid-bookbidsniper'].hide();
               }
             });
           },

           error: function(XMLHttpRequest, textStatus, errorThrown){
             // nothing implement here
             // have an idea?
           }
        });
      }, 1000);
  }else{
    if(bidOfficialTime.length){
      setInterval(function(){
        var gettime = '/gettime.php?' + new Date().getTime();
        $.ajax({
          url: gettime,
          success: function(data){
            bidOfficialTime.html(data);
          }
        });
      }, 1000);
    }
  }

   // Function for bidding
  $('.bid-button-link').click(function(){
    var auctionElement = 'auction_' + $(this).attr('title');

    auctionObjects[auctionElement]['bid-button'].hide(1);
    auctionObjects[auctionElement]['bid-loading'].show(1);

    $.ajax({
      url: $(this).attr('href') + '&ms=' + new Date().getTime(),
      dataType: 'json',
      success: function(data){
        auctionObjects[auctionElement]['bid-message'].html(data.Auction.message)
        .fadeIn(1000)
        .delay(1000)
        .fadeOut(2000);
  //                                                             .show(1)
  //                                                             .animate({opacity: 1.0}, 2000)
  //                                                             .hide(1);

        auctionObjects[auctionElement]['bid-button'].show(1);
        auctionObjects[auctionElement]['bid-loading'].hide(1);
      }
    });

  return false;
});

   // Function to check limit and change the icon whenever it's changed
   // Run only when bid icon available
  if($('.bid-limit-icon').length){
    setInterval(function(){
      var count = $('.bid-limit-icon').length
      if(count > 0){
        $.ajax({
          url: '/limits/getlimitsstatus/?ms=' + new Date().getTime(),
          dataType: 'json',
          success: function(data){
            if(data){
              $('.bid-limit-icon').each(function(i){
                                    if(data[i].image){
                                      $(this).attr('src', '/img/'+data[i].image);
                                    }
              });
            }
          }
        });
      }
    }, 30000);
  }

  if($('.productImageThumb').length){
    $('.productImageThumb').click(function(){
      $('.productImageMax').fadeOut('fast').attr('src', $(this).attr('href')).fadeIn('fast');
      return false;
    });
  }

  if($('#CategoryId').length){
    $('#CategoryId').change(function(){
      document.location = '/categories/view/' + $('#CategoryId option:selected').attr('value');
    });
  }

  if($('#myselectbox').length){
    $('#myselectbox').change(function(){
      document.location = '/categories/view/' + $('#myselectbox option:selected').attr('value');
    });
  }
});
