/**
*	検索用の共通関数
*/

//検索フォームの送信
function date_submit(obj){
	
	var e_msg = "";
	var s = new Array(3);
	var e = new Array(3);
	s[0] = obj.elements['start_data[y]'].value ;
	s[1] = obj.elements['start_data[m]'].value ;
	s[2] = obj.elements['start_data[d]'].value ;
	e[0] = obj.elements['end_data[y]'].value ;
	e[1] = obj.elements['end_data[m]'].value ;
	e[2] = obj.elements['end_data[d]'].value ;
	
	//キーワード入力文字数
	if(obj.keyword.value.length > 5000){
		alert("キーワードの入力文字数が多すぎます。");
		return false;
	}
	
	//チェックボックスのチェック
	var area = "";
	if(!!obj.elements['area_code[]'])area = obj.elements['area_code[]'];
	else if(!!obj.elements['genre_code[]'])area = obj.elements['genre_code[]'];
	if(area != ""){
		var val = "";
		for(var i = 0;i < area.length; i++){
			if(area[i].checked){
				if(cxDateNumeric(area[i].value) == false){
					e_msg = "パラメータの取得に失敗しました。\n";
					break;
				}
			}
		}
	}
	
	//日付の入力チェック
	var msg = check_date(s);
	if(msg != "")e_msg += "開始年月日" + msg + "\n";
	msg = check_date(e);
	if(msg != "")e_msg += "終了年月日" + msg + "\n";
	
	//開始と終了の矛盾チェック
	//日付の0埋め
	for(var i = 1; i < 3; i++){
		if(s[i] == "" || e[i] == "")break;
		s[i] = ("00" + s[i] ).substr( ("00" + s[i] ).length -2 , 2 );
		e[i] = ("00" + e[i] ).substr( ("00" + e[i] ).length -2 , 2 );
	}
	var st = s.join("");
	var ed = e.join("");
	if(st != "" && ed != "" && e_msg == ""){
		if(st-0 > ed-0)e_msg = "終了年月日は開始年月日よりも後の日付を指定してください。";
	}
	
	//入力に間違いがある場合はアラートを出す
	if(e_msg != ""){
		alert(e_msg);
		return false;
	}

}
//カレンダーform送信
function submit(year,month,day,mode){
	
	var url = '/search/search.php';
	//form送信
	document.ev_form.year.value = year;
	document.ev_form.month.value = month;
	document.ev_form.day.value = day;
	document.ev_form.mode.value = mode;
	document.ev_form.action = url;
	document.ev_form.submit();
}
//数値チェック
function cxDateNumeric(p) {
	var temp1;
	var regObj = new RegExp("[^0-9]","i");
	temp1 = p.match(regObj)
	if(temp1) {
		return false;
	} else {
		return true;
	}
}
//日付チェック　ary-> y,m,d
function check_date(ary){
	var msg = "";
	var date_ary = new Array();
	if(ary.join("") == "")return msg;
	for(var i = 0;i < ary.length; i++){
		if(ary[i] == ""){
			msg = "はすべてを入力してください。";
			return msg;
		}
	}
	date_ary = tohankaku(ary);
	for(var i = 0;i < date_ary.length; i++){
		if(cxDateNumeric(date_ary[i]) == false){
			msg = "は数字で入力してください。";
			return msg;
		}
	}
	if(date_ary[0]-0 < 2000 || date_ary[0]-0 > 2037){
		msg = "は2000年から2037年の間を指定してください。";
		return msg;
	}
	var vDt = new Date(date_ary[0]-0, date_ary[1]-1, date_ary[2]-0);
	if(vDt.getFullYear() != date_ary[0] || vDt.getMonth() != date_ary[1]-1 || vDt.getDate() != date_ary[2]){ 
		msg = "が存在しない日付です。";
	}
	return msg;
}
// 全角数字を半角数字に変換
function tohankaku(str) {
	//配列の場合
	if(str instanceof Array){
		var ret = new Array(str.length);
		for(var i = 0; i < str.length; i++){
			ret[i] = str[i].replace(/[０-９]/g, function(str){return String.fromCharCode(str.charCodeAt(0)-65248);});
		}
	//文字列の場合
	}else{
		var ret = "";
  		ret = str.replace(/[０-９]/g, function(str){return String.fromCharCode(str.charCodeAt(0)-65248);});
  	}
  	return ret;
}
//Aタグのリンクとクラスをセットする
function setlink(obj,y,m){
	obj.innerHTML = '<a href="javascript:void(0)">'　+ (y-0) + "年" + (m-0) + '月</a>';
}
//Aタグのリンクとクラスを取り除く
function unlink(obj,y,m){
	obj.innerHTML = (y-0) + "年" + (m-0) + "月";
}
//テーブル　thタグの作成
function create_th(){
	//DIVにテーブル挿入
	var target_Arer = document.getElementById('tmp_ev_calendar');
	var more = document.getElementById('more_list');
	target_Arer.removeChild(more);
	
	//追加テーブル　パラメータ
	var table = document.createElement("table");
	table.width="100%";
	table.border="1";
	table.className="calendar";
	table.id="calendar";
	target_Arer.appendChild(table);
	
	//テーブル作成
	var tableId     = 'calendar';
	var targetTable = document.getElementById(tableId);
	
	//thタグの埋め込み
	var row;
	var th = document.createElement("th");
	row  = targetTable.insertRow(0);
	for(var i = 0;i < 7; i++){
		var th = document.createElement("th");
		th.appendChild(img_ary[i]);
		if(i == 0)th.className = "sun";
		if(i == 6)th.className = "sat";
		row.appendChild(th);
	}
	//今月の一覧追加
	target_Arer.appendChild(more);
}
//カレンダーの作成
function create_table(){
	
	//目標テーブル
	var targetTable = document.getElementById('calendar');
	
	//カレンダー表示テーブル初期化
	var head_cnt = 1;
	var table_Count = targetTable.rows.length;
	for (var i = 1; i < table_Count; i ++) {
		targetTable.deleteRow(head_cnt);
	}
	
	//引数があった場合
	if (arguments.length >= 2){
		var y = arguments[0] ;
		var m = arguments[1] ;
		if(y-0 < 2008){
			y = 2008;
			m = 1;
		}else if(y-0 > 2037){
			y = 2037;
			m = 12;
		}
	//引数が無い場合今日の年と今日の月と今日
	}else{
		var y = new Date().getFullYear();
		var m = new Date().getMonth()+1;
	}
	
	//本日のデータ
	var toyear = new Date().getFullYear();
	var tomonth = new Date().getMonth()+1;
	var today = new Date().getDate();
	
	//月の日数を取得
	var day_num = new Date(y, m, 0).getDate();
	
	//月の最初の曜日を取得
	var week_start = new Date(y,m-1,1).getDay();
	
	//日付の作成
	var week = 1;
	var day = 1;
	var cell;
	
	while(day <= day_num){
		row  = targetTable.insertRow(week);
		for (var c = 0; c < 7 ; c++){
			cell = row.insertCell(c);
			if (c < week_start && week == 1){
				cell.innerHTML = "&nbsp;" ;		// 1日以前のスペース埋め
			}else if (day > day_num){
				cell.innerHTML = "&nbsp;" ;		// 最終日以降のスペース埋め
			}else{
				cell.innerHTML = day;
				day++;
			}
			if( c == 0 )cell.className = "sun" ;
			if( c == 6 )cell.className = "sat" ;
			// 本日
			if ((today == day - 1 ) && (tomonth == m) && (toyear == y)){
				if(cell.className == "")cell.className = "today";
				else cell.className = cell.className + " today";
			}
		}
		week++;
	}
	if(!!document.getElementById('error_msg')){
		var tmp_cal = document.getElementById('tmp_calendar');
		tmp_cal.removeChild(document.getElementById('error_msg'));
	}
}
//画像のプリロード
function PreImages() {
	if(document.images){
		if(!img_ary) img_ary = new Array();
		for(i = 0; i < arguments.length; i++) {
			img_ary[i] = new Image;
			img_ary[i].src = arguments[i];
		}
	}
}
//Ajaxでエラーが出た場合
function error(){
	var target_Arer = document.getElementById('tmp_calendar');
	var p = document.createElement("p");
	p.id = "error_msg";
	p.innerHTML = "システムエラー、もしくはサーバー混雑のため、只今イベントカレンダーでの検索が行えません。<br />\nお手数ですが、時間をおいてからもう一度お試しください。\n";
	target_Arer.appendChild(p);
}