/**
 * IE8 CORRECTION
 */
if (!Array.prototype.indexOf) {
	Array.prototype.indexOf = function(obj, start) {
		for (var i = (start || 0), j = this.length; i < j; i++) {
			if (this[i] === obj) { return i; }
		}
		return -1;
	}
}

(function($j){
	
	/**
	 * CONFIRM
	 */
	$j.fn.confirm = function () {
		this.click(function(){
			if (!window.confirm($j(this).attr('title'))) {
				return false;
			}
		});
	};
	
	/**
	 * DELETE DEFAULT VALUE ON FOCUS
	 */
	$j.fn.deleteDefaultValueOnFocus = function () {
		
		this.each(function(index){
						   
			var inputField 		= $j(this);		
			var defaultValue 	= inputField.val();
		
			inputField.focus(function(){
				var myInput = $j(this);
				if (myInput.val() == defaultValue) {
					myInput.val('');
				}
			});
			
			inputField.blur(function(){
				var myInput = $j(this);
				if (myInput.val() == '') {
					myInput.val(defaultValue);
				}
			});		
		});	
	};
	
	/**
	 * SIMPLE ANTI SPAM : INPUT formMode true/false
	 */
	
	$j.fn.simpleAntiSpam = function (options) {
		var settings = {
			formName: ''
		};
		
		if (options) $j.extend(settings, options);
		
		this.filter('input').focus(function(){
			$j('input[name=' + settings.formName + 'Mode]').val('true');
		});
		
		return this;
	};
	
	/**
	 * DPE Diagramme de déperdition d'énergie
	 */
	
	$j.fn.dpe = function (options) {
		var settings = {
			imagePath: 			'/images/fr/dpe/',
			imageName: 			'dpe_$.png',
			imageWidth: 		270,
			imageHeight: 		270,
			imageMinimumSize: 	180,
			spanTextSize: 		18,
			spanColor: 			'#fff',
			spanFirstTop: 		45,
			spanLastTop: 		187,
			spanLeft: 			228
		};
		
		if (options) $j.extend(settings, options);
		
		this.each(function(){
			var dpeGraph = $j(this);
			var dpeValue = parseInt(dpeGraph.html());
			
			if (!isNaN(dpeValue)) {
				dpeGraph.html('');
				
				var dpeLetter;
				var dpeSpanTop;
				var spanStepHeight = (settings.spanLastTop - settings.spanFirstTop) / 5;
				switch (true) {
					case (dpeValue <= 50):
						dpeLetter = 'a';
						dpeSpanTop = settings.spanFirstTop;
						break;
					case (51 <= dpeValue && dpeValue <= 90):
						dpeLetter = 'b';
						dpeSpanTop = settings.spanFirstTop + (1 * spanStepHeight);
						break;
					case (91 <= dpeValue && dpeValue <= 150):
						dpeLetter = 'c';
						dpeSpanTop = settings.spanFirstTop + (2 * spanStepHeight);
						break;
					case (151 <= dpeValue && dpeValue <= 230):
						dpeLetter = 'd';
						dpeSpanTop = settings.spanFirstTop + (3 * spanStepHeight);
						break;
					case (231 <= dpeValue && dpeValue <= 330):
						dpeLetter = 'e';
						dpeSpanTop = settings.spanFirstTop + (4 * spanStepHeight);
						break;
					case (331 <= dpeValue && dpeValue <= 450):
						dpeLetter = 'f';
						dpeSpanTop = settings.spanFirstTop + (5 * spanStepHeight);
						break;
					case (dpeValue >= 451):
						dpeLetter = 'g';
						dpeSpanTop = settings.spanFirstTop + (6 * spanStepHeight);
						break;
				}
				
				var imageURL 	= settings.imagePath + settings.imageName.replace('$', dpeLetter);
				var imageWidth 	= Math.round(dpeGraph.width() ? dpeGraph.width() : dpeGraph.width(settings.imageMinimumSize).width());
				var imageHeight = imageWidth;
				
				var spanFontSize 	= Math.round((settings.spanTextSize * imageHeight) / settings.imageHeight);
				var spanTop 		= Math.round((dpeSpanTop * imageHeight) / settings.imageHeight);
				var spanLeft 		= Math.round((settings.spanLeft * imageWidth) / settings.imageWidth);
				
				dpeGraph
					.css('position', 'relative')
					.append('<img src="' + imageURL + '" alt="' + dpeValue + '" title="' + dpeValue + '" width="' + imageWidth + '" height="' + imageHeight + '" />')
					.append('<span>' + dpeValue + '</span>')
					.find('span')
					.css('font-family', 'Arial, sans-serif')
					.css('font-size', spanFontSize)
					.css('color', settings.spanColor)
					.css('position', 'absolute')
					.css('top', spanTop)
					.css('left', spanLeft);
			}
			else {
				dpeGraph.html(dpeValue);
			}
		});
		
		return this;
	};
	
	/**
	* CREATE A ROLL OVER ON IMAGES
	*/
	$j.fn.rollOver = function (options) {
		var settings = {
			suffixe: '_over'
		};
		
		if(options) $j.extend(settings, options);
		
		var images = this;
		
		images.each(function(index){
		   var image = $j(this);
		   var fileName 					= image.attr('src');
		   var fileNameWithoutExtension 	= fileName.substring(0, fileName.lastIndexOf('.'));
		   var fileExtension 				= fileName.substring(fileName.lastIndexOf('.'), fileName.length);
		   
		   var imgSrc 						= fileName;
		   var imgSrcOver 					= fileNameWithoutExtension + settings.suffixe + fileExtension;
		   
		   image.mouseover(function(){
				$j(this).attr('src', imgSrcOver);
		   });
		   image.mouseout(function(){
				$j(this).attr('src', imgSrc);
		   });
		});
		
		return this;
	};
	
	/**
	 * INIT RADIO BOX WITH VALUE
	 */
	$j.fn.initRadioValue = function (myValue) {
		var radioInput = this.filter('input[type=radio]');
		
		radioInput.each(function(index){
			var radioInput = $j(this);
			if (radioInput.val() == myValue) {
				radioInput.attr('checked', 'checked');
			}
		});
	};
	
	/**
	 * INIT SELECT BOX WITH VALUE
	 */
	$j.fn.initSelectValue = function (myValue) {
		var mySelects = this.filter('select');
		
		mySelects.each(function(index){
			var mySelect = $j(this);
			
			mySelect.find('option').each(function(index){
				var myOption = $j(this);
				if (myOption.val() == myValue) {
					myOption.attr('selected', 'selected');
				}
			});
		});
	};
	
	/**
	 * INIT CHECKBOX WITH VALUE
	 */
	$j.fn.initCheckboxValue = function (myValue) {
		var checkboxesInput = this.filter('input[type=checkbox]');
		
		checkboxesInput.each(function(index){
			var checkboxInput = $j(this);
			switch (true) {
				case (myValue === true):
				case (myValue === 'true'):
				case (parseInt(myValue, 10) === 1):
					checkboxInput.attr('checked', 'checked');
					break;
			}
		});
	};

})(jQuery);



