/*
class qui permet de récuperer les elements d'un fichier xml sous forme d'un tableau
*/
function fromXmlToParams(params){
	this.mySrc = params.urlXml;
	this.myTag = params.tag;
	this.func = params.func;
	this.className = params.className;
	this.params = params;
	_this = this;
	n = 0;
}
fromXmlToParams.prototype = {
	importXML : function(){
	if(IS_Webkit){
		new Ajax(this.mySrc, {
		method: 'get',
		onComplete: function (txt, xml){
			_this.xmlDoc = xml;
			_this.getElements();
		},
		onFailure : function(){
			n += 1;
			if(n == 1){
			_this.mySrc = "."+_this.mySrc;
			_this.importXML();
			}else if(n == 2){
				_this.mySrc = "../"+_this.mySrc;
				_this.importXML();
			}
			}
		}).request();
	}else{
		if (document.implementation && document.implementation.createDocument){
			_this.xmlDoc = document.implementation.createDocument("", "", null);
			_this.xmlDoc.onload =_this.getElements;
			
		}else if (window.ActiveXObject){
			_this.xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			_this.xmlDoc.onreadystatechange = function () {
				if (_this.xmlDoc.readyState == 4) _this.getElements()
			};
	 	}else{
			alert('Votre navigateur ne peut pas executer ce script');
			return;
		}
		this.xmlDoc.load(this.mySrc);
	}
	},
	getChildNodes : function(myChildNode, myArray){
		for(var i=0;i<myChildNode.length;i++){
			if(myChildNode[i].nodeType == 1){
				var tab = [];
				var attr = "";
				var name = myChildNode[i].tagName;
				for(j=0;j<myChildNode[i].attributes.length;j++){
					if(myChildNode[i].attributes[j].length !=0){
						var attrVal = myChildNode[i].attributes[j].nodeValue 
						var attrName = myChildNode[i].attributes[j].nodeName
						attr += ','+attrName+' : "'+attrVal+'"';
					}
				}
				var myElement = name +":tab"+attr;
				eval("myArray.push({"+myElement+"})");
				if(myChildNode[i].childNodes.length == 1)
				{
					eval("myArray[myArray.length -1]." + name + ".push(myChildNode[i].childNodes[0].nodeValue);");
					try{myVars +='var '+name.toLowerCase()+' = "'+myChildNode[i].childNodes[0].nodeValue.replace(/"/g,'')+'";'}catch(e){};
					//myVars +='var '+name.toLowerCase()+' = "'+myChildNode[i].childNodes[0].nodeValue.replace(/;/g,'__,__')+'";';
				}
				else
				{
					eval("myArray[myArray.length -1]." + name + " = this.getChildNodes(myChildNode[i].childNodes, myArray[myArray.length -1]." + name + ")");
				}
			}
		}
		return myArray;
	},
	getElements : function(){
		var elements = _this.xmlDoc.getElementsByTagName(_this.myTag);
		
		if (elements.length == 0){
			n += 1;
			if(n == 1){
			_this.mySrc = "."+_this.mySrc;
			_this.importXML();
			}else if(n == 2){
				_this.mySrc = "../"+_this.mySrc;
				_this.importXML();
			}
		}else{
			var myArray = [];
			myVars = "";
			var myArray = _this.getChildNodes(elements[0].childNodes,myArray);
			var myParams = {
				params : _this.params,
				xmlTab : myArray,
				myVars : myVars
			}
			var func = _this.func;
			var className = _this.className;
			eval("var "+className+"Instance = new "+className+"(myParams)");
			eval(className+"Instance."+func+"()");
		}
	}
}