/*-- spam protection --*/

  function getAdr(prefix, postfix, text) {
     document.write('<a href="mailto:' + prefix + '@' + postfix + '">' + (text ? text.replace(/&quot;/g, '"').replace(/%EMAIL%/, prefix + '@' + postfix) : prefix + '@' + postfix) + '</a>');
  }

/*-- popup onlinetools --*/

  var bodyOverflow = $('body').css('overflow');
  var htmlOverflow = $('html').css('overflow')

  $(function() {
    var onlinetool = $('.onlinetool');
    var marginPopup = 20;
    if(onlinetool.length) {
      onlinetool.click(function() {
        
        $('body, html').css('overflow', 'hidden');
        $('<div class="onlinetool_overlay"></div>').appendTo('body').hide().fadeTo('slow', 0.8);
        $('.onlinetool_overlay').click(function() {
          closeOnlinetoolPopup();
        });

        var popupHeight = $(this).attr('rel').split(',')[1];
        var popupWidth = $(this).attr('rel').split(',')[0];
        if(popupWidth == null || popupHeight == null) {
          popupWidth = 700;
          popupHeight = 500;
        }

        $('<div class="onlinetool_popup"><div class="title"></div><div class="onlinetool_content"></div><div class="close" onclick="closeOnlinetoolPopup()"></div></div>').css({
          'width' : popupWidth+'px',
          'margin-left' : Math.floor(-(popupWidth)/2)+'px',
          'height': popupHeight+'px',
          'margin-top': Math.floor(-(popupHeight)/2)+$(window).scrollTop()+'px',
          'max-height': popupHeight+'px'
        }).appendTo('body');
        $('.onlinetool_popup').addClass("onlinetool_loading");

        if($(window).height() <= ($('.onlinetool_popup').height()+2*marginPopup))
          $('.onlinetool_popup').addClass("onlinetool_flexible");

        $(window).resize(function() {
          if($(window).height() <= ($('.onlinetool_popup').height()+2*marginPopup)) {
            $('.onlinetool_popup').addClass("onlinetool_flexible");
          } else {
            $('.onlinetool_popup').removeClass("onlinetool_flexible");
          }
        });
        $('.title').html('<h2>'+$(this).attr('title')+'</h2>');
        $('.onlinetool_content').html('<iframe src ="'+$(this).attr('href')+'" frameborder="0"></iframe>');  
        $('iframe').css('visibility','hidden');
        $("iframe").load(function() {
          $('.onlinetool_popup').removeClass("onlinetool_loading");
          $('iframe').css('visibility','visible');
        });
        return false;
      });
    }
  });

  function closeOnlinetoolPopup() {
    $('.onlinetool_popup').remove();
      $('.onlinetool_overlay').fadeOut('slow');
      $('body').css('overflow', bodyOverflow);
      $('html').css('overflow', htmlOverflow);
      $(window).unbind('resize');
  }

