 
//shows/hides elements on scripted browsers
document.write('<link type="text/css" href="/css/screen-script-browser.css" rel="stylesheet">');

//virus analysis tabs - create a function that displays one tab of a four tab set prefixed 'table'. eg: element names are table1, table2 etc.
var makeAnalysisMenu = _ClosureShowSelectedElement(4,"table");

//virus docs tabs
var makeDocsMenu = _ClosureShowSelectedElement(2,"table");

//podcast docs tabs
var makePodcastMenu = _ClosureShowSelectedElement(2,"table");

//homepage expanding nav
var makeHomeXnav = _ClosureShowSelectedElement(2,"threatTable");
var swapHomeXnav = _ClosureChangeVisibleElement(2, "threatTitle");

//homepage changing text
var makeHomeSectors = _ClosureShowSelectedElement(5,"sectorTable");

//product page expanding nav
var makeProducts = _ClosureShowSelectedElement(3,"productTable");
var swapProducts = _ClosureChangeVisibleElement(3, "productTitle");

//Product beta SB documentation tabs
var makeBetaDocsMenu = _ClosureShowSelectedElement(6,"table");

//Product beta SB documentation tabs - platformSet 2
var makeBetaDocsWin2xMenu = _ClosureShowSelectedElement(6,"tableWin2x");

//Product beta SB documentation tabs - platformSet 3
var makeBetaDocsWin9xMenu = _ClosureShowSelectedElement(6,"tableWin9x");

//Product beta SB documentation tabs - platformSet4
var makeBetaDocsMacMenu = _ClosureShowSelectedElement(6,"tableMac");

//reloads the window if Nav4 resized
function MM_reloadPage(init) {  
 
 if (init==true) with (navigator) {
 
   if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
 
     document.MM_pgW=innerWidth; document.MM_pgH=innerHeight;
     onresize=MM_reloadPage; 
   }
 
 }
 
   else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH)     
 
     location.reload();
 
 }
 
MM_reloadPage(true);


// Give focus to a form element
function setFocus (form,input) {
    if (document.forms) {
        document.forms[form].elements[input].focus();
    }
}

//Adds a new class to an object, preserving existing classes
function AddClass(obj,cName)
{
	return obj.className+=(obj.className.length>0?' ':'')+cName;
}

//Adds a new class to an object, IF className matches ifValue
function AddClassIf(obj,ifValue,cName)
{
        if (obj.className.match(ifValue)) {
              return AddClass(obj,cName);
        }
}

//Removes a particular class from an object, preserving other existing classes.
function RmClass(obj,cName)
{
	return obj.className=obj.className.replace(new RegExp("^"+cName+"\\b\\s*|\\s*\\b"+cName+"\\b",'g'),'');
}

//Removes a class from an object, IF className matches ifValue
function RmClassIf(obj,ifValue,cName)
{
        if (obj.className.match(ifValue)) {
              return RmClass(obj,cName);
        }
}

// Change an element's css class
//
function swpClass (obj,cssClass) {

    if (obj)  
    {
      if (obj.className) {
	  
		// fix for left hand menu
		RmClass(obj, "levelOneActive");
		RmClass(obj, "levelOne");
		
		// fix for virusinfo analyses
		RmClass(obj, "divLinkActive");
		RmClass(obj, "divLink");
		
		RmClass(obj, "Visible");
		RmClass(obj, "Hidden");
		
		RmClass(obj, "visibleTable");
		RmClass(obj, "current");

		}
	AddClass(obj, cssClass);
    }
}

// Private function for creating functions that change an element's css class
//
function _ClosureSetClassName (css) {
    return function (id) {
        if (document.getElementById) {
            var element = document.getElementById(id);
	    swpClass(element,css);
        }
    }
}


// Create functions for manipulating css classes
//
var show    = _ClosureSetClassName('Visible');   // make an element visible
var unshow  = _ClosureSetClassName('Hidden');    // make an element invisible

