registerFeature = function (element, datalinkfeatureid, datalinkproductname){
	try{
		element.onmouseover = function(){ };
		element.domRA('onMouseOver');
	}catch(e){ };
	new Feature(element, datalinkfeatureid, datalinkproductname);
};

Feature = Class.create();
Object.extend(Feature.prototype, {

	initialize: function(element, datalinkfeatureid, datalinkproductname){
		this.element = element;
		this.datalinkfeatureid = datalinkfeatureid;
		this.datalinkproductname = datalinkproductname;
		this.focus = true;

		this.eventMouseOver  = this.over.bindAsEventListener(this);
		Event.observe(this.element, "mouseover", this.eventMouseOver);
		this.eventMouseOut   = this.out.bindAsEventListener(this);
		Event.observe(this.element, "mouseout", this.eventMouseOut);

		this.ajax = new Ajax();
		this.ajax.url = XMLDatalinkFeature+'?datalinkfeatureid='+this.datalinkfeatureid;
		this.ajax.caching = true;
		this.ajax.requestXML(function(response){
			var feature = response.responseJSON.datalink.features.feature;

			if(typeof this.datalinkproductname != 'undefined'){
				switch(lang('en','fr')){
					case 'en':
						if(typeof feature.description_en == 'undefined' || feature.description_en.length == 0) break;
						feature.description_en = feature.description_en.replace(/remote-starter/g, this.datalinkproductname);
						break;
					case 'fr':
						if(typeof feature.description_fr == 'undefined' || feature.description_fr.length == 0) break;
						feature.description_fr = feature.description_fr.replace(/démarreur à distance/g, this.datalinkproductname);
						break;
				};
			};

			this.tooltip = new Tooltip();
			this.tooltip.initTooltip();
			this.tooltip.registerTooltipElement(this.element);
			this.element.setStyle('cursor:help;');
			this.tooltip.registerTooltipTitle(
				domCE('div').domAC(
					domCE('img').domSA({
						src: '/images/icons/32x32_info.png',
						align: 'left',
						height: 32,
						width: 32
					})
				).domAC(
					domCE('h4').setStyle({ width: '235px' }).domSA({
						className: 'tooltiptitle'
					}).domCTN(lang(feature.name_en, feature.name_fr))
				)
			);
			this.tooltip.registerTooltipBody(
				domCE('div').domAC(
					domCE('p').setStyle({width: '235px'}).domSA({
						className: 'tooltipbody'
					}).domAC(
						domCE('p').domCHTN(lang(feature.description_en, feature.description_fr)+String.nbsp)
					)
				)
			);

			if(this.focus) this.tooltip.showTooltip();

			Event.stopObserving(this.element, "mouseover", this.eventMouseOver);
			Event.stopObserving(this.element, "mouseout", this.eventMouseOut);

		}.bind(this));
	},

	over: function(event){
		this.focus = true;
	},

	out: function(event){
		this.focus = false;
	}

});
