| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935 |
- // <script>
- /*
- =============================================================
- WebIntelligence(r) Report Panel
- Copyright(c) 2001-2003 Business Objects S.A.
- All rights reserved
- Use and support of this software is governed by the terms
- and conditions of the software license agreement and support
- policy of Business Objects S.A. and/or its subsidiaries.
- The Business Objects products and technology are protected
- by the US patent number 5,555,403 and 6,247,008
- File: calendar.js
- palette.js, menu.js and dom.js must also be included before
- =============================================================
- */
- _firstWeekDay=0
- _dateObj=new Date
- // ================================================================================
- // ================================================================================
- //
- // OBJECT newCalendarTextField (Constructor)
- //
- // creates a calendar text field and button widget
- //
- // ================================================================================
- // ================================================================================
- function newCalendarTextFieldButton(id,textId,changeCB,maxChar,keyUpCB,enterCB,noMargin,tooltip,width,focusCB,blurCB,format,arrDays,arrMonth,AM,PM)
- {
- var o=newWidget(id)
- o.changeCB=changeCB
- o.keyUpCB=keyUpCB
- o.enterCB=enterCB
- o.focusCB=focusCB
- o.blurCB=blurCB
- o.getValue=CTFB_getValue
- o.setValue=CTFB_setValue
- o.width=width?width:150
- o.setFormatInfo=CTFB_setFormatInfo
- o.setFormatInfo(format,arrDays,arrMonth,AM,PM)
- o.widResize=o.resize
- o.resize=CTFB_resize
- o.text=newTextFieldWidget(textId?textId:"text_"+id,CTFB_changeCB,maxChar,CTFB_keyUpCB,CTFB_enterCB,noMargin,tooltip,width-22,CTFB_focusCB,CTFB_blurCB)
- o.text.ctfb=o
- o.calendar=newCalendarButton("calendar_"+id,CTFB_CalendarChangeCB)
- o.calendar.ctfb=o
- o.calendar.menu.alignLeft=true
- o.getHTML=CTFB_getHTML
- o.oldInit=o.init
- o.init=CTFB_init
- o.setDateValueFromString=CTFB_setDateValueFromString
- o.setStringFromDateValue=CTFB_setStringFromDateValue
- return o
- }
- // ================================================================================
- function CTFB_setFormatInfo(format,arrDays,arrMonth,AM,PM)
- {
- var o=this
- o.arrMonthNames=arrMonth?arrMonth:_month
- o.arrDayNames=arrDays?arrDays:_day
- o.format=format?format:"MM/dd/yyyy hh:mm:ss a"
- o.AM=AM?AM:_AM
- o.PM=PM?PM:_PM
- }
- // ================================================================================
- function CTFB_resize(w,h)
- {
- var o=this
-
- o.text.resize(w!=null?(Math.max(0,w-22)):null,h)
- o.widResize(w,h)
- }
- // ================================================================================
- function CTFB_getHTML()
- {
- var o=this
- return '<table cellpadding="0" border="0" cellspacing="0" id="'+o.id+'" style="width:'+o.width+'px"><tr valign="middle"><td width="100%">'+o.text.getHTML()+'</td><td>'+o.calendar.getHTML()+'</td></tr></table>'
- }
- // ================================================================================
- function CTFB_init()
- {
- var o=this
- o.oldInit()
- o.text.init()
- o.calendar.init()
- }
- // ================================================================================
- function CTFB_changeCB()
- // PRIVATE
- {
- if (this.ctfb.changeCB) this.ctfb.changeCB()
- }
- // ================================================================================
- function CTFB_keyUpCB()
- // PRIVATE
- {
- if (this.ctfb.keyUpCB) this.ctfb.keyUpCB()
- }
- // ================================================================================
- function CTFB_enterCB()
- // PRIVATE
- {
- if (this.ctfb.enterCB) this.ctfb.enterCB()
- }
- // ================================================================================
- function CTFB_focusCB()
- // PRIVATE
- {
- if (this.ctfb.focusCB) this.ctfb.focusCB()
- }
- // ================================================================================
- function CTFB_blurCB()
- // PRIVATE
- {
- if (this.ctfb.blurCB) this.ctfb.blurCB()
- }
- // ================================================================================
- function CTFB_getValue()
- {
- return this.text.getValue()
- }
- // ================================================================================
- function CTFB_setValue(v)
- {
- this.text.setValue(v)
- }
- // ================================================================================
- function CTFB_CalendarChangeCB()
- // PRIVATE
- {
- var c=this,o=c.ctfb
- o.setStringFromDateValue()
- var v=c.get()
- if (o.changeCB)
- o.changeCB()
- }
- // ================================================================================
- function CTFB_setDateValueFromString()
- {
- var o=this
- var strDateValue=o.getValue()
- var strInputFormat=o.format
-
- var strRet = setDateValue(strDateValue, strInputFormat);
-
- if(strRet == ",,")
- o.calendar.menu.setToday(true);
- else
- {
- var arr = strRet.split(",");//strRet = strMonth + ',' + strDay + ',' + strYear;
- var strDay=arr[1],strMonth=arr[0],strYear=arr[2];
-
- o.calendar.set(parseInt(strDay), parseInt(strMonth), parseInt(strYear))
- o.calendar.menu.update()
- }
- }
- // ================================================================================
- function CTFB_setStringFromDateValue() {
- var o=this
- var format=""+o.format
-
- var date=_dateObj
- var menu=o.calendar.menu
- //date.setDate(menu.day+1)
- date.setYear(menu.year)
- date.setMonth(menu.month)
- date.setDate(menu.day+1)
- date.setHours(0)
- date.setMinutes(0)
- date.setSeconds(0)
-
- var result=formatDate(date,format);
- o.setValue(result)
- }
- // ================================================================================
- // ================================================================================
- //
- // OBJECT newCalendarButton (Constructor)
- //
- // creates a calendar button widget
- //
- // ================================================================================
- // ================================================================================
- function newCalendarButton(id,changeCB)
- // CONSTRUCTOR
- {
- var o=newIconWidget(id,_skin+"menus.gif",IconCalendarMenuWidget_ClickCB,null,_openCalendarLab,16,16,0,114,0,114)
- o.setClasses("iconhover", "iconcheck", "iconhover", "iconcheckhover")
- o.changeCB=changeCB
- o.menu=newCalendarMenuWidget("iconMenu_menu_"+id,IconCalendarMenuWidget_hideCB,IconCalendarMenuWidget_closeCB)
- o.menu.parCalendar=o
- o.set=CalendarButton_set
- o.get=CalendarButton_get
- o.getMenu=IconMenuWidget_getMenu
- return o
- }
- // ================================================================================
- // ================================================================================
- //
- // OBJECT newCalendarIconButton (Constructor)
- //
- // creates a calendar icon button widget
- //
- // ================================================================================
- // ================================================================================
- function newCalendarIconButton(id,src,changeCB,text,alt,w,h,dx,dy,disDx,disDy)
- // CONSTRUCTOR
- {
- var o=newIconMenuWidget(id,src,IconCalendarMenuWidget_ClickCB,text,_openCalendarLab,w,h,dx,dy,disDx,disDy,false)
-
- o.changeCB=changeCB
- o.menu=newCalendarMenuWidget("iconMenu_menu_"+id,IconCalendarMenuWidget_hideCB,IconMenuCalendarMenuWidget_closeCB)
- o.menu.parCalendar=o
- o.set=CalendarButton_set
- o.get=CalendarButton_get
- o.getMenu=IconMenuWidget_getMenu
- return o
- }
- function IconMenuCalendarMenuWidget_closeCB()
- {
- var menu=this,o=menu.parCalendar
- o.outEnable=true
- if (!o.menu.isShown())
- {
- IconWidget_outCB(o.icon.index)
- IconWidget_outCB(o.arrow.index)
- }
- else
- {
- IconWidget_overCB(o.icon.index)
- IconWidget_overCB(o.arrow.index)
- }
- }
- // ================================================================================
- function IconCalendarMenuWidget_ClickCB()
- {
- var o=this,l=o.layer
- o.outEnable=false
- if (o.ctfb)
- o.ctfb.setDateValueFromString()
- o.menu.show(true,getPosScrolled(l).x + (o.menu.alignLeft?o.getWidth():0) ,getPosScrolled(l).y+o.getHeight()+1)
- IconWidget_overCB(o.index)
- }
- // ================================================================================
- function IconCalendarMenuWidget_hideCB()
- {
- var o=this.parCalendar
- if (o.changeCB)
- o.changeCB()
- }
- // ================================================================================
- function IconCalendarMenuWidget_closeCB()
- {
- var menu=this,o=menu.parCalendar
- o.outEnable=true
- if (!o.menu.isShown())
- IconWidget_outCB(o.index)
- else
- IconWidget_overCB(o.index)
- }
- // ================================================================================
- function CalendarButton_set(day,month,year)
- // day [int] 1..31
- // month [int] 1..12
- // year [int] year
- {
- var o=this.menu
- o.day=day?day-1:0
- o.month=month?month-1:0
- o.year=year?year:2000
- o.day=Math.min(Math.max(o.day,0),30)
- o.month=Math.min(Math.max(o.month,0),11)
- }
- // ================================================================================
- function CalendarButton_get(day,month,year)
- {
- var o=this.menu
- return {day:o.day+1,month:o.month+1,year:o.year}
- }
- // ================================================================================
- // ================================================================================
- //
- // OBJECT newCalendarMenuWidget (Constructor)
- //
- // creates a calendar menu widget
- //
- // ================================================================================
- // ================================================================================
- function newCalendarWidget(id,changeCB)
- // id [String] the calendar id for DHTML processing
- // Returns [CalendarWidget] the new instance
- {
- var o=newWidget(id)
- // Private Fields
- o.day=0
- o.month=0
- o.year=2000
- o.daysL=new Array
- o.changeCB=changeCB
- var p1=o.p1=newIconWidget(id+"_p1",_skin+'../lov.gif',CalendarWidget_clickCB,"",_calendarPrevMonthLab,8,4,46,12)
- var p2=o.p2=newIconWidget(id+"_p2",_skin+'../lov.gif',CalendarWidget_clickCB,"",_calendarPrevYearLab,8,4,46,12)
- var n1=o.n1=newIconWidget(id+"_n1",_skin+'../lov.gif',CalendarWidget_clickCB,"",_calendarNextMonthLab,8,4,46,0)
- var n2=o.n2=newIconWidget(id+"_n2",_skin+'../lov.gif',CalendarWidget_clickCB,"",_calendarNextYearLab,8,4,46,0)
-
- p1.allowDblClick=true
- p2.allowDblClick=true
- n1.allowDblClick=true
- n2.allowDblClick=true
- p1.margin=p2.margin=n1.margin=n2.margin=0
- var t=o.today=newButtonWidget(id+"_t",_today,CalendarWidget_clickCB)
- t.par=p1.par=p2.par=n1.par=n2.par=o
- t.today=p1.p1=p2.p2=n1.n1=n2.n2=true
- // Public Methods
- o.init=CalendarWidget_init
- o.getHTML=CalendarWidget_getHTML
- // Private methods
- o.update=CalendarWidget_update
- o.setToday=CalendarWidget_setToday
- o.set=CalendarWidget_set
- o.get=CalendarWidget_get
- o.focus=CalendarWidget_focus
- o.focusOnDay=CalendarWidget_focusOnDay
-
- o.isCalendar=true
-
- return o
- }
- // ================================================================================
- function CalendarWidget_set(day,month,year)
- // day [int] 1..31
- // month [int] 1..12
- // year [int] year
- {
- var o=this
- o.day=day?day-1:0
- o.month=month?month-1:0
- o.year=year?year:2000
- o.day=Math.min(Math.max(o.day,0),30)
- o.month=Math.min(Math.max(o.month,0),11)
- }
- // ================================================================================
- function CalendarWidget_get(day,month,year)
- {
- var o=this
- return {day:o.day+1,month:o.month+1,year:o.year}
- }
- // ================================================================================
- function CalendarWidget_init()
- // Redefined for disable the default widget init function
- // Return [void]
- {
- var o=this
- o.p1.init()
- o.p2.init()
- o.n1.init()
- o.n2.init()
- o.today.init()
- var l=o.layer=getLayer(o.id)
- o.layer._widget=o.widx
- o.css=o.layer.style
- for (var i=0;i<42;i++)
- o.daysL[i]=getElemBySub(l,""+i)
- o.update()
- }
- // ================================================================================
- function CalendarWidget_getHTML()
- {
- var o=this,d=_moz?10:12
-
- var keysCbs=' onkeydown="'+_codeWinName+'.MenuWidget_keyDown(\''+o.id+'\',event);return true" '
-
- var s='<table onmousedown="'+_codeWinName+'._minb(event)" onmouseup="'+_codeWinName+'._minb(event)" '+keysCbs+' style="cursor:default" class="calendarFrame" id="'+o.id+'" border="0" cellpadding="0" cellspacing="0">'+
- // Month year zone
- '<tr>'+
- '<td align="center" style="padding:1px" >'+
- '<table class="dialogzone" width="100%" cellpadding="0" border="0" cellspacing="0">'+
- '<tr>'+
- '<td style="padding-top:1px">'+o.n1.getHTML()+'</td>'+
- '<td rowspan="2" width="100%" align="center" class="dialogzone"><span subid="month" tabIndex=0>'+convStr(_month[o.month])+'</span> <span subid="year" tabIndex=0>'+convStr(o.year)+'</span></td>'+
- '<td style="padding-top:1px">'+o.n2.getHTML()+'</td>'+
- '</tr>'+
- '<tr valign="top">'+
- '<td style="padding-bottom:1px">'+o.p1.getHTML()+'</td><td style="padding-bottom:1px">'+o.p2.getHTML()+'</td>'+
- '</tr>'+
- '</table>'+
- '</td>'+
- '</tr>'
- // Days header
- s+='<tr><td align="center"><table style="margin:2px;margin-top:6px" cellpadding="0" border="0" cellspacing="0">'
- for (var i=0;i<7;i++)
- {
- var j=(i+_firstWeekDay)%7
- if ((j%7)==0) s+='<tr align="center">'
- s+='<td class="calendarTextPart">'+_day[j]+'</td>'
- if ((j%7)==6) s+='</tr>'
- }
- s+='<tr><td colspan="7" style="padding:2px;"><table width="100%" height="3" cellpadding="0" cellspacing="0" border="0" style="'+backImgOffset(_skin+"menus.gif",0,80)+';"><tbody><tr><td></td></tr></tbody></table></td></tr>'
- // Days
- for (var i=0;i<6;i++)
- {
- s+='<tr align="right">'
- for (var j=0;j<7;j++)
- {
- s+='<td class="calendarTextPart" onmousedown="'+_codeWinName+'.CalendarWidget_mouseDown(this)" onmouseover="'+_codeWinName+'.CalendarWidget_mouseOver(this)" onmouseout="'+_codeWinName+'.CalendarWidget_mouseOut(this)" onkeydown="'+_codeWinName+'.CalendarWidget_keyDown(this,event)">'+
- '<div subid="'+(j+(i*7))+'" class="menuCalendar"></div></td>'
- }
- s+='</tr>'
- }
- s+='<tr><td colspan="7" style="padding:2px;"><table width="100%" height="3" cellpadding="0" cellspacing="0" border="0" style="'+backImgOffset(_skin+"menus.gif",0,80)+';"><tbody><tr><td></td></tr></tbody></table></td></tr>'
- s+='<tr><td colspan="7" align="center" style="padding-bottom=3px;padding-top:3px;">'+o.today.getHTML()+'</td></tr>'
- // End menu
- s+='</table></td></tr>'
- s+='</table>'
- return s
- }
- // ================================================================================
- function CalendarWidget_mouseDown(lay)
- {
- lay=lay.childNodes[0]
- var o=getWidget(lay),index=parseInt(lay.getAttribute("subid"))
- var day=index-o.dateOffset
- if ((day<0)||(day>o.lastDate))
- return
- o.day=day
- o.update()
- if (o.changeCB)
- o.changeCB()
-
- }
- // ================================================================================
- function CalendarWidget_clickCB()
- // PRIVATE
- {
- var o=m=this
- // Modify current month
- if (o.p1||o.n1)
- {
- m=o.par
- m.month=(m.month+(o.p1?-1:1))%12
- if (m.month==-1)
- m.month=11
- m.update()
- }
- // Modify current year
- if (o.p2||o.n2)
- {
- m=o.par
- m.year=m.year+(o.p2?-1:1)
- m.update()
- }
- if (o.today)
- {
- m=o.par
- m.setToday(true)
- if (m.changeCB)
- m.changeCB()
- }
- }
- // ================================================================================
- // ================================================================================
- //
- // OBJECT newCalendarMenuWidget (Constructor)
- //
- // creates a calendar menu widget
- //
- // ================================================================================
- // ================================================================================
- function newCalendarMenuWidget(id,changeCB,closeCB)
- // id [String] the calendar id for DHTML processing
- // Returns [CalendarMenuWidget] the new instance
- {
- var o=newMenuWidget(id,closeCB)
- // Private Fields
- o.day=0
- o.month=0
- o.year=2000
- o.daysL=new Array
- o.changeCB=changeCB
- var p1=o.p1=newIconWidget(id+"_p1",_skin+'../lov.gif',CalendarMenuWidget_clickCB,"",_calendarPrevMonthLab,8,4,46,12)
- var p2=o.p2=newIconWidget(id+"_p2",_skin+'../lov.gif',CalendarMenuWidget_clickCB,"",_calendarPrevYearLab,8,4,46,12)
- var n1=o.n1=newIconWidget(id+"_n1",_skin+'../lov.gif',CalendarMenuWidget_clickCB,"",_calendarNextMonthLab,8,4,46,0)
- var n2=o.n2=newIconWidget(id+"_n2",_skin+'../lov.gif',CalendarMenuWidget_clickCB,"",_calendarNextYearLab,8,4,46,0)
-
- p1.allowDblClick=true
- p2.allowDblClick=true
- n1.allowDblClick=true
- n2.allowDblClick=true
- p1.margin=p2.margin=n1.margin=n2.margin=0
- var t=o.today=newButtonWidget(id+"_t",_today,CalendarMenuWidget_clickCB)
- t.par=p1.par=p2.par=n1.par=n2.par=o
- t.today=p1.p1=p2.p2=n1.n1=n2.n2=true
- // Public Methods
- o.getHTML=CalendarMenuWidget_getHTML
- o.oldMenuInit=o.justInTimeInit
- o.justInTimeInit=CalendarMenuWidget_justInTimeInit
- // Private methods
- o.update=CalendarWidget_update
- o.setToday=CalendarWidget_setToday
- o.focus=CalendarWidget_focus
- o.focusOnDay=CalendarWidget_focusOnDay
-
- o.isCalendar=true
-
- return o
- }
- // ================================================================================
- function CalendarMenuWidget_justInTimeInit()
- {
- var o=this
- o.oldMenuInit()
- o.p1.init()
- o.p2.init()
- o.n1.init()
- o.n2.init()
- o.today.init()
- var l=o.layer
- for (var i=0;i<42;i++)
- o.daysL[i]=getElemBySub(l,""+i)
- o.update()
- }
- // ================================================================================
- function CalendarMenuWidget_getHTML()
- {
- var o=this,d=_moz?10:12
- var keysCbs=' onkeydown="'+_codeWinName+'.MenuWidget_keyDown(\''+o.id+'\',event);return true" '
-
- //var s=o.getShadowHTML()
- var s=''
- s+='<a style="position:absolute;left:-30px;top:-30px; visibility:hidden" id="startLink_'+o.id+'" href="javascript:void(0)" onfocus="'+_codeWinName+'.MenuWidget_keepFocus(\''+o.id+'\');return false;" ></a>'
- s+='<table onmousedown="'+_codeWinName+'._minb(event)" onmouseup="'+_codeWinName+'._minb(event)" '+keysCbs+' style="cursor:default" class="menuFrame" id="'+o.id+'" border="0" cellpadding="0" cellspacing="0">'+
- // Month year zone
- '<tr>'+
- '<td align="center" style="padding:1px" >'+
- '<table class="dialogzone" width="100%" cellpadding="0" border="0" cellspacing="0">'+
- '<tr>'+
- '<td style="padding-top:1px">'+o.n1.getHTML()+'</td>'+
- '<td rowspan="2" width="100%" align="center" class="dialogzone"><span subid="month" tabIndex=0>'+convStr(_month[o.month])+'</span> <span subid="year" tabIndex=0>'+convStr(o.year)+'</span></td>'+
- '<td style="padding-top:1px">'+o.n2.getHTML()+'</td>'+
- '</tr>'+
- '<tr valign="top">'+
- '<td style="padding-bottom:1px">'+o.p1.getHTML()+'</td><td style="padding-bottom:1px">'+o.p2.getHTML()+'</td>'+
- '</tr>'+
- '</table>'+
- '</td>'+
- '</tr>'
- // Days header
- s+='<tr><td align="center"><table style="margin:2px;margin-top:6px" cellpadding="0" border="0" cellspacing="0">'
- for (var i=0;i<7;i++)
- {
- var j=(i+_firstWeekDay)%7
- if ((j%7)==0) s+='<tr align="center">'
- s+='<td class="calendarTextPart">'+_day[j]+'</td>'
- if ((j%7)==6) s+='</tr>'
- }
- s+='<tr><td colspan="7" style="padding:2px;"><table width="100%" height="3" cellpadding="0" cellspacing="0" border="0" style="'+backImgOffset(_skin+"menus.gif",0,80)+';"><tbody><tr><td></td></tr></tbody></table></td></tr>'
- // Days
- for (var i=0;i<6;i++)
- {
- s+='<tr align="right">'
- for (var j=0;j<7;j++)
- {
- s+='<td class="calendarTextPart" onmousedown="'+_codeWinName+'.CalendarMenuWidget_mouseDown(this)" onmouseover="'+_codeWinName+'.CalendarWidget_mouseOver(this)" onmouseout="'+_codeWinName+'.CalendarWidget_mouseOut(this)" onkeydown="'+_codeWinName+'.CalendarMenuWidget_keyDown(this,event)">'+
- '<div subid="'+(j+(i*7))+'" class="menuCalendar"></div></td>'
- }
- s+='</tr>'
- }
- s+='<tr><td colspan="7" style="padding:2px;"><table width="100%" height="3" cellpadding="0" cellspacing="0" border="0" style="'+backImgOffset(_skin+"menus.gif",0,80)+';"><tbody><tr><td></td></tr></tbody></table></td></tr>'
- s+='<tr><td colspan="7" align="center" style="padding-bottom=3px;padding-top:3px;">'+o.today.getHTML()+'</td></tr>'
- // End menu
- s+='</table></td></tr>'
- s+='</table>'
- s+='<a style="position:absolute;left:-30px;top:-30px; visibility:hidden" id="endLink_'+o.id+'" href="javascript:void(0)" onfocus="'+_codeWinName+'.MenuWidget_keepFocus(\''+o.id+'\');return false;" ></a>'
- return s
- }
- // ================================================================================
- function CalendarMenuWidget_clickCB()
- // PRIVATE
- {
- var o=m=this
- // Modify current month
- if (o.p1||o.n1)
- {
- m=o.par
- m.month=(m.month+(o.p1?-1:1))%12
- if (m.month==-1)
- m.month=11
- m.update()
- }
- // Modify current year
- if (o.p2||o.n2)
- {
- m=o.par
- m.year=m.year+(o.p2?-1:1)
- m.update()
- }
- if (o.today)
- {
- m=o.par
- m.setToday(true)
- m.show(false)
- if (m.changeCB)
- m.changeCB()
-
- //give focus to parent textfield when close menu
- var cal = m.parCalendar
- if( cal && cal.ctfb && cal.ctfb.text)
- cal.ctfb.text.focus()
- else
- cal.focus()
- }
- }
- // ================================================================================
- function CalendarWidget_update()
- // PRIVATE
- {
- var o=this
- if (o.layer==null)
- return
- var month=getElemBySub(o.layer,"month"),year=getElemBySub(o.layer,"year"),l=o.layer
- month.innerHTML=convStr(_month[o.month])
- year.innerHTML=convStr(""+o.year)
- _dateObj.setYear(o.year)
- _dateObj.setMonth(o.month)
- _dateObj.setDate(1)
- var offset=_dateObj.getDay()
- var last=26
- for (var i=26;i<33;i++)
- {
- _dateObj.setDate(i)
- if (_dateObj.getMonth()==o.month)
- last=i-1
- else
- break
- }
- o.lastDate=last
- o.dateOffset=offset
- o.day=Math.min(last,o.day)
- for (var i=0;i<42;i++)
- {
- var j=i-offset,lay=o.daysL[i],cName="menuCalendar"
- if ((j<0)||(j>last))
- {
- lay.innerHTML=""
- lay.tabIndex=-1 //cannot receive focus
- }
- else
- {
- lay.innerHTML=""+(j+1)
- lay.tabIndex=0 //can receive focus
- if (j==o.day)
- {
- cName="menuCalendarSel"
- lay.title=_calendarSelectionLab+(j+1)
- }
- }
- lay.className=cName
- }
- }
- // ================================================================================
- function CalendarWidget_setToday(update)
- {
- _dateObj=new Date
- var o=this
- o.day=_dateObj.getDate()-1
- o.month=_dateObj.getMonth()
- o.year=_dateObj.getFullYear()
- if (update)
- o.update()
- }
- // ================================================================================
- function CalendarMenuWidget_mouseDown(lay)
- {
- lay=lay.childNodes[0]
- var o=getWidget(lay),index=parseInt(lay.getAttribute("subid"))
- var day=index-o.dateOffset
- if ((day<0)||(day>o.lastDate))
- return
- o.day=day
- o.update()
- o.show(false)
- if (o.changeCB)
- o.changeCB()
-
- //give focus to parent textfield when close menu
- var cal = o.parCalendar
- if( cal && cal.ctfb && cal.ctfb.text)
- cal.ctfb.text.focus()
- else
- cal.focus()
- }
- // ================================================================================
- function CalendarWidget_mouseOver(lay)
- {
- lay=lay.childNodes[0]
- var o=getWidget(lay),index=parseInt(lay.getAttribute("subid"))
- var day=index-o.dateOffset,cName=""
- if ((day<0)||(day>o.lastDate))
- cName="menuCalendar"
- else
- cName="menuCalendarSel"
- lay.className=cName
- }
- // ================================================================================
- function CalendarWidget_mouseOut(lay)
- {
- lay=lay.childNodes[0]
- var o=getWidget(lay),index=parseInt(lay.getAttribute("subid"))
- var day=index-o.dateOffset,cName=""
- if (o.day!=day)
- lay.className="menuCalendar"
- }
- // ================================================================================
- function getElemBySub(l,subId)
- {
- if (l.getAttribute&&(l.getAttribute("subid")==subId))
- return l
- var sub=l.childNodes,len=sub.length
- for (var i=0;i<len;i++)
- {
- var r=getElemBySub(sub[i],subId)
- if (r) return r
- }
- return null
- }
- // ================================================================================
- function CalendarWidget_focus()
- {
- var o=this
- o.n1.focus()
- if(o.endLink) o.endLink.show(true)
- if(o.startLink) o.startLink.show(true)
- }
- function CalendarWidget_focusOnDay()
- {
- var o=this
- o.day.focus()
- }
- function CalendarWidget_keyDown(lay,e)
- {
- var k=eventGetKey(e)
- if(k==13)//enter
- {
- CalendarWidget_mouseDown(lay)
- }
- }
- function CalendarMenuWidget_keyDown(lay,e)
- {
- var k=eventGetKey(e)
- if(k==13)//enter
- {
- CalendarMenuWidget_mouseDown(lay)
- }
- }
|