// Change Log Please and the date and comment the function changed of added
//
// Copyright (c) 2002-2006 by Cisco Systems, Inc.

// Global Variables
MSG_NONE = "-------- None Selected ----------";
MSG_NO_FEATURES_SELECTED = "You do not have any features selected.  Please add "
    + "at least 1 feature before continuing.";
MSG_NO_FEATURES_TO_ADD = "You have not selected any features to add.  Please choose "
    + "features from the Features Available box.";
MSG_NO_FEATURES_TO_DESC = "You have not selected any features to describe.  Please choose "
    + "features from the Features Available box.";
MSG_REMOVE_SELECTED = "Are you sure you want to clear all selected features?";

// Start Section of Sajid's JS


// Start of moved functions from CISS ciss.js file

function displayFeature(featName) { 
     document.istform.feature_Name.value = featName 
     document.istform.submit() 
} 

function clearSelect(config) { 
      if(config == 'false') { 
       for( i = 0; i < document.istform.techSelect.length ; i++) 
         document.istform.techSelect.options[0].selected=false 
       document.istform.techSelect.options[0].selected=true  
      }      return true 
}

function updatePage(val,config,searchStr) { 

        if(searchStr == 'true' && config == 'true') 
        {
                if(document.istform.Search_Str != null){
                   document.istform.Search_Str.value = ''       
                }
        }

   if(config == 'false') 
      document.istform.Search_Str.value = '' 
     if (val == 1 && document.istform.subTechSelect != null ) { 
       for( i = 0; i < document.istform.subTechSelect.length ; i++) 
         document.istform.subTechSelect.options[0].selected=false 
       document.istform.subTechSelect.options[0].selected=true 
     } 
   if(searchStr == 'true' && config == 'false') 
      document.istform.Search_Str.value = '' 
      document.istform.submit() 
} 

function createURL(life) { 
                var URL = '' 
           if(document.istform.release.options[document.istform.release.selectedIndex].value == 0){ 
              alert('Please select a Major Release.'); 
              return false 
           }  
        if(life == 'dev'){ 
                        URL = 'http://cco-dev.cisco.com/pcgi-bin/Support/FeatureNav/FNCfgFeat.pl?H_RBut=MR&HMR_DDM=' + document.istform.release.options[document.istform.release.selectedIndex].value +'&Q1Submit=CONTINUE' 
                } else 
                  if(life == 'stage'){ 
                URL = 'http://cco-stage.cisco.com/pcgi-bin/Support/FeatureNav/FNCfgFeat.pl?H_RBut=MR&HMR_DDM=' + document.istform.release.options[document.istform.release.selectedIndex].value +'&Q1Submit=CONTINUE' 
                  } else 
            if(life == 'prod'){ 
                URL = 'http://www.cisco.com/pcgi-bin/Support/FeatureNav/FNCfgFeat.pl?H_RBut=MR&HMR_DDM=' + document.istform.release.options[document.istform.release.selectedIndex].value +'&Q1Submit=CONTINUE' 
                   } 
                open_fn_window(URL ,'CISS'); 
}

function checkAll(checkbx, checkallbx) { 
     if(checkallbx.checked) { 
       for (i = 0; i < document.istform.elements.length; i++) { 
              var e = document.istform.elements[i] 
                if(e.name == checkbx) 
            e.checked = true; 
       } 
     } else { 
       for (i = 0; i < document.istform.elements.length; i++) { 
              var e = document.istform.elements[i] 
              if(e.name == checkbx) 
           e.checked = false; 
       } 
     } 
}

function showImages(isCfg,life){ 
     var url = '' 
     if(life == 'dev'){ 
          if(isCfg == 'true'){ 
              url = 'http://cco-dev.cisco.com/pcgi-bin/Support/FeatureNav/FNCfgFeat.pl?HStartForm2=True&Q2Submit=CONTINUE' 
          } else { 
              url = 'http://cco-dev.cisco.com/cgi-bin/Support/FeatureNav/FN1.pl?HStartForm2=True&Q2Submit=CONTINUE' 
          } 
          } else 
            if(life == 'stage'){ 
            if(isCfg == 'true'){ 
               url = 'http://cco-stage.cisco.com/pcgi-bin/Support/FeatureNav/FNCfgFeat.pl?HStartForm2=True&Q2Submit=CONTINUE' 
            } else { 
               url = 'http://cco-stage.cisco.com/cgi-bin/Support/FeatureNav/FN1.pl?HStartForm2=True&Q2Submit=CONTINUE' 
            } 
            } else 
         if(life == 'prod'){ 
          if(isCfg == 'true'){ 
              url = 'http://www.cisco.com/pcgi-bin/Support/FeatureNav/FNCfgFeat.pl?HStartForm2=True&Q2Submit=CONTINUE' 
          } else { 
              url = 'http://www.cisco.com/cgi-bin/Support/FeatureNav/FN1.pl?HStartForm2=True&Q2Submit=CONTINUE' 
          } 
         } 
     var featSel ='' 
     var imgCnt = 0 
     for (i = 0; i < document.istform.elements.length; i++) { 
            var e = document.istform.elements[i] 
       if(e.type=='checkbox' && e.value != 'xyz' && e.checked) { 
         featSel = featSel + '&HFeatSelected=' + e.value 
         imgCnt++ 
       } 
     }  
     if(featSel==''){ 
       alert('Please select the features first') 
     } else { 
       if(imgCnt > 20) { 
         alert('You have selected more than 20. Please select less than 20 features') 
         return false 
       } 
       url = url + featSel 
       open_fn_window(url,'CISS') 
     } 
     return false 
}

