Fix license issues
[sdnc/oam.git] / dgbuilder / public / util / js / dgeToXml.js
diff --git a/dgbuilder/public/util/js/dgeToXml.js b/dgbuilder/public/util/js/dgeToXml.js
deleted file mode 100644 (file)
index 7582d27..0000000
+++ /dev/null
@@ -1,1328 +0,0 @@
-function getDgStartNode(nodeList){
-               for(var i=0;i<nodeList.length;i++){
-                       if(nodeList[i].type == 'dgstart' && nodeList[i].wires != null &&  nodeList[i].wires != undefined){
-                               return nodeList[i];
-                       }       
-               }
-               RED.notify("DGSTART node not found.");
-               return null;
-}
-
-
-var loopDetectionEnabled = true;
-
-function detectLoopPrev(){
-               var activeWorkspace=RED.view.getWorkspace();
-               /*
-               RED.nodes.links.filter(function(d) {
-                        if(d.source.z == activeWorkspace && d.target.z == activeWorkspace){
-                                console.log(d.source.id+":"+d.sourcePort+":"+d.target.id);
-                        }
-               });
-               */      
-               //console.dir(RED.nodes.links);
-               var nSet=[];
-               
-               RED.nodes.eachNode(function(n) {
-                       if (n.z == activeWorkspace) {
-                               nSet.push({'n':n});
-                       }
-               });
-
-               var nodeSet = RED.nodes.createExportableNodeSet(nSet);
-               //console.dir(nodeSet);
-               
-               //console.log("nodeSet length:" + nodeSet.length);
-
-               var isLoopDetected = false;     
-               var dgStartNode = getDgStartNode(nodeSet);
-               if(dgStartNode == null || dgStartNode == undefined) {
-                       console.log("dgstart node not linked.");
-                       return true;
-               }
-
-               var wires = dgStartNode.wires;
-               var nodesInPath = {};
-               var dgStartNodeId = dgStartNode.id;
-               if(wires != null && wires != undefined && wires[0] != undefined){
-                       for(var k=0;k<wires[0].length;k++){
-                               var val = wires[0][k];
-                               nodesInPath[dgStartNodeId + "->" + val] = "";
-                       }
-               }else{
-                               nodesInPath[dgStartNodeId + "->" + ""] = "";
-               }
-                       
-               //console.dir(nodesInPath);
-               var loopDetectedObj = {};
-               /* the nodes will not be order so will need to loop thru again */
-       for(var m=0;nodeSet != null && m<nodeSet.length;m++){
-               for(var i=0;nodeSet != null && i<nodeSet.length;i++){
-                       var link=nodeSet[i].id;
-                       //console.log("NAME:" + nodeSet[i].name + ":" + link);
-                       if(link == dgStartNodeId) continue;
-                       var wires = nodeSet[i].wires;
-                       //console.log("link:" + link);
-                       var delKeys = [];
-                       if(wires != null && wires != undefined && wires[0] != undefined){
-                               for(var k=0;k<wires[0].length;k++){
-                                       var val = (wires[0])[k];
-                                       var keys = Object.keys(nodesInPath);
-                                       //console.log("keys:" + keys);
-                                       for (var j=0;j<keys.length;j++){
-                                               //console.log("key:" + keys[j]);
-                                               //console.log("val:" + val);
-                                               var index = -1;
-                                               if(keys[j] != null){
-                                                       index = keys[j].indexOf("->" + link);
-                                               }
-                                               var lastIndex = keys[j].lastIndexOf("->");
-                                               if(index != -1 && index == lastIndex){
-                                                       //delete nodesInPath[key];
-                                                       var previousNodeId = keys[j].substr(lastIndex +2);
-                                                       var indexOfArrow = -1;
-                                                       if(previousNodeId != ""){
-                                                               indexOfArrow = previousNodeId.indexOf("->");
-                                                       }
-                                                       if(previousNodeId != null && indexOfArrow != -1){
-                                                               previousNodeId = previousNodeId.substr(0,indexOfArrow);
-                                                       }       
-                                                       nodesInPath[keys[j] + "->" + val] = "";
-                                                       //console.log("keys[j]:" + keys[j]);
-                                                       delKeys.push(keys[j]);
-                                                       var prevNodeIdIndex = keys[j].indexOf("->" + previousNodeId);
-                                                       var priorOccurence = keys[j].indexOf(val + "->");
-                                                       if(priorOccurence != -1 && priorOccurence<prevNodeIdIndex){
-                                                               //console.log("previousNodeId:" + previousNodeId);
-                                                               //console.log("val:" + val);
-                                                               var n1 = getNode(nodeSet,previousNodeId);
-                                                               var n2 = getNode(nodeSet,val);
-                                                               //console.log("loop detected for node " + n1.name + " and " + n2.name); 
-                                                               loopDetectedObj[n1.name + "->" + n2.name] ="looped";
-                                                               //console.dir(loopDetectedObj);
-                                                               isLoopDetected = true;
-                                                       }               
-                                               } 
-                                       }
-                               }
-                       }
-                       for(var l=0;delKeys != null && l<delKeys.length;l++){
-                               delete nodesInPath[delKeys[l]];
-                       }
-               }
-
-
-       }       
-       if(loopDetectedObj != null ){ 
-               var msg = "";
-               for(var key in loopDetectedObj){
-                       if(loopDetectedObj.hasOwnProperty(key)) {
-                               console.log("Loop detected  " + key);
-                               msg += "<strong>Loop detected for:" + key + "</strong><br>";
-                       }
-               }
-               if(msg != ""){
-                       isLoopDetected = true;
-                       RED.notify(msg);
-               }
-       }       
-/*
-               for(var i=0;nodeSet != null && i<nodeSet.length;i++){
-                       var foundCount=0;
-                       var nodeId = nodeSet[i].id;
-                       var nodeName = nodeSet[i].name;
-                       for(var j=0;nodeSet != null && j<nodeSet.length;j++){
-                               var node = nodeSet[j];
-                               if(node.id == nodeId){
-                                        continue;
-                               }
-                               var wires = node.wires;
-                               console.log(node.type + ":wires:" + wires);
-                               for(var k=0;wires != null && wires != undefined && wires[0] != undefined && k<wires[0].length;k++){
-                                       var id = (wires[0])[k];
-                                       console.log(nodeName + ":" + nodeId + ":" + id);
-                                       if(id == nodeId ){
-                                               foundCount++;
-                                               if(foundCount>1){
-                                                       console.log("Loop detected for node " + nodeName + "with node:" + node.name);
-                                                       RED.notify("<strong>Flow error detected for node '" + nodeName + "' with node '" + node.name + "'</strong>");
-                                                       //RED.nodes.eachLink(function(d){
-                                                       //      if(d.source.id == nodeSet[i] || d.target.id == nodeSet[j]){
-                                                       //              d.selected = true;
-                                                       //      }else if(d.source.id == nodeSet[j] || d.target.id == nodeSet[i]){
-                                                       //              d.selected = true;
-                                                       //      }
-                                                       //});
-                                                       //RED.view.redraw();
-                                                       isLoopDetected = true;
-                                                       return true;
-                                               }
-                                       }
-                               }
-                               
-                       }
-               }
-*/
-               //console.log("isLoopDetected:" + isLoopDetected);
-               return isLoopDetected;
-}
-
-function generateNodePath(nodeIdToNodeObj,nodeId,pathStr,nodesInPath,errList){
-               var node = nodeIdToNodeObj[nodeId];
-               var wires = node.wires;
-               if(wires != null && wires != undefined && wires[0] != undefined){
-                       for(var k=0;k<wires[0].length;k++){
-                               var val = wires[0][k];
-                               if(pathStr.indexOf(val + "->") != -1){
-                                       //console.log("pathStr:" + pathStr);
-                                       var n1= nodeIdToNodeObj[nodeId].name;
-                                       var n2= nodeIdToNodeObj[val].name;
-                                       errList.push("Loop detected between nodes '" +  n1 + "' and " + "'" +  n2 + "'");
-                               }else{
-                                       pathStr += "->" + val ;
-                                       generateNodePath(nodeIdToNodeObj,val,pathStr,nodesInPath,errList);
-                               }
-                       }
-               }else{
-                               //pathStr += nodeId + "->" + "";
-                               nodesInPath.push(pathStr);
-               }
-}
-
-function detectLoop(){
-               var activeWorkspace=RED.view.getWorkspace();
-               var nSet=[];
-               var nodeIdToNodeObj = {};       
-               RED.nodes.eachNode(function(n) {
-                       if (n.z == activeWorkspace) {
-                               nSet.push({'n':n});
-                       }
-               });
-
-               var nodeSet = RED.nodes.createExportableNodeSet(nSet);
-               nodeIdToNodeObj = getNodeIdToNodeMap(nodeSet);
-               var isLoopDetected = false;     
-               //var dgStartNode = getDgStartNode(nodeSet);
-               var dgStartNode = nodeIdToNodeObj["dgstart"];
-               var errList = [];
-               var dgStartNodeId = dgStartNode.id;
-               var nodesInPathArr = [];
-               generateNodePath(nodeIdToNodeObj,dgStartNodeId,dgStartNodeId,nodesInPathArr,errList);
-               if(errList != null && errList != undefined && errList.length  > 0){
-                       isLoopDetected = true;
-                       var htmlStr="<div id='loop-detect-err-list-div'><table id='loopErrListTable' border='1'><tr><th>Error List</th></tr>";  
-                       for(var j=0;errList != null && j<errList.length;j++){
-                               var errSeq = j+1;
-                               htmlStr += "<tr><td>" + errSeq + ")"  + errList[j] + "</td></tr>"; 
-                       }
-                       htmlStr += "</table></div>";
-
-                       $("#loop-detection-dialog").dialog({
-                             autoOpen : false,
-                              modal: true,
-                              title: "DG Flow validation Error List ",
-                              width: 500,
-                              buttons: {
-                                Close: function () {
-                                  $("#loop-detection-dialog").dialog("close");
-                                }
-                              }
-                         }).dialog("open").html(htmlStr); // end dialog div
-               }
-               nodesInPathArr=null;
-               nodeSet ={};
-               nodeIdToNodeObj={};
-               return isLoopDetected;
-}
-
-
-var xmlNumberCnt = 0;
-function processForXmlNumbers(nodeSet,node){
-       if( node != null && node.type != 'dgstart'){
-               if(node.xmlnumber != null && node.xmlnumber){
-                       node.xmlnumber.push(++xmlNumberCnt);
-               }else{
-                       node.xmlnumber =  [++xmlNumberCnt];
-               }
-       }
-
-       if(node != null && node.wires != null && node.wires.length>0){
-               var wiredNodes=node.wires[0];
-               var wiredNodesArr=[];
-               for(var k=0;wiredNodes != undefined && wiredNodes != null && k<wiredNodes.length;k++){
-                       wiredNodesArr.push(getNode(nodeSet,wiredNodes[k]));
-               }
-
-               //use this sort to sort by y position
-               wiredNodesArr.sort(function(a, b){
-                       return a.y-b.y;
-               });
-
-               for(var k=0;k<wiredNodesArr.length;k++){
-                       var n = wiredNodesArr[k];
-                       processForXmlNumbers(nodeSet,n);
-               }
-       }
-}
-
-function updateXmlNumbers(){
-       xmlNumberCnt = 0;
-       var nodeSet = getCurrentFlowNodeSet();
-       if(nodeSet == null && nodeSet.length >0){
-               nodeSet.forEach(function(n){
-                       if(n.xmlnumber){
-                               delete n.xmlnumber;
-                       }
-               });
-       }
-       var dgStartNode = getDgStartNode(nodeSet);
-       processForXmlNumbers(nodeSet,dgStartNode);
-       var activeWorkspace=RED.view.getWorkspace();
-       RED.nodes.eachNode(function(n) {
-               //console.log("Node processed in eachNode");
-            if (n.z == activeWorkspace) {
-               if(n != null){
-                       var updatedNode = getNode(nodeSet,n.id);
-                       //console.log("updated Node processed in eachNode");
-                       //console.dir(updatedNode);
-                       
-                        if (n.id == updatedNode.id) {
-                               n.xmlnumber = updatedNode.xmlnumber;
-                               n.dirty = true;
-                        }
-               }
-           }   
-        });
-}
-
-function getOutcomeValue(node){
-       var xmlStr = "";
-       if(node != null && node.xml != undefined && node.xml !=""){
-               xmlStr = node.xml + "</outcome>";
-       }
-       var xmlDoc;
-               if (window.DOMParser){
-               try{
-                               var parser=new DOMParser();
-                       xmlDoc=parser.parseFromString(xmlStr,'text/xml');
-                       //console.log("Not IE");
-                       var n = xmlDoc.documentElement.nodeName;
-                       if(n == "html"){
-                               resp=false;
-                               console.log("Error parsing");
-                               return resp;
-                       }
-               }catch(e){
-                       console.log("xmlStr:" + xmlStr);
-                       console.log("Error parsing" +e);
-                       return null;
-               }
-        }else{ 
-               try{
-                       //console.log("IE");
-                       // code for IE
-                       xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
-                       xmlDoc.async=false;
-                       xmlDoc.loadXMLString(xmlStr); 
-               }catch(e){
-                       console.log("xmlStr:" + xmlStr);
-                       console.log("Error parsing" +e);
-                       return null;
-               }
-        } 
-       if(xmlDoc != null){
-               var xmlNode = xmlDoc.documentElement;
-               //console.dir(xmlNode);
-               var processedNode = xmlNode.nodeName;
-               //console.log("processedNode:" + processedNode);
-               var attrs = xmlNode.attributes;
-               for(var i=0;i<attrs.length;i++){
-                       if(attrs[i].nodeName == "value"){
-                               return  attrs[i].value;
-                       }
-               }
-       }
-       return null;
-}
-
-var dgNumberCnt = 0;
-function processForDgNumbers(nodeSet,node){
-               var outcomeTypes = [ "already-active", "failure", "not-found", "other", "outcomeFalse", "outcome", "outcomeTrue", "success" ];
-       if( node != null && node.type != 'dgstart' && node.type != 'service-logic' && node.type != 'method' ){
-               //console.log("child of " + parentNodeType + " :" + nodeType);
-               //check if NOT outcome node
-               if(outcomeTypes.indexOf(node.type) == -1){
-                       if(node.type == "GenericXML"){
-                               if(node.xml != undefined && node.xml !=  null && node.xml.indexOf("<outcome ") != -1){
-                                       //this GenericXML node is used for outcome , so need to skip
-                               }else{
-                                       if(node.dgnumber != undefined && node.dgnumber != null && node.dgnumber){
-                                               node.dgnumber.push(++dgNumberCnt);
-                                       }else{
-                                               node.dgnumber =  [++dgNumberCnt];
-                                       }
-                               }
-                       
-                       }else{
-                               if(node.dgnumber != undefined && node.dgnumber != null && node.dgnumber){
-                                       node.dgnumber.push(++dgNumberCnt);
-                               }else{
-                                       node.dgnumber =  [++dgNumberCnt];
-                               }
-                       }
-               }
-       }
-       
-       var hasOutcomeNodes = false;
-       if(node != null && node.wires != null && node.wires.length>0){
-               var wiredNodes=node.wires[0];
-               var wiredNodesArr=[];
-               for(var k=0;wiredNodes != undefined && wiredNodes != null && k<wiredNodes.length;k++){
-                       var wiredNode = getNode(nodeSet,wiredNodes[k]);
-                       //check if outcome node
-                       if(outcomeTypes.indexOf(wiredNode.type) != -1){
-                               hasOutcomeNodes = true;
-                       }
-                       if(wiredNode.type == "GenericXML"){
-                               if( node.xml != undefined && node.xml != null && node.xml.indexOf("<outcome ") != -1){
-                                       //this GenericXML node is used for outcome 
-                                       hasOutcomeNodes = true;
-                               }
-                       }
-                       wiredNodesArr.push(wiredNode);
-
-               }
-
-               //use this sort to sort by y position
-               wiredNodesArr.sort(function(a, b){
-                       return a.y-b.y;
-               });
-
-               /*
-               //USE THIS LOGIC TO SORT BY OUTCOME VALUE FOR SPECIFIC NODES            
-               var parentNodeType = node.type;
-               if(hasOutcomeNodes && parentNodeType != 'switchNode' && parentNodeType != 'block'  && parentNodeType != 'configure' ){  
-                       //use the value of outcome to sort the wired nodes
-                       wiredNodesArr.sort(function(a, b){
-                               var val1 = getOutcomeValue(a);
-                               var val2 = getOutcomeValue(b);
-                               //console.log("val1:" + val1);
-                               //console.log("val2:" + val2);
-                               if ( val1 < val2 ){
-                                       return -1;
-                               }else if ( val1 > val2 ){
-                                       return 1;
-                               }else{
-                                       return 0;
-                               }
-                       });
-               }else{
-                       //use this sort to sort by y position
-                       wiredNodesArr.sort(function(a, b){
-                               return a.y-b.y;
-                       });
-               }
-
-               */
-
-               for(var k=0;k<wiredNodesArr.length;k++){
-                       var n = wiredNodesArr[k];
-                       processForDgNumbers(nodeSet,n);
-               }
-       }
-}
-
-function updateDgNumbers(){
-       dgNumberCnt = 0;
-       var nodeSet = getCurrentFlowNodeSet();
-       if(nodeSet == null && nodeSet.length >0){
-               nodeSet.forEach(function(n){
-                       if(n.dgnumber){
-                               delete n.dgnumber;
-                       }
-               });
-       }
-       var dgStartNode = getDgStartNode(nodeSet);
-       processForDgNumbers(nodeSet,dgStartNode);
-       var activeWorkspace=RED.view.getWorkspace();
-       RED.nodes.eachNode(function(n) {
-               //console.log("Node processed in eachNode");
-            if (n.z == activeWorkspace) {
-               if(n != null){
-                       var updatedNode = getNode(nodeSet,n.id);
-                       //console.log("updated Node processed in eachNode");
-                       //console.dir(updatedNode);
-                       
-                        if (n.id == updatedNode.id) {
-                               //console.log(n.type + ":" + updatedNode.dgnumber);
-                               n.dgnumber = updatedNode.dgnumber;
-                               n.dirty = true;
-                        }
-               }
-           }   
-        });
-       return nodeSet; 
-}
-
-function customValidation(currNodeSet){
-       //validation to make sure there a block node infront of mutiple dgelogic nodes
-       flowDesignErrors=[];
-       var dgStartCnt=0;
-       var serviceLogicCnt=0;
-       var methodCnt=0;
-       for(var i=0;currNodeSet != null && i<currNodeSet.length;i++){
-               var node = currNodeSet[i];
-               var parentNodeName = node.name;
-               var parentNodeType = node.type;
-               var dgNumber = node.dgnumber;
-               if(parentNodeType == 'dgstart'){
-                       dgStartCnt++;   
-               }
-               if(parentNodeType == 'service-logic'){
-                       serviceLogicCnt++;      
-               }
-               if(parentNodeType == 'method'){
-                       methodCnt++;    
-               }
-               if(parentNodeType == "GenericXML"){
-                       if( node.xml != undefined && node.xml != null && node.xml.indexOf("<service-logic ") != -1 ){
-                               //this GenericXML node is used for service-logic 
-                               serviceLogicCnt++;
-                       }else if( node.xml != undefined && node.xml != null &&  node.xml.indexOf("<method ") != -1 ){
-                               //this GenericXML node is used for method
-                               methodCnt++;
-                       }else if( node.xml != undefined && node.xml != null &&  node.xml.indexOf("<block") != -1 ){
-                               //this GenericXML node is used for block
-                               parentNodeType = "block";
-                       }
-               }
-               if(node != null && node.wires != null && node.wires.length>0){
-                       var wiredNodes=node.wires[0];
-                       var wiredNodesArr=[];
-                       for(var k=0;wiredNodes != undefined && wiredNodes != null && k<wiredNodes.length;k++){
-                               wiredNodesArr.push(getNode(currNodeSet,wiredNodes[k]));
-                       }
-                       var countChildLogicNodes =0;
-                       for(var k=0;k<wiredNodesArr.length;k++){
-                               var n = wiredNodesArr[k];
-                               var nodeType = n.type;
-                               var outcomeTypes = [ "already-active", "failure", "not-found", "other", "outcomeFalse", "outcome", "outcomeTrue", "success" ];
-                               var isOutcomeOrSetNode = false;
-                               if(nodeType == "GenericXML"){
-                                       if( n.xml != undefined &&  n.xml != null &&  (n.xml.indexOf("<outcome ") != -1 || n.xml.indexOf("<set ") != -1)){
-                                               //this GenericXML node is used for outcome 
-                                               isOutcomeOrSetNode = true;
-                                       }
-                               }
-                               //console.log("child of " + parentNodeType + " :" + nodeType);
-                               if(outcomeTypes.indexOf(nodeType) > -1 ||nodeType == 'set' || isOutcomeOrSetNode){
-                                       //its a outcome or set node
-                               }else{
-                                       countChildLogicNodes++;
-                               }
-
-                               //console.log("parentNodeType:" + parentNodeType);
-                               if(countChildLogicNodes >1 && parentNodeType != 'block' && parentNodeType != 'for' ){
-                                       if(node.dgnumber != undefined &&  node.dgnumber){
-                                               flowDesignErrors.push("Warning:May need a block Node after Node. <br><span style='color:red'>Node Name:</span>" + node.name + "<br><span style='color:red'>DG Number:</span>" + node.dgnumber[0] );
-                                       }else{
-                                               flowDesignErrors.push("Warning:May need a block Node after Node <br><span style='color:red'>Node name:</span>" + parentNodeName);
-                                       }
-                                       break;
-                               }
-                       }
-               }
-       }
-       if(dgStartCnt > 1){
-               flowDesignErrors.push("Error:There should  only be 1 dgstart Node in the current workspace.");
-       }
-
-       if(serviceLogicCnt > 1){
-               flowDesignErrors.push("Error:There should  only be 1 service-logic Node in the current workspace.");
-       }
-
-       if(methodCnt > 1){
-               flowDesignErrors.push("Error:There should  only be 1 method Node in the current workspace.");
-       }
-
-       if(flowDesignErrors != null && flowDesignErrors.length >0){
-               return false;
-       }
-       return true;
-}
-
-var flowDesignErrors = [];
-function showFlowDesignErrorBox(){
-       if(flowDesignErrors != null && flowDesignErrors.length >0){
-               var htmlStr="<div id='flowpath-err-list-div'><table id='fpeTable' border='1'><tr><th>Error List</th></tr>";     
-               for(var j=0;flowDesignErrors != null && j<flowDesignErrors.length;j++){
-                       var errSeq = j+1;
-                       htmlStr += "<tr><td>" + errSeq + ")"  + flowDesignErrors[j] + "</td></tr>"; 
-               }
-               htmlStr += "</table></div>";
-
-               //$('<div></div>').dialog({
-
-               $('#flow-design-err-dialog').dialog({
-                              modal: true,
-                              title: "Flow design Error List ",
-                              width: 500,
-                              /*open: function () {
-                                $(this).html(htmlStr);
-                              },*/
-                              buttons: {
-                                Close: function () {
-                                  $(this).dialog("close");
-                                }
-                              }
-                            }).html(htmlStr); // end dialog div
-       }
-}
-
-
-function getCurrentFlowNodeSet(){
-               var nodeSet=[];
-               //console.dir(RED);
-               //RED.view.dirty();
-               //RED.view.redraw();
-               var activeWorkspace=RED.view.getWorkspace();
-               RED.nodes.eachNode(function(n) {
-                       if (n.z == activeWorkspace) {
-                               nodeSet.push({'n':n});
-                       }
-               });
-
-               var exportableNodeSet = RED.nodes.createExportableNodeSet(nodeSet);
-               //console.dir(exportableNodeSet);
-               //console.log(JSON.stringify(exportableNodeSet));
-               return exportableNodeSet;
-}
-
-function getNode(nodeSet,id){
-               for(var i=0;i<nodeSet.length;i++){
-                       if(nodeSet[i].id == id){
-                               return nodeSet[i];
-                       }       
-               }
-               return null;
-}
-function getNodeIdToNodeMap(nodeSet){
-               var nodeIdToNodeMap ={};        
-               for(var i=0;i<nodeSet.length;i++){
-                               nodeIdToNodeMap[nodeSet[i].id] = nodeSet[i];
-                               if(nodeSet[i].type == "dgstart"){
-                                       nodeIdToNodeMap["dgstart"] =  nodeSet[i];
-                               }
-               }
-               return nodeIdToNodeMap;
-}
-
-function validateEachNodeXml(){
-               var activeWorkspace=RED.view.getWorkspace();
-               RED.nodes.eachNode(function(n) {
-                       if (n.z == activeWorkspace) {
-                               var xml = n.xml;        
-                               if( xml != null && xml != ''){
-                                 var validationSuccess = validateXML(n.xml);
-                                       if(validationSuccess){
-                                               n.status = {fill:"green",shape:"dot",text:"OK"};
-                                       }else{
-                                               n.status = {fill:"red",shape:"dot",text:"ERROR"};
-                                       }
-                               }
-                       }
-               });
-}
-
-
-function getNodeToXml(inputNodeSet){
-               var exportableNodeSet; 
-       //uses inputNodeSet if passed otherwise build the latest nodeSet
-       
-       //$("#btn-deploy").removeClass("disabled");
-
-
-               function getNode(id){
-                       for(var i=0;i<exportableNodeSet.length;i++){
-                               if(exportableNodeSet[i].id == id){
-                                       return exportableNodeSet[i];
-                               }       
-                       }
-                       return null;
-               }
-
-               function getStartTag(node){
-                       var startTag="";
-                       var xmlStr="";
-                       if(node != null && node.type != 'dgstart'){
-                               xmlStr=node.xml;
-                               var regex = /(<)([\w-]+)(.*)?/;
-                               var match = regex.exec(xmlStr);
-                               if(match != null){
-                                       if(match[1] != undefined && match[2] != undefined){
-                                               startTag = match[2];
-                                       }
-                               }else{
-                                       console.log("startTag not found.");
-                               }       
-                       }
-                       return startTag;
-               }
-
-               if(inputNodeSet == null || inputNodeSet == undefined){  
-                       exportableNodeSet = getCurrentFlowNodeSet();
-               }else{
-                       exportableNodeSet = JSON.parse(inputNodeSet);
-               }
-               var dgstartNode = getDgStartNode(exportableNodeSet);
-
-               var level=0;
-               var fullXmlStr="";
-
-               printXml(dgstartNode);
-               
-
-               function printXml(node){
-                       var xmlStr="";
-                       var startTag = "";
-                       if(node != null && node.type != 'dgstart'){
-                               var comments=node.comments;
-                               if(comments != null && comments != ""){
-                                       //if xml comments field already has the <!-- and --> remove them 
-                                       comments=comments.replace("<!--","");
-                                       comments=comments.replace("-->","");
-                                       xmlStr="<!--" + comments + "-->";
-                               }       
-                               xmlStr+=node.xml;
-                               startTag = getStartTag(node);
-                               fullXmlStr +=xmlStr;
-                               /*
-                               if(level > 0){
-                                       var spacing = Array(level).join("  ");  
-                                       xmlStr=xmlStr.replace(/\n/g,spacing);
-                                       fullXmlStr +=xmlStr;
-                                       
-                                       console.log(xmlStr);
-                               }else{
-                                       fullXmlStr +=xmlStr;
-                                       console.log(xmlStr);
-                               }
-                               */
-                       }
-
-                       //console.log("startTag:" + startTag);
-       
-                       var wiredNodes = [];
-                       var wiredNodesArr = [];
-                       if(node != null && node.wires != null && node.wires[0] != null &&  node.wires[0] != undefined && node.wires[0].length >0 ){
-                               wiredNodes=node.wires[0];
-                               //console.log("Before sort");
-                               for(var k=0;wiredNodes != undefined && wiredNodes != null && k<wiredNodes.length;k++){
-                                       wiredNodesArr.push(getNode(wiredNodes[k]));
-                               }
-                               //console.dir(wiredNodesArr);
-                               //sort based on y position
-                               wiredNodesArr.sort(function(a, b){
-                                       return a.y-b.y;
-                               });
-                               //console.log("After sort");
-                               //console.dir(wiredNodesArr);
-                       }
-
-                       for(var k=0;wiredNodesArr != null && k<wiredNodesArr.length;k++){
-                               level++;
-                               var nd = wiredNodesArr[k];
-                               printXml(nd);
-                       }
-
-                       //append end tag
-                       if(startTag != ""){
-                               fullXmlStr += "</" + startTag + ">";
-                               /*
-                               if(level >0){
-                                       var spacing = Array(level).join("  ");  
-                                       fullXmlStr += spacing + "</" + startTag + ">";
-                                       console.log(spacing + "</" + startTag + ">");
-                               }else{
-                                       fullXmlStr += "</" + startTag + ">";
-                                       console.log("</" + startTag + ">");
-                               }
-                               */
-                       }       
-
-                       /*if(level>0){
-                               level=level-1;
-                       }
-                       */
-                       //console.log("endTag:" + startTag);
-                       //console.log("xml:" + fullXmlStr);
-               }
-               //console.log("fullXmlStr:" + fullXmlStr);
-       return fullXmlStr;
-}
-
-function showFlow(filePath){
-var jqxhr = $.post( "/getSharedFlow",{"filePath":filePath})
-  .done(function(data) {
-       $( "#dgflow-browser-dialog").dialog("close");
-       var migratedNodes = migrateNodes(data);
-       //RED.view.importNodes(data)
-       RED.view.importNodes(JSON.stringify(migratedNodes));
-    //console.log( "import done");
-  })
-  .fail(function() {
-       RED.notify("Could not import user flow .");     
-       $( "#dgflow-browser-dialog").dialog("close");
-     console.log( "error occured importing flow.");
-  })
-  .always(function() {
-    //console.log( "complete" );
-  });
-}
-
-function showFlowXml(filePath){
-var jqxhr = $.post( "/getSharedFlow",{"filePath":filePath})
-  .done(function(data) {
-       //console.dir(data);
-       var xmlStr=getNodeToXml(data);
-       showImportedXml(xmlStr,this);
-  })
-  .fail(function() {
-       RED.notify("Could not convert to XML.");        
-       $( "#dgflow-browser-dialog").dialog("close");
-     console.log( "error occured importing flow.");
-  })
-  .always(function() {
-    //console.log( "complete" );
-  });
-}
-
-function showFlowFiles(userName){
-               //var divStyle="color:#07c; margin-bottom: 1.2em; font-size: 16px;";
-               //var divStyle="<style>#data-container a { color: #067ab4; font-size: 0.75em;} #data-container a:hover { text-decoration: underline; padding: -15px -15px -15px 15px; } </style>";
-               var divStyle="<style>#data-container a { color: #067ab4; font-size: 0.75em;} #data-container a:hover { text-decoration: underline; padding: -15px -15px -15px 15px; } .header { height: 40px; border-bottom: 1px solid #EEE; background-color: #ffffff; height: 40px; -webkit-border-top-left-radius: 5px; -webkit-border-top-right-radius: 5px; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; border-top-left-radius: 5px; border-top-right-radius: 5px; } .footer { height: 40px; background-color: whiteSmoke; border-top: 1px solid #DDD; -webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; }</style>";
-
-               var htmlStr=divStyle + "<div class='header'>List of Flow files of User " + userName + "</div><div id='data-container'><ul>" ;
-                $.post( "/getFiles/" + userName)
-                         .done(function( data ) {
-                                //console.dir(data);
-                               //console.log("found " + data.length + " files");
-                               if(data != null && data.length != undefined && data.length != 0){
-                                       if(data != null && data.length>0){
-                                               for(var k=0;k<data.length;k++){
-                                                       htmlStr += "<li><a href=\"#\" onclick=\"showFlow('" +data[k].filePath + "')\">" + data[k].name + "</a></li>";
-                                               /*
-                                                       //Use this code to display the View Xml Link 
-                                                       htmlStr += "<li><a href=\"#\" onclick=\"showFlow('" +data[k].filePath + "')\">" + data[k].name + "</a><span style=\"margin-left:15px;color:blue\"><a href=\#\" onclick=\"showFlowXml('" +data[k].filePath + "')\">[View Xml]</a></span></li>";
-                       */
-                                               }
-                                               htmlStr+="</ul></div>";
-                                       }
-                                       $( "#dgflow-browser-dialog").html(htmlStr);
-                               }else{
-                                       //console.log("no flow files found for user " + userName);
-                                       var noFlowFilesHtml = divStyle + "<div id='data-container'><p>No downloaded Flow files found in " + userName + " directory</p><a href='#' onclick='javascript:closeAndShowFlowShareUsers()'>Back to List.</a></div>";
-                                       $( "#dgflow-browser-dialog").html(noFlowFilesHtml);
-                               }
-                         })
-                         .fail(function(err) {
-                                 console.log( "error" + err );
-                         })
-                         .always(function() {
-                               //console.log("done");
-                         });
-       
-}
-
-       function  closeAndShowFlowShareUsers(){
-                $("#dgflow-browser-dialog").dialog( "close" );
-               var divStyle="<style>#data-container a { color: #067ab4; font-size: 0.75em;} #data-container a:hover { text-decoration: underline; padding: -15px -15px -15px 15px; } .header { height: 40px; border-bottom: 1px solid #EEE; background-color: #ffffff; height: 40px; -webkit-border-top-left-radius: 5px; -webkit-border-top-right-radius: 5px; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; border-top-left-radius: 5px; border-top-right-radius: 5px; } .footer { height: 40px; background-color: whiteSmoke; border-top: 1px solid #DDD; -webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; }</style>";
-               $.get( "/flowShareUsers")
-                               .done(function( data ) {
-                                       
-                                       var header="<div class='header'>List of downloaded DG Flows </div>";
-                                       var html=  divStyle + header +  "<div id='data-container'>";
-                                       html+="<ul>";
-                                       if(data != null){
-                                               var users=data.flowShareUsers;
-                                               users.sort(function (a,b){
-                                                        if(a.name > b.name){
-                                                                return 1;
-                                                        }else if(a.name <  b.name){
-                                                                return -1;
-                                                        }else{
-                                                                return 0;
-                                                        }
-                                                });
-                                               for(var i=0;users != null && i<users.length;i++){
-                                                       html+="<li><a href=\"#\" onclick=\"showFlowFiles('" + users[i].rootDir + "')\">" + users[i].name + "</a></li>";
-                                               }
-                                       }
-                                       html+="</ul>";
-                                       html+="</div>";
-                                       $( "#dgflow-browser-dialog" ).dialog({
-                                       title: "Dowloaded DG Flow Browser",
-                                       modal: true,
-                                       autoOpen: true,
-                                       width: 530,
-                                       height: 530,
-                                       buttons: [
-                                               {
-                                                       text: "Close",
-                                                       click: function() {
-                                                               $( this ).dialog( "close" );
-                                                       }
-                                               }
-                                               ]
-                                       }).html(html);
-                                       $("#dgflow-browser-dialog").show();
-                               })
-                                .fail(function(err) {
-                                         RED.notify("Failed to get users.");
-                                })
-                                 .always(function() {
-                               });
-       }
-
-function showImportedXml(xmlStr,dialogBox){
-       var formattedXml=vkbeautify.xml(xmlStr);
-       var that = dialogBox;
-                require(["orion/editor/edit"], function(edit) {
-                that.editor = edit({
-                    parent:document.getElementById('dgflow-browser-dialog'),
-                    lang:"html",
-                    readonly:true,
-                    contents: formattedXml
-                });
-                RED.library.create({
-                    url:"functions", // where to get the data from
-                    type:"function", // the type of object the library is for
-                    editor:that.editor, // the field name the main text body goes to
-                    fields:['name','outputs']
-                });
-                });
-}
-
-function getTag(xmlStr){
-        var tag= null ;
-       if(xmlStr != null){
-               xmlStr = xmlStr.trim();
-       }
-        try{
-                var regex = new RegExp("(<)([^ >]+)");
-                var match = regex.exec(xmlStr);
-                if(match != null){
-                        if(match[1] != undefined && match[2] != undefined){
-                                tag = match[2];
-                        }
-                }
-        }catch(e){
-                console.log(e);
-        }
-       return tag;
-
-}
-
-function getAttributeValue(xmlStr,attribute){
-
-       var attrVal=null;
-       try{
-               var myRe = new RegExp(attribute + "[\s+]?=[\s+]?['\"]([^'\"]+)['\"]","m");
-               var myArray = myRe.exec(xmlStr);
-               if(myArray != null && myArray[1] != null){
-                       attrVal=myArray[1];
-               }
-       }catch(err){
-               console.log(err);
-       }
-       return attrVal;
-}
-
-function showOrHideTab(checkbox,idVal){
-
-       var activeWorkspace=RED.view.getWorkspace();
-       var table = $("#ftab02");
-       $('td input:checkbox',table).each(function(i){
-               console.log(this.checked);
-       });
-       //console.dir($('td input:checkbox',table).prop('checked',this.checked));
-
-        $(".red-ui-tabs li a").each(function(i){
-               var id=$(this).attr("href").replace('#','');
-               if(id == idVal){
-                       $(this).parent().toggle();
-                       var isVisible = $(this).parent().is(":visible"); 
-                       if(isVisible){
-                               checkbox.checked = true;
-                       }else{
-                               checkbox.checked = false;
-                       }
-                       if(activeWorkspace == id){
-                               //$("#chart").hide();
-                               //var li = ul.find("a[href='#"+id+"']").parent();
-                               var li = $(this).parent();
-                               if (li.hasClass("active")) {
-                                       li.removeClass("active");
-                                       if(li.parent().children().size() != 0){
-                                       }
-                                       console.log("has Class active");
-                                       var tab = li.prev();
-                                       if (tab.size() === 0) {
-                                               console.log("li prev size 0");
-                                               tab = li.next();
-                                       }
-                                       if(tab.is(":visible")){
-                                               console.log("added active");
-                                               tab.addClass("active");
-                                               tab.click();
-                                               //tab.trigger("click");
-                                       }
-                                       //console.dir(tab);
-                                       //tab.parent().addClass("active");
-                                       //tab.click();
-                               }
-                       }else{
-                                               console.log("added active id" +id);
-                                               if(isVisible){
-                                                       var li = $(this).parent();
-                                                       li.addClass("active");
-                                                       li.click();
-                                                       //console.dir(li);
-                                               }else{
-                                                       var li = $(this).parent();
-                                                       li.removeClass("active");
-                                               }
-                       }
-               }
-       });
-/*
-        $(".red-ui-tabs li a").each(function(i){
-               var id=$(this).attr("href").replace('#','');
-               if(id != idVal){
-                       $(this).trigger("click");
-                       if(activeWorkspace == idVal){
-                               $("#chart").show();
-                       }
-                       return false;
-               }
-       });
-*/
-}
-
-function performGitCheckout(){
-       $("#responseId").text("");
-        if(!event) event = window.event;
-         var target = $(event.target);
-         target.val("Processing");
-         target.css({ "background-image": "url('images/page-loading.gif')" });
-         target.css({ "background-repeat": "no-repeat" });
-         target.css({ "background-size": "25px 25px" });
-
-       var branch = document.getElementById("branchId").value.trim();
-       var statusObj = document.getElementById("responseId");
-       if(branch == null || branch == ''){
-               statusObj.innerText = "Branch is required.";
-               return;
-       }
-       var urlVal = "/gitcheckout?branch=" + branch;
-       $.get(urlVal)
-               .done(function( data ) {
-                       var output = data.output;
-                       if(output != null){
-                               output=output.replace(/\n/g,"<br>");
-                               statusObj.innerHTML = output;
-                       }
-                })
-               .fail(function(err) {
-                       statusObj.innerText = "Failed to do git checkout.";
-               })
-               .always(function() {
-                       $("#responseId").show();
-                        target.val("Checkout");
-                         target.css({ "background-image": "none" });
-                });
-}
-
-function performGitPull(){
-       $("#responseId").text("");
-        if(!event) event = window.event;
-         var target = $(event.target);
-         target.val("Processing");
-         target.css({ "background-image": "url('images/page-loading.gif')" });
-         target.css({ "background-repeat": "no-repeat" });
-         target.css({ "background-size": "25px 25px" });
-
-       var statusObj = document.getElementById("responseId");
-       var urlVal = "/gitpull";
-       $.get(urlVal)
-               .done(function( data ) {
-                       var output = data.output;
-                       if(output != null){
-                               output=output.replace(/\n/g,"<br>");
-                               statusObj.innerHTML = output;
-                       }
-                })
-               .fail(function(err) {
-                       statusObj.innerText = "Failed to do git pull.";
-               })
-               .always(function() {
-                       $("#responseId").show();
-                        target.val("Pull");
-                         target.css({ "background-image": "none" });
-                });
-}
-
-
-function activateClickedTab(idVal) {
-
-       $("#filter-tabs-dialog").dialog( "close" );
-       var ul = $("#workspace-tabs");
-       ul.children().each(function(){
-               var li = $(this);
-               var link =li.find("a");
-               var href = link.prop("href");
-               var hrefId = href.split("#");
-               if(hrefId[1] == idVal){
-                link.trigger("click");
-               }
-       });
-}
-
-function deleteOrRenameTab(idVal) {
-       $("#filter-tabs-dialog").dialog( "close" );
-       var ul = $("#workspace-tabs");
-       ul.children().each(function(){
-               var li = $(this);
-               var link =li.find("a");
-               var href = link.prop("href");
-               var hrefId = href.split("#");
-               if(hrefId[1] == idVal){
-                       link.trigger("click");
-                       link.trigger("dblclick");
-               }
-       });
-}
-
-function deleteSelectedTab(idVal,title,_module,rpc,version){
-       var dgInfo = "<div><table width='100%' border='1'><tr style='background-color:#65a9d7;color:white;' ><th>Tab Title</th><th>Module</th><th>RPC</th><th>Version</th></tr><tr style='background-color:white'><td>" + title + "</td><td>" + _module +"</td><td>" + rpc + "</td><td>" +version +  "</td></tr></table></div><br>";
-       var alertMsg = dgInfo + "<p>Are you sure you want to Delete this Tab ?</p>"; 
-
-$( "#tabAlertDialog" ).dialog({
-  dialogClass: "no-close",
-  modal:true,
-  draggable : true,
-  /*dialogClass: "alert",*/
-  title: "Confirm Tab sheet Delete",
-  width: 600,
-  buttons: [
-    {
-      text: "Delete",
-      class:"alertDialogButton",
-      click: function() {
-               var ws = RED.nodes.workspace(idVal);
-               RED.view.removeWorkspace(ws);
-               var historyEvent = RED.nodes.removeWorkspace(idVal);
-               historyEvent.t = 'delete';
-               historyEvent.dirty = true;
-               historyEvent.workspaces = [ws];
-               RED.history.push(historyEvent);
-               RED.view.dirty(true);
-               $( this ).dialog( "close" );
-               $("#filter-tabs-dialog").dialog( "close" );
-               $("#btn-manage-tabs").trigger("click");
-       }
-    },
-    {
-      text: "Cancel",
-      class:"alertDialogButton",
-      click: function() {
-        $( this ).dialog( "close" );
-      }
-    }
-  ]
-}).html(alertMsg);
-}
-
-function renameSelectedTab(idVal,title,_module,rpc,version){
-       var dgInfo = "<div><table width='100%' border='1'><tr style='background-color:#65a9d7;color:white;' ><th>Tab Title</th><th>Module</th><th>RPC</th><th>Version</th></tr><tr style='background-color:white'><td><input id='tab-name-" + idVal + "' type='text' value='" + title + "'></td><td>" + _module +"</td><td>" + rpc + "</td><td>" +version +  "</td></tr></table></div><br>";
-       var alertMsg = dgInfo + "<p>Change the title and click Rename.</p>"; 
-
-$( "#tabAlertDialog" ).dialog({
-  dialogClass: "no-close",
-  modal:true,
-  draggable : true,
-  /*dialogClass: "alert",*/
-  title: "Rename Tab sheet",
-  width: 600,
-  buttons: [
-    {
-      text: "Rename",
-      class:"alertDialogButton",
-      click: function() {
-               var ws = RED.nodes.workspace(idVal);
-               var label = document.getElementById("tab-name-" + idVal).value; 
-               //console.log("label:" +label);
-               //console.log("ws.label:" + ws.label);
-               if (ws.label != label) {
-                        ws.label = label;
-                        var link = $("#workspace-tabs a[href='#"+idVal+"']");
-                        link.attr("title",label);
-                        link.text(label);
-                        RED.view.dirty(true);
-                }
-               $("#tabAlertDialog").dialog('destroy').remove();
-               //$(this).dialog( "close" );
-               $("#filter-tabs-dialog").dialog( "close" );
-               $("#btn-manage-tabs").trigger("click");
-       }
-    },
-    {
-      text: "Cancel",
-      class:"alertDialogButton",
-      click: function() {
-        $( this ).dialog( "close" );
-      }
-    }
-  ]
-}).html(alertMsg);
-}
-
-function performGitStatus(){
-       $("#responseId").text("");
-        if(!event) event = window.event;
-         var target = $(event.target);
-         target.val("Processing");
-         target.css({ "background-image": "url('images/page-loading.gif')" });
-         target.css({ "background-repeat": "no-repeat" });
-         target.css({ "background-size": "25px 25px" });
-
-       var statusObj = document.getElementById("responseId");
-       var urlVal = "/gitstatus";
-       $.get(urlVal)
-               .done(function( data ) {
-                       var output = data.output;
-                       if(output != null){
-                               output=output.replace(/\n/g,"<br>");
-                               statusObj.innerHTML = output;
-                       }
-                       //statusObj.innerText = data.output;
-                })
-               .fail(function(err) {
-                       statusObj.innerText = "Failed to do git status.";
-               })
-               .always(function() {
-                       $("#responseId").show();
-                        target.val("Status");
-                         target.css({ "background-image": "none" });
-                });
-}
-
-function migrateNodes(jsonStr){
-       var nodes = JSON.parse(jsonStr);
-       nodes.forEach( function(node) {
-               if( node.xml != undefined && node.xml != null && node.xml.indexOf("<service-logic") != -1){
-                       //console.log(node.xml);
-                       var module="";
-                       var version="";
-                       module=getAttributeValue(node.xml,"module");
-                       /*
-                       var myRe = new RegExp("module=\"(.*)\" ", "m");
-                       var myArray = myRe.exec(node.xml);
-                       if(myArray != null && myArray[1] != null){
-                               module=myArray[1];
-                       }
-                       myRe = new RegExp("version=\"(.*)\">", "m");
-                        myArray = myRe.exec(node.xml);
-                       if(myArray != null && myArray[1] != null){
-                               version=myArray[1];
-                               //console.dir(myArray);
-                       }
-                       */
-                       version=getAttributeValue(node.xml,"version");
-                       node.type="service-logic";
-                       //node.category="DGEmain";
-                       node.module=module;
-                       node.version=version;
-                       if(module != null && version != null){
-                               node.name=module+ " " + version;
-                       }
-                       console.log("module=" + module);
-                       console.log("version=" + version);
-               }else if( node.xml != undefined && node.xml != null && node.xml.indexOf("<method") != -1){
-                       var rpc=getAttributeValue(node.xml,"rpc");
-                       node.type="method";
-                       if(rpc != null){
-                               node.name=rpc;
-                       }
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<outcome") != -1){
-                        var uxml = node.xml.toUpperCase();
-                       if(uxml.indexOf("FAILURE") != -1){
-                               node.type="failure";
-                       }else if(uxml.indexOf("SUCCESS") != -1){
-                               node.type="success";
-                       }else if(uxml.indexOf("TRUE") != -1){
-                               node.type="outcomeTrue";
-                       }else if(uxml.indexOf("FALSE") != -1){
-                               node.type="outcomeFalse";
-                       }else if(uxml.indexOf("ALREADY-ACTIVE") != -1){
-                               node.type="already-active";
-                       }else if(uxml.indexOf("NOT-FOUND") != -1){
-                               node.type="not-found";
-                       }else{
-                               node.type="other";
-                       }
-               }else if( node.xml != undefined &&node.xml != null && node.xml.indexOf("<return") != -1){
-                        var uxml = node.xml.toUpperCase();
-                       if(uxml.indexOf("FAILURE") != -1){
-                               node.type="returnFailure";
-                       }else if(uxml.indexOf("SUCCESS") != -1){
-                               node.type="returnSuccess";
-                       }
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<exists") != -1){
-                       node.type="exists";
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<block") != -1){
-                       node.type="block";
-                       var atomic=getAttributeValue(node.xml,"atomic");
-                       
-                       if(atomic=='true'){
-                               node.atomic="true";
-                               node.name="block : atomic";
-                       }else{
-                               node.atomic="false";
-                               node.name="block";
-                       }
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<save") != -1){
-                       node.type="save";
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<switch") != -1){
-                       node.type="switchNode";
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<record") != -1){
-                       node.type="record";
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<call") != -1){
-                       node.type="call";
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<release") != -1){
-                       node.type="release";
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<set") != -1){
-                       node.type="set";
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<for") != -1){
-                       node.type="for";
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<is-available") != -1){
-                       node.type="is-available";
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<reserve") != -1){
-                       node.type="reserve";
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<get-resource") != -1){
-                       node.type="get-resource";
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<configure") != -1){
-                       node.type="configure";
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<delete") != -1){
-                       node.type="delete";
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<execute") != -1){
-                       node.type="execute";
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<notify") != -1){
-                       node.type="notify";
-               }else if(node.xml != undefined && node.xml != null && node.xml.indexOf("<update") != -1){
-                       node.type="update";
-               }
-               //console.dir(node);
-       });     
-       return nodes;
-}