function Schedule(){
	this.csvdata = null; //CSVからパースしたデータ
	this.csvDataPath = "/shared/swf/";
	this.datatype = "none";
	this.areaName = ["船橋", "川口", "伊勢崎", "浜松", "飯塚", "山陽"];
	this.nextDayTime = 20; //いつからを次の人判定させるかの設定
	this.scheduleData = new Array(5)
	this.topImagePath = "/images/top";
	this.topImageStatus = ["off", "off", "off", "off", "off", "off"];
	this.topImageList = null;
	this.officialLink = ["http://www.funabashi-auto.jp/", "http://www.kawaguchiauto.jp/", "http://isesaki-auto.jp/", "http://www.hamamatsu-auto.jp/", "http://www.iizuka-auto.jp/", "http://www.sanyoauto.jp/"];
	
	this.areaLink = ["funabashi", "kawaguchi", "isesaki", "hamamatsu", "iizuka", "sanyou", ]
	
	this.areaScheduleData = null;
	this.areaOutSideSale = [];
	this.areaNight = [false, false, false, false, false, false];
}

Schedule.prototype.topNowNumber = []; //TOPページの今日開催のナンバーを取得
/**
 * 場外発売データのパース処理
 *
 * @param	Date	extData		開始日
 * @param	int		number		開催日数
 * @param	String	outSales	セール情報
 * @return	boolean
 */
Schedule.prototype.isOutSideSale = function(number, nowNumber, outSales){
	var arrayOutSales = outSales.split("*");
	var tmp = [];
	for (var i = 0; i < arrayOutSales.length; i++) {
		if (arrayOutSales[i] == nowNumber) {
			return true;
		}
	}
	return false;
}


/**
 * CSVデータをロードするファイル名を決定する
 * @return string
 */
Schedule.prototype.getLoadFileName = function(monthNum){
	//TODO::日付が年をまたいだときの処理をいれる
	if (typeof(monthNum) == "undefined") monthNum = 1;
	
	var date = new Date();
	
	var year  = date.getFullYear();
	var month = date.getMonth() + monthNum;
	
	if (month > 12) {
		month = 1;
		year += 1;
	}
	
	if (month < 10) {
		var monthString = "0" + month;
	} else {
		var monthString = month;
	}
	return "schedule" + year + monthString + ".csv";
	
}


/**
 * 今日が開催日何日目かを取得する
 * @param Date date
 * @param int  number
 */
Schedule.prototype.getNowDayNumber = function(date){
	var nowDate = new Date();
	
	var timestamp = 0;
	timestamp = Math.ceil((nowDate.getDayTime() - date.getTime()) / 86400000);
	if (timestamp < 0) {
		timestamp = 0;
	}
	return timestamp += 1;
	
}


Schedule.prototype.areaAnalyzer2 = function(areaId) {
	--areaId;
	var nowDate = new Date();
	for (var i = 0; i < this.csvdata.length; i++) {
		if (typeof(this.csvdata[i][1]) == 'undefined' || typeof(this.csvdata[i][2]) == 'undefined') {
			continue;
		}
		var areaInt = parseInt(this.csvdata[i][0] - 1);
		var csvDate = new Date(this.csvdata[i][1]);
		var maxDate = csvDate.getAddDays(this.csvdata[i][2] - 1);
		
		//
		if (csvDate.getTime() <= nowDate.getDayTime() && nowDate.getDayTime() <= maxDate.getTime() && areaId == areaInt ) {
			this.areaScheduleData = this.csvdata[i];
			break;
		}
		
		if ( this.areaScheduleData == null) {
			if (csvDate.getTime() >= nowDate.getDayTime() && areaId == areaInt) {
				this.areaScheduleData = this.csvdata[i];
				break;
			}
		}
		

	}
	
	if ( this.areaScheduleData != null ) {
		schedule.showAreaSchedule2(areaId);
	} else {
		areaId++;
		schedule.errorAreaSchedule2(areaId);
	}
}

