var request = new Object();
request.getParameter = function(param) {
	var win = window.location.search;
	if(!win) return null;
	if(!(win.indexOf(param+'=')+1)) return null;
	return win.split(param+'=')[1].split('&')[0];
}


		function Calendar() {
				  var formName = request.getParameter("form");
					var formNumber = request.getParameter("id");					
				  var formRef = (formName) ? window.opener.document.getElementById(formName) : null;	
					var allowPast = false;					
					var maxMonths = 13;
					var secondDate = true;
					var userDate = null;
				  var dot = '<span class="bold">&middot;</span>';
				  
				  // Grab date from opener
				  if (formRef["monthyear" + formNumber]) {
				    var fMoYr = formRef["monthyear" + formNumber];						
				    var fDay = formRef["day" + formNumber];
				    var fMoYrSplt = fMoYr.options[fMoYr.selectedIndex].value.split(" ");
				    var fYr = fMoYrSplt[1];
				    var fMo = fMoYrSplt[0];
				    var fDa = fDay.options[fDay.selectedIndex].value;
				    if (fYr && fMo && fDa) {
				      userDate = new Date(parseInt("20"+fYr,10), parseInt(fMo,10)-1, parseInt(fDa,10));
				    }
				  }
				
				  // Use date from opener if it exists
				  var currentDate = cd = new Date();							
				  var displayDate = dd = (userDate) ? userDate : new Date();				
				  var maxYears = Math.ceil(maxMonths / 12) ;
				  var months = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"];
				  var daysPerMonth = [31,28,31,30,31,30,31,31,30,31,30,31];
				  var days = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"];
				  
				  this.leapYear = function(yr) {
				    if ((yr/4) != Math.floor(yr/4)) return false;
				    if ((yr/100) != Math.floor(yr/100)) return true;
				    if ((yr/400) != Math.floor(yr/400)) return false;
				    return true;  
				  }
				  
				  this.testLeap = function() {
				    daysPerMonth[1] = (this.leapYear(dd.getFullYear())) ? 29 : 28;
				  }
				  
				  this.writeYear = function() {
				    var yr = cd.getFullYear() - ((allowPast)?1:0);
				    var yearCont = "";
				    for (i=0; i < maxYears; i++) {
				      var isDispYr = (yr == dd.getFullYear()) ? true : false;
				      yearCont += dot + ((!isDispYr) ? '<a href="javascript:cal.setCalDate('+yr+',0,1)">' : '') + yr + ((!isDispYr) ? '</a>' : '') + "&nbsp;";
				      yr++;
				    }
						document.getElementById('Year').innerHTML = yearCont;
				  }
				  
					this.writeMonth = function() {
					  var remMnths = (maxMonths + cd.getMonth()) - ((dd.getFullYear() - cd.getFullYear())*12);						
				    var dispMths = Math.min(remMnths, months.length);
				    var mthCont = '<table width="266" border="0" cellspacing="0" cellpadding="2"><tr>';
				
				    for (var i=0; i < 12; i++) {						
				      var isThisMth = (i == dd.getMonth()) ? true : false;
							 var showLink = (!isThisMth && (((i >= cd.getMonth()) && (dd.getFullYear() == cd.getFullYear())) || (dd.getFullYear() > cd.getFullYear()))) ? true : false;
							if (allowPast && !isThisMth) showLink = true;
						  var s = (showLink) ? '<a href="javascript:cal.setCalDate('+dd.getFullYear()+','+i+',1)">' : '';							
				      var e = (showLink) ? '</a>' : '';							
				      
				      if (i == 6) mthCont += '</tr><tr>';
								if (i <= (dispMths-1) ) {
										mthDisp = dot+s+months[i].substring(0,3)+e;
								} else {
									mthDisp = "&nbsp;";
								}
							
							
				      var mthDisp = (i <= (dispMths-1)) ? dot+s+months[i].substring(0,3)+e : "&nbsp;";
				      mthCont += '<td width="40">'+mthDisp+'</td>';
				    }  
				    mthCont += '</tr></table>';
						document.getElementById('Month').innerHTML = mthCont;
				  }
						
									  
				  this.writeDate = function() {
				    // First day of the display month
				    var tempDate = new Date(dd.getFullYear(), dd.getMonth(), 1);
				    var startDay = tempDate.getDay();
				    var moDay = months[dd.getMonth()] + " " + dd.getFullYear();
				    var dateCont = '<table width="266" border="0" cellspacing="0" cellpadding="2" bgcolor="#DFC592"><tr><td class="bold">&nbsp;&nbsp;'+moDay+'</td></tr></table>';
				    dateCont += '<table width="266" height="125" border="0" cellspacing="0" cellpadding="1"><tr>';
				    
				    // Weekday headers
				    for (var i=0; i<days.length; i++) {
				      var isHiDay = (i == 0 || i == 6) ? "hilite" : "bold";
				      dateCont += '<td class="'+isHiDay+'" width="38" align="center">'+days[i].substring(0,1)+'</td>';
				    }
				  
				    dateCont += '</tr><tr>';
				    var dispDate = 1;
				    // Dates
				    for (var j=0; j<42; j++) {
				      if ((j%7 == 0) && j != 0) dateCont += '</tr><tr>';
				      if (j >= startDay && dispDate <= daysPerMonth[dd.getMonth()]) {
				        var hilite = (dispDate == dd.getDate()) ?  true : false;
				        var showLink = false;
				        
				        if (dd.getFullYear() == cd.getFullYear()) {
				          if (dd.getMonth() > cd.getMonth()) {
				            showLink = true;
				          } else if (dd.getMonth() == cd.getMonth()) {
				            if (dispDate >= cd.getDate()) showLink = true;
				          }
				        } else if (dd.getFullYear() > cd.getFullYear()) {
				          showLink = true;
				        }
				
				        if (allowPast) showLink = true;
				        var hs = (hilite) ? '<table cellspacing="0" cellpadding="0" border="1" width="31" height="20" class="outline" bordercolor="#cccccc"><tr><td class="bold" align="center">': '';
				        var he = (hilite) ? '</td></tr></table>' : '';
				        var ls = (showLink) ? '<a href="javascript:cal.sendDate('+dd.getFullYear()+','+dd.getMonth()+','+dispDate+')">' : '';
				        var le = (showLink) ? '</a>' : '';
				        dateCont += '<td width="38" align="center">'+hs+ls+dispDate+le+he+'</td>' 
				        dispDate++;
				      } else {
				        dateCont += '<td width="38">&nbsp;</td>';
				      }
				    }
				    dateCont += '</tr></table>';
						document.getElementById('Date').innerHTML = dateCont;
				  }
				  
				  this.setCalDate = function(y, m, d) {
				    if ((y == cd.getFullYear()) && (m < cd.getMonth()) && !allowPast) m = cd.getMonth();
				    if ((y == cd.getFullYear()) && (cd.getMonth() == m)) d = cd.getDate();
				    var tempD = new Date(y, m, d);
				    dd = tempD;
				
				    this.writeCal();
				  }
				  
				  this.writeCal = function() {
				    with (this) {
				      testLeap();
				      writeDate();
				      writeMonth();
				      writeYear();
				    }
				  }
				  
				  this.sendDate = function(y, m, d) {
				    if (formRef) {
				      var yr = y.toString().substring(2);
				      var mo = m+1;
				      var da = d;
				      if (mo <= 9) mo = "0" + mo;
				      if (da <= 9) da = "0" + da;
				      var MM1 = formRef["monthyear" + formNumber];
				      var DD1 = formRef["day" + formNumber];
				      var MM1Str = mo + " " + yr;
				      var DD1Str = da;
				      for (var i=0; i<MM1.options.length; i++) {
				        if (MM1.options[i].value == MM1Str) {
				          MM1.selectedIndex = i;
				          break;
				        }
				      }
				      for (var j=0; j<DD1.options.length; j++) {
				        if (DD1.options[j].value == DD1Str) {
				          DD1.selectedIndex = j;
				          break;
				        }
				      }
				      if (!(formNumber % 2)) {
				        var secondForm = parseInt(formNumber) + 1;
				        var secDt = new Date(y, m, (d+1));
				        yr = secDt.getFullYear().toString().substring(2);
				        mo = secDt.getMonth()+1;
				        da = secDt.getDate();
				        if (mo <= 9) mo = "0" + mo;
				        if (da <= 9) da = "0" + da;
				        var MM2 = formRef["monthyear" + secondForm];
				        var DD2 = formRef["day" + secondForm];
				        var MM2Str = mo + " " + yr;
				        var DD2Str = da;
				        for (var i=0; i<MM2.options.length; i++) {
				          if (MM2.options[i].value == MM2Str) {
				            MM2.selectedIndex = i;
				            break;
				          }
				        }
				        for (var j=0; j<DD2.options.length; j++) {
				          if (DD2.options[j].value == DD2Str) {
				            DD2.selectedIndex = j;
				            break;
				          }
				        }
				      }
				      window.close();
				    }
				  }
				}
	//end regular calendar



function calInit() {
  cal = new Calendar();
  cal.writeCal();
}
window.onload = calInit;


