var opacitySpeed = 2;	// Speed of opacity - switching between large images - Lower = faster
var opacitySteps = 10; 	// Also speed of opacity - Higher = faster
var slideSpeed = 5;	// Speed of thumbnail slide - Lower = faster
var slideSteps = 8;	// Also speed of thumbnail slide - Higher = faster

var DHTML_galleries = new Array();
var browserIsOpera = false;

function initGalleryScript(gallery, num_cols) {

    var gallery_index = null;
    // Check if a gallery index already exist
    gallery_index = getGalleryIndex(gallery);
    if (gallery_index == null) {
        gallery_index = DHTML_galleries.length;
    }

    // Initialize variables
    DHTML_galleries[gallery_index] = new Array();
    DHTML_galleries[gallery_index]['name'] = gallery;
    DHTML_galleries[gallery_index]['largeImage'] = false;
    DHTML_galleries[gallery_index]['imageToShow'] = false;
    DHTML_galleries[gallery_index]['currentOpacity'] = 100;
    DHTML_galleries[gallery_index]['slideWidth'] = false;
    DHTML_galleries[gallery_index]['thumbTotalWidth'] = false;
    DHTML_galleries[gallery_index]['viewableWidth'] = false;
	
    if (num_cols) {
        DHTML_galleries[gallery_index]['columnsOfThumbnails'] = num_cols;
    } else {
        DHTML_galleries[gallery_index]['columnsOfThumbnails'] = false;
    }
    
    DHTML_galleries[gallery_index]['currentActiveImage'] = false;
    DHTML_galleries[gallery_index]['thumbDiv'] = false;
    DHTML_galleries[gallery_index]['thumbSlideInProgress'] = false;

    DHTML_galleries[gallery_index]['leftArrowObj'] = null;
    DHTML_galleries[gallery_index]['rightArrowObj'] = null;
    DHTML_galleries[gallery_index]['thumbsColIndex'] = 1;
    DHTML_galleries[gallery_index]['thumbsLeftPos'] = false;
    
    var browserIsOpera = (navigator.userAgent.indexOf('Opera')>=0) ? true : false;
    var currentUniqueOpacityId = false;
	
    // Fill variables values
    DHTML_galleries[gallery_index]['leftArrowObj'] = document.getElementById('DHTMLGallery_' + gallery + '_leftArrow');		
    DHTML_galleries[gallery_index]['leftArrowObj'].style.visibility='hidden';
    DHTML_galleries[gallery_index]['leftArrowObj'].style.cursor = 'pointer';
    
    DHTML_galleries[gallery_index]['rightArrowObj'] = document.getElementById('DHTMLGallery_' + gallery + '_rightArrow');	
    DHTML_galleries[gallery_index]['rightArrowObj'].style.cursor = 'pointer';
    
    DHTML_galleries[gallery_index]['largeImage'] = document.getElementById('DHTMLGallery_' + gallery + '_largeImage').getElementsByTagName('IMG')[0];
    DHTML_galleries[gallery_index]['imageDesc']  = document.getElementById('DHTMLGallery_' + gallery + '_imageDesc');
    
    var innerDiv = document.getElementById('DHTMLGallery_' + gallery + '_thumbs_inner');
    DHTML_galleries[gallery_index]['slideWidth'] = innerDiv.getElementsByTagName('DIV')[0].offsetWidth;
    
    DHTML_galleries[gallery_index]['thumbDiv'] = document.getElementById('DHTMLGallery_' + gallery + '_thumbs_inner');
    DHTML_galleries[gallery_index]['thumbDiv'].style.left = '0px';
		
    var subDivs = DHTML_galleries[gallery_index]['thumbDiv'].getElementsByTagName('DIV');
    DHTML_galleries[gallery_index]['thumbTotalWidth'] = 0;
    var tmpLeft = 0;
    for(var no=0; no < subDivs.length; no++) {
        if (subDivs[no].className == 'strip_of_thumbnails') {
 	    DHTML_galleries[gallery_index]['thumbTotalWidth'] = DHTML_galleries[gallery_index]['thumbTotalWidth'] + DHTML_galleries[gallery_index]['slideWidth'];
  	    subDivs[no].style.left = tmpLeft + 'px';
	    subDivs[no].style.top = '0px';
	    tmpLeft = tmpLeft + subDivs[no].offsetWidth;
       }
    }

    DHTML_galleries[gallery_index]['viewableWidth'] = document.getElementById('DHTMLGallery_' + gallery + '_thumbs').offsetWidth;
		
    DHTML_galleries[gallery_index]['currentActiveImage'] = DHTML_galleries[gallery_index]['thumbDiv'].getElementsByTagName('A')[0].getElementsByTagName('IMG')[0];
    DHTML_galleries[gallery_index]['currentActiveImage'].className='activeImage';
}

