// JavaScript Document
// ページキャッシュ変数
var pageCache = null;
var befPage;

// ページの表示
function viewPageData() {

    // 変数の宣言
    var str;

    // URIの取得
    var uri = event.srcElement.getAttribute("href");

    // ページキャッシュの初期化判定
    if (pageCache == null) {
        pageCache = new Array();
    }

    // ページキャッシュを取得
    var page = pageCache[uri];

    // データ取得判定
    if (page != null && !event.shiftKey) {

        // 画像用のＵＲＬを取得
        var uri2 = uri.replace(/\/[^/]+$/, "/");

        // ページ内容のリセット
        var obj = document.getElementById("main");

        // 親要素取得
        var pat = obj.parentNode;

        // 前回ページのスクロール位置を設定
        befPage[1] = obj.scrollTop;

        // キーを設定
        pat.uri = uri

        // 要素の削除
        pat.removeChild(obj);

        // データの設定
                pat.appendChild(page[0]);
        //pat.innerHTML = str;

        // スクロール位置の設定
        setTimeout('document.getElementById("main").scrollTop = ' + page[1], 1);

        // 前回ページの更新
        befPage = page;
    } else {

        // ページデータの取得
        var ajx = getPageData(uri, response);

        // ページデータの編集
        function response(html) {

            // 画像用のＵＲＬを取得
            var uri2 = uri.replace(/\/[^/]+$/, "/");

            // 無駄なデータを削除
            var str = html.replace(/\r\n/g, "##()##");
            str = html.replace(/\n/g, "##()##");
            str = str.replace(/^.+\<body(|.*)>/, "");
            str = str.replace(/<\/body>.+$/, "");

            // パスの切り替え(com_img)
            str = str.replace(/src=.+?"/g,
                function($1) {
                    $1 = $1.replace(/"/g, "");
                    $1 = $1.replace("src=", "");
                    $1 = $1.replace($1, "src=\"" + uri2 + $1 + "\"");
                    return $1;
                });

            // 改行を復元
            str = str.replace(/##\(\)##/g, "\r\n");

            // 連続で続く改行を編集
            str = str.replace(/(\r\r)/g, "");

            // ページ内容のリセット
            var obj = document.getElementById("main");

            // 前回ページのスクロール位置を設定
            if (befPage != null) {
                befPage[1] = obj.scrollTop;
            }

            // 親要素取得
            var pat = obj.parentNode;

            // キーを設定
            pat.uri = uri

            // 要素の削除
            pat.removeChild(obj);

            // データの設定
            pat.innerHTML = str;

            // エディタの設定
            lang.view.init(uri2);

            // ページキャッシュにデータを設定
            setTimeout("addPageCache('" + uri + "')", 300);
        }
    }
    return false;
}

// ページキャッシュの本処理
function addPageCache(uri) {

    // 処理中判断
    if (lang.view.bgn == lang.view.end) {

        // ページ内容のリセット
        var obj = document.getElementById("main");

        // 親要素取得
        var pat = obj.parentNode;

        // ページ切り替え判定
        if (pat.uri != uri) {

            // キャッシュに登録
            window.status = "キャッシュに登録できませんでした";
            return;
        }

        // キャッシュに設定
        var page = new Array();
        page[0] = obj;
        page[1] = 0;
        pageCache[uri] = page;
        befPage = page;

        // キャッシュに登録
        window.status = "キャッシュに登録完了しました";
    } else {

        // 再度コール
        setTimeout("addPageCache('" + uri + "')", 300);

        // ステータスバーの更新
        window.status = lang.view.end + "/" + lang.view.bgn + " " + Date();
    }
}

// ページの取得
function getPageData(uri, func) {

    // 変数の宣言
    var ajx = ajax.createAjax(func, 'text');

    // 取得
    ajax.get(ajx, uri, null);
}
