// @#/AJAX/AugusAjax.js
/*****************************************************************************
 * Script(type='text/javascript') Created by rikidozan813-master@yahoo.co.jp
 * Copyright (c) 2006-2009 T.Augustine.
 * URL  http://taugus.web.fc2.com/
 * CSS: http://taugus.web.fc2.com/css/common.css
 *****************************************************************************/
//──────────────────────────────────────
// 目次
//      AugusAjax               : 自分自身です
//          init ()
//          getMyAllVersion ()
//          lastMod ()
//          HTMLUpdate ()
//          loadXMLDoc ()
//          validOnLoad ()
//          writeMainMenu ()
//      ExceptionAlert ()       : 例外エラーをアラートする
//      DEBUG_alert ()
//      Class.create()          : prototype
//      Object.extend()         : prototype
//      $A()                    : prototype
//      .bind                   : prototype
//      Try.these               : prototype
//      $()                     : prototype
//      jump                : location
//      navi                : navigation(next/prev), Menu
//      
//      include
//          externalLinks
//          Splintered striper  cf.var StriperJS.Version
//          
//──────────────────────────────────────
// 1.0.e    Prototype.js Element.Methods.getDimensions AppleWebKitでのバグ対応
// 1.0.f    GradationString バグ修正 など
// 2.0.a    Prototype.js を廃止
// 2.0.b	UserAgent.prNavigator バグ修正
// 2.1      carenderXmlLoad IE 対応(バグ修正)
//──────────────────────────────────────
//===============================================
// グローバル変数
if (typeof gUa != 'undefine') {
  var      gUa  = navigator.userAgent;
}
if (typeof gUaLow != 'undefine') {
  var      gUaLow = navigator.userAgent.toLowerCase();
}
if (typeof gPfLow != 'undefine') {
  var      gPfLow  = navigator.platform.toLowerCase();
}

//----------------------------------------------------------------------------
//  このAJAXの初期定義
var AugusAjax = {
    Name: 'AugusAjax.js',
    Version: '2.1',
    Encode: 'utf-8',
    CreateDate: '2008/10/05',
    UpDate: '2009/10/30',
    Copyright: '2006-2009 T.Augustine.',
    Description: 'T.Augustineが創る、AJAX群',
    Administrator: 'rikidozan813-master@yahoo.co.jp',

    noPrototype: (typeof Prototype == 'undefined')?    true : false,
    BasePrototypeVersion:   '1.6.1_rc2',

    //===============================================
    // デバッグ情報出力
    DEBUG: false,    // true/false

    //===============================================
    // HTML初期化 onload
    init: function (argv) {
        this.noscript ();
        if (this.DEBUG) {
            var str='';
            str += UserAgent.getOPProductName();  // OSﾌﾟﾛﾀﾞｸﾄの文字列取得
            str += '<br />';
            str += UserAgent.getUserAgent();    // ブラウザ種別の文字列取得
            str += '<br />';
            str += gUa;
            str += '<br /><hr />';
            str += AugusAjax.getMyAllVersion();
            
            var div = document.createElement('div');
            div.className = "left";
            div.innerHTML = str;
            document.getElementsByTagName('body').item(0).appendChild(div);
            str='';
        }

        this.writeMainMenu ();
        if (arguments.length)   this.writeFooter (argv);
        else                    this.writeFooter ();
        striper ('tbody', 'striped', 'tr', 'odd,even');
        this.lastMod ();
        externalLinks ();
    },

    //===============================================
    // AugusAjaxバージョン情報出力
    getMyAllVersion: function () {
        var str ='';
        str += '<p>'+AugusAjax.Name + '  ('+ AugusAjax.Version+')　：'+AugusAjax.Description+'</p>';
        str += '<ul>';
        str += '<li>'+'jump :' + jump.Version +'　：'+jump.Description+ '</li>';
        str += '<li>'+'navi :' + navi.Version +'　：'+navi.Description+ '</li>';
        str += '<li>'+'DateJS :' + DateJS.Version +'　：'+DateJS.Description+ '</li>';
        str += '<li>'+'isBrowser :' + isBrowser.Version +'　：'+isBrowser.Description+ '</li>';
        str += '<li>'+'UserAgent :' + UserAgent.Version +'　：'+UserAgent.Description+ '</li>';
        str += '<li>'+'isPlatform :' + isPlatform.Version +'　：'+isPlatform.Description+ '</li>';
        str += '<li>'+'XMLHTML :' + XMLHTML.Version +'　：'+XMLHTML.Description+ '</li>';
        str += '<li>'+'ExternalLinks :' + ExternalLinks.Version +'　：'+ExternalLinks.Description+ '</li>';
        str += '<li>'+'Striper :' + Striper.Version +'　：'+Striper.Description+ '</li>';
        if (!this.noPrototype)
            str += '<li>'+'Prototype :' + Prototype.Version +'　：<a href="http://www.prototypejs.org/" rel="external">http://www.prototypejs.org/</a></li>';
        str += '</ul>';
        return str;
    },

    //===============================================
    // lastMod HTMLファイル最終更新日
    lastMod: function () {
        var d = new Date(document.lastModified);
        var str = "最終更新日 : "+ d.toLocaleString();
        if (isBrowser.Gecko)    str += " +0900(JST)";
        $HTML("lastMod",str);
    },

    //===============================================
    // XML + XSLT → HTML
    // 非同期じゃないよ！
    loadXMLDoc: function (sourceXML, sourceXSLT, idName) {
        var xmlObj, xslObj, xslProc;
        
        xmlObj = xmlRequest.createXMLObject();
        xslObj = xmlRequest.createXSLTObject();
        if (!xmlObj) {
            alert("XSLオブジェクトの生成に失敗しました。");
            return;
        }
        if (!xslObj) {
            alert("XSLオブジェクトの生成に失敗しました。");
            return;
        }
        xslProc = xmlRequest.createXSLTemplateObject();
        if (xslProc == null) {
            return false;
        }
        
        if (window.XMLHttpRequest && !(window.ActiveXObject)) {
            xmlObj.open ("GET", sourceXML, false);
            xmlObj.send ("");
            xmlObj = xmlObj.responseXML;
            xslObj.open ("GET", sourceXSLT, false);
            xslObj.send ("");
            xslObj = xslObj.responseXML;
        } else {
            xmlObj.async = false;
            xslObj.async = false;
            xmlObj.load (sourceXML);
            xslObj.load (sourceXSLT);
        }
        
        if (XSLTProcessor) {
            xslProc.importStylesheet(xslObj)
            var element = $(idName);
            if (element == null){
                alert("elementが見つかりません");
                return false;
            }
            var target = element.childNodes.item(0);
            var newFragment = xslProc.transformToFragment(xmlObj,document);
            element.innerHTML = "";
            element.appendChild(newFragment,target);
        } else {
            xslProc.transform;
            $HTML (idName, xslProc.output);
        }
        alert("done.");
    },

    //===============================================
    // HTML/CSS validate 
    // argument:    valid_HTML is Boolean
    //              valid_CSS  is Boolean
    validOnLoad: function (valid_HTML, valid_CSS) {
        var str='';
        str = '<a href="http://validator.w3.org/check?uri=referer">';
        if (valid_HTML) {
            str += '<img src="/img/valid-xhtml10-blue.png" alt="Valid XHTML 1.0 Transitional" height="31"  width="88" class="border0" />';
        }
        else {
            str += '<img src="/img/blog_xhtml11_g.gif" alt="Valid XHTML 1.0 Transitional" height="15" width="80" class="border0" />';
        }
        str += '</a>&nbsp;';
        str += '<a href="http://jigsaw.w3.org/css-validator/check/referer">';
        if (valid_CSS)
            str += '<img src="/img/vcss.gif" alt="Valid CSS!"width="88" height="31" class="border0" />';
        else
            str += '<img width="80" height="15" src="/img/blog_css_g.gif" alt="Valid CSS!" class="border0" />';
        str += '</a>';

          $HTML("VALIDATE", str);
    },
    
    //===============================================
    // メインメニューリスト出力
    writeMainMenu: function () {
        var str = '';

        var Riki_Update=DateJS.getUpdateImg ("2009","05","16","");
        var Music_Update=DateJS.getUpdateImg ("2009","01","31","");
        var MA_Update=DateJS.getUpdateImg ("2009","02","11","");
        var Web_Update=DateJS.getUpdateImg ("2009","03","15","");
        var Koria_Update=DateJS.getUpdateImg ("2009","04","16","");
        var Link_Update=DateJS.getUpdateImg ("2009","02","11","");


        str += '<h1 class="sideH1_2" title="Main menu">Augus-Site：目次<'+'/h1>';
        str += '<ul class="vrticalMenu01">';
        str += '<li><a href="/Martial_Arts/RIKIDOZAN/index.html" title="力道山の波乱万丈人生の年表"><strong>力 道 山<'+'/strong>の年表 <span lang="ko" xml:lang="ko">&#xC5ED;&#xB3C4;&#xC0B0;<'+'/span>'+ Riki_Update +'<'+'/a><'+'/li>';
        str += '<li><a href="/Martial_Arts/index.html" title="格闘技のポータル">格闘技'+ MA_Update +'<'+'/script><'+'/a><'+'/li>';
        str += '<li><a href="/MUSIC/Artist.html" title="我が家のCDアーティスト・アルバム情報検索">我が家の音楽ＣＤ'+ Music_Update +'<'+'/script><'+'/a><'+'/li>';
        str += '<li><a href="/WEB/webIndex.html" title="XML JavaScript CSS SEOリファレンス">WEBリファレンス'+ Web_Update +'<'+'/script><'+'/a><'+'/li>';
//        str += '<li><a href="/Koria/index.html" title="朝鮮の歴史">朝鮮の歴史 <span lang="ko" xml:lang="ko">&#xC870;&#xC120;<'+'/span>'+ Koria_Update +'<'+'/script><'+'/a><'+'/li>';
        str += '<li><a href="/MASSAGE/about.html" title="タイ古式マッサージ:ヌアボーランについて">タイマッサージ<'+'/a><'+'/li>';
        str += '<li><a href="/augustine.html" title="作者オーガスチンの紹介">自己紹介<'+'/a><'+'/li>';
        str += '<li><a href="/linkList.html" title="オーガスがお勧めするリンク集">おすすめリンク集'+ Link_Update +'<'+'/script><'+'/a><'+'/li>';
        str += '<'+'/ul>';

        $HTML( 'MENU_LIST', str );
    },

    //===============================================
    writeFooter: function (argv) {
        var str = '';
        str += '<div class="FMenu">';
        str += '<h1><a href="/Martial_Arts/RIKIDOZAN/index.html">力道山</a></h1>';
        str += navi.rikiMenuDetail ();
        str += '</div>';
        str += '<div class="FMenu">';
        str += '<h1><a href="/MASSAGE/about.html">マッサージ</a></h1>';
        str += '<ul class="none">';
        str += '<li><a href="/MASSAGE/about.html#ABOUT">マッサージとは</a></li>';
        str += '<li><a href="/MASSAGE/about.html#EFFECT">効果と効能</a></li>';
        str += '</ul>';
        str += '</div>';
        str += '<div class="FMenu">';
        str += '<h1><a href="/MUSIC/Artist.html">音楽</a></h1>';
        str += '</div>';
        str += '<div class="FMenu">';
        str += '<h1><a href="/Martial_Arts/index.html">格闘技</a></h1>';
        str += '<ul class="none">';
        str += '<li><a href="/Martial_Arts/Pro-Wrestling/brody.html">ブルーザー・ブロディー</a></li>';
        str += '<li><a href="/Martial_Arts/Pro-Wrestling/index.html">世界メジャーベルト</a></li>';
        str += '<li><a href="/Martial_Arts/sumo/index.html">大相撲</a></li>';
        str += '  <ul>';
        str += '  <li><a href="/Martial_Arts/sumo/heya.htm">相撲部屋</a></li>';
        str += '  <li><a href="/Martial_Arts/sumo/toshiyori.htm">年寄名跡</a></li>';
        str += '  <li><a href="/Martial_Arts/sumo/sumo_history.htm">略史年表</a></li>';
        str += '  </ul>';
        str += '</ul>';
        str += '</div>';
        str += '<div class="FMenu">';
        str += '<h1><a href="/WEB/webIndex.html">WEBリファレンス</a></h1>';
        str += '<ul class="none">';
        str += '<li><a href="/WEB/HTML/index.html">(X)HTML</a></li>';
        str += '<li><a href="/WEB/XML/xml.html">XML</a></li>';
        str += '<li><a href="/WEB/CSS/css.html">CSS</a></li>';
        str += '<li><a href="/WEB/JavaScript/javascript.html">JavaScript</a></li>';
        str += '<li><a href="/WEB/SEO/seo.html">無料でSEO</a></li>';
        str += '</ul>';
        str += '</div>';
        str += '<div class="FMenu">';
        str += '<h1>その他</h1>';
        str += '<ul class="none">';
        str += '<li><a href="/augustine.html">自己紹介</a></li>';
        str += '<li><a href="/linkList.html">おすすめリンク集</a></li>';
        str += '</ul>';
        str += '</div>';
        str += '';
        str += '<hr class="f_clear0">';
        str += '<div id="lastMod">lastMod：最終更新日を表示</div>';
        if (arguments.length) {
            for (var i=0, len=arguments.length; i<len; i++) {
                if (arguments[i] != 'undefined' && arguments[i].toLowerCase() == 'top') {
                    str += '<div id="GENERATER">';
                    str += ' <a href="http://www.w-frontier.com/" rel="extrenal" title="次世代高機能HTML/XHTMLエディタ「ez-HTML」(Web Frontier) で記述しています">';
                    str += ' <img src="/img/ezHTML_g.gif" width="88" height="15" ';
                    str += ' alt="次世代高機能HTML/XHTMLエディタ「ez-HTML」(Web Frontier)"><br>Created by ez-HTML</a>　';
                    str += '</div>';
                }
            }
        }

        str += '<hr class="f_clear0">';
        str += '<address>';
        str += '&nbsp;<a href="/help.html" class="help" onclick="javascript:return jump.Help();" onkeypress="javascript:return jump.Help();"  title="『ブラウザの設定・操作』のヘルプ">ヘルプ</a>&nbsp;';
        str += '&nbsp;<a href="/copyright.html" title="著作権・個人情報・動作環境等について">サイト利用案内</a>&nbsp;';
        str += '&nbsp;<a href="/reference.html" title="お問い合わせ・ご意見・ご要望はこちらまで"><img src="/img/mail01-b2.gif" alt="Mail" title="お問い合わせ・ご意見・ご要望はこちらまで" width="21" height="12" class="border0">&nbsp;お問合せ&nbsp;</a>&nbsp;';
        str += '&nbsp;<a href="/sitemap.html" title="Augus-Siteサイトマップへ">&nbsp;サイトマップ&nbsp;</a>&nbsp;';
        str += '</address>';
        str += '<div id="copyright">Copyright (c) 2006-2009. T.Augustine.</div>';

        $HTML("FOOTER", str);
        str='';
    },

    //===============================================
    // noscript 表示しない
    noscript: function () {
        var obj = $("JavaScript-WARNING");
        if (obj) {
            obj.style.display = "none";
        }
    },

    BrowserFeatures: {
        XPath: !!document.evaluate,
        SelectorsAPI: !!document.querySelector,
        ElementExtensions: (function() {
          if (window.HTMLElement && window.HTMLElement.prototype)
            return true;
          if (window.Element && window.Element.prototype)
            return true;
        })(),
        SpecificElementExtensions: (function() {
          if (typeof window.HTMLDivElement !== 'undefined')
            return true;

          var div = document.createElement('div');
          if (div['__proto__'] && div['__proto__'] !==
           document.createElement('form')['__proto__']) {
            return true;
          }

          return false;
        })()
  },

    emptyFunction: function() { },
    mimeType: ['text/html','text/xml']
}   // End of AugusAjax

