$(document).ready(function(){
	basket=new GameBasket();
	basket.hide();
	game=new Game();
	game.init();
	
});

function Game(){
	this.ball=1;
	this.totalGameCost=0;
	this.gameContentWidth=0;
	this.gameContentWidth=0;
	this.costBall=0;
}

Game.prototype.init=function(){
	$.post('gameplay.php','screen=intro',game.displayScreen,"json");
}

Game.prototype.displayScreen=function(data,status){
	if (status=='success'){
		if (data['call'] =='gameScreen'){
			game.displayGameScreen(data);
		}else if (data['call'] =='introScreen'){
			game.displayIntroScreen(data);
		}
	}else{
		$('#gameContent').html('<h1>error</h1>');
	}
}

Game.prototype.displayIntroScreen=function(data){
	var htmlCode;
	var contentInnerRatio=90;
	var contentInnerLeftMargin=(100-contentInnerRatio)/2;
	var gameBackgroundImage='url('+data['gameBackgroundImage']+')';

	// style gameContent block
	$('#gameContent').css({'background-image' : gameBackgroundImage});

	// style gameSlide
	//var gameSlideLeftMargin=((data['gameBackgroundWidth']*contentInnerRatio/100)-data['gameSlideWidth'])/2;
	
	/*var slideCSS={
		'background-image' : 'url('+data['gameSlideBackgroundImage']+')'
	};
	*/
	this.slide=new GameSlide();
	this.slide.init('#gameContentInner',data['gameSlideTitle'],data['gameSlideContent']);
	this.slide.add();
	
	$.ui.dialog.defaults.bgiframe = true;
		$(function() {
			$("#gameSlide").dialog();
		});
		
	htmlCode=data['gameDescription'];
	$('#gameDescription').html(htmlCode);
	$('#gameDescription').hide().slideDown();
	
	// define action for gameSlide
	this.slide.show();	
}

Game.prototype.displayGameScreen=function(data){
	var htmlCode;
	this.costBall=parseInt(data['costBall']);
	
	if (this.ball==1){
		basket.disableOptions();
	}else{
		basket.enableOptions();
	}
	if (data['message']){
		var offset = $('#gameContent').offset();
		var bWidth=$('#gameContent').css('width');
		var messageCSS={
			'opacity': 0.5,
			'left':offset.left,
			'top':offset.top,
			'width':bWidth		
		};

		var message=new GameMessage();
		message.init('#gameContent',data['message'],messageCSS);
		message.show();
		
	}
	this.initBall();
	
	$(document).pngFix(); 
			
	$('#gameContent').mousemove(function(e) {
		//showCoordinates(e);
		game.updateMousePosition(e);
	});
	
	$('#gameContent').hover(
		function(e){
			game.showMousePosition(e);
		},
		function() {
			game.hideMousePosition();
		}
	);

	$('#gameContent').click(
		function(e){
		$('#gameContent').unbind('click');
		$('#gameContent').unbind('mousemove');
		$('#gameContent').unbind('hover');
		game.placeBall(e);
		$.post('gameplay.php','screen=game&ball='+game.ball,game.displayScreen,"json");		
	});
	
	$('#gameBasketReset').click(
		function(e){
			game.resetGame();
			$.post('gameplay.php','screen=game&ball='+game.ball,game.displayScreen,"json");
	});

	$('#gameBasketPurchase').click(
		function(e){
			var href='./payment.php?action=new';
			for (var i=0;i<basket.xCoords.length;i++){
				href+='&x'+i+'='+basket.xCoords[i]+'&y'+i+'='+basket.yCoords[i];
			}
			document.location.href=href;
	});
}

Game.prototype.initBall=function(){
	$('#gameContent').css({'cursor':'crosshair'});
}

Game.prototype.placeBall=function(e){
	var offset = $('#gameContent').offset();
	var x = e.pageX - (offset.left);
	var y = e.pageY - (offset.top);
	if (x<10){
		x='00'+x;
	}else if (x<100){
		x='0'+x;
	}
	if (y<10){
		y='00'+y;
	}else if (y<100){
		y='0'+y;
	}

	$('#gameContent').append('<div id="ball'+this.ball+'" class="ball">'+this.ball+'</div>');
	$('#ball'+this.ball).css({'position':'absolute','left': e.pageX-15,'top':e.pageY-15});
	var description='Shot ' + this.ball + ') ' + x + ' / ' + y + ' (x/y)';
	basket.add(this.ball,this.costBall,x,y,description);
	this.ball++;
}

Game.prototype.resetGame=function(e){
	this.removeBalls();
	basket.reset();
	this.ball=1;
}

Game.prototype.removeBalls=function(e){
	$('.ball').remove();
}

Game.prototype.hideMousePosition=function(){
	$('#Tip').fadeOut(300);
}

Game.prototype.showMousePosition=function(e){
	var offset = $('#gameContent').offset();
	var x = e.pageX - (offset.left);
	var y = e.pageY - (offset.top);

	$('#Tip').fadeIn(300);
	this.updateMousePosition(e);
}

Game.prototype.updateMousePosition=function(e){
	var offset = $('#gameContent').offset();
	var x = e.pageX - (offset.left);
	var y = e.pageY - (offset.top);

	//$('#Tip').fadeIn(300);
	if (x<10){
		x='00'+x;
	}else if (x<100){
		x='0'+x;
	}
	if (y<10){
		y='00'+y;
	}else if (y<100){
		y='0'+y;
	}
	$('#Tip').html('Position<br/>x:'+x+', y:'+y);
	$('#Tip').css({'position':'absolute','left': e.pageX+30,'top':e.pageY-30});
}
