/* DHTML-Bibliothek und Funktionsbibliothek (C) 1999-2006 Robert Galovic - und diverse andere ...*/

var DHTML = 0, DOM = 0, MS = 0, NS = 0, OP = 0;
var langpic = new Array();
 
var global_hidden = 'hidden', global_visible = 'visible'; 

function submitenter(myfield,e)
{
	var keycode;
	
	if (window.event)
	{
		keycode = window.event.keyCode;
	}
	else if (e)
	{
		keycode = e.which;
	}
	else 
		return true;

	if (keycode == 13)
	{
		myfield.form.submit();
		return false;
	}
	else
		return true;
}

function DHTML_init()
{
 if (window.opera) {
     OP = 1;
 }
 if(document.getElementById) {
   DHTML = 1;
   DOM = 1;
 }
 if(document.all && !OP) {
   DHTML = 1;
   MS = 1;
 }
if(window.netscape && window.screen && !DOM && !OP) {
   DHTML = 1;
   NS = 1;
   global_hidden = 'hide';
   global_visible = 'show'; 
   //window.netscape &&  .. weg falls mozilla damit probs hat
 }
}

function getElem(p1,p2,p3) {
 var Elem;
 if(DOM) {
   if(p1.toLowerCase()=="id") {
     if (typeof document.getElementById(p2) == "object")
     Elem = document.getElementById(p2);
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="name") {
     if (typeof document.getElementsByName(p2) == "object")
     Elem = document.getElementsByName(p2)[p3];
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="tagname") {
     if (typeof document.getElementsByTagName(p2) == "object" || (OP && typeof document.getElementsByTagName(p2) == "function"))
     Elem = document.getElementsByTagName(p2)[p3];
     else Elem = void(0);
     return(Elem);
   }
   else return void(0);
 }
 else if(MS) {
   if(p1.toLowerCase()=="id") {
     if (typeof document.all[p2] == "object")
     Elem = document.all[p2];
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="tagname") {
     if (typeof document.all.tags(p2) == "object")
     Elem = document.all.tags(p2)[p3];
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="name") {
     if (typeof document[p2] == "object")
     Elem = document[p2];
     else Elem = void(0);
     return(Elem);
   }
   else return void(0);
 }
 else if(NS) {
   if(p1.toLowerCase()=="id" || p1.toLowerCase()=="name") {
   if (typeof document[p2] == "object")
     Elem = document[p2];
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="index") {
    if (typeof document.layers[p2] == "object")
     Elem = document.layers[p2];
    else Elem = void(0);
     return(Elem);
   }
   else return void(0);
 }
}

function getCont(p1,p2,p3) {
   var Cont;
   if(DOM && getElem(p1,p2,p3) && getElem(p1,p2,p3).firstChild) {
     if(getElem(p1,p2,p3).firstChild.nodeType == 3)
       Cont = getElem(p1,p2,p3).firstChild.nodeValue;
     else
       Cont = "";
     return(Cont);
   }
   else if(MS && getElem(p1,p2,p3)) {
     Cont = getElem(p1,p2,p3).innerText;
     return(Cont);
   }
   else return void(0);
}

function getAttr(p1,p2,p3,p4) {
   var Attr;
   if((DOM || MS) && getElem(p1,p2,p3)) {
     Attr = getElem(p1,p2,p3).getAttribute(p4);
     return(Attr);
   }
   else if (NS && getElem(p1,p2)) {
       if (typeof getElem(p1,p2)[p3] == "object")
        Attr=getElem(p1,p2)[p3][p4]
       else
        Attr=getElem(p1,p2)[p4]
         return Attr;
       }
   else return void(0);
}

function setCont(p1,p2,p3,p4) {
	getElem(p1,p2,p3).innerHTML = p4;
   /*if(DOM && getElem(p1,p2,p3) && getElem(p1,p2,p3).firstChild)
     getElem(p1,p2,p3).firstChild.nodeValue = p4;
   else if(MS && getElem(p1,p2,p3))
     getElem(p1,p2,p3).innerHTML = p4;  //getElem(p1,p2,p3).innerText = p4;
   else if(NS && getElem(p1,p2,p3)) {
     getElem(p1,p2,p3).document.open();
     getElem(p1,p2,p3).document.write(p4);
     getElem(p1,p2,p3).document.close();
   }*/
}

DHTML_init();


