jQuery.preloadImages = function () {
    for(var i = 0; i<arguments.length; i++) {
        jQuery("<img>").attr("src", arguments[i]);
    }
}
$.preloadImages(fair[1].image.url,fair[2].image.url,fair[3].image.url,plan[1].image.url,plan[2].image.url,plan[3].image.url);

$(document).ready(
    function () {

        // 「ウェディングフェア」onload 時にコンテンツ置き換え
        $("div#weddingFair div.contents").html(
            '<p class="photo"><a href="'+fair[0].link+'"><img src="'+fair[0].image.url+'" alt="' +fair[0].image.alt+'" /></a></p><h3><a href="' +fair[0].link+ '">'+fair[0].heading+'</a></h3><p class="read">'+fair[0].text+'</p>'
        );

        // 「料理」onload 時にコンテンツ置き換え
        $("div#cuisine div.contents").html(
            '<p class="photo"><a href="'+plan[0].link+'"><img src="'+plan[0].image.url+'" alt="' +plan[0].image.alt+'" /></a></p><h3><a href="' +plan[0].link+ '">'+plan[0].heading+'</a></h3><p class="read">'+plan[0].text+'</p>'
        );

        // 現在出している内容の index 値
        var fair_current = 0;
        var plan_current = 0;

        // 次がクリックされたときの動作登録
        $("div#weddingFair li.next").click(
            function () {

                // 現在出している内容を一つすすめる（インクリメント）
                fair_current++;

                // 現在出している内容が fair ハッシュの内容の数*以上* であった場合には 0 にもどる
                if ( fair.length <= fair_current ) { fair_current = 0; }

                // クロスフェードして内容の書き換え
                switchWeddingFair(fair_current);
            }
        );

        $("div#cuisine li.next").click(
            function () {

                // 現在出している内容を一つすすめる（インクリメント）
                plan_current++;

                // 現在出している内容が plan ハッシュの内容の数*以上* であった場合には 0 にもどる
                if ( plan.length <= plan_current ) { plan_current = 0; }

                // クロスフェードして内容の書き換え
                switchPlanBonus(plan_current);
            }
        );

        // 前がクリックされたときの動作登録
        $("div#weddingFair li.back").click(
            function () {

                // 現在出している内容を一つ戻す（デクリメント）
                fair_current--;

                // 現在出している内容が 0 *より少ない* 場合には fair.length - 1 にもどる
                if ( 0 > fair_current ) { fair_current = fair.length - 1; }

                // クロスフェードして内容の書き換え
                switchWeddingFair(fair_current);
            }
        );

        // 前がクリックされたときの動作登録
        $("div#cuisine li.back").click(
            function () {

                // 現在出している内容を一つ戻す（デクリメント）
                plan_current--;

                // 現在出している内容が 0 *より少ない* 場合には fair.length - 1 にもどる
                if ( 0 > plan_current ) { plan_current = plan.length - 1; }

                // クロスフェードして内容の書き換え
                switchPlanBonus(plan_current);
            }
        );
    }
);

function switchWeddingFair (current) {

    // フェードアウト
    $("div#weddingFair p.photo,div#weddingFair h3,div#weddingFair p.read").fadeTo(
        "normal",
        0,
        // callback（フェードアウトが完了した後に実行される処理
        // 書く内容書き換えとフェードインは、フェードアウトが確実に完了されたあとに実行されるべき
        function () {
            // 各内容を書き換え
            $("div#weddingFair p.photo a").attr('href', fair[current].link);
            $("div#weddingFair p.photo img").attr('src', fair[current].image.url).attr('alt', fair[current].image.alt);
            $("div#weddingFair h3 a").text(fair[current].heading).attr('href', fair[current].link);
            $("div#weddingFair p.read").html(fair[current].text);
            // フェードイン
            $("div#weddingFair p.photo,div#weddingFair h3,div#weddingFair p.read").fadeTo(
                "normal",
                1,
                function () {
                    $("div#weddingFair p.photo,div#weddingFair h3,div#weddingFair p.read").removeAttr("filter");
                    $("div#weddingFair p.photo,div#weddingFair h3,div#weddingFair p.read").removeAttr("style");
                }
            );
        }
    );
}

function switchPlanBonus (current) {
    // フェードアウト
    $("div#cuisine p.photo,div#cuisine h3,div#cuisine p.read").fadeTo(
        "normal",
        0,
        // callback（フェードアウトが完了した後に実行される処理
        // 書く内容書き換えとフェードインは、フェードアウトが確実に完了されたあとに実行されるべき
        function () {
            // 各内容を書き換え
            $("div#cuisine p.photo a").attr('href', plan[current].link);
            $("div#cuisine p.photo img").attr('src', plan[current].image.url).attr('alt', plan[current].image.alt);
            $("div#cuisine h3 a").text(plan[current].heading).attr('href', plan[current].link);
            $("div#cuisine p.read").html(plan[current].text);
            // フェードイン
            $("div#cuisine p.photo,div#cuisine h3,div#cuisine p.read").fadeTo(
                "normal",
                1,
                function () {
                    $("div#cuisine p.photo,div#cuisine h3,div#cuisine p.read").removeAttr("filter");
                    $("div#cuisine p.photo,div#cuisine h3,div#cuisine p.read").removeAttr("style");
                }
            );
        }
    );
}
