(function(){
    var container = $("script:last").parents("div:first");

    $(function(){
        ajaxRequest(getHost() + "/page/Rankingview/index",
                    null,
                    function(backdata){app_ViewInit(backdata,container);});
    });


})();

//ランキングの続きを見る
function app_moreRankings(objParents) {
    $('#rankingViewForm',objParents).attr('action',getOriginalHost() + "/app/Rankingviewmore/index");
    $('#rankingViewForm',objParents).submit();
}

//ランキングのタブがクリックされたときの処理
function app_clickTab(tabFlag,objParents) {
    if (tabFlag == "co05") {
        $("#TimeFlag",objParents).val(3);
    } else if (tabFlag == "co06") {
        $("#TimeFlag",objParents).val(2);
    } else if (tabFlag == "co07") {
        $("#TimeFlag",objParents).val(1);
    } else {
        $("#TimeFlag",objParents).val(1);
    }

    strTabFlag = $("#TimeFlag",objParents).val();

    //クリックされたタブをクッキーに保存
    $.cookie('rankingView',strTabFlag,{path:'/'});

    if (strTabFlag == 1) {
        $("#co07Div",objParents).show();
        $("#co06Div",objParents).hide();
        $("#co05Div",objParents).hide();
    } else if (strTabFlag == 2) {
        $("#co07Div",objParents).hide();
        $("#co06Div",objParents).show();
        $("#co05Div",objParents).hide();
    } else if (strTabFlag == 3) {
        $("#co07Div",objParents).hide();
        $("#co06Div",objParents).hide();
        $("#co05Div",objParents).show();
    }
    // ランキング１（タブ）
    var Tabs = $("#ranking01 .tab li a",objParents);
    var TabActive = "active";
    var TabContents = $("#ranking01 .contents",objParents);
    $(Tabs).parent().removeClass(TabActive);

    if (strTabFlag ==1) {
        $("#TimeFlag",objParents).val(1);
        $('#co07Li',objParents).attr('class',TabActive);
    }
    else if (strTabFlag ==2) {
        $("#TimeFlag",objParents).val(2);
        $('#co06Li',objParents).attr('class',TabActive);
    }
    else if (strTabFlag ==3) {
        $("#TimeFlag",objParents).val(3);
        $('#co05Li',objParents).attr('class',TabActive);
    }
}

function app_ViewInit(data,objParents) {
    app_callBackView_Init(data.arrCampaign1,1,objParents);
    app_callBackView_Init(data.arrCampaign2,2,objParents);
    app_callBackView_Init(data.arrCampaign3,3,objParents);

    //選択されていたタブをクッキーから取得
    var strTabFlag   = 1;    //初期化
    var cookieVal = null;    //初期化

    cookieVal = $.cookie('rankingView');    //値を取得
    if(cookieVal != null){
        strTabFlag = cookieVal;    //値がnullで無ければクッキーからの値を設定
    }
    $.cookie('rankingView',strTabFlag,{path:'/'});  //クッキーに保存

    // タブのサイズを調節 IEは高さも必要
    var tabWidth = Math.floor(objParents.width() / 3) - 8;
    $('#co05Li', objParents).css('width', tabWidth + "px")
                            .css('height', "20px")
                            .css('margin-left', "7px");
    $('#co06Li', objParents).css('width', tabWidth + "px")
                            .css('height', "20px");
    $('#co07Li', objParents).css('width', tabWidth + "px")
                            .css('height', "20px");

    // ランキング１（タブ）
    if ($("#ranking01",objParents).length > 0) {
        $(function(){
            var Tabs = $("#ranking01 .tab li a",objParents);
            var TabActive = "active";
            var TabContents = $("#ranking01 .contents",objParents);
            $(Tabs).parent().removeClass(TabActive);
            if (strTabFlag ==1) {
                $("#TimeFlag",objParents).val(1);
                $('#co07Li',objParents).attr('class',TabActive);
                $("#co07Li",objParents).show();
                $("#co07Div",objParents).show();
            }
            else if (strTabFlag ==2) {
                $("#TimeFlag",objParents).val(2);
                $('#co06Li',objParents).attr('class',TabActive);
                $("#co06Li",objParents).show();
                $("#co06Div",objParents).show();
            }
            else if (strTabFlag ==3) {
                $("#TimeFlag",objParents).val(3);
                $('#co05Li',objParents).attr('class',TabActive);
                $("#co05Li",objParents).show();
                $("#co05Div",objParents).show();
            }

            //タブのクリックイベントに関数登録
            $(Tabs).click( function(e) {
                e.preventDefault();
                $($(this).attr("id")).show();                       //タブを表示状態にする
                $(Tabs).parent().removeClass(TabActive);            //全てのタブを非選択状態にする
                $(this).parent().addClass(TabActive);               //自分自身を選択状態にする
                app_clickTab($(this).attr("id"),objParents);
            });
        });
    }
}

