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

    // Convert all html entities into actual dash characters 
    txt.value = txt.value.replace(/(—|—|—)/g, '—');
    txt.value = txt.value.replace(/(&#x2013|–|–)/g, '–');
    txt.value = txt.value.replace(/(−|−|−)/g, '−');

    // Convert -- and em dashes *with or without* spaces --> em dash character surrounded by spaces
    txt.value = txt.value.replace(/(\}\)])\s? ?(--|—|—)\s? ?()/g, '$1 — $3');

    // Convert - or en dashes *with* spaces --> em dash character surrounded by spaces
    txt.value = txt.value.replace(/(\}])( | ) ?(-|–|–)  ?()/g, '$1$2— $4');

    // Convert hyphen next to lone number into a minus sign character
//    txt.value = txt.value.replace(/(\>])(\s)-(\d)/g, '$1$2−$3');
//    Should not touch anything inside math tags...

    // Em dashes for dates?
    txt.value = txt.value.replace(/(\d\d\d)\s?(--?|—|—)\s?(\d\d\d|\d\d)()/g, '$1–$3$4');

    // Add a tag to the summary box
    var txt = document.editform.wpSummary;
    var summary = "]";
	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) {
        mw.util.addPortletLink('p-cactions', 'javascript:replacedash()', '—', 'ca-dashfixer', 'Fixes dash formatting', '', '');
    }
});