/**
 * Newsletter signup functionality
 *
 * @author Jim Tunstall <jtunstall@doc-net.com>
 * @copyright Copyright &copy; 2009, Doctor Net Limited
 * @package Seasons Website
 */

Seasons.newsletter = Seasons.newsletter ? Seasons.newsletter : {};

Seasons.newsletter.overlay_signup = (function () {
   var str_company_name = 'Seasons',
   str_content = '#mailing_list_signup_content',
   str_email = '#emc_subscribe_email_real',
   str_form = '#frm_emc_subscribe_real'
   str_error = '.overlay .error',
   initialise = function() {
   },
   signup = function () {
      if(valid() == false) {
         return false;
      }

      AjaxHandler.process_form($(str_form).get(0));
      AjaxHandler.dispatch(signup_success, signup_failure);
      return false;
   },
   valid = function() {
      var str_email_regex = /^([a-zA-Z0-9_\-])+(\.([a-zA-Z0-9_\-])+)*@((\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\]))|((([a-zA-Z0-9])+(([\-])+([a-zA-Z0-9])+)*\.)+([a-zA-Z])+(([\-])+([a-zA-Z0-9])+)*))$/;

      var str_email_address = $(str_email).val();
      if (("" == str_email_address) || (!str_email_address.match(str_email_regex))) {
         set_error('Invalid Email Address: Please enter a valid email address');
         return false;
      }

      return true;
   },
   signup_success = function() {
      $(str_content).empty();
      $(str_content).html('<h2>Signup Success</h2><p>You have successfully been signed up to the ' + str_company_name + ' Newsletter</p>');
   },
   signup_failure = function() {
      set_error('You could not be signed up to the ' + str_company_name + ' Newsletter at this time. Please try again.')
   },
   clear_error = function() {
      $(str_error).hide();
   },
   set_error = function(str_message) {
      $(str_error).find('p').text(str_message);
      $(str_error).show();
   },
   set_message = function(str_heading, str_message) {
      $(str_content).empty();
      $(str_content).html('<h2>' + str_heading + '</h2><p>' + str_message + '</p>');
   };

   Seasons.modules.add(initialise);

   var obj_public = {
	   submit: function() {
         return signup();
		},
		set_company_name: function(str_name) {
         str_company_name = str_name;
		}
   }

   return obj_public;
})();

