//
// access.js
// 成分ランキング用JavaScript
// 2008.10.14 nishikawa

var Access = function() {

    var baseURL = "/fooddbT/access/";
    var accessCGI = baseURL + "cmp_order.pl";
    var titleCGI = baseURL + "accessTitle.pl";

    var to2String = function(value) {
        label=""+value;
        if(label.length<2){
            label="0"+label;
        }
        return label;
    }

    // 昨日の日付を取得
    var dd=new Date();
    dd.setDate(dd.getDate()-1);
    var ddYear=dd.getYear();
    //var ddMonth=dd.getMonth() + 1;
    //var ddDate=dd.getDate() - 1;
    var ddMonth=to2String(dd.getMonth() + 1);
    var ddDate=to2String(dd.getDate());
    // YYYY/MM/DD
    if (ddYear < 2000) ddYear += 1900;
    var initNut = ddYear + "年" + ddMonth + "月" + ddDate + "日";
    //initNut = sprintf("%d年%02d月%02d日", ddYear, ddMonth, ddDate);

    // ランキングをリクエストする
    //
    // ajaxReq(date, limit)
    //    date    期間
    //    limit   ランキング数
    var ajaxReq = function() {
    //    var date = $F('date');
        var acc_date;
        var tit_date;
        var limit = $F('limit');
        
        // 期間（日）を選択したとき
        if(document.form.kikan[0].checked == true) {
            acc_date = $F('date');
            tit_date = $F('date');

    	    var start_date ="2009年03月12日";

            if( acc_date<start_date ){
                // メッセージ表示
                alert("2009年03月12日以降を指定してください。");
                // 終了
                return;
            }

            if( initNut<acc_date ){
                // メッセージ表示
                alert("本日、及び未来の人気食品アクセスランキングは表示できません");
                // 終了
                return;
            }
        }
        // 期間（月）を選択したとき
        if(document.form.kikan[1].checked == true) {
            acc_date = $F('date_m');
            tit_date = acc_date.substr(0, 4) + "年" + acc_date.substr(4, 2) + "月";
        }
        // 期間（年）を選択したとき
        else if(document.form.kikan[2].checked == true) {
            acc_date = $F('date_y');
            tit_date = acc_date.substr(0, 4) + "年";
        }

        // テスト用
        //alert("ajaxReq:" + acc_date);

        getResoult("result_acc", acc_date, limit, "");
        getTitle("title", tit_date, limit);
    }

    // ランキングを読み込む
    //
    // getResoult(target, date, limit)
    //    target  ランキングを表示するタグのid
    //    date    期間
    //    limit   ランキング数
    //    caption "ON"なら、ランキングのテーブルにキャプションを付ける
    var getResoult = function(target, date, limit, caption) {

        // 期間（日）を選択したとき
        if (document.form) {
            if(document.form.kikan[1].checked==false &&
               document.form.kikan[2].checked==false ) {
                // 日付の年月日を省く
                //date = date.substr(0, 4) + date.substr(5, 2) + date.substr(8, 2);
            }
        }
        // テスト用
        //alert("getResoult:" + date);

        param = "out=ajax&date=" + date + "&limit=" + limit;
        if (caption) {
            param = param + "&caption=" + caption;
        }
        $(target).innerHTML = "読み込み中…";
        new Ajax.Updater({
            success: target
        }, accessCGI, {
            method: "get",
            parameters: param,
            onFailure: function(httpObj){
                $(target).innerHTML = "エラーで読み込めませんでした";
            }
        });
    }

    // ランキングのタイトルを設定する
    //
    // getTitle(target, date, limit)
    //    target  タイトルを表示するタグのid
    //    date    期間
    //    limit   ランキング数
    var getTitle = function(target, date, limit) {
        param = "out=ajax&date=" + date + "&limit=" + limit;
        new Ajax.Updater({
            success: target
        }, titleCGI, {
            method: "get",
            parameters: param,
            onFailure: function(httpObj){
                $(target).innerHTML = "エラーで読み込めませんでした";
            }
        });
    }
    
    // 期間選択
    var radioSet = function() {
        // 期間（日）を選択したとき
        if(document.form.kikan[0].checked == true) {
            document.form.date.disabled = false;
            //document.form.hyouji.disabled = false;
            document.form.date_m.disabled = true;
            document.form.date_y.disabled = true;
        }
        // 期間（月）を選択したとき
        else if(document.form.kikan[1].checked == true) {
            document.form.date.disabled = true;
            //document.form.hyouji.disabled = true;
            document.form.date_m.disabled = false;
            document.form.date_y.disabled = true;
        }
        // 期間（年）を選択したとき
        else if(document.form.kikan[2].checked == true) {
            document.form.date.disabled = true;
            //document.form.hyouji.disabled = true;
            document.form.date_m.disabled = true;
            document.form.date_y.disabled = false;
        }
    }
    
    //オブジェクトのメンバ
    return {
        // 初期値用日付
        initNut: initNut,
        radioSet: radioSet,
        ajaxReq: ajaxReq,

        // トップページの初期ランキング出力
        topInitLoad: function() {
            getResoult("result_acc", initNut, 5, "ON");
        },

        // ランキングページの初期ランキング出力
        initLoad: function() {
            Element.toggle("buttons_input");   // 食品成分グループ選択ドロップダウンリストを表示
            Element.toggle("buttons_ancher");  // 食品成分グループ選択ドロップダウンリストを表示

            getResoult("result_acc", initNut, 5, "", "");
            getTitle("title", initNut, 5, "");

            Element.toggle("buttons");         // ボタンを隠す

            // 期間設定
            document.form.kikan[0].checked = true;
            radioSet();

            // 日付設定
            document.form.date.value = initNut;
        }
    };
}();
