
/**
 * version : 3.1
 * last update : 2014/02/26
 **/

// Namespace
var oimc = oimc || {};

// 全体の基本セッティング
oimc.generalSettings = oimc.generalSettings || {};
oimc.generalSettings.breakPoint = {
	POINT_A: 577,
	POINT_B: 640,
	POINT_C: 767,
	POINT_D: 940
}
oimc.generalSettings.config = {
	CACHE_INVALID: '?' + ( new Date() * 1 ),
	THIS_HREF    : window.location.href,
	TOUCH_SUPPORT : window.ontouchstart === null ? true : false
}

// インクルード関連(大カテゴリや製品によって変わる。下でurl抽出して正規表現で結合している。)
oimc.include = oimc.include || {};
oimc.include.config = {
	SUB_PATH        : 'include/sub.html',
	NAVLOCAL_PATH   : 'include/nav-local.html'
}


$(function(){

	"use strict";

	// ------------------------------------------------------------------------
	// スマホ時のグロナビのメニュー開閉
	// ------------------------------------------------------------------------
	$('#navHeader > .navHdg > a').on( 'click', onMenuBtnClikedHandler );
	$('#navHeader > .navContent > .btnClose >a').on( 'click', onMenuBtnClikedHandler );

	function onMenuBtnClikedHandler( e ) {

		e.preventDefault();

		var $selector   = $('#navHeader');
		var className   = $selector.attr('class');
		var $navContent = $('#navHeader .navContent');

		if( className === "navOpened" ) {

			$navContent.stop()
				.animate({
					opacity: 0,
					height: 'toggle'
				}, {
					duration: 250,
					complete: function(){
						$navContent.css({ display: '', opacity: '' })
						$selector.removeClass('navOpened');
					}
				});

		} else {

			$selector.addClass('navOpened');

			$navContent.css({
				display: 'none',
				opacity: 0 })
				.stop()
				.animate({
					height: 'toggle',
					opacity: 1
				}, {
					duration: 300
				});
		}
	}




	// ------------------------------------------------------------------------
	// スマホ時のサブナビのメニュー開閉
	// (冗長ですが、仕様変更に対応し易くするため、グロナビメニュー開閉のコードとほぼ同じコードを使っています)
	// ------------------------------------------------------------------------
	$('#main > .productHeader > .navBtn > a').on( 'click', onSubMenuBtnClikedHandler );
	$('#main > .productHeader > .navContent > .btnClose > a').on( 'click', onSubMenuBtnClikedHandler );

	function onSubMenuBtnClikedHandler( e ) {

		e.preventDefault();

		var $selector   = $('.productHeader');
		var className   = $selector.attr('class');
		var $navContent = $('.productHeader .navContent');

		if( className.indexOf("navOpened") !== -1 ) {

			$navContent.stop()
				.animate({
					opacity: 0,
					height: 'toggle'
				}, {
					duration: 250,
					complete: function(){
						$navContent.css({ display: '', opacity: '' })
						$selector.removeClass('navOpened');
					}
				});

		} else {

			$selector.addClass('navOpened');

			$navContent.css({
				display: 'none',
				opacity: 0 })
				.stop()
				.animate({
					height: 'toggle',
					opacity: 1
				}, {
					duration: 300
				});
		}
	}


	// ------------------------------------------------------------------------
	// メニューエリアをスクロールできるようにする
	// ------------------------------------------------------------------------
	$(window).resize( subMenuMinHeightController );
	$(window).scroll( subMenuMinHeightController );

	subMenuMinHeightController();

	var contentH =$('.navContent').height();

	function subMenuMinHeightController(){

		$(window).off('resize', subMenuMinHeightController);

		var widowH = 0;

		// HACK: mobileSafariの高さ取得
		if( window.innerHeight ){
			widowH = window.innerHeight;
		} else {
			widowH = $(window).height();
		}

		if( ( widowH - contentH ) < 0 ){
			$('.navContent').css({ overflow:'auto', height:widowH - 52 });
		} else {
			$('.navContent').css({ overflow:'', height: '' });
		}

		setTimeout(function(){
			$(window).on('resize', subMenuMinHeightController);
		}, 30)
	}



	// ------------------------------------------------------------------------
	// スクロールした時にグロナビ追従
	// ------------------------------------------------------------------------
	var $gNavi = $('.productHeader');
	var ptY = 0;
	var gNaviAddFlg = false;

	if( $gNavi.length >= 1){
		ptY = $gNavi.offset().top;
		gNaviAddFlg = false;

		//
		setTimeout(function(){
			gNaviflattery()
		}, 3000);

		setTimeout(function(){
			$(window).scroll( gNaviflattery );
		}, 1000);

	}

	function gNaviflattery(){

		var td  = $(window).scrollTop();

		if ( ptY <= td && !gNaviAddFlg ) {

			gNaviAddFlg = true;

			$gNavi
				.css({ opacity: 0 })
				.clone()
				.addClass('navFixed')
				.insertAfter($gNavi);

			// cloneした要素にaddEvent
			$('.navFixed .navBtn a').on( 'click', onSubMenuBtnClikedHandler );
			$('.navFixed .btnClose a').on( 'click', onSubMenuBtnClikedHandler );

			// タブレット以下はゆっくり見せる
			//if( $(window).width() <= oimc.generalSettings.breakPoint.POINT_B ) {

				$('.navFixed').stop()
					.animate({
						opacity: 1
					},{
						duration: 400
					});
			//} else {
				// $('.navFixed').css({ opacity: 1 });
			//}

			// key Event
			$(document).on('keydown', gNaviKeyboadEventHandler );

			gNaviWidthChange();

		} else if ( ptY >= td && gNaviAddFlg ) {

			gNaviAddFlg = false;
			$('.navFixed > .navBtn a').off( 'click', onSubMenuBtnClikedHandler );
			$('.navFixed > .btnClose a').off( 'click', onSubMenuBtnClikedHandler );

			// タブレット以下はゆっくり見せる
			if( $(window).width() <= oimc.generalSettings.breakPoint.POINT_C ) {

				$('.navFixed').stop()
					.animate({
						opacity: 0
					},{
						duration: 600,
						complete: function(){
							$(this).remove();
						}
					});

				$gNavi.css({ opacity:0 })
					.stop()
					.animate({
						opacity: 1
					},{
						duration: 600
					});

			} else {

				$(document).off('keydown', gNaviKeyboadEventHandler );
				$('.navFixed').remove();
				$gNavi.css({ opacity: '' });

			}
		}
	}

	function gNaviKeyboadEventHandler(e) {

		var keyCode = e.keyCode;

		var flgStr = $(':focus').parents('.navFixed').attr('class');

		if( typeof flgStr !== 'undefined' ){
			return;
		}

		if( keyCode === 9 ){
			e.preventDefault();
			$('.navFixed .firstChild a').focus();

			$(document).off('keydown', gNaviKeyboadEventHandler );
		}

	}




	// ------------------------------------------------------------------------
	// スクロールした時にアンカーナビ追従
	// ------------------------------------------------------------------------

	var $aNavi = $('.navPage01');
	var aNaviAddFlg;
	var aNaviDefaultPtY = 0;
	var aNaviWindowWidth = 0;

	$(window).on('resize', anchorFlatteryResizeHandler );

	function anchorFlatteryResizeHandler(){

		$(window).off('resize', anchorFlatteryResizeHandler);

		if( $aNavi.length === 0 ){
			return
		}

		aNaviEqualizer();
		aNaviDefaultPtY = $aNavi.offset().top;
		aNaviWindowWidth = $(window).width();

		setTimeout(function(){
			$(window).on('resize', anchorFlatteryResizeHandler);
		}, 30);
	}

	function aNaviEqualizer(){

		if( $aNavi.length === 0 ){
			return
		}

		var w = 920;
		var windowW = $(window).width();

		if( windowW <= oimc.generalSettings.breakPoint.POINT_D ){
			w = windowW - 30;
		}

		var $obj = $('.navFixed');

		$obj.css({ width:w });
	}

	function anchorFlatteryPrepare(){

		if( $aNavi.length === 0 ){
			return
		}

		aNaviWindowWidth = $(window).width();
		aNaviDefaultPtY = $aNavi.offset().top;
		aNaviAddFlg = false;

		$('.navPage01 a').on( 'click', pageAnchorScrollFunc );

		//anchorFlattery();
		//$(window).scroll( anchorFlattery );


		setTimeout(function(){
			anchorFlattery()
		}, 3000);

		setTimeout(function(){
			$(window).scroll( anchorFlattery );
		}, 1000);
	}


	function anchorFlattery(){

		// doCheck!
		if( aNaviWindowWidth <= oimc.generalSettings.breakPoint.POINT_C ){
			return
		}

		var td  = $(window).scrollTop();

		if ( aNaviDefaultPtY <= td && !aNaviAddFlg ) {

			aNaviAddFlg = true;

			if( $('.navFixed').length >= 1 ){
				$('.navFixed').remove();
			}

			$aNavi
				.css({ opacity: 0 })
				.clone()
				.addClass('navFixed')
				.insertAfter($aNavi);

			$('.navPage01 > li > a').off( 'click', pageAnchorScrollFunc );
			$('.navFixed > li > a').on( 'click', pageAnchorScrollFunc );

			$('.navFixed').stop()
				.animate({
					opacity:1
				},{
				},{
					duration:600
				});

			aNaviEqualizer();

		} else if ( aNaviDefaultPtY >= td && aNaviAddFlg ) {

			aNaviAddFlg = false;

			$('.navPage01 > li > a').on( 'click', pageAnchorScrollFunc );
			$('.navFixed > li > a').off( 'click', pageAnchorScrollFunc );

			if( oimc.generalSettings.config.TOUCH_SUPPORT ){

				// iPadの場合
				$('.navFixed').stop()
					.animate({
						opacity: 0
					},{
						duration:400,
						complete:function(){
							$('.navFixed').remove();
						}
					});


			}else {
				// PCの場合
				$('.navFixed').remove();
			}


			$aNavi.css({ opacity: '' });
		}
	}


	// クリックで該当箇所へスクロールで移動
	function pageAnchorScrollFunc(e){

		var hrefName = $(e.currentTarget).attr('href');

		// doCheck!
		if( $(window).width() <= oimc.generalSettings.breakPoint.POINT_C ){
			return
		}

		var flg = false;
		if( ua.IE ){

			if( $(window).width() <= oimc.generalSettings.breakPoint.POINT_C ){
				flg = true;
			}

		} else {
			flg = window.matchMedia( "(max-width: 767px)" ).matches;
		}

		if( flg ){
			return;
		}


		if( hrefName == 'undefined' || hrefName == '#' ){
			return;
		}

		if( hrefName.indexOf('#') === -1){
			return
		}

		// 今いるurlのページ内リンクかどうか
		var clickedUrl = hrefName.split(/#.*/)[0];

		if( clickedUrl !== "" && typeof clickedUrl !== "undefined" ){

			var thisUrl = oimc.generalSettings.config.THIS_HREF;
			thisUrl = thisUrl.replace(/https?:\/\/[^\/]+/, '');	// ドメインをトル
			thisUrl = thisUrl.replace(/#.*/, ''); // ハッシュをトル
			thisUrl = thisUrl.replace(/index[0-9]?\.(html|htm)$/, '');	// index.htmlやindex2.htmlがあったらとる


			clickedUrl = clickedUrl.replace(/https?:\/\/[^\/]+/, '');	// ドメインをトル
			clickedUrl = clickedUrl.replace(/index[0-9]?\.(html|htm)$/, '');	// index.htmlやindex2.htmlがあったらとる

			if( thisUrl !== clickedUrl ){
				return
			}

		}


		e.preventDefault();

		// ハッシュのみにする
		hrefName = hrefName.match(/#.*/)[0]

		var $obj = $( hrefName );

		if( $obj.length === 0 ){
			trace(hrefName + ' not fined!');
			return;
		}

		var ptY = $obj.offset().top - 40;

		$('html, body').stop()
			.animate({
				scrollTop: ptY
			}, {
				duration: 800,
				easing: 'easeOutCubic',
				complete: function(){

					// ハッシュ書き換え
					// window.location.hash = '';

				}
			});
	}

	anchorFlatteryPrepare();


























	// ------------------------------------------------------------------------
	// サブナビのwidthを幅に合わせて変える
	// ------------------------------------------------------------------------
	function gNaviWidthChange( flg ){

		var $obj = $('.navFixed');

		if( $obj.length === 0 ){
			return;
		}

		// スマホ時、widthを書き換える
		var w = 920;
		var windowW = $(window).width();

		if( windowW <= oimc.generalSettings.breakPoint.POINT_D ){
			w = windowW - 30;
		}

		$obj.css({ width:w });

		if( flg ){
			setTimeout(function(){
				 $(window).on('resize', gNaviRezieHandler )
			}, 200);
		}

	}


	$(window).on('resize', gNaviRezieHandler )

	function gNaviRezieHandler(){
		$(window).off('resize', gNaviRezieHandler )

		if( $gNavi.length === 0 ){
			return
		}

		ptY = $gNavi.offset().top;
		gNaviflattery();
		gNaviWidthChange( true );
	}

	// ページトップへのスクロール
	$('.navPageTop a').on( 'click', function(e) {

		e.preventDefault();

		var $elem = $('html, body');

		$elem.stop()
			.animate({
				scrollTop: 0
			}, {
				duration: 800,
				easing: 'easeOutCubic'
			});
	});




	// ------------------------------------------------------------------------
	// タブレット以下時のリンクリストのアコーディオン
	// ------------------------------------------------------------------------
	// リンクリストをインクルードしたあとに on を紐づけるため
	// 関数化し、インクルード後にこの関数を実行する
	function bindLinkListAccordion() {

		if( $('body > .navLocal').length === 0 ){
			return
		}

		$('.col > ul > li > a').on( 'click', linkListAccordion);
	}

	function linkListAccordion( e ){

		// windowSize check
		var dw = $(window).width();
		if( dw > oimc.generalSettings.breakPoint.POINT_C ){
			return;
		}

		// サブメニュー有無 check
		if( !$(this).parent().find('ul')[0] ) {
			return;
		}

		e.preventDefault();

		var $selector = $(this).parent('li');
		var className = $selector.attr('class');

		if( className === 'open' ){

			$selector.find('ul li')
				.stop()
				.animate({
					height: 'toggle'
				}, {
					duration: 200,
					complete: function(){
						$(this).css({ display: '' })
						$selector.removeClass('open');
					}
				});

		} else {

			$selector.addClass('open')
				.find('ul li')
				.stop()
				.css({ display: 'none' })
				.animate({
					height: 'toggle'
				}, {
					duration: 250
				});
		}

	}









	// ------------------------------------------------------------------------
	// subNavのカレント表示
	// ------------------------------------------------------------------------
	function subNavAddCurrent(){

		var thisUrl = oimc.generalSettings.config.THIS_HREF;
		thisUrl = thisUrl.replace(/https?:\/\/[^\/]+/, '');	// ドメインをトル
		thisUrl = thisUrl.replace(/#.*/, '');	// ハッシュをトル
		thisUrl = thisUrl.replace(/index?\.(html|htm)$/, '');	// index.htmlやindex2.htmlがあったらとる

		var $subNav = $('.productNav li a');
		var thatUrl = thisUrl.replace( /[^\/]+.(html|htm)$/, '');	// 後ろから検索しスラッシュ以降をトル

		if( $subNav.length === 0 ){
			return;
		}

		$subNav.each(function(){

			var listHref = $(this).attr('href');

			listHref = listHref.replace(/index\.(html|htm)$/, '');	// index.htmlがあったらとる

			if( thatUrl === listHref ){
				$(this).parent().addClass('current');
			}

		});

		// subNavの中にさらに詳細navがある場合のカレント表示
		var $subDetailNav = $('.productNavSub li a');

		if( $subDetailNav.length === 0 ){
			return;
		}

		$subDetailNav.each(function(){

			var listHref = $(this).attr('href');

			listHref = listHref.replace(/index.(html|htm)$/, '');	// index.htmlがあったらとる

			if( thisUrl === listHref ){
				$(this).parent().addClass('current');
			}

		});

	}



	// ------------------------------------------------------------------------
	// linklistのカレント表示
	// ------------------------------------------------------------------------
	function subListAddCurrent(){

		var thisUrl = oimc.generalSettings.config.THIS_HREF;
		thisUrl = thisUrl.replace(/https?:\/\/[^\/]+/, '');

		var matchResult = thisUrl.replace( /[^\/]+.(html|htm)$/, '');	// 後ろから検索しスラッシュ以降をトル
		matchResult = matchResult.replace( /index.(html|htm)#.*$/, '');	// 後ろからハッシュがあったらトル

		// check!
		if( matchResult === null ){
			return;
		}

		var $obj = $('body > .navLocal > .navLocalContent > div > ul > li a');
		var $parentObj;

		// check!
		if( $obj.length === 0 ){
			return;
		}

		$obj.each(function(){

			var listHref = $(this).attr('href');

			// アンカーリンクが含まれている場合は除外
			if( listHref.indexOf('#') !== -1){
				return
			}

			var listLesult = listHref.replace(/index[0-9]*\.(html|htm)$/, ''); // .html等をトル

			if( listLesult === matchResult ){

				$(this).addClass('current');
				$parentObj = $(this).parents('.col > ul > li')
			}

		});

		// 該当の開閉ウィンドウをオープン状態にする
		if( typeof $parentObj !== 'undefined' ){
			$parentObj.addClass('open');
		}

	}


	// ------------------------------------------------------------------------
	// include linklist
	// ------------------------------------------------------------------------
	function includeLinkList() {

		var $linkListContainer = $('body > .navLocal');

		// doCheck!
		if( $linkListContainer.length === 0 ){
			return;
		}

		var str = $linkListContainer.data('include')
		var result = (new Function("return " + str))(); // objectへ変換

		var url = result.source;

		if( typeof url === 'undefined' ){
			return;
		}

		$.ajax({
			type    : 'GET',
			url     : url + oimc.generalSettings.config.CACHE_INVALID,
			dataType: 'html',

			success: function( data ) {

				// add
				$linkListContainer.append( data );

				// カレント表示
				subListAddCurrent();

				// アコーディオンにするイベントをbind
				bindLinkListAccordion();

				// スムーススクロール
				$('body > .navLocal > .navLocalContent> .col > ul > li > ul > li > a').on( 'click', pageAnchorScrollFunc);

				//　高さ揃え
				linkListHeightEqualize();

				// 幅によって高さの設定を変えるためのaddEventListner
				$(window).resize( linkListHeightEqualize );
			},

			error:function (error, t, msg) {
				return;
			}

		});
	}



	// ------------------------------------------------------------------------
	// linkListの高さ揃え。4つ単位で合わせるため個別対応
	// ------------------------------------------------------------------------
	function linkListHeightEqualize(){

		$(window).off('resize', linkListHeightEqualize);

		// アコーディオン表示の場合は高さを削除
		if( $(window).width() <= oimc.generalSettings.breakPoint.POINT_C ) {

			$.each($('#navLocalContent div.col'), function(a){
				$(this).css({ 'height': '' })
			});

			setTimeout(function(){
				$(window).on('resize', linkListHeightEqualize);
			}, 30);

			return;
		}

		// PCの場合は高さ揃え
		var $obj   = $('#navLocalContent div.col'),
			maxLen = $obj.length - 1,
			len    = Math.floor( maxLen / 4 + 1 ),
			i      = 0,
			j      = 0,
			maxHeiArr  = [],
			cnt = 0;

		// defualtにする
		$obj.css({ 'height':'' });

		for(; i < len; i++){

			var tempHeiArr = [];

			for(j = 0; j < 4; j++ ){

				var hei = $($obj[cnt]).css('height').replace('px', '');

				tempHeiArr.push(hei)
				cnt++;

				if( cnt > maxLen ){
					break;
				}

			}

			var maxH = Math.max.apply(null, tempHeiArr);
			maxHeiArr.push( maxH );
		}

		cnt = 0;
		for(i = 0; i < len; i++){

			for(j = 0; j < 4; j++ ){

				$($obj[cnt]).css({ 'height':maxHeiArr[i] });

				cnt++;
				if( cnt > maxLen ){
					break;
				}
			}
		}

		setTimeout(function(){
			$(window).on('resize', linkListHeightEqualize);
		}, 30);
	}





	// ------------------------------------------------------------------------
	// include subArea
	// ------------------------------------------------------------------------
	function includeSub() {

		var $subContainer = $('#sub');

		// doCheck!
		if( $subContainer.length === 0 ){
			return;
		}

		var str = $subContainer.data('include')

		// doCheck!
		if( typeof str === 'undefined' ){
			includeBookMarklet();
			return;
		}

		var result = (new Function("return " + str))(); // objectへ変換

		var url = result.source + oimc.generalSettings.config.CACHE_INVALID;

		$.ajax({
			type    : 'GET',
			url     : url,
			dataType: 'html',

			success: function( data ) {

				// add
				$subContainer.append( data );

				// bookmarkletをinclude
				includeBookMarklet();
			},

			error:function() {
				// alert('err!');
			}

		});
	}




	// ------------------------------------------------------------------------
	// include BookMarklet
	// ------------------------------------------------------------------------
	function includeBookMarklet() {

		/**
		 * pageごとのurlやタイトルをパラメータに埋め込む必要があるため
		 * 別htmlをインクルードするのではなく直接addします。
		 */

		// social share button
		var pageTitle = document.title;
		var encodePageTitle = encodeURIComponent(pageTitle);
		var pageUrl = encodeURIComponent(document.URL);


		// generate
		var includeData = '<div class="listBookmarklet01"><ul>';

		var twData = '<li class="twitter"><a href="http://twitter.com/share?text=' + encodePageTitle + '&amp;url=' + pageUrl + '" target="_blank"><img src="/common/event_campaign/shared/images/common/btn_socialShare_twitter_01.gif" alt="Twitter" width="20" height="20" /></a></li>';

		var gData = '<li class="plusone"><g:plusone size="medium" annotation="none"></g:plusone></li>';

		var fbData = '<li class="facebook"><iframe src="https://www.facebook.com/plugins/like.php?href=' + pageUrl + '&amp;width=130&layout=button_count&action=like&size=small&share=false&height=21&appId=482220478462760" width="130" height="21" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowfullscreen="true" allow="autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share"></iframe></li>';		

		includeData = includeData + twData + gData + fbData + '</ul></div>';

		$('#subContent > .colLeft').append( includeData );
	}





	// ------------------------------------------------------------------------
	// 高さ揃えのまとめ
	// ------------------------------------------------------------------------
	function equalizer(){

		$('.imageCol2').equalize({ reset:true });
		$('.imageCol3').equalize({ reset:true });
		$('.imageCol4').equalize({ reset:true });
		//$('.listCol2').equalize({ reset:true });
		//$('.indexCol4').equalize({ reset:true });

		listCol2Equalizer();
		indexCol3Equalizer();
		indexCol4Equalizer();

		$(window).resize( linkListHeightEqualize );
	}







	// ------------------------------------------------------------------------
	// .listCol2は2つずつのため個別対応
	// ------------------------------------------------------------------------
	function listCol2Equalizer(){

		var col = 2;

		var $obj = $('.listCol2');

		// doCheck!
		if( $obj.length === 0 ){
			return
		}

		// defaultにする
		$obj.find('> li').css({ 'height':'' });

		// スマホの時は高さを削除するだけ
		if( $(window).width() <= oimc.generalSettings.breakPoint.POINT_B ) {
			return;
		}

		$.each($obj, function(){

			var $tempObj  = $(this).find('> li'),
				maxLen    = $tempObj.length - 1,
				len       = Math.floor( maxLen / col + 1 ),
				i         = 0,
				j         = 0,
				maxHeiArr = [],
				cnt       = 0;

			for(; i < len; i++){

				var tempHeiArr = [];

				for(j = 0; j < col; j++ ){

					var hei = $($tempObj[cnt]).css('height').replace('px', '');
					tempHeiArr.push(hei)
					cnt++;

					if( cnt > maxLen ){
						break;
					}
				}

				var maxH = Math.max.apply(null, tempHeiArr);
				maxHeiArr.push( maxH );
			}

			cnt = 0;
			for(i = 0; i < len; i++){

				for(j = 0; j < col; j++ ){

					$($tempObj[cnt]).css({ 'height':maxHeiArr[i] });

					cnt++;
					if( cnt > maxLen ){
						break;
					}
				}
			}
		});

	}


	// ------------------------------------------------------------------------
	// .indexCol3は3つずつのため個別対応
	// ------------------------------------------------------------------------
	function indexCol3Equalizer(){

		var $obj = $('.indexCol3');

		// doCheck!
		if( $obj.length === 0 ){
			return
		}

		// defaultにする
		$obj.find('.col').css({ 'height':'' });

		// スマホの時は高さを削除するだけ
		if( $(window).width() <= oimc.generalSettings.breakPoint.POINT_C ) {
			return;
		}

		// resize直後だと正しい値が取れないためsetTimeout
		setTimeout(function(){

			$.each($obj, function(){

				var $tempObj  = $(this).find('.col'),
					len       = $tempObj.length,
					i         = 0,
					j         = 0,
					maxHeiArr = [];

				for(i = 0; i < len; i++){
					var hei = $($tempObj[i]).css('height').replace('px', '');
					maxHeiArr.push( hei )
				}

				var maxH = Math.max.apply(null, maxHeiArr);
				$tempObj.css({ 'height': maxH + 'px' });
			});

		}, 10);

	}

	// ------------------------------------------------------------------------
	// .indexCol4は4つずつのため個別対応
	// ------------------------------------------------------------------------
	function indexCol4Equalizer(){

		var col = 0;

		// スマホの場合は2列にする
		if( $(window).width() <= oimc.generalSettings.breakPoint.POINT_A ) {
			col = 2;
		}else {
			col = 4;
		}

		var $obj = $('.indexCol4');

		// doCheck!
		if( $obj.length === 0 ){
			return
		}

		// defaultにする
		$obj.find('li').css({ 'height':'' });

		$.each($obj, function(){

			var $tempObj  = $(this).find('li'),
				maxLen    = $tempObj.length - 1,
				len       = Math.floor( maxLen / col + 1 ),
				i         = 0,
				j         = 0,
				maxHeiArr = [],
				cnt       = 0;

			for(; i < len; i++){

				var tempHeiArr = [];

				for(j = 0; j < col; j++ ){

					var hei = $($tempObj[cnt]).css('height').replace('px', '');
					tempHeiArr.push(hei)
					cnt++;

					if( cnt > maxLen ){
						break;
					}
				}

				var maxH = Math.max.apply(null, tempHeiArr);
				maxHeiArr.push( maxH );
			}

			cnt = 0;
			for(i = 0; i < len; i++){

				for(j = 0; j < col; j++ ){

					$($tempObj[cnt]).css({ 'height':maxHeiArr[i] });

					cnt++;
					if( cnt > maxLen ){
						break;
					}
				}
			}
		});
	}





	// ------------------------------------------------------------------------
	// グローバルナビの高さ揃え
	// ------------------------------------------------------------------------
	var $gNaviObj = $('#navGlobal li a span');
	var gNaviLen  = $gNaviObj.length;

	function gNaviEqualizer(){

		var gNaviHeightArr = [],
			i = 0;

		// 初期化してheightを取る
		for( i = 0; i < gNaviLen; i++){

			$( $gNaviObj[i] ).css( { height:'', lineHeight:'' } );

			var h = $( $gNaviObj[i] ).height();
			gNaviHeightArr.push( h );
		}

		// 一番高いheightを調べる
		var maxH = Math.max.apply(null, gNaviHeightArr);

		//　一番高いheightにそれぞれのspanを合わせ、文字位置をmiddleに合わる
		for( i = 0; i < gNaviLen; i++){
			$( $gNaviObj[i] ).height( maxH );

			if( gNaviHeightArr[i] !== maxH ){
				$( $gNaviObj[i] ).css( { lineHeight: maxH + 'px' } );
			}
		}
	}





	// ------------------------------------------------------------------------
	// 色切り替えのulの高さ揃え
	// ------------------------------------------------------------------------
	$(window).on( 'load', productImageEqualizer );

	function productImageEqualizer(){

		$(window).off( 'load', productImageEqualizer );

		var $obj = $('.productImage > ul');

		var widthQueryFlg = false;


		if( ua.IE ){

			if( $(window).width() <= oimc.generalSettings.breakPoint.POINT_C ){
				widthQueryFlg = true;
			}

		} else {
			widthQueryFlg = window.matchMedia( "(max-width: 767px)" ).matches;
		}

		// doCheck
		if( $obj.length === 0 ){
			return;
		}

		$.each( $obj, function(){

			var $tempObj = $(this);

			// defaultにしてから
			$tempObj.css({'height': ''})

			// 高さを取得
			var $img = $tempObj.find('li img')
			var hei = $img.height();

			// display:noneにしている場合があるため0以外を検索する
			if( hei === 0 ){
				var len = $img.length;
				for(var i = 0; i < len; i++){

					hei = $($img[i]).height();

					if( hei !== 0 ){
						break;
					}
				}
			}

			if( $tempObj.find('.front').length >= 1 ){
				if( widthQueryFlg ){
					hei = hei * 2;
				}
			}

			$tempObj.css({'height': hei + 'px'});
		});

	}








	// ------------------------------------------------------------------------
	// ナビゲーション:ドロップダウンメニュー
	// ------------------------------------------------------------------------
	var $gNaviAddBaseObj      = $('#navHeader').find('.navLocal');
	var $gNaviSub             = $('#navHeader').find('#navGlobalSub');
	var gNaviSubLen           = $gNaviSub.children().length;
	var gNaviSubLoadedCnt     = 0;
	var gNaviSuvClassNameArr  = [];
	var gNaviSubMenuOverdFlg  = false;
	var gNaviSubMenuOverdName = '';


	function gNaviAddToLocalNaviPrepare(){

		// doCheck
		if( $gNaviAddBaseObj.length === 0 ){
			return;
		}

		if( oimc.generalSettings.config.TOUCH_SUPPORT ){
			return;
		}

		if( $(window).width() <= oimc.generalSettings.breakPoint.POINT_C ){
			return;
		}

		// gNaviAddToLocalNavi();
	}

	function gNaviAddToLocalNavi(){

		if( gNaviSubLoadedCnt > gNaviSubLen -1 ){
			gNaviAddToLocalEventBind();
			return;
		}

		console.log(gNaviSubLoadedCnt);
		// 基本obj
		var $obj = $gNaviSub.children('li'),
				className;
		console.log($gNaviSub.children('li'));

		$obj.each(function() {
			className = $(this).attr('class');
			console.log(className);
			gNaviSuvClassNameArr.push( className );
		});


		var url = '../shared/include/nav_local_01.html';

		$.ajax({
			type    : 'GET',
			url     : url,
			dataType: 'html',

			success: function( data ) {

				var $data = $(data),
						$dataGroup = $data.find('.navLocalGroup');

						console.log($dataGroup);

				$gNaviAddBaseObj.append( $data );
				console.log('did')
				$gNaviAddBaseObj
					.css({ display:'none' });

				gNaviSubLoadedCnt++;
				gNaviAddToLocalNavi();
			},

			error:function (error, t, msg) {
				return;
			}

		});
	}

	function gNaviAddToLocalEventBind(){

		$gNaviSub.find('a').bind('mouseover', function(e){

			if( $(window).width() <= oimc.generalSettings.breakPoint.POINT_D ){
				return;
			}

			var widthQueryFlg = false;

			$gNaviAddBaseObj.addClass('navOpened');

			gNaviSubMenuOverdFlg = true;

			var $obj = $(e.currentTarget).parent();

			var className = $obj.attr('class');
			className = className.replace('active', ''); // 他のクラス名をトル
			className = className.replace(' ', '');

			if( gNaviSubMenuOverdName === className){
				return
			}

			gNaviSubMenuOverdName = className;

			// 出すobjを探して代入しておく
			var $obj = $gNaviAddBaseObj.find( '#' + className + 'NavArea');

			// heightをdefaultに
			$obj.css({ height:'' });

			// heightを取得しておく
			var defaultHei = $obj.height();

			// 一度全てnoneに
			$gNaviAddBaseObj.find( '> div').css({ display: 'none'} );

			// 該当のだけ出す
			$obj.stop()
				.css({ overflow:'hidden', height:0, display:'' })
				.animate({
					height: defaultHei
				},{
					duration:defaultHei * 1.2,
					easing: 'easeOutCubic',
					complete: function(){
						$(this).css({ overflow:'', height:'' })
					}
				});
		});

		$gNaviSub.find('a').bind('mouseout', function(e){

			gNaviSubMenuOverdFlg = false;

			setTimeout(function(){

				if( !gNaviSubMenuOverdFlg ){

					gNaviSubMenuCloseHandler();
				}

			}, 30);

		});

		$gNaviAddBaseObj.find('> div').on('mouseover' ,function(e){
			gNaviSubMenuOverdFlg = true;
		});

		$gNaviAddBaseObj.find('> div').on('mouseout' ,function(e){

			gNaviSubMenuOverdFlg = false;

			setTimeout(function(){

				if( !gNaviSubMenuOverdFlg ){

					gNaviSubMenuCloseHandler();
				}

			}, 30)

		});
	}

	function gNaviSubMenuCloseHandler(){

		$gNaviAddBaseObj.find( '#' + gNaviSubMenuOverdName + 'NavArea' )
			.stop()
			.animate({
				height:30
			},{
				duration: 80,
				complete: function(){

					gNaviSubMenuOverdName = '';

					// 子要素を非表示に
					$gNaviAddBaseObj.find( '> div').css({ display: 'none'} );

					// コンテナを消す
					$gNaviAddBaseObj.removeClass('navOpened');
				}
			});
	}

	gNaviAddToLocalNaviPrepare();








	// ------------------------------------------------------------------------
	// アンカーリンクで飛んできた場合、
	// PCは、位置調整
	// モバイルは、開いておく
	// ------------------------------------------------------------------------
	function urlHashCheck(){

		var hashName = location.hash;

		if( hashName.length === 0 ){
			return
		}

		var $obj = $(hashName);

		if( $obj.length === 0 ){
			return
		}

		// PCの場合
		if( $(window).width() >= oimc.generalSettings.breakPoint.POINT_C ){

		} else {

			$obj.parent().addClass('sectionOpened');

		}

	}

	urlHashCheck();







	// ------------------------------------------------------------------------
	// コンテンツ開閉
	// ------------------------------------------------------------------------

	var sectionHdgEventBindFlg = false;

	$(window).load(function(){
		sectionHdgResizeHandler();
	});

	$(window).on('resize', sectionHdgResizeHandler);

	function sectionHdgResizeHandler(){

		$(window).off('resize', sectionHdgResizeHandler);

		var flg = false;

		if( ua.IE ){

			if( $(window).width() <= oimc.generalSettings.breakPoint.POINT_C ){
				flg = true;
			}

		} else {
			flg = window.matchMedia( "(max-width: 767px)" ).matches;
		}

		if( flg ){

			if( !sectionHdgEventBindFlg ){

				sectionHdgEventBindFlg = true;
				$('.togglingEnabled').find('.sectionHdg').on('click', sectionHdgToggeleFunc);

			}

		}else {

			if( sectionHdgEventBindFlg ){

				sectionHdgEventBindFlg = false;
				$('.togglingEnabled').find('.sectionHdg').off('click', sectionHdgToggeleFunc);

			}

		}

		setTimeout(function(){
			$(window).on('resize', sectionHdgResizeHandler);
		}, 30)
	}

	function sectionHdgToggeleFunc(e){

		var $parentObj =  $(e.currentTarget).parents('.togglingEnabled');
		var className = String($parentObj.attr('class'));

		if( className.indexOf('sectionOpened') === -1 ){

			$parentObj.addClass('sectionOpened');

			productImageEqualizer();
			// listCol2Equalizer();
			indexCol3Equalizer();
			indexCol4Equalizer();



		}else {
			$parentObj.removeClass('sectionOpened');
		}

	}












	$(window).on('resize', equalizeFunc );

	function equalizeFunc(e){

		$(window).off('resize', equalizeFunc);

		equalizer();
		gNaviEqualizer();
		productImageEqualizer();

		setTimeout(function(){
			$(window).on('resize', equalizeFunc);
		}, 30)
	}








	// サブナビのカレント表示
	subNavAddCurrent();

	// サブエリア（関連リンク、キャンペーン、ギャラリー、サポート）のインクルード
	includeSub();

	// リンクリストをインクルード
	includeLinkList();

	//　グローバルナビの高さ揃え
	gNaviEqualizer();

	// 高さ揃え imgの読み込みを待ってから実行
	$(window).load( equalizer );
});



// isDebug
function trace( str ) {
	if ( this.console && typeof console.log != 'undefined' ){
		console.log( str );
	} else {
		alert(s);
	};
};

//　ブラウザ判定
var ua = (function(){
	return {
		ltIE6:typeof window.addEventListener == "undefined" && typeof document.documentElement.style.maxHeight == "undefined",
		ltIE7:typeof window.addEventListener == "undefined" && typeof document.querySelectorAll == "undefined",
		ltIE8:typeof window.addEventListener == "undefined" && typeof document.getElementsByClassName == "undefined",
		IE:document.uniqueID,
		Firefox:window.sidebar,
		Opera:window.opera,
		Webkit:!document.uniqueID && !window.opera && !window.sidebar && window.localStorage && typeof window.orientation == "undefined",
		Mobile:typeof window.orientation != "undefined"
	}
})();

// 文字列がいくつ含まれているか
function countStr(inStr, findStr){
	var icount,
		rtn = 0,
		icount = inStr.indexOf(findStr,0);

	while ( icount >= 0 ) {
		icount = inStr.indexOf(findStr, ++icount);
		rtn++;
	};

	return rtn;
}