// ------------------------------------------------------------------------------------------------
// Stringhe per la navigazione del calendario

    var calendario_stringhe = new Array();

    calendario_stringhe['it'] = new Array();
    calendario_stringhe['it']['mese_successivo'] = "Mese successivo";
    calendario_stringhe['it']['mese_precedente'] = "Mese precedente";
    calendario_stringhe['it']['seleziona_mese_desc'] = "Clicca qui per la selezione veloce del mese";
    calendario_stringhe['it']['chiudi_calendario'] = "Chiudi calendario";
    calendario_stringhe['it']['chiudi_calendario_desc'] = "Clicca qui per chiudere il calendario";

    calendario_stringhe['en'] = new Array();
    calendario_stringhe['en']['mese_successivo'] = "Next month";
    calendario_stringhe['en']['mese_precedente'] = "Previous month";
    calendario_stringhe['en']['seleziona_mese_desc'] = "Click here to choose quickly the month";
    calendario_stringhe['en']['chiudi_calendario'] = "Close calendar";
    calendario_stringhe['en']['chiudi_calendario_desc'] = "Click here to close the calendar";

    calendario_stringhe['de'] = new Array();
    calendario_stringhe['de']['mese_successivo'] = "Nächester Monat";
    calendario_stringhe['de']['mese_precedente'] = "Voriger Monat";
    calendario_stringhe['de']['seleziona_mese_desc'] = "Klicken Sie hier um schnell den Monat auszulesen";
    calendario_stringhe['de']['chiudi_calendario'] = "Kalender schließen";
    calendario_stringhe['de']['chiudi_calendario_desc'] = "Klicken Sie hier um den Kalender zu schliessen";

    calendario_stringhe['fr'] = new Array();
    calendario_stringhe['fr']['mese_successivo'] = "Mois suivant";
    calendario_stringhe['fr']['mese_precedente'] = "Mois précédent";
    calendario_stringhe['fr']['seleziona_mese_desc'] = "Cliquez ici pour choisir rapidement le mois";
    calendario_stringhe['fr']['chiudi_calendario'] = "Fermer le calendrier";
    calendario_stringhe['fr']['chiudi_calendario_desc'] = "Cliquez ici pour fermer le calendrier";
// ------------------------------------------------------------------------------------------------




    
	var is_ie6 = false;
	if(navigator.appName.toLowerCase() == 'microsoft internet explorer'){
	    var infos = navigator.appVersion.split(";");
	    var i = 0;
	    for(i=0; i<infos.length; i++)
	        if(infos[i].toLowerCase().indexOf('msie') != -1)
	            if(parseFloat(infos[i].substr(5)) <= 6){
	            	is_ie6 = true;
	            	break;
	        	}
	}
	

    var base_url = '';
    if(document.location.href.indexOf('https') == 0){
        var base_url = document.location.href.substr(document.location.href.indexOf('/')+2);
        if(base_url.indexOf('/') != -1)
            base_url = base_url.substr(0, base_url.indexOf('/'));
        base_url = 'https://'+base_url;
    }       



// ------------------------------------------------------------------------------------------------
// Nomi dei giorni

    var nome_giorni = new Array();
    nome_giorni['it'] = new Array("lun", "mar", "mer", "gio", "ven", "sab", "dom");
    nome_giorni['en'] = new Array("mon", "tue", "wed", "thu", "fri", "sat", "sun");
    nome_giorni['de'] = new Array("mon" ,"die", "mit", "don", "fre", "sat", "sam");
    nome_giorni['fr'] = new Array("lun", "mar", "mer", "jeu", "ven", "sam", "dim");
    
// ------------------------------------------------------------------------------------------------





// ------------------------------------------------------------------------------------------------
// Nomi dei mesi

    var nome_mesi = new Array();
    nome_mesi['it'] = new Array("gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio",  "agosto", "settembre", "ottobre", "novembre", "dicembre");
    nome_mesi['en'] = new Array("january", "february", "march", "april",  "may",    "june",   "july",    "august", "september", "october", "november", "december");
    nome_mesi['de'] = new Array("januar",  "februar",  "märz",  "april",  "mai",    "juni",   "juli",    "august", "september", "oktober", "november", "dezember");
    nome_mesi['fr'] = new Array("janvier", "février",  "mars",  "avril",  "mai",    "juin",   "juillet", "août",   "septembre", "octobre", "novembre", "décembre");
    
// ------------------------------------------------------------------------------------------------





