
// ------------------------------------------------------------------------------------------------
// 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

	if (typeof regexp_data == 'undefined')
	    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

	if (typeof formato_campi_data  == 'undefined')
	    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;	// capodanno
    calendario_festivi['01_06'] = 1;	// epifania    
    calendario_festivi['04_25'] = 1;	// 25 aprile festa liberazione
    calendario_festivi['05_01'] = 1;	// 1° maggio festa del lavoro
    calendario_festivi['06_02'] = 1;	// festa della repubblica
    calendario_festivi['08_15'] = 1;	// ferragosto (assunzione di maria vergine)
    calendario_festivi['11_01'] = 1;	// tutti i santi
    calendario_festivi['12_08'] = 1;	// immacolata concezione
    calendario_festivi['12_25'] = 1;	// Natale
    calendario_festivi['12_26'] = 1;	// Santo Stefano

// ------------------------------------------------------------------------------------------------



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 = myImage();
var img_precedente_off = myImage();
var img_precedente_over = myImage();

var img_successivo = myImage();
var img_successivo_off = myImage();
var img_successivo_over = myImage();

var img_chiudi = myImage();
var img_chiudi_over = myImage();

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;
	
if (typeof calendario_data_inizio == 'undefined')
	var calendario_data_inizio = null;
	
if (typeof calendario_data_fine == 'undefined')
	var calendario_data_fine = null;

if (typeof calendario_call_back_function != 'function')
	var calendario_call_back_function = null;
	
if (typeof calendario_call_back_function_on_close != 'function')
	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;
	
	var 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;
	
	var 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;
	
	var 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(typeof calendario_call_back_function_on_close == "function")
        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;

				var giorno_festivo, mese_festivo;
				
				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(typeof(calendario_festivi[mese_festivo+"_"+giorno_festivo]) != 'undefined' && calendario_festivi[mese_festivo+"_"+giorno_festivo] == 1)
						stile_giorno = "calendario_giorno_we";
				}
				
				var temp_giorno_corrente = new Date(anno_global, mese_global, giorno_corrente);
				
				if(temp_giorno_corrente.valueOf() == data_oggi.valueOf())
					stile_giorno = "calendario_oggi";
				
				var 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(typeof calendario_call_back_function == "function")
		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);
    var array_length = Math.max(obj_lista.options.length, loc_valore);
	
	for (i = 0; i < array_length; i++)
	{
		if (typeof(obj_lista.options[i]) == undefined || obj_lista.options[i] == null)
		{
			var temp_obj 		 = document.createElement('option');
			temp_obj.value 		 = i+1;
			temp_obj.innerHTML	 = (temp_obj.value<10) ? "0": "";
			temp_obj.innerHTML	+= temp_obj.value;
						
			obj_lista.options[i] = temp_obj;
		}
		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';
	
	if(typeof(html_calendario) != 'undefined')
		html_calendario =  "<div id=\"calendario\" class=\"calendario_main\">";
	else
		var 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=\"/images/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=\"/images/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=\"/images/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=\"/images/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+'/blankpage.htm" ';
    
    
    html_calendario += " id=\"calendario_mask\" style=\"filter: mask(); position: absolute; top: 0px; left: 0px; display: none;\" frameborder=\"0\"></iframe>";
    
    document.write(html_calendario);
    
    /*
    var bodyRef = document.getElementsByTagName("body").item(0);
    var newDiv = document.createElement("div");
    newDiv.innerHTML = html_calendario;
    
    bodyRef.appendChild(newDiv);
    */
}