function open_fn_window(url,winName) { 
        if(!winName) { winName = 'win'; } 
        WinHnd = window.open(url, winName, 'width=640,height=500,top=50,left=50,resizable=1,scrollbars=1,toolbar=1,menubar=1,status=1'); 
        WinHnd.focus() 
}

function openFNReleaseWnd(life,releaseid,majorRel) { 
                var URL = '' 
        if(life == 'dev'){ 
                        URL = 'http://cco-dev.cisco.com/pcgi-bin/Support/FeatureNav/FNCfgFeat.pl?HReleaseNumber=NS&HRN_But=Update&HReSelect=False&HReleaseId=0&HPlatformFamilyName=NS&HPlatformFamilyId=0&HFeatureSetName=NS&HFeatureSetId=0&HMajorRelease=' + majorRel + '&HDDMRelDet=' + releaseid 
                } else 
                  if(life == 'stage'){ 
                        URL = 'http://cco-stage.cisco.com/pcgi-bin/Support/FeatureNav/FNCfgFeat.pl?HReleaseNumber=NS&HRN_But=Update&HReSelect=False&HReleaseId=0&HPlatformFamilyName=NS&HPlatformFamilyId=0&HFeatureSetName=NS&HFeatureSetId=0&HMajorRelease=' + majorRel + '&HDDMRelDet=' + releaseid 
                  } else 
            if(life == 'prod'){ 
                        URL = 'http://www.cisco.com/pcgi-bin/Support/FeatureNav/FNCfgFeat.pl?HReleaseNumber=NS&HRN_But=Update&HReSelect=False&HReleaseId=0&HPlatformFamilyName=NS&HPlatformFamilyId=0&HFeatureSetName=NS&HFeatureSetId=0&HMajorRelease=' + majorRel + '&HDDMRelDet=' + releaseid 
                   } 
                open_fn_window(URL ,'CISS'); 
} 

// End of moved functions from CISS ciss.js file



function getFNfeats(stchar,selectall) { 
        if(selectall == 'detail')
                SelectAllCatg();
        document.feature_select.task.value = "AlphaSearch";
        document.feature_select.featStartsWith.value = stchar;  
        document.feature_select.SearchText.value = '';  
        document.feature_select.act.value = 'featSelect';
        //alert('getFNfeats()');
        document.feature_select.submit();
}

function getFNfeatsStr(selectall) {             
        //alert('getFNfeatsStr()')
        if(selectall == 'detail'){
                var retval = SelectAllCatg();
                //alert('retval =' + retval);
                if(retval == false){
                        //alert('inside false area');
                        document.feature_select.task.value = "TextSearch";
                        document.feature_select.featStartsWith.value = '';      
                        document.feature_select.act.value = 'featSelect';
                }       
        }
    if( document.feature_select.task.value != 'feature'){
                document.feature_select.task.value = "TextSearch";
                document.feature_select.featStartsWith.value = '';      
        }
}

function SelectAllCatg() {
  elem = document.feature_select.FeatSelected;
  len = elem.length;
  if (elem.options[0] != null) {
        for (i=0; i<len; i++) {
           elem.options[i].selected = true;
        }
  }
  if (len > 0)  {
          return true;
  } else {
          return false;
  }
}

function validate_for_select() {
  elem = document.feature_select.FeatSelected;
  len = elem.length;
  for (var k = len - 1; k >= 0; k--) {
   if(elem.options[k].value == -1){
         alert(MSG_NO_FEATURES_SELECTED);
         return false;
   }
  }
  if(len > 20){
         errstr = 'You have selected '+ len + ' features. The limit is 20. Please change the selection list'
         alert(errstr);
         return false;
  }              
  if (elem.options[0] == null) {
         alert(MSG_NO_FEATURES_SELECTED);
         return false;
  }
  document.feature_select.act.value = "feature";
  document.feature_select.task.value = "feature";
  //alert('validate_for_select()');
  return true;
}

