var teaser=0;
var aktiv=null;
var teaserCnt=0;
var aTeaser=new Array();
var cPopup=null;
var karusoMax=7;
var karusoVon=1;

function teaserWechsel() {
  teaserCnt = teaserCnt+1;
  if(teaserCnt > 11) window.clearInterval(aktiv);

  teaser=teaser+1;
  if(teaser>=aTeaser.length) teaser=0;
  jQuery('#teaserLink').attr('href', aTeaser[teaser]['href']);
  jQuery('#visiteaser').attr('src', aTeaser[teaser]['src']);
  jQuery('div.teasertxt').removeClass('active');
  var i=teaser+1;
  jQuery('#teaser'+i).addClass('active');
}

function fadeCallback() {
  setTimeout(function(){
    $("#teaserimg2:hidden").removeAttr('style').hide().fadeIn();
  }, 1000);
}


jQuery(document).ready(function() {

  $(".gmap").colorbox({opacity:0.5, width:"620px", height:"620px", iframe:true});

  jQuery("#topmenu li.hormenu.active").addClass('dfltActive');
  
  jQuery('a.extern').attr('target', '_blank');

  $('#klinks a').click(function() {
    if(karusoMax-2 <= karusoVon) return false;
    $('#karuso'+karusoVon).hide('fast');
    karusoVon=karusoVon+1;
    $('#krechts a').removeClass('inactive').addClass('active');
    if(karusoMax-2 <= karusoVon) $(this).removeClass('active').addClass('inactive');
    return false;
  });
  $('#krechts a').click(function() {
    if(karusoVon <= 1) return false;
    karusoVon=karusoVon-1;
    $('#karuso'+karusoVon).show('fast');
    $('#klinks a').removeClass('inactive').addClass('active');
    if(karusoVon <= 1) $(this).removeClass('active').addClass('inactive');
    return false;
  });



  jQuery("#topmenu ul a.hormenu").mouseenter(function(event) {
    jQuery(".ml1, .ml2, .ml3, .menulayer").hide();
    jQuery('li.hormenu, li.hormenu a').removeClass('active');
    jQuery(this).parent().find(".menulayer, .ml1").show();
    jQuery(this).addClass('active');
    jQuery(this).parent().addClass('active');
  });

  jQuery(".ml1 .noshow").mouseenter(function(event){
    jQuery(".ml2, .ml3").hide();
    jQuery('.menulayer a').removeClass('active');
  });


  jQuery(".doshow").mouseenter(function(event){
    jQuery('.menulayer a').removeClass('active');
    jQuery(".ml2").show();
    jQuery(this).addClass('active');
    var tmp=jQuery(this).attr('rev');
    jQuery('.mversion, .ml3').hide();
    jQuery('#modelh2-'+tmp).parent().show();
  });


  jQuery(".modelversion").mouseenter(function(event){
    var t=jQuery(this).text();
/*    var tmp=jQuery(this).attr('rel');
    var aTmp = tmp.split(';');
    var grundriss=aTmp[0];
    var preis=aTmp[1];
    var laenge=aTmp[2]; */
    jQuery(".ml3 h2").html(t);
    
    Eura.writeTopmenuValues(this);

    jQuery(".ml3").show();
    jQuery('.ml2 a').removeClass('active');
    jQuery(this).addClass('active');
  });

  jQuery("#logo").mouseenter(function(event){
    jQuery('.ml3, .ml2, .menulayer').hide();
    jQuery('.menulayer a, .hormenu li, .hormenu a').removeClass('active');
    jQuery('li.dfltActive, li.dfltActive a').addClass('active');
    jQuery('.mbwidget').show();
  });

  jQuery('.menulayer').mouseleave(function(event){
    jQuery('.ml3, .ml2, .menulayer').hide();
    jQuery('.menulayer a, .hormenu li, .hormenu a').removeClass('active');
    jQuery('li.dfltActive, li.dfltActive a').addClass('active');
    jQuery('.mbwidget').show();
  });

  jQuery(".active .hormenu.noshow").mouseenter(function(event){
    jQuery('.ml3, .ml2, .menulayer').hide();
    jQuery('.menulayer a, .hormenu li, .hormenu a').removeClass('active');
  });


/* SprachenMenu */
  jQuery('#language').mouseenter(function(event){
    jQuery('.menulayer a, .hormenu li, .hormenu a').removeClass('active');
    jQuery('li.dfltActive, li.dfltActive a').addClass('active');
    jQuery(this).addClass('active');
    jQuery('#langsel').show();
  });
  jQuery('#langsel').mouseleave(function(event){
    jQuery(this).hide();
    jQuery('#language').removeClass('active');
  });


/* Suche */
  jQuery('form#suche input[name=sword]').focus(function(event){
    var v = jQuery(this).val();
    if('Suchbegriff' == v) {
      jQuery(this).val('');
    } // if
  });


/* TeaserWechsel */
  jQuery('div.alias_index').each(function(index) {
    aktiv = window.setInterval("teaserWechsel()", 5000);
  });
  
/* SidebarRight leer kann weg */
  var sbc=jQuery('#sidebarright').children();
  if(0 == sbc.length) {
    jQuery('#sidebarright').hide();
  } // if


  jQuery("a.showpopup").mouseenter(function(event){
    var i=jQuery(this).attr('id');
    if(i == cPopup) return false;

    var t=jQuery(this).text();
    var p=jQuery(this).offset();
    var p2=jQuery('#content').offset();
//    alert(p.top + '/' + p.left + '/' + p2.left);
    p.top = p.top-218;
    p.left = p.left-p2.left;
    jQuery('#mbpopup').hide('fast', function() {
      jQuery('#mbpopup').css('left', p.left).css('top', p.top).html('<h2>' + t + '</h2>');
      jQuery('#mbpopup').show('fast');
      cPopup=i;
    });
    return false;
  });
  jQuery("a.showpopup").mouseleave(function(event){
    jQuery('#mbpopup').hide('fast');
    cPopup=null;
  });

  jQuery("#slider-range").slider({
    range: false,
    min: 40,
    max: 110,
    step: 5,
    values: [40],
    start: function(event, ui) {
      $("#amount").val('bis ' + ui.values[0] + 'EUR');
    },
    slide: function(event, ui) {
      $("#amount").val('bis ' + ui.values[0] + 'EUR');
    },
    change: function(event, ui) {
      Eura.checkElements('price',0,ui.values[0]*1000, 'range');
    }
  });

  jQuery("#slider").slider({
    range: false,
    min: 6,
    max: 9,
    step: 1,
    values: [6],
    start: function(event, ui) {
      $("#laenge").val('bis ' + ui.values[0] + 'm');
    },
    slide: function(event, ui) {
      $("#laenge").val('bis ' + ui.values[0] + 'm');
    },
    change: function(event, ui) {
      Eura.checkElements('length',0, ui.values[0], 'range');
    }
  });

  // Bis zu drei Teaser auf Startseite einlesen
  
  jQuery('#spareteaser a').each(function(index) {
    aTeaser[index] = new Object();
    aTeaser[index]['title'] = $(this).attr('title');
    aTeaser[index]['href'] = $(this).attr('href');
    aTeaser[index]['alt'] = 0;
    aTeaser[index]['src'] = 0;
  });
  
  jQuery('#spareteaser img').each(function(index) {
    var ta = $(this).attr('alt');
    var ts = $(this).attr('src');
    var i=index+1;
    jQuery('#teaser'+i).html('<h2><a href="'+aTeaser[index]['href']+'">'+aTeaser[index]['title']+'</a></h2><p><a href="'+aTeaser[index]['href']+'">'+ta+'</a></p>');
    if(0 == index) {
      jQuery('#visiteaser').attr('src', ts);
      jQuery('#teaser1').addClass('active');
    }
    //aTeaser[index] = new Object();
    aTeaser[index]['alt'] = ta;
    aTeaser[index]['src'] = ts;
  });
  if(typeof(aTeaser[0]) != "undefined") {
    jQuery('#teaserLink').attr('href', aTeaser[0]['href']);
  } // if

/* Accordion */
  jQuery('#accordion').accordion({
      autoHeight: false,
      navigation: true
    });

/* Video Popup */
  jQuery('a[rel="vpopup"]').colorbox({opacity:0.5});


/* IFrame */
  jQuery('#gebrauchtfahrzeugeform').submit(function() {
    jQuery('#cara').show();
    jQuery('#gebrauchtfahrzeugeform').hide();
  });
  
  
  /* Startzustand alle in gruen */
  $('#page_modellberater div.model-variants-row a').addClass('in-range');

/* model-information-trigger */
  $('.model-information-trigger').bind({
    mouseenter: function(e) {
      $(this).next('.model-information').show();
      $(this).next('.model-information').css({
        'top': e.layerY + 10 + 'px',
        'left': e.layerX + 'px'
      });
    },
    mouseleave: function() {
      $(this).next('.model-information').hide();
    }
  });
  
/* click events for modellberater elements */
  $("input[name='betten']").click(function() {
    var currentValue = $(this).val();
    if(currentValue == 2) {
      Eura.checkElements('beds', 2, 2, 'range');
    } else if(currentValue == 4) {
      Eura.checkElements('beds', 2, 4, 'range');
    } else if(currentValue == 6) {
      Eura.checkElements('beds', 2, 6, 'range');
    }
  });
  
  $("input[name='belts']").click(function() {
    var currentValue = $(this).val();    
    if(currentValue == 2) {
      Eura.checkElements('belts', 2, 2, 'range');
    } else if(currentValue == 4) {
      Eura.checkElements('belts', 2, 4, 'range');
    } else if(currentValue == 6) {
      Eura.checkElements('belts', 2, 6, 'range');
    }
  });
  
  $("input[name='gewicht']").click(function() {
    var currentValue = $(this).val();
    // searching for models up to 3,5t
    if(currentValue == 0) {
      Eura.checkElements('weight', 0, 3500, 'range');
    } else if(currentValue == 1) {
      Eura.checkElements('weight', 0, 9999999999, 'range');
    }
  });
  
  $("select[name='niveau']").change(function() {
    var currentValue = $(this).val();
    Eura.checkElements('style', currentValue, '', 'comparebol');
  });
  
  $("input[name='ezlbett']").click(function() {
    if($(this).is(':checked')) {
      var currentValue = $(this).val();
    } else {
      var currentValue = 0;
    }
    Eura.checkElements('interior1', currentValue, '', 'comparebol');
  });
  
  $("input[name='grkueche']").click(function() {
    if($(this).is(':checked')) {
      var currentValue = $(this).val();
    } else {
      var currentValue = 0;
    }
    Eura.checkElements('interior2', currentValue, '', 'comparebol');
  });
  
  $("input[name='garage']").click(function() {
    if($(this).is(':checked')) {
      var currentValue = $(this).val();
    } else {
      var currentValue = 0;
    }
    Eura.checkElements('interior3', currentValue, '', 'comparebol');
  });

  
  
  
// bind eventhandler to link in modellberater and show box on mouseenter
  $('.model-variants-row a').bind({
    mouseenter: function(e) {
      // show the box
      $('.model-information:hidden').show();
      var strTitle = $(this).text();
      // get obj with rel attriute
      var objRel = Eura.getObjOfVariantElement(this, 'id');
      // write objData to element
      $('.model-information-headline').text(strTitle);
      $('.model-information-image').attr('src', objRel['image']);
      //$('.model-information-td1').text(objRel['price_label'] + ':');
      if(isNaN(objRel['price'])) {
        var price = objRel['price'];
      } else {
        var price = Eura.numberFormat(objRel['price']);
      }
      $('.model-information-td2').text(price + ' ' + objRel['price_type']);
      //$('.model-information-td3').text(objRel['length_label'] + ':');
      $('.model-information-td4').text(objRel['length'] + ' ' + objRel['length_type']);
      //$('.model-information-td5').text(objRel['beds_label'] + ':');
      $('.model-information-td6').text(objRel['beds']);
      $('.model-information-td8').text(objRel['belts']);
      $('.model-information-shorttext').text(objRel['description_short']);
      // positioning element
      var position = $(this).position();
      var leftPos = position.left;
      var topPos = position.top -320;
      $('.model-information').css({
        left:leftPos,
        top:topPos
      });
    },
    mouseleave: function() {
      $('.model-information:visible').hide();
    }
  });
  
// deactivate all links in row, if checkbox is unchecked in modellberater
  $('input[name="deactivate-row"]').click(function() {
    var relevantElements = $(this).nextAll('.model').find('a').not('.model-link');
    if(!$(this).is(':checked')) {
      relevantElements.toggleClass('disabled');
      relevantElements.css({
        'color': '#CCC'
      });
    } else {
      relevantElements.toggleClass('disabled');
      relevantElements.css({
        'color': ''
      });
    }
  });
  
// accordion
  $('.accordion-title, table.model-special-equip caption').click(function() {
    $(this).next('.accordion-content, table.model-special-equip tbody').slideToggle('fast', function() {
      // Animation complete.
    });
  });
  $('#accordion-trigger').click(function() {
    $('.accordion-content, table.model-special-equip tbody').slideDown('fast', function() {
      // Animation complete.
    });
  });
  
  /* modellvergleich - hide left column if there has no car selected*/
  if($('.model-compare-col-data').length > 0) {
    $('.model-compare-col-left').show();
  }
  
// generate JSON Object from Modelstring for products in modellberater
  Eura.jsonObjModels = jQuery.parseJSON(Eura.jsonStringModels);
// generate JSON Object from Menustring for level3 in Topmenu
  Eura.jsonObjMenu = jQuery.parseJSON(Eura.jsonStringMenu);
});

