function JLJS_IntScheduleModule(block) {

	this.FORM = "formNode";
	this.ACTION = "action";
	this.METHOD = "method";
	this.TARGET = "target";
	
	this.TARGET_VAL = "_self";
	this.TARGET_VAL_EN = "_blank";
	
	this.PRM_MEETINGMONTH = "PRM_MEETINGMONTH";
	this.PRM_MEETINGDATE = "PRM_MEETINGDATE";
	this.PRM_SENDINGMONTH = "PRM_SENDINGMONTH";
	this.PRM_SENDINGDATE = "PRM_SENDINGDATE";
	this.DATE = "dateNode";
	this.OFFSET = "offset";
	this.INTERVAL = "interval";
	this.DAY_OF_WEEK_FLG = "dayOfWeekFlag";

	this.PRM_DEPAREA = "PRM_DEPAREA";
	this.PRM_DEPARTURE = "PRM_DEPARTURE";
	this.PRM_ARRAREA = "PRM_ARRAREA";
	this.PRM_ARRIVAL = "PRM_ARRIVAL";
	this.NARROW_DOWN = "narrowDownNode";
	this.TYPE_D = "d";
	this.TYPE_A = "a";
	this.DEP_NO_AREA_SELECTION = "depNoAreaSelection";
	this.DEP_AREA_SLCT_SET = "depAreaSlctSet";
	this.DEP_DEFAULT_AREA = "depDefaultArea";
	this.DEP_DEFAULT_CITY = "depDefaultCity";
	this.DEP_NO_GROUP = "depNoGroup";
	this.DEP_NO_LABEL = "depNoLabel";
	this.DEP_NO_DEVIDE = "depNoDevide";
	this.DEP_ONLINE_ONLY = "depOnlineOnly";
	this.DEP_ONLINE_SEPARATING_VIEW_OFF = "depOnlineSeparatingViewOff";
	this.DEP_LABEL_OPT = "depLabelOpt";
	this.ARR_NO_AREA_SELECTION = "arrNoAreaSelection";
	this.ARR_AREA_SLCT_SET = "arrAreaSlctSet";
	this.ARR_DEFAULT_AREA = "arrDefaultArea";
	this.ARR_DEFAULT_CITY = "arrDefaultCity";
	this.ARR_NO_GROUP = "arrNoGroup";
	this.ARR_NO_LABEL = "arrNoLabel";
	this.ARR_NO_DEVIDE = "arrNoDevide";
	this.ARR_ONLINE_ONLY = "arrOnlineOnly";
	this.ARR_ONLINE_SEPARATING_VIEW_OFF = "arrOnlineSeparatingViewOff";
	this.ARR_LABEL_OPT = "arrLabelOpt";
	this.EN = "en";
	this.NO_DOM = "noDOM";
	
	this.INT_SM_COOKIE = "intSMCookie";	
	this.FLOAT_CAL_ICON = "floatCalIcon";
	this.CLASS_RADIO_SEND = "radioSend";
	this.ADD_FORM_SAFARI = "addFormSafari";
	
	this.smBlock = block;
	this.formNode = {};

	this.setupParams = {};
	this.setupParams[this.FORM] = {};
	this.setupParams[this.FORM][this.ACTION] = "//www.5931.jal.co.jp/rsvInter/ScheduleInfoResult.do";
	this.setupParams[this.FORM][this.METHOD] = "post";
	this.setupParams[this.FORM][this.TARGET] = this.TARGET_VAL;
	this.setupParams[this.DATE] = {};
	this.setupParams[this.DATE][this.OFFSET] = 30;
	this.setupParams[this.DATE][this.INTERVAL] = 4;
	this.setupParams[this.DATE][this.DAY_OF_WEEK_FLG] = true;	
	this.setupParams[this.NARROW_DOWN] = {};
	this.setupParams[this.NARROW_DOWN][this.DEP_NO_AREA_SELECTION] = false;
	this.setupParams[this.NARROW_DOWN][this.DEP_AREA_SLCT_SET] = "whole_01";
	this.setupParams[this.NARROW_DOWN][this.DEP_DEFAULT_AREA] = "JPN";
	this.setupParams[this.NARROW_DOWN][this.DEP_DEFAULT_CITY] = "TYO";
	this.setupParams[this.NARROW_DOWN][this.DEP_NO_GROUP] = false;
	this.setupParams[this.NARROW_DOWN][this.DEP_NO_LABEL] = false;
	this.setupParams[this.NARROW_DOWN][this.DEP_NO_DEVIDE] = false;
	this.setupParams[this.NARROW_DOWN][this.DEP_ONLINE_ONLY] = false;
	this.setupParams[this.NARROW_DOWN][this.DEP_ONLINE_SEPARATING_VIEW_OFF] = false;
	this.setupParams[this.NARROW_DOWN][this.DEP_LABEL_OPT] = false;
	this.setupParams[this.NARROW_DOWN][this.ARR_NO_AREA_SELECTION] = false;
	this.setupParams[this.NARROW_DOWN][this.ARR_AREA_SLCT_SET] = "whole_01";
	this.setupParams[this.NARROW_DOWN][this.ARR_DEFAULT_AREA] = "";
	this.setupParams[this.NARROW_DOWN][this.ARR_DEFAULT_CITY] = "";
	this.setupParams[this.NARROW_DOWN][this.ARR_NO_GROUP] = false;
	this.setupParams[this.NARROW_DOWN][this.ARR_NO_LABEL] = false;
	this.setupParams[this.NARROW_DOWN][this.ARR_NO_DEVIDE] = false;
	this.setupParams[this.NARROW_DOWN][this.ARR_ONLINE_ONLY] = false;
	this.setupParams[this.NARROW_DOWN][this.ARR_ONLINE_SEPARATING_VIEW_OFF] = false;
	this.setupParams[this.NARROW_DOWN][this.ARR_LABEL_OPT] = false;
	this.setupParams[this.NARROW_DOWN][this.EN] = false;

	this.cookiePRMs = [
		this.PRM_DEPAREA, this.PRM_DEPARTURE,
		this.PRM_ARRAREA, this.PRM_ARRIVAL,
		this.PRM_MEETINGMONTH, this.PRM_MEETINGDATE,
		this.PRM_SENDINGMONTH, this.PRM_SENDINGDATE
	];
	
	this.cookieHash = JLJS_CookieMgr.getMultiCookie(this.INT_SM_COOKIE);

	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;
	
	if(this.lang.isEN) {
		this.setupParams[this.FORM][this.TARGET] = this.TARGET_VAL_EN;
	}
}

