
<!-- RpPageHeader RpUrl=/js/globalFunctions.js RpAccess=Realm1 -->
<!-- RpEnd -->
//top.isValidityError=false;
var portNum="";
var lagNum=9;
var gigaNum=5;
var UnitNum=6;
var VLANnum=5;

var isGoTo;

var portName="";
var lagName="LAG";
var gigaName="";
var selectColor = "#ffc35a";
var defaultColor = "#efefef";
var rawValue;
var alertExist=false;
var BufferSize=25000;
var maxNumOfFieldsToStore=2000;
var IntNum="";
var fieldsEntrySize=0;
var notIE = (navigator.appName.indexOf("Microsoft") == -1);

switch(top.NamePage)
{ case "index.htm":
     portNum=25;
     portName="1/e";
     gigaName="1/g";
    break;
  case "indexGS7xxTP.htm":
     portNum=49;
     portName="g";
    break;
  case "indexFS728TP.htm":
     portNum=25;
     portName="e";
     gigaName="g";
    break;
  case "indexGS700TS.htm":
     portNum=49;
     portName="1/g";
    break;
     case "indexGS724AT.htm":
     portNum=24;
     portName="g";
    break;
}


var docObj;
if (opener)
    if (opener.opener)
        if (opener.opener.opener)
            docObj=opener.opener.opener.top;
        else
            docObj=opener.opener.top;
    else
        docObj=opener.top;
else
    docObj=top;
docObj.fldToCheck="";
window.onfocus="checkForErrors()";

var keyPressed="";
if (document.captureEvents) {
    document.captureEvents(Event.KEYDOWN);
}
window.document.onkeydown=getKeyPressed;
/////////////////////////////////////////////////////
//Draw Tables
/////////////////////////////////////////////////////

function DrawCaption(TitleName)
{
    document.write('<tr>');
    document.write('<td>');
    document.write('<table cellpadding="0" cellspacing="0" border="0" width="425">');
    document.write('<tr valign=top>');
    document.write('<td align="left"><font class="blue15"><b>'+TitleName+'</b></font></td>');
    document.write('</tr>');
    document.write('</table>');
    document.write('</td>');
    document.write('</tr>');

}

function DrawTopTablePrm(TitleName,size)
{
    document.write('<tr>');
    document.write('<td height="13" colspan="2"><img src="images2/1px-trans.gif" height="1" width="1"></td>');
    document.write('</tr>');
//END MAIN BODY SPACER ROW //-->
//BEGIN MAIN BODY SUB SECTION //-->
    document.write('<tr>');
    document.write('<td>');
    document.write('<table cellpadding="0" cellspacing="0" border="0" width="'+size+'">');
//BEGIN SUB SECTION TOP TAB //-->
    document.write('<tr>');
    document.write('<td align="left" width="246" height="20" class="subSectionTabTopLeft"><font class="blue12"><b>'+TitleName+'</b></font></td>');
    document.write('<td align="right" valign=middle  width="180"  class="subSectionTabTopRight" >');
    document.write('<a href="#"><img src="../images2/help_icon.gif" height="12" width="12" style="margin-top:2px"></a>');
    document.write('</td></tr>');
    document.write('<tr>');
    document.write('<td colspan="2" height="2" class="subSectionTabTopShadow"><img src="images2/1px-trans.gif" height="1" width="1"></td>');
    document.write('</tr>');
//END SUB SECTION TOP TAB SHADOW //-->
//BEGIN SUB SECTION MAIN BODY //-->
    document.write('<tr>');
    document.write('<td colspan="2" class="subSectionBody">');
    document.write('<table cellpadding="0 cellpadding="0" border="0" >');
    document.write('<tr>');
    document.write('<td align="left" valign="top" style="padding: 0px 0px 0px 0px;">');
    document.write('<table cellpadding="3" cellspacing="0" border="0"> ');

}

///////////////////////////////////without space on top/////////////////////////////////////////////////////
function DrawTopTablePrm2(TitleName,size)
{
    document.write('<tr>');
    document.write('<td height="1" colspan="2"><img src="images2/1px-trans.gif" height="1" width="1"></td>');
    document.write('</tr>');
//END MAIN BODY SPACER ROW //-->
//BEGIN MAIN BODY SUB SECTION //-->
    document.write('<tr>');
    document.write('<td>');
    document.write('<table cellpadding="0" cellspacing="0" border="0" width="'+size+'">');
//BEGIN SUB SECTION TOP TAB //-->
    document.write('<tr>');
    document.write('<td align="left" width="246" height="20" class="subSectionTabTopLeft"><font class="blue12"><b>'+TitleName+'</b></font></td>');
    document.write('<td align="right" valign=middle  width="180"  class="subSectionTabTopRight" >');
    document.write('<a href="#"><img src="../images2/help_icon.gif" height="12" width="12" style="margin-top:2px"></a>');
    document.write('</td></tr>');
    document.write('<tr>');
    document.write('<td colspan="2" height="2" class="subSectionTabTopShadow"><img src="images2/1px-trans.gif" height="1" width="1"></td>');
    document.write('</tr>');
//END SUB SECTION TOP TAB SHADOW //-->
//BEGIN SUB SECTION MAIN BODY //-->
    document.write('<tr>');
    document.write('<td colspan="2" class="subSectionBody">');
    document.write('<table cellpadding="0 cellpadding="0" border="0" >');
    document.write('<tr>');
    document.write('<td align="left" valign="top" style="padding: 0px 0px 0px 0px;">');
    document.write('<table cellpadding="3" cellspacing="0" border="0"> ');

}

function DrawTopTablePrmSpaceing(TitleName,size)
{
    document.write('<tr>');
    document.write('<td height="10" colspan="2"><img src="images2/1px-trans.gif" height="1" width="1"></td>');
    document.write('</tr>');
//END MAIN BODY SPACER ROW //-->
//BEGIN MAIN BODY SUB SECTION //-->
    document.write('<tr>');
    document.write('<td>');
    document.write('<table cellpadding="0" cellspacing="0" border="0" width="'+size+'">');
//BEGIN SUB SECTION TOP TAB //-->
    document.write('<tr>');
    document.write('<td align="left" width="246" height="20" class="subSectionTabTopLeft"><font class="blue12"><b>'+TitleName+'</b></font></td>');
    document.write('<td align="right" valign=middle  width="180"  class="subSectionTabTopRight" >');
    document.write('<a href="#"><img src="../images2/help_icon.gif" height="12" width="12" style="margin-top:2px"></a>');
    document.write('</td></tr>');
    document.write('<tr>');
    document.write('<td colspan="2" height="2" class="subSectionTabTopShadow"><img src="images2/1px-trans.gif" height="1" width="1"></td>');
    document.write('</tr>');
//END SUB SECTION TOP TAB SHADOW //-->
//BEGIN SUB SECTION MAIN BODY //-->
    document.write('<tr>');
    document.write('<td colspan="2" class="subSectionBody">');
    document.write('<table cellpadding="0 cellpadding="0" border="0" >');
    document.write('<tr>');
    document.write('<td align="left" valign="top" style="padding: 0px 0px 0px 0px;">');
    document.write('<table cellpadding="3" cellspacing="1" border="0"> ');

}






function DrawTopTableEdt(TitleName,size,tblName)
{

//document.write('<tr>');
//document.write('<td colspan="2" class="subSectionBottom"><img src="images2/1px-trans.gif" height="1" width="1">');                  
//document.write('</td></tr><tr>');
//document.write('<td height="15"><img src="images2/1px-trans.gif" height="1" width="1"></td>');
//document.write('</tr>');
    document.write('<tr><td>');
    document.write('<table border="0"  CELLSPACING="0" CELLPADDING="0" id="tbl3" style="DISPLAY:inline"   width="'+size+'">');    
    
//<!-- END MAIN BODY SPACER ROW //-->
//<!-- BEGIN MAIN BODY SUB SECTION //-->
//<!-- BEGIN SUB SECTION TOP TAB //-->
document.write('<tr>');
document.write('<td height="4" colspan="2"><img src="images2/1px-trans.gif" height="1" width="1"></td>');
   document.write('</tr>');
    document.write('<tr>');
    document.write('<td align="left" width="246" height="20" class="subSectionTabTopLeft"><font class="blue12"><b>'+TitleName+'</b></font></td>');
    document.write('<td align="right" valign=middle   width="180"class="subSectionTabTopRight">');
    document.write('<a href="#"><img src="../images2/help_icon.gif" height="12" width="12" style="margin-top:2px"></a>');
    document.write('</td></tr>');
    document.write('<tr>');
    document.write('<td colspan="2" height="1" class="subSectionTabTopShadow"></td>');
    document.write('</tr>');
//<!-- END SUB SECTION TOP TAB SHADOW //-->
//<!-- BEGIN SUB SECTION MAIN BODY //-->
    document.write('<tr>');
    document.write('<td colspan="2" class="subSectionBody-noPad" align="center">');
    document.write('<table cellspacing="0 cellpadding="0" border="0" width="'+size+'" id="'+tblName+'">');
    
}

////////////////////////////////////////////////////////////////////////////////
//function ChangeRowColorWithDisableElements
////////////////////////////////////////////////////////////////////////////////

function ChangeRowColorDis(rowSelected)
{var NumRows=0;
    for (var j=1;j<document.getElementsByName(rowSelected.name).length;j++)
        if (document.getElementsByName(rowSelected.name)[j].checked==true)
            NumRows++;
 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
    if (NumRows==1) {
    FillElements(SearchSlctedRow(rowSelected));
   
    }

     else {
         
        ElementsDefaultVlu(rowSelected);
    }
    /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/


if(NumRows==document.getElementsByName(rowSelected.name).length-1)
document.getElementsByName(rowSelected.name)[0].checked=true;


/******************************************************************/
   /* for (var j=0;j<document.getElementsByName('TB').length;j++) {
        if (document.getElementsByName('TB')[j].value!="") {
            ChangeRowColor2(rowSelected,NumRows);
           return;
        }
    }*/
/////////////////////////////////////////

    if (NumRows>=1)
    {
   
        for (var j=0;j<document.getElementsByName('TB').length;j++) {
            document.getElementsByName('TB')[j].disabled=true;
            document.getElementsByName('TB')[j].style.backgroundColor="#cccccc";
        }
        if(top.document.getElementById('b_Add')!=null)
{top.document.getElementById('b_Add').src="images2/buttons/add_off.gif";
top.document.getElementById('b_Add').disabled=true;}



         }
    else
    {
    
        for (var j=0;j<document.getElementsByName('TB').length;j++) {
            document.getElementsByName('TB')[j].disabled=false;
            document.getElementsByName('TB')[j].style.backgroundColor="#ffffff";
        }
         if(top.document.getElementById('b_Add')!=null)
{top.document.getElementById('b_Add').src="images2/buttons/add_on.gif";
top.document.getElementById('b_Add').disabled=false;}

      }
/******************************************************************/
    var myRow = rowSelected.parentNode.parentNode;

    var i;


    if (rowSelected.checked==true) {
        for (i=0;i<myRow.children.length;i++) {
            myRow.children[i].className=myRow.children[i].className+"1";
        }
      if(top.document.getElementById('b_delete')!=null)
      {top.document.getElementById('b_delete').src="images2/buttons/delete_on.gif";
      top.document.getElementById('b_delete').disabled=false;}
       if(top.document.getElementById('b_cancel')!=null)
      {top.document.getElementById('b_cancel').src="images2/buttons/cancel_on.gif";
      top.document.getElementById('b_cancel').disabled=false;}
 if(top.document.getElementById('b_apply')!=null)
      {top.document.getElementById('b_apply').src="images2/buttons/apply_on.gif";
      top.document.getElementById('b_apply').disabled=false;}
    } else {
        
        for (i=0;i<myRow.children.length;i++) {
            //alert(myRow.children[i].className+"-----"+myRow.children[i].className.substring(0,myRow.children[i].className.length));
            if (myRow.children[i].className.substring(myRow.children[i].className.length-1,myRow.children[i].className.length)=="1")
                myRow.children[i].className=myRow.children[i].className.substring(0,myRow.children[i].className.length-1);
document.getElementsByName(rowSelected.name)[0].checked=false;

 if(NumRows==0)
 { if(top.document.getElementById('b_delete')!=null)
     {top.document.getElementById('b_delete').src="images2/buttons/delete_off.gif";
      top.document.getElementById('b_delete').disabled=true;}
 if(top.document.getElementById('b_cancel')!=null)
      {top.document.getElementById('b_cancel').src="images2/buttons/cancel_off.gif";
      top.document.getElementById('b_cancel').disabled=true;}
  if(top.document.getElementById('b_apply')!=null)
      {top.document.getElementById('b_apply').src="images2/buttons/apply_off.gif";
      top.document.getElementById('b_apply').disabled=true;
  }
 }
     
        }
        
    }

   
}
////////////////////////////////////////////////////////////////////////////////
//function ChangeRowColor
////////////////////////////////////////////////////////////////////////////////

function ChangeRowColor1(rowSelected)
{var NumRows=0;

    for (var j=1;j<document.getElementsByName(rowSelected.name).length;j++)
        if (document.getElementsByName(rowSelected.name)[j].checked==true)
            NumRows++;
 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
    if (NumRows==1) {
    FillElements(SearchSlctedRow(rowSelected));
   
    }

     else {
         
        ElementsDefaultVlu(rowSelected);
    }
    /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/


if(NumRows==document.getElementsByName(rowSelected.name).length-1)
document.getElementsByName(rowSelected.name)[0].checked=true;


    if (NumRows>1)
    {
   
        for (var j=0;j<document.getElementsByName('TB').length;j++) {
            document.getElementsByName('TB')[j].disabled=true;
            document.getElementsByName('TB')[j].style.backgroundColor="#cccccc";
        }
        if(top.document.getElementById('b_Add')!=null)
{top.document.getElementById('b_Add').src="images2/buttons/add_off.gif";
top.document.getElementById('b_Add').disabled=true;}



         }
    else
    {
    
        for (var j=0;j<document.getElementsByName('TB').length;j++) {
            document.getElementsByName('TB')[j].disabled=false;
            document.getElementsByName('TB')[j].style.backgroundColor="#ffffff";
        }
         if(top.document.getElementById('b_Add')!=null)
{top.document.getElementById('b_Add').src="images2/buttons/add_on.gif";
top.document.getElementById('b_Add').disabled=false;}

      }
/******************************************************************/
    var myRow = rowSelected.parentNode.parentNode;

    var i;


    if (rowSelected.checked==true) {
        for (i=0;i<myRow.children.length;i++) {
            myRow.children[i].className=myRow.children[i].className+"1";
        }
      if(top.document.getElementById('b_delete')!=null)
      {top.document.getElementById('b_delete').src="images2/buttons/delete_on.gif";
      top.document.getElementById('b_delete').disabled=false;}
       if(top.document.getElementById('b_cancel')!=null)
      {top.document.getElementById('b_cancel').src="images2/buttons/cancel_on.gif";
      top.document.getElementById('b_cancel').disabled=false;}
 if(top.document.getElementById('b_apply')!=null)
      {top.document.getElementById('b_apply').src="images2/buttons/apply_on.gif";
      top.document.getElementById('b_apply').disabled=false;}
    } else {
        
        for (i=0;i<myRow.children.length;i++) {
            //alert(myRow.children[i].className+"-----"+myRow.children[i].className.substring(0,myRow.children[i].className.length));
            if (myRow.children[i].className.substring(myRow.children[i].className.length-1,myRow.children[i].className.length)=="1")
                myRow.children[i].className=myRow.children[i].className.substring(0,myRow.children[i].className.length-1);
document.getElementsByName(rowSelected.name)[0].checked=false;

 if(NumRows==0)
 { if(top.document.getElementById('b_delete')!=null)
     {top.document.getElementById('b_delete').src="images2/buttons/delete_off.gif";
      top.document.getElementById('b_delete').disabled=true;}
 if(top.document.getElementById('b_cancel')!=null)
      {top.document.getElementById('b_cancel').src="images2/buttons/cancel_off.gif";
      top.document.getElementById('b_cancel').disabled=true;}
  if(top.document.getElementById('b_apply')!=null)
      {top.document.getElementById('b_apply').src="images2/buttons/apply_off.gif";
      top.document.getElementById('b_apply').disabled=true;
  }
 }
     
        }
        
    }

   
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// 
function SearchSlctedRow(rowSelected)
{
    for (var j=0;j<document.getElementsByName(rowSelected.name).length;j++)
       { if (document.getElementsByName(rowSelected.name)[j].checked==true)
            {return(document.getElementsByName(rowSelected.name)[j]);}
       
    }
}
///////////////////////////////////////////////////////////////////////////////////////
function ChangeRowColor2(rowSelected)
{var NumRows=0;
    for (var j=0;j<document.getElementsByName(rowSelected.name).length;j++)
        if (document.getElementsByName(rowSelected.name)[j].checked==true)
            NumRows++;
    var myRow = rowSelected.parentNode.parentNode;

    var i;


    if (rowSelected.checked==true) {
        for (var k=1;k<document.getElementsByName(rowSelected.name).length;k++) {
            if (document.getElementsByName(rowSelected.name)[k]!=rowSelected) {
                document.getElementsByName(rowSelected.name)[k].checked=false;
                var thsRow = document.getElementsByName(rowSelected.name)[k].parentNode.parentNode;
                for (i=0;i<thsRow.children.length;i++) {
                    
                    if (thsRow.children[i].className.substring(thsRow.children[i].className.length-1,thsRow.children[i].className.length)=="1")
                        thsRow.children[i].className=thsRow.children[i].className.substring(0,thsRow.children[i].className.length-1);
                }
            }
        }
        for (i=0;i<myRow.children.length;i++) {
            myRow.children[i].className=myRow.children[i].className+"1";
        }
    } else {
        
        for (i=0;i<myRow.children.length;i++) {
            //alert(myRow.children[i].className+"-----"+myRow.children[i].className.substring(0,myRow.children[i].className.length));
            if (myRow.children[i].className.substring(myRow.children[i].className.length-1,myRow.children[i].className.length)=="1")
                myRow.children[i].className=myRow.children[i].className.substring(0,myRow.children[i].className.length-1);
        }
    }
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
    
    if (NumRows==1)
        FillElements(SearchSlctedRow(rowSelected));
    else
        ElementsDefaultVlu(rowSelected);
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
}
////////////////////////////////////////////////////////////////////////////////
//function ChangeAllRowsColor 
////////////////////////////////////////////////////////////////////////////////
function ChangeAllRowsColor(rowSelected)
{
//debugger;
    var myRows = document.getElementsByName(rowSelected.name);
    if (rowSelected.checked==true)
        var flag = true;
    else 
       flag = false;
 

    for (var i=1; i<myRows.length; i++) {
        if (myRows[i].checked!=flag) {
            myRows[i].checked=flag;
            myRows[i].onclick();
        }

    }

}

function ChangeAllRowsColor2(rowSelected)
{
//debugger;
    var myRows = document.getElementsByName(rowSelected.name);
    if (rowSelected.checked==true)
        var flag = true;
    else flag = false;
    
    for (var i=1; i<myRows.length; i++) {
        if (myRows[i].checked!=flag) {
            myRows[i].checked=flag;
            ChangeRowColor1(myRows[i]);
        }

    }

}


function Trans(str)
{
    return str;
}
function trans(str)
{
    return str;
}
function Trans(str)
{
    return str;
}
/*=========================================================================================*/
/*File Content:
  -------------

1. Conversions
  1.1. Types:
       {
         Hex2Ascii, decToHex, splitOctetString, Octet2Str,Octet2StrReturn, Str2Hex, Str2Octet,
         Str2OctetReturn, hexToDec, decfromhex, getnum, octetToBitsAsChars, bitsAsCharsToOctet,
         signedHexToDec
       }
  1.2. Addresses:
       {
         fromStringToMacAddress, fromMacAddressToString, maskIpToInt, maskIntToIp,
         ipSegToOctet, ipToOctet, octetToIp, fromMulticastMacToIP, fromIPToMulticastMac
       }
  1.3. Time:
       {
         ticksToSecondsField, secondsToTicksField, sysUpTimeConvFunc,checkDate,
         ticksToDateAndTime, calculateTimeFromOctet, calculateOctetFromTime
       }
2. Type Check:
       {
         checkhexa, check, checkInteger, checkUInteger32, checkIpAddress,
         checkOID, checkPortList, checkOctetString
       }
3. Validity:
       {
         checkValidation, checkType, checkRange, checkStrSize, checkOctetSize, getDefaultValue,
         checkIntegerLegalValue, returnIntRange,displayIntRange, displayStringRange, validateOctetValRange
         CheckSpace
       }
4. Bits handling:
       {
         turnBitOn, turnBitOff, length4, length3, length2
       }
5. Selects Handling:
       {
         addSelectionList, addRangeSelectionList, addSelectionListFromArray, filterSelectObject,
         selectOptionByText, changeTrunkListText, changeVlanListValue
       }
6. Query called from Select List
       {
         selectQuery1Index, indexSign, selectPort1Index, portSign
       }
7. Radio Handling
       {
         clickRadio
       }
8. Disabling table entries with no change
       {
         DisableUnchanged, EntryDidnotChanged, DisableEntry, isChanged,
         DisableTrunkIncludingThePort, disableUnchangeFields
       }
9.Events handling
       {
                 keyPressHandler
       }
10. Colors & Styles, Visibility & Tool Tips
           {
             colorClass, ChangeRowColor, showtip, hidetip, displaySeparator
           }
11. Computations
       {
         computeBase10Log
       }
12. Other Functions
       {
         sliceString, findIndex, getBaseName, removeSpacesFromHeadAndTail,  editCoockie,
         refresh, adjustStringToFilter, isHexaSigned, removeZerosFromHead
      }
13. NonPresent Entities and Related Trunks
       {
          getPortNumberFromName, getPortNameFromNumber, isPresentPort, filterNonPresentEntitiesFromSelectList,
          addPresentPortsSelectionList, relatedTrunk
       }
14. Display Functions
        {
                displayInterface, displayTrunk, getInterfaceName, getInterfaceNameAccordingToValue
        }

*/

/*=========================================================================================*/

/*##########################################################################################
1.Conversions:
##########################################################################################*/

/*##########################################################################################
1.1. Conversions - Types:
##########################################################################################*/

/*-----------------------------------------------------------------------------------------

*/
function paintNevigator2(a,b,c,d,e,f,g,h,numcolspan,num)
{//if(num==1)
    //  FRow--;

    if (!a)
        a="#";
    if (!b)
        b="#";
    if (!c)
        c="#";
    if (!d)
        d="#";
    if (!e)
        e="#";
    var halfnum=numcolspan/2;
    if (numcolspan%2==0)
        var elsenum=numcolspan-halfnum;
    else
        var elsenum=numcolspan-halfnum+1;
    var str="";
    if (num==1) {
        str+='<tr height=25><td colspan='+halfnum+' nowrap align=left class="black11b">&nbsp;<b><!--Interfaces:--></b>&nbsp;';
    } else {
        str+='<tr height=25><td colspan='+halfnum+' nowrap align=left class="black11b" style="background-color: #d9d9d9;">&nbsp;<b><!--Interfaces:--></b>&nbsp;';
    }
    if((top.NamePage=="index.htm")||(top.NamePage=="indexFS700TS.htm"))
    {
    str+='<a href='+a+'><span><b>1</span></a>&nbsp;<a href='+b+'><span><b>2</span></a>&nbsp;';
    str+='<a href='+c+'><span><b>3</span></a>&nbsp;<a href='+d+'><span><b>4</span></a>&nbsp;';
    str+='<a href='+e+'><span><b>5</span></a>&nbsp;<a href='+f+'><span><b>6</span></a>&nbsp;';
    str+='<a href='+g+'><span><b>7</span></a>&nbsp;';
    }
    else
    {
    str+='<a href='+m+'><span><b>PORTS</span></a>&nbsp;';
    }
    str+='<a href='+h+'><span><b>LAGS</span></a>&nbsp;';
    str+='<a href="javascript:void(0)" onclick="writeConfirm();"><span><b>All</span></a>&nbsp;</td>';
    if (num==1) {
        str+='<td colspan='+elsenum+' nowrap align=right class="black11">GO&nbsp;TO&nbsp;INTERFACE&nbsp;';
    } else {
        str+='<td colspan='+elsenum+' nowrap align=right class="black11" style="background-color: #d9d9d9;" >GO&nbsp;TO&nbsp;INTERFACE&nbsp;';
    }
    str+='<input type=text id=intNum size=4>';
    str+='&nbsp;<img src="../images2/buttons/go_on.gif" style="cursor:pointer;" onclick=GoToInt(document.getElementById("intNum").value)>&nbsp;</td></tr>';
    document.write(str);
}
function GoToInt(vlu)
{
if(vlu.indexOf("LAG")!=-1)
    {
    if(document.forms[0].innerHTML.indexOf("WithOutLAG")!=-1)
        return;
    PaintLAG();
    vlu=vlu.substr(3,vlu.length);
    }


    if((vlu.indexOf("/")!=-1)||(vlu.charAt(0)=="e")||(vlu.charAt(0)=="g"))
{   
   if((vlu.substr(0,1)>0)&&(vlu.substr(0,1)<(UnitNum+1)))
    {isGoTo=true;
       PaintUnit(vlu.substr(0,1));
       if(vlu.indexOf("/")!=-1){
    vlu=vlu.substr(2,vlu.length);
    }
    }

   
}
    
 switch (vlu.length)
    {
 case 1:
        {if(!((vlu>0)&&(vlu<portNum)))
        return;
        break;
        }
default:
     {if((top.NamePage=="index.htm")||(top.NamePage=="indexFS728TP.htm")){
    if(vlu.charAt(0)=="e")
         vlu=vlu.substr(1,vlu.length);
     if(vlu.charAt(0)=="g")
         vlu=eval(vlu.substr(1,vlu.length))+24;
     if(!((vlu>0)&&(vlu<portNum+gigaNum)))
        return;}
     else{if(vlu.charAt(0)=="g")
         vlu=vlu.substr(1,vlu.length);
     if(!((vlu>0)&&(vlu<portNum)))
        return;
     }
        break;
     }
    }

 for(var i=0;i<document.getElementsByName("CBox_1").length;i++)
   {
   document.getElementsByName("CBox_1")[i].checked=false;
   document.getElementsByName("CBox_1")[i].onclick();
   }
   document.getElementsByName("CBox_1")[vlu].checked=true;
   document.getElementsByName("CBox_1")[vlu].onclick();

}
var LAGtbl=false;

function PaintUnit(num,LAG)
{
tbl=document.getElementById(tblName);
var j=1;
if(tbl.rows[FRow].children[0].innerHTML.indexOf("CBox")==-1)
   {j=0;}
if(LAGtbl==true)
{   
        
        if(tbl.rows[FRow].children[j].innerHTML.indexOf("LAG")==-1)
        {LAGtbl=false;}
 }      
var str='<table cellspacing="0" cellpadding="0" border="0" width="'+tbl.width+'" id="'+tblName+'">';
for(var y=0;y<FRow;y++)
    str+='<tr>'+tbl.rows[y].innerHTML+'</tr>';

 for(var i=1;i<portNum;i++)
       { //White Row
       str+='<tr>';
       if(j==1)
        str+='<td nowrap class="tableField2">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        if(num!=0){
        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+num+portName.substr(1,portName.length)+i+'&nbsp;</td>';}
        else{
        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+portName+i+'&nbsp;</td>';}
        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        i++
        //Grey Row
         str+='<tr>';
         if(j==1)
        str+='<td nowrap class="tableField3">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        if(num!=0){
        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+num+portName.substr(1,portName.length)+i+'&nbsp;</td>';}
        else{
        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+portName+i+'&nbsp;</td>';}
        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        str+='</tr>';
       }
    if((top.NamePage=="index.htm")||(top.NamePage=="indexFS728TP.htm")){
    for(var i=1;i<gigaNum;i++)
       { //White Row
        str+='<tr>';
        if(j==1)
        str+='<td nowrap class="tableField2">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        if(top.NamePage=="index.htm")
        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+num+gigaName.substr(1,gigaName.length)+i+'&nbsp;</td>';
        else
        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+gigaName+i+'&nbsp;</td>';
        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        i++
        //Grey Row
         str+='<tr>';
         if(j==1)
        str+='<td nowrap class="tableField3">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
         if(top.NamePage=="index.htm")
        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+num+gigaName.substr(1,gigaName.length)+i+'&nbsp;</td>';
         else
        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+gigaName+i+'&nbsp;</td>';
        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        str+='</tr>';
       }
    }

 str+='<tr>'+tbl.rows[tbl.rows.length-1].innerHTML+'</tr>';
tbl.parentNode.innerHTML=str+"</TBODY></TABLE>";



CancelAllParms();

for(var i=0;i<document.getElementsByName('nav').length;i++)
        document.getElementsByName('nav')[i].className="";
if(top.NamePage=="indexFS700TS.htm")
	{       
		document.getElementsByName('nav')[num-1].className="Aactive";
		if(isGoTo==false)
		{
			document.getElementsByName('nav')[(num+8-LAG)-1].className="Aactive";}
		}
		else
		{
			if(isGoTo==false){
			document.getElementsByName('nav')[num].className="Aactive";}
		}
	}
function PaintUnitPortConfig(num,LAG)
{
tbl=document.getElementById(tblName);
var j=1;
if(tbl.rows[FRow].children[0].innerHTML.indexOf("CBox")==-1)
   {j=0;}
if(LAGtbl==true)
{   
        
        if(tbl.rows[FRow].children[j].innerHTML.indexOf("LAG")==-1)
        {LAGtbl=false;}
 }      
var str='<table cellspacing="0" cellpadding="0" border="0" width="'+tbl.width+'" id="'+tblName+'">';
for(var y=0;y<FRow;y++)
    str+='<tr>'+tbl.rows[y].innerHTML+'</tr>';

 for(var i=1;i<portNum;i++)
       { //White Row
       str+='<tr>';
       if(j==1)
        str+='<td nowrap class="tableField2">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        if(num!=0){
        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+num+portName.substr(1,portName.length)+i+'&nbsp;</td>';}
        else{
        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+portName+i+'&nbsp;</td>';}
        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        i++
        //Grey Row
         str+='<tr>';
         if(j==1)
        str+='<td nowrap class="tableField3">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        if(num!=0){
        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+num+portName.substr(1,portName.length)+i+'&nbsp;</td>';}
        else{
        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+portName+i+'&nbsp;</td>';}
        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        str+='</tr>';
       }


 if((top.NamePage=="index.htm")||(top.NamePage=="indexFS728TP.htm")){
    for(var i=1;i<gigaNum;i++)
       { //White Row
        str+='<tr>';
        if(j==1)
        str+='<td nowrap class="tableField2">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        if(top.NamePage=="index.htm")
        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+num+gigaName.substr(1,gigaName.length)+i+'&nbsp;</td>';
        else
        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+gigaName+i+'&nbsp;</td>';
        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        i++
        //Grey Row
         str+='<tr>';
         if(j==1)
        str+='<td nowrap class="tableField3">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
         if(top.NamePage=="index.htm")
        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+num+gigaName.substr(1,gigaName.length)+i+'&nbsp;</td>';
         else
        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+gigaName+i+'&nbsp;</td>';
        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        str+='</tr>';
       }
    }



 str+='<tr>'+tbl.rows[tbl.rows.length-1].innerHTML+'</tr>';
tbl.parentNode.innerHTML=str+"</TBODY></TABLE>";



CancelAllParms();

for(var i=0;i<document.getElementsByName('nav').length;i++)

        document.getElementsByName('nav')[i].className="";
if((top.NamePage=="index.htm")||(top.NamePage=="indexFS700TS.htm")||(top.NamePage=="indexGS700TS.htm"))
    {       
document.getElementsByName('nav')[num-1].className="Aactive";
    if(isGoTo==false){
     // alert(1);
      //  document.getElementsByName('nav')[(num+8-LAG)-1].className="Aactive";
        }
}
else{
    if(isGoTo==false){
      //  alert(2);
    document.getElementsByName('nav')[num].className="Aactive";}
    }
}


