function Thumb(path, onclick, alt) {
    this.alt     = (alt=='undefined') ? "iakke" : alt;
    this.path    = path;
    this.onclick = onclick;
}

//function Slideshow(id, images) {
function Slideshow(id, immagini) {

    
    this.id = id;    
    var speed  = 5;
    var border = 3;

    var interval = null;
    
    var container_crop       = document.createElement("div");    
    var plane                = document.createElement("div");    
    var max_width            = 0;    
    var width  = 0;
    var height = 0;
    
    var nLoaded    = 0;
    var nProcessed = 0;    
   
    var nImages    = immagini.length;
    var aImmagini  = new Array();
    var arrows     = new Array();
    
    arrows[0] = document.createElement("img");
    arrows[1] = document.createElement("img");
    
    arrows[0].src = "/immagini/fotogallery_dx.png";
    arrows[1].src = "/immagini/fotogallery_sx.png";
    
    arrows[0].onload  = onload;  arrows[1].onload  = onload;
    arrows[0].onerror = onerror; arrows[1].onerror = onerror;
    arrows[0].onabort = onabort; arrows[1].onabort = onabort;
    arrows[0].bLoaded = false  ; arrows[1].bLoaded = false;
    
    for(var i=0 ; i < immagini.length ; i++ ){            
        var img = document.createElement("img");
        var style= "vertical-align:middle; border:"+border+"px solid #FFFFFF";                
        img.src     = immagini[i].path;
        img.onclick = immagini[i].onclick;
        
        //img.height="150px";

        if(ie4) {img.style.setAttribute("cssText", style);}else{img.setAttribute('style', style);}
        img.onmouseover=function(){ this.style.border=border+"px solid #FF0000";}
        img.onmouseout =function(){ this.style.border=border+"px solid #FFFFFF";}
        
        // setta gli event handlers per gli oggetti immagine
        img.onload  = onload;
        img.onerror = onerror;
        img.onabort = onabort;
    
        img.bLoaded = false;
        
        aImmagini.push(img);
    }
        
    function moveDx() {       
        var left  = parseInt( plane.style.left.substr(0, plane.style.left.indexOf("px", 0)) );       
        plane.style.left = (left>0) ?  "-"+(parseInt(max_width)/3)+"px" : parseInt(left+speed)+"px";
    }
    
    function moveSx() {
        var left  = parseInt( plane.style.left.substr(0, plane.style.left.indexOf("px", 0)) );       
        plane.style.left = (left <= -((parseInt(max_width)/3)*2) ) ?  "-"+(parseInt(max_width)/3)+"px" : parseInt(left-speed)+"px";        
    }
    
    function getImgSize(imgSrc) {
        var newImg = new Image();
        newImg.src = imgSrc;
        var height = newImg.height;
        var width = newImg.width;
        alert ('The image size is '+width+'*'+height);
    }
        
    function init() {
        
        var container = document.getElementById(id);
        width     = container.style.width.substr(0, container.style.width.indexOf("px", 0));
        height    = container.style.height.substr(0, container.style.height.indexOf("px", 0));

        container.style.border = "1px solid gray";

        plane.id             = "plane";
        //plane.style.border   = "1px solid #00FF00";
        plane.style.position = "absolute";
        plane.style.padding  = "0px";
        plane.style.top      = 0;
        plane.style.left     = 0;

        for(var i=0 ; i < aImmagini.length ; i++ ){
        	
	    var ratio = aImmagini[i].width / aImmagini[i].height;            	
	    aImmagini[i].height  = height;
	    aImmagini[i].width = height*ratio;

            max_width += parseInt(aImmagini[i].width+parseInt(border)+parseInt(border));
            
            //alert(aImmagini[i].width);
            
            plane.appendChild(aImmagini[i]);
        }
        
        if(max_width > width ) {
            for(var j=0 ; j < 2 ; j++ ) { // Triplico la photogallery per poter simulare la rotazione delle immagini
                for(var i=0 ; i < immagini.length ; i++ ){
                    var img = document.createElement("img");            
                    var style= "vertical-align:middle; border:"+border+"px solid #FFFFFF";                                    
                    img.src     = immagini[i].path;
                    img.onclick = immagini[i].onclick;
                    if(ie4) {img.style.setAttribute("cssText", style);}else{img.setAttribute('style', style);}
                                  	
                    var ratio = img.width / img.height;
                    img.height  = height;
            	    img.width   = height*ratio;
                   
                    img.onmouseover=function(){ this.style.border=border+"px solid #FF0000";}
                    img.onmouseout =function(){ this.style.border=border+"px solid #FFFFFF";}
                    max_width += img.width+border+border;            
                    plane.appendChild(img);
                }
            }
        }
        
        plane.style.width = max_width+"px";        
        plane.style.left = (max_width>width) ? "-"+(parseInt(max_width)/3)+"px" : "0px";

        container_crop.id             = "container_crop";
        container_crop.style.overflow = "hidden";
        container_crop.style.position = "relative";
        container_crop.style.width    = width +"px";
        container_crop.style.height   = height+"px";

        container_crop.appendChild(plane);

        container = document.getElementById(id);
        container.appendChild(container_crop);

        if(max_width > width ) {
            // Sistema di Rotazione a DX
            if(!ie4){
                var dx = arrows[0];/*document.createElement("img");
                dx.src = "/immagini/fotogallery_dx.png";*/
                dx.style.left= parseInt(width-dx.width)+"px";
                
            } else {
                var  dx = document.createElement("div");
                var _dx = arrows[0];/*document.createElement("img");            
                _dx.src = "/immagini/fotogallery_dx.png";*/
               
                dx.style.width    = _dx.width+"px";            
                dx.style.left     = parseInt(width-_dx.width)+"px";
                
                _dx.style.filter  ="progid:DXImageTransform.Microsoft.Alpha(opacity=0)";
                dx.style.filter   ="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+_dx.src+"')";
                
                dx.appendChild(_dx);            
            }
            
            dx.style.position="absolute";
            dx.style.top="0px";        
                           
            dx.onmouseover = function() {
                interval = setInterval(moveDx, 10);
            }
            
            dx.onmouseout = function() {
                clearInterval(interval);
            }
            
            container_crop.appendChild(dx);
            
            // Sistema di Rotazione a SX
            if(!ie4){
                var sx = arrows[1];/*document.createElement("img");
                sx.src = "/immagini/fotogallery_sx.png";*/
                sx.style.left= "0px";
                
            } else {
                var  sx = document.createElement("div");
                var _sx = arrows[1];/*document.createElement("img");            
                _sx.src = "/immagini/fotogallery_sx.png";*/
               
                sx.style.width    = _sx.width+"px";            
                sx.style.left     = "0px";
                
                _sx.style.filter  ="progid:DXImageTransform.Microsoft.Alpha(opacity=0)";
                sx.style.filter   ="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+_sx.src+"')";
                
                sx.appendChild(_sx);
            }
            
            sx.style.position="absolute";
            sx.style.top="0px";        
                           
            sx.onmouseover = function() {
                interval = setInterval(moveSx, 10);
            }
            
            sx.onmouseout = function() {
                clearInterval(interval);
            }
            
            container_crop.appendChild(sx);        
            //-----------------------------------------------------------------------------------------------
        }
    }
    
    function onComplete() {
       nProcessed++;
       if ( nProcessed == (nImages+arrows.length) ) { init(); }
    }

    function onload() {
       bLoaded = true;
       nLoaded++;
       onComplete();
    }

    function onerror() {
       bError = true;
       onComplete();
    }

    function onabort() {
       bAbort = true;
       onComplete();
    }
}