function add_selection() {
  elem1 = document.feature_select.FeatAvailable;
  len1 = elem1.length;
  elem = document.feature_select.FeatSelected;
  len = elem.length;
  NotSelected = true;
  AddedFeatText = '';
  for (var j = 0; j < len1; j++) {
         if (elem1.options[j].selected) {
                NotSelected = false;
                break;
         }
  }
  
  if(NotSelected == false){
          for (var k = len - 1; k >= 0; k--) {
           if(elem.options[k].value == -1){
                 elem.options[k] = null;
           }
          }
  }
  
  for (var j = 0; j < len1; j++) {
         len = elem.length;
         if (elem1.options[j].selected) {
                select1 = elem1.options[j].text;
                value1 = elem1.options[j].value;
                FeatExists = false;
                if (elem.options[0] != null) {
                   i=0;
                   while (i<len) {
                          if (elem.options[i].value == value1) {
                                 FeatExists = true;
                          }
                          i++;
                   }
                }
                if (FeatExists == true) {
                   AddedFeatText += select1 + "\n";
                } else {
           if(value1 != -1){
                           opt_new = new Option(select1,value1);
                           elem.options[len] = opt_new;
                   }
                }
         }
  }
  if (NotSelected) {
         alert(MSG_NO_FEATURES_TO_ADD);
  } else {
         if (AddedFeatText != '') {
                //alert("The following Feature/s were previously added \n" + AddedFeatText);
         }
  }
}

function remove_selection() {
  var validEntries;
  
  elem = document.feature_select.FeatSelected;
  len = elem.length;

  SelectedCtr = 0;
  validEntries = 0;
  for (var j = len - 1; j >= 0; j--) {
      if( elem.options[j].text!=MSG_NONE ) {
         validEntries++;
        
         if (elem.options[j].selected && elem.options[j].text!=MSG_NONE ) {
                SelectedCtr++;
         }
      }
  }

  if( validEntries<1 ) {
    alert( "Sorry, there are no features to delete." );
    return;
  }
    
  if( SelectedCtr<1 ) {
    alert( "Sorry, you haven't selected any features to delete." );
    return;
  }
  
  message = "Remove " + SelectedCtr + " feature/s from the selected features?";
  answer =  window.confirm (message)
  if (answer == true) {
         for (var j = len - 1; j >= 0; j--) {
                if (elem.options[j].selected) {
                   if(elem.options[j].value != -1){
                           elem.options[j] = null;
                   }
                }
         }
         //if (!isOk) history.go(0);
  }
  elem = document.feature_select.FeatSelected;
  len = elem.length;
  if (len == 0)  {
         opt_new = new Option(MSG_NONE,'-1');
     elem.options[0] = opt_new;
  }
  if (SelectedCtr == 0) {
         alert("Please Select a features from Feature Selected Box to remove features");
  }
}

function reset_selection() {
  answer =  window.confirm (MSG_REMOVE_SELECTED);
  if (answer == true) {
         elem = document.feature_select.FeatSelected;
         len = elem.length;
         for (var j = len - 1; j >= 0; j--) {
           //if(elem.options[j].value != -1){
                 elem.options[j] = null;
           //}
         }
         opt_new = new Option(MSG_NONE,'-1');
     elem.options[0] = opt_new;
  }
}

function showFeatureDesc(){
  elem1 = document.feature_select.FeatAvailable;
  len1 = elem1.length;
  var featIds = '';
  var featCnt = 0;
  for (var j = 0; j < len1; j++) {
         if (elem1.options[j].selected) {
                if (featCnt == 0){
                        featIds = elem1.options[j].value;
                } else {
                        featIds += ',' +  elem1.options[j].value;
                }
                featCnt ++;
         }
  }
  if (featCnt == 0)  {
         alert(MSG_NO_FEATURES_TO_DESC);
  } else{
          var featdescURL = '/ITDIT/ISTMAIN/Dispatch?act=featdesc&task=display&featureId='+featIds;
          openLargePopup(featdescURL,'FeatureWin',300,400);
  }
}

function showNextFeatPage(selbox){ 
 pageSel = selbox.selectedIndex 
 pageSel++ 
 document.cfn_feature.pageNumber.selectedIndex = pageSel 
 document.cfn_feature.pageNumber1.selectedIndex = pageSel 
 document.cfn_feature.submit() 
} 
function showPrevFeatPage(selbox){ 
 pageSel = selbox.selectedIndex 
 pageSel-- 
 document.cfn_feature.pageNumber.selectedIndex = pageSel 
 document.cfn_feature.pageNumber1.selectedIndex = pageSel 
 document.cfn_feature.submit() 
} 

function onSelChangePageNum(selbox){
 pageSel = selbox.selectedIndex 
 document.cfn_feature.pageNumber.selectedIndex = pageSel 
 document.cfn_feature.pageNumber1.selectedIndex = pageSel 
 document.cfn_feature.submit() 
}


