//マイブックを処理すつオブジェクト

var Book = function() {
	
	var self = this;
	
	this.datas;
	this.data_now;
	this.page_now;
	
	this.allow_list_pointer_y;
	this.allow_book = null;
	
	this.init = function() {
		
		this.allow_book = null;
		$('div#allow_panel').slideUp('fast');
		
		this.setBookAccessButton();
		
		//ブック詳細設定の表示切り替え
		if (this.data_now == "new") {
			this.switchConfigDetail(false);
            this.switchDetailElements(true, "new");
		} else if (this.datas[this.data_now]['book_status'] == 0) {
			this.switchConfigDetail(true);
            this.switchDetailElements(false);
		} else {
			this.switchConfigDetail(false);
            this.switchDetailElements(true);
		}
		
		//ブック設定データをセット
        if (self.data_now == 'new') {
            this.initConfigElements();
        } else {
            this.setConfigElements();
            this.bookAllowList();
        }
		
		ajaxSubmit();
	}
	
	this.selectBook = function(book_id, target) {
		this.setBookAccessButton();
		
		if ($("#mybook_list_" + this.data_now).hasClass('status_online')) {
            $("#mybook_list_" + this.data_now).children('.mybook_list_book_select').attr('class', 'mybook_list_book_on');
        } else {
            $("#mybook_list_" + this.data_now).children('.mybook_list_book_select').attr('class', 'mybook_list_book_off');
        }
		
		this.allow_book = null;
		this.data_now = book_id;
		
		if ($(target).children('.mybook_list_book_on').size() > 0) {
			$(target).children('.mybook_list_book_on').attr('class', 'mybook_list_book_select');
		} else {
			$(target).children('.mybook_list_book_off').attr('class', 'mybook_list_book_select');
		}
		
		this.init();
	}
	
	this.openPanel = function(e) {
		hideSecondFrame('fast');
		
        if ($('#my_book:visible').size() == 0) {
            $('#my_folder').html(myFolderLoadHtml()).show('fast');
        } else {
            $('#my_folder').hide();
        }
        
        $.post('/book/index', {}, function(data){
            pageRedirect(data);
            $('#my_folder').html(data);
            self.myBookComplete();
        });
    }
	
	this.setBookAccessButton = function() {
		if (this.data_now == 'new') {
			$('#mybook_status_new').show();
			$('#mybook_status_on').hide();
            $('#mybook_status_off').hide();
		} else if (this.datas[this.data_now]['book_status'] == '0') {
			$('#mybook_status_new').hide();
            $('#mybook_status_on').hide();
			$('#mybook_status_off').show();
		} else {
			$('#mybook_status_new').hide();
			$('#mybook_status_off').hide();
			$('#mybook_status_on').show();
		}
	}
	
	this.join = function() {
		ajaxFunc("chatBefore");
        $.post('/chat/index',
               {'book_id' : this.data_now,
                'rom'     : '0'},
               function (data) {
                   $('#chat_frame').html(data);
                   ajaxFunc("chatComplete", data, self.data_now);
               });
	}
	
	this.read = function(book_id) {
		if (book_id == undefined) book_id = this.data_now;
        ajaxFunc("chatBefore");
	    $.post('/chat/index',
	           {'book_id' : book_id,
	            'rom'     : '1'},
	           function (data) {
	               $('#chat_frame').html(data);
	               ajaxFunc("chatComplete", data, book_id);
	           });
    }
	
	this.open = function() {
		var title = 'ブックを連載する';
        var content = 'ブックを連載すると、トップページのブックリストに出ます。<br />あなたのプロフィールの「ブック」パネルからもアクセスできます。<br /><br />※公開レベルの範囲に入っている人しか詳細が見れません。<br />※ブックの詳細設定は連載中編集できません。<br />';
        showConfirm(title, content, '/book/open',
                    {'book_id' : this.data_now}, '', 'openComplete');
	}
	
	this.close = function() {
        var title = 'ブックを休載する';
        var content = '参加できなくなります。<br />ブックの詳細設定を編集したい場合、ブックを休載してください。<br /><br />ブックを休載すると、トップページのブックリストから外されます。<br />プロフィールの「ブック」パネルから詳細はアクセスできます。<br /><br />※公開レベルの範囲に入っている人のみ、詳細を見ることが出来ます。<br />';
        showConfirm(title, content, '/book/close',
                    {'book_id' : this.data_now}, '', 'closeComplete');
    }
	
	this.deleteBook = function() {
		var title = 'ブックを削除';
        var content = '一度消したデータは復活することができません。<br />本当にいいのですね！';
        showConfirm(title, content, '/book/delete',
                    {'book_id' : this.book_now}, '', 'deleteComplete');
	}
	
	this.deleteAction = function() {
		if (this.data_now == 'new') {
			if (this.datas.length == 0) {
				$.post('/book/index', {}, function(data){
		            pageRedirect(data);
		            $('#my_folder').html(data);
		            self.myBookComplete();
		        });
			} else {
				for (var key in this.datas) {
					this.data_now = key;
					break;
				}
				var elem = $('#mybook_list_' + this.data_now);
				if ($(elem).children('.mybook_list_book_on').size() > 0) {
		            $(elem).children('.mybook_list_book_on').attr('class', 'mybook_list_book_select');
		        } else {
		            $(elem).children('.mybook_list_book_off').attr('class', 'mybook_list_book_select');
		        }
				this.init();
			}
		} else {
			$.post('/book/delete',
		           {'book_id' : this.data_now},
		           function (data) {
		               pageRedirect(data);
	                   $('#my_folder').html(data);
	                   self.myBookComplete();
		           });
		}
	}
	
	this.changeBg = function() {
		if (this.data_now == "new" || this.datas[this.data_now]['book_status'] == 1) {
			return;
		}
		this.showBgSelectPanel({'book_id' : this.data_now});
	}
	
	this.changeChara = function() {
		$.post('/book/selectchara',{'book_id' : this.data_now},
               function (data) {
                    pageRedirect(data);
                    if (!data) return;
                    
                    $('#pop_frame').html(data);
                    showPopWindow();
                    
                    $('#mybook_select_chara .close_button').bind('click', function() {
                        $('#book_chara_image input[value="all"]').click().change();
                    })
               });
			   
		if ($('#book_chara_image :radio[name="book.update.chara_image"]').val() == 'all') {
            $('#book_chara_image input[value="select"]').click().change();
        }
	}
	
	this.submitCallback = function(id, key, data) {
		if (id != 'new') {
            this.datas[id][key] = data;
	    }
	    
	    switch (key) {
	        
	        case 'book_name':
	            if (id == 'new' && data != '') {
	                $('#my_folder').html(data);
	                this.init();
	            }
	            if (id != 'new' && id == this.data_now) {
	                $('#mybook_list_' + id).children('.mybook_list_book_select').children('p').html(data);
	                $('#book_name input').val(data);
	            }
	            break;
	        
	        case 'book_text':
                if (id == this.data_now) {
					$('#book_text textarea').val(data);
				}
	            break;
	            
	        case 'keyword':
                if (id == this.data_now) {
					$('#book_keyword input').val(data);
				}
	            break;
	            
	        case 'book_public':
                if (id == this.data_now) {
					this.bookAllowList();
				}
	            break;
	    }
	}
	
	this.bookAllowList = function() {
		if (this.datas[this.data_now]['book_public'] == 5) {
	        this.allow_book = this.data_now;
	        $.post('/book/allowlist',
	               {'book_id' : self.data_now,
				    'page_num' : self.page_now},
	               function (data) {
	                    pageRedirect(data);
	                    $('div#allow_panel').html(data);
	                    initMylist();
	                    $('div#allow_panel').slideDown('fast');
	               });
	    } else {
	        $('#allow_panel').slideUp('fast');
	    }
	}
	
	this.myBookComplete = function() {
        this.init();
	}
	
	this.allowListCtrlBefore = function (user) {
		ctrl_panel_list = $(user).parents('.panel').attr('id');
        this.allow_list_pointer_y = $(user).offset().top;
        var ctrl_height = $('#mylist_ctrlpanel').height();
        
        $('#mylist_ctrlpanel').hide('fast', function(){
            var pos = getPanelPos($(this).attr('id'), self.allow_list_pointer_y);
            $(this).css('top', pos + 'px')
                    .show();
        });
    }
	
	this.initConfigElements = function() {
		$('#book_name input').val('');
        $('#book_text textarea').val('');
//          $('#book_category select').val(2);
        $('#mybook_config_bgset_icon img').attr('src', '/img/tab_bgview_noimg.gif' );
        $('#mybook_config_bgset p').html('');
        $('#book_keyword input').val('');
        $('#book_max select').val(5);
        $('#book_public select').val(0);
        $('#book_same :radio[name="book.update.same"][value=0]').attr("checked", 'checked');
        $('#book_original :radio[name="book.update.original"][value=1]').attr("checked", 'checked');
        $('#book_rom :radio[name="book.update.rom"][value=1]').attr("checked", 'checked');
        $('#book_log :radio[name="book.update.log"][value=0]').attr("checked", 'checked');
		
		if (typeof(getMovieName("book_link")) != 'undefined' && typeof(getMovieName("book_link").swfFunc) != 'undefined') {
			getMovieName("book_link").swfFunc('setLinkText', '');
		}
	}
	
	this.setConfigElements = function() {
		$('#book_name input').val(self.datas[self.data_now]['book_name']);
        $('#book_text textarea').val(self.datas[self.data_now]['book_text']);
//          $('#book_category select').val(self.datas[self.data_now]['category_id']);
        $('#mybook_config_bgset_icon img').attr('src', backThumbUrl(this.datas[this.data_now]['set_num'], null, this.datas[this.data_now]['user_id']) );
        $('#mybook_config_bgset_icon p').html(this.datas[this.data_now]['back_name']);
        $('#book_keyword input').val(self.datas[self.data_now]['keyword']);
        $('#book_max select').val(self.datas[self.data_now]['max']);
        $('#book_public select').val(self.datas[self.data_now]['book_public']);
        $('#book_chara_image :radio[name="book.update.chara_image"][value=' + self.datas[self.data_now]['chara_image'] + ']').attr("checked", 'checked');
        $('#book_same :radio[name="book.update.same"][value=' + self.datas[self.data_now]['same'] + ']').attr("checked", 'checked');
        $('#book_original :radio[name="book.update.original"][value=' + self.datas[self.data_now]['original'] + ']').attr("checked", 'checked');
        $('#book_rom :radio[name="book.update.rom"][value=' + self.datas[self.data_now]['rom'] + ']').attr("checked", 'checked');
        $('#book_log :radio[name="book.update.log"][value=' + self.datas[self.data_now]['log'] + ']').attr("checked", 'checked');
        
        if (typeof(getMovieName("book_link")) != 'undefined' && typeof(getMovieName("book_link").swfFunc) != 'undefined') {
            getMovieName("book_link").swfFunc('setLinkText', 'http://' + location.hostname + '/join/' + this.data_now + '/');
        }
	}
	
	this.switchDetailElements = function(bool, type) {
		
		if (type == 'new') {
			$('#book_name input').css('border', '2px solid red');
		} else {
			$('#book_name input').css('border', '1px solid #aaabad');
			$('#book_like_count').html(self.datas[self.data_now]['like_count']);
		}
		
		if (bool) {
			$('#mybook_config_bgset_icon').css('cursor', 'auto');
			$('#book_chara_select_button').css('cursor', 'auto');
		} else {
			$('#mybook_config_bgset_icon').css('cursor', 'pointer');
			$('#book_chara_select_button').css('cursor', 'pointer');
		}
		
		if (type == 'new' || !bool) {
			$('#book_text textarea').attr('disabled', bool);
//          $('#book_category select').attr('disabled', bool);
            $('#book_keyword input').attr('disabled', bool);
			$('#book_public select').attr('disabled', bool);
		}
        
        $('#book_max select').attr('disabled', bool);
        $('#book_chara_image :radio[name="book.update.chara_image"]').attr('disabled', bool);
        $('#book_same :radio[name="book.update.same"]').attr('disabled', bool);
        $('#book_original :radio[name="book.update.original"]').attr('disabled', bool);
        $('#book_rom :radio[name="book.update.rom"]').attr('disabled', bool);
        $('#book_log :radio[name="book.update.log"]').attr('disabled', bool);
	}
	
	this.switchConfigDetail = function(show) {
		if (show) {
			$('#mybook_detail_on').show();
            $('#mybook_detail_off').hide();
		} else {
			$('#mybook_detail_on').hide();
            $('#mybook_detail_off').show();
		}
	}
	
	this.showBgSelectPanel = function(params) {
		$.post('/book/selectbg', params,
	            function (data) {
	                pageRedirect(data);
	                if (!data) return;
					
	                $('#pop_frame').html(data);
	                showPopWindow();
	            });
	}
	
	this.gotoPage = function(page_num) {
		$.post('/book/index',
		      {'page_num' : page_num},
			  function(data){
		          pageRedirect(data);
		          $('#my_folder').html(data);
		          self.myBookComplete();
		      });
	}
	
	this.showLikeList = function(elem) {
		if ($(elem).html() == '0') return;
		showListWindow(user_id, self.data_now, 'book', 0, 'pop');
	}
}

