


//Animation 
anim_width_gprswelcome = 718;
anim_height_gprswelcome = 259;

anim_elements_gprswelcome = [
															"anims/welcome.jpg background",
															"anims/welcome_strap.png spectext",
															"anims/welcome_wblfe.png wblfe",
															"anims/welcome_sm.png sm",
															"anims/welcome_fa.png fa",
															"anims/welcome_spec.png specin",
															"anims/welcome_truely.png truely"
														];
													
anim_animcode_gprswelcome = [
															"startPreload",	
															"waitPreload",
															"positionElement::background,800,50",
															"positionElement::spectext,-500,0",
															"positionElement::specin,800,100",
															"positionElement::wblfe,800,130",
															"positionElement::sm,800,160",
															"positionElement::fa,800,190",
															"positionElement::truely,800,225",
															"startDrawing",
															"wait::250",
															"slideTo::background,00,0,5,40",
															"wait::1000",
															"slideTo::spectext,30,50,5,40",
															"wait::1000",
															"slideTo::specin,25,120,5,40",
															"wait::200",
															"slideTo::wblfe,23,160,5,40",
															"wait::200",
															"slideTo::sm,23,190,5,40",
															"wait::200",
															"slideTo::fa,23,220,5,40",
															"slideTo::truely,430,225,5,40",
															"waitFor::anim_element_gprswelcome_truely_x == 430",
															"stopDrawing"
															
														];
		
window.onload = spanim;

function spanim() {
	spawnAnim("gprswelcome");
}

function spawnAnim(ani) {
	//document.write("<canvas id=\"animcanvas" + ani + "\" width=\"" + eval("anim_width_" + ani) + "\" height=\"" + eval("anim_height_" + ani) + "\"></canvas>")
	eval("anim_step_" + ani + " = -1");
	eval("anim_preloaded_" + ani + " = 0");
	eval("anim_active_" + ani + " = 1");
	eval("anim_elementcount_" + ani + " = " + eval("anim_elements_" + ani + ".length"));
	eval("anim_element_" + ani + " = new Array()");
	
	for (i=0;i<eval("anim_elementcount_" + ani);i++) {
		elep = eval("anim_elements_" + ani + "[" + i + "]").split(" ");
		eval("anim_element_" + ani + "[" + i + "] = \"" + elep[1] + "\"")
		eval("anim_element_" + ani + "_" + elep[1] + "_src = \"" + elep[0] + "\"")
		eval("anim_element_" + ani + "_" + elep[1] + "_width = 0")
		eval("anim_element_" + ani + "_" + elep[1] + "_height = 0")
		eval("anim_element_" + ani + "_" + elep[1] + "_x = 0")
		eval("anim_element_" + ani + "_" + elep[1] + "_y = 0")
		eval("anim_element_" + ani + "_" + elep[1] + "_opacity = 1")
		
	}
	animStep(ani);
	
}

function animStep(ani) {
	
	eval("anim_step_" + ani + "++")
	cstep = eval("anim_step_" + ani);
	
	if (cstep >= eval("anim_animcode_" + ani + ".length")) {
		animDebug("EOA")
	} else {
		
		cmd = eval("anim_animcode_" + ani + "[" + cstep + "]").split("::")
		switch (cmd[0]) {
			
			case "debug":
			
				alert("Debug!")
				break;
				
			case "waitFor":
				waitFor(cmd[1],ani);
				break;
			
			case "startPreload":
				animDebug("Starting Preload..");
				preloadAnim(ani);
				animStep(ani);
				break;
				
				
			case "waitPreload":
				waitPreload(ani);
				break;
				
				
			case "startDrawing":
				eval("anim_interval_" + ani + " = setInterval('drawAnim(\"" + ani + "\")',20)");
				animStep(ani);
				break;
				
				
			case "stopDrawing":
				eval("clearInterval(anim_interval_" + ani + ")");
				drawAnim(ani);
				animStep(ani);
				break;
				
				
			case "positionElement":
				cmde = cmd[1].split(",");
				eval("anim_element_" + ani + "_" + cmde[0] + "_x = " + cmde[1]);
				eval("anim_element_" + ani + "_" + cmde[0] + "_y = " + cmde[2]);
				animStep(ani);
				break;
			
			
			case "glideTo":
				cmde = cmd[1].split(",");
				cx = eval("anim_element_" + ani + "_" + cmde[0] + "_x");
				cy = eval("anim_element_" + ani + "_" + cmde[0] + "_y");
				tx = cmde[1];
				ty = cmde[2];
				dx = (cx - tx) / cmde[3]
				dy = (cy - ty) / cmde[3]
				for (x=0;x<cmde[3];x++) {
					setTimeout("anim_element_" + ani + "_" + cmde[0] + "_x -= " + dx,cmde[4]*x);
					setTimeout("anim_element_" + ani + "_" + cmde[0] + "_y -= " + dy,cmde[4]*x);
				}
				animStep(ani);
				break;
				
				
			case "slideTo":
				cmde = cmd[1].split(",");
				elementSlide(ani,cmde[0],cmde[1],cmde[2],cmde[3]);
				animStep(ani);
				break;
				
				
			case "wait":
				setTimeout('animStep("' + ani + '")',cmd[1]);
				break;
				
			
			default: 
				animDebug("Unknown Commmand: " + eval("anim_animcode_" + ani + "[" + cstep + "]").split("::")[0]);
				animStep(ani);
				
		}
		
	}
	
}

