function App(userOptions)
{
	var _this=this;
	var previousBoxes;
	var firstRun= true;

	var cacheQuality= 2//  parseFloat(fromURL.c);
	var cache;
	
	
	var emoji = '👻🎃';


	var isDrawing;
	var drawingCanvas;
	var oldPt;
	var oldMidPt;
	var image;
	var bitmap;
	var maskFilter;
	var text;
	var blur;
	var item = scene.animation.results;
	var bnd;
	var growRing;
	
	
	var clickCount = 0;
	var selectedDuckNo;
	var calledOutNumbers = [];
	
	scene.animation.hider.cursor = "default";

	var safari = false;
	
	/*
	var buildLog = '';
	for(i=0;i<30;i++){
		
		var cur = scene.animation['p' + i];
		buildLog += '[' + cur.x + ',' + cur.y + '],'
	}
	console.log(buildLog)
	*/
	
	
	
	var ducks_with_logo = [[107.85,193.4],[221.6,168.5],[326.1,142.15],[451.8,149.65],[569.05,139.65],[689.7,138.4],[809.35,177.25],[928,203.8],[96.35,287.35],[225.35,262.35],[336,239.35],[456.95,243.6],[580.15,240.95],[692.9,234.65],[810.45,271.75],[929.25,299.85],[440.85,431.95],[235.45,356.1],[361.25,338.3],[578.7,425.6],[486.2,340.25],[633.7,341.5],[761.7,353.3],[892.5,384.55],[369.85,509.75],[533.6,510.15],[660.5,513.9],[711.2,431.15],[815.05,507.25],[928.05,490.15]];
	var ducks_no_logo = [[114.1,213.4],[212.85,181],[326.1,160.9],[455.55,175.9],[569.05,153.4],[689.7,143.4],[809.35,177.25],[928,203.8],[114.1,313.75],[221.4,286.1],[332.25,260.6],[456.95,296.1],[557.65,250.95],[691.65,240.9],[810.45,271.75],[929.25,299.85],[103.2,423.1],[231.7,403.3],[363.75,403.3],[488.7,393.65],[589.7,346.5],[707.2,337.3],[809.35,403.3],[928,393.65],[201.15,509.05],[332.25,509.05],[517.45,509.05],[630.25,456.45],[765.4,495.15],[915.75,498.9]];	
	//var tubStart = scene.tub.y;
	
	
	
	function positionDucks(){
		
		var useArray = ducks_no_logo;
		
		
		scene.animation.hider.alpha = 0;
		
		if(menu.appOption('customLogo')){
			useArray = ducks_with_logo;
		}
		
			
		var pumpkinColors = ['#FF9900','#D58000','#D5B810','#CDD516','#B78900','#A9B776','#EE8F00','#E38800']
		

			var pumpkinCounter = [];
			calledOutNumbers = [];
			for (var i = 0; i < 30; i++) {
				pumpkinCounter.push(i);
				
				calledOutNumbers.push(i);
				
				
			}

			// Shuffle the array using the Fisher-Yates algorithm
			for (var i = pumpkinCounter.length - 1; i > 0; i--) {
				var j = Math.floor(Math.random() * (i + 1));
				var temp = pumpkinCounter[i];
				pumpkinCounter[i] = pumpkinCounter[j];
				pumpkinCounter[j] = temp; // Swap elements
			}	
	
		
		
			for (var i = calledOutNumbers.length - 1; i > 0; i--) {
				var j = Math.floor(Math.random() * (i + 1));
				var temp = calledOutNumbers[i];
				calledOutNumbers[i] = calledOutNumbers[j];
				calledOutNumbers[j] = temp; // Swap elements
			}		
		

			
		
			for(i=0;i<30;i++){
				
				
				scene.animation['p' + i].visible = true;
				
				scene.animation['p' + i].gotoAndStop(0)	
			
				scene.animation['p' + i].x = useArray[i][0];
				scene.animation['p' + i].y = useArray[i][1];
				
				var onFrame = Math.specialRandom(0,3);
				
				scene.animation['p' + i].pumpkin.gotoAndStop(onFrame)
				
				
				var picked = Math.specialRandom(0,pumpkinColors.length-1)
				
				
				scene.animation['p' + i].pumpkin.col.shape.graphics._fill.style = pumpkinColors[picked]
				
			
				scene.animation['p' + i].txt.text = pumpkinCounter[i]+1;
				
				scene.animation['p' + i].gotoAndPlay(Math.specialRandom(0,20));
				
				//scene.animation['p' + i].gotoAndPlay(Math.specialRandom(0,20));
				
				scene.animation['p' + i].removeEventListener("mousedown",selectDuck);
				
				scene.animation['p' + i].addEventListener("mousedown",selectDuck);
				
			}	
		
		
		//scene.tub.y = tubStart
		
	}
	
	
	function selectDuck(e){
		
		selectedDuckNo = parseInt(e.currentTarget.name.substr(1));
		
		
		var index = calledOutNumbers.indexOf(selectedDuckNo);
		
		
		console.log(selectedDuckNo,index);

		// If the number is found, remove it from the array
		if (index !== -1) {
			calledOutNumbers.splice(index, 1); // Remove the element at the found index
		}
		
		console.log(calledOutNumbers);
		
		
		
		scene.animation['p' + selectedDuckNo].removeEventListener("mousedown",selectDuck);
		
		
		
		/*
		for(i=0;i<30;i++){
			scene.animation['p' + i].removeEventListener("mousedown",selectDuck);
		}
		*/
		
		
		//console.log("SELECTED DUCK: " + selectedDuckNo);
		
		//var selectedDuck = scene.animation['duck' + selectedDuckNo];
		
		var selectedDuck = scene.animation.getChildByName('p' + selectedDuckNo);
		
		
		
		var topBoxIndex = scene.animation.getChildIndex(scene.animation.topBox);
	
		scene.animation.setChildIndex(selectedDuck, topBoxIndex-1);
		scene.animation.setChildIndex(scene.animation.hider, topBoxIndex-2);
		
		
		
		loadResult(selectedDuck.getChildByName("basebottom"),function(){
			
			selectedDuck.gotoAndPlay('reveal');
	

			createjs.Tween.get(selectedDuck).wait(0).to({x:(500), y:340},200)
			
			scene.animation.hider.visible = true;
			scene.animation.hider.alpha = 0;
			createjs.Tween.get(scene.animation.hider).to({alpha:1},200)
			
			
			
			

			//createjs.Tween.get(scene.tub).to({y:(tubStart+300)},1000)

			/*
			for(i=0;i<8;i++){

				if(i != selectedDuckNo){

					//console.log(i + " DUCK: " + selectedDuckNo);

					var curDuck = scene.animation['duck' + i]
					createjs.Tween.get(curDuck).to({y:(curDuck.y+300)},1000)
				}
			}
			*/

			unmaskAll()
			
			
			
		})

	}


	this.startApp=function()
	{

		var ua = navigator.userAgent.toLowerCase(); 
		if (ua.indexOf('safari') != -1 && ua.indexOf('chrome') == -1) { 
			safari = true;
		}		
		
		
		//console.log("========================== START APP FUNCTION ==========================");

		if(firstRun)
		{
			cache=new Cache();
			
			
			
			
			


			defaultSounds = defaultSounds[userOptions.animation];

			if(defaultSounds)
			{
				if(defaultSounds.backgroundSound && userOptions.useSounds)
				{
					createjs.Sound.stop();
					loadSound(defaultSounds.backgroundSound,true,true);
				}
				if(defaultSounds.onReveal)
				{
					loadSound(defaultSounds.onReveal,false,false);
				}
				if(defaultSounds.onPress)
				{
					loadSound(defaultSounds.onPress,false,false);
				}

			}

			loadSound('scratch',false,false);

			positionDucks()
			scene.animation.continue_app.btn.removeEventListener("mousedown",nextDrawClick);
			scene.animation.continue_app.btn.addEventListener("mousedown",nextDrawClick);
			firstRun = false;

			scene.animation.continue_app.visible = false;


		}

		if(!menu.allowedToStart())
		{
			return false;
		}


		menu.saveUserChanges(function()
		{

			scene.animation.continue_app.visible = false;
			
			

			var i;

			scene.animation.gotoAndStop(0);
			scene.animation.continue_app.remove_item.remove_opt.gotoAndStop(userOptions.removeItem);


			if(menu.appOption('groupDraw') && !menu.appOption('customStyle'))
			{
				scene.animation.gotoAndPlay('multi_start');
				userOptions.revealAtOnce = userOptions.groupDraw-1;
			}
			else
			{
				scene.animation.gotoAndPlay('single_start');
			}

			if(menu.appOption('groupDraw') && !menu.appOption('customStyle'))
			{

				scene.animation.gotoAndPlay('multi_start');
				userOptions.revealAtOnce = userOptions.groupDraw-1;

			}
			else
			{
				scene.animation.gotoAndPlay('single_start');
			}

			
		if (userOptions.revealAtOnce === 0) {
				// Reveal 1 name...

				scene.animation.results[menu.get_resultHolder()].gotoAndStop('single');

			} else {

				scene.animation.results[menu.get_resultHolder()].gotoAndStop('multi');

				var pos = scene.animation.results[menu.get_resultHolder()].multi
				var bnds = pos.nominalBounds;
				var container = {
					width: (bnds.width * pos.scaleX),
					height: (bnds.height * pos.scaleY),
					x: pos.x,
					y: pos.y
				};

				//console.log(bnds.width * pos.scaleX);

				if (menu.get_resultHolder() === 'imgHolder') {
					bnds = exportRoot.box_pic.nominalBounds;
				} else {
					bnds = exportRoot.box_txt.nominalBounds;
				}

				var itemDim = {
					width: bnds.width,
					height: bnds.height
				};
				//{width:(bnds.width * pos.scaleX),height:(bnds.height * pos.scaleY)};

				var itemNumber = parseInt(userOptions.revealAtOnce + 1); // (userOptions.revealAtOnce+1);

				//console.log("item count:",itemNumber,"op",(userOptions.revealAtOnce+1));

				var scale = getBestScale(container, itemDim, itemNumber); //how much to rescale original rectangle
				var coordinates = calcCoordinates(container, itemDim, itemNumber, scale); //get coordinates to iterate within and set on the screen

				//let's generate dummy rectangles
				var instances = [];
				for (var i = 0; i < coordinates.length; i++) {

					var item;

					if (userOptions.currentScreen === 'pictures') {
						item = new lib.box_pic();

					} else {
						item = new lib.box_txt();

					}

					item.name = 't_' + i;

					scene.animation.results[menu.get_resultHolder()].addChild(item);


					instances.push(item);
				}
				putInPlace(coordinates, instances);

				previousBoxes = {}
				previousBoxes.count = itemNumber
				previousBoxes.holder = menu.get_resultHolder()

			}			
			
			
			
			if(menu.appOption('autoDraw'))
			{

				scene.animation.continue_app.continue_txt.text = '';
				scene.animation.continue_app.next_result_txt.text = 'Next Result In:';
				scene.animation.continue_app.show_next_txt.text = '';

			}
			else
			{

				scene.animation.continue_app.continue_txt.text = 'Continue!';
				scene.animation.continue_app.next_result_txt.text = '';
				scene.animation.continue_app.show_next_txt.text = '';

			}

			

			var sOrNot = ((userOptions.revealAtOnce === 0) ? '' : 's');

			scene.animation.continue_app.remove_item.txt.text = "Remove " +	CapFirstLetter(userOptions.currentScreen.slice(0, -1)) + sOrNot;

			
			//console.log("POSTION DUCKS");
			positionDucks()

			if(userOptions.currentScreen === 'names')
			{
				// Filter any badwords from list..
				userOptions.useNames 	= removeBadwords(userOptions.useNames).list;
				holder_array  			=  userOptions.useNames.slice();  //fillArray(0,userOptions.useNames.length);
				menu.hideMenu();

				clickCount = 0;
				
				runAnimation();

			}
			else if(userOptions.currentScreen === 'numbers')
			{
				menu.hideMenu();
				
				clickCount = 0;
				
				runAnimation();
			}
			else if(userOptions.currentScreen === 'pictures')
			{
				// Create the spritesheet...

				//console.log("CREATE SPRITE SHEET IN TWEEN");
				menu.createSpriteSheet(function()
				{
					holder_array  	= fillArray(0,menu.spriteLength());
					menu.hideMenu();
					
					clickCount = 0;
					
					runAnimation();
				},scene.animation.results);
			}

		});

	};




	function nextDrawClick(e)
	{

		if(menu.appOption('autoDraw'))
		{
			if(e.type === 'mousedown')
			{
				if(scene.animation.continue_app.show_next_txt.text !== 'Done!')
				{
					if(autoDrawTween !== undefined)
					{

						if(autoDrawTween.paused === true)
						{
							autoDrawTween.paused=false;
						}
						else
						{
							autoDrawTween.paused = true;
							scene.animation.continue_app.show_next_txt.text = 'Paused';

						}

					}

				}

			}
			return false;
		}

		if(removeAllowed)
		{
			nextDraw();
		}

	}


	function nextDraw()
	{

		if(scene.animation.continue_app.remove_item.remove_opt.currentFrame === 1)
		{
			// Remove this item from future draws...

			if(userOptions.currentScreen === 'names' || userOptions.currentScreen === 'pictures')
			{

				for(var i=0;i <= userOptions.revealAtOnce;i++)
				{
						var cur = drawnCurArray[i];
						var t = holder_array.indexOf(cur);
						removed_array.push(cur);
						holder_array.splice(t, 1);

				}

			}
			else if(userOptions.currentScreen === 'numbers')
			{

					removed_array = drawnCurArray.slice();
					holder_array = drawnCurArray.slice();

			}

			menu.showEntries();

		}

		// Resume Background music.
		if(defaultSounds && userOptions.useSounds){

			if(defaultSounds.backgroundSound){
				createjs.Sound.stop();
				loadSound(defaultSounds.backgroundSound,true,true);
			}
		}


		scene.animation.hider.alpha = 0;
		
		scene.animation['p' + selectedDuckNo].visible = false;
		
		clickCount -=1;
		
		
		//scene.animation.gotoAndStop(0);
		menu.get_allowNewDraw(true);
		if(menu.appOption('groupDraw') && !menu.appOption('customStyle'))
		{
			//console.log("NEXT RAC");
			scene.animation.gotoAndPlay('multi_start');

			scene.animation.continue_app.visible = false;
			runAnimation();

		}
		else
		{
			scene.animation.gotoAndPlay('single_start');
			scene.animation.continue_app.visible = false;
			runAnimation();


		}




	}




	function unmaskAll()
	{


			//stage.removeEventListener("stagemousedown", handleMouseDown);
			//stage.removeEventListener("stagemouseup", handleMouseUp);

			// AUTO REVEAL REST - NEED A TWEEN CIRCLE TO EXPAND FROM MIDDLE


			if (growRing) growRing.removeAllEventListeners();
			var someObj=new createjs.Container();
			growRing=createjs.Tween.get(someObj).wait(50000000);



			if(userOptions.useSounds)
			{

				if(defaultSounds){
					if(defaultSounds.onReveal){
						createjs.Sound.stop();
						loadSound(defaultSounds.onReveal,true,false);
					}else{
						// No reveal sound - just allow press sound to continue
					}
				}else{
					createjs.Sound.stop();
					createjs.Sound.play("snd_" + JSON.parse(userOptions.styleOptions).sound, createjs.Sound.INTERRUPT_EARLY, 0, 0, 0);
				}

			}

			confetti(emoji);


				createjs.Tween.removeTweens(someObj);
						//console.log("REMOVED THE TWEEN");
						scene.animation.continue_app.visible = true;



							// If the user can remove a name/number/photo from the list

							removeAllowed = true;

							if(userOptions.currentScreen === 'names' || userOptions.currentScreen === 'pictures')
							{
								if(holder_array.length <= (userOptions.revealAtOnce+1))
								{
									scene.animation.continue_app.remove_item.remove_opt.gotoAndStop(0);

									removeAllowed = false;

								}
							}
							else if(userOptions.currentScreen === 'numbers')
							{

								if(menu.remainingDrawPosibilities() <= (userOptions.revealAtOnce+1))
								{
									scene.animation.continue_app.remove_item.remove_opt.gotoAndStop(0);
									removeAllowed = false;
								}

							}

							if(!removeAllowed)
							{
								menu.noMoreDraws();
								return false;
							}

							// If its an auto draw... set the timer...

							if(menu.appOption('autoDraw'))
							{

								//console.log("USER VALUE : "+ menu.userOption('autoDraw'));

								autoDrawTween = createjs.Tween.get().wait((menu.userOption('autoDraw') * 1000)+1000).call(function(){

									autoDrawTween.removeEventListener("change",autoDrawWait);

									nextDraw();

									autoDrawTween = createjs.Tween.get().wait(1000).call(function()
									{
										autoDrawTween.removeAllEventListeners();
										autoDrawTween=undefined;
										runAutoAnimation();

									});


								});
								if (autoDrawTween) autoDrawTween.removeEventListener("change",autoDrawWait);
								autoDrawTween.addEventListener("change",autoDrawWait);

							}		
		


	}

	
	
	
	function runAutoAnimation(){
		runAnimation()
		
		


		var tmpTween = createjs.Tween.get().wait(2000).call(function () {
			tmpTween = undefined;

			var simulatedEvent = new createjs.MouseEvent("mousedown");

			// Dispatch the mousedown event on the target
			
			console.log("CLICKING ON NUMBER",calledOutNumbers[0]);
			
			
			scene.animation['p' + calledOutNumbers[0]].dispatchEvent(simulatedEvent);


		});

		
		
		
		
	}



	function runAnimation()
	{

		console.log("RUN ANIMATION");

		var quality = 1;
		isDrawing =undefined;
		drawingCanvas =undefined;
		oldPt =undefined;
		oldMidPt =undefined;
		image =undefined;
		bitmap =undefined;
		maskFilter =undefined;
		text =undefined;
		blur =undefined;
		item = scene.animation.results;
		bnd =undefined;
		growRing =undefined;

		
		if(clickCount === 0){
			
			positionDucks()
			clickCount = 30;
			
		}
		


		if(menu.get_allowNewDraw('check'))
		{

			menu.get_allowNewDraw(false);
	


			//console.log("REVEAL: " + menu.appOption('groupDraw') + ' this: ' + menu.appOption('customStyle'));

			if(defaultSounds){
				if(defaultSounds.onPress && userOptions.useSounds){
					loadSound(defaultSounds.onPress,true,false);
				}
			}


			if(menu.appOption('groupDraw') && !menu.appOption('customStyle')){
				scene.animation.gotoAndStop('multi_reveal');
			}else{
				scene.animation.gotoAndStop('single_reveal');
			}

		}
	}

	function autoDrawWait(e)
	{

		var convertedTime=convertMS(e.target.duration - e.target.position);
		scene.animation.continue_app.greenButton.masker.scaleX = 1 - (e.target.position /  e.target.duration);
		scene.animation.continue_app.show_next_txt.text =convertedTime.hh+":"+convertedTime.mm+":"+convertedTime.ss;

	}



	function loadResult(resultHolder,callback)
	{

		
		//console.log("BINGo: " + menu.get_resultHolder())
		
		

		//loadResult(selectedDuck.basebottom,function(){

		var txtContainer;
		var bounds;
		var txtField;
		var i;
		var name;
		var itm;

		userOptions.drawCount ++;

		var Max;
		var Min = 0;

		var tmpArray 	= [];
		drawnCurArray	= [];

		// Check if the included animation has anything to bring to the code...

		if (typeof scene.additional == 'function') {
			scene.additional();
		}


			resultHolder.numberHolder.visible = false;
			resultHolder.imgHolder.visible = false;
		
		

			if(previousBoxes)
			{

				// If previousBoxes exists - it means remove all old boxes from multi screen first...

				for (i=0;i< previousBoxes.count;i++)
				{
					var child=resultHolder[previousBoxes.holder].getChildByName("t_"+i);
					resultHolder[previousBoxes.holder].removeChild(child);

				}

				previousBoxes = null;
			}

			if(userOptions.revealAtOnce === 0)
			{
				// Reveal 1 name...
				resultHolder[menu.get_resultHolder()].gotoAndStop('single');

			}
			else
			{

				resultHolder[menu.get_resultHolder()].gotoAndStop('multi');

				var pos = resultHolder[menu.get_resultHolder()].multi;
				var bnds = pos.nominalBounds;
				var container={width:(bnds.width * pos.scaleX),height:(bnds.height * pos.scaleY),x:pos.x,y:pos.y};

				bnds =(menu.get_resultHolder() === 'imgHolder')? exportRoot.box_pic.nominalBounds:exportRoot.box_txt.nominalBounds;





				var itemDim = {width:bnds.width,height:bnds.height};
				var itemNumber = parseInt(userOptions.revealAtOnce+1);
				var scale=getBestScale(container,itemDim,itemNumber); //how much to rescale original rectangle
				var coordinates=calcCoordinates(container,itemDim,itemNumber,scale); //get coordinates to iterate within and set on the screen

				//let's generate dummy rectangles
				var instances=[];
				for (i=0;i<coordinates.length;i++)
				{

					var item;

					if(userOptions.currentScreen === 'pictures')
					{
						item = new lib.box_pic();
					}
					else
					{
						item = new lib.box_txt();
					}

					item.name = 't_' + i;
					resultHolder[menu.get_resultHolder()].addChild(item);
					instances.push(item);
				}
				putInPlace(coordinates,instances );

				previousBoxes = {};
				previousBoxes.count	 = itemNumber;
				previousBoxes.holder = menu.get_resultHolder();

			}	
		
		
		
		
			if(menu.appOption('drawResults') || menu.appOption('reverseDraw'))
			{
				resultHolder.numberHolder.award.visible = true;
				resultHolder.imgHolder.award.visible = true;
			}
			else
			{

				resultHolder.numberHolder.award.visible = false;
				resultHolder.imgHolder.award.visible = false;

			}


			resultHolder[menu.get_resultHolder()].visible = true;		


		if(userOptions.currentScreen === 'names' || userOptions.currentScreen === 'pictures'){

			tmpArray = holder_array.slice();


			if(userOptions.revealAtOnce > 0)
			{
				menu.get_statKeeperDisplay('* Group ' + userOptions.drawCount + ':');
			}

			var textCollector=[];
			for(i=0;i <= userOptions.revealAtOnce;i++)
			{

				Max = tmpArray.length-1;

				var result = Math.specialRandom(Number(Min),Number(Max));


				itm	= resultHolder[menu.get_resultHolder()].getChildByName("t_"+i);


				if(userOptions.currentScreen === 'names')
				{

					drawnCurArray.push(tmpArray[result]);
					name = tmpArray[result];
					menu.get_statKeeper(tmpArray[result]);
					menu.get_statKeeperDisplay(tmpArray[result]);
					tmpArray.splice(result, 1);

				}

				if(userOptions.currentScreen === 'pictures')
				{



					var picItm	= resultHolder[menu.get_resultHolder()].getChildByName("t_"+i).imgsize; //.img
					
					var picItm2	= scene.animation.results[menu.get_resultHolder()].getChildByName("t_"+i).imgsize; //.img
					
					//console.log(picItm)
					

					if (typeof tmpArray[result] !== 'undefined'){


						menu.get_statKeeper(tmpArray[result]);
						menu.get_statKeeperDisplay(tmpArray[result]);

						picItm2.getChildByName("sprite").visible = true;
						picItm2.getChildByName("sprite").gotoAndStop(tmpArray[result]);
						
						var bmp = picItm2.getChildByName("sprite").clone();
						
						picItm.removeAllChildren();
						
						
						picItm.addChild(bmp);
						
						name = menu.getPictureName(tmpArray[result]);
						drawnCurArray.push(tmpArray[result]);

					}
					else
					{

						picItm.removeAllChildren();
						name = '';
					}

					tmpArray.splice(result, 1);

				}



				txtField= itm.txt;

				if(name == null)
				{

					txtField.text = '';

				}
				else
				{

					// Make text big..
					txtContainer 		= itm.size;
					bounds = txtContainer.nominalBounds;


					var wheight = txtContainer.y;

					if(userOptions.currentScreen === 'names' && !safari){
						wheight = txtContainer.y+bounds.height/4;
					}


					fitText(txtField,name,500, (bounds.height * txtContainer.scaleY),"center", "hanging",wheight,(bounds.width * txtContainer.scaleX));
					textCollector.push(txtField);

				}

				txtContainer.visible = false;


			}


			//============= This code.

			if (textCollector.length>1)
			{
				var fontSizes=[];
				var fontNames=[];
				for (i=0;i<textCollector.length;i++)
				{
					var match=textCollector[i].font.match(/([0-9]+)px (.*)/im);
					fontSizes.push(parseInt(match[1]));
					fontNames.push(match[2]);
				}
				var minSize=Math.min.apply(null, fontSizes);
				for (i=0;i<textCollector.length;i++)
				{
					txtField=textCollector[i];
					txtField.font=minSize+"px "+fontNames[i];
					txtField.color="black";

					txtField.lineHeight=minSize;
					txtField.lineWidth=null;

					var parentDim=txtField.parent.nominalBounds;
					if (userOptions.currentScreen === 'pictures')
					{
						txtField.textBaseline  = "top";
					}
					else
					{
						txtField.textBaseline  = "middle";
						txtField.y=parentDim.height/2;
					}


				}



			}


			if(userOptions.revealAtOnce > 0)
			{
				menu.get_statKeeperDisplay('---');
			}


		}
		else if(userOptions.currentScreen === 'numbers')
		{

			Min = menu.numberPickerCount().from;
			Max = menu.numberPickerCount().to;

			tmpArray = holder_array.slice();

			if(userOptions.revealAtOnce > 0){
				menu.get_statKeeperDisplay('* Group ' + userOptions.drawCount + ':');
			}

			for(i=0;i <= userOptions.revealAtOnce;i++)
			{

				drawnID = Math.specialRandom(Number(Min),Number(Max),tmpArray);
				tmpArray.push(drawnID);

				name = drawnID + '';


				var picItm	= resultHolder[menu.get_resultHolder()].getChildByName("t_"+i)
					
				var itm	= scene.animation.results[menu.get_resultHolder()].getChildByName("t_"+i)			
				
				
				//itm	= resultHolder[menu.get_resultHolder()].getChildByName("t_"+i);
				
				
				/*
						picItm2.getChildByName("sprite").visible = true;
						picItm2.getChildByName("sprite").gotoAndStop(tmpArray[result]);
						
						var bmp = picItm2.getChildByName("sprite").clone();
						
						picItm.removeAllChildren();
						
						
						picItm.addChild(bmp);				
				
				*/
				
				
				
				
				
				
				txtField		= itm.txt;

				if(name == null || name === 'false')
				{
					txtField.text = '';
				}
				else
				{

					// Make text big..
					txtContainer 		= itm.size;
					bounds = txtContainer.nominalBounds;
					
					var wheight = txtContainer.y;

					if(!safari){
						wheight = txtContainer.y+bounds.height/4;
					}

					fitText(txtField,name,500, (bounds.height * txtContainer.scaleY),"center", "hanging",wheight,(bounds.width * txtContainer.scaleX));
				}
				
				
				
				//picItm2.getChildByName("sprite").visible = true;
				//picItm2.getChildByName("sprite").gotoAndStop(tmpArray[result]);	
				var bmp = itm.getChildByName("sprite").clone();		
				picItm.removeAllChildren();		
				picItm.addChild(bmp);

				menu.get_statKeeper(drawnID);
				menu.get_statKeeperDisplay(drawnID);

			}


			drawnCurArray = tmpArray.slice();

			if(userOptions.revealAtOnce > 0)
			{
				menu.get_statKeeperDisplay('---');
			}

		}

		// Show the awards certificate things...

		if(menu.appOption('drawResults') || menu.appOption('reverseDraw'))
		{

				var num;
				var st;

				if(menu.appOption('drawResults'))
				{

					num = userOptions.drawCount;
					st 	= appendST(userOptions.drawCount,true);

					if(num < 4)
					{
						resultHolder[menu.get_resultHolder()].award.gotoAndStop(num-1);
					}
					else
					{
						resultHolder[menu.get_resultHolder()].award.gotoAndStop(3);
					}

				}

				if(menu.appOption('reverseDraw'))
				{



					num = (userOptions.reverseDrawStart - userOptions.drawCount)+1;    //userOptions.reverseDrawStart - (statKeeper.length-1);

					//console.log("BANG: " + userOptions.reverseDrawStart,num);

					st 	= appendST(num,true);

					if(num > 0){

						if(num < 4)
						{
							resultHolder[menu.get_resultHolder()].award.gotoAndStop(num-1);
						}
						else
						{
							resultHolder[menu.get_resultHolder()].award.gotoAndStop(3);
						}

					}
					else
					{
						resultHolder[menu.get_resultHolder()].award.visible = false;
					}

				}

				resultHolder[menu.get_resultHolder()].award.no.text = num;
				resultHolder[menu.get_resultHolder()].award.st.text = st;

		}
		
		callback();

	}
}
