














function ResourceBundleValidateApp() {
   //Fields
   this.bundle = new Array();
   // Methods
   this.getString         = function(resourceJava) {return this.bundle[resourceJava];}
   //Array fuellen
   
   this.bundle['invalidFormat2'] = '\nEen voorbeeld van een geldige notatie is "{1}".';
   
   this.bundle['date_of_mess'] = 'Datum van bericht';
   
   this.bundle['javaDateFormat'] = 'yyyy-MM-dd';
   
   this.bundle['formatDateMMYYYY'] = 'JJJJ-MM';
   
   this.bundle['methodGetMinute'] = 'parseInt(value.substr(3, 2), 10)';
   
   this.bundle['invalidFormat'] = 'De inhoud van het veld "{0}" heeft niet de juiste notatie.';
   
   this.bundle['name02'] = 'Naam';
   
   this.bundle['methodGetHour'] = 'parseInt(value.substr(0, 2), 10)';
   
   this.bundle['formatHNR'] = '[0-9][a-z,A-Z]';
   
   this.bundle['hintFocusMandatoryField'] = 'Een van de velden is niet juist ingevuld. Klik op de desbetreffende hint om de ingevoerde gegevens te controleren:';
   
   this.bundle['formatName'] = '[a-z,A-Z,-,.,spatie,speciale tekens]';
   
   this.bundle['formatNumeric8Digits'] = '[0-9]{8}';
   
   this.bundle['currencyField'] = 'Voer in het veld "{0}" alleen een geldige valuta in.';
   
   this.bundle['formatCity'] = '[a-z,A-Z,-,.,spatie,speciale tekens]';
   
   this.bundle['formatFloat'] = '0-9.,0-9';
   
   this.bundle['expirationDate'] = 'Vervaldatum van nieuws voor de voorpagina';
   
   this.bundle['formatFon'] = '[0-9]/[0-9]';
   
   this.bundle['description'] = 'Beschrijving';
   
   this.bundle['methodGetMonth'] = 'parseInt(value.substr(5, 2), 10)';
   
   this.bundle['mandatoryField'] = 'Het veld "{0}" is een verplicht veld dat niet leeg mag zijn.';
   
   this.bundle['formatAscii'] = 'a-z, A-Z, 0-9, -, ., spatie, speciale tekens';
   
   this.bundle['SVR_invalidFormat_root'] = 'De inhoud van het veld "{0}" heeft niet de juiste notatie.';
   
   this.bundle['SVR_mandatoryField'] = 'Het veld "{0}" is een verplicht veld dat niet leeg mag zijn.';
   
   this.bundle['hintHiddenMandatoryField'] = '(verplicht veld)';
   
   this.bundle['numberField'] = 'Voer in het veld "{0}" alleen cijfers in.';
   
   this.bundle['methodGetYearMMYYYY'] = 'parseInt(value.substr(0, 4))';
   
   this.bundle['regexpIsTime'] = '/\d\d\:\d\d/';
   
   this.bundle['dateField'] = 'Voer in het veld "{0}" een geldige datum in (notatie: JJJJ-MM-DD).';
   
   this.bundle['format'] = 'a-z, A-Z, -, ., spatie, speciale tekens';
   
   this.bundle['regexpIsDateMMYYYY'] = '/\d\d\d\d\-\d\d/';
   
   this.bundle['regexpIsDate'] = '/\d\d\d\d\-\d\d\-\d\d/';
   
   this.bundle['SVR_datedif'] = '';
   
   this.bundle['SVR_invalidFormat'] = '\nEen voorbeeld van een geldige notatie is "{0}".';
   
   this.bundle['methodGetMonthMMYYYY'] = 'parseInt(value.substr(5, 2), 10)';
   
   this.bundle['formatTime'] = 'UU:MM';
   
   this.bundle['formatPLZ'] = '[0-9]';
   
   this.bundle['methodGetYear'] = 'parseInt(value.substr(0, 4))';
   
   this.bundle['formatDate'] = 'JJJJ-MM-DD';
   
   this.bundle['formatDateYYYY'] = 'JJJJ';
   
   this.bundle['formatTextNum'] = '[a-z,A-Z,0-9,-,.,spatie,speciale tekens]';
   
   this.bundle['formatNumber'] = '0-9';
   
   this.bundle['formatEMail'] = 'naam@domein.topdomein';
   
   this.bundle['formatPLZ_DE'] = '[0-9]{5}';
   
   this.bundle['emailField'] = 'Typ een geldig e-mailadres in het veld "{0}".';
   
   this.bundle['methodGetDay'] = 'parseInt(value.substr(8, 2), 10)';
   
   this.bundle['time_of_message'] = 'Tijd van bericht';
   
   this.bundle['regexpIsDateYYYY'] = '/\d\d\d\d/';
   
  }

var resourceBundleValidateApp     = new ResourceBundleValidateApp();



//
// Prueft ob ein Element ueberhaupt existiert.
//
function exists(field) {
  if (document.getElementsByName(field)[0]) return true;
  return false;
}

