
/********************************************************************
 Syntax : 
    displayCalendar( formElementObject , event ) 
     formElementObject  result output element
     event              ( event | null ) 
 Example : 
      input date1:<input name="e1" type="text" 
                   onFocus="displayCalendar(this,event)"> 
 *
 * ------------------------------------------------------------------
 * calendar.js Copyright(c)1999 Toshirou Takahashi tato@fureai.or.jp
 * Support http://www.fureai.or.jp/~tato/JS/BOOK/INDEX.HTM
 * ------------------------------------------------------------------
 */
  var now    = new Date();
  var absnow = now;
  var Win    = navigator.userAgent.indexOf('Win')!=-1;
  var Mac    = navigator.userAgent.indexOf('Mac')!=-1;
  var X11    = navigator.userAgent.indexOf('X11')!=-1;
  var Moz    = navigator.userAgent.indexOf('Gecko')!=-1;
  var msie   = navigator.userAgent.indexOf('MSIE')!=-1;
  var week   = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
  var weekcol= new Array('#ff8888','#000000','#000000','#000000','#000000','#000000','#aaaaff','#ffff88');
  function displayCalendar(oj,e,dateType,arg1){
     
    var gox,goy;
   
    if(!arguments[2])dateType='yyyy/mm/dd';
    else arguments[2].split(' ').join('').split('　').join('')

//    if(!arguments[3])arg1=0

	// for indexed elements
	wIdx = getElementIndex(oj);
	wTargetStr = "document."+oj.form.name+".elements['"+oj.name;
	if(wIdx!=null)
		wTargetStr +="["+wIdx+"]";
	wTargetStr += "']"
	this.wTargetStr=wTargetStr;
    this.arg1=arg1
    this.oj=oj
    this.dateType=dateType
	if( e != null ) {
		gox = getMouseX(e);
		goy = getMouseY(e);
	}
    if(arg1 == null){
      now = new Date( oj.value );
      arg1 = 0;
    } else if(arg1 == 0){
       now = new Date();
    }
    if( (now.getDate()+'') == 'NaN' ) {
        now = new Date();
    }
    nowdate  = now.getDate()
    nowmonth = now.getMonth()
    nowyear  = now.getYear()
  
    nowmonth += arg1;
    if(nowmonth>11) {
      nowmonth -= 12; nowyear++;
    } 
    if(nowmonth<0) {
      nowmonth += 12; nowyear--;
    }
    if(nowyear<1900)nowyear=1900+nowyear
  
    now   = new Date(nowyear,nowmonth,1)
    nowyyyymm=nowyear*100+nowmonth
    nowtitleyyyymm=nowyear+'/'+to2keta(nowmonth + 1)
  
    fstday   = now                                           //first day of this month
    startday = fstday - ( fstday.getDay() * 1000*60*60*24 )  //first sunday of this month
    startday = new Date(startday)
  
    // calendar HTML
	ddata = '';
	
	ddata +='<style TYPE="text/css">.ddfont {font-size:12px;font-family:ＭＳ ゴシック}</style>';
    ddata += '<TABLE BORDER=1 bgcolor="#e8e8e8" cellpadding=0 cellspacing=0 WIDTH=140 HEIGHT=140\n';
    ddata += ' class="ddfont"';
    ddata += '>\n'

    // Month
      ddata += '<TR id="trmonth" BGCOLOR="#e8e8e8" WIDTH=140 HEIGHT=12>\n'
      ddata += '<TD COLSPAN=7 ALIGN="right" class="ddfont" NOWRAP>\n'
      ddata += '<b>'+nowtitleyyyymm+'&nbsp;</b>'
      ddata += '<INPUT TYPE=button VALUE="<<" \n'
      ddata += 'onClick="displayCalendar('+wTargetStr+',null,\''+dateType+'\',-12)"\n'
      ddata += ' class="ddfont" '
      ddata += 'TITLE="last year"\n'
      ddata += '><INPUT TYPE=button VALUE="<" \n'
      ddata += 'onClick="displayCalendar('+wTargetStr+',null,\''+dateType+'\',-1)"\n'
      ddata += ' class="ddfont" '
      ddata += 'TITLE="last month"\n'
      ddata += '><INPUT TYPE=button VALUE="o" \n'
      ddata += 'onClick="displayCalendar('+wTargetStr+',null,\''+dateType+'\',0)"\n'
      ddata += ' class="ddfont" '
      ddata += 'TITLE="now"\n'
      ddata += '><INPUT TYPE=button VALUE=">" \n'
      ddata += 'onClick="displayCalendar('+wTargetStr+',null,\''+dateType+'\',1)"\n'
      ddata += ' class="ddfont" '
      ddata += 'TITLE="next month"\n'
      ddata += '><INPUT TYPE=button VALUE=">>" \n'
      ddata += 'onClick="displayCalendar('+wTargetStr+',null,\''+dateType+'\',12)"\n'
      ddata += ' class="ddfont" '
      ddata += 'TITLE="next year"\n'
      ddata += '></TD>\n'
      ddata += '</TR>\n'
  
    // Week
    ddata += '   <TR BGCOLOR=gray WIDTH=140 HEIGHT=14>\n'
  
    for (i=0;i<7;i++){
      ddata += '   <TH WIDTH=14 HEIGHT=14>\n'
      ddata += '   <FONT color=' + weekcol[i] + '>\n'
      ddata +=       week[i]
      ddata += '   </FONT>\n'
      ddata += '   </TH>\n'
    }
    ddata += '   </TR>\n'
  
    // Date
    for(j=0;j<6;j++){
      ddata += '   <TR BGCOLOR=#e8e8e8>\n'
      for(i=0;i<7;i++){
        nextday     = startday.getTime() + (i * 1000*60*60*24)
        wrtday      = new Date(nextday)
        wrtdate     = wrtday.getDate()
        wrtmonth    = wrtday.getMonth()
        wrtyear     = wrtday.getYear()
        if(wrtyear < 1900) wrtyear = 1900 + wrtyear
        wrtyyyymm   = wrtyear * 100 + wrtmonth
        wrtyyyymmdd = ''+wrtyear +'/'+ (wrtmonth+1) +'/'+wrtdate
        getday      = getWeek(wrtyyyymmdd)
        var outputdate=eval( getDateType(dateType))
        wrtdateA  = '<A HREF="javascript:'
        wrtdateA += wTargetStr
        wrtdateA += '.value=(\''+outputdate
        wrtdateA += '\');clearSubWindow(oj);"   >\n'
        wrtdateA += '<FONT COLOR=' + weekcol[i] + '>'
        wrtdateA += wrtdate
        wrtdateA += '</FONT>'
        wrtdateA += '</A>\n'
  
        if(wrtyyyymm != nowyyyymm){ 
          ddata += ' <TD BGCOLOR=#cccccc WIDTH=14 HEIGHT=14 class="ddfont">\n'
          ddata += wrtdateA
  
        } else if(   wrtdate == absnow.getDate()   
                  && wrtmonth == absnow.getMonth() 
                  && wrtday.getYear() == absnow.getYear()){
          ddata += ' <TD BGCOLOR=gray WIDTH=14 HEIGHT=14 class="ddfont">\n'
          ddata += '<FONT COLOR="#ffffff">'+wrtdateA+'</FONT>\n'
  
        } else {
          ddata += ' <TD WIDTH=14 HEIGHT=14 class="ddfont">\n'
          ddata += wrtdateA
        }
        ddata += '   </TD>\n'
      }
      ddata += '   </TR>\n'
  
      startday = new Date(nextday)
      startday = startday.getTime() + (1000*60*60*24)
      startday = new Date(startday)
    }
    // status
    ddata += '   <TR BGCOLOR="#e8e8e8">\n'
      ddata += '   <TD COLSPAN=7 ALIGN=RIGHT STYLE="font-size:11px">\n'
       ddata += ' <INPUT TYPE=button VALUE="Cancel" \n'
       ddata += 'onClick="clearSubWindow();">\n'
      ddata += '   </TD>\n'
    ddata += '   </TR>\n'
  
    ddata += '</TABLE>\n'
//    ddata += '</FORM>\n'
//    ddata += '</span>\n'
  
	wrtSubWindow('calender', ddata, gox, goy);
  }

  function getWeek(date){
    if(arguments.length>0)date=date
    else date=null
    if(  Mac && msie )//MacIE5
      week   = new Array('sun','mon','tue','wed','thu','fri','sat');
    var now  = new Date(date) ;
    return week[now.getDay()] ;
  }

  function getDateType(dateType){
	if( dateType == "yyyy/mm" )
		dtate = "''+wrtyear +'/'+ to2keta(wrtmonth+1)" ;
	else if( dateType == "yyyy" )
		dtate = "''+wrtyear" ;
	else
	    dtate= "''+wrtyear +'/'+ to2keta(wrtmonth+1) +'/'+to2keta(wrtdate)" ;
    return dtate
  }
  function to2keta(arg){
    if(arg >= 0 && arg < 10)
      return("0"+arg) ;
    return(""+arg)
}

