/* Copyright (c) 2002-2006 by cisco Systems, Inc. All rights reserved. */

// Global Variables

MSG_NONE = "-------- None Selected ----------";


MSG_NO_FEATURES_SELECTED = "You have no selections.  "
    + "Please add some features from Features Available List."

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?";

//---------------------------------------------------------------
// Called from 'featSelect.jsp': Search by Feature page.
//
// startWith: String: what is selected from alpha list.
// selectAll: values:' init', 'detail'.
//            'init'  : when Search by Feature is first loaded.
//            'detail': when Search by Feature is already loaded,
//                      and user has been changed select values.
// Note on selectAll: Since CFN 4.7 (Apr 2006) it should be always
//                    'detail'.
//---------------------------------------------------------------
function getFNfeats(startWith,selectall)
{
    THIS_FUNC = "[ciss.js: getFNfeats] ";

//    alert(THIS_FUNC + "startWith=" + startWith + ", selectall=" + selectall );

    if(selectall == 'detail')
    {
        SelectAllCatg();
    }

    document.feature_select.task.value           = "AlphaSearch";
    document.feature_select.featStartsWith.value = startWith;
    document.feature_select.SearchText.value     = '';
    document.feature_select.act.value            = 'featSelect';

    //alert(THIS_FUNC + "submitting document.feature_select" );

    document.feature_select.submit();

} // function getFNfeats(startWith,selectall)


//---------------------------------------------------------------
// - Called from featureSelect.jsp (Search by Feature, select page).
//   when Submit button for the text search string is pressed.
//---------------------------------------------------------------
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";

            //--------------------------------------------------------------
            // Commented out for CFN 4.7.
            // String search becomes a combined search with selection from alpha list
            //--------------------------------------------------------------
//            document.feature_select.featStartsWith.value = '';

            document.feature_select.act.value = 'featSelect';

        } // if
    } // if

    if( document.feature_select.task.value != 'feature')
    {
        document.feature_select.task.value = "TextSearch";

        //--------------------------------------------------------------
        // Commented out for CFN 4.7.
        // String search becomes a combined search with selection from alpha list
        //--------------------------------------------------------------
//        document.feature_select.featStartsWith.value = '';
    }

} // function getFNfeatsStr(selectall)


//---------------------------------------------------------------
// Used from: 'featureSelect.jsp'
//
// - Selects all features in the 'Features Selected' box
// - This is happening when Search by Feature form is submitted
//   after feature selections are made.
// - If 'Features Selected' box is empty, return false.
//---------------------------------------------------------------
function SelectAllCatg()
{
    //------------------------------------------------------
    // document.feature_select.FeatSelected: featue list box.
    //-------------------------------------------------------
    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

    if (len > 0)
    {
        return true;
    }
    else
    {
        return false;
    }

} // function SelectAllCatg()


//---------------------------------------------------------------
//---------------------------------------------------------------
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("Please Select Features...And then Proceed further");
            alert(MSG_NO_FEATURES_SELECTED);

            return false;
        }

    } // for

    if(len > 20)
    {
        errstr = 'You have selected '+ len + ' features. The limit is 20. Please change the selection list'

        alert(errstr);

        return false;
    } // if
    if (elem.options[0] == null)
    {
//      alert("Please Select Features...And then Proceed further");
        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 validate_for_select()

//---------------------------------------------------------------
//---------------------------------------------------------------
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;
        }
    } // for

    if(NotSelected == false)
    {
        for (var k = len - 1; k >= 0; k--)
        {
            if(elem.options[k].value == -1)
            {
                elem.options[k] = null;
            }
        } // for
    } // if

    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

            if (FeatExists == true)
            {
                AddedFeatText += select1 + "\n";
            } // if
            else
            {
                if(value1 != -1)
                {
                    opt_new = new Option(select1,value1);
                    elem.options[len] = opt_new;
                }
            } // else
        } // if (elem1.options[j].selected)

    } // for (var j = 0; j < len1; j++)

    if (NotSelected)
    {
//      alert("Please select a feature from Feature Selection box");
        alert(MSG_NO_FEATURES_TO_ADD);
    }
    else
    {
        if (AddedFeatText != '')
        {
            //alert("The following Feature/s were previously added \n" + AddedFeatText);
        }
    } // else

} // function add_selection()

//---------------------------------------------------------------
//---------------------------------------------------------------
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)
            {
                SelectedCtr++;
            }
        }
    } // for

    if( validEntries<1 )
    {
        alert( "Sorry, there are no features to delete." );
        return;
    } // if

    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;
                }
            }
        } // for

        //if (!isOk) history.go(0);

    } // if (answer == true)

    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("Sorry, you have not selected any features to remove.");
    }

} // function remove_selection()

//---------------------------------------------------------------
//---------------------------------------------------------------
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;
            //}

        }  // for

        opt_new = new Option(MSG_NONE,'-1');
        elem.options[0] = opt_new;

    } //if (answer == true)

} // function reset_selection()

//---------------------------------------------------------------
//---------------------------------------------------------------
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 (elem1.options[j].selected)

    } // for

    if (featCnt == 0)
    {
        alert(MSG_NO_FEATURES_TO_DESC);
    }
    else
    {
        var featdescURL = '/ITDIT/CFN/Dispatch?act=featdesc&task=display&featureId='+featIds;
        openLargePopup(featdescURL,'FeatureWin',300,400);
    }


} // function showFeatureDesc()


//---------------------------------------------------------------
//---------------------------------------------------------------
function showNextFeatPage()
{

    pageSel = document.cfn_feature.pageNumber.selectedIndex
    pageSel++
    document.cfn_feature.pageNumber.selectedIndex = pageSel
    document.cfn_feature.submit()

} // function showNextFeatPage()

//---------------------------------------------------------------
//---------------------------------------------------------------
function showPrevFeatPage()
{
    pageSel = document.cfn_feature.pageNumber.selectedIndex
    pageSel--
    document.cfn_feature.pageNumber.selectedIndex = pageSel
    document.cfn_feature.submit()

} // function showPrevFeatPage()


