/*


Dynamic Application of Functions to DOM
*/
var _debugMode = false;
document.observe('dom:loaded', init);
Event.observe(window, 'load', initAfterImages);
var directions;

function init () {
  if ($('main').getHeight() < 500 && $('sub').getHeight() < 500) {
    $('main').setStyle({height: '500px'});
  }
  
  if ($('navSub')) {
    var subNavWidth = 700;
    var widthSum = $$('#navSub li').invoke('getWidth').inject(0, function(acc , n) {
      return acc + n;
    });
    $('navSub').setStyle({paddingLeft: ((subNavWidth - widthSum)/2) + 'px'})
    $('navSub-background').setStyle({'opacity': .5});
  }
  
  if ($('calculate')) $('calculate').observe('click', displayPayment);
  
  //Newsletter form
  $('show').observe('click', showForm);
  
  if ($('map')) {
        //Google Maps-----------------------------
        if (GBrowserIsCompatible()) {
          var map = new GMap2($('map'));
          var directions_panel = $('directions_panel');
          var geocoder = new GClientGeocoder();
          geocoder.getLatLng('Pensacola', function(point) {
            map.setCenter(point, 9);
          });
        }
        var directions = new GDirections(map, directions_panel);
    
        function applyBehavior(el, i) {
          el.observe('click', setDirections);
        }
    
        function setDirections(event) {
          var link = $(event.target);
          var locations = link.readAttribute('href').gsub('#', '').split('&');
          directions.load(locations[0] + ' to ' + locations[1]);
        }
        
        function submitDirections(event) {
          event.stop();
          var form = $('custom-directions');
          directions.load(form.to.value + ' to ' + form.from.value);
        }
        $$('.directions').each(applyBehavior);
        
        $('get-directions').observe('click', submitDirections);
        
      }
  
}

function initAfterImages () {
  $$('#border', '#bottom', '#nav-bg').invoke('pngHack');
}

function calculatePayment(form) {
  princ = form.principle.value;
  intRate = (form.rate.value/100) / 12;
  months = form.duration.value * 12;
  return Math.floor((princ*intRate)/(1-Math.pow(1+intRate,(-1*months)))*100)/100;
}

function displayPayment(event) {
  event.stop();
  form = $('mortgage-calculator');
  if (checkForErrors(form)) return;
  var payment = calculatePayment($('mortgage-calculator'));
  $('payment').innerHTML = '$' + payment;
  
  solutionEl = $('solution');
  if (!solutionEl.visible()) solutionEl.appear();
  else solutionEl.highlight({startcolor: '#34A1C0', endcolor: '#002222'});

}

function checkForErrors(form) {
  var inputs = form.getInputs();
  var errorEls = [];
  inputs.each(function(el, i) {
    if (!el.value.strip() || isNaN(el.value)) {
      el.addClassName('error');
      errorEls.push(el)
    }
    else el.removeClassName('error');
  })
  if (errorEls.first()) {
    errorEls.first().focus();
    return true;
  }
  return false;
}


function showForm(event) {
  event.stop();
  event.target.fade();
  $('newsletter').appear();
}

function showCalculator(u,w,h) {
	var calculator = window.open(u,'calcwin','left=20,top=20,width='+w+',height='+h+',toolbar=0,resizable=0');
}




