//JavaScript code

// задержка по умолчанию
var sleep = 8370;
// стартовое значение по умолчанию
var count = 5000123;
// шаг по умолчанию
var step = 1;
var d = document;
// идентификатор слоя счетчика
var id;
//случайный шаг увеличения
var st;
//разрядность счетчика
var bit = 9;
var r_k = new Array(0.5, 1, 0.5, 1.5, 0.5);
//позиции цифр
var pos_num = new Array(0, 24, 48, 72, 96, 120, 144, 168, 192, 216, 240, 264);
//старое количество до увеличения
var old_count = new Array();

/* дополнение слева нулями до {len_in} у {c_int}*/
function printF(len_int, c_int) {
    var k1 = len_int;
    var k2 = new String(c_int);
    while(k2.length < k1) {
        k2 = '0'+k2;
    }
    return k2;
}

/* Инициализация _id, _step, _count и _sleep глобальные переменные */
function init_(){
    count = (typeof(_count) == "undefined" || (_count == 0)) ? count : _count;
    sleep = (typeof(_sleep) == "undefined" || (_sleep == 0)) ? sleep : _sleep;
    step = (typeof(_step) == "undefined" || (_step == 0)) ? step : _step;
    id = (typeof(_id) == "undefined" || (_id == '')) ? 'count' : _id;

	d.getElementById(id).innerHTML = create_ul_li_ceils();
	//for (var i=0; i<bit; i++) old_count[i] = 0;
    start_first();

}

function create_ul_li_ceils() {
	var ceil_ = "<ul class=\"ceils_ul_li\">";
	var j=0;
	for (var i=1; i<=bit; i++){
		ceil_ += (i % 3 == 0 && i<bit)? "<li class=\"ceils_li\" id=\"ceils_li_"+(bit-j)+"\">&nbsp;</li><li class=\"space_li\">&nbsp;</li>":"<li class=\"ceils_li\" id=\"ceils_li_"+(bit-j)+"\">&nbsp;</li>";
		j++;
	}
	ceil_ += "</ul><div style=\"clear:both;\"></div>";
	return ceil_;
}

function sprite_scroll(ceil_id, old_num, new_num) {
	if(sprite_scroll.init == undefined || sprite_scroll.init == 0) {
		sprite_scroll.init = 1;
		sprite_scroll.c_id = new Array();
		sprite_scroll.pos = new Array();
		sprite_scroll.n_num = new Array();
		sprite_scroll.pos_max = new Array();
		
		sprite_scroll.c_id = ceil_id.split(' ');
		sprite_scroll.n = sprite_scroll.c_id.length
		sprite_scroll.pos = old_num.split(' ');
		sprite_scroll.n_num = new_num.split(' ');
		for (var i=0; i<sprite_scroll.n; i++) {
			sprite_scroll.c_id[i] = "ceils_li_"+sprite_scroll.c_id[i];
			sprite_scroll.pos_max[i] = pos_num[sprite_scroll.pos[i]] + (pos_num[1] - pos_num[0]);
			sprite_scroll.pos[i] = pos_num[sprite_scroll.pos[i]];
		}
	}

	if(sprite_scroll.pos[0] < sprite_scroll.pos_max[0]) {
		for (var i=0;i<sprite_scroll.n; i++) {
			d.getElementById(sprite_scroll.c_id[i]).style.backgroundPosition = '0px -'+(sprite_scroll.pos[i])+'px';
			sprite_scroll.pos[i] += 2;
		}
		sprite_scroll.s = setTimeout("sprite_scroll('"+ceil_id+"', '"+old_num+"', '"+new_num+"')", 100);
	} else {
		for (var i=0;i<sprite_scroll.n; i++) {
			d.getElementById(sprite_scroll.c_id[i]).style.backgroundPosition = '0px -'+(pos_num[sprite_scroll.n_num[i]])+'px';
		}
		clearTimeout(sprite_scroll.s);
		sprite_scroll.init = 0;
	}
}

function write_ceil_scroll(val) {
	var ceil_id = '';
	var old_num = '';
	var new_num = '';
	var ceil_val = 0;
	var j = 0;
	for (var i=1; i<=bit; i++) {
		ceil_val = parseInt(val.substr(bit-i,1), 10);
		if((old_count[bit-i] < ceil_val) || (old_count[bit-i] == 9 && ceil_val == 0) ) {
			ceil_id += (i+' ');
			old_num += (old_count[bit-i]+' ');
			new_num += (ceil_val+' ');
			old_count[bit-i] = ceil_val;
		}
	}
	j = ceil_id.length - 1;
	ceil_id = ceil_id.substr(0, j);
	old_num = old_num.substr(0, j);
	new_num = new_num.substr(0, j);
	
	sprite_scroll(ceil_id, old_num, new_num);//(id, old_val, new_val)
}

function write_ceil_quickly(val) {
	var ceil_id = '';
	var ceil_val = '';
	for (var i=1; i<=bit; i++) {
		ceil_val = val.substr(bit-i,1);
		ceil_id = "ceils_li_"+i;
		old_count[bit-i] = parseInt(ceil_val,10);
		d.getElementById(ceil_id).style.backgroundPosition = '0px -'+(pos_num[ceil_val])+'px';
	}
}

function start_() {
    if(start_.st_i == undefined) {
      start_.st_i = 0
    }
    if(start_.st_i >= 5) {start_.st_i = 0;}
    var r_sleep = parseInt(r_k[start_.st_i] * sleep);
    count = parseInt(count, 10);
    count += step;

	write_ceil_scroll(printF(bit, count));
    start_.st_i++;
    var t = setTimeout(start_, r_sleep);
}

function start_first() {
    if(start_first.st_c == undefined) {
/* 		n = count/1000; 
		n = n.toFixed(0);
		start_first.n = n; */
		start_first.st_c = 1;
    }

    if (start_first.st_c <= count) {
        start_first.st_c += 123456;
		write_ceil_quickly(printF(bit, start_first.st_c));
        start_first.s = setTimeout("start_first()", 10);
    }
    else {
        clearTimeout(start_first.s);
		write_ceil_quickly(printF(bit, count));
        start_();
    }
}

function test_loading() {
    if(test_loading.tl_i == undefined) {
      test_loading.tl_i = 0
    }
    if(typeof(_test_loading) == "undefined") {
        if(test_loading.tl_i >= 6) {
            clearTimeout(test_loading.s);
            init_();
        } else {
            test_loading.tl_i++;
            test_loading.s = setTimeout("test_loading()", 500);
        }
    } else {
        if(test_loading.s != undefined) {
            clearTimeout(test_loading.s);
        }
        init_();
    }
}
 if  ((document.getElementById) && window.addEventListener || window.attachEvent){
(function(){
//BEGIN

// Перехватывает события load 
//для Mozilla
if (window.addEventListener) {
  window.addEventListener("load",test_loading,false);
} 
else 
//для IE
 if (window.attachEvent) {
  window.attachEvent("onload",test_loading);
}
//#END
})();

}
