$(document).ready(function(){
    fetchTimestamp = function(){
        return parseInt($('#timestamp').text());
    };

    // Default frequency for auction updating and time sync
    var auctionUpdateTime = 10;

    if($('#auctionupdatefrequency').text()){
        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');

        if($('#' + auctionId + ' .countdown').length){
            auctions = auctions + auctionId + '=' + auctionTitle + '&';
        }
    });

    var getstatus_url;
    if($('#bidHistoryTable').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, "");
    }

    setInterval(function(){
        if(auctions){
            var getstatus_url_time = getstatus_url + new Date().getTime();
            $.ajax({
                url: getstatus_url_time,
                dataType: 'json',
                type: 'POST',
                timeout: 900,
                data: auctions,
                success: function(data){
                    if(data[0]){
                        if(data[0].Auction.serverTimeString){
                            if($('.bid-official-time').text()){
                                $('.bid-official-time').text(data[0].Auction.serverTimeString);
                            }
                        }

                        if(data[0].Balance){
                            if($('.bid-balance').text()){
                                $('.bid-balance').text(data[0].Balance.balance);
                            }
                        }
                    }

                    $.each(data, function(i, item){
                        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');
                        var auctionPrice        = $('#' + item.Auction.element + ' .bid-price');
                        var price = '';

                        if(auctionPrice.length > 1){
                            $('#' + item.Auction.element + ' .bid-price').each(function(){
                                price = $(this).text();
                            });
                        }else{
                            price = auctionPrice.text();
                        }

                        price = convertToNumber(price);

                        if(auctionLatestBidder != item.LastBid.username){
                            $('#' + item.Auction.element + ' .bid-bidder').html(item.LastBid.username);
                        }

                        if($('#' + item.Auction.element + ' .bid-flash') && item.Auction.closed == 0 && item.Auction.time_left > 1){
                            if(item.Message){
                                $('#' + item.Auction.element + ' .bid-flash').html(item.Message.message).show(1).animate({opacity: 1.0}, 2000).hide(1);
                            }
                        }

                        if(price != convertToNumber(item.Auction.price)){
                            auctionCountdown.attr('title', item.Auction.end_time_string);

                            $('#' + item.Auction.element + ' .bid-price').html(item.Auction.price);

                            if(document.getElementById('bidHistoryTable')){
                                if($('#bidHistoryTable p').text()){
                                    $('#bidHistoryTable p').remove();
                                }

                                $('#bidHistoryTable 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 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-price, #' + item.Auction.element + ' .bid-savings-percentage, #' + item.Auction.element + ' .closes-on').animate( { backgroundColor: 'red'}, 500).animate( { backgroundColor: 'white'}, 1000);
                        }

                        if(item.Auction.peak_only == 1 && item.Auction.isPeakNow == 0 && item.Auction.isFuture == 0){
                            auctionCountdown.text('Приостановлен');

                            $('#' + item.Auction.element + ' .bid-button a').hide();
                            if($('#' + item.Auction.element + ' .bid-button p').text() == ''){
                                $('#' + item.Auction.element + ' .bid-button').append('<p>Дневной аукцион</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('Завершен');
                            $('#' + item.Auction.element + ' .bid-button').hide();
                            $('#' + item.Auction.element + ' .bid-bookbidbutler').hide();
                        }
                    });
                },

                error: function(XMLHttpRequest, textStatus, errorThrown){
                    $('.countdown').each(function(){
                        var current  = $(this).text();
                        if(current != '--:--:--' && current != 'Приостановлен' && current != 'Завершен'){
                            var day_time = '';
                            var day      = '';
                            var time     = '';

                            if(current.indexOf('д') > 0){
                                day_time = current.split('д');
                                day      = parseInt(day_time[0], 10);
                                time     = day_time[1].split(':');
                            }else{
                                time = current.split(':');
                            }

                            var hour   = parseInt(time[0], 10);
                            var minute = parseInt(time[1], 10);
                            var second = parseInt(time[2], 10);

                            if(second > 0){
                                second = second - 1;
                            }else if(second == 0){
                                if(minute > 0){
                                    second = 59;
                                    minute = minute - 1;
                                }
                            }

                            if(hour < 10)  { hour   = '0' + hour; }
                            if(minute < 10){ minute = '0' + minute; }
                            if(second < 10){ second = '0' + second; }

                            if(day){
                                $(this).text(day + 'д ' + hour + ':' + minute + ':' + second);
                            }else{
                                $(this).text(hour + ':' + minute + ':' + second);
                            }
                        }
                    });
                }
            });
        }
    }, 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);
        //alert($(this).attr('href') + '?ms=' + new Date().getTime());

        $.ajax({
            url: $(this).attr('href') + '?ms=' + new Date().getTime(),
            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;
    });

    /**
     * Function to check limit and change the icon whenever it's changed
     */
    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');
        });
    }

});


