	/*
	  Chanho 20080806
	  
	  加入多语言支持,可以多月份显示(目前最多两月),月份支持下拉
	  
	  使用说明:
	    1.多语言支持仅仅是在选择日期的时候!需要其它js文件支持!
	    2.样式使用见Calendar.css 可以自己定制Calendar1.css为grey样式
	    
	  标准使用方式:
<html>
	<head>
		<title></title>
		<meta http-equiv="content-type" content="text/html; charset=utf-8">
		<link rel="stylesheet" href="commonscripts/components/calendar/calendar.css" type="text/css"  />
		<script type="text/javascript" src="commonscripts/common.js"></script>
		<script type="text/javascript" src="commonscripts/prototype.js"></script>
		<script type="text/javascript" src='commonscripts/forms.js'></script>
		<script type="text/javascript" src='commonscripts/components/calendar/simplecalendar.js'></script>
		<script type="text/javascript" src="commonscripts/translator.js"></script>
	</head>
	<body>
	<form>
		<input name="checkinDate" id="checkinDate" maxlength='7' value=''
			style="text-transform: uppercase;width: 60px;"
			onchange="this.value = this.value.toUpperCase();"/>
		<a
			onmouseover="if (timeoutId) clearTimeout(timeoutId);window.status='Show Calendar';return true;"
			onclick="g_Calendar.show(event,'forms[0].checkinDate',false,'ddmmmyy', parseDate(document.forms[0].checkinDate.value),[[new Date().addDays(1) , new Date().addDays(366)]]); return false;"
			onmouseout="if (timeoutDelay) calendarTimeout();window.status='';"
			href="###"><img alt="" src='images/icon_calendar.gif' border='0' />
		</a>
		
		<input name="checkinDate1" id="checkinDate1" maxlength='7' value=''
			style="text-transform: uppercase;width: 60px;"
			onchange="this.value = this.value.toUpperCase();"/>
		<a
			onmouseover="if (timeoutId) clearTimeout(timeoutId);window.status='Show Calendar';return true;"
			onclick="g_Calendar.show(event,'forms[0].checkinDate1',false,'ddmmmyy', parseDate(document.forms[0].checkinDate1.value),[[new Date().addDays(1) , new Date().addDays(366)]],2); return false;"
			onmouseout="if (timeoutDelay) calendarTimeout();window.status='';"
			href="###"><img alt="" src='images/icon_calendar.gif' border='0' />
		</a>
	</form>
	</body>
</html>


   目前不完善的地方 : 1 .当选取一个月显示的时候 , 右边仍然有一块空白! 
	*/
	
	var timeoutDelay = 1500; // milliseconds, change this if you like, set to 0 for the calendar to never auto disappear
	var g_startDay = 0// 0=sunday, 1=monday
	// preload images
	var imgUp = new Image(8,12);imgUp.src = 'images/up.gif';
	var imgDown = new Image(8,12);imgDown.src = 'images/down.gif';
	// used by timeout auto hide functions
	var timeoutId = false;
	// the now standard browser sniffer class
	function Browser(){
	  this.dom = document.getElementById?1:0;
	  this.ie4 = (document.all && !this.dom)?1:0;
	  this.ns4 = (document.layers && !this.dom)?1:0;
	  this.ns6 = (this.dom && !document.all)?1:0;
	  this.ie5 = (this.dom && document.all)?1:0;
	  this.ok = this.dom || this.ie4 || this.ns4;
	  this.platform = navigator.platform;
	}
	var browser = new Browser();
	// dom browsers require this written to the HEAD section
	
	if (browser.dom || browser.ie4){
	    document.writeln('<div><table></table></div>');
	    document.writeln('<style>');
		document.writeln('#container {');
		document.writeln('position : absolute;');
		document.writeln('left : 100px;');
		document.writeln('z-index:100;');
		document.writeln('top : 100px;');
		document.writeln('width : 420px;');
		browser.platform=='Win32'?height=150:height=155;
		document.writeln('height : ' + height +'px;');
		//document.writeln('clip:rect(0px 268px ' + height + 'px 0px);');
		//document.writeln('overflow : hidden;');
		document.writeln('visibility : hidden;');
		document.writeln('background-color:transparent;');
		document.writeln('}');
		document.writeln('body, td, input, textarea,select {');
		document.writeln('line-height:1.2;');
		document.writeln('}');
		document.writeln('</style>')
		document.write('<div id="container"');
		if (timeoutDelay) document.write('onmouseout="calendarTimeout();" onmouseover="if (timeoutId) clearTimeout(timeoutId);"');
		document.write('></div>');
	}
	var g_Calendar;  // global to hold the calendar reference, set by constructor
	function calendarTimeout(){
	  if (browser.ie4 || browser.ie5){
	    if (window.event.srcElement && window.event.srcElement.name!='month') timeoutId=setTimeout('g_Calendar.hide();',timeoutDelay);
	  }
	  if (browser.ns6 || browser.ns4){
	    timeoutId=setTimeout('g_Calendar.hide();',timeoutDelay);
	  }
	}
	
	// constructor for calendar class
	function Calendar(){
	  g_Calendar = this;
	  // some constants needed throughout the program
	  this.daysOfWeekEnglish = ["Su","Mo","Tu","We","Th","Fr","Sa"];
	  this.daysOfWeekEnglish_ = ["Sun","Mon","Tue","Wen","Thr","Fri","Sat"];
	  this.daysOfWeekChina = ["日","一","二","三","四","五","六"];
	  this.monthsEnglish = ["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"];
	  this.monthsEnglish1 = ["January","February","March","April","May","June","July","August","September","October","November","December"];
	  this.monthsChina = ["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"];
	  this.daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	  
	  if (browser.ns4){
	    var tmpLayer = new Layer(127);
		if (timeoutDelay){
		  tmpLayer.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);
		  tmpLayer.onmouseover = function(event) { if (timeoutId) clearTimeout(timeoutId); };
		  tmpLayer.onmouseout = function(event) { timeoutId=setTimeout('g_Calendar.hide()',timeoutDelay);};
		}
	    tmpLayer.x = 100;
	    tmpLayer.y = 100;
	    tmpLayer.bgColor = "#ffffff";
	  }
	  if (browser.dom || browser.ie4){
		var tmpLayer = browser.dom?document.getElementById('container'):document.all.container;
	  }
	  this.containerLayer = tmpLayer;
	  if (browser.ns4 && browser.platform=='Win32') {
	    this.containerLayer.clip.height=134;
	    this.containerLayer.clip.width=127;
	  }
	}
 	Calendar.prototype.getFirstDOM = function(m,y) {
		var thedate = new Date();
		thedate.setDate(1);
		thedate.setMonth(m);
		thedate.setFullYear(y);
		return thedate.getDay();
	}

	Calendar.prototype.getDaysInMonth = function (m,y){
	   if (m!=1) {
	   		return this.daysInMonth[m]
	   }else {
	     // is it a leap year
	    if (Date.isLeapYear(y)) {
		  return 29;
		}else {
		  return 28;
		}
	   }
	}
	Calendar.prototype.buildString = function(){
		try{
			var lan =null;//getCurLocale(window);
		}catch(e){
			alert("多语言依赖translator.js");
		}
		if(lan==null) lan = Locale.EN;
		  if(lan==Locale.EN){
		  	var _daysOfWeek = this.daysOfWeekEnglish;
		  	var _months = this.monthsEnglish1;
		  }else{
		  	var _daysOfWeek = this.daysOfWeekChina;
		  	var _months = this.monthsChina;
		  }
	  var tmpStr = [];
	  tmpStr.push('<table border="0" width="200px" cellspacing="0" cellpadding="2"><tr><td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="1" class="calBgColor">');
	  tmpStr.push('<tr>');
	  tmpStr.push('<td width="60%" class="cal1" align="left">');
	  
	  tmpStr.push('<table border="0" cellspacing="0" cellpadding="0"><tr><td><a href="javascript: g_Calendar.changeMonth(-1);"><img name="calendar" src="images/down.gif" width="8" height="12" border="0" alt=""></a></td>');
	   if (this.hasDropDown) {
	    tmpStr.push('<td><select class="month" name="month" onchange="g_Calendar.selectChange(this.value);">');
		for (var i=0;i<_months.length;i++){
	      tmpStr.push('<option value="' + i + '"'); 
		  if (i == this.month) tmpStr.push( ' selected');
		  tmpStr.push('>' + _months[i] + '</option>');
	    }
	    tmpStr.push('</select></td>');
	  } else {
		tmpStr.push('<td class="cal1" width="100%" style="text-align:center">' + _months[this.month] + '</td>');
	  }
	    
	  tmpStr.push('<td class="cal1"><a href="javascript: g_Calendar.changeMonth(+1);"><img name="calendar" src="images/up.gif" width="8" height="12" border="0" alt=""></a></td></tr></table>');
	  tmpStr.push('</td>');
	  /* observation : for some reason if the below event is changed to 'onChange' rather than 'onBlur' it totally crashes IE (4 and 5)!
	  */
	  tmpStr.push('<td width="40%" align="right" class="cal1">');
	  
	  
	  tmpStr.push('<table border="0" cellspacing="0" cellpadding="0"><tr><td class="cal1"><a href="javascript: g_Calendar.changeYear(-1);"><img name="calendar" src="images/down.gif" width="8" height="12" border="0" alt=""></a></td>');
	  tmpStr.push('<td class="cal1" width="100%" style="text-align:center">' + this.year + '</td>');
	  tmpStr.push('<td class="cal1"><a href="javascript: g_Calendar.changeYear(+1);"><img name="calendar" src="images/up.gif" width="8" height="12" border="0" alt=""></a></td></tr></table>');
	  
	  tmpStr.push('</td>');
	  tmpStr.push('</tr>');
	  tmpStr.push('</table>');
	  var iCount = 1;

	  var iFirstDOM = (7+this.getFirstDOM(this.month,this.year)-g_startDay)%7; // to prevent calling it in a loop

	  var iDaysInMonth = this.getDaysInMonth(this.month,this.year); // to prevent calling it in a loop
	  
	  tmpStr.push('<table width="100%" border="0" cellspacing="0" cellpadding="1" class="calBgColor1">');
	  tmpStr.push('<tr>');
	    for (var i=0;i<7;i++){
		  tmpStr.push('<td align="center" class="calDaysColor1">' + _daysOfWeek[(g_startDay+i)%7] + '</td>');
		}
	  tmpStr.push('</tr>');
	 
	  var tmpCompare;
	  for (var j=1;j<=6;j++){
	     tmpStr.push('<tr>');
	     for (var i=1;i<=7;i++){
		   tmpStr.push('<td width="16" align="center" ');
		   if ( (7*(j-1) + i)>=iFirstDOM+1  && iCount <= iDaysInMonth){
		     if(this.selectDate!=undefined && this.selectDate.getDate()==iCount && this.selectDate.getMonth()==this.month && this.selectDate.getFullYear()==this.year){
		        tmpStr.push('class="calSelectColor"');
		     }else if (iCount==this.day && this.year==this.oYear && this.month==this.oMonth){
		        tmpStr.push('class="toDay"');
		     }
			 else {
			    if (i==7-g_startDay || i==((7-g_startDay)%7)+1) tmpStr.push('class="calWeekend"');
				else tmpStr.push('class="cal"');
			 }
		     tmpStr.push('>');
			 /* could create a date object here and compare that but probably more efficient to convert to a number
			   and compare number as numbers are primitives */
			 tmpCompare = parseInt('' + this.year + padZero(this.month) + padZero(iCount),10);
			 var bool = false;
			 for(var  ii=0;ii<this.dateRanges.length;ii++){
			 	var _tmpFrom = this.dateRanges[ii][0];
			 	var _tmpTo = this.dateRanges[ii][1];
				 if (tmpCompare >= _tmpFrom && tmpCompare <= _tmpTo) {
				   bool = true;
				   break;
				 }
			 }
			 if (bool) {
				if(i==1)
					tmpStr.push('<a style="color:red;text-decoration:none;" href="javascript: g_Calendar.clickDay(' + iCount + ',' +this.month+','+this.year+');">' + iCount + '</a>');
				else
			   		tmpStr.push('<a class="cal" href="javascript: g_Calendar.clickDay(' + iCount + ',' +this.month+','+this.year+');">' + iCount + '</a>');
			 } else {
			  	if(i==1)
			   		tmpStr.push('<span style="color:red;">' + iCount + '</span>');
			   	else
			   		tmpStr.push('<span class="disabled">' + iCount + '</span>');
			 }
			 iCount++;
		   } else {
		     if  (i==7-g_startDay || i==((7-g_startDay)%7)+1) tmpStr.push('class="calWeekend"'); else tmpStr.push('class="cal"');
			 tmpStr.push('>&nbsp;');
		   }
		   tmpStr.push('</td>');
		 }
		 tmpStr.push('</tr>');
	  }
	  tmpStr.push('</table></td></tr>');
	  tmpStr.push('<tr><td><table cellpadding="0" cellspacing="0" border="0" align="center" ><tr><td><a class="cal" href="javascript:showPublicHolidays()" >Public Holidays</a></td></tr></table></td></tr>');
	  tmpStr.push('</table>');
//	  tmpStr.push('</table><iframe style="border:0;position:absolute; visibility:inherit; top:0px; left:0px; z-index:-1; filter=\'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)\';"></iframe>');
	 
	//如果calendarNum==1,直接返回
	  if(this.calendarNum==1) return tmpStr.join("");
	  
	  //********************************
	  var _month = this.month + 1;
	  var _year = this.year;
	  if(_month>11){
	  	_month = 0;
	  	_year +=1;
	  }
	  var tmpStr1 = [];
	  tmpStr1.push('<table border="0" width="200px;" cellspacing="0" cellpadding="2" >');//-1
	  tmpStr1.push('	<tr>');
	  tmpStr1.push('		<td valign="top">');
	  tmpStr1.push('		<table width="100%" border="0" cellspacing="0" cellpadding="1" class="calBgColor">');//--2
	  tmpStr1.push('			<tr>');
	  tmpStr1.push('				<td width="60%" class="cal1" align="left">');
	  
	  tmpStr1.push('<table border="0" cellspacing="0" cellpadding="0">');//月//---3
	  tmpStr1.push('	<tr>');
	  tmpStr1.push('		<td><a href="javascript: g_Calendar.changeMonth(-1);"><img name="calendar" src="images/down.gif" width="8" height="12" border="0" alt=""></a></td>');
	  if(this.hasDropDown) {
	    tmpStr1.push('		<td><select class="month" name="month" onchange="g_Calendar.selectChange(this.value);">');
		for (var i=0;i<_months.length;i++){
	      tmpStr1.push('<option value="' + i + '"'); 
		  if (i == _month) tmpStr1.push( ' selected');
		  tmpStr1.push('>' + _months[i] + '</option>');
	    }
	    tmpStr1.push('</select></td>');
	  } else {
		tmpStr1.push('	<td class="cal1" width="100%" style="text-align:center">' + _months[_month] + '</td>');
	  }
	  tmpStr1.push('	<td class="cal1"><a href="javascript: g_Calendar.changeMonth(+1);"><img name="calendar" src="images/up.gif" width="8" height="12" border="0" alt=""></a></td>');
	  tmpStr1.push('	</tr>');
	  tmpStr1.push('</table>');//---3
	  
	  tmpStr1.push('</td>');
	  /* observation : for some reason if the below event is changed to 'onChange' rather than 'onBlur' it totally crashes IE (4 and 5)!
	  */
	  tmpStr1.push('<td width="40%" align="right" class="cal1">');
	  tmpStr1.push('<table border="0" cellspacing="0" cellpadding="0">');//年//---4
	  tmpStr1.push('	<tr>');
	  tmpStr1.push('		<td class="cal1"><a href="javascript: g_Calendar.changeYear(-1);"><img name="calendar" src="images/down.gif" width="8" height="12" border="0" alt=""></a></td>');
	  tmpStr1.push('		<td class="cal1" width="100%" style="text-align:center">' + _year + '</td>');
	  tmpStr1.push('		<td class="cal1"><a href="javascript: g_Calendar.changeYear(+1);"><img name="calendar" src="images/up.gif" width="8" height="12" border="0" alt=""></a></td>');
	  tmpStr1.push('	</tr>');
	  tmpStr1.push('</table>');//---4
	  tmpStr1.push('</td>');
	  tmpStr1.push('</tr>');
	  tmpStr1.push('</table>');//--2
	  var iCount = 1;

	  var iFirstDOM = (7+this.getFirstDOM(_month,_year)-g_startDay)%7; // to prevent calling it in a loop

	  var iDaysInMonth = this.getDaysInMonth(_month,_year); // to prevent calling it in a loop
	  
	  tmpStr1.push('<table width="100%" border="0" cellspacing="0" cellpadding="1" class="calBgColor1">');//--5
	  tmpStr1.push('<tr>');
	    for (var i=0;i<7;i++){
		  tmpStr1.push('<td align="center" class="calDaysColor1">' + _daysOfWeek[(g_startDay+i)%7] + '</td>');
		}
	  tmpStr1.push('</tr>');
	 
	  var tmpCompare;
	  for (var j=1;j<=6;j++){
	     tmpStr1.push('<tr>');
	     for (var i=1;i<=7;i++){
		   tmpStr1.push('<td width="16" align="center" ');
		   if ( (7*(j-1) + i)>=iFirstDOM+1  && iCount <= iDaysInMonth){
		     if(this.selectDate!=undefined && this.selectDate.getDate()==iCount && this.selectDate.getMonth()==_month && this.selectDate.getFullYear()==_year){
		        tmpStr1.push('class="calSelectColor"');
		     }else if (iCount==this.day && _year==this.oYear && _month==this.oMonth){
		        tmpStr1.push('class="toDay"');
		     }
			 else {
			    if (i==7-g_startDay || i==((7-g_startDay)%7)+1) tmpStr1.push('class="calWeekend"');
				else tmpStr1.push('class="cal"');
			 }
		     tmpStr1.push('>');
			 /* could create a date object here and compare that but probably more efficient to convert to a number
			   and compare number as numbers are primitives */
			 tmpCompare = parseInt('' + _year + padZero(_month) + padZero(iCount),10);
			 var bool = false;
			 for(var  ii=0;ii<this.dateRanges.length;ii++){
			 	var _tmpFrom = this.dateRanges[ii][0];
			 	var _tmpTo = this.dateRanges[ii][1];
				 if (tmpCompare >= _tmpFrom && tmpCompare <= _tmpTo) {
				   bool = true;
				   break;
				 }
			 }
			 if (bool) {
			  	if(i==1)
			  		tmpStr1.push('<a style="color:red;text-decoration:none;" href="javascript: g_Calendar.clickDay(' + iCount + ','+_month+','+_year+');">' + iCount + '</a>');
			  	else
					tmpStr1.push('<a class="cal" href="javascript: g_Calendar.clickDay(' + iCount + ','+_month+','+_year+');">' + iCount + '</a>');
			 } else {
			  	if(i==1)
			   		tmpStr1.push('<span style="color:red;">' + iCount + '</span>');
			   	else
			   		tmpStr1.push('<span class="disabled">' + iCount + '</span>');
			 }
			 iCount++;
		   } else {
		     if  (i==7-g_startDay || i==((7-g_startDay)%7)+1) tmpStr1.push('class="calWeekend"'); else tmpStr1.push('class="cal"');
			 tmpStr1.push('>&nbsp;');
		   }
		   tmpStr1.push('</td>');
		 }
		 tmpStr1.push('</tr>');
	  }
	  tmpStr1.push('</table>');//--5
	  tmpStr1.push('</td></tr>');
	  tmpStr1.push('<tr><td><table cellpadding="0" cellspacing="0" border="0" align="center" ><tr><td><a class="cal" href="javascript:showPublicHolidays()" >Public Holidays</a></td></tr></table></td></tr>');
	  tmpStr1.push('</table>');//-1
	 
	  
	  return '<table cellspacing="0" cellpadding="0" width="100%" border="0" style="margin:0;padding:0;background-color: #f8e0f1;"><tr><td width="50%" style="text-align:center;">' + tmpStr.join("") + '</td><td width="50%" style="text-align:center">' + tmpStr1.join("") + '</td></tr></table><iframe style="position: absolute; z-index: -1; width: 100%; height: 130; top: 0;left: 0; scrolling: no;" frameborder="0" src="about:blank">';
	}
	
	Calendar.prototype.selectChange = function(val){
		//this.month = browser.ns6?this.containerLayer.ownerDocument.forms[0].month.selectedIndex:this.containerLayer.document.forms[0].month.selectedIndex;
		this.month = parseInt(val,10);
		this.writeString(this.buildString());
	}
	
	Calendar.prototype.inputChange = function(){
	  var tmp = browser.ns6?this.containerLayer.ownerDocument.forms[0].year:this.containerLayer.document.forms[0].year;
	  if (tmp.value >=1900 || tmp.value <=2100){
	    this.year = tmp.value;
	    this.writeString(this.buildString());
	  } else {
	    tmp.value = this.year;
	  }
	}
	Calendar.prototype.changeYear = function(incr){
	   (incr==1)?this.year++:this.year--;
	   this.writeString(this.buildString());
	}
	Calendar.prototype.changeMonth = function(incr){
	    if (this.month==11 && incr==1){
	      this.month = 0;
	  	  this.year++;
	    } else {
	      if (this.month==0 && incr==-1){
	        this.month = 11;
		    this.year--;
	      } else {
		    (incr==1)?this.month++:this.month--;
		  }
		}
		this.writeString(this.buildString());
	}
	
	Calendar.prototype.clickDay = function(day,month,year){
		
	   var tmp = eval('document.' + this.target);
	   //tmp.focus();   delete by  ho  20070525
	   tmp.value = this.formatDateAsString(day,month,year);
	   if(tmp.onkeyup) tmp.onkeyup();
	   if (browser.ns4) this.containerLayer.hidden=true;
	   if (browser.dom || browser.ie4){
	     this.containerLayer.style.visibility='hidden';
	   }
	   if(this.setDateFun!=null){
	    eval(this.setDateFun + "('"+year+"','"+month+"','"+day+"');");
	   }
	}
	
	Calendar.prototype.formatDateAsString = function(day, month, year){
	   var delim="";
	   if(this.dateDelim!=""){
	        delim = eval('/\\' + this.dateDelim + '/g');
	   }else{
	        delim="";
	   }
	   var theDate = new Date(year,month,day);
	   var wek = theDate.getDay();
	   //alert(wek);
	   //alert(this.daysOfWeekEnglish[wek]);
	   switch (this.dateFormat.replace(delim,"")){
	   	
	     case 'ddmmmyyyy':return padZero(day) + this.dateDelim + this.monthsEnglish[month].substr(0,3) + this.dateDelim + year;
	     //case 'ddmmmyyyy':return padZero(day) + this.dateDelim + this.monthsEnglish[month].substr(0,3) + this.dateDelim + year + "(" + this.daysOfWeekEnglish_[wek] + ")";
		 case 'ddmmyyyy': return padZero(day) + this.dateDelim + padZero(month+1) + this.dateDelim + year;
		 case 'mmddyyyy': return padZero((month+1)) + this.dateDelim + padZero(day) + this.dateDelim + year;
	     case 'yyyymmdd': return year + this.dateDelim + padZero(month+1) + this.dateDelim + padZero(day);
		 case 'ddmmmyy':  return padZero(day) +  this.monthsEnglish[month].substr(0,3).toUpperCase( ) +  (""+year).substring(2,4);
		 
		 default: alert('unsupported date format');
	   }
	}
	Calendar.prototype.writeString = function(str){
	  if (browser.ns4){
	    this.containerLayer.document.open();
	    this.containerLayer.document.write(str);
	    this.containerLayer.document.close();
	  } 
	  if (browser.dom || browser.ie4){
	    this.containerLayer.innerHTML = str;
	  }
	}
	
	//chanho 
	function parseInts(dateranges){
		var res = [];
		var tmpFrom,tmpTo;
		var daterangeF,daterangeT;
		if(dateranges==null) return res;
			
		for(var i=0;i<dateranges.length;i++){
			daterange = dateranges[i];
			daterangeF = dateranges[i][0];
			daterangeT = dateranges[i][1];
			tmpFrom = parseInt('' + padZero(daterangeF.getFullYear()) + padZero(daterangeF.getMonth()) + padZero(daterangeF.getDate()),10);
			tmpTo = parseInt('' + padZero(daterangeT.getFullYear()) + padZero(daterangeT.getMonth()) + padZero(daterangeT.getDate()),10);
			res[i] = [tmpFrom,tmpTo];
		}
		//window.status = res;
		return res;
	}
	
	//chanho 20080806使用这个calendarNum 参数可以使用两个calendar
	Calendar.prototype.show = function(event, target, bHasDropDown, dateFormat,  selectDate ,dateRanges ,calendarNum){
	this.calendarNum = calendarNum || 1; //默认为1 ,暂时只支持1 &　2;
	this.hasDropDown = bHasDropDown;
	this.dateFormat = dateFormat || 'dd-mmm-yyyy';
	this.selectDate=selectDate;
	if(dateRanges==null){
		// calendar can restrict choices between 2 dates, if however no restrictions
		// are made, let them choose any date between 1900 and 3000
		this.dateFrom = new Date(1900,0,1);
		this.dateTo = new Date(3000,0,1);
		this.dateRanges = parseInts([[this.dateFrom,this.dateTo]]);	
	}else{
		this.dateRanges = parseInts(dateRanges);
	}
	switch (this.dateFormat){
	  case 'dd-mmm-yyyy':
	  case 'dd-mm-yyyy':
	  case 'yyyy-mm-dd':
	    this.dateDelim = '-';
		break;
	  case 'dd/mm/yyyy':
	  case 'mm/dd/yyyy':
	  case 'dd/mmm/yyyy':
	    this.dateDelim = '/';
		break;
	  default:
	    this.dateDelim = '*';
		break;
	}
	  if (browser.ns4) {
	    if (!this.containerLayer.hidden) {
		  this.containerLayer.hidden=true;
		  return;
		}
	   }
	
	  if (browser.ie5 || browser.ie4){
	    var event = window.event;
	  }
	 
	  if (browser.ns4){
	    this.containerLayer.x = event.x+10;
	    this.containerLayer.y = event.y-5;
	  }
	    
	  if (browser.ie5 || browser.ie4){
	    var obj = eval('document.' + target);
    	x = 0 ;
    	y = 0 ;
  		while (obj.offsetParent != null) {
   		  x += obj.offsetLeft;
   		  obj = obj.offsetParent;
  		}
  		
  		x += obj.offsetLeft;
		var obj = eval('document.' + target);
	    while (obj.offsetParent != null) {
    		  y += obj.offsetTop;
    		  obj = obj.offsetParent;
  		}
  		y += obj.offsetTop;
		
		var obj = eval('document.' + target);
        this.containerLayer.style.left = x;
		if (event.y>0)this.containerLayer.style.top = y + obj.offsetHeight + 1;
	  }
	  
	  if (browser.ns6){
	  	var obj = eval('document.' + target);
    	x = 0 ;
    	y = 0 ;
  		while (obj.offsetParent != null) {
    		x += obj.offsetLeft;
    		obj = obj.offsetParent;
  		}
  		x += obj.offsetLeft;
		var obj = eval('document.' + target);
	    while (obj.offsetParent != null) {
    		y += obj.offsetTop;
    		obj = obj.offsetParent;
  		}
  		y += obj.offsetTop;
		var obj = eval('document.' + target);
        this.containerLayer.style.left = x;
		this.containerLayer.style.top = y + obj.offsetHeight + 1;
	   // this.containerLayer.style.left = event.pageX+10;
		//this.containerLayer.style.top = event.pageY-5;
	  }
	  this.target = target;
	  var tmp = eval('document.' + this.target);
	  if (tmp && tmp.value && tmp.value.indexOf('d')==-1){ //&& tmp.value.split(this.dateDelim).length==3 del by Chanho
	    var atmp = tmp.value.split(this.dateDelim);
		switch (this.dateFormat){
		 case 'dd-mmm-yyyy':
		 case 'dd/mmm/yyyy':
		   for (var i=0;i<this.monthsEnglish.length;i++){
		     if (atmp[1].toLowerCase()==this.monthsEnglish[i].substr(0,3).toLowerCase()){
		       this.month = this.oMonth = i;
			   break;
		     }
		   }
		   this.day = parseInt(atmp[0],10);
		   this.year = this.oYear = parseInt(atmp[2],10);
		   break;
		 case 'dd/mm/yyyy':
		 case 'dd-mm-yyyy':
		   this.month = this.oMonth = parseInt(atmp[1]-1,10); 
		   this.day = parseInt(atmp[0],10);
		   this.year = this.oYear = parseInt(atmp[2],10);
		   break;
		 case 'mm/dd/yyyy':
		 case 'mm-dd-yyyy':
		   this.month = this.oMonth = parseInt(atmp[0]-1,10);
		   this.day = parseInt(atmp[1],10);
		   this.year = this.oYear = parseInt(atmp[2],10);
		   break;
		 case 'yyyy-mm-dd':
		   this.month = this.oMonth = parseInt(atmp[1]-1,10);
		   this.day = parseInt(atmp[2],10);
		   this.year = this.oYear = parseInt(atmp[0],10);
		   break;
		case 'ddmmmyy':
		   this.day = parseInt(atmp[0].substring(0,2),10);
		   for (var i=0;i<this.monthsEnglish.length;i++){
		     if (atmp[0].substring(2,5).toLowerCase()==this.monthsEnglish[i].substr(0,3).toLowerCase()){
		       this.month = this.oMonth = i;
			   break;
		     }
		   }
		   this.year = this.oYear = 2000+parseInt(atmp[0].substring(5,7),10);
		   break;
		}
	  } else { // no date set, default to today
	    var theDate = new Date();
	  	 this.year = this.oYear = theDate.getFullYear();
	     this.month = this.oMonth = theDate.getMonth();
	     this.day = this.oDay = theDate.getDate();
	  }
	  this.writeString(this.buildString());
	  // and then show it!
	   if (browser.ns4) {
	   		this.containerLayer.hidden=false;
	   }
	  if (browser.dom || browser.ie4){
	      this.containerLayer.style.visibility='visible';
	  }
	}
	
	Calendar.prototype.hide = function(){
	  if (browser.ns4) this.containerLayer.hidden = true;
	  if (browser.dom || browser.ie4){
	    this.containerLayer.style.visibility='hidden';
	  }
	}
	
	function handleDocumentClick(e){
	  
	  if (browser.ie4 || browser.ie5){
	     e = window.event;
      }
	  if (browser.ns6){
	    var bTest = (e.pageX > parseInt(g_Calendar.containerLayer.style.left,10) && e.pageX <  (parseInt(g_Calendar.containerLayer.style.left,10)+125) && e.pageY < (parseInt(g_Calendar.containerLayer.style.top,10)+125) && e.pageY > parseInt(g_Calendar.containerLayer.style.top,10));
	    var _targetName = e.target["name"]==null?"":e.target["name"];
	    if (_targetName==null && _targetName.indexOf('_imgCalendar')==-1 && _targetName!='month'  && _targetName!='year' && _targetName!='calendar' && !bTest){
		  g_Calendar.hide(); 
		}
	  }
	  if (browser.ie4 || browser.ie5){
		// extra test to see if user clicked inside the calendar but not on a valid date, we don't want it to disappear in this case
	   var bTest = (e.x > parseInt(g_Calendar.containerLayer.style.left,10) && e.x <  (parseInt(g_Calendar.containerLayer.style.left,10)+125) && e.y < (parseInt(g_Calendar.containerLayer.style.top,10)+125) && e.y > parseInt(g_Calendar.containerLayer.style.top,10));
	 
	    if(!bTest && g_Calendar.containerLayer.style.visibility=='visible' && e.srcElement.name==undefined)  g_Calendar.hide();
	    if (e.srcElement.name!='imgCalendar' && e.srcElement.name!='month' && e.srcElement.name!='year' && !bTest & typeof(e.srcElement)!='object'){
		  g_Calendar.hide(); 
		}
	  }
	  if (browser.ns4) g_Calendar.hide();
	}
	
	// utility function
	function padZero(num) {
	  return ((num <= 9) ? ("0" + num) : num);
	}
	  // Finally licked extending  native date object;
	  Date.isLeapYear = function(year){ if (year%4==0 && ((year%100!=0) || (year%400==0))) return true; else return false; }
	  Date.daysInYear = function(year){ if (Date.isLeapYear(year)) return 366; else return 365;}
	  var DAY = 1000*60*60*24;
	  Date.prototype.addDays = function(num){
		return new Date((num*DAY)+this.valueOf());
	  }	
	  
	 // events capturing, careful you don't override this by setting something in the onload event of 
	// the body tag
	/// modified by Chanho 20060118 
	///window.onload=function(){
	  new Calendar(new Date());
	  if (browser.ns4){
	    if (typeof document.NSfix == 'undefined'){
		  document.NSfix = new Object();
	      document.NSfix.initWidth=window.innerWidth;
		  document.NSfix.initHeight=window.innerHeight;
		}
	  }
	///}
	if (browser.ns4) window.onresize = function(){
	  if (document.NSfix.initWidth!=window.innerWidth || document.NSfix.initHeight!=window.innerHeight) window.location.reload(false);
	} // ns4 resize bug workaround
	window.document.onclick=handleDocumentClick;
	
	function showPublicHolidays(){
		window.open("/nanhwa/toPublicHolidays.do","publicHoliday","height=600px,width=840px,top=0,left=0,toolbar=no, menubar=no, scrollbars=yes, resizable=yes, location=no, status=no");
	}
   