function LogoText(Ges1,Ges2)
{
	if(DHTML)
	{
		if(NS)
		{
			setCont("id","LG1",null,"<span class=\"start_logotext\">" + Ges1 + "<\/span>");
			setCont("id","LG2",null,"<span class=\"start_logotext\">" + Ges2 + "<\/span>");
		}
		else
		{
			setCont("id","LG1",null,Ges1);
			setCont("id","LG2",null,Ges2);
		}
	}
	else return;
}

function SecureEmail(FID,E1,E2,SC,flag)
{
	if(SC)
		SC = " class=\""+SC+"\"";
	if(DHTML)
	{
		if(flag)
			setCont("id",FID,null,"<a"+SC+" href=\"mailto: "+E1+"@"+E2+"\">"+E1+"@"+E2+"</a>"); 
		else
			setCont("id",FID,null,"<span"+SC+">"+E1+"@"+E2+"</span>");
	}
	else return;
}


var TCP = new TColorPicker();

function TCPopup(field, palette) {
	this.field = field;
	this.initPalette = !palette || palette > 3 ? 0 : palette;
	var w = 194, h = 240,
	move = screen ? 
		',left=' + ((screen.width - w) >> 1) + ',top=' + ((screen.height - h) >> 1) : '', 
	o_colWindow = window.open('picker.php', null, "help=no,status=no,scrollbars=no,resizable=no" + move + ",width=" + w + ",height=" + h + ",dependent=yes", true);
	o_colWindow.opener = window;
	o_colWindow.focus();
}

function TCBuildCell (R, G, B, w, h) {
	return '<td bgcolor="#' + this.dec2hex((R << 16) + (G << 8) + B) + '"><a href="javascript:P.S(\'' + this.dec2hex((R << 16) + (G << 8) + B) + '\')" onmouseover="P.P(\'' + this.dec2hex((R << 16) + (G << 8) + B) + '\')"><img src="pixel.gif" width="' + w + '" height="' + h + '" border="0"></a></td>';
}

function TCSelect(c) {
	this.field.value = '#' + c.toUpperCase();
	this.win.close();
}

function TCPaint(c, b_noPref) {
	c = (b_noPref ? '' : '#') + c.toUpperCase();
	if (this.o_samp) 
		this.o_samp.innerHTML = '<font face=Tahoma size=2>' + c +' <font color=white>' + c + '</font></font>'
	if(this.doc.layers)
		this.sample.bgColor = c;
	else { 
		if (this.sample.backgroundColor != null) this.sample.backgroundColor = c;
		else if (this.sample.background != null) this.sample.background = c;
	}
}

function TCGenerateSafe() {
	var s = '';
	for (j = 0; j < 12; j ++) {
		s += "<tr>";
		for (k = 0; k < 3; k ++)
			for (i = 0; i <= 5; i ++)
				s += this.bldCell(k * 51 + (j % 2) * 51 * 3, Math.floor(j / 2) * 51, i * 51, 8, 10);
		s += "</tr>";
	}
	return s;
}

function TCGenerateWind() {
	var s = '';
	for (j = 0; j < 12; j ++) {
		s += "<tr>";
		for (k = 0; k < 3; k ++)
			for (i = 0; i <= 5; i++)
				s += this.bldCell(i * 51, k * 51 + (j % 2) * 51 * 3, Math.floor(j / 2) * 51, 8, 10);
		s += "</tr>";
	}
	return s	
}
function TCGenerateMac() {
	var s = '';
	var c = 0,n = 1;
	var r,g,b;
	for (j = 0; j < 15; j ++) {
		s += "<tr>";
		for (k = 0; k < 3; k ++)
			for (i = 0; i <= 5; i++){
				if(j<12){
				s += this.bldCell( 255-(Math.floor(j / 2) * 51), 255-(k * 51 + (j % 2) * 51 * 3),255-(i * 51), 8, 10);
				}else{
					if(n<=14){
						r = 255-(n * 17);
						g=b=0;
					}else if(n>14 && n<=28){
						g = 255-((n-14) * 17);
						r=b=0;
					}else if(n>28 && n<=42){
						b = 255-((n-28) * 17);
						r=g=0;
					}else{
						r=g=b=255-((n-42) * 17);
					}
					s += this.bldCell( r, g,b, 8, 10);
					n++;
				}
			}
		s += "</tr>";
	}
	return s;
}

