// ============================================================
// メイン処理、共通関数
// 
// %update / 10.03.05
// 
// %use / jquery1.3.2
// %use / jquery.cookie.js
// %use / jquery.scrollTo-min.js
// %use / jquery.easing.1.3.js
// ------------------
// 【目次】
// ------------------
// ▼共通関数
// ▼メイン処理
// ============================================================

// 名前の衝突をふせぐために
// Mainという名前空間を用意する
var Main;
if(Main && ( typeof(Main) != 'object' ) ) {
	throw new Error('Namespace "Main" already exists!');
}
Main = {};  // 名前空間用のオブジェ生成

// ------------------
// 【定数・変数】
// ※名前の衝突をふせぐためにMainの中に定義する
// ------------------
Main.mailUnicode = '&#100;&#115;&#100;&#45;&#105;&#110;&#102;&#111;&#64;&#100;&#101;&#110;&#115;&#111;&#100;&#111;&#46;&#99;&#111;&#46;&#106;&#112;';  // サポート用メールアドレス（Unicode化した文字列）


// ------------------------------------------------------------
// ▼共通関数
// ※名前の衝突をふせぐためにMainの中に定義する
// ------------------------------------------------------------

// ■ポップアップ
// %param / urlStr:String / URL
// %param / [winName:String] / ウインドウ名（default:'popup'）
// %param / [winWidth:Number] / 幅（default:700）
// %param / [winHeight:Number] / 高さ（default:660）
// %param / [optStr:String] / 幅、高さ以外のオプション用の文字列（default:'toolbar=0,location=0,directories=0,status=0,menubar=1,scrollbars=1,resizable=1'）
// ------
// %return / :Window / 新規ウィンドウ
Main.openPopup = function(urlStr, winName, winWidth, winHeight, optStr) {
	var opt = '';
	
	if( (urlStr === '') || typeof(urlStr) != 'string' ) { return; }
	
	winName = ( (winName !== null) && (winName !== '') && ( typeof(winName) == 'string' ) )? winName : 'popup';
	winWidth = ( (winWidth !== null) && (winWidth !== 0) && (! isNaN( parseInt(winWidth) ) ) )? winWidth : 700;
	winHeight = ( (winHeight !== null) && (winHeight !== 0) && (! isNaN( parseInt(winHeight) ) ) )? winHeight : 660;
	optStr = ( (optStr !== null) && (optStr !== '') && ( typeof(optStr) == 'string' ) )? optStr : 'toolbar=0,location=0,directories=0,status=0,menubar=1,scrollbars=1,resizable=1';

	opt = 'width=' + winWidth + ',height=' + winHeight + ',' + optStr;
	return window.open(urlStr, winName, opt);
};

// ■数字を0パディングした文字列に変換
// %param / num:Number / 数字
// %param / [keta:Number] / 桁数（default:2）
// ------
// %return / :String
Main.num2ZeroPad = function(num, keta) {
	var numStr = num.toString();
	var zeroStr = '';

	keta = (! isNaN(keta) )? keta : 2;
	if( numStr.length >= keta) { return numStr; }
	
	while( zeroStr.length < keta ) {
		zeroStr += '0';
	}
	
	return ( zeroStr + numStr ).slice(-keta);
};

// ■0パディングした文字列を数字に変換
// %param / numStr:String / 0パディングされた文字列
// ------
// %return / :Number
Main.zeroPad2Num = function(numStr) {
	var notZeroFirstPos = -1;

	numStr = numStr.toString();
	notZeroFirstPos = numStr.search(/[1-9]/);

	if(notZeroFirstPos > 0) {
		numStr = numStr.substring(notZeroFirstPos, numStr.length);
	}
	
	return parseInt(numStr);
};

// ■文字列をUnicode（ISO Latin-1コード）に変換
// %param / str:String / 文字列
// ------
// %return / :String
Main.str2Unic = function(str) {
	var unic = '';

	if( typeof(str) != 'string' ) { return ''; }
	
	for(i=0; i<str.length; i++) {
		unic += '&#' + str.charCodeAt(i) + ';';
	}
	return unic;
};

