    //$Id: Router.js,v 1.8.8.1 2011/12/17 11:21:26 nagulan Exp $
function ShowRouterConfigField(val)
{ 
    if(val == 'showTab'){
     showInputFeildSPM('routers');
     }
    showURLInDialog('/framework/addRouter.jsp','position=auto,modal=yes,width=580,scrollbars=no,title=Add Router')//No I18N
/*
   var addSubnetLinkElem = document.getElementById("routerInputTables");
  
   var url; 
   if(addSubnetLinkElem.style.display =="none") {
        addSubnetLinkElem.style.display="block";
        url = '/Router.do?actionFrom=enbleInputField&uid='+new Date().getTime();
    }else{
   
       addSubnetLinkElem.style.display="none";
       url = '/Router.do?actionFrom=hideInputField&uid='+new Date().getTime();
   }
   updateInputFieldStaus(url);
*/
}

function cancelRouterConfig()
{
    document.routerAddForm.actionFrom.value = "cancel"
}
function validateRouterImport()
{
    var button = document.routerImportForm.actionFrom.value
    
    if(button == "close")
    {
        return false;
    }else if(button == "cancel")
    {
        
        return false;
        
    }else if(button == "importRouterCSVInput")
    {
        var path = trim(document.routerImportForm.csvPath.value)
        if(path.length == 0)
        {
               alert("Select a CSV file ");
               return false;
        }else
        {
            var splitFile = path.split(".");
            var fileType = splitFile[splitFile.length - 1];
            if( fileType == 'csv' || fileType == 'CSV')
            { 
              return true;
            }else
            {
                 alert("Please Select a \".CSV\" file ");
               return false;
             }
            
            return true;
        }
        
    }
   
    return false;
}

