//'winc' function allows buttons to be added toolbar

winc('User:Omegatron/monobook.js/addlink.js');

function formatgeneral() {
    var txt = document.editform.wpTextbox1;

    //Attempt to deal with naval infobox

    //real symbol for 'times'
    txt.value = txt.value.replace(/×/gi, '×');

    txt.value = txt.value.replace(/General\sCharacteristics/g, 'General characteristics');


    //expand torpedo tube abbreviation
    txt.value = txt.value.replace(/inch\st\.?t\.?/g, 'inch torpedo tubes');

    //turn letter 'x' into symbol '×'
    txt.value = txt.value.replace(/(\d)\sx\s({1,3})\sin\s\(/gi, '$1 × $2 in (');


    txt.value = txt.value.replace(/one\s5\-inch\/({1,2})\sdeck\sgun/g, '1 x 5 in (127 mm)\$1 cal deck gun');
    //Attempt to deal with naval infobox


    //3 inch
    txt.value = txt.value.replace(/one\s3inch\s()/gi, '1 × 3 in (76 mm) $1');
    txt.value = txt.value.replace(/two\s3inch\s()/gi, '2 × 3 in (76 mm) $1');
    txt.value = txt.value.replace(/three\s3inch\s()/gi, '3 × 3 in (76 mm) $1');
    txt.value = txt.value.replace(/four\s3inch\s()/gi, '4 × 3 in (76 mm) $1');
    txt.value = txt.value.replace(/five\s3inch\s()/gi, '5 × 3 in (76 mm) $1');
    txt.value = txt.value.replace(/six\s3inch\s()/gi, '6 × 3 in (76 mm) $1');
    txt.value = txt.value.replace(/seven\s3inch\s()/gi, '7 × 3 in (76 mm) $1');
    txt.value = txt.value.replace(/eight\s3inch\s()/gi, '8 × 3 in (76 mm) $1');
    txt.value = txt.value.replace(/(\d)\s\sthreeinch/gi, '$1 × 3 in (76 mm)');
    txt.value = txt.value.replace(/(\d)\s\s3inch/gi, '$1 × 3 in (76 mm)');
    txt.value = txt.value.replace(/\(76\s?mm\)\s?\(76\s?mm\)/gi, '(76 mm)');

    //4 inch
    txt.value = txt.value.replace(/one\s4inch\s()/gi, '1 × 4 in (102 mm) $1');
    txt.value = txt.value.replace(/two\s4inch\s()/gi, '2 × 4 in (102 mm) $1');
    txt.value = txt.value.replace(/three\s4inch\s()/gi, '3 × 4 in (102 mm) $1');
    txt.value = txt.value.replace(/four\s4inch\s()/gi, '4 × 4 in (102 mm) $1');
    txt.value = txt.value.replace(/five\s4inch\s()/gi, '5 × 4 in (102 mm) $1');
    txt.value = txt.value.replace(/six\s4inch\s()/gi, '6 × 4 in (102 mm) $1');
    txt.value = txt.value.replace(/seven\s4inch\s()/gi, '7 × 4 in (102 mm) $1');
    txt.value = txt.value.replace(/eight\s4inch\s()/gi, '8 × 4 in (102 mm) $1');
    txt.value = txt.value.replace(/(\d)\s\sfourinch/gi, '$1 × 4 in (102 mm)');
    txt.value = txt.value.replace(/(\d)\s\s4inch/gi, '$1 × 4 in (102 mm)');
    txt.value = txt.value.replace(/\(102\s?mm\)\s?\(102\s?mm\)/gi, '(102 mm)');

    //5 inch
    txt.value = txt.value.replace(/one\s5inch\s()/gi, '1 × 5 in (127 mm) $1');
    txt.value = txt.value.replace(/two\s5inch\s()/gi, '2 × 5 in (127 mm) $1');
    txt.value = txt.value.replace(/three\s5inch\s()/gi, '3 × 5 in (127 mm) $1');
    txt.value = txt.value.replace(/four\s5inch\s()/gi, '4 × 5 in (127 mm) $1');
    txt.value = txt.value.replace(/five\s5inch\s()/gi, '5 × 5 in (127 mm) $1');
    txt.value = txt.value.replace(/six\s5inch\s()/gi, '6 × 5 in (127 mm) $1');
    txt.value = txt.value.replace(/seven\s5inch\s()/gi, '7 × 5 in (127 mm) $1');
    txt.value = txt.value.replace(/eight\s5inch\s()/gi, '8 × 5 in (127 mm) $1');
    txt.value = txt.value.replace(/(\d)\s\s5inch/gi, '$1 × 5 in (127 mm)');
    txt.value = txt.value.replace(/(\d)\s\sfiveinch/gi, '$1 × 5 in (127 mm)');
    txt.value = txt.value.replace(/\(127\s?mm\)\s?\(127\s?mm\)/gi, '(127 mm)');

    //6 inch
    txt.value = txt.value.replace(/one\s6inch\s()/gi, '1 × 6 in (152 mm) $1');
    txt.value = txt.value.replace(/two\s6inch\s()/gi, '2 × 6 in (152 mm) $1');
    txt.value = txt.value.replace(/three\s6inch\s()/gi, '3 × 6 in (152 mm) $1');
    txt.value = txt.value.replace(/four\s6inch\s()/gi, '4 × 6 in (152 mm) $1');
    txt.value = txt.value.replace(/five\s6inch\s()/gi, '5 × 6 in (152 mm) $1');
    txt.value = txt.value.replace(/six\s6inch\s()/gi, '6 × 6 in (152 mm) $1');
    txt.value = txt.value.replace(/seven\s6inch\s()/gi, '7 × 6 in (152 mm) $1');
    txt.value = txt.value.replace(/eight\s6inch\s()/gi, '8 × 6 in (152 mm) $1');
    txt.value = txt.value.replace(/(\d)\s\s6inch/gi, '$1 × 6 in (152 mm)');
    txt.value = txt.value.replace(/(\d)\s\ssixinch/gi, '$1 × 6 in (152 mm)');
    txt.value = txt.value.replace(/\(152\s?mm\)\s?\(152\s?mm\)/gi, '(152 mm)');

    //7 inch
    txt.value = txt.value.replace(/one\s7inch\s()/gi, '1 × 7 in (178 mm) $1');
    txt.value = txt.value.replace(/two\s7inch\s()/gi, '2 × 7 in (178 mm) $1');
    txt.value = txt.value.replace(/three\s7inch\s()/gi, '3 × 7 in (178 mm) $1');
    txt.value = txt.value.replace(/four\s7inch\s()/gi, '4 × 7 in (178 mm) $1');
    txt.value = txt.value.replace(/five\s7inch\s()/gi, '5 × 7 in (178 mm) $1');
    txt.value = txt.value.replace(/six\s7inch\s()/gi, '6 × 7 in (178 mm) $1');
    txt.value = txt.value.replace(/seven\s7inch\s()/gi, '7 × 7 in (178 mm) $1');
    txt.value = txt.value.replace(/eight\s7inch\s()/gi, '8 × 7 in (178 mm) $1');
    txt.value = txt.value.replace(/(\d)\s\sseveninch/gi, '$1 × 7 in (178 mm)');
    txt.value = txt.value.replace(/(\d)\s\s7inch/gi, '$1 × 7 in (178 mm)');
    txt.value = txt.value.replace(/\(178\s?mm\)\s?\(178\s?mm\)/gi, '(178 mm)');

    //8 inch
    txt.value = txt.value.replace(/one\s8inch\s()/gi, '1 × 8 in (203 mm) $1');
    txt.value = txt.value.replace(/two\s8inch\s()/gi, '2 × 8 in (203 mm) $1');
    txt.value = txt.value.replace(/three\s8inch\s()/gi, '3 × 8 in (203 mm) $1');
    txt.value = txt.value.replace(/four\s8inch\s()/gi, '4 × 8 in (203 mm) $1');
    txt.value = txt.value.replace(/five\s8inch\s()/gi, '5 × 8 in (203 mm) $1');
    txt.value = txt.value.replace(/six\s8inch\s()/gi, '6 × 8 in (203 mm) $1');
    txt.value = txt.value.replace(/seven\s8inch\s()/gi, '7 × 8 in (203 mm) $1');
    txt.value = txt.value.replace(/eight\s8inch\s()/gi, '8 × 8 in (203 mm) $1');
    txt.value = txt.value.replace(/(\d)\s\s8inch/gi, '$1 × 8 in (203 mm)');
    txt.value = txt.value.replace(/(\d)\s\seightinch/gi, '$1 × 8 in (203 mm)');
    txt.value = txt.value.replace(/\(203\s?mm\)\s?\(203\s?mm\)/gi, '(203 mm)');

    //9 inch
    txt.value = txt.value.replace(/one\s9inch\s()/gi, '1 × 9 in (229 mm) $1');
    txt.value = txt.value.replace(/two\s9inch\s()/gi, '2 × 9 in (229 mm) $1');
    txt.value = txt.value.replace(/three\s9inch\s()/gi, '3 × 9 in (229 mm) $1');
    txt.value = txt.value.replace(/four\s9inch\s()/gi, '4 × 9 in (229 mm) $1');
    txt.value = txt.value.replace(/five\s9inch\s()/gi, '5 × 9 in (229 mm) $1');
    txt.value = txt.value.replace(/six\s9inch\s()/gi, '6 × 9 in (229 mm) $1');
    txt.value = txt.value.replace(/seven\s9inch\s()/gi, '7 × 9 in (229 mm) $1');
    txt.value = txt.value.replace(/eight\s9inch\s()/gi, '9 × 9 in (229 mm) $1');
    txt.value = txt.value.replace(/(\d)\s\s9inch/gi, '$1 × 9 in (229 mm)');
    txt.value = txt.value.replace(/(\d)\s\snineinch/gi, '$1 × 9 in (229 mm)');
    txt.value = txt.value.replace(/\(229\s?mm\)\s?\(229\s?mm\)/gi, '(229 mm)');

    //10 inch
    txt.value = txt.value.replace(/one\s10inch\s()/gi, '1 × 10 in (254 mm) $1');
    txt.value = txt.value.replace(/two\s10inch\s()/gi, '2 × 10 in (254 mm) $1');
    txt.value = txt.value.replace(/three\s10inch\s()/gi, '3 × 10 in (254 mm) $1');
    txt.value = txt.value.replace(/four\s10inch\s()/gi, '4 × 10 in (254 mm) $1');
    txt.value = txt.value.replace(/five\s10inch\s()/gi, '5 × 10 in (254 mm) $1');
    txt.value = txt.value.replace(/six\s10inch\s()/gi, '6 × 10 in (254 mm) $1');
    txt.value = txt.value.replace(/seven\s10inch\s()/gi, '7 × 10 in (254 mm) $1');
    txt.value = txt.value.replace(/eight\s10inch\s()/gi, '10 × 10 in (254 mm) $1');
    txt.value = txt.value.replace(/(\d)\s\s10inch/gi, '$1 × 10 in (254 mm)');
    txt.value = txt.value.replace(/(\d)\s\steninch/gi, '$1 × 10 in (254 mm)');
    txt.value = txt.value.replace(/\(254\s?mm\)\s?\(254\s?mm\)/gi, '(254 mm)');

    //11 inch
    txt.value = txt.value.replace(/one\s11inch\s()/gi, '1 × 11 in (279 mm) $1');
    txt.value = txt.value.replace(/two\s11inch\s()/gi, '2 × 11 in (279 mm) $1');
    txt.value = txt.value.replace(/three\s11inch\s()/gi, '3 × 11 in (279 mm) $1');
    txt.value = txt.value.replace(/four\s11inch\s()/gi, '4 × 11 in (279 mm) $1');
    txt.value = txt.value.replace(/five\s11inch\s()/gi, '5 × 11 in (279 mm) $1');
    txt.value = txt.value.replace(/six\s11inch\s()/gi, '6 × 11 in (279 mm) $1');
    txt.value = txt.value.replace(/seven\s11inch\s()/gi, '7 × 11 in (279 mm) $1');
    txt.value = txt.value.replace(/eight\s11inch\s()/gi, '11 × 11 in (279 mm) $1');
    txt.value = txt.value.replace(/(\d)\s\s11inch/gi, '$1 × 11 in (279 mm)');
    txt.value = txt.value.replace(/(\d)\s\seleveninch/gi, '$1 × 11 in (279 mm)');
    txt.value = txt.value.replace(/\(279\s?mm\)\s?\(279\s?mm\)/gi, '(279 mm)');

    //12 inch
    txt.value = txt.value.replace(/one\s12inch\s()/gi, '1 × 12 in (305 mm) $1');
    txt.value = txt.value.replace(/two\s12inch\s()/gi, '2 × 12 in (305 mm) $1');
    txt.value = txt.value.replace(/three\s12inch\s()/gi, '3 × 12 in (305 mm) $1');
    txt.value = txt.value.replace(/four\s12inch\s()/gi, '4 × 12 in (305 mm) $1');
    txt.value = txt.value.replace(/five\s12inch\s()/gi, '5 × 12 in (305 mm) $1');
    txt.value = txt.value.replace(/six\s12inch\s()/gi, '6 × 12 in (305 mm) $1');
    txt.value = txt.value.replace(/seven\s12inch\s()/gi, '7 × 12 in (305 mm) $1');
    txt.value = txt.value.replace(/eight\s12inch\s()/gi, '8 × 12 in (305 mm) $1');
    txt.value = txt.value.replace(/(\d)\s\stwelveinch/gi, '$1 × 12 in (305 mm)');
    txt.value = txt.value.replace(/(\d)\s\s12inch/gi, '$1 × 12 in (305 mm)');
    txt.value = txt.value.replace(/\(305\s?mm\)\s?\(305\s?mm\)/gi, '(305 mm)');

    //13 inch
    txt.value = txt.value.replace(/one\s13inch\s()/gi, '1 × 13 in (330 mm) $1');
    txt.value = txt.value.replace(/two\s13inch\s()/gi, '2 × 13 in (330 mm) $1');
    txt.value = txt.value.replace(/three\s13inch\s()/gi, '3 × 13 in (330 mm) $1');
    txt.value = txt.value.replace(/four\s13inch\s()/gi, '4 × 13 in (330 mm) $1');
    txt.value = txt.value.replace(/five\s13inch\s()/gi, '5 × 13 in (330 mm) $1');
    txt.value = txt.value.replace(/six\s13inch\s()/gi, '6 × 13 in (330 mm) $1');
    txt.value = txt.value.replace(/seven\s13inch\s()/gi, '7 × 13 in (330 mm) $1');
    txt.value = txt.value.replace(/eight\s13inch\s()/gi, '8 × 13 in (330 mm) $1');
    txt.value = txt.value.replace(/(\d)\s\sthirteeninch/gi, '$1 × 13 in (330 mm)');
    txt.value = txt.value.replace(/(\d)\s\s13inch/gi, '$1 × 13 in (330 mm)');
    txt.value = txt.value.replace(/\(330\s?mm\)\s?\(330\s?mm\)/gi, '(330 mm)');

    //14 inch
    txt.value = txt.value.replace(/one\s14inch\s()/gi, '1 × 14 in (356 mm) $1');
    txt.value = txt.value.replace(/two\s14inch\s()/gi, '2 × 14 in (356 mm) $1');
    txt.value = txt.value.replace(/three\s14inch\s()/gi, '3 × 14 in (356 mm) $1');
    txt.value = txt.value.replace(/four\s14inch\s()/gi, '4 × 14 in (356 mm) $1');
    txt.value = txt.value.replace(/five\s14inch\s()/gi, '5 × 14 in (356 mm) $1');
    txt.value = txt.value.replace(/six\s14inch\s()/gi, '6 × 14 in (356 mm) $1');
    txt.value = txt.value.replace(/seven\s14inch\s()/gi, '7 × 14 in (356 mm) $1');
    txt.value = txt.value.replace(/eight\s14inch\s()/gi, '14 × 14 in (356 mm) $1');
    txt.value = txt.value.replace(/(\d)\s\s14inch/gi, '$1 × 14 in (356 mm)');
    txt.value = txt.value.replace(/(\d)\s\sfourteeninch/gi, '$1 × 14 in (356 mm)');
    txt.value = txt.value.replace(/\(356\s?mm\)\s?\(356\s?mm\)/gi, '(356 mm)');

    //15 inch
    txt.value = txt.value.replace(/one\s15inch\s()/gi, '1 × 15 in (381 mm) $1');
    txt.value = txt.value.replace(/two\s15inch\s()/gi, '2 × 15 in (381 mm) $1');
    txt.value = txt.value.replace(/three\s15inch\s()/gi, '3 × 15 in (381 mm) $1');
    txt.value = txt.value.replace(/four\s15inch\s()/gi, '4 × 15 in (381 mm) $1');
    txt.value = txt.value.replace(/five\s15inch\s()/gi, '5 × 15 in (381 mm) $1');
    txt.value = txt.value.replace(/six\s15inch\s()/gi, '6 × 15 in (381 mm) $1');
    txt.value = txt.value.replace(/seven\s15inch\s()/gi, '7 × 15 in (381 mm) $1');
    txt.value = txt.value.replace(/eight\s15inch\s()/gi, '15 × 15 in (381 mm) $1');
    txt.value = txt.value.replace(/(\d)\s\s15inch/gi, '$1 × 15 in (381 mm)');
    txt.value = txt.value.replace(/(\d)\s\sfifteeninch/gi, '$1 × 15 in (381 mm)');
    txt.value = txt.value.replace(/\(381\s?mm\)\s?\(381\s?mm\)/gi, '(381 mm)');

    //16 inch
    txt.value = txt.value.replace(/one\s16inch\s()/gi, '1 × 16 in (406 mm) $1');
    txt.value = txt.value.replace(/two\s16inch\s()/gi, '2 × 16 in (406 mm) $1');
    txt.value = txt.value.replace(/three\s16inch\s()/gi, '3 × 16 in (406 mm) $1');
    txt.value = txt.value.replace(/four\s16inch\s()/gi, '4 × 16 in (406 mm) $1');
    txt.value = txt.value.replace(/five\s16inch\s()/gi, '5 × 16 in (406 mm) $1');
    txt.value = txt.value.replace(/six\s16inch\s()/gi, '6 × 16 in (406 mm) $1');
    txt.value = txt.value.replace(/seven\s16inch\s()/gi, '7 × 16 in (406 mm) $1');
    txt.value = txt.value.replace(/eight\s16inch\s()/gi, '16 × 16 in (406 mm) $1');
    txt.value = txt.value.replace(/(\d)\s\s16inch/gi, '$1 × 16 in (406 mm)');
    txt.value = txt.value.replace(/(\d)\s\ssixteeninch/gi, '$1 × 16 in (406 mm)');
    txt.value = txt.value.replace(/\(406\s?mm\)\s?\(406\s?mm\)/gi, '(406 mm)');

    //18 inch
    txt.value = txt.value.replace(/one\s18inch\s()/gi, '1 × 18 in (457 mm) $1');
    txt.value = txt.value.replace(/two\s18inch\s()/gi, '2 × 18 in (457 mm) $1');
    txt.value = txt.value.replace(/three\s18inch\s()/gi, '3 × 18 in (457 mm) $1');
    txt.value = txt.value.replace(/four\s18inch\s()/gi, '4 × 18 in (457 mm) $1');
    txt.value = txt.value.replace(/five\s18inch\s()/gi, '5 × 18 in (457 mm) $1');
    txt.value = txt.value.replace(/six\s18inch\s()/gi, '6 × 18 in (457 mm) $1');
    txt.value = txt.value.replace(/seven\s18inch\s()/gi, '7 × 18 in (457 mm) $1');
    txt.value = txt.value.replace(/eight\s18inch\s()/gi, '18 × 18 in (457 mm) $1');
    txt.value = txt.value.replace(/(\d)\s\s18inch/gi, '$1 × 18 in (457 mm)');
    txt.value = txt.value.replace(/(\d)\s\seighteeninch/gi, '$1 × 18 in (457 mm)');
    txt.value = txt.value.replace(/\(457\s?mm\)\s?\(457\s?mm\)/gi, '(457 mm)');

    //21 inch
    txt.value = txt.value.replace(/one\s21inch\s()/gi, '1 × 21 in (533 mm) $1');
    txt.value = txt.value.replace(/two\s21inch\s()/gi, '2 × 21 in (533 mm) $1');
    txt.value = txt.value.replace(/three\s21inch\s()/gi, '3 × 21 in (533 mm) $1');
    txt.value = txt.value.replace(/four\s21inch\s()/gi, '4 × 21 in (533 mm) $1');
    txt.value = txt.value.replace(/five\s21inch\s()/gi, '5 × 21 in (533 mm) $1');
    txt.value = txt.value.replace(/six\s21inch\s()/gi, '6 × 21 in (533 mm) $1');
    txt.value = txt.value.replace(/seven\s21inch\s()/gi, '7 × 21 in (533 mm) $1');
    txt.value = txt.value.replace(/eight\s21inch\s()/gi, '8 × 21 in (533 mm) $1');
    txt.value = txt.value.replace(/(\d)\s\stwentyoneinch/gi, '$1 × 21 in (533 mm)');
    txt.value = txt.value.replace(/(\d)\s\s21inch/gi, '$1 × 21 in (533 mm)');
    txt.value = txt.value.replace(/\(533\s?mm\)\s?\(533\s?mm\)/gi, '(533 mm)');



    // Convert degree symbols into ° symbol, ensure preceding space
    txt.value = txt.value.replace(/°/g, '°');
    txt.value = txt.value.replace(/º/g, '°');

    // Celsius spelling errors
    txt.value = txt.value.replace(/celsius/gi, 'Celsius');
    txt.value = txt.value.replace(/celcius/gi, 'Celsius');
    //Fix common naming error (be careful with this one)
    txt.value = txt.value.replace(/centigrade/gi, 'Celsius');

    //Celsius
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');

    //Fahrenheit
    //txt.value = txt.value.replace(/\\]/gi, '$1');
   // txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');

    //Celsius or Fahrenheit
    txt.value = txt.value.replace(/°\s()/g, '°$1');
    txt.value = txt.value.replace(/°\s?(celsius)/gi, '°C');
    txt.value = txt.value.replace(/(\d)\s?(°)/g, '$1 $2');
    txt.value = txt.value.replace(/deg()/gi, '°$1');
    txt.value = txt.value.replace(/deg\s()/gi, '°$1');
    txt.value = txt.value.replace(/deg\.?\s?()/gi, '°$1');
    txt.value = txt.value.replace(/degrees?\s()(\W)/gi, '°$1$2');
    txt.value = txt.value.replace(/(\d)\s?° ()/g, '$1 °$2');


    // Convert &sup to superscript
    txt.value = txt.value.replace(/²/g, '²');
    txt.value = txt.value.replace(/³/g, '³');

    // Convert micro symbol to actual micro symbol, make sure it's spaced
    txt.value = txt.value.replace(/(\d)\s?(μ|μ|µ)(g|s|m|A|K|mol|cd|rad|sr|Hz|N|J|W|Pa|lm|lx|C|V|Ω|F|Wb|T|H|S|Bq|Gy|Sv|kat|M)(\W)/g, '$1 µ$3$4');

    //metre
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');
    //space before 'm' only when lower case
    txt.value = txt.value.replace(/(\d)\s?m(\W)/g, '$1 m$2');
    txt.value = txt.value.replace(/(\d)\-m(\W)/g, '$1 m$2');
    txt.value = txt.value.replace(/(\d)\s?sq\.?\s?m(\W)/gi, '$1 m²$2');
    txt.value = txt.value.replace(/(\d)\-?sq\-?m(\W)/gi, '$1 m²$2');
    txt.value = txt.value.replace(/m²\.\)/gi, 'm²)');
    txt.value = txt.value.replace(/\smetres?\)/gi, ' m)');
    txt.value = txt.value.replace(/\smeters?\)/gi, ' m)');
    txt.value = txt.value.replace(/({1,9})meters?(\s{1,3}\()/gi, '$1m$2');
    txt.value = txt.value.replace(/({1,9})metres?(\s{1,3}\()/gi, '$1m$2');
    txt.value = txt.value.replace(/({1,9} )meters?(( |\s{1,3})\()/gi, '$1m$2');
    txt.value = txt.value.replace(/({1,9} )metres?(( |\s{1,3})\()/gi, '$1m$2');

    // millimetre
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');
    //txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');
    txt.value = txt.value.replace(/(\d)\s?mm(\W)/g, '$1 mm$2');
    txt.value = txt.value.replace(/(\d)\-mm(\W)/g, '$1 mm$2');

    // centimetre
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');
    //txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');

    // kilometre
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');
    //txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');
    txt.value = txt.value.replace(/(\d)\s?kms?(\W)/gi, '$1 km$2');
    txt.value = txt.value.replace(/(\d)\-kms?(\W)/gi, '$1 km$2');
    txt.value = txt.value.replace(/(\d) kms?(\W)/gi, '$1 km$2');
    //square kilometre
    //txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');
    txt.value = txt.value.replace(/(\d)\s?sq\.?\s?kms?/gi, '$1 km²');
    txt.value = txt.value.replace(/sq\.?\s?kms?/gi, 'km²');

    // kilometre per hour
    txt.value = txt.value.replace(/km\/hr(\W)/gi, 'km/h$1');
    txt.value = txt.value.replace(/kph(\W)/gi, 'km/h$1');
    txt.value = txt.value.replace(/kmph(\W)/gi, 'km/h$1');
    txt.value = txt.value.replace(/(\d)\s?kmh/gi, '$1 km/h');
    txt.value = txt.value.replace(/km\/h/gi, 'km/h');
    txt.value = txt.value.replace(/(\d)\s?km\/h/gi, '$1 km/h');
    txt.value = txt.value.replace(/(\d)\-km\/h/gi, '$1 km/h');
    txt.value = txt.value.replace(/(\d) km\/h/gi, '$1 km/h');

    // cubic centimetre
    txt.value = txt.value.replace(/(\d)\s?cm(\W)/gi, '$1 cm$2');
    txt.value = txt.value.replace(/(\d)\s?cc(\W)/gi, '$1 cc$2');
    txt.value = txt.value.replace(/(\d)\-cc(\W)/gi, '$1 cc$2');

    // millilitre
    txt.value = txt.value.replace(/(\d)\s?ml(\W)/g, '$1 ml$2');
    txt.value = txt.value.replace(/(\d)\-ml(\W)/g, '$1 ml$2');

    // second
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');
    txt.value = txt.value.replace(/\/sec(\W)/gi, '/s$1');
    txt.value = txt.value.replace(/\/sec\)/gi, '/s)$1');

    txt.value = txt.value.replace(/(\d)\s?ft\/second/gi, '$1 ft/s');
    txt.value = txt.value.replace(/(\d)\s?m\/second/gi, '$1 m/s');
    txt.value = txt.value.replace(/(\d)\s?km\/sec(\W)/gi, '$1 km/s$2');
    txt.value = txt.value.replace(/frames\/s(\W)/gi, 'frame/s$1');

    //minute
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');

    // hour
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');
    txt.value = txt.value.replace(/\/hr(\W)/gi, '/h$1');

    //day
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');

    // kilogram
    txt.value = txt.value.replace(/(kilogram)me/gi, '$1');
    txt.value = txt.value.replace(/(\W)(gram)mes?(\W)/gi, '$1$2$3');
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');
    txt.value = txt.value.replace(/(\d)\s?kg(\W)/gi, '$1 kg$2');
    txt.value = txt.value.replace(/(\d)\-kg(\W)/gi, '$1 kg$2');

    // newton metre
    //txt.value = txt.value.replace(/(\W)Nm(\W)/gi, '$1N·m$2');
    txt.value = txt.value.replace(/(\d)\s?(Nm\W)/gi, '$1 $2');
    txt.value = txt.value.replace(/(\d)\-(Nm\W)/gi, '$1 $2');

    // kilowatt
    txt.value = txt.value.replace(/(\d)\s?kW(\W)/gi, '$1 kW$2');
    txt.value = txt.value.replace(/(\d)\-kW(\W)/gi, '$1 kW$2');

    // Hertz
    txt.value = txt.value.replace(/(\d)\s?(G|M|k)?hz/gi, '$1 $2Hz');
    txt.value = txt.value.replace(/(\d)\-(G|M|k)?hz/gi, '$1 $2Hz');
    txt.value = txt.value.replace(/khz/gi, 'kHz');


    // ohm
    txt.value = txt.value.replace(/(\d)\s?(Y|Z|E|P|T|G|M|k|K|h|da|d|c|m|µ|μ|µ|n|p|f|a|z|y)?\s?(Ω|ohm|Ohm)s?(\W)/g, '$1 $2Ω$4');

    // pound weight
    //txt.value = txt.value.replace(/(\d)\s?(\\])/gi, '$1 lb');
    //txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');
    txt.value = txt.value.replace(/(\d)\s?lbs?/gi, '$1 lb');
    txt.value = txt.value.replace(/(\d\+?)\s?lbs?/gi, '$1 lb');
    txt.value = txt.value.replace(/(\d) lbs?/gi, '$1 lb');
    txt.value = txt.value.replace(/(\d)\slb.\)/gi, '$1 lb)');

    //inch
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    //txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');
    //txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');

    //foot
    //txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');
    txt.value = txt.value.replace(/(\d)\s?ft(\W)/gi, '$1 ft$2');
    txt.value = txt.value.replace(/(\d)\-ft(\W)/gi, '$1 ft$2');
    txt.value = txt.value.replace(/(\W)ft\.\)/gi, '$1ft)');
    txt.value = txt.value.replace(/\sfeet\)/gi, ' ft)');
    txt.value = txt.value.replace(/ feet\)/gi, ' ft)');
    txt.value = txt.value.replace(/(\|{1,9})feet(\s{1,3}\()/gi, '$1ft$2');

    // square foot
    txt.value = txt.value.replace(/sq\.?\s?ft/gi, 'sq ft');

    // foot and inch
    //txt.value = txt.value.replace(/({1,4})(\d{1,4})\s?\s?(\d{1,3})\s?()/g, '$1$2 ft $3 in$4');
    txt.value = txt.value.replace(/(ength{1,3})(\d{1,4})\s?\s?(\d{1,3})\s?/gi, '$1$2 ft $3 in');
    txt.value = txt.value.replace(/(idth{1,3})(\d{1,4})\s?\s?(\d{1,3})\s?/gi, '$1$2 ft $3 in');
    txt.value = txt.value.replace(/(\s?\d{1,4})\s?\s?(\d{1,3})\s?()/g, '$1 ft $2 in$3');
    txt.value = txt.value.replace(/(\d)\s?ft\s?(\d{1,3})\s?in/gi, '$1 ft $2 in');

    // yard
    txt.value = txt.value.replace(/(\d)\s?yds(\W)/gi, '$1 yd$2');
    txt.value = txt.value.replace(/(\d) yds(\W)/gi, '$1 yd$2');
    txt.value = txt.value.replace(/sq\.?\s?yds?/gi, 'sq yd');
    txt.value = txt.value.replace(/yd\.\)/gi, 'yd)');

    // mile and mile per hour
    //txt.value = txt.value.replace(/\]{1,30})\]\]/gi, '$1');
    //txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/m\.p\.h\.(\W)/g, 'mph$1');
    txt.value = txt.value.replace(/(\W)mph(\W)/gi, '$1mph$2');
    txt.value = txt.value.replace(/(\d)\s?mph/gi, '$1 mph');
    txt.value = txt.value.replace(/(\d)\-mph/gi, '$1 mph');

    // square mile
    txt.value = txt.value.replace(/sq\.?\s?mi/gi, 'sq mi');

    // foot pound
    txt.value = txt.value.replace(/ftlbs?(\W)/gi, 'ft·lbf$1');
    txt.value = txt.value.replace(/ftlb(\W)/gi, 'ft·lbf$1');
    txt.value = txt.value.replace(/ftlbs/gi, 'ft·lbf');
    txt.value = txt.value.replace(/ftlbf/gi, 'ft·lbf');
    txt.value = txt.value.replace(/ftlbff/gi, 'ft·lbf');
    //the next two suspended until solution is found for wing loading (i.e. pounds per square foot)
    //txt.value = txt.value.replace(/lbft/gi, 'ft·lbf');
    //txt.value = txt.value.replace(/lbft/gi, 'ft·lbf');

    // Give digital value a percent symbol '%' instead of word
    txt.value = txt.value.replace(/(\d)\s?per ?cent()/gi, '$1%$2');
    txt.value = txt.value.replace(/(\d)\-per ?cent()/gi, '$1%$2');

    // knot
    txt.value = txt.value.replace(/(\d)\s?kts(\W)/gi, '$1 knots$2');
    txt.value = txt.value.replace(/(\d)\s?knt(\W)/gi, '$1 knots$2');

    // horsepower
    txt.value = txt.value.replace(/(\d)\s?hp(\W)/gi, '$1 hp$2');
    txt.value = txt.value.replace(/(\d)\s?bhp/gi, '$1 bhp');
    txt.value = txt.value.replace(/(\d)\s?shp/gi, '$1 shp');

    //Pferdestärke
    txt.value = txt.value.replace(/(\d)\s?(ps\W)/gi, '$1 $2');

    // rpm
    txt.value = txt.value.replace(/(\d)\s?rpm/gi, '$1 rpm');
    txt.value = txt.value.replace(/(\d)\-rpm/gi, '$1 rpm');

    // decibel
    txt.value = txt.value.replace(/(\d)\s?(dB)\b/g, '$1 $2');

    // bits per second
    txt.value = txt.value.replace(/()(bps|bits?\/s|b\/s)/g, '$1bit/s');
    txt.value = txt.value.replace(/(\d)\s?(bps)/gi, '$1 bit/s');
    txt.value = txt.value.replace(/(\d) bps/gi, '$1 bit/s');
    txt.value = txt.value.replace(/bits?\/sec(\W)/gi, 'bit/s$1');

    // bytes per second
    txt.value = txt.value.replace(/()(Bps|bytes?\/s)/g, ' $1B/s');
    txt.value = txt.value.replace(/bytes?\/s(\W)/gi, 'B/s$1');

    // capitalization of prefix with bits and bytes
    txt.value = txt.value.replace(/K(bit|B)\/s/g, 'k$1/s');
    txt.value = txt.value.replace(/m(bit|B)\/s/g, 'M$1/s');
    txt.value = txt.value.replace(/g(bit|B)\/s/g, 'G$1/s');

    // space with bits and bytes
    txt.value = txt.value.replace(/(\d)\s?(k|M|G)(bit|B)/g, '$1 $2$3');

    // Common error with bits and bytes
    txt.value = txt.value.replace(/mibi(bit|byte)/g, 'mebi$1');

    //Remove 'Easter egg' diversions (linking unit name to orders of magnitude articles)
    txt.value = txt.value.replace(/\]{1,50})\]\]/gi, '$1');
    txt.value = txt.value.replace(/\{1,30}\)\|(]{1,50})\]\]/gi, '$1');

    // century without AD,BC etc
    txt.value = txt.value.replace(/\century\]\]/gi, '$1 century');
    txt.value = txt.value.replace(/\century\|(\d{1,2}(?:st|nd|rd|th))\]\]/gi, '$1');
    txt.value = txt.value.replace(/\century\|(\d{1,2}(?:st|nd|rd|th))century\]\]/gi, '$1 century');
    txt.value = txt.value.replace(/\century\|(\d{1,2}(?:st|nd|rd|th))centuries\]\]/gi, '$1 centuries');
    // century with AD,BC etc
    txt.value = txt.value.replace(/\century\s(AD|BC|CE|BCE)\]\]/gi, '$1 century $2');
    txt.value = txt.value.replace(/\century\|(\d{1,2}(?:st|nd|rd|th))century\s(AD|BC|CE|BCE)\]\]/gi, '$1 century $2');
    txt.value = txt.value.replace(/\century\|(\d{1,2}(?:st|nd|rd|th))centuries\s(AD|BC|CE|BCE)\]\]/gi, '$1 centuries $2');
    txt.value = txt.value.replace(/(\d(?:st|nd|rd|th))Century/gi, '$1 century');

    // piped decades and years
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');

    // months
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');

    //month+year
    txt.value = txt.value.replace(/\\]/gi, '$1');

    //Month+day_number "March 7th" -> "March 7"
    txt.value = txt.value.replace(/\\]/gi, '\\]');
    txt.value = txt.value.replace(/\\](?:th|st|nd|rd)/gi, '\\]');
    txt.value = txt.value.replace(/\\]/gi, '\\]');

    //Month+day_number piped into number. Preferences do not work. They don't work in sequence because digits in the two dates must be adjacent
    txt.value = txt.value.replace(/({4})\\](\s?\-?\s?)\\]/gi, '$1$2$3$4');
    //same again but with ndash or mdash instead of hyphen
    txt.value = txt.value.replace(/({4})\\](\s?‐\s?)\\]/gi, '$1$2$3$4');
    //same again but with slash instead of hyphen
    txt.value = txt.value.replace(/({4})\\](\/)\\]/gi, '$1$2$3$4');

    txt.value = txt.value.replace(/({4})\\](\s?\-?\s?)\\]/gi, '$1$2$3$4');
    //same again but with ndash instead of hyphen
    txt.value = txt.value.replace(/({4})\\](\s?‐\s?)\\]/gi, '$1$2$3$4');
    //same again but with slash instead of hyphen
    txt.value = txt.value.replace(/({4})\\](\/)\\]/gi, '$1$2$3$4');

    txt.value = txt.value.replace(/({4})\\](\s?\-?\s?)\\]/gi, '$1$2$3$4');
    //same again but with ndash instead of hyphen
    txt.value = txt.value.replace(/({4})\\](\s?‐\s?)\\]/gi, '$1$2$3$4');
    //same again but with slash instead of hyphen
    txt.value = txt.value.replace(/({4})\\](\/)\\]/gi, '$1$2$3$4');

    txt.value = txt.value.replace(/({4})\\](\s?\-?\s?)\\]/gi, '$1$2$3$4');
    //same again but with ndash instead of hyphen
    txt.value = txt.value.replace(/({4})\\](\s?‐\s?)\\]/gi, '$1$2$3$4');
    //same again but with slash instead of hyphen
    txt.value = txt.value.replace(/({4})\\](\/)\\]/gi, '$1$2$3$4');

    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');

    txt.value = txt.value.replace(/\\]/gi, '$1');


    // solitary day_numbers
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');

    // days of the week in full. Optional plurals
    txt.value = txt.value.replace(/\\]/gi, '$1');
    // days of the week abbreviated. Leave out 'Sun' as potentially valid link to the Sun. Leave out 'SAT' in upper case as potential link to 'Scholastic achievement/aptitude test'.
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/g, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');
    txt.value = txt.value.replace(/\\]/gi, '$1');

    //4 digit years piped into 2
    txt.value = txt.value.replace(/\\]/gi, '$1');

    //year: examine characters in link on left for date, examine characters in link on right for date
    txt.value = txt.value.replace(/((?:..|.|)\]\]\s?,?\-?\s?)\\](\s?,?\-?\s?\|.|..))/gi, '$1$2$3');
    //year pair: examine characters in link on left for date, examine characters in link on right for date
    txt.value = txt.value.replace(/((?:..|.|)\]\]\s?,?\-?\s?)\\](.?.?.?.?.?.?)\\](\s?,?\-?\s?\|.|..))/gi, '$1$2$3$4$5');

    //year: examine characters in link on left for date, avoid links on right
    txt.value = txt.value.replace(/((?:..|.|)\]\]\s?,?\-?\s?)\\]({4})/gi, '$1$2$3');
    //year pair: examine characters in link on left for date, avoid links on right
    txt.value = txt.value.replace(/((?:..|.|)\]\]\s?,?\-?\s?)\\](.?.?.?.?.?.?)\\]({4})/gi, '$1$2$3$4$5');

    //year: check for line-ends, text on left, avoid links on right. Run twice to deal better with lists.
    txt.value = txt.value.replace(/(\s?,?\-?\s?|\n)\\]({4}|\n)/gi, '$1$2$3');
    txt.value = txt.value.replace(/(\s?,?\-?\s?|\n)\\]({4}|\n)/gi, '$1$2$3');
    //year pair: check for line-ends, text on left, avoid links on right
    txt.value = txt.value.replace(/(\s?,?\-?\s?)\\](.?.?.?.?.?.?)\\]({4}|\n)/gi, '$1$2$3$4$5');

    //year: avoid links on left, examine characters in link on right for date
    txt.value = txt.value.replace(/(]{4})\\](\s?,?\-?\s?\|.|..))/gi, '$1$2$3');
    //year pair: avoid links on left, examine characters in link on right for date
    txt.value = txt.value.replace(/(]{4})\\](.?.?.?.?.?.?)\\](\s?,?\-?\s?\|.|..))/gi, '$1$2$3$4$5');

    //year:avoid links on left, text on right
    txt.value = txt.value.replace(/(]{4})\\](\s?,?\-?\s?)/gi, '$1$2$3');
    //year pair: avoid links on left, text on right
    txt.value = txt.value.replace(/(]{4})\\](.?.?.?.?.?.?)\\](\s?,?\-?\s?)/gi, '$1$2$3$4$5');

    //year:text on left, text on right
    txt.value = txt.value.replace(/(\s?,?\-?\s?)\\](\s?,?\-?\s?)/gi, '$1$2$3');
    //year pair: avoid links on left, text on right
    txt.value = txt.value.replace(/(\s?,?\-?\s?)\\](.?.?.?.?.?.?)\\](\s?,?\-?\s?)/gi, '$1$2$3$4$5');

    //year:avoid links on left, hyphen but no digits (to avoid ISO date) in link on right. Currently suspended because it isn't fully tested.
    //txt.value = txt.value.replace(/(]{4})\\](\s?,?\-?\s?\)/gi, '$1$2$3');

    //year:avoid links on both sides
    txt.value = txt.value.replace(/(]{4})\\]({4})/gi, '$1$2$3');
    //year pair: avoid links on both sides
    txt.value = txt.value.replace(/(]{4})\\](.?.?.?.?.?.?)\\]({4})/gi, '$1$2$3$4$5');

    //'present'
    txt.value = txt.value.replace(/\\]/gi, '$1');

    //Eliminate 'surprise links' also known as 'easter egg links'
    txt.value = txt.value.replace(/\{1,30}\|(\d{1,4}s?)\]\]/gi, '$1');


    
    // Add a tag to the summary box
    var txt = document.editform.wpSummary;
    var summary = "units &/or links";
	if (txt.value.indexOf(summary) == -1) {
		if (txt.value.match(/?\s*$/)) {
			txt.value += " | ";
		}
		txt.value += summary;
	}

    // Press the diff button to check it
    document.editform.wpDiff.click()
}

$(function () {
    if(document.forms.editform) {
        addLink('p-cactions', 'javascript:formatgeneral()', 'general', 'ca-unitfixer', 'Fixes some unit formatting', '', '');
    }
});