package {
	import flash.geom.*;
	
	public class textboxclass {
		public function textboxclass():void {
			firstcreate();
		}
		
		public function firstcreate():void {
			//Like clear, only it creates the actual arrays, etc
			for (iter = 0; iter < 10; iter++) {
				var t:String = new String;	t = "";
				line.push(t);
			}
			xp = 0; yp = 0; w = 0; h = 0; numlines = 0; lw = 0; tl = 0; tm = 0; active = false; timer = 0;
			ybuffer = -1; redraw = true;
		}
		
		public function clear():void {
			//Set all values to a default, required for creating a new entity
			for (iter = 0; iter < 12; iter++) {
				line[iter]="";
			}
			textrect = new Rectangle();
			xp = 0; yp = 0; w = 0; h = 0; numlines = 1; lw = 0; tl = 0; tm = 0; active = true; timer = 0;
			ybuffer = -1; redraw = true;
		}
		
		public function centerx():void { resize();	xp = 160 - (w / 2);	resize(); }
		public function centery():void { resize();	yp = 120 - (h / 2); resize();	}
		
		public function adjust():void {
			resize();
			if (xp < 10) xp = 10;
			if (yp < 10) yp = 10;
			if (xp + w > 310) xp = 310 - w;
			if (yp + h > 230) yp = 230 - h;	
			resize();
		}
		
		public function initcol(rr:int, gg:int, bb:int):void {
			tr = rr; tg = gg; tb = bb;
			r = 0; g = 0; b = 0; tl = 0.5;
		}
		
		public function setcol(rr:int, gg:int, bb:int):void {
			r = rr; g = gg; b = bb;
		}
		
		public function update():void {
			if (tm == 0) {
				tl += .1;
				if (tl >= 1) { tl = 1; tm = 1; }
				setcol(int(tr * tl), int(tg * tl), int(tb * tl));
				redraw = true;
			}else if (tm == 2) {
				tl -= .1;
				if (tl <= 0.5) { tl = 0.5; active = false; }
				setcol(int(tr * tl), int(tg * tl), int(tb * tl));
				redraw = true;
			}
			if (timer > 0) {
				timer--;
				if (timer == 0) tm = 2;
			}
		}
		
		public function remove():void {
			//tm = 2; tl = 1; //Remove mode
			tm = 2; tl = 0.4; //Remove mode
		}
		
		public function removefast():void {
			tm = 2; tl = 0.4; //Remove mode
		}
		
		public function resize():void {
			//Set the width and height to the correct sizes
			max = 0;
			for (iter = 0; iter < numlines; iter++) if (line[iter].length > max) max = line[iter].length;
			
			lw = max;
			w = (max +2) * 8;
			h = (numlines + 2) * 8;
			textrect.x = xp; textrect.y = yp;	textrect.width = w;	textrect.height = h;
		}
		
		public function addline(t:String):void {
			line[numlines] = t;
			numlines++;
			resize();
			if (numlines >= 12) numlines = 0;
		}
		
    //Fundamentals
		public var line:Array = new Array;
		public var xp:int, yp:int, lw:int, w:int, h:int, numlines:int;
		public var r:int, g:int, b:int;
		public var tr:int, tg:int, tb:int;
		public var textrect:Rectangle;
		public var active:Boolean;
		public var timer:int;
		
		public var tl:Number, tm:int;
		
		public var iter:int, max:int;
		
		//For android
		public var ybuffer:int;
		public var redraw:Boolean;
	}
}
