var enabletip=false //la fonctionnalite boite de dialogue est-elle activee ou non
var ie=document.all //script execute sur IE ou non
var ns6=document.getElementById && !document.all //script execute sur FF ou non
var dhtmltooltip = "" ; //l'objet boite de dialogue
var curX = "" ; //position X de la souris
var curY = "" ; //position Y de la souris
var timeMasque = "" ; //la variable correspondant au setTimeout de la fonction masque()
var ratio = 2 ; //rapport entre largeur de la grande image et largeur de la petite image ici 800 et 400 


/** #########################################
 * Permet de recuperer l'objet dhtmltooltipId. Cette objet est une boite de dialogue qui va suivre les mouvements de la souris
 * @params :
 *    - dhtmltooltipId : l'id du bloc correspondant a cette boite
 *    - targetparent : la fonction est-elle appele d'une iframe
*/
function getHtmlToolTip(dhtmltooltipId, targetparent){
    var tipobj;
    //cas d'un appel depuis une iframe
    if(targetparent){
        if (parent.document.getElementById){
             tipobj = parent.document.getElementById(dhtmltooltipId);
        }
        else if(document.all){
             tipobj = document.all(dhtmltooltipId);
         }
        else{
            tipobj = document.dhtmltooltipId;
        }        
    }
    //cas d'un appel en pleine page
    else{
        if (document.getElementById){
             tipobj = document.getElementById(dhtmltooltipId);
        }
        else if(document.all){
             tipobj = document.all(dhtmltooltipId);
         }
        else{
            tipobj = document.dhtmltooltipId;
        }
    }
    
    dhtmltooltip = tipobj
    return tipobj ;
}

