/* -----------------------------------------------------------
Copyright: ©22008 Terra Firma Design & Consulting. All Rights Reserved.
Author: Brian Getting
Company: Terra Firma Design & Consulting
URL: http://www.terra-firma-design.com
----------------------------------------------------------- */

var errorColor = "#fffbfb";
var errorBorder = "#c00";
var regExpEmail = /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
var regExpPhone = /^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/;
var defaultTextAreaHeight = 180;
var expandedTextAreaHeight = 400;
var textAreaThreshold = 1000;

/* -------------------------------------------------------- */

Global = {
  adjustTextarea: function(e) {
  	textArea = $(Event.element(e));
  	if (textArea.value.length > textAreaThreshold) {
  		textArea.morph('height:'+expandedTextAreaHeight+'px;', {duration:0.2});
  	} else {
  		textArea.morph('height:'+defaultTextAreaHeight+'px;', {duration:0.2});
  	}
  },
  
  clearFlash: function() {
    $('flash_notice').fade({duration:0.5, delay:5});
    $('flash_notice').blindUp({duration:0.5, delay:5});
  },
  
  setup: function() {
    Global.externalLinks();
    if ($('flash_notice')) Global.clearFlash();
    if ($('contact_message')) Contact.setup();
		if ($('post_content')) Post.setup();
		if ($('program_description')) Program.setup();
    if ($('resource_content')) Resource.setup();
    if ($('statistic_content')) Statistic.setup();
  },
  
  externalLinks: function() {
    external_links = $$('a[rel=external]');
    external_links.each(function(l) {
      l.writeAttribute('target', '_blank');
    })
  }
}

Contact = {
  validate: function() {
    var name = $('contact_name');
    var email = $('contact_email');
    var subject = $('contact_subject');
    var message = $('contact_message');
    var contactSubmit = $('contact_submit');
    var loadIcon = $('contact_loader');
    var errors = "";
    if (name.value == "") {
		  name.addClassName('fieldError');
			errors += "* Please enter your name.\n";
		}
    if ((email.value == "") || !regExpEmail.test(email.value)) {
		  email.addClassName('fieldError');
			errors += "* Please enter your email address.\n";
		}
		if ((subject.value == "")) {
		  subject.addClassName('fieldError');
			errors += "* Please enter a subject.\n";
		}
		if (message.value == "") {
		  message.addClassName('fieldError');
			errors += "* Please enter a brief message.\n";
		}
		if (errors == "") {
		  contactSubmit.disabled = true;
		  contactSubmit.value = "Sending..."
		  loadIcon.show();
		  return true
		} else {
		  alert(errors);
		  return false;
		}
  },
  
  setup: function() {
    message_field = $('contact_message');
    message_field.setStyle({height: defaultTextAreaHeight +"px"});
    message_field.observe('keyup', Global.adjustTextarea.bind(contact_message));
  }
}

Login = {
  validate: function() {
    var username = $('user_session_login');
    var password = $('user_session_password');
    var loginSubmit = $('login_submit');
    var loadIcon = $('loadicon');
    var errors = "";
    if (username.value == "") {
	    username.addClassName('fieldError');
			errors += "* Please enter a username.\n";
		} else if (username.value.length < 3 || username.value.length > 40) {
		  username.addClassName('fieldError');
			errors += "* Username must be between 3 and 40 characters.\n";
		}
		if (password.value == "") {
		  password.addClassName('fieldError');
			errors += "* Please enter a password.\n";
		}
		if (errors == "") {
		  loginSubmit.disabled = true;
		  loadIcon.show();
		  return true
		} else {
		  alert(errors);
		  return false;
		}
  },
  
  forgot: function() {
    var email = $('email');
    var loadIcon = $('loadicon');
    var loginSubmit = $('forgot_submit');
    var errors = "";
    if ((email.value == "") || !regExpEmail.test(email.value)) {
		  email.addClassName('fieldError');
			errors += "* Please enter your email address.\n";
		}
		if (errors == "") {
		  loginSubmit.disabled = true;
		  loadIcon.show();
		  return true
		} else {
		  alert(errors);
		  return false;
		}
  },
  
  reset: function() {
    var password = $('user_session_password');
    var confirm = $('user_session_password_confirmation');
    var loginSubmit = $('reset_submit');
    var loadIcon = $('loadicon');
    var errors = "";
    if (password.value == "") {
		  password.addClassName('fieldError');
			errors += "* Please enter a password.\n";
		} else if ((password.value != "") && (password.value != confirm.value)) {
		  password.addClassName('fieldError');
			errors += "* Password and confirmation do not match.\n";
		}
    if (errors == "") {
		  loginSubmit.disabled = true;
		  loadIcon.show();
		  return true
		} else {
		  alert(errors);
		  return false;
		}
  }
}

Map = {
  initialize: function() {
    if (GBrowserIsCompatible()) {
  		var map = new GMap2(document.getElementById("canvas"));
  		var pubLocation = new GLatLng(44.63821573222782, -124.06042814254761);
  		var locationHTML = "<p class=\"map-info\"><strong>Earthbound Beauty Day Spa</strong><br />613 NW 3rd Street<br />Newport, OR</p><p class=\"map-info\" style=\"margin:0;\">(541) 265-4232<br /><a href=\"http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=Earthbound+Beauty+Newport+OR&sll=37.649034,-95.712891&sspn=51.242476,94.042969&ie=UTF8&z=15&iwloc=top0\" target=\"_blank\">Driving directions</a></p>";
  		map.addControl(new GSmallMapControl());
  		map.setCenter(pubLocation, 14);
  		marker = new GMarker(pubLocation);
  		GEvent.addListener(marker, "click", function() {
  			map.openInfoWindow(pubLocation, locationHTML);
  		});
  		map.addOverlay(marker);
  	}
  }
}

Event.observe(window, 'dom:loaded', Global.setup);