/**
 *
 */


/**
 * Inizializzazione di un componente "Euro".
 */
jQuery.fn.euro = function(cfg) {
	
	
	
	
	// Controllo l'applicazione del componente ad un singolo elemento di input.
	if ( $(this).attr('type') == 'text' ) {
		$(this).addClass('value');
		spanId = 'EuroComponent' + $(this).attr('id');
		$(this).wrap('<span id="'+spanId+'"></span>');
		return $('#'+spanId).euro();
	}
	
	
	// Aggiungo la classe "EuroComponent" al componente creato.
	$(this).addClass('EuroComponent');
	
	// Controllo l'esistenza di un campo di visualizzazione per il componente.
	if ( $('input.show', $(this) ).length == 0 )
		$(this).append('<input type="text" class="show" />');
	
	// Gestione dell'input nel box di testo visualizzato.
	// Bisogna estendere la funzionalità in modo da riportare la cifra scritta
	// nel campo valore ed attivare la conversione ad euro quando si abbandona il campo.
	$('input.show', $(this) )
		.bind('keypress',function() { return false; })
		.attr('style','border:0;');
	
	
	// Inizializzo la creazione di un valore.
	$(this).euroSet( $('.value', $(this) ).attr('value') );
	
	return $(this);
} // EndOf: "euro()" ///////////////////////////////////////////////////////////////////////////////


/**
 * Aggiornamento del valore di un componente Euro.
 * Prende in input il valore "float".
 */
jQuery.fn.euroSet = function( val ) {
	
	// Controllo l'applicazione del componente ad un singolo elemento di input.
	if ( $(this).attr('type') == 'text' ) {
		spanId = 'EuroComponent' + $(this).attr('id');
		return $('#'+spanId).euroSet( val );
	}
	
	
	
	// Impostazione del valore numerico della valuta.
	$('.value', $(this) ).attr('value', val );
	
	
	// Definizione del valore predefinito in caso di valore nullo.
	if ( val == undefined || val == '' || val == 0 ) val = "0.0";
	
	// Conversione a stringa di un valore numerico passato al metodo.
	if( typeof(val) == "number" ) val = val.toString();
	
	// Nel caso si stia passando un numero intero.
	if( val.indexOf('.') < 0 ) val += '.00';
	
	// Impostazione del valore visualizzato:
	val = val.replace('.',',');
	
	// Separazione della parte intera dalla parte decimale.
	sx = val.split(',')[0];
	dx = val.split(',')[1];
	
	// Inserimento della puntatura delle migliaia nella componente visuale.
	var mill 	= '';
	cont	= 0; // IE7 non permette di usare "cnt" ??!!??
	
	for ( i=sx.length-1; i>=0; i-- ) {
		
		if ( cont == 3 ) {
			mill = '.' + mill;
			cont = 0;
		}
		
		mill = sx.substring(i,(i+1)) + mill;
		cont++;
	}
	
	// Definizione della seconda cifra decimale per la parte decimale del componente.
	switch ( dx.length ) {
		case 0: dx = "00"; break;
		case 1: dx = dx + "0"; break;
		default: dx = dx.substring(0,2);
	}
	
	// Ricostruzione del valore da visualizzare.
	val = mill+','+dx;
	$('.show', $(this) ).attr('value', ( val + " " + "€" ) );
	
	return $(this);
} // EndOf: "euroSet()" ////////////////////////////////////////////////////////////////////////////


/**
 * Ricava il valore "float" da un componente Euro.
 */
jQuery.fn.euroGet = function() {
	
	// Controllo l'applicazione del componente ad un singolo elemento di input.
	if ( $(this).attr('type') == 'text' ) {
		spanId = 'EuroComponent' + $(this).attr('id');
		return $('#'+spanId).euroGet();
	}
	
	
	
	val = $('.value', $(this) ).attr('value');
	if ( val == undefined || val == '' ) val = "0";
	
	return parseFloat(val);
} // EndOf: "euroGet()" ////////////////////////////////////////////////////////////////////////////


/**
 * Reset del valore di un componente Euro.
 */
jQuery.fn.euroReset = function() {
	
	// Controllo l'applicazione del componente ad un singolo elemento di input.
	if ( $(this).attr('type') == 'text' ) {
		spanId = 'EuroComponent' + $(this).attr('id');
		return $('#'+spanId).euroReset();
	}
	
	
	
	$('.value', $(this) ).attr('value',"");
	$(this).euroSet('');
	
	return $(this);
} // EndOf: "euroReset()" //////////////////////////////////////////////////////////////////////////