function getGalleryIndex(gallery) {
    for (var index = 0; index < DHTML_galleries.length; index++) {
        if (DHTML_galleries[index].name == gallery) {
	    return index;
	}
    }
}

function moveThumbnailsLeft(gallery) {
    moveThumbnails(gallery, 'left');
}

function moveThumbnailsRight(gallery) {
    moveThumbnails(gallery, 'right');
}

function moveThumbnails(gallery, dir) {
    gallery_index = getGalleryIndex(gallery);
    
    if (DHTML_galleries[gallery_index]['thumbSlideInProgress']) {
        return;
    }
    
    DHTML_galleries[gallery_index]['thumbSlideInProgress'] = true;
    if (dir == 'left') {
        DHTML_galleries[gallery_index]['thumbsColIndex']--;
	DHTML_galleries[gallery_index]['rightArrowObj'].style.visibility='visible';
	if (DHTML_galleries[gallery_index]['thumbDiv'].style.left.replace('px','')/1>=0) {
	    DHTML_galleries[gallery_index]['leftArrowObj'].style.visibility='hidden';
	    DHTML_galleries[gallery_index]['thumbSlideInProgress'] = false;
	    return;
	}
	slideThumbs(gallery, slideSteps, 0);
    } else {
        DHTML_galleries[gallery_index]['thumbsColIndex']++;
	DHTML_galleries[gallery_index]['leftArrowObj'].style.visibility='visible';
	var left = DHTML_galleries[gallery_index]['thumbDiv'].style.left.replace('px','')/1;	
	var showArrow = true;
	    
	if (DHTML_galleries[gallery_index]['thumbTotalWidth'] + left - DHTML_galleries[gallery_index]['slideWidth'] <= DHTML_galleries[gallery_index]['viewableWidth']) {
            showArrow = false;
	}
	    
	if (DHTML_galleries[gallery_index]['columnsOfThumbnails']) {
	    showArrow = true;
	}
				
	if (!showArrow) {
            DHTML_galleries[gallery_index]['rightArrowObj'].style.visibility='hidden';
	    DHTML_galleries[gallery_index]['thumbSlideInProgress'] = false;
	    return;
	}	
  	slideThumbs(gallery, (slideSteps*-1), 0);
    }	
}
	
function slideThumbs(gallery, speed, currentPos) {
    gallery_index = getGalleryIndex(gallery);
    
    var leftPos;
    if (DHTML_galleries[gallery_index]['thumbsLeftPos']) {
        leftPos = DHTML_galleries[gallery_index]['thumbsLeftPos'];
    } else {
        var leftPos = DHTML_galleries[gallery_index]['thumbDiv'].style.left.replace('px','')/1;
	DHTML_galleries[gallery_index]['thumbsLeftPos'] = leftPos;
    }

    currentPos = currentPos + Math.abs(speed);
    var tmpLeftPos = leftPos;
    leftPos = leftPos + speed;
    DHTML_galleries[gallery_index]['thumbsLeftPos'] = leftPos;
    DHTML_galleries[gallery_index]['thumbDiv'].style.left = leftPos + 'px';
    if (currentPos < DHTML_galleries[gallery_index]['slideWidth']) {
        setTimeout('slideThumbs("' + gallery + '",' + speed + ',' + currentPos + ')', slideSpeed);
    } else{
        if (tmpLeftPos >= 0 || (DHTML_galleries[gallery_index]['columnsOfThumbnails'] && DHTML_galleries[gallery_index]['thumbsColIndex'] == 1)) {
   	    document.getElementById('DHTMLGallery_' + gallery + '_leftArrow').style.visibility='hidden';
	}
	
	var left = tmpLeftPos;		
	var showArrow = true;
	if (DHTML_galleries[gallery_index]['thumbTotalWidth'] + left - DHTML_galleries[gallery_index]['slideWidth'] <= DHTML_galleries[gallery_index]['viewableWidth']) {
   	    showArrow = false;
	}
	
	if (DHTML_galleries[gallery_index]['columnsOfThumbnails']) {
	    if ((DHTML_galleries[gallery_index]['thumbsColIndex']+1) < DHTML_galleries[gallery_index]['columnsOfThumbnails']) {
	        showArrow = true;
	    } else {
	        showArrow = false;
	    }
	}
	
	if (!showArrow) {
	   document.getElementById('DHTMLGallery_' + gallery + '_rightArrow').style.visibility='hidden';
	}					
	DHTML_galleries[gallery_index]['thumbSlideInProgress'] = false;
    }
}
	
