var database = new Array();
var alreadyMade = new Array();
var instanceMade = new Array();
var toPlay = new Array();
var toPlayParent = new Array();
var iToPlay = 0;
var iObjectMade = 0;

function registerDataBase()
{
	database["back_div"] = background_div;
	database["loader"] = loader_map;
	database["map_flash"] = map_flash;
	database["default_link"] = default_link;
	database["border_img"] = border_img;
	database["compte_form"] = compte_form;
	database["command_form"] = command_form;
	database["parrain_form"] = parrain_form;
	database["statut_form"] = statut_form;
	database["recharges_form"] = recharges_form;
	database["livre_form"] = livre_form;
	database["banque_form"] = banque_form;
	database["button_div"] = button_div;
	database["shop_link"] = shop_link;
	database["shop_form"] = shop_form;
	database["news_form"] = news_form;
	database["concours_form"] = concours_form;
	database["accueil_top"] = accueil_top;
	database["conquete_ile"] = conquete_ile;
	database["conquete_winner_form"] = conquete_winner_form;
	database["defis_form"] = defis_form;
	database["defis_class_form"] = defis_class_form;
}

function makeObjectByNode( node )
{
	var constructor;
	var instance;
	
	constructor = database[ node.nodeName ];

	instance = new constructor();

	if( canMake( node.nodeName, node.getAttribute('id') ) )
	{
		instanceMade[iObjectMade] = instance;
		iObjectMade++;
		instance.start( node );
	}
}

function insertToPlay( name, parent )
{
	toPlay[iToPlay] = name;
	toPlayParent[iToPlay] = parent;
	iToPlay++;
}

function playIt( name, parent )
{
	var inst;
	
	for(var i = 0; i < alreadyMade.length; i++)
	{
		if( alreadyMade[i] == name )
		{
			inst = instanceMade[i];

			if( inst.play )inst.play( parent );
			
			return inst;
		}
	}
}

function playAll()
{
	var inst;
		
	for( var i = 0; i < iToPlay; i++ )
	{
		playIt(toPlay[i], toPlayParent[i]);
	}
}

function getInstanceById(id)
{
	for(var i = 0; i < alreadyMade.length; i++)
	{
		if( alreadyMade[i].id == id )
		{
			inst = instanceMade[i];

			return inst;
		}
	}
	return null;
}

function makeObject()
{
	if( canMake( toMakeName, document.getElementById('input_object_name').value ) )
	{
		instance = new toMake();
			
		instance.make( document.getElementById('input_object_name').value );
		
		instanceMade[iObjectMade] = instance;
		iObjectMade++;
		
		document.getElementById('make_object_name').style.display = "none";
		document.getElementById('input_object_name').value = "";
	}
}

function stopObject( name )
{
	for(var i = 0; i < alreadyMade.length; i++)
	{
		if( alreadyMade[i] == name )
		{
			inst = instanceMade[i];

			if( inst.stop )inst.stop();
			
			return i;
		}
	}
	return -1;
}

function closeMenuObjectName()
{
	document.getElementById('make_object_name').style.display = "none";
}

function canMake( object, name )
{
	for(var i = 0; i < alreadyMade.length; i++)
	{
		if( alreadyMade[i] == name )
		{
			debug("Erreur : Création de l'objet '" + object + "' impossible ! '" + name + "' est déjà présent !");
			return false;
		}
	}
	alreadyMade[iObjectMade] = name;
	return true;
}

function makeSave()
{
	var txt = "";
	var inst;
	
	for( var i = 0; i < instanceMade.length; i++ )
	{
		inst = instanceMade[i];
		if( inst.toXmlText )txt += inst.toXmlText("\t");
	}
	return txt;
}

function cleanDataBase()
{
	for(var i = 0; i < iObjectMade; i++)
	{
		alreadyMade.pop();
		instanceMade.pop();
	}
	iObjectMade = 0;
	
	for(var j = 0; j < iToPlay; j++)
	{
		toPlay.pop();
		toPlayParent.pop();
	}
	iToPlay = 0;
}