var AUTOZNAVBAR = {
  version : "2.2",
  is_open : false,
  open : {
    brand : false,
    model: false,
    generation: false
  },
  hooks : { "autobild" : "marken-modelle", "klassik" : "klassik/marken" },
  navbar_markenauswahl : null,
  navbar_modellauswahl : null,
  navbar_generationauswahl : null,
  modell_text : unescape("Modell ausw%E4hlen"),
  generation_text : unescape("Generation ausw%E4hlen"),
  
  hookurl : function() {
    var group = AUTOZNAVBAR.hooks[$("#display_group").val()];
    if(typeof group == "undefined") {
      group = AUTOZNAVBAR.hooks['autobild'];
    }
    return group;
  },
  
  navbar_close_brand : function() {
    if(AUTOZNAVBAR.open.brand) {
      AUTOZNAVBAR.navbar_markenpopup.hide();
      $("a.dropdown", AUTOZNAVBAR.navbar_markenauswahl).removeClass("active");
      AUTOZNAVBAR.open.brand = false;
    }
  },
  
  navbar_close_model : function() {
    if(AUTOZNAVBAR.open.model) {
      AUTOZNAVBAR.navbar_modellpopup.hide();
      $("a.dropdown", AUTOZNAVBAR.navbar_modellauswahl).removeClass("active");
      AUTOZNAVBAR.open.model = false;
    }
  },
  
  navbar_close_generation : function() {
    if(AUTOZNAVBAR.open.generation) {
      AUTOZNAVBAR.navbar_generationpopup.hide();
      $("a.dropdown", AUTOZNAVBAR.navbar_generationauswahl).removeClass("active");
      AUTOZNAVBAR.open.generation = false;
    }
  },
  
  close_menu : function() {
    if(AUTOZNAVBAR.is_open) {
      AUTOZNAVBAR.navbar_close_brand();
      if(AUTOZNAVBAR.open.model) {
        AUTOZNAVBAR.navbar_modellpopup.hide();
        $("a.dropdown", AUTOZNAVBAR.navbar_modellauswahl).removeClass("active");
        if($("#brand_id").val() == "") $("a.dropdown", AUTOZNAVBAR.navbar_modellauswahl);
      }
      if(AUTOZNAVBAR.open.generation) {
        AUTOZNAVBAR.navbar_generationpopup.hide();
        $("a.dropdown", AUTOZNAVBAR.navbar_generationauswahl).removeClass("active");
        if($("#generation_id").val() == "") $("a.dropdown", AUTOZNAVBAR.navbar_generationauswahl);
      }
      
      AUTOZNAVBAR.open.brand = false;
      AUTOZNAVBAR.open.model = false;
      AUTOZNAVBAR.open.generation = false;
      AUTOZNAVBAR.is_open=false;
    }
  },
  
  navbar_hover: function() {
    $("#navbar .box").hover (
      function() {
        $(this).addClass("hover");
      },
      function() {
        $(this).removeClass("hover");
      }
    );
  },
  
  goto_page: function() {
    var b = $("#brand_id").val();
    var m = $("#model_id").val();
    var g = $("#generation_id").val();
    
    if(b != "" || m != "" || g != "") {
      prefix = AUTOZNAVBAR.hookurl();

      if(prefix != null) {
        target = "/"+prefix+"/"+b;
        if(m != "" && m != "markenseite") target += "/"+m;
        if(g != "" && g != "generationseite") target += "/"+g;
        dest = "http://www.autobild.de"+(window.location.pathname.substr(0,window.location.pathname.indexOf("/")))+target;
        $("#navbar_goto_href").attr("href",dest);
        AUBIGL._ct.track(document.getElementById("navbar_goto_href"));
        /* Work around strange IE6 "window.location.href not working""-bug */
        setTimeout(function() {       
          window.location.href = dest;
        }, 0);
        return false;
      }
    }
  },
  
  set_model_selector: function(html) {
    $("#model_id").val("");    
    $("a.dropdown",AUTOZNAVBAR.navbar_modellauswahl).addClass("select active").text(AUTOZNAVBAR.modell_text);
    $(".centerleft", AUTOZNAVBAR.navbar_modellpopup).html(html);
    AUTOZNAVBAR.attach_model_click();
    AUTOZNAVBAR.navbar_modellpopup.show();
    AUTOZNAVBAR.navbar_modellauswahl.removeClass("nomodels")
    AUTOZNAVBAR.open.model = true;
    AUTOZNAVBAR.is_open = true;
  },

  get_model_selector_html: function(brand) {
    $.get("/"+AUTOZNAVBAR.hookurl()+"/navbar/brand/"+brand, function(html) {
      // Direkt zur Markenseite wenn keine Modelle vorhanden
      if(html.indexOf("<li") == -1) {
        $("#model_id").val("");
        $("#navbar_loading").show();
        AUTOZNAVBAR.goto_page();
      } else {
        AUTOZNAVBAR.set_model_selector(html);
      }
    });
  },
  
  get_generation_selector_html: function(model) {
    $.get("/"+AUTOZNAVBAR.hookurl()+"/navbar/model/"+$("#brand_id").val()+"/"+model, function(html) {
      // Direkt zur Modellseite wenn keine Modelle vorhanden
      if(html.indexOf("<td") == -1) {
        $("#generation_id").val("");
        $("#navbar_loading").show();
        AUTOZNAVBAR.goto_page();
      } else {
        AUTOZNAVBAR.set_generation_selector(html);
      }
    });
  },
  
  set_generation_selector: function(html) {
    $("#generation_id").val("");    
    $("a.dropdown",AUTOZNAVBAR.navbar_generationauswahl).text(AUTOZNAVBAR.generation_text);
    $(".row_top", AUTOZNAVBAR.navbar_generationpopup).html(html);
    AUTOZNAVBAR.attach_generation_click();
    AUTOZNAVBAR.navbar_generationpopup.show();
    AUTOZNAVBAR.navbar_generationauswahl.removeClass("nomodels")
    AUTOZNAVBAR.open.generation = true;
    AUTOZNAVBAR.is_open = true;
  },
  
  attach_model_click: function() {
    /* Modellauswahl */
    $("#navbar_content_modell li").click(function(event) {
      if($("#brand_id").val() != "") {
        AUTOZNAVBAR.is_open = false;
        var link = $("a.dropdown", AUTOZNAVBAR.navbar_modellauswahl);
        link.addClass("select");
        link.text($("span", this).text().replace(/<\/?[^>]+(>|$)/i,""));
        AUTOZNAVBAR.navbar_generationpopup.hide();
        AUTOZNAVBAR.open.model = false;
        var match = this.id.match(/id_(.+?)_/);
        if(match != null && match[1] != null) {
          var mid = $("#model_id").val();
          if(mid != match[1]) {
            $("#model_id").val(match[1]);
            AUTOZNAVBAR.navbar_generationauswahl.hide();
            $("#generation_id").val("");
            $("#navbar_loading").show();
            AUTOZNAVBAR.goto_page();
          } else if($("#has_generations").val() > 0 && mid != match[1]) {
            AUTOZNAVBAR.navbar_generationpopup.show();
          }
          $("a.dropdown", AUTOZNAVBAR.navbar_modellauswahl).removeClass("active");
          AUTOZNAVBAR.navbar_modellpopup.hide();
        } else {
          // Zur Markenseite
          AUTOZNAVBAR.navbar_modellpopup.hide();
          AUTOZNAVBAR.navbar_generationpopup.hide();
          AUTOZNAVBAR.navbar_generationauswahl.hide();
          $("#model_id").val("");
          $("#generation_id").val("");
          $("#navbar_loading").show();
          AUTOZNAVBAR.goto_page();
        }
      }
      event.preventDefault();
      event.stopPropagation();
      return false;
    });
    AUTOZNAVBAR.navbar_hover();
  },
  
  attach_generation_click: function() {
    /* Generationauswahl */
    $("#navbar_content_generation li").click(function(event) {
      if($("#model_id").val() != "") {        
        AUTOZNAVBAR.is_open = false;
        var link = $("a.dropdown", AUTOZNAVBAR.navbar_generationauswahl);
        link.addClass("select");
        link.text($("span .gname", this).text());        
        AUTOZNAVBAR.navbar_generationpopup.hide();
        AUTOZNAVBAR.open.generation = false;
        var match = this.id.match(/id_(.+?)_/);
        if(match != null && match[1] != null) {
          var gid = $("#generation_id").val();
          if(gid != match[1]) {
            $("#generation_id").val(match[1]);
            $("#navbar_loading").show();
            AUTOZNAVBAR.goto_page();
          }
        } else {
          AUTOZNAVBAR.navbar_generationpopup.hide();
          $("#generation_id").val("");
          $("#navbar_loading").show();
          AUTOZNAVBAR.goto_page();
        }
        link.removeClass("active");
      }
      event.preventDefault();
      event.stopPropagation();
      return false;
    });
  },
  
  init : function() {
    AUTOZNAVBAR.navbar_markenauswahl = $("#navbar_marken_auswahl");
    AUTOZNAVBAR.navbar_modellauswahl = $("#navbar_modell_auswahl");
    AUTOZNAVBAR.navbar_markenpopup = $("#navbar_content_marke");
    AUTOZNAVBAR.navbar_modellpopup = $("#navbar_content_modell");
    AUTOZNAVBAR.navbar_generationauswahl = $("#navbar_generationen_auswahl");
    AUTOZNAVBAR.navbar_generationpopup = $("#navbar_content_generation");
    
    /* Markedropdown */
    AUTOZNAVBAR.navbar_markenauswahl.click(function(event) {
    AUTOZNAVBAR.navbar_markenpopup.show();
      if(AUTOZNAVBAR.open.brand) {
        AUTOZNAVBAR.close_menu();
        AUTOZNAVBAR.open.brand = false;
        return;
      }
      $("a.dropdown", this).addClass("active");
      AUTOZNAVBAR.navbar_modellpopup.hide();
      AUTOZNAVBAR.navbar_generationpopup.hide();
      $("a.dropdown",AUTOZNAVBAR.navbar_modellauswahl).removeClass("active");
      $("a.dropdown",AUTOZNAVBAR.navbar_generationauswahl).removeClass("active");
      AUTOZNAVBAR.is_open = true;
      AUTOZNAVBAR.open.brand = true;
      AUTOZNAVBAR.open.model = false;
      event.stopPropagation();
    });
    
    /* Markenauswahl */
    $("#navbar #navbar_content_marke li").click(function(event) {
      var current_brand = $("#brand_id");
      $("#generation_id").val("");
      // Reset Markendropdown
      $("a.dropdown", AUTOZNAVBAR.navbar_modellauswahl).removeClass("active").html(AUTOZNAVBAR.modell_text);
      AUTOZNAVBAR.navbar_close_brand();  
      $("a.dropdown",AUTOZNAVBAR.navbar_markenauswahl).html($(this).text());
      var brand_match = this.id.match(/id_(.+?)_/);
      if(brand_match != null && brand_match[1] != null) {
        AUTOZNAVBAR.navbar_close_generation();
        $("#id_"+current_brand.val()).removeClass("selected");
        $("#id_"+brand_match[1]).addClass("selected");
        current_brand.val(brand_match[1]);
        AUTOZNAVBAR.navbar_generationauswahl.hide();
        AUTOZNAVBAR.get_model_selector_html(brand_match[1]);
        AUTOZNAVBAR.is_open = false;
        AUTOZNAVBAR.open.brand = false;
      }
      event.stopPropagation();
    });
    
    /* Modeldropdown */
    AUTOZNAVBAR.navbar_modellauswahl.click(function(event) {
      if($("#brand_id").val() != "" && !AUTOZNAVBAR.navbar_modellauswahl.hasClass("nomodels")) {
        if(AUTOZNAVBAR.open.model) {
          AUTOZNAVBAR.close_menu();
          $("a.dropdown", this).addClass("select").removeClass("active");
          AUTOZNAVBAR.open.model = false;
          event.stopPropagation();
          return;
        }
        AUTOZNAVBAR.navbar_close_brand();
        AUTOZNAVBAR.navbar_close_generation();
        $("a.dropdown", this).addClass("active");
        $("a.dropdown", AUTOZNAVBAR.navbar_markenauswahl).removeClass("active");
        AUTOZNAVBAR.navbar_modellpopup.show();
        AUTOZNAVBAR.is_open = true;
        AUTOZNAVBAR.open.model = true;
      }
      event.stopPropagation();
    });
    
    AUTOZNAVBAR.attach_model_click();
    
    /* Generationdropdown */
    AUTOZNAVBAR.navbar_generationauswahl.click(function(event) {
      AUTOZNAVBAR.navbar_markenpopup.hide();
      $("a.dropdown",AUTOZNAVBAR.navbar_markenauswahl).removeClass("active");
      if($("#model_id").val() != "" && !AUTOZNAVBAR.navbar_generationauswahl.hasClass("nogenerations")) {
        if(AUTOZNAVBAR.open.generation) {
          AUTOZNAVBAR.close_menu();
          $("a.dropdown", this).removeClass("active");
          AUTOZNAVBAR.open.generation = false;
          event.stopPropagation();
          return;
        }
        AUTOZNAVBAR.navbar_close_model();
        $("a.dropdown", this).addClass("active");
        $("a.dropdown", AUTOZNAVBAR.navbar_modellauswahl).removeClass("active");
        AUTOZNAVBAR.navbar_generationpopup.show();
        AUTOZNAVBAR.is_open = true;
        AUTOZNAVBAR.open.generation = true;
      }
      event.stopPropagation();
    });
    
    AUTOZNAVBAR.attach_generation_click();
    
    /* reset navbar */
    $("body").click(function(event) {
      AUTOZNAVBAR.close_menu();
    });
  } /* end-init */
};
$(function() { AUTOZNAVBAR.init(); });
