/* Global Vars */
    var peakBiddingTimeLeft = 300;
    var peakBiddingUpdateTime = 3;
    var iBidUpdateCounter = 0;
    var iBidUpdateFrequency = 1.5;
    var iBidUpdatePeriod = 30;
    // Default frequency for auction updating and time sync
    var auctionUpdateTime = 60;
    var auctionUpdateFrequency = auctionUpdateTime;
    var timeoutRepeat; //ID for SetTimeout loop

jQuery.noConflict(); // When you call .noConflict() jQuery will return $() to it’s previous owner and you will need to use jQuery() instead of shorthand $() function.

jQuery(document).ready(function(){
    jQuery('span#registerClueTip').cluetip({
        ajaxCache:     false,
        splitTitle:    '|',
        arrows:        true,
        width:         350
    }); //gjb

    fetchTimestamp = function(){
        return parseInt(jQuery('#timestamp').text());
    };

    if(jQuery('#peakBiddingTimeLeft').length > 0){
       peakBiddingTimeLeft  = parseInt(jQuery('#peakBiddingTimeLeft').text());
    }
    if(jQuery('#peakBiddingUpdateTime').length > 0){
       peakBiddingUpdateTime = parseInt(jQuery('#peakBiddingUpdateTime').text());
    }
    if(jQuery('#iBidUpdateFrequency').length > 0){
       iBidUpdateFrequency = parseInt(jQuery('#iBidUpdateFrequency').text());
    }
    if(jQuery('#iBidUpdatePeriod').length > 0){
       iBidUpdatePeriod = parseInt(jQuery('#iBidUpdatePeriod').text());
    }


    if(jQuery('#auctionupdatefrequency').length > 0){
        auctionUpdateTime = parseInt(jQuery('#auctionupdatefrequency').text());
    }
     auctionUpdateFrequency = auctionUpdateTime;

    // Convert it to milisecond
    auctionUpdateTime = auctionUpdateTime * 1000;
    peakBiddingUpdateTime = peakBiddingUpdateTime * 1000;
    auctionUpdateFrequency = auctionUpdateFrequency * 1000;
    iBidUpdateFrequency = iBidUpdateFrequency * 1000;


    // Variable to hold auction data
    var auctions = '';

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

        if(counter){
            if(counter.attr('title') > fetchTimestamp()){
                auctions = auctions + auctionId + '=' + auctionTitle + '&';
            }
        }
	 jQuery('#' + auctionId + ' .countdown').countdown({
          layout:'{d<}{dn}d {d>}'+'{h<}{hnn}:{h>}'+'{mnn}:{snn}',
          expiryText: 'Last Chance'
          //until: '',
          //description: ''
         });
    });

    // Main countdown for updating auction and flashing
    setBidTimers(auctions);
    // Function for bidding
    jQuery('.bid-button-link').click(function(){
        var auctionElement = 'auction_' + jQuery(this).attr('title');
        var bidButton      = jQuery('#' + auctionElement + ' .bid-button');
        var bidLoading     = jQuery('#' + auctionElement + ' .bid-loading');
        var bidMessage     = jQuery('#' + auctionElement + ' .bid-message');

        bidButton.hide(1);
        bidLoading.show(1);

        jQuery.ajax({
            url: jQuery(this).attr('href'),
            dataType: 'json',
            timeout: 6000,
            success: function(data){
                bidMessage.html(data.Auction.message).show(1).animate({opacity: 1.0}, 2000).hide(1);
		//clearTimeout
		clearTimeout(timeoutRepeat);
		iBidUpdateCounter = 1; //Enable iBid Frequency for Period
		auctionUpdateTime = iBidUpdateFrequency;
                bidButton.show(1);
                bidLoading.hide(1);
		setBidTimers(auctions);
            },

	    error: function(){
	        bidMessage.text('Bid not received. Try again').show(1).animate({opacity:1.0}, 2000).hide(1);
                bidButton.show(1);
                bidLoading.hide(1);
    	    }
        });

        return false;
    });

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

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

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

}); /* end ready */

