// name space lazaar utils
//bibliotheque des fonction utiles dans le name space lazaar
if(typeof LAZAAR=="undefined"){var LAZAAR={}}
if(typeof LAZAAR.UTILS=="undefined"){LAZAAR.UTILS={};} 
LAZAAR.UTILS.NatureOperation={
	Ajout:0,
	Supression:1,
	MiseAjours:2,
	Login:3
}
//class static pour la gestion du xml du name space LAZAAR.UTILS
LAZAAR.UTILS.XML={
	// fonction pour enleves certain bug de taritement xml chez firefox
	ENLEVEBUGS_pour_F_FOX:function()
		{// modification des fonctions de gestion du DOM XML afin d'elominer quelque bug pour certain navigateur comme firefox-->
// firefox compte aussi la tabulation dans une structure xml alors on doit les eliminer-->
			var ie = /MSIE/.test(navigator.userAgent);
var moz = !ie && navigator.product == "Gecko";

if (moz) {
	
     HTMLElement.prototype.__defineGetter__("children", function() {
           var arr = new Array(), i = 0, l = this.childNodes.length;
           for ( i = 0; i < l; i++ ) {
               if ( this.childNodes[ i ].nodeType == 1 ) {
                    arr.push( this.childNodes[ i ] );
               }
           }
      return arr;
      });

      HTMLElement.prototype.__defineGetter__("firstChild", function() {
            var node = this.childNodes[ 0 ];
            while (node.nodeType != 1) node = node.nextSibling;
                 return node;
            });

     HTMLElement.prototype.__defineGetter__("lastChild", function() {
     var node = this.childNodes[ this.childNodes.length - 1 ];
     while (node.nodeType != 1) node = node.previousSibling;
           return node;
      });
} 

if (!window.ActiveXObject) {//extension des methodes selectNodes et selectSingleNode pour fire fox

Element.prototype.selectNodes = function(sXPath) {

var oEvaluator = new XPathEvaluator();

var oResult = oEvaluator.evaluate(sXPath, this, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);

var aNodes = new Array();

if (oResult != null) {

var oElement = oResult.iterateNext();

while(oElement) {

aNodes.push(oElement);

oElement = oResult.iterateNext();

}

}

return aNodes;

}

Element.prototype.selectSingleNode = function(sXPath) {

var oEvaluator = new XPathEvaluator();

  // FIRST_ORDERED_NODE_TYPE returns the first match to the xpath.

var oResult = oEvaluator.evaluate(sXPath, this, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);

if (oResult != null) {
alert('hhh');
return oResult.singleNodeValue;

} else {

return null;

}              

}

}

			
			
			
		}
		//fin ENLEVEBUGS_pour_F_FOX
	
	,
		SelectSingleNode:function (xmlDoc, elementPath)
    {
        if(window.ActiveXObject)
        {
            return xmlDoc.selectSingleNode(elementPath);
        }
        else
        {
           var xpe = new XPathEvaluator();
           var nsResolver = xpe.createNSResolver( xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);
           var results = xpe.evaluate(elementPath,xmlDoc,nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE, null);
           return results.singleNodeValue; 
        }
    }//fin SelectSingleNode
		
	,
		DOM:function()
		{

		/*var adapter = '';
	if ('undefined' != typeof ActiveXObject) {
		adapter = 'MS';
	} else if ('undefined' != typeof document
		&& document.implementation
		&& document.implementation.createDocument
		&& 'undefined' != typeof DOMParser)
	{
		adapter = 'default';
	}
	*/
	switch (LAZAAR.UTILS.XML.isActiveXObjectSupported) {
		case 'MS':
			return {
				createDocument : function () {
					var names = ["Msxml2.DOMDocument.6.0",
						"Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument",
						"MSXML.DOMDocument", "Microsoft.XMLDOM"];
					for (var key in names) {
						try {
							return new ActiveXObject(names[key]);
						} catch (e) {}
					}
					throw new Error('Unable to create DOMDocument');
				},
				serialize : function (doc) {
					return doc.xml;
				},
				parseXml :function (xml) {
					var doc = this.createDocument();
					if (!doc.loadXML(xml)) {
						throw new Error('Parse error');
					}
					return doc;
				}
			};
		case 'default':
			return {
				createDocument : function () {
					return document.implementation.createDocument("", "", null);
				},
				serialize : function (doc) {
					return new XMLSerializer().serializeToString(doc);
				},
				parseXml : function (xml) {
					var doc = new DOMParser().parseFromString(xml, "text/xml");
					if ("parsererror" == doc.documentElement.nodeName) {
						throw new Error('Parse error');
					}
					return doc;
				}
			};
		default:
			return null;
	}
}
//fin de SAMI_XML_DOM		
	,
	isActiveXObjectSupported:(function (){
		var adapter = ''
		if ('undefined' != typeof ActiveXObject) {
		adapter= 'MS';
	} else if ('undefined' != typeof document
		&& document.implementation
		&& document.implementation.createDocument
		&& 'undefined' != typeof DOMParser)
	{
		adapter= 'default';
	}
				return 	adapter;
					
					})()
		};//fin du sous namespace XML