﻿// extracts node with name nodeName from xmlNode. nodeName should be unique in the xmlNode
function XMLExtractUniqueNode( xmlNode, nodeName)
{	
	var nodeList = xmlNode.getElementsByTagName( nodeName );	
	if( nodeList.length == 0 )
	{return null;}
	else
	{	return nodeList[0];}
}

// returns an XML string with root as the root tag
// and nodes as the children
// nodes is an associative array
function CreateXML( root, nodes )
{
	var xml = "";
	
	if( root )
		xml += "<" + root + ">";
	
	for( theNode in nodes )
	{
		xml += "<" + theNode + ">" + nodes[theNode] + "</" + theNode + ">";
	}

	if( root )
		xml += "</" + root + ">";
	
	return xml;
}

// returns an XML string with root as the root tag
// and nodes as the children
// nodes is an associative array
//Note: Nodes name will be eg: "Content#1,Content#2" it will treat all as "Content".
function CreateXMLforRepetingNodes( root, nodes )
{
	var xml = "";
	
	if( root )
		xml += "<" + root + ">";
	
	for( theNode in nodes )
	{
	    var nNames = theNode.split("#");
		xml += "<" + nNames[0] + ">" + nodes[theNode] + "</" + nNames[0] + ">";
	}

	if( root )
		xml += "</" + root + ">";
	
	return xml;
}


function XMLLoadXML(xmlString)
{
    var doc;
    if (window.ActiveXObject)
    {
        doc=new ActiveXObject("Microsoft.XMLDOM");
        doc.async="false";
        doc.loadXML(xmlString);
    }
    else
    {
        var parser=new DOMParser();
        doc=parser.parseFromString(xmlString,"text/xml");
    }
    return doc;
}

function XMLLoadFile(file)
{
    var xmlDoc;
    
    if (window.ActiveXObject) //IE
    {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = false;
		xmlDoc.resolveExternals = false;
		xmlDoc.load(file);
		return xmlDoc
    }
    else if (document.implementation && document.implementation.createDocument)  // code For Mozilla, Firefox, Opera, etc.
    {
	    xmlDoc=document.implementation.createDocument("","",null);
	    xmlDoc.load(file);
	    //xmlDoc.onload=getmessage;   
	    return xmlDoc
    }
    else //browser doesnot handle this xml script
    {
        return null;
    }
}

//Save xmldoc to given file and return true:success or False:failure
function SaveXML(xmlDoc, file)
{

    xmlDoc.save(file);
    
	if (xmlDoc.parseError == 0 )
		return true;
	else
		return false;
}

function XMLExtractNodesByElementName(xmlNode, nodeName)
{	
	var nodes = xmlNode.getElementsByTagName( nodeName );	
    return nodes;
}

//xmlNode may be any node or xmldocument.
function XMLExtractNodesByXPath(xmlNode, xPath)
{
 var nodes = xmlNode.selectNodes(xPath);
 return nodes;
}

//Get attribute value of given node
function XMLGetNodeAttributeValue(xmlNode, attributeName)
{
    return xmlNode.getAttribute(attributeName);
}

//Get text value of given node IE, Mozilla, Firefox, Netscape, opera
function XMLGetNodeValue(xmlNode)
{
        if(!xmlNode)
			return "";
        else if (typeof xmlNode == 'string') 
			return xmlNode;
		else if (typeof xmlNode.textContent != 'undefined') 
			return xmlNode.textContent;
		else if (typeof xmlNode.innerText != 'undefined')
			return xmlNode.innerText;
		else if (typeof xmlNode.text != 'undefined') 
			return xmlNode.text;
		else if(typeof xmlNode.value != 'undefined')
		    return xmlNode.value;    
}



//Note : This function creates the file and saves the data given as string "xmlData"
 function SaveFile(xmlData, file)
 {
   var newFileObject;
   try
   {    
     if(window.ActiveXObject)
     {
       var fso = new ActiveXObject("Scripting.FileSystemObject");
       newFileObject = fso.CreateTextFile(file, true);
       newFileObject.WriteLine(xmlData);
       newFileObject.Close();        
       return true;
     }
     else
     {
       var fso = new CreateObject("Scripting.FileSystemObject");
       newFileObject = fso.CreateTextFile(file, true);
       newFileObject.WriteLine(xmlData);
       newFileObject.Close();        
       return true;
     }
   }
   catch(e)
   {         
    newFileObject.Close();          
    ShowError("Error while saveing xml in File:" + e.message)
    return false;
   }
 }
