var debugMode = true;
//onerror=handleErr;
var cal_cur_month;
var returnObj;

function callCalendar( txtBoxId, e ) {
     document.getElementById( "innerCalendar" ).style.display = "block";
     var left = mouseX(e) + "px";
     var top = mouseY(e) + "px";
     document.getElementById( "innerCalendar" ).style.left = left;
     document.getElementById( "innerCalendar" ).style.top = top;
     returnObj = document.getElementById( txtBoxId );
}

function handleErr(msg,url,l){
	if(debugMode) {
	  var txt="** 에러 공지 **\n\n이 페이지에는 자바스크립트 에러가 있습니다.\n\n";
	  txt+="에러: " + msg + "\n";
	  txt+="URL: " + url + "\n";
	  txt+="Line: " + l + "\n\n";
	  txt+="'확인' 버튼을 누르세요.\n\n";
	  alert(txt);
	}
	return true;
}

var MonthLength = new Array(31,29,31,30,31,30,31,31,30,31,30,31);

function getToday() {
	return new Date();
}

function changeYear(delta) {
	var el = document.nFrm.selYear;
	var year = document.getElementById("selYear").innerHTML;
	year = parseInt(year) + delta;
	document.getElementById("selYear").innerHTML = year;
	MonthLength[1] = checkLeap(year);
	
	removeDateList();
	setDateList(parseInt(year), cal_cur_month);
}

function changeMonth(month) {
	changeMonthStyle(cal_cur_month, month);
	cal_cur_month = month;
	removeDateList();
	setDateList(parseInt(document.getElementById("selYear").innerHTML), month);
}

function changeMonthStyle(before_month, cur_month) {
	if ( '' != before_month || before_month == '0' ) {
		with ( document.getElementById("monthBox" + before_month).style ) {
			fontWeight = "normal";
			color = "#777777";
		}
	}
	with ( document.getElementById("monthBox" + cur_month).style ) {
		fontWeight = "bold";
		color = "#ff9955";
	}
}

function checkLeap(yy) {
	if ((yy % 100 != 0 && yy % 4 == 0) || (yy % 400 == 0)) { return 29; }
	else { return 28; }
}

function initCalendar() {
	var today = new Date();
	
	document.getElementById("selYear").innerHTML = (today.getYear() < 2000) ? today.getYear()+1900 : today.getYear();
	MonthLength[1] = checkLeap(parseInt(document.getElementById("selYear").innerHTML));
	
	setDateList((today.getYear() < 2000) ? today.getYear()+1900 : today.getYear(), today.getMonth());
	cal_cur_month = today.getMonth();
	changeMonthStyle('', cal_cur_month);
}

function setDateList(year, month) {
	var tbl = document.getElementById('calendarTable');
	var lastRow = tbl.rows.length;
	
	var dayOfCalendar = new Date();
	dayOfCalendar.setYear(year);
	dayOfCalendar.setMonth(month);
	dayOfCalendar.setDate(1);
	
	var lastDay = MonthLength[month];
	var dayCount = 1;
	var goDayWrite = false;
	
	var today = new Date();
	var isTodayPrint = false;
	var todayYear = (today.getYear() < 2000) ? today.getYear()+1900 : today.getYear();
	if(todayYear==year && today.getMonth()==month)
	  isTodayPrint = true;
	
	var attName = navigator.appName.indexOf("Microsoft")!=-1 ? "className" : "class";
	
	for (var r=0; r<6; r++) {
	  var row = tbl.insertRow(lastRow);
	  row.id = "row_" + lastRow;
	  for (var j=0; j<7; j++) {
	    if(!goDayWrite) {
	      if(r==0 && j==dayOfCalendar.getDay())
	        goDayWrite = true;
	    }
	   
	    var cell = row.insertCell(j);
	
	    if(isTodayPrint && goDayWrite && today.getDate()==dayCount)
	      cell.setAttribute(attName, "calendar_day022");
	    else if(j==0)
	      cell.setAttribute(attName, "calendar_day03");
		else if(j==6)
		  cell.setAttribute(attName, "calendar_day04");				  
	    else
	      cell.setAttribute(attName, "calendar_day02");
	
	    var textNode;
	    if(goDayWrite && dayCount <= lastDay) {
	      textNode = document.createTextNode(dayCount++);
	    } else {
	      textNode = document.createTextNode(" ");
	      cell.setAttribute(attName, "calEmpty");
	    }
	    cell.appendChild(textNode);
	    cell.onclick = function() { returnDate(this); };  
	  }
	  lastRow += 1;
	  if(dayCount>=lastDay+1)
	    break;
	}
}

function returnDate(obj) {
	var year = parseInt(document.getElementById("selYear").innerHTML);
	var month = 1+cal_cur_month;
	var date = obj.firstChild.nodeValue;
	if ( month < 10 ) 
		month = "0" + month;
	if ( date < 10 )
		date = "0" + date;
	
	document.getElementById("innerCalendar").style.display = "none";
	//returnObj.setAttribute("value", year + "-" +  month + "-" + date);
	returnObj.value = year + "-" +  month + "-" + date;
}

function removeDateList(row) {
	var tbl = document.getElementById('calendarTable');
	var lastRow = tbl.rows.length;
	for (var i=1; i<lastRow; i++) {
	  tbl.deleteRow(lastRow-i);
	}
}

function closeCalendar() {
	document.getElementById("innerCalendar").style.display = "none";
}

function mouseX(e) { 
   var posx = 0;
   if (!e) var e = window.event;
   if (e.pageX)
   {
      posx = e.pageX;
   }
   else if (e.clientX)
   {
      posx = e.clientX + document.body.scrollLeft;
   }
   return posx;
}

function mouseY(e) { 
   var posy = 0;
   if (!e) var e = window.event;
   if (e.pageY) { //FF
      posy = e.pageY;
   }
   else if (e.clientY)   { //IE
      posy = e.clientY + document.body.scrollTop;
   }
   return posy;
}