//
// Pruef ob eine Eingabe in ein Textfeld gemacht worden ist.
// Leerzeichen werden ignoriert.
//
function isEmpty(field) {
  var value = document.getElementsByName(field)[0].value;
  if(trim(value) == '') return true;
  return false;
}

//
// Prueft ob ein Textfeld irgend eine Eingabe enthaelt.
//
function containsChars(field) {
  var value = document.getElementsByName(field)[0].value;
  if(value == '') return false;
  return true;
}

//
// Fuer Klick-Buttons, Checkboxen, Radio-Buttons
//
function isChecked(field) {
  var fieldObj = document.getElementsByName(field);
  var i=0;
  for(i=0; i<fieldObj.length; i++) {
    if (fieldObj[i].checked) return true;
  }
  return false;
}

//
// Fuer Selectbox
//
function isSelected(field) {
  if (document.getElementsByName(field)[0].selectedIndex > -1) return true;
  return false;
}


function isDate(field) {
  var value = document.getElementsByName(field)[0].value;
  var regExp = /\d\d\d\d\-\d\d\-\d\d/;
  if(regExp.exec(value) != value) return false;



  var year = parseInt(value.substr(0, 4));
  if(year<1900 || year>2100) return false;
  var month = parseInt(value.substr(5, 2), 10);
  if(month<1 || month>12) return false;
  var day = parseInt(value.substr(8, 2), 10);
  if(day<1 || day>31) return false;
  return true;
}

function isDateMMYYYY(field) {
  var value = document.getElementsByName(field)[0].value;
  var regExp = /\d\d\d\d\-\d\d/;
  if(regExp.exec(value) != value) return false;

  var year = parseInt(value.substr(0, 4));
  if(year<1900 || year>2100) return false;
  var month = parseInt(value.substr(5, 2), 10);
  if(month<1 || month>12) return false;
  return true;
}


function isDateYYYY(field) {
  var value = document.getElementsByName(field)[0].value;
  var regExp = /\d\d\d\d/;
  if(regExp.exec(value) != value) return false;

  var year = parseInt(value);
  if(year<1900 || year>2100) return false;
  return true;
}

//
// Ueberprueft den Wert des Feldes auf das Format 'HH:MM'.
// Liefert false falls der Wert keiner gueltigen Uhrzeit entspricht, sonst true.
//
function isTime(field) {
  var value = document.getElementsByName(field)[0].value;
  var regExp = /\d\d\:\d\d/;
  if(regExp.exec(value) != value) return false;

  var hour = parseInt(value.substr(0, 2), 10);
  if(hour<0 || hour>23) return false;
  var min = parseInt(value.substr(3, 2), 10);
  if(min<0 || min>59) return false;
  return true;
}


function isEmail(field) {
  return validateTest(field, /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)$/);
}

function isPlz(field) {
  //return validate(field, /\d\d\d\d\d/);
  // wg. der Miniapp Bewerbungsservice Lieferanten muessen weniger bzw. mehr
  // als 5 Ziffern erlaubt sein
  return validate(field,/[\d]{4,6}/);
}

/*
	Prueft ob es sich um 8-stellige Zahl handelt
*/
function isNumeric8Digits(field) {
	return validate(field,/[\d]{8}/);
}

function isPlzGerman(field) {
  return validate(field, /\d\d\d\d\d/);
}

// PLZ-Pruefung auch gueltig fuer polnische PLZs (z.B. 12-345)
function isPlzPolish(field) {
	return validate(field, /\d\d[\-]{0,1}\d\d\d/);
}

function isNumber(field) {
  return validate(field, /[0-9]+/);
}

// pwielowinski 2007-02-14
function isOrganisationNoSE(field) {
  var value = document.getElementsByName(field)[0].value;
  value = value.replace(/ /g, "");
  value = value.replace(/-/g, "");
  var regExp = /\d+/;
  var erg = regExp.exec(value);

    if(erg != null && erg.length) {
    if(erg[0] != value) return false;
    } else {
    if(erg != value) return false;
  }
  return true;    
}

// 13.03.2007 - pdelijewski: Finnish social security ID
function isSocialSecID(field) {
  var value = document.getElementsByName(field)[0].value;
  var regExp = /(\d{6})[\-\+A](\d{3})[0123456789ABCDEFHJKLMNPRSTUVWXY]/;

  var erg = regExp.exec(value);

    if(erg != null && erg.length) {
      if(erg[0] != value) return false;
    } else {
      if(erg != value) return false;
    }

  var day = parseInt(value.substring(0, 2));
  var month = parseInt(value.substring(2, 4));

  if ((day >= 1 && day <= 31) && (month >= 1 && month <= 12)) {
    var checksumString = "0123456789ABCDEFHJKLMNPRSTUVWXY";
    var number = parseInt(value.substring(0,6) + value.substring(7,10));

    if (checksumString.charAt(number % 31) != value.charAt(10)) {
      return false;
    }
  } else {
    return false;
  }

  return true;
}