function TCGenerateGray() {
	var s = '';
	for (j = 0; j <= 15; j ++) {
		s += "<tr>";
		for (k = 0; k <= 15; k ++) {
			g = Math.floor((k + j * 16) % 256);
			s += this.bldCell(g, g, g, 9, 7);
		}
		s += '</tr>';
	}
	return s
}

function TCDec2Hex(v) {
	v = v.toString(16);
	for(; v.length < 6; v = '0' + v);
	return v;
}

function TCChgMode(v) {
	for (var k in this.divs) this.hide(k);
	this.show(v);
}

function TColorPicker(field) {
	this.build0 = TCGenerateSafe;
	this.build1 = TCGenerateWind;
	this.build2 = TCGenerateGray;
	this.build3 = TCGenerateMac;
	this.show = document.layers ? 
		function (div) { this.divs[div].visibility = 'show' } :
		function (div) { this.divs[div].visibility = 'visible' };
	this.hide = document.layers ? 
		function (div) { this.divs[div].visibility = 'hide' } :
		function (div) { this.divs[div].visibility = 'hidden' };
	// event handlers
	this.C       = TCChgMode;
	this.S       = TCSelect;
	this.P       = TCPaint;
	this.popup   = TCPopup;
	this.draw    = TCDraw;
	this.dec2hex = TCDec2Hex;
	this.bldCell = TCBuildCell;
	this.divs = [];
}

function TCDraw(o_win, o_doc) {
	this.win = o_win;
	this.doc = o_doc;
	var 
	s_tag_openT  = o_doc.layers ? 
		'layer visibility=hidden top=54 left=5 width=182' : 
		'div style=visibility:hidden;position:absolute;left:6px;top:54px;width:182px;height:0',
	s_tag_openS  = o_doc.layers ? 'layer top=32 left=6' : 'div',
	s_tag_close  = o_doc.layers ? 'layer' : 'div'
		
	this.doc.write('<' + s_tag_openS + ' id=sam name=sam><table cellpadding=0 cellspacing=0 border=1 width=181 align=center class=bd><tr><td align=center height=18><div id="samp"><font face=Tahoma size=2> <font color=white> </font></font></div></td></tr></table></' + s_tag_close + '>');
	this.sample = o_doc.layers ? o_doc.layers['sam'] : 
		o_doc.getElementById ? o_doc.getElementById('sam').style : o_doc.all['sam'].style

	for (var k = 0; k < 4; k ++) {
		this.doc.write('<' + s_tag_openT + ' id="p' + k + '" name="p' + k + '"><table cellpadding=0 cellspacing=0 border=1 align=center>' + this['build' + k]() + '</table></' + s_tag_close + '>');
		this.divs[k] = o_doc.layers 
			? o_doc.layers['p' + k] : o_doc.all 
				? o_doc.all['p' + k].style : o_doc.getElementById('p' + k).style
	}
	if (!o_doc.layers && o_doc.body.innerHTML) 
		this.o_samp = o_doc.all 
			? o_doc.all.samp : o_doc.getElementById('samp');
	this.C(this.initPalette);
	if (this.field.value) this.P(this.field.value, true)
}

function hideElement(elmID,overDiv)
{
	if(ie)
	{
		for(i=0; i<document.all.tags(elmID).length; i++)
		{
			obj=document.all.tags(elmID)[i];
			if(!obj || !obj.offsetParent)
			{
				continue;
			}
			objLeft=obj.offsetLeft;
			objTop=obj.offsetTop;
			objParent=obj.offsetParent;

			while( objParent.tagName.toUpperCase() != "BODY" )
			{
				objLeft+=objParent.offsetLeft;
				objTop+=objParent.offsetTop;
				objParent=objParent.offsetParent;
			}

			objHeight=obj.offsetHeight;
			objWidth=obj.offsetWidth;

			if((overDiv.offsetLeft+overDiv.offsetWidth)<=objLeft);
			else if((overDiv.offsetTop+overDiv.offsetHeight)<=objTop);
			else if(overDiv.offsetTop>=(objTop+objHeight));
			else if(overDiv.offsetLeft>=(objLeft+objWidth));
			else
			{
				obj.style.visibility="hidden";
			}
		}
	}
}

function showElement( elmID )
{
	if(ie)
	{
		for(i=0; i<document.all.tags(elmID).length; i++)
        {
			obj=document.all.tags(elmID)[i];
			if(!obj || !obj.offsetParent)
			{
				continue;
			}
			obj.style.visibility="";
		}
	}
}

