function JLJS_domTicketModuleContoller_en() {
	
	this.XML_FILE = "/en/common_rn/xml/domTicketModule_en.xml";
	
	this.isAllowedToSetupOnLoad = true;
	this.isGotParamsFromArgs = false;
	this.isXMLLoaded = false;
	
	this.tm;
	this.hm;
	
	this.xmlValue = {};
	this.moduleArgs = {};
	
	this.select_areaAirport;
}

JLJS_domTicketModuleContoller_en.prototype = {
	setup : function() {
		
		var base = document.getElementById("domTicketModule");
		if(!base) {
			return;
		}
		
		if (!this.isGotParamsFromArgs) {
			this.readXML();
		}
		
		var typeFrm = document.domTMTypeFrm;
		
		if(typeFrm) {
			
			for(var i=0; i<typeFrm.domTMType.length; i++) {
				
				(function(){
					JLJS.addEvent(typeFrm.domTMType[i],
									"click",
									function(e) {
										var target = e.currentTarget;
										var frm = document.domTMTypeFrm;
										for(var i=0; i<frm.domTMType.length; i++) {
											var elm = document.getElementById(frm.domTMType[i].value);
											if(elm) {
												if(target.value == frm.domTMType[i].value) {
													elm.style.display = "block";
													if(target.value == "domTMModule1" && !JLJS_DomTMCtrl_en.tm) {
														JLJS_DomTMCtrl_en.tm = new JLJS_domTicketModule_en(elm);
														JLJS_DomTMCtrl_en.tm.setup(JLJS_DomTMCtrl_en.moduleArgs);
													} else if(target.value == "domTMModule2" && !JLJS_DomTMCtrl_en.hm) {
														JLJS_DomTMCtrl_en.hm = new JLJS_domHotelModule_en(elm);
														JLJS_DomTMCtrl_en.hm.setup(JLJS_DomTMCtrl_en.moduleArgs);
													}
												} else {
													elm.style.display = "none";
												}
											}
										}
									});
				})();
				
				if(typeFrm.domTMType[i].checked) {
					typeFrm.domTMType[i].click();		
				}
			}
		}
	},

	readXML : function() {
		if(typeof JKL == "function" && !this.isXMLLoaded) {
			var param = "?t=" + new Date().getTime();
			var tmXML = new JKL.ParseXML(this.XML_FILE + param);
			tmXML.setOutputArrayElements(["pattern"]);  
			var tmParseXML = tmXML.parse();
			var tmPatternXML = this.parseXMLPattern(tmParseXML);
			if(tmPatternXML) {
				var setupFilePath = tmPatternXML.setupFile;
				if(setupFilePath) {
					var setupXMl = new JKL.ParseXML(setupFilePath + param);
					setupXMl.setOutputArrayElements(["pattern", "setup"]);  
					var setupParseXML = setupXMl.parse();
					var setupPatternXML = this.parseXMLPattern(setupParseXML);
					if(setupPatternXML) {
						var setup = setupPatternXML.setup;
						if(setup) {
							for(var i=0; i<setup.length; i++) {
								var form = setup[i].form;
								delete setup[i].form;
								this.xmlValue[form] = setup[i];
							}
							this.isXMLLoaded = true;
						}
					}
				}
			}
		}
	},
	
	parseXMLPattern : function (parseXML) {
		var pattern;
		if(parseXML && parseXML.ticketModule && parseXML.ticketModule.pattern) {
			
			var patterns = parseXML.ticketModule.pattern;
			for(var i=0; i<patterns.length; i++) {
				var url = patterns[i].url;
				if(url && (url == "*" || window.location.href.indexOf(url) != -1)) {
					pattern = patterns[i];
					break;	
				}
			}
			
		}
		return pattern;
	},
	
	setAreaData : function (code) {
		this.select_areaAirport = code;
		if(this.tm){
			this.tm.setAirportNode();
		}
	}
}

var JLJS_DomTMCtrl_en = new JLJS_domTicketModuleContoller_en();
JLJS.addOnload(function(){
	if(JLJS_DomTMCtrl_en.isAllowedToSetupOnLoad){
		JLJS_DomTMCtrl_en.setup();
	}
});
JLJS.addEvent(window, "unload", function(){});


