/*! @file zoom_image.js
*	@author Baptiste Machat
*	@brief Fonction pour utiliser la loupe
*	@date 2008-05-27
*/

/*! @brief Facteur de zoom pour la loupe */
var zoom_factory;
/*! @brief Taille de la zone "Loupe" */
var zoom_area_size;
/*! @brief Position Haut de la zone Loupe */
var zoom_box_Top;
/*! @brief Position Gauche de la zone Loupe */
var zoom_box_Left;

/*!	@fn G_get_offset_position ( id_target, offset_type)
*	@brief Recupere les coordonées d un objet
*	@param id_target Identifiant de l objet
*	@param offset_type Coordonée voulue 'Top' ou 'Left'
*	@par Explication :
*	Remonte recursivement jusqu'au conteneur body pour obtenir la position de l'objet dans le fenetre
*	@return Renvoie la position Top ou Left demandée
*/
function G_get_offset_position ( id_target, offset_type)
{
	var iVal = 0;
	var oObj = document.getElementById(id_target);
	var sType = 'oObj.offset' + offset_type;
	while (oObj && oObj.tagName != 'BODY')
	{
		iVal += eval(sType);
		oObj = oObj.offsetParent;
	}
	return iVal;
}

/*!	@fn G_zoom_param(ratio, zoom_area)
*	@brief Parametrer les conteneurs pour faire un zoom
*	@param ratio Grossisement de la loupe
*	@param zoom_area Taille de la zone Zoom
*	@par Explication :
*	
*/
function G_zoom_param(ratio, zoom_area)
{
	var init_width = document.getElementById("img_init").offsetWidth;
	var init_height = parseInt(document.getElementById("img_init").offsetHeight);

	zoom_factory = ratio;

	document.getElementById("img_zoom").height = parseFloat(parseFloat(zoom_factory) * parseInt(init_height));
	document.getElementById("img_zoom").width = parseFloat(parseFloat(zoom_factory) * parseInt(init_width));
	/*
	document.getElementById("img_zoom").style.height = zoom_factory * init_height;
	document.getElementById("img_zoom").style.width = zoom_factory * init_width;*/

	//taille de la zone ou le zoom s'affiche
	zoom_area_size= (zoom_area != null)? zoom_area : 200;//pixels
	document.getElementById("id_area_zoom").style.width = zoom_area_size +"px";
	document.getElementById("id_area_zoom").style.height = zoom_area_size+"px";
	
	//Recup la position
	zoom_box_Top = G_get_offset_position("img_init", "Top");
	zoom_box_Left = G_get_offset_position("img_init", "Left");
}//G_zoom_param

/*!	@fn G_zoom_onmousemove(event)
*	@brief Calculer en temps reel la postion de l'image
*	@param event Evenement
*	@par Explication :
*	Recupere les corrdonées de la souris, pour calculer la nouvelle position de l'image
*/
function G_zoom_onmousemove(event)
{
	document.getElementById("id_area_zoom").style.display = "block";
	var ie = false; /*@cc_on ie = true; @*/
	if (ie)
	{
		x = event.x + document.body.scrollLeft;
		y = event.y + document.body.scrollTop;
	}
	else
	{
		x = event.pageX;
		y = event.pageY;
	}
	document.getElementById("img_zoom").style.top=
					((zoom_box_Top - y)*zoom_factory)+(zoom_area_size/2)+"px";
	document.getElementById("img_zoom").style.left=
					((zoom_box_Left - x)*zoom_factory)+(zoom_area_size/2)+"px";
}//G_zoom_onmousemove

/*!	@fn G_hide_zoom()
*	@brief Permet de cacher la loupe
*/
function G_hide_zoom()
{
	document.getElementById("id_area_zoom").style.display = 'none';
} 
