var global_editor ; 
function addParam(idVal){
	//console.log(val);
	//console.log(global_editor.getText());
	if(global_added_obj["a" + idVal] != undefined &&  global_added_obj["a" + idVal] != null){
		global_added_obj["a" + idVal]= global_added_obj["a" + idVal]+1;
		$("#addCnt" +  + idVal).text("added " + global_added_obj["a" + idVal] + " times");
	}else{
		global_added_obj["a" + idVal]= 1;
		$("#addCnt" +  + idVal).text("added " + global_added_obj["a" + idVal] + " time");
	}
	var nameVal = document.getElementById("a" + idVal).value;
	var valueBoxVal = document.getElementById("valbox" + idVal).value;
	//$("#btn" + idVal).val('Added');
	//$("#btn" + idVal).attr('disabled','disabled'); 
	//console.dir(nameVal);
	//console.dir(valueBoxVal);


	var paramElement = "<parameter name='" + nameVal + "' value='" + valueBoxVal + "'/>\n";
	global_editor.setText(global_editor.getText() + paramElement);
}

var g_currValuesObj={};

function filterValues(filterVal){
	global_added_obj={};
	var matchedCnt =0;
	var valuesObj = g_currValuesObj;
	var newValuesObj ={};
	var searchValues =[];
	if(filterVal != null && filterVal != undefined){
		filterVal=filterVal.trim();
	}	
	searchValues = filterVal.split(/ /);
	//console.log("filterVal:" + filterVal);
	if(searchValues != null && searchValues != undefined){	
        	for (var key in valuesObj) {
             		if (valuesObj.hasOwnProperty(key)) {
				var newArrObj = [];
                   		if(Array.isArray(valuesObj[key])){
                      			var arrObj=valuesObj[key];
					var cnt=1;
                      			for(var i=0;i<arrObj.length;i++){
						var foundCount = 0;
						for(var k=0;k<searchValues.length;k++){
							if(arrObj[i].indexOf(searchValues[k]) != -1){
								foundCount++;
							}
						}
						if(foundCount == searchValues.length){
							matchedCnt++;
							newArrObj.push(arrObj[i]);
						}
		      			}	
					newValuesObj[key] =  newArrObj;
		   		}		
			}
		}
		$("#matchedCntId").html(matchedCnt);
	}else{
		newValuesObj = valuesObj;
	}
	var valuesHtml=buildValuesHtml(newValuesObj);	
        valuesHtml+="</div>";
	$("#sli-values-div").html(valuesHtml);
}