function JLJS_domTicketModule_en(tmBlock) {
	
	this.FORM = "formNode";
	this.ACTION = "action";
	this.METHOD = "method";
	this.TARGET = "target";
	this.ADD_FORM_SAFARI = "addFormSafari";
	this.LINK_ID = "linkId";
	
	this.AIRPORT = "airportNode";
	this.DEPAREA = "departureAirportCode1";
	this.ARRAREA = "arrivalAirportCode1";
	
	this.DEPART_MONTH = "departureMonth1";
	this.DEPART_DAY = "departureDay1";

	this.DATE = "dateNode";
	this.OFFSET = "offset";
	this.DAY_OF_WEEK_FLG = "dayOfWeekFlag";
	this.DEPART_TIME = "departureTime1";
	this.FLOAT_CAL_ICON = "floatCalIcon";
	
	this.CUSTOM_DATE = "customDate";
	this.END_DATE = "endDate";
	this.CONST_DATE = "constDate";

	this.OTHERS = "others";
	this.BOARD_CLASS = "class1";
	this.CUSTOMER_ADALT = "adult";
	this.CUSTOMER_CHILD = "child";
	this.CUSTOMER_INFANT = "infant";
	
	this.COOKIE = "cookie";
	this.AREA_SETTING = "area_setting";
	
	this.tmBlock = tmBlock;

	this.env = {};
	this.env.isIE50 = ( JLJS.env.isIE && navigator.appVersion.toLowerCase().match( /msie 5\.0/ )) ? true : false;
	this.env.isIE55 = ( JLJS.env.isIE && navigator.appVersion.toLowerCase().match( /msie 5\.5/ )) ? true : false;	
	this.lang = {};
	this.lang.isEN = location.pathname.match( /^\/en\/.?/ ) ? true : false; // whether displayed in English or not

	this.formNode = "";
	this.formAction = "//www.5971.jal.co.jp/eng/LFSSearchDispatch.do";
	
	this.isLoaded = false;
	
	this.setupParams = {};
	this.setupParams[this.FORM] = {};
	this.setupParams[this.FORM][this.ACTION] = this.formAction;	
	this.setupParams[this.FORM][this.METHOD] = "post";
	this.setupParams[this.FORM][this.TARGET] = "_blank";
	this.setupParams[this.FORM][this.LINK_ID] = "";
	this.setupParams[this.AIRPORT] = {};
	this.setupParams[this.AIRPORT][this.DEPAREA] = "";
	this.setupParams[this.AIRPORT][this.ARRAREA] = "";
	this.setupParams[this.DATE] = {};
	this.setupParams[this.DATE][this.OFFSET] = "";
	this.setupParams[this.DATE][this.DEPART_TIME] = "";
	this.setupParams[this.DATE][this.DAY_OF_WEEK_FLG] = true;
	this.setupParams[this.CUSTOM_DATE] = {};
	this.setupParams[this.CUSTOM_DATE][this.END_DATE] = "";
	this.setupParams[this.CUSTOM_DATE][this.CONST_DATE] = "";
	this.setupParams[this.OTHERS] = {};
	this.setupParams[this.OTHERS][this.BOARD_CLASS] = "";
	this.setupParams[this.OTHERS][this.CUSTOMER_ADALT] = "";
	this.setupParams[this.OTHERS][this.CUSTOMER_CHILD] = "";
	this.setupParams[this.OTHERS][this.CUSTOMER_INFANT] = "";
	this.setupParams[this.COOKIE] = {};
	this.setupParams[this.COOKIE][this.AREA_SETTING] = true;
}