Schedule.prototype.errorAreaSchedule2 = function(areaId) {
	var url = schedule.csvDataPath + "error.csv";
	$.ajax({
		type:"GET",
		url:url,
		cache:true,
		traditional:true,
		dateType: "text",
		success: function(csv){
			var csdata = CSVData.parse(csv)
			var index = null;

			for(i = 0; i < csdata.length; i++) {
				if (csdata[i][0] == areaId) {
					schedule.areaScheduleData = csdata[i];
					break;
				}
			}
			
			if ( schedule.areaScheduleData != null ) {
				schedule.showAreaSchedule2(areaId);
			}
			
		},
		error: function(e) {
			alert("error not found csv");
		}
	});	
}

Schedule.prototype.showAreaSchedule2 = function(areaId) {
	if (this.areaScheduleData == null) {
		return false;
	}
	var nowDate = new Date();
	var viewStartDate = new Date(this.areaScheduleData[1]);
	var viewEndDate = viewStartDate.getAddDays(parseInt(this.areaScheduleData[2]) - 1);
	var areaInt = areaId - 1;
	var showData = this.areaScheduleData;
	
	
	//開催場名
	var areaHtmlMssageText = "次回の開催";
	if (viewStartDate.getTime() <= nowDate.getDayTime() && viewEndDate.getTime() >= nowDate.getDayTime()) {
		areaHtmlMssageText = "本日の開催";
	}
	var areaHtmlMssage = this.areaName[areaInt] + "オート<br />" + areaHtmlMssageText;
	$(".today").html(areaHtmlMssage);


	//日付
	var viewStartDate = new Date(showData[1]);
	var viewEndDate = viewStartDate.getAddDays(parseInt(showData[2]) - 1);
	var areaHtmlDate = (viewStartDate.getMonth() + 1) + "/" + viewStartDate.getDate() + " ～ " + (viewEndDate.getMonth() + 1) + "/" + viewEndDate.getDate();
	var nowDate = new Date();
	$(".data > p").text(areaHtmlDate);
		
	//勝ち上がり
	if (typeof(showData[16]) != "undefined") {
		if (showData[16] != null && showData[16] != "") {
			areaHtmlDate = "<a href=\"" + showData[16] + "\" class=\"kachi\">勝ち上がり</a>";
			$(".data > p").append(areaHtmlDate);
		}
		
	}
		
	//出場選手変更
	if (typeof(showData[17]) != "undefined") {
		if (showData[17] != null && showData[17] != "") {
			areaHtmlDate = "<a href=\"" + showData[17] + "\" class=\"racerChenge\">出場選手変更</a>";
			$(".data > p").append(areaHtmlDate);
		}
	}

	//開催チャンネル
	if (showData[4] == "1" && showData[8] == "216") {
		$(".chBox").attr("class", "chBox ch02");
	} else if (showData[8] == "216") {
		$(".chBox").attr("class", "chBox ch01");
	} else if (showData[8] == "240") {
		$(".chBox").attr("class", "chBox ch03");
	} else if (showData[8] == "709") {
		$(".chBox").attr("class", "chBox ch04");
	}
	$(".chBox .text10").text(showData[8] + "ch");
	
	//開催場名
	var areaHtmlMssageText = "次回の開催";
	if (viewStartDate.getTime() <= nowDate.getDayTime() && viewEndDate.getTime() >= nowDate.getDayTime()) {
		areaHtmlMssageText = "本日の開催";
	}
		
	var areaHtmlMssage = this.areaName[showData[0] - 1] + "オート<br />" + areaHtmlMssageText;
	$(".today").html(areaHtmlMssage);
		
	//タイトル
	var gradeClass;
	switch (showData[3]) {
		case "G1":
			gradeClass = "g1";
			break;
			
		case "G2":
			gradeClass = "g2";
			break;
		case "SG":
			gradeClass = "sg";
			break;
		default:
			gradeClass = "normal";
			break;
	}
		
	var areaHtmlTitle = showData[5] + "<br />" + showData[6];
	$(".data > h4").attr("class", gradeClass);
	$(".data > h4").html(areaHtmlTitle);
		
		
	//場外発売
	var tmpNumber = 0;
	var nowNumber = this.getNowDayNumber(viewStartDate);
		
	$(".jyogaiBox > ul").html("");
	for (var i = 10; i < 16; i++) {
		if (this.isOutSideSale(showData[2], nowNumber, showData[i])) {
			tmpNumber = i - 9;
			$(".jyogaiBox > ul").append("<li><img src=\"/images/top/jyogai0" + tmpNumber + ".gif\" alt=\"" + this.areaName[tmpNumber] + "\" /></li>");
		}
	}
	
	
}


