/* Letzte Publizierung: Mittwoch, 22. Februar 2012 22:01 | Seiten-ID: 220 */
var timestamp = null;
$(document).ready(function() {
    timestamp = new Date().getTime();

    //$("ul#topic-navigation li:last, ul#general-navigation li:last").addClass("main-navi-last");
    //PLZ-Auswahl über Map
    $('div.map a.btn_map_ki, div.map a.btn_map_hr, div.map a.btn_map_hh, div.map a.btn_map_hl, a.getAllPLZ').fancybox({
        'overlayColor'    :     '#FFF',
        'speedIn'        :    600,
        'speedOut'        :    200,
        'autoDimensions':    false,
        'width'            :    320,
        'height'        :    382,
        'padding'        :     0,
        'autoScale'        :   false,
        onStart: function(ev) {
            $("#preselected-plz").validationEngine('hide');
            $("#plz").validationEngine('hide');
            $("#ort").validationEngine('hide');
            region = $(ev).attr("rev");
            $("#plz-all ul li").removeClass("active");
            $(".plz-region").hide();
            $("#plz-"+region).show();
            $("a."+region).parent().addClass("active");
            $("#plz-all ul li a").click(function(e) {
                e.preventDefault();
                $("#plz-all ul li").removeClass("active");
                $(".plz-region").hide();
                $($(this).attr("href")).show();
                $(this).parent().addClass("active");
            });
            $('#fancybox-wrap').removeClass("contactform").addClass('plz-layer');
        },
        onComplete: function(){
            $('#fancybox-content div.plz-region a').click(function(e) {
                e.preventDefault();
                $("#region").val($(this).children("span.plz-city").html().toLowerCase().replace(/ü/, "ue"));
                $('#plz, #strom-plz, #erdgas-plz').val($(this).find("span.plz").html());
                $("#preselected-plz").val($(this).find("span.plz").html());
                $("#preselected-city").val($(this).children("span.plz-city").html());
                $("#ort").val($(this).children("span.plz-city").html());
                // look for global callback
                if (null != window.plzCallback) {
                  window.plzCallback();
                  window.plzCallback = null;
                  //delete window.plzCallback;
                }
                $.fancybox.close();
            });
        }
    });
    $('a.btn_kontaktformular').fancybox({
        'overlayColor'    :     '#FFF',
        'speedIn'        :    600,
        'speedOut'        :    200,
        'autoDimensions':    false,
        'width'            :    554,
        'height'        :    694,
        'padding'        :     0,
        'autoScale'        :   false,
        onStart: function() {
            $("form").validationEngine('hideAll');
            $('#fancybox-wrap').removeClass("plz-layer").addClass('contactform');
        },
        onComplete: function(){
            // Submit Kontaktformular
            $("#form-kontaktformular").validationEngine();
            $("#form-kontaktformular").live("submit",function(e) {
                e.preventDefault();

                if(true == $('#form-kontaktformular').validationEngine('validate')) {
                    $.ajax({
                        url: "/_workflows/sendMail.php",
                        data: $(this).serialize(),
                        type: "POST",
                        success: function(data){
                            $("#form-kontaktformular").hide().after("<div>"+data+"</div>");
                        }
                    });
                }
            });
        },
        onClosed: function() {
            $("form").validationEngine('hideAll');
            $('.response').remove();
            $('.reset-kontaktform').trigger("click");
            $('#form-kontaktformular').show();
        }
    });

    $(window).resize(function() {
        $("form").validationEngine("updatePromptsPosition");
    });
    // instanciate Wechselform
    var wf = new eww.WechselForm();
     //Submit von Hilfsform verhindern
    $('#form-plz').submit(function(e){
        e.preventDefault();
    });
    //PLZ Focus
    $('#form-plz #plz').focus(function(){
        if($(this).val() == "Ihre PLZ") {
            $(this).val("");
        }
    });
    $('#form-plz #plz').blur(function(){
        if($(this).val() == "") {
            $(this).val("Ihre PLZ");
        }
    });
    //Newsletter Focus
    $('.inp_newsletter_email').focus(function(){
        if($(this).val() == "Ihre E-Mail Adresse") {
            $(this).val("");
        }
    });
    $('.inp_newsletter_email').blur(function(){
        if($(this).val() == "") {
            $(this).val("Ihre E-Mail Adresse");
        }
    });
});
//pads left
String.prototype.lpad = function(padString, length) {
    var str = this;
    while (str.length < length)
        str = padString + str;
    return str;
}
function delegate( that, thatMethod ){
  return function() { return thatMethod.call(that); }
}
// package eww
var eww = {};
/**
 * Wechsel-Form
 */
