/*michel.staelens@wanadoo.fr*/ 
/*http://perso.wanadoo.fr/michel.staelens/  */ 
var deltax=0,deltay=0,xcour=0,ycour=0,i_info=-1 
var info=new Array() 
var preCharge=new Array() 

//initialisation des zones arriere (zar) et devant (zdv) 
function initScroll(){ 
        document.write('<div id="zar" class="scroll">&nbsp;</div>') 
        document.write('<div id="zdv" class="scroll">&nbsp;</div>') 
} 

//liaison=-1 pour depart; +1 pour arrivee; 0 pour les deux 
function add_txt(tit,txt,bas,mouvement,liaison){ 
        info[info.length]={type:"txt",titre:tit,texte:txt,bas:bas,mouvement:mouvement.substring(0,1),liaison:liaison} 
} 
function add_img(tit,source,bas,mouvement,liaison){ 
        preCharge[preCharge.length]=new Image()
        preCharge[preCharge.length-1].src=source
        info[info.length]={type:"img",titre:tit,source:source,bas:bas,mouvement:mouvement.substring(0,1),liaison:liaison} 
} 

//reecriture des objets zar et zdv 
function table_txt(tit,txt,bas){return("<table cellspacing=0 width="+mszone.l+" height="+mszone.h+"><tr><td class=scrollTitle>"+tit+"</td></tr><tr><td class=scrollBody width=100% height=100%>"+txt+"</td></tr><tr><td class=scrollFoot>"+bas+"</td></tr></table>")} 
function table_img(tit,source,bas){return("<table cellspacing=0 width="+mszone.l+" height="+mszone.h+"><tr><td class=scrollTitle>"+tit+"</td></tr><tr><td class=scrollBody width=100% height=100% valign=middel><center><img src=\""+source+"\" /></center></td></tr><tr><td class=scrollFoot>"+bas+"</td></tr></table>")} 

