var timeAdd = 20;                           //počet sekund připočtených ke konci aukce po přihození
var moneyAdd = 0.01                         //částka na přihození
var refreshTime = 900;                     //interval obnovení aukcí (v milisekundách)
var cssHighlight = 'red';                   //css třída pro zvýraznění (blížícího se) konce aukce
var timeHighlight = 30;                     //počet sekund do konce aukce kdy se zvýrazní zbývající čas
var endText = 'Ukončeno';                   //text zobrazený místo času po konci aukce
var waitText = 'Čekejte';                   //zobrazený text při čekání na odpověď skriptu
var defaultText = 'Přihodit';               //text zobrazený na tlačítku po přihození
var defaultBuyText = 'Dokoupit';            //text zobrazený na odkazu pro přikoupení příhozů
var pauseText = 'Aukce běží od 8 do 24';    //text zobrazený místo času mezi 0:00 a 7:59
var currency = ' Kč';                       //označení měny

var auctionName = 'Petr';                   //jméno uživatele
var userId = 1;                             //id uživatele
var auctionIds = '';                        //filtr aukcí podle jejich id oddělených čárkami, např. "1,2,3,4"

var auctionItems = {};
var lockLoad = false;
var lockAdd = false;
var lockBuy = false;

var lockTime = false;
var realTime = null;

function loadAuctionData()
{
    if (!lockLoad)
    {
        lockLoad = true;
        $.post("http://www.ironixcool.cz/auction.php", { "type": "load", "ids": auctionIds, "uid": userId }, function(data){
            auctionItems = data;
            lockLoad = false;
        }, 'json');
    }
}

function updateAuction()
{
    var d = getDate();
    var left, h, m, s, tmp, savings;
    for (k in auctionItems)
    {
        if (k == '0')
        {
            tmp = parseInt(auctionItems[k]);
            $('#bids').text(tmp);
            if (!tmp)
            {
                $('#bids-buy').fadeIn();
            }
            else
            {
                $('#bids-buy').fadeOut();
            }
            continue;
        }
    
        left = auctionItems[k][0] - Math.round(d.getTime() / 1000);

        if (left <= timeHighlight)
        {
            $('#item' + k + ' .auction-tleft').addClass(cssHighlight);
        }
        else
        {
            $('#item' + k + ' .auction-tleft').removeClass(cssHighlight);
        }

        if (!checkTime())
        {
            tmp = pauseText;
        }
        else if (left == 1)
        {
            auctionRobot($('#item' + k + ' .auction-button'));
        }
        else if (left <= 0)
        {
            left = 0;
            tmp = endText;
        }
        else// (left > 0)
        {
            h = Math.floor(left / 3600);
            left -= h * 3600;
            m = Math.floor(left / 60);
            left -= m * 60;
            s = left;
            tmp = h.toString().replace(/^([0-9])$/, '0$1') + ':' + m.toString().replace(/^([0-9])$/, '0$1') + ':' + s.toString().replace(/^([0-9])$/, '0$1');
        }
        
        $('#item' + k + ' .auction-tleft').text(tmp);

        tmp = auctionItems[k][1] + currency;
        $('#item' + k + ' .auction-price').text(tmp);
            
        tmp = auctionItems[k][2] + currency;
        $('#item' + k + ' .auction-price-product').text(tmp);
        
        tmp = auctionItems[k][3];
        $('#item' + k + ' .auction-price-added-no').text(tmp);

        tmp = auctionItems[k][4] + currency;
        $('#item' + k + ' .auction-price-added').text(tmp);

        savings = auctionItems[k][2] - auctionItems[k][1];
        tmp = (savings > 0 ? savings : 0) + currency;
        $('#item' + k + ' .auction-price-save').text(tmp);
        
        tmp = auctionItems[k][5];
        $('#item' + k + ' .auction-last').text(tmp);

        tmp = auctionItems[k][6];
        $('#item' + k + ' .auction-history').html('');
        for (j in tmp)
        {
            $('#item' + k + ' .auction-history').append('<tr>' + tmp[j] + '</tr>');
        }
    };
}

function auctionRobot(obj)
{
    //addToAuction(obj);
}

function addToAuction(obj)
{
    if (!lockAdd && checkTime())
    {
        lockAdd = true;
        $(obj).val(waitText);
        obj.disabled = true;
        var id = $(obj).parents('.auction-item:first').attr('id').toString().substring(4);
        $.post("http://www.ironixcool.cz/auction.php", { "type": "add", "amount": moneyAdd, "time": timeAdd, "name": auctionName, "uid": userId, "id": id }, function(data){
            lockAdd = false;
            $(obj).val(defaultText);
            obj.disabled = false;
            handleAuction();
        });
    }
}

function getDate()
{
	var d = new Date(realTime);
    /*var off = -d.getTimezoneOffset()/60 - 1;
    if (off != 0)
    {
        d = new Date(d.getTime() - off * 3600);
    }*/
    return d;
}

function updateTime()
{
    if (realTime != null)
    {
        realTime += refreshTime;
    }
    else
    {
        if (!lockTime)
        {
            lockTime = true;
            $.post("http://www.ironixcool.cz/auction.php", { "type": "time" }, function(data){
                lockTime = false;
                realTime = parseInt(data);
            });
        }
    }
}

function checkTime()
{
    var d = getDate();
    return (d.getHours() >= 0 && d.getHours() < 8) ? false : true;
}

function handleAuction()
{
	updateTime();
	if (realTime != null)
	{
		loadAuctionData();
		updateAuction();
		$('.auction-button').each(function() { this.disabled = !checkTime() || $(this).parent().siblings('.auction-tleft').text() == endText });
	}
	setTimeout('handleAuction()', refreshTime);
}

function buyBids(obj)
{
    if (!lockBuy)
    {
        lockBuy = true;
        $(obj).val(waitText);
        $.post("http://www.ironixcool.cz/auction.php", { "type": "buy", "uid": userId }, function(data){
            lockBuy = false;
            $(obj).val(defaultBuyText);
            handleAuction();
        });
    } 
}

$(document).ready(function(){
    
    $('.auction-button').bind('click', function(e) { e.preventDefault(); addToAuction(this); });
    $('#bids-buy').bind('click', function(e) { e.preventDefault(); buyBids(this); });
    
	handleAuction();
});