/**
 * エリアのアナライザ
 * areaIdは 1 ~ 6で指定すること
 */
Schedule.prototype.areaAnalyzer = function(areaId){
	areaId -= 1;
	var nowDate = new Date(); //今日の日付
	var prvDate;
	var areaInt; //エリアナンバーに-1をしたものを格納
	var nowHour = nowDate.getHours(); //現在の時間を取得
	for (var i = 0; i < this.csvdata.length; i++) {
		//期間が指定されていない場合
		if (typeof(this.csvdata[i][1]) == 'undefined' || typeof(this.csvdata[i][2]) == 'undefined') {
			continue;
		}
		var areaInt = parseInt(this.csvdata[i][0] - 1);
		var csvDate = new Date(this.csvdata[i][1]);
		var maxDate = csvDate.getAddDays(this.csvdata[i][2] - 1);
		if (csvDate.getTime() <= nowDate.getDayTime() && nowDate.getDayTime() <= maxDate.getTime()) {
		
			if (areaInt == areaId) {
				//開催情報の取得
				this.areaScheduleData = this.csvdata[i];
			} else {
				//チケット
				var nowNumber = this.getNowDayNumber(csvDate);
				if (this.isOutSideSale(this.csvdata[i][2], nowNumber, this.csvdata[i][areaId + 10])) {
					this.areaOutSideSale.push(areaInt);
					
					if (this.csvdata[i][4] == "1") {
						this.areaNight[areaInt] = true;
					}
					
				}
			}
		}
		
		
	}
	
}