// ------------------------------------------------------------------------------------------------
// Espressioni regolari per il recupero del giorno, mese e anno dai campi

    var regexp_data = new Array(
		/([0-9]{2})/,
		/[0-9]{4}([0-9]{2})/,
		/([0-9]{4})[0-9]{2}/
    );
    
// ------------------------------------------------------------------------------------------------


    
    
    
// ------------------------------------------------------------------------------------------------
// Formato di uscita della data

    var formato_campi_data = new Array(
		"g",
		"am"
    );
    
// ------------------------------------------------------------------------------------------------


    
    
    
// ------------------------------------------------------------------------------------------------
// Giorni festivi annuali nella forma GG_MM

    var calendario_festivi = new Array();
    calendario_festivi['01_01'] = 1;
    calendario_festivi['01_06'] = 1;
    calendario_festivi['12_25'] = 1;
    calendario_festivi['12_26'] = 1;

// ------------------------------------------------------------------------------------------------



var calendario_lingua = 'it';

var nome_giorno_proprio = false;
var nome_mese_proprio = true;

var anno_global = 0;
var mese_global = 0;
var giorno_global = new Date();

var anno_inizio = 0;
var mese_inizio = 0;
var giorno_inizio = 0;

var anno_fine = 0;
var mese_fine = 0;
var giorno_fine = 0;

var giorni_week_end = 0;

var img_precedente = new Image();
var img_precedente_off = new Image();
var img_precedente_over = new Image();

var img_successivo = new Image();
var img_successivo_off = new Image();
var img_successivo_over = new Image();

var img_chiudi = new Image();
var img_chiudi_over = new Image();

var calendario_click_precedente = false;
var calendario_click_successivo = false;

var img_mese_precedente_off = "";
var img_mese_precedente_over = "";

var img_mese_successivo_off = "";
var img_mese_successivo_over = "";

var img_chiudi_calendario_over = "";

var calendario_larghezza_cella = 35;
var calendario_altezza_cella = 20;

var calendario_larghezza_lista_mesi = 125;

var calendario_campo_data = new Array();

var calendario_indice_campo_giorno = null;
var calendario_indice_campo_mese = null;
var calendario_indice_campo_anno = null;
	
var calendario_data_inizio = null;
var calendario_data_fine = null;

var calendario_call_back_function = null;
var calendario_call_back_function_on_close = null;

function mostra_calendario(obj_pulsante, campo_giorno, campo_mese, campo_anno){

    _mostra_calendario(obj_pulsante, campo_giorno, campo_mese, campo_anno);
    
	var l=0; var t=0;
	
	aTag = obj_pulsante;
	do {
		aTag = aTag.offsetParent;
		l += aTag.offsetLeft;
		t += aTag.offsetTop;
	} while (aTag.offsetParent && aTag.tagName != 'BODY');
	
	var left = obj_pulsante.offsetLeft + l;
	var top = obj_pulsante.offsetTop + t + obj_pulsante.offsetHeight + 2;

	riempi_calendario();
	
    document.getElementById('calendario').style.top = top+"px";
    document.getElementById('calendario').style.left = left+"px";
// 	document.getElementById('calendario').style.width = (calendario_larghezza_cella*7+10)+"px";
	document.getElementById('calendario').style.display = "block";
	
	if((document.getElementById('calendario').offsetWidth + left) > getBrowserWidth())
		document.getElementById('calendario').style.left = (getBrowserWidth()-document.getElementById('calendario').offsetWidth)+"px";

    document.getElementById('calendario').style.zIndex = '10';
    document.getElementById('calendario_mask').style.zIndex = '0';

    document.getElementById('calendario_mask').style.top = document.getElementById('calendario').offsetTop+'px';
    document.getElementById('calendario_mask').style.left = document.getElementById('calendario').offsetLeft+'px';
    document.getElementById('calendario_mask').style.height = document.getElementById('calendario').offsetHeight+'px';
    document.getElementById('calendario_mask').style.width = document.getElementById('calendario').offsetWidth+'px';
    document.getElementById('calendario_mask').style.display = 'block';

        
        
}
	
