/* ************************************************************* DETECT.JS - JS Browser/Version/Platform Detection Library** =========================================================** This library contains functions to detect/return the user's** browser, version, and platform and to jump to a URL if** the user is using a specified browser and/or version and/or** platform. It's yours for free; please maintain this header!**** To load this library in an HTML doc, put the following** line in the doc's HEAD (before any other SCRIPT tags):**** <SCRIPT SRC="detect.js" LANGUAGE="JavaScript"></SCRIPT>**** Author      Ver  Date    Comments** ======      ===  ====    ========** Rick Scott  1.0  1/1/00  First release**** Copyright 2000, Rick Scott, all rights reserved.*********************************************************** *//* ************************************************************* Functions** =========** getBrowser()**   returns browser: "netscape", "ie", "other"** getBrowserVer()**   returns browser version number or "n/a"** getPlatform()**   returns browser OS: "mac", "win", "unix", "other"** ifBVPjump(browser, version, platform, URL);**   jumps to URL if user's browser, version, platform all**   match the first three arguments**   browser - "netscape", "ie", "other", "any"**   version - "#.x", "#.#[#]", "any"**             "#.x" matches any version #**               ex: "4.x" matches 4.0, 4.05, 4.5, etc.**             "#.#[#]" matches only version #.#[#]**               ex: "4.05" matches 4.05, not 4.0, 4.5 **   platform - "mac", "win", "unix", "other", "any"**   URL - relative or absolute URL**   examples:**     ifBVPjump("ie", "4.x", "win", "ie4winpage.html");**       would jump to ie4winpage.html if the user's BVP**       were IE, 4.x, Windows**     ifBVPjump("IE", "4.x", "win", "ie4winpage.html");**       wouldn't work because "ie" is case-sensitive**    ifBVPjump("any", "any", "unix", "unixpage.html");**       would jump to unixpage.html if user's P were UNIX**     ifBVPjump("any", "any", "any", "index.html");**       would jump to index.html regardless of user's BVP** isNetscape()**   returns true if Netscape, false if not** isIE()**   returns true if IE, false if not** isVer3()**   returns true if version is 3.x, false if not** isVer4()**   returns true if version is 4.x, false if not** isVer4up()**   returns true if version is 4.0+, false if not**   this is a quick way to test for DHTML capability** isVer5()**   returns true if version is 5.x, false if not** isMac()**   returns true if OS is Mac, false if not** isWin()**   returns true if OS is Windows, false if not** isUNIX()**   returns true if OS is UNIX, false if not*********************************************************** */function getBrowser()  // get the browser program name  {  if (navigator.appName == null || navigator.appName == "")    return "other";  else if (navigator.appName == "Netscape")    return "netscape";  else if (navigator.appName == "Microsoft Internet Explorer")    return "ie";  else    return "other";  }function isNetscape()  // is browser Netscape?  {  if (getBrowser() == "netscape")    return true;  else    return false;  }function isIE()  // is browser IE?  {  if (getBrowser() == "ie")    return true;  else    return false;  }function getBrowserVer()  // get the browser version  {  if (navigator.appVersion == null || navigator.appVersion == "")    return "n/a";  // fix for IE 5.x appVersion bug, which returns 4.x instead of 5.x  if (isIE() && navigator.userAgent.indexOf("5.") != -1)    {     var verNum = "";    var str = navigator.userAgent;    var pos = str.indexOf("IE ");  // real version num follows "IE "    for (pos=pos+3; pos<str.length; pos++)  // build verNum string      if (str.charAt(pos) == "." ||          (str.charAt(pos) <= "9" && str.charAt(pos) >= "0"))        verNum += str.charAt(pos);      else        break;    return verNum;    }  var verArray = navigator.appVersion.split(" ");  return verArray[0];  }function isVer3()  // is browser version 3.x?  {  if (getBrowserVer() >= 3.0 && getBrowserVer() < 4.0)    return true;  else    return false;  }function isVer4()  // is browser version 4.x?  {  if (getBrowserVer() >= 4.0 && getBrowserVer() < 5.0)    return true;  else    return false;  }function isVer4up()  // is browser version 4.0+? (for DHTML coding)  {  if (getBrowserVer() >= 4.0)    return true;  else    return false;  }function isVer5()  // is browser version 5.x?  {  if (getBrowserVer() >= 5.0 && getBrowserVer() < 6.0)    return true;  else    return false;  }function getPlatform()  // get the browser platform (OS)  {  if (navigator.platform == null || navigator.platform == "")    return "other";  else if (navigator.platform.indexOf("Mac") >= 0)    return "mac";  else if (navigator.platform.indexOf("Win") >= 0)    return "win";  else if (navigator.platform.indexOf("Unix") >= 0)    return "unix";  else    return "other";  }function isMac()  // is browser OS Mac?  {  if (getPlatform() == "mac")    return true;  else    return false;  }function isWin()  // is browser OS Windows?  {  if (getPlatform() == "win")    return true;  else    return false;  }function isUNIX()  // is browser OS UNIX?  {  if (getPlatform() == "unix")    return true;  else    return false;  }function ifBVPjump(browser, version, platform, URL)  {  // first make sure that version = user's browser version  if (version.indexOf("x") != -1)  // version is in "#.x" format    {    if ((version.charAt(0) == "3") && (isVer3() == false))      return;  // version's incorrect, return    else if ((version.charAt(0) == "4") && (isVer4() == false))      return;  // version's incorrect, return     else if ((version.charAt(0) == "5") && (isVer5() == false))      return;  // version's incorrect, return     }  else if (version.indexOf(".") != -1) // version is in #.#[#] format    {    if (version != getBrowserVer())      return;  // version's incorrect, return to caller    }  // okay, version's correct, but what about browser/platform?  if ( ((browser == getBrowser()) || (browser == "any"))       &&        ((platform == getPlatform()) || (platform == "any")) )    top.document.location.href = URL;  // BVP all correct, jump!  else    return;  // B and/or P incorrect, return  }
