
	function preload(files) {
		
		var container = document.body;
		container.className += ' loading';
		
		var preLoader = new html5Preloader();
		
		var to_eval = 'preLoader.addFiles("'+files.join('","')+'")';
		
		eval(to_eval);
		preLoader.onfinish = function(){
			var  t = setTimeout(function(){
				
				container.className = container.className.replace( /(?:^|\s)loading(?!\S)/ , ' loaded go' );
				
				var el = document.getElementById('canvas-loader');
				var parent = el.parentNode;
				parent.removeChild(el);
				canvas = null;
				if (document.removeEventListener){
			  		document.removeEventListener('mousemove', onMouseMove, false);
				} else if (document.detachEvent){
			  		document.detachEvent('onmousemove', onMouseMove);
				} 
				clearInterval(looper);
				
				clearTimeout(t);
				
			},1000);
			
		};
		
		preLoader.onerror = function(e){
			//console.log('Error occured while loading '+this.loadingFile);
			return true;
		};
		
		var SCREEN_WIDTH = window.innerWidth;
		var SCREEN_HEIGHT = window.innerHeight;
		var HALF_WIDTH = window.innerWidth / 2;
		var HALF_HEIGHT = window.innerHeight / 2;
		
		var canvas = document.createElement('canvas');
		document.body.appendChild(canvas);
		if(window.G_vmlCanvasManager){
			G_vmlCanvasManager.initElement(canvas);
		}
		context = canvas.getContext('2d');
		
		var frame = 0;
		
		var mouseX = HALF_WIDTH;
		var mouseY = HALF_HEIGHT;
		
		var particles = [];
		var MAX_PARTICLES = 120;
		
		particleImage = new Image();
		particleImage.src = '/themes/cafecorp/javascript/img/ParticleSmoke3.png';
		
		var circleRadius = 68;
		
		coffeeImage = new Image();
		coffeeImage.src = '/themes/cafecorp/javascript/img/intro-coffee-cup.png';
		coffeeImage.onload = function() {
			context.drawImage(coffeeImage, mouseX - 37, mouseY - 38);
		};
		
		fontStyle = 'bold 14px "Brandon Grotesque", Helvetica, Arial, sans-serif';
		fontFill = 'rgba(173,141,107,.5)';
		context.font = fontStyle;
		context.fillStyle = fontFill;
		context.fillText('LOADING', mouseX - 32, mouseY + 60);
		
		init();
		looper = setInterval(loop, 1000 / 24);
		
		function init(){
		
			canvas.setAttribute('style', 'position:absolute; top:0; z-index:10');
			canvas.setAttribute('id', 'canvas-loader');
			canvas.width = SCREEN_WIDTH; 
			canvas.height = SCREEN_HEIGHT;
			
			if (document.addEventListener){  
			  document.addEventListener('mousemove', onMouseMove, false);   
			} else if (document.attachEvent){  
			  document.attachEvent('onmousemove', onMouseMove);  
			} 
			
		}
		
		function onMouseMove( event ) {
			if (event.preventDefault) {
				event.preventDefault();
			} else {
				event.returnValue = false;
			}
		
			mouseX = Math.round(event.clientX);
			mouseY = Math.round(event.clientY);
		
		}
		
		function loop(){
			
			frame++;
			var cosine = Math.cos(frame/12)*12;
			circleRadius = 68 + Math.round(cosine);
		
			makeParticle(3);		
			
			// clear the canvas
			context.clearRect(0,0, SCREEN_WIDTH, SCREEN_HEIGHT);
			
			context.beginPath();
			context.arc(mouseX, mouseY, circleRadius, 0, Math.PI*2, true);
			context.closePath();
			circleGradient = context.createRadialGradient(mouseX, mouseY, circleRadius-17, mouseX, mouseY, circleRadius);
			circleGradient.addColorStop(0, 'rgba(94,64,44,.35)');
			circleGradient.addColorStop(1, 'rgba(94,64,44,0)');
			context.fillStyle = circleGradient;
			context.fill();
			
			context.drawImage(coffeeImage, mouseX - 37, mouseY - 38);
			
			context.font = fontStyle;
			context.fillStyle = fontFill;
			context.fillText('LOADING', mouseX - 32, mouseY + 60);
			
			for (i=0; i<particles.length; i++){
				var particle = particles[i]; 
				
				particle.render(context);
				particle.update();
							
			}
			 
			while(particles.length>MAX_PARTICLES)
				particles.shift(); 
			
		}
		
		function makeParticle(particleCount){
		
			for(var i=0; i<particleCount;i++) {
				
				var randXPos = randomRange(-28,28);
				
				var particle = new ImageParticle(particleImage, mouseX + randXPos, mouseY - 36); // top of coffee cup
				
				particle.velX = randomRange(-5,5);
				particle.velY = 0;
				particle.size = randomRange(0.1,0.4);
				particle.maxSize = 0.9; 
				particle.alpha = randomRange(0.1,0.2);
				particle.gravity = -.8; 
				particle.drag = .76;
				particle.shrink = 1.04; 
				particle.fade = 0.005; 
				
				particle.rotation = randomRange(0,360);
				particle.spin = randomRange(-5,5); 
				
				particle.compositeOperation = 'lighten';
				
				
				particles.push(particle); 
				
			}
		
		}
	
	}
