//	written	by Tan Ling	Wee	on 2 Dec 2001

//	last updated 12 Jan 2002

//	email :	fuushikaden@yahoo.com



	var	fixedX = -1 // x position (-1 if to appear below control)

	var	fixedY = -1 // y position (-1 if to appear below control)

	var startAt = 1 // 0 - sunday ; 1 - monday

	var showWeekNumber = 1	// 0 - don't show; 1 - show



	var	crossobj, crossMonthObj, crossYearObj, monthSelected, yearSelected, dateSelected, omonthSelected, oyearSelected, odateSelected, monthConstructed, yearConstructed, intervalID1, intervalID2, timeoutID1, timeoutID2, ctlToPlaceValue, ctlNow, dateFormat, nStartingYear



	var	bPageLoaded=false

	var	ie=document.all

	var	dom=document.getElementById



	var	ns4=document.layers

	var	today =	new	Date()

	var	dateNow	 = today.getDate()

	var	monthNow = today.getMonth()

	var	yearNow	 = today.getYear()

	var	imgsrc = new Array("drop1.gif","drop2.gif","left1.gif","left2.gif","right1.gif","right2.gif")

	var	img	= new Array()



	function HolidayRec (d, m, y, desc)

	{

		this.d = d

		this.m = m

		this.y = y

		this.desc = desc

	}



	var HolidaysCounter = 0

	var Holidays = new Array()



	function addHoliday (d, m, y, desc)

	{

		Holidays[HolidaysCounter++] = new HolidayRec ( d, m, y, desc )

	}





	if (dom)

	{

		for	(i=0;i<imgsrc.length;i++)

		{

			img[i] = new Image

			img[i].src=imgsrc[i]

		}

		document.write ("<div id='calendar'	style='position:absolute;visibility:hidden;'><table	width="+((showWeekNumber==1)?250:220)+" style='font-family:arial;font-size:11px;border-width:1;border-style:solid;border-color:#a0a0a0;font-family:arial; font-size:11px}' bgcolor='#ffffff'><tr bgcolor='#0000aa'><td><table width='"+((showWeekNumber==1)?248:218)+"'><tr><td style='padding:2px;font-family:arial; font-size:11px;'><font color='#ffffff'><B><span id='caption'></span></B></font></td><td align=right><a href='javascript:hideCalendar()'><IMG SRC='close.gif' WIDTH='15' HEIGHT='13' BORDER='0' ALT='Close the Calendar'></a></td></tr></table></td></tr><tr><td style='padding:5px' bgcolor=#ffffff><span id='content'></span></td></tr><tr bgcolor=#f0f0f0><td style='padding:5px' align=center><span	id='lblToday'></span></td></tr></table></div><div id='selectMonth' style='position:absolute;visibility:hidden;'></div><div id='selectYear'	style='position:absolute;visibility:hidden;'></div>");

	}



	var	monthName =	new	Array("Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάϊος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος")

	if (startAt==0)

	{

		dayName = new Array	("Κυρ","Δευτ","Τρίτ","Τετ","Πέμ","Παρ","Σαβ")

	}

	else

	{

		dayName = new Array	("Δευτ","Τρίτ","Τετ","Πέμ","Παρ","Σαβ","Κυρ")

	}

	var	styleAnchor="text-decoration:none;color:black;"

	var	styleLightBorder="border-style:solid;border-width:1px;border-color:#a0a0a0;"



	function swapImage(srcImg, destImg){

		if (ie)	{ document.getElementById(srcImg).setAttribute("src",destImg) }

	}



	function init()	{

		if (!ns4)

		{

			if (!ie) { yearNow += 1900	}



			crossobj=(dom)?document.getElementById("calendar").style : ie? document.all.calendar : document.calendar

			hideCalendar()



			crossMonthObj=(dom)?document.getElementById("selectMonth").style : ie? document.all.selectMonth	: document.selectMonth



			crossYearObj=(dom)?document.getElementById("selectYear").style : ie? document.all.selectYear : document.selectYear



			monthConstructed=false;

			yearConstructed=false;



			document.getElementById("lblToday").innerHTML =	"Σήμερα είναι <a title='Go To Current Month' style='"+styleAnchor+"' href='javascript:monthSelected=monthNow;yearSelected=yearNow;constructCalendar();'>"+dayName[(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)]+", " + dateNow + " " + monthName[monthNow].substring(0,3)	+ "	" +	yearNow	+ "</a>"

			sHTML1="<span id='spanLeft'	style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeLeft\",\"left2.gif\");this.style.borderColor=\"#88AAFF\"' onclick='javascript:decMonth()' onmouseout='clearInterval(intervalID1);swapImage(\"changeLeft\",\"left1.gif\");this.style.borderColor=\"#3366FF\"' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartDecMonth()\",500)'	onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG id='changeLeft' SRC='left1.gif' BORDER=0>&nbsp</span>&nbsp;"

			sHTML1+="<span id='spanRight' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer'	onmouseover='swapImage(\"changeRight\",\"right2.gif\");this.style.borderColor=\"#88AAFF\"' onmouseout='clearInterval(intervalID1);swapImage(\"changeRight\",\"right1.gif\");this.style.borderColor=\"#3366FF\"'	 onclick='incMonth()' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartIncMonth()\",500)'	onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG id='changeRight' SRC='right1.gif'	BORDER=0>&nbsp</span>&nbsp"

			sHTML1+="<span id='spanMonth' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer'	onmouseover='swapImage(\"changeMonth\",\"drop2.gif\");this.style.borderColor=\"#88AAFF\"' onmouseout='swapImage(\"changeMonth\",\"drop1.gif\");this.style.borderColor=\"#3366FF\"' onclick='popUpMonth()'></span>&nbsp;"

			sHTML1+="<span id='spanYear' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeYear\",\"drop2.gif\");this.style.borderColor=\"#88AAFF\"'	onmouseout='swapImage(\"changeYear\",\"drop1.gif\");this.style.borderColor=\"#3366FF\"'	onclick='popUpYear()'></span>&nbsp;"



			document.getElementById("caption").innerHTML  =	sHTML1



			bPageLoaded=true

		}

	}



	function hideCalendar()	{

		crossobj.visibility="hidden"

		if (crossMonthObj != null){crossMonthObj.visibility="hidden"}

		if (crossYearObj !=	null){crossYearObj.visibility="hidden"}

	}



	function padZero(num) {

		return (num	< 10)? '0' + num : num ;

	}



	function closeCalendar() {

		var	sTmp



		hideCalendar();

		sTmp = dateFormat

		sTmp = sTmp.replace	("dd","<e>")

		sTmp = sTmp.replace	("d","<d>")

		sTmp = sTmp.replace	("<e>",padZero(dateSelected))

		sTmp = sTmp.replace	("<d>",dateSelected)

		sTmp = sTmp.replace	("mmm","<o>")

		sTmp = sTmp.replace	("mm","<n>")

		sTmp = sTmp.replace	("m","<m>")

		sTmp = sTmp.replace	("<m>",monthSelected+1)

		sTmp = sTmp.replace	("<n>",padZero(monthSelected+1))

		sTmp = sTmp.replace	("<o>",monthName[monthSelected])

		ctlToPlaceValue.value =	sTmp.replace ("yyyy",yearSelected)

	}



	/*** Month Pulldown	***/



	function StartDecMonth()

	{

		intervalID1=setInterval("decMonth()",80)

	}



	function StartIncMonth()

	{

		intervalID1=setInterval("incMonth()",80)

	}



	function incMonth () {

		monthSelected++

		if (monthSelected>11) {

			monthSelected=0

			yearSelected++

		}

		constructCalendar()

	}



	function decMonth () {

		monthSelected--

		if (monthSelected<0) {

			monthSelected=11

			yearSelected--

		}

		constructCalendar()

	}



	function constructMonth() {

		popDownYear()

		if (!monthConstructed) {

			sHTML =	""

			for	(i=0; i<12;	i++) {

				sName =	monthName[i];

				if (i==monthSelected){

					sName =	"<B>" +	sName +	"</B>"

				}

				sHTML += "<tr><td id='m" + i + "' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='this.style.backgroundColor=\"\"'	style='cursor:pointer' onclick='monthConstructed=false;monthSelected=" + i + ";constructCalendar();popDownMonth();event.cancelBubble=true'>&nbsp;" + sName + "&nbsp;</td></tr>"

			}



			document.getElementById("selectMonth").innerHTML = "<table width=70	style='font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:#a0a0a0;' bgcolor='#FFFFDD' cellspacing=0 onmouseover='clearTimeout(timeoutID1)'	onmouseout='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"popDownMonth()\",100);event.cancelBubble=true'>" +	sHTML +	"</table>"



			monthConstructed=true

		}

	}



	function popUpMonth() {

		constructMonth()

		crossMonthObj.visibility = (dom||ie)? "visible"	: "show"

		crossMonthObj.left = parseInt(crossobj.left) + 50

		crossMonthObj.top =	parseInt(crossobj.top) + 26

	}



	function popDownMonth()	{

		crossMonthObj.visibility= "hidden"

	}



	/*** Year Pulldown ***/



	function incYear() {

		for	(i=0; i<7; i++){

			newYear	= (i+nStartingYear)+1

			if (newYear==yearSelected)

			{ txtYear =	"&nbsp;<B>"	+ newYear +	"</B>&nbsp;" }

			else

			{ txtYear =	"&nbsp;" + newYear + "&nbsp;" }

			document.getElementById("y"+i).innerHTML = txtYear

		}

		nStartingYear ++;

	}



	function decYear() {

		for	(i=0; i<7; i++){

			newYear	= (i+nStartingYear)-1

			if (newYear==yearSelected)

			{ txtYear =	"&nbsp;<B>"	+ newYear +	"</B>&nbsp;" }

			else

			{ txtYear =	"&nbsp;" + newYear + "&nbsp;" }

			document.getElementById("y"+i).innerHTML = txtYear

		}

		nStartingYear --;

	}



	function selectYear(nYear) {

		yearSelected=parseInt(nYear+nStartingYear);

		yearConstructed=false;

		constructCalendar();

		popDownYear();

	}



	function constructYear() {

		popDownMonth()

		sHTML =	""

		if (!yearConstructed) {



			sHTML =	"<tr><td align='center'	onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='clearInterval(intervalID1);this.style.backgroundColor=\"\"' style='cursor:pointer'	onmousedown='clearInterval(intervalID1);intervalID1=setInterval(\"decYear()\",30)' onmouseup='clearInterval(intervalID1)'>-</td></tr>"



			j =	0

			nStartingYear =	yearSelected-3

			for	(i=(yearSelected-3); i<=(yearSelected+3); i++) {

				sName =	i;

				if (i==yearSelected){

					sName =	"<B>" +	sName +	"</B>"

				}



				sHTML += "<tr><td id='y" + j + "' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='this.style.backgroundColor=\"\"' style='cursor:pointer' onclick='selectYear("+j+");event.cancelBubble=true'>&nbsp;" + sName + "&nbsp;</td></tr>"

				j ++;

			}



			sHTML += "<tr><td align='center' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='clearInterval(intervalID2);this.style.backgroundColor=\"\"' style='cursor:pointer' onmousedown='clearInterval(intervalID2);intervalID2=setInterval(\"incYear()\",30)'	onmouseup='clearInterval(intervalID2)'>+</td></tr>"



			document.getElementById("selectYear").innerHTML	= "<table width=44 style='font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:#a0a0a0;'	bgcolor='#FFFFDD' onmouseover='clearTimeout(timeoutID2)' onmouseout='clearTimeout(timeoutID2);timeoutID2=setTimeout(\"popDownYear()\",100)'	cellspacing=0>"	+ sHTML	+ "</table>"



			yearConstructed	= true

		}

	}



	function popDownYear() {

		clearInterval(intervalID1)

		clearTimeout(timeoutID1)

		clearInterval(intervalID2)

		clearTimeout(timeoutID2)

		crossYearObj.visibility= "hidden"

	}



	function popUpYear() {

		var	leftOffset



		constructYear()

		crossYearObj.visibility	= (dom||ie)? "visible" : "show"

		leftOffset = parseInt(crossobj.left) + document.getElementById("spanYear").offsetLeft

		if (ie)

		{

			leftOffset += 6

		}

		crossYearObj.left =	leftOffset

		crossYearObj.top = parseInt(crossobj.top) +	26

	}



	/*** calendar ***/



	function WeekNbr(n) {

		var P3D=259200000, P7D=604800000, y=n.getYear(), y=(y<1000?1900+y:y);

		var s=Math.floor((Date.UTC(y,n.getMonth(),n.getDate())+P3D)/P7D);

		tmp=new Date(s*P7D); j=tmp.getYear(); j=(j<1000?1900+j:j);

		return 1+s-Math.floor((Date.UTC(j,0,4)+P3D)/P7D)

	}





	function constructCalendar () {

		var	startDate =	new	Date (yearSelected,monthSelected,1)

		var	endDate	= new Date (yearSelected,monthSelected+1,1);

		endDate	= new Date (endDate	- (24*60*60*1000));

		numDaysInMonth = endDate.getDate()



		datePointer	= 0

		dayPointer = startDate.getDay() - startAt

		

		if (dayPointer<0)

		{

			dayPointer = 6

		}



		sHTML =	"<table	 border=0 style='font-family:verdana;font-size:10px;'><tr>"



		if (showWeekNumber==1)

		{

			sHTML += "<td width=27><b>Εβδ</b></td><td width=1 rowspan=7 bgcolor='#d0d0d0' style='padding:0px'><img src='divider.gif' width=1></td>"

		}



		for	(i=0; i<7; i++)	{

			sHTML += "<td width='27' align='right'><B>"+ dayName[i]+"</B></td>"

		}

		sHTML +="</tr><tr>"

		

		if (showWeekNumber==1)

		{

			sHTML += "<td align=right>" + WeekNbr(startDate) + "&nbsp;</td>"

		}



		for	( var i=1; i<=dayPointer;i++ )

		{

			sHTML += "<td>&nbsp;</td>"

		}

	

		for	( datePointer=1; datePointer<=numDaysInMonth; datePointer++ )

		{

			dayPointer++;

			sHTML += "<td align=right>"

			sStyle=styleAnchor

			if ((datePointer==odateSelected) &&	(monthSelected==omonthSelected)	&& (yearSelected==oyearSelected))

			{ sStyle+=styleLightBorder }



			sHint = ""

			for (k=0;k<HolidaysCounter;k++)

			{

				if ((parseInt(Holidays[k].d)==datePointer)&&(parseInt(Holidays[k].m)==(monthSelected+1)))

				{

					if ((parseInt(Holidays[k].y)==0)||((parseInt(Holidays[k].y)==yearSelected)&&(parseInt(Holidays[k].y)!=0)))

					{

						sStyle+="background-color:#FFDDDD;"

						sHint+=sHint==""?Holidays[k].desc:"\n"+Holidays[k].desc

					}

				}

			}



			var regexp= /\"/g

			sHint=sHint.replace(regexp,"&quot;")



			if ((datePointer==dateNow)&&(monthSelected==monthNow)&&(yearSelected==yearNow))

			{ sHTML += "<b><a title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer+";closeCalendar();'><font color=#ff0000>&nbsp;" + datePointer + "</font>&nbsp;</a></b>"}

			else if	(dayPointer % 7 == (startAt * -1)+1)

			{ sHTML += "<a title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer + ";closeCalendar();'>&nbsp;<font color=#909090>" + datePointer + "</font>&nbsp;</a>" }

			else

			{ sHTML += "<a title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer + ";closeCalendar();'>&nbsp;" + datePointer + "&nbsp;</a>" }



			sHTML += ""

			if ((dayPointer+startAt) % 7 == startAt) { 

				sHTML += "</tr><tr>" 

				if ((showWeekNumber==1)&&(datePointer<numDaysInMonth))

				{

					sHTML += "<td align=right>" + (WeekNbr(new Date(yearSelected,monthSelected,datePointer+1))) + "&nbsp;</td>"

				}

			}

		}



		document.getElementById("content").innerHTML   = sHTML

		document.getElementById("spanMonth").innerHTML = "&nbsp;" +	monthName[monthSelected] + "&nbsp;<IMG id='changeMonth' SRC='drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0>"

		document.getElementById("spanYear").innerHTML =	"&nbsp;" + yearSelected	+ "&nbsp;<IMG id='changeYear' SRC='drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0>"

	}



	function popUpCalendar(ctl,	ctl2, format) {

		var	leftpos=0

		var	toppos=0



		if (bPageLoaded)

		{

			if ( crossobj.visibility ==	"hidden" ) {

				ctlToPlaceValue	= ctl2

				dateFormat=format;



				formatChar = " "

				aFormat	= dateFormat.split(formatChar)

				if (aFormat.length<3)

				{

					formatChar = "/"

					aFormat	= dateFormat.split(formatChar)

					if (aFormat.length<3)

					{

						formatChar = "-"

						aFormat	= dateFormat.split(formatChar)

						if (aFormat.length<3)

						{

							// invalid date	format

							formatChar=""

						}

					}

				}



				tokensChanged =	0

				if ( formatChar	!= "" )

				{

					// use user's date

					aData =	ctl2.value.split(formatChar)



					for	(i=0;i<3;i++)

					{

						if ((aFormat[i]=="d") || (aFormat[i]=="dd"))

						{

							dateSelected = parseInt(aData[i], 10)

							tokensChanged ++

						}

						else if	((aFormat[i]=="m") || (aFormat[i]=="mm"))

						{

							monthSelected =	parseInt(aData[i], 10) - 1

							tokensChanged ++

						}

						else if	(aFormat[i]=="yyyy")

						{

							yearSelected = parseInt(aData[i], 10)

							tokensChanged ++

						}

						else if	(aFormat[i]=="mmm")

						{

							for	(j=0; j<12;	j++)

							{

								if (aData[i]==monthName[j])

								{

									monthSelected=j

									tokensChanged ++

								}

							}

						}

					}

				}



				if ((tokensChanged!=3)||isNaN(dateSelected)||isNaN(monthSelected)||isNaN(yearSelected))

				{

					dateSelected = dateNow

					monthSelected =	monthNow

					yearSelected = yearNow

				}



				odateSelected=dateSelected

				omonthSelected=monthSelected

				oyearSelected=yearSelected



				aTag = ctl

				do {

					aTag = aTag.offsetParent;

					leftpos	+= aTag.offsetLeft;

					toppos += aTag.offsetTop;

				} while(aTag.tagName!="BODY");



				crossobj.left =	fixedX==-1 ? ctl.offsetLeft	+ leftpos :	fixedX

				crossobj.top = fixedY==-1 ?	ctl.offsetTop +	toppos + ctl.offsetHeight +	2 :	fixedY

				constructCalendar (1, monthSelected, yearSelected);

				crossobj.visibility=(dom||ie)? "visible" : "show"

			}

			else

			{

				hideCalendar()

				if (ctlNow!=ctl) {popUpCalendar(ctl, ctl2, format)}

			}

			ctlNow = ctl

		}

	}

	window.onload=init