Schedule.prototype.showAreaSchedule = function(areaId){
	var nowDate = new Date();
	
	
	$(".infoArea > .inner > .today").html(nowDate.getFullYear() + "年" + (nowDate.getMonth() + 1) + "月" + nowDate.getDate() + "日" + "<br />本日の開催及び場外発売");
	
	if (this.areaScheduleData != null) {
		var areaInt = parseInt(this.areaScheduleData[0] - 1);

		//weather(areaInt);
		
		//日付
		var viewStartDate = new Date(this.areaScheduleData[1]);
		var viewEndDate = viewStartDate.getAddDays(parseInt(this.areaScheduleData[2]) - 1);
		var areaHtmlDate = (viewStartDate.getMonth() + 1) + "/" + viewStartDate.getDate() + " ～ " + (viewEndDate.getMonth() + 1) + "/" + viewEndDate.getDate();
		
		//タイトル
		var gradeClass;
		switch (this.areaScheduleData[3]) {
			case "G1":
				gradeClass = "g1";
				break;
				
			case "G2":
				gradeClass = "g2";
				break;
			case "SG":
				gradeClass = "sg";
				break;
			default:
				gradeClass = "normal";
				break;
		}
		
		//開催チャンネル
		var chText = "";
		if(this.areaScheduleData[9] != "") {
			var chText = this.areaScheduleData[9].split('*')

			$(".tvBox > p").html(chText.join("<br />"));
		}
		
		if (this.areaScheduleData[4] == "1" && this.areaScheduleData[8] == "216") {
			$(".tvBox").removeClass('jogai');
			$(".chBox").attr("class", "chBox ch02");
		} else if (this.areaScheduleData[8] == "216") {
			$(".tvBox").removeClass('jogai');
			$(".chBox").attr("class", "chBox ch01");
		} else if (this.areaScheduleData[8] == "240") {
			$(".tvBox").removeClass('jogai');
			$(".chBox").attr("class", "chBox ch03");
		} else if (this.areaScheduleData[8] == "709") {
			$(".tvBox").removeClass('jogai');
			$(".chBox").attr("class", "chBox ch04");
		}
		var ctextHTML = "";
		//勝ち上がり
		if (typeof(this.areaScheduleData[16]) != "undefined") {
			if (this.areaScheduleData[16] != null && this.areaScheduleData[16] != "") {
				ctextHTML = "<a href=\"" + this.areaScheduleData[16] + "\" class=\"kachi\">勝ち上がり</a>";
			}
		}
		
		//出場選手変更
		if (typeof(this.areaScheduleData[17]) != "undefined") {
			if (this.areaScheduleData[17] != null && this.areaScheduleData[17] != "") {
				ctextHTML += "<a href=\"" + this.areaScheduleData[17] + "\" class=\"racerChenge\">出場選手変更</a>";
			}
		}	
		
		//反映
		$(".infoArea > .inner > .data").html("<p>" + areaHtmlDate + ctextHTML + "</p><h4 class=\"" + gradeClass + "\">" + this.areaScheduleData[5] + "<br />" + this.areaScheduleData[6] + "</h4>");
		
		
		
		
	} else if (this.areaOutSideSale.length > 0) {
		var htmlString = [];
		
		for (var i = 0; i < this.areaOutSideSale.length; i++) {
			if (this.areaNight[this.areaOutSideSale[i]]) {
				htmlString.push("場外(" + this.areaName[this.areaOutSideSale[i]] + ":ナイター)");
			} else {
				htmlString.push("場外(" + this.areaName[this.areaOutSideSale[i]] + ")");
			}
		}
		$(".infoArea > .inner > .data").html("<p class=\"null\">&nbsp;</p><h4 class=\"jyogai\">" + htmlString.join("<br />") + "</h4>");
	} else {
		$(".infoArea > .inner > .data").html("<p class=\"null\">&nbsp;</p><h4 class=\"jyogai\">本日は開催はありません</h4>");
	}
	weather(areaId - 1);
}


Schedule.prototype.topAnalyzer = function(){
	if (this.csvdata == null) {
		return false;
	}
	var nowDate = new Date(); //今日の日付
	var prvDate;
	var areaInt; //エリアナンバーに-1をしたものを格納
	var nowHour = nowDate.getHours(); //現在の時間を取得
	var nowStart = false; //今日開催があるかどうかのフラグ
	var nightGame = false; //ナイターがあるかどうか
	var nowStartData = []; //今日開催される会場の配列

	/*
	 if (nowHour > 20) {
	 nowDate.addDays(1);
	 nowDate.setHours(1);
	 nowHour = 1;
	 }
	 */
	for (var i = 0; i < this.csvdata.length; i++) {
		//期間が指定されていない場合
		if (typeof(this.csvdata[i][1]) == 'undefined' || typeof(this.csvdata[i][2]) == 'undefined') {
			continue;
		}
		areaInt = parseInt(this.csvdata[i][0] - 1);
		var csvDate = new Date(this.csvdata[i][1]);
		var maxDate = csvDate.getAddDays(this.csvdata[i][2] - 1);
		
		if (csvDate.getTime() <= nowDate.getDayTime() && nowDate.getDayTime() <= maxDate.getTime()) {
			//レース開催中のデータを取得する
			nowStart = true;
			nowStartData.push(areaInt);
			if (typeof(this.scheduleData[areaInt]) == "undefined") {
				if (nowHour >= 0 && nowHour <= 14 && this.csvdata[i][4] == "0") {
					this.topNowNumber.push(areaInt);
					this.scheduleData[areaInt] = this.csvdata[i];
					this.topImageStatus[areaInt] = "open";
				} else if (nowHour >= 15 && nowHour <= 16) {
					this.topNowNumber.push(areaInt);
					this.scheduleData[areaInt] = this.csvdata[i];
					this.topImageStatus[areaInt] = "open";
				} else if (nowHour >= 17 && nowHour <= 23 && this.csvdata[i][4] == "1") {
					nightGame = true;
					this.topNowNumber.push(areaInt);
					this.scheduleData[areaInt] = this.csvdata[i];
					this.topImageStatus[areaInt] = "open";
				} else {
					if (this.csvdata[i][4] == "1") {
						nightGame = true;
					}
					this.scheduleData[areaInt] = this.csvdata[i];
					this.topImageStatus[areaInt] = "open";
				}
			}
		} else if (csvDate.getTime() > nowDate.getTime()) {
			if (typeof(this.scheduleData[areaInt]) == "undefined") {
				this.scheduleData[areaInt] = this.csvdata[i];
			}
		}
	}
	
	//ナイターがない場合で、本日開催がある場合
	if (nowStart == true && nightGame == false && nowHour >= 17) {
		if (this.topNowNumber.length < 1) {
			this.topNowNumber = nowStartData;
		}
	}else if (nightGame == true && nowStart == true) { //ナイターしかない場合
		if (this.topNowNumber.length < 1) {
			this.topNowNumber = nowStartData;
		}
	}
}
/**
 * TOPページの表示するデータを決定する
 */