//==============================================
// ブラウザ
//----------------------------------------------
// who      
// CF.http://x68000.q-e-d.net/~68user/cgi-bin/view-browser.cgi
var isBrowser = {
    Version: '1.0.b',
    Description: 'ブラウザエンジン・種別を確認する',

    who: gUaLow,
    // エンジン
    Trident: (!!(window.attachEvent && gUaLow.indexOf('opera') === -1)) || gUaLow.indexOf("trident") != -1,  // 
    Gecko: gUaLow.indexOf("gecko") > -1 && gUaLow.indexOf('khtml') === -1,  //Gecko系：Netscape6-, Mizilla, Mozilla Firefox
    WebKit: gUaLow.indexOf("applewebkit/") > -1,  //(KHTML, like Gecko) Safari, Google Chrome, KHTMLのKonquerorも含む
//    Presto.Opera: ''
    Presto: gUaLow.indexOf("opera") > -1 || !!window.opera,
    MobileSafari: !!gUaLow.match(/apple.*mobile.*safari/),
    
    // SW Name
    isIE:  gUaLow.indexOf("msie") != -1 && !window.opera,        // Internet Explorer (ブラウザじゃぁないんだけどスタンダードになっちゃてるから)
    isNS:  gUaLow.indexOf("netscape") != -1,    // Netscape6- (include Netscape Navigator)
    isFF:  gUaLow.indexOf("firefox") != -1,     //Firefox
    isFB:  gUaLow.indexOf("firebird") != -1,    //Firebird
    isSF:  gUaLow.indexOf("safari") != -1 && gUaLow.indexOf("Chrome") == -1,      //safari
    isCH:  gUaLow.indexOf("Chrome") != -1,      //Google Chrome
    isOP:  gUaLow.indexOf("opera") != -1 || !!window.opera,

    // 詳細バージョン
    isIE5x: gUaLow.indexOf("msie 5.") != -1 && gUaLow.indexOf("msie 5.5") == -1,
    isIE55: gUaLow.indexOf("msie 5.5") != -1 && !window.opera,
    isIE6: gUaLow.indexOf("msie 6.") != -1 && !window.opera && !(gUaLow.indexOf("trident") != -1),    // Opera がつくのはここだけみたいだけど…
    isIE7: gUaLow.indexOf("msie 7.") != -1 && !window.opera,
    isIE8: gUaLow.indexOf("msie 8.") != -1 && !window.opera,

    isNS4: (document.layers) ? true : false,
    isNS6: gUaLow.indexOf("netscape6") != -1,
    isNS7: gUaLow.indexOf("netscape/7.") != -1,
    isNN9: gUaLow.indexOf("navigator/9.") != -1,

    isMZ1: navigator.appName.indexOf("Netscape") != -1 && navigator.appVersion.charAt(0) == 5,
    isFF0: gUaLow.indexOf("firefox/0") != -1, //Firefox1.0
    isFF10: gUaLow.indexOf("firefox/1.0") != -1, //Firefox1.0x
    isFF15: gUaLow.indexOf("firefox/1.5") != -1, //Firefox1.5
    isFF2: gUaLow.indexOf("firefox/2") != -1, //Firefox2
    isFF30: gUaLow.indexOf("firefox/3.0") != -1, //Firefox3
    isFF3x: gUaLow.indexOf("firefox/3") != -1 || gUaLow.indexOf("firefox/3.0") == -1, //Firefox3

    isSF1: gUaLow.indexOf("safari/85.") != -1 ||
           gUaLow.indexOf("safari/100.") != -1 ||
           gUaLow.indexOf("safari/125.") != -1 ||
           gUaLow.indexOf("safari/312.") != -1,  //safari1.x
    isSF2: gUaLow.indexOf("safari/41") != -1,  //safari2.x
    isSF3: gUaLow.indexOf("safari") != -1 && gUaLow.indexOf("version/3") != -1,  //safari3.0
    isCH02: gUaLow.indexOf("Chrome/0.2") != -1, //(Safari/525 AppleWebKit/525)

    isOP6: gUaLow.indexOf("opera 6.") != -1,
    isOP7: gUaLow.indexOf("opera 7.") != -1 || gUaLow.indexOf("opera/7.") != -1,
    isOP8: gUaLow.indexOf("opera 8.") != -1 || gUaLow.indexOf("opera/8.") != -1,
    isOP9: gUaLow.indexOf("opera 9.") != -1 || gUaLow.indexOf("opera/9.") != -1
}   // End of   isBrowser

