function envSet() {
  // ブラウザ判別
  var ua = navigator.userAgent;
  this.NN  = (ua.indexOf("Netscape") != -1);
  this.Sa  = (ua.indexOf("Safari") != -1);
  this.FF  = (ua.indexOf("Firefox") != -1);
  this.IE5 = (ua.indexOf("MSIE 5") != -1);
  this.IE50 = (ua.indexOf("MSIE 5.0") != -1);
  this.IE55 = (ua.indexOf("MSIE 5.5") != -1);
  this.IE6 = (ua.indexOf("MSIE 6") != -1);
  this.IE7 = (ua.indexOf("MSIE 7") != -1);
  this.IE4  = (ua.indexOf("MSIE 4") != -1);
  this.IE   = (ua.indexOf("MSIE") != -1);
  this.Moz  = (ua.indexOf("Gecko") != -1);
  this.Op  = (ua.indexOf("Opera") != -1);
  this.Omn  = (ua.indexOf("OmniWeb") != -1);
  this.Win  = (ua.indexOf("Windows") != -1);
  this.Mac  = (ua.indexOf("Mac") != -1);
  if (this.Op6) this.IE50 = this.IE = false; // WinIE を騙っていた時の対策
  if (this.Omn) this.NN4            = false; // document.layers に反応してるので

  // CSS ファイルのあるディレクトリ（絶対パス）
  this.cssDir = "css/";
  
  // 各ブラウザ用補正 CSS のファイル名
  if (this.IE50 && this.Win) this.patchCSS = "ie5.css";
  if (this.IE55 && this.Win) this.patchCSS = "ie5.css";
  if (this.IE6 && this.Win) this.patchCSS = "ie.css";
  if (this.IE7 && this.Win) this.patchCSS = "ie.css";
  if (this.IE4 && this.Win)  this.patchCSS = "ie.css";
  if (this.FF)               this.patchCSS = "firefox.css";
  if (this.NN)              this.patchCSS = "netscape.css";
  if (this.Sa && this.Mac)  this.patchCSS = "safari.css";
  if (this.IE5 && this.Mac)  this.patchCSS = "ie_mac.css";
  if (this.Op)              this.patchCSS = "opera.css";
  if (this.Omn)              this.patchCSS = "none.css";

  // DOM 処理関係
  this.DOMenabled =  (document.getElementsByTagName) ? true : false;
  this.firstLoad = n2.isFirstLoad;

  return this;
}

function nyan2Func() {}

nyan2Func.prototype = {
  getAfter : function(_str, _word) {
    // 文字列 _str 中から _word 以降の残りを抽出する\
    var offset = _str.indexOf(_word)
    if (offset == -1) return _str;
      else return _str.substring(offset + _word.length, _str.length);
  },

  makeTag : function() {
    // makeTag( tagName, [attr=value, ... ] , content|null )
    var me = this.makeTag;
    var n = me.arguments.length;
    var tag = "<" + me.arguments[0];

    for (var i=1; i<n-1; i++) {
      if (!me.arguments[i]) continue;
      var attrs = me.arguments[i].split("=");
      var attr = attrs[0];
      var value = attrs.slice(1, attrs.length).join("=");
      tag += ' ' + attr + '="' + value + '"';
    }
    if (me.arguments[n-1]) tag += ">" + me.arguments[n-1] + "</" + me.arguments[0] + ">";
      else tag += " />";
    return tag;
  },

  loadCSS : function(_file) {
    if (!_file) return;

    var title = (document.styleSheets && document.styleSheets.length > 0) ? document.styleSheets[0].title : null;
    title = (title) ? "title=" + title : null;
    var media = (!env.NN4) ? "media=screen,tv" : null;

    var cLINK = this.makeTag(
      "link",
      "rel=styleSheet",
      "type=text/css",
      "href=" + env.cssDir + _file,
      media,
      title,
      null
    );
    document.write(cLINK);
  }
}

var n2 = new nyan2Func();
var env = new envSet();

n2.loadCSS(env.patchCSS);