//debut boucle 
function startScroll(){ 
        initImage() 
        i_old=i_info 
        i_info++ 
        i_new=i_info 
        if(i_new>=info.length){i_info=0;i_new=0} 
        if(i_old==-1){//initialisation 
                positionnerObj("zar",mszone.x,mszone.y) 
		positionnerObj("zdv",mszone.x,mszone.y) 
        } 
        else
	{ 
                ceci=(info[i_old].type=="txt")?(table_txt(info[i_old].titre,info[i_old].texte,info[i_old].bas)):(table_img(info[i_old].titre,info[i_old].source,info[i_old].bas)) 
                redefinirObj((info[i_new].liaison!=-1)?"zar":"zdv",ceci) 
                positionnerObj("zar",mszone.x,mszone.y) 
                entrevoirObj("zar",0,0,mszone.l,mszone.h) 
        } 
        ceci=(info[i_new].type=="txt")?(table_txt(info[i_new].titre,info[i_new].texte,info[i_new].bas)):(table_img(info[i_new].titre,info[i_new].source,info[i_new].bas)) 
        redefinirObj((info[i_new].liaison!=-1)?"zdv":"zar",ceci) 
        switch(info[i_info].mouvement){ 
                case("g"): case("l"): xcour=-mszone.l;ycour=0;deltax=2;deltay=0;break //gauche,left 
                case("d"): case("r"): xcour=mszone.l;ycour=0;deltax=-2;deltay=0;break //droit,right 
                case("h"): case("t"): xcour=0;ycour=-mszone.h;deltax=0;deltay=2;break //haut,top 
                case("b"): //bas,bottom,par defaut 
                default  : xcour=0;ycour=mszone.h;deltax=0;deltay=-2;break 
        } 
        defiler(info[i_info].mouvement,info[i_info].liaison) 
} 
function defiler(cas,liaison){ 
        xcour+=deltax 
        ycour+=deltay 
        switch(cas){ 
                case("g"): case("l"): 
                        if (xcour<=0){ 
                                if(liaison==0){ 
                                        positionnerObj("zar",mszone.x+mszone.l+xcour,mszone.y) 
                                        entrevoirObj("zar",0,0,-xcour,mszone.h) 
                                } 
                                if(liaison!=-1){ 
                                        positionnerObj("zdv",mszone.x+xcour,mszone.y) 
                                        entrevoirObj("zdv",-xcour,0,mszone.l,mszone.h) 
                                } 
                                if(liaison==-1){ 
                                        positionnerObj("zdv",mszone.x-mszone.l-xcour,mszone.y) 
                                        entrevoirObj("zdv",mszone.l+xcour,0,mszone.l,mszone.h) 
                                } 
                                timerScroll=setTimeout("defiler('"+cas+"',"+liaison+")",vit_move_x) 
                        } 
                        else{timerScroll=setTimeout("startScroll()",vit_change)} 
                        break 
                case("d"): case("r"): 
                        if (xcour>=0){ 
                                if(liaison==0){ 
                                        positionnerObj("zar",mszone.x-mszone.l+xcour,mszone.y) 
                                        entrevoirObj("zar",mszone.l-xcour,0,mszone.l,mszone.h) 
                                } 
                                if(liaison!=-1){ 
                                        positionnerObj("zdv",mszone.x+xcour,mszone.y) 
                                        entrevoirObj("zdv",0,0,mszone.l-xcour,mszone.h) 
                                } 
                                if(liaison==-1){ 
                                        positionnerObj("zdv",mszone.x+mszone.l-xcour,mszone.y) 
                                        entrevoirObj("zdv",0,0,xcour,mszone.h) 
                                } 
                                timerScroll=setTimeout("defiler('"+cas+"',"+liaison+")",vit_move_x) 
                        } 
                        else{timerScroll=setTimeout("startScroll()",vit_change)} 
                        break 
                case("h"): case("t"): 
                        if (ycour<=0){ 
                                if(liaison==0){ 
                                        positionnerObj("zar",mszone.x,mszone.y+mszone.h+ycour) 
                                        entrevoirObj("zar",0,0,mszone.l,-ycour) 
                                } 
                                if(liaison!=-1){ 
                                        positionnerObj("zdv",mszone.x,mszone.y+ycour) 
                                        entrevoirObj("zdv",0,-ycour,mszone.l,mszone.h) 
                                } 
                                if(liaison==-1){ 
                                        positionnerObj("zdv",mszone.x,mszone.y-mszone.h-ycour) 
                                        entrevoirObj("zdv",0,mszone.h+ycour,mszone.l,mszone.h) 
                                } 
                                timerScroll=setTimeout("defiler('"+cas+"',"+liaison+")",vit_move_y) 
                        } 
                        else{timerScroll=setTimeout("startScroll()",vit_change)} 
                        break 
                case("b"): 
                default  : 
                        if (ycour>=0){ 
                                if(liaison==0){ 
                                        positionnerObj("zar",mszone.x,mszone.y-mszone.h+ycour) 
                                        entrevoirObj("zar",0,mszone.h-ycour,mszone.l,mszone.h) 
                                } 
                                if(liaison!=-1){ 
                                        positionnerObj("zdv",mszone.x,mszone.y+ycour) 
                                        entrevoirObj("zdv",0,0,mszone.l,mszone.h-ycour) 
                                } 
                                if(liaison==-1){ 
                                        positionnerObj("zdv",mszone.x,mszone.y+mszone.h-ycour) 
                                        entrevoirObj("zdv",0,0,mszone.l,ycour) 
                                } 
                                timerScroll=setTimeout("defiler('"+cas+"',"+liaison+")",vit_move_y) 
                        } 
                        else{timerScroll=setTimeout("startScroll()",vit_change)} 
                        break 
        } 
} 

//navigateurs 
var da        =document.all 
var dom        =document.getElementById 
var dl        =document.layers 