function featureOnSelectChange(selectNameImg){
        //showMessage();
        if( typeof(document.cfn_feature.orderBy) != "undefined") {                      
                document.cfn_feature.orderBy.options[document.cfn_feature.orderBy.selectedIndex].value = "R"                            
        }
        document.images[selectNameImg].src = 'http://www.cisco.com/swa/i/Please_wait.gif';
    if( typeof(document.cfn_feature.pageNumber) != "undefined") {
                        document.cfn_feature.pageNumber.selectedIndex = 0 ;
        }
        if( typeof(document.cfn_feature.pageNumber) != "undefined") {
                        document.cfn_feature.pageNumber1.selectedIndex = 0 ;
        }
        document.cfn_feature.submit();
}

// End Section of Sajid's JS


// Rizwan's code starts
   
   function openFNWindow(appurl,windowname){ 
     var appwindow = window.open( appurl , windowname, "toolbar=yes,status=yes,top=10,left=10,width=796,height=500,scrollbars=yes,resizable=yes,menubar=yes"); 
     appwindow.focus(); 
   } 
   function showNext(selbox){ 
         pageSel = selbox.selectedIndex 
    // pageSel = document.FN.pageNumber.selectedIndex 
     pageSel++ 
     document.FN.pageNumber.selectedIndex = pageSel 
     document.FN.pageNumber1.selectedIndex = pageSel 
     document.FN.submit() 
   } 
   function showPrev(selbox){ 
         pageSel = selbox.selectedIndex 
    // pageSel = document.FN.pageNumber.selectedIndex 
     pageSel-- 
     document.FN.pageNumber.selectedIndex = pageSel 
     document.FN.pageNumber1.selectedIndex = pageSel 
     document.FN.submit() 
   } 
        
        function onSelChangeRelPageNum(selbox){
                 pageSel = selbox.selectedIndex 
                 if( typeof(document.FN.pageNumber) != "undefined") {
                        document.FN.pageNumber.selectedIndex = pageSel; 
                 }
                 if( typeof(document.FN.pageNumber) != "undefined") {
                        document.FN.pageNumber1.selectedIndex = pageSel;
                 }
                 document.FN.submit() 
        }

   function changeSelect(){ 
     document.FN.totalNoOfImages.value = -1 
     document.FN.pageNumber.selectedIndex = 0 
     document.FN.submit() 
   } 


   function changeRlsPfFsMajRls(){ 
            if( typeof(document.FN.pageNumber) != "undefined") {
                        document.FN.pageNumber.selectedIndex = 0
                }

                if( typeof(document.FN.HDDMMajRelDet) != "undefined" ) {
                        if(document.FN.HDDMMajRelDet.selectedIndex  == 0){
                                document.FN.HDDMRelDet.selectedIndex  = 0
                        }
                }
            if( typeof(document.FN.OrdBy) != "undefined") {
                        document.FN.OrdBy.selectedIndex = 0
                }
                document.FN.HFS_But.value='Update'; 
                //showRlsMessage(); 
                document.FN.submit();
   }

   function changeRlsPfFs(){ 
            if( typeof(document.FN.pageNumber) != "undefined") {
                        document.FN.pageNumber.selectedIndex = 0
                }
            if( typeof(document.FN.pageNumber1) != "undefined") {
                        document.FN.pageNumber1.selectedIndex = 0
                }

            if( typeof(document.FN.OrdBy) != "undefined") {                     
                        document.FN.OrdBy.options[document.FN.OrdBy.selectedIndex].value = "R"                          
                }
                document.FN.HFS_But.value='Update'; 
                //showRlsMessage();
                document.FN.submit();
   }

   function ReSolveRB() {
       if ((document.FN.H_RBut.value == undefined) || (document.FN.H_RBut.value == "")) {
              document.FN.H_RBut.value = "MR";
       }
   }
   function ValidateQ1() {         
      switch (document.FN.H_RBut.value) {
        case "MR" :
           elem = document.FN.HMR_DDM;
           if (elem.options[0].selected) {
              alert("You have not selected a Cisco IOS Major Release.  Please choose one and then continue.");
              elem.focus();
              return false;
           }
           break;
        case "PF" :
           elem = document.FN.HPF_DDM;
           if (elem.options[0].selected) {
              alert("You have not selected a Platform.  Please choose one and then continue.");
              elem.focus();
              return false;
           }
           break;
        case "IM" :
           elem = document.FN.HIM_Text;
           if (elem.value == "") {
              alert("You have not selected an Image Name.  Please enter one and then continue.");
              elem.focus();
              return false;
           }
           break;
        case "PN" :
           elem = document.FN.HPN_Text;
           if (elem.value == "") {
              alert("You have not entered a Product Number.  Please enter one and then continue.");
              elem.focus();
              return false;
           }
           break;
      }
   return true;
   }

        function SATearOff (url, name, width, height) {
          window.name = 'FNMain';
          tearWin=window.open(url, name, 'personalbar=no,toolbar=yes,status=no,scrollbars=yes,resizable=yes,menubar=no,width=' + width + ',height=' + height);
          if(window.focus) {
                  tearWin.focus();
          }
        }

