﻿var list;//画像リスト
var photo_now_idx = 0;//画像の現在位置
var witticism_data;//名言データ

// 画像検索を行う関数
function photo_search ( param ) {
    // APIリクエストパラメタの設定
    param.api_key  = '5bf07be270b03374fb6e1f232a0b1911';
    param.method   = 'flickr.photos.search';
    param.per_page = 20;
    param.sort     = 'interestingness-desc';
		param.license  = 1,2,3;
    param.extras   = 'owner_name';
    param.format   = 'json';
    param.page     = Math.floor( Math.random() * 4 + 1);
    param.jsoncallback = 'jsonFlickrApi';

    // APIリクエストURLの生成(GETメソッド)
    var url = 'http://www.flickr.com/services/rest/?'+
               obj2query( param );

    // script 要素の発行
    var script  = document.createElement( 'script' );
    script.type = 'text/javascript';
    script.src  = url;
    //document.body.appendChild( script );
		document.documentElement.getElementsByTagName("HEAD")[0].appendChild( script );
};

// 現在の表示内容をクリアする
function remove_children ( id ) {
    var div = document.getElementById( id );
    if (div==null)
			return;
		while ( div.firstChild ) { 
        div.removeChild( div.lastChild );
    }
};

// オブジェクトからクエリー文字列を生成する関数
function obj2query ( obj ) {
    var list = [];
    for( var key in obj ) {
        var k = encodeURIComponent(key);
        var v = encodeURIComponent(obj[key]);
        list[list.length] = k+'='+v;
    }
    var query = list.join( '&' );
    return query;
}

// Flickr検索終了後のコールバック関数
function jsonFlickrApi ( data ) {
    // データが取得できているかチェック
    if ( ! data ) return;
    if ( ! data.photos ) return;
    list = data.photos.photo;
    if ( ! list ) return;
    if ( ! list.length ) return;

		photo_now_idx = Math.floor( Math.random() * list.length );
		makePhotoArea(list[photo_now_idx]);
}

// 写真エリア（名言を含む）を作成する
function makePhotoArea(photo) {

    var div_frame = document.getElementById( 'photo_frame' );

    // 現在の表示内容（Loading...）をクリアする
    remove_children( 'photo_area' );

    // 各画像を表示する
    var div = document.getElementById( 'photo_area' );
		if (div == null) {
			div = document.createElement( 'div' );
			div.id = "photo_area";
		}

    var div_inner = document.createElement( 'div' );
    div_inner.id = "photo_inner";
		// a 要素の生成
    var atag = document.createElement( 'a' );
    atag.href = 'http://www.flickr.com/photos/'+
                photo.owner+'/'+photo.id+'/';

    // img 要素の生成
    var img = document.createElement( 'img' );
    img.src = 'http://static.flickr.com/'+photo.server+
                  '/'+photo.id+'_'+photo.secret+'_s.jpg';
    img.style.border = '0';
    atag.appendChild( img );
		
		div_inner.appendChild( atag );
    div.appendChild( div_inner );

    // p 要素の生成(ページ移動)
    var p_content = document.createElement( 'p' );
		p_content.id = "photo_move";
    p_content.innerHTML = "<table id=\"move_tbl\" cellspacing=\"0\"><tbody><tr><td id=\"move_left\"><a href=\"javascript:(function(){dispPhoto(-1);})()\">&lt;</a></td><td id=\"move_right\"><a href=\"javascript:(function(){dispPhoto(1);})()\">&gt;</a></td></tr></tbody></table>";
    div.appendChild( p_content );

		var content = getContent();
		if (content != null) {
	    // p 要素の生成(コンテンツ)
    	var p_w_content = document.createElement( 'p' );
			p_w_content.id = "wittecism_content";
    	p_w_content.innerHTML = content.data + "<br/>";
    	div.appendChild( p_w_content );

    	// p 要素の生成(名前)
    	var p_w_name = document.createElement( 'p' );
			p_w_name.id = "witticism_name";
    	p_w_name.title = content.name;
    	p_w_name.innerHTML = "-" + content.name;
    	div.appendChild( p_w_name );
		}
    // p 要素の生成(クレジット)
    var p_credit = document.createElement( 'p' );
		p_credit.id = "photo_creditt";
		var l = photo.ownername.length;
    p_credit.title = photo.ownername;
    p_credit.innerHTML = "photo-<br/>" + (l>14 ? photo.ownername.substring(0, 11) + "..." : photo.ownername);
    div.appendChild( p_credit );
		div_frame.appendChild( div );
}

// 写真エリアを表示し、現在位置を返す
function dispPhoto(step) {
	var pos = photo_now_idx + step;

	if (pos < 0)
		pos = list.length - 1;
	else if (pos >= list.length)
		pos = 0;

	makePhotoArea(list[pos]);
	photo_now_idx = pos;
}

// コンテンツ（名言、名前）を取得する
function getContent() {
	var idx = Math.floor(Math.random() * witticism_data.content.length);
	return witticism_data.content[idx];
}

//画像検索（sunrise and morning をタグ検索する条件を追加）
window.onload = function() { photo_search({ tags: 'sunrise,morning',tag_mode: 'all' }); };
//photo_search({ tags: 'sunrise,morning',tag_mode: 'all' });
