var ns4 = (document.layers)? true:false;	  //NS 4
var Op = (navigator.userAgent.toLowerCase().indexOf('opera') > -1 && document.createTextNode);  // Opera 7
var ie4 = ((document.all)? true:false)&&!Op;	  //IE 4
var dom = (document.getElementById)? true:false;	  //DOM


//DT = DOM Tools

var DT = {
	$: function()
	{//getElementById
		if(this.typeOf=='DT'){
			var a = this;
		}else{
			var a = arguments[1] || document;
		}
		return this.Return(a.getElementById(arguments[0]));
	},
	gEBTN: function(a,objet)
	{//getElementsByTagName
		var objet = arguments[1] || document;
		if(this.typeOf=='DT'&&arguments.length==1){
			var objet = this;
		}
		return this.Return(objet.getElementsByTagName(a));
	},
	cr: function(a)
	{//document.createElement
		return this.Return(document.createElement(a));
	},
	getElementsByClassName: function(objet,a)
	{
		if(this.typeOf=='DT'&&typeof objet=='string'){
			var a=objet;
			var objet = this;
		}
		var temp = this.gEBTN('*',objet);
		var tab = Array();
		for(var i=0;i<temp.length;i++)
		{
			if(temp[i].className==a)
			{
				tab.push(temp[i]);
			}
		}
		return this.Return(tab);
	},
	getElementsByAttribute: function(objet,attribute,value)
	{
		if(this.typeOf=='DT'&&typeof objet=='string'){
			var value = attribute;
			var attribute = objet;
			var objet = this;
		}
		var temp = Array();
		var source = this.gEBTN('*',objet);
		for(var i=0;i<source.length;i++)
		{
			if(value!=undefined)
			{
				if(source[i].getAttribute(attribute)==value)
					temp.push(source[i]);
				else if(source[i].getAttribute(attribute.toLowerCase())==value)
					temp.push(source[i]);
			}
			else
			{
				if(source[i].getAttribute(attribute)!=null)
					temp.push(source[i]);
				else if(source[i].getAttribute(attribute.toLowerCase())!=null)
					temp.push(source[i]);
			}
		}
		return this.Return(temp);
	},
	getChildNodesByTagName: function(objet,a)
	{
		if(this.typeOf=='DT'&&typeof objet=='string'){
			var a = objet;
			var objet = this;
		}
		var tmp = Array();
		for(var i=0;i<objet.childNodes.length;i++)
		{
			try{
				if(objet.childNodes[i].tagName.toLowerCase()==a.toLowerCase()) tmp.push(objet.childNodes[i]);
				else if(a=='*'&&objet.childNodes[i].tagName!=undefined) tmp.push(objet.childNodes[i]);
			}catch(e){}
		}
		return this.Return(tmp);
	},
	getChildNodesByClassName: function(objet,a)
	{
		if(this.typeOf=='DT'&&typeof objet=='string'){
			var a = objet;
			var objet = this;
		}
		var tmp = Array();
		for(var i=0;i<objet.childNodes.length;i++)
		{
			try{
				if(objet.childNodes[i].className==a) tmp.push(objet.childNodes[i]);
			}catch(e){}
		}
		this.DTreturn(tmp);
	},
	getParentNodeByTagName: function(objet,a)
	{//retourne le premier élément parent correspondant et null s'il n'est pas trouvé
		if(this.typeOf=='DT'&&typeof objet=='string'){
			var a = objet;
			var objet = this;
		}
		if(objet==document.body)
			return null;
		else if(objet.parentNode==document.body)
			return null;
		else
		{
			if(objet.parentNode.tagName.toLowerCase()==	a.toLowerCase())
				return this.Return(objet.parentNode);
			else
				return this.Return(this.getParentNodeByTagName(objet.parentNode,a));
		}
	},
	getParentsByTagName: function(objet,a)
	{//retourne un tableau de tous les éléments parents corespondant, du plus bas dans l'échelle vers le plus haut
		if(this.typeOf=='DT'&&typeof objet=='string'){
			var a = objet;
			var objet = this;
		}
		var temp = Array();
		while(objet!=document.body)
		{
			if(a=='*'&&objet.parentNode.tagName!=undefined||objet.parentNode.tagName.toLowerCase()==a.toLowerCase())
				temp.push(objet.parentNode);
			objet = objet.parentNode;
		}
		return this.Return(temp);//le tableau retourné est vide par défaut
	},
	getParentsByAttribute: function(objet,attribute,value)
	{
		if(this.typeOf=='DT'&&typeof objet=='string'){
			var value = attribute;
			var attribute = objet;
			var objet = this;
		}
		var source = this.getParentsByTagName(objet,'*');
		var temp = Array();
		for(var i=0;i<source.length;i++)
		{
			if(value!=undefined)
			{
				if(source[i].getAttribute(attribute)==value)
					temp.push(source[i]);
			}
			else
			{
				if(source[i].getAttribute(attribute)!=null)
					temp.push(source[i]);
			}
		}
		return this.Return(temp);
	},
	addProperties: function(){
		if(arguments.length==0)return;
		if(typeof arguments[0]=='array')
		{
			for(var i=0;i<arguments[0].length;i++)
			{
				this.addProperties(arguments[0][i]);
			}
		}
		else
		{
			for(var a in this)
			{
				try{
					eval('arguments[0].'+a+' =  arguments[1].'+a+';');
				}catch(e){}
			}
			arguments[0].typeOf = 'DT';
		}
	},
	Return: function(){
		if(arguments.length==0)return null;
		if(arguments[0]==null)return null;
		if(arguments[0]==undefined)return;
		this.addProperties(arguments[0],this);
		return arguments[0];
	}
}


//DT = DOM Tools