Book.instance = null;

Book.getInstance = function() {
	if (Book.instance == null) {
		Book.instance = new Book();
	}
	return Book.instance;
}

//インスタンスはこれ一個のみ
var book = Book.getInstance();

var BgSelect = function() {
	this.selected_bg;
	
	this.submit = function() {
		var para = new Object();
        para['book_id'] = Book.getInstance().data_now;
        $('#mybook_back_input input:checkbox').each(function(){
            if ( $(this).attr('checked') == true ) {
                para[$(this).attr('name')] = $(this).val();
            } else {
                para[$(this).attr('name')] = 'false';
            }
            
        });
        
        if ( $.trim($('#mybook_back_input input:text').val()) != '' ) {
            para['keyword'] = $.trim($('#mybook_back_input input:text').val());
        }
        
        Book.getInstance().showBgSelectPanel(para);
	}
	
	this.click = function(selected, target) {
        $('div#' + this.selected_bg + '_bg_selecter').attr('class', 'bgimg_set_li');
        $(target).attr('class', 'bgimg_set_li_on')
        this.selected_bg = selected;
	}
	
	this.gotoPage = function(page_num) {
		var para = new Object();
        para['page_num'] = page_num;
        para['book_id'] = Book.getInstance().data_now;
        $('#mybook_back_input input:checkbox').each(function(){
            if ( $(this).attr('checked') == true ) {
                para[$(this).attr('name')] = $(this).val();
            } else {
                para[$(this).attr('name')] = 'false';
            }
        });
        
        if ( $.trim($('#mybook_back_input input:text').val()) != '' ) {
            para['keyword'] = $.trim($('#mybook_back_input input:text').val());
        }
        
        Book.getInstance().showBgSelectPanel(para);
	}
	
	this.select = function() {
		$.post('/book/changebg',
               {'book_id' : Book.getInstance().data_now,
                'back_id' : this.selected_bg,
				'page_num': Book.getInstance().page_now},
               function (data) {
                    pageRedirect(data);
                    if (!data) return;
                    $('#my_folder').html(data);
                    Book.getInstance().init();
					clearPopWindow();
               });
	}
	
	this.cancel = function() {
		clearPopWindow();
	}
}