JLJS_domTicketModule_en.prototype = {
	setup : function() {
		this.formNode = JLJS.getElementsByTagName("form", this.tmBlock)[0];
		if(!this.formNode) {
			return;
		}
		
		this.initSetupParams(arguments[0]);
		this.setupFormNode();
		this.setAirportNode();
		this.setupDateNodes();
		this.setupCalendarNodes();
		this.setupOthersNodes();
		this.afterSetUp();
		this.isLoaded = true;
	},
	
	initSetupParams : function(args) {
		var setupParams = {};
		if (JLJS_DomTMCtrl_en.isGotParamsFromArgs){
			setupParams = args.domTMFrm ? args.domTMFrm : {};
		}else{
			setupParams = JLJS_DomTMCtrl_en.xmlValue.domTMFrm ? JLJS_DomTMCtrl_en.xmlValue.domTMFrm : {};
		}
		
		for (var key1 in setupParams) {
			for (var key2 in setupParams[key1]) {
				this.setupParams[key1][key2] = setupParams[key1][key2];
			}
		}
	},
		
	setupFormNode : function() {
		this.formNode._TM_instance_ = this;
		var formParams = this.setupParams[this.FORM];
		this.formNode.action = formParams[this.ACTION];
		this.formNode.method = formParams[this.METHOD];
		this.formNode.target = formParams[this.TARGET];

		JLJS.addEvent(this.formNode, "submit", function(e) {
			if( !e.currentTarget._TM_instance_.submitForm()) {
				e.preventDefault();
			}
		});
		
		if (this.formNode[this.LINK_ID]) {
			this.formNode[this.LINK_ID].value = formParams[this.LINK_ID];
		}
	},
	
	setAirportNode : function() {
		//depart and arrival
		var airportParams = this.setupParams[this.AIRPORT];

		if(JLJS_DomTMCtrl_en.select_areaAirport){
			airportParams[this.DEPAREA] = JLJS_DomTMCtrl_en.select_areaAirport;
			airportParams[this.ARRAREA] = JLJS_DomTMCtrl_en.select_areaAirport;
		}else{
			if(airportParams[this.DEPAREA] || airportParams[this.ARRAREA]){
				//
			}else{
				if(this.setupParams[this.COOKIE][this.AREA_SETTING]){
					var areaAirport = JLJS_CookieMgr.get("areaAirport_en");
					airportParams[this.DEPAREA] = areaAirport;
					airportParams[this.ARRAREA] = areaAirport;
				}
			}
		}

		var depNode = document.getElementsByName(this.DEPAREA)[0];
		if(depNode){
			if(airportParams[this.DEPAREA]){
				for(var i=0; i<depNode.length; i++) {
					if(depNode[i].value == airportParams[this.DEPAREA]) {
						depNode[i].selected = true;
						break;
					}
				}
			}
		}
		
		var arrNode = document.getElementsByName(this.ARRAREA)[0];
		if(arrNode) {
			if(airportParams[this.ARRAREA]){
				for(var i=0; i<arrNode.length; i++) {
					if(arrNode[i].value == airportParams[this.ARRAREA]) {
						arrNode[i].selected = true;
						break;
					}
				}
			}
		}
	},

	setupDateNodes : function() {
		var dateNodes = {board : {month : this.DEPART_MONTH, day : this.DEPART_DAY}};
		var dateParams = this.setupParams[this.DATE];
		var customDateParams = this.setupParams[this.CUSTOM_DATE];
		
		var depDate = "";
		var customDateFlag = false;
		if(customDateParams[this.END_DATE] && customDateParams[this.CONST_DATE]){
			var endDateParam = customDateParams[this.END_DATE];
			var endDateArray = endDateParam.split("/");
			if(endDateArray.length == 3){
				var endDate = new Date(endDateArray[0], endDateArray[1]-1, endDateArray[2]);
				var systemDate = new Date();
				systemDate.setHours(0);
				systemDate.setMinutes(0);
				systemDate.setSeconds(0);
				systemDate.setMilliseconds(0);
				
				var constDateParam = customDateParams[this.CONST_DATE];
				var constDateArray = constDateParam.split("/");
				if(constDateArray.length == 3){
					if(endDate >= systemDate){
						depDate = constDateParam;
						customDateFlag = true;
					}
				}
			}
		}
		
		var options = {dayOfWeekFlag : eval(dateParams[this.DAY_OF_WEEK_FLG])};
		if(!customDateFlag){
			options["offset"] = eval(dateParams[this.OFFSET]);
		}
		
		var JLJS_TMDS = new JLJS_domTM_DateSelector_en(this, dateNodes, options);
		JLJS_TMDS.dateSpecify(depDate);
		
		//departureTime
		var depTime = document.getElementsByName(this.DEPART_TIME)[0];
		if(depTime) {
			for(var i=0; i<depTime.length; i++) {
				if(depTime[i].value == dateParams[this.DEPART_TIME]) {
					depTime[i].selected = true;
					break;
				}
			}
		}
	},
	
	setupCalendarNodes : function() {
		var dateParams = this.setupParams[this.DATE];
		var floatCalIcons = JLJS.getElementsByClassName( this.FLOAT_CAL_ICON, "a", this.formNode);

		for (var i=0;i<floatCalIcons.length;i++) {
			var floatCalIcon = floatCalIcons[i];
			floatCalIcon._TM_instance_ = this;
			if(JLJS_CalNav.used) {

				JLJS.addEvent(floatCalIcon,
					"click",
					function(e) {
						var tm = e.currentTarget._TM_instance_;
						var form = tm.formNode;
						var opt = {};
						opt = JLJS_CalNav.OPT_DOM_TM;
						opt["isEN"] = tm.lang.isEN;
						if(eval(tm.setupParams[tm.DATE][tm.DAY_OF_WEEK_FLG])){
							opt["dayOfWeekFlag"] = true;
						}
						var prm = {};
						prm["board"] = {month: form[tm.DEPART_MONTH], day: form[tm.DEPART_DAY]};		
						JLJS_CalNav.calDisplay(
							{target: e.currentTarget,
							option: opt,
							frm : prm
							}
						)
					}
				);

			} else {
				JLJS.classAttr.add(floatCalIcon, "hidden");
			}			
		}
	},
	
	setupOthersNodes : function() {
		var othersParames = this.setupParams[this.OTHERS];
		
		for(var key in othersParames) {
			var elm = document.getElementsByName(key)[0];
			if(elm){
				if(othersParames[key]) {
					elm.value = othersParames[key];
				}
			}
		}
	},
	
	afterSetUp : function() {
	},
	
	privateSubmitCheck : function() {
		return true;
	},
	
	submitFormSafari : function(frm) {
		var frmId = this.ADD_FORM_SAFARI;
		var addFrmElm = document.getElementById(frmId);
		
		if(addFrmElm) {
			document.body.removeChild(addFrmElm);
		}
		
		var createFrm = document.createElement("form");
		createFrm.id = frmId;
		createFrm.action = frm.action;
		createFrm.method = frm.method;
		createFrm.target = frm.target;
		
		var frmElms = frm.elements;
		for(var i=0; i<frmElms.length; i++) {
		
			frmElm = frmElms[i];
			if(!frmElm.disabled) {
			
				var name = "";
				var value = "";
				if(frmElm.type == "text" || 
					frmElm.type == "password" || 
					frmElm.type == "hidden" || 
					(frmElm.type == "radio" && frmElm.checked) || 
					(frmElm.type == "checkbox" && frmElm.checked) || 
					frmElm.type == "textarea") {
					
					name = frmElm.name;
					value = frmElm.value;
					
				} else if(frmElm.type == "select-one") {
					name = frmElm.name;
					value = frmElm.options[frmElm.selectedIndex].value;
				}
				
				if(name) {
					var createInput = document.createElement("input");
					createInput.type = "hidden";
					createInput.name = name;
					createInput.value = value;
					createFrm.appendChild(createInput);
				}
				
			}
		
		}
		
		document.body.appendChild(createFrm);
		addFrmElm = document.getElementById(frmId)
		addFrmElm.submit();		
	},
	
	submitForm : function() {
		if(!this.privateSubmitCheck()){
			return false;
		}
		
		if(JLJS.env.isSafari) {
			this.submitFormSafari(this.formNode);
		} else {
			this.formNode.submit();
		}

		return false;
	}
}

