<!-- 
// Copyright 1998-2003 Speed Guide, Inc.

// field names
var fields = new Array("bit","kbit","mbit","gbit","tbit","byte","kbyte","mbyte","gbyte","tbyte");

// conversion factor array
var conversions = new Array();
conversions['bit'] 	 = 1;
conversions['kbit']	 = Math.pow(1000, 1);
conversions['mbit']	 = Math.pow(1000, 2);
conversions['gbit']	 = Math.pow(1000, 3);
conversions['tbit']	 = Math.pow(1000, 4);
conversions['byte']	 = 8;
conversions['kbyte'] = Math.pow(1024, 1) * 8;
conversions['mbyte'] = Math.pow(1024, 2) * 8;
conversions['gbyte'] = Math.pow(1024, 3) * 8;
conversions['tbyte'] = Math.pow(1024, 4) * 8;

var storage = new Array();

// update function onchange
function process(myForm){
    // figure out which field changed
	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;
	}
	
	var changedValue = parseFloat(myForm[changed].value);
	if(isNaN(changedValue)){
		for(var i = 0; i < fields.length; i++){
            storage[fields[i]] = '';
			myForm[fields[i]].value = '';
        }
        alert('Please enter a number !');
		return;
	}
	
	// convert the changed field to bits
	var bits = changedValue * conversions[changed];
    
    for(var i = 0; i < fields.length; i++){
        // fill the storage array with new values
		storage[fields[i]] = roundsig(bits / conversions[fields[i]], 5);
        // output the new value
		myForm[fields[i]].value = storage[fields[i]];
	}
}

// rounding function
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;	
}
// -->