//---------------------------------------------------------------
// Called From: feature.jsp (Feature result page)
// Called when: Value of one of the select box is changed:
//    - Software
//    - Major Release
//    - Release
//    - Platform
//    - Feature Set
//
// @param selectNameImg         :  Image Object name: String.
//---------------------------------------------------------------
function featureOnSelectChange( selectNameImg)
{
    THIS_FUNC = "[ciss.js: featureOnSelectChange] ";

    //-----------------------------------------------------------
    // Form is not submitted yet. Go ahead and submit it.
    //-----------------------------------------------------------
    //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';
    document.cfn_feature.submit();

} // function featureOnSelectChange(selectNameImg)


//---------------------------------------------------------------
// Called From: feature.jsp (Feature result page)
// Called when: Value of one of the select box is changed:
//    - Software
//    - Major Release
//    - Release
//    - Platform
//    - Feature Set
//
// Note: If the form is already submitted, this request would be
//       cancelled.
//
// @param isFormSubmittedTextObj:  Text Object. Value of the object: "Y", "N".
// @param selectNameImg         :  Image Object name: String.
//---------------------------------------------------------------
function featureOnSelectChange_xxx( isFormSubmittedTextObj, selectNameImg)
{
    THIS_FUNC = "[ciss.js: featureOnSelectChange_xxx] ";

    //-----------------------------------------------------------
    // If the form is already submitted, cancel the form submit request.
    //-----------------------------------------------------------
    if( isThisFormSubmitted(isFormSubmittedTextObj) )
    {
        return;
    }

    //-----------------------------------------------------------
    // Form is not submitted yet. Go ahead and submit it.
    //-----------------------------------------------------------
    //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';
    document.cfn_feature.submit();

} // function featureOnSelectChange_xxx( isFormSubmittedTextObj, selectNameImg)

//---------------------------------------------------------------
//---------------------------------------------------------------
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 openFNWindow(appurl,windowname)

//---------------------------------------------------------------
//---------------------------------------------------------------
function showNext()
{

    pageSel = document.FN.pageNumber.selectedIndex
    pageSel++
    document.FN.pageNumber.selectedIndex = pageSel
    document.FN.submit()

} //function showNext()


//---------------------------------------------------------------
//---------------------------------------------------------------
function showPrev()
{

    pageSel = document.FN.pageNumber.selectedIndex
    pageSel--
    document.FN.pageNumber.selectedIndex = pageSel
    document.FN.submit()

} //function showPrev()

//---------------------------------------------------------------
//---------------------------------------------------------------
function changeSelect()
{
    document.FN.totalNoOfImages.value = -1
    document.FN.pageNumber.selectedIndex = 0
    document.FN.submit()

} //function changeSelect()

//---------------------------------------------------------------
// Called from: searchPFResult.jsp.
//
// Called when: value of the following select box is changed:
//       - Major Release
//
//      NOTE: When one of the following values changes, it calls
//            Function changeRlsPfFs.
//               - Release
//               - Feature Set
//
//---------------------------------------------------------------
function changeRlsPfFsMajRls()
{

    THIS_FUNC = "[ciss.js: changeRlsPfFsMajRls] ";

    //-----------------------------------------------------------
    // Form is not submitted yet. Go ahead and submit it.
    //-----------------------------------------------------------
    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();
    if(document.getElementById('toggle') != null){
    	if(document.getElementById('toggle').innerHTML == 'Show All Software'){
        	document.FN.action =  document.FN.action+"?showAllSoftware=true";
    	}else if(document.getElementById('toggle').innerHTML == 'Show All Features'){
    		document.FN.action =  document.FN.action+"?showAllSoftware=false";
    	}
    }

    document.FN.submit();

} //function changeRlsPfFsMajRls()

//---------------------------------------------------------------
// Called from: searchPFResult.jsp.
//
// Called when: value of the following select box is changed:
//       - Major Release
//
//      NOTE: When one of the following values changes, it calls
//            Function changeRlsPfFs.
//               - Release
//               - Feature Set
//
// Note: If the form is already submitted, this request would be
//       cancelled.
//
// @param isFormSubmittedTextObj:  Text Object. Value: "Y", "N".
//---------------------------------------------------------------
function changeRlsPfFsMajRls_xxx( isFormSubmittedTextObj )
{

    THIS_FUNC = "[ciss.js: changeRlsPfFsMajRls_xxx] ";

    //-----------------------------------------------------------
    // If the form is already submitted, cancel the form submit request.
    //-----------------------------------------------------------
    if( isThisFormSubmitted(isFormSubmittedTextObj) )
    {
        return;
    }

    //-----------------------------------------------------------
    // Form is not submitted yet. Go ahead and submit it.
    //-----------------------------------------------------------
    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 changeRlsPfFsMajRls_xxx()

//---------------------------------------------------------------
//---------------------------------------------------------------
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 SATearOff


//---------------------------------------------------------------
//---------------------------------------------------------------
function MM_showHideLayers()
{
    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;

            } // if(!document.all && document.getElementById)

        } // else: if (document.all )

    } // else: if(document.layers) //NN4


} // function MM_showHideLayers()


//---------------------------------------------------------------
// 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==2)
             else if (args.length==3)
             {
                left=args[0];
                top=args[1];
                visibility=args[2];
                styleObject.left = left;
                styleObject.top = top;
                styleObject.visibility = visibility;
            } // else if (args.length==3)

        } // if (args.length > 0)

        styleObject.visibility = "visible";

    } // if(styleObject)

} // function showRlsMessage()


//---------------------------------------------------------------
// 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;

            } // if (args.length==1)

            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==2)

            else if (args.length==3)
            {
                left=args[0];
                top=args[1];
                visibility=args[2];
                styleObject.left = left;
                styleObject.top = top;
                styleObject.visibility = visibility;

            } // else if (args.length==3)

        } // if (args.length > 0)

        styleObject.visibility = "visible";

    } // if(styleObject)


} // function showMessage()