Schedule.prototype.showTopSchedule = function(){

	if (this.scheduleData.length > 0) {
		var min = 0;
		var max;
		var random;
		var selectKey; //最初に表示される配列のkey
		var nowDate = new Date(); //今日の日付
		var setData;
		
		if (this.topNowNumber.length > 0) {
			max = this.topNowNumber.length - 1;
			random = Math.floor(Math.random() * (max - min + 1)) + min;
			selectKey = this.topNowNumber[random];
			
			var viewData = [];
			for (var i = 0; i < this.topNowNumber.length; i++) {
				viewData[this.topNowNumber[i]] = this.scheduleData[this.topNowNumber[i]];
			}
			
			this.renderTopPage(viewData, selectKey, true);
		} else {
			//近日のもので一番近いものを取得する
			var prvDate;
			var tmp;
			var sortData = this.scheduleData;
			var viewData = [];
			
			//日付順にバブルソートする
			for (var i = 0; i < this.scheduleData.length; i++) {
				if (typeof(this.scheduleData[i]) != "undefined") {
					var iDate = new Date(this.scheduleData[i][1]);
					for (var j = 0; j < this.scheduleData.length; j++) {
						if (typeof(this.scheduleData[j]) != "undefined") {
							var jDate = new Date(this.scheduleData[j][1]);
							if (iDate.getTime() < jDate.getTime()) {
								tmp = sortData[i];
								sortData[i] = sortData[j];
								sortData[j] = tmp;
							}
						}
					}
				}
			}
			
			//重複を検査
			var prvDate;
			for (var i = 0; i < sortData.length; i++) {
				if (typeof(sortData[i]) == "undefined") {
					continue;
				}
				if (typeof(sortData[i][1]) == 'undefined' || typeof(sortData[i][2]) == 'undefined') {
					continue;
				}
				
				var sortDate = new Date(sortData[i][1]); //開催開始日ムスタンプ
				if (nowDate.getDayTime() > sortDate.getTime()) {
					continue;
				}
				
				
				if (typeof(prvDate) == 'undefined') { //1回目だけは比較なし
					prvDate = new Date(sortData[i][1]);
					viewData.push(sortData[i]);
				} else {
					if (sortDate.getTime() <= prvDate.getTime()) {
						viewData.push(sortData[i]);
						prvDate = new Date(sortData[i][1]);
					}
				}
				
			}
			
			max = viewData.length - 1;
			random = Math.floor(Math.random() * (max - min + 1)) + min;
			//setData = viewData[random];
			this.renderTopPage(viewData, random, false);
		}
	}
}