function setActionValues(value)
{
     document.routerAddForm.actionFrom.value=value;
}
function showImportRouterField()
{
    var addSubnetLinkElem = document.getElementById("importRouter");
   if(addSubnetLinkElem.style.display =="none") {
        addSubnetLinkElem.style.display="block";        
    }else{   
       addSubnetLinkElem.style.display="none";      
   }
   
}
/**** FOR CLI TEST start *********************/
function changeDeviceType(val)
{
    
    if(val !="0")
    {
      
        document.getElementById('cisco').style.display="block";
      //  document.getElementById('hp').style.display="none";
       // document.getElementById('foundry').style.display="none";
       
    }else{
            document.getElementById('cisco').style.display="none";
    }
  /*  else if(val == "hp")
    {
        document.getElementById('cisco').style.display="none";
        document.getElementById('hp').style.display="block";
        document.getElementById('foundry').style.display="none";
       
    }
    else if(val == "foundry")
    {
        document.getElementById('cisco').style.display="none";
        document.getElementById('hp').style.display="none";
        document.getElementById('foundry').style.display="block";
    }
    else
    {
        document.getElementById('cisco').style.display="none";
        document.getElementById('hp').style.display="none";
        document.getElementById('foundry').style.display="none";
    } */
}
function promptConversion(prompt)
{
    if(prompt == "#")
    {  
        prompt = "hash"; 
    }
    else if(prompt == "%")
    {  prompt = "percen"; }
    else if(prompt =="&")
    { prompt = "amp"; }
    return prompt;
}
function validateDeviceFiled(deviceForm)
{
        var snmpversion = document.getElementById('snmpVersion').value
        if(snmpversion != "snmpV3"){
            if(deviceForm.selectedVendor.value == "0")
            {
                 if(document.getElementById('community').value.length == 0)
                {
                    alert("Please enter the community string or use CLI Settings");
                    deviceForm.community.focus();
                    return false;
                }
            }
            deviceForm.v3username.value="";
            deviceForm.coname.value="";
        }else{
            if(document.getElementById('v3username').value.length == 0)
            {
                alert("Please enter the User Name or use CLI Settings");//No I18N
                deviceForm.v3username.focus();
                return false;
            }
            deviceForm.community.value = "";
        }
    if(deviceForm.selectedVendor.value == "cisco" || deviceForm.selectedVendor.value == "hp" || deviceForm.selectedVendor.value == "foundry")
    {
        
          
                if(deviceForm.community.value.length == 0 && deviceForm.cisPassword.value.length == 0)
                {
                    alert("Snmp and Cli both cannot be empty!");
                    return false;
                }
                else if(deviceForm.cisPassword.value.length > 0  && deviceForm.cisPrompt.value.length == 0)
                {
                    alert("prompt cannot be empty!");
                    deviceForm.cisPrompt.focus();
                    return false;
                }
                else if(deviceForm.cisPassword.value.length == 0 && deviceForm.cisPrompt.value.length > 0)
                  {
                    alert("password cannot be empty!");
                    deviceForm.cisPassword.focus();
                    return false;
                }
         if(deviceForm.cisEnUserName.value.length > 0 && deviceForm.cisEnPassword.value.length == 0){
            alert("Enable Password and Enable Prompt cannot be empty!")
            return false;
        }
        }
    /*    if(deviceForm.community.value.length == 0 && deviceForm.cisPassword.value.length == 0)
        {
            alert("Snmp and Cli both cannot be empty!");
            return false;
        }
        else if(deviceForm.cisPassword.value.length > 0  && deviceForm.cisPrompt.value.length == 0)
        {
            alert("prompt cannot be empty!");
            deviceForm.cisPrompt.focus();
            return false;
        }
        else if(deviceForm.cisPassword.value.length == 0  && deviceForm.cisPrompt.value.length > 0)
        {
            alert("password cannot be empty!");
            deviceForm.cisPassword.focus();
            return false;
        }
        
        *
    }
 /*   else if(deviceForm.selectedVendor.value == "foundry")
    {
       if(deviceForm.community.value.length == 0 && deviceForm.founPassword.value.length == 0)
       {
            alert("Snmp and Cli both cannot be empty");
            return false;
       } 
       else if(deviceForm.founPassword.value.length > 0  && deviceForm.founPrompt.value.length == 0)
       {
            alert("prompt cannot be empty!");
            deviceForm.founPrompt.focus();
            return false;
       }
       else if(deviceForm.founPassword.value.length == 0  && deviceForm.founPrompt.value.length > 0)
       {
            alert("password cannot be empty!");
            deviceForm.founPassword.focus();
            return false;
       }
           
          
    }
    else if(deviceForm.selectedVendor.value == "hp")
    {
       if(deviceForm.community.value.length == 0 && deviceForm.hpPassword.value.length == 0)
       {
            alert("snmp and cli both cannot be empty");
            return false;
       }
       else if(deviceForm.hpPassword.value.length > 0)
       {
           if(deviceForm.hpPrompt.value.length == 0)
           {
                alert("System Prompt cannot be empty!");
                return false;
           }
       }
       else if(deviceForm.hpPrompt.value.length > 0)
       {
           if(deviceForm.hpPassword.value.length == 0)
           {
               alert("Password cannot be empty!");
                return false;
           }
       }
       
    } */
    return true;
}


/** modify router cli********/
function assignFieldValue()
{
    
    if(document.routerModifyForm.deviceType.value == "cisco" || document.routerModifyForm.deviceType.value == "hp" || document.routerModifyForm.deviceType.value == "foundry")
    {
        cliPassword = document.getElementById('clipassword').value
        cliSysPrompt = document.getElementById('cliSysPrompt').value
        document.routerModifyForm.username.value = document.getElementById('cisUserName').value
        document.routerModifyForm.password.value = cliPassword
        document.routerModifyForm.prompt.value = cliSysPrompt
        
        document.routerModifyForm.cliEnabUsername.value = document.getElementById('cisEnUserName').value
        document.routerModifyForm.cliEnabPass.value = document.getElementById('cisEnPassword').value
        document.routerModifyForm.cliEnabProm.value = document.getElementById('cisEnPrompt').value
    }
/*    else if(document.routerModifyForm.deviceType.value == "hp")
    {
        document.routerModifyForm.username.value = document.getElementById('cliUsername').value
        document.routerModifyForm.password.value = document.getElementById('cliHpPassword').value
        document.routerModifyForm.prompt.value = document.getElementById('cliHpSysPrompt').value
    }
    else if(document.routerModifyForm.deviceType.value == "foundry")
    {
        
        document.routerModifyForm.password.value = document.getElementById('cliFounPassword').value
        document.routerModifyForm.prompt.value = document.getElementById('cliFounSysPrompt').value
        document.routerModifyForm.cliEnabPass.value = document.getElementById('cliFounEnabPass').value
        document.routerModifyForm.cliEnabProm.value = document.getElementById('cliFounEnabPrompt').value
    
    } */
}










