var geocoder;
var map;
function initializeGoogleMaps() {
  geocoder = new google.maps.Geocoder();
  var latlng = new google.maps.LatLng(-34.397, 150.644);
  var myOptions = {
    zoom: 16,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}

function codeAddress(address) {
  if (geocoder) {
    geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
            map: map, 
            position: results[0].geometry.location
        });
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }
}

$(document).ready(function() {
    $(".count-this").each(function(){
        $(this).children().first().addClass("first");
        $(this).children().last().addClass("last");
    });
    $(".arrow-link").each(function(){
        $(this).text('» ' + $(this).text());
    });
    $("select, input:checkbox, input:text, input:email, input:radio, input:file").uniform();
  
    $(".simple-button, .large-simple-button").each(function (i) {
        $(this).wrapInner("<div class='simple-button-inner'></div>");
    });
    $(".large-submit-button").each(function (i) {
        $(this).wrapInner("<div class='large-submit-inner'></div>");
    });

    $("#featured-offers .item").each(function (i) {
      var featuredOfferLink = $(this).find(".featured-offer-link a").attr("href");
      $(this).click(function() {
//        window.location = featuredOfferLink;
      });
    });
    
    $(".add-the-odd:odd, .add-the-odd-too:odd").addClass("odd");

    $(".more-link").bind('click', function() {
      $('.more-text').fadeToggle("slow", "linear");
      if($(this).hasClass("expand")) {
        $(this).removeClass("expand");
        $(this).text("» Erfahren Sie mehr");
      } else {
        $(this).addClass("expand");
        $(this).text("» Zuklappen");
      }
    });


    $("#main").scrollable({
      vertical: true,
      keyboard: 'static',
      onSeek: function(event, i) {
        horizontal.eq(i).data("scrollable").focus();
      }
    });

    var horizontal = $(".scrollable").scrollable({ circular: true }).navigator(".navi").autoscroll(5000);
    
    $(".detail-scrollable").scrollable();
    $(".items img").click(function() {
      if ($(this).hasClass("active")) { return; }
      var url = $(this).attr("data-original");
      var name = $(this).attr("alt");
      var wrap = $("#image_wrap").fadeTo("medium", 1);
      var img = new Image();
      img.onload = function() {
        wrap.fadeTo("fast", 1);
        wrap.find("img.preview").attr("src", url).attr("alt", name);
        wrap.find("span.cg-image-description").html(name);
        wrap.find("a").attr("href", url);
      };
      img.src = url;
      $(".items img").removeClass("active");
      $(this).addClass("active");
    }).filter(":first").click();
    
    $('select.query-parameter').each(function(){ 
      $(this).change(function() { 
        window.location.href = jQuery.param.querystring(window.location.href, $(this).attr('name') + "=" + this.value); 
      });
    });   
        
    $("div.overlay-trigger").overlay({
      mask: '#444',
      fixed: false,
      onBeforeLoad: function() {
        var currentPreview = this.getTrigger().find("img.preview");
        var wrap = this.getOverlay().find(".contentWrap").html("<img src='"+currentPreview.attr("src")+"' data-original='"+currentPreview.attr("src")+"'/>");
        Citigrund.gallery.render();
      }
    });
       
    Citigrund = {
      
      gallery: {

        items: function(){
          return $(".detail-scrollable .items img");
        },
      
        currentItem: function(){
          return $(".contentWrap img");
        },
      
        cycle: function(direction){
          if (direction == "back") {
            var targetOffset = this.currentOffset() - 1;
          } else {
            var targetOffset = this.currentOffset() + 1;
          }
        
          if (targetOffset < this.items().length && targetOffset >= 0) {
            this.render(targetOffset);
          }
        },

        currentOffset: function(){
          var currentImageSource = this.currentItem().attr("src");
          var offset = 0;
          this.items().each(function(i, item){
            if ($(item).attr("data-original") == currentImageSource) {
              offset = i;
            }
          });
          return offset;
        },
      
        render: function(targetOffset){
          
          if (isNaN(targetOffset)) {
            targetOffset = this.currentOffset();
          }
                    
          var newItem = $(this.items()[targetOffset]);
          var itemCount = this.items().length;
          var template = $("script#cg-image-gallery-template").html();
          var view = {
            src: newItem.attr("data-original"),
            description: newItem.attr("alt"),
            stateOfForwardButton: function() {
              if ((targetOffset+1) < itemCount) {
                return "active";
              } else {
                return "inactive";
              }
            },
            stateOfBackButton: function() {
              if ((targetOffset-1) >= 0) {
                return "active";
              } else {
                return "inactive";
              }
            }
          }
          this.currentItem().parent(".contentWrap").html($.mustache(template, view));
        }
      }
    };
   
    $(".contentWrap img").live("click", function(){
      Citigrund.gallery.cycle();
      return false;
    }); 
      
    $("span.cg-image-gallery-control.active").live("click", function(){
      Citigrund.gallery.cycle($(this).attr("data-direction"));
      return false;
    });
    
    $("a[rel]").overlay({
      mask: '#444',
      fixed: false,
      onBeforeLoad: function() {
        var wrap = this.getOverlay().find(".contentWrap");
        wrap.attr("id", "content");
        wrap.load(this.getTrigger().attr("href"));
      },
      onLoad: function(){
        
      }
    }).bind("onBeforeClose", function(e) {
      $(".error").hide();
    });
    
    
    $.tools.validator.localize("de", {
      ':email'      : 'keine gültige E-Mail Adresse',
      '[required]'  : 'Pflichtfeld, bitte ausfüllen'
    });
    
    $(".rent-or-buy-row :radio:checked").each(function(){
      $(this).closest("li").addClass("checked");
    });
    
    $(".rent-or-buy-row :radio").change(function(){
      $(".rent-or-buy-row ul li").removeClass("checked");
      $(this).closest("li").toggleClass("checked");
    });
    
});


