/*

http://www.jal.co.jp/domtour/js/e_travel.js

2010.01.13

ryogo kurata@jaltours(Customized 2009.02.23)
ryogo kurata@jaltours(Customized 2008.11.05)
ryogo kurata@jaltours(Customized 2008.08.25)
ryogo kurata@jaltours(Customized 2008.08.06)
ryogo kurata@jaltours(Customized 2008.07.03)
ryogo kurata@jaltours(Customized 2008.07.02)
ryogo kurata@jaltours(Customized 2008.04.23)
Interconnect,inc.(Original)


*/

/*-外部からの遷移-----------------------------------------------------*/

//既知サイトリスト
var JALTsiteList = [
	['www.jal.co.jp/','','','JALツアーズ'],
	['172.18.12.100/','','JALテストサイト'],
	['10.32.32.106/','','JALテストサイト'],
	['192.45.1.246/','','keiwaサイト']
];

//getリクエスト取得・照合
function JALTrouteSet(){
	var params = parseQuery(window.location.search.substring(1), true);

	// DOMAINをクッキーに設定
	var dmval = location.hostname;
	var hval = location.hostname + location.pathname;
	for (var i = 0; i < JALTsiteList.length; i++) {
		re = new RegExp(JALTsiteList[i][0], "g");
		if (hval.match(re) != null) {
			JALTsetDomain(params["DOMAIN".toUpperCase()], dmval, JALTsiteList[i][1]);
			
			return true;
		}
	}

	return false;
}

// ランディングページのURLを返す
function JALTgetLandingPageUrl() {
	var params = parseQuery(window.location.search.substring(1) + window.location.hash, true);
	var url = params["page_url".toUpperCase()];
	if (!url) {
		url = "http://www.jal.co.jp/domtour/";
	}
	return url;
}

//cookie保存
function JALTsetDomain(jep, dmval, path){
	
	if (!jep) {
		return;
	}

	// クッキーの有効期限は60日間とする
	var keyDomain = '.jal.co.jp';
	var dtval;
	var dtvalNow;
	var exdt = 60;
	dtval = new Date;
	dtvalNow = dtval.toGMTString();
	dtval.setDate(dtval.getDate() + eval(exdt));
	dtval = dtval.toGMTString();
	if (dmval.toLowerCase().indexOf(keyDomain,0) >= 0){
		// 古いクッキーを消してから書込む
		document.cookie = 'jalt-jep=' + jep + ';expires=' + dtvalNow + ';domain=' + dmval + ';path=/' + path + ';';
		document.cookie = 'jalt-jep=' + jep + ';expires=' + dtval + ';domain=' + keyDomain + ';path=/' + path + ';';
	}else{
		document.cookie = 'jalt-jep=' + jep + ';expires=' + dtval + ';domain=' + dmval + ';path=/' + path + ';';	
	}
	
}

// パラメータを連想配列に格納
// Key値は大文字で登録することとする。
function parseQuery( query, upper ) {
	
	var Params = new Object();
	if (!query) {
		return Params;
	}
	var Pairs = query.split( /[;&]/ );
	for( var i = 0; i < Pairs.length; i ++ ) {
		var KeyVal = Pairs[ i ].split( '=' );
		if( ! KeyVal || KeyVal.length < 2 ) continue;
		var key = unescape( KeyVal[ 0 ] );
		if (upper) {
			key = key.toUpperCase();
		}
		var val = unescape( KeyVal[ 1 ] );
		for( var j = 2; j < KeyVal.length; j ++ ) {
			val += '=';
			val += unescape( KeyVal[ j ] );
		}
		val = val.replace( /\+/g, ' ' );
		if (val) {
			Params[ key ] = val;
		}
	}
	return Params;
}

/*-JEPへの遷移-----------------------------------------------------*/

// JALTLinkSで使用するForm
var _JALTform;

