/*
======== table of content. =================================

summary:when rollover switch element, show comment element

============================================================
*/

new function() {
	
	var popupClass = 'popup_comment';
	var switchClass = 'switch';
	var commentClass = 'comment';
	
	var animateTime = 400; // msec
	
	$(document).ready( function() {
		init();
	});
	
	/**
	 * 初期化
	 */
	function init() {
		
		var $popup = $( '.' + popupClass );
		
		if ( $popup.length ) {
			
			$popup.
				find( '.' + commentClass ).
					hide().
				end().
				find( '.' + switchClass ).
					mouseover( onMouseOver ).
					mouseout( onMouseOut ).
				end();
		}
	}
	
	
	/**
	 * ロールオーバー時 イベントリスナ
	 */
	function onMouseOver( e ) {
		
		$(this).unbind( 'mouseover', onMouseOver );
		
		var $popup = $( getParentPopup( this ) );
		
		$popup.
			children( '.' + commentClass ).
				show( animateTime, function() {
					var $parent = $( getParentPopup( this ) )
					$parent.
						find( '.' + switchClass ).
							mouseover( onMouseOver );
				}).
			end();
	}
	
	/**
	 * ロールアウト時 イベントリスナ
	 */
	function onMouseOut( e ) {
		
		var $popup = $( getParentPopup( this ) );
		
		$popup.
			children( '.' + commentClass ).
				hide( animateTime ).
			end();
	}
	
	/**
	 * 親となるポップアップの要素を取得
	 */
	function getParentPopup( el ) {
		
		var $parent = $(el).parent();
		
		if ( $parent.hasClass( popupClass ) ) {
			return $parent.get(0);
		}
		else {
			return getParentPopup( $parent.get(0) );
		}
	}
}
