/**
 * gallery search
 * @author kyosuke
 */

 (function($){
 	var cast, self;
 	$.gallerysearch = {
		init: function(){
			self = this;
			cast = {
				container: $('#contents_gal'),
				searchArea: $('#gs_search'),
				listArea: $('#gs_list'),
				toplink: $('a.gs_toplink'),
				resultItem: $('.table_outline')
			};
			$('#search_box2, #search_box3').show();
			cast.listArea.hide();
			cast.searchArea.find('.gal_box_search a[href^=#]').click(function(e){
				var href = $(this).attr('href').replace('#', '');
				e.preventDefault();
				self.show({
					query: href,
					searchCategory: $(this).parents('.gs_search_box').find('h3:first-child img').attr('alt'),
					searchItem: $(this).text()
				});
				$.gallerysearch.clickFlg = true;
			});
			cast.toplink.click(function(e){
				e.preventDefault();
				self.show({
					mode:'search'
				});
				$.gallerysearch.clickFlg = true;
			});
		},
		show: function(options){
			var settings = $.extend({
				mode: 'list',
				onHide: function(){},
				onShow: function(){},
				query: '',
				searchCategory: '',
				anime: true
			}, options);
			var hideArea, showArea, startHeight; 
			if ('list' === settings.mode) {
				hideArea = cast.searchArea;
				showArea = cast.listArea;
			} else if('search' === settings.mode) {
				hideArea = cast.listArea;
				showArea = cast.searchArea;
			}
			if (settings.anime) {
				startHeight = cast.container.height() + 'px';
				cast.container.css('height', startHeight);
				hideArea.fadeOut(300,function(){
					self.setResult({
						query: settings.query,
						text: '検索結果：' + settings.searchCategory + ' ＞ ' + settings.searchItem
					});
					settings.onHide();
					showArea.fadeIn(300, function(){
						settings.onShow();
					});
					cast.container.css('height', 'auto');
					var nextHeight = cast.container.height();
					cast.container.css('height', startHeight);
					cast.container.animate({
						height: nextHeight + 'px'
					}, 200)

				});
			} else {
				cast.container.css('height', 'auto');
				hideArea.add(showArea).hide();
				settings.onHide();
				showArea.show();
				settings.onShow();
				self.setResult({
					query: settings.query,
					text: '検索結果：' + settings.searchCategory + ' ＞ ' + settings.searchItem
				});
			}

		},
		setResult: function(options){
			var settings = $.extend({
				query: '',
				text: ''
			}, options);
			//console.log(options)
			cast.resultItem.hide()
			if (settings.query) {
				cast.resultItem.filter(':has(.' + settings.query + ')').show();
				$('#gs_searchquery').text(settings.text);
			}
		}
	};
 })(jQuery);

