/* Detecting browsers
*****************************************************************************/
var sUserAgent = navigator.userAgent.toLowerCase();
var sPlatform = navigator.platform.toLowerCase();
var fAppVersion = parseFloat(navigator.appVersion);

/* Compare versions */
function compareVersions(sVersion1, sVersion2)
{
  var aVersion1 = sVersion1.split(".");
  var aVersion2 = sVersion2.split(".");
  if (aVersion1.length > aVersion2.length) {
    for (var i=0; i < aVersion1.length - aVersion2.length; i++) {
      aVersion2.push("0");
    }
  } else if (aVersion1.length < aVersion2.length) {
    for (var i=0; i < aVersion2.length - aVersion1.length; i++) {
      aVersion1.push("0");
    }
  }
  for (var i=0; i < aVersion1.length; i++) {
    if (aVersion1[i] < aVersion2[i]) {
      return -1;
    } else if (aVersion1[i] > aVersion2[i]) {
      return 1;
    }
  }
  return 0;
}

/* Detecting Opera */
var isOpera = sUserAgent.indexOf("opera") > -1;
/* Detecting Konqueror/Safari */
var isKHTML = sUserAgent.indexOf("khtml") > -1 || sUserAgent.indexOf("konqueror") > -1 || sUserAgent.indexOf("applewebkit") > -1;
/* Detecting Internet Explorer */
var isIE = sUserAgent.indexOf("compatible") > -1 && sUserAgent.indexOf("msie") > -1 && !isOpera;
/* Detecting Mozilla */
var isMoz = sUserAgent.indexOf("gecko") > -1 && !isKHTML;
/* Detecting Netscape Communicator 4.x */
var isNS4 = !isIE && !isOpera && !isMoz && !isKHTML && (sUserAgent.indexOf("mozilla") == 0) && (navigator.appName == "netscape") && (fAppVersion >= 4.0 && fAppVersion < 5.0);

var isWin = (sPlatform == "win32") || (sPlatform == "windows");
var isMac = (sPlatform == "mac68k") || (sPlatform == "macppc") || (sPlatform == "macintosh");
var isUnix = (sPlatform == "X11") && !isWin && !isMac;

var isWin95 = isWin98 = isWinNT4 = isWin2K = isWinME = isWinXP = false;
if (isWin) {
  isWin95 = sUserAgent.indexOf("win95") > -1 || sUserAgent.indexOf("windows 95") > -1;
  isWin98 = sUserAgent.indexOf("win98") > -1 || sUserAgent.indexOf("windows 98") > -1;
  isWinME = sUserAgent.indexOf("win 9x 4.90") > -1 || sUserAgent.indexOf("windows me") > -1;
  isWin2K = sUserAgent.indexOf("windows nt 5.0") > -1 || sUserAgent.indexOf("windows 2000") > -1;
  isWinXP = sUserAgent.indexOf("windows nt 5.1") > -1 || sUserAgent.indexOf("windows xp") > -1;
  isWinNT4 = sUserAgent.indexOf("winnt") > -1 || sUserAgent.indexOf("windows nt") > -1 || sUserAgent.indexOf("winnt4.0") > -1 || sUserAgent.indexOf("windows nt 4.0") > -1 && (!isWinME && !isWin2K && !isWinXP);
}

var isMac68K = isMacPPC = false;
if (isMac) {
  isMac68K = sUserAgent.indexOf("mac_68000") > -1 || sUserAgent.indexOf("68k") > -1;
  isMacPPC = sUserAgent.indexOf("mac_powerpc") > -1 || sUserAgent.indexOf("ppc") > -1;
}

var isSunOS = isMinSunOS4 = isMinSunOS5 = isMinSunOS5_5 = false;
if (isUnix) {
  isSunOS = sUserAgent.indexOf("sunos") > -1;
  if (isSunOS) {
    var reSunOS = new RegExp("sunos (\\d+\\.\\d+(?:\\.\\d+)?)");
    reSunOS.test(sUserAgent);
    isMinSunOS4 = compareVersions(RegExp["$1"], "4.0") >= 0;
    isMinSunOS5 = compareVersions(RegExp["$1"], "5.0") >= 0;
    isMinSunOS5_5 = compareVersions(RegExp["$1"], "5.5") >= 0;
  }
}
