function leap(year)
{
	return year % 4 ? 0 : year % 100 ? 1 : year % 400 ? 0 : 1;
}
function make_3cal()
{
	var now = new Date();
	var q = parseInt(now.getMonth() / 3) + 1;
	make_3months_calendars(now.getFullYear(), q, 
		document.getElementById('cal1'),
		document.getElementById('cal2'),
		document.getElementById('cal3') );
}
	
function make_cal_array(year)
{
	var months = [31, 28 + leap(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	var result = [];
	for (var m = 0; m < 12; m++)
	{
		result[m] = [];
		var dofw1 = (new Date(year, m, 1, 0, 0, 0)).getDay();
		for (var d = 1; d <= months[m]; d++)
		{
			result[m][d + dofw1 - 1] = d;
		}
	}
	return result;
}
var daynames = ['日','月','火','水','木','金','土'];
function make_cal_monthly(year, m)
{
	var now = new Date();
	var cal = make_cal_array(year);
	var table = document.createElement('table');
	table.className = 'calendar';
	table.setAttribute("cellSpacing", "0");
	table.setAttribute("cellPadding", "0");
	var tr = document.createElement('tr');
	for (var d = 0; d < 7; d++)
	{
		var th = document.createElement('th');
		th.innerHTML = th.className = daynames[d];
		tr.appendChild(th);
	}
	var thead = document.createElement('thead');
	thead.appendChild(tr);
	table.appendChild(thead);
	var tbody = document.createElement('tbody');
	for (var d = 0; d < 7*6; d++)
	{
		if (d % 7 == 0) tr = document.createElement('tr');
		var td = document.createElement('td');
		//土日のクラス設定処理
		if ((d % 7 == 0) || (d % 7 == 6)){
			td.className = 'weekend';
		}
		else{
			td.className = 'cal';
		}
		//最後の週の罫線を消す処理
		if (d >= 7*5) td.style.borderBottom = "solid 0px black";
		
		if (cal[m][d])
		{
			td.innerHTML = cal[m][d];
			if (now.getFullYear() == year && now.getMonth() == m 
				&& now.getDate() == cal[m][d])
			{
				td.className = 'today';
			}
			for(var i=0; i<g_day_count.length; i++)
			{
				if (g_day_count[i].getAttribute('y') == year &&
					g_day_count[i].getAttribute('m') == m+1 &&
					g_day_count[i].getAttribute('d') == cal[m][d])
				{
					td.innerHTML = '';
					var btn = document.createElement('input');
					btn.setAttribute("type", "button");
					btn.setAttribute("name", "button");
					btn.className = "day";
					btn.setAttribute("value", cal[m][d]);
					var mm = String(m+1);
					if (mm.length == 1)
					{
						mm = "0" + mm;
					}
					var dd = String(cal[m][d]);
					if (dd.length == 1)
					{
						dd = "0" + dd;
					}
					var arg = year + "-" + mm + "-" + dd;
				   //日付をクリックしたときの処理をここに記述する
					btn.onclick = new Function("make_search_result_by_date(\"" + arg + "\");");
					var a = document.createElement('a');
					a.id = year + "_" + mm + "_" + dd;
					a.appendChild(btn);
					td.appendChild(a);
					var reps = g_day_count[i].getElementsByTagName("rep");
				}
			}
		}
		else
		{
			td.innerHTML = '&nbsp;';
		}
		tr.appendChild(td);
		if (d % 7 == 6) tbody.appendChild(tr);
	}
	tbody.appendChild(tr);
	var caption = document.createElement('caption');
	caption.innerHTML = year + '年' + (m+1) + '月';
	table.appendChild(caption);
	table.appendChild(tbody);
	return table;
}
function make_calendars_monthly(year, month, p)
{
	p.innerHTML = '';
	var mcal = make_cal_monthly(year, month-1);
	p.appendChild(mcal);
}
var g_pList;
var g_year;
var g_quote;
var g_day_count;
function make_3months_calendars(year, q, p1, p2, p3)
{
	g_pList = new Array(p1, p2, p3);
	g_year = year;
	g_quote = q;
	for(var i=0; i < 3; i++)
	{
		g_pList[i].innerHTML = "";
		g_pList[i].appendChild(load_pic());
	}
	show_calendar(document.getElementById('searchkey').value);
}
function show_calendar(text)
{
	var objRadioCol = document.getElementsByName("xbrlselect");
	for(var i=0;i<objRadioCol.length;i++){
		//ラジオボタンのオブジェクトを取得
		var objRadio = objRadioCol[i];
		//チェックされているか判定
		if(objRadio.checked==true){
			//チェックされている場合はそのidを入れる
			query_xbrl_select = objRadio.id;
		}
	}

	var parameter = "y=" + g_year + "&q=" + g_quote + "&t=" + encodeURIComponent(text) + "&x=" + query_xbrl_select 
					+ "&yd=" + document.getElementById('yuka_todoke').checked
					+ "&yh=" + document.getElementById('yuka_hokoku').checked
					+ "&yt=" + document.getElementById('yuka_tyukan').checked
					+ "&ys=" + document.getElementById('yuka_sihan').checked
					;
					
	var myAjax = new Ajax.Request(
	get_url('api/get_days.cgi'), // 呼び出し先のURL
	{
		method: 'post', // メソッド（getまたはpost）
		postBody: parameter, // ポストされるボディ部
		onSuccess: AjaxSuccess, // 呼び出しが成功したときに呼び出されるメソッド
		onFailure: AjaxFailed, // 呼び出しが失敗したときに呼び出されるメソッド
		onException: AjaxException // 例外が発生したときに呼び出されるメソッド
	}
	);
}
function AjaxSuccess(xmlhttp, json)
{
	var xmlobj = xmlhttp.responseXML;
	g_day_count = xmlobj.getElementsByTagName("day");
	var m = (g_quote-1)*3;
	for(var i=0; i < 3; i++)
	{
		g_pList[i].innerHTML = "";
		g_pList[i].appendChild(make_cal_monthly(g_year, m+i));
	}
}
function prev_quote()
{
	if (g_pList && g_year && g_quote)
	{
		g_quote--;
		if (g_quote == 0)
		{
			g_year--;
			g_quote = 4;
		}
		show_calendar(document.getElementById('searchkey').value);
	}
}
function next_quote()
{
	if (g_pList && g_year && g_quote)
	{
		g_quote++;
		if (g_quote == 5)
		{
			g_year++;
			g_quote = 1;
		}
		show_calendar(document.getElementById('searchkey').value);
	}
}
var query_ymd;
var query_text;
var query_xbrl_select;
var query_kessan_select;
var query_shijo_select;
var query_ssec;
var query_esec;

var next_start_pos;
var prev_start_pos;
function make_search_result_by_date_and_text(ymd, text, pos, ssec, esec)
{
	query_ymd = ymd;
	query_text = text;

	var objRadioCol = document.getElementsByName("xbrlselect");
	for(var i=0;i<objRadioCol.length;i++){
		//ラジオボタンのオブジェクトを取得
		var objRadio = objRadioCol[i];
		//チェックされているか判定
		if(objRadio.checked==true){
			//チェックされている場合はそのidを入れる
			query_xbrl_select = objRadio.id;
		}
	}

	objRadioCol = document.getElementsByName("shijoselect");
	for(var i=0;i<objRadioCol.length;i++){
		//ラジオボタンのオブジェクトを取得
		var objRadio = objRadioCol[i];
		//チェックされているか判定
		if(objRadio.checked==true){
			//チェックされている場合はそのidを入れる
			query_shijo_select = objRadio.id;
		}
	}

	var parameter = "d=" + ymd + "&t=" + encodeURIComponent(text) + "&s=" + pos + "&x=" + query_xbrl_select 
					+ "&yd=" + document.getElementById('yuka_todoke').checked
					+ "&yh=" + document.getElementById('yuka_hokoku').checked
					+ "&yt=" + document.getElementById('yuka_tyukan').checked
					+ "&ys=" + document.getElementById('yuka_sihan').checked
					+ "&ssc=" + ssec
					+ "&esc=" + esec
					+ "&si=" + query_shijo_select 
					;
	var myAjax = new Ajax.Request(
	get_url('api/get_reps.cgi'), // 呼び出し先のURL
	{
		method: 'post', // メソッド（getまたはpost）
		postBody: parameter, // ポストされるボディ部
		onSuccess: AjaxResultSuccess, // 呼び出しが成功したときに呼び出されるメソッド
		onFailure: AjaxFailed, // 呼び出しが失敗したときに呼び出されるメソッド
		onException: AjaxException // 例外が発生したときに呼び出されるメソッド
	}
	);
}
function make_search_result_by_date(ymd, pos)
{
	$('RESULT_MSG').innerHTML = format_date(ymd) + '報告分の有報をサーチ..';
	$('RESULT').innerHTML = '';
	$('RESULT').appendChild(load_pic());
	make_search_result_by_date_and_text(ymd, '', pos, '', '');
}
function make_search_result_by_text(text, pos, ssec, esec)
{
	if (text != $('searchkey').defaultValue && text != '')
	{
		$('RESULT_MSG').innerHTML = 'キーワード[' + text + ']で有報をサーチ..';
		$('RESULT').innerHTML = '';
		$('RESULT').appendChild(load_pic());
		make_search_result_by_date_and_text('', text, pos ,'', '');
		return;
	}
	else if ( ssec != undefined && ssec != '' )
	{
		$('RESULT_MSG').innerHTML = '業種[' + sector_name(ssec) + ']で有報をサーチ..';
		$('RESULT').innerHTML = '';
		$('RESULT').appendChild(load_pic());
		make_search_result_by_date_and_text('', '', pos, ssec, '');
		return;
	}
	else if ( esec != undefined && esec != '' )
	{
		$('RESULT_MSG').innerHTML = '業種[' + ed2_sector_name(esec) + ']で有報をサーチ..';
		$('RESULT').innerHTML = '';
		$('RESULT').appendChild(load_pic());
		make_search_result_by_date_and_text('', '', pos, '', esec);
		return;
	}
		make_search_result_current(pos);
}
function make_search_result_current(pos)
{
	$('RESULT_MSG').innerHTML = '最新の有報をサーチ..';
	$('RESULT').innerHTML = '';
	$('RESULT').appendChild(load_pic());
	make_search_result_by_date_and_text('', '', pos ,'', '');
}
function make_search_result_by_s_sec(ssec, pos)
{
	//初期化処理
	document.getElementById('xbrl_all').checked = true ;
	document.getElementById('shijo_all').checked = true ;
	document.getElementById('yuka_hokoku').checked = true;
	document.getElementById('yuka_tyukan').checked = true ;
	document.getElementById('yuka_sihan').checked = true ;
	document.getElementById('yuka_todoke').checked = true ;
	document.getElementById('xbrl_all_d').checked = true ;
	document.getElementById('yuka_hokoku_d').checked = true;
	document.getElementById('yuka_tyukan_d').checked = true ;
	document.getElementById('yuka_sihan_d').checked = true ;
	document.getElementById('yuka_todoke_d').checked = true ;


	query_ssec = ssec;
	query_esec = '';
	$('RESULT_MSG').innerHTML = '業種[' + sector_name(ssec) + ']で有報をサーチ..';
	$('RESULT').innerHTML = '';
	$('RESULT').appendChild(load_pic());
	make_search_result_by_date_and_text('', '', pos, ssec, '');
}
function make_search_result_by_ed_sec(esec, pos)
{
	//初期化処理
	document.getElementById('xbrl_all').checked = true ;
	document.getElementById('shijo_all').checked = true ;
	document.getElementById('yuka_hokoku').checked = true;
	document.getElementById('yuka_tyukan').checked = true ;
	document.getElementById('yuka_sihan').checked = true ;
	document.getElementById('yuka_todoke').checked = true ;
	document.getElementById('xbrl_all_d').checked = true ;
	document.getElementById('yuka_hokoku_d').checked = true;
	document.getElementById('yuka_tyukan_d').checked = true ;
	document.getElementById('yuka_sihan_d').checked = true ;
	document.getElementById('yuka_todoke_d').checked = true ;

	query_esec = esec;
	query_ssec = '';
	$('RESULT_MSG').innerHTML = '業種[' + ed2_sector_name(esec) + ']で有報をサーチ..';
	$('RESULT').innerHTML = '';
	$('RESULT').appendChild(load_pic());
	make_search_result_by_date_and_text('', '', pos, '', esec);
}

function AjaxResultSuccess(xmlhttp, json)
{
	var xmlobj = xmlhttp.responseXML;
	var reps = xmlobj.getElementsByTagName("rep");
	var p = $('RESULT');
	p.innerHTML = '';
	var table = document.createElement('table');
	table.id = 'result_tab';
	var tr = document.createElement('tr');
	var th1 = document.createElement('th');
	var th2 = document.createElement('th');
	var th3 = document.createElement('th');
	var th4 = document.createElement('th');
	var th5 = document.createElement('th');
	th1.innerHTML = '報告日';
	th2.innerHTML = '対象期間<br>末日';
	th3.innerHTML = '報告書';
	th4.innerHTML = '企業名<br>EDINETコード/証券コード';
	th5.innerHTML = 'ダウンロード';
	tr.appendChild(th1);
	tr.appendChild(th2);
	tr.appendChild(th3);
	tr.appendChild(th4);
	tr.appendChild(th5);
	var thead = document.createElement('thead');
	thead.appendChild(tr);
	table.appendChild(thead);
	var tbody = document.createElement('tbody');
	for (var i = 0; i < reps.length; i++)
	{
		var d = reps[i].getAttribute('d');
		var ed = reps[i].getAttribute('ed');
		var type = reps[i].getAttribute('reptype');
		var repname = reps[i].getAttribute('repname');
		var name = reps[i].getAttribute('name');
		var ecd = reps[i].getAttribute('ecd') || "----";
		var scd = reps[i].getAttribute('scd') || "----";
		var id = reps[i].getAttribute('id');
		var pc = parseInt("0" + reps[i].getAttribute('pc'));
		var tr = document.createElement('tr');
		var td1 = document.createElement('td');
		var td2 = document.createElement('td');
		var td3 = document.createElement('td');
		var td4 = document.createElement('td');
		var td5 = document.createElement('td');
		td1.innerHTML = format_date(d);
		td2.innerHTML = format_date_nendo(ed);
		td3.innerHTML = reporttype_short_name_list(type);
		var alink = document.createElement('a');
		alink.href = get_url("base.cgi") + "?id=" + id;
		alink.innerHTML = "" + name + "<br>" + ecd + "/" + scd;
		td4.appendChild(alink);
		td4.style.width = '50%';
		var aDlCsv = document.createElement('a');
		aDlCsv.setAttribute("href", get_url("dl_csv.cgi?id=" + id));
		var dlCsv = document.createElement('img');
		dlCsv.src = get_url("css/image/dlCsv.gif");
		dlCsv.alt = "CSVダウンロード";
		aDlCsv.appendChild(dlCsv);
		td5.appendChild(aDlCsv);
		var aDlExcel = document.createElement('a');
		aDlExcel.setAttribute("href", get_url("dl_excel.cgi?id=" + id));
		var dlExcel = document.createElement('img');
		dlExcel.src = get_url("css/image/dlExcel.gif");
		dlExcel.alt = "EXCELダウンロード";
		aDlExcel.appendChild(dlExcel);
		td5.appendChild(aDlExcel);
		var aDlPdf = document.createElement('a');
		aDlPdf.setAttribute("href", get_url("dl_pdf.cgi?id=" + id));
		aDlPdf.setAttribute("target", "_blank");
		var dlPdf = document.createElement('img');
		dlPdf.src = get_url("css/image/dlPdf.gif");
		dlPdf.alt = "PDFダウンロード";
		aDlPdf.appendChild(dlPdf);
		td5.appendChild(aDlPdf);
			
		/*td1.className = "ednettype"; */
		tr.appendChild(td1);
		tr.appendChild(td2);
		tr.appendChild(td3);
		tr.appendChild(td4);
		tr.appendChild(td5);
		tbody.appendChild(tr);
	}
	table.appendChild(tbody);
	p.appendChild(table);
	var root = xmlobj.getElementsByTagName("reps")[0];
	var reps_count = parseInt(root.getAttribute('count'));
	var from_count = parseInt(root.getAttribute('from'));
	if (reps_count > 0)
	{
		$('RESULT_MSG').innerHTML += '&nbsp;' + reps_count + '件中、';
		$('RESULT_MSG').innerHTML += '&nbsp;' + (from_count+1) + '-';
		$('RESULT_MSG').innerHTML += '&nbsp;' + (from_count + reps.length) + '件を表示しています';
		$('PAGE_NAV_TOP').innerHTML = '';
		$('PAGE_NAV_BOTTOM').innerHTML = '';
		if (from_count > 0)
		{
			// 前へ
			prev_start_pos = from_count - 50;
			if (prev_start_pos < 0)
				prev_start_pos = 0;
			var btn1 = nav_button('NAV_BUTTON_BACK');
			btn1.onclick = go_back;
			$('PAGE_NAV_TOP').appendChild(btn1);
			var btn2 = nav_button('NAV_BUTTON_BACK');
			btn2.onclick = go_back;
			$('PAGE_NAV_BOTTOM').appendChild(btn2);
		}
		if (reps_count > from_count + reps.length)
		{
			// 次へ
			next_start_pos = from_count + reps.length;
			var btn1 = nav_button('NAV_BUTTON_NEXT');
			btn1.onclick = go_next;
			$('PAGE_NAV_TOP').appendChild(btn1);
			var btn2 = nav_button('NAV_BUTTON_NEXT');
			btn2.onclick = go_next;
			$('PAGE_NAV_BOTTOM').appendChild(btn2);
		}
	}
	else
	{
		$('RESULT_MSG').innerHTML += '&nbsp;対象は見つかりませんでした';
	}
	dl_pdf();
}
function go_back()
{
	requery(prev_start_pos);
}
function go_next()
{
	requery(next_start_pos);
}
function requery(pos)
{
	if (query_ymd != '')
		make_search_result_by_date(query_ymd, pos);
	else
		make_search_result_by_text(query_text, pos, query_ssec, query_esec);
//	$('RESULT_MSG').innerHTML = format_date(ymd) + '報告分の有報をサーチ..';
//	$('RESULT').innerHTML = '';	
//	$('RESULT').appendChild(load_pic());

//	make_search_result_by_date_and_text(query_ymd, query_text, pos, query_ssec, query_esec);

}
function format_date(d)
{
	var y = d.substr(2,2);
	var m = d.substr(5,2);
	var d = d.substr(8,2);
	return y+"/"  + m + "/" + d;
}
function format_date_nendo(d)
{
	var y = d.substr(0,4);
	var m = parseInt(d.substr(5,2),10);
	var d = d.substr(8,2);
	return '<span class="nen">H.'+(y-1988)+"年</span>" + "<br><em>" + m + '</em><span class="nen">月期</span>';
}
 
function nav_button(value)
{
    var btn = document.createElement('input');
    btn.setAttribute("type", "button");
    btn.setAttribute("name", "button");
    btn.className = "nav";
    btn.id = value;
    return btn;
}
function check(c) {
	//カレンダー検索と同期を取るため
	if(c.id == 'xbrl_all'){
		document.getElementById('xbrl_all_d').checked = true ;
	}
	else if(c.id == 'xbrl_cp'){
		document.getElementById('xbrl_cp_d').checked = true ;
	}
	else if(c.id == 'xbrl_fd'){
		document.getElementById('xbrl_fd_d').checked = true ;
		document.getElementById('shijo_all').checked = true ;
	}
	else if(c.id == 'yuka_hokoku'){
		document.getElementById('yuka_hokoku_d').checked = yuka_hokoku.checked;
	}
	else if(c.id == 'yuka_tyukan'){
		document.getElementById('yuka_tyukan_d').checked = yuka_tyukan.checked ;
	}
	else if(c.id == 'yuka_sihan'){
		document.getElementById('yuka_sihan_d').checked = yuka_sihan.checked ;
	}
	else if(c.id == 'yuka_todoke'){
		document.getElementById('yuka_todoke_d').checked = yuka_todoke.checked ;
	}
	
	make_search_result_by_text(document.getElementById('searchkey').value, 0, '', '');
	make_3cal();
} 
function check2(c) {

	//名前検索と同期を取るため
	if(c.id == 'xbrl_all_d'){
		document.getElementById('xbrl_all').checked = true ;
	}
	else if(c.id == 'xbrl_cp_d'){
		document.getElementById('xbrl_cp').checked = true ;
	}
	else if(c.id == 'xbrl_fd_d'){
		document.getElementById('xbrl_fd').checked = true ;
		document.getElementById('shijo_all').checked = true ;
	}
	else if(c.id == 'yuka_hokoku_d'){
		document.getElementById('yuka_hokoku').checked = yuka_hokoku_d.checked;
	}
	else if(c.id == 'yuka_tyukan_d'){
		document.getElementById('yuka_tyukan').checked = yuka_tyukan_d.checked ;
	}
	else if(c.id == 'yuka_sihan_d'){
		document.getElementById('yuka_sihan').checked = yuka_sihan_d.checked ;
	}
	else if(c.id == 'yuka_todoke_d'){
		document.getElementById('yuka_todoke').checked = yuka_todoke_d.checked ;
	}

	make_3cal();
} 
