
function ZooCraft ()
{
	this.currentTool = 0;
	this.toolDetail = new Object;
	
	this.setCurrentTool = function (tool_id)
	{
		this.currentTool = tool_id;
		var argv = arguments;
		var argc = argv.length;
		if(argc == 2)
		{
			this.toolDetail = argv[1];
		}
		else
		{
			this.toolDetail = new Object;
		}
	}
	
	this.getCurrentTool = function ()
	{
		return this.currentTool;
	}
	
	this.actionAtPosition = function (x,y)
	{
		data = new Object();
		data.x = x;
		data.y = y;
		data.tool = this.getCurrentTool();

		for(i in this.toolDetail)
		{
			data[i] = this.toolDetail[i];
		}
		$.post(Config.APP_URL+'DataProvider/zoo/actionAt/',data,function(data){
			if(data.errorCode>0)
			{
				alert(data.msg);
			}
			else
			{
				ZooCraft.getInstance().createEntityAt(data.x,data.y,data.tool,data.moreData);
			}
		},
		"json");
	}
	
	this.createEntityAt = function (x,y,type)
	{
		var argv = arguments;
		var argc = argv.length;
		var moreData;
		if(argc == 4)
		{
			moreData = argv[3];
		}
		switch(type)
		{
			//tree
			case "1" :
				var newName = "cell_element_"+x+"_"+y;
			
				var newEl = document.createElement("div");
				newEl.id = newName;
				
				$("#real_map").append(newEl);
				$("#"+newName).addClass("element");
				$("#"+newName).addClass("element_tree");

				$("#"+newName).css({"left":(x*32)+"px","top":(y*32)+"px"});
			break;
			//road
			case "3" :
				var newName = "cell_element_"+x+"_"+y;
			
				var newEl = document.createElement("div");
				newEl.id = newName;
				
				$("#real_map").append(newEl);
				$("#"+newName).addClass("element");
				switch(moreData.roadModel)
				{
					case "1" :
						$("#"+newName).addClass("element_road_o");
					break;
					case "2" :
						$("#"+newName).addClass("element_road_v");
					break;
					case "3" :
						$("#"+newName).addClass("element_road_c1");
					break;
					
				}

				$("#"+newName).css({"left":(x*32)+"px","top":(y*32)+"px"});
			break;
			//tarc
			case "4" :
				var newName = "cell_element_"+x+"_"+y;
			
				var newEl = document.createElement("div");
				newEl.id = newName;
				
				$("#real_map").append(newEl);
				$("#"+newName).addClass("element");
				$("#"+newName).addClass("element_animals");

				$("#"+newName).css({"left":(x*32)+"px","top":(y*32)+"px"});
			break;
			//remove element
			case "2" :
				var newName = "cell_element_"+x+"_"+y;
				$("#"+newName).fadeOut("slow",function (){
					this.parentNode.removeChild(this);
				});
			break;
		}
	}
	
	this.getMapEntityes = function (zoo_id)
	{
		data = new Object();
		data.zoo_id = zoo_id;
		$.post(Config.APP_URL+'DataProvider/zoo/map/',data,function(data){
			if(data.errorCode>0)
			{
				alert(data.msg);
			}
			else
			{
				for(i in data.data)
				{
					ZooCraft.getInstance().createEntityAt(data.data[i].x,data.data[i].y,data.data[i].entry_type,data.data[i].entry_data);
				}
			}
		},
		"json");
	}
}

ZooCraft.__instance__=null;

ZooCraft.getInstance=function()
{
	if(ZooCraft.__instance__==null)
	{
		ZooCraft.__instance__=new ZooCraft();
	}
	return ZooCraft.__instance__;
}