BgSelect.instance = null;

BgSelect.getInstance = function () {
	if (BgSelect.instance == null) {
		BgSelect.instance = new BgSelect();
	}
	return BgSelect.instance;
}


ajax.openComplete = function (data) {
    if (!data) return;
    Book.getInstance().datas[data]['book_status'] = 1;
    Book.getInstance().setBookAccessButton();
	Book.getInstance().switchDetailElements(true);
	Book.getInstance().switchConfigDetail(false);
	
	var elem = $('#mybook_list_' + Book.getInstance().data_now);
	$('#mybook_list_' + Book.getInstance().data_now).remove();
	elem.addClass('status_online');
	$('#mybook_main_block h1').after(elem);
}

ajax.closeComplete = function (data) {
    if (!data) return;
    Book.getInstance().datas[data]['book_status'] = 0;
    Book.getInstance().setBookAccessButton();
    Book.getInstance().switchDetailElements(false);
	Book.getInstance().switchConfigDetail(true);
	
	var elem = $('#mybook_list_' + Book.getInstance().data_now);
    $('#mybook_list_' + Book.getInstance().data_now).remove();
    elem.removeClass('status_online');
    $('#mybook_main_block h2').after(elem);
}

ajax.deleteComplete = function (data) {
	if (Book.getInstance().data_now == 'new') {
        if (Book.getInstance().datas.length == 0) {
            $.post('/book/index', {}, function(data){
                pageRedirect(data);
                $('#my_folder').html(data);
                Book.getInstance().myBookComplete();
            });
        } else {
            for (var key in Book.getInstance().datas) {
                Book.getInstance().data_now = key;
                break;
            }
            var elem = $('#mybook_list_' + Book.getInstance().data_now);
            if ($(elem).children('.mybook_list_book_on').size() > 0) {
                $(elem).children('.mybook_list_book_on').attr('class', 'mybook_list_book_select');
            } else {
                $(elem).children('.mybook_list_book_off').attr('class', 'mybook_list_book_select');
            }
            Book.getInstance().init();
        }
    } else {
        $.post('/book/delete',
               {'book_id' : Book.getInstance().data_now},
               function (data) {
                   pageRedirect(data);
                   $('#my_folder').html(data);
                   Book.getInstance().myBookComplete();
               });
    }
}

flash.setBookCharaList = function (data) {
    
    $.post('/book/changechara',
           {
            'book_id' : data[0],
            'id_list' : data[1].join(',')
           });
           
    clearPopWindow();
}

flash.closeCharaSelect = function () {
    
    $('#mybook_select_chara .close_button').click();
}