function buildValuesHtml(valuesObj){
	var idCounter=0;
	var htmlVal = "";
	
        for (var key in valuesObj) {
             if (valuesObj.hasOwnProperty(key)) {
                   var v = "<div style='font-weight:bold;font-size:1.0em;'><label>" + key + "<b/label>";
                   if(Array.isArray(valuesObj[key])){
                      var arrObj=valuesObj[key];
			var cnt=1;
                      for(var i=0;i<arrObj.length;i++){
				var idVal = idCounter++;
			 var addBtn = "<input id='btn" + idVal + "' type='button' style='background-color:#D6EBFF;' value='Add as Parameter'" + "onclick='addParam(\"" + idVal + "\")'><div style='float:right' id='addCnt" + idVal + "'></div>";
			var variableBox = "";
			var valBox = "<input id='valbox" + idVal + "' type='text' style='width:500px;height:30px;' value=''>";
			if(arrObj[i] != undefined && arrObj[i].length <150){
                         	//v += "<div style='width:1150px;background:aliceblue;border-color:aliceblue' class='valueBoxDiv' id='valueBoxDiv" + idVal +  "'>"  + "<input style='width:1125px;background:rgb(223, 191, 191);color:rgb(32, 45, 87);' type='text' readonly='1'  id='a" + idVal + "' onclick='selectText(\"" + idVal+"\",\"" + key + "\")' value='" +arrObj[i] + "' title='" + arrObj[i] + "' >" ;
                         	v += "<div style='width:1150px;background:aliceblue;border-color:aliceblue' class='valueBoxDiv' id='valueBoxDiv" + idVal +  "'>"  + "<input style='width:1125px;background:aliceblue;color:rgb(32, 45, 87);' type='text' readonly='1'  id='a" + idVal + "' onclick='selectText(\"" + idVal+"\",\"" + key + "\")' value='" +arrObj[i] + "' title='" + arrObj[i] + "' >" ;
				variableBox = "<input style='width:1125px' id='variableBox" + idVal + "' type='text' value='`$" + arrObj[i] + "`'>";
			}else{
                         	v+= "<div style='width:1150px;background:aliceblue;border-color:aliceblue' class='valueBoxDiv' id='valueBoxDiv" + idVal +  "'>"  + "<textarea style='width:1125px;background:aliceblue;color:rgb(32, 45, 87);' readonly='1'  id='a" + idVal + "' onclick='selectText(\"" + idVal+"\",\"" + key + "\")' title='" + arrObj[i] + "' >"  + arrObj[i] + "</textarea>";
				variableBox = "<textarea style='width:1125px' id='variableBox" + idVal + "' >`$" + arrObj[i] + "`'</textarea>";
			}
			  v += "<div id='valAddDiv" +  idVal + "' style='display:none;'>" +  valBox + "&nbsp;&nbsp;" + addBtn + "</div>" +
		           "<div id='variableBoxDiv" + idVal + "' style='display:none;color:rgb(32, 45, 87);'>Display as a variable<br>" + variableBox + "</div>" + "</div>";
			cnt++;
                      }
                      htmlVal+= v + "</div>";
                                }
                   }
             }
	return htmlVal;
}

function getModuleName(){
	var activeWorkspace=RED.view.getWorkspace();
	var moduleName="";
	RED.nodes.eachNode(function(n) {
		if (n.z == activeWorkspace) {
			if(n.type == 'service-logic'){
				//console.log("getModuleName():<" + n.module + ">");
				moduleName=n.module;
			}
               	}
       	});
	return moduleName;
}
var global_added_obj={};
var displayingRpcs = false;
function showRpcsValuesBox(editor,valuesObj){
	displayingRpcs = true;
	showValuesBox(editor,valuesObj);
}

function showValuesBox(editor,valuesObj){
	var moduleName = getModuleName();	
	var obj = valuesObj[moduleName];
	//console.dir(valuesObj);
	//console.dir(obj);
	var moduleObj ={};
	if(obj == undefined){
		moduleObj[moduleName] = ["No SLI values setup for this module " + moduleName + ".Upload the yang file for this module or if already uploaded ,load it from the Available Modules from the Menu."];	
	}else{
		moduleObj[moduleName] = obj;
	}
	showValuesBoxForModule(editor,moduleObj,moduleName);	
}

function showValuesBoxForModule(editor,valuesObj,moduleName){
	global_editor=editor;
	g_currValuesObj = valuesObj;
	//console.log(editor.getText());
	//populate the valid SLI values
	var valuesHtml="<style>.color-dialog {background:aliceblue;border-color:lightgrey;border-width:3px;border-style:solid; }</style><div style='float:left;width:1200px;background:aliceblue'><input style='width:1125px' id='filter-id' type='text' value='' placeholder='To filter the values type words seperated by space in this box' onkeyup='filterValues(this.value)'></div><div style='float:left;color:green;font-size:0.8em' id='matchedCntId'></div><div style='clear:both'></div><div id='sli-values-div' style='width:1200px;'>" ;
	valuesHtml+=buildValuesHtml(valuesObj);	
       valuesHtml+="</div>";
	global_added_obj={};

	
 var title = "SLI Values for Module " + moduleName;	
	if(displayingRpcs){
		title = "RPCs for Module " + moduleName;
	}
	$('#sli-values-dialog').dialog({
                       modal: false,
                       title: title,
                       width: 1200,
		       height: 500,
		       dialogClass: 'color-dialog',
                       open: function () {
				$("#sli-values-dialog").dialog("widget").find(".ui-dialog-buttonpane").css({'background': 'aliceblue'});
                                $(this).html(valuesHtml);
                       },
                       buttons: {
                           Close: function () {
				displayingRpcs = false;
                              //$(this).dialog("close");
                              $(this).dialog("destroy");
                           }
                       },
			close: function(ev,ui){
				displayingRpcs = false;
				$(this).dialog("destroy");
			}
        }); // end dialog div
}

