SYM.client.ui.calendar = 
{
	
	Today : new Date(  ),
	WeekDays : new Array(SYM.client.lang.getText('3-DDAG-6PEHWS'),SYM.client.lang.getText('3-DDAG-6PEHXR'),SYM.client.lang.getText('3-DDAG-6PEHXS'),SYM.client.lang.getText('3-DDAG-6PEHXT'),SYM.client.lang.getText('3-DDAG-6PEHXU'), SYM.client.lang.getText('3-DDAG-6PEHXV') ,SYM.client.lang.getText('3-DDAG-6PEHXW')),
	MonthDays : new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),
	MonthNames : new Array(SYM.client.lang.getText('3-DDAG-6PEHXX'),SYM.client.lang.getText('3-DDAG-6PEHXZ'),SYM.client.lang.getText('3-DDAG-6PEHY2'),SYM.client.lang.getText('3-DDAG-6PEHY3'),SYM.client.lang.getText('3-DDAG-6PEHY4'),SYM.client.lang.getText('3-DDAG-6PEHY5'),SYM.client.lang.getText('3-DDAG-6PEHY6'),SYM.client.lang.getText('3-DDAG-6PEHY7'),SYM.client.lang.getText('3-DDAG-6PEHY8'),SYM.client.lang.getText('3-DDAG-6PEHY9'),SYM.client.lang.getText('3-DDAG-6PEHYA'),SYM.client.lang.getText('3-DDAG-6PEHYB')),
	myday : -1,
	mymonth : -1,
	myyear: -1,
	field:null
}
	
