//Dokumentation unter ] <nowiki>
/*global mediaWiki*/
(function ($, mw) {
"use strict";
var config = {
	beo: true, //auf Beobachtungsliste ausführen?
	rc: false, //auf Letzen Änderungen etc. ausführen?
	seiten: mw.config.get('wgDBname') === 'dewiki' ? //auf diesen Seiten ausführen
		 :
		
}, parserDefaults, parserExtends = {};

parserDefaults = {
	re: /^\s*(\d+)\.?\s*(.*?)\s*((?:\d{4})?)\s*$/,
	order: ,
	parseDay: Number,
	parseMonth: function (month) {
		return Number(month.replace(/\D/g, '')) - 1;
	},
	parseYear: function parseYear (year, month) {
		if (year) {
			return Number(year);
		}
		var now = new Date();
		if (month > now.getMonth()) {
			return now.getFullYear() - 1;
		} else {
			return now.getFullYear();
		}
	},
	format: '$1, $2'
};

parserExtends.de = {
	parseMonth: function (monat) {
		monat = monat.toLowerCase();
		if (monat.indexOf('jan') === 0) {
			return 0;
		}
		if (monat.indexOf('feb') === 0) {
			return 1;
		}
		if (monat.indexOf('mär') === 0) {
			return 2;
		}
		if (monat.indexOf('apr') === 0) {
			return 3;
		}
		if (monat.indexOf('mai') === 0) {
			return 4;
		}
		if (monat.indexOf('jun') === 0) {
			return 5;
		}
		if (monat.indexOf('jul') === 0) {
			return 6;
		}
		if (monat.indexOf('aug') === 0) {
			return 7;
		}
		if (monat.indexOf('sep') === 0) {
			return 8;
		}
		if (monat.indexOf('okt') === 0) {
			return 9;
		}
		if (monat.indexOf('nov') === 0) {
			return 10;
		}
		if (monat.indexOf('dez') === 0) {
			return 11;
		}
		return Number(monat.replace(/\D/g, '')) - 1;
	},
	days: 
};

parserExtends.en = {
	parseMonth: function (month) {
		month = month.toLowerCase();
		if (month.indexOf('jan') === 0) {
			return 0;
		}
		if (month.indexOf('feb') === 0) {
			return 1;
		}
		if (month.indexOf('mar') === 0) {
			return 2;
		}
		if (month.indexOf('apr') === 0) {
			return 3;
		}
		if (month.indexOf('may') === 0) {
			return 4;
		}
		if (month.indexOf('jun') === 0) {
			return 5;
		}
		if (month.indexOf('jul') === 0) {
			return 6;
		}
		if (month.indexOf('aug') === 0) {
			return 7;
		}
		if (month.indexOf('sep') === 0) {
			return 8;
		}
		if (month.indexOf('oct') === 0) {
			return 9;
		}
		if (month.indexOf('nov') === 0) {
			return 10;
		}
		if (month.indexOf('dec') === 0) {
			return 11;
		}
		return Number(month.replace(/\D/g, '')) - 1;
	},
	days: 
};

function parseDate (date, parserData) {
	var match = parserData.re.exec(date),
		day, month, year;
	if (!match) {
		return false;
	}
	day = parserData.parseDay(match]);
	month = parserData.parseMonth(match]);
	if (month < 0 || month > 11) {
		return false;
	}
	year = parserData.parseYear(match], month);
	return new Date(year, month, day);
}

function formatDate (dateString, parserData) {
	var date = parseDate(dateString, parserData);
	if (date) {
		return parserData.format
			.replace(/\$1/, parserData.days)
			.replace(/\$2/, dateString);
	}
}

function datumMitTag (datum) {
	var parserData = $.extend({}, parserDefaults, parserExtends);
	if (!parserData.days) {
		return;
	}
	return formatDate(datum, parserData);
}

//fügt einen Wochentag vor ein Datum ein
function einfuegen () {
	/*jshint validthis: true*///Funktion für $().each mit explizitem Kontext
	var datum = datumMitTag(this.innerHTML);
	if (datum) {
		this.innerHTML = datum;
	}
}

//Bearbeitet die Beobachtungsliste/...
function beobachtungsliste ($content) {
	$content.find('h4').each(einfuegen);
}
//Bearbeitet die aktuelle Seite
function seite ($content) {
	$content.find('#toc .toclevel-1 > a .toctext').each(einfuegen);
	$content.find('h1 .mw-headline').each(einfuegen);
}

function run ($content) {
	var special = mw.config.get('wgCanonicalSpecialPageName');
	if (
		(special === 'Watchlist' && config.beo) ||
		(special === 'Recentchanges' && config.rc) ||
		(special === 'Recentchangeslinked' && config.rc)
	) {
		beobachtungsliste($content);
	} else if (config.seiten.indexOf(mw.config.get('wgPageName')) !== -1) {
		seite($content);
	}
}

mw.hook('userjs.load-script.wochentag').fire(config);
mw.hook('wikipage.content').add(run);

})(jQuery, mediaWiki);
//</nowiki>