var N = -1;
function createBar(w, h, speed, blocksCount, count, parent) {
	var bar = $(document.createElement('div'));
	bar.id = 'bar' + (++N);
	bar.setStyle({
		width: w + 'px',
		height: h + 'px'
	});
	
	var blocks = $(document.createElement('span'));
	blocks.id = 'blocks' + N;
	blocks.setStyle({
		left: (h * 2 + 1) + 'px'
	});
	bar.appendChild(blocks);
	
	blocksCount.times(function (i) {
		var block = $(document.createElement('span'));
		block.setStyle({
			width: h + 'px',
			height: h + 'px',
			left: '-' + ((h * i) + i) + 'px',
			opacity: (100 - i * (100 / blocksCount)) / 100
		});
		blocks.appendChild(block);
	});
	
	$(parent).appendChild(bar);
	
	Object.extend(blocks, {
		bar: bar,
		blocks: blocksCount,
		N: N,
		w: w,
		h: h,
		speed: speed,
		ctr: 0,
		count: count,
		togglePause: togglePause,
		showBar: function() {
			this.bar.show();
		},
		hideBar: function() {
			this.bar.hide();
		},
		tid: setInterval('startBar(' + N + ')', speed)
	});
	return blocks;
}

function startBar(bn) {
	var t = $('blocks' + bn);
	var left = t.getStyle('left');
	if (parseInt(left) + t.h + 1 - (t.blocks * t.h + t.blocks) > t.w) {
		t.setStyle({left: -(t.h * 2 + 1) + 'px'});
		t.ctr++;
		if (t.ctr >= t.count) {
			t.ctr=0;
		}
	} else {
		t.setStyle({left : (parseInt(left) + t.h + 1) + 'px'});
	}
}

function togglePause() {
	if (this.tid == 0){
		this.tid = setInterval('startBar(' + this.N + ')', this.speed);
	} else {
		clearInterval(this.tid);
		this.tid = 0;
	}
}