if (isBrowser.MobileSafari)
  AugusAjax.BrowserFeatures.SpecificElementExtensions = false;


//===============================================
// 例外キャッチしてのを表示する
function ExceptionAlert(e, fncName) {
  //アクセスが拒否されましたのエラーが出たら何もしない。
  if (e.number == 2147024891) {
     throw e;
  }

    // アラートで警告ダイアログを表示する(方法)
    var str=fncName+'() 例外エラー：';
    if (e.number)        str += "\n--------------------\nERROR CODE = " + (e.number & 0xffff) + "\n--------------------";
    if (e.description)   str += "\n--------------------\ndescription(解説) = " + e.description + "\n--------------------";
    if (e.message)       str += "\n--------------------\nmessage(メッセージ) = " + e.message + "\n--------------------";
    if (e.toString())    str += "\n--------------------\n" + e.toString() + "\n--------------------";
    // 例外種別分類
    if (e instanceof TypeError) {
      str += "\n===TypeError==========\n型定義エラー\n===================";
    }
    else if (e instanceof RangeError) {
      str += "\n===TypeError==========\nNumber out of range!\n===================";
    }
    else if (e instanceof SyntaxError) {
      str += "\n===TypeError==========\nSyntax error in code!\n===================";
    }
    else if (e instanceof URIError) {
      str += "\n===TypeError==========\nURI error!\n===================";
    }
    else{
      str += "\n===TypeError==========\nAn unspecified error occurred!\n===================";
      // Error オブジェクト（Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError )
    }
    alert(str);
}

//===============================================
// デバッグ用 デバッグフラグで表示/非表示します
function DEBUG_alert (s) {
    if (AugusAjax.DEBUG) {
        var str='【DEBUG】<br />';
        for (var i=0, length=arguments.length; i < length; i++) {
            str += arguments[i];
            if (i)  str += '<br />';
        }
        var div = document.createElement('div');
        div.className = "left DEBUG";
        div.innerHTML = str;
        document.getElementsByTagName('body').item(0).appendChild(div);
    }
}

//----------------------------------------------------------------------------
// Prototype.js からの引用
if (AugusAjax.noPrototype) {

//----------------------------------------------
(function() {
  function getClass(object) {
    return Object.prototype.toString.call(object)
     .match(/^\[object\s(.*)\]$/)[1];
  }

  function extend(destination, source) {
    for (var property in source)
      destination[property] = source[property];
    return destination;
  }
  function keys(object) {
    var results = [];
    for (var property in object)
      results.push(property);
    return results;
  }

  function values(object) {
    var results = [];
    for (var property in object)
      results.push(object[property]);
    return results;
  }

  function clone(object) {
    return extend({ }, object);
  }

  function isElement(object) {
    return !!(object && object.nodeType == 1);
  }

  function isArray(object) {
    return getClass(object) === "Array";
  }


  function isHash(object) {
    return object instanceof Hash;
  }

  function isFunction(object) {
    return typeof object === "function";
  }

  function isString(object) {
    return getClass(object) === "String";
  }

  function isNumber(object) {
    return getClass(object) === "Number";
  }

  function isUndefined(object) {
    return typeof object === "undefined";
  }

  extend(Object, {
    extend:        extend,
    keys:          keys,
    values:        values,
    clone:         clone,
    isElement:     isElement,
    isArray:       isArray,
    isHash:        isHash,
    isFunction:    isFunction,
    isString:      isString,
    isNumber:      isNumber,
    isUndefined:   isUndefined
  });
})();
//----------------------------------------------
// 連結
Object.extend(Function.prototype, (function() {
  var slice = Array.prototype.slice;

  function update(array, args) {
    var arrayLength = array.length, length = args.length;
    while (length--) array[arrayLength + length] = args[length];
    return array;
  }

  function merge(array, args) {
    array = slice.call(array, 0);
    return update(array, args);
  }

  function bind(context) {
    if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this;
    var __method = this, args = slice.call(arguments, 1);
    return function() {
      var a = merge(args, arguments);
      return __method.apply(context, a);
    }
  }

  return {
    bind:                bind,
  }
})());

//----------------------------------------------
// 配列
var $A = Array.from = function(iterable) {
  if (!iterable) return [];
  if (iterable.toArray) {
    return iterable.toArray();
  } else {
    var results = [];
    for (var i = 0, length = iterable.length; i < length; i++)
      results.push(iterable[i]);
    return results;
  }
}

//----------------------------------------------
var Try = {
  these: function() {
    var returnValue;

    for (var i = 0, length = arguments.length; i < length; i++) {
      var lambda = arguments[i];
      try {
        returnValue = lambda();
        break;
      } catch (e) { }
    }

    return returnValue;
  }
};

//----------------------------------------------
// IDエレメントオブジェクト取得
function $(element) {
  if (arguments.length > 1) {
    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
      elements.push($(arguments[i]));
    return elements;
  }
  if (Object.isString(element))
    element = document.getElementById(element);
  return Element.extend(element);
}

Element.Methods = { };

Element.Methods.ByTag = { };

Element.extend = (function() {
  function extendElementWith(element, methods) {
    for (var property in methods) {
      var value = methods[property];
      if (Object.isFunction(value) && !(property in element))
        element[property] = value.methodize();
    }
  }

  var Methods = { }, ByTag = Element.Methods.ByTag;

  var extend = Object.extend(function(element) {
    if (!element || typeof element._extendedByPrototype != 'undefined' ||
        element.nodeType != 1 || element == window) return element;

    var methods = Object.clone(Methods),
        tagName = element.tagName.toUpperCase();

    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);

    extendElementWith(element, methods);

    element._extendedByPrototype = AugusAjax.emptyFunction;
    return element;

  }, {
    refresh: function() {
      if (!AugusAjax.BrowserFeatures.ElementExtensions) {
        Object.extend(Methods, Element.Methods);
        Object.extend(Methods, Element.Methods.Simulated);
      }
    }
  });

  extend.refresh();
  return extend;
})();

} // end of noPrototype


//──────────────────────────────────────
// ロケーション (location)
// Home, Help, SiteMap, LinkList, MA, Pro, Belt, Riki, Sumo, GoogleMap,
// WEB, WEBSEO, WEBCSS, WEBJAVASCRIPT
//──────────────────────────────────────
var jump = {
    Version: '1.0.a',
    Description: 'ロケーション 画面遷移',
    
    Home: function () {
        top.location.href = '/index.html';
        return false;
    },
    Help: function () {
        top.location.href = '/help.html';
        return false;
    },
    SiteMap: function () {
        top.location.href = '/sitemap.html';
        return false;
    },
    LinkList: function () {
        top.location.href = '/linkList.html';
        return false;
    },

    MA: function () {
        top.location.href = '/Martial_Arts/index.html';
        return false;
    },
    Pro: function () {
        top.location.href = '/Martial_Arts/index.html#Pro-Wrestling';
        return false;
    },
    Belt: function () {
        top.location.href = '/Martial_Arts/Pro-Wrestling/index.html';
        return false;
    },
    Riki: function () {
        top.location.href = '/Martial_Arts/RIKIDOZAN/index.html';
        return false;
    },
    Sumo: function () {
        top.location.href = '/Martial_Arts/sumo/index.html';
        return false;
    },
    GoogleMap: function( msid, ll, spn, z, iwloc  ) {
        top.location.href = 'http://maps.google.co.jp/maps/ms?ie=UTF8&hl=ja&msa=0'+'&msid='+msid +'&ll='+ll +'&spn='+spn +'&z='+z +'&iwloc='+iwloc;
        top.location.target = '_blank';
        return false;
    },

    WEB: function () {
        top.location.href = '/WEB/webIndex.html';
        return false;
    },
    WEBSEO: function () {
        top.location.href = '/WEB/SEO/index.html';
        return false;
    },
    WEBCSS: function () {
        top.location.href = '/WEB/css/index.html';
        return false;
    },
    WEBJAVASCRIPT: function () {
        top.location.href = '/WEB/JavaScriot/javascript.html';
        return false;
    }
}   // End of go


