var channel_ballon_favorite_left = 76; //116
var channel_ballon_favorite_top = 40;

var ChannelBookmark = {};

ChannelBookmark.request = function( form_id, url ) {
	if ( $( 'channel_ballon_favorite' ) ) {
		$( 'channel_ballon_favorite' ).hide();
	}
	var params = Form.serialize( form_id, true );
	new JSONP( url, {
		parameters: params
	} );
}

ChannelBookmark.deleteRequest = function( form_id, url ) {
	var ret = confirm( "お気に入りを解除しますか？" );
	if ( ret == true ) {
		this.request( form_id, url );
	}
}

ChannelBookmark.addOnChangeButtonHide = function( json ) {
	if ( $("bookmark_" + json.channel_id) ) {
		if($("channel_top")){
			//CPページでの挙動
			if(json.status=="succeed"){
				$("bookmark_" + json.channel_id).innerHTML = "<div class='channel_bookmark_message_01'>" + '<a href="/channel">お気に入り</a>に登録しました' + "</div>";
			}else{
				alert("お気に入り登録できませんでした、もう一度試してみてください。");
			}
		}else{
			//CPページ以外に設置されたボタン
			$("bookmark_" + json.channel_id).innerHTML = "<div class='channel_bookmark_message_01'>" + json.message + "</div>";
			setTimeout(function(){
				jQuery("#bookmark_" + json.channel_id).fadeOut(500);
			},3000);
		}
	}
}

ChannelBookmark.addButtonMouseOver = function( channel_id ) {
	if ( $("bookmark_" + channel_id) && $('channel_ballon_favorite') ) {
		var item = $( 'channel_ballon_favorite' );
		var pos = Position.cumulativeOffset( $("bookmark_" + channel_id) );

		Element.setStyle( item, {
			'left' : pos[0] - channel_ballon_favorite_left + 'px', 
			'top' : pos[1] - channel_ballon_favorite_top + 'px',
			'position' : 'absolute',
			'display':'block'
		} );
	}
}

ChannelBookmark.addButtonMouseOut = function( channel_id ) {
	if ( $( 'channel_ballon_favorite' ) ) {
		$( 'channel_ballon_favorite' ).hide();
	}
}

ChannelBookmark.addOnError = function( json ) {
	alert( json.message );
}

ChannelBookmark.deleteOnJumpToTop = function( json ) {
	if(json.status=="failed"){
		alert( json.message );
	}else{
		window.location.replace( "/channel/ch" + json.channel_id );
	}
}

ChannelBookmark.deleteOnError = function( json ) {
	alert( json.message );
}






/*完全非同期化されたバージョン clickイベントにchbookmark.fireを割り当てると使える*/
var chbookmark = {
	fire: function(event){//とにかくボタンを押したとき発火
		event.preventDefault&&event.preventDefault();//イベントのデフォルト動作を止める
		
		var	caller		= jQuery(event.target),
			api_add		= caller.attr("api_add"),
			api_delete	= caller.attr("api_delete"),
			params		= caller.attr("params"),
			delay		= 5000;
		
		//ディレイが終わっていなければ、ディレイ終了時にリクエストを発行するように.please_waitを追加する。
		if(caller.hasClass("cooldown")){
			caller.addClass("loading");//読み込み中状態にする
			caller.append('<span class="please_wait">数秒お待ちください...</span>');
			return false;
		}
		
		/*Ajaxリクエスト発行、ボタン状態変更、ディレイ設定　をする関数*/
		var request = function(){
			var mode		= caller.hasClass("chbookmark_added")?"delete":"add",
				url			= caller.hasClass("chbookmark_added")?api_delete:api_add;
				
			caller.addClass("loading");//読み込み中状態にする
			jQuery.ajax({
				type:"GET", url:url, data:params, cache:false, dataType:"json",
				success: function(data){
					if(data.status=="succeed"){
						if(mode=="add"){
							caller.addClass("chbookmark_added");//お気に入り登録成功
							if(jQuery("#shareMenu").size()>=1){
								toggleShareMenu(true);//共有パネルがあれば開く
							}
						}else{
							caller.removeClass("chbookmark_added");//お気に入り登録解除成功
						}
					}else{
						delay = delay/2; //ディレイを半分にする
						alert(data.message);//とりあえず簡単にエラー出す
					}
					caller.removeClass("loading");//読み込み中状態解除
					
					caller.addClass("cooldown");//ディレイセット
					setTimeout(function(){
						caller.removeClass("cooldown");
						if(caller.find("span.please_wait").size()>=1){//ディレイ中にボタンクリックされると.pleasewaitが付与される
							caller.find("span.please_wait").remove();
							request();//リクエスト発行
						}
					},delay);//ディレイ解除タイマー
				}
			});
		}
		
		request();
		
		return;
		
	}
}
