conversion['type1']['type2'] = "formula"; That defines a conversion from type1 to type2. The category and type names must each be SINGLE WORDS, letters only. (You can include numbers too, but only if the number isn't the first character). The formula should be expressed in terms of $str_inval. For example, if your conversion from type1 to type2 needs you to double the input, then your formula would look like this: "{$str_inval} * 2" The $str_inval variable contains the name of the JavaScript variable which will appear later on. Simple as that! Ok, so it's not *actually* all that simple, but it works. :-) You can use my examples to get started with, and make your own. */ // Uncomment this for debugging: //ini_set('display_errors', '1'); error_reporting(2047); /// DO NOT CHANGE THIS BIT /// // These variables will store the names of our input and output value variables $str_inval = 'inval'; $str_outval = 'outval'; $categories = array(); // Define the strings for our temperature conversion define('STR_TEMP', 'Temperature'); define('STR_TEMP_C', 'Celsius'); define('STR_TEMP_K', 'Kelvin'); define('STR_TEMP_F', 'Fahrenheit'); /// ADD YOUR CONVERTERS HERE /// /// Temperature // Define our temperature conversions from Celsius $categories[STR_TEMP]->conversion[STR_TEMP_C][STR_TEMP_K] = "{$str_inval} + 273.15"; $categories[STR_TEMP]->conversion[STR_TEMP_C][STR_TEMP_F] = "({$str_inval} * (9.0 / 5.0)) + 32.0"; // Define our temperature conversions from Kelvin $categories[STR_TEMP]->conversion[STR_TEMP_K][STR_TEMP_C] = "{$str_inval} - 273.15"; $categories[STR_TEMP]->conversion[STR_TEMP_K][STR_TEMP_F] = "({$str_inval} * (9.0 / 5.0)) - 459.67"; // Define our temperature conversions from Fahrenheit $categories[STR_TEMP]->conversion[STR_TEMP_F][STR_TEMP_C] = "({$str_inval} - 32.0) * (5.0 / 9.0)"; $categories[STR_TEMP]->conversion[STR_TEMP_F][STR_TEMP_K] = "({$str_inval} + 459.67) * (5.0 / 9.0)"; /// Distance // Define the strings for our distance conversion define('STR_DIST', 'Distance'); define('STR_DIST_CM', 'Centimetres'); define('STR_DIST_IN', 'Inches'); define('STR_DIST_FT', 'Feet'); define('STR_DIST_KM', 'Kilometres'); define('STR_DIST_MT', 'Metres'); define('STR_DIST_MI', 'Miles'); define('STR_DIST_MM', 'Millimetres'); define('STR_DIST_YD', 'Yards'); // Define our distance conversions from Centimetres $categories[STR_DIST]->conversion[STR_DIST_CM][STR_DIST_IN] = "{$str_inval} / 2.54"; $categories[STR_DIST]->conversion[STR_DIST_CM][STR_DIST_FT] = "{$str_inval} * 0.0328083"; $categories[STR_DIST]->conversion[STR_DIST_CM][STR_DIST_KM] = "{$str_inval} / 100000.0"; $categories[STR_DIST]->conversion[STR_DIST_CM][STR_DIST_MT] = "{$str_inval} / 100.0"; $categories[STR_DIST]->conversion[STR_DIST_CM][STR_DIST_MI] = "{$str_inval} / 160934.4"; $categories[STR_DIST]->conversion[STR_DIST_CM][STR_DIST_MM] = "{$str_inval} * 10.0"; $categories[STR_DIST]->conversion[STR_DIST_CM][STR_DIST_YD] = "{$str_inval} * 0.0109361"; // Define our distance conversions from Inches $categories[STR_DIST]->conversion[STR_DIST_IN][STR_DIST_CM] = "{$str_inval} * 2.54"; $categories[STR_DIST]->conversion[STR_DIST_IN][STR_DIST_FT] = "{$str_inval} / 12.0"; $categories[STR_DIST]->conversion[STR_DIST_IN][STR_DIST_KM] = "{$str_inval} * 0.0000254"; $categories[STR_DIST]->conversion[STR_DIST_IN][STR_DIST_MT] = "{$str_inval} * 0.0254"; $categories[STR_DIST]->conversion[STR_DIST_IN][STR_DIST_MI] = "{$str_inval} / 63360"; $categories[STR_DIST]->conversion[STR_DIST_IN][STR_DIST_MM] = "{$str_inval} * 25.4"; $categories[STR_DIST]->conversion[STR_DIST_IN][STR_DIST_YD] = "{$str_inval} / 36.0"; // Define our distance conversions from Feet $categories[STR_DIST]->conversion[STR_DIST_FT][STR_DIST_CM] = "{$str_inval} / 0.0328083"; $categories[STR_DIST]->conversion[STR_DIST_FT][STR_DIST_IN] = "{$str_inval} * 12.0"; $categories[STR_DIST]->conversion[STR_DIST_FT][STR_DIST_KM] = "{$str_inval} / 3280.83"; $categories[STR_DIST]->conversion[STR_DIST_FT][STR_DIST_MT] = "{$str_inval} / 3.28083"; $categories[STR_DIST]->conversion[STR_DIST_FT][STR_DIST_MI] = "{$str_inval} / 5280"; $categories[STR_DIST]->conversion[STR_DIST_FT][STR_DIST_MM] = "{$str_inval} / 0.00328083"; $categories[STR_DIST]->conversion[STR_DIST_FT][STR_DIST_YD] = "{$str_inval} / 3.0"; // Define our distance conversions from Kilometres $categories[STR_DIST]->conversion[STR_DIST_KM][STR_DIST_CM] = "{$str_inval} * 100000.0"; $categories[STR_DIST]->conversion[STR_DIST_KM][STR_DIST_IN] = "{$str_inval} / 0.0000254"; $categories[STR_DIST]->conversion[STR_DIST_KM][STR_DIST_FT] = "{$str_inval} * 3280.83"; $categories[STR_DIST]->conversion[STR_DIST_KM][STR_DIST_MT] = "{$str_inval} * 1000.0"; $categories[STR_DIST]->conversion[STR_DIST_KM][STR_DIST_MI] = "{$str_inval} / 1.609344"; $categories[STR_DIST]->conversion[STR_DIST_KM][STR_DIST_MM] = "{$str_inval} * 1000000.0"; $categories[STR_DIST]->conversion[STR_DIST_KM][STR_DIST_YD] = "{$str_inval}"; // Define our distance conversions from Metres $categories[STR_DIST]->conversion[STR_DIST_MT][STR_DIST_CM] = "{$str_inval} * 100.0"; $categories[STR_DIST]->conversion[STR_DIST_MT][STR_DIST_IN] = "{$str_inval} * 39.37"; $categories[STR_DIST]->conversion[STR_DIST_MT][STR_DIST_FT] = "{$str_inval} * 3.28083"; $categories[STR_DIST]->conversion[STR_DIST_MT][STR_DIST_KM] = "{$str_inval} / 1000.0"; $categories[STR_DIST]->conversion[STR_DIST_MT][STR_DIST_MI] = "{$str_inval} / 1609.344"; $categories[STR_DIST]->conversion[STR_DIST_MT][STR_DIST_MM] = "{$str_inval} * 1000.0"; $categories[STR_DIST]->conversion[STR_DIST_MT][STR_DIST_YD] = "{$str_inval} * 1.09361"; // Define our distance conversions from Miles $categories[STR_DIST]->conversion[STR_DIST_MI][STR_DIST_CM] = "{$str_inval} * 160934.4"; $categories[STR_DIST]->conversion[STR_DIST_MI][STR_DIST_IN] = "{$str_inval} * 63360"; $categories[STR_DIST]->conversion[STR_DIST_MI][STR_DIST_FT] = "{$str_inval} * 5280"; $categories[STR_DIST]->conversion[STR_DIST_MI][STR_DIST_KM] = "{$str_inval} * 1.609344"; $categories[STR_DIST]->conversion[STR_DIST_MI][STR_DIST_MT] = "{$str_inval} * 1609.344"; $categories[STR_DIST]->conversion[STR_DIST_MI][STR_DIST_MM] = "{$str_inval} * 1609344.0"; $categories[STR_DIST]->conversion[STR_DIST_MI][STR_DIST_YD] = "{$str_inval} * 1760"; // Define our distance conversions from Millimetres $categories[STR_DIST]->conversion[STR_DIST_MM][STR_DIST_CM] = "{$str_inval} / 10.0"; $categories[STR_DIST]->conversion[STR_DIST_MM][STR_DIST_IN] = "{$str_inval} * 0.03937"; $categories[STR_DIST]->conversion[STR_DIST_MM][STR_DIST_FT] = "{$str_inval} * 0.00328083"; $categories[STR_DIST]->conversion[STR_DIST_MM][STR_DIST_KM] = "{$str_inval} / 1000000.0"; $categories[STR_DIST]->conversion[STR_DIST_MM][STR_DIST_MT] = "{$str_inval} / 1000.0"; $categories[STR_DIST]->conversion[STR_DIST_MM][STR_DIST_MI] = "{$str_inval} / 1609344.0"; $categories[STR_DIST]->conversion[STR_DIST_MM][STR_DIST_YD] = "{$str_inval} * 0.00109361"; // Define our distance conversions from Yards $categories[STR_DIST]->conversion[STR_DIST_YD][STR_DIST_CM] = "{$str_inval} / 109.361"; $categories[STR_DIST]->conversion[STR_DIST_YD][STR_DIST_IN] = "{$str_inval} * 36.0"; $categories[STR_DIST]->conversion[STR_DIST_YD][STR_DIST_FT] = "{$str_inval} * 3.0"; $categories[STR_DIST]->conversion[STR_DIST_YD][STR_DIST_KM] = "{$str_inval} / 0.00109361"; $categories[STR_DIST]->conversion[STR_DIST_YD][STR_DIST_MT] = "{$str_inval} / 1.09361"; $categories[STR_DIST]->conversion[STR_DIST_YD][STR_DIST_MI] = "{$str_inval} / 1760"; $categories[STR_DIST]->conversion[STR_DIST_YD][STR_DIST_MM] = "{$str_inval} / 1093.61"; /// Time // Define the strings for our time conversion define('STR_TIME', 'Time'); define('STR_TIME_S', 'Seconds'); define('STR_TIME_M', 'Minutes'); define('STR_TIME_H', 'Hours'); define('STR_TIME_D', 'Days'); define('STR_TIME_W', 'Weeks'); // Define our distance conversions from Seconds $categories[STR_TIME]->conversion[STR_TIME_S][STR_TIME_M] = "{$str_inval} / 60.0"; $categories[STR_TIME]->conversion[STR_TIME_S][STR_TIME_H] = "{$str_inval} / 3600.0"; $categories[STR_TIME]->conversion[STR_TIME_S][STR_TIME_D] = "{$str_inval} / 86400.0"; $categories[STR_TIME]->conversion[STR_TIME_S][STR_TIME_W] = "{$str_inval} / 604800.0"; // Define our distance conversions from Minutes $categories[STR_TIME]->conversion[STR_TIME_M][STR_TIME_S] = "{$str_inval} * 60.0"; $categories[STR_TIME]->conversion[STR_TIME_M][STR_TIME_H] = "{$str_inval} / 60.0"; $categories[STR_TIME]->conversion[STR_TIME_M][STR_TIME_D] = "{$str_inval} / 1440.0"; $categories[STR_TIME]->conversion[STR_TIME_M][STR_TIME_W] = "{$str_inval} / 10080.0"; // Define our distance conversions from Hours $categories[STR_TIME]->conversion[STR_TIME_H][STR_TIME_S] = "{$str_inval} * 3600.0"; $categories[STR_TIME]->conversion[STR_TIME_H][STR_TIME_M] = "{$str_inval} * 60.0"; $categories[STR_TIME]->conversion[STR_TIME_H][STR_TIME_D] = "{$str_inval} / 24.0"; $categories[STR_TIME]->conversion[STR_TIME_H][STR_TIME_M] = "{$str_inval} / 168.0"; // Define our distance conversions from Days $categories[STR_TIME]->conversion[STR_TIME_D][STR_TIME_S] = "{$str_inval} * 86400.0"; $categories[STR_TIME]->conversion[STR_TIME_D][STR_TIME_M] = "{$str_inval} * 1440.0"; $categories[STR_TIME]->conversion[STR_TIME_D][STR_TIME_H] = "{$str_inval} * 24.0"; $categories[STR_TIME]->conversion[STR_TIME_D][STR_TIME_W] = "{$str_inval} / 7.0"; // Define our distance conversions from Weeks $categories[STR_TIME]->conversion[STR_TIME_W][STR_TIME_S] = "{$str_inval} * 604800.0"; $categories[STR_TIME]->conversion[STR_TIME_W][STR_TIME_M] = "{$str_inval} * 10080.0"; $categories[STR_TIME]->conversion[STR_TIME_W][STR_TIME_H] = "{$str_inval} * 168.0"; $categories[STR_TIME]->conversion[STR_TIME_W][STR_TIME_D] = "{$str_inval} * 7.0"; /// END CONVERTERS /// ?>