function isFloat(field) {
  return validate(field, /[0-9]*[\.,]?[0-9]+/);
}

 
function isHnr(field) {
  return validate(field, /[0-9]{1,4} ?[a-zA-Z]?/);
}


function isFon(field) {
  return validate(field, /\+?[0-9\- \/]+/);
}


function isName(field) {
  return isText(field);
}

function isGpn(field) {
  return validate(field, /[0-9]{1,4}/);
}

// pdelijewski, 2008-09-04: fixed regular expression for currency - now it's possible to have one decimal
// Ist es Geld
//
function isCurrency(field) {
  return validate(field, /[0-9]+([\.,]{1}[0-9]{1,2}){0,1}/ );
}

//
//
// pwielowinski 26-01-2007 
// added Swedish characters : \u00C5\u00E5 
function isText(field) {
  
  
  
  return validate(field, /[\n\r -;=?-~¡-ſǄ-ǌȀ-ȗȘ-țȪ-ȳ€]+/);
}


function isTextNum(field) {
  
  
  return isText(field);
}

// pwielowinski 26-01-2007 
// added Swedish characters : \u00C5\u00E5 
function isAscii(field) {
  
  
  return isText(field);
} 

// pwielowinski 26-01-2007 
// city name should be entered as a regular text
function isCity(field) {
  return isText(field);
}

// pwielowinski 26-01-2007 
// street name is extended to accept numbers in addition to regular text
function isStreet(field) {
  
  
  return isText(field);
}

// pwielowinski 30-01-2007
function isZipSE(field) {
  return validate(field, /\d\d\d[ ]?\d\d/);
}

function isPixel(field) {
  return isNumber(field);
}



var js_Auml = '\u00C4';
var js_Ouml = '\u00D6';
var js_Uuml = '\u00DC';

var js_auml = '\u00E4';
var js_ouml = '\u00F6';
var js_uuml = '\u00FC';
var js_szlig = '\u00DF';

var js_format_date       = 'JJJJ-MM-DD';
var js_format_dateMMYYYY = 'JJJJ-MM';
var js_format_dateyyyy   = 'JJJJ';
var js_format_time       = 'UU:MM';
var js_format_email      = 'name@domain.topdomain';
var js_format_number     = '0-9';
var js_format_float	     = '0-9.0-9';
var js_format_plz        = '[0-9]';
var js_format_plzgerman  = '[0-9]';
var js_format_plzpolish  = '[0-9],[-]';
var js_format_text       = resourceBundleValidateApp.getString("format");

var js_format_textnum    = resourceBundleValidateApp.getString("formatTextNum");

var js_format_hnr        = '[0-9][a-z,A-Z]';
var js_format_fon        = '[0-9]/[0-9]';
var js_format_currency   = '[0-9],[0-9]';
var js_format_numeric8digits = '[0-9]{8}';

var js_format_street     = '[a-z, A-Z, 0-9]';
var js_format_zipse      = '[0-9]{5}';
var js_format_name       = resourceBundleValidateApp.getString("formatName");
var js_format_city       = resourceBundleValidateApp.getString("formatCity");
var js_format_ascii      = resourceBundleValidateApp.getString("formatAscii");





var js_format_organisationnose = '123456-7890';

function alertInvalidFormat(field, message, format) {
  setFocus(field);
  
  
  if (message.indexOf("&euro;") >= 0) {
    message = message.replace(/&euro;/g, "\u20ac");
  }
  
  var outtext = resourceBundleValidateApp.getString("invalidFormat");
      outtext = outtext.replace("{0}", message);
  if(format) {
                outtext = outtext+resourceBundleValidateApp.getString("invalidFormat2");
                outtext = outtext.replace("{1}", format);
             }
  alert(outtext);
  return false;
}


function alertMandatoryField(field, message) {
  setFocus(field);
  
  
  if (message.indexOf("&euro;") >= 0) {
    message = message.replace(/&euro;/g, "\u20ac");
  }
  
  var outtext = resourceBundleValidateApp.getString("mandatoryField");
  alert(outtext.replace("{0}", message));
  return false;
}


function setFocus(field) {
  var fieldObj = document.getElementsByName(field)[0];      // Get object to focus on
  fieldObj.focus();                                         // Focus works always
  // Select works only for text, password and textarea
  if (fieldObj.type == 'text' || fieldObj.type == 'password' || fieldObj.type == 'textarea') {
    fieldObj.select();
  }
}

function trim(value) {
  return value.replace(/^ */g, '').replace(/ *$/g, '');
}


function validate(field, regExp) {
  var value = document.getElementsByName(field)[0].value;
  // Liefert bei mehr als einem Treffer autom. ein Array (sonst nur eine norm. Var. 8-( )
  var erg = regExp.exec(value);
  if(erg != null && erg.length) {
	if(erg[0] != value) return false;
  } else {
	if(erg != value) return false;
  }
  return true;
}


function validateTest(field, regExp) {
  var value = document.getElementsByName(field)[0].value;
  return regExp.test(value);
}


