
// Définition de la classe 'CarSelectorInfoPanel'
// NB: L'ordre des méthodes est important
CarSelectorInfoPanel.Instances = new Array();

function CarSelectorInfoPanel(id, datas)
{
	// Outil pour récupérer une instance par son identifiant
	CarSelectorInfoPanel.Instances[id] = this;

	// Champs privés
	var _price = document.getElementById("infoPrice");
	var _pricePart = document.getElementById("infoPricePart");
	var _image = document.getElementById("infoImage");
	var _anim = document.getElementById("infoAnim");
	var _legal = document.getElementById("infoLegal");
	var _desc = document.getElementById("infoDesc");
	var _separator = document.getElementById("infoSeparator");
	var _interior = document.getElementById("infoInterior");
	var _exterior = document.getElementById("infoExterior");
	var _welcomeImage = document.getElementById("welcomeImage");
	var _welcomeMessage = "";
			
	// Propriétés
	this.HtmlObject = document.getElementById(id);
	this.OnExteriorClick = new Array();

	// Méthodes publiques
	
	this.GetInfos = function (model, bodyGroup)
	{
		for (var i = 0; i < datas.length; i++)
			if (datas[i].Model == model && datas[i].GrBodyStyle == bodyGroup)
				return datas[i];
		return null;
	}
	
	this.Reset = function()
	{
		_welcomeImage.style.display = "block";
		_desc.innerHTML = _welcomeMessage;
		_image.style.display = "none";
		_interior.style.display = "none";
		_exterior.style.display = "none";
		_pricePart.style.display = "none";
		_separator.style.display = "none";
		_separator.style.display = "none";
		_anim.style.display = "none";
		_legal.style.display = "none";
	}
		
	this.Update = function(model, bodyGroup, discoverUrl, priceLabel)
	{
		var infos = this.GetInfos(model, bodyGroup);
		if (infos != null)
		{
			if (_welcomeImage.style.display != "none")
			{
				_welcomeMessage = _desc.innerHTML;
				_welcomeImage.style.display = "none";
			}
						
			if (Tools_IsNullOrEmpty(infos.InteriorUrl))
				_interior.style.display = "none";
			else
			{
				_interior.href = "javascript:OpenLink('{0}', 'Popup')".format(infos.InteriorUrl);
				_interior.style.display = "block";
			}
			
			if (infos.Has360)
			{
				_exterior.href = "javascript: CarSelectorInfoPanel.Instances['{0}'].OnExtLinkClick('{1}', '{2}')".format(id, model, bodyGroup);
				_exterior.style.display = "block";
			}
			else _exterior.style.display = "none";
			
			if (Tools_IsNullOrEmpty(infos.Desc))
			{
				_desc.innerHTML = "";
				_separator.style.display = "none";
			}
			else
			{
				_desc.innerHTML = infos.Desc;
				_separator.style.display = "block";
			}			
			
			if (Tools_EndsWith(infos.BigImage, ".swf"))
			{
				_image.style.display = "none";
				_anim.innerHTML = '<embed width="100%" height="110px" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" src="' + infos.BigImage + '"/>';
				_anim.style.display = "block";
			}
			else
			{
				_anim.style.display = "none";
				_image.src = infos.BigImage;
				_image.style.display = "block";
				_image.onclick = function() { window.top.location.href = discoverUrl; }
				doFix(_image);
				var bigImageNotFound = infos.BigImageNotFound;
				if (bigImageNotFound != null && bigImageNotFound != "")
					ImageTools_SetImageNotFoundOnMouse(_image, bigImageNotFound);
			}
			
			_legal.style.display = "block";
		}
		
		_pricePart.style.display = "block";
		_price.innerHTML = priceLabel;
	}
	
	this.UpdatePriceLabel = function(priceLabel)
	{
		_price.innerHTML = priceLabel;
	}
	
	this.OnExtLinkClick = function(model, bodyGroup)
	{
		var args = { Model: model, GrBodyStyle: bodyGroup };
		Tools_DispatchEvent(this.OnExteriorClick, this, args);
	}
}