/**** FOR CLI TEST finish *********************/
function addRouter(f)
{
    f.actionFrom.value = "addRouterInput";
    if(!validateRouterInputs(f))
    {
       return false;
    }
    var vali = validateDeviceFiled(f);
    if(!vali)
    {
        return false;
    }
    var DeviceName = f.DeviceName.value;
    var community  = f.community.value;    
    
    if(community.length > 0 || f.v3username.value.length > 0)
    {
        selectedDevice = "true";
    }
    else
    {
        selectedDevice = "false";
    }
    
 if(document.getElementById('selectedVendor').value == "cisco" || document.getElementById('selectedVendor').value =="hp" || document.getElementById('selectedVendor').value == "foundry")
    {
        var username = document.getElementById('cisUserName').value;
        var password =  document.getElementById('cisPassword').value;
        var prompt = document.getElementById('cisPrompt').value;
        var deviceType = document.getElementById('selectedVendor').value;
        
        var enUserName = document.getElementById('cisEnUserName').value;
        var enPassword = document.getElementById('cisEnPassword').value;
        var enPrompt = document.getElementById('cisEnPrompt').value;

        document.getElementById('username').value = username;
        document.getElementById('password').value = password;
        document.getElementById('prompt').value = prompt;
        document.getElementById('deviceType').value = deviceType;
        document.getElementById('enUserName').value = enUserName;
        document.getElementById('enPassword').value = enPassword;
        document.getElementById('enPrompt').value = enPrompt;
      }
      else{
        document.getElementById('username').value = "";
        document.getElementById('password').value = "";
        document.getElementById('prompt').value = "";
        document.getElementById('deviceType').value = "" ;
        document.getElementById('enUserName').value = "";
        document.getElementById('enPassword').value = "";
        document.getElementById('enPrompt').value = "";
    }
    /* else if(document.getElementById('selectedVendor').value == "hp")
     {

            var username = document.getElementById('username').value;
            var password =  document.getElementById('hpPassword').value;
            var prompt = document.getElementById('hpPrompt').value;
            var deviceType = document.getElementById('selectedVendor').value;

            document.getElementById('username').value = username;
            document.getElementById('password').value = password;
            document.getElementById('prompt').value = prompt;
            document.getElementById('deviceType').value = deviceType;
            

     }
     else if(document.getElementById('selectedVendor').value == "foundry")
     {
            var password =  document.getElementById('founPassword').value;
            var prompt = document.getElementById('founPrompt').value;
            var enPassword = document.getElementById('founEnaPassword').value;
            var enPrompt = document.getElementById('founEnaPrompt').value;
            var deviceType = document.getElementById('selectedVendor').value;

            document.getElementById('password').value = password;
            document.getElementById('prompt').value = prompt;
            document.getElementById('enPassword').value = enPassword;
            document.getElementById('enPrompt').value = enPrompt;
            document.getElementById('deviceType').value = deviceType;
            
      } */
      return true;
}

