var join_collapse_div;

function close_join_status()
{
   var status_div = document.getElementById('status_div');
   status_div.style.display = 'none';
}

function display_join_status(title,msg,onclose)
{
   var join_email_div = document.getElementById('join_email_div');
   var divX = join_email_div.offsetLeft;
   var divY = join_email_div.offsetTop;
   var parent = join_email_div.offsetParent;
   while (parent) {
      if (parent.offsetLeft) divX += parent.offsetLeft;
      if (parent.offsetTop) divY += parent.offsetTop;
      parent = parent.offsetParent;
   }
   divX += 250;   divY += 30;
   var status_div = document.getElementById('status_div');
   var html = "<div class='status_header'><h1 class='status_h1'>"+title+"</h1><p>" +
      msg+"</p></div><div class='status_footer'><a href=\"\" onclick=\"close_join_status();";
   if (onclose) html += onclose + " ";
   html += " return false;\" ><img src=\"/images/pop-up-close.jpg\" alt=\"Close Window\" border='0' /></a></div>";
   status_div.innerHTML = html;
   status_div.style.left = divX+"px";
   status_div.style.top = divY+"px";
   status_div.style.display = '';
}

function join_onload()
{
   join_collapse_div = new animatedcollapse("join_div",1000,225,false);
   join_collapse_div.isExpanded = 'no';
}

function reset_join_captcha()
{
   var captcha_image = document.getElementById('join_captcha_image');
   var date_value = new Date();
   captcha_image.src = '/CaptchaSecurityImages.php?characters=5&height=25&width=70&bgr=0&bgg=105&bgb=171&CacheTime=' +
                       date_value.getTime();
}

function finish_display_join()
{
   if (join_collapse_div.runtimer) setTimeout(finish_display_join,1);
   else document.Join.EMail.focus();
}

function display_join()
{
   var subscribe_button = document.getElementById('subscribe_button');
   subscribe_button.style.display = 'none';
   reset_join_captcha();
   var div = document.getElementById('join_div');
   div.style.height = "1px";
   var slide_div = document.getElementById('join_slide_div');
   slide_div.style.display = '';
   join_collapse_div.slidedown();
   finish_display_join();
   var close_icon = document.getElementById('join_close_icon');
   close_icon.style.display = '';
}

function join_onfocus(field)
{
   var slide_div = document.getElementById('join_slide_div');
   if (slide_div.style.display == '') return;
   field.value = '';
   display_join();
}

function hide_join_div()
{
   if (join_collapse_div.runtimer) setTimeout(hide_join_div,1);
   else {
      var slide_div = document.getElementById('join_slide_div');
      slide_div.style.display = 'none';
      document.Join.EMail.value = 'Your Email address';
      document.Join.FirstName.value = '';
      document.Join.LastName.value = '';
      document.Join.ValidationCode.value = '';
      var close_icon = document.getElementById('join_close_icon');
      close_icon.style.display = 'none';
      var subscribe_button = document.getElementById('subscribe_button');
      subscribe_button.style.display = '';
   }
}

function close_join_div()
{
   join_collapse_div.slideup();
   hide_join_div();
}

function get_join_field_value(field_name,field_title)
{
   var field = document.Join[field_name];
   if (field.value == '') {
      display_join_status('Missing Field',field_title + ' is required',
                          'document.Join.' + field_name + '.focus();');
      field.focus();   return null;
   }
   return field.value;
}

function check_join_email(str)
{
    var at = "@";
    var dot = ".";
    var lat = str.indexOf(at);
    var lstr = str.length;
    var ldot = str.indexOf(dot);

    if (str.indexOf(at) == -1) return false;
    if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) return false;
    if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) return false;
    if (str.indexOf(at,(lat+1)) != -1) return false;
    if (str.substring(lat-1,lat) == dot || str.substring(lat+1,lat+2) == dot) return false;
    if (str.indexOf(dot,(lat+2)) == -1) return false;
    if (str.indexOf(" ") != -1) return false;
    return true;
}

var join_request;

function cancel_join_request()
{
   join_request.abort();
}

function finish_join_request(status,response)
{
   if (status == 200) {
      display_join_status('Join Complete',
                          'Thank you for joining our email list!');
      join_collapse_div.slideup();
      hide_join_div();
      var subscribe_button = document.getElementById('subscribe_button');
      subscribe_button.style.top = '70px';
   }
   else if (status == 406) {
      display_join_status('Invalid Code','Invalid Validation Code',
                          'document.Join.ValidationCode.focus();');
      document.Join.ValidationCode.focus();
   }
   else if (status == 410) close_join_status();
   else display_join_status('Join Error',response);
}

function send_join_request(fields)
{
   display_join_status('Sending Request','Please wait...','cancel_join_request();');
   join_request = new XMLHttpRequest();
   join_request.open('POST','/join.php',true);
   join_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
   join_request.setRequestHeader('Content-length',fields.length);
   join_request.setRequestHeader('Connection','close');
   join_request.onreadystatechange = function() {
      if (join_request.readyState == 4)
         finish_join_request(join_request.status,join_request.responseText);
   }
   join_request.send(fields);
}

function subscribe()
{
   if (join_collapse_div.isExpanded == 'no') {
      document.Join.EMail.value = '';
      document.Join.EMail.focus();
      display_join();   return;
   }

   var email = get_join_field_value('EMail','E-mail address');
   if (! email) return;
   if (! check_join_email(email)) {
      display_join_status('Invalid E-mail','Please enter a correct e-mail address',
                          'document.Join.EMail.focus();');
      document.Join.EMail.focus();   return;
   }
   var confirm_email = get_join_field_value('ConfirmEMail','Confirm E-mail address');
   if (! confirm_email) return;
   if (confirm_email != email) {
      display_join_status('Invalid Confirm E-mail','E-mail and Confirm E-mail don\'t match',
                          'document.Join.ConfirmEMail.focus();');
      document.Join.ConfirmEMail.focus();   return;
   }
   var first_name = get_join_field_value('FirstName','First Name');
   if (! first_name) return;
   var last_name = get_join_field_value('LastName','Last Name');
   if (! last_name) return;
   var validation_code = get_join_field_value('ValidationCode','Validation Code');
   if (! validation_code) return;

   var fields = 'email='+email+'&first_name='+first_name+'&last_name='+last_name +
                '&ValidationCode='+validation_code;
   send_join_request(fields);
}

function join_keypress(evt,next_field)
{
   var key_code = null;
   if (evt.which) key_code = evt.which;
   else if (evt.keyCode) key_code = evt.keyCode;
   if (key_code == 13) {
      if (next_field) document.Join[next_field].focus();
      else subscribe();
      return false;
   }
   return true;
}