Schedule.prototype.renderTopPage = function(dataList, index, imageflag){
	var showData = dataList[index];
	var areaInt = parseInt(showData[0]) - 1;

	weather(areaInt);
	
	//レンダリング処理
	if (showData != null) {
		//枠の色の変更
		$("#topStudinfo").attr("class", "select0" + showData[0]);
		
		//開催情報画像の切り替え
		for (var i = 0; i < this.topImageStatus.length; i++) {
			$(".tabMenu > ul > li:eq(" + i + ") > a > img").attr("src", this.topImagePath + "/tabMenu0" + (i + 1) + "_" + this.topImageStatus[i] + ".gif");
		}
		$(".tabMenu > ul > li:eq(" + (parseInt(showData[0]) - 1) + ") > a > img").attr("src", this.topImagePath + "/tabMenu0" + showData[0] + "_select.gif");
		
		
		
		//開催チャンネル
		if (showData[4] == "1" && showData[8] == "216") {
			$(".chBox").attr("class", "chBox ch02");
		} else if (showData[8] == "216") {
			$(".chBox").attr("class", "chBox ch01");
		} else if (showData[8] == "240") {
			$(".chBox").attr("class", "chBox ch03");
		} else if (showData[8] == "709") {
			$(".chBox").attr("class", "chBox ch04");
		}
		
		$(".chBox .text10").text(showData[8] + "ch");
		
		//リンクの設定
		$(".infoArea > ul > li:eq(0) > a").attr("href", this.officialLink[areaInt]);
		$(".infoArea > ul > li:eq(1) > a").attr("href", "/netstadium/ns/Live/Display/?p=" + showData[0]);
		$(".infoArea > ul > li:eq(2) > a").attr("href", "/netstadium/ns/Ondemand/Display/?p=" + showData[0]);
		$(".infoArea > ul > li:eq(3) > a").attr("href", "/netstadium/ns/Odds/Exacta_Trifecta/?p=" + showData[0]);
		$(".infoArea > ul > li:eq(4) > a").attr("href", "/netstadium/ns/RaceResult/Display/?p=" + showData[0]);
		$(".infoArea > ul > li:eq(5) > a").attr("href", "/" + this.areaLink[areaInt] + "/index.html#access");
		
		
		
		
		//日付
		var viewStartDate = new Date(showData[1]);
		var viewEndDate = viewStartDate.getAddDays(parseInt(showData[2]) - 1);
		var areaHtmlDate = (viewStartDate.getMonth() + 1) + "/" + viewStartDate.getDate() + " ～ " + (viewEndDate.getMonth() + 1) + "/" + viewEndDate.getDate();
		var nowDate = new Date();
		$(".data > p").text(areaHtmlDate);
		
		//勝ち上がり
		if (typeof(showData[16]) != "undefined") {
			if (showData[16] != null && showData[16] != "") {
				areaHtmlDate = "<a href=\"" + showData[16] + "\" class=\"kachi\">勝ち上がり</a>";
				$(".data > p").append(areaHtmlDate);
			}
			
		}
		
		//出場選手変更
		if (typeof(showData[17]) != "undefined") {
			if (showData[17] != null && showData[17] != "") {
				areaHtmlDate = "<a href=\"" + showData[17] + "\" class=\"racerChenge\">出場選手変更</a>";
				$(".data > p").append(areaHtmlDate);
			}
		}
		
		
		//開催場名
		var areaHtmlMssageText = "次回の開催";
		if (viewStartDate.getTime() <= nowDate.getDayTime() && viewEndDate.getTime() >= nowDate.getDayTime()) {
			areaHtmlMssageText = "本日の開催";
		}
		
		var areaHtmlMssage = this.areaName[showData[0] - 1] + "オート<br />" + areaHtmlMssageText;
		$(".today").html(areaHtmlMssage);
		
		//タイトル
		var gradeClass;
		switch (showData[3]) {
			case "G1":
				gradeClass = "g1";
				break;
				
			case "G2":
				gradeClass = "g2";
				break;
			case "SG":
				gradeClass = "sg";
				break;
			default:
				gradeClass = "normal";
				break;
		}
		
		var areaHtmlTitle = showData[5] + "<br />" + showData[6];
		$(".data > h4").attr("class", gradeClass);
		$(".data > h4").html(areaHtmlTitle);
		
		
		//場外発売
		var tmpNumber = 0;
		var nowNumber = this.getNowDayNumber(viewStartDate);
		
		$(".jyogaiBox > ul").html("");
		for (var i = 10; i < 16; i++) {
			if (this.isOutSideSale(showData[2], nowNumber, showData[i])) {
				tmpNumber = i - 9;
				$(".jyogaiBox > ul").append("<li><img src=\"/images/top/jyogai0" + tmpNumber + ".gif\" alt=\"" + this.areaName[tmpNumber] + "\" /></li>");
			}
		}
		
		//informationの書き換え
		$(".info01").css("display", "none");
		$(".info02").css("display", "none");
		$(".info03").css("display", "none");
		$(".info04").css("display", "none");
		$(".info05").css("display", "none");
		$(".info06").css("display", "none");
		
		$(".info0" + showData[0]).css("display", "block");
		
		//TODO::NEWアイコン
		//まずはTOPアイコン
		for(var i = 1; i <= 6; i++) {
			var se = $('.tabMenu > ul > li:eq(' + ( i -1 ) + ')').attr('class');
			if (se == 'noicon') {
				continue;
			}
			var days = $('.info0' + i +' dl:first > dt').attr('class');
			days = days == "" ? 2 : parseInt(days);
			var niconStartDate = new Date($(".info0" + i + " > dl:first > dt").text());
			var niconEndDate   = niconStartDate.getAddDays(days);
			if (niconStartDate.getTime() <= nowDate.getDayTime() && niconEndDate.getTime() >= nowDate.getDayTime()) {
				if (showData[0] == i) {
					$('.tabMenu > ul > li:eq(' + ( i -1 ) + ') > img').attr('class','new select');
				}else {
					$('.tabMenu > ul > li:eq(' + ( i -1 ) + ') > img').attr('class','new');
				}
			}else {
			//	$('.tabMenu > ul > li:eq(' + ( i -1 ) + ') > img').attr('class','noicon');
			}
		}
		
		//各インフォメーションごとに表示設定をする
		$(".info0" + showData[0] + " > dl").each(function(){
			var days = $(this).children('dt').attr("class");
			if (days == "") {
				days = 2;
			}
			var startDate = new Date($(this).children('dt').text());
			var endDate = startDate.getAddDays(days);

			if (startDate.getTime() <= nowDate.getDayTime() && endDate.getTime() >= nowDate.getDayTime()){
				var newElem = $(this).children('dd').children('a');
				newElem.not(".newIcon").addClass('newIcon').addNewIcon("after");
			}
			else {
				$(this).children('dd').children('a').removeClass('newIcon');
			}
		});

		
		//onclickイベントの設定
		$(".tabMenu > ul > li > a > img").click(this.topClick)
		$(".tabMenu > ul > li ~ li > a > img").click(this.topClick);
		
	}
}