function showCommentsBox(){
	var comments = $("#node-input-comments").val();
	var commentsBoxHtml="<div><textarea style='font-size:18px;height:150px;width:390px;' id='taCommentId'>" + comments + "</textarea></div>" ;

	var nodeName=$("#node-input-name").val();
	$('#comments-dialog').dialog({
                       modal: true,
                       title: "Add comments for Node " + nodeName,
                       width: 450,
		       height: 300,	
			/*	
                       open: function () {
                                $(this).html(commentsBoxHtml);
                       },
			*/
                       buttons: {
                           "Save Comments": function () {
				var v=$("#taCommentId").val();
				if(v != null){
					v = v.trim();
					if(v != ''){
						$("#node-input-btnComments").html("<span style='color:blue;'><b>View Comments</b></span>");
					}else{
						$("#node-input-btnComments").html("<b>Add Comments</b>");
					}
				}
				//console.log("value from text area" + v);
				$("#node-input-comments").val(v);
				$(this).dialog("close");
                              //$(this).dialog("destroy");
                           },
                           Cancel: function () {
				var v=$("#taCommentId").val();
				if(v != null){
					v = v.trim();
					if(v != ''){
						$("#node-input-btnComments").html("<span style='color:blue;'><b>View Comments</b></span>");
					}else{
						$("#node-input-btnComments").html("<b>Add Comments</b>");
					}
				}
				$(this).dialog("close");
                              //$(this).dialog("destroy");
                           }
                       },
			close: function(ev,ui){
				//console.log("closing..");
				$(this).dialog("destroy");
			}
        }).html(commentsBoxHtml);

	//console.log("done");
/*	
	function functionDialogResize(ev,ui) {
		console.log("ui.size.height:" + ui.size.height);
                $(this).css("height",(ui.size.height-275)+"px");
        };

        $( this ).on("dialogresize", functionDialogResize);


	$( this ).one("dialogopen", function(ev) {
                var size = $( "#sliValDiv" ).dialog('option','sizeCache-function');
                if (size) {
                    functionDialogResize(null,{size:size});
                }
         });
*/

}

function selectText(objId,groupVal){
	//console.log(objId + groupVal);	
	//console.log(objId + groupVal);	
	$(document).ready(function(){
		//console.log("doc ready");
		//console.dir($('#valAddDiv' +  objId));
		if ($('#valAddDiv' +  objId).is(":visible")) {
			$("#variableBoxDiv" +  objId ).hide("slow");
			//$("#a" +  objId ).css({"background": "rgb(223, 191, 191)",
			//			"color": "rgb(32, 45, 87)"});
			$("#a" +  objId ).css({"background": "aliceblue",
						"color": "rgb(32, 45, 87)"});
						/*"color": "rgb(32, 45, 87)"});*/
			$("#valAddDiv" +  objId ).hide("slow");
			$("#valueBoxDiv" +objId).css({"border-color": "aliceblue",
             						"border-width":"1px", 
             						"background-color":"aliceblue",
             						"border-style":"solid"});
			//$("#valAddDiv" +  objId ).fadeOut("slow");
    		} else{
			$("#variableBoxDiv" +  objId ).show("slow");
			$("#valAddDiv" +  objId).show("slow");
			/*$("#valueBoxDiv" +objId).css({"border-color": "rgb(75, 111, 147)",
             						"border-width":"5px", 
             						"background-color": "rgb(223, 191, 191)",
             						"border-style":"solid",
							"border-bottom": "5px solid rgb(75, 111, 147)"});
			*/
			$("#valueBoxDiv" +objId).css({"border-color": "rgb(75, 111, 147)",
             						"border-width":"3px", 
             						"background-color": "aliceblue",
             						"border-style":"solid",
							"border-bottom": "3px solid rgb(75, 111, 147)"});
			/*$("#a" +  objId ).css({"background": "rgb(223, 191, 191)",
						"color": "rgb(75, 111, 147)"});
			*/
			$("#a" +  objId ).css({"background": "aliceblue",
						"color": "rgb(75, 111, 147)"});
    		}
		$("#a" +  objId).select();
	});
	//console.log("group-heading" + objId);
//	var obj= document.getElementById("group-heading" +  objId);
//	obj.innerText = groupVal;
//	obj.style.color = "blue";
//	console.dir(obj);
}

