/* -*- Mode:Java; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- */
/*------------------------------------------------------------------------
 * UserAgent.js v1.0
 *
 * author: minato@infoaxia.co.jp
 *-----------------------------------------------------------------------*/

// Constructor
function UserAgent()
{
  this.init();
}

// initialize parameter
UserAgent.prototype.init = UserAgent_init;
function UserAgent_init()
{
  this.userAgent = "";
  this.os        = "";
  this.browser   = "";
  this.user_agent = navigator.userAgent.toUpperCase();
}

// [getter] return user agent name.
UserAgent.prototype.getUserAgentName = UserAgent_getUserAgentName;
function UserAgent_getUserAgentName()
{
  this.inspectOS();
  this.inspectBrowser();

  var userAgent = this.os +" "+ this.browser;
  return userAgent;
}

// [getter] return user OS name.
UserAgent.prototype.getOSName = UserAgent_getOSName;
function UserAgent_getOSName()
{
  this.inspectOS();
  return this.userAgent;
}

// [getter] return browser name.
UserAgent.prototype.getBrowserName = UserAgent_getBrowserName;
function UserAgent_getBrowserName()
{
  this.inspectBrowser();
  return this.browser;
}

// ---------------------------------------------------------------
UserAgent.prototype.inspectOS = UserAgent_inspectOS;
function UserAgent_inspectOS()
{
  var OSs = new Array();
  OSs["win"]   = new RegExp("windows", "i"); 
  OSs["mac"]   = new RegExp("macintosh", "i");
  OSs["linux"] = new RegExp("Linux", "i");
  OSs["bsd"]   = new RegExp("FreeBSD", "i");

  for (var os in OSs) {
    if (OSs[os].test(this.user_agent)) {
      this.os = os;
      break;
    }
  }
}

UserAgent.prototype.inspectBrowser = UserAgent_inspectBrowser;
function UserAgent_inspectBrowser()
{
  var Brws = new Array();
  Brws["ie"]       = new RegExp("(MSIE [0-9]+[0-9.]*[0-9])", "i");
  Brws["firefox"]  = new RegExp("(FIREFOX[ /][0-9]+[0-9.]*[0-9])", "i");
  Brws["netscape"] = new RegExp("(NETSCAPE[ /][0-9]+[0-9.]*[0-9])", "i");
  Brws["opera"]    = new RegExp("(OPERA[ /][0-9]+[0-9.]*[0-9])", "i");
  Brws["safari"]   = new RegExp("(SAFARI[ /][0-9]+[0-9.]*[0-9])", "i");
  //  Brws["gecko"]    = new RegExp("(SAFARI[ /][0-9]+[0-9.]*[0-9])", "i");

  for (var brw in Brws) {
    if (Brws[brw].test(this.user_agent)) {
      this.browser = brw;
    }
  }
}