function HolidayRec(d, m, y, desc)
{
	this.d=d
	this.m=m
	this.y=y
	this.desc=desc
}


function addHoliday(d, m, y, desc)
{
	Holidays[HolidaysCounter++]=new HolidayRec(d, m, y, desc)
}



function swapImage(srcImg, destImg)
{
	if(ie)
	{
		document.getElementById(srcImg).setAttribute("src",imgDir + 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;
		if (showToday==1)
		{
			document.getElementById("lblToday").innerHTML=todayString+" <a onmousemove='window.status=\""+gotoString+"\"' onmouseout='window.status=\"\"' title='"+gotoString+"' 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:#"+butbordercolor+";cursor:pointer' onmouseover='swapImage(\"changeLeft\",\"left2.gif\");this.style.borderColor=\"#"+butborderhlcolor+"\";window.status=\""+scrollLeftMessage+"\"' onclick='javascript:decMonth()' onmouseout='clearInterval(intervalID1);swapImage(\"changeLeft\",\"left1.gif\");this.style.borderColor=\"#"+butbordercolor+"\";window.status=\"\"' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartDecMonth()\",500)' onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG id='changeLeft' SRC='"+imgDir+"left1.gif' ORDER=0>&nbsp</span>&nbsp;"
		sHTML1+="<span id='spanRight'style='border-style:solid;border-width:1;border-color:#"+butbordercolor+";cursor:pointer' onmouseover='swapImage(\"changeRight\",\"right2.gif\");this.style.borderColor=\"#"+butborderhlcolor+"\";window.status=\""+scrollRightMessage+"\"' onmouseout='clearInterval(intervalID1);swapImage(\"changeRight\",\"right1.gif\");this.style.borderColor=\"#"+butbordercolor+"\";window.status=\"\"' onclick='incMonth()' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartIncMonth()\",500)' onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG id='changeRight' SRC='"+imgDir+"right1.gif' BORDER=0>&nbsp</span>&nbsp"
		sHTML1+="<span id='spanMonth'style='border-style:solid;color:#"+buttextcolor+";border-width:1;border-color:#"+butbordercolor+";cursor:pointer' onmouseover='swapImage(\"changeMonth\",\"drop2.gif\");this.style.borderColor=\"#"+butborderhlcolor+"\";window.status=\""+selectMonthMessage+"\"' onmouseout='swapImage(\"changeMonth\",\"drop1.gif\");this.style.borderColor=\"#"+butbordercolor+"\";window.status=\"\"' onclick='popUpMonth()'></span>&nbsp;"
		sHTML1+="<span id='spanYear'style='border-style:solid;color:#"+buttextcolor+";border-width:1;border-color:#"+butbordercolor+";cursor:pointer' onmouseover='swapImage(\"changeYear\",\"drop2.gif\");this.style.borderColor=\"#"+butborderhlcolor+"\";window.status=\""+selectYearMessage+"\"' onmouseout='swapImage(\"changeYear\",\"drop1.gif\");this.style.borderColor=\"#"+butbordercolor+"\";window.status=\"\"' 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"}
	showElement( 'SELECT' );
	showElement( 'APPLET' );
}

function padZero(num)
{
	return (num<10)? '0' + num : num ;
}

function constructDate(d,m,y)
{
	sTmp=dateFormat
	sTmp=sTmp.replace("dd","<e>")
	sTmp=sTmp.replace("d","<d>")
	sTmp=sTmp.replace("<e>",padZero(d))
	sTmp=sTmp.replace("<d>",d)
	sTmp=sTmp.replace("mmm","<o>")
	sTmp=sTmp.replace("mm","<n>")
	sTmp=sTmp.replace("m","<m>")
	sTmp=sTmp.replace("<m>",m+1)
	sTmp=sTmp.replace("<n>",padZero(m+1))
	sTmp=sTmp.replace("<o>",monthName[m])
	return sTmp.replace("yyyy",y)
}

function closeCalendar()
{
	var sTmp;
	hideCalendar();
	ctlToPlaceValue.value = constructDate(dateSelected,monthSelected,yearSelected)+" "+timeData;
}

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=\"#"+dropdown_hlcolor+"\"' 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; color:#"+dropdown_textcolor+"; font-size:11px; border-width:1; border-style:solid; border-color:#"+dropdown_boxbordercolor+";' bgcolor='#"+dropdown_boxcolor+"' 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
	hideElement('SELECT', document.getElementById("selectMonth"));
	hideElement('APPLET', document.getElementById("selectMonth"));
}

function popDownMonth()
{
	crossMonthObj.visibility="hidden"
}

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++;
	bShow=true
}

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--;
	bShow=true
}

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=\"#"+dropdown_hlcolor+"\"' 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=\"#"+dropdown_hlcolor+"\"' 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=\"#"+dropdown_hlcolor+"\"' 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; color:#"+dropdown_textcolor+"; font-size:11px; border-width:1; border-style:solid; border-color:#"+dropdown_boxbordercolor+";' bgcolor='#"+dropdown_boxcolor+"' 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
}