function hidePrevGroup(objId){
//	console.log("mouseout" );
//	var obj= document.getElementById("group-heading" +  objId);
//	obj.innerText = "";
}
/*
function fixDiv() {
    var $cache = $('#getFixed');
    if ($(window).scrollTop() > 100)
      $cache.css({
        'position': 'fixed',
        'top': '10px'
      });
    else
      $cache.css({
        'position': 'relative',
        'top': 'auto'
      });
 }

$(window).scroll(fixDiv);

function isScrolledIntoView(elem)
{
    var $elem = $(elem);
    var $window = $(window);

    var docViewTop = $window.scrollTop();
    var docViewBottom = docViewTop + $window.height();

    var elemTop = $elem.offset().top;
    var elemBottom = elemTop + $elem.height();

    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}
*/

function getCommits(filePath){
var urlPath="/getCommitsInfo";
$.get(urlPath,{"filePath" : filePath })
	.done(function( data ) {
		if(data != undefined && data != null){
			//console.log(data.stdout);
			var jsonObj = JSON.parse(data.stdout);
			var codeCloudFilesHtmlStr = $( "#codecloud-browser-dialog" ).html();
			var htmlStr = getCCFileHtmlStr(filePath,jsonObj,codeCloudFilesHtmlStr);
			$( "#codecloud-browser-dialog" ).html(htmlStr);
			/*
			for(var i=0;i<jsonObj.length;i++){
				console.log("commit:" + jsonObj[i].commit);	
				console.log("date:" + jsonObj[i].date);	
				console.log("author:" + jsonObj[i].author);	
				console.log("comment:" + jsonObj[i].comment);	
			}
			*/
		}
	})
	.fail(function(err) {
	})
	.always(function() {
	});
}


function getCCFileHtmlStr(filePath,rows,codeCloudFilesHtmlStr){
	var styleStr = "<style> " + 
			"table#cct01 { width:100%; } \n" +
				"table#cct01 th,table#cct01 td { border: 1px solid black; border-collapse: collapse; } \n" +
				"table#cct01 th,table#cct01 td { padding: 5px; text-align: left; } \n" +
				"table#cct01 tr:nth-child(even) { background-color: #eee; }\n" +
				"table#cct01 tr:nth-child(odd) { background-color:#fff; }\n" +
				"table#cct01 th	{ background-color: #65a9d7; color: white; }\n" +
				"table#cct01 a { color: #337ab7; }\n" +
				"table#cct01 a:link { color: #65a9d7; }\n" +
				"table#cct01 a:visited { color: #636; }\n" + 
				"table#cct01 a:hover { color: #3366CC; cursor: pointer }\n" + 
				"table#cct01 a:active { color: #65a9d7 }\n" +
				"table#cct01 caption { display: table-caption; text-align: center;  background: #eee; font-weight: bold; font-size: 1.1em; border: 1px solid black; }\n" + 
				"</style>";
			var htmlStr="";
			//console.dir(rows);	
			if(rows != null && rows.length >0){
				var alertDialog = '<div id="ccAlertdialog"></div>';
				htmlStr= alertDialog +  "<div style='width:1050;height:650'>" + styleStr;
				htmlStr += "<table id='cct01' >";
				htmlStr += "<caption id='ccCaptionId'>" + filePath + "</caption>";
				htmlStr += "<tr>";
				htmlStr += "<th>Commit ID</th>" ;
				htmlStr += "<th>Date</th>" ;
				htmlStr += "<th>Author</th>" ;
				htmlStr += "<th>Comment</th>" ;
				htmlStr += "</tr>";
				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 _commitId = row.commit;
					var dt = row.date;
					var author = row.author;
					var comment = row.comment;
					htmlStr += "<tr>";
					htmlStr += "<td><a onclick=\"javascript:importCCFlow('" + _commitId + "','" + filePath + "')\">" + _commitId + "</a></td>";
					htmlStr += "<td>" + dt + "</td>";
					htmlStr += "<td>" + author + "</td>";
					htmlStr += "<td>" + comment + "</td>"; 
					htmlStr += "</tr>";
				}
				htmlStr += "</table>";
				htmlStr += "</div>";
			}
	//console.log(htmlStr);
	return htmlStr;
}