function mostra_calendario_sopra(obj_pulsante, campo_giorno, campo_mese, campo_anno){

    _mostra_calendario(obj_pulsante, campo_giorno, campo_mese, campo_anno);
    
	var l=0; var t=0;
	
	aTag = obj_pulsante;
	do {
		aTag = aTag.offsetParent;
		l += aTag.offsetLeft;
		t += aTag.offsetTop;
	} while (aTag.offsetParent && aTag.tagName != 'BODY');
	
	var left = obj_pulsante.offsetLeft + l;
	riempi_calendario();
	document.getElementById('calendario').style.display = "block";
	var top = obj_pulsante.offsetTop + t - 2 - document.getElementById('calendario').offsetHeight;

	
    document.getElementById('calendario').style.top = top+"px";
    document.getElementById('calendario').style.left = left+"px";
// 	document.getElementById('calendario').style.width = (calendario_larghezza_cella*7+10)+"px";
	
	if((document.getElementById('calendario').offsetWidth + left) > getBrowserWidth())
		document.getElementById('calendario').style.left = (getBrowserWidth()-document.getElementById('calendario').offsetWidth)+"px";

    document.getElementById('calendario').style.zIndex = '10';
    document.getElementById('calendario_mask').style.zIndex = '0';

    document.getElementById('calendario_mask').style.top = document.getElementById('calendario').offsetTop+'px';
    document.getElementById('calendario_mask').style.left = document.getElementById('calendario').offsetLeft+'px';
    document.getElementById('calendario_mask').style.height = document.getElementById('calendario').offsetHeight+'px';
    document.getElementById('calendario_mask').style.width = document.getElementById('calendario').offsetWidth+'px';
    document.getElementById('calendario_mask').style.display = 'block';
        
}
	
function mostra_calendario_lato(obj_pulsante, campo_giorno, campo_mese, campo_anno){

    _mostra_calendario(obj_pulsante, campo_giorno, campo_mese, campo_anno);
    
	var l=0; var t=0;
	
	aTag = obj_pulsante;
	do {
		aTag = aTag.offsetParent;
		l += aTag.offsetLeft;
		t += aTag.offsetTop;
	} while (aTag.offsetParent && aTag.tagName != 'BODY');
	
	var left = obj_pulsante.offsetLeft + l + obj_pulsante.offsetWidth + 2;
	var top = obj_pulsante.offsetTop + t;

	riempi_calendario();
	
	
	document.getElementById('calendario').style.top = top+"px";
	document.getElementById('calendario').style.left = left+"px";
// 	document.getElementById('calendario').style.width = (calendario_larghezza_cella*7+10)+"px";
	document.getElementById('calendario').style.display = "block";
	
	if((document.getElementById('calendario').offsetWidth + left) > getBrowserWidth())
		document.getElementById('calendario').style.left = (getBrowserWidth()-document.getElementById('calendario').offsetWidth)+"px";

    document.getElementById('calendario').style.zIndex = '10';
    document.getElementById('calendario_mask').style.zIndex = '0';

    document.getElementById('calendario_mask').style.top = document.getElementById('calendario').offsetTop+'px';
    document.getElementById('calendario_mask').style.left = document.getElementById('calendario').offsetLeft+'px';
    document.getElementById('calendario_mask').style.height = document.getElementById('calendario').offsetHeight+'px';
    document.getElementById('calendario_mask').style.width = document.getElementById('calendario').offsetWidth+'px';
    document.getElementById('calendario_mask').style.display = 'block';
}
	
    
function my_parseInt(stringa){

    var reg_exp = /^[0]*/;
    return parseInt(stringa.replace(reg_exp, ''));
}
    
    
    
