var g_reviewTabView = null;

Event.observe(window,'load',window_onload,false);

function window_onload(evt){

	$('loading_sc').style.display = 'none';

	g_reviewTabView = new YAHOO.widget.TabView('demo');

	for(var i=0;i<6 && g_reviewTabView != null;i++){
		var tab = g_reviewTabView.getTab(i);
		tab.addListener('click', tab_onclick);
	}

	set_subcategory_handlers();
	
	set_sortselector_unselected();
	set_sortselector_handlers();
	select_sortselector( 'ss_' + $('curr_skey').value );
	
	if($('list_type').value == 'subcategory'){
		refresh_subcategory_list();
	}
	else{
		refresh_category_list();
	}

	if($('txt_s')){
		Event.observe('txt_s', 'keydown', txt_s_onkeydown, false);
		$('txt_s').focus();
	}	
}

function txt_s_onkeydown(evt){
	//var e = Event.element(evt);
	var e = evt ? evt : event;
	if(!e){
		return;
	}
	var ch = e.charCode ? e.charCode : ( e.which ? e.which : e.keyCode );
	if( ch == 13 || ch == 3){
		document.location = 'search.php?q=' + encodeURIComponent($('txt_s').value);		
	}
}

function set_subcategory_handlers(){

	var elms = document.getElementsByClassName('subcategory_link');
	for(var i=0;i<elms.length;i++){
		Event.observe(elms[i], 'click', subcategory_link_onclick, false);	
	}


}

function set_sortselector_handlers(){

	var elms = document.getElementsByClassName('sort_selector');
	for(var i=0;i<elms.length;i++){
		Event.observe(elms[i], 'click', sortselector_onclick, false);
	}

}

function set_sortselector_unselected(){

	var elms = document.getElementsByClassName('sort_selector');
	for(var i=0;i<elms.length;i++){
		var sb = new TKStringBuffer();
		sb.a('<a href="javascript:void(0);" pid="ss_');
		sb.a(elms[i].attributes['skey'].value);
		sb.a('">');
		sb.a(elms[i].attributes['label'].value);
		sb.a('</a>');
		elms[i].innerHTML = sb.toString();
	}

}

function select_sortselector( id ){

	var span = $( id );
	span.innerHTML = '<b pid="' + id + '">' + span.attributes['label'].value + '</b>';

	$('curr_skey').value = span.attributes['skey'].value;

	return;
}

function sortselector_onclick(evt){

	set_sortselector_unselected();
	
	var e = Event.element(evt);
	select_sortselector( e.attributes['pid'].value );
		
	$('curr_page').value = '1';
	
	if( $('list_type').value == 'category' ){
		refresh_category_list();
	}
	else{
		refresh_subcategory_list();
	}
	
}

function subcategory_link_onclick(evt){

	// Reset Previous State
	set_subcategory_unselected();

	// Set Bold Font
	var e = Event.element(evt);
	var span = $(e.attributes['pid'].value);
	span.innerHTML = '<b pid="' + e.attributes['pid'].value + '">' + span.attributes['name'].value + '</b>';

	// State Values
	$('curr_page').value = '1';
	$('curr_scid').value = span.attributes['scid'].value;
	$('list_type').value = 'subcategory';
		
	refresh_subcategory_list();
}

function refresh_subcategory_list(){

	update_subcategory_list( $('curr_scid').value, $('curr_page').value, $('curr_skey').value );

}


function update_subcategory_list(scid, page, sort){

	new Ajax.Request( 
		'review_get_reviewlist.php',
		{ 
			method: 'POST', 
			parameters: { 
				'subcategory_id': scid,
				'curr_page': page,
				'sort_key' : sort 
			},
			onComplete: function(trans){
			
				show_loadingsign(false);
				set_review_table( trans.responseText );

			} 
		}
	);

}


