// vim: encoding=UTF-8 expandtab sts=4 sw=4 ts=4
// àèéìòù

var Calendar = {
  require: function(libraryName) {

	document.write('<script type="text/javascript" src="'+libraryName+'"></script>');
  },
  load: function() {
	var scripts = document.getElementsByTagName("script");

	for (var i = 0; i < scripts.length;i++)
	  if (scripts[i].src && scripts[i].src.match(/calendar_yui\.js(\?.*)?$/))
		pathJs = scripts[i].src.replace(/calendar_yui\.js(\?.*)?$/,'');

	var JsFiles = ('yahoo,dom,event,calendar').split(',');

	for (var i = 0; i < JsFiles.length;i++)
	  Calendar.require(pathJs+'calendar_yui/'+JsFiles[i]+'.js');

	document.write('<link rel="stylesheet" type="text/css" href="'+pathJs+'calendar_yui/assets/calendar.css" />');
  }
}

Calendar.load();

var cal = new Array();

function pad(val,dim,char) {
  var tmpval = val +''; // casto a stringa
  var newval = tmpval;
  if (tmpval.length < dim) {
	for (var i = dim - tmpval.length; i > 0; i--) {
	  newval = char+newval;
	}
  }
  return newval;
}

var mySelectHandler = function(type,args,obj) {
	var selected = args[0];

	if (this.uniqueField == true) {
		var date = pad(selected[0][2],2,'0')+'/'+
			pad(selected[0][1],2,'0')+'/'+selected[0][0];
				
		if (this.hour && this.minutes)
		  date += ' '+this.hour+':'+this.minutes;
	  		
		document.getElementById(this.ref).value = date;
	}
	else {
		document.getElementById(this.ref+'gg').value = pad(selected[0][2],2,'0');
		document.getElementById(this.ref+'mm').value = pad(selected[0][1],2,'0');
		document.getElementById(this.ref+'aa').value = selected[0][0];
	
		if (this.hour)
		  document.getElementById(this.ref+'hh').value = this.hour;
		if (this.minutes)
		  document.getElementById(this.ref+'ii').value = this.minutes;
	}
	this.hide();
};


function openCalendar(ref,index,initMonth,hour,minutes) {
	if (!cal[index]) {
	   YAHOO.widget.Calendar.IMG_ROOT = pathJs + 'calendar_yui/assets/';
	   cal[index] = new YAHOO.widget.Calendar("cal"+index,"cal"+index+"Container", {close:true});	   
	   cal[index].cfg.setProperty("MONTHS_LONG",    ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"]);
	   cal[index].cfg.setProperty("WEEKDAYS_SHORT", ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa"]);
	   cal[index].cfg.setProperty("START_WEEKDAY",  1);
	   cal[index].cfg.setProperty("HIDE_BLANK_WEEKS",  true); 
	   
	   cal[index].ref     = ref;
	   cal[index].hour    = hour;
	   cal[index].minutes = minutes;
	   // Gestisco il campo unico o i campi separati
	   cal[index].uniqueField = document.getElementById(ref) != null ? true : false;	   
	   cal[index].selectEvent.subscribe(mySelectHandler, cal[index], true);
	}
	else {
	  cal[index].show();
	}

	if (cal[index].uniqueField == true) {
		var val = document.getElementById(ref).value;
		var matches = val.match(/^(\d{1,2})[-\/](\d{1,2})[-\/](\d{4})$/);
		
		if (matches) {
			initMonth = pad(matches[2],2,'0')+'/'+matches[3];
			var sel = pad(matches[2],2,'0')+'/'+pad(matches[1],2,'0')+'/'+matches[3];
		}				
	}
	else {
		if (document.getElementById(ref+'mm').value &&
			document.getElementById(ref+'aa').value) {
			initMonth = document.getElementById(ref+'mm').value + '/' +
						document.getElementById(ref+'aa').value;				
		}
	
		if (document.getElementById(ref+'gg').value &&
			document.getElementById(ref+'mm').value &&
			document.getElementById(ref+'aa').value) {
	
			var sel = document.getElementById(ref+'mm').value + '/'+
					  document.getElementById(ref+'gg').value + '/' +
					  document.getElementById(ref+'aa').value;			
			}	
	}
	
	cal[index].cfg.setProperty("pagedate",  initMonth);	
	if (sel)
		cal[index].cfg.setProperty("selected",  sel);

	cal[index].render();
}