function WeekNbr(n)
{
	// a = (14-month) / 12
	// y = year + 4800 - a
	// m = month + 12a - 3
	// J = day + (153m + 2) / 5 + 365y + y / 4 - y / 100 + y / 400 - 32045
	// d4 = (J + 31741 - (J mod 7)) mod 146097 mod 36524 mod 1461
	// L = d4 / 1460
	// d1 = ((d4 - L) mod 365) + L
	// WeekNumber = d1 / 7 + 1

	year=n.getFullYear();
	month=n.getMonth()+1;
	if (startAt==0)
	{
		day=n.getDate()+1;
	}
	else
	{
		day=n.getDate();
	}

	a=Math.floor((14-month) / 12);
	y=year + 4800 - a;
	m=month + 12 * a - 3;
	b=Math.floor(y/4) - Math.floor(y/100) + Math.floor(y/400);
	J=day + Math.floor((153 * m + 2) / 5) + 365 * y + b - 32045;
	d4=(((J + 31741 - (J % 7)) % 146097) % 36524) % 1461;
	L=Math.floor(d4 / 1460);
	d1=((d4 - L) % 365) + L;
	week=Math.floor(d1/7) + 1;

	return week;
}

function constructCalendar()
{
	var aNumDays=Array(31,0,31,30,31,30,31,31,30,31,30,31)
	var dateMessage
	var startDate=new Date(yearSelected,monthSelected,1)
	var endDate

	if(monthSelected==1)
	{
		endDate=new Date(yearSelected,monthSelected+1,1);
		endDate=new Date(endDate-(24*60*60*1000));
		numDaysInMonth=endDate.getDate()
	}
	else
	{
		numDaysInMonth=aNumDays[monthSelected];
	}
	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>"+weekString+"</b></td><td width=1 rowspan=7 bgcolor='#d0d0d0' style='padding:0px'><img src='"+imgDir+"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;")
		dateMessage="onmousemove='window.status=\""+selectDateMessage.replace("[date]",constructDate(datePointer,monthSelected,yearSelected))+"\"' onmouseout='window.status=\"\"' "

		if ((datePointer==dateNow)&&(monthSelected==monthNow)&&(yearSelected==yearNow))
		{
			sHTML+="<b><a "+dateMessage+" 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 "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer+";closeCalendar();'>&nbsp;<font color=#909090>"+datePointer+"</font>&nbsp;</a>"
		}
		else
		{
			sHTML+="<a "+dateMessage+" 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='"+imgDir+"drop1.gif' BORDER=0>"
	document.getElementById("spanYear").innerHTML="&nbsp;"+yearSelected+"&nbsp;<IMG id='changeYear' SRC='"+imgDir+"drop1.gif' 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)
					{
						formatChar=""
					}
				}
			}
			tokensChanged=0
			if(formatChar!="")
			{
				groundData= new Array();
				groundData=ctl2.value.split(" ")
				aData=groundData[0].split(formatChar);
				if(groundData.length>1)
				{
					timeData=groundData[1];
				}
				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-130 : fixedX
			crossobj.top=fixedY==-1 ? ctl.offsetTop+toppos+ctl.offsetHeight+2 : fixedY
			constructCalendar (1, monthSelected, yearSelected);
			crossobj.visibility=(dom||ie)? "visible" : "show"
			hideElement('SELECT', document.getElementById("calendar"));
			hideElement('APPLET', document.getElementById("calendar"));
			bShow=true;
		}
		else
		{
			hideCalendar();
			if(ctlNow!=ctl) {popUpCalendar(ctl, ctl2, format)}
		}
		ctlNow=ctl
	}
}