function update_category_list(cid, page, sort){

	show_navigate_summary(false);
	show_loadingsign(true);

	new Ajax.Request( 
		'review_get_reviewlist.php',
		{ 
			method: 'POST', 
			parameters: { 
				'category_id': cid,
				'curr_page': page,
				'sort_key': sort
			},
			onComplete: function(trans){
				
				set_review_table( trans.responseText );
				
				show_loadingsign(false);
				show_navigate_summary(true);

			} 
		}
	);

}

function set_subcategory_unselected(){

	var elms = document.getElementsByClassName('subcategory_link');
	for(var i=0;i<elms.length;i++){
		elms[i].innerHTML = 
			'<a pid="' + elms[i].attributes['id'].value + '" href="javascript:void(0);">' + elms[i].attributes['name'].value + '</a>';
	}

}

function show_loadingsign(b){
	if(b){
		$('loading_sign').style.display = 'block';
	}
	else{
		$('loading_sign').style.display = 'none';
	}
}

function show_navigate_summary(b){
	if(b){
		$('nav_summary').style.display = 'block';
	}
	else{
		$('nav_summary').innerHTML = '';
		$('nav_summary').style.display = 'none';
	}
}

function tab_onclick(evt) { 

	var e = Event.element(evt);
	
	//
	// Load Reviews in one category 
	//
	
	var cid = e.attributes['cat'].value;
		
	// Reset Previous State
	set_subcategory_unselected();

	// State Values
	$('curr_page').value = '1';
	$('curr_cid').value = cid;
	$('list_type').value = 'category';
	
	refresh_category_list();
	
}   


