package;


import openfl.display.Sprite;
import openfl.events.Event;


class NMEPreloader extends Sprite {
	
	
	private var outline:Sprite;
	private var progress:Sprite;
	
	
	public function new () {
		
		super ();
		
		var backgroundColor = getBackgroundColor ();
		var r = backgroundColor >> 16 & 0xFF;
		var g = backgroundColor >> 8  & 0xFF;
		var b = backgroundColor & 0xFF;
		var perceivedLuminosity = (0.299 * r + 0.587 * g + 0.114 * b);
		var color = 0x000000;
		
		if (perceivedLuminosity < 70) {
			
			color = 0xFFFFFF;
			
		}
		
		var x = 30;
		var height = 7;
		var y = getHeight () / 2 - height / 2;
		var width = getWidth () - x * 2;
		
		var padding = 2;
		
		outline = new Sprite ();
		outline.graphics.beginFill (color, 0.07);
		outline.graphics.drawRect (0, 0, width, height);
		outline.x = x;
		outline.y = y;
		addChild (outline);
		
		progress = new Sprite ();
		progress.graphics.beginFill (color, 0.35);
		progress.graphics.drawRect (0, 0, width - padding * 2, height - padding * 2);
		progress.x = x + padding;
		progress.y = y + padding;
		progress.scaleX = 0;
		addChild (progress);
		
	}
	
	
	public function getBackgroundColor ():Int {
		
		return 0;
		
	}
	
	
	public function getHeight ():Float {
		
		var height = 360;
		
		if (height > 0) {
			
			return height;
			
		} else {
			
			return flash.Lib.current.stage.stageHeight;
			
		}
		
	}
	
	
	public function getWidth ():Float {
		
		var width = 640;
		
		if (width > 0) {
			
			return width;
			
		} else {
			
			return flash.Lib.current.stage.stageWidth;
			
		}
		
	}
	
	
	public function onInit () {
		
		
		
	}
	
	
	public function onLoaded () {
		
		dispatchEvent (new Event (Event.COMPLETE));
		
	}
	
	
	public function onUpdate (bytesLoaded:Int, bytesTotal:Int):Void {
		
		var percentLoaded = bytesLoaded / bytesTotal;
		
		if (percentLoaded > 1) {
			
			percentLoaded = 1;
			
		}
		
		progress.scaleX = percentLoaded;
		
	}
	
	
}