//マイリスト用イベント（リファクタリング対象）

var online_check_timer; //パトロールタイマー（一分）
var ctrl_panel_list;

//マイリストパネル表示後、関連イベントのロード
function initMylist() {

    //ユーザリストセレクターのキャシュ化
    var user_list_selecter = $("#first_frame .user_list:not(#allow_list .user_list)");
//    user_list_selecter.unbind();
	setListEvent();
	
	checkPanelEmpty();

	//一時リストを表示
	if (show_temp_list == 'true') {
		$('#temp_list').show();
	}
	
	checkOnline();
	if (!online_check_timer) {
        online_check_timer = setInterval("checkOnline()", 60000);
	}
    
    //ユーザリストのドラッグ＆ドロップ
    user_list_selecter.css("cursor","pointer").draggable({
		
		zIndex: 2700,
		revert: 'invalid',
		
		start: function(event, ui){
			$(this).addClass('user_list_drag');
			$(this).children('p').children('a').unbind('click');
			
			$('#mylist_ctrlpanel').hide('fast');
//			hideSecondFrame('fast');
		},
		
		stop: function(event, ui){
            $(this).removeClass('user_list_drag');
			var elem = $(this);
			setTimeout(function(){
				elem.children('p').children('a').click(userListHandler);
			}, 200);
			
        }
		
	});
	
	//閉じてる窓へのドロップはとりあえず禁止
//    $("#first_frame .panel_content:not(#temp_list .panel_content, #chat_list .panel_content), #first_frame .panel_title_off:not(#temp_list .panel_title_off, #chat_list .panel_title_off)").droppable({
    
	$("#first_frame .panel_content:not(#temp_list .panel_content, #chat_list .panel_content)").droppable({
        
		activeClass: 'panel_content_active',
        hoverClass: 'panel_content_hover',
        
		drop: function(event, ui) {
            
			var drop = $(this);
			var owner_top = parseInt(ui.draggable.parent().position().top);
            var from_list = ui.draggable.parent().parent().attr('id');
			var to_list = $(this).parent().attr('id');
//            $(this).addClass('ui-state-highlight');
            
			if ( ui.draggable.parent().parent().attr('id') == 'chat_list' ) {
				//大人の事情で何もしない
			}
            else if ( $(this).attr('class') == 'panel_title_off' || $(this).attr('class') == 'panel_title_off ui-droppable') {
				$(this).parent().children('.panel_content').append(ui.draggable);
			}
			else {
				$(this).append(ui.draggable);
			}
            
            if (from_list != to_list) {
                user_list_selecter.draggable('disable');
                var params = ui.draggable.attr('id').split("_");
				
                jQuery.post('/mylist/add/',
                            {
                                'user_id'   : params[1],
                                'user_type' : params[2],
                                'from'      : from_list,
                                'to'        : to_list,
								'allow_book': Book.getInstance().allow_book
                            }, function(data){
                                pageRedirect(data);
								
								if (from_list != 'chat_list' && to_list != 'allow_list') {
								    ui.draggable.children('img.user_list_icon').remove();
								}

								if (from_list == 'chat_list') {
									
									len = ui.draggable.attr('id').split('_');
									var apend_elem = $('div#chatuser_' + len[1] + '_' + len[2]).clone(true);
									
									if (drop.children('#user_'+len[1]+'_'+ len[2]).size() > 0 || drop.children('#chatuser_'+len[1]+'_'+ len[2]).size() > 0) {
										return;
									}
									drop.prepend(apend_elem);
									if (to_list == 'allow_list' && data != '') {
                                        apend_elem.attr('id', data);
										apend_elem.find('.online_icon').remove();
										to_list = '';
                                    } else {
//										var list = to_list.split('_');
										apend_elem.attr('id', 'user_' + len[1] + '_' +len[2]);
                                        apend_elem.find('.online_icon').each(function(){$(this).attr('id', 'on' + $(this).attr('id'))});
									}
									apend_elem.attr('class', 'user_list').show('fast');
									initMylist();
								}
								else if (from_list == 'temp_list' && to_list != 'allow_list' && $('#temp_list div.user_list').size() == 0) {
									
									$('#temp_list').slideUp('fast');
								}
								
								
								if (to_list == 'fun_list') {
									
									if (data == 'each_other_chara') {
										var icon_html = '<img class="user_list_icon" src="/img/icon_c_userfanlinkmask.gif" alt="funlink_chara" width="21" height="15" hspace="1" />';
									} else if (data == 'each_other') {
										var icon_html = '<img class="user_list_icon" src="/img/icon_c_userfanlink.gif" alt="funlink" width="21" height="15" hspace="1" />';
									} else if (data == 'chara') {
										var icon_html = '<img class="user_list_icon" src="/img/icon_c_userfanmask.gif" alt="fun_chara" width="15" height="15" hspace="1" />';
									} else {
										var icon_html = '<img class="user_list_icon" src="/img/icon_c_userfan.gif" alt="fun" width="15" height="15" hspace="1" />';
									}
									
									if (from_list == 'chat_list') {
										apend_elem.prepend(icon_html);
									} else {
										ui.draggable.prepend(icon_html);
									}
									
								}
								else if (to_list == 'look_list') {
									
									if (data == '0') {
										var icon_html = '<img class="user_list_icon" src="/img/icon_c_userbm.gif" alt="look_chara" width="15" height="15" hspace="1" />';
									} else {
										var icon_html = '<img class="user_list_icon" src="/img/icon_c_userbmmask.gif" alt="look" width="15" height="15" hspace="1" />';
									}
									
									if (from_list == 'chat_list') {
                                        apend_elem.prepend(icon_html);
                                    } else {
                                        ui.draggable.prepend(icon_html);
                                    }
								}
								else if (to_list == 'block_list') {
									
									var icon_html = '<img class="user_list_icon" src="/img/icon_c_userblock.gif" alt="block" width="15" height="15" hspace="1" />';
									if (from_list == 'chat_list') {
                                        apend_elem.prepend(icon_html);
                                        apend_elem.children('.message_icon_a').remove();
									} else {
	                                    ui.draggable.prepend(icon_html);
										ui.draggable.children('.message_icon_a').remove();
									}
								}
								else if (to_list == 'allow_list' && data != '') {
									
									var temp = $('#' + from_list).children('.panel_content');
									
									ui.draggable.clone().css('top', '0px').css('left', '0px')
                                                        .prependTo(temp);
									
									if (data != 'exist') {
										ui.draggable.attr('id', data).css('cursor', 'auto').children('.message_icon_a').remove();
	                                    ui.draggable.children('img.user_list_icon').remove();
	                                    
	                                    ui.draggable.children('p').children('a').removeClass('list_link').attr('id', 'allow_list_'+data)
	                                                .unbind().click(function(){
	//                                                  ajaxFunc("allowListCtrlBefore", "", this);
	                                                    Book.getInstance().allowListCtrlBefore(this);
	                                                    var tem = data.split('_');
	                                                    
	                                                    $.post('/mylist/ctrlpanel',
	                                                           {'list'      : 'allow',
	                                                            'id'        : tem[1],
	                                                            'prof_type' : 'user',
	                                                            'book_id'   : Book.getInstance().allow_book},
	                                                            function(data){
	                                                                $('#mylist_ctrlpanel').html(data);
	                                                                ajaxFunc("myListCtrlComplete", data);
	                                                            });
														return false;
	                                                }).siblings('.online_icon').remove();
									} else {
										ui.draggable.remove();
									}
									initMylist();
			                    }
								
								user_list_selecter = $("#first_frame .user_list:not(#allow_list .user_list)");
								
                                user_list_selecter.draggable('enable');
									
								checkPanelEmpty();
								
                            });
            }
			
			var block_size = parseInt(ui.draggable.parent().position().top) - owner_top;
            var now_top = parseInt(ui.draggable.css('top')) - block_size;
			
            ui.draggable.css('top', now_top + "px")
                        .animate({top: "0px", left: "0px"});
        }
    });
	
	$('#own').unbind().click(function(){
		if ($(this).siblings('.own_contents:visible').size() > 0) {
			$(this).attr('class', 'title_off');
			$(this).siblings('.own_contents').slideUp('normal');
		} else {
			$(this).attr('class', 'title_on');
			$(this).siblings('.own_contents').slideDown('normal');
		}
		
	});
	
}