function JLJS_domTM_DateSelector_en( _TM_instance_, dateNodes, options ) {
	
	this.TODAY = "today";
	this.BOARD = "board";
	this.MONTH = "month";
	this.DAY = "day";
	this.OFFSET = "offset";
	this.DAY_OF_WEEK_FLG = "dayOfWeekFlag";
	this.DEP_DATE = "departureDate";
	this.PAD_ZERO = "padZero";
	this.INIT = "init";
	
	this.offset = 0;
	this.dayOfWeekFlag = true;
	this.padZero = false;
	
	if (options){
		this.offset = (options[this.OFFSET] || options[this.OFFSET]==0)  ? options[this.OFFSET] : this.offset;
		this.dayOfWeekFlag = options[this.DAY_OF_WEEK_FLG] ? true : false;
		this.padZero = options[this.PAD_ZERO] ? true : false;
	}
	
	this.depMonNode = _TM_instance_.formNode[ dateNodes[this.BOARD][this.MONTH] ];
	this.depDayNode = _TM_instance_.formNode[ dateNodes[this.BOARD][this.DAY] ];
	this.depMonNode._TMDS_instance_ = this;
	this.depDayNode._TMDS_instance_ = this;
	
	this.depDS = new JLJS_DateSelector( this.depMonNode, this.depDayNode );
	this.depDS.dayOfWeekFlag = this.dayOfWeekFlag;	

	if(this.dayOfWeekFlag) {
		JLJS.addEvent( this.depMonNode, "change", function( e ) {								   
			e.currentTarget._TMDS_instance_.depMonthChange();
		} );
	}
}