//e_の関数で使用
var e_url1 = "TranID=STATICPAGE";
var e_url2 = "TranID=DOM_TOURSEARCH";
var e_url3 = "TranID=DOM_TOURDETAIL";
var e_url4 = "TranID=DOM_TOURLIST1";
var e_url5 = "TranID=STATICPAGE";

//JEP連携リンクGET形式
function JALTLinkS(params, pageURL) {
	
	// パラメータをFormのinputノードに移行
	if (_JALTform) {
		removeElement(_JALTform);
	} else {
		_JALTform = document.createElement("form");
		document.body.appendChild(_JALTform);
		
	}
	// paramsを分割し、formのhiddenに設定
	if( typeof params == "string" ) {
		var Pairs = params.split( /[;&]/ );
		for( var i = 0; i < Pairs.length; i ++ ) {
			var KeyVal = Pairs[ i ].split( '=' );
			if( ! KeyVal || KeyVal.length < 2 ) continue;
			var key = unescape( KeyVal[ 0 ] );
			var val = unescape( KeyVal[ 1 ] );
			for( var j = 2; j < KeyVal.length; j ++ ) {
				val += '=';
				val += unescape( KeyVal[ j ] );
			}
			val = val.replace( /\+/g, ' ' );
			
			addElement(_JALTform, key, val);
		}
	} else {
		for ( var key in params ) {
			addElement(_JALTform, key, params[key]);
		}
	}
	
	// page_urlの設定
	if (pageURL) {
		if (typeof pageURL == "string") {
			// Stringの場合
			addElement(_JALTform, "page_url", pageURL);
		} else {
			// 連想配列の場合
			for ( var key in pageURL ) {
				addElement(_JALTform, key, pageURL[key]);
			}
		}
	}
	JALTLinkF(_JALTform);
}

//JEP連携リンクPOST形式
function JALTLinkF(form) {
	
	// プログラム固定項目の設定
	removeElement(form, "first_page");
	removeElement(form, "memberBackUrl");
	removeElement(form, "guestBackUrl");
	removeElement(form, "memberPattern");
	removeElement(form, "guestPattern");
	removeElement(form, "menu");
	
	addElement(form, "first_page", "0");
	addElement(form, "memberBackUrl", "https://jmbtour.jal.co.jp/TranControl.asp");
	addElement(form, "guestBackUrl", "https://jmbtour.jal.co.jp/TranControl.asp");
	addElement(form, "memberPattern", "5,9");
	addElement(form, "guestPattern", "5");
	addElement(form, "menu", "1");
	
	// プログラム管理項目の設定
	// DOMAINの設定
	var domain = JALToutDomain();

	if (!domain) {
		domain = getElementValue(form, "DOMAIN");
		if (!domain) {
			domain = "EJALTOURS";
		}
	}
	removeElement(form, "DOMAIN");
	addElement(form, "DOMAIN", domain);
	
	// JEPへ
	form.action = "https://www121.jal.co.jp/JmbWeb/JR/Dispatcher_ja.do";
	form.method="post";
	form.target = "etravelplaza";
	//console.info(form);
	testformCHK(form);
	form.submit();
}

//FORCIA連携リンクGET形式
function FRCADomLinkS(params,keyword) {
	
	// パラメータをFormのinputノードに移行
	if (_JALTform) {
		removeElement(_JALTform);
	} else {
		_JALTform = document.createElement("form");
		document.body.appendChild(_JALTform);
		
	}
	// paramsを分割し、formのhiddenに設定
	if( typeof params == "string" ) {
		var Pairs = params.split( /[;&]/ );
		for( var i = 0; i < Pairs.length; i ++ ) {
			var KeyVal = Pairs[ i ].split( '=' );
			if( ! KeyVal || KeyVal.length < 2 ) continue;
			var key = unescape( KeyVal[ 0 ] );
			var val = unescape( KeyVal[ 1 ] );
			for( var j = 2; j < KeyVal.length; j ++ ) {
				val += '=';
				val += unescape( KeyVal[ j ] );
			}
			val = val.replace( /\+/g, ' ' );
			
			addElement(_JALTform, key, val);
		}
	} else {
		for ( var key in params ) {
			addElement(_JALTform, key, params[key]);
		}
	}

	// keywordの設定
	if (keyword) {
		if (typeof keyword == "string") {
			// Stringの場合
			addElement(_JALTform, "KEYWORD", keyword);
		} else {
			// 連想配列の場合
			for ( var key in keyword ) {
				addElement(_JALTform, key, keyword[key]);
			}
		}
	}

	FRCADomLinkF(_JALTform);
}