function checkPanelEmpty() {
	
	//自動閉じる制御はなし
	if ($('#temp_list > .panel_content > .user_list').size() == 0) {
		$('#temp_list').slideUp('fast');
//        $('#temp_list > .panel_content').css('height', '80px');
	}
	
	if ($('#fun_list > .panel_content > .user_list').size() == 0) {
//		closePanel('#fun_list');
        $('#fun_list > .panel_content').css('height', '80px');
	} else {
		$('#fun_list > .panel_content').css('height', 'auto');
	}
    
	if ($('#look_list > .panel_content > .user_list').size() == 0) {
//        closePanel('#look_list');
        $('#look_list > .panel_content').css('height', '80px');
    } else {
        $('#look_list > .panel_content').css('height', 'auto');
    }
	
	if ($('#block_list > .panel_content > .user_list').size() == 0) {
//        closePanel('#block_list');
        $('#block_list > .panel_content').css('height', '80px');
    } else {
        $('#block_list > .panel_content').css('height', 'auto');
    }
	
	if ($('#allow_list > .panel_content > .user_list').size() == 0) {
        $('#allow_list > .panel_content').css('height', '80px');
    } else {
		$('#allow_list > .panel_content').css('height', 'auto');
	}
}

function openPanel(target) {
	var title_selecter = $(target).children('.panel_title_off');
	if (title_selecter.size() == 0) return;
	
	var content_selecter = $(target).children('.panel_content');
	
	title_selecter.removeClass('panel_title_off').addClass('panel_title_on');
	
	if ($(target).attr('id') != 'chat_list' && $(target).attr('id') != 'temp_list' && content_selecter.children('.user_list').size() == 0) {
        content_selecter.css('height', '80px').hide();
    }else {
        content_selecter.css('height', 'auto').hide();
    }
	
	$(target).children(".panel_footer").show();
	if ( isIE7() ) {
		$(target).children(".panel_content").show();
	} else {
		$(target).children(".panel_content").slideDown('fast');
	}
}