var gitLocalFlowFiles=[];
function filterGitLocalFlows(filterVal){
	
	var matchedCnt =0;
	var valuesObj = gitLocalFlowFiles;
	//console.dir(codeCloudFlowFiles);
	var updatedValuesObj =[];
	var searchValues =[];
	if(filterVal != null && filterVal != undefined){
		filterVal=filterVal.trim();
	}	
	searchValues = filterVal.split(/ /);
	//console.log("filterVal:" + filterVal);
	//console.dir(searchValues);
	if(searchValues != null && searchValues != undefined){	
		var foundCount = 0;
		for(var k=0;k<searchValues.length;k++){
			if(foundCount >0){
				valuesObj=updatedValuesObj;
			}
			updatedValuesObj=[];
			for(var i=0;i<valuesObj.length;i++){
				var patt = new RegExp(searchValues[k],"gi");
				if(patt.test(valuesObj[i])){
					foundCount++;
					updatedValuesObj.push(valuesObj[i]);
				}
			}
		}
	}else{
		updatedValuesObj = valuesObj;
	}
	//console.dir(updatedValuesObj);
	var html="<ul>";
	if(updatedValuesObj != null){
		var files=updatedValuesObj;
		//console.dir(files);
		files.sort(function (a,b){
			if(a > b){
				return 1;
			}else if(a <  b){
				return -1;
			}else{	
				return 0;
			}
		});
		for(var i=0;files != null && i<files.length;i++){
			html+="<li><a href=\"#\" onclick=\"importGitLocalFlow('" + files[i] + "')\">" + files[i] + "</a></li>";
		}
	}
					html+="</ul>";
					html+="</div>";
    	$( "#gitlocal-data-container" ).html(html);
}

var codeCloudFlowFiles=[];
function filterFlows(filterVal){
	
	var matchedCnt =0;
	var valuesObj = codeCloudFlowFiles;
	//console.dir(codeCloudFlowFiles);
	var updatedValuesObj =[];
	var searchValues =[];
	if(filterVal != null && filterVal != undefined){
		filterVal=filterVal.trim();
	}	
	searchValues = filterVal.split(/ /);
	//console.log("filterVal:" + filterVal);
	//console.dir(searchValues);
	if(searchValues != null && searchValues != undefined){	
		var foundCount = 0;
		for(var k=0;k<searchValues.length;k++){
			for(var i=0;i<valuesObj.length;i++){
				var patt = new RegExp(searchValues[k],"gi");
				if(patt.test(valuesObj[i])){
					foundCount++;
					updatedValuesObj.push(valuesObj[i]);
				}
			}
		}
	}else{
		updatedValuesObj = valuesObj;
	}
	//console.dir(updatedValuesObj);
	var html="<ul>";
	if(updatedValuesObj != null){
		var files=updatedValuesObj;
		//console.dir(files);
		files.sort(function (a,b){
			if(a > b){
				return 1;
			}else if(a <  b){
				return -1;
			}else{	
				return 0;
			}
		});
		for(var i=0;files != null && i<files.length;i++){
			html+="<li><a href=\"#\" onclick=\"getCommits('" + files[i] + "')\">" + files[i] + "</a></li>";
		}
	}
					html+="</ul>";
					html+="</div>";
    	$( "#codecloud-data-container" ).html(html);
}