JLJS_IntScheduleModule.prototype = {

	setup : function() {
		
		this.formNode = JLJS.getElementsByTagName("form", this.smBlock)[0];
		if (!this.formNode) return;
		
		this.initSetupParams(arguments[0]);
		this.setupFormNode();
		if (!this.cookieHash) this.cookieHash = {};
		this.setupNarrowDownNodes();
		this.setupDateNodes();
		this.setupCalendarNodes();
		this.setupRadioSendNodes();
		this.afterSetUp();
		this.isLoaded = true;
	},
	
	initSetupParams : function(args) {
		for (var key1 in args) {
			for (var key2 in args[key1]) {
				this.setupParams[key1][key2] = args[key1][key2];
			}
		}
	},
	
	setupFormNode : function() {
		this.formNode._SM_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._SM_instance_.submitForm()) e.preventDefault();
		});
	},
	
	setupNarrowDownNodes : function() {
		var narrowDownParams = this.setupParams[this.NARROW_DOWN];
		var narrowDownArgs = {
			dep : {
				nodes : {
					areaNode : this.PRM_DEPAREA
					,cityNode : this.PRM_DEPARTURE
				}
				,options : {
					type : this.TYPE_D
					,noAreaSelection : narrowDownParams[this.DEP_NO_AREA_SELECTION]
					,areaSlctSet : narrowDownParams[this.DEP_AREA_SLCT_SET]
					,defaultArea : narrowDownParams[this.DEP_DEFAULT_AREA]
					,defaultCity :  narrowDownParams[this.DEP_DEFAULT_CITY]
					,noGroup : eval(narrowDownParams[this.DEP_NO_GROUP])
					,noLabel : eval(narrowDownParams[this.DEP_NO_LABEL])
					,noDevide : eval(narrowDownParams[this.DEP_NO_DEVIDE])
					,onLineOnly : eval(narrowDownParams[this.DEP_ONLINE_ONLY])
					,onLineSeparatingView_Off : eval(narrowDownParams[this.DEP_ONLINE_SEPARATING_VIEW_OFF])
					,labelOpt : eval((narrowDownParams[this.DEP_LABEL_OPT] || ( this.env.isIE50 || this.env.isIE55 || ( JLJS.env.isMac && JLJS.env.isIE ) || JLJS.env.isOpera )))
				}
			}
			,arr : {
				nodes : {
					areaNode : this.PRM_ARRAREA
					,cityNode : this.PRM_ARRIVAL
				}
				,options : {
					type : this.TYPE_A
					,noAreaSelection : narrowDownParams[this.ARR_NO_AREA_SELECTION]
					,areaSlctSet : narrowDownParams[this.ARR_AREA_SLCT_SET]
					,defaultArea : narrowDownParams[this.ARR_DEFAULT_AREA]
					,defaultCity :  narrowDownParams[this.ARR_DEFAULT_CITY]
					,noGroup : eval(narrowDownParams[this.ARR_NO_GROUP])
					,noLabel : eval(narrowDownParams[this.ARR_NO_LABEL])
					,noDevide : eval(narrowDownParams[this.ARR_NO_DEVIDE])
					,onLineOnly : eval(narrowDownParams[this.ARR_ONLINE_ONLY])
					,onLineSeparatingView_Off : eval(narrowDownParams[this.ARR_ONLINE_SEPARATING_VIEW_OFF])
					,labelOpt : eval((narrowDownParams[this.ARR_LABEL_OPT] || ( this.env.isIE50 || this.env.isIE55 || ( JLJS.env.isMac && JLJS.env.isIE ) || JLJS.env.isOpera )))
				}
			}
		}

		for( var key in narrowDownArgs ) {
			
			var args = narrowDownArgs[key];
			
			args["options"][this.EN] = this.lang.isEN;
			args["options"][this.NO_DOM] = this.env.isIE50;

			var JLJS_TMAND = new JLJS_intTM_AirportNarrowDown(this, args["nodes"], args["options"]);
			if (key == "dep"){
				if (this.cookieHash[this.PRM_DEPAREA]){
					JLJS_TMAND.defaultArea = this.cookieHash[this.PRM_DEPAREA];
				}
				if (this.cookieHash[this.PRM_DEPARTURE]) {
					JLJS_TMAND.defaultCity = this.cookieHash[this.PRM_DEPARTURE];
				}
			}else if (key == "arr") {
				if (this.cookieHash[this.PRM_ARRAREA]){
					JLJS_TMAND.defaultArea = this.cookieHash[this.PRM_ARRAREA];
				}
				if (this.cookieHash[this.PRM_ARRIVAL]) {
					JLJS_TMAND.defaultCity = this.cookieHash[this.PRM_ARRIVAL];
				}				
			}
			
			JLJS_TMAND.setDefault();
			JLJS_TMAND.setAreaSelector();
			JLJS_TMAND.narrowDown(JLJS_TMAND.defaultArea);
			
			JLJS_TMAND.defaultCity = "";

			if( JLJS_TMAND.areaNode ) {
				JLJS.addEvent( JLJS_TMAND.areaNode, 'change', function( e ) {
					if(!e.currentTarget._TMAND_instance_.narrowDown( e.currentTarget.value )) e.preventDefault();
				} );
			}
		}		
	},
	
	setupDateNodes : function() {	
		var dateNodes = {"board" : {month : this.PRM_MEETINGMONTH, day : this.PRM_MEETINGDATE},
						"return" : {month : this.PRM_SENDINGMONTH, day : this.PRM_SENDINGDATE}};
		var dateParams = this.setupParams[this.DATE];
		var options = {offset : eval(dateParams[this.OFFSET])
						, interval : eval(dateParams[this.INTERVAL])
						, dayOfWeekFlag : eval(dateParams[this.DAY_OF_WEEK_FLG])
		}
		var JLJS_TMDS = new JLJS_intTM_DateSelector(this, dateNodes, options);
		var cookieDepDate = "";
		var cookieRetDate = "";
		if (this.cookieHash[this.PRM_MEETINGMONTH] && this.cookieHash[this.PRM_MEETINGDATE]){
			cookieDepDate = this.cookieHash[this.PRM_MEETINGMONTH] + "-" + this.cookieHash[this.PRM_MEETINGDATE];
		}
		if (this.cookieHash[this.PRM_SENDINGMONTH] && this.cookieHash[this.PRM_SENDINGDATE]){
			cookieRetDate = this.cookieHash[this.PRM_SENDINGMONTH] + "-" + this.cookieHash[this.PRM_SENDINGDATE];
		}
		JLJS_TMDS.dateSpecify(cookieDepDate, cookieRetDate);
	},
	
	setupCalendarNodes : function() {
		var dateParams = this.setupParams[this.DATE];
		var floatCalIcons = JLJS.getElementsByClassName( this.FLOAT_CAL_ICON, "a", this.formNode);
		//JLJS_CalNav.OPT_INT_TM.isEN = this.lang.isEN;
		//JLJS_CalNav.OPT_INT_TM.dayOfWeekFlag = dateParams[this.DAY_OF_WEEK_FLG];
		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["start"] = 0;
						opt["end"] = 365;
						opt["startNoReserveMonthDisplay"] = false;
						opt["dayOfWeekFlag"] = tm.setupParams[tm.DATE][tm.DAY_OF_WEEK_FLG];
						opt["isEN"] = tm.lang.isEN;
						var prm = {};
						if (JLJS.classAttr["check"](e.currentTarget, "meet")) {
							prm["board"] = {month: form[tm.PRM_MEETINGMONTH], day: form[tm.PRM_MEETINGDATE]};
							prm["arrival"] = {month: form[tm.PRM_SENDINGMONTH], day: form[tm.PRM_SENDINGDATE]};
						}else{
							prm["board"] = {month: form[tm.PRM_SENDINGMONTH], day: form[tm.PRM_SENDINGDATE]};		
						}
						JLJS_CalNav.calDisplay(
							{target: e.currentTarget,
							option: opt,
							frm : prm
							}
						)
					}
				);

			} else {
				JLJS.classAttr.add(floatCalIcon, "hidden");
			}			
		}		
	},
	
	setupRadioSendNodes : function() {
		if (JLJS.env.isIE) {
			
			var radioSendLabels = JLJS.getElementsByClassName(this.CLASS_RADIO_SEND, "label", this.smBlock);
			for (var i=0;i<radioSendLabels.length;i++) {
				radioSendLabels[i]._SM_instance_ = this;
				JLJS.addEvent(radioSendLabels[i], 'click', function( e ) {
					e.currentTarget._SM_instance_.labelClick(e.currentTarget);
				});
			}			
		}
	},

	labelClick : function(label) {
		var radio = JLJS.getElementsByTagName("input", label)[0];
		radio.checked = true;
	},
	
	afterSetUp : function() {
	},
	
	private_submitCheck : 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.private_submitCheck()) return false;

		for (var i=0;i<this.cookiePRMs.length;i++) {
			if (this.formNode[this.cookiePRMs[i]]) {
				this.cookieHash[this.cookiePRMs[i]] = this.formNode[this.cookiePRMs[i]].value;	
			}
		}
		JLJS_CookieMgr.setMultiCookie(this.INT_SM_COOKIE, this.cookieHash);
		
		var da = this.formNode[ this.PRM_DEPAREA ];
		var aa = this.formNode[ this.PRM_ARRAREA ];
		
		if( da ) da.disabled = true;
		if( aa ) aa.disabled = true;
		if(JLJS.env.isSafari) {
			this.submitFormSafari(this.formNode);
		} else {
			this.formNode.submit();
		}
		if( da ) da.disabled = false;
		if( aa ) aa.disabled = false;

		return false;

	}
}

var JLJS_SMs = [];
function JLJS_intScheduleModuleSetup(){
	
	var scheduleBlocks = JLJS.getElementsByClassName("JS_intScheduleModuleBlock", "div");
	if (!scheduleBlocks[0]) return;
	
	for (var i=0;i<scheduleBlocks.length;i++) {
		var scheduleBlock = scheduleBlocks[i];
		
		JLJS_SMs[i] = new JLJS_IntScheduleModule(scheduleBlock);
		JLJS_SMs[i].setup(arguments[0]);
		
	}
}

JLJS.addEvent(window, "unload", function(){});


