<!-- 

// nom des champs
var fields = new Array("bit","kbit","mbit","gbit","tbit","oct","koct","moct","goct","toct");

// calcul des taux de conversion
var conversions = new Array();
conversions['bit'] 	 = 1;
conversions['kbit']	 = Math.pow(1024, 1);
conversions['mbit']	 = Math.pow(1024, 2);
conversions['gbit']	 = Math.pow(1024, 3);
conversions['tbit']	 = Math.pow(1024, 4);
conversions['oct']	 = 8;
conversions['koct'] = Math.pow(1024, 1) * 8;
conversions['moct'] = Math.pow(1024, 2) * 8;
conversions['goct'] = Math.pow(1024, 3) * 8;
conversions['toct'] = Math.pow(1024, 4) * 8;

var storage = new Array();

function process(myForm){
    // vérification du champ qui a été modifié
	var changed = '';
	for(var i = 0; i < fields.length; i++){
		if(storage[fields[i]] != myForm[fields[i]].value){
			if(myForm[fields[i]].value != ''){
				changed = fields[i];
				break;
			}
		}
	}
	if(changed == ''){
        return;
	}
	
	val = myForm[changed].value;
	val = val.replace(',','.');

	// var changedValue = parseFloat(myForm[changed].value);
	var changedValue = parseFloat(val);
	if(isNaN(changedValue)){
		for(var i = 0; i < fields.length; i++){
            storage[fields[i]] = '';
			myForm[fields[i]].value = '';
        }
        alert('Please enter a number !');
		return;
	}
	
	// conversion du champ en bits
	var bits = changedValue * conversions[changed];
    
    for(var i = 0; i < fields.length; i++){
        // remplissage du champ avec les nouveles valeurs
		storage[fields[i]] = roundsig(bits / conversions[fields[i]], 5);
        // mise à jour des nouvelles valeurs
		myForm[fields[i]].value = storage[fields[i]];
	}
}

function roundsig ( value, precision ) {
	precision = parseInt(precision);
	var result;
	value = String(value);

	var shift;
	var expPart = '';
	var signPart = '';
	
	if  ( value.indexOf( "e" ) != -1 ) {
		expPart = value.substring( value.indexOf( "e" ), value.length );
		value = value.substring( 0, value.indexOf( "e" ) );
	}
	else {
		if  ( value.indexOf( "E" ) != -1 ) {
			expPart = value.substring( value.indexOf( "E" ), value.length );
			value = value.substring( 0, value.indexOf( "e" ) );
		}
		if ( value.substring( 0, 1 ) == '-' ) {
			signPart = '-';
			value = value.substring( 1, value.length);
		}
	}
	if ( parseFloat(value) >= 1.0 ) {
		var point = value.indexOf( "." );
		if ( point == -1 ) {
			point = value.length;
		}
		shift = point-precision;
	}
	else {
		var notNull=String(value).lastIndexOf ( '.' ) + 1;
		if ( notNull == 1 ) notNull += 1;
		while ( String(value).charAt ( notNull ) == '0' ) {
			notNull++;
		}
		notNull -= 2;
		
		shift = -(precision+notNull);
	}

	result = Math.round(value/Math.pow(10, shift));
	if ( shift >=0 ) {
		for ( var i=1; i<=shift; i++ ) {
			result += '0';
		}
	}
	else {
		result += '';
		if ( result.length+shift>0 ) {
			result = result.substring ( 0, result.length+shift ) + '.' + result.substring ( result.length+shift, result.length );
		}
		else {
			var result1 = '0.';
			for ( var i=-1; i>=result.length+shift; i-- ) {
				result1 += '0';
			}
			result = result1 + result;
		}
		while ( result.charAt(result.length-1) == '0' ) {
			result = result.substring ( 0, result.length-1 );
		}
		if ( result.charAt(result.length-1) == '.' ) {
			result = result.substring ( 0, result.length-1 );
		}
	}
	result = signPart + result + expPart;
	return result;	
}
// -->