//FORCIA連携リンクPOST形式
function FRCADomLinkF(form) {
	
	// プログラム管理項目の設定
	// DOMAINの設定
	var domain = JALToutDomain();
	if (!domain) {
		domain = getElementValue(form, "DOMAIN");
		if (!domain) {
			domain = "EJALTOURS";
		}
	}
	removeElement(form, "DOMAIN");
	addElement(form, "DOMAIN", domain);
	
	// FORCIAへ
	if ('https:' == location.protocol) {
			form.action = "https://domtoursearch.jal.co.jp/jal_dom/";
	} else {
			form.action = "http://domtoursearch.jal.co.jp/jal_dom/";
	}

	form.method="post";
	form.target = "";
	//console.info(form);
	testformCHK(form);
	form.submit();
}

//静的コンテンツ
function e_static(set){
	if(!set){
		JALTLinkS(e_url1,"DOM_TOP");
	}else{
		JALTLinkS(e_url1,set);
	}
}

//ツアー詳細
function e_tour(cc,dp,from,to){
	if (!cc) {
		var e_code1 = '';
		var e_code2 = '';
	} else {
		var e_code1 = '&brand=' + cc.slice(0, 2);
		var e_code2 = '&course_cd_rear=' + cc.slice(2, 7);
	}
	if (!dp) {
		dp = '';
	} else {
		dp = '&dept_plac_cd=' + dp;
	}
	if (!from) {
		from = '';
	} else {
		from = '&from_date=' + from;
	}
	
	if (!to) {
		to = '';
	} else {
		to = '&to_date=' + to;
	}
	e_url = e_url3;
	e_url += e_code1 + e_code2 + dp + from + to;
	
	JALTLinkS(e_url)
}

//商品コード検索結果
function e_toursearch(cc,dp,month,day){
	if (!cc) {
		var e_code1 = '';
		var e_code2 = '';
	} else {
		var e_code1 = '&brand=' + cc.slice(0, 2);
		var e_code2 = '&course_cd_rear=' + cc.slice(2, 7);
	}
	if (!dp) {
		dp = '';
	} else {
		dp = '&dept_plac_cd=' + dp;
	}
	if (!month){
		month = '';
	} else {
		month = '&month=' + month;
	}
	if(!day){
		day = '';
	}else{
		day = '&day=' + day;
	}
	e_url = e_url3;
	e_url += e_code1 + e_code2 + dp + month + day;
	JALTLinkS(e_url)
}

//ツアー検索結果
function e_search(ar,dp,mm,br,th,from,to){
	if(!ar){
		ar = '';
	}else{
		ar = '&area_cd=' + ar;
	}
	if(!dp){
		dp = '';
	}else{
		dp = '&dept_plac_cd=' + dp;
	}
	if(!mm){
		mm = '';
	}else{
		mm = '&month=' + mm;
	}
	if(!br){
		br='';
	}else{
		br = '&brand=' + br;
	}
	if(!th){
		th='';
	}else{
		th = '&thema=' + th;
	}
	if (!from) {
		from = '';
	}
	else {
		from = '&tvl_days_from=' + from;
	}
	if(!to){
		to='';
	}else{
		to = '&tvl_days_to=' + to;
	};
	e_url = e_url4;
	e_url += ar + dp + mm + th + br + from + to;
	JALTLinkS(e_url)
}