//──────────────────────────────────────
// ナヴィゲーション 
//──────────────────────────────────────
var navi = {
    Version: '1.0.b',
    Description: 'ナビゲーション　次ページ/前ページ、メニュー',
    
    startContent: '',
    endContent: '',

    setSEpage: function(startPage, endPage) {
        if (startPage)
            this.startContent = '<a href="' + startPage + '" target="_self"><img alt="start" src="/img/resultset_first.png" title="カテゴリ先頭ページへ戻る" width="16" height="16" /><'+'/a>&nbsp;';
        if (endPage)
            this.endContent = '&nbsp;<a href="' + endPage + '" target="_self"><img alt="last" src="/img/resultset_last.png" title="カテゴリ最終ページへジャンプする" width="16" height="16" /><'+'/a>';
    },
    //────────────────────
    // ID:PrevNext1 前進・後進 共通表示１（上）
    PrevNext1: function (prevSrc, prevStr, nextSrc, nextStr) {
        str = '';
        if (prevSrc)
            str += '<div class="PrevNextL">'+ this.startContent +'<a href="' + prevSrc + '" target="_self"><img src="/img/resultset_previous.png" alt="prev" title="１つ戻る" class="border0" width="16" height="16" /><'+'/a>' + '&nbsp;&nbsp;<a href="' + prevSrc + '" target="_self">' + prevStr + '<'+'/a>' + '<'+'/div>';
        else
            str += '<div class="PrevNextL">&nbsp;<'+'/div>';
        if (nextSrc)
            str += '<div class="PrevNextR"><a href="' + nextSrc + '" target="_self">' + nextStr + '<'+'/a>' + '&nbsp;&nbsp;<a href="' + nextSrc + '" target="_self"><img src="/img/resultset_next.png" alt="next" title="１つ進む" class="border0" width="16" height="16" /><'+'/a>'+ this.endContent +'<'+'/div>';
        else
            str += '<div class="PrevNextR">&nbsp;<'+'/div>';
        str += '<br class="f_clear" />';
        $HTML("PrevNext1", str);
    },
    //────────────────────
    // ID:PrevNext2 前進・後進 共通表示２（下）
    PrevNext2: function (prevSrc, prevStr, nextSrc, nextStr) {
        str = '';
        if (prevSrc)
            str += '<div class="PrevNextL">'+ this.startContent +'<a href="' + prevSrc + '" target="_self"><img src="/img/resultset_previous.png" alt="prev" title="１つ戻る" class="border0" width="16" height="16" /><'+'/a>' + ' <a href="' + prevSrc + '" target="_self">' + prevStr + '<'+'/a>' + '<'+'/div>';
        else
            str += '<div class="PrevNextL">&nbsp;<'+'/div>';
        if (nextSrc)
            str += '<div class="PrevNextR"><a href="' + nextSrc + '" target="_self">' + nextStr + '<'+'/a>' + '<a href="' + nextSrc + '" target="_self"><img src="/img/resultset_next.png" alt="next" title="１つ進む" class="border0" width="16" height="16" /><'+'/a>'+ this.endContent +'<'+'/div>';
        else
            str += '<div class="PrevNextR">&nbsp;<'+'/div>';
        str += '<br class="f_clear" />';
        $HTML("PrevNext2", str);
    },
    //────────────────────
    // MainMenu #MENU_LIST
    mainMenu: function () {
        var obj = $("MENU_LIST");
        if (obj) {
            for (var i=obj.childNodes.length; i>0; i-- ) {
                
            }
        }
    },
    //────────────────────
    // RIKIDOZAN Menu #RIKI_MENU
    rikiMenu: function () {
        var str = '';
        str += '<h1 class="sideH1">力道山史：目次<'+'/h1>';
        str += this.rikiMenuDetail ();

        $HTML("RIKI_MENU", str);
    },
    rikiMenuDetail: function () {
        var str = '';
        str += '<ul class="none">';
        str += ' <li>時代背景';
        str += ' <ul class="none">';
        str += '    <li><a href="/Martial_Arts/RIKIDOZAN/index.html#KOREA">朝鮮時代（李氏朝鮮～大韓帝国）<'+'/a><'+'/li>';
        str += '    <li><a href="/Martial_Arts/RIKIDOZAN/index.html#JAPAN">日本統治時代Ⅰ (1910～1923)<'+'/a><'+'/li>';
        str += ' <'+'/ul>';
        str += ' <'+'/li>';
        str += ' <li>出自から大相撲時代（大正13年～昭和25年）';
        str += ' <ul class="none">';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/childe.htm">幼少・少年時代（大正13年～昭和15年）<'+'/a><'+'/li>';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/sumo.htm">相撲時代（昭和15年～昭和25年）<'+'/a><'+'/li>';
        str += ' <'+'/ul><'+'/li>';
        str += ' <li>プロレス時代（昭和25年～）';
        str += ' <ul class="none">';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/training.htm">修行時代（昭和25年～昭和29年）<'+'/a><'+'/li>';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/start.htm">幕開け時代（昭和29年～昭和32年）<'+'/a><'+'/li>';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/bestdays.htm">実力全盛期時代（昭和32年～昭和38年）<'+'/a><'+'/li>';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/ending.htm">終末（昭和38年）<'+'/a><'+'/li>';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/after.htm">死後（昭和39年～）<'+'/a><'+'/li>';
        str += ' <'+'/ul><'+'/li>';
        str += ' <li>その他';
        str += ' <ul class="none">';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/commissioner.htm">日本プロレス・歴代コミッショナー<'+'/a><'+'/li>';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/movie.htm">出演映画<'+'/a><'+'/li>';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/crime.htm">事件関連<'+'/a><'+'/li>';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/a_list.htm">Ａ級戦犯<'+'/a><'+'/li>';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/kor.htm">朝鮮語<'+'/a><'+'/li>';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/MistakeOftenFound.htm">よくある間違い<'+'/a><'+'/li>';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/honto.htm">それってホント？<'+'/a><'+'/li>';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/SocialisticState.htm">社会主義国<'+'/a><'+'/li>';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/material.htm">出典資料<'+'/a><'+'/li>';
        str += '   <li><a href="/Martial_Arts/RIKIDOZAN/riki_movie.htm">動画・映像<'+'/a><'+'/li>';
        str += ' <'+'/ul><'+'/li>';
        str += '<'+'/ul>';
        return str;
    }
}   // End of navi

