(function($){
	
	//-----------------------------------------------------
	// params
	//-----------------------------------------------------
	
	var html = {
		'gnmd': [
			'<div id="megadropdown">',
				'<div id="gnmd-wrap"></div>',
			'</div>'
		].join(''),
		
		'products': [
'<div class="gnmd-products">',
	'<div class="title"><a href="/products/"><img src="/cmn/img/megadropdown/txt_gnmd_products.gif" class="imgover" alt="製品・サービス トップページ" /></a></div>',
	'<div class="content">',
		'<div class="block-1">',
			'<ul class="menu">',
				'<li><a href="/products/recommend/">おすすめ製品・サービス</a></li>',
				'<li><a href="/products/other-enterprise/">その他事業</a>',
					'<ul>',
						'<li><a href="/hiramekids/">ひらめきッズ スタジオ</a></li>',
						'<li><a href="http://www.kokuyo-st.co.jp/stationery/hirameki/index.html" target="_blank">ひらめき商品 <span><img width="11" height="9" alt="（外部サイトへのリンク）" src="/cmn/img/icon_exterior.png"></span></a></li>',
					'</ul>',
				'</li>',
				'<li><a href="/products/rd/">製品開発ストーリー</a></li>',
				'<li><a href="/products/pickup/">ピックアップ・コクヨ</a></li>',
			'</ul>',
		'</div>',
		'<div class="block-2">',
			'<p class="bnr"><a href="http://www.kokuyo-st.co.jp/stationery/" onclick="_gaq.push([\'_trackPageview\',\'http://www.kokuyo-st.co.jp/stationery/\']);" target="_blank"><img src="/cmn/img/megadropdown/btn_gnmd_products_stationery.jpg" width="300" height="80" class="imgover" alt="コクヨの文具　コクヨ S&amp;T 株式会社"/></a></p>',
			'<p class="bnr_b"><a href="http://dl.kokuyo.co.jp/digicata/2012/stationery/index.html" class="win_webcatalog_s" target="_blank"><img src="/cmn/img/megadropdown/btn_gnmd_products_stationery_webcatalog.gif" width="300" height="27" class="imgover" alt="文具のカタログを見る（外部サイト）"/></a></p>',
			'<p class="bnr"><a href="http://www.kokuyo-furniture.co.jp/" onclick="_gaq.push([\'_trackPageview\',\'http://www.kokuyo-furniture.co.jp/\']);" target="_blank"><img src="/cmn/img/megadropdown/btn_gnmd_products_furniture.jpg" width="300" height="80" class="imgover" alt="コクヨの家具 コクヨファニチャー株式会社" /></a></p>',
			'<p class="bnr_b last_bnr_b"><a href="http://dl.kokuyo.co.jp/digicata/2012/furniture/" class="win_webcatalog_f" target="_blank"><img src="/cmn/img/megadropdown/btn_gnmd_products_furniture_webcatalog.gif" width="300" height="27" class="imgover" alt="家具のカタログを見る（外部サイト）"/></a></p>',
		'</div>',
		'<div class="block-3">',
			'<p class="bnr_s"><a href="/products/recommend/20120201_1.html"><img src="/cmn/img/megadropdown/btn_gnmd_products_harinacscompact.jpg" class="imgover" alt="ハリナックス（コンパクト）" /></a></p>',
			'<p class="bnr_s"><a href="/products/recommend/20120201_2.html"><img src="/cmn/img/megadropdown/btn_gnmd_products_airfort2.jpg" class="imgover" alt="オフィスチェアー AIRFORT" /></a></p>',
			'<p class="bnr_s last_bnr_s"><a href="/products/recommend/20120201_3.html"><img src="/cmn/img/megadropdown/btn_gnmd_products_myphotocampus.jpg" class="imgover" alt="マイフォトキャンパス" /></a></p>',
		'</div>',
	'</div>',
'</div>'
		].join(''),
		
		'creative': [
'<div class="gnmd-creative">',
	'<div class="title"><a href="/creative/"><img src="/cmn/img/megadropdown/txt_gnmd_creative.gif" class="imgover" alt="もっとクリエイティブ トップページ" /></a></div>',
	'<div class="content">',
		'<div class="block-1">',
			'<ul class="menu">',
				'<li><a href="/chronicle/">コクヨ クロニクル</a></li>',
				'<li><a href="/ashita_note/">明日のノート</a></li>',
				'<li><a href="/award/award2011/j/">KOKUYO DESIGN AWARD 2011</a></li>',
				'<li><a href="/creative/ecooffice/">エコライブオフィス</a></li>',
				'<li><a href="/creative/ud/">ユニバーサルデザイン</a></li>',
				'<li><a href="/creative/worksight/">WORKSIGHT</a></li>',
			'</ul>',
		'</div>',
		'<div class="block-2">',
			'<p class="bnr"><a href="/creative/ecooffice/"><img src="/cmn/img/megadropdown/btn_gnmd_creative_ecooffice.jpg" class="imgover" alt="エコライブオフィエス品川　CO2削減と創造性向上の実験オフィス" /></a></p>',
			'<p class="bnr last_bnr"><a href="/creative/ud/"><img src="/cmn/img/megadropdown/btn_gnmd_creative_ud.jpg" class="imgover" alt="ユニバーサルデザイン　いろんな文房具をもっと使いやすく" /></a></p>',
		'</div>',
		'<div class="block-3">',
			'<p class="bnr last_bnr"><a href="/ashita_note/"><img src="/cmn/img/megadropdown/btn_gnmd_creative_ashita_note.jpg" class="imgover" alt="明日のノート Project" /></a></p>',
		'</div>',
	'</div>',
'</div>'
		].join(''),
		
		'csr': [
'<div class="gnmd-csr">',
	'<div class="title"><a href="/csr/"><img src="/cmn/img/megadropdown/txt_gnmd_csr.gif" class="imgover" alt="社会・環境活動 トップページ" /></a></div>',
	'<div class="content">',
		'<div class="block-1">',
			'<ul class="menu">',
				'<li><a href="/csr/topics/">CSRトピックス</a></li>',
				'<li><a href="/csr/data.html">主要グラフ</a></li>',
				'<li><a href="/csr/materiality.html">マテリアリティ</a></li>',
				'<li><a href="/csr/message/">トップ対談</a></li>',
				'<li><a href="/csr/group/">コクヨグループのCSR</a></li>',
				'<li><a href="/csr/commit/">CSR 5つのお約束</a></li>',
			'</ul>',
		'</div>',
		'<div class="block-2">',
			'<ul class="menu">',
				'<li><a href="/csr/report/">CSR報告</a></li>',
				'<li><a href="/csr/yui/">結の森</a></li>',
				'<li><a href="/csr/ecox/">エコバツへの取り組み</a></li>',
			'</ul>',
			'<p class="bnr last_bnr"><a href="/csr/report/download/pdf/2011csr.pdf"><img src="/cmn/img/megadropdown/btn_gnmd_csr_digest.jpg" class="imgover" alt="コクヨグループのCSR報告書 2011ダイジェスト 9.4MB" /></a></p>',
		'</div>',
		'<div class="block-3">',
			'<p class="bnr"><a href="/csr/yui/"><img src="/cmn/img/megadropdown/btn_gnmd_csr_yui.jpg" class="imgover" alt="結の森 地球環境問題に対する取り組み" /></a></p>',
			'<p class="bnr last_bnr"><a href="/csr/ecox/"><img src="/cmn/img/megadropdown/btn_gnmd_csr_ecox.jpg" class="imgover" alt="エコバツへの取り組み コクヨ独自の「エコバツマーク活動」" /></a></p>',
		'</div>',
	'</div>',
'</div>'
		].join(''),
		
		'com': [
'<div class="gnmd-com">',
	'<div class="title"><a href="/com/"><img src="/cmn/img/megadropdown/txt_gnmd_com.gif" class="imgover" alt="企業情報 トップページ" /></a></div>',
	'<div class="content">',
		'<div class="block-1">',
			'<ul class="menu">',
				'<li><a href="/com/info/">会社案内</a>',
					'<ul>',
						'<li><a href="/com/info/message.html">ごあいさつ</a></li>',
						'<li><a href="/com/info/brand.html">企業理念</a></li>',
						'<li><a href="/com/info/brandmessage.html">ブランドメッセージ</a></li>',
						'<li><a href="/com/info/kihonjoho.html">基本情報</a></li>',
						'<li><a href="/com/info/group.html">コクヨグループ一覧</a></li>',
						'<li><a href="/com/info/enkaku.html">沿革</a></li>',
						'<li><a href="/com/info/business/">事業概要</a></li>',
						'<li><a href="/com/info/rdi/">コクヨの研究開発</a></li>',
					'</ul>',
				'</li>',
			'</ul>',
		'</div>',
		'<div class="block-2">',
			'<ul class="menu">',
				'<li><a href="/com/base/">国内外拠点</a></li>',
				'<li><a href="/com/press/">プレスリリース</a></li>',
				'<li><a href="/com/recruit/">採用情報</a></li>',
				'<li><a href="/com/showroom/">ショールーム</a></li>',
				'<li><a href="/com/liveoffice/">ライブオフィス</a></li>',
				'<li><a href="/com/hall/">コクヨホール</a></li>',
			'</ul>',
		'</div>',
		'<div class="block-3">',
			'<p class="bnr"><a href="/com/recruit/"><img src="/cmn/img/megadropdown/btn_gnmd_com_recruit.jpg" class="imgover" alt="採用情報 コクヨグループの採用情報です" /></a></p>',
			'<p class="bnr last_bnr"><a href="/com/showroom/"><img src="/cmn/img/megadropdown/btn_gnmd_com_showroom.jpg" class="imgover" alt="ショールーム 空間デザインのヒントがここにあります" /></a></p>',
		'</div>',
	'</div>',
'</div>'
		].join(''),
		
		'ir': [
'<div class="gnmd-ir">',
	'<div class="title"><a href="/ir/"><img src="/cmn/img/megadropdown/txt_gnmd_ir.gif" class="imgover" alt="株主・投資家情報 トップページ" /></a></div>',
	'<div class="content">',
		'<div class="block-1">',
			'<ul class="menu">',
				'<li><a href="/ir/news/">IRニュース</a></li>',
				'<li><a href="/ir/strategy/">経営方針</a></li>',
				'<li><a href="/ir/financial/">財務ハイライト</a></li>',
				'<li><a href="/ir/shareholder/">株式情報</a></li>',
			'</ul>',
		'</div>',
		'<div class="block-2">',
			'<ul class="menu">',
				'<li><a href="/ir/bond/">社債・格付け</a></li>',
				'<li><a href="/ir/library/">IRライブラリー</a></li>',
				'<li><a href="/ir/schedule/">IRスケジュール</a></li>',
				'<li><a href="/ir/faq/">よくあるご質問</a></li>',
			'</ul>',
		'</div>',
		'<div class="block-3">',
			'<ul class="menu">',
				'<li><a href="/ir/contact/">お問い合わせ</a></li>',
				'<li><a href="/ir/clause/">免責条項</a></li>',
			'</ul>',
		'</div>',
	'</div>',
'</div>'
		].join(''),
		
		'faq': [
'<div class="gnmd-faq">',
	'<div class="title"><a href="/faq/"><img src="/cmn/img/megadropdown/txt_gnmd_faq.gif" class="imgover" alt="お問い合わせ トップページ" /></a></div>',
	'<div class="content">',
		'<div class="block-1">',
			'<ul class="menu">',
				'<li><a href="/faq/before/">お問い合わせの前にご確認ください</a>',
					'<ul>',
						'<li><a href="/faq/before/repair.html">修理・部品交換について</a></li>',
						'<li><a href="/faq/before/flow.html">サービスサポートの流れ</a></li>',
						'<li><a href="/faq/before/duplicatekey.html">デスク・キャビネット・ロッカー・金庫などの合鍵作成について</a></li>',
					'</ul>',
				'</li>',
				'<li><a href="/faq/faq.html">よくあるお問い合わせ</a></li>',
				'<li><a href="/faq/koe/">お客様の声を活かしました</a></li>',
			'</ul>',
		'</div>',
		'<div class="block-2">',
			'<p class="title">メールでのご相談・お問い合わせ</p>',
			'<p class="text">土・日・祝日・年末年始・夏季休暇期間は翌営業日以降の対応となりますのでご了承ください。<br />メールでのお問い合わせに関しましては、回答をお電話でさせていただく場合や、お問い合わせの内容によっては回答をさしあげるのにお時間をいただくこともございます。</p>',
			'<p class="caption caption_ic">※</p><p class="caption">お客様相談室は、コクヨグループ各社から委託を受け、コクヨ（株）にて運営しております。お問い合わせ頂いた内容は担当の会社に連絡し対応させていただきます。</p>',
			'<div class="faq_menu">',
				'<p class="btn_faq"><a href="/faq/privacy1.html"><img src="/cmn/img/megadropdown/btn_gnmd_faq_stationery.gif" class="imgover" alt="文具について ご相談・お問い合わせ" /></a></p>',
				'<p class="btn_faq"><a href="/faq/privacy2.html"><img src="/cmn/img/megadropdown/btn_gnmd_faq_furniture.gif" class="imgover" alt="家具について ご相談・お問い合わせ" /></a></p>',
				'<p class="btn_faq btn_last"><a href="/faq/privacy3.html"><img src="/cmn/img/megadropdown/btn_gnmd_faq_other.gif" class="imgover" alt="その他について ご相談・お問い合わせ" /></a></p>',
			'</div>',
		'</div>',
	'</div>',
'</div>'
		].join(''),
		
		'close': [
'<div id="gnmd-close">',
	'<a href="javascript:void(0);"><img src="/cmn/img/megadropdown/btn_close.png" alt="Close" /></a>',
'</div>'
		].join('')
	};
	
	var selector = {
		'gn'  : '#global-navi',
		'gnmd': '#header > .wrap > #megadropdown',
		'gnmdw': '#header > .wrap > #megadropdown > #gnmd-wrap',
		'gnmdx': '#header > .wrap > #megadropdown > #gnmd-close',
		'area_in': '#global-navi li:not(:first), #header > .wrap > #megadropdown',
		'area_out': '#global-navi, #header > .wrap > #megadropdown',
		'area_out2': '#global-navi li:first',
		'area_sp_click': '#global-navi li:not(:first)',
		'area_sp_close': '#header > .wrap > #megadropdown > #gnmd-close > a'
	};
	
	var inWait = 400; // msec
	var outWait = 10; // msec
	var slideWait = 200; // msec
	
	var slideSpan = 300; // px
	var slideTime = 500; // msec
	
	var visibleStyle = { position:'relative', left:'0px', top: '0px', display: 'block', opacity: 1 };
	var hiddenStyle  = { position:'absolute', left:'-9999px', top: '-9999px', display: 'block', opacity: 0 };
	var readyLeftStyle = { position: 'relative', left: '-' + slideSpan + 'px', top: '0px', display: 'block', opacity: 0 };
	var readyRightStyle = { position: 'relative', left: slideSpan + 'px', top: '0px', display: 'block', opacity: 0 };
	var visibleAniStyle = { left: '0px', opacity: '1' };
	
	var $gn, $gnmdw, $gnmd, $gnmdw, $gnmdx;
	var gnHeight;
	var inTimer, outTimer;
	var openFlag = false;
	var current;
	
	$(function(){
		init();
	});
	
	
	//-----------------------------------------------------
	// functions
	//-----------------------------------------------------
	
	// initialize
	function init() {
		$gn = $( selector[ 'gn' ] );
		if($gn.length == 0) return false;
		
		gnHeight = 0;
		$gn.after( html[ 'gnmd' ] );
		
		$gnmd = $( selector[ 'gnmd' ] );
		$gnmd.css({
			'overflow': 'auto',
			'top'     : getTopNumber
		});
		
		$gnmdw = $( selector[ 'gnmdw' ] );
		$gnmdw.append( html[ 'products' ] );
		$gnmdw.append( html[ 'creative' ] );
		$gnmdw.append( html[ 'csr' ] );
		$gnmdw.append( html[ 'com' ] );
		$gnmdw.append( html[ 'ir' ] );
		$gnmdw.append( html[ 'faq' ] );
		$gnmdw.children().css( hiddenStyle );
		
		if ( smartphone() ) {
			sp_init();
			return;
		}
		
		if(ie6()) {
			$gnmd.css({ width:$(document).width()-23 });
			$(window).bind('resize',function(){
				$gnmd.css( { width: 'auto' });
				setTimeout( function() {
					$gnmd.css( { width: $(document).width()-23 });
				}, 0 );
			});
		}
		
		$(window).bind( 'load', function() {
			$( selector[ 'area_in' ] ).bind('mouseenter', function( _e ){ return onEnterArea( this, _e ); });
			$( selector[ 'area_out' ] ).bind('mouseleave', function( _e ){ return onLeaveArea( this, _e ); });
			$( selector[ 'area_out2' ] ).bind('mouseenter', function( _e ){ return onLeaveArea( this, _e ); });
		});
	}
	
	function onEnterArea( _target, _e ) {
		clearTimeout( inTimer );
		clearTimeout( outTimer );
		
		var wait = ( openFlag ) ? slideWait : inWait;
		
		if ( _target != $gnmd.get(0) ) {
			inTimer = setTimeout( function() { open( _target ); }, wait );
		}
		
		return false;
	}
	
	function onLeaveArea( _target, _e ) {
		clearTimeout( inTimer );
		clearTimeout( outTimer );
		
		outTimer = setTimeout( function() { hideWrap(); }, outWait );
		
		return false;
	}
	
	function open( _target ) {
		var selected = '.gnmd-' + $(_target).attr( 'class' );
		
		if ( ! openFlag ) {
			$gnmdw.
				children( ':not(' + selected + ')' ).css( hiddenStyle ).end().
				children( selected ).css( visibleStyle );
			
			showWrap();
		}
		else if ( current != _target ) {
			slide( current, _target );
		}
		
		current = _target;
	}
	
	function slide( _before, _after ) {
		var $before = $(_before);
		var $after  = $(_after);
		var $beforeContents = $gnmdw.children( '.gnmd-' + $before.attr( 'class' ) );
		var $afterContents  = $gnmdw.children( '.gnmd-' + $after.attr( 'class' ) );
		var left = $beforeContents.offset().left;
		
		if ( $before.offset().left > $after.offset().left ) {
			$beforeContents.stop().
				css({ position:'absolute', left: left }).
				animate( { left: (left + slideSpan) + 'px', opacity: 0 }, slideTime, "easeOutExpo", function(){ $(this).css( hiddenStyle ); } );
			$afterContents.stop().
				css( readyLeftStyle ).
				animate( visibleAniStyle, slideTime, "easeOutExpo" );
		}
		else {
			$beforeContents.stop().
				css({ position:'absolute', left: left }).
				animate( { left: (left - slideSpan) + 'px', opacity: 0 }, slideTime, "easeOutExpo", function(){ $(this).css( hiddenStyle ); } );
			$afterContents.stop().
				css( readyRightStyle ).
				animate( visibleAniStyle, slideTime, "easeOutExpo" );
		}
	}
	
	function showWrap() {
		openFlag = true;
		
		gnHeight = 0;
		$gnmdw.each(function(){
			var h = $(this).innerHeight();
			gnHeight = ( gnHeight > h ) ? gnHeight : h;
		});
		
		if ( $gnmdx && $gnmdx.length > 0 ) {
			gnHeight += $gnmdx.height();
		}
		
		$gnmd.stop()
			.css({visibility:'visible',top:getTopNumber,borderBottomWidth:'1px'})
			.animate( {height:gnHeight}, 450, "easeOutQuart", function(){});
	}
	
	function hideWrap() {
		openFlag = false;
		
		$gnmd.stop().
			animate( {height:0}, 450, "easeOutQuart",function(){
				$(this).css({visibility:'hidden'} );
			});
	}

	// ie6 check
	function ie6() {
		if(this.ie6 !== undefined) return this.ie6;
		if(!jQuery.support.opacity){
			if(!jQuery.support.style){
				if (typeof document.documentElement.style.maxHeight == "undefined") {
					this.ie6 = true;
					return true;
				}
			}
		}
		this.ie6 = false;
		return false;
	}
	function getTopNumber(){
		if( ie6() || ie7() ) return $("#header").outerHeight();
		return $("#header").outerHeight() - $("#header").css("borderTopWidth").replace(/px/,'');
	}

	// ie7 check
	function ie7() {
		if(this.ie7 !== undefined) return this.ie7;
		if(!jQuery.support.opacity){
			if(!jQuery.support.style){
				this.ie7 = true;
				return true;
			}
		}
		this.ie7 = false;
		return false;
	}
	
	
	//-----------------------------------------------------
	// functions(smartphone)
	//-----------------------------------------------------
	
	// smartphone check
	function smartphone() {
		var ua = navigator.userAgent;
		
		if ( ua.match(/iphone/i) || ua.match(/ipod/i) || ua.match(/ipad/i) || ua.match(/android/i) ) {
			return true;
		}
		return false;
	}
	
	// initialize smartphone
	function sp_init() {
		$gnmd.append( html[ 'close' ] );
		$gnmdx = $( selector[ 'gnmdx' ] );
		
		$( selector[ 'area_sp_click' ] ).bind('click', function( _e ){ return onClickSpArea( this, _e ); });
		$( selector[ 'area_sp_close' ] ).bind('click', function( _e ){ return onClickSpClose( this, _e ); });
	}
	
	function onClickSpArea( _target, _e ) {
		if ( _target != $gnmd.get(0) ) {
			open( _target );
		}
		return false;
	}
	
	function onClickSpClose( _target, _e ) {
		hideWrap();
		return false;
	}
	
})(jQuery);