//ツアー検索条件入力
function e_searchTOP(ar,dp,br){
	e_url = e_url2;
	if(!ar){
		ar='';
	}else{
		ar = '&area_cd=' + ar;
	}
	if(!dp){
		dp='';
	}else{
		dp = '&dept_plac_cd=' + dp;
	}
	if(!br){
		br='';
	}else{
		br = '&brand=' + br;
	}
	e_url += ar + dp + br;
	JALTLinkS(e_url);
}

//組み立て
function e_arrange(br,kc,ar,dp,md){
	if(!br){
		br = '';
	}else{
		br = '&brand=' + br;
	}
	if(!kc){
		kc = '';
	}else{
		kc = '&Keitai=' + kc;
	}
	if(!ar){
		ar = '';
	}else{
		ar = '&area=' + ar;
	}
	if(!dp){
		dp = '';
	}else{
		dp = '&dept_plac_cd=' + dp;
	}
	if(!md){
		md = '';
	}else{
		md = '&max_days=' + md;
	}
	var l_url = br + kc + ar + dp + md;
	if (l_url.indexOf('&',0) == 0){
		l_url = "?" + l_url.substring(1);
	}
	e_url = "/kokunai/jump/kumitate/index.html" + l_url;
	JALTLinkS(e_url5,e_url);
}

//dp
function e_dpTOP(fname){
	d = document.forms[fname];
	removeElement(d, "TranID");
	addElement(d, "TranID","DOM_DPTOUR");
	removeElement(d, "target_page");
	addElement(d, "target_page","L01");
	JALTLinkF(d);
}

function e_dp(fname){
	d = document.forms[fname];
	removeElement(d, "TranID");
	addElement(d, "TranID","DOM_DPTOUR");
	removeElement(d, "target_page");
	addElement(d, "target_page","L02");
	JALTLinkF(d);
}

//cookie判別・domainセット
function JALToutDomain(){
	if (!document.cookie) return;
	var cookies = document.cookie.split("; ");
	for (var i = 0; i < cookies.length; i++) {
		var str = cookies[i].split("=");
		if (str[0] != 'jalt-jep') continue;
		return unescape(str[1]);
	}
	return;
}

function testformCHK(form) {

	if(typeof(testformCHKflag) != "undefined" && testformCHKflag == true) {
		var s;
		s = "action = " + form.action + "<br>";
		s = s + "method = " + form.method + "<br>";
		s = s + "target = " + form.target + "<br>";
		for(i = 0; i < form.length; i++) {
			if(form[i].value != "" && form[i].value != "undefined" && form[i].disabled == false){
				s = s + form[i].name + " = " + form[i].value + "<br>";
			}
		}
		var win = window.open("","chk","width=500 height=500 scrollbars=yes");
		win.document.open("text/html");
		win.document.write(s);
		win.document.close(); 
		win.focus();
	}
}

// エレメントの取得
function getElementValue(form, name) {
	var value = "";
	for(i = 0; i < form.length; i++){
		if(form[i].name.toUpperCase() == name.toUpperCase()){
			if (form[i].value) {
				value = form[i].value;
			}
		}
	}
	return value;
}

// エレメントの追加
function addElement(form, name, value) {
	var inp = new Object;
	inp = document.createElement("input");
	inp.setAttribute("type", "hidden");
	inp.setAttribute("name", name);
	inp.setAttribute("value", value);
	form.appendChild(inp);
}

//エレメントの削除
//ノードの子ノードを全部削除する場合、nameに指定をしない。
function removeElement(node, name) {
	
	var childNodes = node.childNodes;
	if (childNodes) {			
		for (var i = 0; i < childNodes.length; i++) {
			var childNode = childNodes[i];
			if (childNode.nodeType == 1) {
				if (childNode.childNodes.length == 0) {
					
					if (name) {
						if ((childNode.name) && (childNode.name.toUpperCase() == name.toUpperCase())) {
							node.removeChild(childNode);
							removeElement(node, name);
						}
					} else {
						node.removeChild(childNode);
						removeElement(node);
					}
				} else {
					removeElement(childNode, name);
				}
			}
		}
	}
}