function changeMonth(ndate,userModCellFunc)
{
	ndate=ndate.split(",");
	//delet oldtbody
	cT=document.getElementById("calendarTable");
	cT.removeChild(cT.getElementsByTagName("tbody")[0]);
	//delete forward & Backward
	cNavi=$("cNav");
	cNavi=cNavi.getElementsByTagName("td");
	cNavi[0].removeChild(cNavi[0].firstChild);
	cNavi[2].removeChild(cNavi[2].firstChild);
	cNavi[1].removeChild(cNavi[1].firstChild);
	//new tbody
	tb=cEm("tbody");
	tb.id="cTbody";
	aC($("calendarTable"),tb);
	//create Calendar
	createCalendar(userModCellFunc,ndate[1],ndate[0]);
}

//alert("hallo");
//Name of the user function , ... 
function createCalendar(userModCellFunc,year,month)
{

	d = new Date();
	if(month==null) month=d.getMonth();
	if(year==null) year=d.getFullYear();
	aktMonth=month;
	cNavi=$("cNav");
	ntd=cNavi.getElementsByTagName("td");
	img1=new Image();
	img2=new Image();
	img1.src="assets/templates/cForwrd.gif";
	img2.src="assets/templates/cBack.gif";
	img1.onclick=function(e) { changeMonth(fwdMonth(month,year),userModCellFunc) }
	img2.onclick=function(e) { changeMonth(bwdMonth(month,year),userModCellFunc) }
	img1.className="cfwdImg";
	img2.className="cbwdImg";

	m1=fwdMonth(month,year);
	m2=bwdMonth(month,year);
	m1=m1.split(",");
	m2=m2.split(",");
	img1.title=img1.alt=returnMonthName(m1[0])+" "+m1[1];
	img2.title=img2.alt=returnMonthName(m2[0])+" "+m2[1];

	aC(ntd[2],img1);
	aC(ntd[1],cTn(returnMonthName(month)+" "+year));
	aC(ntd[0],img2);

	nd=new Date();
	first=true;
	tds=cEs("td",7);
	for(a=1;a<=returnMonthLength(month,year);a++)
	{
		nd.setDate(a)
		nd.setMonth(month)
		nd.setFullYear(year)
		aktDay=nd.getDay()-1;
		aktDay=(aktDay<0)?6:aktDay; //eng: sunday=0 monday=1 -> bullshits
		if(userModCellFunc) window[userModCellFunc](nd,tds[aktDay]);
		aC(tds[aktDay],cTn(a));
		if(aktDay==6 || a==returnMonthLength(month,year))
		{
			//tds[0].className="first";
			//tds[6].className="sonntag";
			tr=cEm("tr");
			aCs(tr,tds,1);
			tbody=$("cTbody");
			aC(tbody,tr);
			tds=cEs("td",7);
		}
	}
}

function checkDateActionForManager(d,cell)
{
	checkDateAction(d,cell,1);
}

function tkM(e)
{
	thisField=$(e.name);
	document.getElementById("tkMcal").style.visibility = "visible";
	m=getPositions(e);
	document.getElementById("tkMcal").style.left=m.x+50+"px";
	document.getElementById("tkMcal").style.top=m.y+20+"px";
	outSelect("hidden");

	document.getElementById("cInf").innerHTML="<span onclick='outManagerTkCal();outSelect(\"visible\");' class='exitTk'>Abbrechen</span>";
}

function outManagerTkCal()
{
	document.getElementById("tkMcal").style.visibility = "hidden";
}


function outSelect(visibility)
{
	sels=document.getElementsByTagName("select");
	for(i=0;i<sels.length;i++) sels[i].style.visibility=visibility;
}

var thisField;

//returns the position off an elements PARENT!!!! 
function getPositions(el) 
{
	var SL = 0, ST = 0;
	var is_div = /^div$/i.test(el.tagName);
	if (is_div && el.scrollLeft) SL = el.scrollLeft;
	if (is_div && el.scrollTop)  ST = el.scrollTop;

	var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };

	if (el.offsetParent) {
		var tmp = getPositions(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}
	return r;
}