JLJS_domTM_DateSelector_en.prototype = {
	dateSpecify : function(departureDate) {
		var depArg = {departureDate : departureDate, init : true};
		this.depDateSpecify(depArg);
	},
	
	depDateSpecify : function(arg) {
		if (!arg) {arg = {};};
		if( this.depMonNode && this.depDayNode ) {
			if(arg[this.DEP_DATE]) {
				this.depDS.adjustToDate(arg[this.DEP_DATE]);
			}else {
				if (arg[this.INIT]) {
					this.depDS.adjustToToday();
					this.depDS.applyOffset( '+' + this.offset + 'd' );
				}
			}
			if (this.dayOfWeekFlag) {
				this.depDS.setDay(this.padZero);
			}
		}
	},
	
	depMonthChange : function() {
		this.depDS.setDateBySelecter();
		this.depDateSpecify();
	}
}

/*[hotel_AreaNarrowDawn]*/
function JLJS_HotelModuleNarrowDown(){
	this.countries = {
		"JPN" : {
		"CD" : "JPN", "title" : "Japan",
		"list" : [ "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47" ],
		"defaultFlg" : 1
		}
	};
	this.cities = {
		"01" : { "CD" : "01", "title" : "Sapporo", "list" : [ "ALL", "AIR" ] },
		"02" : { "CD" : "02", "title" : "Aomori", "list" : [ "ALL", "AIR" ] },
		"03" : { "CD" : "03", "title" : "Morioka","list" : [ "ALL", "AIR" ] },
		"04" : { "CD" : "04", "title" : "Sendai","list" : [ "ALL", "AIR" ] },
		"05" : { "CD" : "05", "title" : "Akita", "list" : [ "ALL", "AIR" ] },
		"06" : { "CD" : "06", "title" : "Yamagata", "list" : [ "ALL", "AIR" ] },
		"07" : { "CD" : "07", "title" : "Fukushima", "list" : [ "ALL", "AIR" ] },
		"08" : { "CD" : "08", "title" : "Mito", "list" : [ "ALL", "AIR" ] },
		"09" : { "CD" : "09", "title" : "Utsunomiya", "list" : [ "ALL", "AIR" ] },
		"10" : { "CD" : "10", "title" : "Maebashi", "list" : [ "ALL", "AIR" ] },
		"11" : { "CD" : "11", "title" : "Saitama", "list" : [ "ALL", "AIR" ] },
		"12" : { "CD" : "12", "title" : "Chiba","list" : [ "ALL", "NRT" ] },
		"13" : {
			"CD" : "13", "title" : "Tokyo",
			"list" : [ "TYO", "HND", "AKA", "RPG", "ASA", "UEN", "GIZ", "IKE", "ODA", "SBY", "SNG", "SIN", "IDA", "SBA", "NHB" ],
			"defaultFlg" : 1
		},
		"14" : { "CD" : "14", "title" : "Yokohama","list" : [ "ALL", "AIR" ] },
		"15" : { "CD" : "15", "title" : "Niigata","list" : [ "ALL", "AIR" ] },
		"16" : { "CD" : "16", "title" : "Toyama","list" : [ "ALL", "AIR" ] },
		"17" : { "CD" : "17", "title" : "Kanazawa","list" : [ "ALL", "AIR" ] },
		"18" : { "CD" : "18", "title" : "Fukui","list" : [ "ALL", "AIR" ] },
		"19" : { "CD" : "19", "title" : "Kofu","list" : [ "ALL", "AIR" ] },
		"20" : { "CD" : "20", "title" : "Nagano","list" : [ "ALL", "AIR" ] },
		"21" : { "CD" : "21", "title" : "Gifu","list" : [ "ALL", "AIR" ] },
		"22" : { "CD" : "22", "title" : "Shizuoka","list" : [ "ALL", "AIR" ] },
		"23" : { "CD" : "23", "title" : "Nagoya","list" : [ "ALL", "AIR" ] },
		"24" : { "CD" : "24", "title" : "Tsu","list" : [ "ALL", "AIR" ] },
		"25" : { "CD" : "25", "title" : "Otsu","list" : [ "ALL", "AIR" ] },
		"26" : { "CD" : "26", "title" : "Kyoto","list" : [ "ALL", "AIR" ] },
		"27" : { "CD" : "27", "title" : "Osaka","list" : [ "ALL", "AIR" ] },
		"28" : { "CD" : "28", "title" : "Kobe","list" : [ "ALL", "AIR" ] },
		"29" : { "CD" : "29", "title" : "Nara","list" : [ "ALL", "AIR" ] },
		"30" : { "CD" : "30", "title" : "Wakayama","list" : [ "ALL", "AIR" ] },
		"31" : { "CD" : "31", "title" : "Tottori","list" : [ "ALL", "AIR" ] },
		"32" : { "CD" : "32", "title" : "Matsue","list" : [ "ALL", "AIR" ] },
		"33" : { "CD" : "33", "title" : "Okayama","list" : [ "ALL", "AIR" ] },
		"34" : { "CD" : "34", "title" : "Hiroshima","list" : [ "ALL", "AIR" ] },
		"35" : { "CD" : "35", "title" : "Yamaguchi","list" : [ "ALL", "AIR" ] },
		"36" : { "CD" : "36", "title" : "Tokushima","list" : [ "ALL", "AIR" ] },
		"37" : { "CD" : "37", "title" : "Takamatsu","list" : [ "ALL", "AIR" ] },
		"38" : { "CD" : "38", "title" : "Matsuyama","list" : [ "ALL", "AIR" ] },
		"39" : { "CD" : "39", "title" : "Kochi","list" : [ "ALL", "AIR" ] },
		"40" : { "CD" : "40", "title" : "Fukuoka","list" : [ "ALL", "AIR" ] },
		"41" : { "CD" : "41", "title" : "Saga","list" : [ "ALL", "AIR" ] },
		"42" : { "CD" : "42", "title" : "Nagasaki","list" : [ "ALL", "AIR" ] },
		"43" : { "CD" : "43", "title" : "Kumamoto","list" : [ "ALL", "AIR" ] },
		"44" : { "CD" : "44", "title" : "Oita","list" : [ "ALL", "AIR" ] },
		"45" : { "CD" : "45", "title" : "Miyazaki","list" : [ "ALL", "AIR" ] },
		"46" : { "CD" : "46", "title" : "Kagoshima","list" : [ "ALL", "AIR" ] },
		"47" : { "CD" : "47", "title" : "Naha","list" : [ "ALL", "AIR" ] }
	};
	this.areas = {
		"TYO" : { "CD" : "130", "title" : "-", "defaultFlg" : 1 },
		"HND" : { "CD" : "131", "title" : "Haneda Airport" },
		"AKA" : { "CD" : "132", "title" : "Akasaka" },
		"RPG" : { "CD" : "133", "title" : "Roppongi" },
		"ASA" : { "CD" : "134", "title" : "Asakusa" },
		"UEN" : { "CD" : "135", "title" : "Ueno" },
		"GIZ" : { "CD" : "136", "title" : "Ginza" },
		"IKE" : { "CD" : "137", "title" : "Ikebukuro" },
		"ODA" : { "CD" : "138", "title" : "Odaiba" },
		"SBY" : { "CD" : "139", "title" : "Shibuya" },
		"SNG" : { "CD" : "13a", "title" : "Shinagawa" },
		"SIN" : { "CD" : "13b", "title" : "Shinjuku" },
		"IDA" : { "CD" : "13c", "title" : "Iidabashi" },
		"SBA" : { "CD" : "13d", "title" : "Shiba" },
		"NHB" : { "CD" : "13e", "title" : "Nihonbashi" },
		"ALL" : { "CD" : "", "title" : "-" },
		"AIR" : { "CD" : "", "title" : "Airport" },
		"NRT" : { "CD" : "", "title" : "Narita Airport" }
	};
	this.countryOP = null;
	this.cityOP = null;
	this.areaOP = null;
}