function setBidTimers(auctions/*, biddingVars*/){
        if(auctions){
            var nocacheTimestamp = new Date();
            if(jQuery('#bidHistoryTable').length){
                getStatusUrl = '/getstatus.php?histories=yes&time='+nocacheTimestamp.getTime();
            }else{
                getStatusUrl = '/getstatus.php?time='+nocacheTimestamp.getTime();
            }

            jQuery.ajax({
                url: getStatusUrl,
                dataType: 'json',
                type: 'POST',
                timeout: 6000,
                global: false,
                data: auctions,
                success: function(data){
                    if(iBidUpdateCounter <= iBidUpdatePeriod && iBidUpdateCounter > 0){
			auctionUpdateTime = iBidUpdateFrequency;
			iBidUpdateCounter++;
		    }else {
			auctionUpdateTime = auctionUpdateFrequency;
			iBidUpdateCounter = 0;

		    }
                    jQuery.each(data, function(i, item){
                        //var auctionBlock        = jQuery('#' + item.Auction.element);
                        var auctionEndTime      = jQuery('#' + item.Auction.element + ' .countdown').attr('title');
                        var auctionLatestBidder = jQuery('#' + item.Auction.element + ' .bid-bidder').text();
                        var auctionCountdown    = jQuery('#' + item.Auction.element + ' .countdown');
                        var auctionClosesOn     = jQuery('#' + item.Auction.element + ' .closes-on');
			var auctionClosesOnText = jQuery('#' + item.Auction.element + ' .closes-on').text();
			var countdownLeft		=  jQuery('#' + item.Auction.element + ' .countdown').countdown('getTimes');
			if(item.Auction.time_left < 5){
				iBidUpdateCounter = iBidUpdatePeriod - 10;
			}

                        if(auctionLatestBidder != item.LastBid.username){
                            getRemainingFutureBids();
                            jQuery('#' + item.Auction.element + ' .bid-bidder').html(item.LastBid.username);
                        }

			var countdownLeftTotal = countdownLeft[3]*24*3600 + countdownLeft[4]*3600 + countdownLeft[5]*60 + countdownLeft[6];
			if(item.Auction.time_left < 0) { item.Auction.time_left = 0; }

                        if(Math.abs(item.Auction.time_left - countdownLeftTotal) >= 2  || auctionLatestBidder != item.LastBid.username  ) {
                            //auctionCountdown.attr('title', item.Auction.end_time);

                            jQuery('#' + item.Auction.element + ' .bid-price').html(item.Auction.start_price);

                            if(document.getElementById('bidHistoryTable')){
                                if(jQuery('#bidHistoryTable p').text()){
                                    jQuery('#bidHistoryTable p').remove();
                                }

                                jQuery('#bidHistoryTable tbody tr').remove();

                                jQuery.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>';

                                    jQuery('#bidHistoryTable tbody').append(row);

                                });

                                auctionClosesOn.text(item.Auction.closes_on);

                                jQuery('#' + item.Auction.element + ' .bid-savings-percentage').html(item.Auction.savings.percentage);
                                jQuery('#' + item.Auction.element + ' .bid-savings-price').html(item.Auction.savings.price);
                            }

                            jQuery('#' + item.Auction.element + ' .countdown, #' + item.Auction.element + ' .bid-price, #' + item.Auction.element + ' .bid-bidder, #' + item.Auction.element + ' .bid-savings-percentage, #' + item.Auction.element + ' .closes-on').animate( { backgroundColor: '#EEEE00' }, 500).animate( { backgroundColor: '#EEEEEE' }, 1000);
                            //jQuery('#' + item.Auction.element + ' .countdown, #' + item.Auction.element + ' .bid-price, #' + item.Auction.element + ' .bid-bidder, #' + item.Auction.element + ' .bid-savings-percentage, #' + item.Auction.element + ' .closes-on').css( { backgroundColor : '#EEEE00' }, 500).css({ backgroundColor : '#EEEEEE' }, 600);
			    if (item.Auction.time_left > 0) {
				jQuery('#' + item.Auction.element + ' .countdown').countdown('change', {until: '+' + item.Auction.time_left });
			    }
                        }

                        if(item.Auction.peak_only == 1 && item.Auction.isPeakNow == 0){
                            jQuery('#' + item.Auction.element + ' .countdown').countdown('change', {expiryText: 'Paused'  });

                            jQuery('#' + item.Auction.element + ' .bid-button a').hide();
                            if(jQuery('#' + item.Auction.element + ' .bid-button p').text() == ''){
                                jQuery('#' + item.Auction.element + ' .bid-button').append('<p>Peak Only Auction</p>');
                            }
                        }else{
		              if(item.Auction.time_left > 0) {
                            //if(item.Auction.end_time - item.Auction.serverTimestamp > 0){
                                // if(auctionLatestBidder != item.LastBid.username){
                                       //jQuery('#' + item.Auction.element + ' .countdown').countdown('change', {until: '+' + item.Auction.time_left });
				 //}
				 if(item.Auction.time_left<= peakBiddingTimeLeft){
					if (iBidUpdateCounter == 0){
						auctionUpdateTime = peakBiddingUpdateTime;
					}
				 }

                                if(item.Auction.time_left <= 39){
                                    getRemainingFutureBids();
                                }    

                                if(item.Auction.time_left <= 10){
                                    auctionCountdown.css('color', '#ff0000');
                                }else{
                                    auctionCountdown.removeAttr('style');
                                }

                            }

                            if(jQuery('#' + item.Auction.element + ' .bid-button p').text()){
                                jQuery('#' + item.Auction.element + ' .bid-button a').show();
                                jQuery('#' + item.Auction.element + ' .bid-button p').remove();
                            }
                        }

                        if(item.Auction.closed == 1){
                            getRemainingFutureBids();
                            //jQuery('#' + item.Auction.element + ' .countdown').countdown('change', { expiryText: 'Ended', until: '+0'});
                            auctionCountdown.text('Ended');
                            jQuery('#' + item.Auction.element + ' .bid-button').hide();
                            jQuery('#' + item.Auction.element + ' .bid-bookfuturebid').hide();

                        } //else if(item.Auction.time_left == 1 && item.Auction.closed == 0){
                            //jQuery('#' + item.Auction.element + ' .countdown').countdown('change', { expiryText: 'Paused', until: '+0' });
                             //auctionCountdown.text('Paused');
                       // }
                    });

                },

                error: function(XMLHttpRequest, textStatus, errorThrown){
                    //jQuery('.countdown').text(textStatus);
                }
            });
        }
    timeoutRepeat = setTimeout(function(){setBidTimers(auctions)}, auctionUpdateTime);
}