var Eura = function(){
  return {
    jsonStringModels: null,
    jsonObjModels: null,
    jsonStringMenu: null,
    jsonObjMenu: null,
    elementArgument: null,
    elementArgumentMenu: null,
    // how many model attributes may be deactivated
    // grey
    modelRange1: 0,
    // red
    modelRange2: 2,
    
    // get JSON object of element
    getObjOfVariantElement: function(that, attribute){
      var sTmp = $(that).attr(attribute);
      sTmp = sTmp.replace(/campervanvariant_/, 'campervan_');
      Eura.elementArgument = sTmp;
      var objJson = Eura.jsonObjModels[Eura.elementArgument];
      
      return objJson;
    },

    // get JSON object of element
    getObjOfElement: function(that, attribute){
      Eura.elementArgument = $(that).attr(attribute);
      var objJson = Eura.jsonObjModels[Eura.elementArgument];
      
      return objJson;
    },    

    // get JSON object of element
    getObjOfMenuElement: function(that, attribute){
      Eura.elementArgumentMenu = $(that).attr(attribute);
      var objJsonMenu = Eura.jsonObjMenu[Eura.elementArgumentMenu];
      
      return objJsonMenu;
    },
    
    /*
     * 0  image src
     * 1  label price
     * 2  price
     * 3  label length
     * 4  length
     * 5  label beds
     * 6  beds
     * 7  weight  bool  up to 3,5t/above 3,5t
     * 8  style 1/2/3
     * 9  interior1  bool
     * 10  interior2  bool
     * 11  interior3  bool
     */
    checkElements: function(pointer, attributeFrom, attributeTo, type){
      $('.model-variants-row a').each(function(index) {
        var objRel = Eura.getObjOfVariantElement(this, 'id');
        if (objRel != undefined) {
          if(type == 'range') {
            var strToIntNumber = parseInt(objRel[pointer]);
            // strings in price label are treated as very high price value for modellberater
            if(isNaN(strToIntNumber)) {
              strToIntNumber = 1;
            }
            if((strToIntNumber >= attributeFrom) && (strToIntNumber <= attributeTo)) {
              Eura.manipulateElements(Eura.elementArgument, 'good', pointer);
            } else {
              Eura.manipulateElements(Eura.elementArgument, 'bad', pointer);
            }
          } else if(type == 'comparebol') {
            if((objRel[pointer] == attributeFrom)) {
              Eura.manipulateElements(Eura.elementArgument, 'good', pointer);
            } else {
              Eura.manipulateElements(Eura.elementArgument, 'bad', pointer);
            }
          }
        }
      });
    },
    
    manipulateElements: function(element, type, pointer){
      var htmlelement = element.replace(/campervan_/, 'campervanvariant_');
      // count up/down bad/good settings
      if(type == 'bad') {
        if(
          // only work if killswitch is not active for this pointer
          Eura.jsonObjModels[element][pointer + '_kill'] === 0
        ) {
          // set killswitch
          Eura.jsonObjModels[element][pointer + '_kill'] = 1;
          // increase counter
          Eura.jsonObjModels[element]['counter'] += 1;
        }
      } else {
        if(
          // only work if killswitch is active for this pointer
          Eura.jsonObjModels[element][pointer + '_kill'] === 1
        ) {
          // unset killswitch
          Eura.jsonObjModels[element][pointer + '_kill'] = 0;
          // no counter smaller than zero
          if(Eura.jsonObjModels[element]['counter'] != 0) {
            // decrease counter
            Eura.jsonObjModels[element]['counter'] -= 1;
          }
        }
      }
      // change link color, if element is out of range
      if(Eura.jsonObjModels[element]['counter'] > Eura.modelRange1) {
        $('#' + htmlelement).addClass('mid-range');
        $('#' + htmlelement).removeClass('in-range');
        $('#' + htmlelement).removeClass('out-of-range');
      }
      // completely out
      if(Eura.jsonObjModels[element]['counter'] > Eura.modelRange2) {
        $('#' + htmlelement).removeClass('mid-range');
        $('#' + htmlelement).removeClass('in-range');
        $('#' + htmlelement).addClass('out-of-range');
      }
      // in
      if(Eura.jsonObjModels[element]['counter'] == Eura.modelRange1) {
        $('#' + htmlelement).removeClass('mid-range');
        $('#' + htmlelement).removeClass('out-of-range');
        $('#' + htmlelement).addClass('in-range');
      }
    },
    
    // format number to readable value (i.e. 30000 to 30.000)
    numberFormat: function(nStr,prefix){
      var prefix = prefix || '';
      nStr += '';
      x = nStr.split('.');
      x1 = x[0];
      x2 = x.length > 1 ? '.' + x[1] : '';
      var rgx = /(\d+)(\d{3})/;
      while (rgx.test(x1))
        x1 = x1.replace(rgx, '$1' + '.' + '$2');
      return prefix + x1 + x2;
    },
    
    // write label, type and value to menu-table
    // get data from Json Object
    writeTopmenuValues: function(that){
      var objRelMenu = Eura.getObjOfMenuElement(that, 'id');
      var strObjLabel = $(that).attr('id');
      var href = $(that).attr('href');
      var roomPlan = objRelMenu['room_plan_day_small'];
      $(".ml3 img").attr('src', roomPlan);
      $(".ml3 a").attr('href', href);
      if(isNaN(objRelMenu['price'])) {
        var price = objRelMenu['price'];
      } else {
        var price = Eura.numberFormat(objRelMenu['price']);
      }
      $('#ml3preis').html(price + '&nbsp;' + objRelMenu['price_type']);
      $('#ml3preis').prev().html(objRelMenu['price_label']);

      $('#ml3laenge').html(objRelMenu['length'] + '&nbsp;' + objRelMenu['length_type']);
      $('#ml3laenge').prev().html(objRelMenu['length_label']);
      
      $('#ml3anzahl').html(objRelMenu['beds']);
      $('#ml3anzahl').prev().html(objRelMenu['beds_label']);
    }
  };
}();
