var nm = false;     // Netscape Mozilla
// ブラウザ情報の設定
ie  = (navigator.appName == 'Microsoft Internet Explorer');
nn  = (navigator.appName == 'Netscape');
mac = (navigator.appVersion.indexOf('Mac') != -1);
ver = parseInt(navigator.appVersion);
if (ie && ver == 4) {
    ver = parseInt(navigator.appVersion.substring(navigator.appVersion.indexOf('MSIE ') + 5));
}

//==========================
// ヒストリーバック
//==========================
function Back() { history.back(); }

//==========================
// ブラウザ種別の判定
// param: doc ドキュメント
//==========================
function BrowserCheck(doc) {
    if(doc.all) {
        ie = true;
    } else if (doc.layers) {
        nn = true;
    } else if (doc.getElementById) {
        nm = true;
    }
    return;
}

//===================================
// ポップアップイメージの表示
// param: id ポップアップイメージID
// param: mX IE用マウスX座標
// param: mY IE用マウスY座標
// param: nX Netscape用マウスX座標
// param: nY Netscape用マウスY座標
//===================================
function OnLink (id, mX, mY, nX, nY) {
    BrowserCheck (document);
    var pX =  30
    var pY =   0;
    var sX = -10
    var sY =  30;
    var aY =   0;   // adjust value
    if(ie) MyMsg = document.all(id).style;
    if(nn) MyMsg = document.layers[id];
    if(nm) MyMsg = document.getElementById(id).style;
    MyMsg.visibility = "visible";
    if(ie){
        pX += document.body.scrollLeft;
        pY  = document.body.scrollTop;
        aY = sY + mY;
        if (id.indexOf ("fto-image")>=0) {
            if (id.indexOf("bottom")>=0) {
                pY-=385;
            } else if (aY>370) pY-=270;
        } else {
            if (aY>370) pY -= 270;
        }
        MyMsg.left = mX + pX + sX;
        MyMsg.top  = mY + pY + sY;
        //alert ("pY=" + pY + ", sY=" + sY + ", mY=" + mY + ", aY=" + aY);
    } else if(nn || nm) {
        aY = sY + nY;
        //alert ("pY=" + pY + ", sY=" + sY + ", nY=" + nY + ", aY=" + aY);
        if (id.indexOf ("fto-image")>=0) {
            if (id.indexOf("bottom")>=0) {
                pY-=385;
            } else if (aY>420) pY-=270;
        } else {
            if (aY>420) pY -= 270;
        }
        MyMsg.left = nX + sX + pX;
        MyMsg.top  = nY + sY + pY;
    }
}

//===================================
// ポップアップイメージの消去
// param: id ポップアップイメージID
//===================================
function OffLink (id) {
    //alert ("OffLink");
    BrowserCheck (document);
    if(ie) MyMsg = document.all(id).style;
    if(nn) MyMsg = document.layers[id];
    if(nm) MyMsg = document.getElementById(id).style;
    MyMsg.visibility = "hidden";
}

//===================================
// 画像のプリロード
//===================================
function HpbImgPreload() {
    var swImg = new Array;
    BrowserCheck (document);
    if (nn || nm || ie) {
        if (document.images) {
            var imgName = HpbImgPreload.arguments[0];
            var cnt;
            swImg[imgName] = new Array;
            for (cnt=1; cnt<HpbImgPreload.arguments.length; cnt++) {
                swImg[imgName][HpbImgPreload.arguments[cnt]] = new Image();
                swImg[imgName][HpbImgPreload.arguments[cnt]].src = HpbImgPreload.arguments[cnt];
            }
        }
    }
}

//===================================
// 画像の検索
// param: doc ドキュメント
// param: imgName イメージ名
//===================================
function HpbImgFind(doc, imgName) {
    for (var i=0; i<doc.layers.length; i++) {
        var img = doc.layers[i].document.images[imgName];
        if (!img) img = HpbImgFind(doc.layers[i], imgName);
        if (img) return img;
    }
    return null;
}