function _mostra_calendario(obj_pulsante, campo_giorno, campo_mese, campo_anno){
	
	if(calendario_data_inizio != null){
		reg_exp = /([0-9]{1,2}).([0-9]{1,2}).([0-9]{2,4})/;
		temp_reg_exp = reg_exp.exec(calendario_data_inizio);
        
        for(loc_i=1; loc_i<temp_reg_exp.length; loc_i++)
            temp_reg_exp[loc_i] = temp_reg_exp[loc_i].toString().replace(/^0*/, "");
        
		anno_inizio = parseInt(temp_reg_exp[3]);
		mese_inizio = parseInt(temp_reg_exp[2]);
		giorno_inizio = parseInt(temp_reg_exp[1]);
	}
	
	if(calendario_data_fine != null){
		reg_exp = /([0-9]{1,2}).([0-9]{1,2}).([0-9]{2,4})/;
		temp_reg_exp = reg_exp.exec(calendario_data_fine);
        
        for(loc_i=1; loc_i<temp_reg_exp.length; loc_i++)
            temp_reg_exp[loc_i] = temp_reg_exp[loc_i].toString().replace(/^0*/, "");
        
		anno_fine = temp_reg_exp[3];
		mese_fine = temp_reg_exp[2];
		giorno_fine = temp_reg_exp[1];
	}
	
	calendario_indice_campo_giorno = 0;
	calendario_campo_data[calendario_indice_campo_giorno] = campo_giorno;

	if(campo_mese == null){
		calendario_indice_campo_mese = calendario_indice_campo_giorno;
		calendario_indice_campo_anno = calendario_indice_campo_giorno;
	}else{
		calendario_indice_campo_mese = 1;
		calendario_campo_data[calendario_indice_campo_mese] = campo_mese;
	}

	if(campo_anno == null){
		calendario_indice_campo_anno = calendario_indice_campo_mese;
	}else{
		calendario_indice_campo_anno = 2;
		calendario_campo_data[calendario_indice_campo_anno] = campo_anno;
	}
	
	data_oggi = new Date();
	
	if(regexp_data[0] == null)
		giorno_selezionato = document.getElementById(calendario_campo_data[calendario_indice_campo_giorno]).value;
	else{
		temp_regexp = regexp_data[0].exec(document.getElementById(calendario_campo_data[calendario_indice_campo_giorno]).value);
		if(temp_regexp == null)
			giorno_selezionato = data_oggi.getDate();
		else
			giorno_selezionato = parseInt(temp_regexp[1]);
	}
	
	if(regexp_data[1] == null){
		mese = document.getElementById(calendario_campo_data[calendario_indice_campo_mese]).value;
	}else{
		temp_regexp = regexp_data[1].exec(document.getElementById(calendario_campo_data[calendario_indice_campo_mese]).value);
		if(temp_regexp == null)
			mese = data_oggi.getMonth()+1;
		else
			mese = my_parseInt(temp_regexp[1]);
	}
	
	if(regexp_data[2] == null)
		anno = document.getElementById(calendario_campo_data[calendario_indice_campo_anno]).value;
	else{
		temp_regexp = regexp_data[2].exec(document.getElementById(calendario_campo_data[calendario_indice_campo_anno]).value);
		if(temp_regexp == null)
			anno = data_oggi.getFullYear();
		else
			anno = parseInt(temp_regexp[1]);
	}
	if(anno.toString().length == 2){
		anno = parseInt("20"+anno.toString());
	}else if(anno.toString().length == 3){
		anno = parseInt("2"+anno.toString());
	}
	
	if(img_precedente.src == "")
		img_precedente.src = document.getElementById('prec_calendario').src;
	
	if(img_mese_precedente_off != "")
		img_precedente_off.src = img_mese_precedente_off;
	else
		img_precedente_off.src = img_precedente.src;
	
	if(img_mese_precedente_over != "")
		img_precedente_over.src = img_mese_precedente_over;
	else
		img_precedente_over.src = img_precedente.src;
		
		
	if(img_successivo.src == "")
		img_successivo.src = document.getElementById('succ_calendario').src;
	
	if(img_mese_successivo_off != "")
		img_successivo_off.src = img_mese_successivo_off;
	else
		img_successivo_off.src = img_successivo.src;
	
	if(img_mese_successivo_over != "")
		img_successivo_over.src = img_mese_successivo_over;
	else
		img_successivo_over.src = img_successivo.src;
		
	if(giorno_selezionato == null)
		giorno_selezionato = giorno_global.getDate();
	
	if(img_chiudi.src == "")
		img_chiudi.src = document.getElementById('chiudi_calendario').src;
	if(img_chiudi_calendario_over != ""){
		img_chiudi_over.src = img_chiudi_calendario_over;
		document.getElementById('chiudi_calendario').onmouseover = function(){ document.getElementById('chiudi_calendario').src = img_chiudi_over.src };
		document.getElementById('chiudi_calendario').onmouseout = function(){ document.getElementById('chiudi_calendario').src = img_chiudi.src };
	}
		
	anno_global = anno;
	mese_global = mese-1;
	giorno_global = new Date(anno_global, mese_global, giorno_selezionato);
	
	
}

function nascondi_calendario(){

    if(calendario_call_back_function_on_close != null)
        eval(calendario_call_back_function_on_close);

	document.getElementById('calendario').style.display = "none";
	document.getElementById('calendario_mese').style.display = "none";
    document.getElementById('calendario_mask').style.display = 'none';
}