function closePanel(target) {
	
    var title_selecter = $(target).children('.panel_title_on');
	if (title_selecter.size() == 0) return;
	
	var content_selecter = $(target).children('.panel_content');
	
	if ( isIE7() ) {
		
		$(target).children(".panel_content, .panel_footer").hide();
		title_selecter.removeClass('panel_title_on').addClass('panel_title_off');
            
        $(target).children('.panel_footer').hide();
        
        if ($(target).attr('id') != 'chat_list' && content_selecter.children('.user_list').size() == 0) {
            content_selecter.css('height', '100px').hide();
        }else {
            content_selecter.css('height', 'auto').hide();
        }
		
	} else {
        
		$(target).children(".panel_content, .panel_footer").slideUp('fast', function() {
        
	        title_selecter.removeClass('panel_title_on').addClass('panel_title_off');
	        
	        $(target).children('.panel_footer').hide();
	        
	        if ($(target).attr('id') != 'chat_list' && content_selecter.children('.user_list').size() == 0) {
	            content_selecter.css('height', '100px').hide();
	        }else {
	            content_selecter.css('height', 'auto').hide();
	        }
	        
//            initMylist();
	    });
	}
	
	
}

function checkOnline() {
	
	var params = new Object();
	$('#first_frame .online_check').each(function(){
		var data = $(this).attr('id').split('_');
		var param = new Object();
		param['user_id'] = data[1];
		param['user_type'] = data[2];
		param['online_public_level'] = data[3];
		params[$(this).attr('id')] = param;
	});
	
    $.post('/mylist/checkonline',
           {'user_data' : $.toJSON(params)},
           function (data) {
                pageRedirect(data);
                if (!data) return;
				
				var user_data = $.parseJSON(data);
				$.each(user_data['online'], function(key, val){
					if (val === 'off') {
						$('#' + key).hide();
						$('#' + key + '_book').unbind().hide();
					} else if (val === '0') {
						$('#' + key).show();
						$('#' + key + '_book').unbind().hide();
					} else {
						$('#' + key).hide();
						$('#' + key + '_book').unbind().bind('click', function(){
							$temp = val.split('_');
							$temp.push('');
							flash.bookInfo($temp);
						}).show();
					}
				});
				
				//一時リストにユーザを挿入
				$.each(user_data['temp_mess'], function(key, val){
					if ($('#' + key).size() > 0) return;
					var data = key.split('_');
					var params = new Object();
					params['user_id'] = data[1];
					params['user_type'] = data[2];
					params['name'] = val;
					
					var temp_panel = $('#temp_list div.panel_content');
					temp_panel.prepend(getTempListHtml(params));
                    initMylist();
				    
				    $('#temp_list').slideDown('fast');
				});
				
				$.each(user_data['mess'], function(key, val){
					
					if (val == '1') {
						$('#' + key).children('a').children('.message_icon').hide();
						$('#' + key).children('a').children('.message_icon_old').show();
					} else if (val == '2') {
						$('#' + key).children('a').children('.message_icon_old').hide();
						$('#' + key).children('a').children('.message_icon').show();
					} else {
						$('#' + key).children('a').children('.message_icon').hide();
						$('#' + key).children('a').children('.message_icon_old').hide();
					}
					
					if ($('#' + key).parents('#block_list').size() > 0) {
                        $('#' + key).children('a').children('.message_icon').hide();
                        $('#' + key).children('a').children('.message_icon_old').hide();
					}
				});
				
           });
}