var ajaxRouterRequest;
function sendRequestForAddRouter(url)
{
       
        if (window.XMLHttpRequest)
        {
                ajaxRouterRequest = new XMLHttpRequest();
                ajaxRouterRequest.onreadystatechange = ajaxResponseRouterChane;
                ajaxRouterRequest.open("GET", url, true);
                ajaxRouterRequest.send(null);
        }
        else if (window.ActiveXObject)
        {
                isIE = true;
                ajaxRouterRequest = new ActiveXObject("Microsoft.XMLHTTP");
                if (ajaxRouterRequest)
                {
                        ajaxRouterRequest.onreadystatechange = ajaxResponseRouterChane;
                        ajaxRouterRequest.open("GET", url, true);
                        ajaxRouterRequest.send(null);
                }
        }
}
function ajaxResponseRouterChane()
{
    if (ajaxRouterRequest.readyState == 4) 
	{
	
		if (ajaxRouterRequest.status == 200) 
                {
                    
                    window.parent.document.getElementById("RouterStatusImage").src = "/images/spacer.gif";
                    var responseTxt = ajaxRouterRequest.responseText
                    
                    if(document.routerAddForm.selectedToolID.value == "SWITCH_PORT_MAPPER")
                    {
                        
                      if(document.getElementById("routers").style.display == "none")
                      {
                        showInputFeildSPM('routers');
                      } 
  
                    }
		                  
                    refreshStatusView("RouterLayoutView");
		    window.document.getElementById("RouterErrorAnchor").innerHTML="<span class=redtxtbold> "+responseTxt+"</span>"; 
		
                      
                    
                }       
		else
                {  
			alert("There was a problem retrieving the XML data:\n" +ajaxRouterRequest.statusText);
		}
	}
}
function showRouterConfigDiv(id)
{
       // window.document.getElementById("RouterErrorAnchor").innerHTML="";
        var hideId = document.getElementById('importRouter');
        var hideId1 = document.getElementById('addNewRouter');

	if(id == "importRouter" )
        {
            hideId1.style.display = 'none';
            hideId.style.display = 'block';		
            document.getElementById('addRouterTxt').className='txt';
            document.getElementById('importRouterTxt').className='txtbold';	
        }else
        {
            hideId.style.display = 'none';		
            hideId1.style.display = 'block';
            document.getElementById('addRouterTxt').className='txtbold';
            document.getElementById('importRouterTxt').className='txt';
        }	
}

function ShowRouterInputField()
{  
   var addSubnetLinkElem = document.getElementById("routerInputTable");
   var url; 
   if(addSubnetLinkElem.style.display =="none") {
        addSubnetLinkElem.style.display="block";
        url = '/Router.do?actionFrom=enbleInputField&uid='+new Date().getTime();
    }else{
   
       addSubnetLinkElem.style.display="none";
       url = '/Router.do?actionFrom=hideInputField&uid='+new Date().getTime();
   }
   updateInputFieldStaus(url);
}
function showInputTxt()
{
    document.getElementById('addRouterTxt').className='txtbold';
    document.getElementById('importRouterTxt').className='txt';    
}
function updateInputFieldStaus(url){
    
        if (window.XMLHttpRequest)
        {
                resObject = new XMLHttpRequest();
                resObject.onreadystatechange = responseMethod;
                resObject.open("GET", url, true);
                resObject.send(null);
        }
        else if (window.ActiveXObject)
        {
                isIE = true;
                resObject = new ActiveXObject("Microsoft.XMLHTTP");
                if (resObject)
                {
                        resObject.onreadystatechange = responseMethod;
                        resObject.open("GET", url, true);
                        resObject.send(null);
                }
        }
}
var resObject;
function responseMethod() 
{
	if (resObject.readyState == 4) 
	{
		if (resObject.status == 200) 
                {
                    var stat = trim(resObject.responseText);                   
                }
	}


}