function riempi_calendario(){
	
	if(	(giorni_week_end < 0) ||
		(giorni_week_end > 7))
		giorni_week_end = 0;
	
	if(nome_mese_proprio)
		nome_mese = nome_mesi[calendario_lingua][mese_global].toProperCase();
	else
		nome_mese = nome_mesi[calendario_lingua][mese_global];
			
	document.getElementById('calendario_mese_anno').innerHTML = nome_mese+" "+anno_global;
	
	giorno_corrente = new Date(anno_global, mese_global, 1);
	giorno_corrente = giorno_corrente.getDay()-1;
	ultimo_giorno = new Date(anno_global, mese_global+1, 0).getDate();
	
	if(giorno_corrente<0)
		giorno_corrente = 6;
	giorno_corrente = -giorno_corrente+1;
	
	giorni_calendario = "<table class=\"calendario_body\" cellspacing=\"2\" cellpadding=\"0\" border=\"0\">";
	
	giorni_calendario += "<tr class=\"calendario_riga_giorni_nomi\">";
	for(giorno=0; giorno<7; giorno++){
		stile_giorno = "calendario_giorno_nome";
		if(giorno>(6-giorni_week_end))
			stile_giorno = "calendario_giorno_nome_we";
			
		if(nome_giorno_proprio)
			nome_giorno = nome_giorni[calendario_lingua][giorno].toProperCase();
		else
			nome_giorno = nome_giorni[calendario_lingua][giorno];
			
		giorni_calendario += "<td class=\""+stile_giorno+"\">"+nome_giorno+"</td>";
	}
	giorni_calendario += "</tr>";
	
	if((anno_inizio == 0) || (mese_inizio == 0) || (giorno_inizio == 0))
		data_inizio = 0;
	else
		data_inizio = new Date(anno_inizio, mese_inizio-1, giorno_inizio);
			
	if((anno_fine == 0) || (mese_fine == 0) || (giorno_fine == 0))
		data_fine = 0;
	else
		data_fine = new Date(anno_fine, mese_fine-1, giorno_fine);
		
	abilita_successivo(true);
	abilita_precedente(true);
	
	temp_data_oggi = new Date();
	data_oggi = new Date(temp_data_oggi.getFullYear(), temp_data_oggi.getMonth(), temp_data_oggi.getDate());
	
	for(settimana=0; settimana<6; settimana++){
		giorni_calendario += "<tr class=\"calendario_riga_giorni\">";
		for(giorno=0; giorno<7; giorno++){
			str_onmouse = "";
			str_onclick = "";
			stile_puntatore = "";
			
			stile_giorno_disabilitato = "";
			if((giorno_corrente<1) || (giorno_corrente>ultimo_giorno)){
				stile_giorno = "calendario_giorno_vuoto";
				giorno_str = "&nbsp;";
			}else{
				str_onmouse = " onmouseover=\"obj_over(this)\" onmouseout=\"obj_out(this)\"";
				str_onclick = " onmousedown=\"calendario_selziona_giorno("+anno_global+", "+mese_global+", "+giorno_corrente+");\" onmouseup=\"nascondi_calendario();\"";
				str_onclick = " onclick=\"calendario_selziona_giorno("+anno_global+", "+mese_global+", "+giorno_corrente+"); nascondi_calendario();\"";
				
				stile_giorno = "calendario_giorno";
				if(giorno>(6-giorni_week_end))
					stile_giorno = "calendario_giorno_we";
				giorno_str = giorno_corrente;

				if(calendario_festivi != null){
					
					if((mese_global+1).toString().length == 1)
						mese_festivo = "0"+(mese_global+1).toString();
					else
						mese_festivo = (mese_global+1);
						
					if(giorno_corrente.toString().length == 1)
						giorno_festivo = "0"+giorno_corrente.toString();
					else
						giorno_festivo = giorno_corrente;
						
					if(calendario_festivi[mese_festivo+"_"+giorno_festivo] == 1)
						stile_giorno = "calendario_giorno_we";
				}
				
				temp_giorno_corrente = new Date(anno_global, mese_global, giorno_corrente);
				
				if(temp_giorno_corrente.valueOf() == data_oggi.valueOf())
					stile_giorno = "calendario_oggi";
				
				disabilitato = false;
					
				if(data_inizio != 0){
					if(temp_giorno_corrente < data_inizio){
						stile_giorno_disabilitato = "calendario_giorno_disabilitato";
						stile_puntatore = " cursor: default;";
						str_onmouse = "";
						str_onclick = "";
						disabilitato = true;
					}
					
					if(temp_giorno_corrente.valueOf() == data_inizio.valueOf())
						abilita_precedente(false);
				}
				
				if(data_fine != 0){
					if(temp_giorno_corrente > data_fine){
						stile_giorno_disabilitato = "calendario_giorno_disabilitato";
						stile_puntatore = " cursor: default;";
						str_onmouse = "";
						str_onclick = "";
						disabilitato = true;
					}
					
					if(temp_giorno_corrente.valueOf() == data_fine.valueOf())
						abilita_successivo(false);
				}
				
				if((!disabilitato) && (temp_giorno_corrente.valueOf() == giorno_global.valueOf()))
					stile_giorno = "calendario_giorno_selezionato";
				
			}
				
			giorni_calendario += "<td class=\""+stile_giorno+"\" style=\""+stile_puntatore+"\""+str_onmouse+str_onclick+"><span class=\""+stile_giorno_disabilitato+"\">"+giorno_str+"</span></td>";
			
			giorno_corrente++;
		}
		giorni_calendario += "</tr>";
		
		if(giorno_corrente>ultimo_giorno)
			break;
	}
	
	giorni_calendario += "</table>";
	
	document.getElementById('div_calendario').innerHTML = giorni_calendario;
}

