var $j = jQuery.noConflict();



newjax.gravity = function() {


	return {


		title: 'gravity',
		selected: 0,
		velocity: 0,
		top: 0,
		left: 0,
		rtg: 0,
		ground: 300,
		direction:	0,
		cycle: 0,
		height: 0,
		
		ceiling: 0,
		ceiling_set: 0,
		score: 0,
		distance: 0,
		points: 0,
		
		max_speed: 150,
		
		ball_speed_y: 0,
		lball_y: 0,
		ball_y: 0,
		
		debugging: 0,
		
		
		colided:'',
		
		
		terminal: 0,
		x: 0,
		acceleration: 0.1,
		
		
		
		speed: {
			x: 0,
			y: 0
		},
		
		
		ball_speed: {
			x: 0,
			y: 0
		},
		
		
		weight: 2,
		friction: 0.0001,
		
		
		hoop_front: {
			
			x: 0,
			x2: 0,
			y: 0,
			y2:0,
			
			w: 0,
			h: 0
		},
		
		
		hoop_back: {
			x: 0,
			y: 0
		},
		
		
		lmouse: {
			x: 0,
			y: 0
		},
		
		
		mouse: {
			x: 0,
			y: 0	
		},
		
		
		lball: {
			x: 0,
			x2: 0,
			y: 0,
			y2: 0
		},
		
		
		ball: {
			x: 0,
			x2: 0,
			y: 0,
			y2: 0
		},
		
		
		shadow: {
			x: 0,
			y: 0
		},
		
		
		size: {
			w: 0,
			h: 0
		},
		
		
		edge: {
			l: 0,
			r: 0
			
		},


		
		
		
		colide: function() {
			
			//return;



				/*
				
				* 
				* 
				* 
				* 
				* 
				* 
				* 	newjax.gravity.ball.x < newjax.gravity.hoop_front.x2 
			&& newjax.gravity.hoop_front.x < newjax.gravity.ball.x2
			) && (
			newjax.gravity.ball.y < newjax.gravity.hoop_front.y2 
			&& newjax.gravity.hoop_front.y < newjax.gravity.ball.y2
				* 
				* 
				*/
				
				
				
				
			
			if ((
		newjax.gravity.ball.y+100 > newjax.gravity.hoop_front.y 
				&& newjax.gravity.ball.y < newjax.gravity.hoop_front.y+20
				
				&& newjax.gravity.ball.x+100 > newjax.gravity.hoop_front.x 
				&& newjax.gravity.ball.x < newjax.gravity.hoop_front.x+10
			)) {
				
					if (this.ball_speed()) this.hoop(0.335);
					newjax.gravity.colided = 'f';
					return 1;
	
			}
			
			
			
			
			
				/*
			
				* 
				* 
				* 
				* 
				* 
				* 
				* 
				* 
				* newjax.gravity.ball.x < newjax.gravity.hoop_back.x2 
			&& newjax.gravity.hoop_back.x < newjax.gravity.ball.x2
			) && (
			newjax.gravity.ball.y < newjax.gravity.hoop_back.y2 
			&& newjax.gravity.hoop_back.y < newjax.gravity.ball.y2
				* 
				* 
				*/
			
			
			
			
			if ((
				newjax.gravity.ball.y+100 > newjax.gravity.hoop_back.y 
				&& newjax.gravity.ball.y < newjax.gravity.hoop_back.y+20
				
				&& newjax.gravity.ball.x+100 > newjax.gravity.hoop_back.x 
				&& newjax.gravity.ball.x < newjax.gravity.hoop_back.x+10
			)) {
				
					if (this.ball_speed()) this.hoop(0.335);
					newjax.gravity.colided = 'b';
					return 1;

	
			}
			

			
	
		},
		
		
		ball_speed: function() {
		
				if (this.ball_speed.x > 5) return 1;
				if (this.ball_speed.y > 5) return 1;

		},


		hoop: function(height) {


			if (!height) {
				
				height = 0.33;


				if ($j('#hoop_back').width()) return;
				if ($j('#hoop_front').width()) return;


				$j('body').append('<div id="hoop2" class="hoop"></div>');
				$j('body').append('<div id="hoop3" class="hoop2"></div>');
				$j('body').append('<div id="hoop_back" class="trigger"></div>');
				$j('body').append('<div id="hoop_front" class="trigger"></div>');
				
				$j('body').append('<div id="score"></div>');
			
			
			}

			
			$j('#hoop2').css('top', Math.ceil(newjax.gravity.ground * height));
			$j('#hoop3').css('top', Math.ceil(newjax.gravity.ground * height));
			
			
			$j('#score').css('top', Math.ceil(newjax.gravity.ground * height) + 200);
			$j('#score').css('left', 40);

			
			//HOOP BACK
			$j('#hoop_back').css('top', Math.ceil(newjax.gravity.ground * height) + 35);
			$j('#hoop_back').css('left', 40);
			
			newjax.gravity.hoop_back.x = parseInt($j('#hoop_back').css('left'));
			newjax.gravity.hoop_back.y = parseInt($j('#hoop_back').css('top'));
		
			newjax.gravity.hoop_back.w = parseInt($j('#hoop_back').width());
			newjax.gravity.hoop_back.h = parseInt($j('#hoop_back').height());
		
			newjax.gravity.hoop_back.x2 = newjax.gravity.hoop_back.x + newjax.gravity.hoop_back.w;
			newjax.gravity.hoop_back.y2 = newjax.gravity.hoop_back.y + newjax.gravity.hoop_back.h;


			//HOOP FRONT		
			$j('#hoop_front').css('top', Math.ceil(newjax.gravity.ground * height + 35));
			$j('#hoop_front').css('left', 145+40);
		
			newjax.gravity.hoop_front.x = parseInt($j('#hoop_front').css('left'));
			newjax.gravity.hoop_front.y = parseInt($j('#hoop_front').css('top'));

			newjax.gravity.hoop_front.w = parseInt($j('#hoop_front').width());
			newjax.gravity.hoop_front.h = parseInt($j('#hoop_front').height());

			newjax.gravity.hoop_front.x2 = newjax.gravity.hoop_front.x + newjax.gravity.hoop_front.w;
			newjax.gravity.hoop_front.y2 = newjax.gravity.hoop_front.y + newjax.gravity.hoop_front.h;



			if (height != 0.33) 
				setTimeout("newjax.gravity.hoop(0.33)", 100);


		},
		

		trap: function() {


			if (!newjax.gravity.selected) return;


			newjax.gravity.speed.x = newjax.gravity.lmouse.x - newjax.gravity.mouse.x;
			newjax.gravity.speed.y = newjax.gravity.lmouse.y - newjax.gravity.mouse.y;


			setTimeout("newjax.gravity.trap();", 50);


			newjax.gravity.lmouse.x = newjax.gravity.mouse.x;
			newjax.gravity.lmouse.y = newjax.gravity.mouse.y;


		},
		
		
		trap_ball: function() {


			newjax.gravity.ball_speed.x = Math.abs(newjax.gravity.lball.x - newjax.gravity.ball.x);
			newjax.gravity.ball_speed.y = Math.abs(newjax.gravity.lball.y - newjax.gravity.ball.y);


			setTimeout("newjax.gravity.trap_ball();", 10);
			

			newjax.gravity.lball.x = Math.abs(newjax.gravity.ball.x);
			newjax.gravity.lball.y = Math.abs(newjax.gravity.ball.y);


		},
		
		
		trap_ball_y: function() {


			newjax.gravity.ball_speed_y = newjax.gravity.lball_y - newjax.gravity.ball.y;
			
			setTimeout("newjax.gravity.trap_ball_y();", 10);
			
			newjax.gravity.lball_y = newjax.gravity.ball.y;


		},


		hoop_drop: function() {
	

			if (!newjax.gravity.colide()) return;


			//Y
			if (newjax.gravity.direction) { 
			
				newjax.gravity.direction = 0;
			
			} else {
				
				newjax.gravity.direction = 1;		


				var h = Math.ceil((newjax.gravity.hoop_back.y - 100) - newjax.gravity.height) / newjax.gravity.weight;


				if (h < 1) {

					var g = Math.ceil((newjax.gravity.ground - newjax.gravity.hoop_back.y) / newjax.gravity.weight);


					if ((newjax.gravity.height + g) >= newjax.gravity.ground) 
						newjax.gravity.height = newjax.gravity.hoop_back.y;
						
					
					newjax.gravity.height += g;
					
				} else {
					
					newjax.gravity.height += h;

				}

			}


		},


		hoop_edge: function() {
			
	
				if (!newjax.gravity.colide()) return;

				
				if (newjax.gravity.ball_speed.y > newjax.gravity.ball_speed.x) 
					var s = newjax.gravity.ball_speed.y / newjax.gravity.acceleration;
				else
					var s = newjax.gravity.ball_speed.x / newjax.gravity.acceleration;
				

				if (newjax.gravity.colided == 'b') {
			
					if (newjax.gravity.ball.x+50 > newjax.gravity.hoop_back.x+5) {
						//alert('->');
						newjax.gravity.speed.x = -s;
						return;
					}

				}
				
				
				if (newjax.gravity.colided == 'f') {

					if (newjax.gravity.ball.x+50 > newjax.gravity.hoop_front.x+5) {
						//alert('>');
						newjax.gravity.speed.x = -s;
						return;
						
					} else {
						//alert('<');
						newjax.gravity.speed.x = s;
						return;
					}	
	
				}
	
		},


		screen_edge: function() {
			

			//RIGHT EDGE
			if (newjax.gravity.ball.x >= newjax.gravity.edge.r) {
				
				newjax.gravity.speed.x = Math.abs(newjax.gravity.speed.x);
				return;
				
			}
			
			
			//LEFT EDGE
			if (newjax.gravity.ball.x <= newjax.gravity.edge.l) {

				newjax.gravity.speed.x = -Math.abs(newjax.gravity.speed.x);
				return;
					
			}	

			
		},


		thro: function() {


			if (newjax.gravity.height >= newjax.gravity.ground) return;
			if (newjax.gravity.selected) return;


			if (newjax.gravity.speed.x > newjax.gravity.max_speed) 
				newjax.gravity.speed.x = newjax.gravity.max_speed;
			
			if (newjax.gravity.speed.y > newjax.gravity.max_speed) 
				newjax.gravity.speed.y = newjax.gravity.max_speed;
			
			
			newjax.gravity.screen_edge();
			newjax.gravity.hoop_edge();


			newjax.gravity.ball.x -= Math.ceil(newjax.gravity.speed.x * newjax.gravity.acceleration);
			

			newjax.gravity.position();
			setTimeout("newjax.gravity.thro();", 1);


		},
		
		
		drop: function() {
		
	
			if (newjax.gravity.selected) return;
			if (newjax.gravity.height >= newjax.gravity.ground) return;


			if (newjax.gravity.speed.x > newjax.gravity.max_speed)
				newjax.gravity.speed.x = newjax.gravity.max_speed;
			
			if (newjax.gravity.speed.y > newjax.gravity.max_speed)
				newjax.gravity.speed.y = newjax.gravity.max_speed;
				
						
			newjax.gravity.hoop_drop();
			

			//UP
			if (newjax.gravity.direction) {	

				newjax.gravity.velocity -= newjax.gravity.acceleration;
				newjax.gravity.ball.y -= Math.ceil(newjax.gravity.velocity - (newjax.gravity.speed.y * newjax.gravity.acceleration));
				
			//DOWN
			} else {

				newjax.gravity.velocity += newjax.gravity.acceleration;
				newjax.gravity.ball.y += Math.ceil(newjax.gravity.velocity - (newjax.gravity.speed.y * newjax.gravity.acceleration));
				
			}


			//SET HEIGHT TO CEILING WHEN THROWING UP
			if (newjax.gravity.ceiling > newjax.gravity.ball.y) {
			
				newjax.gravity.ceiling = newjax.gravity.ball.y;
				newjax.gravity.height = newjax.gravity.ceiling;	
	
			}
			

			//newjax.gravity.ceiling_set = 0;
			//if (!newjax.gravity.ceiling_set) {
				
				//SET HEIGHT TO CEILING WHEN THROWING DOWN
								
				//if (newjax.gravity.speed.y < 0) {
				
					//newjax.gravity.ceiling += Math.ceil(newjax.gravity.speed.y * 1);
					//newjax.gravity.height = newjax.gravity.ceiling;	
					
					//newjax.gravity.ceiling_set = 1;
					
				//}
				
			//}


			//PULL DOWN
			if (newjax.gravity.ball.y < newjax.gravity.height) newjax.gravity.direction = 0;


			//PUSH UP
			if (newjax.gravity.ball.y > newjax.gravity.ground) {

				newjax.gravity.direction = 1;
				newjax.gravity.ball.y = newjax.gravity.ground;
				newjax.gravity.height += Math.ceil((newjax.gravity.ground - newjax.gravity.height) / newjax.gravity.weight);

			}
			
			
			newjax.gravity.position();
			setTimeout("newjax.gravity.drop();", 1);
			
		
		},
		
		
		position:function() {
				

				newjax.gravity.ball.y2 = newjax.gravity.ball.y + newjax.gravity.size.h;
				newjax.gravity.ball.x2 = newjax.gravity.ball.x + newjax.gravity.size.w;
				

				//MIRROR GROUND
				newjax.gravity.rtg = newjax.gravity.ground - newjax.gravity.ball.y;
				
				
				//POSITION SHADOW
				newjax.gravity.shadow.y = newjax.gravity.ground + newjax.gravity.rtg;
				newjax.gravity.shadow.x = newjax.gravity.ball.x;
				

				//BALL
				$j('#ball').css('top', newjax.gravity.ball.y);
				$j('#ball').css('left', newjax.gravity.ball.x);


				//SHADOW
				$j('#shadow').css('top', newjax.gravity.shadow.y);
				$j('#shadow').css('left', newjax.gravity.shadow.x);
				
				
				
				newjax.gravity.tally();

		},
		
		
		tally: function() {
			
			
				if (newjax.gravity.selected) return;
				if (newjax.gravity.scored) return;
				if (newjax.gravity.ball_speed_y > 0) return;

				
				
				
				if (
					newjax.gravity.ball.x+100 < newjax.gravity.hoop_front.x 
					&& newjax.gravity.ball.x > newjax.gravity.hoop_back.x+10
					 
					&& newjax.gravity.ball.y > newjax.gravity.hoop_back.y
					&& newjax.gravity.ball.y < newjax.gravity.hoop_back.y+20
				) {
					
					var h = '';
					newjax.gravity.scored = 1;
					newjax.gravity.score += 1;
					newjax.gravity.points += Math.abs(newjax.gravity.distance);


					h += 'Score: '+newjax.gravity.score+'<br />';
					h += 'Points: '+newjax.gravity.points+'';


					$j('#score').addClass('score');
					$j('#score').html(h);
					
					
					
					

					$j.ajax({
						url: "index.php",
						type: "POST",
						data: ({ 'newjax_action': 'tally', 'type': 'overall', 'points': newjax.gravity.distance, 'score': newjax.gravity.score }),
						success: function(msg){
							//alert(msg);
						}
					});
					
					
					
					if (newjax.gravity.score >= 10) {
					
						//return;
						
						
						
								$j.ajax({
									url: "index.php",
									type: "POST",
									data: ({ 
										'newjax_action': 'tally', 
										'type': 'ten',
										'points': newjax.gravity.points,
										'score': newjax.gravity.score,
										'name:': $j('#name').val(),
										'comments': $j('#comments').val()
									}),
									success: function(msg){

										$j('#message').html(msg);
										$j('.my_overlay').removeClass('hide');

									}
								});
						
						
						
						
						
						
						
						
	
						
						
						
						
					
					
					}
				
				}

			
		},


		colide2: function() {


				if (
				newjax.gravity.ball.y+100 > newjax.gravity.hoop_front.y 
				&& newjax.gravity.ball.y < newjax.gravity.hoop_front.y+20
				
				&& newjax.gravity.ball.x+100 > newjax.gravity.hoop_front.x 
				&& newjax.gravity.ball.x < newjax.gravity.hoop_front.x+10

				) return 'f';
				
				
				if (
				newjax.gravity.ball.y+100 > newjax.gravity.hoop_back.y 
				&& newjax.gravity.ball.y < newjax.gravity.hoop_back.y+20
				
				&& newjax.gravity.ball.x+100 > newjax.gravity.hoop_back.x 
				&& newjax.gravity.ball.x < newjax.gravity.hoop_back.x+10

				) return 'b';
		
		
		},


		move: function() {


				if (!newjax.gravity.selected) return;
				
				
				//SET POSITION	
				newjax.gravity.ball.y = newjax.gravity.mouse.y - newjax.gravity.size.h / 2;
				newjax.gravity.ball.x = newjax.gravity.mouse.x - newjax.gravity.size.w / 2;


				var c = newjax.gravity.colide2();
				
				
				if (c) {
					
					if (this.ball_speed()) this.hoop(0.335);

					if (newjax.gravity.mouse.y < newjax.gravity.hoop_back.y)
						newjax.gravity.ball.y = newjax.gravity.hoop_back.y - 100;
						
					else newjax.gravity.ball.y = newjax.gravity.hoop_back.y + 20;

				}
				
				
				
				
				
			
				
				


				//STOP AT GROUND
				if (newjax.gravity.ball.y >= newjax.gravity.ground)
					newjax.gravity.ball.y = newjax.gravity.ground;


				//STOP AT RIGHT EDGE
				if (newjax.gravity.ball.x > newjax.gravity.edge.r)
					newjax.gravity.ball.x = newjax.gravity.edge.r;


				//STOP AT LEFT EDGE
				if (newjax.gravity.ball.x < newjax.gravity.edge.l)
					newjax.gravity.ball.x = newjax.gravity.edge.l;


				//POSITION TO MOUSE
				newjax.gravity.position();		


		},
		

		edit_tally: function() {
		
			$j.ajax({
				url: "index.php",
				type: "POST",
				data: ({ 
					'newjax_action': 'edit_tally',
					'name': $j('#name').val(),
					'comments': $j('#comments').val()
				}),
				success: function(msg){

					$j('#message').html(msg);

				}
			});
			
		},

		
		debug: function() {
			
			
				//LOG
				var m = '';
				
				m += 'points: ' + newjax.gravity.points+'<br />';
				m += 'score: ' + newjax.gravity.score+'<br />';
				m += 'distance: ' + newjax.gravity.distance+'<br />';
				
				m += 'ball speed y: ' + newjax.gravity.ball_speed_y + '<br />';
		
				m += 'hoop front: ' + newjax.gravity.hoop_front.x + ', ' + newjax.gravity.hoop_front.y+'<br />';
				m += 'hoop back: ' + newjax.gravity.hoop_back.x + ', ' + newjax.gravity.hoop_back.y+'<br />';
		
		
				m += 'mouse position: ' + newjax.gravity.mouse.x + ', ' + newjax.gravity.mouse.y+'<br />';
				m += 'shadow position: ' + newjax.gravity.shadow.x + ', ' + newjax.gravity.shadow.y+'<br />';
				
				
				m += 'ball position: ' + newjax.gravity.ball.x + ', ' + newjax.gravity.ball.y+'<br />';
				m += 'ball speed: ' + newjax.gravity.ball_speed.x + ', ' + newjax.gravity.ball_speed.y+'<br />';
				
				
				m += 'offset position: ' + (newjax.gravity.offset.left) + ', ' + (newjax.gravity.offset.top)+'<br />';
				m += 'selected: ' + newjax.gravity.selected+'<br />';
				m += 'ground: ' + newjax.gravity.ground+'<br />';
				m += 'rtg: ' + newjax.gravity.rtg+'<br />';
				m += 'velocity: ' + newjax.gravity.velocity+'<br />';
			
				m += 'ceiling: ' + newjax.gravity.ceiling+'<br />';
				m += 'height: ' + newjax.gravity.height+'<br />';
				
				m += 'direction: ' + newjax.gravity.direction+'<br />';
				m += 'terminal: ' + newjax.gravity.terminal+'<br />';
				m += 'speed: ' + newjax.gravity.speed.x +' : '+ newjax.gravity.speed.y + '<br />';
				
				
				m += 'page width: ' + (newjax.gravity.pw - newjax.gravity.size.w - newjax.gravity.offset.left) +' g:'+newjax.gravity.ground+'<br />';
				m += 'edge: ' + newjax.gravity.edge.l+' : '+newjax.gravity.edge.r+'<br />';



				$j('#log').html(m);
				
				
				setTimeout("newjax.gravity.debug();", 100);


		}


	} //return


}();