/** #########################################
 * Permet de recuperer l'objet BODY de la page html
*/
function ietruebody(){
    return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

/** #########################################
 * Permet de copier un texte dans la boite de dialogue
 *@params:
 *    - thetext : texte a afficher
 *    - thecolor : couleur de fond de la boite de dialogue
 *    - thewidth : taille en largeur de la boite
 *    =================> N'EST PLUS UTILISE
*/
function ddrivetip(thetext, thecolor, thewidth){
    var tipobj = getHtmlToolTip() ; //recuperation de la boite de dialogue
    
    if (typeof thewidth!="undefined") tipobj.style.width=thewidth+"px" ; //on fixe la taille en largeur de la boite
    if (typeof thecolor!="undefined" && thecolor!="") tipobj.style.backgroundColor=thecolor ; //on fixe la couleur de fond
    tipobj.innerHTML=thetext ; //on copie le texte dans la boite
    enabletip=true ; //on active le mouvement de la boite en fonction de la souris
    return false
}

/** #########################################
 * Permet de copier le contenu d'un bloc div dans la boite de dialogue
 *@params:
 *    - imgObj : l'objet image sur lequel est appele cette fonction (FACULTATIF, peut valoir "")
 *    - divId : l'id du bloc a copier dans la boite de dialogue
 *    - thecolor : couleur de fond de la boite de dialogue
 *    - thewidth : taille en largeur de la boite
 *    - dhtmltooltipId : l'identifiant de la boite de dialogue
 *    - targetparent : appel du script depuis une iframe
*/
function ddrivetip2(imgObj, divId, thecolor, thewidth, dhtmltooltipId, targetparent){
    document.onmousemove=positiontip ; //on lance le calcul du positionnement de la souris

    var tipobj = getHtmlToolTip(dhtmltooltipId, targetparent) ;   //recuperation de la boite de dialogue
    
    if (typeof thewidth!="undefined") tipobj.style.width=thewidth+"px"; //on fixe la taille en largeur de la boite
    if (typeof thecolor!="undefined" && thecolor!="") tipobj.style.backgroundColor=thecolor; //on fixe la couleur de fond
    
    var divObj =document.getElementById(divId); //on recuperer le bloc div a copier
    
    if(divObj != null){
        tipobj.innerHTML = divObj.innerHTML ; //on copier le contenu du bloc div dans la boite de dialogue
        
        //Si la fonction a ete appele depuis une image, on desactive le texte alternatif sur cette image
        if (typeof imgObj == "string") {
            var imageObj =document.getElementById(imgObj);
            if (imageObj) {
                imageObj.alt = "" ;
                imageObj.title = "" ;
            }
        }
        else {
            if (imgObj) {
                imgObj.alt = "" ;
                imgObj.title = "" ;
            }
        }
        
        enabletip=true ; //on active le mouvement de la boite en fonction de la souris
        return false        
    }
}

/** #########################################
 * Permet de calculer la position X et Y de la souris
 *@params:
 *    - e : l'evenement
*/
function positioncurseur(e){
    curX=(ns6)?e.pageX : event.clientX+ietruebody().scrollLeft;
    curY=(ns6)?e.pageY : event.clientY+ietruebody().scrollTop;
}


/** #########################################
 * Permet de calculer la position X et Y de la souris et d'afficher la boite de dialogue aupres du pointeur
 *@params:
 *    - e : l'evenement
*/
function positiontip(e){   
    var tipobj = dhtmltooltip ; //boite de dialogue
             
    if (enabletip){
        positioncurseur(e) ;
        
	var offsetxpoint=-60  ; //placement x de la souris par rapport a la boite
	var offsetypoint=20; //placement y de la souris par rapport a la boite
	
	if(typeof isPageFamille != "undefined" && isPageFamille){
		if(typeof afficheQuickZoom != "undefined" && afficheQuickZoom == "1"){
	       		offsetxpoint=-30  ; //placement x de la souris par rapport a la boite
			offsetypoint=-285; //placement y de la souris par rapport a la boite
	        
			var curXTop = (screen.width - 1024)/2 + 14 ; //Position du curseur X dans le coin en haut à gauche de l'image
			var positionScreenCurX = (ns6)?e.pageX : event.clientX+ietruebody().scrollLeft ;

		    	var positionImageCurX = positionScreenCurX - curXTop ;
		    	if(positionImageCurX > 500){
		    		offsetxpoint = -450;
		    	}
		}
	}
        
        var rightedge=ie&&!window.opera? ietruebody().clientWidth-event.clientX-offsetxpoint : window.innerWidth-e.clientX-offsetxpoint-20
        var bottomedge=ie&&!window.opera? ietruebody().clientHeight-event.clientY-offsetypoint : window.innerHeight-e.clientY-offsetypoint-20
        
        var leftedge=(offsetxpoint<0)? offsetxpoint*(-1) : -1000
        
        if (rightedge<tipobj.offsetWidth){
            tipobj.style.left=ie? ietruebody().scrollLeft+event.clientX-tipobj.offsetWidth+"px" : window.pageXOffset+e.clientX-tipobj.offsetWidth+"px"
        }
        else if (curX<leftedge){
            tipobj.style.left="5px"
        }
        else{
            tipobj.style.left=curX+offsetxpoint+"px"
        }
        if (bottomedge<tipobj.offsetHeight){
            tipobj.style.top=ie? ietruebody().scrollTop+event.clientY-tipobj.offsetHeight-offsetypoint+"px" : window.pageYOffset+e.clientY-tipobj.offsetHeight-offsetypoint+"px"
        }
        else{
            tipobj.style.top=curY+offsetypoint+"px"
        }
        
        tipobj.style.visibility="visible"
    }
}

/** #########################################
 * Permet de cacher la boite de dialogue
 *@params:
 *    - dhtmltooltipId : l'identifiant de la boite de dialogue
 *    - targetparent : appel du script depuis une iframe
*/
function hideddrivetip(dhtmltooltipId, targetparent){
    var tipobj = getHtmlToolTip(dhtmltooltipId, targetparent) ;    

    //on reinitialise les donnees de la boite de dialogue
    enabletip=false ;
    tipobj.style.visibility="hidden" ;
    tipobj.style.left="-1000px" ;
    tipobj.style.backgroundColor='' ;
    tipobj.style.width='0px' ;   
    tipobj.innerHTML = "" ;
    
    curX = "" ;
    curY = "" ;    
}

/** #########################################
 * Permet de bouger l'image HD en fonction de l'image SD
 * Cette fonction utilise la position du curseur curX et curY
*/

/*
var initMasque = true ;
var decalageX =116 ;

var curXTop = (screen.width - 1024)/2 + decalageX ; //Position du curseur X dans le coin en haut à gauche de l'image
var curYTop = 124 ; //Position du curseur Y dans le coin en haut à gauche de l'image

*/
var initMasque = true ;
function findPos(obj) {
        var curleft = obj.offsetLeft || 0;
        var curtop = obj.offsetTop || 0;
        while (obj = obj.offsetParent) {
                curleft += obj.offsetLeft
                curtop += obj.offsetTop
        }
        return {x:curleft,y:curtop};
}

function masque(e) {

	//On active le zoom
	isAfficheZoomHd='1';
	
	//On choppe les coordonnée de l'image de référence
	var obj = document.getElementById('zoomhd'); 
	if (obj!=undefined){
		var position = findPos(obj);
		var curXTop  = position.x;
		var curYTop = position.y;
	}else{
		return;
	}
	
	
	//On positionne la fenetre de zoom juste à droite de l'image
	var obj = document.getElementById('bloczoom'); 
	if (obj!=undefined){
		obj.style.left = curXTop+402;
		obj.style.top = curYTop;
	}else{
		return;
	}

    if(typeof isAfficheZoomHd != "undefined" && isAfficheZoomHd == '1'){
	    if(initMasque){
	    	
		    //on affiche le bloc zoom
		    displayBlocId("bloczoom") ;    	
	    
		    //on cache les avis oxylane
		    var avisBloc = getElement("oxylaneRecapAvis") ; 
		    if(avisBloc && avisBloc.style.display != "none"){
		        isAfficheAvis = true ;
		        var oxylaneBloc = getElement("oxylaneRecapAvis") ;
		        if(oxylaneBloc){
		        	oxylaneBloc.style.visibility = "hidden" ;
		        }
		    }
		    
		    //on cache les prix
		    var prixBloc = getElement("libelle_prix") ; 
		    if(prixBloc && prixBloc.style.display != "none"){
		        isAffichePrix = true ;
		        hideBloc(prixBloc) ;
		    }
		    
		    initMasque = false;
	    }
	    var cadrezoom = getElement("cadrezoom") ;
	    cadrezoom.onmousemove = masque ;
	
	    //on lance le calcul du positionnement de la souris
	    if(e || typeof event != "undefined"){
		    var positionScreenCurX = (ns6)?e.pageX : event.clientX+ietruebody().scrollLeft ;
		    var positionScreenCurY = (ns6)?e.pageY : event.clientY+ietruebody().scrollTop ;
		    	    
		    var positionImageCurX = positionScreenCurX - curXTop ;
		    var positionImageCurY = positionScreenCurY - curYTop ;
		    
		    //cadrezoom.innerHTML = positionImageCurX+";"+positionImageCurY ;
		    
		    var nouvellePositionImageCurX = positionImageCurX - 100 ;
		    var nouvellePositionImageCurY = positionImageCurY - 100 ;
			    
		    //on va determiner le positionnement du cadre
		    if(cadrezoom){
		    	    //On rajoute l'effet du cadre pour zoomer
			    cadrezoom.style.border = "1px solid #666" ;
			    cadrezoom.style.width = "200px" ;
			    cadrezoom.style.height = "200px" ;
			    cadrezoom.style.backgroundColor = "#eee" ;
			    	    
			    if(positionImageCurY < 100){
			    	nouvellePositionImageCurY = 0 ;
			    }
			    if(positionImageCurY > 300){
			    	nouvellePositionImageCurY = 200 ;
			    }
			    if(positionImageCurX < 100){
			    	nouvellePositionImageCurX = 0 ;
			    }
			    if(positionImageCurX > 300){
			    	nouvellePositionImageCurX = 200 ;
			    }
			    cadrezoom.style.left = nouvellePositionImageCurX+ "px" ;
			    cadrezoom.style.top = nouvellePositionImageCurY+ "px" ;
		    }
		    
		    //on va maintenant determiner le positionnement du zoom HD
		    var zoomHDBgX = nouvellePositionImageCurX * 2 ;
		    var zoomHDBgY = nouvellePositionImageCurY * 2 ;
		
		    document.getElementById("zoom").style.backgroundPosition = "-"+zoomHDBgX+"px -"+zoomHDBgY+"px";
		}
	}
	else{	
		if(curX == "" && curY == ""){
			document.onmousemove=positioncurseur ; //on lance le calcul du positionnement de la souris
		}
		var positionPointeur = (screen.height * 100)/1024 ; //la position du pointeur est calculee en fonction de la resolution 1024px en hauteur
		timeMasque = setTimeout("masque()",10);
		var bgX = (curX-positionPointeur)*-ratio ; //position du background en abscisse
		bgX = bgX + ietruebody().scrollLeft*ratio ; //position du background en abscisse + positionnement du scroll
		var bgY = (curY-positionPointeur)*-ratio ; //position du background en ordonnee
		bgY = bgY + ietruebody().scrollTop*ratio ; //position du background en ordonnee + positionnement du scroll
		document.getElementById("zoom").style.backgroundPosition = bgX+"px "+bgY+"px";
	}
}


/** #########################################
 * Permet de detruire l'appel a la fonction masque
*/
function deactiveMasque(){
	if(typeof isAfficheZoomHd != "undefined" && isAfficheZoomHd == '1'){
	    initMasque = true ;
	    var cadrezoom = getElement("cadrezoom") ;
	    if(cadrezoom){
		    cadrezoom.style.border = "0px" ;
		    cadrezoom.style.width = "400px" ;
		    cadrezoom.style.height = "400px" ;
		    cadrezoom.style.backgroundColor = "transparent" ;
		    cadrezoom.style.left = "0px" ;
		    cadrezoom.style.top = "0px" ;	    
	    }
	    
	    //on cache le bloc zoom
	    hideBlocId("bloczoom") ;
	
	    //on reaffiche les avis oxylane
	    if(isAfficheAvis){
	    	if(getElement("oxylaneRecapAvis")){
			var oxylaneBloc = getElement("oxylaneRecapAvis") ;
			if(oxylaneBloc){
				oxylaneBloc.style.visibility = "visible" ;
			}
	    	}
	    }
	    
	    //on reaffiche les prix
	    var prixBloc = getElement("libelle_prix") ; 
	    if(prixBloc){
	    	displayBloc(prixBloc) ;
	    }
	}
	else{
		clearTimeout(timeMasque) ;
	}
}

function affichetooltip(imgObj, divId, thecolor, thewidth, targetparent){
    return ddrivetip2(imgObj, divId, thecolor, thewidth, 'dhtmltooltip2', targetparent);
}

function cachetooltip(divId, targetparent){
    return  hideddrivetip('dhtmltooltip2', targetparent);
}