function mese_successivo(){
	calendario_click_successivo = true;
	mese_global++;
	if(mese_global > 11){
		mese_global = 0;
		anno_global++;
	}
	riempi_calendario();
}

function mese_precedente(){
	calendario_click_precedente = true;
	mese_global--;
	if(mese_global < 0){
		mese_global = 11;
		anno_global--;
	}
	riempi_calendario();
}

function abilita_precedente(abilita){
	oggetto = document.getElementById('prec_calendario');
	if(abilita){
		oggetto.onclick = function(){ mese_precedente(); };
		oggetto.ondblclick = function(){ mese_precedente(); };
		oggetto.style.cursor = 'pointer';
		
		if(calendario_click_precedente)
			oggetto.src = img_precedente_over.src;
		else
			oggetto.src = img_precedente.src;
			
		oggetto.onmouseover = function(){ document.getElementById('prec_calendario').src = img_precedente_over.src };
		oggetto.onmouseout = function(){ document.getElementById('prec_calendario').src = img_precedente.src };
		calendario_click_precedente = false;
	}else{
		oggetto.onclick = "";
		oggetto.ondblclick = "";
		oggetto.style.cursor = 'default';
		oggetto.src = img_precedente_off.src;
		oggetto.onmouseover = "";
		oggetto.onmouseout = "";
	}
}

function abilita_successivo(abilita){
	oggetto = document.getElementById('succ_calendario');
	if(abilita){
		oggetto.onclick = function(){ mese_successivo(); };
		oggetto.ondblclick = function(){ mese_successivo(); };
		
		if(calendario_click_successivo)
			oggetto.src = img_successivo_over.src;
		else
			oggetto.src = img_successivo.src;
			
		oggetto.style.cursor = 'pointer';
		oggetto.onmouseover = function(){ document.getElementById('succ_calendario').src = img_successivo_over.src };
		oggetto.onmouseout = function(){ document.getElementById('succ_calendario').src = img_successivo.src };
		calendario_click_successivo = false;
	}else{
		oggetto.onclick = "";
		oggetto.ondblclick = "";
		oggetto.src = img_successivo_off.src;
		oggetto.style.cursor = 'default';
		oggetto.onmouseover = "";
		oggetto.onmouseout = "";
	}
}

function calendario_selziona_giorno(anno, mese, giorno){
	anno_global = anno;
	mese_global = mese;
	giorno_global = new Date(anno_global, mese_global, giorno);
	
	riempi_calendario();
	
	valore = new Array();
	
	valore[calendario_indice_campo_giorno] = formato_campi_data[calendario_indice_campo_giorno];
	valore[calendario_indice_campo_mese] = formato_campi_data[calendario_indice_campo_mese];
	valore[calendario_indice_campo_anno] = formato_campi_data[calendario_indice_campo_anno];
	
	mese++;
	
	if(giorno.toString().length == 1)
		giorno = "0"+giorno.toString();
	if(mese.toString().length == 1)
		mese = "0"+mese.toString();
	
	valore[calendario_indice_campo_giorno] = valore[calendario_indice_campo_giorno].replace("g", giorno);
	valore[calendario_indice_campo_mese] = valore[calendario_indice_campo_mese].replace("m", mese);
	valore[calendario_indice_campo_anno] = valore[calendario_indice_campo_anno].replace("a", anno);
	
	if(document.getElementById(calendario_campo_data[calendario_indice_campo_giorno]).type == "text")
	 	document.getElementById(calendario_campo_data[calendario_indice_campo_giorno]).value = valore[calendario_indice_campo_giorno];
	else
		seleziona_valore(calendario_campo_data[calendario_indice_campo_giorno], valore[calendario_indice_campo_giorno]);
	
	if(document.getElementById(calendario_campo_data[calendario_indice_campo_mese]).type == "text")
	 	document.getElementById(calendario_campo_data[calendario_indice_campo_mese]).value = valore[calendario_indice_campo_mese];
	else
		seleziona_valore(calendario_campo_data[calendario_indice_campo_mese], valore[calendario_indice_campo_mese]);
	
	if(document.getElementById(calendario_campo_data[calendario_indice_campo_anno]).type == "text")
	 	document.getElementById(calendario_campo_data[calendario_indice_campo_anno]).value = valore[calendario_indice_campo_anno];
	else
		seleziona_valore(calendario_campo_data[calendario_indice_campo_anno], valore[calendario_indice_campo_anno]);
		
	if(calendario_call_back_function != null)
		eval(calendario_call_back_function);
		
}