function showImage(gallery, imagePath, imgDesc, inputObj) {
    gallery_index = getGalleryIndex(gallery);
    
    showGalleryLoading(gallery, true, "Chargement de l'image en cours...");
    if (DHTML_galleries[gallery_index]['currentActiveImage']) {
        if (DHTML_galleries[gallery_index]['currentActiveImage'] == inputObj.getElementsByTagName('IMG')[0]) {
            return;
        }
        DHTML_galleries[gallery_index]['currentActiveImage'].className='';
    }
    
    DHTML_galleries[gallery_index]['currentActiveImage'] = inputObj.getElementsByTagName('IMG')[0];
    DHTML_galleries[gallery_index]['currentActiveImage'].className='activeImage';
    DHTML_galleries[gallery_index]['imageToShow'] = imagePath;
    
    DHTML_galleries[gallery_index]['imageDesc'].innerHTML = imgDesc;
    
    var tmpImage = new Image();
    tmpImage.src = imagePath;
    currentUniqueOpacityId = Math.random();
    moveOpacity(gallery, opacitySteps*-1, currentUniqueOpacityId);
}
	
function setOpacity(gallery) {
    gallery_index = getGalleryIndex(gallery);
    
    if(document.all) {
        DHTML_galleries[gallery_index]['largeImage'].style.filter = 'alpha(opacity=' + DHTML_galleries[gallery_index]['currentOpacity'] + ')';
    } else {
  	DHTML_galleries[gallery_index]['largeImage'].style.opacity = DHTML_galleries[gallery_index]['currentOpacity']/100;
    }		
}
	
function moveOpacity(gallery, speed, uniqueId) {
    gallery_index = getGalleryIndex(gallery);
    
    if (browserIsOpera) {
        DHTML_galleries[gallery_index]['largeImage'].src = DHTML_galleries[gallery_index].imageToShow;
	DHTML_galleries[gallery_index]['largeImage'].onload = showGalleryLoading(gallery, false);
	return;
    }
		
    DHTML_galleries[gallery_index]['currentOpacity'] = DHTML_galleries[gallery_index]['currentOpacity'] + speed;
    if (DHTML_galleries[gallery_index]['currentOpacity'] <= 5 && speed < 0) {
        var tmpParent = DHTML_galleries[gallery_index]['largeImage'].parentNode; 
	DHTML_galleries[gallery_index]['largeImage'].parentNode.removeChild(DHTML_galleries[gallery_index]['largeImage']);
	DHTML_galleries[gallery_index]['largeImage'] = document.createElement('IMG');
	tmpParent.appendChild(DHTML_galleries[gallery_index]['largeImage']);
	setOpacity(gallery);
	DHTML_galleries[gallery_index]['largeImage'].src = DHTML_galleries[gallery_index].imageToShow;
	DHTML_galleries[gallery_index]['largeImage'].onload = showGalleryLoading(gallery, false);
		
	speed=opacitySteps;
    }
    
    if (DHTML_galleries[gallery_index]['currentOpacity'] >= 99 && speed > 0) {
        DHTML_galleries[gallery_index]['currentOpacity'] = 99;
    }
    setOpacity(gallery);
    
    if (DHTML_galleries[gallery_index]['currentOpacity'] >= 99 && speed > 0) {
        return;
    }
    
    if (uniqueId == currentUniqueOpacityId) {
        setTimeout('moveOpacity("' + gallery + '",' + speed + ',' + uniqueId + ')', opacitySpeed);
    }
}

function showGalleryLoading(gallery, display, msg) {
    var loadingDiv = document.getElementById('DHTMLGallery_' + gallery + '_loading');
    if (msg) {
       loadingDiv.innerHTML = "(" + msg + ")";
    } else {
       if (display) {
           loadingDiv.innerHTML = "(Chargement...)";
       } else {
           loadingDiv.innerHTML = '';
       }
    }
}