/*
function PaintUnit2(num)
{
tbl=document.getElementById(tblName);

if(LAGtbl==true)
{   
        var j=1
        if(tbl.rows[FRow].children[j].innerHTML.indexOf("LAG")==-1)
        j=0;
       
var str='<table cellspacing="0" cellpadding="0" border="0" width="'+tbl.width+'" id="'+tblName+'">';
for(var y=0;y<FRow;y++)
    str+='<tr>'+tbl.rows[y].innerHTML+'</tr>';

if(j==0)  
    {for(var i=1;i<portNum;i++)
       { //White Row
        str+='<tr><td nowrap class="messageTableWhiteBorder">&nbsp;'+num+portName.substr(1,portName.length)+i+'&nbsp;</td>';
        for(var x=1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        i++
        //Grey Row
        str+='<tr><td nowrap class="messageTableGreyBorder">&nbsp;'+num+portName.substr(1,portName.length)+i+'&nbsp;</td>';
        for(var x=1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        str+='</tr>';
       }
    for(var i=1;i<gigaNum;i++)
       { //White Row
        str+='<tr><td nowrap class="messageTableWhiteBorder">&nbsp;'+num+gigaName.substr(1,gigaName.length)+i+'&nbsp;</td>';
        for(var x=1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        i++
        //Grey Row
        str+='<tr><td nowrap class="messageTableGreyBorder">&nbsp;'+num+gigaName.substr(1,gigaName.length)+i+'&nbsp;</td>';
        for(var x=1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        str+='</tr>';
       }
}
else
    {for(var i=1;i<portNum;i++)
       { //White Row
        str+='<tr><td nowrap class="tableField2">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+num+portName.substr(1,portName.length)+i+'&nbsp;</td>';
        for(var x=2;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        i++
        //Grey Row
        str+='<tr><td nowrap class="tableField3">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+num+portName.substr(1,portName.length)+i+'&nbsp;</td>';
        for(var x=2;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        str+='</tr>';
       }
    for(var i=1;i<gigaNum;i++)
       { //White Row
        str+='<tr><td nowrap class="tableField2">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+num+gigaName.substr(1,gigaName.length)+i+'&nbsp;</td>';
        for(var x=2;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        i++
        //Grey Row
        str+='<tr><td nowrap class="tableField3">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+num+gigaName.substr(1,gigaName.length)+i+'&nbsp;</td>';
        for(var x=2;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        str+='</tr>';
       }
    }

 str+='<tr>'+tbl.rows[tbl.rows.length-1].innerHTML+'</tr>';
tbl.parentNode.innerHTML=str+"</TBODY></TABLE>";
LAGtbl=false;
}
else
{       var j=1
        if(tbl.rows[FRow].children[j].innerHTML.indexOf("/e")==-1)
        j=0;
        for (var i=FRow;i<tbl.rows.length-1;i++) {
               tbl.rows[i].children[j].innerHTML="&nbsp;"+num+tbl.rows[i].children[j].innerText.substr(2,tbl.rows[i].children[j].innerText.length); 
              }
}
CancelAllParms();
}*/
function PaintLAG()
{
tbl=document.getElementById(tblName);
    var j=1

        //if((tbl.rows[FRow].children[j].innerHTML.indexOf("/e")==-1)||(tbl.rows[FRow].children[j].innerHTML.indexOf("g")==19))
    if(tbl.rows[FRow].children[j].innerHTML.indexOf("g")==19)
        j=0;
       if((tbl.rows[FRow].children[0].innerHTML.indexOf("LAG")!=-1)||(tbl.rows[FRow].children[1].innerHTML.indexOf("LAG")!=-1))
           return;
var str='<table cellspacing="0" cellpadding="0" border="0" width="'+tbl.width+'" id="'+tblName+'">';
for(var y=0;y<FRow;y++)
    str+='<tr>'+tbl.rows[y].innerHTML+'</tr>';

if(j==0)  
    for(var i=1;i<lagNum;i++)
       { //White Row
        str+='<tr><td nowrap class="messageTableWhiteBorder">&nbsp;'+lagName+i+'&nbsp;</td>';
        for(var x=1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        i++
        //Grey Row
        str+='<tr><td nowrap class="messageTableGreyBorder">&nbsp;'+lagName+i+'&nbsp;</td>';
        for(var x=1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        str+='</tr>';
       }
else
    for(var i=1;i<lagNum;i++)
       { //White Row
        str+='<tr><td nowrap class="tableField2">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+lagName+i+'&nbsp;</td>';
        for(var x=2;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        i++
        //Grey Row
        str+='<tr><td nowrap class="tableField3">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+lagName+i+'&nbsp;</td>';
        for(var x=2;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        str+='</tr>';
       }

 str+='<tr>'+tbl.rows[tbl.rows.length-1].innerHTML+'</tr>';
tbl.parentNode.innerHTML=str+"</TBODY></TABLE>";
LAGtbl=true;
CancelAllParms();


for(var i=0;i<document.getElementsByName('nav').length;i++)
        document.getElementsByName('nav')[i].className="";
if((top.NamePage=="index.htm")||(top.NamePage=="indexFS700TS.htm")){ 
document.getElementsByName('nav')[6].className="Aactive";
document.getElementsByName('nav')[(6+9)-1].className="Aactive";}
    else{
document.getElementsByName('nav')[1].className="Aactive";}
}

function paintNevigator(a,b,c,d,e,f,g,h,numcolspan,num)
{isGoTo=false;
    //if(num==1)
    //  FRow--;
    //if (!a)
        a="javascript:PaintUnit(1,0);";
   // if (!b)
        b="javascript:PaintUnit(2,0)";
   // if (!c)
        c="javascript:PaintUnit(3,0);";
   // if (!d)
        d="javascript:PaintUnit(4,0);";
    //if (!e)
        e="javascript:PaintUnit(5,0);";
   // if (!f)
        f="javascript:PaintUnit(6,0);";//CurrentUnit
        h="javascript:PaintLAG();";
        m="javascript:PaintUnit(0,0)";
    var str="";
    if (num==1) {
        str+='<tr height=25><td colspan='+numcolspan+' nowrap class="black11b"><table height=20 ><tr><td>&nbsp;<b><!--Interfaces:--></b>&nbsp;';
    } else {
        str+='<tr height=25 style="background-color: #d9d9d9;"><td colspan='+numcolspan+' nowrap class="black11b" ><table  height=20 style="background-color: #d9d9d9;"><tr><td>&nbsp;<b><!--Interfaces:--></b>&nbsp;';
    }
    if((top.NamePage=="index.htm")||(top.NamePage=="indexFS700TS.htm")){ 
    str+='<a href='+a+' name=nav><span><b>1</span></a>&nbsp;<a href='+b+' name=nav><span><b>2</span></a>&nbsp;';
    str+='<a href='+c+' name=nav><span><b>3</span></a>&nbsp;<a href='+d+' name=nav><span><b>4</span></a>&nbsp;';
    str+='<a href='+e+' name=nav><span><b>5</span></a>&nbsp;<a href='+f+' name=nav><span><b>6</span></a>&nbsp;';
    //str+='<a href='+g+'><span><b>7</span></a>&nbsp;';
    }
    else
    {
    str+='<a href='+m+' name=nav><span><b>PORTS</span></a>&nbsp;';
    }
    str+='<a href='+h+' name=nav><span ><b>LAGS</span></a>&nbsp;';
    str+='<a href="javascript:void(0)" onclick="writeConfirm(true);" name=nav><span><b>All</span></a>&nbsp;</td>';
    if (num==1) {
        str+='<td  nowrap align=right class="black11">GO&nbsp;TO&nbsp;INTERFACE&nbsp;';
    } else {
        str+='<td  nowrap align=right class="black11" style="background-color: #d9d9d9;" >GO&nbsp;TO&nbsp;INTERFACE&nbsp;';
    }
    if (num==1) 
     {str+='<input type=text name=intNum size=4>';    
    str+='&nbsp;</td><td width=7px><img src="../images2/buttons/go_on.gif"  style="cursor:pointer;" onclick=GoToInt(document.getElementById("intNum").value)>&nbsp;</td></tr></table></td></tr>';
     }
    else
{str+='<input type=text name=intNum2 size=4>';
        str+='&nbsp;</td><td width=7px><img src="../images2/buttons/go_on.gif"  style="cursor:pointer;" onclick=GoToInt(document.getElementById("intNum2").value)>&nbsp;</td></tr></table></td></tr>';
}
document.write(str);
}

function paintNevigatorNotWork(a,b,c,d,e,f,g,h,numcolspan,num)
{
    var str="";
    if (num==1) {
        str+='<tr height=25><td colspan='+numcolspan+' nowrap class="black11b"><table height=20 ><tr><td>&nbsp;<b><!--Interfaces:--></b>&nbsp;';
    } else {
        str+='<tr height=25 style="background-color: #d9d9d9;"><td colspan='+numcolspan+' nowrap class="black11b" ><table  height=20 style="background-color: #d9d9d9;"><tr><td>&nbsp;<b><!--Interfaces:--></b>&nbsp;';
    }
    if((top.NamePage=="index.htm")||(top.NamePage=="indexFS700TS.htm")){ 
    str+='<a href='+a+'><span><b>1</span></a>&nbsp;<a href='+b+'><span><b>2</span></a>&nbsp;';
    str+='<a href='+c+'><span><b>3</span></a>&nbsp;<a href='+d+'><span><b>4</span></a>&nbsp;';
    str+='<a href='+e+'><span><b>5</span></a>&nbsp;<a href='+f+'><span><b>6</span></a>&nbsp;';
    //str+='<a href='+g+'><span><b>7</span></a>&nbsp;';
    }
    else
    {
    str+='<a href='+g+'><span><b>PORTS</span></a>&nbsp;';
    }
    str+='<a href='+h+'><span><b>LAGS</span></a>&nbsp;';
    str+='<a href="javascript:void(0)" !onclick="writeConfirm();"><span><b>All</span></a>&nbsp;</td>';
    if (num==1) {
        str+='<td  nowrap align=right class="black11">GO&nbsp;TO&nbsp;INTERFACE&nbsp;';
    } else {
        str+='<td  nowrap align=right class="black11" style="background-color: #d9d9d9;" >GO&nbsp;TO&nbsp;INTERFACE&nbsp;';
    }
    if (num==1) 
     {str+='<input type=text name=intNum size=4>';    
    str+='&nbsp;</td><td width=7px><img src="../images2/buttons/go_on.gif"  style="cursor:pointer;" onclick=GoToInt(document.getElementById("intNum").value)>&nbsp;</td></tr></table></td></tr>';
     }
    else
{str+='<input type=text name=intNum2 size=4>';
        str+='&nbsp;</td><td width=7px><img src="../images2/buttons/go_on.gif"  style="cursor:pointer;" onclick=GoToInt(document.getElementById("intNum2").value)>&nbsp;</td></tr></table></td></tr>';
}
document.write(str);
}
function paintNevigatorNotWorkWithOutLag(a,b,c,d,e,f,g,h,numcolspan,num)
{
    var str="";
    if (num==1) {
        str+='<tr height=25><td colspan='+numcolspan+' nowrap class="black11b"><table height=20 ><tr><td>&nbsp;<b><!--Interfaces:--></b>&nbsp;';
    } else {
        str+='<tr height=25 style="background-color: #d9d9d9;"><td colspan='+numcolspan+' nowrap class="black11b" ><table  height=20 style="background-color: #d9d9d9;"><tr><td>&nbsp;<b><!--Interfaces:--></b>&nbsp;';
    }
    if((top.NamePage=="index.htm")||(top.NamePage=="indexFS700TS.htm")){ 
    str+='<a href='+a+'><span><b>1</span></a>&nbsp;<a href='+b+'><span><b>2</span></a>&nbsp;';
    str+='<a href='+c+'><span><b>3</span></a>&nbsp;<a href='+d+'><span><b>4</span></a>&nbsp;';
    str+='<a href='+e+'><span><b>5</span></a>&nbsp;<a href='+f+'><span><b>6</span></a>&nbsp;';
    //str+='<a href='+g+'><span><b>7</span></a>&nbsp;';
    }
    else
    {
    str+='<a href='+g+'><span><b>PORTS</span></a>&nbsp;';
    }
    //str+='<a href='+h+'><span><b>LAGS</span></a>&nbsp;';
    str+='<a href="javascript:void(0)" !onclick="writeConfirm();"><span><b>All</span></a>&nbsp;</td>';
    if (num==1) {
        str+='<td  nowrap align=right class="black11">GO&nbsp;TO&nbsp;INTERFACE&nbsp;';
    } else {
        str+='<td  nowrap align=right class="black11" style="background-color: #d9d9d9;" >GO&nbsp;TO&nbsp;INTERFACE&nbsp;';
    }
    if (num==1) 
     {str+='<input type=text name=intNum size=4>';    
    str+='&nbsp;</td><td width=7px><img src="../images2/buttons/go_on.gif"  style="cursor:pointer;" onclick=GoToInt(document.getElementById("intNum").value)>&nbsp;</td></tr></table></td></tr>';
     }
    else
{str+='<input type=text name=intNum2 size=4>';
        str+='&nbsp;</td><td width=7px><img src="../images2/buttons/go_on.gif"  style="cursor:pointer;" onclick=GoToInt(document.getElementById("intNum2").value)>&nbsp;</td></tr></table></td></tr>';
}
document.write(str);
}

function paintNevigatorWithOutLAG(a,b,c,d,e,f,g,h,numcolspan,num)
{isGoTo=false;
    //if(num==1)
    //  FRow--;

     //if (!a)
        a="javascript:PaintUnit(1,1);";
   // if (!b)
        b="javascript:PaintUnit(2,1)";
   // if (!c)
        c="javascript:PaintUnit(3,1);";
   // if (!d)
        d="javascript:PaintUnit(4,1);";
    //if (!e)
        e="javascript:PaintUnit(5,1);";
   // if (!f)
        f="javascript:PaintUnit(6,1);";//CurrentUnit
        m="javascript:PaintUnit(0,1);";
    var str="";
    if (num==1) {
        str+='<tr height=25><td colspan='+numcolspan+' nowrap class="black11b"><table height=20 ><tr><td>&nbsp;<b><!--Interfaces:--></b>&nbsp;';
    } else {
        str+='<tr height=25 style="background-color: #d9d9d9;"><td colspan='+numcolspan+' nowrap class="black11b" ><table  height=20 style="background-color: #d9d9d9;"><tr><td>&nbsp;<b><!--Interfaces:--></b>&nbsp;';
    }
    if((top.NamePage=="index.htm")||(top.NamePage=="indexFS700TS.htm")){ 
    str+='<a href='+a+' name=nav><span><b>1</span></a>&nbsp;<a href='+b+' name=nav><span><b>2</span></a>&nbsp;';
    str+='<a href='+c+' name=nav><span><b>3</span></a>&nbsp;<a href='+d+' name=nav><span><b>4</span></a>&nbsp;';
    str+='<a href='+e+' name=nav><span><b>5</span></a>&nbsp;<a href='+f+' name=nav><span><b>6</span></a>&nbsp;';
    //str+='<a href='+g+'><span><b>7</span></a>&nbsp;';
    }
    else
    {
    str+='<a href='+m+' name=nav><span><b>PORTS</span></a>&nbsp;';
    }
   //str+='<a href='+h+'><span><b>LAGS</span></a>&nbsp;';
    str+='<a href="javascript:void(0)" onclick="writeConfirm(false);" name=nav><span><b>All</span></a>&nbsp;</td>';
    if (num==1) {
        str+='<td  nowrap align=right class="black11">GO&nbsp;TO&nbsp;INTERFACE&nbsp;';
    } else {
        str+='<td  nowrap align=right class="black11" style="background-color: #d9d9d9;" >GO&nbsp;TO&nbsp;INTERFACE&nbsp;';
    }
    
     if (num==1) 
     {str+='<input type=text name=intNum size=4>';    
    str+='&nbsp;</td><td width=7px><img src="../images2/buttons/go_on.gif"  style="cursor:pointer;" onclick=GoToInt(document.getElementById("intNum").value)>&nbsp;</td></tr></table></td></tr>';
     }
    else
{str+='<input type=text name=intNum2 size=4>';
        str+='&nbsp;</td><td width=7px><img src="../images2/buttons/go_on.gif"  style="cursor:pointer;" onclick=GoToInt(document.getElementById("intNum2").value)>&nbsp;</td></tr></table></td></tr>';
}
document.write(str);
}




function writeConfirm(WithLAG)
{
        if(confirm("This operation may take some time, would you like to proceed?"))
        {
            if(!WithLAG)
            DrawAllUnits();
            else
            DrawAllUnitsWithLAG();    
        }
}






function paintNevigatorWithOutLAGPortConfig(a,b,c,d,e,f,g,h,numcolspan,num)
{
    isGoTo=false;
    //if(num==1)
    //  FRow--;

     //if (!a)
        a="javascript:PaintUnit(1,1);";
   // if (!b)
        b="javascript:PaintUnit(2,1)";
   // if (!c)
        c="javascript:PaintUnit(3,1);";
   // if (!d)
        d="javascript:PaintUnit(4,1);";
    //if (!e)
        e="javascript:PaintUnit(5,1);";
   // if (!f)
        f="javascript:PaintUnit(6,1);";//CurrentUnit
        m="javascript:PaintUnit(0,1);";
    var str="";
    if (num==1) {
        str+='<tr height=25><td colspan='+numcolspan+' nowrap class="black11b"><table height=20 ><tr><td>&nbsp;<b><!--Interfaces:--></b>&nbsp;';
    } else {
        str+='<tr height=25 style="background-color: #d9d9d9;"><td colspan='+numcolspan+' nowrap class="black11b" ><table  height=20 style="background-color: #d9d9d9;"><tr><td>&nbsp;<b><!--Interfaces:--></b>&nbsp;';
    }
   
    if (num==1) {
        str+='<td  nowrap align=right class="black11">GO&nbsp;TO&nbsp;INTERFACE&nbsp;';
    } else {
        str+='<td  nowrap align=right class="black11" style="background-color: #d9d9d9;" >GO&nbsp;TO&nbsp;INTERFACE&nbsp;';
    }
    
     if (num==1) 
     {str+='<input type=text name=intNum size=4>';    
    str+='&nbsp;</td><td width=7px><img src="../images2/buttons/go_on.gif"  style="cursor:pointer;" onclick=GoToInt(document.getElementById("intNum").value)>&nbsp;</td></tr></table></td></tr>';
     }
    else
{str+='<input type=text name=intNum2 size=4>';
        str+='&nbsp;</td><td width=7px><img src="../images2/buttons/go_on.gif"  style="cursor:pointer;" onclick=GoToInt(document.getElementById("intNum2").value)>&nbsp;</td></tr></table></td></tr>';
}
document.write(str);
}



/*function writeConfirm(WithLAG)
{
        if(confirm("This operation may take some time, would you like to proceed?"))
        {
            if(!WithLAG)
            DrawAllUnits();
            else
            DrawAllUnitsWithLAG();    
        }
}*/

function writeConfirm2(WithLAG)
{
        if(confirm("Please note that displaying all ports might take a while and can cause the session to timeout"))
        {
            if(!WithLAG)
            DrawAllUnits();
            else
            DrawAllUnitsWithLAG();    
        }
}



















function DrawAllUnits()
{


    tbl=document.getElementById(tblName);
    var j=1;
    if(tbl.rows[FRow].children[0].innerHTML.indexOf("CBox")==-1)
      {
        j=0;
      }
    if(LAGtbl==true)
    {   
            
            if(tbl.rows[FRow].children[j].innerHTML.indexOf("LAG")==-1)
            {
                LAGtbl=false;
            }
     }      
    var str='<table cellspacing="0" cellpadding="0" border="0" width="'+tbl.width+'" id="'+tblName+'">';
    for(var y=0;y<FRow;y++)
        str+='<tr>'+tbl.rows[y].innerHTML+'</tr>';
    if((top.NamePage=="index.htm")||(top.NamePage=="indexFS700TS.htm"))
    { 
        for(num=1;num<UnitNum+1;num++)
        {
            for(var i=1;i<portNum;i++)
            { //White Row
              str+='<tr>';
              if(j==1)
              str+='<td nowrap class="tableField2">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
              str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+num+portName.substr(1,portName.length)+i+'&nbsp;</td>';
              for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
              {
                  str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';
              }
              i++
              //Grey Row
              str+='<tr>';
              if(j==1)
              str+='<td nowrap class="tableField3">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
              str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+num+portName.substr(1,portName.length)+i+'&nbsp;</td>';
              for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
              { 
                  str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';
              }
              str+='</tr>';
             }//end 1092
             if(top.NamePage=="index.htm")
             {   
                for(var i=1;i<gigaNum;i++)
                { 
                    //White Row
                    str+='<tr>';
                    if(j==1)
                    str+='<td nowrap class="tableField2">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
                    str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+num+gigaName.substr(1,gigaName.length)+i+'&nbsp;</td>';
                    for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
                    {
                        str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';
                    }
                    i++
                    //Grey Row
                    str+='<tr>';
                    if(j==1)
                    str+='<td nowrap class="tableField3">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
                    str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+num+gigaName.substr(1,gigaName.length)+i+'&nbsp;</td>';
                    for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
                    {
                        str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';
                    }
                    str+='</tr>';
                }//end 1115
              }//end1114
             }//end1090
           }//end1087
           else{
               for(var i=1;i<portNum;i++)
               { //White Row
                    str+='<tr>';
                    if(j==1)
                    str+='<td nowrap class="tableField2">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
                    str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+portName+i+'&nbsp;</td>';
                    for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
                    {
                        str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';
                    }
                    i++
                    //Grey Row
                    str+='<tr>';
                    if(j==1)
                    str+='<td nowrap class="tableField3">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
                    str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+portName+i+'&nbsp;</td>';
                    for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
                    {
                        str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';
                    }
                    str+='</tr>';
                }//end1142
                if(top.NamePage=="indexFS728TP.htm")
                {   
                    for(var i=1;i<gigaNum;i++)
                    {
                        //White Row
                        str+='<tr>';
                        if(j==1)
                        str+='<td nowrap class="tableField2">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
                        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+gigaName+i+'&nbsp;</td>';
                        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
                        {
                            str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';
                        }
                        i++
                        //Grey Row
                        str+='<tr>';
                        if(j==1)
                        str+='<td nowrap class="tableField3">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
                        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+gigaName+i+'&nbsp;</td>';
                        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
                        {
                            str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';
                        }
                        str+='</tr>';
                    }//end1166
                    
                    }//end1165
               }//end1141


         str+='<tr>'+tbl.rows[tbl.rows.length-1].innerHTML+'</tr>';
        tbl.parentNode.innerHTML=str+"</TBODY></TABLE>";



        CancelAllParms();
         for(var i=0;i<document.getElementsByName('nav').length;i++)
                document.getElementsByName('nav')[i].className="";

        if((top.NamePage=="index.htm")||(top.NamePage=="indexFS700TS.htm")||(top.NamePage=="indexGS700TS.htm")){
            document.getElementsByName('nav')[6].className="Aactive";
            document.getElementsByName('nav')[(6+8)-1].className="Aactive";
            }
            else{
                document.getElementsByName('nav')[1].className="Aactive";}
}

function DrawAllUnitsWithLAG()
{


tbl=document.getElementById(tblName);
var j=1;
if(tbl.rows[FRow].children[0].innerHTML.indexOf("CBox")==-1)
   {j=0;}
if(LAGtbl==true)
{   
        
        if(tbl.rows[FRow].children[j].innerHTML.indexOf("LAG")==-1)
        {LAGtbl=false;}
 }      
var str='<table cellspacing="0" cellpadding="0" border="0" width="'+tbl.width+'" id="'+tblName+'">';
for(var y=0;y<FRow;y++)
    str+='<tr>'+tbl.rows[y].innerHTML+'</tr>';
if((top.NamePage=="index.htm")||(top.NamePage=="indexFS700TS.htm")){ 
for(num=1;num<UnitNum+1;num++)
 {for(var i=1;i<portNum;i++)
       { //White Row
       str+='<tr>';
       if(j==1)
        str+='<td nowrap class="tableField2">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+num+portName.substr(1,portName.length)+i+'&nbsp;</td>';
        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        i++
        //Grey Row
         str+='<tr>';
         if(j==1)
        str+='<td nowrap class="tableField3">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+num+portName.substr(1,portName.length)+i+'&nbsp;</td>';
        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        str+='</tr>';
       }
    if(top.NamePage=="index.htm"){   
    for(var i=1;i<gigaNum;i++)
       { //White Row
        str+='<tr>';
        if(j==1)
        str+='<td nowrap class="tableField2">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+num+gigaName.substr(1,gigaName.length)+i+'&nbsp;</td>';
        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        i++
        //Grey Row
         str+='<tr>';
         if(j==1)
        str+='<td nowrap class="tableField3">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+num+gigaName.substr(1,gigaName.length)+i+'&nbsp;</td>';
        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        str+='</tr>';
       }}}}
       else{
        for(var i=1;i<portNum;i++)
       { //White Row
       str+='<tr>';
       if(j==1)
        str+='<td nowrap class="tableField2">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+portName+i+'&nbsp;</td>';
        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        i++
        //Grey Row
         str+='<tr>';
         if(j==1)
        str+='<td nowrap class="tableField3">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+portName+i+'&nbsp;</td>';
        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        str+='</tr>';
       }
       if(top.NamePage=="indexFS728TP.htm"){   
    for(var i=1;i<gigaNum;i++)
       { //White Row
        str+='<tr>';
        if(j==1)
        str+='<td nowrap class="tableField2">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+gigaName+i+'&nbsp;</td>';
        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        i++
        //Grey Row
         str+='<tr>';
         if(j==1)
        str+='<td nowrap class="tableField3">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+gigaName+i+'&nbsp;</td>';
        for(var x=j+1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        str+='</tr>';
       }}}
        

tbl=document.getElementById(tblName);
    var j=1
        //if((tbl.rows[FRow].children[j].innerHTML.indexOf("/e")==-1)||(tbl.rows[FRow].children[j].innerHTML.indexOf("g")==19))
        if(tbl.rows[FRow].children[j].innerHTML.indexOf("g")==19)
        j=0;

if(j==0)  
    for(var i=1;i<lagNum;i++)
       { //White Row
        str+='<tr><td nowrap class="messageTableWhiteBorder">&nbsp;'+lagName+i+'&nbsp;</td>';
        for(var x=1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        i++
        //Grey Row
        str+='<tr><td nowrap class="messageTableGreyBorder">&nbsp;'+lagName+i+'&nbsp;</td>';
        for(var x=1;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        str+='</tr>';
       }
else
    for(var i=1;i<lagNum;i++)
       { //White Row
        str+='<tr><td nowrap class="tableField2">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        str+='<td nowrap class="messageTableWhiteBorder">&nbsp;'+lagName+i+'&nbsp;</td>';
        for(var x=2;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableWhiteBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        i++
        //Grey Row
        str+='<tr><td nowrap class="tableField3">'+tbl.rows[FRow].children[0].innerHTML+'</td>';
        str+='<td nowrap class="messageTableGreyBorder">&nbsp;'+lagName+i+'&nbsp;</td>';
        for(var x=2;x<tbl.rows[FRow].cells.length;x++)
        {str+='<td nowrap class = "messageTableGreyBorder">'+tbl.rows[FRow].children[x].innerHTML+'</td>';}
        str+='</tr>';
       }
  

     str+='<tr>'+tbl.rows[tbl.rows.length-1].innerHTML+'</tr>';
    tbl.parentNode.innerHTML=str+"</TBODY></TABLE>";



    CancelAllParms();

    for(var i=0;i<document.getElementsByName('nav').length;i++)
        document.getElementsByName('nav')[i].className="";

if((top.NamePage=="index.htm")||(top.NamePage=="indexFS700TS.htm")){
document.getElementsByName('nav')[7].className="Aactive";
document.getElementsByName('nav')[(7+9)-1].className="Aactive";}
else
{
document.getElementsByName('nav')[2].className="Aactive";}

}

/*
function:Hex2Ascii
input: input - Hexadecimal number
output:Result - the hexadecimal number converted to ascii
this function converts from Hexa to string
------------------------------------------------------------------------------------------*/
function Hex2Ascii(input) {
    origin=16;        //FROM WHICH BASE
    dest=10;        //TO WHICH BASE
    base="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    c=0; Result="";
    for (t=1; t<=input.length; t++) {   //if the checked letter is LowerCase than convert it to UpperCase
        if ( (input.substring(t-1,t)>='a') && (input.substring(t-1,t)<='z') )
            b=base.indexOf(input.substring(t-1,t).toUpperCase());
        else b=base.indexOf(input.substring(t-1,t));
        n=b*(Math.pow (origin, input.length-t));
        c+=n;
    }
    a=100;
    while (a>0 && c < Math.pow (dest, a)) {
        a--;
    }
    while (a>-1) {
        e=Math.pow (dest, a);
        a--;
        d=((c-(c%e))/e)+1;
        c=c%e; Ciffer=base.substring(d-1, d); Result = Result + Ciffer;
    }
    return Result;
}

function PaintPortGrid(sourTable, sourTableColumns, sourTableColumnsAlias,destContainer, destTableId,From,To,TblTyp)
{var output="<table border=2 cellspacing='0'  id='Table_" + destTableId + "' class='tablecontent2' align=left border=0>";
    var fieldName;
    nLine  = 0;
    var i;
    // -------------- HEADER ----------------
    if (!TblTyp)
        output+="<TR><TD class='inputfield'  colspan='2' height='24'>Eth</TD>";
    else
        if (TblTyp!=2)
        output+="<TR><TD class='inputfield'  colspan='2' height='24'>LAG</TD>";
    else
        output+="<TR><TD class='inputfield'  colspan='2' height='24'>Gigabit</TD>";
    for (i = From; i<To; i++) {
        output+="<TD class='inputfields' width='23' height='24'>";
        output+=sourTableColumnsAlias[i] + "</TD>";
    }
    
    output+=" </TR><TR><TD class='inputPortField1' colspan='2' height='5'>Access</TD>";

    for (var j = From; j<To; j++) {
        output+="<TD class='inputPortField1' rowspan='3' width='19'>";
        for (i=1;i<4;i++) {
            output+="<input type='radio' id='rbmem"+j+"_"+i;
            if (((i==3)&&((j==2)||(j==3)))||((j==0)&&(i==1))||((j==1)&&(i==2))||((j>3)&&(i==1))) {
                output+="'checked name='member" + j;
                //alert(i + "    " + j);
            } else {
                output+="' name='member" + j;
            }
            output+="'disabled onclick=SetPort('rbmem"+j+"_1','rbmem"+j+"_2','rbmem"+j+"_3','rbTmem"+j+"_1','rbTmem"+j+"_2') value="+i+">";
            if (i<3) {
                output+="<br>";
            }
        }
        output+=" </TD>";
    }
    
    output +=
    "</tr><TR><TD class='inputPortField1' colspan='2' height='5'>Trunk</TD></TR>"+
    "<TR><TD class='inputPortField1' colspan='2' height='5'>General</TD></TR>";


    output +=
    "<TR><TD class='inputPortField2' colspan='2' height='5'>Tagged</TD>";
    for (var j = From; j<To; j++) {
        output += "<TD class='inputPortField2' rowspan='4' width='19'> ";
        if (j==0) {
            output += "<input type='radio' disabled id='rbTmem"  +j+  "_1' name='Tmem"  +j+  "'>";
        } else {
            output += "<input type='radio' id='rbTmem"  +j+  "_1' name='Tmem"  +j+  "'>";
        }
        output += "<br>";
        if (j==1) {
            output += "<input type='radio' disabled id='rbTmem"  + j+   "_2' name='Tmem" +j+ "'>";
        } else {
            output += "<input type='radio' id='rbTmem"  + j+   "_2' name='Tmem" +j+ "'>";
        }
        output += "<br>";
        output += "<input type='radio' id='rbTmem"  + j+   "_3' name='Tmem" +j+ "'>";
        output += "<br>";
        output += "<input type='radio' id='rbTmem"  + j+   "_4' name='Tmem" +j+ "' checked>";
        output += "</TD>";
    }

    output +=
    "</TR>"+
    "<TR><TD class='inputPortField2' colspan='2' height='5'>Untagged</TD></TR>"+
    "<TR><TD class='inputPortField2' colspan='2' height='5'>Forbidden</TD></TR>"+
    "<TR><TD class='inputPortField2' colspan='2' height='5'>Excluded</TD>"+
    "</TR></TABLE>";

/* 
 for(var j = From+50; j<To+50; j++)
    {output+="<TD class='inputPortField2' rowspan='3' width='19'>";
           for(i=1;i<3;i++)
           {output+="<input type='radio' id='rbmem"+j+"_"+i;
            output+="' name='member" + j;
            output+="' value="+i+">";
               if(i<3)
               {output+="<br>";}
            }
    output+=" </TD>";
    }
output +=
  "</TR><TR><TD class='inputPortField2' colspan='2' height='5'>Excluded</TD></TR></TABLE>";
*/

    document.getElementById(destContainer).innerHTML = output;
    //alert(output);
}






function PaintTable(sourTable, sourTableColumns, sourTableColumnsAlias,destContainer, destTableId,From,To)
{ var output="<table id='Table_" + destTableId + "' class='tablecontent' align=CENTER border=1>";
    var fieldName;
    nLine  = 0;
    var i;
    // -------------- HEADER ----------------
    output+="<TR><TD class='datatableheading' colspan='2' height='19'>Interface</TD>";
    for (i = From; i<To; i++) {
        output += "<TD class='datatableheading'>" + sourTableColumnsAlias[i] +"</TD>";
    }
    output +="</TR><TR><TD class='datatableheading' colspan='2' height='2'>Static</TD>";
    // --------------- BODY -----------------

    var num1;
    for (num1=From;num1<To;num1++) {
        output+="<TD class='inputfield' rowspan='4' width='19'>";
        for (i=1;i<4;i++) {
            output+="<input type='radio' id='rbmem"+num1+"_"+i;
            output+="' name='member" + num1;
            output+="' onclick=' ' value="+i+">";
            if (i<3) {
                output+="<br>";
            }
        }
        output+="<input type='radio' id='rbmem"+ num1 +"_4";
        output+="' name='member" + num1;
        output+="' checked onclick=' ' value=4>";
        output+="</TD>";
    }
    //---------------------------------------------------
    output+="</tr><TR><TD class='datatableheading' colspan='2' height='2'>Dynamic</TD></TR>"
    output+="<TR><TD class='datatableheading' colspan='2' height='2'>Forbidden </TD></TR>"
    output+="<TR><TD class='datatableheading' colspan='2' height='2'>None</TD></TR>"
            
            
    output+= "</table>";
    document.getElementById(destContainer).innerHTML = output;
}
function alignmentListTable()
{
    var Sflag=0, Eflag=0, nItem=0;
    var StrArray=new Array();
    var AlignedArray=new Array();

    args = alignmentListTable.arguments;
    splitedToken = args[0];
    selectObj    = document.getElementById(args[1]);

    for (k=0;k<selectObj.length;k++) {
        oriData  = selectObj.options[k].text;
        selectObj.options[k].value = oriData;

        spaceN = "";
        output = "";
        Sflag=0, Eflag=0, nItem=0;

        /*decompose the data to divide every element  */
        do {
            Eflag=oriData.indexOf(splitedToken, Sflag);
            if ( -1 == Eflag) {
                StrArray[nItem]=oriData.substring(Sflag);

                AlignedArray[nItem]=args[nItem+2];
                nItem++;

                break;
            }
            StrArray[nItem]=oriData.substring(Sflag, Eflag);

            AlignedArray[nItem]=args[nItem+2];

            Sflag=Eflag+1;
            nItem++;

        } while (1)

            /*recombine the value of the object option to fill into the text of object option and align List Table by filling with white space  */
            for (i=0;i<nItem;i++) {
                diffNum = AlignedArray[i] - StrArray[i].length ;
                spaceN = "";
                for (j=1;j<=diffNum;j++) {
                    spaceN += "&nbsp;";
                }
                output += StrArray[i] + spaceN;
            }

        selectObj.options[k].innerHTML = output;
    }
}
/*-----------------------------------------------------------------------------------------
function:decToHex
input: input -  Decimal number
output:Result - the Decimal number converted to Hexadecimal or "" in case of wrong input.
this function converts from Decimal to Hexa
------------------------------------------------------------------------------------------*/
function decToHex(input)
{
    var num = new Number(input);
    if (isNaN(num)) {
        alert("wrong input");
        return "";
    }

    var hex_value = num.toString(16);
    return hex_value.toUpperCase();

/*
flag=0;
origin=10;
dest=16;
base="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
c=0; Result="";

//check input validity
for (t=1; t<=input.length; t++)
 {
        b=base.indexOf(input.substring(t-1,t));
        if(b>=0&&b<=9)
        {
                n=b*(Math.pow (origin, input.length-t));
                c+=n;
        }
        else
        {
                alert("wrong input");
                flag=1;
                break;
        }
 }

//convert from decimal to Hexa
a=100;
if (c>0)
{
  while (c < Math.pow (dest, a)) { a--; }

  while (a>-1)
  {
    e=Math.pow (dest, a);
    a--;
    d=((c-(c%e))/e)+1;
    c=c%e; Ciffer=base.substring(d-1, d); Result = Result + Ciffer;
  }
}
else Result=0;
if(!flag)
        return Result;
else //wrong input
        return "" ;
*/
}

/*-----------------------------------------------------------------------------------------
function: splitOctetString
input: octetString
output:octetArray - each cell holds 2 letters.
this function converts a string to array - each cell holds 2 letters
------------------------------------------------------------------------------------------*/
function splitOctetString(octetString)
{
    var octetArray=new Array(Math.floor(octetString.length/2))
    var splitedString = sliceString(octetString,"");
    for (k=0; k<splitedString.length; k++)
        if (k%2!=0) {
            octetArray[(k-1)/2] = splitedString[k-1]+splitedString[k];
        }
    return octetArray;
}

/*-----------------------------------------------------------------------------------------
function: Octet2Str
input: *OctetName-the name of the form element which holds the octet string
       *StringName-the field which holds the string format of the octetString.
       *FormNumber-the number of the handled form in the page
output:none.
this function converts an octet string to a string - takes each 2 letters convert it from hexa
to ascii than to characters and concat the result to the final string.
------------------------------------------------------------------------------------------*/
function Octet2Str(OctetName,StringName,FormNumber)
{
    var temp;
    var i=0;
    var str="";
    Octet = document.forms[FormNumber].elements[OctetName].value;
    Octet=Octet.toUpperCase();
    while (i<Octet.length) {
        temp=Octet.slice(i,i+2);
        temp=Hex2Ascii(temp);
        temp=String.fromCharCode(temp);
        str=str.concat(temp);
        i+=2;
    }
    document.forms[FormNumber].elements[StringName].value = str ;
}

/*-----------------------------------------------------------------------------------------
function: Octet2StrReturn
input: *Octet-the octet string
output:the string format of the octetString.
this function converts an octet string to a string - takes each 2 letters convert it from hexa
to ascii than to characters and return the result.
------------------------------------------------------------------------------------------*/
function Octet2StrReturn(Octet)
{
    var temp;
    var i=0;
    var str="";
    Octet=Octet.toUpperCase();
    while (i<Octet.length) {
        temp=Octet.slice(i,i+2);
        temp=Hex2Ascii(temp);
        temp=String.fromCharCode(temp);
        str=str.concat(temp);
        i+=2;
    }
    return str ;
}


/*-----------------------------------------------------------------------------------------
function: Str2Hex
input: str-the string to convert
output:Result - the string converted to Hexadecimal.
this function converts a string to Hexadecimal.
------------------------------------------------------------------------------------------*/
function Str2Hex(str)
{
    origin=10;
    dest=16;
    input=""+str;
    base="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    c=0; Result="";
    for (t=1; t<=input.length; t++) {
        b=base.indexOf(input.substring(t-1,t));
        n=b*(Math.pow (origin, input.length-t));
        c+=n;
    }
    a=100;
    while (c < Math.pow (dest, a)) {
        a--;
    }
    while (a>-1) {
        e=Math.pow (dest, a);
        a--;
        d=((c-(c%e))/e)+1;
        c=c%e; Ciffer=base.substring(d-1, d);
        Result = Result + Ciffer;
    }
    return Result;
}

/*-----------------------------------------------------------------------------------------
function: Str2Octet
input: *StringName-the name of the form element which holds the string
       *OctetName-the field which holds the octet string format of the string.
       *FormNumber-the number of the handled form in the page
output:Result - the string converted to octet string.
this function converts a string to octet string.
------------------------------------------------------------------------------------------*/
function Str2Octet(StringName,OctetName,FormNumber)
{
    var str = document.forms[FormNumber].elements[StringName].value
    var temp,i=0,result="";
    //check input validity
    var s=check(str);
    if (s==0) {
        alert("Illegal Octet");
        str="ffffff";
    }
    while (i<(str.length*1)) {
        temp=(str.charCodeAt(i)*1);
        temp=Str2Hex(temp);
        result=result.concat(temp);
        i++;
    }
    document.forms[FormNumber].elements[OctetName].value = result ;
}

/*-----------------------------------------------------------------------------------------
function: Str2OctetReturn
input: *inputStr-the input string
output:Result - the returned octet string.
this function converts a string to octet string.
------------------------------------------------------------------------------------------*/
function Str2OctetReturn(inputStr)
{
    var asciiVal;
    var hexaVal;
    var hexStr = "";
    for (i=0; i<inputStr.length; i++) {
        asciiVal = inputStr.charCodeAt(i);
        asciiVal = ""+asciiVal+"";
        hexaVal = decToHex(asciiVal);
        hexaVal = ""+hexaVal+"";
        hexStr = hexStr.concat(hexaVal);
    }
    return hexStr;
}

/* -------------------------------------------------------------------------------------------
 hexToDec, decfromhex & getnum functions are used to covert from Hex to Decimal
---------------------------------------------------------------------------------------------- */

function hexToDec(val) {
    for (i=0;i<val.length;i++) {
        if (!(((val.charCodeAt(i)>47)&&(val.charCodeAt(i)<58))||((val.charCodeAt(i)>64)&&(val.charCodeAt(i)<74))||((val.charCodeAt(i)>96)&&(val.charCodeAt(i)<103)))) {
            return '';
        }
    }
    return decfromhex(val);

}


function decfromhex(num) {
    while (num.length < 4) {
        num = "0" + num;
    }

    return(eval(getnum(num.substring(3,4))) + eval(getnum(num.substring(2,3))) * 16 +
           eval(getnum(num.substring(1,2))) * 256 + eval(getnum(num.substring(0,1))) * 4096);

}

function getnum(letter) {
    if (letter <= "9") {
        return letter;
    } else {
        if ((letter == "a") || (letter == "A")) {
            return 10
        }
        if ((letter == "b") || (letter == "B")) {
            return 11
        }
        if ((letter == "c") || (letter == "C")) {
            return 12
        }
        if ((letter == "d") || (letter == "D")) {
            return 13
        }
        if ((letter == "e") || (letter == "E")) {
            return 14
        }
        if ((letter == "f") || (letter == "F")) {
            return 15
        }
        return 0;
    }
}

/*-----------------------------------------------------------------------------------------
function: octetToBitsAsChars
input: *octetString-the octet string to convert to bits representation, each bit represented
                    as character "0" or "1"
output:bitsAsCharsArray - the array of bits.
this function represents octet string as array of bits.
------------------------------------------------------------------------------------------*/
function octetToBitsAsChars(octetString)
{
    var splitedOctetString = sliceString(octetString,"");
    var bitsAsCharsArray=new Array((splitedOctetString.length)*4);
    var bitsString="";
    var bitNo=0;
    for (var ind=0; ind<(splitedOctetString.length); ind++) {
        num=hexToDec(splitedOctetString[ind]);
        offset=3;
        for (var j=0; j<4; j++) {
            if ((num!=0)||(num/2 != 0)) {
                bitsAsCharsArray[bitNo+offset]=num%2;
                //bitsString+=num%2;
                num=Math.floor(num/2);
            } else {
                bitsAsCharsArray[bitNo+offset]=0;
                //bitsString+="0";
            }
            offset--;
        }
        bitNo+=4;
    }

    for (j=0; j<bitsAsCharsArray.length; j++)
        bitsString+=bitsAsCharsArray[j];
    //return bitsAsCharsArray;
    return bitsString;
}


/*-----------------------------------------------------------------------------------------
function: bitsAsCharsToOctet
input: *bitsAsCharsArray-the array of bits to convert to octet string
output:*octetString - the array of bits represented as octet string.
this function represents array of bits as octet string.
------------------------------------------------------------------------------------------*/
function bitsAsCharsToOctet(bitsString)
{
    var octetString="";
    var bitNo=0;
    var num;
    while (((bitsString.length)%4) != 0)
        bitsString+="0";
    for (bitNo=0; bitNo<bitsString.length;) {
        num=0;

        for (var j=0; (j<4 && (bitNo+j)<bitsString.length); j++) {
            num=num*2+parseInt(bitsString.charAt(bitNo+j));
        }
        num+="";//convert from integer to string
        bitNo+=4;
        octetString+=decToHex(num);

    }
    //if the octetString length isn't even then add "0" to its end
    if (!checkOctetString(octetString))
        octetString+="0";
    return octetString;
}

function signedHexToDec(pHexaNumber)
{
    signedHexToDec(pHexaNumber, 16);
}

////////////////////////////////////////////////////////////////
// Convert signed hexa-decimal number to decimal number.
////////////////////////////////////////////////////////////////
function signedHexToDec(pHexaNumber, nBits)
{
    var max_int = Math.pow(2, nBits) - 1;
    var max_signed_int = Math.pow(2, (nBits - 1)) - 1;

    // Convert the number to decimal.
    var num_dec = parseInt(pHexaNumber, 16);

    // translate from unsigned int16 to signed int16
    if (num_dec > max_signed_int)
        num_dec = num_dec - max_int - 1;

    return num_dec;
}

/*##########################################################################################
1.2. Conversions - Addresses:
##########################################################################################*/

/*-----------------------------------------------------------------------------------------
function: fromStringToMacAddress
input: stringVal-the string to convert to mac address(each 2 characters separated with ':')
output:macAddressVal - the string converted to MacAddress.
this function converts a string to MacAddress.
------------------------------------------------------------------------------------------*/
function fromStringToMacAddress(stringVal){
    var macAddressVal="";
    var splitedString = sliceString(stringVal,"");
    for (k=0; k<splitedString.length; k++) {
        if (((k+1)%2!=0)||(k==splitedString.length-1))
            macAddressVal = macAddressVal+splitedString[k];
        else
            macAddressVal = macAddressVal+splitedString[k]+":";
    }

    return macAddressVal;
}

/*-----------------------------------------------------------------------------------------
function: fromMacAddressToString
input: macAddVal-the mac address(each 2 characters separated with ':')
output:sVal - the MacAddress converted to string or 0 in case of wrong input.
this function converts a MacAddress to a string.
------------------------------------------------------------------------------------------*/
function fromMacAddressToString(macAddVal)
{
    var sVal="";
    var token=":";
    //check input validity
    if (macAddVal.indexOf("-")!=-1)
        token="-";
    var splitedMacVal = sliceString(macAddVal,token);
    if (macAddVal.indexOf(token)!=-1 && splitedMacVal.length!=6) {
        alert("Wrong string for Mac Address !");
        return 0;
    } else {
        if (macAddVal.indexOf(token)==-1) {
            splitedMacVal=splitOctetString(macAddVal);
        }
        for (n=0; n<splitedMacVal.length; n++) {
            if (checkhexa(splitedMacVal[n])==false) {
                alert("Wrong string for Mac Address !");
                return 0;
            }
        }
    }
    //convert from mac address to string
    for (m=0; m<splitedMacVal.length; m++)
        sVal = sVal+splitedMacVal[m];
    return sVal;
}

/*-----------------------------------------------------------------------------------------
function: maskIpToInt
input: IPtype - The mask as IP address
output:result - The mask as integer(the prefix format).
this function converts ip mask from ip format to int format(prefix).
------------------------------------------------------------------------------------------*/
function maskIpToInt(fldName,val)
{
    var isValid;
    var IPtype;
    var obj;
    var formObj=document.forms[0].elements;

    if (fldName && document.forms[0]) {
        obj=formObj[fldName];
        IPtype=formObj[fldName].value;
        if ((docObj && docObj.fldToCheck=="")||((notIE)&&(document.forms[0])&&(!(formObj[docObj.fldToCheck])))) {
            docObj.fldToCheck=fldName;
        }
    } else IPtype=val;
    isValid = (checkIpAddress(IPtype))
    if (isValid) {
        var ipArr=new Array(4);
        ipArr=sliceString(IPtype,".");
        result=0;
        for (i=0;((i<4)&&(isValid));i++) {
            if ((ipArr[i]=="0")||(ipArr[i]=="128")||(ipArr[i]=="192")||(ipArr[i]=="224")||(ipArr[i]=="240")||
                (ipArr[i]=="248")||(ipArr[i]=="252")||(ipArr[i]=="254")||(ipArr[i]=="255")) {
                base=128;
                while (ipArr[i]!=0) {
                    if (ipArr[i]>=base) {
                        ipArr[i]-=base;
                        result++
                    }
                    base=base/2;

                }
            } else isValid=0;
        }
    }
    if (!(isValid)) {

        if (fldName && document.forms[0] && obj && docObj) {
            docObj.fldToCheck=fldName;
            if (!(alertExist)) {
                alertExist=true;
                if (CheckSpace(IPtype))alert("The input should not include any spaces");
                else
                    alert(IPtype + " is not a legal value for an address in a Mask format.");
                alertExist=false;
            }
            if (obj.type!="hidden")
                setTimeout('checkFocus()',5);
            /*if ((docObj.fldToCheck=="") &&((obj.type=="text") || (obj.type=="textarea") || (obj.type=="password")))
    {
      docObj.fldToCheck=fldName;
      document.forms[0].elements[fldName].focus();
    }*/
        }
        return 0;
    } else {
        /*if (obj && (obj.type!="hidden"))
        {*/
        docObj.fldToCheck="";
        /*}*/
        return("/"+result);
    }
}

/*-----------------------------------------------------------------------------------------
function: maskIntToIp
input: maskASInt - The mask as integer(the prefix format)
output:The mask as IP address.
this function converts ip mask from int format(prefix) to ip format.
------------------------------------------------------------------------------------------*/
function maskIntToIp(fldName,val)
{
    var maskASInt;
    var obj;
    var formObj=document.forms[0].elements;
    if (fldName) {
        obj=document.forms[0].elements[fldName];
        maskASInt=obj.value;
        if ((docObj.fldToCheck=="")||((notIE)&&(!(formObj[docObj.fldToCheck])))) {
            docObj.fldToCheck=fldName;
        }
    } else maskASInt=val;
    while ((maskASInt.charAt(0)==" ")||(maskASInt.charAt(0)=="/")||(maskASInt.charAt(0)=="\\"))
        maskASInt=maskASInt.substr(1);
    var ipArr=new Array(0,0,0,0);
    if ((!checkUInteger32(maskASInt)) || (maskASInt>32)||(maskASInt<0)) {

        if (fldName) {
            /*obj.focus();*/
            docObj.fldToCheck=fldName;
            if (!(alertExist)) {
                alertExist=true;
                /*alert(errMsg);*/
                alert("The mask must be integer range 0..32.");
                alertExist=false;
            }
            if (obj.type!="hidden")
                setTimeout('checkFocus()',5);
        }
    } else {
        if (obj && (obj.type!="hidden")) {
            docObj.fldToCheck="";
        }
        fullMasks=Math.floor(maskASInt/8);
        for (i=0;i<4;i++) {
            if (i<fullMasks) {
                ipArr[i]=255;
                maskASInt-=8;
            } else {
                base=128;
                while (maskASInt>0) {
                    ipArr[i]+=base;
                    base=base/2;
                    maskASInt--;
                }
            }
        }
    }
    return(ipArr[0]+"."+ipArr[1]+"."+ipArr[2]+"."+ipArr[3]);
}

/////////////////////////////////////////////////
//Will turn an int (0-255) to 2 digit hex number
//Input: integer range 0-255.
//output: 2 digits hex number
/////////////////////////////////////////////////
function ipSegToOctet(input)
{
    base="0123456789ABCDEF"
    Result="";
    counter=0;
    while (input>=16) {
        input-=16;
        counter++;
    }
    Result=length2((base.charAt(counter)).toString() + (base.charAt(input)).toString());
    return(Result);
}

/////////////////////////////////////////////////
//Will turn an ip Address to 4 octet string
//Input: ip address.
//output: 4 octets octet string.
/////////////////////////////////////////////////
function ipToOctet(ipType)
{
    if (ipType=="")
        return "";
    var ipArr=new Array(4);
    ipArr=sliceString(ipType,'.');
    octet4="";
    for (i=0;i<4;i++) {
        octet4+=ipSegToOctet(parseInt(ipArr[i]))
    }
    return octet4;
}
/////////////////////////////////////////////////////
//Turns 4 octets to IP format
//input: 4 octets octet string
//output: ip address
/////////////////////////////////////////////////////
function octetToIp(octetStr)
{
    var octetArr=splitOctetString(octetStr);
    result=Hex2Ascii(octetArr[0]);
    for (i=1;i<4;i++) {
        result+="."+Hex2Ascii(octetArr[i]);
    }
    return result;
}

function fromMulticastMacToIP(macAddr)
{
    var ipStr="224-239.";
    var byte3OfMacOption1;
    if (macAddr.slice(6,7)=="0")
        byte3OfMacOption1=(Hex2Ascii(macAddr.slice(7,8))&127).toString();
    else byte3OfMacOption1=(Hex2Ascii(macAddr.slice(6,8))&127).toString();
    //byte3OfMacOption1=Hex2Ascii((macAddr.slice(6,8)&127)).toString();
    byte3OfMacOption2=parseInt(byte3OfMacOption1)+128;
    ipStr+=byte3OfMacOption2+"|"+byte3OfMacOption1+".";
    if (macAddr.slice(8,9)=="0")
        ipStr+=Hex2Ascii(macAddr.slice(9,10));
    else ipStr+=Hex2Ascii(macAddr.slice(8,10));
    ipStr+=".";
    if (macAddr.slice(10,11)=="0")
        ipStr+=Hex2Ascii(macAddr.slice(11,12));
    else ipStr+=Hex2Ascii(macAddr.slice(10,12));
    return ipStr;
}


/*-----------------------------------------------------------------------------------------
function: fromIPToMulticastMac
input: *ipAddr - the ip address string
       *isEdit - isEdit=false when we are in an add screen, else isEdit=true
                 cause the user insert a normal ip address, but when we use addresses
                 from the mib we show all the 32 possibilities.
------------------------------------------------------------------------------------------*/
function fromIPToMulticastMac(ipAddr,isEdit)
{
    var macStr="01005e";
    ipArr=sliceString(ipAddr,".");
    var isCont=true;
    if (isEdit==true) {
        ipArr[1]=(sliceString(ipArr[1],"|"))[1];
    } else {
        if ((parseInt(ipArr[0])<224) || (parseInt(ipArr[0])>239)) {
            isCont=false;
            alert("Multicat Mac address must be between 224.0.0.0-239.255.255.255");
        }
    }
    if (isCont) {
        ipArr[1]=(ipArr[1]&127).toString();
        for (var i=1; i<4; i++) {
            ipArr[i]=Str2Hex(ipArr[i]);
            if (ipArr[i]==0 || ipArr[i]=="0")
                ipArr[i]="00";
            if (ipArr[i].length==1)
                ipArr[i]="0"+ipArr[i];
            macStr+=ipArr[i];
        }
        return macStr;
    } else return -1;
}

/*##########################################################################################
1.3. Conversions - Time:
##########################################################################################*/
var TICKS_PER_SECOND = 100;

/*-----------------------------------------------------------------------------------------
function: ticksToSecondsField
input: *tickField - the field which holds time in ticks
       *secField - the field which holds time in seconds
output:None.
this function converts time from ticks to seconds and puts it into the needed field.
------------------------------------------------------------------------------------------*/
function ticksToSecondsField(tickField, secField){
    var ticks = document.forms[0].elements[tickField].value;
    document.forms[0].elements[secField].value = ticks / TICKS_PER_SECOND;
}

/*-----------------------------------------------------------------------------------------
function: secondsToTicksField
input: *secField - the field which holds time in seconds
       *tickField - the field which holds time in ticks
output:None.
this function converts time from seconds to ticks and puts it into the needed field.
------------------------------------------------------------------------------------------*/
function secondsToTicksField(secField, tickField){
    var secs = document.forms[0].elements[secField].value;
    document.forms[0].elements[tickField].value = secs * TICKS_PER_SECOND;
}

/*-----------------------------------------------------------------------------------------
function: sysUpTimeConvFunc
input: ticks - the field which holds time in seconds
output:None.
this function converts the system time from ticks to days,hours, minutes and seconds
and display it to the screen.
------------------------------------------------------------------------------------------*/
function sysUpTimeConvFunc(ticks)
{
    //convert to seconds
    var time = Math.round(ticks/TICKS_PER_SECOND);
    // convert to days, hours, minutes, seconds
    var days = Math.floor(time/(24*3600));
    time = time%(24*3600);
    var hours = Math.floor(time/3600);
    time = time%3600;
    var min = Math.floor(time/60);
    var sec = time%60; //the seconds
    var timeStr= days + " d "+hours+" h "+min+" m "+sec+" s";
    document.write(timeStr);
}

/*-----------------------------------------------------------------------------------------
function: ticksToDateAndTime
input: systemUpTimeVal - The time since the last reboot.
           ticks - The field which holds time in seconds
           date - The current date
           time - The current time
output:None.
this function calculates the time acording to the given ticks since the last system rebbot,
acording to the current date and time.
------------------------------------------------------------------------------------------*/
// This function will get Time Ticks parameter and translate to DD/MM/YY HH:MM:SS.M format
function ticksToDateAndTime(systemUpTimeVal, ticks, dateVal, timeVal){

    var hours = "";
    var hours = hours+timeVal.substr(0,2);
    var minutes = "";
    var minutes = minutes+timeVal.substr(2,2);
    var seconds = "";
    var seconds = seconds+timeVal.substr(4,2);

    var day = "";
    day=day+(dateVal.charAt(0));
    day=day+(dateVal.charAt(1));

    var month = "";
    month=month+(dateVal.charAt(2));
    month=month+(dateVal.charAt(3));

    var year = "";
    year=year+(dateVal.charAt(4));
    year=year+(dateVal.charAt(5));
    if (year>=70 && year<=99) {//the year is 19..
        year = "19"+year;
    } else {//the year is 20..
        year = "20"+year;
    }

    date = new Date(year, month, day, hours, minutes, seconds);
    var currentMilliTime = date.getTime(); //today date and time in millisecons
    var differenceInMilli = currentMilliTime - (systemUpTimeVal*10); //last reboot date
    var neededDate  =  differenceInMilli +  ticks*10; //date of entry creation

    date.setTime(neededDate);

    day = date.getDate();
    month = date.getMonth();
    year = date.getFullYear();

    hour = date.getHours();
    minutes = date.getMinutes();
    seconds = date.getSeconds();
    milli = date.getMilliseconds();

    //timeStr = day+"/"+month+"/"+year+" "+hour+":"+minutes+":"+seconds+"."+milli;
    timeStr = day+"/"+month+"/"+year+" "+hour+":"+minutes+":"+seconds;

    document.write(timeStr);
}

/////////////////////////////////////////////////////////////////////////////////////
//Calculate the time from 8 octets according to "rfc2579"
//input: 8 octet string  (YY:YY:MM:DD:HH:MnMn:SecSec:DecimalSecDecimalSec)
//output: Array (length=7), [0]=year,[1]=month,[2]=day,[3]=hour,
//                                                        [4]=minute,[5]=seconds,[6]=decimal seconds
////////////////////////////////////////////////////////////////////////////////////
function calculateTimeFromOctet(theOctet)
{
    var timeArray=new Array(7);
    var upperOctet=theOctet.toUpperCase();
    var octetArray=new Array;
    octetArray=splitOctetString(upperOctet);
    timeArray[0]=(Hex2Ascii(octetArray[0]+octetArray[1])).toString();
    for (i=1;i<timeArray.length;i++)
        timeArray[i]=(Hex2Ascii(octetArray[i+1]));
    return timeArray;
}
/////////////////////////////////////////////////////////////////////////////////////
//Calculate the time into 8 octets according to "rfc2579"
//input: Array (length=7), [0]=year,[1]=month,[2]=day,[3]=hour,
//                                                        [4]=minute,[5]=seconds,[6]=decimal seconds
//output: 8 octet string  (YY:YY:MM:DD:HH:MnMn:SecSec:DecimalSecDecimalSec)
////////////////////////////////////////////////////////////////////////////////////
function calculateOctetFromTime(TimeArray)
{
    octetString="";
    var tempArray=new Array(2);
    tempArray=splitOctetString(length4(Str2Hex(TimeArray[0])));
    octetString+=length2((tempArray[0]));
    octetString+=length2((tempArray[1]));
    for (i=1;i<TimeArray.length;i++)
        octetString+=length2(Str2Hex(TimeArray[i]));
    return octetString;
}
///////////////////////////////////////////////////////////////////////////////
//Checking if the value of the date object is written with the right format
//output : 1 OK, 0 wrong expression,-1 worng year
//                                  -2 wrong day
//                                  -3 wrong hour
//                                  -4 wrong minute
//                                  -5 wrong second
//                                  -6 wrong month
///////////////////////////////////////////////////////////////////////////////
function checkDate(expression)
{
    anum=/(^\d{1,2}\/\S{3}\/\d{4},\d{2}:\d{2}:\d{2}$)/
    if (anum.test(expression)) {
        testresult=1;

        ExpArr=new Array(6);
        ExpArr=sliceString(expression,",");
        DateArr=new Array(3);
        TimeArr=new Array(3);
        DateArr=sliceString(ExpArr[0],"/");
        TimeArr=sliceString(ExpArr[1],":");
        if ((parseInt(DateArr[2])>2097)||(parseInt(DateArr[2])<2000))
            testresult=-1;
        switch ((DateArr[1]).toUpperCase()) {
        case "JAN":
            if (((parseInt(DateArr[0]))<1) || ((parseInt(DateArr[0]))>31))
                return(-2);
            break;
        case "FEB":
            if (((parseInt(DateArr[0]))<1) || ((parseInt(DateArr[0]))>28))
                if (!((parseInt(DateArr[2])%4 == 0)&&((parseInt(DateArr[0]))==29)))
                    return(-2);
            break;
        case "MAR":
            if (((parseInt(DateArr[0]))<1) || ((parseInt(DateArr[0]))>31))
                return(-2);
            break;
        case "APR":
            if (((parseInt(DateArr[0]))<1) || ((parseInt(DateArr[0]))>30))
                return(-2);
            break;
        case "MAY":
            if (((parseInt(DateArr[0]))<1) || ((parseInt(DateArr[0]))>31))
                return(-2);
            break;
        case "JUN":
            if (((parseInt(DateArr[0]))<1) || ((parseInt(DateArr[0]))>30))
                return(-2);
            break;
        case "JUL":
            if (((parseInt(DateArr[0]))<1) || ((parseInt(DateArr[0]))>31))
                return(-2);
            break;
        case "AUG":
            if (((parseInt(DateArr[0]))<1) || ((parseInt(DateArr[0]))>31))
                return(-2);
            break;
        case "SEP":
            if (((parseInt(DateArr[0]))<1) || ((parseInt(DateArr[0]))>30))
                return(-2);
            break;
        case "OCT":
            if (((parseInt(DateArr[0]))<1) || ((parseInt(DateArr[0]))>31))
                return(-2);
            break;
        case "NOV":
            if (((parseInt(DateArr[0]))<1) || ((parseInt(DateArr[0]))>30))
                return(-2);
            break;
        case "DEC":
            if (((parseInt(DateArr[0]))<1) || ((parseInt(DateArr[0]))>31))
                return(-2);
            break;
        }
        if ((parseInt(TimeArr[0])>23)||(parseInt(TimeArr[0])<0))
            testresult=-3;
        if ((parseInt(TimeArr[1])>59)||(parseInt(TimeArr[1])<0))
            testresult=-4;
        if ((parseInt(TimeArr[2])>59)||(parseInt(TimeArr[2])<0))
            testresult=-5;
        monthStr=DateArr[1].toUpperCase();
        if ((monthStr!="JAN")&&(monthStr!="FEB")&&(monthStr!="MAR")&&(monthStr!="APR")&&
            (monthStr!="MAY")&&(monthStr!="JUN")&&(monthStr!="JUL")&&(monthStr!="AUG")&&
            (monthStr!="SEP")&&(monthStr!="OCT")&&(monthStr!="NOV")&&(monthStr!="DEC"))
            testresult=-6;


    } else {
        testresult=0;
    }
    return testresult;
}
/*##########################################################################################
2. Type Check:
##########################################################################################*/

function checkhexa(stringTocheck)
{
    stringTocheck=removeSpacesFromHeadAndTail(stringTocheck);
    for (i=0;i<stringTocheck.length;i++) {
        //97-102 - a-f                                                                                65-70 - A-F                                                                        48-57 - 0-9
        if (!((stringTocheck.charCodeAt(i)>=97&& stringTocheck.charCodeAt(i)<=102)||(stringTocheck.charCodeAt(i)>=65 && stringTocheck.charCodeAt(i)<=70)||(stringTocheck.charCodeAt(i)>=48 && stringTocheck.charCodeAt(i)<=57))) {
            return false;
        }
    }
    return true;
}
/////////////////////////////////////////////////////////////////////////////////////
//checks that the string contains only '_', digits and characters
//input - the string to check
//output - 1 for true, 0 for false
/////////////////////////////////////////////////////////////////////////////////////

function check(str)
{
    var tmp;
    var result=1;
    str=removeSpacesFromHeadAndTail(str);
    for (i=0;i<str.length;i++) {
        tmp=str.charCodeAt(i);
        if (!((tmp==95)||(tmp>47&&tmp<58)||(tmp>64&&tmp<91)||(tmp>96&&tmp<123)))
            result=0;
    }
    return(result);
}
/////////////////////////////////////////////////////////////////////////////////////////
//Check that the string is a legal number
//input - the string to check
//output - 1 for true, 0 for false
/////////////////////////////////////////////////////////////////////////////////////////
function checknumber(stringTocheck)
{
    stringTocheck = stringTocheck + ""; //make the value a string
    if (stringTocheck.length > 1) {
        if (stringTocheck.charAt(0) == '0') {
            return false;
        } else {
            stringTocheck=removeSpacesFromHeadAndTail(stringTocheck);
            var anum=/(^\d+$)|(^\d+\.\d+$)/
            return(anum.test(stringTocheck));
        }
    } else {
        stringTocheck=removeSpacesFromHeadAndTail(stringTocheck);
        var anum=/(^\d+$)|(^\d+\.\d+$)/
        return(anum.test(stringTocheck));
    }
}

/////////////////////////////////////////////////////////////////////////////////////////
//Check that the string is a legal integer
//input - the string to check
//output - 1 for true, 0 for false
/////////////////////////////////////////////////////////////////////////////////////////
function checkInteger(stringTocheck)
{

    stringTocheck = stringTocheck + ""; //make the value a string
    if (stringTocheck.length > 1) {
        if (stringTocheck.charAt(0) == '0') {
            return false;
        } else {
            stringTocheck=removeSpacesFromHeadAndTail(stringTocheck);
            var anum=/(^\d+$)|(^\+\d+$)|(^\-\d+$)/
            return(anum.test(stringTocheck));
        }
    } else {
        stringTocheck=removeSpacesFromHeadAndTail(stringTocheck);
        var anum=/(^\d+$)|(^\+\d+$)|(^\-\d+$)/
        return(anum.test(stringTocheck));
    }

}
/////////////////////////////////////////////////////////////////////////////////////////
//Check that the string is a legal Uint32
//input - the string to check
//output - 1 for true, 0 for false
/////////////////////////////////////////////////////////////////////////////////////////
function checkUInteger32(stringTocheck)
{
    stringTocheck = stringTocheck + ""; //make the value a string
    if (stringTocheck.length > 1) {
        if (stringTocheck.charAt(0) == '0') {
            return false;
        } else {
            stringTocheck=removeSpacesFromHeadAndTail(stringTocheck);
            var anum=/(^\d+$)/
            return(anum.test(stringTocheck));
        }
    } else {
        stringTocheck=removeSpacesFromHeadAndTail(stringTocheck);
        var anum=/(^\d+$)/
        return(anum.test(stringTocheck));
    }
}

/////////////////////////////////////////////////////////////////////////////////////////
//Check that the string is a legal IP Address
//input - the string to check
//output - 1 for true, 0 for false
/////////////////////////////////////////////////////////////////////////////////////////
function checkIpAddress(stringTocheck,isMulticast)
{
    stringTocheck=removeSpacesFromHeadAndTail(stringTocheck);
    var ipType=/(^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$)/
    var multicastIpType=/(^\d{1,3}-\d{1,3}\.\d{1,3}\|\d{1,3}\.\d{1,3}\.\d{1,3}$)/
    if (ipType.test(stringTocheck)||(isMulticast!="" && isMulticast!=null && isMulticast==true && multicastIpType.test(stringTocheck))) {//the format is ok, just check the range
        var IPArr=sliceString(stringTocheck,".");
        if (4==IPArr.length) {
            for (var i=0; i<IPArr.length; i++) {
                if ((i==0 || i==1) && isMulticast!="" && isMulticast!=null && isMulticast==true) {
                    var tmp;
                    if (i==0)
                        tmp=sliceString(IPArr[i],"-");
                    else if (i==1)
                        tmp=sliceString(IPArr[i],"|");
                    if (2==tmp.length) {
                        for (var j=0; j<tmp.length; j++) {
                            tmp[j]=parseInt(tmp[j]);
                            if ( (tmp[j]<0) || (tmp[j]>255) )
                                return false;
                        }
                    } else return false;
                } else {
                    var tmp=parseInt(IPArr[i]);
                    if ( (tmp<0) || (tmp>255) )
                        return false;
                }
            }
        } else return false;
    } else return false;
    return true;
}

/////////////////////////////////////////////////////////////////////////////////////////
//Check that the string is a legal OID
//input - the string to check
//output - 1 for true, 0 for false
/////////////////////////////////////////////////////////////////////////////////////////
function checkOID(stringTocheck)
{
    stringTocheck=removeSpacesFromHeadAndTail(stringTocheck);
    var anum=/(^\d+$)/;
    var OIDArr=sliceString(stringTocheck,".");
    for (var i=0; i<OIDArr.length; i++) {
        if (!anum.test(OIDArr[i])) {
            return false;
        }
    }
    return true;
}

/////////////////////////////////////////////////////////////////////////////////////////
//Check that the string is a legal OID
//input - the string to check
//output - 1 for true, 0 for false
/////////////////////////////////////////////////////////////////////////////////////////
function checkPortList(stringTocheck)
{
    stringTocheck=removeSpacesFromHeadAndTail(stringTocheck);
    var anum=/(^[0-1]+$)/;
    if (!anum.test(stringTocheck)) {
        return false;
    }
    return true;
}

/////////////////////////////////////////////////////////////////////////////////////
//Checking Octet size format.
/////////////////////////////////////////////////////////////////////////////////////
function checkOctetString(stringTocheck,typeParam)
{
    stringTocheck=removeSpacesFromHeadAndTail(stringTocheck);
    var tokensArr=[":","-"];
    var token="";
    var octetString="";
    var octetArr;
    var legal;
    if (typeParam!="MAC" && isNaN(typeParam))
        typeParam="";
    for (i=0; i<tokensArr.length; i++)
        if ((stringTocheck).indexOf(tokensArr[i])!=-1) {
            token=tokensArr[i];
            break;
        }
    if (!(typeParam=="MAC" && token=="")) {
        octetArr=sliceString(stringTocheck,token);
        legal=true;
        if (token!="") {
            for (i=0;i<octetArr.length;i++) {
                if (octetArr[i].length!=2) {
                    legal=false;
                    break;
                }
            }
        }

        if (legal) {
            for (i=0;i<octetArr.length;i++)
                octetString+=octetArr[i];
            var x=0;
            for (i=0;i<octetString.length;i++) {
                x=octetString.charCodeAt(i);
                if ( (x<48) || ((x>57)&&(x<65)) || ((x>70)&&(x<97)) || (x>102)) {
                    legal=false;
                    break;
                }
            }
        }
        if (((octetString.length)%2!=0)||(!legal)) {
            return false;
        }
        return true;
    }
    return false;
}


/*##########################################################################################
3.Validity:
##########################################################################################*/

////////////////////////////////////////////////////////////////////////////////////
//The function is using the MIB’s properties of the fields in order to check
//if the entered value is legal. The function alerts the user when a wrong
//value was entered.
//Optional input1: the field’s header.
//Optional input2: the fields name
//Optional input3: isShowMsg -indicate whether to display or not an error msg in case there's an error
//Output: the function is using alert windows to alert when an error was detected.
//The function can be used only on text/hidden fields that has the MIB field name left to the ‘$’ token.
//
//when the function is called from an event handler(like onBlur) than the user can
//call the function with no parameters at all.
//when the function is called directly(not by event handler), you must supply the field's name.
//In this case if you don't want to use the field's header you must send "" instead
//(cause it's the first parameter the function gets.
//when the function isn't called from event handler than the function must be called
//with the fieldName.
////////////////////////////////////////////////////////////////////////////////////
function checkValidation(fldHeader,isShowMsg,fieldName,isSpaceAllowed,typeParam,minRange,maxRange,octetValMinRange,octetValMaxRange)
{
    var e=null;
    var fldName=null;
    var errMsg="";
    var formObj=document.forms[0].elements;
    var isConCheck=true;
    var obj=null;
    var nonVtField=false;
    var orgFieldName="";
    var i;
    if (!isSpaceAllowed)
        isSpaceAllowed=false;

    if (!isShowMsg) {
        if (isNaN(isShowMsg))
            isShowMsg=true;
        else {
            if (isShowMsg.length==0)
                isShowMsg=true;
            else isShowMsg=false;
        }
    }

    if (fieldName) {
        orgFieldName=fldName=fieldName;
    } else if (window.event && window.event.srcElement && window.event.srcElement.name) {
        e=window.event;
        orgFieldName=fldName=e.srcElement.name;
    } else if (!window.event) {
        e=arguments.callee.caller.arguments[0];
        orgFieldName=fldName=e.target.name ;
    } else isConCheck=false;
    if ((docObj.fldToCheck=="")||((!(formObj[docObj.fldToCheck])))) {
        docObj.fldToCheck=fldName;
    }

    if (docObj.fldToCheck==fldName) {
        if ((isSpace(formObj[fldName].value))&&(!isSpaceAllowed) ) {
            docObj.fldToCheck="";
            formObj[fldName].value= formObj[fldName].defaultValue;
            alert("Blank is not a legal value");
        }
        //check if not getting into endless loop and
        //if the space value is a space and spaces are allowed then don't continue checking
        else if (!((isSpace(formObj[fldName].value))&&(isSpaceAllowed) ) ) {
            //if ((isConCheck) && (formObj[fldName].value!=docObj.queryNA))//the field to check its validity exists
            if (isConCheck) {
                obj=formObj[fldName];
                var vtFldArr;
                //remove from here the " condition and the else word following without the if
                if (((obj.type=="text") || (obj.type=="textarea") || (obj.type=="hidden") || (obj.type=="password"))&&(obj.value.indexOf('"')!=-1)) {
                    isShowMsg=true;
                    errMsg="The use of \" character is illegal in the specified field";
                } else if ((obj.type=="text") || (obj.type=="textarea") || (obj.type=="hidden") || (obj.type=="password")) {
                    vtFldArr=sliceString(fldName,"$");

                    if (vtFldArr) {
                        //only vtFldArr[0] is needed cause it holds the field name
                        if ((formObj[vtFldArr[0]+"$VT"]!=null)&&(!typeParam)) {//table's variable
                            vtFldVal=formObj[vtFldArr[0]+"$VT"].value; //the value of the VT field
                        } else if ((formObj[vtFldArr[0]+"$bnd"]!=null)&&(!typeParam)) {//scalar variable
                            vtFldVal=formObj[vtFldArr[0]+"$bnd"].value;
                        } else if (typeParam) {
                            nonVtField=true;
                        } else isConCheck=false;


                        if ((isConCheck)|| (nonVtField)) {
                            if (!nonVtField) {
                                vtFldValArr=sliceString(vtFldVal,";");

                                if (vtFldValArr) {
                                    for (i=0; i<vtFldValArr.length; i++) {
                                        if (vtFldValArr[i].indexOf("Type")!=-1)
                                            break;
                                    }
                                    if (vtFldValArr[i].indexOf("Type")!=-1) {
                                        //remove the '='
                                        var tmpValArr=sliceString(vtFldValArr[i],"=");
                                    }
                                }
                            }
                            if (typeParam)
                                typeParam=typeParam.toUpperCase();
                            switch (typeParam) {
                            case "INT": type="0";
                                break;
                            case "INTEGER": type="0";
                                break;
                            case "UINT32": type="12";
                                break;
                            case "OID": type="3";
                                break;
                            case "IP": type="5";
                                break;
                            case "OCTET":
                            case "MAC":
                                type="2";
                                break;
                            case "PORTLIST": type="101";
                                break;
                            case "STRING": type="100";
                                break;
                            case "MULTICASTIP": type=typeParam;
                                break;
                            default:
                                if (tmpValArr && 2==tmpValArr.length) {
                                    type=tmpValArr[1];//the type of the filed
                                } else type=null;
                                break;
                            }
                            if (type != null) {
                                if (nonVtField)
                                    errMsg=checkType(orgFieldName,type,isShowMsg,fldHeader,typeParam);
                                else errMsg=checkType(fldName,type,isShowMsg,fldHeader,typeParam);
                                if (""==errMsg) {
                                    switch (type) {
                                    case "0"://interger
                                    case "6"://Counter
                                    case "7"://Gauge
                                    case "11"://Counter64
                                    case "12"://UInt
                                        if ((minRange && minRange!="") || (maxRange && maxRange!=""))
                                            errMsg=checkIntegerLegalValue(obj.value, minRange, maxRange,isShowMsg,fldHeader,true);
                                        else if (!nonVtField) errMsg=checkRange(fldName,isShowMsg,fldHeader);
                                        break;
                                    case "2"://octet string
                                        if (typeParam=="MAC") {
                                            errMsg=checkOctetSize(fldName,isShowMsg,fldHeader,6, 6,typeParam);
                                        } else {
                                            errMsg=checkOctetSize(fldName,isShowMsg,fldHeader,minRange, maxRange);
                                            /*check value range i given*/
                                            if (errMsg=="" && (octetValMinRange && octetValMinRange!="")&&(octetValMaxRange && octetValMaxRange!=""))
                                                errMsg=validateOctetValRange(fldName,octetValMinRange,octetValMaxRange,fldHeader);
                                        }
                                        break;
                                    case "100"://pure string
                                        errMsg=checkStrSize(fldName,isShowMsg,fldHeader,minRange, maxRange);
                                        break;
                                    default: break;
                                    }
                                }
                            }
                        }
                    }
                }
            } else docObj.fldToCheck="";
            if (false==isShowMsg && errMsg!="" ) {
                //docObj.isValidityError=true;
                return errMsg;
            } else if (errMsg!="" && errMsg!=true) {
                //docObj.isValidityError=true;
                if (!(alertExist)) {
                    alertExist=true;
                    alert(errMsg);
                    alertExist=false;

                    //if (notIE)
                    //window.mouseup();
                }

                //obj.value=obj.defaultValue;
                if (obj.type!="hidden") // 'document.forms[0].'+docObj.fldToCheck+'.focus()'
                    setTimeout('checkFocus()',5);
                //obj.focus();
                return false;
            }
            docObj.fldToCheck="";
            return true;
            //else docObj.isValidityError=false;
        } else {
            docObj.fldToCheck="";
        }
    }
    return;
}


/////////////////////////////////////////////////////////////////////////////////////
//Checking the field type (according to the givven "MIb property type value"),
//input - fldName, field type property number, optional fld header.
//output - the errMsg
/////////////////////////////////////////////////////////////////////////////////////
function checkType(fldName,type,isShowMsg,fldHeader,typeParam)
{
    var errMsg="";
    var type;
    var formObj=document.forms[0].elements;
    var obj=formObj[fldName];
    var verifyType;
    var val=removeSpacesFromHeadAndTail(obj.value);
    //we will remove all space from the head and tail of the value
    obj.value=val;
    if (!isShowMsg) {
        if (isNaN(isShowMsg))
            isShowMsg=true;
        else {
            if (isShowMsg.length==0)
                isShowMsg=true;
            else isShowMsg=false;
        }
    }

    if (typeParam!="MAC" && isNaN(typeParam))
        typeParam="";

    //if one want to use checkType as it is(not through checkValidation)
    //than it's possible to give the type as
    type=type.toUpperCase();
    switch (type) {
    case "INT": type="0";
        break;
    case "INTEGER": type="0";
        break;
    case "UINT32": type="12";
        break;
    case "OID": type="3";
        break;
    case "IP": type="5";
        break;
    case "OCTET":
    case "MAC":
        if (type=="MAC") {
            typeParam="MAC"
        }
        type="2";
        break;
    case "PORTLIST": type="101";
        break;
    case "STRING": type="100"        ;
        break;
    default: break;
    }
    switch (type) {
    case "0"://interger
        verifyType=checkInteger(val);
        if (!verifyType) {
            if ((val!=0)&&(val=="" || val==" " || val==null)) val="blank";
            if (fldHeader)
                errMsg=val+" is illegal. "+fldHeader+" must be an Integer.";
            else errMsg=val+" is not an Integer.";
        }
        break;
    case "2":
        verifyType=checkOctetString(val,typeParam);
        if (!verifyType) {
            if ((val!=0)&&(val=="" || val==" " || val==null)) val="blank";
            if (fldHeader) {
                if (typeParam=="MAC")
                    errMsg=errMsg=val+" is not a MAC address. "+fldHeader+" must be 6 pairs of Hexa digits(0..9,a..f) separated by ':'.";
                else errMsg=errMsg=val+" is not an octet string. "+fldHeader+" must be an even number of pairs of Hexa digits(0..9,a..f).";
            } else {
                if (typeParam=="MAC")
                    errMsg=val+" is not a MAC address. It must be 6 pairs of Hexa digits(0..9,a..f) separated by ':'.";
                else errMsg=val+" is not an octet string. It must be an even number of pairs of Hexa digits(0..9,a..f).";
            }
        }
        break;
    case "3":
        verifyType=checkOID(val);
        if (!verifyType) {
            if ((val!=0)&&(val=="" || val==" " || val==null)) val="blank";
            if (fldHeader)
                errMsg=val+" is illegal. "+fldHeader+" must be an OID.";
            else errMsg=val+" is not an OID.";
        }
        break;
    case "5":
        verifyType=checkIpAddress(val);
        if (!verifyType) {
            if ((val!=0)&&(val=="" || val==" " || val==null)) val="blank";
            if (fldHeader)
                errMsg=val+" is illegal. "+fldHeader+" must be an IP Address.";
            else errMsg=val+" is not an IP Address.";
        }
        break;
    case "MULTICASTIP":
        if ((val.indexOf("-")!=-1) && (val.indexOf("|")!=-1))
            verifyType=checkIpAddress(val,true);
        else  verifyType=checkIpAddress(val);
        if (!verifyType) {
            if ((val!=0)&&(val=="" || val==" " || val==null)) val="blank";
            if (fldHeader)
                errMsg=val+" is illegal. "+fldHeader+" must be a Multicast IP Address.";
            else errMsg=val+" is not a Multicast IP Address.";
        } else {
            var ipArr=sliceString(val,".");
            if ((parseInt(ipArr[0])<224) || (parseInt(ipArr[0])>239)) {
                errMsg="IP Multicat address must be between 224.0.0.0-239.255.255.255";
            }
        }
        break;
    case "12"://interger
    case "7"://gauge
        verifyType=checkUInteger32(val);
        if (!verifyType) {
            if ((val!=0)&&(val=="" || val==" " || val==null)) val="blank";
            if (fldHeader)
                errMsg=val+" is illegal. "+fldHeader+" must be an Unsigned Integer.";
            else errMsg=val+" is not an Unsigned Integer.";
        }
        break;
    case "100":
        if (val=="" || val==" " || val==null) {
            if (fldHeader)
                errMsg=fldHeader+" must be a String.";
            else errMsg="You must enter a String.";
        }
        break;
    case "101":
        verifyType=checkPortList(val);
        if (!verifyType) {
            if ((val!=0)&&(val=="" || val==" " || val==null)) val="blank";
            if (fldHeader)
                errMsg=val+" is illegal. "+fldHeader+" must be a Port List.";
            else errMsg=val+" is not a Port List.";
        }
        break;
    default: break;
    }
    if (false==isShowMsg && errMsg!="")
        return "type";//just indicate there was a type problem
    return errMsg;
}

/////////////////////////////////////////////////////////////////////////////////////
//Checking the value according to the Range property.
/////////////////////////////////////////////////////////////////////////////////////
function checkRange(fldName,isShowMsg,fldHeader)
{
    var errMsg="";
    var minVal=null;
    var maxVal=null;
    var formObj=document.forms[0].elements;
    var obj=formObj[fldName];
    var minMaxStr;
    var minMaxlimit;
    var isConCheck=true;
    var val=(removeSpacesFromHeadAndTail(obj.value))*1;

    if (!isShowMsg) {
        if (isNaN(isShowMsg))
            isShowMsg=true;
        else {
            if (isShowMsg.length==0)
                isShowMsg=true;
            else isShowMsg=false;
        }
    }
    //only vtFldArr[0] is needed cause it holds the VT field name
    var vtFldArr=sliceString(fldName,"$");
    if (vtFldArr) {
        if (formObj[vtFldArr[0]+"$VT"]!=null) {
            vtFldVal=formObj[vtFldArr[0]+"$VT"].value; //the value of the VT field
        } else if (formObj[vtFldArr[0]+"$bnd"]!=null) {
            vtFldVal=formObj[vtFldArr[0]+"$bnd"].value; //the value of the VT field
        }
    } else  isConCheck=false;

    if (isConCheck) {
        vtFldValArr=sliceString(vtFldVal,";");

        if (vtFldValArr) {
            for (var i=0; i<vtFldValArr.length; i++) {
                minMaxStr=null;
                minMaxlimit=null;
                if (vtFldValArr[i].indexOf("Range")!=-1) {
                    //remove the '[', ']'
                    var tmpValArr=sliceString(vtFldValArr[i],"[");

                    if (tmpValArr && tmpValArr[1]) {
                        var tmp=tmpValArr[1];
                        tmpValArr=sliceString(tmp,"]");
                        if (tmpValArr) {
                            tmp=tmpValArr[0];
                            tmpValArr=sliceString(tmp,",");
                            if (tmpValArr && 2==tmpValArr.length) {
                                minVal=parseInt(tmpValArr[0]);
                                maxVal=parseInt(tmpValArr[1]);
                                if ( ( minVal !=null) && (parseInt(val) < minVal) ) {
                                    minMaxStr="minimum" ;
                                    minMaxlimit=minVal;
                                }
                                if ( ( maxVal !=null) && (parseInt(val) > maxVal) ) {
                                    minMaxStr="maximum" ;
                                    minMaxlimit=maxVal;
                                }
                                if (minMaxlimit!=null) {
                                    if ((val!=0)&&(val=="" || val==" " || val==null)) val="blank";
                                    if (fldHeader)
                                        errMsg=val+" is out of range. The "+minMaxStr+" value for "+fldHeader+" is "+minMaxlimit+".\n";
                                    else errMsg=val+" is out of range. The "+minMaxStr+" value is "+minMaxlimit+".\n";
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    if (false==isShowMsg && errMsg!="")
        //return "range";//just indicate there was a range problem
        return("range;" + minVal + ";" + maxVal);//indicate there was a range problem
    return errMsg;
}

/////////////////////////////////////////////////////////////////////////////////////
//Checking the value according to the Range property.
/////////////////////////////////////////////////////////////////////////////////////
function checkStrSize(fldName,isShowMsg,fldHeader,minRange, maxRange)
{
    var errMsg="";
    var minVal=null;
    var maxVal=null;
    var formObj=document.forms[0].elements;
    var obj=formObj[fldName];
    var minMaxStr;
    var minMaxlimit;
    var isConCheck=true;
    var val=removeSpacesFromHeadAndTail(obj.value);

    if (!isShowMsg) {
        if (isNaN(isShowMsg))
            isShowMsg=true;
        else {
            if (isShowMsg.length==0)
                isShowMsg=true;
            else isShowMsg=false;
        }
    }
    //only vtFldArr[0] is needed cause it holds the VT field name
    var vtFldArr=sliceString(fldName,"$");

    if ((minRange && minRange!="") || (maxRange && maxRange!=""))
        isConCheck=true;
    else if (vtFldArr) {
        if (formObj[vtFldArr[0]+"$VT"]!=null) {
            vtFldVal=formObj[vtFldArr[0]+"$VT"].value; //the value of the VT field
        } else if (formObj[vtFldArr[0]+"$bnd"]!=null) {
            vtFldVal=formObj[vtFldArr[0]+"$bnd"].value; //the value of the VT field
        }
    } else isConCheck=false;

    if (isConCheck) {
        if ((minRange && minRange!="") || (maxRange && maxRange!="")) {
            errMsg=validateStrSize(val,minRange,maxRange,fldHeader);
        } else {

            vtFldValArr=sliceString(vtFldVal,";");

            if (vtFldValArr) {
                for (var i=0; i<vtFldValArr.length; i++) {
                    minMaxStr=null;
                    minMaxlimit=null;
                    if (vtFldValArr[i].indexOf("Range")!=-1) {
                        //remove the '[', ']'
                        var tmpValArr=sliceString(vtFldValArr[i],"[");

                        if (tmpValArr && tmpValArr[1]) {
                            var tmp=tmpValArr[1];
                            tmpValArr=sliceString(tmp,"]");
                            if (tmpValArr) {
                                tmp=tmpValArr[0];
                                tmpValArr=sliceString(tmp,",");
                                if (tmpValArr && 2==tmpValArr.length) {
                                    minVal=parseInt(tmpValArr[0]);
                                    maxVal=parseInt(tmpValArr[1]);
                                    errMsg=validateStrSize(val,minVal,maxVal,fldHeader)
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    if (false==isShowMsg && errMsg!="")
        return "StrRange";//just indicate there was a range problem
    return errMsg;
}

function validateStrSize(val,minVal,maxVal,fldHeader)
{
    var minMaxStr;
    var minMaxlimit;
    var errMsg="";
    if ( ( minVal !=null) && ((val).length < minVal) ) {
        minMaxStr="minimum" ;
        minMaxlimit=minVal;
    }
    if ( ( maxVal !=null) && ((val).length > maxVal) ) {
        minMaxStr="maximum" ;
        minMaxlimit=maxVal;
    }
    if (minMaxlimit!=null) {
        if ((val!=0)&&(val=="" || val==" " || val==null)) val="blank";
        if (fldHeader)
            errMsg=val+" is out of range. The "+minMaxStr+" length for "+fldHeader+" is "+minMaxlimit+".\n";
        else errMsg=val+" is out of range. The "+minMaxStr+" length is "+minMaxlimit+".\n";
    }
    return errMsg;
}

/////////////////////////////////////////////////////////////////////////////////////
//Checking the value according to the Range property.
/////////////////////////////////////////////////////////////////////////////////////
function checkOctetSize(fldName,isShowMsg,fldHeader,minRange, maxRange,typeParam)
{
    var errMsg="";
    var minVal=null;
    var maxVal=null;
    var formObj=document.forms[0].elements;
    var obj=formObj[fldName];
    var minMaxStr;
    var minMaxlimit;
    var isConCheck=true;
    var tokensArr=[":","-",""];
    var token="";
    var valLen=0;

    if (!isShowMsg) {
        if (isNaN(isShowMsg))
            isShowMsg=true;
        else {
            if (isShowMsg.length==0)
                isShowMsg=true;
            else isShowMsg=false;
        }
    }
    var val=removeSpacesFromHeadAndTail(obj.value);
    //only vtFldArr[0] is needed cause it holds the VT field name
    var vtFldArr=sliceString(fldName,"$");

    if ((minRange && minRange!="") || (maxRange && maxRange!=""))
        isConCheck=true;
    else if (vtFldArr) {
        if (formObj[vtFldArr[0]+"$VT"]!=null) {
            vtFldVal=formObj[vtFldArr[0]+"$VT"].value; //the value of the VT field
        } else if (formObj[vtFldArr[0]+"$bnd"]!=null) {
            vtFldVal=formObj[vtFldArr[0]+"$bnd"].value; //the value of the VT field
        }
    } else isConCheck=false;

    if (isConCheck) {
        if ((minRange && minRange!="") || (maxRange && maxRange!="")) {
            errMsg=validateOctetSize(val,minRange,maxRange,fldHeader,typeParam);
        } else {
            vtFldValArr=sliceString(vtFldVal,";");
            if (vtFldValArr) {
                for (var i=0; i<vtFldValArr.length; i++) {
                    minMaxStr=null;
                    minMaxlimit=null;
                    if (vtFldValArr[i].indexOf("Range")!=-1) {
                        //remove the '[', ']'
                        var tmpValArr=sliceString(vtFldValArr[i],"[");

                        if (tmpValArr && tmpValArr[1]) {
                            var tmp=tmpValArr[1];
                            tmpValArr=sliceString(tmp,"]");
                            if (tmpValArr) {
                                tmp=tmpValArr[0];
                                tmpValArr=sliceString(tmp,",");
                                if (tmpValArr && 2==tmpValArr.length) {
                                    minVal=parseInt(tmpValArr[0]);
                                    maxVal=parseInt(tmpValArr[1]);
                                    errMsg=validateOctetSize(val,minVal,maxVal,fldHeader,typeParam)
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    if (false==isShowMsg && errMsg!="")
        return "OctetRange";//just indicate there was a range problem
    return errMsg;
}

function validateOctetSize(val,minVal,maxVal,fldHeader,typeParam)
{
    var minMaxStr;
    var minMaxlimit;
    var tokensArr=[":","-",""];
    var token="";
    var valLen=0;
    var errMsg="";
    for (var j=0; j<tokensArr.length; j++) {
        if ((val).indexOf(tokensArr[j])!=-1) {
            token=tokensArr[j];
            break;
        }
    }
    if (typeParam!="MAC" && isNaN(typeParam))
        typeParam="";
    if (!(typeParam=="MAC" && token==tokensArr[2])) {
        var octetArr=sliceString(val,token);
        if (token==tokensArr[2])
            valLen=(octetArr.length)/2;
        else valLen=octetArr.length;
        if ( ( minVal !=null) && (valLen < minVal) ) {
            minMaxStr="minimum" ;
            minMaxlimit=minVal;
        }
        if ( ( maxVal !=null) && (valLen > maxVal) ) {
            minMaxStr="maximum" ;
            minMaxlimit=maxVal;
        }
        if (minMaxlimit!=null) {
            if ((val!=0)&&(val=="" || val==" " || val==null)) val="blank";
            if (fldHeader)
                errMsg=val+" is out of range. The "+minMaxStr+" length for "+fldHeader+" is "+minMaxlimit+" octets.\n";
            else errMsg=val+" is out of range. The "+minMaxStr+" length is "+minMaxlimit+"  octets.\n";
        }
        return errMsg;
    }
}

function validateOctetValRange(fldName,valMinRange,valMaxRange,fldHeader)
{
    var formObj=document.forms[0].elements;
    var val=removeSpacesFromHeadAndTail(formObj[fldName].value);
    var minMaxStr;
    var minMaxlimit;
    var errMsg="";
    if ( valMinRange!=null) {
        if (hexToDec(val)<hexToDec(valMinRange)) {
            minMaxStr="minimum" ;
            minMaxlimit=valMinRange;
        }
    }
    if ( valMaxRange!=null ) {
        if (hexToDec(val)>hexToDec(valMaxRange)) {
            minMaxStr="maximum" ;
            minMaxlimit=valMaxRange;
        }
    }
    if (minMaxlimit!=null) {
        if ((val!=0)&&(val=="" || val==" " || val==null)) val="blank";
        if (fldHeader)
            errMsg=val+" is out of range. The "+minMaxStr+" value for "+fldHeader+" is "+minMaxlimit+".\n";
        else errMsg=val+" is out of range. The "+minMaxStr+" value is "+minMaxlimit+".\n";
    }
    return errMsg;
}


////////////////////////////////////////////////////////////////////////////////
//*added 15.6.05 <ElinorR>
//Checks if the val equal or contains null/ space/ or any number of space chars.
//returns true if it does contain these chars and false if it doesn't
////////////////////////////////////////////////////////////////////////////////
function CheckSpace(val)
{
    var spaces = false;
    if (val=="" || val==" " || val==null)spaces=true;
    else {
        for (i=0;i<val.length;i++) {
            if (val.charAt(i)=="" || val.charAt(i)==" ") {
                spaces = true;
                break;
            }
        }
    }
    return spaces;
}


/////////////////////////////////////////////////////////////////////////////
//For a givven MIb name the function returns the default MIB value.
//input: fieldName(the name left to the '$' sign must be identical to the MIB
//output: the default value.
/////////////////////////////////////////////////////////////////////////////
function getDefaultValue(fldName)
{
    var formele=document.forms[0].elements;
    var typeIndex=null;
    var defValIndex=null;
    var defVal=null;
    var type=null;
    var retVal="";
    var isConCheck=true;
    if (formele[fldName]) {
        //only vtFldArr[0] is needed cause it holds the VT field name
        var vtFldArr=sliceString(fldName,"$");
        if ( (vtFldArr) && (formele[vtFldArr[0]+"$VT"]!=null) ) {
            vtFldVal=formele[vtFldArr[0]+"$VT"].value; //the value of the VT field
        } else  isConCheck=false;

        if (isConCheck) {

            vtFldValArr=sliceString(vtFldVal,";");

            if (vtFldValArr) {
                for (i=0; i<vtFldValArr.length; i++) {
                    //type will always appear before defaultValue,
                    //that why we break only when finding defaultValue
                    if (vtFldValArr[i].indexOf("Type")!=-1)
                        typeIndex=i;
                    if (vtFldValArr[i].indexOf("Default value")!=-1) {
                        defValIndex=i;
                        break;
                    }

                }
                //a deafault value exists for the needed field
                if ( (defValIndex!=null) && (vtFldValArr[defValIndex].indexOf("Default value")!=-1) ) {
                    //remove the '='
                    var tmpValArr=sliceString(vtFldValArr[defValIndex],"=");

                    if (tmpValArr && 2==tmpValArr.length) {
                        defVal=tmpValArr[1];//the default value of the filed
                        if (defVal != null)
                            return defVal;
                    }
                }
                if ( (typeIndex!=null) && (vtFldValArr[typeIndex].indexOf("Type")!=-1) ) {
                    //remove the '='
                    var tmpValArr=sliceString(vtFldValArr[typeIndex],"=");

                    if (tmpValArr && 2==tmpValArr.length) {
                        type=tmpValArr[1];//the type of the filed
                        if (type != null) {
                            switch (type) {
                            case "0"://interger
                            case "6"://Counter
                            case "7"://Gauge
                            case "8"://TimeTicks
                            case "11"://Counter64
                            case "12"://UInt
                                retVal=0;
                                break;
                            case "1"://bit string
                            case "2"://string ---> OPEN ISSUE
                            case "3"://OID
                                retVal="";
                                break;
                            case "5"://IP Address
                                retVal="0.0.0.0";
                                break;
                            default:
                                retVal="";
                                break;
                            }
                            return retVal;
                        }
                    }
                }

            }
        }
    }
    return retVal; //in case there was a problem the function retruns an empty string
}

//Checkes if a given value is in the correct range of legal values.
function checkIntegerLegalValue(checkedValue, minRange, maxRange, isShowMsg, fldHeader, isMsgRes, isDec)
{
    var checkedValue=removeSpacesFromHeadAndTail(checkedValue);
    var minMaxStr,minMaxlimit;
    var isValuOk;
    if (isDec==true) {
        isValuOk=checknumber(checkedValue);
    } else {
        isValuOk=checkInteger(checkedValue);
    }

    if (isValuOk) {
        /*if ((parseInt(checkedValue) < minRange)||(parseInt(checkedValue) > maxRange))
                return false;
        else
                return true;
        */

        if ( ( minRange !=null) && (eval(checkedValue) < minRange) ) {
            minMaxStr="minimum" ;
            minMaxlimit=minRange;
        }
        if ( ( maxRange !=null) && (eval(checkedValue) > maxRange) ) {
            minMaxStr="maximum" ;
            minMaxlimit=maxRange;
        }
        if (minMaxlimit!=null) {
            if (true==isMsgRes && ""!=isMsgRes && null!=isMsgRes && (true==isShowMsg || isShowMsg=="" || isShowMsg==null)) {
                if ((checkedValue!=0) && (checkedValue=="" || checkedValue==" " || checkedValue==null)) checkedValue="blank";
                if (fldHeader)
                    errMsg=checkedValue+" is out of range. The "+minMaxStr+" value for "+fldHeader+" is "+minMaxlimit+".\n";
                else errMsg=checkedValue+" is out of range. The "+minMaxStr+" value is "+minMaxlimit+".\n";
                return errMsg;
            } else return false;
        } else return true;
    } else {
        return false;
    }
}

function returnIntRange(fldName,isDisplayForm)
{
    var minVal=null;
    var maxVal=null;
    var formObj=document.forms[0].elements;
    var rangeStr="";
    var rangeNum=0;
    var isConCheck=true;

    //only vtFldArr[0] is needed cause it holds the VT field name
    var vtFldArr=sliceString(fldName,"$");
    if (vtFldArr) {
        if (formObj[vtFldArr[0]+"$VT"]!=null) {
            vtFldVal=formObj[vtFldArr[0]+"$VT"].value; //the value of the VT field
        } else if (formObj[vtFldArr[0]+"$bnd"]!=null) {
            vtFldVal=formObj[vtFldArr[0]+"$bnd"].value; //the value of the VT field
        }
    } else  isConCheck=false;

    if (isConCheck) {
        vtFldValArr=sliceString(vtFldVal,";");

        if (vtFldValArr) {
            for (var i=0; i<vtFldValArr.length; i++) {
                if (vtFldValArr[i].indexOf("Range")!=-1) {
                    //remove the '[', ']'
                    var tmpValArr=sliceString(vtFldValArr[i],"[");

                    if (tmpValArr && tmpValArr[1]) {
                        var tmp=tmpValArr[1];
                        tmpValArr=sliceString(tmp,"]");
                        if (tmpValArr) {
                            tmp=tmpValArr[0];
                            tmpValArr=sliceString(tmp,",");
                            if (tmpValArr && 2==tmpValArr.length) {
                                minVal=parseInt(tmpValArr[0]);
                                maxVal=parseInt(tmpValArr[1]);
                                if ( minVal !=null || maxVal !=null) {
                                    rangeNum++;
                                    //rangeStr+="range"+rangeNum;
                                    if ( (minVal !=null ) ) {
                                        if (false==isDisplayForm && isDisplayForm!="" && isDisplayForm!=null)
                                            rangeStr+=minVal+"-";
                                        else rangeStr+="("+minVal+"-";
                                    }
                                    if ( ( maxVal !=null)  ) {
                                        if (false==isDisplayForm && isDisplayForm!="" && isDisplayForm!=null)
                                            rangeStr+=maxVal+",";
                                        else rangeStr+=maxVal+") ";
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return rangeStr;
}

function displayIntRange(fldName)
{
    var rangeStr="";
    var formele=document.forms[0].elements;
    var typeIndex=null;
    var type=null;
    var isConCheck=true;
    var minVal;
    var maxVal;
    rangeStr = returnIntRange(fldName,false);
    rangeArr=sliceString(rangeStr,",");
    if (rangeArr && rangeArr[0]) {
        rangeArr=sliceString(rangeArr[0],"-");
        if (rangeArr && rangeArr.length==2) {
            minVal=parseInt(rangeArr[0]);
            maxVal=parseInt(rangeArr[1]);
            //infinite values for signed Integer - don't show the range
            //if (minVal>=0 && (2147483647==maxVal || 4294967295==maxVal))
            //     rangeStr="(x > "+minVal+")";
            //else
            if (minVal==-2147483647 && maxVal==2147483647)
                rangeStr="";
        } else rangeStr="";
    } else rangeStr="";
    if (rangeStr!="") document.write(rangeStr);

}

function displayStringRange(fldName)
{
    var minVal=null;
    var maxVal=null;
    var formObj=document.forms[0].elements;
    var rangeStr="";
    var rangeNum=0;
    var isConCheck=true;

    //only vtFldArr[0] is needed cause it holds the VT field name
    var vtFldArr=sliceString(fldName,"$");
    if (vtFldArr) {
        if (formObj[vtFldArr[0]+"$VT"]!=null) {
            vtFldVal=formObj[vtFldArr[0]+"$VT"].value; //the value of the VT field
        } else if (formObj[vtFldArr[0]+"$bnd"]!=null) {
            vtFldVal=formObj[vtFldArr[0]+"$bnd"].value; //the value of the VT field
        }
    } else  isConCheck=false;

    if (isConCheck) {
        vtFldValArr=sliceString(vtFldVal,";");

        if (vtFldValArr) {
            for (var i=0; i<vtFldValArr.length; i++) {
                if (vtFldValArr[i].indexOf("Range")!=-1) {
                    //remove the '[', ']'
                    var tmpValArr=sliceString(vtFldValArr[i],"[");

                    if (tmpValArr && tmpValArr[1]) {
                        var tmp=tmpValArr[1];
                        tmpValArr=sliceString(tmp,"]");
                        if (tmpValArr) {
                            tmp=tmpValArr[0];
                            tmpValArr=sliceString(tmp,",");
                            if (tmpValArr && 2==tmpValArr.length) {
                                minVal=parseInt(tmpValArr[0]);
                                maxVal=parseInt(tmpValArr[1]);
                                if ( minVal !=null || maxVal !=null) {
                                    rangeNum++;
                                    //rangeStr+="range"+rangeNum;
                                    if ( (minVal !=null ) ) {
                                        rangeStr+="("+minVal+"-";
                                    }
                                    if ( ( maxVal !=null)  ) {

                                        rangeStr+=maxVal+" characters) ";
                                    }
                                }
                            }
                        }
                    }
                    break;
                }
            }
        }
    }
    if (rangeStr!="") document.write(rangeStr);

}

/*##########################################################################################
4. Bits handling
##########################################################################################*/

//////////////////////////////////////////////////////////////////////
//The function will turn the wanted bit on.
//input  theOctet the octet string (2 chars) which need to be changed
//       bitNumber: the bit number from 0-7:  "0123,4567"
//Output The modified octet string.
//EXAMPLE: turnBitOff("62",0) will return "e2".
///////////////////////////////////////////////////////////////////////
function turnBitOn(theOctet,bitNumber)
{
    var bitValue;
    var upperOctet=theOctet.toUpperCase();
    if ((bitNumber*1)<4) {
        bitValue=Math.pow(2,3-(bitNumber*1));
        bitValue+="0";
        bitValue=parseInt(Hex2Ascii(bitValue))
    } else {
        bitValue=Math.pow(2,7-(bitNumber*1));

    }
    var myResult=parseInt(Hex2Ascii(upperOctet))+parseInt(bitValue);
    return Str2Hex(myResult);
}
//////////////////////////////////////////////////////////////////////
//The function will turn the wanted bit off.
//input  theOctet the octet string (2 chars) which need to be changed
//       bitNumber: the bit number from 0-7:  "0123,4567"
//Output The modified octet string.
//EXAMPLE: turnBitOff("e2",0) will return "62".
///////////////////////////////////////////////////////////////////////
function turnBitOff(theOctet,bitNumber)
{
    var bitValue;
    var upperOctet=theOctet.toUpperCase();
    if ((bitNumber*1)<4) {
        bitValue=Math.pow(2,3-(bitNumber*1));
        bitValue+="0";
        bitValue=parseInt(Hex2Ascii(bitValue))
    } else {
        bitValue=Math.pow(2,7-(bitNumber*1));

    }
    var myResult=parseInt(Hex2Ascii(upperOctet))-parseInt(bitValue);
    return Str2Hex(length2(myResult));
}

/////////////////////////////////////////////////////////////////////////////
//if the string length is less than 4 I add 0 to the left (1 --> 0001)
/////////////////////////////////////////////////////////////////////////////
function length4(theString)
{
    while (theString.length<4)
        theString="0"+theString;
    return theString;
}
/////////////////////////////////////////////////////////////////////////////
//if the string length is less than 3 I add 0 to the left (1 --> 001)
/////////////////////////////////////////////////////////////////////////////
function length3(theString)
{
    while (theString.length<3)
        theString="0"+theString;
    return theString;
}
/////////////////////////////////////////////////////////////////////////////
//if the string length is less than 2 I add 0 to the left (1 --> 01)
/////////////////////////////////////////////////////////////////////////////
function length2(theString)
{
    while (theString.length<2)
        theString="0"+theString;
    return theString;
}

/*##########################################################################################
5. Selects Handling
##########################################################################################*/

//////////////////////////////////////////////////////////////////////////////////////
//Add a select object with option values from a fields in MIB format
//Input: formObj,selectName,optionField(the options will be all the values in the page
//                for this field +?<int>),whatToAdd(adding an optinon in addition to those defined
//                by the optionField - "" for none), selectedVal(the selected option)
//Output: none.  (the function is creating the defined select object).
//////////////////////////////////////////////////////////////////////////////////////
function addSelectionList(formObj,selectName,optionField,whatToAdd,selectedVal)
{
    var optionNo=1;
    formObj=document.forms[0];
    formObj.elements[selectName].remove(0);
    formObj.elements[selectName][0]=null;
    while (formObj.elements[optionField+"?"+optionNo]!=null) {
        if ((formObj.elements[optionField+"?"+optionNo].value!="")&&
            (formObj.elements[optionField+"?"+optionNo].value!=top.queryNA)) {
            text=formObj.elements[optionField+"?"+optionNo].value;
            newOption = new Option(text);
            formObj.elements[selectName].options[optionNo-1]=newOption;
            if (selectedVal != "") {
                if ( parseInt(newOption.text) == selectedVal ) {
                    newOption.selected = true ;
                }
            }
            optionNo++;
        }
    }
    if (whatToAdd!="") {
        newOption = new Option("Add a new "+whatToAdd);
        formObj.elements[selectName].options[optionNo-1]=newOption;
    }

}//end addVlanTagList

//////////////////////////////////////////////////////////////////////////////////////
//Add a select object with option values - all the integers btwn the defined boundries
//Input: formObj,selectName,BeginOption,EndOption,whatToAdd(adding an optinon outside
//           the defined boundries- "" for none), selectedVal(the selected option)
//Output: none.  (the function is creating the defined select object).
//////////////////////////////////////////////////////////////////////////////////////
function addRangeSelectionList(formObj,selectName,BeginOption,EndOption,whatToAdd,selectedVal)
{
    formObj=document.forms[0];
    var optionNo=0;
    formObj.elements[selectName].remove(0);
    formObj.elements[selectName][0]=null;
    while ((BeginOption+optionNo)<(EndOption+1)) {
        text=BeginOption+optionNo;
        newOption = new Option(text);
        formObj.elements[selectName].options[optionNo]=newOption;
        if (opener) {
            firstIndex = parseInt(opener.top.trunkFirstIndex);
        } else {
            firstIndex = parseInt(top.trunkFirstIndex);
        }

        if (selectName=="trunk") {
            formObj.elements[selectName].options[optionNo].value=firstIndex+parseInt(text)-1;
        } else
            formObj.elements[selectName].options[optionNo].value=(optionNo+1);

        if (selectedVal != "") {
            if ( newOption.text == selectedVal ) {
                newOption.selected = true ;
            }
        }
        optionNo++;
    }
    if (whatToAdd!="") {
        newOption = new Option("Add a new "+whatToAdd);
        formObj.elements[selectName].options[optionNo-1]=newOption;
    }

}

//////////////////////////////////////////////////////////////////////////////////////
//Add a select object with option values from an array
//Input: formObj,selectName,optionsArr(the options will be all the values in the array)
//                whatToAdd(adding an optinon in addition to those defined in the array - "" for none),
//                selectedVal(the selected option).
//Output: none.  (the function is creating the defined select object).
//////////////////////////////////////////////////////////////////////////////////////
function addSelectionListFromArray(formObj,selectName,optionsArr,whatToAdd,selectedValFld)
{
    var selectedVal="";
    formObj=document.forms[0];

    if (selectedValFld!="")
        selectedVal=formObj.elements[selectedValFld].value;
    formObj.elements[selectName].remove(0);
    formObj.elements[selectName][0]=null;
    for (var i=0; i<optionsArr.length; i++) {
        newOption = new Option(optionsArr[i]);
        formObj.elements[selectName].options[formObj.elements[selectName].options.length]=newOption;
        if (selectedVal != "") {
            if ( newOption.text == selectedVal ) {
                newOption.selected = true ;
            }
        }
    }
    if (whatToAdd!="") {
        newOption = new Option("Add a new "+whatToAdd);
        formObj.elements[selectName].options[(formObj.elements[selectName].options.length)]=newOption;
    }
    if (selectedVal == "") {
        formObj.elements[selectName].selectedIndex=-1;
    }
}

///////////////////////////////////////////////////////////////////
//The function is impelemnted on a select object.
//The function check if there are options with identical text, and
//will remove all those options.
//input: the select object name to check.
///////////////////////////////////////////////////////////////////
function filterSelectObject(fieldName)
{
    selObject=document.forms[0].elements[fieldName];
    for (i=selObject.options.length-1;i>=0;i--) {
        exist=false;
        for (j=i-1;j>=0;j--)
            if (selObject.options[i].text==selObject.options[j].text) {
                exist=true;
                break;
            }
        if (exist)
            selObject.options[i]=null;
    }
}
/////////////////////////////////////////////////////////////////////////////
//selects the right option by comparing the options' text to the needed text
//input - the select object name, the option that will appear as selected
/////////////////////////////////////////////////////////////////////////////
function selectOptionByText(selectObj,selectedText)
{
    for (var i=0; i<selectObj.options.length; i++)
        if (selectObj.options[i].text==selectedText) {
            selectObj.options[i].selected=true;
            break;
        }
}

////////////////////////////////////////////////////////////////////////////////
//This function will change the text of the selection list,the text will start//
//from 1 to top.NumberOfTrunks instead of the actual trunk indexes.                          //
////////////////////////////////////////////////////////////////////////////////
function changeTrunkListText(fieldName){
    var trunkSelObject=document.forms[0].elements[fieldName];
    var realIndex, text;

    var firstTrunkVal = parseInt(trunkSelObject.options[0].text);
    for (i=0;trunkSelObject.options[i]!=null;i++) {
        realIndex = trunkSelObject.options[i].text;
        text = parseInt(trunkSelObject.options[i].text)-firstTrunkVal+1
        var newOption = new Option(text,realIndex);
        trunkSelObject.options[i]=newOption;
    }
    trunkSelObject.selectedIndex=0;
}

////////////////////////////////////////////////////////////////////////////////
//This function will change the value of the VLAN selection list,             //
////////////////////////////////////////////////////////////////////////////////
function changeVlanListValue(fieldName){
    var vlanSelObject=document.forms[0].elements[fieldName];
    var value, text;
    for (i=0;vlanSelObject.options[i]!=null;i++) {
        text = vlanSelObject.options[i].text;
        value = parseInt(vlanSelObject.options[i].text)+100000-1;
        vlanSelObject.options[i].value=value;
    }
    vlanSelObject.selectedIndex=0;
}




/*##########################################################################################
6. Query called from Select List
##########################################################################################*/

/*-----------------------------------------------------------------------------------------
function:selectQuery1Index
input:none
output:none
The function can be used by select objects, if the select object field is the only key
of the VT - If it is the function will call a query accprding to the chosen value.
The function should be written as "onChange" event.
------------------------------------------------------------------------------------------*/

function selectQuery1Index(queryVTTbl)
{
    if (window.event && window.event.srcElement && window.event.srcElement.name) {
        callingEvent=window.event;
        fieldName=callingEvent.srcElement.name;
    } else if (!window.event) {
        callingEvent=arguments.callee.caller.arguments[0];
        fieldName=callingEvent.target.name ;
    }
    var formObj=document.forms[0].elements;
    var objSelect=null;
    var queryString="";
    var queryTblStr="";
    var i=22;//the length of "http://1.1.0.2/config/" is 21 (not neccesary to check i= 0..22)
    var j=0;

    objSelect=formObj[fieldName];
    while ((j<fieldName.length)&&(fieldName.charAt(j)!="$"))
        j++;
    if (queryVTTbl)
        queryTblStr="["+queryVTTbl+"]";
    queryString="?"+queryTblStr+"Query:"+fieldName.substr(0,j)+'='+objSelect.options[objSelect.selectedIndex].text;
    //document.location.search=queryString;
    indexOfEndPageName=((document.location.href).indexOf(".htm"))+3;
    queryString=(document.location.href).slice(0,(indexOfEndPageName+1))+queryString;
    document.location.href=queryString;

}

/*------------------------------------------------------------------------------------
indexSign:
input: a select object, which was changed in order to call the query to the page.
output:
The function will change the select object selectedIndex to the displayed query
relevant value.
--------------------------------------------------------------------------------------*/
function indexSign(selectObject){
    var i=0;
    formele=document.forms[0].elements;
    selectName=formele[selectObject];
    queryObject=getBaseName(selectObject)+"$query"
    while (selectName.options[i]!=null) {
        if ((selectName.options[i].text == formele[queryObject].value)||
            (notIE &&  selectName.options[i].text=="\n" && formele[queryObject].value=="")) {
            selectName.selectedIndex=i;
            break;
        }
        i++;
    }
    if (formele[queryObject].value==docObj.queryNA)
        selectName.selectedIndex=-1;//the query is not defined so the select would appear empty
}

/*-----------------------------------------------------------------------------------------
function:selectPort1Index // This function is supporting port-name select lists //
input:none                ////////////////////////////////////////////////////////
output:none
The function can be used by select objects, if the select object field is the only key
of the VT - If it is the function will call a query accprding to the chosen value.
The function should be written as "onChange" event.
------------------------------------------------------------------------------------------*/

function selectPort1Index(queryVTTbl)
{
    if (window.event && window.event.srcElement && window.event.srcElement.name) {
        callingEvent=window.event;
        fieldName=callingEvent.srcElement.name;
    } else if (!window.event) {
        callingEvent=arguments.callee.caller.arguments[0];
        fieldName=callingEvent.target.name ;
    }
    var formObj=document.forms[0].elements;
    var objSelect=null;
    var queryString="";
    var queryTblStr="";
    var i=28;//the length of "http://192.168.0.227/config/" is 27 (not neccesary to check i= 0..27)
    var j=0;
    objSelect=formObj[fieldName];
    while ((j<fieldName.length)&&(fieldName.charAt(j)!="$"))
        j++;
    if (queryVTTbl)
        queryTblStr="["+queryVTTbl+"]";
    queryString="?"+queryTblStr+"Query:"+fieldName.substr(0,j)+'='+objSelect.options[objSelect.selectedIndex].value;
    //document.location.search=queryString;
    indexOfEndPageName=((document.location.href).indexOf(".htm"))+3;
    queryString=(document.location.href).slice(0,(indexOfEndPageName+1))+queryString;
    document.location.href=queryString;

}
/*------------------------------------------------------------------------------------
portSign:      // This function is supporting port-name select lists //
               ////////////////////////////////////////////////////////
input: a select object, which was changed in order to call the query to the page.
output:
The function will change the select object selectedIndex to the displayed query
relevant value.
--------------------------------------------------------------------------------------*/
function portSign(selectObject){
    var i=0;
    formele=document.forms[0].elements;
    selectName=formele[selectObject];
    queryObject=getBaseName(selectObject)+"$query"
    while (selectName.options[i]!=null) {
        if (selectName.options[i].value == parseInt(formele[queryObject].value)) {
            selectName.selectedIndex=i;
            break;
        }
        i++;
    }
    if (formele[queryObject].value==docObj.queryNA)
        selectName.selectedIndex=-1;//the query is not defined so the select would appear empty
}

/*##########################################################################################
7. Radio Handling
##########################################################################################*/

/*-----------------------------------------------------------------------------------------
function:clickRadio
input:none
output:none
When translating the interface to ports trunks and Vlans this function will disable the two
unchosen select objects and enable the chosen one.
One should only make sure the objects names should be  "port","trunk" & "dot1qVlanIndex$select".
------------------------------------------------------------------------------------------*/
function clickRadio()
{

    var fieldName=null;
    var formObj=document.forms[0].elements;
    var objRadio;
    var i=0;
    var callingEvent;
    var fieldName;
    var callingEventElement;

    if (window.event) {
        callingEvent=window.event;
        fieldName=callingEvent.srcElement.name;
        callingEventElement=callingEvent.srcElement;
    } else if (!window.event) {
        callingEvent=arguments.callee.caller.arguments[0];
        fieldName=callingEvent.target.name ;
        callingEventElement=callingEvent.target;
    }

    if (callingEventElement && callingEventElement.name) {

        objRadio=formObj[fieldName];
        if (callingEventElement.value==1) {
            formObj["port"].disabled=false
            //formObj["port"].selectedIndex=0;
        } else {
            formObj["port"].disabled=true;
            //formObj["port"].selectedIndex=-1;
            formObj["port"].selectedIndex=0;
        }
        if (callingEventElement.value==2) {
            formObj["trunk"].disabled=false;
            //formObj["trunk"].selectedIndex=0;
        } else {
            formObj["trunk"].disabled=true;
            //formObj["trunk"].selectedIndex=-1;
            formObj["trunk"].selectedIndex=0;
        }
        if (objRadio.length==3) {
            if (callingEventElement.value==3) {
                formObj["dot1qVlanIndex$select"].disabled=false;
                //formObj["dot1qVlanIndex$select"].selectedIndex=0;
            } else {
                formObj["dot1qVlanIndex$select"].disabled=true;
                //formObj["dot1qVlanIndex$select"].selectedIndex=-1;
                formObj["dot1qVlanIndex$select"].selectedIndex=0;
            }
        }
    }
}


/*##########################################################################################
8. Disabling table entries with no change
##########################################################################################*/
////////////////////////////////////////////////////////////////////////////////
//Enabling all the fields in the page.
//The function is called from the Error collector when an error was detected in
//the page. It will enable all the page fields.
////////////////////////////////////////////////////////////////////////////////
function enableAllFields()
{
    formIdx=0;
    while (document.forms[formIdx]) {
        fldIdx=0;
        while (document.forms[formIdx].elements[fldIdx]) {
            document.forms[formIdx].elements[fldIdx].disabled=false;
            fldIdx++;
        }
        formIdx++;
    }
}

///////////////////////////////////////////////////////////////////////////////////////////
//The Main Function - this function activates all the functions below inorder
//                    to disable all the MIB entries that were not changed.
//entryStartStr - the fieldName of the beginning of the entry, like- "beginEntry"
//FieldsToCheck - array that contains the names of the feilds in the entry
///////////////////////////////////////////////////////////////////////////////////////////
function DisableUnchanged(formObj,entryStartStr,FieldsToCheck)
{
    var i = 1;
    formObj=document.forms[0];
    var wasChangedCounter=0;
    fieldsEntrySize=0;
    rawValue=2500;//Post request + VT + restoreUrl + error collector
    while (formObj.elements[entryStartStr+"?"+i]!=null) {
        if (EntryDidnotChanged(i,formObj,FieldsToCheck)) {
            //alert("disableUnchanged:"+ entryStartStr+"?"+i);
            DisableEntry(i,formObj,FieldsToCheck);
        } else {
            countEntrySize(i,formObj,FieldsToCheck)
            wasChangedCounter++;
        }
        i++;
    }
    rawValue+=(calculateRawValue(FieldsToCheck)*wasChangedCounter)+fieldsEntrySize;
    if ((rawValue)>BufferSize) {
        msg="You have changed too many objects. The browser cannot send all data\n";
        msg+="simultaneously. Please send your request at "+(Math.round((rawValue)/BufferSize)+1);
        msg+=" different requests.";
        alert (msg);
        return 0;
    }
    return 1;
}
///////////////////////////////////////////////////////////////////////////
//Calculating the sum of the length of the field names in a table raw
///////////////////////////////////////////////////////////////////////////
function calculateRawValue(FieldsToCheck)
{
    var fieldsNameSize=0;
    for (i=0;i<FieldsToCheck.length;i++)
        fieldsNameSize+=FieldsToCheck[i].length+18;
    return(fieldsNameSize);
}
////////////////////////////////////////////////////////////////////////////
//Check the given entry for changes
//input - the entry index, formObj, The fields array
//output - boolean
////////////////////////////////////////////////////////////////////////////
function EntryDidnotChanged(index,formObj,FieldsToCheck)
{
    var i;
    var changed=true;
    var result=true;
    formObj=document.forms[0];

    for (i=0;i<FieldsToCheck.length;i++) {
        changed=isChanged(formObj.elements[FieldsToCheck[i]+"?"+index]);
        //alert("EntryDidnotChanged: "+FieldsToCheck[i]+"?"+index+" : "+changed+"\n"+formObj.elements[FieldsToCheck[i]+"?"+index].value );
        if (changed)
            result=false;
    }
    return result;
}
////////////////////////////////////////////////////////////////////////////
//Disables the givven entry
//input - the entry index, formObj, The fields array
//output - none.
////////////////////////////////////////////////////////////////////////////
function DisableEntry(index,formObj,FieldsToCheck)
{
    var i;
    for (i=0;i<FieldsToCheck.length;i++) {
        formObj.elements[FieldsToCheck[i]+"?"+index].disabled=true;
        //alert("DisableEntry: "+FieldsToCheck[i]+"?"+index+ " : disabled");
    }
}
////////////////////////////////////////////////////////////////////////////
//Calculaes the givven entry total size in bytes
//input - the entry index, formObj, The fields array
//output - the size.
////////////////////////////////////////////////////////////////////////////
function countEntrySize(index,formObj,FieldsToCheck)
{
    var i;
    for (i=0;i<FieldsToCheck.length;i++) {
        fieldsEntrySize+=formObj.elements[FieldsToCheck[i]+"?"+index].value.length;
        //alert("DisableEntry: "+FieldsToCheck[i]+"?"+index+ " : disabled");
    }
}
//-------------------------------------------------------------------
// isChanged(input_object)
//   Returns true if input object's state has changed since it was
//   created.
//-------------------------------------------------------------------
function isChanged(obj) {
    if ((typeof obj.type != "string") && (obj.length > 0) && (obj[0] != null) && (obj[0].type=="radio")) {
        for (var i=0; i<obj.length; i++) {
            if (obj[i].checked != obj[i].defaultChecked) {
                return true;
            }
        }
        return false;
    }
    if ((obj.type=="text") || (obj.type=="textarea")) {
        return(obj.value != obj.defaultValue);
    }
    if (obj.type=="hidden") {
        var isIE = (navigator.appName.indexOf("Microsoft") != -1);
        if (isIE) {   //explorrer and not netscape
            if (document.forms[0].elements[getBaseName(obj.name)+"$default"+getSuffix(obj.name)])
                document.forms[0].elements[getBaseName(obj.name)+"$default"+getSuffix(obj.name)].disabled=true;
            return(obj.value != obj.defaultValue);
        } else //NetScape:
            if (document.forms[0].elements[getBaseName(obj.name)+"$default"+getSuffix(obj.name)]) {
            document.forms[0].elements[getBaseName(obj.name)+"$default"+getSuffix(obj.name)].disabled=true;
            return(obj.value != document.forms[0].elements[getBaseName(obj.name)+"$default"+getSuffix(obj.name)].value);
        } else
            return true;

    }
    if (obj.type=="checkbox") {
        return(obj.checked != obj.defaultChecked);
    }
    if (obj.type=="select-one") {
        if (obj.options.length > 0) {
            var x=0;
            for (var i=0; i<obj.options.length; i++) {
                if (obj.options[i].defaultSelected) {
                    x++;
                }
            }
            if (x==0 && obj.selectedIndex==0) {
                return false;
            }
            for (var i=0; i<obj.options.length; i++) {
                if (obj.options[i].selected != obj.options[i].defaultSelected) {
                    return true;
                }
            }
        }
        return false;
    }
    if (obj.type=="select-multiple") {
        if (obj.options.length > 0) {
            for (var i=0; i<obj.options.length; i++) {
                if (obj.options[i].selected != obj.options[i].defaultSelected) {
                    return true;
                }
            }
        }
        return false;
    }
    // return false for all other input types (button, image, etc)
    return false;
}

//////////////////////////////////////////////////////////////////////////////////////
//This function is in use with the openSolo system,It helps on the test wether a port
//belongs to a trunk.
///////////////////////////////////////////////////////////////////////////////////////
function DisableTrunkIncludingThePort(formObj,fieldsToDisable,portsArray,numberOfPortsInDevice)
{
    var port = 1;
    for (port=1;port<=numberOfPortsInDevice;port++) {
        var TrunkIndex= portsArray[port-1];
        //alert("port "+port+" trunk "+TrunkIndex);
        if (TrunkIndex>0) {
            //alert("disable belong to trunk:"+port);
            DisableEntry(port,formObj,fieldsToDisable);
        }
    }
}
/////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////
function disableUnchangeFields(formele,FieldsToCheck,suffix)
{
    formele=document.forms[0].elements;
    formObj=document.forms[0];
    var wasChangedCounter=0;
    fieldsEntrySize=0;
    rawValue=2000;//Post request + VT + restoreUrl + error collector
    var isChange;
    switch (suffix) {
    case "query":
        {
            isChange=false;
            for (i=0; i<FieldsToCheck[0].length; i++) {
                if (!isChanged(formele[FieldsToCheck[0][i]])) {
                    formele[FieldsToCheck[0][i]].disabled=true;
                } else isChange=true;
            }
            if (!isChange) {
                for (var j=0; j<FieldsToCheck[1].length; j++)
                    formele[FieldsToCheck[1][j]].disabled=true;
            }
            break;
        }
    case "repeat":
        {





            var i = 1;
            while (formele[FieldsToCheck[0][0]+"?"+i]!=null) {
                isChange=false;
                for (j=0; j<FieldsToCheck[0].length; j++) {
                    if (!isChanged(formele[FieldsToCheck[0][j]+"?"+i])) {
                        formele[FieldsToCheck[0][j]+"?"+i].disabled=true;
                    } else {
                        fieldsEntrySize+=formele[FieldsToCheck[0][j]+"?"+i].value.length;
                        isChange=true;
                    }
                }

                if (!isChange) {
                    for (var j=0; j<FieldsToCheck[1].length; j++)
                        formele[FieldsToCheck[1][j]+"?"+i].disabled=true;
                } else {
                    countEntrySize(i,formObj,FieldsToCheck[1])
                    wasChangedCounter++;
                }
                i++;
            }
            rawValue+=((calculateRawValue(FieldsToCheck[1])+calculateRawValue(FieldsToCheck[0]))*wasChangedCounter)+fieldsEntrySize;
            if ((rawValue)>BufferSize) {
                msg="You have changed too many objects. The browser cannot send all data\n";
                msg+="simultaneously. Please send your request at "+(Math.round((rawValue)/BufferSize)+1);
                msg+=" different requests.";
                alert (msg);
                return 0;
            }
            return 1;

            break;

        }
    default: break;
    }

}
/*##########################################################################################
9. Events handling
##########################################################################################*/
///////////////////////////////////////////////////////////////////////
//handles ENTER key pressing and prevents the page from being submited
///////////////////////////////////////////////////////////////////////
function keyPressHandler(e)
{
    // Figure out whether this is Navigator or IE. Assume version 4.
    var isNav = (navigator.appName.indexOf("Netscape") != -1);
    var isIE = (navigator.appName.indexOf("Microsoft") != -1);

    if (isIE) {
        e=window.event;//grab the event
        if (e && e.keyCode==13) { //if the ENTER key pressed
            //alert("do nothing");
            //cancel processing the keystroke - meaning prevent the submit
            e.returnValue=false;
            // We've reported this event, and don't want our container to
            // report it too, so don't let it bubble up any further.
            e.cancelBubble=true;
        }
    }
    if (e.stopPropagation) e.stopPropagation();
    if (isNav) {
        if (e && e.which == 13) {//if the ENTER key pressed
            return false;//cancel processing the keystroke - meaning prevent the submit
        }
    }
    return true;
}

function preventSubmitHandler(e)
{
    if (keyPressed==13) {
        keyPressed="";
        return false;
    }
}

function getKeyPressed(e)
{
    // Figure out whether this is Navigator or IE. Assume version 4.
    var isNav = (navigator.appName.indexOf("Netscape") != -1);
    var isIE = (navigator.appName.indexOf("Microsoft") != -1);

    if (isIE) {
        var e=window.event;//grab the event
        if (e && e.keyCode==13) { //if the ENTER key pressed
            keyPressed=13;
        }
    } else if (isNav) {
        if (e && e.which == 13) {//if the ENTER key pressed
            keyPressed=13;
        }
    }
    if (keyPressed==13) {
        if (document.captureEvents) {
            document.captureEvents(Event.SUBMIT);
        }
        window.document.forms[0].onsubmit=preventSubmitHandler;
    }
}
/*##########################################################################################
10. Colors, Styles, Visibility & Tool Tips
##########################################################################################*/
///////////////////////////////////////////////////////////////////////////////////
//the function is returning the tandem color according to the top.FirstTd variable
///////////////////////////////////////////////////////////////////////////////////
function colorClass()
{
    if (docObj.FirstTd==0) {
        return "data-area-canvas-odd";
    } else {
        return "data-area-canvas";
    }
}
//////////////////////////////////////////////////////////////////////////////////////////
//the function is changing the top.FirstTd variable, which is used in the function above
//////////////////////////////////////////////////////////////////////////////////////////
function ChangeRowColor()
{

    if (docObj.FirstTd==0)//odd row num
        docObj.FirstTd=1;
    else docObj.FirstTd=0;

}

/*---------------------------------------------------------------------------------
showtip: Responsible for displaying a tooltip while 'OnMouseOver' event is occuring on an "add"
         or "show all" button
                 the use of it is already fully integrated in the project.
----------------------------------------------------------------------------------*/
function showtip(current,e,text){
    if (document.all||document.getElementById) {
        thetitle=text.split('<br>')
        if (thetitle.length>1) {
            thetitles=''
            for (i=0;i<thetitle.length;i++)
                thetitles+=thetitle[i]
            current.title=thetitles
        } else
            current.title=text
    } else if (document.layers) {
        document.tooltip.document.write('<layer bgColor="white" style="border:1px solid black;font-size:12px;">'+text+'</layer>')
        document.tooltip.document.close()
        document.tooltip.left=e.pageX+5
        document.tooltip.top=e.pageY+5
        document.tooltip.visibility="show"
    }
}

/*---------------------------------------------------------------------------------
hidetip: Responsible for vanishing the tooltip while 'OnMouseOut' event is occuring on an "add"
         or "show all" button
                 the use of it is already fully integrated in the project.
----------------------------------------------------------------------------------*/
function hidetip(){
    if (document.layers)
        document.tooltip.visibility="hidden"
}

/*---------------------------------------------------------------------------------
displaySeparator: displays the separator.
----------------------------------------------------------------------------------*/
function displaySeparator(colSpanNum)
{
    document.write("<tr>");
    document.write("<td style='height: 1px; width: 10px'></td>");
    document.write("<td colspan='"+colSpanNum+"' style='height: 1px' class='data-area-separator'><img style='width: 1px; height: 1px' src='../Images2/EMPTY.GIF'></td>");
    document.write("<td style='height: 1px' ></td>");
    document.write("<td style='height: 1px; width: 15px'></td>");
    document.write("</tr>");
    document.writeln('<tr><td colspan="', colSpanNum, '">&nbsp;</td></tr>')
}

/*##########################################################################################
11. Computations
##########################################################################################*/
/*-----------------------------------------------------------------------------------------
function:computeBase10Log
input:x - the number to compute its base 10 logarithm
output:none
The function computes base 10 logarithm
------------------------------------------------------------------------------------------*/
function computeBase10Log(x)
{
    return(Math.LOG10E*Math.log(x));
}

/*##########################################################################################
12. Other Functions
##########################################################################################*/
////////////////////////////////////////////////////////////////////////////////////////
//seperates the string into array according to the givven token
//input: the string, the seperator token.
//output: array of the substring parts between the tokens
////////////////////////////////////////////////////////////////////////////////////////
function sliceString(stringValue,token){
    var arr=new Array();
    arr=stringValue.split(token);
    return arr;
}
/* -------------------------------------------------------------------------------------------
 This function will find the first unocupied index.
 The selectFieldName should be a select containing predefined indexies, meaning occupied indexies.
 The function will work only with pages that contain only one form
---------------------------------------------------------------------------------------------- */
function findIndex(selectFieldName){
    var formObj=document.forms[0];
    var i=0;
    var IndexNotFound=true;
    selectName=formObj.elements[selectFieldName];
    while ((selectName.options[i]!=null) && (IndexNotFound)) {
        if (newIndex==(selectName.options[i].text)) {
            newIndex++;
            i++
        } else
            IndexNotFound=false;
    }
    return newIndex;
}
/*---------------------------------------------------------------------------------
getBaseName:
input: a field name with a suffix after the '$' attribute.
output: the same field name without the suffix.
----------------------------------------------------------------------------------*/
function getBaseName(selectObject)
{
    j=0;
    var queryObject;
    while ((j<selectObject.length)&&(selectObject.charAt(j)!="$"))
        j++;
    queryObject=selectObject.substr(0,j);
    return queryObject;
}
//////////////////////////////////////////////////////////////////
//input: A field name
//output: The field suffix from the "?" sign till the end
//////////////////////////////////////////////////////////////////
function getSuffix(objectName)
{
    j=0;
    while ((j<objectName.length)&&(objectName.charAt(j)!="?"))
        j++;
    if (j==objectName.length)
        return "";
    else
        return objectName.substr(j);

}
/*---------------------------------------------------------------------------------
removeSpacesFromHeadAndTail:
input: val - the value to edit.
output: the value without spaces as preffix and suffix
----------------------------------------------------------------------------------*/
function removeSpacesFromHeadAndTail(val)
{
    val = val + ""; //make the value a string

    // Remove the whitespaces from the begining of the string.
    while (val.length > 0) {
        if (val.charAt(0) == ' ' || val.charAt(0) == '\t')
            val = val.substr(1); // remove the first character
        else
            break;
    }

    // Remove the whitespaces from the end of the string.
    while (val.length > 0) {
        if (val.charAt(val.length - 1) == ' ' || val.charAt(val.length - 1) == '\t')
            val = val.substr(0, val.length - 1);  // remove the last character
        else
            break;
    }

    return val;
}

function isSpace(str)
{
    for (var i=0; i<str.length; i++) {
        if (str.charAt(i)!=' ' && str.charAt(i)!='' && str.charAt(i)!='\t' && str.charAt(i)!='\n')
            return false;
    }
    return true;
}


/*---------------------------------------------------------------------------------
removeZerosFromHead:
input: val - the value to edit.
output: the value without zeros as preffix
----------------------------------------------------------------------------------*/
function removeZerosFromHead(val)
{
    val = val + ""; //make the value a string

    // Remove the zeros from the begining of the string.
    while (val.length > 0) {
        if (val.charAt(0) == '0')
            val = val.substr(1); // remove the first character
        else
            break;
    }
    return val;
}

function isSpace(str)
{
    for (var i=0; i<str.length; i++) {
        if (str.charAt(i)!=' ' && str.charAt(i)!='' && str.charAt(i)!='\t' && str.charAt(i)!='\n')
            return false;
    }
    return true;
}

//////////////////////////////////////////////////////////////////////////////
//This function removes from the EWS coockie the current file URL.          //
//It should be called once the user exits from the page.                    //
//////////////////////////////////////////////////////////////////////////////
function editCoockie()
{
    var coockieString=document.cookie;
    URLtoDelete=document.location.pathname;
    var newCoockie="C0=";
    var coockieArray=new Array;
    coockieArray=sliceString(coockieString,PgToken);
    for (i=1;(i<coockieArray.length);i++)
        if ((coockieArray[i]).indexOf(URLtoDelete)==-1)
            newCoockie+=PgToken+coockieArray[i];
    document.coockie=newCoockie;
}
//////////////////////////////////////////////////////////////////////////////
//This function is using the "urlParamaters" field in order to keep the                //
//page's query/filter after refresh.                                                                                //
//It can be called as well from pages where "urlParameters" is not defined.        //
//////////////////////////////////////////////////////////////////////////////
function refresh()
{
    var filter="";
    if (document.forms[0].restoreUrl)
        filter+=adjustStringToRefresh(document.forms[0].restoreUrl.value);
    document.location.href=(document.location.pathname+"?"+filter);
}

////////////////////////////////////////////////////////////////////////////
//This function is getting a string and it will return the same string
//but, instead of " it will return \" and instead of ' it will return \'
////////////////////////////////////////////////////////////////////////////
function adjustStringToFilter(theString)
{
    var result="";
    for (i=0;(i<theString.length);i++) {
        if ((theString.charAt(i)!='^')&&(theString.charAt(i)!='[')&&(theString.charAt(i)!='"')&&(theString.charAt(i)!='\'')&&(theString.charAt(i)!='\\')) {
            if (theString.charAt(i)=='#')
                result+="%23";
            else
                if (theString.charAt(i)=='%')
                result+="%25";
            else
                if (theString.charAt(i)=='?')
                result+="%3F";
            else
                if (theString.charAt(i)==';')
                result+="%3B";
            else
                if (theString.charAt(i)=='+')
                result+="%2B";
            else
                result+=theString.charAt(i);
        } else
            result+='\\'+theString.charAt(i);
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////
//This function is getting a string and it will return the same string
//but, instead of " it will return \" and instead of ' it will return \'
////////////////////////////////////////////////////////////////////////////
function adjustStringToQuery(theString)
{
    var result="";
    for (i=0;(i<theString.length);i++) {
        if ((theString.charAt(i)!='^')&&(theString.charAt(i)!='[')&&(theString.charAt(i)!='"')&&(theString.charAt(i)!='\'')&&(theString.charAt(i)!='\\')&&(theString.charAt(i)!='@')) {
            if (theString.charAt(i)=='#')
                result+="%23";
            else
                if (theString.charAt(i)=='%')
                result+="%25";
            else
                if (theString.charAt(i)=='?')
                result+="%3F";
            else
                if (theString.charAt(i)==';')
                result+="%3B";
            else
                if (theString.charAt(i)=='+')
                result+="%2B";
            else
                result+=theString.charAt(i);
        } else
            result+='\\'+theString.charAt(i);
    }
    return result;
}

////////////////////////////////////////////////////////////////////////////
//This function is getting a string and it will return the same string
//but, instead of #,% & ? it will return %+the char hexa code
////////////////////////////////////////////////////////////////////////////
function adjustStringToRefresh(theString)
{
    var result="";
    for (i=0;(i<theString.length);i++) {
        if (theString.charAt(i)=='#')
            result+="%23";
        else if (theString.charAt(i)=='%')
            result+="%25";
        else if (theString.charAt(i)=='?')
            result+="%3F";
        else if (theString.charAt(i)==';')
            result+="%3B";
        else
            result+=theString.charAt(i);
    }
    return result;
}

//////////////////////////////////////////////////////////////////
// Indicates whether the pHexaNumber is signed (the MSB is 1).
// pHexaNumber is an hexa-decimal number.
//////////////////////////////////////////////////////////////////
function isHexaSigned(pHexaNumber)
{
    // Convert the most left digit to decimal.
    var msd = pHexaNumber.substr(0, 1);
    var num_dec = parseInt(msd, 16);

    // Convert the decimal number to binary.
    var num_bin = num_dec.toString(2);

    // If the binary number is less than 4 digits, then the msb is 0, else it is 1 (signed).
    if (num_bin.length != 4)
        return false;
    else
        return true;
}

/*##########################################################################################
13. NonPresent Entities and Related Trunks
##########################################################################################*/

/*---------------------------------------------------------------------------------
getPortNumberFromName:
input: portName - the port's real name.
output: the port number.
----------------------------------------------------------------------------------*/
function getPortNumberFromName(portName)
{
    var portNumber=0;
    var nameFound=false;
    for (var i=0; i<docObj.NumberOfPorts; i++) {
        if (portName==docObj.portsNamesArr[i]) {
            portNumber=i+1;
            nameFound=true;
            break;
        }
    }
    if (!nameFound) {
        var containLag = portName.indexOf("LAG");
        if (containLag != -1) {
            tmpValArr=sliceString(portName,"");
        } else {
            tmpValArr=sliceString(portName," ");
        }
        if (tmpValArr) {
            if (containLag != -1) {
                portNameInd=parseInt(tmpValArr[4]);
            } else {
                portNameInd=parseInt(tmpValArr[1]);
            }
            for (var j=1; (!nameFound)&&(j<=top.NumberOfTrunks); j++) {
                if (portNameInd==j) {
                    portNumber=parseInt(top.trunkFirstIndex)+(j-1);
                    nameFound=true;
                    break;
                }
            }
        }

        for (var j=0; (!nameFound)&&(j<docObj.oobPortsNamesArr.length || j<docObj.lbpPortsNamesArr.length); j++) {
            if (portName==docObj.oobPortsNamesArr[j]) {
                portNumber=docObj.oobPortsIndexArray[j];
                nameFound=true;
                break;
            } else if (portName==docObj.lbpPortsNamesArr[j]) {
                portNumber=docObj.lbpPortsIndexArray[j];
                nameFound=true;
                break;
            }
        }
    }
    if (portNumber>0)
        return portNumber;
    else return parseInt(portName);
}

/*---------------------------------------------------------------------------------
getPortNameFromNumber:
input: portName - the port's real name.
output: the port number.
----------------------------------------------------------------------------------*/
function getPortNameFromNumber(portNumber)
{
    var portName=0;
    if (docObj && portNumber<=docObj.NumberOfPorts && docObj.portsNamesArr[portNumber-1])
        return docObj.portsNamesArr[portNumber-1];
    else if (docObj && docObj.oobNumOfPorts>0 && portNumber>=docObj.oobFirstIndex && docObj.oobPortsNamesArr[portNumber-docObj.oobFirstIndex])
        return docObj.oobPortsNamesArr[portNumber-docObj.oobFirstIndex];
    else if (docObj && docObj.lbpNumOfPorts>0 && portNumber>=docObj.lbpFirstIndex && docObj.lbpPortsNamesArr[portNumber-docObj.lbpFirstIndex])
        return docObj.lbpPortsNamesArr[portNumber-docObj.lbpFirstIndex];
    else if (portNumber == 0)
        return 0;
    else
        return getInterfaceNameAccordingToValue(portNumber);
}

/*---------------------------------------------------------------------------------
isPresentPort:
input: port - the port's real name/ the port's number.
output: true=present port, false=non-present
----------------------------------------------------------------------------------*/
function isPresentPort(port)
{
    var portNumber=0;
    //if we got the port's number
    if (checkUInteger32(port+"") && parseInt(port)>0 && parseInt(port)<=docObj.NumberOfPorts)
        portNumber=parseInt(port);
    //we got the port's name so we translate it to its number
    else portNumber=getPortNumberFromName(port);

    if (portNumber<=docObj.existedPortsArr.length)
        return(docObj.existedPortsArr[portNumber-1]);
    else if (docObj.oobNumOfPorts && docObj.oobNumOfPorts>0 && portNumber<(docObj.oobFirstIndex+docObj.oobNumOfPorts)) {
        return(docObj.oobExistedPortsArr[portNumber-docObj.oobFirstIndex]);
    } else if (docObj.lbpNumOfPorts && docObj.lbpNumOfPorts>0 && portNumber<(docObj.lbpFirstIndex+docObj.lbpNumOfPorts)) {
        return(docObj.lbpExistedPortsArr[portNumber-docObj.lbpFirstIndex]);
    }
}

/*---------------------------------------------------------------------------------
filterNonPresentEntitiesFromSelectList:
input: selectName - the port's selectList Name.
       howToFilter - "t"-for filtering by value, "v"-for filtering by text
output: true=present port, false=non-present
----------------------------------------------------------------------------------*/
function filterNonPresentEntitiesFromSelectList(selectName,howToFilter,filterByModuleFlag,filterByModuleNum)
{
    var selObject=document.forms[0].elements[selectName];
    var port;
    for (i=selObject.options.length-1;i>=0;i--) {
        if ("v"==howToFilter)//filter by value
            port=selObject.options[i].value;
        else port=selObject.options[i].text; //filter by text
        //port not present - remove it from the select list
        if ((!isPresentPort(port)) || (filterByModuleFlag && (docObj.moduleNumPerPortArr[i]!=filterByModuleNum)))
            selObject.options[i]=null;
    }
}

/*---------------------------------------------------------------------------------
addPresentPortsSelectionList:
input: formObj - the form object.
       selectName - the name of the select list
       selectedVal - the value to make selected
       indexesOrNames - "i"-means the option text will be the port's number/index
                        "n"-means the option text will be the port's name
----------------------------------------------------------------------------------*/
function addPresentPortsSelectionList(formObj,selectName,selectedVal,indexesOrNames,filterByModuleFlag, filterByModuleNum, isOOB, isLBP)
{
    var formObj=document.forms[0];
    var optionNo=1;
    var val;
    var text="";
    formObj.elements[selectName].remove(0);
    formObj.elements[selectName][0]=null;
    if (indexesOrNames!="i" && indexesOrNames!="n")
        indexesOrNames="i" ;

    if (!filterByModuleFlag) filterByModuleFlag=false;

    for (var i=0; i<docObj.NumberOfPorts; i++) {
        //present port and check wheter or not to filter by module/unit
        if ( (docObj.existedPortsArr[i]) && (!(filterByModuleFlag) || (filterByModuleFlag && (docObj.moduleNumPerPortArr[i]==filterByModuleNum))) ) {
            val=i+1;
            if (indexesOrNames=="n")
                text=docObj.portsNamesArr[i];
            else text=(i+1)+"";

            newOption = new Option(text,val);
            formObj.elements[selectName].options[optionNo-1]=newOption;
            if (selectedVal != "") {
                if ( parseInt(newOption.value)==selectedVal || newOption.text==selectedVal) {
                    newOption.selected = true ;
                }
            }
            optionNo++;
        }
    }
    if (isOOB!=null && isOOB!="" && isOOB==true && docObj.oobNumOfPorts && docObj.oobNumOfPorts>0) {
        for (var j=0; j<docObj.oobPortsIndexArray.length; j++) {
            if (docObj.oobExistedPortsArr[j]==true) {
                if (indexesOrNames=="n")
                    text=docObj.oobPortsNamesArr[j];
                else text=docObj.oobPortsIndexArray[j];+"";
                val=docObj.oobPortsIndexArray[j];

                newOption = new Option(text,val);
                formObj.elements[selectName].options[optionNo-1]=newOption;
                if (selectedVal != "") {
                    if ( parseInt(newOption.value)==selectedVal || newOption.text==selectedVal) {
                        newOption.selected = true ;
                    }
                }
                optionNo++;
            }
        }
    }
    if (isLBP!=null && isLBP!="" && isLBP==true && docObj.lbpNumOfPorts && docObj.lbpNumOfPorts>0) {
        for (var j=0; j<docObj.lbpPortsIndexArray.length; j++) {
            if (docObj.lbpExistedPortsArr[j]==true) {
                if (indexesOrNames=="n")
                    text=docObj.lbpPortsNamesArr[j];
                else text=docObj.lbpPortsIndexArray[j];+"";
                val=docObj.lbpPortsIndexArray[j];

                newOption = new Option(text,val);
                formObj.elements[selectName].options[optionNo-1]=newOption;
                if (selectedVal != "") {
                    if ( parseInt(newOption.value)==selectedVal || newOption.text==selectedVal) {
                        newOption.selected = true ;
                    }
                }
                optionNo++;
            }
        }
    }

}//end addPresentPortsSelectionList

/*************************************************************************************************
        New frame under home (dynamicData) will hold the relevant fields from "dot3adAggPortTable".
        The frame would be refreshed every 2 minutes.
        Now all I have to do is to return the table value for the given port index.

        input:    port number.
        output:        trunk number (0 it doesnot belong to any of the trunks).
*************************************************************************************************/
function relatedTrunk(port)
{

    /*if (top.dynamicData)
        {
                result=top.dynamicData.document.data2Form.elements["dot3adAggPortActorAdminKey$repeat?"+port].value;
        }
        else
        {
                result=opener.top.dynamicData.document.data2Form.elements["dot3adAggPortActorAdminKey$repeat?"+port].value;
        }

        return result;*/
    if (opener)
        if (opener.opener)
            if (opener.opener.opener)
                return opener.opener.opener.top.relatedTrunksArr[port-1];
            else
                return opener.opener.top.relatedTrunksArr[port-1];
        else
            return opener.top.relatedTrunksArr[port-1];
    else
        return top.relatedTrunksArr[port-1];
}


/*##########################################################################################
14. Dispaly Functions
##########################################################################################*/

/*---------------------------------------------------------------------------------
displayInterface:
input:        indexField - the name of the Index field
                portNameField - the name of the port name field
                rowNum - the number of the row were we want to change the display text.
output: prints the Interface on the screen
----------------------------------------------------------------------------------*/
function displayInterface(indexField,portNameField,rowNum){
    var formelem = document.forms[0];
    var interfaceValue,interfaceText;
    interfaceValue = parseInt(formelem[indexField+"?"+rowNum].value);
    var numOfTrunks,numOfPorts;
    numOfPorts = parseInt(docObj.NumberOfPorts);
    numOfTrunks = parseInt(docObj.NumberOfTrunks);
    if (interfaceValue>(parseInt(docObj.trunkFirstIndex)+numOfTrunks-1)) {
        if (docObj.oobNumOfPorts && docObj.oobNumOfPorts>0 && interfaceValue>=docObj.oobFirstIndex && interfaceValue<(docObj.oobFirstIndex+docObj.oobNumOfPorts)) {
            if (docObj.oobNumOfPorts>1)
                interfaceText="OOB "+(interfaceValue-docObj.oobFirstIndex+1);
            else interfaceText="OOB";
        } else if (docObj.lbpNumOfPorts && docObj.lbpNumOfPorts>0 && interfaceValue>=docObj.lbpFirstIndex && interfaceValue<(docObj.lbpFirstIndex+docObj.lbpNumOfPorts)) {
            if (docObj.lbpNumOfPorts>1)
                interfaceText="LBP "+(interfaceValue-docObj.lbpFirstIndex+1);
            else interfaceText="LBP";
        } else if (interfaceValue>=200000) {//dynamic vlans
            interfaceText="DVLAN "+(interfaceValue-200000+1);
        } else if (interfaceValue>=100000) {//static vlans
            interfaceText="VLAN "+(interfaceValue-100000+1);
        }
    } else {
        if (interfaceValue>numOfPorts) {
            interfaceText="LAG "+ (interfaceValue-parseInt(docObj.trunkFirstIndex)+1);
        } else {
            interfaceText = formelem[portNameField+"?"+rowNum].value;
        }
    }
    document.write(interfaceText);
}

/*---------------------------------------------------------------------------------
displayTrunk:
input:        indexField - the name of the Index field
                rowNum - the number of the row we want the change the display text.
output: prints the Interface on teh screen
----------------------------------------------------------------------------------*/

function displayTrunk(indexField, rowNum){
    var formelem = document.forms[0];
    var trunkVal,trunkText;
    var numOfPorts;
    trunkVal = formelem[indexField+"?"+rowNum].value;
    if (opener) {
        trunkText = parseInt(trunkVal)-parseInt(opener.top.trunkFirstIndex)+1;
    } else {
        trunkText = parseInt(trunkVal)-parseInt(top.trunkFirstIndex)+1;
    }
    document.write(trunkText);
}

function getInterfaceName(fieldName)
{
    var formelem = document.forms[0];
    var interfaceValue,interfaceText;
    var numOfPorts,numOfTrunks;
    if (formelem && formelem.elements[fieldName])
        interfaceValue = parseInt(formelem.elements[fieldName].value);
    var numOfTrunks,numOfPorts;
    if (docObj) {
        numOfPorts = parseInt(docObj.NumberOfPorts);
        numOfTrunks = parseInt(docObj.NumberOfTrunks);
    }
    if (interfaceValue>(parseInt(docObj.trunkFirstIndex)+numOfTrunks-1)) {
        if (docObj && docObj.oobNumOfPorts && docObj.oobNumOfPorts>0 && interfaceValue>=docObj.oobFirstIndex && interfaceValue<(docObj.oobFirstIndex+docObj.oobNumOfPorts)) {
            if (docObj && docObj.oobNumOfPorts>1)
                interfaceText="OOB "+(interfaceValue-docObj.oobFirstIndex+1);
            else interfaceText="OOB";
        } else if (docObj && docObj.lbpNumOfPorts && docObj.lbpNumOfPorts>0 && interfaceValue>=docObj.lbpFirstIndex && interfaceValue<(docObj.lbpFirstIndex+docObj.lbpNumOfPorts)) {
            if (docObj && docObj.lbpNumOfPorts>1)
                interfaceText="LBP "+(interfaceValue-docObj.lbpFirstIndex+1);
            else interfaceText="LBP";
        } else if (interfaceValue>=200000) {//dynamic vlans
            interfaceText="DVLAN "+(interfaceValue-200000+1);
        } else if (interfaceValue>=100000) {//static vlans
            interfaceText="VLAN "+(interfaceValue-100000+1);
        }
    } else {
        if (interfaceValue>=docObj.trunkFirstIndex) {
            interfaceText="LAG "+ (interfaceValue-parseInt(docObj.trunkFirstIndex)+1);
        } else {
            interfaceText = getPortNameFromNumber(interfaceValue)
        }
    }
    return(interfaceText);
}

function getInterfaceNameAccordingToValue(fieldValue)
{
    var interfaceValue,interfaceText;
    interfaceValue = parseInt(fieldValue);
    var numOfTrunks,numOfPorts;
    numOfPorts = parseInt(docObj.NumberOfPorts);
    numOfTrunks = parseInt(docObj.NumberOfTrunks);
    if (interfaceValue>(parseInt(docObj.trunkFirstIndex)+numOfTrunks-1)) {
        if (docObj.oobNumOfPorts && docObj.oobNumOfPorts>0 && interfaceValue>=docObj.oobFirstIndex && interfaceValue<(docObj.oobFirstIndex+docObj.oobNumOfPorts)) {
            if (docObj.oobNumOfPorts>1)
                interfaceText="OOB "+(interfaceValue-docObj.oobFirstIndex+1);
            else interfaceText="OOB";
        } else if (docObj.lbpNumOfPorts && docObj.lbpNumOfPorts>0 && interfaceValue>=docObj.lbpFirstIndex && interfaceValue<(docObj.lbpFirstIndex+docObj.lbpNumOfPorts)) {
            if (docObj.lbpNumOfPorts>1)
                interfaceText="LBP "+(interfaceValue-docObj.lbpFirstIndex+1);
            else interfaceText="LBP";
        } else if (interfaceValue>=200000) {//dynamic vlans
            interfaceText="DVLAN "+(interfaceValue-200000+1);
        } else if (interfaceValue>=100000) {//static vlans
            interfaceText="VLAN "+(interfaceValue-100000+1);
        }
    } else {
        if (interfaceValue>=docObj.trunkFirstIndex) {
            interfaceText="LAG "+ (interfaceValue-parseInt(docObj.trunkFirstIndex)+1);
        } else {
            interfaceText = getPortNameFromNumber(interfaceValue)
        }
    }
    return(interfaceText);
}
function preSubmit()
{
    setTimeout('callSubmit()',30);
}
function callSubmit()
{
    if (docObj.fldToCheck=="") {
        if (opener) {
            docObj.popHndl=window.self;
        } else {
            docObj.popHndl=top.main;
        }

        docObj.locationHndl=(document.location.pathname+"?")
        if (document.forms[0].restoreUrl)
            docObj.locationHndl+=(document.forms[0].restoreUrl.value);
        formSubmit();
    }
}

function disableHtml(value) {}
function serviceFunction() {}
/////////////////////////////////////////////////////////////////////////////
//If there is a field in the page were we found error we set the focus to it.
/////////////////////////////////////////////////////////////////////////////
function checkFocus()
{
    if (docObj.fldToCheck!="") {
        if (document.forms[0].elements[docObj.fldToCheck])
            document.forms[0].elements[docObj.fldToCheck].focus();
    }
}
function checkForErrors()
{
    if (docObj.fldToCheck!="") {
        if (!(document.forms[0].elements[docObj.fldToCheck])) {
            //window.clearTimeout();
            docObj.fldToCheck="";
        }
    }
}
////////////////////////////////////////////////////////////////////////////////
//Before the error collector popUp handle is disaplayed, the submiting page is
//dta is loaded into the "dataArr" in the home page.
//After the page is refreshed the data will be set to the page using the
//showData function (next function in this file).
//When all fields were set to the array the last field will get the value "END".
////////////////////////////////////////////////////////////////////////////////
function storeData()
{
    ArrIdx=1;
    elementsCounter=0;
    formIdx=0;
    docObj.dataArr[0]=document.title;
    docObj.dataArr[1]="END";
    while (document.forms[formIdx]) {
        elementsCounter+=document.forms[formIdx].length;
        formIdx++;
    }
    formIdx=0;
    if (elementsCounter<maxNumOfFieldsToStore) {
        while (document.forms[formIdx]) {
            fldIdx=0;
            while (document.forms[formIdx].elements[fldIdx]) {
                if ((document.forms[formIdx][fldIdx].type=="text")||(document.forms[formIdx][fldIdx].type=="textarea")||(document.forms[formIdx][fldIdx].type=="hidden"))
                    docObj.dataArr[ArrIdx]=document.forms[formIdx][fldIdx].value;
                else if ((document.forms[formIdx][fldIdx].type=="radio")||(document.forms[formIdx][fldIdx].type=="checkbox"))
                    docObj.dataArr[ArrIdx]=document.forms[formIdx][fldIdx].checked;

                else if ((document.forms[formIdx][fldIdx].type=="select-one")||(document.forms[formIdx][fldIdx].type=="select-multiple"))
                    if (document.forms[formIdx][fldIdx].options.length > 0)
                        docObj.dataArr[ArrIdx]=document.forms[formIdx][fldIdx].selectedIndex;
                fldIdx++;
                ArrIdx++;
            }
            formIdx++;


        }
        docObj.dataArr[ArrIdx]="END";
    }
}
////////////////////////////////////////////////////////////////////////////////
//After the error collector popUp handle was disaplayed, the submiting page is
//refreshed, and in this function the last data that was typed is entered to
//the refreshed page.
//The loop stops if all the elemts in the page were scanned or if encountered
//the "END" value in the array.
////////////////////////////////////////////////////////////////////////////////
function showData()
{
    ArrIdx=1;
    formIdx=0;
    flag=0;
    if (docObj.dataArr[0]==document.title) {
        while ((document.forms[formIdx])&&(docObj.dataArr[ArrIdx]!="END")) {
            fldIdx=0;
            while ((document.forms[formIdx].elements[fldIdx])&&(docObj.dataArr[ArrIdx]!="END")) {
                if ((document.forms[formIdx][fldIdx].type=="text")||(document.forms[formIdx][fldIdx].type=="textarea")||(document.forms[formIdx][fldIdx].type=="hidden")) {
                    document.forms[formIdx][fldIdx].value=docObj.dataArr[ArrIdx];
                    flag=0;
                } else if ((document.forms[formIdx][fldIdx].type=="radio")||(document.forms[formIdx][fldIdx].type=="checkbox")) {
                    document.forms[formIdx][fldIdx].checked=docObj.dataArr[ArrIdx];
                    if (docObj.dataArr[ArrIdx])
                        flag=1;
                    else
                        flag=2;
                }

                else if ((document.forms[formIdx][fldIdx].type=="select-one")||(document.forms[formIdx][fldIdx].type=="select-multiple"))
                    if (document.forms[formIdx][fldIdx].options.length > 0) {
                        document.forms[formIdx][fldIdx].selectedIndex=docObj.dataArr[ArrIdx];
                        if (flag==1) document.forms[formIdx][fldIdx].disabled=false;
                        if (flag==2) document.forms[formIdx][fldIdx].disabled=true;
                        flag=0;
                    }
                fldIdx++;
                ArrIdx++;
            }
            formIdx++;
        }
        docObj.dataArr[0]="END";
    }
    serviceFunction();

}

function drawApplyChanges(){

    myTable=document.getElementById("apply_tbl");
    htmlStr="<a href='javascript:preSubmit();'>Apply Changes</a>";
    myTable.tBodies[0].rows[0].cells[1].innerHTML=htmlStr;
    document.body.style.cursor="default";        //changes the cursor back to its default form
}

function disableApplyChanges(){
    myTable=document.getElementById("apply_tbl");
    htmlStr="Apply Changes";
    myTable.tBodies[0].rows[0].cells[1].innerHTML=htmlStr;
    document.body.style.cursor="wait";        //changes the cursor to a wait mode
}
function DrawButton( text , func , param )
{
    var _align = "center";
    if ( null != param )
        _align = param;

    document.write("<DIV ALIGN="+_align+">");
    document.write("<TABLE id='button_tbl' CELLSPACING='0' CELLPADDING='0' BORDER='0'>");
    document.write("<TR>");
    if ( ( text != null ) && ( func != null )) {
        document.write("<TD><input type='button' value='");
        document.write( text );
        document.write("' onClick= '");
        document.write( func );
        document.write("'></TD>");
        document.write("&nbsp;&nbsp;");
    }
    document.write("</TR>");
    document.write("</TABLE></DIV>");
}
//////////////////////////////////////////////////////////////////////////////////////
//Add a select object with option values from Trunk Array
//Input: selectName,TrunkArr(the options will be all the values in the array)
//                selectedVal(the selected option).
//Output: none.  (the function is creating the defined select object).
//////////////////////////////////////////////////////////////////////////////////////
function addSelectListFromTrunkArray(selectName,TrunkArr,selectedValFld)
{
    var selectedVal="";
    formObj=document.forms[0];

    if (selectedValFld!="")
        selectedVal=formObj.elements[selectedValFld].value;

    for (var x=0; x<formObj.elements[selectName].length; x++) {
        formObj.elements[selectName].remove(x);
        formObj.elements[selectName][x]=null;
    }

    var trunkFirstIndex = ( (opener) ? opener.top.trunkFirstIndex : top.trunkFirstIndex)
    var NumberOfTrunks =  ( (opener) ? opener.top.NumberOfTrunks : top.NumberOfTrunks)

    for (var i=trunkFirstIndex; i<(trunkFirstIndex + NumberOfTrunks); i++) {
        if (TrunkArr[i]) {
            newOption = new Option(i-trunkFirstIndex+1,i);
            formObj.elements[selectName].options[formObj.elements[selectName].options.length]=newOption;
        }

        if (selectedVal != "") {
            if ( newOption.text == selectedVal ) {
                newOption.selected = true ;
            }
        }
    }

    if ((formObj.elements[selectName].options.length == 0)) {
        formObj.elements[selectName].selectedIndex=-1;
    } else if (selectedVal == "") {
        formObj.elements[selectName].selectedIndex=0;
    }
}


var nCurrentRow = 0;

function drawBump( col )
{
    var i;
    document.write('<tr >');
    document.write('   <td>&nbsp;</td>');
    document.write('</tr>');
    document.write('<tr >');
    document.write('   <td colspan=' + col + '><hr align="center" size="1" color="#b5b5e6" noshade></hr></td>');
    document.write('</tr>');
    document.write('<tr >');
    for ( i = 0 ; i < col ; i++ )
        document.write('   <td>&nbsp;</td>');
    document.write('</tr>');
}


function insertLeftColumn( id , text , bgcolor , textcolor )
{
    var tbl = document.getElementById(id);
    var rows = tbl.rows.length;
    var newCel1 = tbl.rows[nCurrentRow].insertCell( 0 );
    var newCel2 = tbl.rows[nCurrentRow].insertCell( 0 );
    var newCel3 = tbl.rows[nCurrentRow].insertCell( 0 );

    newCel1.rowSpan=rows - nCurrentRow;
    newCel1.style.borderStyle = "none";
    newCel1.align="right";
    newCel1.vAlign="top";
    newCel1.style.backgroundColor=bgcolor;
    newCel1.width = "138px"
    newCel1.innerHTML = "<font face='Arial' color='"+textcolor+"' style='font-size: 8pt'><strong>" + text + "&nbsp;&nbsp;&nbsp;&nbsp;</strong></font>";

    newCel2.rowSpan=rows - nCurrentRow;
    newCel2.style.borderStyle = "none";
    newCel2.background="../images2/b1.gif"
    newCel2.width = "8px"
    newCel2.innerHTML = "&nbsp;";

    newCel3.rowSpan=rows - nCurrentRow;
    newCel3.style.borderStyle = "none";
    newCel3.width = "20px";
    newCel3.innerHTML = "&nbsp;";


    nCurrentRow = rows;
}


/**********opening port*******************/
var wPo1=null;
var wPo2=null;
var wPo3=null;
var wPo4=null;
var wPo5=null;
var wPo6=null;
var wPo7=null;
var wPo8=null;
var wPo9=null;
var wPo10=null;
var wPo11=null;
var wPo12=null;
var wPo13=null;
var wWAN2=null;
var wWAN1=null;
var wDMZ=null;

function openPort(n, ViewMode)
{

    var wHeight=500;
    switch (n) {
    case '1':
        if (ViewMode == 0)
            wPo1=window.open('../SysInfo/port1_information.htm','po1','menubar=no,scrollbars,width=650,height='+wHeight);
        else
            wPo1=window.open('../SysInfo/port1_Settings.htm','po1','menubar=no,scrollbars,width=650,height='+wHeight);
        break;
    case '2':
        if (wPo2!=null) closePort(wPo2);
        wPo2=window.open('port2_information.htm','po2','menubar=no,scrollbars,width=650,height='+wHeight);
        break;
    case '3':
        if (wPo3!=null) closePort(wPo3);
        wPo3=window.open('port3_information.htm','po3','menubar=no,scrollbars,width=650,height='+wHeight);
        break;
    case '4':
        if (wPo4!=null) closePort(wPo4);
        wPo4=window.open('port4_information.htm','po4','menubar=no,scrollbars,width=650,height='+wHeight);
        break;
    case '5':
        if (wPo5!=null) closePort(wPo5);
        wPo5=window.open('port5_information.htm','po5','menubar=no,scrollbars,width=650,height='+wHeight);
        break;
    case '6':
        if (wPo6!=null) closePort(wPo6);
        wPo6=window.open('port6_information.htm','po6','menubar=no,scrollbars,width=650,height='+wHeight);
        break;
    case '7':
        if (wPo7!=null) closePort(wPo7);
        wPo7=window.open('port7_information.htm','po7','menubar=no,scrollbars,width=650,height='+wHeight);
        break;
    case '8':
        if (wPo8!=null) closePort(wPo8);
        wPo8=window.open('port8_information.htm','po8','menubar=no,scrollbars,width=650,height='+wHeight);
        break;
    case '9':
        if (wPo9!=null) closePort(wPo9);
        wPo9=window.open('port9_information.htm','po9','menubar=no,scrollbars,width=650,height='+wHeight);
        break;
    case '10':
        if (wPo10!=null) closePort(wPo10);
        wPo10=window.open('port10_information.htm','po10','menubar=no,scrollbars,width=650,height='+wHeight);
        break;
    case '11':
        if (wPo11!=null) closePort(wPo11);
        wPo11=window.open('port11_information.htm','po11','menubar=no,scrollbars,width=650,height='+wHeight);
        break;
    case '12':
        if (wPo12!=null) closePort(wPo12);
        wPo12=window.open('port12_information.htm','po12','menubar=no,scrollbars,width=650,height='+wHeight);
        break;
    case '13':
        if (wPo13!=null) closePort(wPo13);
        wPo13=window.open('port13_information.htm','po13','menubar=no,scrollbars,width=650,height='+wHeight);
        break;
    case '14':
        if (wWAN2!=null) closePort(wWAN2);
        wWAN2=window.open('wan2_port_information.htm','wan2','menubar=no,scrollbars,width=650,height='+wHeight);
        break;
    case '15':
        if (wWAN1!=null) closePort(wWAN1);
        wWAN1=window.open('wan1_port_information.htm','wan1','menubar=no,scrollbars,width=650,height='+wHeight);
        break;
    case '16':
        if (wDMZ!=null) closePort(wDMZ);
        wDMZ=window.open('dmz_port_information.htm','dmz','menubar=no,scrollbars,width=650,height='+wHeight);
        break;
    default:

        break;
    }

}

function openPortAdmin(n, ViewMode)
{
    var wHeight=600;
    switch (n) {
    case '1':

        //    alert("in");

        wPo1=window.open('../PortManag/Pop_Port_Admin.htm','po1','menubar=no,scrollbars,width=650,height='+wHeight);

        break;
    case '3':

        //alert("in");

        wPo1=window.open('../PortManag/Pop_Port_Admin_l3.htm','po1','menubar=no,scrollbars,width=650,height='+wHeight);
        
        break;

    default:

        break;
    }

}
function openLag(n, ViewMode)
{
    var wHeight=600;
    switch (n) {
    case 1:

        //    alert("in");

        wPo1=window.open('../PortManag/Pop_Lag_Admin.htm','po1','menubar=no,scrollbars,width=650,height='+wHeight);

        break;


    default:

        break;
    }
}

function openQosPopup(n, ViewMode)
{
    var wHeight=600;
    switch (n) {
    case 1:
        wPo1=window.open('Pop_DSCP_Mapping.htm','po1','menubar=no,,width=500,height='+wHeight);
        break;

    case 2:
        wHeight=600;
        wPo1=window.open('Pop_NewClassMap.htm','po1','menubar=no,,width=500,height='+wHeight);
        break;

    case 3:
        wHeight=600;
        wPo1=window.open('Pop_NewAggrPolic.htm','po1','menubar=no,,width=500,height='+wHeight);
        break;

    case 4:
        wHeight=600;
        wPo1=window.open('Pop_DSCP_Mapp.htm','po1','menubar=no,,width=450,height='+wHeight);
        break;
    case 5:
        wHeight=450;
        wPo1=window.open('Pop_NewPolicyName.htm','po1','menubar=no,,width=270,height='+wHeight);
        break;
        

    default:

        break;
    }
}
function openVLANPopup(n,Portnum)
{
    var wHeight=600;
    switch (n) {
    case 1:
        wPo1=window.open('Pop_VLAN.htm?'+Portnum,'po1','menubar=no,width=600,height=400');
        break;
    case 2:
        wPo1=window.open('Pop_GVRPsettings.htm?'+Portnum,'po1','menubar=no,width=500,height=450');
        break;
    }
}
function openspanPopup(n,Portnum)
{
    var wHeight=600;
    switch (n) {
    case 1:
        wPo1=window.open('Pop_stp.htm?'+Portnum,'po1','menubar=no,width=600,height=300');
        break;
        
    }
}

function SpanPopup()
{

    wPo1=window.open('Pop_Spanpop.htm?','po1','menubar=no,scrollbars,width=600,height=600');
}

// ----------- Grid Common Functions ----------
var nLine;

function getLineCount() {
    return nLine;
}

function AddRowToTable(table, newRow) {
//debugger;
    // alert("newRow: " + newRow.txt1);
    
    table.push(newRow);
}
//showFormFields(table1Rows, table1Columns, table1Ind, "frmMockup");
/*
function showFormFields(sourTable, sourTableColumns, sourTableInd, destForm,num1,num2) {
     var fieldName;
    // alert("Show Form ");
    for (var j =0;  j < 2; j++) {
        fieldName = sourTableColumns[j];
                   // alert("Show field " + fieldName);
                   // document.all.item(fieldName).value = sourTable[sourTableInd] [fieldName];
                   if (sourTable[sourTableInd] != undefined)
                      document.forms[destForm].item(fieldName).value = sourTable[sourTableInd] [fieldName];

     }
    
    
     for (var i = num1;  i < num2; i++) {
        fieldName = sourTableColumns[i];
                   // alert("Show field " + fieldName);
                   // document.all.item(fieldName).value = sourTable[sourTableInd] [fieldName];
                   if (sourTable[sourTableInd] != undefined)
                      document.forms[destForm].item(fieldName).value = sourTable[sourTableInd] [fieldName];

     }
}
*/
function showFormFields(sourTable, sourTableColumns, sourTableInd, destForm,num1,num2) {
    var fieldName;
    var obj;
    // alert("Show Form ");
    for (var i = 0;  i < sourTableColumns.length; i++) {
        fieldName = sourTableColumns[i];
        //alert(fieldName+" "+destForm);
        // document.all.item(fieldName).value = sourTable[sourTableInd] [fieldName];
        
        if (sourTable[sourTableInd] != undefined) {
            obj = document.forms[destForm].item(fieldName);
            if (obj != null) {
                if (obj.type == 'checkbox')
                    obj.checked = (sourTable[sourTableInd] [fieldName]=="on")?true:false;
                else
                    obj.value = sourTable[sourTableInd] [fieldName];
            }
        }
    }
}



function SetCheckBoxToTable(idCb,val1,val2,hiddenCb)
{
    var Cbid=idCb;
    if (document.forms["frmMockup"].item(Cbid).checked == true)
        document.forms["frmMockup"].item(hiddenCb).value = val1;
    else
        if (document.forms["frmMockup"].item(Cbid).checked == false)
        document.forms["frmMockup"].item(hiddenCb).value = val2;
}

function GetCheckBoxFromTable(idCb,val1,val2,hiddenCb)
{
    var Cbid=idCb;
    if (document.forms["frmMockup"].item(hiddenCb).value==val1)
        document.forms["frmMockup"].item(Cbid).checked = true;
    else
        document.forms["frmMockup"].item(Cbid).checked = false;
}

function SetRadioToTable(arrRdbId,arrRdbValues, selAuthentPrm)
{
    var idRb;
    //alert(selAuthentPrm);
    for (i=0 ; i<arrRdbId.length ; i++) {
        idRb= arrRdbId[i];
        if (document.forms["frmMockup"].item(idRb).checked) {
            document.forms["frmMockup"].item(selAuthentPrm).value=arrRdbValues[i];
            //document.getElementsByName(selAuthentPrm)[0].value=arrRdbValues[i];
            break;
        }
    }

}
function GetRadioFromTable(arrRdbId,arrRdbValues, selAuthentPrm)
{
    var idRb,idRbId;
    for (i=0 ; i<arrRdbValues.length ; i++) {
        idRb= arrRdbValues[i];
        if (document.forms["frmMockup"].item(selAuthentPrm).value==idRb) {
            idRbId= arrRdbId[i];
            document.forms["frmMockup"].item(idRbId).checked = true;

            break;
        }
    }
}

function lookForLeft(ths)
{  
    var left=ths.offsetLeft;
    var y=ths.offsetParent;
    //alert(y);    
    while (y) {
        left+=y.offsetLeft;
        y=y.offsetParent;
    }
    return left;
}

function showAddTable(sourTable, sourTableColumns, sourTableColumnsAlias,
                      destContainer, destTableId,NumButton,BoldRow) {
    var output = "<table id='Table_" + destTableId + "' width='100%' class='dynamicAddTable'  border='9' align=CENTER><tr>";
    var fieldName;
    nLine  = 0;

    // -------------- HEADER ----------------

    for (var i = 0; i < sourTableColumnsAlias.length; i++) {
        output += "<td align='left' class='dynamicscrollTableheading' width='"+100/(sourTableColumnsAlias.length)+"%'>" + sourTableColumnsAlias[i] +"</td>";
    }
    output += "</tr><tbody id='Tbody_" + destTableId + "'><tr><td colspan="+sourTableColumnsAlias.length+"><div class='scrolltable' style='height:150px;'><table width='100%' class='dynamicscrollTable'  border='0' align=CENTER>";

    // --------------- BODY -----------------
    for (var j = 0; j < sourTable.length; j++) {
        if (sourTable[j] != undefined) {
            nLine++;
            output += "<tr id='tr" + j + "'"; 
            if (BoldRow)
                if (j==BoldRow) {
                    output+=" style='BACKGROUND-COLOR:#6495ED' ";
                }
            output+="onclick='getRowData(this," + j +")'  "+"onMouseover=cursOver(this,"+j+") onMouseout=cursOut(this,"+j+") >";
            for (var i = 0;  i < sourTableColumns.length; i++) {
                fieldName = sourTableColumns[i];
                if (i==0 && sourTableColumnsAlias[i] == "#")
                    output += "<td  align='left' class='dynamicscrolldatagrid' width='"+100/(sourTableColumnsAlias.length)+"%' ><font face='Arial Unicode MS' color='#000000'> " + nLine + "</font></td>";
                else
                    output += "<td   align='left' class='dynamicscrolldatagrid' width='"+100/(sourTableColumnsAlias.length)+"%' ><font face='Arial Unicode MS' color='#000000'> " + sourTable[j] [fieldName] + "</font></td>";
            }
        }
        output += "</tr>";
    }
    

    output += "</table></div></td></tr></tbody>";
    if (!NumButton) {
        if (sourTableColumns.length-2)
            output+="<tr><td class='dynamicheading'  align='left'><button id='btnDelete' value='Delete' onclick='delete_Click()' disabled='true'>Delete</button></td><td class='dynamicheading' colspan='"+(sourTableColumns.length-2)+"'></td><td class='dynamicheading'  align='right'><button id='btnAddNew' value='AddNew' onclick='addNew_Click()'>Cancel</button></td></tr>";
        else
            output+="<tr><td class='dynamicheading'  align='left'><button id='btnDelete' value='Delete' onclick='delete_Click()' disabled='true'>Delete</button></td><td class='dynamicheading'  align='right'><button id='btnAddNew' value='AddNew' onclick='addNew_Click()'>Cancel</button></td></tr>";
    } else
        if (NumButton==2) {
        output+="<tr><td class='dynamicTableheading' align='left'><button id='btnDelete' value='Remove' onclick='delete_Click()' disabled='true'>Remove</button></td><td colspan='"+(sourTableColumns.length-2)+"' class='dynamicTableheading' align='center'></td><td class='dynamicTableheading' align='right'><button id='btnCancel' value='Cancel' onclick='Cancel_click()'>Cancel</button></td></tr>"; 
    }
    output+="</table>";

    document.getElementById(destContainer).innerHTML = output;
}
///////////////////////////////////////////////////////////////////////////////////////////////
function showAddTableHeader(sourTable, sourTableColumns, sourTableColumnsAlias,tableColHeader,tableHeaderColspan,
                            destContainer, destTableId,NumButton,BoldRow) {
    var output = "<table id='Table_" + destTableId + "' width='100%' class='dynamicAddTable'  border='9' align=CENTER><tr>";
    var fieldName;
    nLine  = 0;

    // -------------- HEADER ----------------
    for (var i = 0; i < tableColHeader.length; i++) {
        output += "<td align='left' class='dynamicscrollTableheading' width='"+100/(sourTableColumnsAlias.length)+"%' colspan=" + tableHeaderColspan[i] + ">" + tableColHeader[i] +"</td>";
    }
    output +="</tr><tr>"
    for (var i = 0; i < sourTableColumnsAlias.length; i++) {
        output += "<td align='left' class='dynamicscrollTableheading' width='"+100/(sourTableColumnsAlias.length)+"%'>" + sourTableColumnsAlias[i] +"</td>";
    }
    output += "</tr><tbody id='Tbody_" + destTableId + "'><tr><td colspan="+sourTableColumnsAlias.length+"><div class='scrolltable' style='height:150px;'><table width='100%' class='dynamicscrollTable'  border='0' align=CENTER>";

    // --------------- BODY -----------------
    for (var j = 0; j < sourTable.length; j++) {
        if (sourTable[j] != undefined) {
            nLine++;
            output += "<tr id='tr" + j + "'"; 
            if (BoldRow)
                if (j==BoldRow) {
                    output+=" style='BACKGROUND-COLOR:#6495ED' ";
                }
            output+="onclick='getRowData(this," + j +")'  "+"onMouseover=cursOver(this,"+j+") onMouseout=cursOut(this,"+j+") >";
            for (var i = 0;  i < sourTableColumns.length; i++) {
                fieldName = sourTableColumns[i];
                if (i==0 && sourTableColumnsAlias[i] == "#")
                    output += "<td  align='left' class='dynamicscrolldatagrid' width='"+100/(sourTableColumnsAlias.length)+"%' ><font face='Arial Unicode MS' color='#000000'> " + nLine + "</font></td>";
                else
                    output += "<td   align='left' class='dynamicscrolldatagrid' width='"+100/(sourTableColumnsAlias.length)+"%' ><font face='Arial Unicode MS' color='#000000'> " + sourTable[j] [fieldName] + "</font></td>";
            }
        }
        output += "</tr>";
    }
    

    output += "</table></div></td></tr></tbody>";
    if (!NumButton) {
        if (sourTableColumns.length-2)
            output+="<tr><td class='dynamicheading'  align='left'><button id='btnDelete' value='Delete' onclick='delete_Click()' disabled='true'>Delete</button></td><td class='dynamicheading' colspan='"+(sourTableColumns.length-2)+"'></td><td class='dynamicheading'  align='right'><button id='btnAddNew' value='AddNew' onclick='addNew_Click()'>Cancel</button></td></tr>";
        else
            output+="<tr><td class='dynamicheading'  align='left'><button id='btnDelete' value='Delete' onclick='delete_Click()' disabled='true'>Delete</button></td><td class='dynamicheading'  align='right'><button id='btnAddNew' value='AddNew' onclick='addNew_Click()'>Cancel</button></td></tr>";
    } else
        if (NumButton==2) {
        output+="<tr><td class='dynamicTableheading' align='left'><button id='btnDelete' value='Remove' onclick='delete_Click()' disabled='true'>Remove</button></td><td colspan='"+(sourTableColumns.length-2)+"' class='dynamicTableheading' align='center'></td><td class='dynamicTableheading' align='right'><button id='btnCancel' value='Cancel' onclick='Cancel_click()'>Cancel</button></td></tr>"; 
    }
    output+="</table>";

    document.getElementById(destContainer).innerHTML = output;
}





function showScrollTable(sourTable, sourTableColumns, sourTableColumnsAlias,
                         destContainer, destTableId,NumButton,BoldRow) {
    var output = "<table id='Table_" + destTableId + "' width='100%' class='dynamicAddTable'  border='9' align=CENTER><tr>";
    var fieldName;
    nLine  = 0;

    // -------------- HEADER ----------------

    for (var i = 0; i < sourTableColumnsAlias.length; i++) {
        output += "<td align='left' class='dynamicscrollTableheading' width='"+100/(sourTableColumnsAlias.length)+"%'>" + sourTableColumnsAlias[i] +"</td>";
    }
    output += "</tr><tbody id='Tbody_" + destTableId + "'><tr><td colspan=3><div class='scrolltable' style='height:150px;'><table width='100%' class='dynamicscrollTable'  border='0' align=CENTER>";

    // --------------- BODY -----------------

    for (var j = 0; j < sourTable.length; j++) {
        if (sourTable[j] != undefined) {
            nLine++;
            output += "<tr id='tr" + j + "'"; 
            if (BoldRow)
                if (j==BoldRow) {
                    output+=" style='BACKGROUND-COLOR:#6495ED' ";
                }
            output+="onclick='getRowData(this," + j +")'  "+"onMouseover=cursOver(this,"+j+") onMouseout=cursOut(this,"+j+") >";
            for (var i = 0;  i < sourTableColumns.length; i++) {
                fieldName = sourTableColumns[i];
                if (i==0 && sourTableColumnsAlias[i] == "#")
                    output += "<td  align='left' class='dynamicscrolldatagrid' width='"+100/(sourTableColumnsAlias.length)+"%' ><font face='Arial Unicode MS' color='#000000'> " + nLine + "</font></td>";
                else
                    output += "<td   align='left' class='dynamicscrolldatagrid' width='"+100/(sourTableColumnsAlias.length)+"%' ><font face='Arial Unicode MS' color='#000000'> " + sourTable[j] [fieldName] + "</font></td>";
            }
        }
        output += "</tr>";
    }

    output += "</table></div></td></tr></tbody><tr><td class='dynamicheading' align='left'><button id='btnDelete' value='Delete' onclick='delete_Click()' disabled='true'>Delete</button></td><td colspan='"+(sourTableColumns.length-2)+"' class='dynamicheading' align='center'></td><td class='dynamicheading' align='right'><button id='btnCancel' value='Add New' onclick='Cancel_click()'>Cancel</button></td></tr></table>";
    document.getElementById(destContainer).innerHTML = output;
}






function showTable(sourTable, sourTableColumns, sourTableColumnsAlias,
                   destContainer, destTableId) {
    var output = "<table id='Table_" + destTableId + "' width='100%' class='dynamicTable' align=CENTER><tr>";
    var fieldName;
    nLine  = 0;

    // -------------- HEADER ----------------

    for (var i = 0; i < sourTableColumnsAlias.length; i++) {
        output += "<td class='dynamicTableheading'>" + sourTableColumnsAlias[i] +"</td>";
    }
    output += "</tr><tbody id='Tbody_" + destTableId + "'>";

    // --------------- BODY -----------------

    for (var j = 0; j < sourTable.length; j++) {
        if (sourTable[j] != undefined) {
            nLine++;
            output += "<tr id='tr" + j + "' onclick='getRowData(this," + j +")'  "+
                      "onMouseover=cursOver(this,"+j+") onMouseout=cursOut(this,"+j+") >";
            for (var i = 0;  i < sourTableColumns.length; i++) {
                fieldName = sourTableColumns[i];
                if (i==0 && sourTableColumnsAlias[i] == "#")
                    output += "<td  align='center' class='dynamicdatagrid' ><font face='Arial Unicode MS' color='#000000'> " + nLine + "</font></td>";
                else
                    output += "<td  align='center' class='dynamicdatagrid' ><font face='Arial Unicode MS' color='#000000'> " + sourTable[j] [fieldName] + "</font></td>";
            }
        }
        output += "</tr>";
    }

    output += "</tbody></table>";
    document.getElementById(destContainer).innerHTML = output;
}

function showTableHeader(sourTable, sourTableColumns, sourTableColumnsAlias,ColumnsAlias,headColNum,
                         destContainer, destTableId) {
    var output = "<table id='Table_" + destTableId + "' width='100%' class='dynamicTable' align=CENTER><thead><tr>";
    var fieldName;
    nLine  = 0;

    // -------------- HEADER ----------------
    
    for (var j=0;j<ColumnsAlias.length ;j++) {
        output +="<td class='dynamicTableheading' colspan=" + headColNum[j] + ">" + ColumnsAlias[j] +"</td>";
        
    }
    
    output +="</tr><tr>"
    for (var i = 0; i < sourTableColumnsAlias.length; i++) {
        output += "<td class='dynamicTableheading'>" + sourTableColumnsAlias[i] +"</td>";
    }
    output += "</tr></thead><tbody id='Tbody_" + destTableId + "'>";

    // --------------- BODY -----------------

    for (var j = 0; j < sourTable.length; j++) {
        if (sourTable[j] != undefined) {
            nLine++;
            output += "<tr id='tr" + j + "' onclick='getRowData(this," + j +")'  "+
                      "onMouseover=cursOver(this,"+j+") onMouseout=cursOut(this,"+j+") >";
            for (var i = 0;  i < sourTableColumns.length; i++) {
                fieldName = sourTableColumns[i];
                if (i==0 && sourTableColumnsAlias[i] == "#")
                    output += "<td  align='center' class='dynamicdatagrid' ><font face='Arial Unicode MS' color='#000000'> " + nLine + "</font></td>";
                else
                    output += "<td  align='center' class='dynamicdatagrid' ><font face='Arial Unicode MS' color='#000000'> " + sourTable[j] [fieldName] + "</font></td>";
            }
        }
        output += "</tr>";
    }

    output += "</tbody></table>";
    document.getElementById(destContainer).innerHTML = output;
}

function showTablePop(sourTable, sourTableColumns, sourTableColumnsAlias,
                      destContainer, destTableId) {
    var output = "<table id='Table_" + destTableId + "' width='100%' class='dynamicTable' align=CENTER><tr>";
    var fieldName;
    nLine  = 0;

    // -------------- HEADER ----------------

    for (var i = 0; i < sourTableColumnsAlias.length; i++) {
        output += "<td class='columnheading'>" + sourTableColumnsAlias[i] +"</td>";
    }
    output += "</tr><tbody id='Tbody_" + destTableId + "'>";

    // --------------- BODY -----------------

    for (var j = 0; j < sourTable.length; j++) {
        if (sourTable[j] != undefined) {
            nLine++;
            output += "<tr id='tr" + j + "' onclick='getRowData(this," + j +")'  "+
                      "onMouseover=cursOver(this,"+j+") onMouseout=cursOut(this,"+j+") >";
            for (var i = 0;  i < sourTableColumns.length; i++) {
                fieldName = sourTableColumns[i];
                if (i==0 && sourTableColumnsAlias[i] == "#")
                    output += "<td  align='center' class='F0000008BFFpt' ><font face='Arial Unicode MS' color='#000000'> " + nLine + "</font></td>";
                else
                    output += "<td  align='center' class='F0000008BFFpt' ><font face='Arial Unicode MS' color='#000000'> " + sourTable[j] [fieldName] + "</font></td>";
            }
        }
        output += "</tr>";
    }

    output += "</tbody></table>";
    document.getElementById(destContainer).innerHTML = output;
}


// ----------- -------------------- ----------
function showAddTablePlus(sourTableTitle, sourTableNum, sourTable, sourTableColumns, sourTableColumnsAlias,
                          destContainer, destTableId,NumOfButtons) {
    var output = "<table id='Table_" + destTableId + "' border=0 width='100%' class='dynamicAddTable' align=CENTER><tr>";
    var fieldName;
    nLine  = 0;
    var nColumns = sourTableColumnsAlias.length;



    



    // -------------- HEADER 0 ----------------
    if (sourTableTitle !="") {
        output += "<td class='dynamicAddTableheading' colspan=" + nColumns + " align='center'>" +
                  sourTableTitle +"</td></tr><tr>";
    }



    // -------------- HEADER ----------------
    for (var i = 0; i < nColumns; i++) {
        output += "<td class='dynamicAddTableheading'>" + sourTableColumnsAlias[i] +"</td>";
    }
    output += "</tr><tbody id='Tbody_" + destTableId + "'>";
    // output += "</tr><tbody id='Tbody_" + destTableId + "'><tr><td colspan=3><div class='scrolltable' style='height:150px;'><table width='100%' class='dynamicscrollTable'  border='0' align=CENTER>";

    // --------------- BODY -----------------
    for (var j = 0; j < sourTable.length; j++) {
        if (sourTable[j] != undefined) {
            nLine++;
            output += "<tr id='tr" + j + "' onclick='getRowData" + sourTableNum + "(this," + j +")'  "+
                      "onMouseover=cursOver" + sourTableNum + "(this,"+j+") onMouseout=cursOut" + sourTableNum + "(this,"+j+") >";
            for (var i = 0;  i < sourTableColumns.length; i++) {
                fieldName = sourTableColumns[i];
                if (i==0 && sourTableColumnsAlias[i] == "#")
                    output += "<td  align='center' class='dynamicAdddatagrid'>" + nLine + "</td>";
                else
                    output += "<td  align='center' class='dynamicAdddatagrid'>" + sourTable[j] [fieldName] + "</td>";
            }
        }
        output += "</tr>";
    }
    


    
    output+="<tr><td colspan='"+sourTableColumns.length+"' align='center'>&nbsp;</td></tr>";
    if (!NumOfButtons) {
        // output+="<tr><td colspan='"+sourTableColumns.length+"' class='dynamicTableheading' align='center'><button id='btnDelete' value='Delete' onclick='delete_Click()' disabled='true'>Delete</button><button id='btnAddNew' value='AddNew' onclick='addNew_Click()'>Add New</button></td></tr>";
        output+="<tr><td align='left' class='dynamicheading'><button id='btnDelete' value='Delete' onclick='delete_Click()' disabled='true'>Delete</button></td><td class='dynamicheading' colspan='"+(sourTableColumns.length-2)+"'></td><td align='right' class='dynamicheading'><button id='btnAddNew' value='AddNew' onclick='addNew_Click()'>Cancel</button></td></tr>";
    }


    output += "</table></div></td></tr></tbody>"; 
//output += "</tbody></table>";
    document.getElementById(destContainer).innerHTML = output;
}


/* ----------- -------------------- ----------
function showAddTablePlus(sourTableTitle, sourTableNum, sourTable, sourTableColumns, sourTableColumnsAlias,
                   destContainer, destTableId,NumOfButtons) {
    var output = "<table id='Table_" + destTableId + "' border=0 width='100%' class='dynamicAddTable' align=CENTER><tr>";
    var fieldName;
    nLine  = 0;
    var nColumns = sourTableColumnsAlias.length;

    // -------------- HEADER 0 ----------------
    if (sourTableTitle !=""){
       output += "<td class='dynamicAddTableheading' colspan=" + nColumns + " align='center'>" +
                 sourTableTitle +"</td></tr><tr>";
    }

    

    // -------------- HEADER ----------------
    for (var i = 0; i < nColumns; i++) {
       output += "<td class='dynamicAddTableheading'>" + sourTableColumnsAlias[i] +"</td>";
    }
    output += "</tr><tbody id='Tbody_" + destTableId + "'>";
   // output += "</tr><tbody id='Tbody_" + destTableId + "'><tr><td colspan=3><div class='scrolltable' style='height:150px;'><table width='100%' class='dynamicscrollTable'  border='0' align=CENTER>";


    // --------------- BODY -----------------
    for (var j = 0; j < sourTable.length; j++) {
     if (sourTable[j] != undefined) {
          nLine++;
          output += "<tr id='tr" + j + "' onclick='getRowData" + sourTableNum + "(this," + j +")'  "+
                    "onMouseover=cursOver" + sourTableNum + "(this,"+j+") onMouseout=cursOut" + sourTableNum + "(this,"+j+") >";
          for (var i = 0;  i < sourTableColumns.length; i++) {
            fieldName = sourTableColumns[i];
            if (i==0 && sourTableColumnsAlias[i] == "#")
               output += "<td  align='center' class='dynamicAdddatagrid'>" + nLine + "</td>";
            else
               output += "<td  align='center' class='dynamicAdddatagrid'>" + sourTable[j] [fieldName] + "</td>";
          }
       }
       output += "</tr>";
    }

   

 /* -------------- HEADER ----------------

    for (var i = 0; i < sourTableColumnsAlias.length; i++) {
//Vwidth=sourTableColumnsAlias[i].length+5;
       //output += "<td align='left' class='dynamicscrollTableheading' id='td_"+i+"'>" + sourTableColumnsAlias[i] +"</td>";
       output += "<td class='dynamicAddTableheading'>" + sourTableColumnsAlias[i] +"</td>";
    }
    output += "</tr><tbody id='Tbody_" + destTableId + "'><tr><td colspan="+sourTableColumnsAlias.length+"><div class='scrolltable' style='height:150px;'><table width='100%' class='dynamicscrollTable'  border='0' align=CENTER>";

    // --------------- BODY -----------------
    for (var j = 0, k=0; j < sourTable.length; j++) {
    
        if (sourTable[j] != undefined) {
          nLine++;
          output += "<tr id='tr" + j + "' onclick='getRowData" + sourTableNum + "(this," + j +")'  "+
                    "onMouseover=cursOver" + sourTableNum + "(this,"+j+") onMouseout=cursOut" + sourTableNum + "(this,"+j+") >";
          for (var i = 0;  i < sourTableColumns.length; i++) {
            fieldName = sourTableColumns[i];
            if (i==0 && sourTableColumnsAlias[i] == "#")
               output += "<td  align='center' class='dynamicAdddatagrid'>" + nLine + "</td>";
            else
               output += "<td  align='center' class='dynamicAdddatagrid'>" + sourTable[j] [fieldName] + "</td>";
          }
       }
       output += "</tr>";
    }
    

    output += "</table></div></td></tr></tbody>";

    output+="<tr><td colspan='"+sourTableColumns.length+"' align='center'>&nbsp;</td></tr>";
    if (!NumOfButtons) {
       // output+="<tr><td colspan='"+sourTableColumns.length+"' class='dynamicTableheading' align='center'><button id='btnDelete' value='Delete' onclick='delete_Click()' disabled='true'>Delete</button><button id='btnAddNew' value='AddNew' onclick='addNew_Click()'>Add New</button></td></tr>";
       output+="<tr><td align='left' class='dynamicheading'><button id='btnDelete' value='Delete' onclick='delete_Click()' disabled='true'>Delete</button></td><td class='dynamicheading' colspan='"+(sourTableColumns.length-2)+"'></td><td align='right' class='dynamicheading'><button id='btnAddNew' value='AddNew' onclick='addNew_Click()'>Cancel</button></td></tr>";
        }
        
        
output += "</table></div></td></tr></tbody>"; 
//output += "</tbody></table>";
document.getElementById(destContainer).innerHTML = output;
}*/

function showAddTablePlus2(sourTableTitle, sourTableNum, sourTable, sourTableColumns, sourTableColumnsAlias,
                           destContainer, destTableId,NumOfButtons) {
    var output = "<table id='Table_" + destTableId + "' border=0 width='100%' class='dynamicAddTable' align=CENTER><tr>";
    var fieldName;
    nLine  = 0;
    var nColumns = sourTableColumnsAlias.length;

    // -------------- HEADER 0 ----------------
    if (sourTableTitle !="") {
        output += "<td class='dynamicAddTableheading' colspan=" + nColumns + " align='center'>" +
                  sourTableTitle +"</td></tr><tr>";
    }

    // -------------- HEADER ----------------
    for (var i = 0; i < nColumns; i++) {
        output += "<td class='dynamicAddTableheading'>" + sourTableColumnsAlias[i] +"</td>";
    }
    output += "</tr><tbody id='Tbody_" + destTableId + "'>";

    // --------------- BODY -----------------
    for (var j = 0; j < sourTable.length; j++) {
        if (sourTable[j] != undefined) {
            nLine++;
            output += "<tr id='tr" + j + "' onclick='getRowData" + sourTableNum + "(this," + j +")'  "+
                      "onMouseover=cursOver" + sourTableNum + "(this,"+j+") onMouseout=cursOut" + sourTableNum + "(this,"+j+") >";
            for (var i = 0;  i < sourTableColumns.length; i++) {
                fieldName = sourTableColumns[i];
                if (i==0 && sourTableColumnsAlias[i] == "#")
                    output += "<td  align='center' class='dynamicAdddatagrid'>" + nLine + "</td>";
                else
                    output += "<td  align='center' class='dynamicAdddatagrid'>" + sourTable[j] [fieldName] + "</td>";
            }
        }
        output += "</tr>";
    }
    output+="<tr><td colspan='"+sourTableColumns.length+"' align='center'>&nbsp;</td></tr>";
    if (!NumOfButtons) {
        //if(sourTableNum==1)
        //output+="<tr><td colspan='"+sourTableColumns.length+"' class='dynamicTableheading' align='center'><button id='btnDelete1' value='Delete' onclick='delete1_Click()' disabled='true'>Delete</button><button id='btnAddNew1' value='AddNew' onclick='addNew1_Click()'>Add New</button></td></tr>";
        output+="<tr><td align='left' class='dynamicheading'><button id='btnDelete1' value='Delete' onclick='delete1_Click()' disabled='true'>Delete</button></td><td class='dynamicheading' colspan='"+(sourTableColumns.length-2)+"'></td><td align='right' class='dynamicheading'><button id='btnAddNew1' value='AddNew' onclick='addNew1_Click()'>Cancel</button></td></tr>";
    }
    //else output+="<tr><td colspan='"+sourTableColumns.length+"' class='dynamicTableheading' align='center'><button id='btnDelete1' value='Delete' onclick='delete_Click()' disabled='true'>Delete</button><button id='btnAddNew1' value='AddNew' onclick='addNew_Click()'>Add New</button></td></tr>";



    output += "</tbody></table>";
    document.getElementById(destContainer).innerHTML = output;
}


function showAddTablePlus22(sourTableTitle, sourTableNum, sourTable, sourTableColumns, sourTableColumnsAlias,
                            destContainer, destTableId,NumOfButtons) {
    var output = "<table id='Table_" + destTableId + "' border=0 width='100%' class='dynamicAddTable' align=CENTER><tr>";
    var fieldName;
    nLine  = 0;
    var nColumns = sourTableColumnsAlias.length;

    // -------------- HEADER 0 ----------------
    /*if (sourTableTitle !=""){
       output += "<td class='dynamicAddTableheading' colspan=" + nColumns + " align='center'>" +
                 sourTableTitle +"</td></tr><tr>";
    }*/

    // -------------- HEADER ----------------
    for (var i = 0; i < nColumns; i++) {
        output += "<td class='dynamicAddTableheading'>" + sourTableColumnsAlias[i] +"</td>";
    }
    output += "</tr><tbody id='Tbody_" + destTableId + "'>";

    // --------------- BODY -----------------
    for (var j = 0; j < sourTable.length; j++) {
        if (sourTable[j] != undefined) {
            nLine++;
            output += "<tr id='tr" + j + "' onclick='getRowData" + sourTableNum + "(this," + j +")'  "+
                      "onMouseover=cursOver" + sourTableNum + "(this,"+j+") onMouseout=cursOut" + sourTableNum + "(this,"+j+") >";
            for (var i = 0;  i < sourTableColumns.length; i++) {
                fieldName = sourTableColumns[i];
                if (i==0 && sourTableColumnsAlias[i] == "#")
                    output += "<td  align='center' class='dynamicAdddatagrid'>" + nLine + "</td>";
                else
                    output += "<td  align='center' class='dynamicAdddatagrid'>" + sourTable[j] [fieldName] + "</td>";
            }
        }
        output += "</tr>";
    }
    if (!NumOfButtons) {
        //if(sourTableNum==1)
        output+="<tr><td colspan='"+sourTableColumns.length+"' class='dynamicTableheading' align='center'><button id='btnDelete1' value='Delete' onclick='delete1_Click()' disabled='true'>Delete</button><button id='btnAddNew1' value='AddNew' onclick='addNew1_Click()'>Cancel</button></td></tr>";
    }
    //else output+="<tr><td colspan='"+sourTableColumns.length+"' class='dynamicTableheading' align='center'><button id='btnDelete1' value='Delete' onclick='delete_Click()' disabled='true'>Delete</button><button id='btnAddNew1' value='AddNew' onclick='addNew_Click()'>Add New</button></td></tr>";



    output += "</tbody></table>";
    document.getElementById(destContainer).innerHTML = output;
}


function createNewWindow(urlString,windowName,windowWidth,windowHeight,windowLeft,windowTop,enableScroll,enableResize)
{
    window.open(urlString, windowName, 'width='+windowWidth+', height='+windowHeight+', left='+windowLeft+', top='+windowTop+', scrollbars='+enableScroll+', resizable='+enableResize);
}


function showTablePlus(sourTableTitle, sourTableNum, sourTable, sourTableColumns, sourTableColumnsAlias,
                       destContainer, destTableId,NumOfButtons) {
    var output = "<table id='Table_" + destTableId + "' border=0 width='100%' class='dynamicTable' align=CENTER><tr>";
    var fieldName;
    nLine  = 0;
    var nColumns = sourTableColumnsAlias.length;

    // -------------- HEADER 0 ----------------
    if (sourTableTitle !="") {
        output += "<td class='dynamicTableheading' colspan=" + nColumns + " align='center'>" +
                  sourTableTitle +"</td></tr><tr>";
    }

    // -------------- HEADER ----------------
    for (var i = 0; i < nColumns; i++) {
        output += "<td class='dynamicTableheading'>" + sourTableColumnsAlias[i] +"</td>";
    }
    output += "</tr><tbody id='Tbody_" + destTableId + "'>";

    // --------------- BODY -----------------
    for (var j = 0; j < sourTable.length; j++) {
        if (sourTable[j] != undefined) {
            nLine++;
            output += "<tr id='tr" + j + "' onclick='getRowData" + sourTableNum + "(this," + j +")'  "+
                      "onMouseover=cursOver" + sourTableNum + "(this,"+j+") onMouseout=cursOut" + sourTableNum + "(this,"+j+") >";
            for (var i = 0;  i < sourTableColumns.length; i++) {
                fieldName = sourTableColumns[i];
                if (i==0 && sourTableColumnsAlias[i] == "#")
                    output += "<td  align='center' class='dynamicdatagrid'>" + nLine + "</td>";
                else
                    output += "<td  align='center' class='dynamicdatagrid'>" + sourTable[j] [fieldName] + "</td>";
            }
        }
        output += "</tr>";
    }
    if (!NumOfButtons) {
        //output+="<tr><td colspan='"+sourTableColumns.length+"' class='dynamicTableheading' align='center'><button id='btnDelete' value='Delete' onclick='delete_Click()' disabled='true'>Delete</button><button id='btnAddNew' value='AddNew' onclick='addNew_Click()'>Cancel</button></td></tr>";
    }



    output += "</tbody></table>";
    document.getElementById(destContainer).innerHTML = output;
}

function drawUnitNumOntd()
{
    var str="";
    str += "<tr><td class=columnheading>Unit No.&nbsp;&nbsp;";

    str += "<select class='scalarselect' id=selUnit>";//<option value=1>1<option value=2>2
    for (var i=1;i<=6;i++)
        str += "<option value="+i+">"+i;
    str += "</select></td></tr>";
    
    document.write(str)
}

function drawUnitNum()
{
    var str="";
    str += "<tr><td class=columnheading>Unit No.</td>";
    str += "<td class=inputfield>&nbsp;&nbsp;<select class='scalarselect'  id=selUnit>";//<option value=1>1<option value=2>2
    for (var i=1;i<=6;i++)
        str += "<option value="+i+">"+i;                                                                         // 
    //str += "</select></td></tr>";
    str += "</select></td></tr>";
    document.write(str)
}

function grayOut(val,id)
{
    if (val==true) {
        document.getElementById(id).disabled=false
        document.getElementById(id).style.backgroundColor="white"
    }

    else {
        document.getElementById(id).disabled=true
        document.getElementById(id).style.backgroundColor="#cccccc"

    }
}



function choosePortLag()
{
    var isPort=(document.getElementsByName('PortTrunkSelect')[0].checked);
    document.getElementById('selPort').disabled=!isPort;
    document.getElementById('selLag').disabled=isPort;
    document.getElementById('selUnit').disabled=!isPort;
}

function drawInterfaceWithOutLag()
{ var str="";
    //str += "<tr>";
    str += "<td nowrap class='columnheading' valign=top>Interface";
    str += "</td>";
    str += "<td class='scalardata'>";
    str += "&nbsp;Unit No.&nbsp;&nbsp;<select class='scalarselect'  id=selUnit>";//<option value=1>1<option value=2>2</select>";
    for (var i=1;i<=6;i++)
        str += "<option value="+i+">"+i;
    str += "</select>";

    str += "&nbsp;&nbsp;&nbsp;&nbsp;Port&nbsp;<select class='scalarselect' name='selPort' ID='selPort'>";
    for (var i = 1; i < 49; i++) {
        str += "<OPTION value='e"+i+"'>e"+ i +"</OPTION>";
    } 
    for (i=1 ; i<3 ; i++)
        str += "<OPTION value='g"+i+"'>g"+ i +"</OPTION>";
    str += "</select>";
    str += "</td>";
    //str += "</tr>";
    
    document.write(str)
}

function drawTargetWithOutLag()
{ var str="";
    //str += "<tr>";
    str += "<td nowrap class='columnheading' valign=top>Target Port";
    str += "</td>";
    str += "<td class='scalardata'>";
    str += "&nbsp;Unit No.&nbsp;&nbsp;<select class='scalarselect' id=selUnit>";//<option value=1>1<option value=2>2</select>";
    for (var i=1;i<=6;i++)
        str += "<option value="+i+">"+i;
    str += "</select>";

    str += "&nbsp;&nbsp;&nbsp;&nbsp;Port&nbsp;<select class='scalarselect'  name='selPort' ID='selPort'>";
    for (var i = 1; i < 49; i++) {
        str += "<OPTION value='e"+i+"'>e"+ i +"</OPTION>";
    } 
    for (i=1 ; i<3 ; i++)
        str += "<OPTION value='g"+i+"'>g"+ i +"</OPTION>";
    str += "</select>";
    str += "</td>";
    //str += "</tr>";
    
    document.write(str)
}
function drawsrcWithOutLag()
{ var str="";
    str += "<tr>";
    str += "<td nowrap class='columnheading' valign=top>Source Port";
    str += "</td>";
    str += "<td class='scalardata'>";
    str += "&nbsp;Unit No.&nbsp;&nbsp;<select class='scalarselect' id=srcUnit>";//<option value=1>1<option value=2>2</select>";
    for (var i=1;i<=6;i++)
        str += "<option value="+i+">"+i;
    str += "</select>";

    str += "&nbsp;&nbsp;&nbsp;&nbsp;Port&nbsp;<select class='scalarselect'  name='srcPort' ID='srcPort'>";
    for (var i = 1; i < 49; i++) {
        str += "<OPTION value='e"+i+"'>e"+ i +"</OPTION>";
    } 
    for (i=1 ; i<3 ; i++)
        str += "<OPTION value='g"+i+"'>g"+ i +"</OPTION>";
    str += "</select>";
    str += "</td>";
    str += "</tr>";
    
    document.write(str)
}

function drawInterface()          
{
    var str="";
    //str += "<tr>";
    str += "<td nowrap class='columnheading' valign=top>Interface";
    str += "</td>";
    str += "<td class='scalardata'> <input type='radio' value='unit' onClick=choosePortLag() checked id=radioPort name='PortTrunkSelect' onClick=''>";
    str += "&nbsp;Unit No.&nbsp;&nbsp;<select class='scalarselect' id=selUnit>";//<option value=1>1<option value=2>2</select>";
    for (var i=1;i<=6;i++)
        str += "<option value="+i+">"+i;
    str += "</select>";

    str += "&nbsp;&nbsp;&nbsp;&nbsp;Port&nbsp;<select class='scalarselect'  name='selPort' ID='selPort'>";
    for (var i = 1; i < 49; i++) {
        str += "<OPTION value='e"+i+"'>e"+ i +"</OPTION>";
    } 
    for (i=1 ; i<3 ; i++)
        str += "<OPTION value='g"+i+"'>g"+ i +"</OPTION>";
    str += "</select>";

    str += "<br><input type=radio value='lag' name='PortTrunkSelect' id=radioTrunk onClick=choosePortLag()>&nbsp;LAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    str += "<select class='scalarselect' disabled name='selLag' size='1' ID='selLag'>";

    for (var i = 1; i < 9; i++) {
        str += "<OPTION value='Lag"+i+"'>Lag"+ i +"</OPTION>;";
    } 
    str += "</select>&nbsp; <input type='hidden' id='txtInterface' name='txtInterface' value='' onClick=''>";
    str += " <input type='hidden' id='txtNum' name='txtNum' onClick=''>";
    str += "</td>";
    //str += "</tr>";
    
    document.write(str)
}
function drawInterface1()          
{
    var str="";
    //str += "<tr>";
    str += "<td nowrap class='columnheading' valign=top>Interface";
    str += "</td>";
    str += "<td class='scalardata'> <input type='radio' value='unit' onClick=choosePortLag() checked id=radioPort name='PortTrunkSelect' onClick=''>";
    str += "&nbsp;Unit No.&nbsp;&nbsp;<select class='scalarselect' id=selUnit>";//<option value=1>1<option value=2>2</select>";
    for (var i=1;i<=6;i++)
        str += "<option value="+i+">"+i;
    str += "</select>";

    str += "&nbsp;&nbsp;&nbsp;&nbsp;Port&nbsp;<select class='scalarselect'  name='selPort' ID='selPort'>";
    for (var i = 1; i < 49; i++) {
        str += "<OPTION value='e"+i+"'>e"+ i +"</OPTION>";
    } 
    for (i=1 ; i<3 ; i++)
        str += "<OPTION value='g"+i+"'>g"+ i +"</OPTION>";
    str += "</select>";

    str += "<br><input type=radio value='lag' name='PortTrunkSelect' id=radioTrunk onClick=choosePortLag()>&nbsp;LAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    str += "<select class='scalarselect' disabled name='selLag' size='1' ID='selLag'>";

    
    
    document.write(str)
}








function drawSInterface()          
{
    var str="";
    //str += "<tr>";
    str += "<td nowrap class='columnheading' valign=top>Source Interface";
    str += "</td>";
    str += "<td class='scalardata'> <input type='radio' value='unit' onClick=choosePortLag() checked id=radioPort name='PortTrunkSelect' onClick=''>";
    str += "&nbsp;Unit No.&nbsp;&nbsp;<select class='scalarselect' id=selUnit>";//<option value=1>1<option value=2>2</select>";
    for (var i=1;i<=6;i++)
        str += "<option value="+i+">"+i;
    str += "</select>";

    str += "&nbsp;&nbsp;&nbsp;&nbsp;Port&nbsp;<select class='scalarselect'  name='selPort' ID='selPort'>";
    for (var i = 1; i < 49; i++) {
        str += "<OPTION value='e"+i+"'>e"+ i +"</OPTION>";
    } 
    for (i=1 ; i<3 ; i++)
        str += "<OPTION value='g"+i+"'>g"+ i +"</OPTION>";
    str += "</select>";

    str += "<br><input type=radio value='lag' name='PortTrunkSelect' id=radioTrunk onClick=choosePortLag()>&nbsp;LAG&nbsp;&nbsp;";
    str += "<select class='scalarselect' disabled name='selLag' size='1' ID='selLag'>";

    for (var i = 1; i < 9; i++) {
        str += "<OPTION value='Lag"+i+"'>Lag"+ i +"</OPTION>;";
    } 
    str += "</select>&nbsp; <input type='hidden' id='txtInterface' name='txtInterface' value='' onClick=''>";
    str += " <input type='hidden' id='txtNum' name='txtNum' onClick=''>";
    str += "</td>";
    //str += "</tr>";
    
    document.write(str)
}

function getUnit()
{
    return(document.getElementById('selUnit').value)
}


function PaintButtonsNone()
{
    top.document.getElementById ('ButtonsDiv').innerHTML ="";
    
}

function showDiv(target,evnt,ths) {
    //alert(ths.);
    document.all[target].style.visibility = "visible";
    document.all[target].style.top=evnt.clientY+10;
    document.all[target].style.left=evnt.clientX-133;
    //document.all[target].style.top='50px';
    //document.all[target].style.left='50px';
}
function showDivlocation(target,evnt,ths) {
    //alert(ths.);
    document.all[target].style.visibility = "visible";
    document.all[target].style.top=evnt.clientY+9;
    document.all[target].style.left=evnt.clientX-191;
    //document.all[target].style.top='50px';
    //document.all[target].style.left='50px';
}

function showDivAll(target,evnt,ths) {
    //alert(ths.);
    document.all[target].style.visibility = "visible";
    document.all[target].style.top=evnt.clientY+13;
    document.all[target].style.left=evnt.clientX-156;
    //document.all[target].style.top='50px';
    //document.all[target].style.left='50px';
    document.getElementsByName('menu1txt')[0].focus()
}

function hideDiv(target) {
    document.all[target].style.visibility = "hidden";
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////Enable All , Disable All , Auto All ///////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////
function DrawDis_Ena_Auto(Mname,DivName)
{var str="";
    str+='<div style="position: static; "  id=MainDiv onclick=hideDiv("'+DivName+'")>';
    str+='                                  <div id="'+DivName+'" class="popHelpContainer">';
    str+='                                      <table cellpadding="0" cellspacing="0" border="0"   !border=2 style="border-right:2px; border-left:2px">';
    str+='                                          <tr bgcolor="#263997">';
    str+='                                              <td !class="popHelpBody" valign="top">';
    str+='                                                  <table cellpadding="0" cellspacing="0" border="0" !width="100%">';      
    str+='                                                      <tr>';
    str+='                                                          <td colspan="2" height="140" valign="top">';
    str+='                                                              <div !class="popHelpLanguageContainer">';
    str+='                                                                <br>';
    str+='                                                                  <table style="margin-left:4px" style="color=white; font-WEIGHT:bold;">';
    str+='                                                                    <tr><td><div onclick=hideDiv("'+DivName+'") style="cursor:pointer"  onmouseover=changeColorIn(this.parentNode) onmouseout=changeColorOut(this.parentNode)>Enable All</div></td></tr>';
    str+='                                                                    <tr><td ><div onclick=hideDiv("'+DivName+'") style="cursor:pointer" onmouseover=changeColorIn(this.parentNode) onmouseout=changeColorOut(this.parentNode)>Disable All</div></td></tr>';
    str+='                                                                    <tr><td><div onclick=hideDiv("'+DivName+'") style="cursor:pointer" onmouseover=changeColorIn(this.parentNode) onmouseout=changeColorOut(this.parentNode)>Auto All</div></td></tr>';
    str+='                                                                    </table>';
    str+='                                                                    <br>';
    str+='                                                              </div>';
    str+='                                                          </td>';
    str+='                                                      </tr>';
    str+='                                                  </table>';
    str+='                                              </td>';
    str+='                                          </tr>'; 
    str+='                                      </table>';
    str+='                                  </div>';
    str+=mapImg(Mname,DivName);
    document.write(str);
}  


////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////All__ ///////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////
function DrawAll__(Mname,DivName)
{var str="";
    str+='<div !style="position: static;" onblur=hideDiv("'+DivName+'")  id=MainDiv !onclick=hideDiv("'+DivName+'") !onmouseout=hideDiv("'+DivName+'") >';            
    str+='                                  <div id="'+DivName+'" class="popHelpContainer">';
    str+='                                      <table cellpadding="0" cellspacing="0" border="0" width=400px   !border=2 style="border-right:2px; border-left:2px">';
    str+='                                          <tr bgcolor="#263997">';
    str+='                                              <td !class="popHelpBody" valign="top">';
    str+='                                                  <table cellpadding="0" cellspacing="0" border="0" !width="100%">';      
    str+='                                                      <tr>';
    str+='                                                          <td colspan="2" !height="140"  valign="top">';
    str+='                                                              <div !class="popHelpLanguageContainer">';
    str+='                                                                <br>';
    str+='                                                                  <table style="margin-left:4px"  style="color=white; font-WEIGHT:bold;">';
    str+='                                                                           <tr><td style="color:white">All&nbsp;<input name="'+DivName+'txt" onblur=hideDiv("'+DivName+'") onkeydown=txtKeyDown(event,this,"'+DivName+'")></td></tr>';
    str+='                                                                    </table>';
    str+='                                                                    <br>';
    str+='                                                              </div>';
    str+='                                                          </td>';
    str+='                                                      </tr>';
    str+='                                                  </table>';
    str+='                                              </td>';
    str+='                                          </tr>'; 
    str+='                                      </table>';
    str+='                                  </div>';
    str+=mapImgAll(Mname,DivName);
    document.write(str);
}  
////////////////////////////////////////////////////////////////////////////////////////////
// //////////////////////////////Map Img////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////
// //////////////////////////////Map ImgAll////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
function mapImgAll(Name,DivName)
{var str="";
    str+="<map name="+Name+">"
    str+="<AREA shape=rect coords='4,4,10,8' href='#' style='cursor:pointer' onclick=javascript:showDivAll('"+DivName+"',event,this.parentNode);>";
    return(str);
}


function changeColorIn(ths)
{
    ths.style.color='#ffcc00';
    
}
function changeColorOut(ths)
{
    ths.style.color='#ffffff';
}
function txtKeyDown(evnt,ths,dvName)
{if (evnt.keyCode==13) {
        hideDiv(dvName);
        var txts=document.getElementsByName('menu1txt');
        for (var i=1;i<txts.length;i++)
            txts[i].value=txts[0].value;
    }
}
function changeTD(vlue,ths,dvName)
{
    hideDiv(dvName);
    // var tds=document.getElementsByName(ths.name);
    // alert(tds.length);
    //for(var i=2;i<tds.length;i++)
    // tds[i].innerHTML=vlue;
}
/*
function closeDiv()
{
    var x=setTimeOut('closeDivs()',10000)
    for(var i=0;i<DivElmnts.length;i++)
        hideDiv(DivElmnts[i]);
}*/
function ChangeAllClm(tblName,FRow,Clm,vlu)
{
    tbl=document.getElementById(tblName);
    for (var i=FRow;i<tbl.rows.length;i++) {
        if (tbl.rows[i].children[0].children[0].checked==true) { //alert(1);
            tbl.rows[i].children[Clm].innerHTML=vlu;
        }
    }
}
function KeyPress(evt,tblName,FRow,Clm,vlu)
{   
    if (evt.keyCode==13)
        ChangeAllClm(tblName,FRow,Clm,vlu)
}
function AddRow(row)
{

    var tbl=document.getElementById(tblName);
    var str="<tr>";
    if ((tbl.rows[tbl.rows.length-1].children[0].className=='tableField2')||(tbl.rows[tbl.rows.length-1].children[0].className=='tableField21')) {
        str+="<td nowrap class='tableField3' align='left'>"+tbl.rows[tbl.rows.length-1].children[0].innerHTML+"</td>"
        /*str+="<td nowrap class='tableField3' align='left'><input name=CBox_"
        str+=(tblName=='tbl1')?"1":"2";
        str+=" type=checkbox onClick='ChangeRowColor1(this)'>&nbsp;</td>";*/
        for (var i=1;i<tbl.rows[row].cells.length;i++)
            str+="<td nowrap class='messageTableGreyBorder' align='left'>&nbsp;"+tbl.rows[row].children[i].children[0].value+"&nbsp;</td>"   
    } else {
        str+="<td nowrap class='tableField2' align='left'>"+tbl.rows[tbl.rows.length-1].children[0].innerHTML+"</td>"
        //str+="<td nowrap class='tableField2' align='left'><input name=CBox_"
        //str+=(tblName=='tbl1')?"1":"2";
        //str+=" type=checkbox onClick='ChangeRowColor1(this)'>&nbsp;</td>";
        for (var i=1;i<tbl.rows[row].cells.length;i++) {
            if (tbl.rows[row].children[i].children[0].value=="")
                str+="<td nowrap class='messageTableWhiteBorder' align='left'>&nbsp;</td>";
            else
                str+="<td nowrap class='messageTableWhiteBorder' align='left'>&nbsp;"+tbl.rows[row].children[i].children[0].value+"&nbsp;</td>";
        }
    }
    str+="</tr>";
    tbl.parentNode.innerHTML=tbl.parentNode.innerHTML.substring (0,tbl.parentNode.innerHTML.length-16)+str+"</TBODY></TABLE>";
    
}


function DelRow(row)
{var tbl=document.getElementById(tblName);
    var num=2;
    var str='<table cellspacing="0" cellpadding="0" border="0" width="424" id="'+tblName+'">';
//Blue Rows
    for (var i=0;i<row;i++) {
        str+="<tr>"+tbl.rows[i].innerHTML+"</tr>";
    }
//////////////////////////////////////////////
    for (var i=row;i<tbl.rows.length;i++)
        if (tbl.rows[i].children[0].children[0].checked==false) {
            str+="<tr>";
            if (num%2==0) {
                str+="<td nowrap class='tableField2' align='left'><input name=CBox_1 type=checkbox onClick='ChangeRowColor1(this)'></td>";
                for (var j=1;j<tbl.rows[i].cells.length;j++)
                    //str+="<td nowrap class='messageTableWhiteBorder' align='left'>&nbsp;"+tbl.rows[i].children[j].innerHTML+"</td>";  
                    if (tbl.rows[i].children[j].innerHTML=="")
                        str+="<td nowrap class='messageTableWhiteBorder' align='left'>&nbsp;</td>";
                    else
                        str+="<td nowrap class='messageTableWhiteBorder' align='left'>"+tbl.rows[i].children[j].innerHTML+"</td>";

            } else {
                str+="<td nowrap class='tableField3' align='left'><input name=CBox_1 type=checkbox onClick='g(this)'></td>";
                for (var j=1;j<tbl.rows[i].cells.length;j++)
                    //str+="<td nowrap class='messageTableGreyBorder' align='left'>"+tbl.rows[i].children[j].innerHTML+"</td>";   
                    if (tbl.rows[i].children[j].innerHTML=="")
                        str+="<td nowrap class='messageTableGreyBorder' align='left'>&nbsp;</td>";
                    else
                        str+="<td nowrap class='messageTableGreyBorder' align='left'>"+tbl.rows[i].children[j].innerHTML+"</td>";
            }
            num++;
            str+="</tr>";
        }
    str+="</table>";    
    tbl.parentNode.innerHTML=str;
     for (var j=0;j<document.getElementsByName('TB').length;j++) {
            document.getElementsByName('TB')[j].disabled=false;
            document.getElementsByName('TB')[j].style.backgroundColor="#ffffff";
        }
      if(top.document.getElementById('b_delete')!=null)
      {top.document.getElementById('b_delete').src="images2/buttons/delete_off.gif";
      top.document.getElementById('b_delete').disabled=true;}
      if(top.document.getElementById('b_cancel')!=null)
      {top.document.getElementById('b_cancel').src="images2/buttons/cancel_off.gif";
      top.document.getElementById('b_cancel').disabled=true;}
       if(top.document.getElementById('b_apply')!=null)
      {top.document.getElementById('b_apply').src="images2/buttons/apply_off.gif";
      top.document.getElementById('b_apply').disabled=true;}
        if(top.document.getElementById('b_add')!=null)
      {top.document.getElementById('b_add').src="images2/buttons/add_on.gif";
      top.document.getElementById('b_add').disabled=false;}
}

function PaintButtons2(CancelClick,SubmitClick)
{if(NoFan!=0)
    return;
    var str="";
    if ((SubmitClick!="null")||(CancelClick!="null")) {
        str+='<table cellpadding="0" cellspacing="0" border="0"><tr>';
        if (CancelClick!="null") {
            str+='<td><img src="images2/button_cancel_off.gif" height="20" width="58" style="cursor:pointer;" onclick="' + CancelClick + '"></td>';
            str+='<td width="5"><img src="images2/1px-trans.gif" height="1" width="1"></td>';
        }
        if (SubmitClick!="null")
            str+='<td><img src="images2/submit_button_off.gif" height="20" width="58" style="cursor:pointer;" onclick="' + SubmitClick + '"></td>';
        str+='</tr></table>';
    }
    top.document.getElementById ('ButtonsDiv').innerHTML =str;
}

function EditRow(tblName,FRow,UniqueElm)
{
    CheckIfMultiSlct(tblName,FRow,UniqueElm);
    var EditRow=false;
    tbl=document.getElementById(tblName);
    for (var i=FRow;i<tbl.rows.length;i++) {
        if (tbl.rows[i].children[0].children[0].checked==true) { //alert(1);
            for (var j=1;j<tbl.rows[i].cells.length;j++) {//alert(4);
                if (tbl.rows[FRow-1].children[j].innerHTML!="")
                    if (tbl.rows[FRow-1].children[j].children[0].disabled!=true) {
                        if (tbl.rows[FRow-1].children[j].children[0].value=="")continue;
                        tbl.rows[i].children[j].innerHTML="&nbsp;"+tbl.rows[FRow-1].children[j].children[0].value+" ";
                    }
            }
            EditRow=true;
        }
    }
    ReturnTBEnable(UniqueElm);
    CancelAllParms();
    return EditRow; 

}
///////////////////////////////////////////////////////////////////////////
function CheckIfMultiSlct(tblName,FRow,UniqueElm)
{ var Count=0;
    var tbl=document.getElementById(tblName);
    if (UniqueElm==undefined)
        return 0;
    for (var i=FRow;i<tbl.rows.length;i++) {
        if (tbl.rows[i].children[0].children[0].checked==true) { //alert(1);
            Count++;
            if (Count>1) {
                document.getElementById (UniqueElm).disabled=true;
                return 0;
            }

        }
    }

}
function ReturnTBEnable(UniqueElm)
{if (UniqueElm==undefined)
        return 0;
    document.getElementById (UniqueElm).disabled=false;
}



function OnSubmit(UniqueElm)
{
    EditRow(tblName,FRow,UniqueElm)
}
function onsubmit1()
 {var str=CreateButtonStr("b_cancel","","cancel","off");
str+=CreateButtonStr("b_apply","onsubmit1()","apply","off");
PaintButtons(str);
 }
function PaintButtonsDefaulte(str1,str2,str3)
{if(NoFan!=0)
    return;
    var str="";
    if (str1!="") {
        str+='<table cellpadding="0" cellspacing="0" border="0"><tr>';
        str+='<td>'+str1+'</td>';
        str+='<td width="5"><img src="images2/1px-trans.gif" height="1" width="1"></td>';
    }
    if (str2!="") {
        str+='<td>'+str1+'</td>';
        str+='<td width="5"><img src="images2/1px-trans.gif" height="1" width="1"></td>';
    }
    if (str3!="") {
        str+='<td>'+str1+'</td>';
        str+='<td width="5"><img src="images2/1px-trans.gif" height="1" width="1"></td>';
    }
    str+='</tr></table>';
    top.document.getElementById ('ButtonsDiv').innerHTML =str;
}

function GrayRowForBtn(tbl)
{ alert("3 buttons");
/*

    if (tbl==null)
        tbl=tblName;
    
    var str="";

    str+='<table !bgcolor=#d9d9d9 width=100% id="tblbtn"><tr height=30>';
    str+='<td nowrap align=right class="black11" !style="background-color: #d9d9d9;">&nbsp;&nbsp;&nbsp;';
    str+='<img src="images2/AddBtn.gif" onclick=document.mainFrame.del("'+tbl+'",'+(FRow-1)+') style=cursor:pointer>&nbsp;&nbsp;';
    str+='<img src="images2/buttons/delete_on.gif" onclick=document.mainFrame.DelRow("'+tbl+'",'+FRow+') style=cursor:pointer>&nbsp;&nbsp;<img src="images2/buttons/button_apply_on.gif" height="20" width="58" style="cursor:pointer;" onclick="document.mainFrame.OnSubmit()">&nbsp;</tr></table>';
    top.document.getElementById ('ButtonsDiv').innerHTML=str;*/
}


function GrayRowForBtn2(tbl)
{ if (tbl==null)
        tbl=tblName;

    var str="";

    str+='<table bgcolor=#d9d9d9 width=100% id="tblbtn"><tr height=30 valign=middle>';
    str+='<td nowrap align=right class="black11" style="background-color: #d9d9d9;">&nbsp;&nbsp;&nbsp;';
    str+='<img src="../images2/AddBtn.gif" onclick=AddRow("'+tbl+'",'+(FRow-1)+') style=cursor:pointer>&nbsp;&nbsp;';
    str+='<img src="../images2/RemoveBtn.gif" onclick=DelRow("'+tbl+'",'+FRow+') style=cursor:pointer>&nbsp;</tr></table>';
    document.write(str);
}

function FillElements(rowSlctd)
{
   // if (rowSlctd.name=="CBox_1")
 
        tbl=document.getElementById(tblName);
  //  else

       // tbl=document.getElementById(tblName2);   
    rowSlctd=rowSlctd.parentNode.parentNode; 
    //alert(tbl.rows[FRow-1].innerHTML);
    for (var i=1;i<tbl.rows[FRow-1].cells.length;i++)
       if (tbl.rows[FRow-1].children[i].innerHTML!="")
           { tbl.rows[FRow-1].children[i].children[0].value=rowSlctd.children[i].innerText.substr(1,rowSlctd.children[i].innerText.length-2);
       }

       }

function ElementsDefaultVlu(rowSlctd)
{   
    //if (rowSlctd.name=="CBox_1")
        tbl=document.getElementById(tblName);
   // else
        //tbl=document.getElementById(tblName2); 

   
    for (var i=1;i<tbl.rows[FRow-1].cells.length;i++)
        if (tbl.rows[FRow-1].children[i].innerHTML!="")
            tbl.rows[FRow-1].children[i].children[0].value="";
}
var tblName2="";
function CancelAllParms()
{   
    
    tbl=document.getElementById(tblName);
    
    for (var i=1;i<tbl.rows[FRow-1].cells.length;i++)
        if (tbl.rows[FRow-1].children[i].innerHTML!="")
            tbl.rows[FRow-1].children[i].children[0].value="";
         for (var j=0;j<document.getElementsByName("CBox_1").length;j++)
        if (document.getElementsByName("CBox_1")[j].checked==true)
            {document.getElementsByName("CBox_1")[j].checked=false;
            document.getElementsByName("CBox_1")[j].onclick ();}

    if (tblName2!="") {
        tbl=document.getElementById(tblName2); 
        
        for (var i=1;i<tbl.rows[FRow-1].cells.length;i++)
            if (tbl.rows[FRow-1].children[i].innerHTML!="")
                tbl.rows[FRow-1].children[i].children[0].value="";
        for (var j=0;j<document.getElementsByName("CBox_2").length;j++)
        if (document.getElementsByName("CBox_2")[j].checked==true)
            {document.getElementsByName("CBox_2")[j].checked=false;
            document.getElementsByName("CBox_2")[j].onclick ();}
       
    }
}

function CreateButtonStr(IdBtn,OnClck,Vlue,Stat)
{if(Stat==null)Stat="on";
    var str="<img src='images2/buttons/"+Vlue+"_"+Stat+".gif' onclick='";
    if(OnClck!="")
    str+="document.mainFrame."+OnClck;
    str+="' id='"+IdBtn+"' style='cursor:pointer'>&nbsp;&nbsp;";
    
    return(str);
}
function CreateEditblBtns()
{
        
 var str="";
     str+='<img id="b_Add" src="images2/buttons/add_on.gif" onclick=document.mainFrame.AddRow('+(FRow-1)+') style=cursor:pointer>&nbsp;&nbsp;';
     str+='<img id="b_delete" src="images2/buttons/delete_off.gif" disabled onclick=document.mainFrame.DelRow('+FRow+') style=cursor:pointer>&nbsp;&nbsp;';
     str+='<img id="b_cancel" src="images2/buttons/cancel_off.gif" disabled height="20" width="58" style="cursor:pointer;" onclick="document.mainFrame.CancelAllParms();">&nbsp;';

     str+='<img id="b_apply" src="images2/buttons/apply_off.gif" disabled height="20" width="58" style="cursor:pointer;" onclick="document.mainFrame.OnSubmit();">&nbsp;';
   
     return(str);
    
}
function PaintButtons(str)
{   
    top.document.getElementById ('ButtonsDiv').innerHTML=str;
   //alert(str); 
}


function ChangeRowColorBinding(rowSelected)
{var NumRows=0;
    for (var j=1;j<document.getElementsByName(rowSelected.name).length;j++)
        if (document.getElementsByName(rowSelected.name)[j].checked==true)
            NumRows++;
    var myRow = rowSelected.parentNode.parentNode;

    var i;


    if (rowSelected.checked==true) {
        for (i=0;i<myRow.children.length;i++) {
            myRow.children[i].className=myRow.children[i].className+"1";
        }
         if(top.document.getElementById('b_delete')!=null)
      {top.document.getElementById('b_delete').src="images2/buttons/delete_on.gif";
      top.document.getElementById('b_delete').disabled=false;}
           if(top.document.getElementById('b_cancel')!=null)
      {top.document.getElementById('b_cancel').src="images2/buttons/cancel_on.gif";
      top.document.getElementById('b_cancel').disabled=false;}
        
    } else {
        
        for (i=0;i<myRow.children.length;i++) {
            //alert(myRow.children[i].className+"-----"+myRow.children[i].className.substring(0,myRow.children[i].className.length));
            if (myRow.children[i].className.substring(myRow.children[i].className.length-1,myRow.children[i].className.length)=="1")
                myRow.children[i].className=myRow.children[i].className.substring(0,myRow.children[i].className.length-1); }
      if(NumRows==0)
          if(top.document.getElementById('b_delete')!=null)
      {top.document.getElementById('b_delete').src="images2/buttons/delete_off.gif";
      top.document.getElementById('b_delete').disabled=true;}
             if(top.document.getElementById('b_cancel')!=null)
      {top.document.getElementById('b_cancel').src="images2/buttons/cancel_off.gif";
      top.document.getElementById('b_cancel').disabled=true;}
    }

   
}
function GetParamByName(paramName, paramsStr){
    var str;
    var params = paramsStr.split("&");
    //alert(paramsStr);
    for (var i=0; i<params.length; i++) {
         curParam= params[i].split("=");
         //alert(curParam.length);
        
         if (curParam.length > 1) {
             if(curParam[0]==paramName) { 
                 str = curParam[1].replace ("%20"," ");
                 //alert(str);
                 return str;
             }
             //alert("curParam[0]="+curParam[0]+" curParam[1]="+curParam[1]);
         } return '';
    } 
    return '';
}
function PageClicked()
{
          if(top.document.getElementById('b_apply')!=null)
      {top.document.getElementById('b_apply').src="images2/buttons/apply_on.gif";
      top.document.getElementById('b_apply').disabled=false;}
             if(top.document.getElementById('b_cancel')!=null)
      {top.document.getElementById('b_cancel').src="images2/buttons/cancel_on.gif";
      top.document.getElementById('b_cancel').disabled=false;}
      if(top.document.getElementById('b_add')!=null)
      {top.document.getElementById('b_add').src="images2/buttons/add_on.gif";
      top.document.getElementById('b_add').disabled=false;}
}
function DrawDis_Ena(Mname,DivName,DivWidth)
{

    var str="";
    str+='<div style="position: static;"   id=MainDiv !onclick=hideDiv("'+DivName+'") >';
    str+='                                  <div id="'+DivName+'" class="popHelpContainer" >';
    str+='                                      <table cellpadding="0" cellspacing="0" border="1" width="40">';
    str+='                                          <tr !bgcolor="#263997">';
    str+='                                              <td !class="popHelpBody" valign="top">';
    str+='                                                  <table cellpadding="0" cellspacing="0" border="0" width="40">';       
    str+='                                                      <tr>';
    str+='                                                          <td colspan="2" !height="140" valign="top" !bgcolor=red width='+DivWidth+'>';
    str+='                                                              <div !class="popHelpLanguageContainer" >';
  //str+='                                                                <br>';
    str+='                                                                  <table border=0 cellpadding="0" cellspacing="0"  style="margin-left:0px margin-top:30px; margin-bottom:0px" style="color=Black; " >';
    str+='                                                                    <tr><td><div name="'+DivName+'td"  style="cursor:pointer"  !onmouseover=changeColorIn(this.parentNode) !onmouseout=changeColorOut(this.parentNode) !onclick=isCheaced()><input type=checkbox name=cbkTLV value="Port Description">Port&nbsp;Description</div></td></tr>';
    str+='                                                                    <tr><td ><div name="'+DivName+'td"  style="cursor:pointer" !onmouseover=changeColorIn(this.parentNode) !onmouseout=changeColorOut(this.parentNode) !onclick=changeTD()><input type=checkbox name=cbkTLV value="System Name">System&nbsp;Name</div></td></tr>';
     str+='                                                                   <tr><td><div name="'+DivName+'td"  style="cursor:pointer"  !onmouseover=changeColorIn(this.parentNode) !onmouseout=changeColorOut(this.parentNode) !onclick=changeTD()><input type=checkbox name=cbkTLV value="System Description">System&nbsp;Description</div></td></tr>';
    str+='                                                                    <tr><td ><div name="'+DivName+'td"  style="cursor:pointer" !onmouseover=changeColorIn(this.parentNode) !onmouseout=changeColorOut(this.parentNode) !onclick=changeTD()><input type=checkbox name=cbkTLV value="System Capabilities">System&nbsp;Capabilities</div></td></tr>';
    str+='                                                                   <tr><td><div name="'+DivName+'td"  style="cursor:pointer"  !onmouseover=changeColorIn(this.parentNode) !onmouseout=changeColorOut(this.parentNode) !onclick=changeTD()><input type=checkbox name=cbkTLV value="802.3 MAC-PHY">802.3&nbsp;MAC-PHY</div></td></tr>';
    str+='                                                                    </table>';
   // str+='                                                                    <br>';
    str+='                                                              </div>';
    str+='                                                          </td>';
    str+='                                                      </tr>';
    str+='                                                  </table>';
    str+='                                              </td>';
    str+='                                          </tr>'; 
    str+='                                      </table>';
    str+='                                  </div>';
    str+=mapImg(Mname,DivName);
    document.write(str);
}  

function mapImg(Name,DivName)
{

    var str="";
    str+="<map name="+Name+">"
    str+="<AREA shape=rect coords='132,8,140,14' href='#' style='cursor:pointer' onclick=javascript:showDiv('"+DivName+"',event,this.parentNode);>";
    return(str);
}
function DrawDis_Location(Mname,DivName,DivWidth)
{

    var str="";
    str+='<div style="position: static;"   id=MainDiv !onclick=hideDiv("'+DivName+'") >';
    str+='                                  <div id="'+DivName+'" class="popHelpContainerLocation" >';
    str+='                                      <table cellpadding="0" cellspacing="0" border="1" width="40">';
    str+='                                          <tr !bgcolor="#263997">';
    str+='                                              <td !class="popHelpBody" valign="top">';
    str+='                                                  <table cellpadding="0" cellspacing="0" border="0" width="40">';       
    str+='                                                      <tr>';
    str+='                                                          <td colspan="2" !height="140" valign="top" !bgcolor=red width='+DivWidth+'>';
    str+='                                                              <div !class="popHelpLanguageContainer" >';
  //str+='                                                                <br>';
    str+='                                                                  <table border=0 cellpadding="0" cellspacing="0"  style="margin-left:0px margin-top:30px; margin-bottom:0px" style="color=Black; " >';
    str+='  <tr><td><div name="'+DivName+'td"  style="cursor:pointer"><table><tr><td width=120px><input type=radio name=rblocation value="Coordinates">Coordinates</td><td><input type=text name=txtlocation maxlength=160></td></tr></table></div></td></tr>';
    str+='  <tr><td><div name="'+DivName+'td"  style="cursor:pointer"><table><tr><td width=120px><input type=radio name=rblocation value="Civic">Civic</td><td><input type=text name=txtlocation maxlength=160></td></tr></table></div></td></tr>';
    str+='  <tr><td><div name="'+DivName+'td"  style="cursor:pointer"><table><tr><td width=120px><input type=radio name=rblocation value="ECS ELIN">ECS&nbsp;ELIN</td><td><input type=text name=txtlocation maxlength=160></td></tr></table></div></td></tr>';
    str+='                                                                    </table>';
   // str+='                                                                    <br>';
    str+='                                                              </div>';
    str+='                                                          </td>';
    str+='                                                      </tr>';
    str+='                                                  </table>';
    str+='                                              </td>';
    str+='                                          </tr>'; 
    str+='                                      </table>';
    str+='                                  </div>';
    str+=mapImgLocation(Mname,DivName);
    document.write(str);
}  
function mapImgLocation(Name,DivName)
{

    var str="";
    str+="<map name="+Name+">"
    str+="<AREA shape=rect coords='210,8,230,14' href='#' style='cursor:pointer' onclick=javascript:showDivlocation('"+DivName+"',event,this.parentNode);>";
    return(str);
}
