    function baloon(){
              
        // ---------------------------------------------------------------------------------------------------------------------
        
        
        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 baloon_images = new Array(), i;
        for(i=1; i<=10; i++){
            baloon_images[i] = new Image();
            str_i = i<10 ? '0' : '';
            str_i += i;
            baloon_images[i].src = base_url+'immagini/baloon_'+str_i+'.gif';
        }
   
             
        // ---------------------------------------------------------------------------------------------------------------------
        
        
        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+"immagini/transparent.gif";
            
        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+"immagini/transparent.gif";
        baloon_body.appendChild(baloon_feet_mask);


        var bg_baloon_01 = document.createElement('img');
        bg_baloon_01.src = baloon_images[1].src;
        baloon_body.appendChild(bg_baloon_01);
        
        var bg_baloon_02 = document.createElement('img');
        bg_baloon_02.src = baloon_images[2].src;
        baloon_body.appendChild(bg_baloon_02);
        
        var bg_baloon_03 = document.createElement('img');
        bg_baloon_03.src = baloon_images[3].src;
        baloon_body.appendChild(bg_baloon_03);
        
        var bg_baloon_04 = document.createElement('img');
        bg_baloon_04.src = baloon_images[4].src;
        baloon_body.appendChild(bg_baloon_04);
        
        var bg_baloon_05 = document.createElement('img');
        bg_baloon_05.src = baloon_images[5].src;
        baloon_body.appendChild(bg_baloon_05);
        
        var bg_baloon_06 = document.createElement('img');
        bg_baloon_06.src = baloon_images[6].src;
        baloon_body.appendChild(bg_baloon_06);
        
        var bg_baloon_07 = document.createElement('img');
        bg_baloon_07.src = baloon_images[7].src;
        baloon_body.appendChild(bg_baloon_07);
        
        var bg_baloon_08 = document.createElement('img');
        bg_baloon_08.src = baloon_images[8].src;
        baloon_body.appendChild(bg_baloon_08);
        
        var bg_baloon_09 = document.createElement('img');
        bg_baloon_09.src = baloon_images[9].src;
        baloon_body.appendChild(bg_baloon_09);
        
        var bg_baloon_10 = document.createElement('img');
        bg_baloon_10.src = baloon_images[10].src;
        baloon_body.appendChild(bg_baloon_10);
        
        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;
            
            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;
            }
            
            
            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_01.style){
                position = 'absolute';
                top = '0px';
                left = '0px';
                width = baloon_images[1].width+'px';
                height = baloon_images[1].height+'px';
                zIndex = 1;
            }
            
            with(bg_baloon_02.style){
                position = 'absolute';
                top = '0px';
                left = baloon_images[1].width+'px';
                width = (baloon_text.offsetWidth+baloon_padding*2)+'px';
                height = baloon_images[1].height+'px';
                zIndex = 2;
            }
            
            with(bg_baloon_03.style){
                position = 'absolute';
                top = '0px';
                right = '0px';
                width = baloon_images[1].width+'px';
                height = baloon_images[1].height+'px';
                zIndex = 3;
            }
            
            with(bg_baloon_04.style){
                position = 'absolute';
                top = baloon_images[1].height+'px';
                left = '0px';
                width = baloon_images[4].width+'px';
                height = (baloon_text.offsetHeight+baloon_padding*2)+'px';
                zIndex = 4;
            }
            
            with(bg_baloon_05.style){
                position = 'absolute';
                top = baloon_images[1].height+'px';
                left = baloon_images[1].width+'px';
                width = (baloon_text.offsetWidth+baloon_padding*2)+'px';
                height = (baloon_text.offsetHeight+baloon_padding*2)+'px';
                zIndex = 5;
            }
            
            with(bg_baloon_06.style){
                position = 'absolute';
                top = baloon_images[1].height+'px';
                right = '0px';
                width = baloon_images[6].width+'px';
                height = (baloon_text.offsetHeight+baloon_padding*2)+'px';
                zIndex = 6;
            }
            
            with(bg_baloon_07.style){
                position = 'absolute';
                bottom = '0px';
                left = '0px';
                width = baloon_images[7].width+'px';
                height = baloon_images[7].height+'px';
                zIndex = 7;
            }
            
            with(bg_baloon_08.style){
                position = 'absolute';
                bottom = '0px';
                left = baloon_images[7].width+'px';
                width = (baloon_text.offsetWidth+baloon_padding*2)+'px';
                height = baloon_images[8].height+'px';
                zIndex = 8;
            }
            
            with(bg_baloon_09.style){
                position = 'absolute';
                bottom = '0px';
                right = '0px';
                width = baloon_images[9].width+'px';
                height = baloon_images[9].height+'px';
                zIndex = 9;
            }
            
            with(bg_baloon_10.style){
                position = 'absolute';
                bottom = '-'+(baloon_images[10].height-1)+'px';
                left = '10px';
                width = baloon_images[10].width+'px';
                height = baloon_images[10].height+'px';
                zIndex = 10;
            }
            
            with(baloon_feet_mask.style){
                position = 'absolute';
                bottom = '-'+(baloon_images[10].height-1)+'px';
                left = '10px';
                width = baloon_images[10].width+'px';
                height = baloon_images[10].height+'px';
                zIndex = 10;
            }
            

        }

        function reset_feet(){
            with(bg_baloon_10.style){
                position = 'absolute';
                bottom = '-'+(baloon_images[10].height-1)+'px';
                left = '10px';
                width = baloon_images[10].width+'px';
                height = baloon_images[10].height+'px';
                zIndex = 10;
            }
            
            with(baloon_feet_mask.style){
                position = 'absolute';
                bottom = '-'+(baloon_images[10].height-1)+'px';
                left = '10px';
                width = baloon_images[10].width+'px';
                height = baloon_images[10].height+'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[1].width+baloon_padding)+'px';
                top = (baloon_images[1].height+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[1].width+baloon_images[3].width+baloon_padding*2)+'px';
            baloon_body.style.height = (baloon_text.offsetHeight+baloon_images[1].height+baloon_images[7].height+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[10].height)+'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[10].height;
            
            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(obj, distanza){
    
        if(baloon == null)
            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();
        //show_ttt(obj, indirizzo_centro.replace('%1', distanza), 250, 55);
    }
    
    function show_baloon_generic(obj, text, width){
    
       if(width == null)
            width = 200;
            
        if (baloon == null) {
        	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(baloon == null)
            return void(0);
        baloon.hide();
    }
    
    
    
    function set_order(ordine){
        var _get = create_get_array();
        
        var coppie_get = new Array();
        
        for(i in _get)
            if(i == 'ord')
                continue;
            else
                coppie_get[coppie_get.length] = i+'='+_get[i];
                
        coppie_get[coppie_get.length] = 'ord='+ordine;

        
        var temp_location = document.location.href;
        if(temp_location.indexOf('?') > -1)
            var temp_location = temp_location.substr(0, temp_location.indexOf('?'));
        
        document.location.href = temp_location+'?'+coppie_get.join('&');
    }