function getTempListHtml(params) {
    
	var prof_type = params['user_type'] == 0 ? 'user' : 'user_chara';
	
    var html = "";
    
    html += '<div class="user_list" id="user_' + params['user_id'] + '_' + params['user_type'] + '">'
          +      '<a class="message_icon_a" href="" id="mess_icon.'+ params['user_id'] +'.' + prof_type + '">'
          +          '<img src="/img/icon_mail.gif" alt="message_icon" class="message_icon" />'
		  +          '<img src="/img/icon_mail_old.gif" alt="message_icon" class="message_icon_old" />'
          +      '</a>'
          +      '<p class="tab_chara_name">' 
          +           '<a id="temp.' + params['user_id'] + '.' + prof_type + '" class="list_link" href="#">' + params['name'] + '</a>'
		  +           '<img style="display: none;" alt="on" src="/img/icon_online.gif" id="online_' + params['user_id'] + '_' + params['user_type'] + '" class="online_icon">'
          +      '</p>'
          +  '</div>';
    
    return html;
}

//使用していない
function initChatList() {
	
	var html = getListHtml();
	$('div#chat_list div.panel_content').html(html);
	
}

//使用していない
function getListHtml() {
	if (chat_data[owner]) {
		html = '';
		html += '<div class="tab_rtxt_boss chatting_user" id="' + chat_data[owner]['user_id'] + '_' + chat_data[owner]['user_type'] + '_chatter_element">'
              +      '<p class="tab_chatchara_ico_on">'
              +          '<img src="/img/dummy_chara.gif" width="26" height="26" alt="キャラアイコン" />'
              +      '</p>'
              +      '<img src="/img/icon_vol_on.gif" alt="チャットオン" width="15" height="14" align="right" />'
              +      '<img src="/img/icon_follow02.gif" alt="お互いファンなアイコン" width="24" height="14" hspace="5" align="right" />'
              +      '<p class="tab_chatchara_name">' + chat_data[owner]['chara_name'] + '</p>'
              +          '<img src="/img/icon_maneger.gif" alt="アイコン　管理人" width="15" height="15" align="left" />'
              +      '<p class="tab_chatchara_uname">' + chat_data[owner]['name'] + '</p>'
              +  '</div>';
	}
	for (var i in chat_data) {
		if (i != owner) {
			html += '<div class="tab_rtxt_boss chatting_user" id="' + chat_data[owner]['user_id'] + '_' + chat_data[owner]['user_type'] + '_chatter_element">'
	              +      '<p class="tab_chatchara_ico_on">'
	              +          '<img src="/img/dummy_chara.gif" width="26" height="26" alt="キャラアイコン" />'
	              +      '</p>'
	              +      '<img src="/img/icon_vol_on.png" alt="チャットオン" width="15" height="14" align="right" />'
	              +      '<img src="/img/icon_follow02.png" alt="お互いファンなアイコン" width="24" height="14" hspace="5" align="right" />'
	              +      '<p class="tab_chatchara_name">' + chat_data[i]['chara_name'] + '</p>'
	              +      '<p class="tab_chatchara_uname">' + chat_data[i]['name'] + '</p>'
	              +  '</div>';
		}
	}
	
	html += '<div class="panel_footer"></div>';
	
	return html;
}


//リスト内各種イベント
function setListEvent() {
	
	$('#own_status a, #own_status .own_profile').unbind().click(ownListHandler);
	$('#first_frame .list_link').unbind().click(userListHandler);
	$('#first_frame .message_icon_a').unbind().click(messageIconHandler);
	
//	$('#own_book').unbind().click(function(e){
//		if ($('#book_prof:visible').size() > 0) {
//			hideSecondFrame('fast');
//			return false;
//		}
//		
//		ajaxFunc("myBookBefore", "", e.currentTarget);
//		$.post('/book/index', {}, function(data){
//			pageRedirect(data);
//			$('#second_frame').html(data);
//			ajaxFunc("myBookComplete", data);
//		});
//	});
	
	$('#own_character').unbind().click(function(){
		hideSecondFrame('fast');
		
		if ($('#my_chara:visible').size() == 0) {
            $('#my_folder').html(myFolderLoadHtml()).show('fast');
        } else {
            $('#my_folder').hide();
        }
		
		$.post('/character/index', {}, function(data){
            pageRedirect(data);
            $('#my_folder').html(data);
			ajaxFunc("myCharaComplete", data);
        });
	});
	
	$('#own_back').unbind().click(function(){
        hideSecondFrame('fast');
		
		if ($('#my_back:visible').size() == 0) {
			$('#my_folder').html(myFolderLoadHtml()).show('fast');
		} else {
			$('#my_folder').hide();
		}
		
        $.post('/back/index', {}, function(data){
            pageRedirect(data);
            $('#my_folder').html(data);
            initMyBack();
        });
    });
}

