Ext.onReady(function() {
	// Extおまじない
	Ext.BLANK_IMAGE_URL = 'scripts/lib/ext/resources/images/default/s.gif';
	Ext.QuickTips.init();

	var baseUrl = 'tabitabi.php';
	//var baseUrl = 'plansa.xml';

	var resultPanel = new Ext.Panel({
		id: 'rpanel',
		region: 'center',
		border: false,
		bodyStyle: 'padding-left: 20px; padding-top: 10px; overflow: auto',
		items: [{
			border: false,
			html: '<div><div id="dept"></div></div>'
		}]
	});

	var keyword = new Ext.form.TextField({
		id: 'keyword',
		fieldLabel: 'キーワード',
		allowBlank: false,
		emptyText: 'キーワードを入力してください。',
		msgTarget: 'qtip',
		anchor: '100%'
	});

	var start_name = new Ext.form.TextField({
		id: 'start_name',
		fieldLabel: '出発地',
		allowBlank: false,
		emptyText: '出発地を入力してください。',
		anchor: '100%'
	});

	var end_name = new Ext.form.ComboBox({
		id: 'end_name',
		fieldLabel: '到着地',
		typeAhead: true,
		mode: 'local',
		editable: false,
		triggerAction: 'all',
		emptyText: '選択してください。',
		displayField: 'label',
		store: new Ext.data.SimpleStore({
			fields: [ 'label', 'value' ],
			data: prefectures
		})
	});

	var rate_option = new Ext.form.Checkbox({
		id: 'rate_option',
		boxLabel: '安い宿',
		hideLabel: true
	});

	new Ext.Viewport({
		layout: 'border',
		items: [{
			region: 'north',
			height: 140,
			border: false,
			style: 'border-bottom: 1px solid #000000',
			items: [
				{
					contentEl: 'header',
					border: false
				},
				new Ext.form.FormPanel({
					border: false,
					items: [{
						layout: 'column',
						border: false,
							items: [{
								columnWidth: .27,
								layout: 'form',
								labelWidth: 70,
								border: false,
								bodyStyle: 'padding-left: 20px; padding-right: 10px',
								items: keyword
							}, {
								columnWidth: .25,
								layout: 'form',
								labelWidth: 50,
								border: false,
								bodyStyle: 'padding-right: 10px',
								items: start_name
							}, {
								columnWidth: .25,
								layout: 'form',
								labelWidth: 50,
								border: false,
								items: end_name
							}, {
								columnWidth: .10,
								layout: 'form',
								border: false,
								items: rate_option
							}, {
								columnWidth: .13,
								layout: 'form',
								border: false,
								items: new Ext.Button({
									text: '検索',
									minWidth: 80,
									handler: function() {
										if (!keyword.validate() || !start_name.validate()) {
											return;
										}

										// ローディングメッセージ表示
										var loadingMsg = '<img src="scripts/lib/ext/resources/images/default/shared/blue-loading.gif" align="middle" /> 検索処理中です。しばらくお待ちください...';
										if (Ext.isIE) {
											Ext.getBody().mask(loadingMsg);
										} else {
											var el = Ext.get(document.documentElement || document.body);
											el.mask(loadingMsg);
										}

										/*
										var http = new JKL.ParseXML(baseUrl, Ext.urlEncode({
											keyword: keyword.getValue(),
											start_name: start_name.getValue(),
											end_name: end_name.getValue(),
											rate_option: rate_option.getValue() ? 1 : 2
										}));
										*/
										var http = new JKL.ParseXML(baseUrl + "?" + Ext.urlEncode({
											keyword: keyword.getValue(),
											start_name: start_name.getValue(),
											end_name: end_name.getValue(),
											rate_option: rate_option.getValue() ? 1 : 2
										}));

										http.async(function(data){
											if (data.Results) {
												var firstPlanContents = data.Results.Plan[0].Contents;
												data.Results.Plan[0].Contents = new Array(firstPlanContents);
												data.Results.Plan[0].Title = '日帰り';
												data.Results.Plan[1].Title = '1泊2日';
												data.Results.Plan[2].Title = '2泊3日';

												data.Results.Hotel.Caption = data.Results.Hotel.Caption.replace('<br>', '');
												data.Results.Hotel.Caption = data.Results.Hotel.Caption.replace('<br />', '');
												data.Results.Hotel.Caption = data.Results.Hotel.Caption.replace('<BR>', '');
												data.Results.Hotel.Caption = data.Results.Hotel.Caption.replace('<BR />', '');

												var hina = new JKL.Hina('template');
												hina.expand(data, 'dept');

												Ext.get('route').update(data.Results.Route);
											} else if (data.Error) {
												var hina = new JKL.Hina('errorTemplate');
												hina.expand(data, 'dept');
											}

											// トップ表示に戻す
											resultPanel.body.scrollTo('top', 0, { duration: .75 });

											// ローディングメッセージ非表示
											if (Ext.isIE) {
												Ext.getBody().unmask();
											} else {
												var el = Ext.get(document.documentElement || document.body);
												el.unmask();
											}
										});
										http.onerror(function(data) {
											var hina = new JKL.Hina('errorTemplate');
											hina.expand({ Error: '検索実行中にエラーが発生しました。もう一度検索してください。' }, 'dept');

											// ローディングメッセージ非表示
											if (Ext.isIE) {
												Ext.getBody().unmask();
											} else {
												var el = Ext.get(document.documentElement || document.body);
												el.unmask();
											}
										});
										http.parse();
									}
								})
							}]
						}]
					})
				]
			},
			resultPanel,
			new Ext.Panel({
				region: 'east',
				border: false,
				width: 210,
				items: [{
					bodyStyle: 'padding: 10px',
					border: false,
					items: [
						new Ext.DatePicker(),
						{
							border: false,
							bodyStyle: 'margin-top: 10px',
							contentEl: 'link'
						}
					]
				}]
			})
		]
	});
});