$j(document).ready(function() {


	/* GET SCREEN SIZE */
	newjax.gravity.pw = $j(document).width();
	newjax.gravity.ph = $j(document).height();


	/* SET GROUND */
	newjax.gravity.ground = Math.ceil(newjax.gravity.ph - newjax.gravity.ph / 4);


	//GET OFFSET
	newjax.gravity.offset = $j('#ball').offset();
	
	
	//GET SIZE
	newjax.gravity.size.w = $j('#ball').width();
	newjax.gravity.size.h = $j('#ball').height();


	//SET EDGE
	newjax.gravity.edge.r = newjax.gravity.pw - newjax.gravity.size.w;
	newjax.gravity.edge.l = 0;
	
	
	newjax.gravity.trap_ball();
	newjax.gravity.trap_ball_y();
	
	
	if (newjax.gravity.debugging) newjax.gravity.debug();


	//HANDLE MOUSE
	$j(document).mouseup(function(event) {

		if (!newjax.gravity.selected) return;

		event.preventDefault();
		
		newjax.gravity.selected = 0;
		newjax.gravity.velocity = 0;
		newjax.gravity.direction = 0;
		newjax.gravity.scored = 0;

		newjax.gravity.height = newjax.gravity.top;
		newjax.gravity.ceiling = newjax.gravity.top;

		newjax.gravity.drop();
		newjax.gravity.thro();
		
		
		newjax.gravity.distance = newjax.gravity.ball.x - (newjax.gravity.hoop_back.x + 10);
		
		

	});


	$j('#ball').mousedown(function(event) {

		event.preventDefault();
		
		newjax.gravity.selected = 1;

		newjax.gravity.trap();
		newjax.gravity.hoop();
		
	});



	//HANDLE MOUSE
 	$j(document).mousemove(function(event) {

		event.preventDefault();

		//GET BALL POSITION
		newjax.gravity.top = parseInt($j('#ball').css('top'));
		newjax.gravity.left = parseInt($j('#ball').css('left'));
		
		//GET MOUSE POSITION
		newjax.gravity.mouse.y = event.pageY;
		newjax.gravity.mouse.x = event.pageX;	

		//MOVE BALL
		newjax.gravity.move();

	});
	
	
	$j('#save').click(function(event) {

			location.href = 'http://7r4c3.net/home/';
				
	});
	

	$j('#name').blur(function(event) {
		//newjax.gravity.edit_tally();
	});


	$j('#comments').blur(function(event) {
		//newjax.gravity.edit_tally();
	});


				
});


		
/*
function DHTMLSound(surl) {
	
  $j("#dummyspan").html("<embed src='"+surl+"' hidden=true autostart=true loop=false>");
	
}
*/