function calendario_selziona_mese(anno, mese){
	anno_global = anno;
	mese_global = mese;
	
	document.getElementById('calendario_mese').style.display = "none";
	
	riempi_calendario();
}

function nascondi_calendario_mese(){
	document.getElementById('calendario_mese').style.display = "none";
}

function mostra_calendario_mese(){
	
	if(document.getElementById('calendario_mese').style.display == "block"){
		document.getElementById('calendario_mese').style.display = "none";
		return true;
	}
	
	
	var l=0; var t=0;
	
	obj_pulsante = document.getElementById('calendario_mese_anno_cella');
	
	aTag = obj_pulsante;
	do {
		aTag = aTag.offsetParent;
		l += aTag.offsetLeft;
		t += aTag.offsetTop;
	} while (aTag.offsetParent && aTag.tagName != 'BODY');
	
	var left = obj_pulsante.offsetLeft + l;
// 	left -= parseInt((calendario_larghezza_lista_mesi - obj_pulsante.offsetWidth)/2);
	var top = obj_pulsante.offsetTop + t + obj_pulsante.offsetHeight -2;

 	riempi_calendario_mese();
	
    document.getElementById('calendario_mese').style.zIndex = '11';
	document.getElementById('calendario_mese').style.top = top+"px";
	document.getElementById('calendario_mese').style.left = left+"px";
	document.getElementById('calendario_mese').style.width = document.getElementById('calendario_mese_anno_cella').offsetWidth+"px";
	document.getElementById('calendario_mese').style.display = "block";
}

function riempi_calendario_mese(){
	
	lista_mesi = "<table class=\"calendario_mese_main\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">";
	
	
	if(anno_inizio == 0){
		data_attuale = new Date(anno_global, mese_global-6, 1);
		data_fine = new Date(anno_global, mese_global+7, 1);
	}else{
		data_attuale = new Date(anno_inizio, mese_inizio-1, 1);
		data_fine = new Date(anno_fine, mese_fine, 1);
	}
	
    if(data_fine < data_attuale)
		data_fine = new Date(anno_inizio, mese_inizio+12, 1);
        
        
    
	i = 0;
	do{	
		if(nome_mese_proprio)
			nome_mese = nome_mesi[calendario_lingua][data_attuale.getMonth()].toProperCase();
		else
			nome_mese = nome_mesi[calendario_lingua][data_attuale.getMonth()];

		if((data_attuale.getMonth() == mese_global) && (data_attuale.getFullYear() == anno_global))
			stile_riga = "calendario_mese_riga_attuale";
		else
			stile_riga = "calendario_mese_riga";
			
		
		lista_mesi += "<tr><td class=\""+stile_riga+"\" onmouseover=\"obj_over(this)\" onmouseout=\"obj_out(this)\" onclick=\"calendario_selziona_mese("+data_attuale.getFullYear()+", "+data_attuale.getMonth()+")\">"+nome_mese+" "+data_attuale.getFullYear()+"</td></tr>";
		data_attuale = new Date(data_attuale.getFullYear(), data_attuale.getMonth()+1, 1);
		i++;
		if(i>50)
			break;
	}while(data_fine > data_attuale)
	
	lista_mesi += "</table>";
	
	document.getElementById('calendario_mese').innerHTML = lista_mesi;
}

function obj_over(oggetto){
	oggetto.className += "_over";
}

function obj_out(oggetto){
	oggetto.className = oggetto.className.replace("_over", "");
}