// Display a list based on the selection of another list
//
function showChoices (list, prefix) {
    if (document.getElementById) {
        if (list && list.options) {
            for (i = 0 ; i < list.options.length ; i++) {
                var num   = list.options[i].value;
                var value = prefix + ((parseInt(num)) ? num : '0' );
                if (document.getElementById(value)) unshow(value);
            }

            var num    = list.value;
            var value  = prefix + ((parseInt(num)) ? num : '0' );
            var values = new Array(value, prefix + '0');

            for (i = 0 ; i < values.length ; i++) {
                if (document.getElementById(values[i])) {
                    show(values[i]);
                    break;
                }
            }
        }
    }
}


// Change the options in a drop-down list (obsoletes above)
//
function setOptionsList (targetObj,newlist)
{
    if (targetObj.options)
    {
        var list = targetObj.options;
        var selectedValue  = arguments[2];
        var selection      = selectedValue || list[list.selectedIndex].value;

        list.selectedIndex = -1;
        list.length        = newlist.length;
        
        for (var i = 0 ; i < list.length ; i++)
        {
            list[i].value = newlist[i][0];
            list[i].text  = newlist[i][1];

            if (list[i].value == selection)
            {
                list[i].selected = true; // make sure previously selected options persist
            }
        }    
    }
}

// Private function for creating functions that control tabs
//
function _ClosureShowSelectedElement (numOfTabs,elementPrefix) {
    return function (element) {
        for (var i = 1; i <= numOfTabs; i++) {
	    menuName = elementPrefix + i;
            if (document.getElementById(menuName)){
	        if (element == menuName){
		    document.getElementById(element).style.display = 'block';
		} else {
		    document.getElementById(menuName).style.display = 'none';
		}
	    }
	}
    return;    
    }
}

function _ClosureChangeVisibleElement (numOfTabs,elementPrefix) {
    return function (element) {
        for (var i = 1; i <= numOfTabs; i++) {
	    menuName = elementPrefix + i;
	    var menuElement = document.getElementById(menuName);
            if (menuElement){
	        if (element == menuName){
			menuElement.className = 'open';
		} else {
			menuElement.className = 'closed';
		}
	    }
	}
	return;    
    }
}

function newImage(arg) {
    if (document.images) {
        rslt = new Image();
        rslt.src = arg;
        return rslt;
    }
}

function changeImages() {
    if (document.images) {
        for (var i=0; i<changeImages.arguments.length; i+=2) {
            document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
        }
    }
}

function doMenu (obj, objId, tabsNumber)
	
	{
		RmClass(obj, 'hover');
		temp = objId.replace(/\d/,"")
		objId = temp;
				
			if (obj.className.match("open"))

				{
					return
				}

				else 

				{
					for (var i = 1; i <= tabsNumber; i++) 	
									
				{
				menuName = objId + i;
				var current = document.getElementById(menuName);
				if (obj == current)
				{
					AddClass(obj, "open");
					RmClass(obj, "closed");

				}
				else if (current.className.match("open"))
				{ 
								
					RmClass(current, "open");
					AddClass(current, "closed");

															
					}
				}

		}
				
		
}

// Parses query strings (currently used by virus descriptions)
var QueryString = function () {
  // This function is anonymous, is executed immediately and 
  // the return value is assigned to QueryString!
  try {
    // window.location.search seems to throw up Permission denied errors in IE
    // under some situations so we wrap it all up in a try {}
    var query_string = {};
    var query = window.location.search.substring(1);
    var vars = query.split("&");

    for (var i=0;i<vars.length;i++) {
      var pair = vars[i].split("=");
      // If first entry with this name
      if (typeof query_string[pair[0]] === "undefined") {
        query_string[pair[0]] = pair[1];
        // If second entry with this name
      } else if (typeof query_string[pair[0]] === "string") {
        var arr = [ query_string[pair[0]], pair[1] ];
        query_string[pair[0]] = arr;
		// If third or later entry with this name
      } else {
        query_string[pair[0]].push(pair[1]);
      }
    }    
    return query_string;
  }
  catch (e)
  {
    return {};
  }
} ();