function MM_showHideLayers() { //v2.0
        var i, visStr, args, theObj;
        args = MM_showHideLayers.arguments;
        visStr   = args[1];
        if(document.layers){ //NN4
          theObj = 'document.'+args[0];
          theObj = eval(theObj);
          if (theObj) theObj.visibility = visStr;
        } else {
                if (document.all ) { //IE
              if (visStr == 'show') visStr = 'visible'; //convert vals
                  if (visStr == 'hide') visStr = 'hidden';
                  theObj = 'document.all.' + args[0];
              theObj = eval(theObj);
                  if (theObj) theObj.style.visibility = visStr;
                } else {
                        if(!document.all && document.getElementById){//NN6
                if (visStr == 'show') visStr = 'visible'; //convert vals
                        if (visStr == 'hide') visStr = 'hidden';
                                document.getElementById(args[0]).style.visibility=visStr;
                        }
                }
        }  
}

   function ReSolveRB() {
       if (document.FN.H_RBut.value == "") {
              document.FN.H_RBut.value = "MR";
       }
   }

   // show layer popup asking the user to please wait
function showRlsMessage() {    
   args = showRlsMessage.arguments;
   var styleObject = getStyleObject("processing");
   if(styleObject) {      
      if (args.length > 0) {
         var left="0";
         var top="0";
         var text="Loading Options..Please Wait";
         if (args.length==1) {
            text=args[0];
            styleObject.text = text;                   
         }
         else if (args.length==2) {
            left=args[0];
            top=args[1];
            if(document.all){
               left = document.body.clientWidth - left;
               top = document.body.clientHeight + document.body.scrollTop - top;
            } else {
               left = window.innerWidth - left;
               top = window.innerHeight + pageYOffset - top;
            }
            styleObject.left = left;
            styleObject.top = top;             
         }
         else if (args.length==3){
            left=args[0];
            top=args[1];
            visibility=args[2]; 
            styleObject.left = left;
            styleObject.top = top;
            styleObject.visibility = visibility;
         }
      }   
      styleObject.visibility = "visible";      
   }    
}

// Rizwan's code ends   

// Sami's javascript functions
function ValidateCompare() {
        elem1 = document.COMPARE_FORM.MajorRelease1;
        elem2 = document.COMPARE_FORM.MajorRelease2;
        if (elem1.options[0].selected) {
                alert("Please choose a Major Release for comparison before continuing.");
                elem1.focus();
                return false;
        }else if (elem2.options[0].selected) {
                alert("Please choose a Major Release for comparison before continuing.");
            elem2.focus();
                return false;
        }else { document.COMPARE_FORM.submit(); }
}

// show layer popup asking the user to please wait
function showMessage() {    
   args = showMessage.arguments;
   var styleObject = getStyleObject("processing");
   if(styleObject) {      
      if (args.length > 0) {
         var left="150";
         var top="250";
         var text="Loading Options..Please Wait";
         if (args.length==1) {
            text=args[0];
            styleObject.text = text;                   
         }
         else if (args.length==2) {
            left=args[0];
            top=args[1];
            if(document.all){
               left = document.body.clientWidth - left;
               top = document.body.clientHeight + document.body.scrollTop - top;
            } else {
               left = window.innerWidth - left;
               top = window.innerHeight + pageYOffset - top;
            }
            styleObject.left = left;
            styleObject.top = top;             
         }
         else if (args.length==3){
            left=args[0];
            top=args[1];
            visibility=args[2]; 
            styleObject.left = left;
            styleObject.top = top;
            styleObject.visibility = visibility;
         }
      }   
      styleObject.visibility = "visible";      
   }    
}

// cross-browser show/hide layers----------------------------- START ------------->
function getStyleObject(objectId) {
    if(document.getElementById && document.getElementById(objectId)) {      
      return document.getElementById(objectId).style;
    } else if (document.all && document.all(objectId)) {      
      return document.all(objectId).style;
    } else if (document.layers && document.layers[objectId]) {      
      return document.layers[objectId];
    } else {      
      return false;
    }
}

function onMajorReleaseChange(image) {

        if (image == 1){
                document.ciss_compare.ReleaseId1.options[0].selected = true; 
                document.ciss_compare.PlatformFamilyId1.options[0].selected = true;
                document.ciss_compare.FeatureSetId1.options[0].selected = true;
        }

        if (image == 2){
                document.ciss_compare.ReleaseId2.options[0].selected = true; 
                document.ciss_compare.PlatformFamilyId2.options[0].selected = true;
                document.ciss_compare.FeatureSetId2.options[0].selected = true;

        }
        
}

function checkRadioButtonValue(radio) {
var isChecked = 'false' ; 
for (var i = 0; i < radio.length; i++){   
        if (radio[i].checked) { 
                isChecked = 'true' }
   }
   if(isChecked == 'false'){
          return false;
   }else{
          return true
   }
}

//
var defaultEmptyOK = false
// Check whether string s is empty.
// whitespace characters
var whitespace = " \t\n\r";