/**
 * TOPの各会場のリンクをクリックされた場合の処理
 */
Schedule.prototype.topClick = function(event){

	var setData = [];
	var alt = event.target.alt;
	var number = 0;
	
	for (var i = 0; i < schedule.areaName.length; i++) {
		if (schedule.areaName[i] == alt) {
			number = i + 1;
			break;
		}
	}
	if (number > 0) {
		number = String(number);
		for (var i = 0; i < schedule.scheduleData.length; i++) {
			if (typeof(schedule.scheduleData[i]) == "undefined") {
				continue;
			}
			if (schedule.scheduleData[i][0] == number) {
				setData.push(schedule.scheduleData[i]);
				break;
			}
		}
	}

	if ( setData.length == 0 ) {
		getErrorTopBtn(number);
	} else {
		schedule.renderTopPage(setData, 0, false);
	}
}


function showTopSchedule(){

	var url = schedule.csvDataPath + schedule.getLoadFileName();
	$.ajax({
		type: "GET",
		url: url,
		cache: true,
		dataType: "text",
		success: function(csv){
		
			schedule.csvdata = CSVData.parse(csv);
			url = schedule.csvDataPath + schedule.getLoadFileName(2);
			$.ajax({
				type:"GET",
				url:url,
				cache:true,
				dateType: "text",
				success: function(csv){
					//次の月の情報のみのデータを似絞るようにしないと、重複データが存在する
					var csdata = CSVData.parse(csv)
					var date = new Date();
					var month = date.getMonth() + 1;
					var mdata = [];
					
					for(var i = 0; i < csdata.length; i++) {
						var csmonth = csdata[i][1].split("/");
						if (csmonth[1] != month) {
							mdata.push(csdata[i]);
						}
					}
					
					schedule.csvdata = $.merge(schedule.csvdata,mdata);
					schedule.topAnalyzer();
					schedule.showTopSchedule();
				},
				error:function(e){
					schedule.topAnalyzer();
					schedule.showTopSchedule();
				}
			});
			
		//	schedule.topAnalyzer();
		//	schedule.showTopSchedule();
			
		},
		error: function(){
			alert("error not found csv");
		}
	});
}