var yangFilesList=[];
/*
function filterYangFiles(filterVal){
	
	var matchedCnt =0;
	var valuesObj = yangFilesList;
	var updatedValuesObj =[];
	var searchValues =[];
	if(filterVal != null && filterVal != undefined){
		filterVal=filterVal.trim();
	}	
	searchValues = filterVal.split(/ /);
	if(searchValues != null && searchValues != undefined){	
		var foundCount = 0;
		for(var k=0;k<searchValues.length;k++){
			for(var i=0;i<valuesObj.length;i++){
				var patt = new RegExp(searchValues[k],"gi");
				if(patt.test(valuesObj[i])){
					foundCount++;
					updatedValuesObj.push(valuesObj[i]);
				}
			}
		}
	}else{
		updatedValuesObj = valuesObj;
	}
	//console.dir(updatedValuesObj);
	var html="<ul>";
	if(updatedValuesObj != null){
		var files=updatedValuesObj;
		//console.dir(files);
		files.sort(function (a,b){
			if(a > b){
				return 1;
			}else if(a <  b){
				return -1;
			}else{	
				return 0;
			}
		});
		for(var i=0;files != null && i<files.length;i++){
			html+="<li><a href=\"#\" onclick=\"getYangFile('" + files[i] + "')\">" + files[i] + "</a></li>";
		}
	}
					html+="</ul>";
					html+="</div>";
    	$( "#list-yang-data-container" ).html(html);
}
*/

function filterYangFiles(filterVal){
	var matchedCnt =0;
	var valuesObj = yangFilesList;
	var updatedValuesObj =[];
	var searchValues =[];
	if(filterVal != null && filterVal != undefined){
		filterVal=filterVal.trim();
	}	
	searchValues = filterVal.split(/ /);
	if(searchValues != null && searchValues != undefined){	
		var foundCount = 0;
		for(var k=0;k<searchValues.length;k++){
			for(var i=0;i<valuesObj.length;i++){
				var patt = new RegExp(searchValues[k],"gi");
				if(patt.test(valuesObj[i])){
					foundCount++;
					updatedValuesObj.push(valuesObj[i]);
				}
			}
		}
	}else{
		updatedValuesObj = valuesObj;
	}
	//console.dir(updatedValuesObj);
	var html="<table id='yang-file-list-table'  border=1>";
            html+="<tr>";
            html+="<th>File</th>";
            html+="<th>Delete</th>";
            html+="</tr>";
	
	if(updatedValuesObj != null){
		var files=updatedValuesObj;
		//console.dir(files);
		files.sort(function (a,b){
			if(a > b){
				return 1;
			}else if(a <  b){
				return -1;
			}else{	
				return 0;
			}
		});
		for(var i=0;files != null && i<files.length;i++){
			 html+="<tr><td><a href=\"#\" onclick=\"getYangFile('" + files[i] + "')\">" + files[i] + "</a></td><td>" + "<input type='button'  onclick='deleteYangFile(\"" + files[i]  + "\")' value='Delete'></td></td></td></tr>";
		}
	}
	html+="</table>";
        html+="</div>";

    	$( "#yang-files-data-container" ).html(html);
}

function getYangFile(fileName){
	$("#dwnldYangFormId").remove();
        //using form to submit
        var form = $('<form id="dwnldYangFormId" method="POST" action="/downloadYang"></form>');
        form.append('<input type="hidden" name="fileName" value="' + fileName + '"/>');
        form.appendTo('body');
        $("#dwnldYangFormId").submit();

}
function deleteYangFile(fileName){
	var reqData= {"fileName":fileName};
	 $.post( "/deleteYangFile",reqData )
                      .done(function( data ) {
                      })
                      .fail(function(err) {
                          console.log( "error" + err );
                       })
                       .always(function() {
                              $("#list-yang-browser-dialog").dialog("close");
				$("#btn-list-yang-files").trigger("click");
                       });
}