function set_review_table( responseText ) {

	var reviews = eval('(' + responseText + ')');

	if( reviews.length == 0 ) {
		$('debug_info').innerHTML = 
			'<p><i>このカテゴリにはまだレビューがありません。ぜひ<a href="write_review.php">レビューを書いてみませんか</a>？<br>アカウントをお持ちの方は<a href="signin.php?rf=/review.php">サインイン</a>を、まだお持ちでない方は<a href="signup.php">サインアップ</a>してください!</i></p>';
		return;
	}

	var total_num = 0;
	var sb = new TKStringBuffer();
	var f = new TKFormatter();
	
	sb.a('<table width="100%" border="0" cellspacing="0" cellpadding="4">');

	for(var i=0; i<reviews.length; i++) {
	
		var rv = reviews[i].info;
		var sc = reviews[i].scids;
		var bm = reviews[i].bookmark;
		
		if(!total_num){
			total_num = rv.cnt;
		}
	
		sb.a('<tr style="background-color:#f0f9d0;"><td colspan="2" style="padding-left:10px;"><span class="subtitle">');
		sb.a('<a href="review_item.php?iid=' + rv.item_id + '" class="subtitle_link undec">');		
		sb.a( f.unescapeHTML(rv.item_name) );
		sb.a('</a></span>');
		
		var star_num = Math.floor(rv.rating);
		for(var j=0; j<star_num; j++){
			sb.a('<img src="img/star_100.png" alt="">');
		}
		
		var hasu = rv.rating - star_num;
		if( star_num < 5 ){
			
			star_num++;
			
			if( hasu < 0.2 ){
				sb.a('<img src="img/star_0.png" alt="">');
			}
			else if( hasu < 0.45 ){
				sb.a('<img src="img/star_25.png" alt="">');
			}
			else if( hasu < 0.65 ){
				sb.a('<img src="img/star_50.png" alt="">');
			}
			else {
				sb.a('<img src="img/star_75.png" alt="">');
			}
		}
		
		for(var k=star_num; k<5; k++){
			sb.a('<img src="img/star_0.png" alt="">');
		}
		
		
		
		sb.a(' <b>' + rv.rating + '</b> (' + rv.review_num + ' レビュー)<br>');
		
		var addr = '';
		var b_addr_add = false;
		if( rv.street != null && rv.street.length > 0 ){
			addr += rv.street;
			b_addr_add = true;
		}
		else{
			b_addr_add = false;
		}
		
		if( rv.city != null && rv.city.length > 0 ){
			if(b_addr_add){
				addr += ', ';
			}
			addr += rv.city;
			b_addr_add = true;
		}
		else{
			b_addr_add = false;
		}
		
		if( addr.length > 0 && rv.state != null && rv.state.length > 0 ){
			addr += ', ' + rv.state + ' ' + rv.zip;
		}
		
		if( addr.length > 0 ){
			sb.a('<span class="address">');
			sb.a(addr);
			sb.a('</span>');
		}
		
		sb.a('</td><td align="right" valign="top" style="padding-right:10px;">');
		sb.a('<a href="search.php?q=city:' + encodeURIComponent(rv.city) + '">' + rv.city + '</a>&nbsp;');
		// Bookmark
		sb.a('<a href="javascript:void(0);">');
		sb.a('<img alt="" border="0" src="img/bookmark_');
		sb.a(bm);
		sb.a('.png" title="お気に入りに追加" iid="');
		sb.a(rv.item_id);
		sb.a('" class="add_bm" id="add_bm_');
		sb.a(rv.item_id);
		sb.a('">');
		sb.a('</a>');
		sb.a('<br>');
		sb.a('最新レビュー ' + rv.last_review.toUTCUSDateString() + '</td>');
		
				
		sb.a('</tr>');
		sb.a('<tr><td valign="top" style="padding: 10px; padding-left:0px;">');
		// Picture
		if( rv.pic_name != null ){
			sb.a('<a href="review_item.php?iid=');
			sb.a( rv.item_id );
			sb.a('">');
			sb.a('<img alt="" border="0" src="http://img' + (i%4) + '.isakura.info/' + rv.pic_name + '" title="');
			sb.a( rv.item_name );
			sb.a('の詳細情報">');
			sb.a('</a>');
		}
		else{

			if(rv.category_id == 3 || rv.category_id == 5){
				for(var m=0; m<sc.length; m++){
					sb.a('<a href="review.php?list_type=subcategory&scid=');
					sb.a(sc[m]);
					sb.a('"><img src="img/cid_');
					sb.a(rv.category_id);
					sb.a('_');
					sb.a(sc[m]);
					sb.a('_s.png" alt="" border="0"></a>');
				}
			}
			else{
				sb.a('<img src="img/cid_');
				sb.a(rv.category_id);
				sb.a('_s.png" alt="" border="0">');
				
			}
			 
			//sb.a('<span style="color:#333;padding:4px;"><i>残念ながらまだ写真がありません。<br><a  style="color:#00a;" href="write_review.php?iid=' + rv.item_id + '">レビューを書いて、お手元の写真をアップロード</a>してください!</i></span>');

		}
		sb.a('</td><td valign="top" style="padding:10px;">');
		sb.a('<div class="useful_review_ph" id="ur_' + rv.item_id + '" iid="' + rv.item_id + '"></div>');
		sb.a('</td>');
		sb.a('<td nowrap="nowrap" valign="top"><table><tr><td valign="top" align="center"><table id="ratetbl" style="width:150px;" cellspacing="1">');
		var vote_num = parseInt(rv.rate_0) + parseInt(rv.rate_1) 
			+ parseInt(rv.rate_2) + parseInt(rv.rate_3) 
			+ parseInt(rv.rate_4) + parseInt(rv.rate_5);

		sb.a('<tr><td colspan="3"><b>カスタマー投票得点</b><br>(<b>全 ' + vote_num + ' 票</b>)</a></td></tr>');
		sb.a('<tr><td align="right">5点</td><td style="background:#eec;" align="left"><div style="width:' + (vote_num == 0 ? '0' : Math.floor((rv.rate_5*98.0)/vote_num)) + 'px;background-color:#ffcc66;">&nbsp;</div></td><td>(' + rv.rate_5 + ')</td></tr>');
		sb.a('<tr><td align="right">4点</td><td style="background:#eec;" align="left"><div style="width:' + (vote_num == 0 ? '0' : Math.floor((rv.rate_4*98.0)/vote_num)) + 'px;background-color:#ffcc66;">&nbsp;</div></td><td>(' + rv.rate_4 + ')</td></tr>');
		sb.a('<tr><td align="right">3点</td><td style="background:#eec;" align="left"><div style="width:' + (vote_num == 0 ? '0' : Math.floor((rv.rate_3*98.0)/vote_num)) + 'px;background-color:#ffcc66;">&nbsp;</div></td><td>(' + rv.rate_3 + ')</td></tr>');
		sb.a('<tr><td align="right">2点</td><td style="background:#eec;" align="left"><div style="width:' + (vote_num == 0 ? '0' : Math.floor((rv.rate_2*98.0)/vote_num)) + 'px;background-color:#ffcc66;">&nbsp;</div></td><td>(' + rv.rate_2 + ')</td></tr>');
		sb.a('<tr><td align="right">1点</td><td style="background:#eec;" align="left"><div style="width:' + (vote_num == 0 ? '0' : Math.floor((rv.rate_1*98.0)/vote_num)) + 'px;background-color:#ffcc66;">&nbsp;</div></td><td>(' + rv.rate_1 + ')</td></tr>');
		sb.a('<tr><td align="right">0点</td><td style="background:#eec;" align="left"><div style="width:' + (vote_num == 0 ? '0' : Math.floor((rv.rate_0*98.0)/vote_num)) + 'px;background-color:#ffcc66;">&nbsp;</div></td><td>(' + rv.rate_0 + ')</td></tr>');
		sb.a('<tr><td><img src="img/1.gif" width="30" height="1"></td><td><img src="img/1.gif" width="100" height="1" alt=""></td></tr></table>');
		sb.a('</td></tr></table></td></tr>');
	
	}


	sb.a('<tr><td colspan="3"><hr noshade="noshade" size="1"><br></td></tr>');
	
	// Page Navigator
	
	var total_page = Math.ceil( parseFloat(total_num)/10.0 );
	var curr_page = parseInt($('curr_page').value);
	
	if( total_page > 1 ) {
		sb.a('<tr><td colspan="3" align="center">');
		if( curr_page > 1 ){
			sb.a('<a class="page_navi" href="javascript:void(0);" page="' + (curr_page - 1) + '">前へ</a>&nbsp;&nbsp;');
		}
		for(var i=1;i<=total_page;i++){
			if( i == curr_page ){
				sb.a('<b>' + i + '</b>&nbsp;&nbsp;');
			}
			else{
				sb.a('<a class="page_navi" href="javascript:void(0)" page="' + i + '">' + i + '</a>&nbsp;&nbsp;');
			}
		}
		if( curr_page < total_page ){
			sb.a('<a class="page_navi" href="javascript:void(0);" page="' + (curr_page + 1) + '">次へ</a></tr>');
		}
	}
	
	// Navigate Summary
	// cnt 
	var nssb = new TKStringBuffer();
	
	nssb.a( '全 <b>' + total_num + '</b> 件中 ' );
	nssb.a( '<b>' );
	nssb.a( 10 * ( curr_page - 1 ) + 1 );
	nssb.a( '</b> ～ <b>' );
	
	if ( curr_page == total_page ){
		nssb.a( total_num );
	}
	else{
		nssb.a( curr_page * 10 );
	}
	
	nssb.a( ' </b>件' );
	
	$('nav_summary').innerHTML = nssb.toString();
	
	
	sb.a('<tr><td colspan="3">(注意) 口コミ投稿はあくまでも個人の主観的な感想です。個人差がありますので、ひとつの参考情報としてご活用ください。</td></tr>');
	sb.a('<tr><td><img src="img/1.gif" width="200" height="1" alt=""></td><td><img src="img/1.gif" width="350" height="1" alt=""></td><td><img src="img/1.gif" width="200" height="1" alt=""></td></tr>');

	sb.a('</table>');
	
	$('debug_info').innerHTML = sb.toString();
	
	set_page_navi_handlers();
	set_useful_comments();
	set_addbm_handlers();
	
	return;
}


