//
//
//
//
//
//
// Calendar.setup
//
//
//
//
//
//

Calendar.setup=function(params)
{
	function param_default(pname,def)
	{
		if(typeof params[pname]=="undefined")
			params[pname]=def;
	};

	param_default("inputField",null);
	param_default("displayArea",null);
	param_default("button",null);
	param_default("eventName","click");
	param_default("ifFormat","%Y/%m/%d");
	param_default("daFormat","%Y/%m/%d");
	param_default("singleClick",true);
	param_default("disableFunc",null);
	param_default("dateStatusFunc",params["disableFunc"]);
	param_default("dateText",null);
	param_default("firstDay",null);
	param_default("align","Br");
	param_default("range",[1900,2999]);
	param_default("weekNumbers",true);
	param_default("flat",null);
	param_default("flatCallback",null);
	param_default("onSelect",null);
	param_default("onClose",null);
	param_default("onUpdate",null);
	param_default("date",null);
	param_default("showsTime",false);
	param_default("timeFormat","24");
	param_default("electric",true);
	param_default("step",2);
	param_default("position",null);
	param_default("cache",false);
	param_default("showOthers",false);
	param_default("multiple",null);


	var tmp=["inputField","displayArea","button"];

	for(var i in tmp)
	{
		if(typeof params[tmp[i]]=="string")
		{
			params[tmp[i]]=document.getElementById(params[tmp[i]]);
		}
	}

	if(!(params.flat||params.multiple||params.inputField||params.displayArea||params.button))
	{
		alert("Calendar.setup:\n  Nothing to setup (no fields found).  Please check your code");
		return false;
	}

	function onSelect(cal)
	{
		var p=cal.params;
		var update=(cal.dateClicked||p.electric);

		if(update&&p.inputField)
		{
			p.inputField.value=cal.date.print(p.ifFormat);

			if(typeof p.inputField.onchange=="function")
				p.inputField.onchange();
		}

		if(update&&p.displayArea)
			p.displayArea.innerHTML=cal.date.print(p.daFormat);

		if(update&&typeof p.onUpdate=="function")
			p.onUpdate(cal);

		if(update&&p.flat)
		{
			if(typeof p.flatCallback=="function")
				p.flatCallback(cal);
		}

		if(update&&p.singleClick&&cal.dateClicked)
			cal.callCloseHandler();
	};


	if(params.flat!=null)
	{
		if(typeof params.flat=="string")
			params.flat=document.getElementById(params.flat);

		if(!params.flat)
		{
			alert("Calendar.setup:\n  Flat specified but can't find parent.");
			return false;
		}

		var cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect);

		cal.showsOtherMonths=params.showOthers;
		cal.showsTime=params.showsTime;
		cal.time24=(params.timeFormat=="24");
		cal.params=params;
		cal.weekNumbers=params.weekNumbers;
		cal.setRange(params.range[0],params.range[1]);
		cal.setDateStatusHandler(params.dateStatusFunc);
		cal.getDateText=params.dateText;

		if(params.ifFormat)
		{
			cal.setDateFormat(params.ifFormat);
		}

		if(params.inputField&&typeof params.inputField.value=="string")
		{
			cal.parseDate(params.inputField.value);
		}

		cal.create(params.flat);
		cal.show();

		return false;
	}



	var triggerEl=params.button||params.displayArea||params.inputField;

	triggerEl["on"+params.eventName] = function()
	{
		var dateEl=params.inputField||params.displayArea;
		var dateFmt=params.inputField?params.ifFormat:params.daFormat;
		var mustCreate=false;
		var cal=window.calendar;

		if(dateEl)
			params.date=Date.parseDate(dateEl.value||dateEl.innerHTML,dateFmt);

		if(!(cal&&params.cache))
		{
			window.calendar=cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect,params.onClose||function(cal){cal.hide();});

			cal.showsTime=params.showsTime;
			cal.time24=(params.timeFormat=="24");
			cal.weekNumbers=params.weekNumbers;
			mustCreate=true;
		}
		else
		{
			if(params.date)
				cal.setDate(params.date);

			cal.hide();
		}

		if(params.multiple)
		{
			cal.multiple={};

			for(var i=params.multiple.length;--i>=0;)
			{
				var d=params.multiple[i];
				var ds=d.print("%Y%m%d");
				cal.multiple[ds]=d;
			}
		}


		cal.showsOtherMonths=params.showOthers;
		cal.yearStep=params.step;
		cal.setRange(params.range[0],params.range[1]);
		cal.params=params;
		cal.setDateStatusHandler(params.dateStatusFunc);
		cal.getDateText=params.dateText;
		cal.setDateFormat(dateFmt);

		if(mustCreate)
			cal.create();

		cal.refresh();

		if(!params.position)
			cal.showAtElement(params.button||params.displayArea||params.inputField,params.align);
		else
			cal.showAt(params.position[0],params.position[1]);

		return false;
	};

	return cal;
};