function waitFor(cond,ani) {
	if (eval(cond)) {
		animStep(ani);
	} else {
		setTimeout("waitFor('" + cond + "','" + ani + "')",100);
	}
}

function elementSlide(ani,ele,tx,ty,s) {
	cx = eval("anim_element_" + ani + "_" + ele + "_x");
	cy = eval("anim_element_" + ani + "_" + ele + "_y");
	dx = cx - tx
	dy = cy - ty
	
	if (Math.abs(dx) > 0.2 || Math.abs(dy) > 0.2) {
		eval("anim_element_" + ani + "_" + ele + "_x -= " + dx/20);
		eval("anim_element_" + ani + "_" + ele + "_y -= " + dy/20);
		setTimeout('elementSlide("' + ani + '","' + ele + '",'+tx+','+ty+','+s+')',s);
	} else {
		eval("anim_element_" + ani + "_" + ele + "_x = " + tx);
		eval("anim_element_" + ani + "_" + ele + "_y = " + ty);
	}
	
}
function preloadAnim(ani) {
	for (i=0;i<eval("anim_element_" + ani + ".length");i++) {
		ename = eval("anim_element_" + ani + "[" + i + "]");
		eval("anim_element_" + ani + "_" + ename + "_img = new Image()")
		eval("anim_element_" + ani + "_" + ename + "_img.src = \"" + eval("anim_element_" + ani + "_" + ename + "_src") + "\"")
		//alert('x')
	}
}

function waitPreload(ani) {

	canve = document.getElementById("animcanvas" + ani);
	canv = canve.getContext('2d');
	canv.strokeStyle = "#9D2420";
	canv.fillStyle = "#9D2420";
	
	timg = eval("anim_element_" + ani + ".length")
	tload = 0;
	
	for (i=0;i<timg;i++) { 
		ename = eval("anim_element_" + ani + "[" + i + "]");
		if (eval("anim_element_" + ani + "_" + ename + "_img.complete")) {
			eval("anim_element_" + ani + "_" + ename + "_width = anim_element_" + ani + "_" + ename + "_img.width")
			eval("anim_element_" + ani + "_" + ename + "_height = anim_element_" + ani + "_" + ename + "_img.height")
			tload++;
		}
	}
	
	canv.clearRect(0,0,canve.width,canve.height);
	canv.strokeRect((canve.width / 2) - 100,(canve.height / 2) - 12.5,200,25);
	canv.fillRect((canve.width / 2) - 100,(canve.height / 2) - 12.5,((tload*100)/timg)*2,25);
	//canv.fillText("Loading (" + Math.round((tload*100)/timg) + "%)", (canve.width / 2) - 35,  30);  
	
	if (tload < timg) {
		setTimeout('waitPreload("' + ani + '")',50);
	} else {
		canv.clearRect(0,0,canve.width,canve.height);
		animStep(ani);
	}
}


function drawAnim(ani) {
	canv = document.getElementById("animcanvas" + ani).getContext('2d');
	canv.clearRect(0,0,canve.width,canve.height);

	for (i=0;i<eval("anim_element_" + ani + ".length");i++) {
		iname = eval("anim_element_" + ani + "[" + i + "]")
		ix = eval("anim_element_" + ani + "_" + iname + "_x")
		iy = eval("anim_element_" + ani + "_" + iname + "_y")
		iw = eval("anim_element_" + ani + "_" + iname + "_width")
		ih = eval("anim_element_" + ani + "_" + iname + "_height")
		canv.drawImage(eval("anim_element_" + ani + "_" + iname + "_img"),ix,iy,iw,ih);
		//alert(eval("anim_element_" + ani + "[" +i + "]"))
	}
}
	
	
	
function animDebug(t) {
	//alert(t);
	//document.getElementById("animdebug").innerHTML = t + "<br />" + document.getElementById("animdebug").innerHTML
}