//データ取得Ajaxリクエストのcallback関数
function app_callBackView_Init(data,flag,objParents) {
    if (data == null) return;

    var strTabFlag     = data.strFlag;
    var arrTabFlag     = data.ViewTable;
    var searchData     = data.Goods;
    var AggregateDates = data.AggregateDates;
    var GoodsCount     = data.GoodsCount;


    //タブの判定
    var timerViews     = "";
    var goodsUI        = "";
    if (flag == 1) {
        timerViews     = "#co07TimeViews";
        goodsUI        = "#co07goodsUI";
        rankDiv        = "#co07Div";

    } else if (flag == 2) {
        timerViews     = "#co06TimeViews";
        goodsUI        = "#co06goodsUI";
        rankDiv        = "#co06Div";

    } else if (flag == 3) {
        timerViews     = "#co05TimeViews";
        goodsUI        = "#co05goodsUI";
        rankDiv        = "#co05Div";

    }

    //ランキングの続きを見るリンクにクリックイベントをバインド
    $(rankDiv+">p.link>a",objParents).bind("click",function(event){app_moreRankings(objParents);});

    //集計期間の表示
    $(timerViews,objParents).text(AggregateDates);

    //ベース要素の取得・破棄
    var elm=$(goodsUI,objParents).children().clone();        //ベース要素を取得
    $(goodsUI,objParents).children().remove();            //ベース要素を破棄
    var wkElm='';

    var rankingWidth = objParents.width() - 83;

    if (GoodsCount > 0 ) {
        //エラー表示欄を削除
        $(rankDiv+">.Cerrortext",objParents).remove();

        //データが有ったときはデータの件数分ループする
        for(var i = 0; searchData[i]; i++){
            //ワーク変数にベース領域をコピー
            wkElm = $(elm).clone();

            //アイコン設定
            //1位から3位はクラスと画像を設定する
            if (searchData[i]["RANKING_SEQ"] < 4) {
                $('strong', wkElm).addClass('no0' + searchData[i]["RANKING_SEQ"]);
                if (searchData[i]["ICONPath"] != "" && searchData[i]["ICONPath"]!= null) {
                    $('img.transparent',wkElm).attr('src',searchData[i]["ICONPath"]);        //ランキング画像パス
                    $('img.transparent',wkElm).attr('alt',searchData[i]["ReplaceCaption"]);  //商品画像alt
                }
            } else {
                $('img.transparent',wkElm).remove();
            }

            //会員限定アイコン(1=会員に限定しない)でない時
            if (searchData[i]["MEMBER_LIMIT_FG"] != 1) {
                $('strong img:not(.transparent)',wkElm).attr('src',searchData[i]["MemberIconPath"]);
            } else {
                $('strong img:not(.transparent)',wkElm).remove();
            }

            //順位設定
            var objImg1 = $('img.transparent',wkElm);
            var objImg2 = $('strong img:not(.transparent)',wkElm);

            $('strong',wkElm).append(objImg1);
            $('strong',wkElm).append("第" + searchData[i]["RANKING_SEQ"] + "位");
            $('strong',wkElm).append(objImg2);
            $('strong',wkElm).width(rankingWidth);

            //会員限定商品 && ログインしていない時
            if(
                (searchData[i]["MEMBER_LIMIT_FG"] == 2 || searchData[i]["MEMBER_LIMIT_FG"] == 3) &&
                (searchData[i]["MEMBER_LOGIN_FG"] == 0 || searchData[i]["MEMBER_LOGIN_FG"] == null)){

                //会員登録へのリンクを生成して設定
                var href = getLoginHost()+"/login/customerTemporarilyEdit/index";

                //会員限定の文言を設定
                var goodsName = data.memberOnly;

                //ダミー画像のパスを生成して設定
                var imgPath = getComPictureHost()+searchData[i]["ImagePath"];

                //ダミー画像のaltを生成して設定
                var strAlt = data.memberOnly;
            }
            else{
                //会員限定商品でない || ログインしているとき
                //商品詳細へのリンクを生成して設定
                var href = getOriginalHost() + "/item/" + searchData[i]["GOODS_CODE"] + "/";

                //商品名を設定
                var goodsName = searchData[i]["GOODS_NAME"];

                //商品画像のパスを生成して設定
                var imgPath = searchData[i]["ImagePath"];

                //ダミー画像のaltを生成して設定
                var strAlt = searchData[i]["ReplaceCaption"];
            }

            //画像設定
            $('.photo>a',wkElm).attr('href', href);

            $('.photo img',wkElm).attr('src',imgPath);                                //src
            $('.photo img',wkElm).attr('alt',htmlspecialchars_decode(strAlt));        //alt

            //商品名設定
            $('.name>a',wkElm).attr("href", href);

            $('.name>a',wkElm).text(htmlspecialchars_decode(goodsName));              //商品名
            $('.name',wkElm).width(rankingWidth);

            //値段設定
            $('.price',wkElm).text(searchData[i]["SALES_PRICE"]).width(rankingWidth);

            //要素を親に追加
            $(goodsUI,objParents).append(wkElm);
        }
    } else {
        //データが無かったときはメッセージを表示する
       $(goodsUI,objParents).children().remove();      //ベース要素を破棄

       $(rankDiv+">.Cerrortext>p",objParents).text(data.errMessage);    //メッセージの表示

       //ランキングの続きを見るリンクを削除
       $(rankDiv+">.link",objParents).remove();
    }
}