String.prototype.toProperCase = function(){
  return this.toLowerCase().replace(/^(.)|\s(.)/g, function($1) { return $1.toUpperCase(); });
}

function getBrowserWidth(){
  var w = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    w = window.innerWidth;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    w = document.documentElement.clientWidth;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    w = document.body.clientWidth;
  }
  return w;
}

function intval(stringa){

    var reg_exp = /^[0]*/;
    return parseInt(stringa.replace(reg_exp, ''));
}

function seleziona_valore(nome_lista, loc_valore){
	
	obj_lista = document.getElementById(nome_lista);
	
	if(obj_lista == null)
		return false;
		
	obj_lista.selectedIndex = 0;
	
    loc_valore = intval(loc_valore);
    
	for (i=0; i<obj_lista.options.length; i++)
        if (intval(obj_lista.options[i].value) == loc_valore){
			obj_lista.selectedIndex = i;
			break;			
		}
}

function crea_calendario(){
	if((nome_giorni[calendario_lingua] == null) || (nome_mesi[calendario_lingua] == null) || (calendario_stringhe[calendario_lingua] == null))
		calendario_lingua = 'it';
	
	html_calendario =  "<div id=\"calendario\" class=\"calendario_main\">";
	
	html_calendario += "<table style=\"width: 100%; height: 20px\" cellspacing=\"0\" cellpadding=\"2\" border=\"0\">";
	html_calendario += "<tr>";
	html_calendario += "<td width=\"20\" onclick=\"nascondi_calendario_mese()\">&nbsp;</td>";
	html_calendario += "<td width=\"20\" onclick=\"nascondi_calendario_mese()\"><img src=\"/immagini/prev.gif\" id=\"prec_calendario\" width=\"20\" height=\"20\" border=\"0\" style=\"cursor: pointer;\" alt=\""+calendario_stringhe[calendario_lingua]['mese_precedente']+"\" onclick=\"mese_precedente();\" ondblclick=\"mese_precedente();\"></td>";
	html_calendario += "<td id=\"calendario_mese_anno_cella\" align=\"center\" onclick=\"mostra_calendario_mese()\"><span class=\"calendario_mese_corrente\" title=\""+calendario_stringhe[calendario_lingua]['seleziona_mese_desc']+"\"><span id=\"calendario_mese_anno\" style=\"vertical-align: middle\"></span><img src=\"/immagini/calendario_mesi.gif\" width=\"12\" height=\"12\" border=\"0\" style=\"vertical-align: middle\"></span></td>";
	html_calendario += "<td width=\"20\" onclick=\"nascondi_calendario_mese()\"><img src=\"/immagini/next.gif\" id=\"succ_calendario\" width=\"20\" height=\"20\" border=\"0\" style=\"cursor: pointer;\" alt=\""+calendario_stringhe[calendario_lingua]['mese_successivo']+"\" onclick=\"mese_successivo();\" ondblclick=\"mese_successivo();\"></td>";
	html_calendario += "<td width=\"20\" align=\"right\" onclick=\"nascondi_calendario_mese()\"><img src=\"/immagini/chiudi.gif\" id=\"chiudi_calendario\" border=\"0\" style=\"cursor: pointer;\" alt=\""+calendario_stringhe[calendario_lingua]['chiudi_calendario_desc']+"\" onclick=\"nascondi_calendario();\"></td>";
	html_calendario += "</tr>";
	html_calendario += "</table>";
	
	html_calendario += "<div style=\"width: 100%;\" id=\"div_calendario\" onclick=\"nascondi_calendario_mese();\"></div>";
	
	html_calendario += "<div style=\"width: 100%; padding: 2px; text-align: center\" onclick=\"nascondi_calendario_mese()\">";
	html_calendario += "<span class=\"calendario_chiudi\" onclick=\"nascondi_calendario();\" title=\""+calendario_stringhe[calendario_lingua]['chiudi_calendario_desc']+"\">"+calendario_stringhe[calendario_lingua]['chiudi_calendario']+"</span>";
	html_calendario += "</div>";

	html_calendario += "</div>";
	
	html_calendario += "<div id=\"calendario_mese\" class=\"calendario_mese_container\"></div>";
    html_calendario += "<iframe ";

   if (base_url!='')
	    html_calendario+= ' src="'+base_url+'/immagini/transparent.gif" ';
    
    
    html_calendario += " id=\"calendario_mask\" style=\"filter: mask(); position: absolute; top: 0px; left: 0px; display: none;\" frameborder=\"0\"></iframe>";
    
	document.write(html_calendario);

}