codekitchen.mapping.Listing = {
  listing_init: function(listing,layer_id) {
    this.layer_id = layer_id
    this.listing = listing
    if (this.listing.images.length == 0)
      this.listing.images[0] = {}
    google.maps.Event.bind(this, 'click', this, this.showInfo)
  },
  showInfo: function() {
    var self = this
    this.openInfoWindowHtml(this.infoText())
  },
  layerName: function() {
    return this.layer().title
  },
  layer: function() { return codekitchen.mapping.layers[this.layer_id] },
  isHome: function() { return this.layer().is_homes },
  url: function() {
    return this.isHome() ? '/listings/show/'+this.listing.id : (this.listing.url || this.listing.images[0].image_full);
  },
  detailsLink: function() {
    var url = this.url()
    if(url) {
      return 'window.open("' + url + '","listing_detail_other_'+this.listing.id+'", "width=854,height=600,resizable=1,scrollbars=1");return false';
    } else {
      return null;
    }
  },
  infoText: function() {
    var html = "<div class='info-window'><p class='info-window-layer'>" + this.layerName() + "</p>" +
    "<p class='info-window-title'>" + this.listing.title + "</p>";
    var detailsLink = this.detailsLink();
    var alink = null;

    if (detailsLink) {
      alink = "<a class='info-window-link' href='#' onclick='" + detailsLink + "'>";
    }
    if (this.listing.images[0].image_thumb) {
      var imgsrc = "<img class='info-window-pic' src='" + this.listing.images[0].image_thumb + "' width='280' height='210' />"
      if (alink) {
        imgsrc = alink + imgsrc  + "</a>";
      }
      html += imgsrc + "<br>"
    }
    if (this.listing.description) {
      html += "<p class='info-window-txt'>" + this.listing.description + "</p>"
    }
    if (this.listing.district) {
      html += "<p class='info-window-txt'>" + this.listing.district + " School District</p>";
    }
    if (this.listing.addr) {
      html += "<p class='info-window-txt'>" + this.listing.addr + "</p>";
    }
    if (this.listing.phone) {
      html += "<p class='info-window-txt'>" + this.listing.phone + "</p>";
    }
    if (alink) {
      html += "<p class='info-window-contact'>"+alink+(this.isHome() ? "More Information and Property Listings" : this.url())+"</a></p>"
    }
    return html+"</div>";
  }
}
codekitchen.mapping.createListing = function(icon,listing,layer_id,options) {
  var marker = new google.maps.Marker(new google.maps.LatLng(listing.lat, listing.lng), {icon:icon, draggable:codekitchen.mapping.logged_in})
  $.extend(marker, codekitchen.mapping.Listing)
  marker.listing_init(listing,layer_id)
  return marker
}
codekitchen.mapping.createNewListing = function(lat, lng) {
  var marker = new google.maps.Marker(new google.maps.LatLng(lat, lng), {draggable:true})
  $.extend(marker, codekitchen.mapping.Listing)
  return marker
}