function outputPdf() {
	var data = '経路\r\n';

	// 経路情報テキスト化 START
	var route = Ext.select('#dept table.route_table #route').elements[0];
	var start_end = Ext.fly(route).select('b').elements;
	if (start_end[0]) {
		data += start_end[0].firstChild.nodeValue + '\r\n';
	}

	var brs = Ext.fly(route).select('br').elements;
	for (var i=0;i<brs.length;i++) {
		if (brs[i].nextSibling && brs[i].nextSibling.nodeValue) {
			data += (brs[i].nextSibling.nodeValue + '\r\n');
		}
	}

	if (start_end[1]) {
		data += start_end[1].firstChild.nodeValue;
	}
	data += '\r\n \r\n';
	// 経路情報テキスト化 END

	// ホテル情報テキスト化 START
	data += 'ホテル情報\r\n';

	var hotel_name = Ext.select('#dept #hotel_name').elements[0];
	data += hotel_name.firstChild.nodeValue + '\r\n';

	var hotel_addr = Ext.select('#dept #hotel_addr').elements[0];
	data += hotel_addr.firstChild.nodeValue + '\r\n \r\n';

	var hotel_caption = Ext.select('#dept #hotel_caption').elements[0];
	data += hotel_caption.firstChild.nodeValue + '\r\n \r\n \r\n';

	var hotel_checkin = Ext.select('#dept #hotel_checkin').elements[0];
	data += hotel_checkin.firstChild.nodeValue + ' ／ ';

	var hotel_checkout = Ext.select('#dept #hotel_checkout').elements[0];
	data += hotel_checkout.firstChild.nodeValue + ' ／';

	var hotel_rate = Ext.select('#dept #hotel_rate').elements[0];
	data += hotel_rate.firstChild.nodeValue + '\r\n \r\n';
	// ホテル情報テキスト化 END

	// プランテキスト化 START
	var plan_divs = Ext.select('#dept div.plan_div').elements;
	for (var i=0;i<plan_divs.length;i++) {
		var plan_div = Ext.fly(plan_divs[i]);

		var plan_title = plan_div.select('.plan-title').elements[0];
		data += plan_title.firstChild.nodeValue + '\r\n';

		var plans = plan_div.select('.plan').elements;
		for (var j=0;j<plans.length;j++) {
			var plan_day = Ext.fly(plans[j]).select('.plan_day').elements[0];
			data += plan_day.firstChild.nodeValue + '\r\n';

			var spots = Ext.fly(plans[j]).select('.spot').elements;
			for (var k=0;k<spots.length;k++) {
				var spot = Ext.fly(spots[k]);

				var spot_name = spot.select('.spot_name').elements[0];
				data += spot_name.firstChild.nodeValue + '          ';

				var spot_station = spot.select('.spot_station').elements[0];
				data += spot_station.firstChild.nodeValue + '\r\n';

				var spot_addr = spot.select('.spot_addr').elements[0];
				data += spot_addr.firstChild.nodeValue + '          ';

				var spot_tel = spot.select('.spot_tel').elements[0];
				data += spot_tel.firstChild.nodeValue + '\r\n';
			}

			data += '\r\n \r\n';
		}

		data += '\r\n';
	}

	data += Ext.select('#dept #hotel_image').elements[0].getAttribute('src');
	// プランテキスト化 END

	document.forms['outputPdfForm'].elements['P2GO'].value = data;
	document.forms['outputPdfForm'].submit();
}