JLJS_HotelModuleNarrowDown.prototype = {
	init : function( forms ){
		if(!forms){ return; }
		
		this.countryHD = forms["country"];
		this.cityOP = forms["city"];
		this.areaOP = forms["area"];
		this.setCityOptions();
	},
	
	narrowDownCity : function(){
		var cityVal = this.cityOP[this.cityOP.selectedIndex].value;
		this.areaOP.options.length = 0;
		
		for(var i=0; i<this.cities[cityVal]["list"].length; i++){
			var cityList = this.cities[cityVal]["list"][i];
			var newOPT = this.setAreaTextValue(cityVal, cityList);
			this.areaOP.appendChild(newOPT);
		}
	},
	
	setCityOptions : function(){
		var countryVal = this.countryHD.value;
		
		this.cityOP.length = 0;
		for(var j=0; j<this.countries[countryVal]["list"].length; j++){
			var countryList = this.countries[countryVal]["list"][j];
			var newOPT = this.setCityTextValue(countryVal, countryList);
			this.cityOP.appendChild(newOPT);
		}
		
		this.setAreaOptions();
	},
	
	setAreaOptions : function(){
		var cityVal = this.cityOP[this.cityOP.selectedIndex].value;
		
		this.areaOP.length = 0;
		for(var k=0; k<this.cities[cityVal]["list"].length; k++){
			var cityList = this.cities[cityVal]["list"][k];
			var newOPT = this.setAreaTextValue(cityVal, cityList);
			this.areaOP.appendChild(newOPT);
		}
	},
	
	setAreaTextValue : function(cityVal, cityList){
		var newOPT = document.createElement( 'option' );

		if(cityList == "ALL"){
			newOPT.value = cityVal +"0";
		}else if(cityList == "AIR"){
			newOPT.value =  cityVal + "1";
		}else if(cityList == "NRT"){
			newOPT.value =  cityVal + "1";
		}else{
			newOPT.value = this.areas[cityList][ "CD" ];
		}
		newOPT.innerHTML = this.areas[cityList][ "title" ];
		
		if(this.areas[cityList]["defaultFlg"]){
			newOPT.selected = true;
		}
		
		return newOPT;
	},
	
	setCityTextValue : function(countryVal, countryList){
		var newOPT = document.createElement( 'option' );
		newOPT.value = this.cities[countryList][ "CD" ];
		newOPT.innerHTML = this.cities[countryList][ "title" ];
		
		if(this.cities[countryList]["defaultFlg"]){
			newOPT.selected = true;
		}
		
		return newOPT;
	}
}