//Here enable router code added
function showEnableRouter()
{
    
    var enbleResolveDNSIDElem = document.getElementById('enbleResolveDNSID');
    if(enbleResolveDNSIDElem.style.display =="none") {
       enbleResolveDNSIDElem.style.display ="block";
       document.EnableRouterForm.actionFrom.value="getResolveDNS";
      var url = '/SwitchPortMapper.do?actionFrom=getResolveDNS&uid='+new Date().getTime();
      persistResolveDNS(url);
   } else {
       enbleResolveDNSIDElem.style.display="none";
   }
   
}
function persistResolveDNS(url)
{
    
        if (window.XMLHttpRequest)
        {
                resolveDNSReq = new XMLHttpRequest();
                resolveDNSReq.onreadystatechange = processReqResolveDNS;
                resolveDNSReq.open("GET", url, true);
                resolveDNSReq.send(null);
        }

        else if (window.ActiveXObject)
        {
                isIE = true;
                resolveDNSReq = new ActiveXObject("Microsoft.XMLHTTP");
                if (resolveDNSReq)
                {
                        resolveDNSReq.onreadystatechange = processReqResolveDNS;
                        resolveDNSReq.open("GET", url, true);
                        resolveDNSReq.send();
                }
        }
}
var resolveDNSReq;
function processReqResolveDNS()
{
    
       
        if (resolveDNSReq.readyState == 4) 
	{
            
		if (resolveDNSReq.status == 200) 
                {
                    
                   if(document.EnableRouterForm.actionFrom.value == "getResolveDNS")
                   {
                        var result = trim(resolveDNSReq.responseText);
                        if(result == "true")
                        {
                            document.EnableRouterForm.resolveDNS.checked = true;
                        }else
                        {
                            document.EnableRouterForm.resolveDNS.checked = false;
                        }

                   }else
                   {
                        var isResolveDNS = document.EnableRouterForm.resolveDNS.checked;
                        if(isResolveDNS)
                        {
                            document.getElementById("resolveDNSStatus").innerHTML = "Enabled";
                        }else
                        {
                            document.getElementById("resolveDNSStatus").innerHTML = "Disabled";
                        }
                        showEnableRouter();
                   }
                   
                }       
		else
                {  
			alert("There was a problem retrieving the XML data:\n" +req.statusText);
		}
	}
}
function saveSetResolveDNS()
{
    var isResolveDNS = document.EnableRouterForm.resolveDNS.checked;
    document.EnableRouterForm.actionFrom.value="setResolveDNS";
    var url = '/SwitchPortMapper.do?actionFrom=setResolveDNS&isResolveDNS='+isResolveDNS+'&uid='+new Date().getTime();
    persistResolveDNS(url); 
}
function trim(value) {
   var temp = value;
   var obj = /^(\s*)([\W\w]*)(\b\s*$)/;
   if (obj.test(temp)) { temp = temp.replace(obj, '$2'); }
   var obj = /  /g;
   while (temp.match(obj)) { temp = temp.replace(obj, ""); }
   return temp;
}

var routerRefreshIntervalID;
function checkRefreshRouterStatus(isScanningStatus)
{
        //window.clearInterval(routerRefreshIntervalID);
	 if(isScanningStatus == 'true') {
            routerRefreshIntervalID = window.setInterval("refreshRouterView('RouterListView')",10000);
	}else{    
            window.clearInterval(routerRefreshIntervalID);
	}
           return;
}

var lastTimeAjaxCalled_Router = 0;
var routerScanDelay = 5; // in seconds
routerScanDelay = routerScanDelay * 1000;

function processRouterScanInfo(scanData)
{
    var req = null;
    if(window.XMLHttpRequest)
    {
        req = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
        req  = new ActiveXObject("Microsoft.XMLHTTP");
    }
    req.onreadystatechange = function()
    {
        if(req.readyState == 4)
        {
            if(req.status == 200)
            {
                var currScanData = trim(req.responseText);
                //alert('currScanData : "'+currScanData+'", scanData : "'+scanData+'"');
                if(diffExistsInRouters(scanData, currScanData))
                {
	                //alert('will REFRESH WINDOW in '+routerScanDelay+' secs');
	                window.setTimeout("refreshRouterView('RouterListView')",routerScanDelay); // refresh router scan page
                }
                else if (scanData!='' && currScanData!='') // no diff but routers are scanning
                {
	                //alert('will call ajax in '+routerScanDelay+' secs');
	                window.setTimeout('processRouterScanInfo("'+currScanData+'")',routerScanDelay);
                }
          }
        }
    };
    
    var nowTime = new Date().getTime();
    if((nowTime - lastTimeAjaxCalled_Router) >= routerScanDelay) // avoiding multiple calls due to page navigation reload
    {
	    //alert('time diff : '+(nowTime - lastTimeAjaxCalled_Router));
	    var url='/Router.do?actionFrom=getRouterScanInfo&uid='+new Date().getTime();//No I18N
	    req.open("POST",url, true);
	    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	    req.send(null);
	    lastTimeAjaxCalled_Router = nowTime;
	}
}

