$(document).ready(function(){
    if($.browser.msie){
        //Configuring ajax
        $.ajaxSetup({
            cache: false
        });
    }

    fetchTimestamp = function(){
        return parseInt($('#timestamp').text());
    };

    // Default frequency for auction updating and time sync
    var auctionUpdateTime = 10;

    if($('#auctionupdatefrequency')){
        auctionUpdateTime = parseInt($('#auctionupdatefrequency').text());
    }

    // Convert it to milisecond
    auctionUpdateTime = auctionUpdateTime * 1000;

    // Variable to hold auction data
    var auctions = '';

    // Collecting auction data, the layer id and auction id
    $('.auction-item').each(function(){
        var auctionId    = $(this).attr('id');
        var auctionTitle = $(this).attr('title');
        var counter      = $('#' + auctionId + ' .countdown');

        if(counter){
            if(counter.attr('title') > fetchTimestamp()){
                auctions = auctions + auctionId + '=' + auctionTitle + '&';
            }
        }
    });

    // Main countdown for updating auction and flashing
    setInterval(function(){
        if(auctions){
            var nocacheTimestamp = new Date();

            if($('.bid-histories').length){
                getStatusUrl = '/getstatus.php?histories=yes&time='+nocacheTimestamp.getTime();
            }else{
                getStatusUrl = '/getstatus.php?time='+nocacheTimestamp.getTime();
            }

            $.ajax({
                url: getStatusUrl,
                dataType: 'json',
                type: 'POST',
                timeout: 4999,
                global: false,
                data: auctions,
                success: function(data){

                    $.each(data, function(i, item){
                        var auctionBlock        = $('#' + item.Auction.element);
                        var auctionEndTime      = $('#' + item.Auction.element + ' .countdown').attr('title');
                        var auctionLatestBidder = $('#' + item.Auction.element + ' .bid-bidder').text();
                        var auctionCountdown    = $('#' + item.Auction.element + ' .countdown');
                        var auctionClosesOn     = $('#' + item.Auction.element + ' .closes-on');

                        if(auctionLatestBidder != item.LastBid.username){
                            $('#' + item.Auction.element + ' .bid-bidder').html(item.LastBid.username);
                        }

                        if(auctionEndTime != item.Auction.end_time){
                            auctionCountdown.attr('title', item.Auction.end_time);

                            $('#' + item.Auction.element + ' .bid-price').html(item.Auction.start_price);

                            if(document.getElementById('bidHistoryTable' + item.Auction.id)){
                                if($('#bidHistoryTable' + item.Auction.id + ' p').text()){
                                    $('#bidHistoryTable' + item.Auction.id + ' p').remove();
                                }

                                $('#bidHistoryTable' + item.Auction.id + ' tbody tr').remove();

                                $.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>';

                                    $('#bidHistoryTable' + item.Auction.id + ' tbody').append(row);
                                });

                                auctionClosesOn.text(item.Auction.closes_on);
                                $('#' + item.Auction.element + ' .bid-savings-percentage').html(item.Auction.savings.percentage);
                                $('#' + item.Auction.element + ' .bid-savings-price').html(item.Auction.savings.price);
                            }

                            $('#' + 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: 'yellow' }, 500).animate( { backgroundColor: 'white' }, 1000);
                        }

                        if(item.Auction.peak_only == 1 && item.Auction.isPeakNow == 0){
                            auctionCountdown.text('Paused');

                            $('#' + item.Auction.element + ' .bid-button a').hide();
                            if($('#' + item.Auction.element + ' .bid-button p').text() == ''){
                                $('#' + item.Auction.element + ' .bid-button').append('<p>Peak Only Auction</p>');
                            }
                        }else{
                            if(item.Auction.end_time - item.Auction.serverTimestamp > 0){
                                auctionCountdown.text(item.Auction.end_time_string);

                                if(item.Auction.time_left <= 10){
                                    auctionCountdown.css('color', '#ff0000');
                                }else{
                                    auctionCountdown.removeAttr('style');
                                }
                            }

                            if($('#' + item.Auction.element + ' .bid-button p').text()){
                                $('#' + item.Auction.element + ' .bid-button a').show();
                                $('#' + item.Auction.element + ' .bid-button p').remove();
                            }
                        }

                        if(item.Auction.time_left < 1 && item.Auction.closed == 1){
                            auctionCountdown.text('Ended');
                            $('#' + item.Auction.element + ' .bid-button').hide();
                            $('#' + item.Auction.element + ' .bid-bookbidbutler').hide();

                        }else if(item.Auction.time_left == 1 && item.Auction.closed == 0){
                            auctionCountdown.text('Paused');
                        }
                    });
                },

                error: function(XMLHttpRequest, textStatus, errorThrown){
                    //$('.countdown').text(textStatus);
                }
            });
        }
    }, auctionUpdateTime);

    // Function for bidding
    $('.bid-button-link').click(function(){
        var auctionElement = 'auction_' + $(this).attr('title');
        var bidButton      = $('#' + auctionElement + ' .bid-button');
        var bidLoading     = $('#' + auctionElement + ' .bid-loading');
        var bidMessage     = $('#' + auctionElement + ' .bid-message');

        bidButton.hide(1);
        bidLoading.show(1);

        $.ajax({
            url: $(this).attr('href'),
            dataType: 'json',
            success: function(data){
                bidMessage.html(data.Auction.message).show(1).animate({opacity: 1.0}, 2000).hide(1);
                bidButton.show(1);
                bidLoading.hide(1);
            }
        });

        return false;
    });

    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');
        });
    }

});
