

// Add to (or set) window.onload functions.
// Taken from Dom Scripting.
//
// The new function is executed last.
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
        window.onload = func;
  } else {
        window.onload = function() {
          oldonload();
          func();
        };
  }
}

// Add pretty date selector thingie
// 
function decorate_date_input(input) {
	var link = document.createElement("A");
	if (input.value) {
		var datetext = input.value;
	} else {
		var datetext = calendar_chooser_text;
	}
	var linktext = document.createTextNode(datetext);
	var dateFormat= "%d-%m-%Y";
	input.parentNode.insertBefore(link, input);
	link.appendChild(linktext);
	link.href = "";
	function onSelect(cal) {
		if(cal.dateClicked) {
			input.value= cal.date.print(dateFormat);
			link.removeChild(link.firstChild);
			linktext = document.createTextNode(cal.date.print(dateFormat));
			link.appendChild(linktext);
			cal.hide();
		}
	}
	link.onclick= function() {
		var mustCreate = false;
		var cal= window.calendar;
		var date;
		if(input.value) {
			date= Date.parseDate(input.value, dateFormat);
		}
		if(!cal) {
			window.calendar= cal= new Calendar(
				null,
				date,
				onSelect,
				function(cal) { cal.hide(); }
			);
			mustCreate= true;
		} else {
			cal.onSelected= onSelect;
			if(date)
				cal.setDate(date);
			cal.hide();
		}
		if(mustCreate)
			cal.create();
		cal.refresh();
		cal.showAtElement(link);
		return false;
	}
}
function decorate_date() {
        var inputs= document.getElementsByTagName("input");
	// var dates= new Array();
        for(var i= 0; i < inputs.length; i++) {
                // if(inputs[i].className == "date") {
                if(inputs[i].className.search(/\bdate\b/) != -1) {
                        decorate_date_input(inputs[i]);
			// dates.push(inputs[i]);
                }
        }
	// TODO add onsubmit to check dates
}
addLoadEvent(decorate_date);