function diffExistsInRouters(scanData, currScanData) //used in processSubnetScanInfo()
{
	//alert('scanData : '+scanData+', currScanData : '+currScanData);
	var scanDataArr = scanData.split(',');
	var currScanDataArr = currScanData.split(',');
	if(scanDataArr.length > 0 && currScanDataArr.length > 0 && scanDataArr[0] != currScanDataArr[0])
	{
		//alert(scanDataArr.length+','+currScanDataArr.length+',scanDataArr[0] : "'+scanDataArr[0]+'",currScanDataArr[0] : "'+currScanDataArr[0]+'"');
		return true;
	}
	else if(scanDataArr.length > 0 && currScanDataArr.length > 0)
	{
		var diffExists = false;
		for(var i=1;i<scanDataArr.length;i++) //routers start from array index 1. array index 0 has the array size
		{
			for(var j=1;j<currScanDataArr.length;j++)
			{
				if(scanDataArr[i] == currScanDataArr[j])
				{
					diffExists = false;
					break;
				}
			}
			if(diffExists) break;
		}
		//alert('diffExists : '+diffExists);
		return diffExists;
	}
	else if(scanDataArr.length == 0 && currScanDataArr.length == 0)
	{
		//alert(2);
		return false;
	}
		//alert(3);
	return true;
}


var timeToRefresh;
function onSuccessResponse(resOptions, reqOptions) {
    var error = trim(resOptions.responseText);
    if(error.length > 0) {
        document.getElementById("loadingImgID").style.display='none';
        document.getElementById("InImgID").innerHTML = '';
        var resFlag = error.split(",");
        error = resFlag[0];
        if(resFlag.length > 0) {
            resFlag = resFlag[1];
        }
        var divID = document.getElementById("errorDiv")
        if(resFlag == 'true') {
            document.getElementById("errorDiv").className = "successMsg" 
            if(error.indexOf("Sucessfully updated device") == -1){
                document.routerAddForm.DeviceName.value = "";
                document.routerAddForm.DeviceName.focus();
            }else{
                closeDialog();//this called only for router edit
            }
            //AjaxAPI.refreshView;
            //clearField();
            //timeToHide = window.setInterval('refreshSPM()',2000);
            timeToRefresh = window.setInterval('refreshRouter()',2000);
        } else if(resFlag == 'false'){
        document.getElementById("errorDiv").className = "failureMsg"
        }
        if(resFlag == 'true' || resFlag == 'false') {
            document.getElementById("errorDiv").style.display='block';
            document.getElementById("errorTD").innerHTML = error;
        } else {
            document.getElementById("errorDiv").style.display='none';
            closeDialog();
        }
        if(document.getElementById('actionFromFlag')) {
            var val = document.getElementById('actionFromFlag').value
            if((val == "modifyOnly" || val == "modifyandscan") && (!resFlag)) {
                refreshSubView("SPMInputView",true,new AjaxOptions({USEXMLHTTPFORREFRESH:true,NAVIGABLE:false}));//No I18N
            }
        }
    } 
}
function refreshRouterView(viewName) {
     window.clearInterval(routerRefreshIntervalID);
     refreshSubView(viewName,false,new AjaxOptions({USEXMLHTTPFORREFRESH:true,NAVIGABLE:false})); 
}
function refreshRouter() {
     window.clearInterval(timeToRefresh);
    //window.clearInterval(timeToHide);
    //refreshSubView("RouterDetails",true,new AjaxOptions({USEXMLHTTPFORREFRESH:true,NAVIGABLE:false}))
    refreshSubView("RouterDetails");//No I18N
}
function setSnmpVersion4Router(version) {
    document.getElementById('snmpVersion').value = version;
    if(version == "snmpV1" || version == "snmpV2") {
        var vesrion1r2 = document.getElementById('snmpV1V2InputID');
        vesrion1r2.style.display = "block";
        var vesrion3 = document.getElementById('snmpV3InputID');
        vesrion3.style.display = "none";
      
    } else {
        var vesrion1r2 = document.getElementById('snmpV1V2InputID');
        vesrion1r2.style.display = "none";
        var vesrion3 = document.getElementById('snmpV3InputID');
        vesrion3.style.display = "block";
    }
}

