var _largeurImageDefaut = 142 ;
var tempoDefilement = 1 ;

var tempoDefilementAuto = 2000 ;
var isRollAuto = false ;
var isInit = false ;
var rollAutoOn ;

var ePanorama = null;
var offsetMove = _largeurImageDefaut ;
var offsetVerticalMove = 100 ;

var maxOffsetMoveRight = 0 ;

var indexNews = 1 ;
var listeNews = new ArrayList() ;

/* ###########################################
* INIT : Fonction permettant d'initialiser le carrousel
*/
function initRoll(panorama) {
    ePanorama = getElement(panorama, true, "");
    if (ePanorama == null) {    
        return;
    }
    if(listeNews.length() == 1){
        changeLinkNews() ;
        hideNav() ;        
    }
    else{    
        ePanorama.style.left = "0px" ;
        ePanorama.style.width = parseInt(_largeurImageDefaut*listeNews.length()) + "px" ;
        
        if(navigator.appName == "Netscape"){
            tempoDefilement = 2 ;
            tempoDefilementAuto = 3000 ;
        }
        isInit = true ;
        rollRightAuto() ;
    }
}


/* ###########################################
* Fonction permettant de gerer l'affichage des liens produits precedent
* en general quand le premier de la liste est afiche, le lien precedent est cache
*/
function hideNav(){
    var previousImg = getElement("prevnews-img", true, "") ;
    if(previousImg){
        hideBloc(previousImg) ;
    }
    var nextImg = getElement("nextnews-img", true, "") ;
    if(nextImg){
        hideBloc(nextImg) ;
    }
}


/* ###########################################
* Fonction permettant de sélectionner un produit directement (cad peu importe la position) dans le carroussel
* param :
*    - urlProduct : l'url de la nouvelle fiche produit
*/
function findNews(){   
    //l'index va servir a decaler le carrousel haut ou bas
    ePanorama.style.left = "-" + ((indexNews-1)* _largeurImageDefaut) + "px" ;    
}


/* ###########################################
* Fonction permettant de faire défiler le carrousel du haut vers la droite
*/
function rollRight() {
    isRollAuto = false ;
    clearTimeout(rollAutoOn) ;
    
    //Si nous ne sommes pas sur le dernier produit
    //on va continuer a reculer le carrousel vers la gauche de 5px
    //et cela jusqu'a ce que offsetMove est different de 0
    if(offsetMove != 0 && indexNews != listeNews.length()) {     
        var leftPanorama = (ePanorama.style.left).replace("px", "") ;
        ePanorama.style.left = parseInt(leftPanorama) - tempoDefilement + "px" ;         
        
        //on rappelle la fonction en deduisant de 5 la valeur de offsetMove qui vaut par défaut 250
        setTimeout('rollRight()', tempoDefilement);
        offsetMove = parseInt(offsetMove) - parseInt(tempoDefilement) ;
        return;
    }    
    else{ //cas du carrousel a l'arret
        offsetMove = _largeurImageDefaut ;

        //si on n'est pas sur le dernier produit
        //on incremente indexProduitBas pour pouvoir recuperer la bonne fiche produit 
        if(indexNews < listeNews.length()){
            indexNews = indexNews + 1 ;
        }
        else{//sinon, on remet a 0 indexNews et on remet le carrousel dans l'etat initial
            indexNews = 1 ;
            findNews() ;
        }
        changeLinkNews() ;        
        rollAutoOn = setTimeout('rollRightAuto()', tempoDefilementAuto);
    }
}