function isEmpty(s){   
        return ((s == null) || (s.length == 0))
}

/* FUNCTIONS TO INTERACTIVELY CHECK VARIOUS FIELDS. */
// checkString (TEXTFIELD theField, STRING s, [, BOOLEAN emptyOK==false])
// Check that string theField.value is not all whitespace. For explanation of optional argument emptyOK,
// see comments of function isInteger.
function checkString (theField, emptyOK) {   
        // Next line is needed on NN3 to avoid "undefined is not a number" error
    // in equality comparison below.
    if (checkString.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    if (isWhitespace(theField.value)) 
                return false;
    else return true;
        //       return warnEmpty (theField, s);
}

// Returns true if string s is empty or 
// whitespace characters only.
function isWhitespace (s){
        var i;
    // Is s empty?
    if (isEmpty(s)) return true;
    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.
    for (i = 0; i < s.length; i++) {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1) return false;
    }
    // All characters are whitespace.
    return true;
}

// checkEmail (TEXTFIELD theField [, BOOLEAN emptyOK==false])
// Check that string theField.value is a valid Email.For explanation of optional argument emptyOK,
// see comments of function isInteger.
function checkEmail (theField, emptyOK){   
        if (checkEmail.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else if (!isEmail(theField.value, false)) 
       return false;
    else 
                return true;
}

// isEmail (STRING s [, BOOLEAN emptyOK])
// Email address must be of form a@b.c -- in other words: * there must be at least one character before the @
// * there must be at least one character before and after the .  * the characters @ and . are both required
// For explanation of optional argument emptyOK, see comments of function isInteger.
function isEmail (s) {   
        if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);
    // is s whitespace?
    if (isWhitespace(s)) return false;
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;
    // look for @
    while ((i < sLength) && (s.charAt(i) != "@")) { 
                i++
    }
    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;
    // look for .
    while ((i < sLength) && (s.charAt(i) != ".")) {
                i++
    }
    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}

function feedbackvalidateForm(){
        var retVal = true;
        if(!checkString(document.FEED_BACK.FORM_FIRST_NAME)){
                feedbackShowErrImage('fname')
                retVal = false;
        } else {
                feedbackShowSpacerImage('fname')
        }
        if(!checkString(document.FEED_BACK.FORM_LAST_NAME)){
                feedbackShowErrImage('lname')
                retVal = false;
        } else {
                feedbackShowSpacerImage('lname')
        }
        if(!checkString(document.FEED_BACK.FORM_COMPANY_NAME)){
                feedbackShowErrImage('companyname')
                retVal = false;
        }else {
                feedbackShowSpacerImage('companyname')
        }
        if(!checkString(document.FEED_BACK.FORM_PHONE)){
                feedbackShowErrImage('phone')
                retVal = false;
        } else {
                feedbackShowSpacerImage('phone')
        }
        if(!checkString(document.FEED_BACK.FORM_EMAIL)){
                feedbackShowErrImage('email')
                retVal = false;
        } else{
                if(!checkEmail(document.FEED_BACK.FORM_EMAIL,true)){
                        feedbackShowInvalidImage('email')
                        retVal = false;
                } else {
                        feedbackShowSpacerImage('email')
                }
        }
        if(!checkRadioButtonValue(document.FEED_BACK.FORM_RATE_SAT)){
                feedbackShowErrImage('satradio')
                retVal = false;
        } else {
                feedbackShowSpacerImage('satradio')
        }
        if(!checkString(document.FEED_BACK.FORM_FEEDBACK)){
                feedbackShowErrImage('feedback')
                retVal = false;
        } else {
                feedbackShowSpacerImage('feedback')
        }
        if(!retVal){
                openMessage('Please check the marked fields and resubmit the form.');
        }
        return retVal;
}

function feedbackShowErrImage(selectNameImg){
        document.images[selectNameImg].src = 'http://www.cisco.com/swa/i/Required_Alert.gif';
}

function feedbackShowInvalidImage(selectNameImg){
        document.images[selectNameImg].src = 'http://www.cisco.com/swa/i/InvalidEntry.gif';
}

function feedbackShowSpacerImage(selectNameImg){
        document.images[selectNameImg].src = 'http://www.cisco.com/swa/i/spacer.gif';
}

function surveyvalidateForm(){
        var retVal = true;
        if(!checkString(document.survey.NAME)){
                feedbackShowErrImage('fname')
                retVal = false;
        } else {
                feedbackShowSpacerImage('fname')
        }
        if(!checkString(document.survey.EMAIL)){
                feedbackShowErrImage('email')
                retVal = false;
        } else{
                if(!checkEmail(document.survey.EMAIL,true)){
                        feedbackShowInvalidImage('email')
                        retVal = false;
                } else {
                        feedbackShowSpacerImage('email')
                }
        }
        if(!retVal){
                openMessage('Please check the marked fields and resubmit the form.');
        }
        return retVal;
}

