﻿//window.new_ids = [];
window.old_ids = [];
window.new_ids = [];
processingLot  = '';
processingLots = 'lots.php';
controller     = '';


function setProcessingLot(newProcessingLot){
    processingLot = newProcessingLot;    
}

function setProcessingLots(newProcessingLots){
    processingLots = newProcessingLots;    
}

function setController(newController){
    controller = newController;    
}

function replaceLot(lot_id){

    var lot = window.new_ids.pop();
    window.lot_ids.splice([window.lot_ids.indexOf(lot_id)], 1);
    $.get('/' + processingLot, {id: lot}, function(data){
        $('#lot' + lot_id).replaceWith(data);
        window.lot_ids.push(lot);
        window.old_ids.splice([window.old_ids.indexOf(lot_id)], 1);
        window.new_ids.splice([window.new_ids.indexOf(lot_id)], 1);
    });
}

function synchronize(){
    this.success    = 1;
    $.get('/' + processingLots, false, function(data){
        var lots = [];
        var new_ids = window.new_ids;
        var old_ids = window.old_ids;
        for (var i = 0; i < data.length; i++){
            var lot_name = '#lot' + data[i][0];
            if ($(lot_name).length){
                lots.push(data[i][0]);
                var time = $('#lot' + data[i][0] + ' div.time');
                
                $('#lot' + data[i][0] + ' div.count').text(data[i][1]);
                $('#lot' + data[i][0] + ' div.time').text(data[i][2]);
                $('#lot' + data[i][0] + ' div.price').html(data[i][3] + '&nbsp;руб.');
                $('#lot' + data[i][0] + ' div.lastUser').text(data[i][4]);
                
                if (data[i][2] < '00:10'){
                	time.addClass('timeRed');
                }
                else{
                	time.removeClass('timeRed');
                }
                
                if (data[i][2] < '00:05'){
                	time.fadeTo(500, 0.5).fadeTo(500, 1);
                }
                
                
            }
            else if (new_ids.indexOf(data[i][0]) < 0) {
                new_ids.push(data[i][0]);
            }
        }
        var lot;
        // lots - список лотов в аукционе отображаемых пользователю
        // window.lot_ids - список лотов отображаемых пользователю
        // old_ids - список устаревших лотов
        for (var i = 0; i < window.lot_ids.length; i++){
            if (lots.indexOf(window.lot_ids[i]) < 0){
                if (old_ids.indexOf(window.lot_ids[i]) < 0){
                    old_ids.push(window.lot_ids[i]);
                    window.setTimeout('replaceLot(' + window.lot_ids[i] + ')', window.auction.lot_away_time);
                }
            }
        }
        
        if (data === false) this.success = 10; else this.success = 1;

        
        window.setTimeout(synchronize, window.auction.synchronization_time * this.success);
    }, 'json');
}

function stake(lot_id){
    var link = $('#lot' + lot_id + ' a.stake');
    link.get(0).onclick = stakeEmpty;
    link.css('background-position', '95px 0');
    
    var result = link.parent().find('.stakeResult');
    var stakeError = function(){
        result.fadeIn(300);
        window.setTimeout(function(){
            result.fadeOut(1200);
        }, 4000)
    };
    $.get('/ajax.php', {
        area: controller,
        action: 'userStake',
        lot_id:  lot_id
    }, function(data){
        switch (data){
        case window.auction.stake.requestAuthorize:
            $('#placeLogin form').fadeOut(300).fadeIn(900);
            result.text('Для участия в игре требуется авторизоваться');
            stakeError();
            break;
        case window.auction.stake.pointDeficiency :
            result.text('у вас недостаточно баллов для участия в аукционе');
            stakeError();
            break;
        case window.auction.stake.notAuctioned:
        case window.auction.stake.endOfTime :
            result.text('Извините, лот уже выбыл из аукциона');
            stakeError();
            break;
        default:
            //result.fadeIn(300).fadeOut(300);
            link.parent().find('.time').fadeOut(300).fadeIn(300);
            link.parent().find('.price').fadeOut(300).fadeIn(300);
            link.parent().find('.lastUser').fadeOut(300).fadeIn(300);
            if (window.controller === 'auction'){
                $('#userPoint').text( $('#userPoint').text() - 1 );
                $('#currentPoint').text( $('#currentPoint').text() - 1);
            }
            else{
                $('#userTrainingPoint').text( $('#userTrainingPoint').text() - 1 );
            }
        }
        result.toggleClass('stakeSuccess', data === '0');
        link.get(0).onclick = function(){return stake(lot_id)};
        link.unbind('click', stakeEmpty);
        link.css('background-position', '0 0');
    });
    return false;
}

function stakeEmpty(){
    return false;
}

function roundingBox(){
    var div = $('<div class="round"></div>');
    div.append('<div class="top-left"></div>');
    div.append('<div class="top-right"></div>');
    div.append('<div class="bottom-left"></div>');
    div.append('<div class="bottom-right"></div>');
    $('div.box').wrapInner('<div class="box-content"></div>');
    $('div.box').append(div);
}

function roundingBox2(){
    var div = $('<div class="round"></div>');
    div.append('<div class="top-left"></div>');
    div.append('<div class="top-right"></div>');
    div.append('<div class="bottom-left"></div>');
    div.append('<div class="bottom-right"></div>');
    $('div.box2 > div').wrap('<div class="box-content"></div>');
    $('div.box2').append(div);
}

$(function(){
    $('#lotCanvas div.lastUser').attr('title', 'Пользователь, сделавший последнюю ставку');
    if (window.controller != 'auctionTraining'){
        $('#userTrainingPoint').parent().parent().hide();
    }
    else{
        $('div.lotCanvas div.lot').each(function(){
            $(this).append('<img src="/img/demo.png" class="demo" alt="Демо" />');
        });
    }
    roundingBox();
    roundingBox2();
});

// Fix indexOf for IE6
if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(elt /*, from*/){
        var len = this.length >>> 0;

        var from = Number(arguments[1]) || 0;
        from = (from < 0)
             ? Math.ceil(from)
             : Math.floor(from);
        if (from < 0)
          from += len;

        for (; from < len; from++)
        {
          if (from in this &&
              this[from] === elt)
            return from;
        }
        return -1;
    }
}