/* ###########################################
* Fonction permettant de faire défiler le carrousel du haut vers la droite
*/
function rollRightAuto(){
    isRollAuto = true ;
    
    if(!isInit){
        //Si nous ne sommes pas sur le dernier produit
        //on va continuer a reculer le carrousel vers la gauche de 5px
        //et cela jusqu'a ce que offsetMove est different de 0
        if(offsetMove != 0 && indexNews != listeNews.length()) {         
            var leftPanorama = (ePanorama.style.left).replace("px", "") ;
            ePanorama.style.left = parseInt(leftPanorama) - tempoDefilement + "px" ;
        
            //on rappelle la fonction en deduisant de 5 la valeur de offsetMove qui vaut par défaut 250
            setTimeout('rollRightAuto()', tempoDefilement);
            offsetMove = offsetMove - tempoDefilement ;
            return;
        }    
        else{ //cas du carrousel a l'arret
            offsetMove = _largeurImageDefaut ;        
            
            //si on n'est pas sur le dernier produit
            //on incremente indexProduitBas pour pouvoir recuperer la bonne fiche produit 
            if(indexNews < listeNews.length()){
                indexNews = indexNews + 1 ;
            }
            else{//sinon, on remet a 0 indexNews et on remet le carrousel dans l'etat initial
                indexNews = 1 ;
                findNews() ;
            }
            changeLinkNews() ;
            rollAutoOn = setTimeout('rollRightAuto()', tempoDefilementAuto);
        }
    }
    else{
        isInit = false ;
        changeLinkNews() ;        
        rollAutoOn = setTimeout('rollRightAuto()', tempoDefilementAuto);
    }
}


/* ###########################################
* Fonction permettant de faire défiler le carrousel du haut vers la gauche
*/
function rollLeft() {
    isRollAuto = false ;
    clearTimeout(rollAutoOn) ;
    
    //si le carrousel n'est pas sur le premier produit (offsetLeft != 0)
    //on va continuer a avancer le carrousel vers la droite de 5px
    //et cela jusqu'a ce que offsetMove est different de 0    
    if(offsetMove != 0 && ePanorama.offsetLeft != 0){
        var leftPanorama = (ePanorama.style.left).replace("px", "") ;
        ePanorama.style.left = parseInt(leftPanorama) + tempoDefilement + "px" ;
        
        //on rappelle la fonction en deduisant de 5 la valeur de offsetMove qui vaut par défaut 250
        setTimeout("rollLeft()", 5);
        offsetMove = offsetMove - tempoDefilement ;
        return;
    }
    else{
        offsetMove = _largeurImageDefaut ;

        //si on n'est pas sur le premier produit
        //on décrémente indexProduitHaut pour pouvoir recuperer la bonne fiche produit         
        if(indexNews != 1){
            indexNews = indexNews - 1 ;
        }
        else{
            indexNews = listeNews.length() ;
            findNews() ;
        }
        changeLinkNews() ;
        rollAutoOn = setTimeout('rollRightAuto()', tempoDefilementAuto);
    }
}


/* ###########################################
* Fonction permettant de faire stoper le défilement
*/
function stopRollAuto(){
    clearTimeout(rollAutoOn) ;
}

/* ###########################################
* Fonction permettant de faire stoper le défilement
*/
function startRollAuto(){
    clearTimeout(rollAutoOn) ;
    rollAutoOn = setTimeout('rollRightAuto()', tempoDefilementAuto);
}

/* ###########################################
* Fonction permettant de faire stoper le défilement
*/
function changeLinkNews(){
    var newsHpg = listeNews.get(indexNews-1) ;
    //recuperation du target
    var targetNews = "" ;
    if(newsHpg.targetNews == "3"){
        targetNews = "_top" ;
    }
    else if(newsHpg.targetNews == "1"){
        targetNews = "_blank" ;
    }
     if(newsHpg.calquefiltre == "yes"){        //cas ou le lien doit s ouvrir calque+filtre exemple : catalogueinteractif
       var idliencalquefiltre="savoirplus";
       var objetliencalquefiltre=document.getElementById(idliencalquefiltre) ;
       objetliencalquefiltre.href = newsHpg.urlNews ;          
       if((!widthcalquefiltre) || (widthcalquefiltre=='') || (widthcalquefiltre==null)){
           widthcalquefiltre="800";
       }
       if((!heightcalquefiltre) ||(heightcalquefiltre=='') ||(heightcalquefiltre==null)){
           heightcalquefiltre="500";
       }
        objetliencalquefiltre.onclick =function onclick(event){displayPopupFilter('filtre', 'calquecontainer', newsHpg.urlNews,widthcalquefiltre,heightcalquefiltre, 'iframenews'); return false;;return false;};      
    }
    else if(newsHpg.calquefiltre == "no"){
        setHref("savoirplus", newsHpg.urlNews, targetNews) ;
    }
}

