1*cdf0e10cSrcweir<?xml version="1.0" encoding="UTF-8"?>
2*cdf0e10cSrcweir<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
3*cdf0e10cSrcweir<script:module xmlns:script="http://openoffice.org/2000/script" script:name="CalendarMain" script:language="StarBasic">Option Explicit
4*cdf0e10cSrcweir
5*cdf0e10cSrcweirConst _DEBUG = 0
6*cdf0e10cSrcweir
7*cdf0e10cSrcweir&apos; CalenderMain
8*cdf0e10cSrcweirPublic sCurLangLocale as String
9*cdf0e10cSrcweirPublic sCurCountryLocale as String
10*cdf0e10cSrcweir&apos; This flag serves as a query if the individual Data should be saved
11*cdf0e10cSrcweirPublic bCalOwnDataChanged as Boolean
12*cdf0e10cSrcweir
13*cdf0e10cSrcweir&apos;BankHoliday Functions
14*cdf0e10cSrcweirPublic CalBankholidayName$ (1 To 374)
15*cdf0e10cSrcweirPublic CalTypeOfBankHoliday% (1 To 374)
16*cdf0e10cSrcweir
17*cdf0e10cSrcweirPublic Const cHolidayType_None = 0
18*cdf0e10cSrcweirPublic Const cHolidayType_Full = 1
19*cdf0e10cSrcweirPublic Const cHolidayType_Half = 2
20*cdf0e10cSrcweirPublic Const cHolidayType_Own = 4
21*cdf0e10cSrcweir
22*cdf0e10cSrcweirPublic cCalSubcmdDeleteSelect_DeleteSelEntry$
23*cdf0e10cSrcweirPublic cCalSubcmdDeleteSelect_DeleteSelEntryTitle$
24*cdf0e10cSrcweirPublic cCalSubcmdSwitchOwnDataOrGeneral_Back$
25*cdf0e10cSrcweirPublic cCalSubcmdSwitchOwnDataOrGeneral_OwnData$
26*cdf0e10cSrcweir
27*cdf0e10cSrcweir&apos;Language
28*cdf0e10cSrcweirPublic cCalLongMonthNames(11) as String
29*cdf0e10cSrcweirPublic cCalShortMonthNames(11) as String
30*cdf0e10cSrcweir
31*cdf0e10cSrcweirPublic sBitmapFilename$
32*cdf0e10cSrcweirPublic sCalendarTitle$, sMonthTitle$, sWizardTitle$, sError$
33*cdf0e10cSrcweirPublic cCalStyleWorkday$, cCalStyleWeekend$
34*cdf0e10cSrcweir
35*cdf0e10cSrcweirPublic CalChoosenLand as Integer
36*cdf0e10cSrcweir
37*cdf0e10cSrcweirPublic oDocument as Object
38*cdf0e10cSrcweirPublic oSheets as Object
39*cdf0e10cSrcweirPublic oSheet as Object
40*cdf0e10cSrcweirPublic oStatusLine as Object
41*cdf0e10cSrcweirPublic bCancelTask as Boolean
42*cdf0e10cSrcweirPublic oNumberFormatter as Object
43*cdf0e10cSrcweir
44*cdf0e10cSrcweir&apos; BL* means &quot;BundesLand&quot; (for german states only)
45*cdf0e10cSrcweirPublic CONST CalBLBayern         = 1
46*cdf0e10cSrcweirPublic CONST CalBLBadenWuert     = 2
47*cdf0e10cSrcweirPublic CONST CalBLBerlin         = 3
48*cdf0e10cSrcweirPublic CONST CalBLBremen         = 4
49*cdf0e10cSrcweirPublic CONST CalBLBrandenburg    = 5
50*cdf0e10cSrcweirPublic CONST CalBLHamburg        = 6
51*cdf0e10cSrcweirPublic CONST CalBLHessen         = 7
52*cdf0e10cSrcweirPublic CONST CalBLMeckPomm       = 8
53*cdf0e10cSrcweirPublic CONST CalBLNiedersachsen  = 9
54*cdf0e10cSrcweirPublic CONST CalBLNordrheinWest  = 10
55*cdf0e10cSrcweirPublic CONST CalBLRheinlandPfalz = 11
56*cdf0e10cSrcweirPublic CONST CalBLSaarland       = 12
57*cdf0e10cSrcweirPublic CONST CalBLSachsen        = 13
58*cdf0e10cSrcweirPublic CONST CalBLSachsenAnhalt  = 14
59*cdf0e10cSrcweirPublic CONST CalBLSchlHolstein   = 15
60*cdf0e10cSrcweirPublic CONST CalBLThueringen     = 16
61*cdf0e10cSrcweir
62*cdf0e10cSrcweirPublic DlgCalendar as Object
63*cdf0e10cSrcweirPublic DlgCalModel as Object
64*cdf0e10cSrcweirPublic lDateFormat as Long
65*cdf0e10cSrcweirPublic lDateStandardFormat as Long
66*cdf0e10cSrcweir
67*cdf0e10cSrcweir
68*cdf0e10cSrcweir
69*cdf0e10cSrcweirSub CalAutopilotTable()
70*cdf0e10cSrcweirDim BitmapDir as String
71*cdf0e10cSrcweirDim iThisMonth as Integer
72*cdf0e10cSrcweir
73*cdf0e10cSrcweir&apos;On Error Goto ErrorHandler
74*cdf0e10cSrcweir	BasicLibraries.LoadLibrary(&quot;Tools&quot;)
75*cdf0e10cSrcweir	bSelectByMouseMove = True
76*cdf0e10cSrcweir	oDocument = ThisComponent
77*cdf0e10cSrcweir	oStatusline = oDocument.GetCurrentController.GetFrame.CreateStatusIndicator
78*cdf0e10cSrcweir	ToggleWindow(False)
79*cdf0e10cSrcweir	sCurLangLocale = oDocument.CharLocale.Language
80*cdf0e10cSrcweir	sCurCountryLocale = oDocument.CharLocale.Country
81*cdf0e10cSrcweir	DlgCalendar = LoadDialog(&quot;Schedule&quot;, &quot;DlgCalendar&quot;)
82*cdf0e10cSrcweir	DlgCalModel = DlgCalendar.Model
83*cdf0e10cSrcweir    LoadLanguage(sCurLangLocale)
84*cdf0e10cSrcweir	CalInitGlobalVariablesDate()
85*cdf0e10cSrcweir	BitmapDir = GetOfficeSubPath(&quot;Template&quot;,&quot;../wizard/bitmap&quot;)
86*cdf0e10cSrcweir	DlgCalModel.imgCountry.ImageURL = BitmapDir &amp; sBitmapFilename
87*cdf0e10cSrcweir	CalChoosenLand = -2
88*cdf0e10cSrcweir	CalLoadOwnData()
89*cdf0e10cSrcweir
90*cdf0e10cSrcweir	With DlgCalModel
91*cdf0e10cSrcweir		.cmdDelete.Enabled = False
92*cdf0e10cSrcweir		.lstMonth.StringItemList() = cCalShortMonthNames()
93*cdf0e10cSrcweir		Select Case sCurLangLocale
94*cdf0e10cSrcweir			Case cLANGUAGE_JAPANESE
95*cdf0e10cSrcweir				.lstOwnData.FontName = &quot;HG MinochoL&quot;
96*cdf0e10cSrcweir				.txtEvent.FontName = &quot;HG MinchoL&quot;
97*cdf0e10cSrcweir			Case cLANGUAGE_CHINESE
98*cdf0e10cSrcweir				If oDocument.CharLocale.Country = &quot;CN&quot; Then
99*cdf0e10cSrcweir					.lstOwnData.FontName = &quot;FZ Song Ti&quot;
100*cdf0e10cSrcweir					.txtEvent.FontName = &quot;FZ Song Ti&quot;
101*cdf0e10cSrcweir				Else
102*cdf0e10cSrcweir					.lstOwnData.FontName = &quot;FZ Ming Ti&quot;
103*cdf0e10cSrcweir					.txtEvent.FontName = &quot;FZ Ming Ti&quot;
104*cdf0e10cSrcweir				End If
105*cdf0e10cSrcweir			Case &quot;ko&quot;
106*cdf0e10cSrcweir				.lstOwnData.FontName = &quot;Sun Gulim&quot;
107*cdf0e10cSrcweir				.txtEvent.FontName = &quot;Sun Gulim&quot;
108*cdf0e10cSrcweir		End Select
109*cdf0e10cSrcweir		.lstOwnEventMonth.StringItemList() = cCalShortMonthNames()
110*cdf0e10cSrcweir		.optYear.State = 1
111*cdf0e10cSrcweir		.txtYear.Value = Year(Now())
112*cdf0e10cSrcweir		.txtYear.Tag = .txtYear.Value
113*cdf0e10cSrcweir		.Step = 1
114*cdf0e10cSrcweir	End With
115*cdf0e10cSrcweir	SetupNumberFormatter(sCurLangLocale, sCurCountryLocale)
116*cdf0e10cSrcweir	CalChooseCalendar()  &apos; month
117*cdf0e10cSrcweir	iThisMonth = Month(Now)
118*cdf0e10cSrcweir	DlgCalendar.GetControl(&quot;lstMonth&quot;).SelectItemPos(iThisMonth-1, True)
119*cdf0e10cSrcweir	DlgCalendar.GetControl(&quot;lstHolidays&quot;).SelectItemPos(0,True)
120*cdf0e10cSrcweir	DlgCalModel.cmdGoOn.DefaultButton = True
121*cdf0e10cSrcweir	ToggleWindow(True)
122*cdf0e10cSrcweir	DlgCalendar.GetControl(&quot;lblHolidays&quot;).Visible = sCurLangLocale  = cLANGUAGE_GERMAN
123*cdf0e10cSrcweir	DlgCalendar.GetControl(&quot;lstHolidays&quot;).Visible = sCurLangLocale  = cLANGUAGE_GERMAN
124*cdf0e10cSrcweir	fHeightCorrFactor = DlgCalendar.GetControl(&quot;imgCountry&quot;).Size.Height/198
125*cdf0e10cSrcweir	fWidthCorrFactor = DlgCalendar.GetControl(&quot;imgCountry&quot;).Size.Width/166
126*cdf0e10cSrcweir	DlgCalendar.Execute()
127*cdf0e10cSrcweir	DlgCalendar.Dispose()
128*cdf0e10cSrcweir	Exit Sub
129*cdf0e10cSrcweirErrorHandler:
130*cdf0e10cSrcweir    MsgBox(sError$, 16, sWizardTitle$)
131*cdf0e10cSrcweirEnd Sub
132*cdf0e10cSrcweir
133*cdf0e10cSrcweir
134*cdf0e10cSrcweirSub SetupNumberFormatter(sCurLangLocale as String, sCurCountryLocale as String)
135*cdf0e10cSrcweirDim oFormats as Object
136*cdf0e10cSrcweirDim DateFormatString as String
137*cdf0e10cSrcweir	oFormats = oDocument.getNumberFormats()
138*cdf0e10cSrcweir	Select Case sCurLangLocale
139*cdf0e10cSrcweir		Case cLANGUAGE_GERMAN
140*cdf0e10cSrcweir			DateFormatString = &quot;TT.MMM&quot;
141*cdf0e10cSrcweir		Case cLANGUAGE_ENGLISH
142*cdf0e10cSrcweir			DateFormatString = &quot;MMM DD&quot;
143*cdf0e10cSrcweir		Case cLANGUAGE_FRENCH
144*cdf0e10cSrcweir			DateFormatString = &quot;JJ/MMM&quot;
145*cdf0e10cSrcweir		Case cLANGUAGE_ITALIAN
146*cdf0e10cSrcweir			DateFormatString = &quot;GG/MMM&quot;
147*cdf0e10cSrcweir		Case cLANGUAGE_SPANISH
148*cdf0e10cSrcweir			DateFormatString = &quot;DD/MMM&quot;
149*cdf0e10cSrcweir		Case cLANGUAGE_PORTUGUESE
150*cdf0e10cSrcweir			If sCurCountryLocale = &quot;BR&quot; Then
151*cdf0e10cSrcweir				DateFormatString = &quot;DD/MMM&quot;
152*cdf0e10cSrcweir			Else
153*cdf0e10cSrcweir				DateFormatString = &quot;DD-MMM&quot;
154*cdf0e10cSrcweir			End If
155*cdf0e10cSrcweir		Case cLANGUAGE_DUTCH
156*cdf0e10cSrcweir			DateFormatString = &quot;DD/MMM&quot;
157*cdf0e10cSrcweir		Case cLANGUAGE_SWEDISH
158*cdf0e10cSrcweir			DateFormatString = &quot;MMM DD&quot;
159*cdf0e10cSrcweir		Case cLANGUAGE_DANISH
160*cdf0e10cSrcweir			DateFormatString = &quot;DD-MMM&quot;
161*cdf0e10cSrcweir		Case cLANGUAGE_POLISH
162*cdf0e10cSrcweir			DateFormatString = &quot;MMM DD&quot;
163*cdf0e10cSrcweir		Case cLANGUAGE_RUSSIAN
164*cdf0e10cSrcweir			DateFormatString = &quot;MMM DD&quot;
165*cdf0e10cSrcweir		Case cLANGUAGE_JAPANESE
166*cdf0e10cSrcweir			DateFormatString = &quot;M月D日&quot;
167*cdf0e10cSrcweir		Case cLANGUAGE_CHINESE
168*cdf0e10cSrcweir			If sCurCountryLocale = &quot;TW&quot; Then
169*cdf0e10cSrcweir				DateFormatString = &quot;MMMMD&quot; &amp;&quot;&quot;&quot;&quot; &amp; &quot;日&quot; &amp; &quot;&quot;&quot;&quot;
170*cdf0e10cSrcweir			Else
171*cdf0e10cSrcweir				DateFormatString = &quot;M&quot; &amp; &quot;&quot;&quot;&quot; &amp; &quot;月&quot; &amp; &quot;&quot;&quot;&quot; &amp; &quot;D&quot; &amp;&quot;&quot;&quot;&quot; &amp; &quot;日&quot; &amp; &quot;&quot;&quot;&quot;
172*cdf0e10cSrcweir			End If
173*cdf0e10cSrcweir		Case cLANGUAGE_GREEK
174*cdf0e10cSrcweir			DateFormatString = &quot;DD/MMM&quot;
175*cdf0e10cSrcweir		Case cLANGUAGE_TURKISH
176*cdf0e10cSrcweir			DateFormatString = &quot;DD/MMM&quot;
177*cdf0e10cSrcweir		Case cLANGUAGE_POLISH
178*cdf0e10cSrcweir			DateFormatString = &quot;MMM DD&quot;
179*cdf0e10cSrcweir		Case cLANGUAGE_FINNISH
180*cdf0e10cSrcweir			DateFormatString = &quot;PP.KKK&quot;
181*cdf0e10cSrcweir	End Select
182*cdf0e10cSrcweir
183*cdf0e10cSrcweir	lDateFormat = AddNumberFormat(oFormats, DateFormatString, oDocument.CharLocale)
184*cdf0e10cSrcweir	lDateStandardFormat = oFormats.getStandardFormat(com.sun.star.util.NumberFormat.DATE, oDocument.CharLocale)
185*cdf0e10cSrcweir
186*cdf0e10cSrcweir&apos;	lDateStandardFormat = AddNumberFormat(oFormats, StandardDateFormatString, oDocument.CharLocale)
187*cdf0e10cSrcweir	oNumberFormatter = createUNOService(&quot;com.sun.star.util.NumberFormatter&quot;)
188*cdf0e10cSrcweir	oNumberFormatter.attachNumberFormatsSupplier(oDocument)
189*cdf0e10cSrcweirEnd Sub
190*cdf0e10cSrcweir
191*cdf0e10cSrcweir
192*cdf0e10cSrcweirFunction AddNumberFormat(oNumberFormats as Object, FormatString as String, oLocale as Object) as Long
193*cdf0e10cSrcweirDim lLocDateFormat as Long
194*cdf0e10cSrcweir	lLocDateFormat = oNumberFormats.QueryKey(FormatString, oLocale, True)
195*cdf0e10cSrcweir	If lLocDateFormat = -1 Then
196*cdf0e10cSrcweir		lLocDateFormat = oNumberFormats.addNew(FormatString, oLocale)
197*cdf0e10cSrcweir	End If
198*cdf0e10cSrcweir	AddNumberFormat() = lLocDateFormat
199*cdf0e10cSrcweirEnd Function
200*cdf0e10cSrcweir
201*cdf0e10cSrcweir
202*cdf0e10cSrcweirSub CalChooseCalendar()
203*cdf0e10cSrcweir	With DlgCalModel
204*cdf0e10cSrcweir		.lstMonth.Enabled = .optMonth.State = 1
205*cdf0e10cSrcweir		.lblMonth.Enabled = .optMonth.State = 1
206*cdf0e10cSrcweir	End With
207*cdf0e10cSrcweirEnd Sub
208*cdf0e10cSrcweir
209*cdf0e10cSrcweir
210*cdf0e10cSrcweirSub CalcmdCancel()
211*cdf0e10cSrcweir	Call CalSaveOwnData()
212*cdf0e10cSrcweir	DlgCalendar.EndExecute
213*cdf0e10cSrcweirEnd Sub
214*cdf0e10cSrcweir
215*cdf0e10cSrcweir
216*cdf0e10cSrcweirSub CalcmdOk()
217*cdf0e10cSrcweir	&apos; cmdOk is called when the Button &apos;Read&apos; is clicked on
218*cdf0e10cSrcweir	&apos; It is either given out a month or a year
219*cdf0e10cSrcweirDim i, iSelYear as Integer
220*cdf0e10cSrcweirDim SelYear as String
221*cdf0e10cSrcweir&apos;	DlgCalendar.Visible = False
222*cdf0e10cSrcweir
223*cdf0e10cSrcweir	oSheets = oDocument.sheets
224*cdf0e10cSrcweir	Call CalSaveOwnData()
225*cdf0e10cSrcweir	UnprotectSheets(oSheets)
226*cdf0e10cSrcweir	oSheets.RemovebyName(oSheets.GetbyIndex(0).Name)
227*cdf0e10cSrcweir	iSelYear = DlgCalModel.txtYear.Value
228*cdf0e10cSrcweir	Select Case sCurLangLocale
229*cdf0e10cSrcweir		Case cLANGUAGE_GERMAN
230*cdf0e10cSrcweir			If Ubound(DlgCalModel.lstHolidays.SelectedItems()) &gt; -1 Then
231*cdf0e10cSrcweir				CalChoosenLand = DlgCalModel.lstHolidays.SelectedItems(0)
232*cdf0e10cSrcweir			Else
233*cdf0e10cSrcweir				CalChoosenLand = 0
234*cdf0e10cSrcweir			End If
235*cdf0e10cSrcweir			Call CalFindWholeYearHolidays_GERMANY(iSelYear, CalChoosenLand)
236*cdf0e10cSrcweir		Case cLANGUAGE_ENGLISH
237*cdf0e10cSrcweir			Call FindWholeYearHolidays_US(iSelYear)
238*cdf0e10cSrcweir		Case cLANGUAGE_FRENCH
239*cdf0e10cSrcweir			Call FindWholeYearHolidays_FRANCE(iSelYear)
240*cdf0e10cSrcweir		Case cLANGUAGE_ITALIAN
241*cdf0e10cSrcweir			Call FindWholeYearHolidays_ITA(iSelYear)
242*cdf0e10cSrcweir		Case cLANGUAGE_SPANISH
243*cdf0e10cSrcweir			Call FindWholeYearHolidays_SPAIN(iSelYear)
244*cdf0e10cSrcweir		Case cLANGUAGE_PORTUGUESE
245*cdf0e10cSrcweir			Call FindWholeYearHolidays_PORT(iSelYear)
246*cdf0e10cSrcweir		Case cLANGUAGE_DUTCH
247*cdf0e10cSrcweir			Call FindWholeYearHolidays_NL(iSelYear)
248*cdf0e10cSrcweir		Case cLANGUAGE_SWEDISH
249*cdf0e10cSrcweir			Call FindWholeYearHolidays_SWED(iSelYear)
250*cdf0e10cSrcweir		Case cLANGUAGE_DANISH
251*cdf0e10cSrcweir			Call FindWholeYearHolidays_DK(iSelYear)
252*cdf0e10cSrcweir		Case cLANGUAGE_POLISH
253*cdf0e10cSrcweir			Call FindWholeYearHolidays_PL(iSelYear)
254*cdf0e10cSrcweir		Case cLANGUAGE_RUSSIAN
255*cdf0e10cSrcweir			Call FindWholeYearHolidays_RU(iSelYear)
256*cdf0e10cSrcweir		Case cLANGUAGE_JAPANESE
257*cdf0e10cSrcweir			Call FindWholeYearHolidays_JP(iSelYear)
258*cdf0e10cSrcweir		Case cLANGUAGE_CHINESE
259*cdf0e10cSrcweir			If sCurCountryLocale = &quot;TW&quot; Then
260*cdf0e10cSrcweir				Call FindWholeYearHolidays_TW(iSelYear)
261*cdf0e10cSrcweir			Else
262*cdf0e10cSrcweir				Call FindWholeYearHolidays_CN(iSelYear)
263*cdf0e10cSrcweir			End If
264*cdf0e10cSrcweir		Case cLANGUAGE_GREEK
265*cdf0e10cSrcweir			Call FindWholeYearHolidays_GREEK(iSelYear)
266*cdf0e10cSrcweir		Case cLANGUAGE_TURKISH
267*cdf0e10cSrcweir			Call FindWholeYearHolidays_TRK(iSelYear)
268*cdf0e10cSrcweir		Case cLANGUAGE_POLISH
269*cdf0e10cSrcweir			Call FindWholeYearHolidays_PL(iSelYear)
270*cdf0e10cSrcweir		Case cLANGUAGE_FINNISH
271*cdf0e10cSrcweir			Call FindWholeYearHolidays_FI(iSelYear)
272*cdf0e10cSrcweir	End Select
273*cdf0e10cSrcweir
274*cdf0e10cSrcweir	Call CalInsertOwnDataInTables(iSelYear)
275*cdf0e10cSrcweir
276*cdf0e10cSrcweir	If DlgCalModel.optYear.State = 1 Then
277*cdf0e10cSrcweir		oSheets.RemovebyName(oSheets.GetbyIndex(0).Name)
278*cdf0e10cSrcweir		oSheet = oSheets.GetbyIndex(0)
279*cdf0e10cSrcweir		oSheet.Name = sCalendarTitle$ + &quot; &quot; + iSelYear
280*cdf0e10cSrcweir		oDocument.AddActionLock
281*cdf0e10cSrcweir		Call CalCreateYearTable(iSelYear)
282*cdf0e10cSrcweir	ElseIf DlgCalModel.optMonth.State = 1 Then
283*cdf0e10cSrcweir		Dim iMonth
284*cdf0e10cSrcweir		iMonth = DlgCalModel.lstMonth.SelectedItems(0) + 1
285*cdf0e10cSrcweir		oSheets.RemovebyName(oSheets.GetbyIndex(1).Name)
286*cdf0e10cSrcweir		oSheet = oSheets.GetbyIndex(0)
287*cdf0e10cSrcweir		If sMonthTitle = &quot;&quot; Then
288*cdf0e10cSrcweir			oSheet.Name = cCalLongMonthNames(iMonth-1)
289*cdf0e10cSrcweir		Else
290*cdf0e10cSrcweir			oSheet.Name = sMonthTitle + &quot; &quot; + cCalLongMonthNames(iMonth-1)
291*cdf0e10cSrcweir		End If
292*cdf0e10cSrcweir		oDocument.AddActionLock
293*cdf0e10cSrcweir		Call CalCreateMonthTable(iSelYear, iMonth)
294*cdf0e10cSrcweir	End If
295*cdf0e10cSrcweir
296*cdf0e10cSrcweir	oDocument.RemoveActionLock
297*cdf0e10cSrcweir	oSheet.protect(&quot;&quot;)
298*cdf0e10cSrcweir	oStatusLine.End
299*cdf0e10cSrcweir	DlgCalendar.EndExecute()
300*cdf0e10cSrcweir	bCancelTask = True
301*cdf0e10cSrcweirEnd Sub
302*cdf0e10cSrcweir</script:module>