//---------------------------------------------------------------
//---------------------------------------------------------------
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 getStyleObject(objectId)


//---------------------------------------------------------------
//---------------------------------------------------------------
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
    }

} // function checkRadioButtonValue(radio)



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))

} // function isEmpty(s)


//---------------------------------------------------------------
// 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);

} // function checkString (theField, emptyOK)


//---------------------------------------------------------------
// 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;

} // function isWhitespace (s)


//---------------------------------------------------------------
// 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;


} // function checkEmail (theField, emptyOK)



//---------------------------------------------------------------
// 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 isEmail (s)


//---------------------------------------------------------------
//---------------------------------------------------------------
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 feedbackvalidateForm()


//---------------------------------------------------------------
//---------------------------------------------------------------
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')

    } // else : if(!checkString(document.survey.NAME))

    if(!checkString(document.survey.EMAIL))
    {
        feedbackShowErrImage('email')
        retVal = false;
    }
    else
    {
        if(!checkEmail(document.survey.EMAIL,true))
        {
            feedbackShowInvalidImage('email')
            retVal = false;
        }
        else
        {
            feedbackShowSpacerImage('email')
        }
    } // else: if(!checkString(document.survey.EMAIL))


    if(!retVal)
    {
       openMessage('Please check the marked fields and resubmit the form.');
    }

    return retVal;

} // function surveyvalidateForm()