function importCCFlow(commitId,filePath){
var urlPath="/importCodeCloudFlow";
$.get(urlPath,{"commitId" : commitId,"filePath" : filePath })
	.done(function( data ) {
		if(data != undefined && data != null){
			//console.log(data.stdout);
			var jsonObj = JSON.parse(data.stdout);
			$( "#codecloud-browser-dialog" ).dialog("close");
			RED.view.importNodes(JSON.stringify(jsonObj));
		}
	})
	.fail(function(err) {
		RED.notify("Could not import flow from code cloud.");	
		$( "#codecloud-browser-dialog").dialog("close");
     		console.log( "error occured importing flow.");
	})
	.always(function() {
	});
}

function importGitLocalFlow(filePath){
var urlPath="/importGitLocalFlow";
$.get(urlPath,{"filePath" : filePath })
	.done(function( data ) {
		if(data != undefined && data != null){
			//console.log(data.stdout);
			var jsonObj;
			try{
				jsonObj = JSON.parse(data.stdout);
				$( "#gitlocal-browser-dialog" ).dialog("close");
				RED.view.importNodes(JSON.stringify(jsonObj));
			}catch(err){
				RED.notify("Could not import flow from Local Git Repository.");	
				$( "#gitlocal-browser-dialog").dialog("close");
     				console.log( "error occured importing flow." + err);
			}
		}else{
			RED.notify("Could not import flow from Local Git Repository.");	
			$( "#gitlocal-browser-dialog").dialog("close");
     			console.log( "error occured importing flow." + err);
		}
	})
	.fail(function(err) {
		RED.notify("Could not import flow from Local Git Repository.");	
		$( "#gitlocal-browser-dialog").dialog("close");
     		console.log( "error occured importing flow.");
	})
	.always(function() {
	});
}

var availableYangModules=[];
function filterYangModules(filterVal){
	
	var matchedCnt =0;
	var valuesObj = availableYangModules ;
	//console.dir(codeCloudFlowFiles);
	var updatedValuesObj =[];
	var searchValues =[];
	if(filterVal != null && filterVal != undefined){
		filterVal=filterVal.trim();
	}	
	searchValues = filterVal.split(/ /);
	//console.log("filterVal:" + filterVal);
	//console.dir(searchValues);
	if(searchValues != null && searchValues != undefined){	
		var foundCount = 0;
		for(var k=0;k<searchValues.length;k++){
			if(foundCount >0){
				valuesObj=updatedValuesObj;
			}
			updatedValuesObj=[];
			for(var i=0;i<valuesObj.length;i++){
				var patt = new RegExp(searchValues[k],"gi");
				if(patt.test(valuesObj[i])){
					foundCount++;
					updatedValuesObj.push(valuesObj[i]);
				}
			}
		}
	}else{
		updatedValuesObj = valuesObj;
	}
	//console.dir(updatedValuesObj);
	var html="";
	html+="<table border=1>";
        html+="<tr>";
        html+="<th>#</th>";
        html+="<th>Load</th>";
        html+="<th>Module</th>";
        html+="</tr>";

	if(updatedValuesObj != null){
		var files=updatedValuesObj;
		//console.dir(files);
		files.sort(function (a,b){
			if(a > b){
				return 1;
			}else if(a <  b){
				return -1;
			}else{	
				return 0;
			}
		});
		var count=1;
		for(var i=0;files != null && i<files.length;i++){
			var val = files[i].replace(/:.*/,"");
			if(files[i].indexOf(":checked") != -1){
                          	html+="<tr><td>" + count +  "</td><td><input type='checkbox' checked value='" + val + "'></td><td>" + val + "</td></tr>";
                        }else{
                                html+="<tr><td>" + count +   "</td><td><input type='checkbox' value='" + val + "'></td><td>" + val + "</td></tr>";
                        }
			count++;
		}
	}
	html+="</table>";
	html+="</div>";
    	$( "#yang-modules-data-container" ).html(html);
}