/*
CREATE BY K.S.W 2008/6/10 
COPYRIGHT DATAOK. ALL RIGHT RESERVED.
MAIL : data@dataok.jp
*/

var date 		= new Date();
var to_year 	= date.getFullYear();
var to_month 	= date.getMonth()+1;
var to_day 		= date.getDay();
var to_date		= date.getDate();
var tokken		= "-";
var target		= "";		

var day_array	= new Array('日','月','火','水','木','金','土');
var month_array	= new Array('1','2','3','4','5','6','7','8','9','10','11','12');

function getLastDate(year,month){                 
	var d2 = new Date(year,month,"");     
	return d2.getDate();
}
function getFirstDay(year,month){	        
	var d2 	= new Date(year,month-1);
	return d2.getDay();
}
function getToDayStr(date){
	var date_str = date%7;
	return day_array[date_str];
}

function createCal(year,month,tofocus){
	
	if(year==0 || year=="") year = to_year;
	if(month==0 || month=="") month = to_month;
	
	year  = parseInt(year);
	month = parseInt(month);
	
	var firstday = getFirstDay(year,month);
	var lastdate = getLastDate(year,month);
	var returnStr= "";
	var now_day_mark  = "<font color='green'>";	
	var now_day_mark2 = "</font>";	
	var target_value = year+tokken+month+tokken;
	
	
	document.getElementById("_calendar").innerHTML= "";
	
	returnStr = returnStr + "<table width='254' height='30' cellpadding='0' cellspacing='0'><tr><td style='border-right:0px;'><select id='_to_year' onchange='createCal(this.value,"+month+",0);'>";
	
	var start_year = year-5;
	for(var i=-5;i<6;i++){
		if((year+i)==year){
			returnStr = returnStr + "<option value='"+(year+i)+"' selected>"+(year+i)+"</option>";
		}else{
			returnStr = returnStr + "<option value='"+(year+i)+"'>"+(year+i)+"</option>";
		}
	}	
	returnStr = returnStr + "</select>年";
	returnStr = returnStr + "<select id='_to_month' onchange='createCal("+year+",this.value,1);'>";
	
	for(var i=0;i<month_array.length;i++){
		if(i==month-1){
			returnStr = returnStr + "<option value='"+(month_array[i])+"' selected>"+(month_array[i])+"</option>";
		}else{
			returnStr = returnStr + "<option value='"+(month_array[i])+"'>"+(month_array[i])+"</option>";
		}
	}
	
	returnStr = returnStr + "</select>月 </td><td align='right' style='border-left:0px;' onclick='cal_close();'><a href='javascript:cal_close();'><b><font size='5px'>X</font></b></a></td></tr></table>";
	
	returnStr = returnStr + "<table cellpadding='0' cellspacing='0' width='254'><tr>";
	
	for(var i=0;i<day_array.length;i++){
		if(i%7==0){
			returnStr = returnStr + "<td align='right'><font color='red'>"+day_array[i]+"</font></td>";
		}else if(i%7==6){
			returnStr = returnStr + "<td align='right'><font color='blue'>"+day_array[i]+"</font></td>";
		}else{
			returnStr = returnStr + "<td align='right'>"+day_array[i]+"</td>";
		}
		
	}
	
	returnStr = returnStr + "</tr><tr>";
	
	for(var i=0;i<firstday;i++){
		returnStr = returnStr + "<td>&nbsp;</td>";
	}
	for(var i=firstday;i<lastdate+firstday;i++){
		//target_value
		if(to_date == ((i-firstday)+1) && year == to_year && month == to_month){
			returnStr = returnStr + "<td align='right'><a href=\"javascript:_select_day('"+target_value+((i-firstday)+1)+"');\"><font color='black'>"+((i-firstday)+1)+"</font></a></a></td>";
		}else{
			if(i%7==0){
				returnStr = returnStr + "<td align='right'><a href=\"javascript:_select_day('"+target_value+((i-firstday)+1)+"');\"><font color='red'>"+((i-firstday)+1)+"</font></a></td>";
			}else if(i%7==6){
				returnStr = returnStr + "<td align='right'><a href=\"javascript:_select_day('"+target_value+((i-firstday)+1)+"');\"><font color='blue'>"+((i-firstday)+1)+"</font></font></a></td>";
			}else{
				returnStr = returnStr + "<td align='right'><a href=\"javascript:_select_day('"+target_value+((i-firstday)+1)+"');\">"+((i-firstday)+1)+"</a></td>";
			}
		}
	
		if(i%7==6){
			returnStr = returnStr + "</tr><tr>";
		}
	}
	
	var null_space = 0;

	if(firstday+lastdate <= 35){
		null_space = 35-(firstday+lastdate);
	}else{
		null_space = 42-(firstday+lastdate);
	}

	for(var i=0;i<null_space;i++){
		returnStr = returnStr + "<td>&nbsp;</td>";
	}
	returnStr = returnStr + "</tr>";
	returnStr = returnStr + "</table>";
	
	returnStr = returnStr + 
		"<table cellpadding='0' cellspacing='0' width='254'>"+
		"<tr><td align='right'><font color='gray'>本日 : " 
		+ to_year + " / " + to_month + " / " + to_date +"</font></td></tr></table>";
	
	document.getElementById("_calendar").style.display = "block";
	document.getElementById("_calendar").innerHTML = returnStr;
	
	
	if(tofocus==0){
		document.getElementById("_to_year").focus();
	}else{
		document.getElementById("_to_month").focus();
	}
	
}
function _calendarLoad(_tokken,target_id,e){
	
	if(document.getElementById('_calendar'))
	{

	}
	else
	{
		document.body.innerHTML += '<div id="_calendar" style="position:absolute;background:white;border:1px solid silver;"></div>';
	}

	if(_tokken!=""){ tokken = _tokken; }
	if(target_id==""){
		alert("Not Have Target ID.");
	}else{
		target = target_id;
	
		var layer_left =  e.pageX ? e.pageX : document.documentElement.scrollLeft+e.clientX; 
		var layer_top  =  e.pageY ? e.pageY : document.documentElement.scrollTop+e.clientY; 

		
		document.getElementById("_calendar").style.left = layer_left+"px";
		document.getElementById("_calendar").style.top = (layer_top+20)+"px";
		
		createCal("","",0);
	}
}
function _select_day(_value){
	document.getElementById(target).value = _value;
	document.getElementById("_calendar").style.display = "none";
}
function cal_close(){
	document.getElementById("_calendar").innerHTML= "";
	document.getElementById("_calendar").style.display = "none";
}
