/* 404Pong by Benedict Burckhart DCN GmbH */
var field_w = 500;
var field_h = 300;
var top = 167;
var left = 171;
var speed_x = -4;
var speed_y = 1;
var player_pt = 0;
var server_pt = 0;
var difficulty = 1.5;
var server;
var player;
var playerImg;

jQuery(document).ready(function(){
	//Create Paper
	paper = Raphael("playfield",field_w+236,field_h+200);
	scorepaper = Raphael("score",550,148);
	jQuery(scorepaper).css("position","absolute");
	jQuery(scorepaper).css("z-index","2");
	
	field = paper.rect(100,100,field_w,field_h);
	field.attr("fill","90-#000000-#171616-#000000");
	
	var middle = paper.rect((field_w/2)+100,110,(field_w/100),field_h-20);
	middle.attr("fill","#ffffff");
	
	player = paper.rect(100,field_h/2-field_h/8+100,(field_w/30),(field_h/4));
	player.attr("fill","#ff7800");
	playerImg = paper.image("images/player.png", 0,field_h/2-field_h/8+100,100,118);
	//server = paper.rect(field_w-field_w/30,field_h/2-field_h/8,(field_w/30),(field_h/4));
	server = paper.image("images/robot.png", field_w-field_w/30+100,field_h/2-field_h/8+100,136,139);
	//server.attr("fill","#ff7800");
	
	playerPkt = scorepaper.text(137,82,"0");
	playerPkt.attr({
		"fill":"#000000",
		"font-size": "18pt"
		});
	
	serverPkt = scorepaper.text(373,82,"0");
	serverPkt.attr({
		"fill":"#000000",
		"font-size": "18pt"
		});
	
	//Initialize mouse
	 field.mousemove(function(e){
	 	//Ie koordinaten
	 	if(e.pageY == undefined)
			var koords = e.clientY-top+(field_h/8);
		else
			var koords = e.pageY-top-(field_h/8);
			
		 //collision
		 if (koords > 100 && koords + (field_h / 4) < field_h + 100) {
		 	player.attr("y", koords);
			playerImg.attr("y",koords);
		 }
	   }); 
	 
	 //Initialize ball
	 ball= paper.circle(field_w/2+100,field_h/2+100,field_h/32)
	 ball.attr("fill","#ffffff");

	 setTimeout("mainLoop()",10);
});

function newRound(winner)
{
	ball.attr("cx", field_w/2+100);
	ball.attr("cy", field_h/2+100);
	if(winner == server)
	{
		speed_x = -4;
		server_pt++;
		serverPkt.attr("text",server_pt)
		if(server_pt == 1337 && server_pt > player_pt)
		{
			var meep = String.fromCharCode(101,115,115,101,114,112,110,101,103,110,97,114,79,32,114,101,116,115,97,109,112,101,101,77,32,121,98,32,100,101,100,111,99,32,109,97,39,73,32,10,32,117,32,52,32,55,51,51,49,32,50,32,10,32,80,69,69,77,32,80,69,69,77);
			alert(meep.split("").reverse().join(""));
		}
	}
	else if(winner == player)
	{
		speed_x = 4;
		difficulty += 0.5;
		eyeFlash();
		player_pt++;
		playerPkt.attr("text",player_pt)
	}
}

function eyeReset()
{
	server.attr("src","images/robot.png");
}

function eyeFlash()
{

	server.attr("src","images/robot_flash.png");
	setTimeout("eyeReset()",500);
}

function mainLoop()
{
	//calculate x direction
	if(speed_x < 0)
	{
		if(!(( ball.attr("cx")-speed_x) >= field_w-(field_w/30)+100 &&
				   ball.attr("cy")+ball.attr("r") >= server.attr("y") &&
				   ball.attr("cy")-ball.attr("r") < (server.attr("y")+(field_h/4))
			))
		{
			if(ball.attr("cx")-speed_x > (field_w)+100)
			{
				newRound(player);
			}
			else
			{
				ball.attr("cx",ball.attr("cx")-speed_x);
			}
		}
		else
		{
			speed_x *= -1;
		}
	}
	else if (speed_x > 0)
	{
		if(!(( ball.attr("cx")+speed_x) <= (field_w/30)+ball.attr("r")+100 &&
			   ball.attr("cy")+ball.attr("r") >= player.attr("y") &&
			   ball.attr("cy")-ball.attr("r") < (player.attr("y")+(field_h/4))
		))
		{
			if(ball.attr("cx")+speed_x < (field_w/30)+100)
			{
				newRound(server);
			}
			else
			{
				ball.attr("cx",ball.attr("cx")-speed_x);
			}
		}
		else
		{
			speed_x *= -1;
		}
	}
	
	//calculate y direction
	if(speed_y < 0)
	{
		if(!((ball.attr("cy")-speed_y+ball.attr("r")) >= (field_h)+100))
			ball.attr("cy",ball.attr("cy")-speed_y);
		else
			speed_y *= -1;
	}
	else if (speed_y > 0)
	{
		if(!(( ball.attr("cy")+speed_y-ball.attr("r")) <= 100))
			ball.attr("cy",ball.attr("cy")-speed_y);
		else
			speed_y *= -1;
	}
	
	//calculate server
	if(ball.attr("cx") > field_w/2+100)
	{
		if(ball.attr("cy") > server.attr("y")+(field_h/8))
		{
			if(ball.attr("cy") - (server.attr("y")+(field_h/8)) < difficulty)
				var t_difficulty = ball.attr("cy")-(server.attr("y")+(field_h/8));
			else
				var t_difficulty = difficulty;
			
			server.attr("y",server.attr("y")+t_difficulty);
		}
		else if(ball.attr("cy") < (server.attr("y")+(field_h/8)))
		{
			if((server.attr("y")+(field_h/4)) - ball.attr("cy") < difficulty)
				var t_difficulty = (server.attr("y")+(field_h/8)) - ball.attr("cy");
			else
				var t_difficulty = difficulty;
			
			server.attr("y",server.attr("y")-t_difficulty);
		}
	}
	else
	{
		if(server.attr("y")+(field_h/8) < (field_h/2+100))
		{
			if((field_h/2+100) - server.attr("y")+(field_h/8) < difficulty)
				var t_difficulty = (field_h/2+100) - server.attr("y")+(field_h/8);
			else
				var t_difficulty = difficulty;
		
			server.attr("y",server.attr("y")+t_difficulty);
		}
		else if(server.attr("y")+(field_h/8) > (field_h/2+100))
		{
			if(server.attr("y")+(field_h/8) - (field_h/2+100) < difficulty)
				var t_difficulty = server.attr("y")+(field_h/8) - (field_h/2+100);
			else
				var t_difficulty = difficulty;
			server.attr("y",server.attr("y")-t_difficulty);
		}
	}
	
	//increase speed
	if(speed_x < 0)
		speed_x -= 0.005;
	else if(speed_x > 0)
		speed_x += 0.005;
	
	setTimeout("mainLoop()",10);
}

























