//
//	***************************************************************************
//	**	CREATED BY  : TEJAL SHARMA    01/10/2007		   			         **
//	**	APPLICATION : INDEPENDENT											 **
//	**	COMMENTS    : THIS JS IS FOR QUERING XML DOCUMENTS					 **
//	**																		 **
//	***************************************************************************
//

		

		// DOWNLOAD AND INITIALIZE XML DOCUMENT
		function init(xmlFile)
			{
			var xmlDoc;
			// alert(xmlFile);
			if (document.implementation && document.implementation.createDocument)
				{
				    //xmlDoc = document.implementation.createDocument("", "", null);
				    
				    var xmlhttp = new window.XMLHttpRequest();
                    xmlhttp.open("GET",xmlFile,false);
                    xmlhttp.send(null);
                    parser=new DOMParser();
                    xmlDoc=parser.parseFromString(xmlhttp.responseText,"text/xml");
                    return xmlDoc;
                    
				}
			else if (window.ActiveXObject)
				{
				xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
				xmlDoc.async="false";
				
				}
			else
				{
				alert('Your browser can\'t handle this script');
				return;
				}
                xmlDoc.load(xmlFile)
				return xmlDoc;
			}

		// GETS SINGLE [KEY] VALUE WHERE [FIELD] IS LIKE [VALUE]			
		function FetchValue(xmlDoc,Field,Value,Key)
			{
			var i = 0;
			
			for(i=0;i<xmlDoc.documentElement.childNodes.length;i++)
				{
				var x = xmlDoc.documentElement.childNodes(i)
				if(xmlDoc.getElementsByTagName(Field).item(i).text == Value)
					{
					return traverse(x,Key);
					}
				}
			}
			
		// GETS VALUES FROM CHILDNODE
		function traverse(tree,Key) 
			{
			for(var i=0; i<tree.childNodes.length; i++)
				{
				if(tree.childNodes(i).tagName == Key)
					{
					var result = tree.childNodes(i).text
					return result;
					}
				}		
			} 
		// RETURNS THE CHILDNODE WHERE [FIELD] IS LIKE [VALUE]
		function FetchNode(xmlDoc,Field,Value)
			{
			var i = 0
			for(i=0;i<xmlDoc.documentElement.childNodes.length;i++)
				{
				var x = xmlDoc.documentElement.childNodes(i)
				if(xmlDoc.getElementsByTagName(Field).item(i).text == Value)
					{
					return x;
					}
				}
			}
			
		//TOTAL NUMBER OF RECORDS IN XML DOCUMENT
		function XMLTotalNode(xmlDoc)
			{
					return xmlDoc.documentElement.childNodes.length;
			}
			
		//RETURN AS JAVA ARRAY FOR FIELDNAMES
		function GetFieldList(xmlDoc)
			{
			var x = xmlDoc.documentElement.childNodes(0);
			var fields  = new Array(x.childNodes.length);
			var i = 0;
			for(i=0;i<x.childNodes.length;i++)
				{
				fields[i] = x.childNodes(i).tagName
				}
			return fields;
			}
		
		//RETURN THE ATTRIBUTE LENGTH
		function getAttribLength(xmldoc,nodeno)
		{
			
			var attr= xmldoc.documentElement.childNodes.item(nodeno).attributes;
			return attr.length;
			
			
		}
		
		//	RETURN THE ATTRIBUTE NAME
		function getAttribName(xmldoc,nodeno,attribnum){
			var attr = xmldoc.documentElement.childNodes.item(nodeno).attributes; 
			return attr.item(attribnum).name;
		}
		
		//RETURN THE ATTRIBUTE VALUE
		function getAttribValue(xmldoc,nodeno,attribnum){
			var attr = xmldoc.documentElement.childNodes.item(nodeno).attributes; 
			return attr.item(attribnum).text;
		}
			
		//RETURN AS JAVA ARRAY OF VALUES OF GIVEN FIELD
		function getAllValues(xmlDoc,Field)
			{
			var values  = new Array(XMLTotalNode(xmlDoc));
			var i = 0;
			for(i=0;i<XMLTotalNode(xmlDoc);i++)
				{
				var x = xmlDoc.documentElement.childNodes(i);
				values[i] = traverse(x,Field)
				}
			return values
			}
			
		//
		function GetRecCnt(Field,Value)
			{
			var i = 0
			var cnt = 0
			
			alert(cnt);
			for(i=0;i<xmlDoc.documentElement.childNodes.length;i++)
				{
				if(xmlDoc.getElementsByTagName(Field).item(i).text == Value)
					{cnt = cnt + 1;				
					}
				}
				
			return cnt;
			
			}
			
		//
		function GetAllRec(Field,Value,Key)
			{
			var i = 0
			for(i=0;i<xmlDoc.documentElement.childNodes.length;i++)
				{
				var x = xmlDoc.documentElement.childNodes(i)
				if(xmlDoc.getElementsByTagName(Field).item(i).text == Value)
					{
					return traverse(x,Key);
					}
				}
			}
		
		//
		function FormatQry(Server,VDirectory,Qry)
				{
				var prefix = 'http://' + Server + '/' + VDirectory + '?sql=';
				var suffix = ' for xml AUTO&root=root'
				var t = / /g;
				Qry = prefix + Qry +suffix;			
				Qry = Qry.replace(t,'%20');
				return Qry;
				}
				
		function getColls(xmlDoc)
				{
				var x = xmlDoc.documentElement.childNodes(0)
				var fields  = new Array(x.childNodes.length);
				fields[0] = x.childNodes(0).tagName
				var i = 1;
				for(i=1;i<x.childNodes.length;i++)
				{
				fields[i] = x.childNodes(i).tagName
				}
			return fields;
				
				}