[CCSDK-28] populated the seed code for dgbuilder
[ccsdk/distribution.git] / dgbuilder / nodes / dge / dgemain / dgstart.html
diff --git a/dgbuilder/nodes/dge/dgemain/dgstart.html b/dgbuilder/nodes/dge/dgemain/dgstart.html
new file mode 100644 (file)
index 0000000..9caa841
--- /dev/null
@@ -0,0 +1,1322 @@
+<!--
+  Copyright 2013 IBM Corp.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<div id="svclogicPageDiv" ></div>
+<!-- dgbuilder javascript files START -->
+<script src="util/js/validateNodeXml.js"/>
+<script src="util/js/sliValues.js"/>
+<script src="util/js/dgeToXml.js"/>
+<script src="util/js/vkbeautify.0.99.00.beta.js"/>
+<!-- dgbuilder javascript files END -->
+
+<script type="text/x-red" data-template-name="dgstart">
+    <div class="form-tips">See the Info tab for help using this node.</div>
+</script>
+<style>
+.no-close .ui-dialog-titlebar-close {display: none }
+.alertDialogButton {
+   border-top: 1px solid #96d1f8;
+   background: #65a9d7;
+   background: -webkit-gradient(linear, left top, left bottom, from(#3e779d), to(#65a9d7));
+   background: -webkit-linear-gradient(top, #3e779d, #65a9d7);
+   background: -moz-linear-gradient(top, #3e779d, #65a9d7);
+   background: -ms-linear-gradient(top, #3e779d, #65a9d7);
+   background: -o-linear-gradient(top, #3e779d, #65a9d7);
+   padding: 5px 10px;
+   -webkit-border-radius: 8px;
+   -moz-border-radius: 8px;
+   border-radius: 8px;
+   -webkit-box-shadow: rgba(0,0,0,1) 0 1px 0;
+   -moz-box-shadow: rgba(0,0,0,1) 0 1px 0;
+   box-shadow: rgba(0,0,0,1) 0 1px 0;
+   text-shadow: rgba(0,0,0,.4) 0 1px 0;
+   color: white;
+   font-size: 14px;
+   font-family: Georgia, serif;
+   text-decoration: none;
+   vertical-align: middle;
+   }
+.alertDialogButton:hover {
+   border-top-color: #28597a;
+   background: #28597a;
+   color: #ccc;
+   }
+
+.alertDialogButton:active {
+   border-top-color: #1b435e;
+   background: #1b435e;
+   }
+.disabled-button {
+   border-top: 1px solid #96d1f8;
+   background: lightgrey;
+   background: -webkit-gradient(linear, left top, left bottom, from(grey), to(lightgrey));
+   background: -webkit-linear-gradient(top, grey, grey);
+   background: -moz-linear-gradient(top, grey, grey);
+   background: -ms-linear-gradient(top, grey, grey);
+   background: -o-linear-gradient(top, grey, grey);
+   padding: 5px 10px;
+   -webkit-border-radius: 8px;
+   -moz-border-radius: 8px;
+   border-radius: 8px;
+   -webkit-box-shadow: rgba(0,0,0,1) 0 1px 0;
+   -moz-box-shadow: rgba(0,0,0,1) 0 1px 0;
+   box-shadow: rgba(0,0,0,1) 0 1px 0;
+   text-shadow: rgba(0,0,0,.4) 0 1px 0;
+   color: lightgrey;
+   font-size: 14px;
+   font-family: Georgia, serif;
+   text-decoration: none;
+   vertical-align: middle;
+   }
+</style>
+<script type="text/javascript">
+
+function activateDG(module,rpc,version,mode,displayOnlyCurrent){
+       var paramsObj = {'module': module , 'rpc' : rpc , 'version' : version , 'mode' : mode,'displayOnlyCurrent' : false};
+       if(displayOnlyCurrent){
+               paramsObj = {'module': module , 'rpc' : rpc , 'version' : version , 'mode' : mode,'displayOnlyCurrent' : true};
+       }
+       var dgInfo = "<div><table width='100%' border='1'><tr style='background-color:#65a9d7;color:white;' ><th>Module</th><th>RPC</th><th>Version</th></tr><tr style='background-color:white'><td>" + module +"</td><td>" + rpc + "</td><td>" +version +  "</td></tr></table></div><br>";
+       var alertMsg = dgInfo + "<p>Are you sure you want to Activate this DG ?</p>"; 
+$( "#alertdialog" ).dialog({
+  dialogClass: "no-close",
+  autoOpen :false,
+  modal:true,
+  draggable : true,
+  /*dialogClass: "alert",*/
+  title: "Confirm Activate",
+  width: 600,
+  buttons: [
+    {
+      text: "Activate",
+      class:"alertDialogButton",
+      click: function() {
+       $.get("/activateDG" , paramsObj)
+       .done(function( data ) {
+                  //RED.notify("<strong>Activated Successfully</strong>");
+               var htmlStr = "";
+               var title ="";
+               if(displayOnlyCurrent){
+                        htmlStr=getHtmlStr(data,true);
+                        title="Service Logic Administration  Module=" + module + " and RPC=" + rpc;
+               }else{
+                        htmlStr=getHtmlStr(data);
+                        title= "Service Logic Administration - " + data.dbHost; 
+               }
+               $("#svclogicPageDiv").dialog({
+                               modal:true,     
+                               title: title,
+                               width: 1200,
+                               height: 750,
+                                       minWidth : 600, 
+                                       minHeight :450, 
+                               }).html(htmlStr);
+         })
+       .fail(function( err ) {
+                  RED.notify("<strong>Could not Activate</strong>");
+               var htmlStr = "<p>" + "could not activate" + module + " " + rpc + " " + version +"</p> <a onclick='javascript:showSLA()'></a>";
+               if(displayOnlyCurrent == true){
+                        htmlStr = "<p>" + "could not activate" + module + " " + rpc + " " + version +"</p> <a onclick='javascript:showCurrentDGs(\"" + module + "\",\"" + rpc + "\")'>Back to DG List</a>";
+               }
+               $("#svclogicPageDiv").dialog({
+                               modal:true,     
+                               title: "Service Logic Administration - " + err.dbHost, 
+                               width: 1200,
+                               height: 750,
+                                       minWidth : 600, 
+                                       minHeight :450, 
+                               }).html(htmlStr);
+         })
+       .always(function() { 
+               // $('.ui-dialog:has(#alertdialog)').empty().remove();
+               $("#alertdialog" ).dialog('close');
+               
+       });
+       }
+    },
+    {
+      text: "Cancel",
+      class:"alertDialogButton",
+      click: function() {
+       //$('.ui-dialog:has(#alertdialog)').empty().remove();
+        $( this ).dialog( "close" );
+      }
+    }
+  ]
+}).html(alertMsg).dialog('open');
+//var dialogClass = $("#alertdialog").dialog( "option", "dialogClass" );
+//$( "#alertdialog" ).dialog( "option", "dialogClass", "alert" );
+//$("#alertdialog").dialog("widget").find(".ui-dialog-buttonpane").css("background-color", "#ECECFF");
+/*
+$('#alertdialog').css("background-color", "#ECECEC");
+$("#alertdialog").dialog("widget").find(".ui-dialog-buttonpane").css("background-color", "#ECECEC");
+
+// button pane style
+$("#alertdialog").dialog("widget").find(".ui-dialog-buttonpane").css({"padding":".1em .1em .1em 0","margin":"0 0 0 0"} )
+
+// button style
+$("#alertdialog").dialog("widget").find("button").css({"padding":"0 .2em 0 .2em","margin":"0 .5em 0 0"} )
+$("#alertdialog").dialog("widget").find("button").addClass("alertDialogButton");
+*/
+//console.dir($("#alertdialog"));
+}
+
+
+function deActivateDG(module,rpc,version,mode,displayOnlyCurrent){
+       var paramsObj = {'module': module , 'rpc' : rpc , 'version' : version , 'mode' : mode,'displayOnlyCurrent' : false};
+       if(displayOnlyCurrent){
+               paramsObj = {'module': module , 'rpc' : rpc , 'version' : version , 'mode' : mode,'displayOnlyCurrent' : true};
+       }
+       var dgInfo = "<div ><table width='100%' border='1'><tr style='background-color:#65a9d7;color:white;'><th>Module</th><th>RPC</th><th>Version</th></tr><tr style='background-color:white'><td>" + module +"</td><td>" + rpc + "</td><td>" +version +  "</td></tr></table></div><br>";
+       var alertMsg = dgInfo + "<p>Are you sure you want to De-Activate this DG ?</p>"; 
+$( "#alertdialog" ).dialog({
+  dialogClass: "no-close",
+  autoOpen : false,    
+  modal:true,
+  draggable : true,
+  title: "Confirm De-Activate",
+  width: 600,
+  buttons: [
+    {
+      text: "De-Activate",
+      class:"alertDialogButton",
+      click: function() {
+       $.get("/deActivateDG" , paramsObj)
+       .done(function( data ) {
+                  //RED.notify("<strong>deActivated Successfully</strong>");
+               var htmlStr = "";
+               var title ="";
+               if(displayOnlyCurrent){
+                        htmlStr=getHtmlStr(data,true);
+                        title="Service Logic Administration  Module=" + module + " and RPC=" + rpc;
+               }else{
+                        htmlStr=getHtmlStr(data);
+                        title= "Service Logic Administration - " + data.dbHost; 
+               }
+               $("#svclogicPageDiv").dialog({
+                               modal:true,     
+                               title: title,
+                               width: 1200,
+                               height: 750,
+                                       minWidth : 600, 
+                                       minHeight :450, 
+                               }).html(htmlStr);
+         })
+       .fail(function( err ) {
+                  RED.notify("<strong>Could not De-Activate</strong>");
+               var htmlStr = "<p>" + "could not deactivate" + module + " " + rpc + " " + version +"</p>  <a onclick='javascript:showSLA()'></a>";
+               if(displayOnlyCurrent == true){
+                        htmlStr = "<p>" + "could not deactivate" + module + " " + rpc + " " + version +"</p> <a onclick='javascript:showCurrentDGs(\"" + module + "\",\"" + rpc + "\")'>Back to DG List</a>";
+               }
+               $("#svclogicPageDiv").dialog({
+                               modal:true,     
+                               title: "Service Logic Administration - " + err.dbHost, 
+                               width: 1200,
+                               height: 750,
+                                       minWidth : 600, 
+                                       minHeight :450, 
+                               }).html(htmlStr);
+         })
+       .always(function() { 
+                //$('.ui-dialog:has(#alertdialog)').empty().remove();
+               $( "#alertdialog" ).dialog( "close" );
+               //$("#alertdialog" ).dialog('destroy').remove();
+       });
+      }
+    },
+    {
+      text: "Cancel",
+      class:"alertDialogButton",
+      click: function() {
+       //$('.ui-dialog:has(#alertdialog)').empty().remove();
+       //$(this).dialog('destroy').remove()
+        //$( this ).dialog( "close" );
+       /*if ($("#alertdialog").hasClass('ui-dialog-content')) {
+               $("#alertdialog" ).dialog('close');
+       }else{
+               $( this ).dialog( "close" );
+       }
+       */
+        $( this ).dialog( "close" );
+      }
+    }
+  ]
+}).html(alertMsg).dialog("open");
+}
+
+function deleteDG(module,rpc,version,mode,displayOnlyCurrent){
+       var paramsObj = {'module': module , 'rpc' : rpc , 'version' : version , 'mode' : mode,'displayOnlyCurrent' : false};
+       if(displayOnlyCurrent){
+               paramsObj = {'module': module , 'rpc' : rpc , 'version' : version , 'mode' : mode,'displayOnlyCurrent' : true};
+       }
+       var dgInfo = "<div ><table width='100%' border='1'><tr style='background-color:#65a9d7;color:white;'><th>Module</th><th>RPC</th><th>Version</th></tr><tr style='background-color:white'><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 DG ?</p>"; 
+$( "#alertdialog" ).dialog({
+  dialogClass: "no-close",
+  autoOpen: false,
+  modal:true,
+  draggable : true,
+  title: "Confirm Delete",
+  width: 600,
+  buttons: [
+    {
+      text: "Delete",
+      class:"alertDialogButton",
+      click: function() {
+       $.get("/deleteDG" , paramsObj)
+       .done(function( data ) {
+                  RED.notify("<strong>Deleted " + module + " " + rpc + " " + version + " Successfully</strong>");
+               var htmlStr = "";
+               var title ="";
+               if(displayOnlyCurrent){
+                        htmlStr=getHtmlStr(data,true);
+                        title="Service Logic Administration  Module=" + module + " and RPC=" + rpc;
+               }else{
+                        htmlStr=getHtmlStr(data);
+                        title= "Service Logic Administration - " + data.dbHost; 
+               }
+               $("#svclogicPageDiv").dialog({
+                               modal:true,     
+                               title: title,
+                               width: 1200,
+                               height: 750,
+                                       minWidth : 600, 
+                                       minHeight :450, 
+                               }).html(htmlStr);
+         })
+       .fail(function( err ) {
+                  //RED.notify("<strong>Could not Delete" +  module + " " + rpc + " " + version +  "</strong>");
+               var htmlStr = "<p>" + "could not delete" + module + " " + rpc + " " + version +"</p>  <a onclick='javascript:showSLA()'></a>";
+               if(displayOnlyCurrent == true){
+                        htmlStr = "<p>" + "could not delete" + module + " " + rpc + " " + version +"</p> <a onclick='javascript:showCurrentDGs(\"" + module + "\",\"" + rpc + "\")'>Back to DG List</a>";
+               }
+               $("#svclogicPageDiv").dialog({
+                               modal:true,     
+                               title: "Service Logic Administration - " + err.dbHost, 
+                               width: 1200,
+                               height: 750,
+                                       minWidth : 600, 
+                                       minHeight :450, 
+                               }).html(htmlStr);
+         })
+       .always(function() { 
+               $( "#alertdialog" ).dialog( "close" );
+                //$('.ui-dialog:has(#alertdialog)').empty().remove();
+               //$("#alertdialog" ).dialog('destroy').remove();
+       });
+      }
+    },
+    {
+      text: "Cancel",
+      class:"alertDialogButton",
+      click: function() {
+       /*
+       if ($("#alertdialog").hasClass('ui-dialog-content')) {
+               $("#alertdialog" ).dialog('close');
+       }else{
+               $( this ).dialog( "close" );
+       }
+       */
+        //$( "#alertdialog" ).dialog( "close" );
+       //$('.ui-dialog:has(#alertdialog)').empty().remove();
+        //$( this ).dialog( "close" );
+        $( this ).dialog( "close" );
+      }
+    }
+  ]
+}).html(alertMsg).dialog("open");
+}
+/*
+function downloadDGXml(_module,rpc,version,mode){
+       var paramsObj = {'_module': _module , 'rpc' : rpc , 'version' : version , 'mode' : mode};
+       var form = $('<form id="dwnldDbXmlFormId" method="POST" action="/downloadDGXml"></form>');
+       form.append('<input type="hidden" name="_module" value="' + _module + '"/>');
+       form.append('<input type="hidden" name="rpc" value="' + rpc + '"/>');
+       form.append('<input type="hidden" name="version" value="' + version + '"/>');
+       form.append('<input type="hidden" name="mode" value="' + mode + '"/>');
+       form.appendTo('body');
+       $("#dwnldDbXmlFormId").submit();
+}
+*/
+
+function displayXml(module,rpc,version,mode,displayOnlyCurrent){
+       var paramsObj = {'_module': module , 'rpc' : rpc , 'version' : version , 'mode' : mode,'displayOnlyCurrent' : false};
+       var title="Service Logic Administration";
+       if(displayOnlyCurrent){
+               paramsObj = {'_module': module , 'rpc' : rpc , 'version' : version , 'mode' : mode,'displayOnlyCurrent' : true};
+               title="Service Logic Administration  Module=" + module + " and RPC=" + rpc;
+       }else{
+               title="Service Logic Administration";
+       }
+       //var headingStr = "<a style='color: #337ab7;' onclick='javascript:showSLA()'>&lt;&lt;Back to DG List</a><br><div style='background-color:#337ab7;clear:both;'><table style='width:100%;' border='0'>" +
+       var headingStr = "<a style='color: #337ab7;cursor:pointer;' onclick='javascript:showSLA()'>&lt;&lt;Back to DG List</a><br><div style='clear:both;'><table style='width:25%' border='0'>" ;
+               if(displayOnlyCurrent == true){
+                       headingStr = "<a style='color: #337ab7;cursor:pointer;' onclick='javascript:showCurrentDGs(\"" + module + "\",\"" + rpc + "\")'>&lt;&lt;Back to DG List</a><br><div style='clear:both;'><table style='width:25%' border='0'>" ;
+               }
+                       headingStr += "<tr><td><b>Module</b></td><td>" + module + "</td></tr>" +
+                       "<tr><td><b>RPC</b></td><td>" + rpc + "</td></tr>" +
+                       "<tr><td><b>Version</b></td><td>" + version + "</td></tr>" +
+                       "<tr><td><b>Mode</b></td><td>" + mode + "</td></tr>" +
+                       "</table></div>";
+
+       //var urlStr = "/displayXml?_module=" + module + "&rpc=" + rpc + "&version=" + version + "&mode=" + mode; 
+       $.get("/displayXml",paramsObj)
+       .done(function( data ) {
+               //var htmlStr= headingStr + '<div style="clear:both;"></div><div style="background-color:lightgrey;border-style: solid;border-color:#337ab7;clear:both;">' + data.xmldata + "</div>";
+               var htmlStr= headingStr + '<hr style="clear:both;height:5px;background-color:#337ab7;"><div>' + data.xmldata + "</div>";
+               $("#svclogicPageDiv").dialog({
+                               modal:true,     
+                               title: title,
+                               width: 1200,
+                               height: 750,
+                                       minWidth : 600, 
+                                       minHeight :450, 
+                               }).html(htmlStr);
+         })
+       .fail(function( err ) {
+                  //RED.notify("<strong>Could not display XML</strong>");
+               var htmlStr = "<p>" + "Could not display xml for" + module + " " + rpc + " " + version + "</p><a style='color: #337ab7;cursor:pointer;' onclick='javascript:showSLA()'>Back to DG List</a><br>";
+               if(displayOnlyCurrent == true){
+                        htmlStr = "<p>" + "could not display XML" + module + " " + rpc + " " + version +"</p> <a onclick='javascript:showCurrentDGs(\"" + module + "\",\"" + rpc + "\")'>Back to DG List</a>";
+               }
+               $("#svclogicPageDiv").dialog({
+                               modal:true,     
+                               title: "Service Logic Administration",
+                               width: 1200,
+                               height: 750,
+                                       minWidth : 600, 
+                                       minHeight :450, 
+                               }).html(htmlStr);
+         })
+       .always(function() { 
+       });
+}
+
+function displayDG(module,rpc,version,mode,displayOnlyCurrent){
+       var paramsObj = {'_module': module , 'rpc' : rpc , 'version' : version , 'mode' : mode,'displayOnlyCurrent' : false};
+       var title="Service Logic Administration";
+       if(displayOnlyCurrent){
+               paramsObj = {'_module': module , 'rpc' : rpc , 'version' : version , 'mode' : mode,'displayOnlyCurrent' : true};
+       }
+       //var headingStr = "<a style='color: #337ab7;cursor:pointer' onclick='javascript:showSLA()'>&lt;&lt;Back to DG List</a><br><div><table id='msgTable' style='width:25%;background-color:lightgrey' border='0'>" +
+       var headingStr = "<a style='color: #337ab7;cursor:pointer;' onclick='javascript:showSLA()'>&lt;&lt;Back to DG List</a><br><div><table id='msgTable' style='width:25%;' border='0'>" ;
+               if(displayOnlyCurrent == true){
+                       headingStr = "<a style='color: #337ab7;cursor:pointer;' onclick='javascript:showCurrentDGs(\"" + module + "\",\"" + rpc + "\")'>&lt;&lt;Back to DG List</a><br><div style='clear:both;'><table style='width:25%' border='0'>" ;
+                      title="Service Logic Administration  Module=" + module + " and RPC=" + rpc;
+               }
+                       headingStr +="<tr><td><b>Module</b></td><td>" + module + "</td></tr>" +
+                       "<tr><td><b>RPC</b></td><td>" + rpc + "</td></tr>" +
+                       "<tr><td><b>Version</b></td><td>" + version + "</td></tr>" +
+                       "<tr><td><b>Mode</b></td><td>" + mode + "</td></tr>" +
+                       "</table></div>";
+
+       //var urlStr = "/displayAsGv?_module=" + module + "&rpc=" + rpc + "&version=" + version + "&mode=" + mode; 
+       $.get("/displayAsGv",paramsObj)
+       .done(function( data ) {
+               var htmlStr= headingStr + '<div style="background-color:white;">' + data.svg_html + "</div>";
+               $("#svclogicPageDiv").dialog({
+                               modal:true,     
+                               title: "Service Logic Administration",
+                               width: 1200,
+                               height: 750,
+                                       minWidth : 600, 
+                                       minHeight :450, 
+                               }).html(htmlStr);
+         })
+       .fail(function( err ) {
+                  //RED.notify("<strong>Could not display XML</strong>");
+               var htmlStr = "<p>" + "Could not display DG for" + module + " " + rpc + " " + version + "</p><a style='color: #337ab7;cursor:pointer;' onclick='javascript:showSLA()'>Back to DG List</a><br>";
+               if(displayOnlyCurrent == true){
+                        htmlStr = "<p>" + "could not display DG for" + module + " " + rpc + " " + version +"</p> <a onclick='javascript:showCurrentDGs(\"" + module + "\",\"" + rpc + "\")'>Back to DG List</a>";
+               }
+               $("#svclogicPageDiv").dialog({
+                               modal:true,     
+                               title: "Service Logic Administration",
+                               width: 1200,
+                               height: 750,
+                                       minWidth : 600, 
+                                       minHeight :450, 
+                               }).html(htmlStr);
+         })
+       .always(function() { 
+       });
+}
+
+function getHtmlStr(data,displayOnlyCurrent,module,rpc){
+       var styleStr = "<style> " + 
+                       "table#t01 { width:100%; } \n" +
+                               "table#t01 th,table#t01 td { border: 1px solid black; border-collapse: collapse; } \n" +
+                               /*"table, th, td { border: 1px solid #65a9d7; border-collapse: collapse; } \n" +*/
+                               "table#t01 th,table#t01 td { padding: 5px; text-align: left; } \n" +
+                               "table#t01 tr:nth-child(even) { background-color: #eee; }\n" +
+                               "table#t01 tr:nth-child(odd) { background-color:#fff; }\n" +
+                               "table#t01 th   { background-color: #65a9d7; color: white; }\n" +
+                               "table#t01 a { color: #337ab7; }\n" +
+                               "table#t01 a:link { color: #65a9d7; }\n" +
+                               "table#t01 a:visited { color: #636; }\n" + 
+                               "table#t01 a:hover { color: #3366CC; cursor: pointer }\n" + 
+                               "table#t01 a:active { color: #65a9d7 }\n" +
+                               "</style>";
+                       if(data != null && data.rows != undefined && data.error == undefined){
+                               var alertDialog = '<div id="alertdialog"></div>';
+                               htmlStr= alertDialog +  "<div style='width:1050;height:650'>" + styleStr;
+                               htmlStr += "<table id='t01' >";
+                               htmlStr += "<tr>";
+                               htmlStr += "<th>Module</th>" ;
+                               htmlStr += "<th>RPC</th>" ;
+                               htmlStr += "<th>Version</th>" ;
+                               htmlStr += "<th>Mode</th>" ;
+                               htmlStr += "<th>Active</th>" ;
+                               htmlStr += "<th>Activate/Deactivate</th>";
+                               htmlStr += "<th>Display DG</th>";
+                               htmlStr += "<th>XML</th>";
+                               htmlStr += "<th>Delete</th>";
+                               htmlStr += "</tr>";
+                               var rows = data.rows;
+                               if(rows != null && rows.length == 0){
+                                       htmlStr += "<tr>";
+                                       htmlStr += "<td><b>No rows found</b></td>";
+                                       htmlStr += "</tr></table></div>";
+                                       return htmlStr;
+                               }
+                               for(var i=0;i<rows.length;i++){
+                                       var row = rows[i];
+                                       var _module = row.module;
+                                       var rpc = row.rpc;
+                                       var version = row.version;
+                                       var mode = row.mode;
+                                       var active = row.active;
+                                       htmlStr += "<tr>";
+                                       htmlStr += "<td>" + _module + "</td>";
+                                       htmlStr += "<td>" + rpc + "</td>";
+                                       htmlStr += "<td>" + version + "</td>";
+                                       htmlStr += "<td>" + mode + "</td>";
+                                       htmlStr += "<td>" + active + "</td>";
+
+                                       var methodParams =  "'" + _module +  "','" + rpc + "','" + version + "','"  + mode + "'";
+                                       if(displayOnlyCurrent){
+                                               methodParams+= ",true";
+                                       }
+                                       if(active == 'Y'){
+                                                       htmlStr += "<td><a onclick=\"javascript:deActivateDG(" +  methodParams + ")\">DeActivate</a></td>";
+                                       }else{
+                                               htmlStr += "<td><a onclick=\"javascript:activateDG(" + methodParams +  ")\">Activate</a></td>";
+                                       }
+                                       htmlStr += "<td><a onclick=\"javascript:displayDG(" + methodParams + ")\">Display</a></td>";
+
+                                       htmlStr += "<td><a onclick=\"javascript:displayXml(" + methodParams + ")\">XML</a></td>";
+
+                                       htmlStr += "<td><a onclick=\"javascript:deleteDG(" + methodParams + ")\">Delete</a></td>";
+                                       htmlStr += "</tr>";
+                               }
+                               htmlStr += "</table>";
+                               htmlStr += "</div>";
+                       }
+       return htmlStr;
+}
+
+function showSLA(){
+       var htmlStr = "";
+       try{
+               $.get("/listSLA")
+               .done(function( data ) {
+                       var htmlStr=getHtmlStr(data);
+                       $("#svclogicPageDiv").dialog({
+                               modal:true,     
+                               title: "Service Logic Administration - " + data.dbHost, 
+                               width: 1200,
+                               height: 750,
+                                       minWidth : 600, 
+                                       minHeight :450, 
+                               }).html(htmlStr);
+               })
+               .fail(function(err) {
+                       htmlStr= "<div>Error occured displaying the DG list</div>";
+                       $("#svclogicPageDiv").dialog({
+                               modal:true,     
+                               title: "Service Logic Administration - " + data.dbHost, 
+                               width: 1200,
+                               height: 750,
+                                       minWidth : 600, 
+                                       minHeight :450, 
+                               }).html(htmlStr);
+               })
+               .always(function() { 
+               });
+       }catch(err){
+       }
+}
+
+function showCurrentDGs(module,rpc){
+       var htmlStr = "";
+       try{
+               var params="?module=" + module + "&rpc=" + rpc;
+               var url="/listCurrentDGs" + params;
+               //console.log("url:" + url);
+               $.get(url)
+               .done(function( data ) {
+                       var htmlStr=getHtmlStr(data,true);
+                       $("#svclogicPageDiv").dialog({
+                               modal:true,     
+                               title:"Service Logic Administration  Module=" + module + " and RPC=" + rpc,
+                               width: 1200,
+                               height: 750,
+                                       minWidth : 600, 
+                                       minHeight :450, 
+                               }).html(htmlStr);
+               })
+               .fail(function(err) {
+                       htmlStr= "<div>Error occured displaying the DG list</div>";
+                       $("#svclogicPageDiv").dialog({
+                               modal:true,     
+                               title:"Service Logic Administration  Module=" + module + " and RPC=" + rpc,
+                               width: 1200,
+                               height: 750,
+                                       minWidth : 600, 
+                                       minHeight :450, 
+                               }).html(htmlStr);
+               })
+               .always(function() { 
+               });
+       }catch(err){
+       }
+}
+
+
+function displaySLA(callback){
+       var htmlStr = "";
+       try{
+               $.get("/listSLA")
+               .done(function( data ) {
+                       var htmlStr=getHtmlStr(data);
+                       callback(htmlStr,data.dbHost);
+               })
+               .fail(function(err) {
+                       htmlStr= "<div>Error occured displaying the DG list</div>";
+                       callback(htmlStr,err.dbHost);
+               })
+               .always(function() { 
+               });
+       }catch(err){
+                       callback(htmlStr,"");
+       }
+}
+
+function displayCurrentDGs(module,rpc,callback){
+       var htmlStr = "";
+       try{
+               var params="?module=" + module + "&rpc=" + rpc;
+               var url="/listCurrentDGs" + params;
+               //console.log("url:" + url);
+               $.get(url )
+               .done(function( data ) {
+                       var htmlStr=getHtmlStr(data,true);
+                       callback(htmlStr,data.dbHost);
+               })
+               .fail(function(err) {
+                       htmlStr= "<div>Error occured displaying the Current DG list</div>";
+                       callback(htmlStr,err.dbHost);
+               })
+               .always(function() { 
+               });
+       }catch(err){
+                       callback(htmlStr,"");
+       }
+}
+
+
+window.onbeforeunload = function (event) {
+       var dis = $('#btn-deploy').attr('class')
+       if ( dis.indexOf('disabled') == -1 ) {
+               var message = 'Important: You have changes that were not \'deployed\'.';
+               if (typeof event == 'undefined') {
+                       event = window.event;
+               }
+               if (event) {
+                       event.returnValue = message;
+               }
+               return message;
+       }
+};
+</script>
+<script type="text/x-red" data-help-name="dgstart">
+       <p>This node starts a flow. This node is required on every flow.</p>
+       <p>This node has a button to its left, when clicked generates the XML for the flow</p>
+       <img src="images/dgstart.png"></img>
+</script>
+<style>
+.textview{
+       font-size:20px;
+}
+</style>
+
+<div id="screenInfoId"></div>
+<script type="text/javascript">
+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 showDgStartGenerateXmlStatus(){
+       var htmlStr="<div id='dgstart-generate-xml-div' style='width:375;height:225'><p>Generating XML. Please wait... </p><img src='images/page-loading.gif'></div>"
+       $("#dgstart-generate-xml-dialog").dialog({
+               modal:true,     
+               title: "DGBuilder XML Generation Status",
+               width: 400,
+               height: 250,
+                minWidth : 400, 
+                minHeight :200, 
+               }).html(htmlStr);
+}
+
+    RED.nodes.registerType('dgstart',{
+        color:"#fdd0a2",
+        category: 'DGEmain',
+        defaults: {
+            name: {value:"DGSTART"},
+            outputs: {value:1}
+        },
+        inputs:0,
+        outputs:1,
+        icon: "inject.png",
+        label: function() {
+            return this.name;
+        },
+       onpaletteadd: function() {
+               //console.log("DGSTART Added to the palette.");
+       },
+        button: {
+            onclick: function() {
+               //$('#processingStatusId').text('working...');
+               //$('#processingStatusId').html("<span><p>    Processing Please Wait...</span><img src='images/page-loading.gif'>");
+               $('#processingStatusId').html("<span style='font-size:0.2em;color:green'>   Processing...</span>");
+               var timerObj = window.setTimeout(function() {
+               //document.getElementById("processingStatusId").innerHTML ="<img src='images/page-loading.gif'>";
+
+               /*
+               var target = $(event.target);
+               //target.text("Validating XML");
+               target.css({ "background-image": "url('images/page-loading.gif')" });
+               target.css({ "background-repeat": "no-repeat" });
+               target.css({ "background-size": "25px 25px" });
+               */
+
+               //deploy button 
+               //$("#btn-deploy")
+               var loopDetectionEnabled = true;
+               console.log("loopDetectionEnabled:" +loopDetectionEnabled);
+               if(loopDetectionEnabled){
+                       var msecs1= Date.now();
+                       var isLoopDetected = detectLoop();
+                       var msecs2= Date.now();
+                       console.log("Time taken for loop detection:" + (msecs2 - msecs1));
+                       if(isLoopDetected){
+                               //RED.notify("<strong>Error</strong>: Loop Detected","error");
+                               //target.css({ "background-image": "none" });
+                               return false;
+                       }
+               }
+               var nodeSetWithUpdatedDgNumbers = updateDgNumbers();
+               validateEachNodeXml();
+               //var nodeToXmlStr = getNodeToXml();
+               var unformatted_xml_str = getNodeToXml();
+               //console.log("Size of unformatted_xml_str" + unformatted_xml_str.length);      
+               //console.log("output:" + nodeToXmlStr);
+               var formatted_xml = vkbeautify.xml(unformatted_xml_str);        
+               /*
+               var minified_xml = vkbeautify.xmlmin(unformatted_xml_str,true);         
+               var lengthOfMinifiedXml = minified_xml.length;
+               if(lengthOfMinifiedXml >0){
+                       var val = lengthOfMinifiedXml/(1024*1024)
+                       var minSizeStr = val.toFixed(4) + " MB";
+                       console.log("minified XML size:" + minSizeStr);
+               }
+               */
+               var lengthOfXml = formatted_xml.length;
+               var sizeStr = "";
+               if(lengthOfXml >0){
+                       var val = lengthOfXml/(1024*1024)
+                       sizeStr = val.toFixed(4) + " MB";
+                       console.log("length:" + val);
+               }
+               var xmlLines = formatted_xml.split("\n");
+               console.log("Number of lines " + xmlLines.length);
+               var numberOfLines = xmlLines.length;
+               //var display_formatted_xml = formatted_xml.replace("&lt;","<");
+               var currentNodeSet = getCurrentFlowNodeSet();
+               //get max x and y coordinates
+               var x=0;
+               var y=0;
+               var maxX=0;
+               var maxY=0;
+               var moduleName = "";
+               var dgVersion = "";
+               var methodName = "";
+               var formattedMethodName = "";
+               var origModuleName = "";
+               var origMethodName = "";
+               for(var i=0;currentNodeSet != null && i<currentNodeSet.length;i++){
+                       if(currentNodeSet[i].type == "service-logic"){
+                               //moduleName = currentNodeSet[i].name;
+                               moduleName = currentNodeSet[i].module;
+                               dgVersion = currentNodeSet[i].version;
+                               origModuleName = getAttributeValue(currentNodeSet[i].xml,"module");
+                       }
+                       if(currentNodeSet[i].type == "method"){
+                               //methodName = currentNodeSet[i].name;
+                               origMethodName = getAttributeValue(currentNodeSet[i].xml,"rpc");;
+                               methodName = origMethodName;
+                               if(methodName == ""){
+                                       methodName = "rpc_not_set";
+                               }
+                       }
+                       x = currentNodeSet[i].x;        
+                       y = currentNodeSet[i].y;        
+                       if(x>maxX){
+                               maxX=x;
+                       }
+                       if(y>maxY){
+                               maxY=y;
+                       }
+               }
+               //add 5 more pixels to that
+               maxX= Math.ceil(maxX) + 5;
+               maxY= Math.ceil(maxY) + 5;
+               //console.log("maxX:" + maxX);
+               //console.log("maxY:" + maxY);
+               var unformatted_json_str=JSON.stringify(currentNodeSet);
+               var formatted_json = vkbeautify.json(unformatted_json_str);
+               //var displayHtmlStr="<div><textarea readonly='1' style='width:1100px;height:700px;border:none'>" + formatted_xml + "</textarea></div>";
+               var displayHtmlStr="<div style='font-size:20px;'><xmp>" + formatted_xml + "</xmp></div>";
+               var xmlInfoStr = "<div id='xml-info-div'><p>" + "XML size:" + sizeStr +  " <br>Number of Lines:" + numberOfLines +  "</p></div>";
+               var htmlCode ="";
+               $( "#xmldialog" ).dialog({
+                       title: "XML Generated",
+                       width: 1200,
+                       height: 750,
+                               minWidth : 800, 
+                               minHeight :450, 
+                       dialogClass : "no-close",
+                       closeOnEscape : false,  
+                       autoOpen : false,
+                       resize: function( event, ui ) {
+                               /*
+                                       $( this ).dialog( "option", "title",
+                                       ui.size.height + " x " + ui.size.width );
+                               */
+                       },
+                       modal: true,
+                       /*show: {
+                               effect: "slide",
+                               duration: 1000
+                       },
+                       */
+                       /*hide: {
+                               effect: "slide",
+                               duration: 500
+                       },
+                       */
+                        buttons: {
+                       /*      
+                           "+" : function () {
+                                       var size= $("#xmldialog").find('.textview').css("font-size");
+                                       console.log("size:" + size);
+                                       size=size.replace("px","");
+                                       var fsize=Number(size) +1;
+                                       if(fsize<19){
+                                               fsize+=4;
+                                       }
+                                       if(fsize >= 26){
+                                               return;
+                                       }
+                                       $("#xmldialog").find('.textview').css("font-size",fsize);
+                               },
+                           "-" : function () {
+                                       var size= $("#xmldialog").find('.textview').css("font-size");
+                                       console.log("size:" + size);
+                                       size=size.replace(/px/,"");
+                                       var fsize=Number(size) -1;
+                                       if(fsize <= 14){
+                                               return;
+                                       }
+                                       $("#xmldialog").find('.textview').css("font-size",fsize);
+                               },
+                       */
+                           "Validate XML" : function (event) {
+                               if(!event) event = window.event;
+                               var target = $(event.target);
+                               target.text("Validating XML");
+                               target.css({ "background-image": "url('images/page-loading.gif')" });
+                               target.css({ "background-repeat": "no-repeat" });
+                               target.css({ "background-size": "25px 25px" });
+
+                               var resp= validateFinalXML(unformatted_xml_str);
+                               console.log("errorList:" + errList);
+                               if(!resp){
+                                       showErrors();   
+                               }
+                               target.text("Validate XML");
+                               target.css({ "background-image": "none" });
+                           },
+                           "Email Flow" : function (event) {
+                               if(!event) event = window.event;
+                               var target = $(event.target);
+                               target.text("Processing");
+                               target.css({ "background-image": "url('images/page-loading.gif')" });
+                               target.css({ "background-repeat": "no-repeat" });
+                               target.css({ "background-size": "25px 25px" });
+                               d3.xhr("style.css").get(function(err,resp){
+                                       console.log("resp:" + resp);
+                                       //console.dir(resp);
+                                       var styleSheetText = resp.responseText;
+                                       /*var htmlCode = "<style>"  + styleSheetText + "</style></head>" + 
+                                                '<body><div id="chart" class="ui-droppable">' +
+                                       */
+                                       //var svgTagInfo = '<div style="overflow:auto;border:1px solid #D76D2D;height:600px;"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1024 768" preserveAspectRatio="xMidYMid meet">';
+                                       //var svgTagInfo = '<div style="overflow-x:auto;overflow-y:auto;border:1px solid #D76D2D;width:1200px;height:750px;"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg"  xmlns:xlink="http://www.w3.org/1999/xlink" width="3500px" height="3200px" viewBox="0 0 5500 5000" >';
+                                       var svgTagInfo = '<div style="overflow-x:auto;overflow-y:auto;border:1px solid #D76D2D;width:1200px;height:750px;"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg"  xmlns:xlink="http://www.w3.org/1999/xlink" width="3500px" height="3200px" viewBox="0 0 8000 7500" >';
+                                       var svgHtmlCode = $("svg").html();
+                                       //svgHtmlCode = svgHtmlCode.replace('<rect width="5000" height="5000"','<rect width="' + maxX +  '" height="' + maxY +'"');
+                                       var find = 'href="icons/arrow-in.png"';
+                                       var re = new RegExp(find, 'g');
+                                        svgHtmlCode = svgHtmlCode.replace(re, 'href=""');
+                                       find = 'href="icons/inject.png"';
+                                       re = new RegExp(find, 'g');
+                                        svgHtmlCode = svgHtmlCode.replace(re, 'href=""');
+                                       htmlCode = "\n<style>\n"  + styleSheetText + "</style></head>\n<body>" + svgTagInfo + svgHtmlCode + "\n</svg></div>";
+                                       //console.log($("svg").html());
+                                        //console.log(htmlCode);               
+                                       //html,xml,json form id
+                               /*
+                                       //using form to submit
+                                       var form = $('<form id="hxjFormId" method="POST" action="/sendEmail"></form>');
+                                       form.append('<input id="flowHtmlId" type="hidden" name="flowHtml" value=""/>');
+                                       form.append('<input id="flowXmlId" type="hidden" name="flowXml" value=""/>');
+                                       form.append('<input id="flowJsonId"  type="hidden" name="flowJson" value=""/>');
+                                       $("#screenInfoId").append(form);
+                                       //console.log($("#screenInfoId").html());
+                                       document.getElementById("flowHtmlId").value=htmlCode;
+                                       document.getElementById("flowXmlId").value=formatted_xml;
+                                       document.getElementById("flowJsonId").value=formatted_json;
+                                       //console.log($("#screenInfoId").html());
+                                       $("#hxjFormId").submit();
+                                       console.log("Submitted.");
+                                       */
+                                       var reqData = {
+                                               "flowHtml" : htmlCode,
+                                               "flowXml" : formatted_xml,
+                                               "flowJson" : formatted_json
+                                       };
+
+                                       $.post( "/sendEmail",reqData )
+                                       .done(function( data ) {
+                                               //console.log( "Data Loaded: " + data );
+                                               if(data != null && data.envelope != undefined && data.envelope != null){
+                                                       var toAddress = data.envelope.to;
+                                                       RED.notify("Email sent successfully to " + toAddress);
+                                               }else{
+                                                       RED.notify("Email sent successfully.");
+                                               }
+                                       })
+                                       .fail(function(err) {
+                                                console.log( "error" + err ); 
+                                               RED.notify("Email send Failed.");
+                                       }) 
+                                       .always(function() { 
+                                               console.log( "finished" ); 
+                                               target.text("Email Flow");
+                                               target.css({ "background-image": "none" });
+                                       });
+
+                                       /*
+                                       d3.xhr("/sendEmail").post(reqData,function(err,resp){
+                                               console.log("Error:" + JSON.stringify(err));
+                                               console.log("resp:" + JSON.stringify(resp));
+                                               console.dir(resp);
+                                       });
+                                       */
+                               });
+                           },
+                               /*
+                           Deploy : function () {
+                               $("#btn-deploy").click();       
+                           },
+                               */
+                           "Upload XML" : function (event) {
+                               if(!event) event = window.event;
+                               //Save the flows.json
+                               //RED.view.dirty(true);
+                               //$('#btn-deploy').click();
+                               console.log("Deployed..");
+                               var target = $(event.target);
+                               target.text("Processing");
+                               target.css({ "background-image": "url('images/page-loading.gif')" });
+                               target.css({ "background-repeat": "no-repeat" });
+                               target.css({ "background-size": "25px 25px" });
+                               var date = new Date();  
+                               
+                               var fileName = date.getTime() + ".xml"; 
+                               var reqData = {
+                                       "flowXml" : unformatted_xml_str,
+                                       "module" : origModuleName,
+                                       "rpc" : origMethodName
+                                       };
+                               $.post("/uploadxml", reqData )
+                                       .done(function( data ) {
+                                       console.log("calling uploadxml. sending to server");
+                                               //var successHtmlStr = "<object width='600' height='450' type='text/html' data='"  + data.url + "' />";
+                                               
+                                               if( data != undefined  && data != null &&  (data.stdout.indexOf('Saving SvcLogicGraph to database') != -1 || data.stderr.indexOf('Saving SvcLogicGraph to database') != -1)){
+                                                       //RED.notify("<strong>Uploaded Successfully</strong>");
+                                                       //console.dir(data);
+                                                       var _moduleName = data.module;
+                                                       var _rpc = data.rpc;
+                                                       var msg = "";
+                                                       var actualMsg = "";
+                                                       var msg_lines = "";
+                                                       msg_lines += data.stderr;
+                                                       msg_lines += data.stdout;
+                                                               
+                                                       msgHtmlStr="<div><p><b>Uploaded the XML.<br>Additional Details<br><textarea style='width:90%;height:100%' readonly='1' rows='10' cols='90' >" + msg_lines + "</textarea></div>";
+                                                               $("#upload-xml-status-dialog").dialog({
+                                                                       modal:true,     
+                                                                       title: "Upload XML ",
+                                                                       width: 900,
+                                                                       height: 750,
+                                                                               minWidth : 600, 
+                                                                               minHeight :450, 
+                                                                       buttons: [
+                                                                               {
+                                                                               text: "ViewDGList",
+                                                                               class:"alertDialogButton",
+                                                                               click: function() {
+                                                                                       $(this).dialog("close");
+                                                                                       displayCurrentDGs(_moduleName,_rpc,function(htmlStr,dbHost){
+                                                                                               $("#svclogicPageDiv").dialog({
+                                                                                               modal:true,     
+                                                                                               title:"Service Logic Administration  Module=" + _moduleName + " and RPC=" + _rpc,
+                                                                                               width: 1200,
+                                                                                               height: 750,
+                                                                                                       minWidth : 600, 
+                                                                                                       minHeight :450, 
+                                                                                               }).html(htmlStr);
+                                                                                       });     
+                                                                                       }
+                                                                               },
+                                                                               {
+                                                                               text: "Close",
+                                                                               class:"alertDialogButton",
+                                                                               click: function() {
+                                                                                       $(this).dialog("close");
+                                                                               }
+                                                                               }
+                                                                               ]
+                                                               }).html(msgHtmlStr);
+                                               }else{
+                                                       console.log("Could not upload.");
+                                                       var emsg =JSON.parse( data.responseText);
+                                                       var msg = "";
+                                                       var actualMsg = "";
+                                                       var msg_lines = "";
+                                                       if( emsg.stderr != "COMPILE_ERROR"){
+                                                               msg = JSON.stringify(emsg.stderr);
+                                                               actualMsg = msg;
+                                                               msg = msg.replace('\\t',"");
+                                                               msg1 = msg.split('\\n');
+                                                               for(var k=0;k<=msg1.length && k<=10;k++){
+                                                                       /*
+                                                                       if(k == 0){
+                                                                               //msg_lines += "<span style='color:blue'>" + msg1[k] + "</span><br>";   
+                                                                               //msg_lines +=  msg1[k]  +"\n";
+                                                                       }else{
+                                                                               if(msg1[k].indexOf("Caused by:") != -1){
+                                                                                       //msg_lines += "<span style='color:red'> " + msg1[k] + "</span><br>";   
+                                                                                       msg_lines += msg1[k] ;
+                                                                                       break;
+                                                                               }
+                                                                       }
+                                                                       */
+                                                                       if(msg1[k] != null && msg1[k].indexOf("Caused by:") != -1){
+                                                                               msg_lines +=  msg1[k] ;
+                                                                               if((k+1)<=msg1.length){
+                                                                                       msg_lines +=   "\n" + msg1[k+1] ;
+                                                                               }       
+                                                                               if((k+2)<=msg1.length){
+                                                                                       msg_lines +=   "\n" + msg1[k+2] ;
+                                                                               }       
+                                                                               break;
+                                                                       }
+                                                               }
+                                                       }
+                                                       htmlStr="<div><p><b>Could not upload the XML. Status:" + data.status + " Message:" + data.statusText + "</b><br></p><br>Additional Details<br><textarea style='width:90%;height:100%' readonly='1' rows='10' cols='90' >" + msg_lines + "</textarea></div>";
+                                               $("#svclogicPageDiv").dialog({
+                                                       modal:true,     
+                                                       title: "Upload XML ",
+                                                       width: 900,
+                                                       height: 750,
+                                                               minWidth : 600, 
+                                                               minHeight :450, 
+                                               }).html(htmlStr);
+                                               }
+                                       })
+                                       .fail(function(err) {
+                                                //console.log( "error" + JSON.stringify(err) ); 
+                                                //console.log( JSON.stringify(err.responseText)); 
+                                                var emsg =JSON.parse( err.responseText);
+                                                //console.log( emsg.stderr); 
+                                               var msg = "";
+                                               var actualMsg = "";
+                                               var msg_lines = "";
+                                               if( emsg != null &&  emsg.stderr != 'COMPILE_ERROR'){
+                                                       msg = JSON.stringify(emsg.stderr);
+                                                       actualMsg = msg;
+                                                       //msg = msg.replace("Caused by:","<span style='color:red'>Caused by:</span>"); 
+                                                       msg = msg.replace(/\\t/g,"");
+                                                       msg1 = msg.split('\\n');
+                                                       for(var k=0;k<=msg1.length && k<=msg1.length;k++){
+                                                               /*
+                                                               if(k == 0){
+                                                                       //msg_lines += "<span style='color:blue'>" + msg1[k] + "</span><br>";   
+                                                                       //msg_lines +=  msg1[k] + "\n" ;
+                                                               }else{
+                                                                       if(msg1[k].indexOf("Caused by:") != -1){
+                                                                               //msg_lines += "<span style='color:red'> " + msg1[k] + "</span><br>";   
+                                                                               msg_lines +=  msg1[k] ;
+                                                                               break;
+                                                                       }
+                                                               }
+                                                               */
+                                                               if(msg1[k] != null && msg1[k].indexOf("Caused by:") != -1){
+                                                                       msg_lines +=  msg1[k] ;
+                                                                       if((k+1)<=msg1.length){
+                                                                               msg_lines +=   "\n" + msg1[k+1] ;
+                                                                       }       
+                                                                       if((k+2)<=msg1.length){
+                                                                               msg_lines +=   "\n" + msg1[k+2] ;
+                                                                       }       
+                                                                       break;
+                                                               }
+                                                       }
+                                               }else{
+                                                               msg = JSON.stringify(emsg.stdout);
+                                                                actualMsg = msg;
+                                                                msg = msg.replace('\\t',"");
+                                                                msg1 = msg.split('\\n');
+                                                               msg_lines=msg1;
+                                               }
+                                                 var  htmlStr="<div><p><b>Could not upload the XML. Status:" + err.status + " Message:" + err.statusText + "</b><br></p><br><b>Additional Details</b><br><textarea style='width:90%;height:100%' readonly='1' rows='15' cols='90'>" + msg_lines + "</textarea></div>";
+                                               $("#svclogicPageDiv").dialog({
+                                                       modal:true,     
+                                                       title: "Upload XML ",
+                                                       width: 900,
+                                                       height: 750,
+                                                               minWidth : 600, 
+                                                               minHeight :450, 
+                                               }).html(htmlStr);
+                                               //RED.notify("<strong>ERROR:</strong>:" + err,"error");
+                                       }) 
+                                       .always(function() { 
+                                               console.log( "finished" ); 
+                                               target.text("Upload XML");
+                                               target.css({ "background-image": "none" });
+                                       });
+                               /*
+                               d3.xhr("/uploadxml?fileName=" + fileName).post(function(err,resp) {
+                                       if ( resp != null && resp.status == 200) {
+                                               RED.notify("<strong>Uploaded Successfully</strong>");
+                                       }else{
+                                               RED.notify("<strong>ERROR:</strong>:" + err,"error");
+                                               console.log(err);
+                                               //console.dir(resp);
+                                       }
+                               });
+                               */
+                           },
+                           "View DG List": function () {
+
+                                       displayCurrentDGs(origModuleName,origMethodName,function(htmlStr,dbHost){
+                                               //console.log("htmlStr:" + htmlStr);
+                                               $("#svclogicPageDiv").dialog({
+                                                       modal:true,     
+                                                       title: "Service Logic Administration for Module=" + origModuleName + "  and RPC=" + origMethodName, 
+                                                       width: 1200,
+                                                       height: 750,
+                                                               minWidth : 600, 
+                                                               minHeight :450, 
+                                               }).html(htmlStr);
+                                       });     
+                           },
+                           "Download XML": function () {
+                               $(document).ready(function(){
+                                       errList=[];
+                                       if(moduleName != undefined && moduleName != null && moduleName != ""){
+                                               moduleName=moduleName.replace(/\s/g, "_");
+                                       }else{
+                                               errList.push("Module name is required in the service-logic node.");
+                                       }
+
+                                       if(dgVersion == undefined || dgVersion == null || dgVersion == ""){
+                                               errList.push("Module version is required in the service-logic node.");
+                                       }
+
+                                       if(methodName != undefined && methodName != null && methodName != ""){
+                                               methodName=methodName.replace(/\s/g, "_");
+                                               //formattedMethodName=methodName + "_" + dgVersion;
+                                               formattedMethodName=methodName ;
+                                       }else{
+                                               errList.push("rpc name is required in the method node.");
+                                       }
+                                       console.log("Download Xml moduleName:" + moduleName);   
+                                       console.log("Download Xml methodName:" + formattedMethodName);  
+
+                                       if(errList != null && errList.length > 0 ){
+                                               showErrors();
+                                               return;
+                                       }
+
+                                       $("#dwnldXmlFormId").empty().remove();
+                                       //using form to submit
+                                       var form = $('<form id="dwnldXmlFormId" method="POST" action="/downloadXml"></form>');
+                                       form.append('<input id="flowXmlId"  type="hidden" name="flowXml"/>');
+                                       form.append('<input type="hidden" name="moduleName" value="' + moduleName + '"/>');
+                                       form.append('<input type="hidden" name="methodName" value="' + formattedMethodName + '"/>');
+                                       form.appendTo('body');
+                                       //$("#flowXmlId").val(formatted_xml);
+                                       $("#flowXmlId").val(unformatted_xml_str);
+                                       $("#dwnldXmlFormId").submit();
+                                       //console.log("Form submitted.");
+                               });
+                           },
+                           "Download JSON": function () {
+                               $(document).ready(function(){
+                                       errList=[];
+                                       if(moduleName != undefined && moduleName != null && moduleName != ""){
+                                               moduleName=moduleName.replace(/\s/g, "_");
+                                       }else{
+                                               errList.push("Module name is required in the service-logic node.");
+                                       }
+
+                                       if(dgVersion == undefined || dgVersion == null || dgVersion == ""){
+                                               errList.push("Module version is required in the service-logic node.");
+                                       }
+
+                                       if(methodName != undefined && methodName != null && methodName != ""){
+                                               methodName=methodName.replace(/\s/g, "_");
+                                               //formattedMethodName=methodName + "_" + dgVersion;
+                                               formattedMethodName=methodName ;
+                                       }else{
+                                               errList.push("rpc name is required in the method node.");
+                                       }
+                                       console.log("Download Xml moduleName:" + moduleName);   
+                                       console.log("Download Xml methodName:" + formattedMethodName);  
+
+                                       if(errList != null && errList.length > 0 ){
+                                               showErrors();
+                                               return;
+                                       }
+                                       //console.log("formatted_json:" + formatted_json);      
+                                       $("#dwnldJsonFormId").empty().remove();
+                                       //using form to submit
+                                       var form = $('<form id="dwnldJsonFormId" method="POST" action="/downloadJson"></form>');
+                                       form.append('<input id="flowJsonId" type="hidden" name="flowJson" value=""/>');
+                                       form.append('<input type="hidden" name="moduleName" value="' + moduleName + '"/>');
+                                       form.append('<input type="hidden" name="methodName" value="' + formattedMethodName + '"/>');
+                                       form.appendTo('body');
+                                       //$("#flowJsonId").val(formatted_json);
+                                       $("#flowJsonId").val(unformatted_json_str);
+                                       $("#dwnldJsonFormId").submit();
+                                       //console.log("Form submitted.");
+                               });
+                           },
+                           Close: function ()  {
+                               /*
+                               console.log("clearing the variables.");
+                               htmlCode ="";
+                               formatted_json ="";
+                               formatted_xml ="";
+                               xmlLines =[];
+                               unformatted_xml_str="";
+                               unformatted_json_str="";
+                               */
+                              $('.ui-dialog:has(#xmldialog)').empty().remove();
+                               RED.view.redraw();
+
+                               //console.log($("#xmldialog").attr('id'));
+                               //$('.ui-dialog:has(# + $("#xmldialog").attr('id') + ')').empty().remove();
+                                //$("#xmldialog").hide();
+                                //$("#xmldialog").dialog("destroy").remove();
+                       }
+                       },
+                       open:function (){
+                               $(function(){
+                               $("#xmldialog").dialog("widget").find(".ui-dialog-buttonpane").append(xmlInfoStr);
+                                       console.log("opened.");
+                               });
+                       }       
+               }).html(displayHtmlStr).dialog("open");
+               
+               //}).html(displayHtmlStr).dialog("widget").find(".ui-dialog-buttonpane").append(xmlInfoStr);
+
+               //display size and number of lines in XML
+               //$("#xmldialog").dialog("widget").find(".ui-dialog-buttonpane").append(xmlInfoStr);
+
+               //$("#processingStatusId").html("");
+                //This logic is commented as formatting and displaying orion is taking time
+               //START
+               /*
+               var msecs1= Date.now();
+               var that = this;
+               require(["orion/editor/edit"], function(edit) {
+                that.editor = edit({
+                    parent:document.getElementById('xmldialog'),
+                    lang:"html",
+                   readonly:true,
+                   //showLinesRuler: false,
+                    contents: formatted_xml
+                });
+                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']
+                });
+                });
+               var msecs2= Date.now();
+               //console.log("Time taken for displaying XML:" + (msecs2 - msecs1));
+               */
+                //END
+               //var success = customValidation(currentNodeSet);
+               var success = customValidation(nodeSetWithUpdatedDgNumbers);
+               if(!success){
+                       showFlowDesignErrorBox();
+               }
+               $('#processingStatusId').html("");
+               }, 0);
+            }
+        }
+
+    });
+</script>