var Calendar = {
	target : "",
	selDays : Array(),
	mode : "single",
	_preCreate : "",
	_postCreate : "",
	dest : "",
	year : '',
	month : '',
	day : '',
	Cyear : '',
	Cmonth : '',
	Cday : '',
	leap : 0
};

Calendar.init = function(){
	if(arguments.length==3){
		_data = new Date(arguments[2],arguments[1]-1,arguments[0]);
	} else if(arguments.length==1 && arguments[0]!=""){
		d = arguments[0].split("-");
		_data = new Date(parseInt(d[2]),parseInt(d[1]*1)-1,parseInt(d[0]));
		this.Cyear = parseInt(d[2]);
		this.Cmonth = parseInt(d[1])-1;
		this.Cday = parseInt(d[0]);
	} else {
		_data = new Date();
		
	}
	if(_data=="Invalid Date"){ alert(_data); return; }
	this.year = _data.getFullYear();
	this.leap = ((this.year%4)==0);
	this.month = _data.getMonth();
	this.day = _data.getDate();
	if(this.Cyear==""){
		this.Cyear = this.year;
		this.Cmonth = this.month;
		this.Cday = this.day;
	}

	monthdays = Array(31,(this.leapleap?29:28),31,30,31,30,31,31,30,31,30,31);
	months = Array("Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre");
	daysOfWeek = Array("Domenica","Luned�","Marted�","Mercoled�","Gioved�","Venerd�","Sabato");

	head = document.getElementsByTagName('head')[0];
	css = document.createElement("link");
	css.type = 'text/css';
	css.href = 'img/calendario/calendar.css';
	css.rel = 'stylesheet';
	head.appendChild(css);

	firstMonthDay = new Date(this.year,this.month,1).getDay();
}

Calendar.create = function (divname){
	this.target = divname;
	getElement(divname).innerHTML='';
	div = getElement(divname);
	Table.create();
	Table.object().className = "calendar";
	Table.addThead();
	tr = Table.addTr(thead);
	td = Table.addTd(tr);
	td.innerHTML = '<a href="javascript:Calendar.prevMonth();">&lt;</a>';

	td = createElement("td","colspan","5");
	td.innerHTML = months[this.month]+" "+this.year;
	tr.appendChild(td);

	td = Table.addTd(tr);
	td.innerHTML = '<a href="javascript:Calendar.nextMonth();">&gt;</a>';
	tr = Table.addTr(thead);
	days = monthdays[this.month];
	for(i=0;i<daysOfWeek.length;i++){
		td = Table.addTd(tr);
		td.innerHTML = daysOfWeek[i].substr(0,1);
	}
	Table.addTbody();
	currDay = 0;

	while(true && !isNaN(monthdays[this.month])){
		tr = Table.addTr(tbody);
		for(i=0;i<daysOfWeek.length;i++){
			td = Table.addTd(tr);
			if(currDay == 0 && i!=firstMonthDay){
				td.innerHTML = "&nbsp;";
			} else {
				if(currDay==0){
					currDay=1;
				}
				if(currDay<=monthdays[this.month]){
					td.setAttribute('id','day_'+currDay);
					classe = "";
					if(currDay==this.Cday){
						classe = ' class="currDay"';
					}
					id = currDay+""+this.month+""+this.year;

					//if(in_array(this.selDays,id)!=-1){
					if(currDay==this.Cday && this.month==this.Cmonth && this.year==this.Cyear){
						td.className = "selected";
					}

					td.innerHTML = '<a id="a_'+currDay+'" href="javascript:;" onclick="Calendar.onclick('+currDay+');"'+classe+'>'+(currDay==this.Cday && this.month==this.Cmonth && this.year==this.Cyear?"<strong>"+currDay+"</strong>":currDay)+'</a>';
				} else {
					td.innerHTML = "&nbsp;";
				}
				currDay++;
			}
		}
		if(currDay>monthdays[this.month]){ break; }
	}
	Table.addTfoot();
	tr = Table.addTr(tfoot);
	td = createElement("td","colspan","7");
	td.innerHTML = '<a class="chiudi" href="javascript:;" onclick="calendario(\''+this.target+'\')">Chiudi</a>';
	tr.appendChild(td);
	Table.display(div); //appendo la tabella al div
	this.postCreate();
}

Calendar.prevMonth = function(){
	this.init(this.day,this.month,this.year);
	this.create(this.target);
}

Calendar.nextMonth = function(){
	this.init(this.day,(this.month+2),this.year);
	this.create(this.target);
}

Calendar.dayClass = function (id){
	obj = getElement('day_'+id);
	if(obj.className == 'selected'){
		obj.className = '';
		idx = id+""+month+""+year;
		idx = in_array(this.selDays,idx);
		this.selDays.splice(idx,1);
	} else {
		if(this.mode=="single" && this.selDays.length>0){
			for(i=1;i<=31;i++){ if(getElement("day_"+i) && getElement("day_"+i).className=='selected'){ getElement("day_"+i).className = ''; } }
			this.selDays = Array();
		}
		obj.className = 'selected';
		idx = id+""+month+""+year;
		this.selDays[this.selDays.length] = idx;
	}
	getElement('a_'+id).blur();
}

Calendar.preCreate = function(){
	eval(this._preCreate);
}

Calendar.postCreate = function(){
	eval(this._postCreate);
}

Calendar.onclick = function(id){
	m = (this.month+1);
	getElement(this.dest).value = id+"-"+(m<10?"0"+m:m)+"-"+this.year;
	this.destroy();
    ajaxQuery('u='+document.getElementById('orario').value+'&data='+document.getElementById('data').value,'find.php','out_ricerca');}

Calendar.destroy = function(){
	getElement(this.target).innerHTML = '';
	document.body.removeChild(getElement(this.target));
}

function calendario(name,target,event){
	if(getElement(name)){
		document.body.removeChild(getElement(name));
	} else {
		_x = event.clientX+scrollLeft()+25;
		_y = event.clientY+scrollTop()-15;
		div = createElement('div','style','position: absolute; top: '+_y+'px; left: '+_x+'px;','id',name);
		document.body.appendChild(div);
		Calendar.init(getElement(target).value);
		Calendar.dest = target;
		//Calendar._postCreate = "Dragdrop.init('"+name+"')";
		Calendar.create(name);
	}
}

