/*
A few custom refactorings for -more classes

	License:
		MIT-style license.

	Authors:
		Daniel Lohse

*/
Form.Validator = Class.refactor(Form.Validator, {
  enforceField: function(field) {
    this.previous(field);
    this.resetField(field);
    return this;
	}
});
Form.Validator.add('validate-custom-ignore', {
  errorMsg: false,
  test: function(element, props) {
    var fv = element.getParent('form').retrieve('validator');
    if (!fv) return true;
    if (FormValidator.getValidator('IsEmpty').test(element) || element.get('value') === props.emptyValue) {
			fv.ignoreField(element);
			fv.resetField(element);
			element.addEvent('change', function(e) {
			  this.enforceField(e.target);
			  e.target.removeEvent(e);
			}.bind(fv));
			return true;
    }
    return true;
  }
});

Form.Validator.Inline = Class.refactor(Form.Validator.Inline, {
  insertAdvice: function(advice, field){
		//Check for error position prop
		var props = field.get('validatorProps');
		//Build advice
		if (!props.msgPos || !document.id(props.msgPos)){
			if (field.type.toLowerCase() == 'radio') field.getParent().adopt(advice);
			else advice.inject(document.id(field), (Browser.Engine.trident4 || Browser.Engine.trident5) ? 'before' : 'after');
		} else {
			document.id(props.msgPos).grab(advice);
		}
	}
});

var OverText = Class.refactor(OverText, {
  attach: function () {
    var val = this.options.textOverride || this.element.get('alt') || this.element.get('title');
		if (!val) return;
		if (this.element.get('value') === val) this.element.set('value', '');
		this.previous();
  }
});


/*
MooCalendar messages for English.

	License:
		MIT-style license.

	Authors:
		Daniel Lohse

*/
MooTools.lang.set('en-US', 'MooCalendar', {});


/*
Date parsers for German (Germany)

	License:
		MIT-style license.

	Authors:
		Daniel Lohse

*/
Date.defineParser('%d.%m.%Y( %H:%M:%S)?');
Date.defineFormat('short', '%d.%m.%Y');
Date.defineFormat('long', '%d%o %B %Y %H:%M');

/*
Date messages for German (Germany).

	License:
		MIT-style license.

	Authors:
		Aaron Newton
		Daniel Lohse (translator from English)

*/
MooTools.lang.set('de-DE', 'Date', {

	months: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
	days: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
	dateOrder: ['date', 'month', 'year', '.'], //culture's date order: DD.MM.YYYY
	shortDate: '%d.%m.%Y', shortTime: '%I:%M%p', AM: '', PM: '', ordinal: '.',

	lessThanMinuteAgo: 'vor weniger als einer Minute', minuteAgo: 'ungefähr vor einer Minute', minutesAgo: 'vor {delta} Minuten',
	hourAgo: 'vor ungefähr einer Stunde', hoursAgo: 'vor ungefähr {delta} Stunden',
	dayAgo: 'vor einem Tag', daysAgo: 'vor {delta} Tagen',
	lessThanMinuteUntil: 'in weniger als einer Minute', minuteUntil: 'in ungefähr einer Minute', minutesUntil: 'in {delta} Minuten',
	hourUntil: 'in ungefähr einer Stunde', hoursUntil: 'in ungefähr {delta} Stunden',
	dayUntil: 'in einem Tag', daysUntil: 'in ungefähr {delta} Tagen'

});

/*
Date messages for English.

	License:
		MIT-style license.

	Authors:
		Aaron Newton
		Daniel Lohse (translator from English)

*/
MooTools.lang.set('de-DE', 'Form.Validator', {

	required:'Pflichtfeld!', errorPrefix: 'Fehler: ',
	minLength:'Bitte geben Sie mindestens {minLength} Buchstaben ein (Sie haben {length} Buchstaben eingegeben).',
	maxLength:'Bitte geben Sie h&ouml;chstens {maxLength} Buchstaben ein (Sie haben {length} Buchstaben eingegeben).',
	integer:'Bitte geben Sie eine Zahl in dieses Feld ein (gebrochene Zahlen wie z.B. 1,25 sind nicht zul&auml;ssig).',
	numeric:'Bitte geben Sie nur numerische Werte ein (z.B. "1", "1,1", "-1" oder "-1,1").',
	digits:'Bitte benutzen Sie nur Zahlen und Interpunktion in diesem Feld (eine Telefonnummer mit Trennstrichen oder Punkten ist zul&auml;ssig).',
	alpha:'Bitte benutzen Sie in diesem Feld nur Buchstaben (a-z, A-Z).',
	alphanum:'Bitte benutzen Sie in diesem Feld nur Buchstaben (a-z, A-Z) und Zahlen (0-9).',	
	dateSuchAs:'Bitte geben Sie ein g&uuml;ltiges Datum wie {date} ein.',
	dateInFormatMDY:'Bitte geben Sie ein g&uuml;ltiges Datum wie DD.MM.YYYY (z.B. "31.12.2009") ein.',	
	email:'Ung&uuml;ltig!',
	url:'Bitte geben Sie eine g&uuml;ltige URL wie z.B. http://www.google.com ein.',
	currencyDollar:'Bitte geben Sie einen korrekten $-Betrag ein, z.B. $100,00.',
	currencyEuro:'Bitte geben Sie einen korrekten €-Betrag ein, z.B. €100,00.',
	oneRequired:'Bitte geben Sie in mindestens einem dieser Felder etwas ein.',
	errorPrefix: 'Fehler: ', warningPrefix: 'Warnung: ', noSpace: 'In diesem Feld d&uuml;rfen keine Leerzeichen sein.',
	reqChkByNode: 'Keine Auswahl getroffen.', requiredChk: 'Pflichtfeld!', reqChkByName: 'Bitte w&auml;hlen Sie {label}',
	startDate: 'das Startdatum', endDate: 'das Enddatum', currendDate: 'das aktuelle Datum', 
	afterDate: 'Das Datum sollte am oder nach dem {label} liegen.', beforeDate: 'Das Datum sollte am oder vor dem {label} liegen.', 
	startMonth: 'Bitte w&auml;hlen Sie einen Startmonat aus', match: 'Dieses Feld muss gleich dem {matchName}-Feld sein',
	sameMonth: 'Die beiden Datumswerte m&uuml;ssen im selben Monat sein - Sie m&uuml;ssen einen der beiden &auml;ndern.'

});
