$(document).ready(function(){	
	switch (Game.GameType) {
			case 1:	//Integrame
				$(document).bind("keydown", Game.KeyDown);
				$(".editable-cell").live("click", Game.MouseClick);			
				$(".integrama-def-base").live("click", Game.DefMouseClick);
				break;
			case 2:	//Rebus
				break;
			case 3:	//Anagrame
				break;
			case 4:
				break;
			case 5:	//Sudoku			
				$(document).bind("keydown", Game.KeyDown);
				$(".editable-cell").live("click", Game.MouseClick);	
				break;
		}	
});

var Saving = {
	Saved: function(){
		if(1 == Game.Changed)
		{
			$("#a-save-button").removeClass("save");
			$("#a-save-button").addClass("saved");
			$("#a-save-button").css("color", "gray");
			Game.Changed = 0;
		}
	},
	
	Unsaved: function(){
		Game.Changed = 1;
		$("#a-save-button").removeClass("saved");
		$("#a-save-button").addClass("save");
		$("#a-save-button").css("color", "black");
	}
} 

var Logger = {
	Log: function(value){
		$.ajax({
			type: "POST",
			url: Game.Path + "log.php",
			data: "text=" + value
		});		
	}
}

var Solver = {
	Determinate: function(value)
	{
		switch (value) {
			case 1:	//Solved
				Solver.Solved();
				break;
			case 0:	//Not Solved
				Solver.NotSolved();
				break;
		}
	},
		
	Solved: function(){
		$("#current-status").html("<img src='" + Game.Path + "images/not_solved.png' />");
	},
	
	NotSolved: function()
	{
		$("#current-status").html("<img src='" + Game.Path + "images/not_solved.png' />");
	}
}

var Game = {
	GameType: 0,
	height: 0,
	width: 0,
	ActiveCell: null,
	ActiveDirection: null,
	Table: null,
	GID: 0,
	Changed: 0,	
	Path: null,
	XMLFile: null,
	
	PreInit: function(GameType){		
		Game.GameType = GameType;
		switch (Game.GameType) {
			case 1:	//Integrame
				Integrame.PreInit();
				break;
			case 2:	//Rebus
				break;
			case 3:	//Anagrame
				break;
			case 4:
				break;
			case 5:	//Sudoku
				Sudoku.PreInit();
				break;
		}
	},
	
	Init: null,
	
	Save: function(){		
		if(1 == Game.Changed)
		{
			value = '';
			$(".editable-cell").each(function(){
				value += $(this).attr('tag');
			});			
			$.ajax({
				type: "POST",
				url: Game.Path + "save.php",
				data: "text=" + value + "&id=" + Game.GID+ "&md5=" + Game.XMLFile,
				success: function(Content)
				{					
					Saving.Saved();
				}
			});
		}
	},
	
	Load: function(){
		$.ajax({
			type: "POST",
			url:Game.Path + "load.php",
			data: "id=" + Game.GID,
			success: function(Content)
			{								
				if(Content.length != 0)
				{
				    $('.editable-cell').each(function(index){
				    	$(this).attr("tag", Content.charAt(index));
				    	$(this).html('*' == Content.charAt(index) ? "&nbsp;" : Content.charAt(index))
				    });
			    }
				Saving.Saved();
			}
		});
	},
	
	Draw: null,
	
	Reset: function(){
		if(null != Game.Table)
		{		
			for (i = 0; i < Game.Table.rows.length; i++) {
				Game.Table.deleteRow(0);
			}
		}
	},
	
	OverHighlight: null,
	
	OutHighlight: null,
	
	Hover: function(config){
		$(".editable-cell").hover(Game.OverHighlight, Game.OutHighlight);
	},
	
	DefOverHighlight: null,
	
	DefOutHighlight: null,
	
	DefHover: function(config)
	{		
		$(".integrama-def-base").hover(Game.DefOverHighlight, Game.DefOutHighlight);
	},
	
	KeyDown: null,
	
	MouseClick: null,
	
	DefMouseClick: null
}
	
var Timer = {
	Interval: 20000,
	
	Init: function(Interval){
		Timer.Interval = Interval;
		setTimeout("Timer.Exec()", Timer.Interval);			
	},
	
	Exec: function()
	{
		setTimeout("Timer.Exec()", Timer.Interval);
		Game.Save();
	}
}