function compareFunction(selectNameImg){
        document.images[selectNameImg].src = 'http://www.cisco.com/swa/i/Please_wait.gif';
        document.ciss_compare.submit();
}

// Express Search javascript function starts here
function expSearchValidate(){
        var pft = document.exp_search_form.platformFamily.options[document.exp_search_form.platformFamily.selectedIndex].value ;
        // document.exp_search_form.platformFamilyName.value = document.exp_search_form.platformFamilyId.options[document.exp_search_form.platformFamilyId.selectedIndex].text ;
        if (pft == '0'){
                return false ;
        }else {
                document.exp_search_form.submit() ;
        }
}

function expSrchValidateMajRelease(){
        var majRel = document.exp_search_form.majorRelease.options[document.exp_search_form.majorRelease.selectedIndex].value ;
        if(majRel == '0' ){
                return false ;
        }else {
                document.exp_search_form.submit() ;
        }
}

function expSrchValidateRelease(){
        var Rel = document.exp_search_form.release.options[document.exp_search_form.release.selectedIndex].value;

        if(Rel == '0'){
                document.exp_search_form.task.value = "releaseinit" ;
        }
                document.exp_search_form.submit() ;
}

function expSrchValidRelFeatSet(){
        var featSet = document.exp_search_form.featureSet.options[document.exp_search_form.featureSet.selectedIndex].value;
        var Rel = document.exp_search_form.release.options[document.exp_search_form.release.selectedIndex].value;
        if(Rel == '0'){
                document.exp_search_form.task.value = "releaseinit" ;
        }
        if(Rel != '0' && featSet == '0'){
                document.exp_search_form.task.value = "featureSetinit" ;
        }
        document.exp_search_form.submit() ;
}



function expSrchValidFeatSet(){
        var featSet = document.exp_search_form.featureSet.options[document.exp_search_form.featureSet.selectedIndex].value;
        if (featSet == '0'){
                document.exp_search_form.task.value = "featureSetinit" ;
        }
                document.exp_search_form.submit() ;
}

function getExpFNfeats(stchar,selectall) {      
        if(selectall == 'detail'){
                ExpSrchSelectAllCatg();
        }
        document.exp_search_form.task.value = "featinit";
        document.exp_search_form.featStartsWith.value = stchar; 
        document.exp_search_form.SearchText.value = ''; 
        document.exp_search_form.act.value = 'expressSearch';
        document.exp_search_form.submit();
}

function ExpSrchSelectAllCatg() {
  elem = document.exp_search_form.FeatSelected;
  len = elem.length;
  if (elem.options[0] != null) {
        for (i=0; i<len; i++) {
           elem.options[i].selected = true;
        }
  }
  if (len > 0)  {
          return true;
  } else {
          return false;
  }
}

function getExpSrchFNfeatsStr(selectall) {              
        //alert('getFNfeatsStr()')
        if(selectall == 'detail'){
                var retval = ExpSrchSelectAllCatg();
                //alert('retval =' + retval);
                if(retval == false){
                        //alert('inside false area');
                        document.exp_search_form.task.value = "featinit";
                        document.exp_search_form.featStartsWith.value = '';     
                        document.exp_search_form.act.value = 'expressSearch';
                }       
        }
        document.exp_search_form.submit() ;
}

function showExpSrchFeatureDesc(){
  elem1 = document.exp_search_form.FeatAvailable;
  len1 = elem1.length;
  var featIds = '';
  var featCnt = 0;
  for (var j = 0; j < len1; j++) {
         if (elem1.options[j].selected) {
                if (featCnt == 0){
                        featIds = elem1.options[j].value;
                } else {
                        featIds += ',' +  elem1.options[j].value;
                }
                featCnt ++;
         }
  }
  if (featCnt == 0)  {
         alert(MSG_NO_FEATURES_TO_DESC);
  } else{
          var featdescURL = '/ITDIT/ISTMAIN/Dispatch?act=featdesc&task=display&featureId='+featIds;
          openLargePopup(featdescURL,'FeatureWin',300,400);
  }
}

function validateExpSrchforselect() {

  elem = document.exp_search_form.FeatSelected;
  len = elem.length;
  var ftselected = 'empty' ;
  for (var k = len - 1; k >= 0; k--) {
   if(elem.options[k].value == -1){
         alert(MSG_NO_FEATURES_SELECTED);
         return false;
   }
  }
  if(len > 20){
         errstr = 'You have selected '+ len + ' features. The limit is 20. Please change the selection list'
         alert(errstr);
         return false;
  }              
  if (elem.options[0] == null) {
         alert("Please choose at least one feature before continuing.");
         return false;
  }

  for (var ct = 0; ct <= len - 1 ; ct++) {
            if (ftselected == 'empty')
            {
                        ftselected = elem.options[ct].value ;
            } else {
                        ftselected = ftselected + ',' + elem.options[ct].value  ;
                }
  }
  document.exp_search_form.act.value = "expressSearchMajRelease";
  document.exp_search_form.task.value = "majReleaseInit"; 
  document.exp_search_form.featuresSelected.value = ftselected ;
  
  return true;
}

