$(document).ready(function() {

  /********************************************************************************
   * Validator Settings
   ********************************************************************************/
/*
  $.tools.validator.localize("de", {
    '*'     : 'Bitte geben Sie einen korrekten Wert ein',
    ':email'    : 'Bitte geben Sie eine g&uuml;ltige eMail Adresse ein',
    ':number'   : 'Bitte geben Sie eine Nummer ein',
    ':url'    : 'Bitte geben Sie eine g&auml;ltige URI ein',
    '[max]'   : 'Bitte geben Sie weniger als $1 Zeichen ein',
    '[min]'   : 'Bitte geben Sie mehr als $1 Zeichen ein',
    '[required]'  : 'Dieses Feld wird ben&ouml;tigt'
  });

  $.tools.validator.fn("[minlength]", function(input, value) {
    var min = input.attr("minlength");

    return value.length >= min ? true : {
      en: "Please provide at least " +min+ " character" + (min > 1 ? "s" : ""),
      de: "Bitte geben Sie mindestens " +min+ " Zeichen ein.",
    };
  });
*/
  $.metadata.setType("attr", "validate");

$.validator.addMethod(
    "germanDate",
    function(value, element) {
        if(value == '') return true;
        return value.match(/^\d\d?\.\d\d?\.\d\d\d\d$/);
    },
    "Please enter a date in the format dd.mm.yyyy"
);

  $.validator.addMethod("ckeditormaxlength", function(value, element, validvalue) {
      /**
       * get data from ckeditor instance, because the textarea (where value is read from) has not been updated (will be updated on submit)
       */
      data = CKEDITOR.instances[element.id].getData();
      value_raw = data.replace(/<[^>]*>?/g, '').replace(/&[^;]*;?/g,'x').replace(/^\s+/g,'').replace(/\s+$/g,'');
      if(value_raw.length <= validvalue)
      {
        return true;
      }
      else
      {
        return false;
      }
  }, "Please enter less characters.");



  jQuery.validator.setDefaults({
	  focusInvalid: false,
      errorElement: "div",
      wrapper: "div",
      errorPlacement: function(error, element) {

          if (element.attr('type') == 'radio'){
              element = element.parent();
          }

          if (element.hasClass('group')){
              element = element.parent();
          }

          if (element.attr('type') == 'checkbox'){
              offset = element.position();
              error.insertBefore(element)
              error.addClass('formError');  // add a class to the wrapper
              error.css('position', 'absolute');
              error.css('left', offset.left - 20);
              error.css('top', offset.top - 35);

          }
          else if (element.attr('type') == 'textarea'){
              offset = element.position();
              error.insertBefore(element)
              error.addClass('formError');  // add a class to the wrapper
              error.css('position', 'absolute');
              error.css('left', offset.left + element.outerWidth()-65);
              error.css('top', offset.top - 35);

          }
          else
          {
            offset = element.position();
            error.insertBefore(element)
            error.addClass('formError');  // add a class to the wrapper
            error.css('position', 'absolute');
            error.css('left', offset.left + element.outerWidth()-50);
            error.css('top', offset.top - element.outerHeight()-5);
          }

          /* Create Arrow */
          var arrow = document.createElement('div');
          $(arrow).addClass("formErrorArrow");
          error.append(arrow);
          $(arrow).html('<div class="line10"><!-- --></div><div class="line9"><!-- --></div><div class="line8"><!-- --></div><div class="line7"><!-- --></div><div class="line6"><!-- --></div><div class="line5"><!-- --></div><div class="line4"><!-- --></div><div class="line3"><!-- --></div><div class="line2"><!-- --></div><div class="line1"><!-- --></div>');


  }

  })


});