//position image 
var mszone 
function initImage() { 
        var img; 
        if (dl){ 
                img = findImage("scroll",document) 
                mszone = getPosImage(img) 
                mszone.l = img.width 
                mszone.h = img.height 
        } 
        else if (da){ 
                img = document.all["scroll"] 
                mszone = elementXYOffset(img) 
                mszone.l = img.width 
                mszone.h = img.height 
        } 
        else if (dom){ 
                img = document.getElementById("scroll") 
                mszone = elementXYOffset(img) 
                mszone.l = img.width 
                mszone.h = img.height 
        } 
//        status=("[ x , y , l , h ] = [ " + mszone.x + " , " + mszone.y + " , " + mszone.l + " , " + mszone.h + " ]") 
} 
function findImage(name,doc){ 
        var i,img; 
        for (i=0; i < doc.images.length; i++) 
                if(doc.images[i].name==name) 
                return doc.images[i]; 
        for (i=0; i < doc.layers.length; i++) 
                if((img=findImage(name,doc.layers[i].document))!=null){ 
                        img.container=doc.layers[i]; 
                        return img; 
                } 
                return null; 
} 
function getPosImage(obj){ 
        if(obj.container!=null) return {x:obj.container.pageX+obj.x,y:obj.container.pageY+obj.y} 
        else return {x:obj.x,y:obj.y} 
} 
function elementXYOffset(obj){ 
        var xOffset, yOffset, elParent; 
        if(typeof obj.offsetTop == 'number'){ 
                yOffset = obj.offsetTop||0; 
                xOffset = obj.offsetLeft||0; 
                elParent = obj.offsetParent; 
                while(elParent){ 
                        yOffset += elParent.offsetTop||0; 
                        xOffset += elParent.offsetLeft||0; 
                        elParent = elParent.offsetParent; 
                } 
        } 
        else if(typeof obj.top == 'number'){//some Net 4 DIVs 
                yOffset = obj.top; 
                xOffset = obj.left; 
        } 
        else if(typeof obj.y == 'number'){//Net 4 IMG & A 
                yOffset = obj.y; 
                xOffset = obj.x; 
        } 
        else{//information is not available 
                yOffset = 0; //maybe use NaN instead. 
                xOffset = 0; 
        } 
        return {x:xOffset,y:yOffset}; 
} 

//objets 
function redefinirObj(nom,ceci){ 
        if(da){document.all(nom).innerHTML=ceci} 
        else if(dom){document.getElementById(nom).innerHTML=ceci} 
        else if(dl){doc=document.layers[nom];doc.document.write(ceci);doc.document.close()} 
} 
function positionnerObj(nom,gauche,haut){ 
        if(da){document.all(nom).style.left=gauche;document.all(nom).style.top=haut} 
        else if(dom){document.getElementById(nom).style.left=gauche+"px";document.getElementById(nom).style.top=haut+"px"} 
        else if(dl){document.layers[nom].left=gauche;document.layers[nom].top=haut} 
} 
function entrevoirObj(nom,gauche,haut,droit,bas){ 
        if(da){document.all(nom).style.clip="rect("+haut+"px "+droit+"px "+bas+"px "+gauche+"px)"} 
        else if(dom){document.getElementById(nom).style.clip="rect("+haut+"px "+droit+"px "+bas+"px "+gauche+"px)"} 
        else if(dl){document.layers[nom].clip.left=gauche;document.layers[nom].clip.top=haut;document.layers[nom].clip.right=droit;document.layers[nom].clip.bottom=bas} 
} 

function popup(page,fen,lfen,hfen){ 
        donnees=window.open(page,fen,"resizable=yes,scrollbars=yes,width="+lfen+",height="+hfen) 
        donnees.focus() 
} 
function highlight(ceci){ 
        ceci.zone.focus(); 
        ceci.zone.select(); 
} 
function valider(ceci){ 
        titre=transcar(ceci.titre.value) 
        corps=transcar(ceci.corps.value) 
        nota=transcar(ceci.nota.value) 
        ceci.zone.value="onMouseOver=\"visioninfo("+((titre!="")?"\'"+titre+"\'":"null")+","+((corps!="")?"\'"+corps+"\'":"null")+","+((nota!="")?"\'"+nota+"\'":"null")+")\" onMouseOut=\"cacheinfo()\" " 
} 
function transcar(ceci){codetrans="";for(i=0;i<ceci.length;i++){codetrans+=((ceci.charCodeAt(i)>127)||(ceci.charCodeAt(i)==34)||(ceci.charCodeAt(i)==39))?"\\&#"+ceci.charCodeAt(i)+";":ceci.substring(i,i+1)}return codetrans}