////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
//////////////////////// 	FUNZIONI KBALOON	////////////////////////


    function kbaloon(){
		
		var baloon_images_size = new Array(
			null,
			new Array(5, 5),
			null,
			new Array(5, 5),
			null,
			null,
			null,
			new Array(5, 5),
			null,
			new Array(5, 5),
			new Array(20, 21)
		);
		
		var mainBackgroundColor = '#fcfebc';
		var mainBorderColor = '#848264';
		
        // ---------------------------------------------------------------------------------------------------------------------
        
        
        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;
        } 
   
             
        // ---------------------------------------------------------------------------------------------------------------------
        
        
        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 testo_baloon = '';
        var baloon_max_width = -1;
        
        var baloon_target_x = 0;
        var baloon_target_y = 0;
        
        var baloon_padding = 5;
        
        var baloon_mask = document.createElement('iframe');
        baloon_mask.setAttribute('frameborder' , '0', 0);
        with(baloon_mask.style){
            position = 'absolute';
            top = '0px';
            left = '0px';
            visibility = 'hidden';
            //border = 'dotted 1px #ff0000';
            filter = 'mask()';
            zIndex = 200;
        }
        if (base_url!='' && is_ie6)
            baloon_mask.src=base_url+"/blankpage.htm";
            
        document.body.appendChild(baloon_mask);

        var baloon_body = document.createElement('div');
        with(baloon_body.style){
            //border = 'dotted 1px #ff0000';
            position = 'absolute';
            top = '0px';
            left = '0px';
            visibility = 'hidden';
            zIndex = 201;
        }
        document.body.appendChild(baloon_body);
        
        var baloon_feet_mask = document.createElement('iframe');
        baloon_feet_mask.setAttribute('frameborder' , '0', 0);
        with(baloon_feet_mask.style){
            position = 'absolute';
            visibility = 'hidden';
            //border = 'dotted 1px #ff0000';
            filter = 'mask()';
            zIndex = 0;
            backgroundColor = 'transparent';
        }
        
        if (base_url!='' && is_ie6)
            baloon_feet_mask.src=base_url+"/blankpage.htm";
        baloon_body.appendChild(baloon_feet_mask);

        
        
        var bg_baloon = new Array();
		for(var i=0; i<=10; i++){
	        bg_baloon[i] = document.createElement('div');
	        //bg_baloon[i].style.backgroundColor = new Array('red', 'green', 'blue', 'yellow')[i%4];
	        bg_baloon[i].style.overflow = 'hidden';
	        bg_baloon[i].style.fontSize = '1px';
	        //bg_baloon[i].style.display = 'none';
	        baloon_body.appendChild(bg_baloon[i]);
		}
        
        
        var baloon_text = document.createElement('div');
        with(baloon_text.style){
            //border = 'dotted 1px #0000ff';
            position = 'absolute';
            zIndex = 11;
            textAlign = 'center';
        }
        baloon_body.appendChild(baloon_text);
        
        function get_page_size(){
        
            var xScroll, yScroll;
            var pageWidth, pageHeight;
            
            if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
                xScroll = document.body.scrollWidth;
                yScroll = document.body.scrollHeight;
            } else if (window.innerHeight && window.scrollMaxY) {
                xScroll = document.body.scrollWidth;
                yScroll = window.innerHeight + window.scrollMaxY;
            } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
                xScroll = document.body.offsetWidth;
                yScroll = document.body.offsetHeight;
            }
            
            var windowWidth, windowHeight;
            if (self.innerHeight) { // all except Explorer
                windowWidth = self.innerWidth;
                windowHeight = self.innerHeight;
            } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
                windowWidth = document.documentElement.clientWidth;
                windowHeight = document.documentElement.clientHeight;
            } else if (document.body) { // other Explorers
                windowWidth = document.body.clientWidth;
                windowHeight = document.body.clientHeight;
            }
            
            // for small pages with total height less then height of the viewport
            if(yScroll < windowHeight){
                pageHeight = windowHeight;
            } else {
                pageHeight = yScroll;
            }
            
            // for small pages with total width less then width of the viewport
            if(xScroll < windowWidth){
                pageWidth = windowWidth;
            } else {
                pageWidth = xScroll;
            }
            
            if(typeof(arrayPageSize)!='undefined')
                arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
            else
                var arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
                
            return arrayPageSize;
        }
    
        
        function get_page_scroll(){
        
            var yScroll;
            
            if (self.pageYOffset) {
                yScroll = self.pageYOffset;
            } else if (document.documentElement && document.documentElement.scrollTop){ // Explorer 6 Strict
                yScroll = document.documentElement.scrollTop;
            } else if (document.body) {// all other Explorers
                yScroll = document.body.scrollTop;
            }
            
            // arrayPageScroll = new Array('',yScroll)
            return yScroll;
        }
        
        function create_bg_images(){
            
            with(bg_baloon[1].style){
                position = 'absolute';
                top = '0px';
                left = '0px';
                width = baloon_images_size[1][0]+'px';
                height = baloon_images_size[1][1]+'px';
                zIndex = 1;
                display = 'block';				
				backgroundImage = "url('/images/kbaloon.gif')";				
				backgroundRepeat = 'no-repeat';
				backgroundPosition = '0px -71px';
            }
            
            with(bg_baloon[2].style){
                position = 'absolute';
                top = '0px';
                left = baloon_images_size[1][0]+'px';
                width = (baloon_text.offsetWidth+baloon_padding*2)+'px';
                height = baloon_images_size[1][1]+'px';
                zIndex = 2;
                backgroundColor = mainBackgroundColor;
                borderColor = mainBorderColor;
                borderWidth = '1px 0px 0px 0px'
                borderStyle = 'solid';
            }
            
            with(bg_baloon[3].style){
                position = 'absolute';
                top = '0px';
                right = '0px';
                width = baloon_images_size[3][0]+'px';
                height = baloon_images_size[3][1]+'px';
                zIndex = 3;
                display = 'block';
				backgroundImage = "url('/images/kbaloon.gif')";
				backgroundRepeat = 'no-repeat';
				backgroundPosition = '0px -86px';
            }
            
            with(bg_baloon[4].style){
                position = 'absolute';
                left = '0px';
                top = baloon_images_size[1][1]+'px';
                width = baloon_images_size[1][0]+'px';
                height = (baloon_text.offsetHeight+baloon_padding*2)+'px';
                zIndex = 4;
                backgroundColor = mainBackgroundColor;
                borderColor = mainBorderColor;
                borderWidth = '0px 0px 0px 1px'
                borderStyle = 'solid';
            }
            
            with(bg_baloon[5].style){
                position = 'absolute';
                left = baloon_images_size[1][0]+'px';
                top = baloon_images_size[1][1]+'px';
                width = (baloon_text.offsetWidth+baloon_padding*2)+'px';
                height = (baloon_text.offsetHeight+baloon_padding*2)+'px';
                zIndex = 5;
                backgroundColor = mainBackgroundColor;
            }
            
            with(bg_baloon[6].style){
                position = 'absolute';
                top =  baloon_images_size[3][1]+'px';
                right = '0px';
                width =  baloon_images_size[3][0]+'px';
                height = (baloon_text.offsetHeight+baloon_padding*2)+'px';
                zIndex = 6;
                backgroundColor = mainBackgroundColor;
                borderColor = mainBorderColor;
                borderWidth = '0px 1px 0px 0px'
                borderStyle = 'solid';
            }
            
            with(bg_baloon[7].style){
                position = 'absolute';
                bottom = '0px';
                left = '0px';
                width = baloon_images_size[7][0]+'px';
                height = baloon_images_size[7][1]+'px';
                zIndex = 7;
				backgroundImage = "url('/images/kbaloon.gif')";
				backgroundRepeat = 'no-repeat';
				backgroundPosition = '0px -10px';
            }
            
            with(bg_baloon[8].style){
                position = 'absolute';
                bottom = '0px';
                left = baloon_images_size[7][0]+'px';
                width = (baloon_text.offsetWidth+baloon_padding*2)+'px';
                height = baloon_images_size[7][1]+'px';
                zIndex = 8;
                backgroundColor = mainBackgroundColor;
                borderColor = mainBorderColor;
                borderWidth = '0px 0px 1px 0px'
                borderStyle = 'solid';
            }
            
            with(bg_baloon[9].style){
                position = 'absolute';
                bottom = '0px';
                right = '0px';
                width = baloon_images_size[9][0]+'px';
                height = baloon_images_size[9][0]+'px';
                zIndex = 9;
				backgroundImage = "url('/images/kbaloon.gif')";
				backgroundRepeat = 'no-repeat';
				backgroundPosition = '0px -25px';
            }
            
            with(bg_baloon[10].style){
                position = 'absolute';
                bottom = '-'+(baloon_images_size[10][1]-1)+'px';
                left = '10px';
                width = baloon_images_size[10][0]+'px';
                height = baloon_images_size[10][1]+'px';
                zIndex = 10;
				backgroundImage = "url('/images/kbaloon.gif')";
				backgroundRepeat = 'no-repeat';
				backgroundPosition = '0px -40px';
            }
            
            with(baloon_feet_mask.style){
                position = 'absolute';
                bottom = '-'+(baloon_images_size[10][1]-1)+'px';
                left = '10px';
                width = baloon_images_size[10][0]+'px';
                height = baloon_images_size[10][1]+'px';
                zIndex = 10;
            }
            

        }

        function reset_feet(){
            with(bg_baloon[10].style){
                position = 'absolute';
                bottom = '-'+(baloon_images_size[10][1]-1);
                left = '10px';
                width = baloon_images_size[10][0]+'px';
                height = baloon_images_size[10][1]+'px';
                zIndex = 10;
            }
            
            with(baloon_feet_mask.style){
                position = 'absolute';
                bottom = '-'+(baloon_images_size[10][1]-1)+'px';
                left = '10px';
                width = baloon_images_size[10][0]+'px';
                height = baloon_images_size[10][1]+'px';
                zIndex = 10;
            }
        }

        
        this.set_max_width = function(max_width){
            baloon_max_width = max_width;
        }
        
        this.set_text = function(testo_baloon){
            baloon_text.innerHTML = testo_baloon;
            
            with(baloon_text.style){
                left = (baloon_images_size[1][0]+baloon_padding)+'px';
                top = (baloon_images_size[1][1]+baloon_padding)+'px';
            }
        
            if(baloon_max_width == -1)
                baloon_text.style.width = 'auto';
            else
                baloon_text.style.width = (baloon_max_width-baloon_padding*2)+'px';
            
            baloon_body.style.width = (baloon_text.offsetWidth+baloon_images_size[1][0]+baloon_images_size[1][0]+baloon_padding*2)+'px';
            baloon_body.style.height = (baloon_text.offsetHeight+baloon_images_size[1][1]+baloon_images_size[7][0]+baloon_padding*2)+'px';
            
            baloon_mask.style.width = baloon_body.style.width;
            baloon_mask.style.height = baloon_body.style.height;
                                 
            create_bg_images();

            var page_size = get_page_size();
            
            var baloon_left = baloon_target_x-parseInt(bg_baloon[10].style.left);
            if(baloon_left+baloon_body.offsetWidth > page_size[0])
                baloon_left = page_size[0]-baloon_body.offsetWidth-20;
            
            baloon_body.style.left = baloon_left+'px';
            baloon_body.style.top = (baloon_target_y-baloon_body.offsetHeight-baloon_images_size[10][1])+'px';
            
            baloon_mask.style.left = baloon_body.style.left;
            baloon_mask.style.top = baloon_body.style.top;
        }
        
        this.set_target_pos = function(pos_x, pos_y){
            baloon_target_x = pos_x;
            baloon_target_y = pos_y;
        }
        
        this.show = function(){
            baloon_body.style.visibility = 'hidden';
            baloon_mask.style.visibility = 'hidden';
            baloon_feet_mask.style.visibility = 'hidden';
            
            reset_feet();
            
            var page_size = get_page_size();
            
            var baloon_left = baloon_target_x-parseInt(bg_baloon[10].style.left);
            var baloon_top = baloon_target_y-baloon_body.offsetHeight-baloon_images_size[10][1];
            
            if(baloon_left+baloon_body.offsetWidth > document.body.clientWidth){
                var delta = baloon_left+baloon_body.offsetWidth - document.body.clientWidth;
                
                baloon_left = document.body.clientWidth-baloon_body.offsetWidth-20;
                                                
                bg_baloon[10].style.left = (delta)+'px';
                baloon_feet_mask.style.left = (delta)+'px';
            }
            
            if(get_page_scroll() > baloon_top)
                window.scroll(0, baloon_top);
            
            baloon_body.style.left = baloon_left+'px';
            baloon_body.style.top = baloon_top+'px';
            baloon_mask.style.left = baloon_body.style.left;
            baloon_mask.style.top = baloon_body.style.top;
            
            baloon_body.style.visibility = 'visible';
            baloon_mask.style.visibility = 'visible';
            baloon_feet_mask.style.visibility = 'visible';
        }
        
        
        this.hide = function(){
            baloon_mask.style.visibility = 'hidden';
            baloon_body.style.visibility = 'hidden';
            baloon_feet_mask.style.visibility = 'hidden';
        }

    }

    function show_baloon_dist(obj, distanza){
    
        if(typeof baloon == "undefined")
            return void(0);
    		
    	if(typeof indirizzo_centro == "undefined")
            return void(0);
            
        if(trim(indirizzo_centro) == '')
            return void(0);            
            
        baloon.set_max_width(200);
        baloon.set_text(indirizzo_centro.replace('%1', distanza));
        
        var pos = get_position(obj);
        baloon.set_target_pos(pos[0]+30, pos[1]);
        
        baloon.show();    
    }
    
    function show_baloon_generic(obj, text, width){
    
       if(width == null)
            width = 200;
            
        if (typeof baloon == "undefined") {
        	alert(text);
        	return void(0);
        }
    
        baloon.set_max_width(width);
        baloon.set_text(text);
        
        var pos = get_position(obj);
        baloon.set_target_pos(pos[0]+obj.offsetWidth-2, pos[1]+2);
        
        baloon.show();
    }
    
    
    function hide_baloon(){
        if(typeof baloon == "undefined")
            return void(0);
        baloon.hide();
    }
    
    function myImage()
    {
    	if(typeof Image == 'undefined')
    		return document.createElement('IMG');
    	else
    		return new Image();
    }
    