//────────────────────
// Webブラウザのユーザエージョント情報の解析
var UserAgent = {
    Version: '1.1.a',
    Description: 'HTTPユーザーエージェント文字列の解析。ブラウザの種別とＯＳ種別を解析して文字列で返す。',

    // ブラウザ種別の文字列を取得します
    getUserAgent: function () {
        var str = "不明";

        if (gUa.match(/Opera[\/\s](\d\.\d+)/)) {
            str = "Opera " + RegExp.$1;
        }
        else if (gUa.match(/MSIE (\d\.\d+)/)) {
            str = "Microsoft Internet Explorer " + RegExp.$1;
        }
        else if (gUa.match(/Mozilla\/(4\.[5678]\d?)/)) {
            str = "Netscape Communicator " + RegExp.$1;
        }
        else if (gUa.match(/Netscape6?\/([\.\d]+)/)) {
            str = "Netscape Navigator " + RegExp.$1;
        }
        // AppleWebKit
        else if (gUa.match(/AppleWebKit/)) {
            if (gUa.match(/Chrome\/([\.\d]+)/)) {
                str = "Chrome " + RegExp.$1;
            }
            else if (gUa.match(/Safari/)) {
                gUa.match(/Version\/([\.\d]+)/);
                str = "Safari " + RegExp.$1;
            }
        }
        // Gecko / Mozilla
        else if (gUa.match(/Gecko/)) {
            if (gUa.match(/(Firebird|Firefox)\/([\.\d]+)/)) {
                str = "Mozilla " + RegExp.$1 + " " + RegExp.$2;
            }
            else if (gUa.match(/Thunderbird\/([\.\d]+)/)) {
                str = "Mozilla Thunderbird " + RegExp.$1;
            }
            else if (gUa.match(/rv:([\.\d]+)/)) {
                str = "Mozilla " + RegExp.$1;
            }
            else {
                str = "Mozilla";
            }
        }
        if (isBrowser.Trident)       return "Trident Engine: "+str;
        else if (isBrowser.Gecko)    return "Gecko Engine: "+str;
        else if (isBrowser.WebKit)   return "WebKit Engine: "+str;

        return str;
    },
    getOPProductName: function () {
        var str = "不明";

        if (gUa.match(/(Windows|NT) (\d\.\d+)/)) {
            if ((RegExp.$2).match(/3\.1/)) {
                str = "Windows NT 3.1";
            }
            else if ((RegExp.$2).match(/3\.51/)) {
                str = "Windows NT 3.51";
            }
            else if ((RegExp.$2).match(/3\.5/)) {
                str = "Windows NT 3.5";
            }
            else if ((RegExp.$2).match(/4\.0/)) {
                str = "Windows NT 4.0";
            }
            else if ((RegExp.$2).match(/5\.0/)) {
                str = "Windows 2000";
            }
            else if ((RegExp.$2).match(/5\.1/)) {
                str = "Windows XP";
            }
            else if ((RegExp.$2).match(/5\.2/)) {
                str = "Windows Server 2003 or Windows XP (64ビット)";
            }
            else if ((RegExp.$2).match(/6\.0/)) {
                str = "Windows Vista or Windows Server 2008";
            }
        }
        else if (gUa.indexOf("Mac OS X") > -1) { // UA に [Mac OS X] が含まれている場合
          if (navigator.platform == "MacPPC") { // OS が Mac Power PC の場合
                str = "Mac OS X / Power PC";
          }
          else if (navigator.platform == "MacIntel") { // OS が Intel Mac の場合
                str = "Mac OS X / Intel Mac";
          }
          else { // PPC か Intel Mac か判別できなかった場合
                str = "Mac OS X";
          }
        }
        else if (gUa.indexOf("Mac_PowerPC") > -1) { // UA に [Mac_PowerPC] が含まれている場合
                str = "Macintosh PowerPC";
        }
        else if (gUaLow.indexOf("linux") > -1) { // UA に [Linux] が含まれている場合
                str = "Linux";
        }
        else if (gUaLow.indexOf("freebsd") > -1) { // UA に [FreeBSD] が含まれている場合
                str = "FreeBSD";
        }
        else if (gUaLow.indexOf("sunos") > -1) { // UA に [SunOS] が含まれている場合
                str = "SunOS";
        }
        else if (gUaLow.indexOf("openbsd") > -1) { // UA に [OpenBSD] が含まれている場合
                str = "OpenBSD";
        }
        else if (gUaLow.indexOf("x11") > -1) { // UA に [UNIX] が含まれている場合
                str = "UNIX";
        }
        return str;
    },
    printUserAgent: function () {
        $HTML('UA', this.getUserAgent());
    },
    printOSProductName: function () {
        $HTML('OS', this.getOPProductName());
    },
    prNavigator: function () {
        var str='';
        str += '<div class="Col_TH4 floatL">';
        str +='ＯＳプラットフォーム(platform)：　';
        str += '<'+'/div>';
        str += '<div class="floatL">';
        str += navigator.platform;
        str += '<'+'/div>';
        str += '<br class="clr-both" />';
        str += '<div class="Col_TH4 floatL">';
        str +='エンジン名等(userAgent)：　';
        str += '<'+'/div>';
        str += '<div class="floatL">';
        str += gUa;
        str += '<'+'/div>';
        str += '<br class="clr-both" />';
        $HTML('NAVIGATOR', str);
    }
}   // End of UserAgent

//===============================================
// プラットフォーム
var isPlatform = {
    Version: '1.0.a',
    Description: 'HTTPユーザーからＯＳ情報を判別する',

    Win: gUaLow.indexOf("win") != -1,       // Windows
    UNIX: gUaLow.indexOf("x11") != -1,      // X11
    Mac: gUaLow.indexOf("mac") != -1,       // Macintosh
    
    winVi: gUaLow.indexOf("nt 6.0") != -1 || gUaLow.indexOf("ws v") != -1,  // Vista
    win2003: gUaLow.indexOf("nt 5.2") != -1 || gUaLow.indexOf("ws 2003") != -1,  // 64bit
    winXP: gUaLow.indexOf("nt 5.1") != -1 || gUaLow.indexOf("ws xp") != -1,  // 32bit
    win2K: gUaLow.indexOf("nt 5.0") != -1 || gUaLow.indexOf("ws 2000") != -1,  // 
    winNT4: gUaLow.indexOf("nt 4.0") != -1 || gUaLow.indexOf("winnt4") != -1,  // 
    win98: gUaLow.indexOf("win98") != -1 || gUaLow.indexOf("ws 98") != -1,  // 
    winNT: gUaLow.indexOf("winnt") != -1 || gUaLow.indexOf("ws nt") != -1,  // 
    
    Linux: gUaLow.indexOf("linux") != -1,      // 
    FreeBSD: gUaLow.indexOf("freebsd") != -1,      // 
    SunOS: gUaLow.indexOf("sunos") != -1,      // 
    OpenBSD: gUaLow.indexOf("openbsd") != -1,      // 
    
    MacX: gUaLow.indexOf("mac os x") != -1,      // 
    PowerPC: gPfLow.indexOf("macppc") != -1,      // 
    MacIntel: gPfLow.indexOf("macintel") != -1      // 
}   // End of isPlatform

//===============================================
// XML/HTML 
var XMLHTML ={
    Version: '1.0.a',
    Description: '利用可能なHTTPリクエストを取得するオブジェクトのバージョンを並び連ねる。',
    
    getXMLVersionList: function () {
        var msxv = "";
        if (window.ActiveXObject)
        {
            try {
                msxv += ( new ActiveXObject("Microsoft.XMLHTTP") )? "Microsoft.XMLHTTP":"";
            } catch(e) {}
            try {
                msxv += ( new ActiveXObject("Msxml2.XMLHTTP") )? " / Msxml2.XMLHTTP":"";
            } catch(e) {}
            try {
                msxv += ( new ActiveXObject("Msxml2.XMLHTTP.3.0") )? " / Msxml2.XMLHTTP.3.0":"";
            } catch(e) {}
            try {
                msxv += ( new ActiveXObject("Msxml2.XMLHTTP.4.0") )? " / Msxml2.XMLHTTP.4.0":"";
            } catch(e) {}
            try {
                msxv += ( new ActiveXObject("Msxml2.XMLHTTP.5.0") )? " / Msxml2.XMLHTTP.5.0":"";
            } catch(e) {}
            try {
                msxv += ( new ActiveXObject("Msxml2.XMLHTTP.6.0") )? " / Msxml2.XMLHTTP.6.0":"";
            } catch(e) {}
            try {
                msxv += ( new ActiveXObject("Msxml2.XMLHTTP.7.0") )? " / Msxml2.XMLHTTP.7.0":"";
            } catch(e) {}
            try {
                msxv += ( new ActiveXObject("Msxml2.XMLHTTP.8.0") )? " / Msxml2.XMLHTTP.8.0":"";
            } catch(e) {}
            try {
                msxv += ( new ActiveXObject("Msxml2.XMLHTTP.9.0") )? " / Msxml2.XMLHTTP.9.0":"";
            } catch(e) {}

            try {
                msxv += ( new ActiveXObject("Msxml3.XMLHTTP") )? " / Msxml3.XMLHTTP":"";
            } catch(e) {}
            try {
                msxv += ( new ActiveXObject("Msxml4.XMLHTTP") )? " / Msxml4.XMLHTTP":"";
            } catch(e) {}
            try {
                msxv += ( new ActiveXObject("Msxml5.XMLHTTP") )? " / Msxml5.XMLHTTP":"";
            } catch(e) {}
            try {
                msxv += ( new ActiveXObject("Msxml6.XMLHTTP") )? " / Msxml6.XMLHTTP":"";
            } catch(e) {}
            try {
                msxv += ( new ActiveXObject("Msxml6.XMLHTTP.6.0") )? " / Msxml6.XMLHTTP.6.0":"";
            } catch(e) {}
            try {
                msxv += ( new ActiveXObject("Msxml7.XMLHTTP") )? " / Msxml7.XMLHTTP":"";
            } catch(e) {}
            try {
                msxv += ( new ActiveXObject("Msxml8.XMLHTTP") )? " / Msxml8.XMLHTTP":"";
            } catch(e) {}
            try {
                msxv += ( new ActiveXObject("Msxml9.XMLHTTP") )? " / Msxml9.XMLHTTP":"";
            } catch(e) {}
        }
        else if (window.XMLHttpRequest) {
            msxv += "ActiveXObjectは利用できません、XMLHttpRequestを利用してください。";
        }
        else {
            msxv += "ActiveXObjectは利用できません。";
        }
        return msxv;
    }
}   // End of XMLHTML


//──────────────────────────────────────
// ユーティリティ
//──────────────────────────────────────
//      $HTML()     getElementById(element).innerHTML = str;
//      DateJS   日付関連
//      isBrowser   エンジン/プロダクト/詳細バージョン識別
//      UserAgent   ユーザエージェント文字列を解析し、文字列を返す
//      isPlatform  プラットフォーム/詳細（winows/UNIX/MaxOS）識別
//      XMLHTML     利用可能なHTTPリクエストを取得するオブジェクトのバージョンを並び連ねる。
//      striper
//      