// ■Unicode（ISO Latin-1コード）を文字列に変換
// %param / unic:String / Unicode（ISO Latin-1コード）
// ------
// %return / :String
Main.unic2Str = function(unic) {
	if( typeof(unic) != 'string' ) { return ''; }
	
	var unic_ar = unic.split(';');
	var str = '';

	for(i=0; i<unic_ar.length; i++) {
		if( unic_ar[i] != '' ) {
			str += String.fromCharCode( unic_ar[i].replace(/&#/, '') );
		}
	}
	return str;
};


// ------------------------------------------------------------
// ▼メイン処理
// ------------------------------------------------------------
// jqueryの『$』を置き換える
if(! $jQ) { var $jQ = jQuery.noConflict(); }

// Array.indexOf がない場合には実装
if(! Array.prototype.indexOf) {
	Array.prototype.indexOf = function(elt /*, from*/) {
		var len = this.length;

		var from = Number(arguments[1]) || 0;
		from = (from < 0) ? Math.ceil(from) : Math.floor(from);
		if(from < 0) { from += len; }

		for(; from < len; from++) {
			if(from in this && this[from] === elt) { return from; }
		}
		return -1;
	};
}
// ---

$jQ(document).ready( function() {

	// H1の位置調整
	$jQ('#H1Wrap').css('top', '0px');

	// ------------------
	// 【スムーズスクロール】
	// ------------------
	$jQ('#ContentWrap a[href^="#"]').click( function() {
		var url = $jQ(this).attr("href");
		$jQ.scrollTo( url, { speed: 300, axis: 'y', queue: true, easing: 'easeOutCubic', onAfter: function() { window.location = url; } } );
		return false;
	} );  // click()
	// ------

	// ------------------
	// 【文字サイズ変更】
	// ------------------
	// 初期化
	if( ! $jQ.cookie('fontSize') ) {
		$jQ.cookie('fontSize','s',{ expires: 7, path: '/' });  // 書込み
	}
	//alert( $jQ.cookie('fontSize') );  // DBUG
	
	$jQ('#HdTxtSizeArea').each( function() {
		var ftSzVal = '';  // font-sizeの値
		var curId = '';  // カレントのid
		
		if( $jQ.cookie('fontSize') == 's' ) {
			ftSzVal = ( $jQ.browser.msie ) ? '75%' : '12px';
			curId = 'HdBtnChgTxtS';
		} else {
			ftSzVal = ( $jQ.browser.msie ) ? '100%' : '16px';
			curId = 'HdBtnChgTxtL';
		}
		$jQ('body').css('font-size', ftSzVal);

		// H1の位置調整
		if( ( $jQ('#H1Wrap > h1').height() > 20 ) && ($jQ('#H1Wrap > h1').height() <= 40) ) {
			$jQ('#H1Wrap > h1').css('top', '21px');
		} else if( $jQ('#H1Wrap > h1').height() > 40 ) {
			$jQ('#H1Wrap > h1').css('top', '9px');
		}

		// カレント切替え
		$jQ('#HdTxtSizeArea li').removeClass('current');
		$jQ('#' + curId).addClass('current');
	} );  // each()
	// ---

	$jQ('#HdTxtSizeArea li').click( function() {
		var ftSzVal = '';  // font-sizeの値
		
		if( $jQ(this).attr('id') == 'HdBtnChgTxtS' ) {  // 標準
			ftSzVal = ( $jQ.browser.msie ) ? '75%' : '12px';
			$jQ.cookie('fontSize','s',{ expires: 7, path: '/' });  // 書込み
		} else {  // 大きい
			ftSzVal = ( $jQ.browser.msie ) ? '100%' : '16px';
			$jQ.cookie('fontSize','l',{ expires: 7, path: '/' });  // 書込み
		}
		$jQ('body').css('font-size', ftSzVal);

		// H1の位置調整
		if( ( $jQ('#H1Wrap > h1').height() > 20 ) && ($jQ('#H1Wrap > h1').height() <= 40) ) {
			$jQ('#H1Wrap > h1').css('top', '21px');
		} else if( $jQ('#H1Wrap > h1').height() > 40 ) {
			$jQ('#H1Wrap > h1').css('top', '9px');
		}
		
		// カレント切替え
		$jQ('#HdTxtSizeArea li').removeClass('current');
		$jQ(this).addClass('current');
		
		return false;
	} );  // click()
	// ------

	// ------------------
	// 【サブエリア内のメニューのカレント】
	// ------------------
	$jQ('body').each( function() {
		var jnk;
		var cwClassNameAll = $jQ(this).attr('class');
		var cwClassName_ar = [];
		var cwClassName = '';
		var numAcSbcmLi = 0;
		var cntLi = 0;
		var curLv01Li_jq = null;  /* level01のliのカレント */

		cwClassName_ar = cwClassNameAll.split(' ');
		//alert( 'cwClassName_ar：' + cwClassName_ar.join(',') );  // DBUG

		/* level01のliのカレント処理 */
		jnk = '';
		numAcSbcmLi = 0;
		cntLi = 0;
		for(i=0; i < cwClassName_ar.length; i++) {
			cwClassName = cwClassName_ar[i].match(/^acSbcmLv01Li[0-9]*?$/);

			if( (cwClassName != null) && (cwClassName != '') ) {
				//alert( 'cwClassName：' + cwClassName );  // DBUG
				numAcSbcmLi = Main.zeroPad2Num( cwClassName.toString().replace(/acSbcmLv01Li/, '') );
				break;
			}
		}

		if(numAcSbcmLi != 0) {
			$jQ('#SubMenuArea .sbcmLevel01 > li').each( function(i) {
				cntLi++;
				if(cntLi == numAcSbcmLi) {
					$jQ(this).addClass('current');
					curLv01Li_jq = $jQ(this);  /* カレントをセット */
				}
			} );  // each()
		}

		/* level02のliのカレント処理 */
		jnk = '';
		numAcSbcmLi = 0;
		cntLi = 0;
		for(i=0; i < cwClassName_ar.length; i++) {
			cwClassName = cwClassName_ar[i].match(/^acSbcmLv02Li[0-9]*?$/);

			if( (cwClassName != null) && (cwClassName != '') ) {
				//alert( 'cwClassName：' + cwClassName );  // DBUG
				numAcSbcmLi = Main.zeroPad2Num( cwClassName.toString().replace(/acSbcmLv02Li/, '') );
				break;
			}
		}

		if(numAcSbcmLi != 0) {
			$jQ('.sbcmLevel02 > li', curLv01Li_jq).each( function(i) {

				if( $jQ(this).attr('class').split(' ').indexOf('sbcmTit') == -1 ) {  // 『sbcmTit』以外
					cntLi++;
					if(cntLi == numAcSbcmLi) {
						$jQ(this).addClass('current');
					}
				}
			} );  // each()
		}

	} );  // each()
	// ------

	// ------------------
	// 【mailto:処理】
	// ------------------
	$jQ('.mailAddrTxt').click( function() {
		var mail = Main.unic2Str(Main.mailUnicode);
		//alert(mail);  // DBUG

		location.href='mailto:' + mail;
		return false;

	} );  // click()

} );  // ready()