//===================================
// イメージの書き換え
// param: imgName イメージ名
// param: imgSrc イメージURL
// param: msg 表示メッセージ
//===================================
function HpbImgSwap(imgName, imgSrc, msg) {
    BrowserCheck (document);
    if (nn || nm || ie) {
        if (document.images) {
            var img = document.images[imgName];
            if (!img) img = HpbImgFind(document, imgName);
            if (img)  img.src = imgSrc;
            img.visibility = "visible";
        }
        if (nn) {
            document.infobox.document.open ();
            document.infobox.document.write (msg);
            document.infobox.document.close ();
        } else if (nm) {
            var div = getDivFromName('infobox');
            writeDivHTML(div, true, true, msg);
        } else {
            infobox.innerHTML=msg;
        }
    }
}


//===================================
// 曜日の配列を作る
//===================================
week = new Week();
function Week() {
    var i=0;
    this[i++] = '日';
    this[i++] = '月';
    this[i++] = '火';
    this[i++] = '水';
    this[i++] = '木';
    this[i++] = '金';
    this[i++] = '土';
}

//===================================
// 最終更新日の日付を算出する
//===================================
function updateDate() {
    var lm = document.lastModified;
    var lmDate;

    if(ie && ver < 4) {
        // IE4 より前のブラウザは parse できない
        var i, j, nm;
        i = lm.indexOf(' ', 0);
        j = lm.indexOf(' ', i + 1);
        nm = '' + lm.substring(i + 1, j);
        i = lm.indexOf(' ', j);
        j = lm.indexOf(' ', i + 1);
        nm += '/' + lm.substring(i + 1, j);
        i = lm.indexOf(' ', j);
        j = lm.indexOf(' ', i + 1);
        nm += '/' + lm.substring(j + 1, lm.length) + ' ' + lm.substring(i + 1, j);
        lmDate = new Date(Date.parse(nm));
    } else {
        var p, pd = Date.parse(document.lastModified);
        if (!pd && (p = document.lastModified.indexOf(' JST')) != -1) {
            // Linux版 NN4 では 'JST' 付きの文字列は parse できない
            pd = Date.parse(document.lastModified.substring(0, p));
        }
        lmDate = new Date(pd);
    }
    // 年号は getFullYear メソッドがあれば、これを使用する
    var y = lmDate.getFullYear ? lmDate.getFullYear() : lmDate.getYear();
    // Y2K問題の補正をする
    var oy = y;
    if (y <  100) y += 1900;
    if (y < 1980) y += 100;
    if (oy != y) lmDate.setYear(y);
    if (ie && ver < 5 && navigator.appVersion.indexOf('MSIE 5') == -1) {
        // IE4以前のブラウザは地域化の考慮が欠けているので補正する
        lmDate.setTime(lmDate.getTime() - lmDate.getTimezoneOffset() * 60 * 1000);
    } else if (mac && !ie && ver == 4) {
        // Mac版 NN4も地域化の考慮が欠けているので補正する
        // 但し、getTimezoneOffset の戻り値のフォーマットが異なる！
        var tz = lmDate.getTimezoneOffset();
        lmDate.setTime(lmDate.getTime() + (parseInt(tz / 100) * 60 + tz % 100) * 60 * 1000);
    }
    var Hours   = leadingZero(lmDate.getHours());
    var Minutes = leadingZero(lmDate.getMinutes());
    var Seconds = leadingZero(lmDate.getSeconds());
    // 算出した最終更新日を文字列に成形して戻す
    return y + '/' + leadingZero((lmDate.getMonth() + 1)) + '/' + leadingZero(lmDate.getDate()) + '(' + week[lmDate.getDay()] + ')&nbsp;&nbsp;' + Hours + ':' + Minutes + ':' + Seconds + '&nbsp;JST';
}

//===================================
// 1桁の数値を0で埋めて2桁にする
//===================================
function leadingZero (nr) {
    if (nr < 10) nr = "0" + nr;
    return nr;
}