/*-- getElementsByClassName --*/

  function getElementsByClassName(strClass, strTag, objContElm) {
    strTag = strTag || "*";
    objContElm = objContElm || document;
    var objColl = objContElm.getElementsByTagName(strTag);
    if (!objColl.length &&  strTag == "*" &&  objContElm.all) objColl = objContElm.all;
    var arr = new Array();
    var delim = strClass.indexOf('|') != -1  ? '|' : ' ';
    var arrClass = strClass.split(delim);
    for (var i = 0, j = objColl.length; i < j; i++) {
      var arrObjClass = objColl[i].className.split(' ');
      if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
      var c = 0;
      comparisonLoop:
      for (var k = 0, l = arrObjClass.length; k < l; k++) {
        for (var m = 0, n = arrClass.length; m < n; m++) {
          if (arrClass[m] == arrObjClass[k]) c++;
          if (( delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
            arr.push(objColl[i]);
            break comparisonLoop;
          }
        }
      }
    }
    return arr;
  }

/*-- validform --*/

  function init_forms() {
    var content = document.getElementById('content');
    if(content) {
      var forms = content.getElementsByTagName('form');
      for(f=0; f<forms.length; f++) {
        init_form(forms[f]);
      }
    }
    var email_empfaenger;
    var inputs = document.getElementsByTagName('*');
    for(i=0; i < inputs.length; i++) {
      if(inputs[i].name) {
        if(inputs[i].name == 'email_empfaenger') {
          email_empfaenger = inputs[i];
        }
      }
    }
    if(email_empfaenger) {
      if(email_empfaenger.tagName.toLowerCase() == 'select') {
        var options = email_empfaenger.getElementsByTagName('option');
        for(o=0; o<options.length; o++) {
          options[o].value = options[o].value.replace(/\+at\+/g, '@');
        }
        email_empfaenger.onchange = function() {
          var options = this.getElementsByTagName('option');
          for(o=1; o<options.length; o++) {
            if(options[o].selected) {
              var location_data = $($('.form_locations>div')[o-1]).find('span');
              var form = this.parentNode;
              while(form.tagName.toLowerCase() != 'form') {
                form = form.parentNode;
              }
              for(i=0; i<location_data.length; i++) {
                if(location_data[i].title != 'location_id') {
                  form['to_' + location_data[i].title].value = location_data[i].innerHTML;
                }
              }
            }
          }
        }
        email_empfaenger.onchange();
      }
      else {
        email_empfaenger.value = email_empfaenger.value.replace(/\+at\+/g, '@');
      }
    }

    // check for form_application
    var url = document.location.href;
    if(url.indexOf('job_title') > -1 && document.getElementById('form_application')) {
      var spliturl = url.split('?');
      var splitparams = spliturl[1].split('&');
      var params = new Object();
      for(i=0; i<splitparams.length; i++) {
        var splitvalues = splitparams[i].split('=');
        params[splitvalues[0]] = splitvalues[1];
      }

      if(params['job_title'] && params['location_id'] && $("select[name='email_empfaenger']").length > 0) {
        $('.job input')[0].value = params['job_title'];
        $('.form_locations>div').each(function(i) {
          $(this).find('span').each(function(s) {
            if(this.title == 'location_id' && this.innerHTML == params['location_id']) {
              $("select[name='email_empfaenger'] option")[i+1].selected = true;
              $("select[name='email_empfaenger']")[0].disabled = true;
            }
          });
        });
        $("select[name='email_empfaenger']")[0].onchange();
      }
    }
  }

  function init_form(form) {
    var required = getElementsByClassName('required', '*', form);
    for(i=0; i<required.length; i++) {
      required[i].oldformonblur = required[i].onblur;
      required[i].onblur = function() {
        validate(this);
        if(this.oldformonblur)
          this.oldformonblur();
      }
    }
    form.onsubmit = function() {
      var doSubmit = true;
      var list = new Array();
      var required = getElementsByClassName('required', '*', this);
      for(v=0; v<required.length; v++) {
        if(! validate(required[v])) {
          doSubmit = false;
          list.push(required[v]);
        }
      }
      var checkboxeles = getElementsByClassName('required_checkbox', '*', this);
      for(i=0; i<checkboxeles.length; i++) {
        valid = false;
        checkboxes = checkboxeles[i].getElementsByTagName('input');
        for(c=0; c<checkboxes.length; c++) {
          if(checkboxes[c].type == 'checkbox') {
            checkboxeles[i].name = checkboxes[c].name; // we need the name to check for custom_required_texts
            if(checkboxes[c].checked)
              valid = true;
          }
        }
  
        if(valid == false) {
          doSubmit = false;
          set_msg(checkboxeles[i], valid_checkbox);
          list.push(checkboxeles[i]);
        } 
        else {
          clear_msg(checkboxeles[i]);
        }
      }
      var radioeles = getElementsByClassName('required_radio', '*', this);
      for(i=0; i<radioeles.length; i++) {
        valid = false;
        radios = radioeles[i].getElementsByTagName('input');
        for(c=0; c<radios.length; c++) {
          if(radios[c].type == 'radio') {
            radioeles[i].name = radios[c].name; // we need the name to check for custom_required_texts
            if(radios[c].checked)
              valid = true;
          }
        }
  
        if(valid == false) {
          doSubmit = false;
          set_msg(radioeles[i], valid_radio);
          list.push(radioeles[i]);
        } 
        else {
          clear_msg(radioeles[i]);
        }
      }

      if(doSubmit == false) {
        show_error(list);
        return doSubmit;
      }
    }
  }

  function validate(el) {
    var valid = true;
    clear_msg(el);
    switch(el.type) {
      case 'text':
      case 'textarea':
      case 'select-one':
        if(el.value != '') {
          if(el.className.indexOf('email') > -1) {
            var regEmail = /^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/;
            if(el.value.toUpperCase().match(regEmail)){
              valid = true;
            }
            else {
              valid = false;
              set_msg(el, valid_email);
            }
          }
          if(el.className.indexOf('number') > -1) {
            if(el.value == Math.round(el.value)) {
              valid = true;
            }
            else {
              valid = false;
              set_msg(el, valid_postal_code);
            }
          }
        }
        else {
          valid = false;
          set_msg(el);
        }
        break;
    }
  
    return valid;
  }

  function set_msg(el, msg) {
    if(msg == undefined) {
      msg = el.parentNode.getElementsByTagName('span')[0].innerHTML.replace(' *', '') + ' ' + valid_required;
    }

    if(custom_required_text[el.name])
      msg = custom_required_text[el.name];

    el.errorMessage = msg;
    if(el.parentNode.className.indexOf('error') == -1)
      el.parentNode.className += ' error';
  }
 
  function clear_msg(el) {
    var classes = el.parentNode.className.split(' ');
    for(e=0; e<classes.length; e++) {
      if(classes[e].indexOf('error') > -1)
        classes[e] = "";
    }
    el.parentNode.className = classes.join(' ');
    el.errorMessage = "";
  }

  function show_error(list) {
    errorlist = '<ul>';
    for(i=0; i<list.length; i++) {
      el = list[i];
      if(el.errorMessage != undefined)
        errorMessage = el.errorMessage;
      else
        var errorMessage = el.parentNode.getElementsByTagName('span')[0].innerHTML.replace(' *', '') + ' ' + valid_required;
  
      errorlist += '<li>' + errorMessage + '</li>';
    };
    errorlist += '</ul>';
  
    var validationMessage = document.getElementById('validationMessage');
    validationMessage.innerHTML = '<h2 title="' + valid_error + '">' + valid_error + '</h2>' + errorlist;
    document.location.href = '#validationMessage';
  }

  $(function() {
    init_forms();
    if($.browser.webkit || $.browser.mozilla)
      $('button').addClass('button');
  });

/*-- menu --*/

  $(function() {
    var navInterval;

    if($('#nav').length) {
      $('#nav a').attr('title', '');
    }
    if($('#subnav').length) {
      $('#subnav a').attr('title', '');
    }
    $('#nav li').not('#nav li li').mouseover(function() {
      if(navInterval)
        clearInterval(navInterval);
      $("#nav li.hover").removeClass('hover');
      $(this).addClass('hover');
    }).mouseout(function() {
      $(this).addClass('delete');
      if( $(this).has('ul').length > 0 )
        navInterval = setInterval ( function() { $("#nav li.delete").removeClass('hover delete'); }, 1000);
      else
        $("#nav li.delete").removeClass('hover delete');
    });

  });

/*-- slide --*/

  $(function() {
    var toggle = $('.toggle');
    
    if(toggle.length) {
      $('p', toggle).append('<br /><a class="more" href="" title="mehr lesen">mehr lesen</a>').hide();
      $('a', toggle).not('a.more').click(function() {
        var description = $(this).next('p');

        $(description).slideToggle("slow");
        $('a.more', toggle).attr('href', $(this).attr('href'));
        if($(description).length)
          return false;
      }).addClass('link');
    }
  });

  $(function() {
    $('.contactperson_entry .contactinfo').hide();
    $('.contactperson_entry h4 a').click(function(){
      $('.contactinfo', $(this).parents('.contactperson_entry')).slideToggle('slow', function(){
        var scroll = $(this).parents('.contactperson_entry').offset().top;
        if(scroll > 0){
          $('.main').animate({
            scrollTop: scroll-180+$(this).parents('.contactperson_entry').height()
          }, 800);
        }
      });
      return false;
    });
  });

/*-- backlink fix --*/

  $(function() {
    $('#backlink').click(function(){
      history.back(1);
      return false;
    });
  });

/*-- margin collapsing --*/

  $(function() {
    $('table').each(function() {
      if(!$(this).parent().hasClass('zms_table')) {
        $('<div class="zms_table"></div>').insertAfter($(this)).html($(this));
      }
    });
  });

/*-- anchor scroll --*/

  $(function() {
    $('a[href*="#"]').not('.link').click(function() {
      var scroll = $(this).attr('href');
      if($(scroll)) {
        $('.main').animate( {
          scrollTop: $(scroll).offset().top-180
        }, 800);
      }
      return false;
    });
  });