function addExpSrchselection() {
  elem1 = document.exp_search_form.FeatAvailable;
  len1 = elem1.length;
  elem = document.exp_search_form.FeatSelected;
  len = elem.length;
  NotSelected = true;
  AddedFeatText = '';
  for (var j = 0; j < len1; j++) {
         if (elem1.options[j].selected) {
                NotSelected = false;
                break;
         }
  }
  
  if(NotSelected == false){
          for (var k = len - 1; k >= 0; k--) {
           if(elem.options[k].value == -1){
                 elem.options[k] = null;
           }
          }
  }
  
  for (var j = 0; j < len1; j++) {
         len = elem.length;
         if (elem1.options[j].selected) {
                select1 = elem1.options[j].text;
                value1 = elem1.options[j].value;
                FeatExists = false;
                if (elem.options[0] != null) {
                   i=0;
                   while (i<len) {
                          if (elem.options[i].value == value1) {
                                 FeatExists = true;
                          }
                          i++;
                   }
                }
                if (FeatExists == true) {
                   AddedFeatText += select1 + "\n";
                } else {
           if(value1 != -1){
                           opt_new = new Option(select1,value1);
                           elem.options[len] = opt_new;
                   }
                }
         }
  }
  if (NotSelected) {
         alert(MSG_NO_FEATURES_TO_ADD);
  } else {
         if (AddedFeatText != '') {
                //alert("The following Feature/s were previously added \n" + AddedFeatText);
         }
  }
}

function removeExpSrchselection() {
  var validEntries;

  elem = document.exp_search_form.FeatSelected;
  len = elem.length;

  SelectedCtr = 0;
  validEntries = 0;
  for (var j = len - 1; j >= 0; j--) {
      if( elem.options[j].text!=MSG_NONE ) {
         validEntries++;
        
         if (elem.options[j].selected) {
                SelectedCtr++;
         }
      }
  }

  if( validEntries<1 ) {
    alert( "Sorry, there are no features to delete." );
    return;
  }
    
  if( SelectedCtr<1 ) {
    alert( "Sorry, you haven't selected any features to delete." );
    return;
  }

  message = "Remove " + SelectedCtr + " feature/s from the selected features?";
  answer =  window.confirm (message)
  if (answer == true) {
         for (var j = len - 1; j >= 0; j--) {
                if (elem.options[j].selected) {
                   if(elem.options[j].value != -1){
                           elem.options[j] = null;
                   }
                }
         }
         //if (!isOk) history.go(0);
  }
  elem = document.exp_search_form.FeatSelected;
  len = elem.length;
  if (len == 0)  {
         opt_new = new Option(MSG_NONE,'-1');
     elem.options[0] = opt_new;
  }
}

function resetExpSrchSelection() {
  answer =  window.confirm (MSG_REMOVE_SELECTED);
  if (answer == true) {
         elem = document.exp_search_form.FeatSelected;
         len = elem.length;
         for (var j = len - 1; j >= 0; j--) {
           //if(elem.options[j].value != -1){
                 elem.options[j] = null;
           //}
         }
         opt_new = new Option(MSG_NONE,'-1');
     elem.options[0] = opt_new;
  }
}

function showmessage(msg){
        alert(msg) ;
}

// End of Sami's javascript functions

//Mubin's js
function setTask(form,taskvalue)
{

        form.task.value = taskvalue;            
}


function setAct(form,actvalue)
{

        //alert('act value is '+actvalue);
        form.act.value = actvalue;      
}


function atleastOne(formName,action,task)
{

        //alert('atleastOne called');
        var featSel ='' 
    var imgCnt = 0 


         if (formName.hid_count.value > 0 )
         {
                 var checkbox_choices = 0;
                 var hold ;
                 for (counter = 1; counter <= formName.hid_count.value; counter++)
                 {
                        hold = eval('formName.FEAT_CHECK' + counter);
                        if (hold.checked)
                        { 
                                checkbox_choices = checkbox_choices + 1; 
                        }
                 }
                 if (checkbox_choices > 20 )
                 {
                         msg="You're limited to maximum of 20 features per search.\n"
                         msg=msg + "You have made " + checkbox_choices + " selections.\n"
                         alert(msg)
                         return false;
                 }
         }

    for (i = 0; i < formName.elements.length; i++) 
    { 
            var e = formName.elements[i] 
                if(e.type=='checkbox' && e.value != 'xyz' && e.checked) 
                { 
                 featSel = featSel + '&HFeatSelected=' + e.value 
                 imgCnt++ 
        } 
     }  
     if(featSel=='')
     { 
       alert('Please select at least one feature before continuing.') 
       return false;
     }
     else
     {
        setAct(formName,action);
        setTask(formName,task);
        formName.submit();
     }  
}

//end of mubin's js              



