function run_Preload(files) {

	function classFilter(r,m,not){
		m = " " + m + " ";
		var tmp = [];
		for ( var i = 0; r[i]; i++ ) {
			var pass = (" " + r[i].className + " ").indexOf( m ) >= 0;
			if ( not ^ pass)
				tmp.push( r[i] );
		}
		return tmp;
	}

	var body = document.getElementsByTagName('BODY')[0];
	var preload = document.getElementById('preload');
	var wave = classFilter(preload.getElementsByTagName('DIV'), 'wave')[0];
	var frame = classFilter(preload.getElementsByTagName('DIV'), 'frame')[0];
	var preimg = frame.getElementsByTagName('IMG');
	var totalWeight = 0;
	var weight = 0;
	
	// I HATE IE 6 !!!!!!!!!!!!!!1111111!!!!!!!!!1111111
	switch (preload.className) {
		case 'white':
			preload.style.background = 'white';
			break;
		case 'black':
			preload.style.background = 'black';
			break;
		case 'brown':
			preload.style.background = '#A25328';
			break;
		case 'ligthbrown':
			preload.style.background = '#EBDBAF';
			break;
		case 'yellow':
			preload.style.background = '#F5A610';
			break;
		case 'blue':
			preload.style.background = '#92C5FA';
			break;
		case 'ligthblue':
			preload.style.background = '#D6E9F8';
			break;
		case 'green':
			preload.style.background = '#B1D380';
			break;
	}

	preload.className += ' visible';
	body.className += ' fixed';

	for(var i in preimg) {
		if (preimg[i].src) {
			var img = new Image();
			img.src = preimg[i].src;
			fixPNG(preimg[i]);
		}
	}

	for(var i in files) {
		var img = new Image();
		img.src = i;
		img.weight = files[i];
		files[i] = img;
		totalWeight += img.weight;
	}

	var start = (new Date()).getTime();
	var timer = setInterval(function() {
		var elapsed = (new Date()).getTime() - start;
		wave.style.left = ((elapsed / 30) % 45 - 45).toString() + 'px';

		for(var i in files) {
			if (files[i] && ( ! files[i]._done) && files[i].complete) {
				weight += files[i].weight;
				files[i]._done = true;
			}
		}

		wave.style.top = ((-180 * weight / totalWeight) - 30).toString() + 'px';

		if ((weight >= totalWeight) || (elapsed > 20000)) {
			clearInterval(timer);
			//frame.style.display = 'none';

			if (elapsed < 2000) {
				body.className = '';
				preload.className = '';
			} else {
				start = (new Date()).getTime();
				timer = setInterval(function(){
					elapsed = (new Date()).getTime() - start;
					var opacity = 1 - (elapsed / 700);
					preload.style.opacity = opacity;
					preload.style.filter = 'alpha(opacity=' + Math.round(opacity*100).toString() + ')';
					if (opacity <= 0) {
						clearInterval(timer);
						body.className = '';
						preload.className = '';
					}
				}, 1);
			}
		}
	}, 100);
};
