var i1=0;i2=0;i11=0;i22=0;  // i1 - число которое сейчас показывается на экране, i2 - число которое должно прийти на смену i1
var step=0;time=10;cur='none'; //step - шаг изменения числа, time - влияет на шаг изменения step, cur - направление изменения +,-,ничего не делать
var wh,fr; //где произошло событие, где до этого было изменение

function change_num(where,w){
    i2 = w;
    if(fr){
        document.getElementById(fr).innerHTML = '';         
    }
    fr = where;
    wh = where;
    if(i1!=0){
        i11=i1;
    }else{
        i11=0;
    }
    if(i2!=0){
        i22 = i2;
    }else{
        i22=0;
    }
    
    step = Math.round(Math.abs(i11-i22)/time); //шаг числа на которое будет изменяться первое число на второе       
    //alert('i11='+i11+' i22='+i22+'step='+step);
    cur = i11-i22; // для определения направление изменения
    //window.status ='';        
    if(cur>0){
        minus();
    }else if(cur<0){
        plus();
    }else{
        plus();
    }
    i1=i2;
}

function plus(){
var val=0;
    if(i11<=i22){
        //window.status += 'i11='+i11+' i22='+i22+' step='+step+'->';   
        
        document.getElementById(wh).innerHTML = number_format(i11, 0, '.', ' ');
        i11 +=step;
        setTimeout(plus,100);   
    }else{
        var str=String(i2); // если число десятичное то устанавливаем сколько знаков после "." нужно вывести в дробной части
        for(var y=0;y<str.length;y++){
            if(str.charAt(y)=='.'){
                val=2;
            }
        }
        document.getElementById(wh).innerHTML = number_format(i2, val, '.', ' ');
    }
}
function minus(){
var val=0;
    if(i11>=i22){
        //window.status += 'i11='+i11+' i22='+i22+' step='+step+'->';
        document.getElementById(wh).innerHTML = number_format(i11, 0, '.', ' ');
        i11 -=step;
        setTimeout(minus,100);  
    }else{
        var str=String(i2);
        for(var y=0;y<str.length;y++){
            if(str.charAt(y)=='.'){
                val=2;
            }
        }
        document.getElementById(wh).innerHTML = number_format(i2, val, '.', ' ');
    }
}

function number_format( number, decimals, dec_point, thousands_sep ) { //ф-ия форматного вывода: тоже же что в РНР
    var i, j, kw, kd, km, minus = "";
    
    if(number < 0){
        minus = "-";
        number = number*-1;
    }
 
    // input sanitation & defaults
    if( isNaN(decimals = Math.abs(decimals)) ){
        decimals = 2;
    }
    if( dec_point == undefined ){
     dec_point = ",";
    }
    if( thousands_sep == undefined ){
        thousands_sep = ".";
    }
 
    i = parseInt(number = (+number || 0).toFixed(decimals)) + "";
 
    if( (j = i.length) > 3 ){
        j = j % 3;
    } else{
        j = 0;
    }
 
    km = (j ? i.substr(0, j) + thousands_sep : "");
    kw = i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep);
    //kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).slice(2) : "");
    kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).replace(/-/, 0).slice(2) : "");

    return minus + km + kw + kd;
}