function showAreaSchedule(areaId){
	var url = schedule.csvDataPath + schedule.getLoadFileName() + "?rd=" + Math.random();
	$.ajax({
		type: "GET",
		url: url,
		cache: false,
		dataType: "text",
		success: function(csv){
		
			schedule.csvdata = CSVData.parse(csv);
			schedule.areaAnalyzer(areaId);
			schedule.showAreaSchedule(areaId);
			
		},
		error: function(){
			alert("error not found csv");
		}
	});
}

function showAreaSchedule2(areaId){
	weather(areaId-1);
	var url = schedule.csvDataPath + schedule.getLoadFileName();
	$.ajax({
		type: "GET",
		url: url,
		cache: true,
		dataType: "text",
		success: function(csv){
		
			schedule.csvdata = CSVData.parse(csv);
			url = schedule.csvDataPath + schedule.getLoadFileName(2);
			$.ajax({
				type:"GET",
				url:url,
				cache:true,
				dateType: "text",
				success: function(csv){
					//次の月の情報のみのデータを似絞るようにしないと、重複データが存在する
					var csdata = CSVData.parse(csv)
					var date = new Date();
					var month = date.getMonth() + 1;
					var mdata = [];
					
					for(var i = 0; i < csdata.length; i++) {
						var csmonth = csdata[i][1].split("/");
						if (csmonth[1] != month) {
							mdata.push(csdata[i]);
						}
					}
					
					schedule.csvdata = $.merge(schedule.csvdata,mdata);
					var margeData = schedule.csvdata;
					schedule.areaAnalyzer2(areaId);
					//schedule.showAreaSchedule2(areaId);
				},
				error:function(e){
					schedule.errorAreaSchedule2(areaId);
					//schedule.topAnalyzer();
					//schedule.showTopSchedule();
				}
			});
			
		//	schedule.topAnalyzer();
		//	schedule.showTopSchedule();
			
		},
		error: function(){
			alert("error not found csv");
		}
	});

}

function getErrorTopBtn(areaId) {
	var url = schedule.csvDataPath + "error.csv";
	$.ajax({
		type:"GET",
		url:url,
		cache:true,
		dateType: "text",
		success: function(csv){
			var csdata = CSVData.parse(csv)
			var index = null;

			for(i = 0; i < csdata.length; i++) {
				if (csdata[i][0] == areaId) {
					index = i;
					break;
				}
			}
			
			if ( index != null) {
				schedule.renderTopPage(csdata, index, false);
			}
		},
		error: function() {
			alert("error not found csv");
		}
	});
}


//Dateクラスを拡張する
Date.prototype.getAddDays = function(days){
	var date = new Date();
	date.setTime(this.getTime() + (days * 86400000));
	return date;
}

Date.prototype.addDays = function(days){
	this.setTime(this.getTime() + (days * 86400000));
}


Date.prototype.getDayTime = function(){
	var date = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
	return date.getTime();
}