//===============================================
// document.getElementById = $(element) 
// source safe. $(element).innerHTML = str
function $HTML (element,str) {
    if ($(element)&&arguments[1]){
        var tmpStr='';
        for (var i=1,len=arguments.length; i<len; i++) {
            if(typeof arguments[i] == 'string') tmpStr += arguments[i];
        }
        $(element).innerHTML = tmpStr;
    }
}

//==============================================
// 日付関連
//----------------------------------------------
// DateJS.nowTimeOnTitlebar ()      タイトルバーに時刻を刻々と表示する
// DateJS.dspDate (element)         日付を刻々と表示する
// DateJS.dspDateTime (element)     日時を刻々と表示する
// DateJS.dspTime (element)         時刻を刻々と表示する
// DateJS.dspTimeAMPM (element)     時刻を刻々と表示する（２）
// DateJS.writeNewImg (y,m,d, comment)  指定された日付から３０日間 UPDate画像を表示する（１）
// DateJS.getUpdateImg (y,m,d, comment)  指定された日付から３０日間 UPDate画像を表示する（１）
// DateJS.writeNewImg2 (y,m,d, comment)  指定された日付から３０日間 NEW画像を表示する（１）
// DateJS.writeUpdateImg2 (y,m,d, comment)  指定された日付から３０日間 UPDate画像を表示する（２）
var gWeeksEN = new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
var gWeeksJP = new Array("日", "月", "火", "水", "木", "金", "土");
var DateJS = {
    Version: '1.0.b',
    Description: '日付・時刻を取得・表示する、日付を元に画像表示/非表示',
    
    // コンストラクタ
    initialize: function() {
        DEBUG_alert("DateJS", "initialize");
        this.NowTimeTitlebarCount=0;
        this.DateCount=0;
        this.DateTimeCount=0;
        this.TimeCount=0;
        this.TimeAmPmCount=0;
    },

    _docTitle: document.title,  // ドキュメントタイトル
    
    //--------------------------------
    // タイトルバーに日時刻々と表示する(１秒ごとに書き換え)
    nowTimeOnTitlebar: function () {
        this._getNowTimeOnTitlebar();
        if (isBrowser.Trident)
            // IE の場合は、第三引数以降が利用できないので、無名関数で、呼び出せばよい
            this.intervalNowTimeOnTitlebarID = setInterval(function () { this._getNowTimeOnTitlebar(); }.bind(this),999);
        else
            this.intervalNowTimeOnTitlebarID = setInterval(this._getNowTimeOnTitlebar.bind(this), 999);
    },
    _getNowTimeOnTitlebar: function () {
        this.NowTimeTitlebarCount++;
        // １時間経過したら停止する
        if (this.NowTimeTitlebarCount%3604 == 0) {
            //alert("停止します");
            this.stopNowTimeTitlebar ();
        }
        var date = new Date();
        var YMD = date.getYMD ();
        var TMS = date.getTMS ();
        document.title = this._docTitle+"  "+YMD[0]+"/"+YMD[1]+"/"+YMD[2]+" "+TMS[0]+":"+TMS[1]+":"+TMS[2];
    },
    stopNowTimeTitlebar: function () {
        clearInterval (this.intervalNowTimeOnTitlebarID);
    },
    //--------------------------------
    // 日付を表示する（１秒ごとに書き換える）
    dspDate: function (element) {
      try {
        this._getDate(element);
        if (isBrowser.Trident)
            // IE の場合は、第三引数以降が利用できないので、無名関数で、呼び出せばよい
            this.intervalDateID = setInterval(function () { this._getDate(element); }.bind(this),59999);
        else
            this.intervalDateID = setInterval(this._getDate.bind(this), 59999, element);
      } catch (e) {
        ExceptionAlert (e, "DateJS.dspDate() : ");
      }
    },
    _getDate: function (element) {
      try {
        if (!element) {
            throw "element is null";
        }
        if (typeof element == "string") {
            element = $ (element);
        }
        this.DateCount++;
        // １時間経過したら停止する
        if (this.DateCount%3604 == 0) {
            //alert("停止します");
            this.stopDateTime ();
        }
        var date = new Date ();
        $HTML(element,date.YMDJP ());
      } catch (e) {
        ExceptionAlert (e, "DateJS._getDate() : ");
      }
    },
    stopDate: function () {
        clearInterval (this.intervalDateID);
    },
    //--------------------------------
    // 日時を表示する（１秒ごとに書き換える）
    dspDateTime: function (element) {
        this._getDateTime(element);
        if (isBrowser.Trident){
            // IE の場合は、第三引数以降が利用できないので、無名関数で、呼び出せばよい
            this.intervalDateTimeID = setInterval(function () { this._getDateTime(element); }.bind(this),999);
        }
        else
            this.intervalDateTimeID = setInterval(this._getDateTime.bind(this), 999, element);
    },
    _getDateTime: function (element) {
      try {
        if (!element) {
            throw "element is null";
        }
        if (typeof element == "string") {
            element = $ (element);
        }
        this.DateTimeCount++;
        // １時間経過したら停止する
        if (this.DateTimeCount%3604 == 0) {
            //alert("停止します");
            this.stopDateTime ();
        }
        var date = new Date();
        $HTML(element, date.YMDtmsJP ());
      } catch (e) {
        ExceptionAlert (e, "DateJS.getDateTime() : ");
      }
    },
    stopDateTime: function () {
        clearInterval (this.intervalDateTimeID);
    },
    //--------------------------------
    // 時刻を表示する（１秒ごとに書き換える）
    dspTime: function (element) {
        this._getTime(element);
        if (isBrowser.Trident){
            // IE の場合は、第三引数以降が利用できないので、無名関数で、呼び出せばよい
            this.intervalTimeID = setInterval(function () { this._getTime(element); }.bind(this),999);
        }
        else
            this.intervalTimeID = setInterval(this._getTime.bind(this), 999, element);
    },
    _getTime: function (element) {
      try {
        if (!element) {
            throw "element is null";
        }
        if (typeof element == "string") {
            element = $ (element);
        }
        this.TimeCount++;
        // １時間経過したら停止する
        if (this.TimeCount%3604 == 0) {
            //alert("停止します");
            this.stopTime ();
        }
        var date = new Date();
        $HTML(element, date.tmsJP());
      } catch (e) {
        ExceptionAlert (e, "DateJS.getDateTime() : ");
      }
    },
    stopTime: function () {
        clearInterval (this.intervalTimeID);
    },
    //--------------------------------
    // 時刻を表示する[2]（１秒ごとに書き換える）
    dspTimeAMPM: function (element) {
        this._getTime(element);
        if (isBrowser.Trident){
            // IE の場合は、第三引数以降が利用できないので、無名関数で、呼び出せばよい
            this.intervalTimeAmPmID = setInterval(function () { this._getTimeAMPM(element); }.bind(this),999);
        }
        else
            this.intervalTimeAmPmID = setInterval(this._getTimeAMPM.bind(this), 999, element);
    },
    _getTimeAMPM: function (element) {
      try {
        if (!element) {
            throw "element is null";
        }
        if (typeof element == "string") {
            element = $ (element);
        }
        this.TimeAmPmCount++;
        // １時間経過したら停止する
        if (this.TimeAmPmCount%3604 == 0) {
            //alert("停止します");
            this.stopTimeAmPm ();
        }
        var date = new Date();
        $HTML(element, date.tmsAmPmJP());
      } catch (e) {
        ExceptionAlert (e, "DateJS.getDateTime() : ");
      }
    },
    stopTimeAmPm: function () {
        clearInterval (this.intervalTimeAmPmID);
    },
    //--------------------------------
    // 指定された日付から３０日間 NEW画像を表示する（１）
    writeNewImg: function (y,m,d,comment) {
        var oldDay = new Date(y+"/"+m+"/"+d);
        var newDay = new Date();
        var n = (newDay - oldDay)/(1000*60*60*24);
        if (n <= 30) { document.write('<img alt="NEW" src="/img/new_a001.gif" width="43" height="12" title="新規追加 ☆">');
          document.write("　"+comment);
        }
    },
    //--------------------------------
    // 指定された日付から３０日間 UPDate画像を表示する（１）
    writeUpdateImg: function (y,m,d,comment) {
        var oldDay = new Date(y+"/"+m+"/"+d);
        var newDay = new Date();
        var n = (newDay - oldDay)/(1000*60*60*24);
        if (n <= 30) { document.write('<img alt="Up" src="/img/boxing1.gif" width="46" height="23" title="更新しました" class="border0">');
          document.write("　"+comment);
        }
    },
    getUpdateImg: function (y,m,d,comment) {
        var oldDay = new Date(y+"/"+m+"/"+d);
        var newDay = new Date();
        var n = (newDay - oldDay)/(1000*60*60*24);
        var str = '';
        if (n <= 30) {
            str = '<img alt="Up" src="/img/boxing1.gif" width="46" height="23" title="更新しました" class="border0">';
            str += "　"+comment;
            return str;
        }
        return "";
    },
    //--------------------------------
    // 指定された日付から３０日間 NEW画像を表示する（２）
    writeNewImg2: function(y,m,d,comment) {
        var oldDay = new Date(y+"/"+m+"/"+d);
        var newDay = new Date();
        var n = (newDay - oldDay)/(1000*60*60*24);
        if (n <= 30) { document.write('<img alt="Up" src="/img/new.gif" width="54" height="14" title="新規追加" class="border0">');
          document.write("　"+comment);
        }
    },
    //--------------------------------
    // 指定された日付から３０日間 UPDate画像を表示する（２）
    getUpdateImg2: function (y,m,d,comment) {
        var str ='';
        var oldDay = new Date(y+"/"+m+"/"+d);
        var newDay = new Date();
        var str = '';
        var n = (newDay - oldDay)/(1000*60*60*24);
        if (n <= 30) { str ='<img alt="Up" src="/img/renew.gif" width="67" height="14" title="更新しました" class="border0">';
          str += "　"+comment;
        }
        return str;
    }
};

