// BO getElementById //
function getLayer(whichLayer) {
// play nice with non-standards browsers
   if (document.getElementById) {
   // this is the way the standards work
      return document.getElementById(whichLayer);
   } else if (document.all) {
   // this is the way old msie versions work
      return document.all[whichLayer];
   } else if (document.layers) {
   // this is the way nn4 works
      return document.layers[whichLayer];
   } else {
      return;
   }
}
// EO getElementById //
// BO cookie utils //
function getCookie(c_name) {
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
return "";
}
function setCookie(c_name,value,expiredays,path) {
   var exdate=new Date();
   exdate.setDate(exdate.getDate()+expiredays);
   document.cookie=c_name+ "=" + escape(value) + "; path=" + path +
   ((expiredays==null) ? "" : ";expires=" + exdate.toGMTString());
}

function delCookie(name) {
   var expireNow = new Date();
   document.cookie = name + "=" +
   "; expires=Thu, 01-Jan-70 00:00:01 GMT" +  "; path=/";
}
// EO cookie utils //

function randomSwatchNumber(swatch,total) {
   var randomnumber=Math.floor(Math.random()*total);
   if (randomnumber == '0') {
      randomnumber = '1';
   }
   randomnumber = '0' + randomnumber;
//   alert(swatch + randomnumber);
   getLayer(swatch).className = swatch + randomnumber;
}

function swatchPicker() {
   randomSwatchNumber('mobile','8');
   randomSwatchNumber('distributed','8');
   randomSwatchNumber('highavailability','9');
}
function externalLinks() {
 if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") &&
       anchor.getAttribute("rel") == "external")
     anchor.target = "_blank";
 }
} 

function snort() {
  var br=new Array(4);
  var os=new Array(2);
  var flash=new Array(2);
  br=getBrowser();
  os=getOS();
  flash=hasFlashPlugin();

  var sniffOut = "Browser identifier: "+br[0]+"\n";
  sniffOut    += "Browser version: "+br[1]+"\n";
  sniffOut    += "Browser major version: "+getMajorVersion(br[1])+"\n";
  sniffOut    += "Browser minor version: "+getMinorVersion(br[1])+"\n";
  sniffOut    += "Browser engine: "+br[2]+"\n";
  sniffOut    += "Full user agent string: "+getFullUAString()+"\n";

//alert(sniffOut);

   if((br[0] == "msie") && (getMajorVersion(br[1]) == "6")){
//      alert('bad');
   } else {
      getLayer('fadeheader').className = 'displayBlock'
      getLayer('fadefooter').className = 'displayBlock'
      getLayer('glo01').className = 'displayBlock';
      getLayer('glo02').className = 'displayBlock';
      getLayer('glo03').className = 'displayBlock';
      getLayer('glo04').className = 'displayBlock';
      getLayer('glo05').className = 'displayBlock';
      getLayer('glo06').className = 'displayBlock';
      getLayer('glo07').className = 'displayBlock';
   }
}

function checkRounded() {
   var myBorder = RUZEE.ShadedBorder.create({ corner:8, shadow:16, border:1 });
      if (document.getElementById('round_me')) {
         myBorder.render('round_me');
      }
      if (document.getElementById('round_me02')) {
         myBorder.render('round_me02');
      }
      if (document.getElementById('roundSec')) {
         myBorder.render('roundSec');
      }
      if (document.getElementById('round_me_nextSteps')) {
         myBorder.render('round_me_nextSteps');
      }
      if (document.getElementById('round_me_RHS')) {
         myBorder.render('round_me_RHS');
      }
      if (document.getElementById('round_me_downloadNow')) {
         myBorder.render('round_me_downloadNow');
      }
      if (document.getElementById('round_me_infoSheets')) {
         myBorder.render('round_me_infoSheets');
      }
      if (document.getElementById('round_me_jobs')) {
         myBorder.render('round_me_jobs');
      }
      if (document.getElementById('round_me_contactDetails')) {
         myBorder.render('round_me_contactDetails');
      }
      if (document.getElementById('round_me_bugReporting')) {
         myBorder.render('round_me_bugReporting');
      }
      if (document.getElementById('round_me_vmwareSupport')) {
         myBorder.render('round_me_vmwareSupport');
      }
      if (document.getElementById('round_me_wpSearch')) {
         myBorder.render('round_me_wpSearch');
      }
      if (document.getElementById('round_me_wpArchives')) {
         myBorder.render('round_me_wpArchives');
      }
      if (document.getElementById('round_me_wpCategories')) {
         myBorder.render('round_me_wpCategories');
      }
      if (document.getElementById('round_me_wpInfo')) {
         myBorder.render('round_me_wpInfo');
      }
      if (document.getElementById('round_me_login')) {
         myBorder.render('round_me_login');
      }
      if (document.getElementById('round_me_diagram')) {
         myBorder.render('round_me_diagram');
      }
      if (document.getElementById('round_me_diagDesc')) {
         myBorder.render('round_me_diagDesc');
      }
      if (document.getElementById('round_me_sitelogin')) {
         myBorder.render('round_me_sitelogin');
      }
      if (document.getElementById('round_me_siteregister')) {
         myBorder.render('round_me_siteregister');
      }
      if (document.getElementById('round_me_forgotPW')) {
         myBorder.render('round_me_forgotPW');
      }
      if (document.getElementById('round_me_loginErrors')) {
         myBorder.render('round_me_loginErrors');
      }
      if (document.getElementById('round_me_license')) {
         myBorder.render('round_me_license');
      }
      if (document.getElementById('round_me_extra')) {
         myBorder.render('round_me_extra');
      }
}



function cstmGetElementsByClassNameExt(parentElement, class_name, tag) {
    /* Extendeds function with performance improvements.
     * by using a parentElement and the tag the class is on
     * the list of elements to check is reduced.
     *
     * This function doesn't get bound to an object.
     */
    var docList;
    var matchArray;
    var re;
    var len;

    tag = tag || "*";
    parentElement = parentElement || document;
    if (typeof parentElement == "string") //object could be passed instead of Id
        parentElement = document.getElementById(parentElement);

    /* Get array of tags */
    if (tag == "*") {
       /* The test is to accommodate IE 5,
        * leave it out if IE 5 support is not required
        */
       docList = parentElement.all || parentElement.getElementsByTagName('*');
    } else {
       docList = parentElement.getElementsByTagName(tag);
    }

    /*Create a regular expression object for class*/
    re = new RegExp("(?:^|\\s)" + class_name + "(?:\\s|$)");

        /* Create output array*/
    matchArray = new Array();
    len = docList.length;

    /* Populate output array from tag array
     * do loop is faster than for loop
     * albeit out is in reverse order
     */
    while (len--) {
        if (re.test(docList[len].className)) {
            matchArray[matchArray.length] = docList[len];
        }
    }
    //return matchArray.reverse(); //if the order needs to forward
    return matchArray;
}//eof


function tipIt(strng,div) {
   var tipArea = getLayer(div);
   if (strng) {
      tipArea.className = 'tipRoll';
   } else {
      tipArea.className = '';
   }
   if (tipArea) tipArea.innerHTML = strng ? strng : ''
}
