// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
var SeattleCondos = {

  googleLoaded: false,

  checkContactForm: function() {
    var required = ['full_name', 'email', 'phone', 'message', 'subject'];
    for (var i = 0; i < required.length; i++) {
      if ($F(required[i]).blank()) {
        this.flash("error", 'Please complete all of the form fields, then click "submit."');
        return false;
      }
    }
    $('submit_button').disabled = true;
  },

  flash: function(cssClass, message) {
    var div = new Element('div', { 'id': 'flash_message', 'class': cssClass });
    $('flash').update();
    $('flash').insert(div);
    div.update(message);
    new Effect.Highlight('flash');
  },

  checkExtendedSearchForm: function() {
    if ($F('low') === '' || $F('high') === '' || $F('location') === '') {
      this.flash("error", "Please select an option for each of the search fields.");
      return false;
    }
    return true;
  },

  loadGoogle: function() {
    if (!this.googleLoaded) {
      google.load("maps", "2.x");
      this.googleLoaded = true;
    }
  },

  loadMap: function(latitude, longitude, container) {
    if (google.maps.BrowserIsCompatible()) {
      var map = new google.maps.Map2(container);
      var point = new google.maps.LatLng(latitude, longitude);
      map.setCenter(point, 14);
      map.addControl(new google.maps.SmallMapControl());
      map.addControl(new google.maps.ScaleControl());
      map.addControl(new google.maps.MapTypeControl());
      new google.maps.KeyboardHandler(map);
      var marker = new google.maps.Marker(point);
      map.addOverlay(marker);
    }
  },

  geocodeForm: function() {
    var required = ['address', 'city', 'state', 'zipcode'];
    var address = [$F('condo_address'), $F('condo_address2'),
      $F('condo_city'), $F('condo_state'), $F('condo_zipcode')].join(' ');

    for (var i = 0; i < required.length; i++) {
      if ($F('condo_' + required[i]).blank()) {
        this.flash("error", "Please complete the address before loading the latitude and longitude.");
        return false;
      }
    }

    $('geocoderLink').innerHTML = 'Loading...';
    var geocoder = new google.maps.ClientGeocoder();
    geocoder.getLatLng(address, function(point) {
      $('condo_latitude').setValue(point.lat());
      $('condo_longitude').setValue(point.lng());
      $('geocoderLink').innerHTML = 'Load';
    });
  },

  removeBorderFromImageLinks: function() {
    var links = $$('a');
    for (var i = 0; i < links.length; i++) {
      if (links[i].down('img')) {
        links[i].addClassName('image');
      }
    }
  }

};

window.onload = function() {
  SeattleCondos.removeBorderFromImageLinks();
  if ($$('#extended_search_form form').length > 0) {
    $$('#extended_search_form form')[0].onsubmit = function() {
      return SeattleCondos.checkExtendedSearchForm();
    };
  }
  if ($('contact_form')) {
    $('contact_form').onsubmit = function() {
      return SeattleCondos.checkContactForm();
    };
  }
};
