/**
 * 店舗画像用jcarouselナビゲーションの動作
 * 
 * ※tenantIdとdivNameがグローバル変数に設定されていないと動かない。
 */

// 店舗ID
var tenantId;

// カテゴリ名
var divName;

/**
 * 店舗IDを設定
 * 
 * @param value_
 * @return
 */
function setTenantId(value_)
{
    tenantId = value_;
}

/**
 * カテゴリ名を設定
 * 
 * @param value_
 * @return
 */
function setDivName(value_)
{
    divName = value_;
}

/**
 * ロードコールバック関数
 * 
 * @param carousel
 * @param state
 * @return
 */
function jcarousel_itemLoadCallback(carousel, state)
{
    //
    // 始めのページを取得
    //
    
    jcarousel_itemFetchCallback(carousel, carousel.first, carousel.last);

    /*
    //
    var visible = carousel.last - carousel.first + 1;
    
    //
    // 次の幾つかを取得
    //

    //
    var first = carousel.last + 1;
    
    //
    var last  = first + visible - 1;

    //
    jcarousel_itemFetchCallback(carousel, first, last);

    //
    // 前の幾つかを取得
    //

    //
    var last  = carousel.first - 1;
    
    //
    var first = last - visible + 1;

    jcarousel_itemFetchCallback(carousel, first, last);
    */
};

/**
 * フェッチコールバック関数
 * 
 * @param carousel
 * @param first
 * @param last
 * @return
 */
function jcarousel_itemFetchCallback(carousel, first, last)
{
    //
    var visible = carousel.last - carousel.first + 1;

    // 取得の始まりが先頭より小さい場合
    if (first < 1)
    {
        // 先頭にする
        first = 1;
        
        // 先頭から見える範囲まで
        last = first + visible - 1;
    }

    // サイズを取得
    var size = carousel.size();
    
    // 取得しようとしている画像の位置が最大表示数より大きい場合
    if (carousel.options.wrap != 'circular' && size && first > size)
    {
        //
        return;
    }

    // クエリコールバック関数を実行
    jcarousel_itemQueryCallback(carousel, first, last);

};

/**
 * クエリコールバック関数
 * 
 * @param carousel
 * @param first
 * @param last
 * @param realFirst
 * @return
 */
function jcarousel_itemQueryCallback(carousel, first, last, realFirst)
{
    
    // 既に存在する場合
    if (carousel.has(first, last))
    {
        //
        return;
    }
    
    // 店舗画像取得リクエスト
    jQuery.get(
        '/service/tenantPhoto.php',
        {
            action: 'tenant_photo_list',
            tenant_id: tenantId,
            first: first,
            last: last
        },
        function(json)
        {
            //
            var data = eval('(' + json + ')');

            //
            if (data["code"] == 0)
            {
                //
                jcarousel_itemAddCallback(carousel, first, last, data["photos"]);
            }
            else
            {
                //
                alert("登録時に問題が起こりました。");
            }
            
        },
        'JSON'
    );
};

/**
 * 画像追加コールバック関数
 * 
 * @param carousel
 * @param first
 * @param last
 * @param photos
 * @return
 */
function jcarousel_itemAddCallback(carousel, first, last, photos)
{

    // 取得した画像数
    var len = photos.length;
    
    // 取得した画像数がリクエストした数より少ない場合
    if (len < (last - first + 1))
    {
        // サイズを設定する
        carousel.size(first + len - 1);
    }
    
    // 取得した画像を一つずつ処理
    for (var i = 0; i < len; i++)
    {
        // 画像を追加する
        carousel.add(first + i, jcarousel_getItemHTML(photos[i]));
    }
};

/**
 * 画像のHTMLを取得
 * 
 * @param item
 * @return
 */
function jcarousel_getItemHTML(photo)
{
    //
    var retval = '';
    
    //
    if (photo["photo_id"] > 0)
    {
        //
        retval  = '<a href="/' + divName + '/photo_item.html?tenant_id=' + tenantId + '&tenant_photo_id=' + photo["id"] + '#main_pane" title="' + photo["title"] + '">';
        retval += '<img src="/common/image.php?id=' + photo['photo_id'] + '&w=75&h=75" width="75" height="75" alt="' + photo["title"] + '" />';
        retval += '</a>';
    }
    else
    {
        //
        retval  = '<a href="/' + divName + '/photo_item.html?tenant_id=' + tenantId + '&tenant_external_photo_id=' + photo["id"] + '#main_pane" title="' + photo["title"] + '">';
        retval += '<img src="' + photo["thumbnail_url"] + '" width="75" height="75" alt="' + photo["title"] + '" />';
        retval += '</a>';
    }
    //
    return retval;
};