Object.extend(Date.prototype, {
    // 曜日(日本語)を取得
    getWeekJP: function () {
        return gWeeksJP[this.getDay()];
    },
    // 年月日時刻(日本語)を返却
    YMDtmsJP: function () {
            var YMD = this.getYMD ();
            var TMS = this.getTMS ();
            return YMD[0]+"年"+YMD[1]+"月"+YMD[2]+"日("+this.getWeekJP()+") "+TMS[0]+"時"+TMS[1]+"分"+TMS[2]+"秒";
    },
    // 年月日(日本語)を返却
    YMDJP: function () {
            var YMD = this.getYMD ();
            return YMD[0]+"年"+YMD[1]+"月"+YMD[2]+"日("+this.getWeekJP()+") ";
    },
    // 時刻(日本語)を返却
    tmsJP: function () {
            var TMS = this.getTMS ();
            return TMS[0]+"時"+TMS[1]+"分"+TMS[2]+"秒";
    },
    // 時刻12(日本語)を返却
    tmsAmPmJP: function () {
            var TMS12 = this.getTMS12JP ();
            return TMS12[3]+" "+TMS12[0]+"時"+TMS12[1]+"分"+TMS12[2]+"秒";
    },
    // 年月日を配列で取得
    getYMD: function () {
            return [this.getFullYear(), this.get0Month(), this.get0Date()];
    },
    // 時刻を配列で取得
    getTMS: function () {
            return [this.get0Hours(), this.get0Minutes(), this.get0Seconds()];
    },
    // 時刻を12時間変換した配列で取得
    getTMS12JP: function () {
            var t = (this.getHours() > 12) ?    this.getHours()-12 : this.getHours();
            t = (t >= 10)? t:"0"+t;
            return [t, this.get0Minutes(), this.get0Seconds(), (this.getHours() > 12) ? "午後":"午前"];
    },
    // ２桁(０パディング）月の値を取得
    get0Month: function () {
            return (this.getMonth()+1 >= 10) ? this.getMonth()+1 : "0" + (this.getMonth()+1) ;
    },
    // ２桁(０パディング）日の値を取得
    get0Date: function () {
            return (this.getDate() >=10) ? this.getDate() : "0" + this.getDate() ;
    },
    // ２桁(０パディング）時の値を取得
    get0Hours: function () {
            return (this.getHours() >= 10) ?    this.getHours() : "0" + this.getHours();
    },
    // ２桁(０パディング）分の値を取得
    get0Minutes: function () {
            return (this.getMinutes() >= 10) ?    this.getMinutes() : "0" + this.getMinutes();
    },
    // ２桁(０パディング）秒の値を取得
    get0Seconds: function () {
            return (this.getSeconds() >= 10) ?    this.getSeconds() : "0" + this.getSeconds();
    },
    testFunc: function (argv) {
        alert(arguments[0]);
    }
});

   // End of DateJS



//===============================================
//


//──────────────────────────────────────
var ExternalLinks = {
  Version: '1.0',
  Description: 'target="_blank"を使わないで別ウィンドウを開く'
}
//http://hori-uchi.com/archives/000424.html
//_blankを使わないで別ウィンドウを開く方法
function externalLinks(e) {
 if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 var parentsRel1 = "external";  var matchObj1 = new RegExp(parentsRel1);
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   anchorRelObj = anchor.getAttribute("rel");
   if (anchorRelObj) { /* add T.Augus */
     if (anchor.getAttribute("href") && anchorRelObj.match(matchObj1)) {
       anchor.target = "_blank";
       anchor.onclick = function(event) {return popupWindow(this, event);}
       anchor.onkeypress = function(event) {return popupWindow(this, event);}
       if (isBrowser.isIE5x || isBrowser.isIE6) {
           var imgObj = document.createElement ("img");
           imgObj.src = "/img/icon_external.gif"
           anchor.appendChild (imgObj);
       }
     }
   }
 }
}
function popupWindow(anchor, event) {
  var keyCode;
  if (event && event.type == 'keypress') {
    if (event.keyCode) {
      keyCode = event.keyCode;
    } else if (event.which) {
      keyCode = event.which;
    }
    // 13 == Return key. 32 == space key
    if (keyCode != 13 && keyCode != 32) {
      return true;
    }
  }
  return !window.open(anchor);
}

//──────────────────────────────────────
var Striper = {
  Version: 'Splintered striper 1.3',
  Description: 'TABLE表の行を交互に色分けする。'
}
// onload : striper('tbody', 'striped', 'tr', 'odd,even');
// AugusAjax.init() で呼び出します
function striper(parentElementTag, parentElementClass, childElementTag, styleClasses)
{
    var i=0,currentParent,currentChild;
    // capability and sanity check
    if ((document.getElementsByTagName)&&(parentElementTag)&&(childElementTag)&&(styleClasses)) {
        // turn the comma separate list of classes into an array
        var styles = styleClasses.split(',');
        // get an array of all parent tags
        var parentItems = document.getElementsByTagName(parentElementTag);
        // loop through all parent elements
        while ((currentParent = parentItems[i++])) {
            // if parentElementClass was null, or if the current parent's class matches the specified class
            if ((parentElementClass == null)||(currentParent.className == parentElementClass)) {
                var j=0,k=0;
                // get all child elements in the current parent element
                var childItems = currentParent.getElementsByTagName(childElementTag);
                // loop through all child elements
                while ((currentChild = childItems[j++])) {
                    // based on the current element and the number of styles in the array, work out which class to apply
                    k = (j+(styles.length-1)) % styles.length;
                    // add the class to the child element - if any other classes were already present, they're kept intact
                    if (currentChild.className != "subtitle")
                    currentChild.className = currentChild.className+" "+styles[k];
                }
            }
        }
    }
}


//──────────────────────────────────────
// カレンダー
//──────────────────────────────────────
var CalenderVal = {
    Version: '1.0.a',
    CreateDate: '2009/06/30',
    UpDate: '',
    Description: 'カレンダーに使用する変数など'
}
function MakeCalender (now,element) {
    if (arguments.length >= 4) {
        now = new Date(arguments[0],arguments[1],arguments[2]);
        element = arguments[3];
    }
    var weekClassA =  new Array("cSun", "cMon", "cTue", "cWed", "cThu", "cFri", "cSat");
    var start_pos = (new Date(now.getFullYear()+"/"+(now.getMonth()+1)+"/"+1)).getDay();
    var tmpDate = new Date(now.getFullYear(),now.getMonth()+1,0);
    var endDate = tmpDate.getDate();
    var tblObj = document.createElement('table');
    var trObj, tdObj, dayVal=1;
    var imgObj,tmpObj, ancObj;
    var strTemp;
    tblObj.className = "Calender";
    tblObj.setAttribute("cellspacing",0);

    trObj = document.createElement('tr');
    tdObj = document.createElement('td');
    tdObj.className = "theader";
    tdObj.setAttribute("colspan",7);
    ancObj = document.createElement('a');
    strTemp = 'return MakeCalender("'+ now.getFullYear()+'","'+(now.getMonth()-1)+'","1","CALENDER")';
    ancObj.setAttribute('onclick',strTemp);
    imgObj = document.createElement('img');
    imgObj.src = "../img/g12.gif";
    imgObj.width = "15";
    imgObj.height = "15";
    imgObj.title = "Prev Month";
    ancObj.appendChild(imgObj);
    tdObj.appendChild(ancObj);
    tmpObj = document.createElement('span');
    tmpObj.innerHTML = " " + now.getFullYear() + "年" + now.get0Month() + "月 ";
    tdObj.appendChild(tmpObj);
    ancObj = document.createElement('a');
    strTemp = 'return MakeCalender("'+ now.getFullYear()+'","'+(now.getMonth()+1)+'","1","CALENDER")';
    ancObj.setAttribute('onclick',strTemp);
    imgObj = document.createElement('img');
    imgObj.src = "../img/g04.gif";
    imgObj.width = "15";
    imgObj.height = "15";
    imgObj.title = "Next Month";
    ancObj.appendChild(imgObj);
    tdObj.appendChild(ancObj);

    trObj.appendChild(tdObj);
    tblObj.appendChild(trObj);

    trObj = document.createElement('tr');
    for (var r=0; r<7; r++) {
        tdObj = document.createElement('th');
        tdObj.className = weekClassA[r];
        tdObj.innerHTML = gWeeksEN[r];
        trObj.appendChild(tdObj);
    }
    tblObj.appendChild(trObj);
    trObj = document.createElement('tr');
    for (var r=0; r<7; r++) {
        tdObj = document.createElement('td');
        tdObj.className = weekClassA[r];
        if (r==start_pos||dayVal>1) {
            ancObj = document.createElement('a');
            strTemp = 'return carenderXmlLoad("'+now.getFullYear()+'","'+now.getMonth()+'","'+dayVal+'")';
            ancObj.setAttribute('onclick',strTemp);
            ancObj.innerHTML = dayVal;
            tdObj.appendChild(ancObj);
            dayVal += 1;
        }
        else {
            tdObj.innerHTML = '&nbsp;';
        }
        trObj.appendChild(tdObj);
    }
    tblObj.appendChild(trObj);
    var r;
    for ( ;dayVal<endDate; ) {
        trObj = document.createElement('tr');
        for (r=0; r<7; r++,dayVal++) {
            if (dayVal>endDate)    break;
            tdObj = document.createElement('td');
            tdObj.className = weekClassA[r];
            strTemp = 'return carenderXmlLoad("'+now.getFullYear()+'","'+now.getMonth()+'","'+dayVal+'")';
            ancObj = document.createElement('a');
            ancObj.setAttribute('onclick',strTemp);
            ancObj.innerHTML = dayVal;
            tdObj.appendChild(ancObj);
            trObj.appendChild(tdObj);
        }
        tblObj.appendChild(trObj);
    }
    for ( ; r<7; r++) {
            tdObj = document.createElement('td');
            tdObj.className = weekClassA[r];
            tdObj.innerHTML = '&nbsp;';
            trObj.appendChild(tdObj);
    }
    tblObj.appendChild(trObj);
    element = $(element);
    if (element.hasChildNodes()) { 
        element.removeChild(element.childNodes.item(0));
    }
    element.appendChild(tblObj);
}