//
//
//
//
//
//
// Calendar-de.js
//
//
//
//
//
//
//

// For translators: please use UTF-8 if possible.  We strongly believe that
// Unicode is the answer to a real internationalized world.  Also please
// include your contact information in the header, as can be seen above.

// full day names
Calendar._DN = [
	'Sonntag',
	'Montag',
	'Dienstag',
	'Mittwoch',
	'Donnerstag',
	'Freitag',
	'Samstag',
	'Sonntag'
];
// short day names
Calendar._SDN = [
	'So',
	'Mo',
	'Di',
	'Mi',
	'Do',
	'Fr',
	'Sa',
	'So'
];
// full month names
Calendar._MN = [
	'Januar',
	'Februar',
	"M\u00e4rz",
	'April',
	'Mai',
	'Juni',
	'Juli',
	'August',
	'September',
	'Oktober',
	'November',
	'Dezember'
];
// short month names
Calendar._SMN = [
	'Jan',
	'Feb',
	"M\u00e4r",
	'Apr',
	'May',
	'Jun',
	'Jul',
	'Aug',
	'Sep',
	'Okt',
	'Nov',
	'Dez'
];

// tooltips
Calendar._TT         = {};
Calendar._TT["INFO"] = "\u00DCber dieses Kalendarmodul";

Calendar._TT["ABOUT"] = ''+
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this ;-)
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
"\n\n" +
"Datum ausw\u00e4hlen:\n" +
"- Benutzen Sie die \xab, \xbb Buttons um das Jahr zu w\u00e4hlen\n" +
"- Benutzen Sie die " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " Buttons um den Monat zu w\u00e4hlen\n" +
"- F\u00fcr eine Schnellauswahl halten Sie die Maustaste \u00fcber diesen Buttons fest.";

Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Zeit ausw\u00e4hlen:\n" +
"- Klicken Sie auf die Teile der Uhrzeit, um diese zu erh\u00F6hen\n" +
"- oder klicken Sie mit festgehaltener Shift-Taste um diese zu verringern\n" +
"- oder klicken und festhalten f\u00fcr Schnellauswahl.";

Calendar._TT["TOGGLE"]       = "Ersten Tag der Woche w\u00e4hlen";
Calendar._TT["PREV_YEAR"]    = "Voriges Jahr";
Calendar._TT["PREV_MONTH"]   = "Voriger Monat";
Calendar._TT["GO_TODAY"]     = "Heute ausw\u00e4hlen";
Calendar._TT["NEXT_MONTH"]   = "N\u00e4chst. Monat";
Calendar._TT["NEXT_YEAR"]    = "N\u00e4chst. Jahr";
Calendar._TT["SEL_DATE"]     = "Datum ausw\u00e4hlen";
Calendar._TT["DRAG_TO_MOVE"] = "Zum Bewegen festhalten";
Calendar._TT["PART_TODAY"]   = " (Heute)";

// the following is to inform that "%s" is to be the first day of week
// %s will be replaced with the day name.
Calendar._TT["DAY_FIRST"] = "Woche beginnt mit %s ";

// This may be locale-dependent.  It specifies the week-end days, as an array
// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
// means Monday, etc.
Calendar._TT["WEEKEND"]   = "0,6";

Calendar._TT["CLOSE"]     = "Schlie\u00dfen";
Calendar._TT["TODAY"]     = "&nbsp";
Calendar._TT["TIME_PART"] = "&nbsp;";

// date formats
Calendar._TT["DEF_DATE_FORMAT"]  = "%d.%m.%Y";
Calendar._TT["TT_DATE_FORMAT"]   = "%a, %e.  %B ";

Calendar._TT["WK"]   = "wk";
Calendar._TT["TIME"] = "Zeit:";