function set_addbm_handlers(){

	var elms = document.getElementsByClassName('add_bm');
	for(var i=0; i<elms.length; i++){
		Event.observe(elms[i], 'click', addbm_onclick, false);
	}

}


function addbm_onclick(evt){

	var e = Event.element(evt);
	var iid = e.attributes['iid'].value;

	// Add or Delete?	
	if( e.src.search(/_off.png/) != -1 ){
		add_bookmark(iid);
	}
	else if ( e.src.search(/_on.png/) != -1 ){
		delete_bookmark(iid);
	}
	else{
		if(confirm('お気に入り機能を利用するためにはユーザー登録 (無料) が必要です。ユーザー登録済みの方はサインインしてください。\n\nまだ登録していない方は、今すぐサインアップしてください！ユーザー登録ページを表示しますか？')){
			document.location = 'signup.php';
		}
		return;
	}

}


function add_bookmark(iid){
	new Ajax.Request( 
		'add_bm.php',
		{ 
			method: 'GET', 
			parameters: { 
				'addbm': iid
			},
			onComplete: function(trans){
				if(trans.responseText != '0'){
					var elm = $('add_bm_' + trans.responseText);
					elm.src = 'img/bookmark_on.png';
				}
			} 
		}
	);
}

function delete_bookmark(iid){
	new Ajax.Request( 
		'add_bm.php',
		{ 
			method: 'GET', 
			parameters: { 
				'delbm': iid
			},
			onComplete: function(trans){
				if(trans.responseText != '0'){
					var elm = $('add_bm_' + trans.responseText);
					elm.src = 'img/bookmark_off.png';
				}
			} 
		}
	);
}


