(function(){

	var aryDeptData = [];
	var aryPrefData = [];

	/* 発地エレメントの数の分定義する
	----------------------------------------------------*/
//	var deptElement1   = null; //HTMLElement
	var deptElement2   = null; //HTMLElement
//	var deptElement3   = null; //HTMLElement
	var deptElement4   = null; //HTMLElement
	var sendFlgElement = null; //HTMLElement

	addEvent( 'load'   , OnLoad   , window );
	addEvent( 'unload' , OnUnload , window );

	/* ロードイベント発生時
	/  海外ツアーページ固有の処理
	----------------------------------------------------*/
	function OnLoad(){

		init_area = division_id;
		if(document.searchForm2 && document.searchForm2.sendflg)
			sendFlgElement = document.searchForm2.sendflg;

		removeEvent( 'load' , OnLoad , window );

//		deptElement1 = document.getElementById( 'promoFlash' );
//		if( deptElement1 ) deptElement1.tabs = document.getElementById( 'tab' ).getElementsByTagName( 'li' );
		deptElement2 = document.getElementById( 'deptplacecd' );
//		deptElement3 = document.areaselectForm.areaselect;
		deptElement4 = document.areaselectFormTop.areaselectTop;

//		if( deptElement1 ) addEvent( 'click'  , OnClick  , deptElement1 );
		if( deptElement2 ) addEvent( 'change' , OnChange , deptElement2 );
//		if( deptElement3 ) addEvent( 'change' , OnChange , deptElement3 );
		if( deptElement4 ) addEvent( 'change' , OnChange , deptElement4 );

		setInitArea( init_area );
	}

	/* 指定のエレメントを変更
	/  海外ツアーページ固有の処理
	------------------------------------------------------------*/
	function setdeptElementValue(){

		if(init_area == 0) init_area = 13;

		var strPrefCode = ( init_area.toString().length == 1 ) ? '0' + init_area.toString() : init_area.toString();

		init_select( getTabIndex( aryPrefData[strPrefCode][0].toString() ) )

		if(sendFlgElement)
			sendFlgElement.value == '0' ? deptElement2.value = aryPrefData[strPrefCode][1] : sendFlgElement.value = '0';

//		if( deptElement3 ){
//			deptElement3.value = aryPrefData[strPrefCode][2];
//			deptElement3.onchange();
//		}
		if( deptElement4 ){
			deptElement4.value = aryPrefData[strPrefCode][3];
			deptElement4.onchange();
		}
	}

	/* タブのインデックス値を返す
	/  引　数：発地コード - string
	/  戻り値：発地コードのインデックス値
	---------------------------------------------------------*/
	function getTabIndex( _sDeptCode ){
		var iIndex = 0;
		switch( _sDeptCode ){
			case 'tyo' : iIndex = 0; break;
			case "ngo" : iIndex = 1; break;
			case "osk" : iIndex = 2; break;
			case "fuk" : iIndex = 3; break;
		}

		return iIndex;
	}

	/* アンロード発生時
	----------------------------------------------------*/
	function OnUnload(){
//		if( deptElement1 ) removeEvent( 'click'  , OnClick  , deptElement1 );
		if( deptElement2 ) removeEvent( 'change' , OnChange , deptElement2 );
//		if( deptElement3 ) removeEvent( 'change' , OnChange , deptElement3 );
		if( deptElement4 ) removeEvent( 'change' , OnChange , deptElement4 );
//		removeEvent( 'click'  , OnChange , document.searchForm );
		removeEvent( 'unload' , OnUnload , window              );
	}

	/* ターゲティング初期化
	----------------------------------------------------*/
	function setInitArea(){
		getXmlSetArea( "kaigaitour" );
		setTimeout( function(){ setCookie( 'PrefCode' , init_area , getExpDate( 30 , 0 , 0 ) , '/' , '.jtb.co.jp' ) } , 1 );
	}

	/* 発地情報関連づけxml取得
	-----------------------------------------------------*/
	function getXmlSetArea( _sPageNameElement ){

		var oAjax = null;

		if( window.XMLHttpRequest ){
			// Mozilla, IE7 以降
			oAjax=new XMLHttpRequest();
		}else if( window.ActiveXObject ){
			// IE6 以前
			try{
				oAjax=new ActiveXObject( 'Msxml2.XMLHTTP'    );
			}catch(e){
				oAjax=new ActiveXObject( 'Microsoft.XMLHTTP' );
			}
		}

		if( oAjax ){

			oAjax.open( 'get' , '/kaigai/js/kaigai_DeptRelation.xml' , true );
			oAjax.onreadystatechange = function(){
				if(oAjax.readyState == 4 && oAjax.status == 200){
					var oXml = oAjax.responseXML.getElementsByTagName( _sPageNameElement )[0];

					var targetElement;
					var iDeptElementCount;

					for(var i = 1 ; ; i++ ){

						targetElement = oXml.getElementsByTagName( 'deptdata' + i.toString() );
						if( targetElement.length ){
							var ary = [];
							var depts = targetElement[0].getElementsByTagName( 'dept' );
							for ( var k = 0, kmax = depts.length; k < kmax ; k++ ){
								ary[depts[k].getAttribute( 'code' )] = depts[k].getAttribute( 'defaultpref' );
							}
							aryDeptData[aryDeptData.length] = ary;
						}else{
							iDeptElementCount = i;
							break;
						}
					}

					var targetElement2;
					var prefs = oXml.getElementsByTagName( 'pref' );

					for( var i = 0, maxi = prefs.length ; i < maxi ; i++ ){
						var ary = [];
						targetElement2 = prefs[i];
						for( var k = 1 ; k < iDeptElementCount ; k++){
							ary.push( [targetElement2.getAttribute( 'deptcode' + k.toString() )] );
						}
						aryPrefData[targetElement2.getAttribute( 'code' )] = ary;
					}
					setdeptElementValue();
				}
			}
			oAjax.send('');
		}
	}


//	/* OnClickイベント発生時
//	---------------------------------------------------*/
//	function OnClick( _e ){
//		var oTargetElement = _e.srcElement || _e.target;
//		if( oTargetElement ){
//			var ClassName = oTargetElement.className;
//			if( ( ' '+ClassName+' ' ).match( '\\sswpImg\\s' ) ){
//				for( var i = 0 ,tablength = deptElement1.tabs.length ; i < tablength ; i++){
//					if(oTargetElement === deptElement1.tabs[i].getElementsByTagName('IMG')[0]){
//						var TargetValue = 'tyo';
//						switch(i){
//							case 0 : TargetValue = 'tyo'; break;
//							case 1 : TargetValue = 'ngo'; break;
//							case 2 : TargetValue = 'osk'; break;
//							case 3 : TargetValue = 'fuk'; break;
//						}
//
//						var sDeptCD = aryDeptData[0][TargetValue];
//
//						if( deptElement2 ) deptElement2.value = aryPrefData[sDeptCD][1];
//						if( deptElement3 ){
//							deptElement3.value = aryPrefData[sDeptCD][2];
//							deptElement3.onchange();
//						}
//						if( deptElement4 ){
//							deptElement4.value = aryPrefData[sDeptCD][2];
//							deptElement4.onchange();
//						}
//
//						setTimeout( function(){ setCookie( 'PrefCode' , aryDeptData[0][TargetValue], getExpDate( 30 , 0 , 0 ) , '/' , '.jtb.co.jp' ) } , 1 );
//						if(sendFlgElement)
//							sendFlgElement.value = '0';
//					}
//				}
//			}
//		}
//	}

	/* OnChangeイベント発生時
	/  海外ツアーページ固有の処理
	---------------------------------------------------*/
	function OnChange( _e ){
		var oTargetElement = _e.srcElement || _e.target;
		if( oTargetElement ){
			switch( oTargetElement.name ){
				case 'deptplacecd':
					if(aryDeptData[1][oTargetElement.value])
						setTimeout( function(){ setCookie( 'PrefCode' , aryDeptData[1][oTargetElement.value] , getExpDate( 30 , 0 , 0 ) , '/' , '.jtb.co.jp' ) } , 1 );

					// プルダウン変更時に他の発地エレメントも変更する。----------------
					if( oTargetElement.value == '' ) break;

					var sPrefCD = aryDeptData[1][oTargetElement.value];
					var sDeptCD = aryPrefData[sPrefCD][0].toString();
					var iTabIndex = getTabIndex( sDeptCD );

//					deptElement1.tabs[iTabIndex].onclick();
					init_select(iTabIndex);

//					if( deptElement3 ){
//						deptElement3.value = aryPrefData[sPrefCD][2];
//						deptElement3.onchange();
//					}
					if( deptElement4 ){
						deptElement4.value = aryPrefData[sPrefCD][3];
						deptElement4.onchange();
					}

					if(sendFlgElement)
						sendFlgElement.value = '1';
					break;
//				case 'areaselect':
//					if(aryDeptData[2][oTargetElement.value])
//						setTimeout( function(){ setCookie( 'PrefCode' , aryDeptData[2][oTargetElement.value] , getExpDate( 30 , 0 , 0 ) , '/' , '.jtb.co.jp' ) } , 1 );
//
//					if( oTargetElement.value == '' ) break;
//					// プルダウン変更時に他の発地エレメントも変更する。----------------
//					var sPrefCD = aryDeptData[2][oTargetElement.value];
//					var sDeptCD = aryPrefData[sPrefCD][0].toString();
//					var iTabIndex = getTabIndex( sDeptCD );
//
//					deptElement1.tabs[iTabIndex].onclick();
//					init_select(iTabIndex);
//					if( deptElement2 ){
//						deptElement2.value = aryPrefData[sPrefCD][1];
//					}
//					if( deptElement3 ){
//						deptElement3.value = aryPrefData[sPrefCD][2];
//						deptElement3.onchange();
//					}
//					if( deptElement4 ){
//						deptElement4.value = aryPrefData[sPrefCD][2];
//						deptElement4.onchange();
//					}
//
//					if(sendFlgElement)
//						sendFlgElement.value = '0';
//					break;
				case 'areaselectTop':
					if(aryDeptData[3][oTargetElement.value])
						setTimeout( function(){ setCookie( 'PrefCode' , aryDeptData[3][oTargetElement.value] , getExpDate( 30 , 0 , 0 ) , '/' , '.jtb.co.jp' ) } , 1 );

					if( oTargetElement.value == '' ) break;
					// プルダウン変更時に他の発地エレメントも変更する。----------------
					var sPrefCD = aryDeptData[3][oTargetElement.value];
					var sDeptCD = aryPrefData[sPrefCD][0].toString();
					var iTabIndex = getTabIndex( sDeptCD );

//					deptElement1.tabs[iTabIndex].onclick();
					init_select(iTabIndex);
					if( deptElement2 ){
						deptElement2.value = aryPrefData[sPrefCD][1];
					}
//					if( deptElement3 ){
//						deptElement3.value = aryPrefData[sPrefCD][2];
//						deptElement3.onchange();
//					}
					if( deptElement4 ){
						deptElement4.value = aryPrefData[sPrefCD][3];
						deptElement4.onchange();
					}

					if(sendFlgElement)
						sendFlgElement.value = '0';
					break;
			}
		}
	}

	/* イベントハンドラ設定
	----------------------------------------------------*/
	function addEvent( _sType , _oFunc , _oTarget ){
		if ( _oTarget.addEventListener ){
			if( _sType == 'change' )
				_oTarget.addEventListener( 'keyup' , _oFunc , false );
			_oTarget.addEventListener( _sType , _oFunc , false );
		}else if( _oTarget.attachEvent ){
			_oTarget.attachEvent( 'on' + _sType , _oFunc );
		}
	}

	/* イベントハンドラ解除
	----------------------------------------------------*/
	function removeEvent( _sType , _oFunc , _oTarget ){
		if( _oTarget.detachEvent )
			_oTarget.detachEvent( _sType , _oFunc );
		else if( _oTarget.removeEventListener )
			_oTarget.removeEventListener( _sType , _oFunc, false );
	}

	/* cookie の有効期限用の日付を求める
	----------------------------------------------------*/
	function getExpDate( days, hours, minutes )
	{
		var expDate = new Date();
		if (
			typeof days    == "number" &&
			typeof hours   == "number" &&
			typeof minutes == "number" )
		{
			expDate.setDate( expDate.getDate() + parseInt( days ) );
			expDate.setHours( expDate.getHours() + parseInt( hours ) );
			expDate.setMinutes( expDate.getMinutes() + parseInt( minutes ) );
			return expDate.toGMTString();
		}
	}

	/* cookie を設定する
	----------------------------------------------------*/
	function setCookie( name, value, expires, path, domain, secure ){
		document.cookie = name + "=" +  value +
			( ( expires ) ? "; expires=" + expires : "" ) +
			( ( path    ) ? "; path="    + path    : "" ) +
			( ( domain  ) ? "; domain="  + domain  : "" ) +
			( ( secure  ) ? "; secure"             : "" );
	}

})();
