$(function(){
	//idとして#headerを親要素として指定
	var $parentObj = $("#container > #header");
	var calendarURL = "/guide/opentime/";
	
	
	var jsonUrl = "/json/calendar.json";
	$.getJSON(jsonUrl, function(json){
		if(!json) {
			return;
		}
		var today = new Date();
		var thisMonth;
		if(today.getMonth() + 1 < 10) {
			thisMonth = today.getFullYear().toString() + "0" + (today.getMonth() + 1).toString(); 
		} else {
			thisMonth = today.getFullYear().toString() + (today.getMonth() + 1).toString(); 
		}
		
		var monthJson = json[thisMonth];
		if(!monthJson) {
			return;
		}
		var todayJson = monthJson['dates'][today.getDate()];
		if(!todayJson) {
			return;
		}
		
		var $div = $("<div />").attr("id", "openhour").addClass(todayJson['en_day']);
		var $dl = $("<dl />");
		if(todayJson['holiday']) {
			if(todayJson['holiday'] == "祝前日") {
				$div.addClass("pre");
			} else {
				$div.addClass("hol");
			}
		}
		var $dt = $("<dt />").html("本日の営業時間");
		$dl.append($dt);
		var $dd = $("<dd />").addClass("hour").text(getOpenHour(todayJson));
		$dl.append($dd);
		
		var $link = $("<a />").attr("href",calendarURL).html("詳しく見る");
		var $pLink = $("<dd />").addClass("more").append($link);
		$dl.append($pLink);
		$div.append($dl);
		$parentObj.append($div);
	})
	
	function setLoader($target, imgPath) {
		var $loader = $("<img />").addClass("loader").attr("src",imgPath);
		$loader.css("margin","60px auto 0");
		$target.append($loader);
	}
	function removeLoader($target) {
		var $loader = $target.children("img.loader");
		$loader.remove();
	}
	function getOpenHour(todayJson){
		var openHour = [];
		var opening = getHourStr(todayJson["open_hour"]);
		var closing = getHourStr(todayJson["close_hour"]);
		
		// 文字列が半角数字以外であればそのまま表示
		if(opening == false) {
			openHour.push(todayJson["open_hour"]);
		} else {
		// 文字列が全角数字であれば半角へ、また":"がなければ加えて表示
			openHour.push(opening);
		}
		if(opening && closing) {
			openHour.push("～");
		}
		if(closing == false) {
			openHour.push(todayJson["close_hour"]);
		} else {
			openHour.push(closing);
		}
		return openHour.join("");
	
	}
	function getHourStr(openHour) {
		var hankaku = replaceZenkaku(openHour).replace("：",":");
		if(!firstCheck(hankaku)) {
			return false;
		}
		if(hankaku.indexOf(":") != -1) {
			return hankaku;
		} else {
			return hankaku + ":00";
		}
		function firstCheck(str) {
			if(str.match(/[0-9:]+/)){
	 			return true;
			} else {
				return false;
			}
		}
		function replaceZenkaku(num) {
			for(var i = 0; i < 10; i++) {
				num = num.replace(new RegExp(new Array('０','１','２','３','４','５','６','７','８','９')[i],'g'),i);  
			}
    		return num;  
		}
	}
})