//自分パネル
function ownListHandler(e) {
	if ($('#own_prof:visible').size() > 0) {
		hideSecondFrame('fast');
		return false;
	}
	
	var param = $(e.currentTarget).attr('id').split('-');
	
	ajaxFunc("profileBefore", "", e.currentTarget);
	
	$.post('/profile/index',
	       {'id'        : param[1],
		    'prof_type' : param[2]},
		   function(data){
                $('#second_frame').html(data);
                ajaxFunc("profileComplete", data);
		   });
}

function userListHandler(e) {
	if (!$(e.currentTarget).hasClass('list_link')) return;
	
	var param = $(e.currentTarget).attr('id').split('.');
	
	if ($('#ctrl_panel_' + param[1] + '_' + param[2] + ':visible').size() > 0) {
        $('#mylist_ctrlpanel').hide('fast');
        return false;
    }
	if ($('#second_frame_' + param[1] + '_' + param[2] + ':visible').size() > 0) {
        hideSecondFrame('fast', true);
        return false;
    }
	
	ajaxFunc("myListCtrlBefore", "", e.currentTarget);
	
	$.post('/mylist/ctrlpanel',
           {'id'        : param[1],
            'prof_type' : param[2],
			'list'      : param[0]},
           function(data){
                $('#mylist_ctrlpanel').html(data);
                ajaxFunc("myListCtrlComplete", data);
           });
	return false;
}

function messageIconHandler(e) {
	
	var param = $(e.currentTarget).attr('id').split('.');
	var type = param[2] == 'user' ? 0 : 1;
	
	if ($('#message_' + param[1] + '_' + type + ':visible').size() > 0) {
        hideSecondFrame('fast');
        return false;
    }
	
	ajaxFunc("messageBefore", "", e.currentTarget);
	
	$.post('/message/index',
           {'id'        : param[1],
            'prof_type' : param[2]},
           function(data){
                $('#second_frame').html('').append(data);
                ajaxFunc("messageComplete", data);
           });
	return false;
}





//マイリストのコントロールパネル表示前
ajax.myListCtrlBefore = function (data, user) {
//    $('#second_frame').hide('fast');
	hideSecondFrame('fast', true);
	
	$('#my_folder').hide('fast');
    second_frame_pointer_y = $(user).offset().top;
	
	ctrl_panel_list = $(user).parents('.panel').attr('id');
	
	//該当ユーザの隣に表示するよう調整
    var pos = getPanelPos('#mylist_ctrlpanel', second_frame_pointer_y);
	
    $('#mylist_ctrlpanel').hide()
	                      .css('top', pos + 'px')
                          .html(ctrlLoadHtml())
                          .show('fast');
}

//マイリストのコントロールパネル表示後
ajax.myListCtrlComplete = function (data) {
	
//	$('#mylist_ctrlpanel').show('fast');
    $('#mylist_ctrlpanel .ctrl_delete').unbind().click(function() {
		$('#mylist_ctrlpanel').hide('fast');
		
		var param = $(this).attr('id').split('_');
		var list = ctrl_panel_list.split('_');
		var prof_type = param[2] == 0 ? 'user' : 'user_chara';
		
		$.post('/mylist/delete',
		       {
			   	'id'        : param[1],
				'prof_type' : prof_type,
				'book_id'   : param[3],
				'list'      : list[0]
			   }, function (data) {
                    pageRedirect(data);
				    var param = data.split('.');
				    $('#'+param[0]).find('#user_'+param[1]).slideUp('fast', function(e){
				        $(this).remove();
						checkPanelEmpty();
				    })
			   });
		return false;
	});
}

ajax.listDeleteBefore = function () {
	
	$('#mylist_ctrlpanel').hide('fast');
	
}

ajax.listDeleteComplete = function (data) {
	
	var param = data.split('.');
	$('#'+param[0]).find('#user_'+param[1]).slideUp('fast', function(e){
		$(this).remove();
		checkPanelEmpty();
	})
    
}