eww.WechselForm = function() { this.init(); };
$.extend(eww.WechselForm.prototype, {
  form: null,
  areaErdgas: null,
  areaStrom: null,
  init: function() {
    var me = this;
    this.form = $("#wechsel-form");
    this.areaErdgas = this.form.find("div#erdgas");
    this.areaStrom  = this.form.find("div#strom");
    this.form.find('input[name="type"]').click(delegate(this, this.updateFormType));
    this.updateFormType();
    this.initAnmeldeArtWechel('strom');
    this.initAnmeldeArtWechel('erdgas');
    
    this.initEinzugsdatum('strom');
    this.initEinzugsdatum('erdgas');
    this.initBankeinzug();
    // used for download
    $('body').append('<iframe name="pdfdownload" src="" frameborder="0" style="display: none;"></iframe>');
    this.form.attr("target","pdfdownload");
    this.form.submit(function(e){e.preventDefault()});
    
    this.updateValidation();
  },
  onValidationComplete: function(form, status) {
    this.updateDateErrorMessages();
    if (status){
      this.submitForm();
    }
  },
  submitForm: function(){
    this.form.validationEngine('detach');
    var type = $("input[name='type']:checked").val();

    /* Beginn Adconion-Kampagnen-Tracking */
    $('body').append('<img src="http://ad.amgdgt.com/ads/?t=ap&px=4422&rnd='+Math.floor(Math.random()*123456789*Math.random())+'" width="1" height="1" border="0"/>');
    /* Ende Adconion Kampagnen-Tracking */
    
    /* Online-Berater */
    $('body').append('<script type="text/javascript" src="https://realperson20.net/system/report.php?OrderNumber='+timestamp+'&ProductID='+type+'&event=Event&project=onlineberatung&systemurl=https://realperson20.net/system&groupID=13&"></script>');
    
    /* WiredMinds */
    var filename = 'Antrag_'+$("input[name='type']:checked").val().toUpperCase()+'_'+$("#preselected-city").val()+'.pdf';
    wiredminds.count(filename);
    //wiredminds.trackEvent('Download Antrag/'+$("input[name='type']:checked").val().toUpperCase()+'/'+$("#preselected-city").val());
    
    this.form.submit();
    this.updateValidation();
  },
  initEinzugsdatum: function(branch){
    var dateElements = this.getElementsForEinzugsdatum(branch);
    var minDate = new Date();
    // seconds 1 month
    var ADD_DATE = 2592000000;
    minDate.setTime(minDate.getTime()+ADD_DATE);
    // setup validation field
    var targetDateStr = this.getDateStrForValidation(minDate.getFullYear(),minDate.getMonth()+1,minDate.getDate());
    var id = this.getIdForEinzugsdatum(branch);
    var dateEl = $('<input class="validate[required,past['+targetDateStr+']]" style="width:1px; height: 1px; color: #fff; backround: #fff; display:inline; border: none; float: left;" type="text" name="'+id+'" id="'+id+'" value="" />');
    dateElements.yearEl.after(dateEl);
    // setup listener for date fields
    var me = this;
    for (var i in dateElements){
      dateElements[i].change(function(ev){me.writeEinzugsdatum(ev)});
    }
    // trigger once
    for (var i in dateElements){
      dateElements[i].change();
    }
    this.updateValidation();
  },
  getDateStrForValidation: function(y,m,d){
    return y+'-'+(((m)+'').lpad('0', 2))+'-'+((d+'').lpad('0',2));
  },
  // return [dayElement, monthElement, yearElement]
  getElementsForEinzugsdatum: function(branch){
    var dEl = $('select[name="einzug_'+branch+'_tag"]');
    var mEl = $('select[name="einzug_'+branch+'_monat"]');
    var yEl = $('select[name="einzug_'+branch+'_jahr"]');
    return {dayEl: dEl, monthEl: mEl, yearEl: yEl};
  },
  getIdForEinzugsdatum: function(branch){
    return branch+'_date_str';
  },
  writeEinzugsdatum: function(ev){
    var match = $(ev.target).attr('id').match(/einzug_([\w]*)_/);
    if (match){
      var branch = match[1];
      var hiddenId = this.getIdForEinzugsdatum(branch);
      var hiddenEl = $('#'+hiddenId);
      
      var dateElements = this.getElementsForEinzugsdatum(branch);
      var targetDateStr = this.getDateStrForValidation(dateElements.yearEl.val(), dateElements.monthEl.val(),dateElements.dayEl.val());
      hiddenEl.val(targetDateStr);
      this.form.validationEngine('validateField', '#'+hiddenId);
      this.updateDateErrorMessages();
      //this.updateValidation();
    }
  },
  getGermanDateFormat: function(usDateStr) {
    if ('undefined' == typeof(usDateStr) || null == usDateStr ) return '';
    var dateParts = usDateStr.split("-");
    // error checking
    if (dateParts[0] == usDateStr) return usDateStr;
    var germanDateObject = new Date(dateParts[0], (dateParts[1] - 1) ,dateParts[2]);
    return germanDateObject.getDate()+"."+(germanDateObject.getMonth()+1)+"."+germanDateObject.getFullYear();
  },
  initAnmeldeArtWechel: function(branch){
    var me = this;
    var el = this.form.find('input[name="'+branch+'_anmeldeart"]');
    el.attr("checked");
    el.change(function(){me.anmeldeArtWechselHandler(branch);});
  },
  
  anmeldeArtWechselHandler: function(branch){
    // id of form element to make (un-)required
    var id = 'einzug_'+branch+'_anbieter';
    this.toggleRequired(id);
  },
  // toggle required: validation engine and label
  toggleRequired: function(id){
    var tEl = $('#'+id);
    var ltEl = $('#lbl_'+id);
    var requiredmarkerid = 'required_'+id;
    if (tEl.hasClass("validate[required]")){
      ltEl.find('#'+requiredmarkerid).remove();
      tEl.removeClass("validate[required]");
    } else {
      var requiredMarker = $('<span id="'+requiredmarkerid+'">*</span>');
      ltEl.append(requiredMarker);
      tEl.addClass("validate[required]");
    }
    //reset
    tEl.validationEngine('hide');
    this.updateValidation();
  },
  
  initBankeinzug: function(){
    $("#bankeinzug-wrapper").hide();
    var me = this;
    $("#bankeinzug").click(function(e) {
      $("#bankeinzug-wrapper").toggle();
      $("#bankeinzug_ktnr").toggleClass("validate[required]");
      $("#bankeinzug_blz").toggleClass("validate[required,custom[blz]]");
      $("#bankeinzug_bank").toggleClass("validate[required]");
      $("#bankeinzug_kontoinhaber_vorname").toggleClass("validate[required]");
      $("#bankeinzug_kontoinhaber_nachname").toggleClass("validate[required]");
      $('#bankeinzug_ktnr').validationEngine('hidePrompt');
      $('#bankeinzug_blz').validationEngine('hidePrompt');
      $('#bankeinzug_bank').validationEngine('hidePrompt');
      $('#bankeinzug_kontoinhaber_vorname').validationEngine('hidePrompt');
      $('#bankeinzug_kontoinhaber_nachname').validationEngine('hidePrompt');
      me.updateValidation();
    });
  },
  // setup form for strom, erdgas, kombi
  updateFormType: function(){
    var contractType = this.form.find('input[name="type"]:checked').val();
    switch (contractType){
      case 'strom':
        this.areaErdgas.hide();
        this.areaStrom.show();
        break;
      case 'erdgas':
        this.areaErdgas.show();
        this.areaStrom.hide();
        break;
      case 'kombi':
        this.areaErdgas.show();
        this.areaStrom.show();
        break;
    }
    this.updateValidation();
  },
  updateValidation: function(){
    var me = this;
    this.form.validationEngine('hideAll');
    this.form.validationEngine('detach');
    this.form.validationEngine('attach', {
      onValidationComplete: function(form, status){me.onValidationComplete(form, status);}
    });
    this.form.validationEngine("updatePromptsPosition");
  },
  updateDateErrorMessages: function(){
      var elErrDate = $('span.errDate');
      var germanDate = this.getGermanDateFormat(elErrDate.html());
      if (germanDate){
        elErrDate.html(germanDate);
      }
  }
});

function atoAccordion(id) {
  $("#"+id).accordion({
   active: false,
   collapsible: true,
   autoHeight: false
  });
  $('#'+id).bind('click', function(event) {
    $(".faq-list").each(function(){
      if($(this).attr("id")!=id) {
        $(this).accordion({
         active: false,
         collapsible: true,
         autoHeight: false
        });
      }
    });
    if($(event.target).html() != null) {
      var faqtitle = $(event.target).html().replace("/", " ");
      wiredminds.trackEvent("FAQ/"+faqtitle);
    }
  });
  if(jQuery.browser.msie) {
      jQuery("p:last-child").css("margin-bottom","0");
  }
}
