// Namespace object for fileupload functions
var fileUploadObj = new Object();

fileUploadObj.allowedFormatsArray = ['.jpg', '.doc', '.pdf' ];

fileUploadObj.allowedFormats = {};

fileUploadObj.parseArray = function() {
  fileUploadObj.allowedFormats = {};
  for (var format in fileUploadObj.allowedFormatsArray) {
    fileUploadObj.allowedFormats[fileUploadObj.allowedFormatsArray[format]] = 1;
  }
};

fileUploadObj.startup = function() {
  // only add validation on file upload form
  if($j('form.fileupload').length > 0) {
    // on submit validate all required fields
    $j('form.fileupload').submit(function(){
        var valid = true;
        $j('div.bubble').remove();
        // for all required fields
        $j('.fileupload_required').each(function() {
            var result = true;
            // check on existence
            if(this.type == "select-one"||this.type == "select") {
              result = (this.selectedIndex >= 0 && this.options[this.selectedIndex].value != "");
            } else {
              result = !((this.value == null) || ($j.trim(this.value).length == 0));
            }
            if(!result) {
              // mark input field if not set
              leftValue = $j(this).offset().left - $j(this).offsetParent().offset().left + $j(this).width() + 5;
              //top = $j(this).offset().top - $j(this).offsetParent().offset().top - 3;
              topValue = $j(this).offset().top - $j(this).offsetParent().offset().top - 3;

              $j(this).after('<div class="bubble" id="bubble'+this.id+'" style="left: '+leftValue+'px; top: '+topValue+'px;"><div class="lefttail"></div><div class="bubble_content" >Bitte geben Sie einen Wert in das Feld \''+this.id+'\' ein.</div><div class="rightend"></div></div>');
              // remember error
              valid = false;
              return false;
            }

        });
        if(valid) {
          $j('.fileupload_check').each(function() {
            // only check on checkboxex
            if(this.type == "checkbox") {
              result = $j(this).attr('checked');
            } else {
              return false;
            }
            if(!result) {
              // mark input field if not set
              leftValue = $j(this).offset().left - $j(this).offsetParent().offset().left + $j(this).width() + 5;
              //top = $j(this).offset().top - $j(this).offsetParent().offset().top - 3;
              topValue = $j(this).offset().top - $j(this).offsetParent().offset().top - 3;

              $j(this).after('<div class="bubble" id="bubble'+this.id+'" style="left: '+leftValue+'px; top: '+topValue+'px;"><div class="lefttail"></div><div class="bubble_content" >Bitte bestätigen Sie die  '+this.id+'.</div><div class="rightend"></div></div>');
              // remember error
              valid = false;
              return false;
            }
          });
        }
        if(valid) {
          $j('input[type=file]').each(function() {
            var regExp = /\.[a-zA-Z0-9]+$/;
            var filename = $j.trim(this.value);
            if(filename) {
              var extension = filename.match(regExp);
              if(fileUploadObj.allowedFormats[extension]) {
                
                //alert(filename + ' valid for upload');
                
              } else {
                // mark input field if not set
                leftValue = $j(this).offset().left - $j(this).offsetParent().offset().left + $j(this).width() + 5;
                //top = $j(this).offset().top - $j(this).offsetParent().offset().top - 3;
                topValue = $j(this).offset().top - $j(this).offsetParent().offset().top - 3;

                $j(this).after('<div class="bubble" id="bubble'+this.id+'" style="left: '+leftValue+'px; top: '+topValue+'px;"><div class="lefttail"></div><div class="bubble_content" >Die Datei in Feld '+this.id+' hat keine gültige Dateiendung.</div><div class="rightend"></div></div>');
                // remember error
                valid = false;
                return false;
              }
            }
          });
        }
        return valid;
    });

  }

};


;(function($) {
    $(fileUploadObj.parseArray);
    $(fileUploadObj.startup);
})(jQuery);