//---------------------------------------------------------------
// Called from: searchResult.jsp
//   - when: value of the following select box is changed:
//       -- Release
//       -- Platform
//       -- Feature Set
//
// Called from: searchPFResult.jsp
//   - when: value of the following select box is changed:
//       -- Release
//       -- Feature Set
//
//   - NOTE: When Major Release value changes from searchPFResult.jsp,
//           it calls Function changeRlsPfFsMajRls.
//
//---------------------------------------------------------------
function changeRlsPfFs( isFormSubmittedTextObj )
{

    THIS_FUNC = "[ciss.js: changeRlsPfFs] ";

    //-----------------------------------------------------------
    // Form is not submitted yet. Go ahead and submit it.
    //-----------------------------------------------------------
    if( typeof(document.FN.pageNumber) != "undefined")
    {
        document.FN.pageNumber.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();

	if(document.getElementById('toggle') != null){
    	if(document.getElementById('toggle').innerHTML == 'Show All Software'){
        	document.FN.action =  document.FN.action+"?showAllSoftware=true";
    	}else if(document.getElementById('toggle').innerHTML == 'Show All Features'){
    		document.FN.action =  document.FN.action+"?showAllSoftware=false";
    	}
    }
	
    document.FN.submit();


} //function changeRlsPfFs()


//---------------------------------------------------------------
// Called from: searchResult.jsp
//   - when: value of the following select box is changed:
//       -- Release
//       -- Platform
//       -- Feature Set
//
// Called from: searchPFResult.jsp
//   - when: value of the following select box is changed:
//       -- Release
//       -- Feature Set
//
//   - NOTE: When Major Release value changes from searchPFResult.jsp,
//           it calls Function changeRlsPfFsMajRls.
//
// Note: If the form is already submitted, this request would be
//       cancelled.
//
// @param isFormSubmittedTextObj:  Text Object. Value: "Y", "N".
//---------------------------------------------------------------
function changeRlsPfFs_xxx( isFormSubmittedTextObj )
{

    THIS_FUNC = "[ciss.js: changeRlsPfFs_xxx] ";

    //-----------------------------------------------------------
    // If the form is already submitted, cancel the form submit request.
    //-----------------------------------------------------------
    if( isThisFormSubmitted(isFormSubmittedTextObj) )
    {
        return;
    }

    //-----------------------------------------------------------
    // Form is not submitted yet. Go ahead and submit it.
    //-----------------------------------------------------------
    if( typeof(document.FN.pageNumber) != "undefined")
    {
        document.FN.pageNumber.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 changeRlsPfFs_xxx()


function osTypeChanged()
{
    document.FN.submit();
}
//---------------------------------------------------------------
// Called from 'RlsImgNameProdNum.jsp'
//
// If Search By option is not selected from Radio button,
// set 'Search By Software' the default value.
//---------------------------------------------------------------
function ResolveRB()
{
    if (document.FN.H_RBut.value == "")
    {
        document.FN.H_RBut.value = "OS";
    }

} // function ResolveRB()

//---------------------------------------------------------------
// Called from 'RlsImgNameProdNumWithOS.jsp'
//
// If Search By option is not selected from Radio button,
// set 'Search By Major Release' the default value.
//---------------------------------------------------------------
function ResolveRB2()
{
    if (document.FN.H_RBut.value == "")
    {
        document.FN.H_RBut.value = "MR";
    }

} // function ResolveRB2()

//---------------------------------------------------------------
// Called from 'RlsImgNameProdNum.jsp'
//
// Based on which Search By Radio button selected, make sure
// we have corresponding value either selected or entered by
// user.
//---------------------------------------------------------------
function ValidateQ1()
{

    switch (document.FN.H_RBut.value)
    {
        // Search by Major Release radio button is selected.
        case "MR" :
            elem = document.FN.HMR_DDM;
            if (elem.options[0].selected)
            {
                alert("You have not selected a Cisco Major Release. " +
                    "Please choose one and then continue.");
                elem.focus();
                return false;
            }

            break;

        // Search by Platform radio button is selected.
        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;

        // Search by Image button is selected.
        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;

        // Search by Prduct Name (Product code) radio button is selected.
        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;
        case "OS" :
            var osElem= document.FN.OsType;
            if(osElem.options[osElem.selectedIndex].value == 0)
            {
                alert("You have not selected a Software type. " +
                      "Please choose one and then continue");
                return false;
            }
    }

    return true;

} // function ValidateQ1()

//=====================================================================
// These functions are used for 'Compare Image'.
//=====================================================================
//-------------------------------------------------------------------------
// - Called from 'Compare Image'.
// - When Os Type is changed, reset major release, release, platform, feature set.
// - If Os Type is set to 'Select One', from 'Major Release Select page', then
//   change the value of 'task' so that we will come back to this page rather
//   than forwarding it to 'ComapreDisp.jsp' (last page).
//
// @param formObj.      Form Object.
// @pararm whichImage.  Number. 1 or 2, indicating which image.
//-------------------------------------------------------------------------
function compImgOsTypeOnChange(formObj, whichImage)
{
    var FUNC_NAME = '[ciss.js: compImgOsTypeOnChange] ';

//    alert ( FUNC_NAME + "DEBUG 0. whichImage=" + whichImage );

    if (whichImage == 1)
    {

        formObj.elements['MajorRelease1'].options[0].selected = true;

        //
        // If we are on 'Select Major Release' form, reset the 'task' so that
        // we come back to this same page.
        //
        if( formObj.elements['ReleaseId1'] == undefined )
        {
            formObj.elements['task'].value = 'selectMajorRel';
        }
        // ReleaseId1 defined ==> We are on the 'display/result' page.
        // We will come back to this page.
        else
        {
            formObj.elements['ReleaseId1'].options[0].selected = true;
            formObj.elements['PlatformFamilyId1'].options[0].selected = true;
            formObj.elements['FeatureSetId1'].options[0].selected = true;
        }
    } // if (whichImage == 1)

    else if(whichImage == 2)
    {
        formObj.elements['MajorRelease2'].options[0].selected = true;

        //
        // If we are on 'Select Major Release' form, reset the 'task' so that
        // we come back to this same page.
        //
        if( formObj.elements['ReleaseId2'] == undefined )
        {
            formObj.elements['task'].value = 'selectMajorRel';
        }
        // ReleaseId2 defined ==> We are on the 'display/result' page.
        // We will come back to this page.
        else
        {
            formObj.elements['ReleaseId2'].options[0].selected = true;
            formObj.elements['PlatformFamilyId2'].options[0].selected = true;
            formObj.elements['FeatureSetId2'].options[0].selected = true;
        }
    } // else if(whichImage == 2)

} // function compImgOsTypeOnChange(formObj, whichImage)

//-------------------------------------------------------------------------
// - Called from 'Compare Image'.
// - When Major Release is changed, reset release, platform, feature set.
//
// @param formObj.      Form Object.
// @pararm whichImage.  Number. 1 or 2, indicating which image.
//-------------------------------------------------------------------------
function compImgMajorRelOnChange(formObj, whichImage)
{

    FUNC_NAME = '[ciss.js: compImgMajorRelOnChange] ';


    if (whichImage == 1)
    {
        formObj.elements['ReleaseId1'].options[0].selected          = true;
        formObj.elements['PlatformFamilyId1'].options[0].selected   = true;
        formObj.elements['FeatureSetId1'].options[0].selected       = true;
    } // if (whichImage == 1)

    else if (whichImage == 2)
    {
        formObj.elements['ReleaseId2'].options[0].selected          = true;
        formObj.elements['PlatformFamilyId2'].options[0].selected   = true;
        formObj.elements['FeatureSetId2'].options[0].selected       = true;
    } // else if (whichImage == 2)

} // function compImgMajorRelOnChange(whichImage)


//-------------------------------------------------------------------------
// Validate both Software from 'Compare Image' start page.
// - Both Software must be selected. Otherwise, return false.
//
// @param fName.    Form Object.
//-------------------------------------------------------------------------
function compImgValidateOsType( formObj )
{
    THIS_FUNC = "[ciss.js: compImgValidateOsType] ";

    elem1 = formObj.elements['OsType1'];
    elem2 = formObj.elements['OsType2'];

    // options[0] == 'Select One'.
    if (elem1.options[0].selected)
    {
        alert("Please choose a Software for comparison before continuing.");
        elem1.focus();
        return false;
    }
    else if (elem2.options[0].selected)
    {
        alert("Please choose a Software for comparison before continuing.");
        elem2.focus();
        return false;
    }
    else
    {
        document.compImgOsTypeForm.submit();
    }

} // function compImgValidateOsType()

//-------------------------------------------------------------------------
// Validate Major Release selections.
// - Both Major Releases must be selected. Otherwise, return false.
//-------------------------------------------------------------------------
function compImgValidateMajorRel()
{
    THIS_FUNC = "[cossCompImg.js: compImgValidateMajorRel] ";

    elem1 = document.compImgMajorRelForm.MajorRelease1;
    elem2 = document.compImgMajorRelForm.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.compImgMajorRelForm.submit();
    }

} // function compImgValidateMajorRel()


//-------------------------------------------------------------------------
// - This function is called from 'Compare Image' form, when a select box
//   value is changing. When select box value is changed, the form gets
//   submitted.
// - Before submitting the form:
//    1. Displays 'wait' gif and submit the form.
//    2. Disable all form elememts on the 'Compare Image' form to prevent
//       further user selection.
//
// @param  formObj              form object.
// @param  imgObj.              Image Object to display 'Please Wait' gif.
//-------------------------------------------------------------------------
function compImgFormSubmit( formObj, imgObj )
{

    var THIS_FUNC   = "[ciss.js: compImgFormSubmit] ";

    //-----------------------------------------------------------
    // - Display 'Wait ... ' message.
    // - paulse(300) is added to force the Please_wait.gif to be displayed.
    //-----------------------------------------------------------
    if( imgObj )
    {
        imgObj.src = 'http://www.cisco.com/swa/i/Please_wait.gif';
    }
    //pause(300);

    formObj.submit();

    //-----------------------------------------------------------
    // - Place 'disabled' after form submit.
    // - Otherwise, selected values becomes  unavailable by the time
    //   it reaches servlet.
    //-----------------------------------------------------------
/*
    formObj.OsType1.disabled            = true;
    formObj.OsType2.disabled            = true;
    formObj.MajorRelease1.disabled      = true;
    formObj.MajorRelease2.disabled      = true;
    formObj.ReleaseId1.disabled         = true;
    formObj.ReleaseId2.disabled         = true;
    formObj.PlatformFamilyId1.disabled  = true;
    formObj.PlatformFamilyId2.disabled  = true;
    formObj.FeatureSetId1.disabled      = true;
    formObj.FeatureSetId2.disabled      = true;
*/

} // function compImgFormSubmit( formObj, imgObj )

//-------------------------------------------------------------------------
// - This function is called 'Compare Image' form, when a select box
//   value is changing.
// - Displays 'wait' gif and submit the form.
//
// @param  formObj.            Form Object.
// @param  isFormSubmittedObj. Text Object. Val: "Y", "N".
// @param  imgObj.             Image Object.
//-------------------------------------------------------------------------
function compImgFormSubmit_xxx( formObj, isFormSubmittedObj, imgObj )
{

    var THIS_FUNC   = "[ciss.js: compImgFormSubmit] ";

    //-----------------------------------------------------------
    // If the form is already submitted, cancel the form submit request.
    //-----------------------------------------------------------
    if( isThisFormSubmitted(isFormSubmittedObj) )
    {
        return;
    }

    //-----------------------------------------------------------
    // Form is not submitted yet. Go ahead and submit it.
    //-----------------------------------------------------------
    imgObj.src = 'http://www.cisco.com/swa/i/Please_wait.gif';
    formObj.submit();

} // function compImgFormSubmit_xxx( formObj, isFormSubmittedObj, imgObj )


//-------------------------------------------------------------------------
// - Returns True  if form is already submitted.
// - Returns False if the form is not yet submitted.
//
// NOTE: If the form is not submitted yet (when returns FALSE),
//       it sets isSubmittedTextObj.value = "Y".
//
// @param  isSubmittedTextObj. Text Object. Val: "Y", "N".
//-------------------------------------------------------------------------
function isThisFormSubmitted( isSubmittedTextObj )
{

    var THIS_FUNC   = "[ciss.js: isThisFormSubmitted] ";
    isSubmitted     = "N";

    if( isSubmittedTextObj != undefined )
    {
        isSubmitted = isSubmittedTextObj.value.substr(0,1).toUpperCase();
    }

    if( isSubmittedTextObj != undefined  && isSubmitted == "Y" )
    {
        return true;
    }
    else
    {
        isSubmittedTextObj.value = "Y";
        return false;
    }

} // function isThisFormSubmitted( isSubmittedTextObj )


function setSoftwareIndex(selectElem, softwareElem, setHiddenFlag)
{
    var softwareTypeIndex = 0;
    var softwareTypeValue= 0;
   /* for( i=0; i <selectElem.length; i++)
      {
        currentValue = selectElem.options[i].value;
        currentValueText = selectElem.options[i].text;
        if (currentValue == -2)   // IOS or CatOS  separator
        {
        	currentValueText=currentValueText.replace(/-/g,"");
            if (currentValueText == " IOS XE ")
            {
                softwareTypeIndex = 1;
                softwareTypeValue = 'IOS XE';
            }
           else if(currentValueText == " CatOS ")
            {
                softwareTypeIndex = 2;
                softwareTypeValue = 'CatOS';
            }
           else
           {
                softwareTypeIndex = 3;
                softwareTypeValue = 'IOS';
           }
        } else if(i == selectElem.selectedIndex){
            break;
        }
    }*/
    for( i=selectElem.selectedIndex; i >0 ; i--)
    {
    	currentValue = selectElem.options[i].value;
        currentValueText = selectElem.options[i].text;
        if(currentValue == -2){
        	currentValueText=currentValueText.replace(/-/g,"");
        	if (currentValueText == " IOS XE ")
            {
                softwareTypeValue = 'IOS XE';
            }else if(currentValueText == " CatOS ")
            {
                softwareTypeValue = 'CatOS';
            //IOS XR Package changes - CSCsq95504 - July 2008 aburadka
            }else if(currentValueText == " IOS XR ") 
            {
                softwareTypeValue = 'IOS XR';
            }
           else
           {
                softwareTypeValue = 'IOS';
           }
          break;
        }
    }
   
    if(softwareElem.type == "hidden")
    {
        if(setHiddenFlag != null
           && setHiddenFlag == "true")
        {
             softwareElem.value = softwareTypeValue ;
        }
        else
            return ;

    }else{
    	for(i=0;i<softwareElem.length;i++){
	   		if(softwareElem.options[i].value == softwareTypeValue ){
	   			softwareTypeIndex = i;
	   			break;
	   		}
    	}
        if (softwareTypeIndex < softwareElem.length) {
            softwareElem.selectedIndex = softwareTypeIndex;
        }else{
            softwareElem.options[softwareElem.selectedIndex].value = softwareTypeValue;
        }
   	}
   
}

//---------------------------------------------------------
//
//---------------------------------------------------------
function pause(numberMillis)
{
    var now = new Date();
    var exitTime = now.getTime() + numberMillis;
    while (true)
    {
        now = new Date();
        if (now.getTime() > exitTime)
            return;
    }
} // function pause(numberMillis)


function toggleWithPF(obj) {
	if(document.getElementById('toggle').innerHTML == 'Show All Software')
	{
		document.getElementById('toggle').setAttribute('href','/ITDIT/CFN/Dispatch');
        var H_RBut = document.getElementById('H_RBut').value;
		var HPF_DDM = document.getElementById('HPF_DDM').value;
		var softwareType = document.getElementById('osType').value;
		var HDDMMajRelDet;
		var HDDMRelDet;
		var HDDMFeatSetDet;
		var HDDMpkg;

		var size = document.getElementById('HDDMMajRelDet').length;
		for(var i=0;i<size;i++){
			if(document.getElementById('HDDMMajRelDet').options[i].selected){
					HDDMMajRelDet = document.getElementById('HDDMMajRelDet').options[i].value
				}
		}
		var size = document.getElementById('HDDMRelDet').length;
		for(var i=0;i<size;i++){
			if(document.getElementById('HDDMRelDet').options[i].selected){
					HDDMRelDet =  document.getElementById('HDDMRelDet').options[i].value
				}
		}
		var size = document.getElementById('HDDMFeatSetDet').length;
		for(var i=0;i<size;i++){
			if(document.getElementById('HDDMFeatSetDet').options[i].selected){
					HDDMFeatSetDet = document.getElementById('HDDMFeatSetDet').options[i].value
				}
		}
		if(softwareType== 'IOS XR'){
			var size = document.getElementById('HDDMpkg').length;
			for(var i=0;i<size;i++){
				if(document.getElementById('HDDMpkg').options[i].selected){
					HDDMpkg = document.getElementById('HDDMpkg').options[i].value
				}
			}
			if(HDDMMajRelDet == '0' && HDDMRelDet == '0' && HDDMFeatSetDet == '0' && HDDMpkg == '0'){
				var url = 
				obj.href+"?act=rlsSelect&showAllSoftware=false&task=display&H_RBut="+H_RBut+"&HPF_DDM="+HPF_DDM+"&HDDMpkg=-1"+"&HDDMRelDet=-1"+"&HDDMFeatSetDet=-1"+"&HDDMMajRelDet=0"+"&softwareType="+softwareType;
				document.getElementById('toggle').setAttribute('href',url);
			}else{
			    (HDDMMajRelDet == '0')?HDDMMajRelDet='0':HDDMMajRelDet=HDDMMajRelDet;
			    (HDDMRelDet == '0')?HDDMRelDet='-1':HDDMRelDet=HDDMRelDet;
			    (HDDMFeatSetDet == '0')?HDDMFeatSetDet='-1':HDDMFeatSetDet=HDDMFeatSetDet;
			    (HDDMpkg == '0')?HDDMpkg='-1':HDDMpkg=HDDMpkg;
			    
			    var url = 
				obj.href+"?act=rlsSelect&showAllSoftware=false&task=display&H_RBut="+H_RBut+"&HPF_DDM="+HPF_DDM+"&HDDMOsDet="+softwareType+"&softwareType="+softwareType+"&HDDMMajRelDet="+HDDMMajRelDet+"&HDDMRelDet="+HDDMRelDet+"&HDDMFeatSetDet="+HDDMFeatSetDet+"&HDDMpkg="+HDDMpkg;
				document.getElementById('toggle').setAttribute('href',url);
			}
			
	 } else{
			if(HDDMMajRelDet == '0' && HDDMRelDet == '0' && HDDMFeatSetDet == '0'){
				var url = 
				obj.href+"?act=rlsSelect&showAllSoftware=false&task=display&H_RBut="+H_RBut+"&HPF_DDM="+HPF_DDM+"&HDDMRelDet=-1"+"&HDDMFeatSetDet=-1"+"&HDDMMajRelDet=0"+"&softwareType="+softwareType;
				document.getElementById('toggle').setAttribute('href',url);
			}else{
				(HDDMMajRelDet == '0')?HDDMMajRelDet='0':HDDMMajRelDet=HDDMMajRelDet;
			    (HDDMRelDet == '0')?HDDMRelDet='-1':HDDMRelDet=HDDMRelDet;
			    (HDDMFeatSetDet == '0')?HDDMFeatSetDet='-1':HDDMFeatSetDet=HDDMFeatSetDet;
				var url = 
				obj.href+"?act=rlsSelect&showAllSoftware=false&task=display&H_RBut="+H_RBut+"&HPF_DDM="+HPF_DDM+"&HDDMOsDet="+softwareType+"&softwareType="+softwareType+"&HDDMMajRelDet="+HDDMMajRelDet+"&HDDMRelDet="+HDDMRelDet+"&HDDMFeatSetDet="+HDDMFeatSetDet;								
				document.getElementById('toggle').setAttribute('href',url);

			}

		}
		
	}else if(document.getElementById('toggle').innerHTML == 'Show All Features')
	{
		var H_RBut = document.getElementById('H_RBut').value;
		var HPF_DDM = document.getElementById('HPF_DDM').value;
		var softwareType = document.getElementById('osType').value;
		var HDDMMajRelDet;
		var HDDMRelDet;
		var HDDMFeatSetDet;
		var HDDMpkg;

		var size = document.getElementById('HDDMMajRelDet').length;
		for(var i=0;i<size;i++){
			if(document.getElementById('HDDMMajRelDet').options[i].selected){
					HDDMMajRelDet = document.getElementById('HDDMMajRelDet').options[i].value
				}
		}
		var size = document.getElementById('HDDMRelDet').length;
		for(var i=0;i<size;i++){
			if(document.getElementById('HDDMRelDet').options[i].selected){
					HDDMRelDet =  document.getElementById('HDDMRelDet').options[i].value
				}
		}
		var size = document.getElementById('HDDMFeatSetDet').length;
		for(var i=0;i<size;i++){
			if(document.getElementById('HDDMFeatSetDet').options[i].selected){
					HDDMFeatSetDet = document.getElementById('HDDMFeatSetDet').options[i].value
				}
		}
		document.getElementById('toggle').setAttribute('href','/ITDIT/CFN/Dispatch');
		if(softwareType== 'IOS XR'){
			var size = document.getElementById('HDDMpkg').length;
			for(var i=0;i<size;i++){
				if(document.getElementById('HDDMpkg').options[i].selected){
					HDDMpkg = document.getElementById('HDDMpkg').options[i].value
				}
			}
			if(HDDMMajRelDet == '0' && HDDMRelDet == '-1' && HDDMFeatSetDet == '-1' && HDDMpkg == '-1'){
				var url = 
				obj.href+"?act=rlsSelect&showAllSoftware=true&task=display&H_RBut="+H_RBut+"&HPF_DDM="+HPF_DDM+"&HDDMpkg=0"+"&HDDMRelDet=0"+"&HDDMFeatSetDet=0"+"&HDDMMajRelDet=0"+"&softwareType="+softwareType;
				document.getElementById('toggle').setAttribute('href',url);
			}else{
			    (HDDMMajRelDet == '0')?HDDMMajRelDet='0':HDDMMajRelDet=HDDMMajRelDet;
			    (HDDMRelDet == '-1')?HDDMRelDet='0':HDDMRelDet=HDDMRelDet;
			    (HDDMFeatSetDet == '-1')?HDDMFeatSetDet='0':HDDMFeatSetDet=HDDMFeatSetDet;
			    (HDDMpkg == '-1')?HDDMpkg='0':HDDMpkg=HDDMpkg;
			    
			    var url = 
				obj.href+"?act=rlsSelect&showAllSoftware=true&task=display&H_RBut="+H_RBut+"&HPF_DDM="+HPF_DDM+"&HDDMOsDet="+softwareType+"&softwareType="+softwareType+"&HDDMMajRelDet="+HDDMMajRelDet+"&HDDMRelDet="+HDDMRelDet+"&HDDMFeatSetDet="+HDDMFeatSetDet+"&HDDMpkg="+HDDMpkg;
				document.getElementById('toggle').setAttribute('href',url);
			}
			
		} else{
			if(HDDMMajRelDet == '0' && HDDMRelDet == '-1' && HDDMFeatSetDet == '-1'){
				var url = 
				obj.href+"?act=rlsSelect&showAllSoftware=true&task=display&H_RBut="+H_RBut+
				"&HPF_DDM="+HPF_DDM+
				"&HDDMRelDet=0"+
				"&HDDMFeatSetDet=0"+
				"&HDDMMajRelDet=0"+
				"&softwareType="+softwareType;
				document.getElementById('toggle').setAttribute('href',url);
			}else{
				(HDDMMajRelDet == '0')?HDDMMajRelDet='0':HDDMMajRelDet=HDDMMajRelDet;
			    (HDDMRelDet == '-1')?HDDMRelDet='0':HDDMRelDet=HDDMRelDet;
			    (HDDMFeatSetDet == '-1')?HDDMFeatSetDet='0':HDDMFeatSetDet=HDDMFeatSetDet;
				var url = 
				obj.href+"?act=rlsSelect&showAllSoftware=true&task=display&H_RBut="+H_RBut+"&HPF_DDM="+HPF_DDM+"&HDDMOsDet="+softwareType+"&softwareType="+softwareType+"&HDDMMajRelDet="+HDDMMajRelDet+"&HDDMRelDet="+HDDMRelDet+"&HDDMFeatSetDet="+HDDMFeatSetDet;								
				document.getElementById('toggle').setAttribute('href',url);

			}


		}
	}
}


function toggleWithSW(obj) {
	if(document.getElementById('toggle').innerHTML == 'Show All Software')
	{
		document.getElementById('toggle').setAttribute('href','/ITDIT/CFN/Dispatch');
        var softwareType = document.getElementById('OsType').value;
		var HMR_DDM;
		var HDDMRelDet;
		var HDDMPlatFamDet;
		var HDDMFeatSetDet;
		var HDDMpkg;
		HMR_DDM = document.getElementById('HMajorRelease').value
		var size = document.getElementById('HDDMRelDet').length;
		for(var i=0;i<size;i++){
			if(document.getElementById('HDDMRelDet').options[i].selected){
					HDDMRelDet =  document.getElementById('HDDMRelDet').options[i].value
				}
		}
		var size = document.getElementById('HDDMPlatFamDet').length;
		for(var i=0;i<size;i++){
			if(document.getElementById('HDDMPlatFamDet').options[i].selected){
					HDDMPlatFamDet = document.getElementById('HDDMPlatFamDet').options[i].value
				}
		}
		var size = document.getElementById('HDDMFeatSetDet').length;
		for(var i=0;i<size;i++){
			if(document.getElementById('HDDMFeatSetDet').options[i].selected){
					HDDMFeatSetDet = document.getElementById('HDDMFeatSetDet').options[i].value
				}
		}
		if(softwareType== 'IOS XR'){
		    var size = document.getElementById('HDDMpkg').length;
			for(var i=0;i<size;i++){
				if(document.getElementById('HDDMpkg').options[i].selected){
					HDDMpkg = document.getElementById('HDDMpkg').options[i].value
				}
			}
			if(HDDMRelDet == '0' && HDDMPlatFamDet == '0' && HDDMFeatSetDet == '0' && HDDMpkg == '0'){
					var url = 
					obj.href+"?act=rlsSelect&showAllSoftware=false&task=display&HMR_DDM="+HMR_DDM+"&HDDMRelDet=-1"+"&HDDMFeatSetDet=-1"+"&HDDMPlatFamDet=-1"+"&softwareType="+softwareType+"&HDDMpkg=-1";
					document.getElementById('toggle').setAttribute('href',url);
			}else{
					(HDDMRelDet == '0')?HDDMRelDet='-1':HDDMRelDet=HDDMRelDet;
				    (HDDMFeatSetDet == '0')?HDDMFeatSetDet='-1':HDDMFeatSetDet=HDDMFeatSetDet;
				    (HDDMPlatFamDet == '0')?HDDMPlatFamDet='-1':HDDMPlatFamDet=HDDMPlatFamDet;
				    (HDDMpkg == '0')?HDDMpkg='-1':HDDMpkg=HDDMpkg;
					var url = 
					obj.href+"?act=rlsSelect&showAllSoftware=false&task=display&HMR_DDM="+HMR_DDM+"&softwareType="+softwareType+"&HDDMRelDet="+HDDMRelDet+"&HDDMFeatSetDet="+HDDMFeatSetDet+"&HDDMPlatFamDet="+HDDMPlatFamDet+"&HDDMpkg="+HDDMpkg;								
					document.getElementById('toggle').setAttribute('href',url);
	
			}
		}
		else{
			if(HDDMRelDet == '0' && HDDMPlatFamDet == '0' && HDDMFeatSetDet == '0'){
					var url = 
					obj.href+"?act=rlsSelect&showAllSoftware=false&task=display&HMR_DDM="+HMR_DDM+"&HDDMRelDet=-1"+"&HDDMFeatSetDet=-1"+"&HDDMPlatFamDet=-1"+"&softwareType="+softwareType;
					document.getElementById('toggle').setAttribute('href',url);
			}else{
					(HDDMRelDet == '0')?HDDMRelDet='-1':HDDMRelDet=HDDMRelDet;
				    (HDDMFeatSetDet == '0')?HDDMFeatSetDet='-1':HDDMFeatSetDet=HDDMFeatSetDet;
				    (HDDMPlatFamDet == '0')?HDDMPlatFamDet='-1':HDDMPlatFamDet=HDDMPlatFamDet;
					var url = 
					obj.href+"?act=rlsSelect&showAllSoftware=false&task=display&HMR_DDM="+HMR_DDM+"&softwareType="+softwareType+"&HDDMRelDet="+HDDMRelDet+"&HDDMFeatSetDet="+HDDMFeatSetDet+"&HDDMPlatFamDet="+HDDMPlatFamDet;								
					document.getElementById('toggle').setAttribute('href',url);
	
			}
		}
	}
	else if(document.getElementById('toggle').innerHTML == 'Show All Features')
	{
		var softwareType = document.getElementById('OsType').value;
		var HMR_DDM;
		var HDDMRelDet;
		var HDDMPlatFamDet;
		var HDDMFeatSetDet;
		var HDDMpkg;
		HMR_DDM = document.getElementById('HMajorRelease').value
		
		var size = document.getElementById('HDDMPlatFamDet').length;
		for(var i=0;i<size;i++){
			if(document.getElementById('HDDMPlatFamDet').options[i].selected){
					HDDMPlatFamDet = document.getElementById('HDDMPlatFamDet').options[i].value
				}
		}
		var size = document.getElementById('HDDMRelDet').length;
		for(var i=0;i<size;i++){
			if(document.getElementById('HDDMRelDet').options[i].selected){
					HDDMRelDet =  document.getElementById('HDDMRelDet').options[i].value
				}
		}
		var size = document.getElementById('HDDMFeatSetDet').length;
		for(var i=0;i<size;i++){
			if(document.getElementById('HDDMFeatSetDet').options[i].selected){
					HDDMFeatSetDet = document.getElementById('HDDMFeatSetDet').options[i].value
				}
		}
		document.getElementById('toggle').setAttribute('href','/ITDIT/CFN/Dispatch');
		if(softwareType== 'IOS XR'){ 
		var size = document.getElementById('HDDMpkg').length;
			for(var i=0;i<size;i++){
				if(document.getElementById('HDDMpkg').options[i].selected){
					HDDMpkg = document.getElementById('HDDMpkg').options[i].value
				}
			}
			if(HDDMRelDet == '-1' && HDDMPlatFamDet == '-1' && HDDMFeatSetDet == '-1' && HDDMpkg == '-1'){
					var url = 
					obj.href+"?act=rlsSelect&showAllSoftware=true&task=display&HMR_DDM="+HMR_DDM+"&HDDMRelDet=0"+"&HDDMFeatSetDet=0"+"&HDDMPlatFamDet=0"+"&softwareType="+softwareType+"&HDDMpkg=0";
					document.getElementById('toggle').setAttribute('href',url);
			}else{
					(HDDMPlatFamDet == '-1')?HDDMPlatFamDet='0':HDDMPlatFamDet=HDDMPlatFamDet;
				    (HDDMRelDet == '-1')?HDDMRelDet='0':HDDMRelDet=HDDMRelDet;
				    (HDDMFeatSetDet == '-1')?HDDMFeatSetDet='0':HDDMFeatSetDet=HDDMFeatSetDet;
				    (HDDMpkg == '-1')?HDDMpkg='0':HDDMpkg=HDDMpkg;
					var url = 
					obj.href+"?act=rlsSelect&showAllSoftware=true&task=display&HMR_DDM="+HMR_DDM+"&softwareType="+softwareType+"&HDDMRelDet="+HDDMRelDet+"&HDDMFeatSetDet="+HDDMFeatSetDet+"&HDDMPlatFamDet="+HDDMPlatFamDet+"&HDDMpkg="+HDDMpkg;								
					document.getElementById('toggle').setAttribute('href',url);
	
			}
		}
		else{
			if(HDDMRelDet == '-1' && HDDMPlatFamDet == '-1' && HDDMFeatSetDet == '-1'){
					var url = 
					obj.href+"?act=rlsSelect&showAllSoftware=true&task=display&HMR_DDM="+HMR_DDM+"&HDDMRelDet=0"+"&HDDMFeatSetDet=0"+"&HDDMPlatFamDet=0"+"&softwareType="+softwareType;
					document.getElementById('toggle').setAttribute('href',url);
			}else{
					(HDDMPlatFamDet == '-1')?HDDMPlatFamDet='0':HDDMPlatFamDet=HDDMPlatFamDet;
				    (HDDMRelDet == '-1')?HDDMRelDet='0':HDDMRelDet=HDDMRelDet;
				    (HDDMFeatSetDet == '-1')?HDDMFeatSetDet='0':HDDMFeatSetDet=HDDMFeatSetDet;
					var url = 
					obj.href+"?act=rlsSelect&showAllSoftware=true&task=display&HMR_DDM="+HMR_DDM+"&softwareType="+softwareType+"&HDDMRelDet="+HDDMRelDet+"&HDDMFeatSetDet="+HDDMFeatSetDet+"&HDDMPlatFamDet="+HDDMPlatFamDet;								
					document.getElementById('toggle').setAttribute('href',url);
	
			}
		}
		

	}
}
