/* slideShow.js (旧：showcase.js）
 * リスト内のオブジェクトを時間毎に切り替えて画面に表示する。
 * また、ユーザが指示したオブジェクトの表示を表示する。
 * 
 * @version 1.00, Oct 23, 2008
 * @version 1.10, Jul 01, 2009
 * 　不具合：現在の画像番号を選択すると画像が消える。
 * 　対　応：修正
 */

// true: ユーザによるマウス選択された場合
var clickEveFlg = false;
// イメージリスト
var photo;
// 表示要素の数
var photoLen;
// ON要素番号イメージリスト        
var num;
// 表示中の要素の番号
var curNum  = 1;
// 直前の表示要素の番号
var prevNum = 1;
        
/* function switchPhoto(speed)
 * @param speed
 */
function switchPhoto(speed) {
    if (curNum == (photoLen + 1)) {
        curNum = 1;
    } else if (curNum < 1) {
        curNum = photoLen;
    } 
    setOn(curNum);
    photo.eq(prevNum - 1).fadeOut('fast', function() {
        photo.eq(curNum -1).fadeIn(speed);
    });
}
        
/* function setOn(current)
 * @param current 現在の選択中の要素番号
 * 
 * 注意：要素番号オブジェクトはON,OFFの順で配置されていること。
 */
function setOn(current) {
         
    // 要素番号をすべてOFFの状態にする         
    num.each(function(idx) {
        var foo = idx % 2;
        if (foo == 0) {
            num.eq(idx).hide();                    
        } else {
            num.eq(idx).show();
        }
    });
            
    // 現在選択中の要素番号ONを表示してOFFを非表示
    var s = current * 2 - 2;
    var h = s + 1;
    num.eq(s).show();
    num.eq(h).hide();            
}

        
/* 初期描画処理
 * 
 */
$(document).ready(function() {
    photo = $('div.photo');
    photoLen = photo.length;
    num    = $('*[class="num"]');
            
    // 初期のボタン設定
    setOn(curNum);
            
    // 「前の画像」
    $('#img-prev').click(function(ev) {
        prevNum = curNum;                
        curNum = curNum - 1;                
        if(ev.pageX > 0) {
            clickEveFlg = true;
        }

        // 表示中の画像
        var current = photo.filter(':visible');
        // 次の表示する画像
        var prev = $(current).prev('.photo');
        if (prev.size() < 1) prev = photo.filter(':last');
        // 画像切り替え
        switchPhoto(1000, current, prev);
    });
            
    // 「次の画像」
    $('#img-next').click(function(ev) {
        prevNum = curNum;
        curNum = curNum + 1;                                
        if(ev.pageX > 0) {
            clickEveFlg = true;
        }
                
        // 表示中の画像
        var current = photo.filter(':visible');
        // 次の表示する画像
        var next = $(current).next('.photo');
        if (next.size() < 1) next = photo.filter(':first');
        // 画像切り替え
        switchPhoto(1000);
    });
            
    // 先頭の画像以外は非表示にする
    photo.eq(0).nextAll().hide();
            
    num.click(function(ev) {

        // @since 1.01
        if (isNaN($(this).attr('id') - 0)) {
            return;
        }
        // end of @since 1.01

        clickEveFlg = true;
        prevNum = curNum;
        curNum = $(this).attr('id') - 0;

        switchPhoto(1000);
    });
            

    var interval = $('#interval').text();
    // タイマー
    // 設定した時間（５秒）後に「次画像」選択のイベントを起こす。
    // ユーザーによる画像選択（マウスクリック）があった場合は
    // タイマーイベントを起こさず、次回のイベントにまわす。
//    $.timer(5000, function (timer) {
    $.timer(interval, function (timer) {
        if (clickEveFlg == true) {
            clickEveFlg = false;
        } else {
            $('#img-next').click();
            clickEveFlg = false;
        }
    });

    $('#photoList').show();
});

