
var maindiv = null;
var startYear = 1995;
var endYear = new Date().getFullYear();
var monthnames = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
var weekdays = new Array("Mo","Di","Mi","Do","Fr","Sa","So");
var ddyear,ddmonth,caldiv;
var obj;

function DateInput(triggerbuttonid,targetid,objname){

	this.target = dom.gI(targetid);
	this.triggerbutton = dom.gI(triggerbuttonid);
	this.objname = objname;
	
//	dom.aE(this.triggerbutton,"mousedown",this.showCalendar,false);
	
	this.showCalendar = function(e,trigger)
	{
		var ev = dom.fE(e);
		obj = this;
		if(this.triggerbutton == null)
			this.triggerbutton = trigger;
			
		if(maindiv == null){
			maindiv = dom.cE("div");
			maindiv.className = "di_calendarpopupdiv";
			maindiv.id = "di_calendarpopup";
			document.body.insertBefore(maindiv,document.body.firstChild)
			
			var div1 = dom.cE("div");
			div1.className = "di_headerdiv";
			div1.innerHTML = "<table width=100%><tr><td style=\"padding-left:10px\">Kalender</td><td align=right><a class=di_x href=\"javascript: " + this.objname + ".hide()\">x</a></td></table>";
			dom.aC(maindiv,div1);
			
			var div = dom.cE("div");
			div.className = "di_dropdowndiv";
			dom.aC(maindiv,div);
			
			
			ddmonth = dom.cE("select");
			ddmonth.id = "ddyear";
			ddmonth.className = "di_ddmonth";
			dom.aC(div,ddmonth);
			
			ddyear = dom.cE("select");
			ddyear.id = "ddyear";
			ddyear.className = "di_ddyear";
			dom.aC(div,ddyear);
			
			
			dom.aE(ddyear,"change",this.onMonthChanged,false);
			dom.aE(ddmonth,"change",this.onMonthChanged,false);
		
			for(var i=0;i<12;i++){	
				var opt = dom.cE("option");
				opt.value = i;
				opt.text = monthnames[i];
				ddmonth.options[i] = opt;
			}
		
			var count = 0;
			for(var i=endYear;i>startYear;i--){	
				var opt = dom.cE("option");
				opt.value = i;
				opt.text = i;
				ddyear.options[count] = opt;
				count++;
			}
			
			var weekdaydiv = dom.cE("div");
			weekdaydiv.className = "di_weekdayrow";
			for(var i=0;i<weekdays.length;i++){	
				weekdaydiv.innerHTML += "<div class=di_weekdayitem>" + weekdays[i] + "</div>"
			}
			dom.aC(maindiv,weekdaydiv);
			
			caldiv = dom.cE("div");
			caldiv.id = "caldiv";
			caldiv.className = "di_calendardisplay";
			dom.aC(maindiv,caldiv);
		} else {
			maindiv.style.display = "block";
		}
		
		if(!window.event){
			maindiv.style.top = ev.pageY - 14;
			maindiv.style.left = ev.pageX + 15;
		} else {
			maindiv.style.top = window.event.clientY - 14;
			maindiv.style.left = window.event.clientX + 15;
		}
		
		var now = new Date();
		this.showMonth(now.getMonth(),now.getFullYear());
		
		// special for archiv
		
		var iframe = dom.gI("pdfframe");
		
		iframe.style.position = "relative";
		iframe.style.top = "120px";
		//iframe.style.visibility = "hidden";
		
	}
	
	
	this.showMonth = function(month, year)
	{

		caldiv.innerHTML = "";
		var dm = new Date(year,month,1);
		
		var totaldays = this.getTotalDaysOfMonth(dm.getMonth());
		var firstday = this.getWeekNumber(dm.getDay());
		var currday = firstday;
		var wcount = 0;
		var row = dom.cE("div");
		row.className = "di_row";
		caldiv.appendChild(row);
		
		for(var j=0;j<firstday;j++){
			
			var div = dom.cE("div");
			div.className = "di_day";
			div.innerHTML = "&nbsp;";
			dom.aC(row,div);
		}
		
		for(var i=1;i<=totaldays;i++){
			
			var cssclass = "di_day";
	
			if(currday == 6)
				cssclass = "di_endofweek";
				
			var div = dom.cE("div");
			div.className = cssclass;
			
			var d = new Date(ddyear.options[ddyear.selectedIndex].value,ddmonth.options[ddmonth.selectedIndex].value,i);
			div.innerHTML = "<a class=\"di_link\" href=\"javascript:" + this.objname + ".fillTarget('" + d.getDate() + "." + (d.getMonth()+1) + "." + d.getFullYear() + "')\">" + i + "</a>"; 
			//dom.aE(div,"dblclick",function(){this.foo(div);},false);
			//dom.aE(div,"mouseover",function(){obj.overButton(div);},false);
			dom.aC(row,div);
			
		//	dom.aE(div,"dblclick",function(event){DateInput.fillTarget(event,d);return true;},false);
			
			if(currday == 6){
				row = dom.cE("div");
				row.className = "di_row";
				caldiv.appendChild(row);
				currday = 0;
				}
			else
				currday++;
			
		}
	
	}
	
	this.foo = function(obj){
		alert(obj.innerHTML);
	}	
	
	this.fillTarget = function(day){
		
		
		this.target.value = day;
		this.hide();
	//	dom.gI("calendarpopup").style.display = "none";
		
	}
	
	this.onMonthChanged = function()
	{	
		
		var month = ddmonth.options[ddmonth.selectedIndex].value;
		var year = ddyear.options[ddyear.selectedIndex].value;
		
		obj.showMonth(month,year);
	}
	
	this.getTotalDaysOfMonth = function(month)
	{
		if(month == 0 || month == 2 || month == 4 || month == 6 || month == 7 || month == 9 || month == 11)
			return 31;
			
		if(month == 1)
			return 28; // schaltjahr nicht vergessen!
			
		return 30;
	
	}
	
	this.getWeekNumber = function(numberOfDay)
	{
		if(numberOfDay == 0)
			return 6;
		else
			return --numberOfDay;
	
	}
	
	this.formatNumber = function(nr)
	{
		if(nr < 10)
			return "0" + nr;
		else
			return nr;
	}
	
	this.hide = function(){
		dom.gI("di_calendarpopup").style.display = "none";
		
		var iframe = dom.gI("pdfframe");
		
		iframe.style.position = "relative";
		iframe.style.top = "0px";
	}
	
	this.overButton = function (img)
	{
		if(img != null)
		{
			img.className = img.className + "_hover";
		}
	}

	this.outButton = function (img)
	{
	
		if(img != null)
		{
			img.className = img.className.replace("_hover","");
		}
	}


}
	