function returnDate(day)
{
	var szdate = SYM.client.ui.calendar.Today.getFullYear()  + "." ;
	// Make padding to month
	if ( (SYM.client.ui.calendar.Today.getMonth(  )+1) < 10 )
	{
		szdate += "0" + (SYM.client.ui.calendar.Today.getMonth()+1);
	}else
	{
		szdate +=(SYM.client.ui.calendar.Today.getMonth()+1);
	}
	
	if ( day < 10 )
	{
		szdate += ".0" + day;
	}else
	{
		szdate += "." +  day;
	}
	SYM.client.ui.calendar.field.value = szdate;
	hideDatePicker();
}
function hideDatePicker()
{
	if ( SYM.util.dom.getObject(objectName + '_cal').innerHTML != "" )
	{
		SYM.util.dom.getObject(objectName + '_cal').innerHTML = "";
		SYM.util.dom.removeEvent(document, "mousedown", checkClick, false);
		objectName  = "";
	}
	
}
var objectName = "";
SYM.client.ui.calendar.setDate  =  function(f , szdate  , name)
{	
	if ( name != null && objectName != "" && name != objectName  )
	{ 
		hideDatePicker();	
	} // if old value remove this.
	if (name!= null){objectName = name;}	
	if ( SYM.util.dom.getObject( objectName + '_cal').innerHTML != "" )
	{
		hideDatePicker();	
		return true;		
	}else
	{
		SYM.client.ui.calendar.field = f;
		SYM.client.ui.calendar.Today = new Date( );
		if ( szdate != null && szdate != "" )
		{
			var daten = szdate.split(".");
			SYM.client.ui.calendar.Today.setFullYear( daten[0],daten[1]-1,daten[2] );
			printCalender(SYM.client.ui.calendar.Today ,daten[0], daten[1]-1 , daten[2]);
		}else
		{
			printCalender();
		}
		SYM.util.dom.addEvent(document , "mousedown", checkClick);
	}	
}
function checkClick( event )
{
	var obj = null;
	if (document.all)
	{
		obj = window.event.srcElement;
	}else
	{
		obj = event.target;
	}
	
	var insidecal = 0;
	if (obj != null)
	{
		
		while (obj != null)
		{	
			if (obj.nodeName == "DIV")
			{	
				if(obj.id  == "datepicker" )
				{
					insidecal = 1;
					break;
				}else if(obj.id  == "quickselect" )
				{
					insidecal = 2;
					break;
				}
			}
			obj = obj.parentNode;
		}		
	}
	if ( !insidecal )
	{
		hideDatePicker();		
	}else
	{
		if (  SYM.util.dom.getObject('quickselect').innerHTML != "" && insidecal  != 2 )
		{
			SYM.util.dom.getObject('quickselect').innerHTML = "";
			if (document.all)
			{
				return true;
			}else
			{
				event.preventDefault();				
			}
		}
	}
	return false;
}
function showMonth( event )
{
	var thisyear = SYM.client.ui.calendar.Today.getFullYear()
	var nowyear = new Date().getFullYear();
	szhtml = "";
	szhtml += "<table border=0 cellpadding=2 cellspacing=1 class='calendermastertable' style='padding-left:3px;margin-top:2px;width:100px;'>"
	for ( i = 0 ; i < 12 ; i++)
	{
		if ( SYM.client.ui.calendar.Today.getMonth() == i )
		{
			szhtml +="<tr><td class='calenderheader' style='font-weight:bold;cursor:pointer' onclick='setMonth("+(i)+")' >" + SYM.client.ui.calendar.MonthNames[i] + "</td></tr>"
		}else
		{
			szhtml +="<tr><td class='calenderheader' style='cursor:pointer' onclick='setMonth("+(i)+")' >" + SYM.client.ui.calendar.MonthNames[i] + "</td></tr>"
		}
	}
	szhtml +="</table>"
	var obj = SYM.util.dom.getObject('quickselect');
	var pos = SYM.util.dom.findPos(datepicker);
	obj.style.top = 17;
	obj.style.left = 30;
	SYM.util.dom.getObject('quickselect').innerHTML = szhtml
}
function showYears( event )
{
	var thisyear = SYM.client.ui.calendar.Today.getFullYear()
	var nowyear = new Date().getFullYear();
	szhtml = "";
	szhtml += "<table border=0 cellpadding=2 cellspacing=1 class='calendermastertable' style='padding-left:3px;margin-top:2px;width:60px;'>"
	if (  (nowyear -1) != thisyear )
	{
		szhtml +="<tr><td class='calenderheader' style='cursor:pointer' onclick='changeYear("+(nowyear -1)+")' >" + (nowyear -1) + "</td></tr>"
	}else
	 {
		szhtml +="<tr><td class='calenderheader' style='font-weight:bold'>" + (nowyear -1) + "</td></tr>"	
	}	
	if (  (nowyear) != thisyear )
	{
		szhtml +="<tr><td class='calenderheader' style='cursor:pointer' onclick='changeYear("+(nowyear)+")' >" + (nowyear) + "</td></tr>"
	}else
	 {
		szhtml +="<tr><td class='calenderheader' style='font-weight:bold'>" + (nowyear) + "</td></tr>"	
	}
	if (  (nowyear+1) != thisyear )
	{
		szhtml +="<tr><td class='calenderheader' style='cursor:pointer' onclick='changeYear("+(nowyear + 1)+")' >" + (nowyear + 1) + "</td></tr>"
	}else
	 {
		szhtml +="<tr><td class='calenderheader' style='font-weight:bold'>" + (nowyear+1) + "</td></tr>"	
	}
	szhtml +="</table>"
	var obj = SYM.util.dom.getObject('quickselect');
	var pos = SYM.util.dom.findPos(datepicker);
	obj.style.top = 17;
	obj.style.left = 94;
	obj.innerHTML = szhtml
}
Date.prototype.getWeek = function() {
	var onejan = new Date(this.getFullYear(),0,1);
	return Math.ceil((((this - onejan) / 86400000) + onejan.getDay())/7);
} 
function printCalender( obj , y , m , d)
{
	var mytoday = new Date().getDate();
	var mymonthtoday = new Date().getMonth();
	var myyeartoday = new Date().getFullYear() ;
	if ( obj == null )
	{ 
		SYM.client.ui.calendar.Today = new Date(  );
		SYM.client.ui.calendar.myday = new Date().getDate();
		SYM.client.ui.calendar.mymonth = new Date().getMonth();
		SYM.client.ui.calendar.myyear = new Date().getFullYear() ;		
	}else
	{
		SYM.client.ui.calendar.Today = obj;
	}
	
	if ( m!= null)
	{
		SYM.client.ui.calendar.myyear = y;
		SYM.client.ui.calendar.mymonth = m;
		SYM.client.ui.calendar.myday = d;
	}
	
	SYM.client.ui.calendar.Today.setDate(1);
	var year =  SYM.client.ui.calendar.Today.getFullYear();
	var month =  SYM.client.ui.calendar.Today.getMonth();
	var day = SYM.client.ui.calendar.Today.getDay() -1;
	if (day == -1){day=6;}
	if (month  == 1)
	{
		// check for leepyear
		var e = new Date();
		e.setDate(29);
		e.setMonth(1);
		e.setYear(year);
		if ( month == e.getMonth() )
		{
			SYM.client.ui.calendar.MonthDays[1] = 29; 
		}else
		{
			SYM.client.ui.calendar.MonthDays[1] = 28;
		}
	}
	var szcode = "";
	
	szcode += "<div id='datepicker'><div id='quickselect' style='position:absolute;z-index:10;'></div><table class=\"calendermastertable\" border=0 width=190 cellpadding=0 cellspacing=0><tr><td>";
	szcode += "<table border=0 width=190 height=\"20\" cellpadding=0 cellspacing=0><tr>";
	szcode +="<td onclick=\"changeMonth(-12)\" class=\"calenderheader\"  width=\"20\"><img border=0 src=" + SYM.client.path + "/calgogoleft.gif align=\"right\"></td><td class=\"calenderheader\" width=\"20\" onclick=\"changeMonth(-1)\" align=\"right\"><img border=0 src=" + SYM.client.path + "/calgoleft.gif></td><td class=\"calenderheader\" width=\"110\" align=\"center\"><span onclick='showMonth(event)'>"+ SYM.client.ui.calendar.MonthNames[ month ] + "</span>&nbsp;<span onclick='showYears(event)'>" + SYM.client.ui.calendar.Today.getFullYear() +"</span></td><td onclick=\"changeMonth(1)\" class=\"calenderheader\"  width=\"20\"><img border=0 src=" + SYM.client.path + "/calgoright.gif></td><td onclick=\"changeMonth(12)\" class=\"calenderheader\"  width=\"20\"><img border=0 src=" + SYM.client.path + "/calgogoright.gif></td>"
	szcode +="</tr></table>"
	szcode += "<table class=\"calenderheaderdays\" border=0 width=190 cellpadding=0 cellspacing=0><tr>";
	szcode += "<td class=\"calenderheader\" style=\"width:30px;\">&nbsp;</td>"
	// PRINT THE NAMES OF THE DAYS
	for ( i = 0 ; i < SYM.client.ui.calendar.WeekDays.length ; i++ )
	{
		szcode += "<td style=\"width:20px;\" class=\"calenderheader\">"
		szcode += SYM.client.ui.calendar.WeekDays[i] ;
		szcode += "</td>"	
	}
	szcode += "</tr></table>";
	szcode += "<table border=\"0\" style=\"width:190px;\" cellpadding=0 cellspacing=0><tr>"
	var tmpdate = new Date(SYM.client.ui.calendar.Today.getFullYear() , SYM.client.ui.calendar.Today.getMonth() , 1); 
	var szweek = tmpdate.getWeek();
	if (szweek == 53)
	{
		szcode += "<td class=\"calenderweek\" style=\"width:30px;\">1</td>"
	}else
	{
		szcode += "<td class=\"calenderweek\" style=\"width:30px;\">" + szweek + "</td>"
	}
	
	var predate = (SYM.client.ui.calendar.MonthDays[(SYM.client.ui.calendar.Today.getMonth()-1)] - day)+1
	/* IF JAN, GOTO DEC TO COLLECT DAYS */
	if (SYM.client.ui.calendar.Today.getMonth() == 0)
	{predate = (SYM.client.ui.calendar.MonthDays[11] - day)+1}
	// PRINT OUT SO WE START AT THE RIGHT DAY
	for ( i = 0 ; i < day ; i++ )
	{
		szcode += "<td width=20 align=\"center\" style=\"color:#CCCCCC\" class=\"calenderdaytable\">"+ predate+"</td>"
		predate++;
	}
	for (  i = 0 ; i < SYM.client.ui.calendar.MonthDays[ month ]  ; i++ )
	{
		szcode += "<td style=\"text-align:center;width:20px;\" class=\"calenderdaytable\">"
		szcode +="<table onclick=\"returnDate('"+ (i+1)+"')\" width=\"20\" height=\"18\" border=0 id=\"" + (i+1) +"\" onmouseout=\"this.className='calenderdaytable';\" onmouseover=\"this.className='calenderdaytablehover';\" cellpadding=0 cellspacing=0 class=\"calenderdaytable\"><tr>"
		if ( ( i+1 ) == SYM.client.ui.calendar.myday  && month == SYM.client.ui.calendar.mymonth && SYM.client.ui.calendar.myyear == year)
		{
			szcode += "<td class=\"calendermyselectedday\" align=\"center\">";
		}else if ( ( i+1 ) == mytoday  && month == mymonthtoday && myyeartoday == year)
		{
			szcode += "<td class=\"myday\" align=\"center\">";
		}else if ( day == 6 )
		{
			szcode += "<td class=\"calendersunday\" align=\"center\">";	
		}else
		{
			szcode += "<td align=\"center\">";	
		}
		szcode += (i+1) ;
		szcode += "</td></tr></table></td>"
		if ( day == 6 )
		{
			/* SUNDAY CLOSE THE TR */
			szcode += "</tr></table>" 
			day = 0;
			if (( i+1) < SYM.client.ui.calendar.MonthDays[ month ])
			{	
				szcode += "<table border=0 width=190 cellpadding=0 cellspacing=0><tr>"
				var tmpdate = new Date(SYM.client.ui.calendar.Today.getFullYear() , SYM.client.ui.calendar.Today.getMonth() , (i +2)); 
				var szweek = tmpdate.getWeek();
				if (szweek == 53)
				{
					szcode += "<td class=\"calenderweek\" style=\"width:30px;\">1</td>"
				}else
				{
					szcode += "<td class=\"calenderweek\" style=\"width:30px;\">" + szweek + "</td>"
				}
			}
		}else
		{
			day++;
		}
	}
	
	var next = 1;
	if (day != 0)
	{
		// PRINT OUT SO WE END IN A PRETTY WAY
		for ( i = day ; i < 7 ; i++ )
		{
			szcode += "<td width=20 align=\"center\" style=\"color:#CCCCCC\" class=\"calenderdaytable\">"+ next +"</td>"	;
			next++;
		}	
	}
	szcode +="</tr></table></td></tr></table></div>"
	SYM.util.dom.getObject(objectName + '_cal').innerHTML = szcode;
}
function changeMonth( way )
{
	SYM.client.ui.calendar.Today.setMonth( SYM.client.ui.calendar.Today.getMonth() + way)
	printCalender( SYM.client.ui.calendar.Today );
}
function setMonth( month )
{
	SYM.client.ui.calendar.Today.setMonth( month )
	printCalender( SYM.client.ui.calendar.Today );
}
function changeYear( year )
{
	SYM.client.ui.calendar.Today.setYear( year )
	printCalender( SYM.client.ui.calendar.Today );
}

