var saveOnClick = false;
var saveMethod;

Event.observe(window,"load",function(){ initDateChoosers() });
function initDateChoosers(){
	$$('input.dateChooser:not([class~=processed])').each(function(e){initDateChooser(e)});
}
function initDateChooser(target){
	target = $(target).addClassName('processed');
	var calCont = new Element('div',{'class':'smallCalendar calendar'});
	var calWrapper = new Element('div',{'class':'calendarWrapper'});

	var offset = target.positionedOffset();
	
	target.wrap('div',{'class':'dateChooserWrapper'}).insert(calWrapper.insert(calCont));
	
	calCont.setStyle({'marginTop':'-180px'});
	calWrapper.setStyle({'position':'absolute','top':(offset.top + target.getDimensions().height)+"px",'left':(offset.left)+"px",'overflow':'hidden','zIndex':500});

    var clickHandler = toggleDateChooser.curry(calCont,calWrapper,target);
    
	$(target).observe("click",clickHandler);
	$(target).up().next("img.dateAnchor").observe("click",clickHandler);
	
	var cal=initCalendar(calCont);
	cal.updateelement = updateDateFunc.curry(target,cal);
	var initialDateValue = new Date(target.value);
	if (!isNaN(initialDateValue)) { 
	    cal.setCurrentDate(initialDateValue);
	}
}
function toggleDateChooser(calCont,calWrapper,target){
	(calCont.hasClassName('expanded') == true)?hideDateChooser(calCont,calWrapper,target):showDateChooser(calCont,calWrapper,target);
}
function showDateChooser(calCont,calWrapper,target){
	var offset = target.positionedOffset();
	calWrapper.setStyle({'position':'absolute','top':(offset.top + target.getDimensions().height)+"px",'left':(offset.left)+"px",'overflow':'hidden','zIndex':5});
	calCont.addClassName('expanded').morph({'marginTop':'0px'},{duration:0.5});
}
function hideDateChooser(calCont,calWrapper,target){
	calCont.removeClassName('expanded').morph({'marginTop':'-180px'},{duration:0.5});
}

function updateDateFunc(target,cal,date){
	var m = date.getMonth() + 1;
	var d = date.getDate();
	var y = date.getFullYear();
	m = (m<10)?"0"+m:m;
	d = (d<10)?"0"+d:d;
	datestr = m+"/"+d+"/"+y;
	$(target).value = datestr;
	
	cal.getDatesByEvent('').each(function(date){cal.removeEventsByDate(date);});
	cal.setPlannerValue(date,'', 'selected');
	hideDateChooser(target.next('.calendarWrapper').select('.calendar')[0]);
	if (saveOnClick)
	{
	    eval(saveMethod);
	}
}