var JLJS_HMnarrowdown = new JLJS_HotelModuleNarrowDown();



//--------------------------------------------------------------------------------------------------------------------------------
// Hotel Module
//--------------------------------------------------------------------------------------------------------------------------------

function JLJS_domHotelModule_en(hmBlock) {
	this.hmBlock = hmBlock;
	this.formNode = null;
	this.setupParams = {};
	this.dayOfWeekFlag = true;
}

JLJS_domHotelModule_en.prototype = {
	setup : function() {
		this.formNode = JLJS.getElementsByTagName("form", this.hmBlock)[0];
		if(!this.formNode) {
			return;
		}
		this.initSetupParams(arguments[0]);
		this.setupFormNode();
		this.setupAreaNode();
		this.setupDateNodes();
		this.setupCalendarNodes();
		this.setupOthersNodes();
		this.afterSetUp();
	},
	
	initSetupParams : function(args) {
		var setupParams = {};
		if (JLJS_DomTMCtrl_en.isGotParamsFromArgs){
			setupParams = args.domHM ? args.domHM : {};
		}else{
			setupParams = JLJS_DomTMCtrl_en.xmlValue.domHMFrm ? JLJS_DomTMCtrl_en.xmlValue.domHMFrm : {};
		}
		
		for (var key1 in setupParams) {
			this.setupParams[key1] = {};
			for (var key2 in setupParams[key1]) {
				this.setupParams[key1][key2] = setupParams[key1][key2];
			}
		}
	},
	
	setupFormNode : function() {
		this.formNode._HM_instance_ = this;
		var formParams = this.setupParams.formNode;
		if(formParams) {
			if(formParams.action) {
				this.formNode.action = formParams.action;
			}
			if(formParams.method) {
				this.formNode.method = formParams.method;
			}
			if(formParams.target) {
				this.formNode.target = formParams.target;
			}
		}
		JLJS.addEvent(this.formNode, "submit", function(e) {
			e.currentTarget._HM_instance_.submitForm();
			e.preventDefault();
		});		
	},
	
	setupAreaNode : function() {
		JLJS_HMnarrowdown.init(this.formNode);
		JLJS.addEvent(this.formNode.city,
						"change",
						function(e){JLJS_HMnarrowdown.narrowDownCity();});
		var areaParames = this.setupParams.areaNode;
		
		if(areaParames) {
			if(areaParames.countries) {
				this.formNode.country.value = areaParames.countries;
				JLJS_HMnarrowdown.setCityOptions();
			}
			if(areaParames.city) {
				this.setElementValue(this.formNode, "city", areaParames.city);
				JLJS_HMnarrowdown.setAreaOptions();
			}
			if(areaParames.area) {
				this.setElementValue(this.formNode, "area", areaParames.area);
			}
		}
	},
	
	setupDateNodes : function() {
		var dateNodes = {board : {month : "month", day : "day"}};
		var dateParams = this.setupParams.dateNode;
		var options = {offset:"7",dayOfWeekFlag:"true",padZero:"true"};
		if(dateParams) {
			if(dateParams.offset) {
				options.offset = dateParams.offset;
			}
			if(dateParams.dayOfWeekFlag) {
				options.dayOfWeekFlag = dateParams.dayOfWeekFlag;
				if(dateParams.dayOfWeekFlag.toLowerCase() == "false") {
					this.dayOfWeekFlag = false;
				}
			}
		}
		
		var JLJS_TMDS = new JLJS_domTM_DateSelector_en(this, dateNodes, options);
		var depDate = "";
		JLJS_TMDS.dateSpecify(depDate);
	},
	
	setupCalendarNodes : function() {
		var floatCalIcons = JLJS.getElementsByClassName("floatCalIcon", "a", this.formNode);

		for (var i=0;i<floatCalIcons.length;i++) {
			var floatCalIcon = floatCalIcons[i];
			floatCalIcon._HM_instance_ = this;
			if(JLJS_CalNav.used) {
				JLJS.addEvent(floatCalIcon,
					"click",
					function(e) {
						var hm = e.currentTarget._HM_instance_;
						var form = hm.formNode;
						var opt = {start:0, end:365, startNoReserveMonthDisplay:false, dayOfWeekFlag:true, dayZeroFlag: true, isEN:true};
						if(!hm.dayOfWeekFlag){
							opt["dayOfWeekFlag"] = false;
						}
						var prm = {};
						prm["board"] = {month: form.month, day: form.day};		
						JLJS_CalNav.calDisplay(
							{target: e.currentTarget,
							option: opt,
							frm : prm
							}
						)
					}
				);

			} else {
				JLJS.classAttr.add(floatCalIcon, "hidden");
			}			
		}
	},
	
	setupOthersNodes : function() {
		var othersParames = this.setupParams.otherNode;
		
		for(var key in othersParames) {
			this.setElementValue(this.formNode, key, otherParams[key]);
		}
	},
	
	submitForm : function() {
		var inputFrm = this.formNode;
		var submitFrm = document.domHMSubmitFrm;
		
		submitFrm.action = inputFrm.action;
		submitFrm.method = inputFrm.method;
		submitFrm.target = inputFrm.target;
		submitFrm.area.value = inputFrm.area[inputFrm.area.selectedIndex].value;
		submitFrm.month.value = inputFrm.month[inputFrm.month.selectedIndex].value;
		submitFrm.day.value = inputFrm.day[inputFrm.day.selectedIndex].value;
		submitFrm.period.value = inputFrm.period[inputFrm.period.selectedIndex].value;
		submitFrm.room_type.value = inputFrm.room_type[inputFrm.room_type.selectedIndex].value;
		submitFrm.rooms.value = inputFrm.rooms[inputFrm.rooms.selectedIndex].value;
		submitFrm.start_rating.value = inputFrm.start_rating[inputFrm.start_rating.selectedIndex].value;
		submitFrm.p_from.value = inputFrm.p_from[inputFrm.p_from.selectedIndex].value;
		submitFrm.p_to.value = inputFrm.p_to[inputFrm.p_to.selectedIndex].value;
		submitFrm.submit();
	},

	setElementValue : function(frm, name, value) {
		if(frm && frm[name]) {
			var type = frm[name].type;
			if(!type && frm[name].length) {
				type = frm[name][0].type;
			}
			if(type == "text" || type == "hidden") {
				frm[name].value = value;
			} else if(type == "select-one") {
				for(var i=0; i<frm[name].options.length; i++) {
					if(frm[name].options[i].value == value) {
						frm[name].options[i].selected = true;
						break;
					}
				}
			} else if(type == "radio") {
				if(frm[name].length) {
					for(var i=0; i<frm[name].length; i++) {
						if(frm[name][i].value == value) {
							frm[name][i].checked = true;
							break;
						}
					}
				} else if(frm[name].value == value) {
					frm[name].checked = true;
				}
			} else if(type == "checkbox") {
				if(frm[name].value == value) {
					frm[name].checked = true;
				}
			}
		}
	},

	afterSetUp : function() {
	}
}