function checkDateAction(d,cell,parm)
{
	ismanager=(parm)?true:false;
	var day=d.getDate();
	var month=d.getMonth();
	var year=d.getFullYear();
	var Desc=new Array();
	for(t=0;t<TKTERMINE.length;t++)
	{
		tDesc=TKTERMINE[t];
		if(tDesc.indexOf(number_format(day)+"-"+number_format(month+1)+"-"+year)==-1) continue; 
		cell.style.cursor="pointer";

		Descr=tDesc.split("|");
		Desc[Desc.length]=Descr[1];
	}
	if(Desc.length==0 && !ismanager) return;
	cell.className="tkEntries "+number_format(day)+number_format(month+1)+year;
	if(Desc.length!=0)  cell.style.backgroundColor="#bfe1d4";
	if(ismanager==true)
	{
		cell.style.cursor="pointer";
		cell.onclick=function(e) 
		{
			dateIns=this.className;
			dateIns=dateIns.substr(10,dateIns.length);
			dateIns=dateIns.substr(0,2)+"."+dateIns.substr(2,2)+"."+dateIns.substr(6,2);
			document.getElementById("tkMcal").style.visibility = "hidden";
			thisField.value=dateIns;
			outSelect("");
		}
		return;
	}
	ul=cEm("ul");
	ul.id="tkEntries"+number_format(day)+number_format(month+1)+year;
	for(m=0;m<Desc.length;m++)
	{
		li=cEm("li");
		aC(li,cTn(unescape(Desc[m])));
		aC(ul,li);
	}
	aC($("cInf2"),ul);

	cell.onmouseover=function() 
	{
		try
		{
			num=this.className.replace(" ","");
			document.getElementById(num).style.display = "block";
			aktDiv = num;
		}
		catch(e) { aktDiv = false;}
	}
	cell.onmouseout=function() 
	{
		try
		{
			num=this.className.replace(" ","");
			document.getElementById(num).style.display = "none";
			aktDiv = num;
		}
		catch(e) { aktDiv = false;}
	}
	cell.onclick=function(e) 
	{
		document.location.href="http://www.golfclub-markkleeberg.de/index.php?id=9&date="+year+"-"+number_format(month+1)+"-"+number_format(day)+"&month="+number_format(month+1)+"&year="+(year+"").substring(2); //""
	}			
}

function number_format(nr)
{
	if(nr<10) nr="0"+nr;
	return nr;
}

function fwdMonth(m,y)
{
	if(m==11) {m=-1;y++;}
	m++;
	return m+","+y;
}

function bwdMonth(m,y)
{
	if(m==0)  {m=12;y--;}
	m--;
	return m+","+y;
}

//getElementNyId
//function $(Eid)							  {		return document.getElementById(Eid);    } 
//createTextNode
function cTn(tn) 							{ 	return document.createTextNode(tn); 		}
//createElement
function cEm(el) 							{		return document.createElement(el);			}
//cloneNode
function cN(el)  							{		return document.cloneNode(el);					}
//appendChild
function aC(pa,el)  					{		return pa.appendChild(el);							}

//create 8 td elements
function cEs(el,count) 
{		
	els=new Array();
	for(i=0;i<count;i++) els[i]=cEm(el);
	return els;		
}

//append Elemenents to one child
function aCs(pa,els,offset) 
{		
	for(i=0;i<els.length;i++) aC(pa,els[i]);
}

function returnDayName(day)
{
	if(day==1) return "Montag";
	if(day==2) return "Dienstag";
	if(day==3) return "Mittwoch";
	if(day==4) return "Donnerstag";
	if(day==5) return "Freitag";
	if(day==6) return "Samstag";
	if(day==0) return "Sonntag";
}

function returnMonthName(mnr)
{
	if(mnr==0) return "Januar";
	if(mnr==1) return "Februar";
	if(mnr==2) return unescape("M%E4rz");
	if(mnr==3) return "April";
	if(mnr==4) return "Mai";
	if(mnr==5) return "Juni";
	if(mnr==6) return "Juli";
	if(mnr==7) return "August";
	if(mnr==8) return "September";
	if(mnr==9) return "Oktober";
	if(mnr==10) return "November";
	if(mnr==11) return "Dezember";
}

function returnMonthLength(mnr,year)
{
	if(mnr==0) return 31;
	if(mnr==1) 
	{
		r=28;
		if (year % 4 == 0) r++;
		if (year % 100 == 0) r--;
		if (year % 400 == 0) r++;
		return r;
	}
	if(mnr==2) return 31;
	if(mnr==3) return 30;
	if(mnr==4) return 31;
	if(mnr==5) return 30;
	if(mnr==6) return 31;
	if(mnr==7) return 31;
	if(mnr==8) return 30;
	if(mnr==9) return 31;
	if(mnr==10) return 30;
	if(mnr==11) return 31;
}