//******************************
// 「今日は何の日？／出来事」と「カレンダー」実装 2008.04.20 追加
function carenderOnload () {
  diary_load();
  d_spacer_write();

  if (document.all || document.getElementById)
  {
    calender_diary();
    var date = new Date();
    var y = date.getFullYear();
    var m = date.getMonth()+1;
    var d = date.getDate();
    diary_chenge(y,m,d);
    DateJS.dspDate('dspDate');
  }
}
   // End of carender


//──────────────────────────────────────
// carenderXmlLoad
// 引数：
//       iDate   年月日 or 年,月,日
//──────────────────────────────────────
function carenderXmlLoad (iDate) {
    var date;
    if (arguments.length){
        if (arguments.length >= 3) {
         date = new Date(arguments[0], arguments[1], arguments[2]);
       } else {
            date = iDate;
        }
	}
	else {
		date = new Date();
    }
    

    var xmlPath = "./XML/carender.xml";
    var xslPath = "./XML/carender.xsl";
    var element = $("WHATDAY");
    if (element == null){
        alert("elementが見つかりません");
        return false;
    }

    var aryXslOpt = new Array();
    aryXslOpt["year"] = date.getFullYear();
    aryXslOpt["month"] = date.getMonth()+1;
    aryXslOpt["day"] = date.getDate();

    var xml,xsl, xslProc;
    var objXMLHttp;

    // Load Files
    try {
        if (window.ActiveXObject){
            xml = new ActiveXObject("Msxml2.DOMDocument");
            xml.async = false;
            xsl = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
            xsl.async = false;

            xml.load(xmlPath);
            xsl.load(xslPath);
        } else if (window.XMLHttpRequest){
            objXMLHttp = new XMLHttpRequest();

            objXMLHttp.open("GET",xmlPath, false );
            objXMLHttp.send( "" );
            xml = objXMLHttp.responseXML;
            objXMLHttp.open("GET",xslPath, false );
            objXMLHttp.send( "" );
            xsl = objXMLHttp.responseXML;
        }
    }
    catch (e) {
        try{
            element.innerHTML = "ERROR_XML_LOAD：    "+e.description;
        }
        catch (ee){
            //alert("ElementId:" + idName + " " + ee.description);
            return;
        }
        return;
    }

    // XSLTプロセッサ
    try {
        if (window.ActiveXObject){
            var xslTemp = new ActiveXObject("Msxml2.XSLTemplate");
            xslTemp.stylesheet = xsl;
            xslProc = xslTemp.createProcessor();
            xslProc.input = xml;
        } else if (window.XMLHttpRequest){
            xslProc = new XSLTProcessor();
            xslProc.importStylesheet(xsl);
        }
    }
    catch (e) {
        try{
            element.innerHTML = "ERROR_XSLTProcessor：    "+e.description;
        }
        catch (ee){
            //alert("ElementId:" + idName + " " + ee.description);
            return;
        }
        return;
    }

    // パラメータをセット
	if (window.ActiveXObject) {
        xslProc.addParameter("year", aryXslOpt["year"]);
        xslProc.addParameter("month", aryXslOpt["month"]);
        xslProc.addParameter("day", aryXslOpt["day"]);
	}
	else {
        xslProc.setParameter(null, "year", aryXslOpt["year"]);
        xslProc.setParameter(null, "month", aryXslOpt["month"]);
        xslProc.setParameter(null, "day", aryXslOpt["day"]);
	}



    // 表示
    try {
        if (window.ActiveXObject){
            try{
                xslProc.transform;
                element.innerHTML= xslProc.output;
            }
            catch(e){
                element.innerHTML = e.description + e.MASSAGE;
            }
        } else {
            var target = element.childNodes.item(0);   
            var newFragment = xslProc.transformToFragment(xml,document);
            element.innerHTML = "";
            element.appendChild(newFragment,target);
        }
    }
    catch (ee) {
        //alert("ElementId:" + idName + " " + ee.description);
        return;
    }
}







var xmlRequest = {
    createXMLObject: function () {
        return Try.these(
          function () {return new XMLHttpRequest()},
          function () {return new ActiveXObject('Msxml2.DOMDocument.4.0')},
          function () {return new ActiveXObject('Msxml2.DOMDocument.3.0')},
          function () {return new ActiveXObject('Msxml2.DOMDocument.2.0')},
          function () {return new ActiveXObject('Msxml9.XMLHTTP')},
          function () {return new ActiveXObject('Msxml8.XMLHTTP')},
          function () {return new ActiveXObject('Msxml7.XMLHTTP')},
          function () {return new ActiveXObject('Msxml6.XMLHTTP.6.0')},
          function () {return new ActiveXObject('Msxml6.XMLHTTP')},
          function () {return new ActiveXObject('Msxml5.XMLHTTP')},
          function () {return new ActiveXObject('Msxml4.XMLHTTP')},
          function () {return new ActiveXObject('Msxml3.XMLHTTP')},
          function () {return new ActiveXObject('Msxml2.XMLHTTP.9.0')},
          function () {return new ActiveXObject('Msxml2.XMLHTTP.8.0')},
          function () {return new ActiveXObject('Msxml2.XMLHTTP.7.0')},
          function () {return new ActiveXObject('Msxml2.XMLHTTP.6.0')},
          function () {return new ActiveXObject('Msxml2.XMLHTTP.5.0')},
          function () {return new ActiveXObject('Msxml2.XMLHTTP.4.0')},
          function () {return new ActiveXObject('Msxml2.XMLHTTP.3.0')},
          function () {return new ActiveXObject('Msxml2.XMLHTTP')},
          function () {return new ActiveXObject('Microsoft.XMLHTTP')}
        ) || false;
    },
    createXSLTObject: function () {
        return Try.these(
          function () {return new XMLHttpRequest()},
          function () {return new ActiveXObject('FreeThreadedDOMDocument.4.0')},
          function () {return new ActiveXObject('FreeThreadedDOMDocument.3.0')},
          function () {return new ActiveXObject('FreeThreadedDOMDocument.2.0')},
          function () {return new ActiveXObject('FreeThreadedDOMDocument')},
          function () {return new ActiveXObject('Msxml2.XMLHTTP.9.0')},
          function () {return new ActiveXObject('Msxml2.XMLHTTP.8.0')},
          function () {return new ActiveXObject('Msxml2.XMLHTTP.7.0')},
          function () {return new ActiveXObject('Msxml2.XMLHTTP.6.0')},
          function () {return new ActiveXObject('Msxml2.XMLHTTP.5.0')},
          function () {return new ActiveXObject('Msxml2.XMLHTTP.4.0')},
          function () {return new ActiveXObject('Msxml2.XMLHTTP.3.0')},
          function () {return new ActiveXObject('Msxml2.XMLHTTP')},
          function () {return new ActiveXObject('Microsoft.XMLHTTP')}
        ) || false;
    },
    createXSLTemplateObject: function () {
        return Try.these(
          function () {return new XSLTProcessor()},
          function () {return new ActiveXObject('Msxml2.XSLTemplate.4.0')},
          function () {return new ActiveXObject('Msxml2.XSLTemplate.3.0')},
          function () {return new ActiveXObject('Msxml2.XSLTemplate.2.0')},
          function () {return new ActiveXObject('Msxml2.XSLTemplate')}
        ) || false;
    }
}   // ajaXML 