function set_useful_comments(){

	var elms = document.getElementsByClassName('useful_review_ph');
	for(var i=0;i<elms.length;i++){
		post_useful_review_req( elms[i].id, elms[i].attributes['iid'].value );
	}

}


function post_useful_review_req( elm_id, item_id){

	new Ajax.Request( 
		'review_get_useful_review.php',
		{ 
			method: 'POST', 
			parameters: { 
				'elm_id': elm_id,
				'item_id': item_id 
			},
			onComplete: function(trans){
				set_useful_reviews( trans.responseText );

			} 
		}
	);

}


function set_useful_reviews( responseText ){
	
	var r = eval('(' + responseText + ')');
	var elm_id = r.elm_id;
	var reviews = r.reviews;
	
	var sb = new TKStringBuffer();
	var f = new TKFormatter();
	
	for(var i=0; i<reviews.length; i++){
		if(i){
			sb.a('<br><br>');
		}
		
		var s = reviews[i].review;
		s = f.unescapeHTML(s);
		s = f.toabc(s);
		
		if(s.length > 100){
		
			s = s.substring(0,100);
			s += '...';
		
		}
		
		s += '<a href="review_item.php?iid=' + reviews[i].item_id + '"><span style="color:#aaa;" class="undec">続きを読む</span></a>';
				
		sb.a( s );
		sb.a('<br><div style="color:#999;" align="left">');
		sb.a('レビュー by <a href="search.php?q=reviewer:' + encodeURIComponent(reviews[i].nickname) + '">' + reviews[i].nickname + '</a>' );
		sb.a(' (' + reviews[i].create_date.toUTCUSDateString() + ')</div>' );
	}
	
	$(elm_id).innerHTML = sb.toString();
	
}


function set_page_navi_handlers(){
	
	var elms = document.getElementsByClassName('page_navi');
	for(var i=0; i<elms.length; i++){
		Event.observe(elms[i], 'click', page_navi_onclick, false);
	}

}

function refresh_category_list(){

	update_category_list($('curr_cid').value, $('curr_page').value, $('curr_skey').value);

}

function page_navi_onclick(evt){

	var e = Event.element(evt);
	$('curr_page').value = e.attributes['page'].value;
	
	if($('list_type').value == 'category'){
		refresh_category_list();
	}
	else{
		refresh_subcategory_list();
	}

	document.location = '#top_logo';
}
