function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
};

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
};

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
};

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
};

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
};
MM_reloadPage(true);

function get_elem(elem)
{
  if (typeof(elem) != 'undefined' && elem)
  {
    if (typeof(elem.tagName) != 'undefined' && elem.tagName)
    {
      elem = elem;
    }
    else
    {
      if (document.all)
        elem = document.getElementById(elem) ? document.getElementById(elem) : document.all[elem];
      else
        elem = document.getElementById(elem);
    }
  }

  if (typeof(elem) == 'undefined' || !elem)
    var elem = false;

  return elem;
};

function toggle_visible(el, on)
{
  var ok;
  if (typeof(on) == 'undefined')
    ok = toggle_class(el, 'not_here', 'not_here'); // will show it if not shown and hide it if shown
  else if (on)
    ok = remove_class(el, 'not_here'); // show it
  else
    ok = add_class(el, 'not_here'); // hide it
};

function has_class(el, searched_class)
{
  if (typeof(searched_class) == 'undefined' || !searched_class)
    return false;

  el = get_elem(el);

  if (!el)
    return false;

  var class_array = el.className.split(' ');

  for(var i in class_array)
  {
    if (class_array[i] == searched_class)
      return true;
  }
  return false;
};

function add_class(el, added_class)
{
  if (typeof(added_class) == 'undefined' || !added_class)
    return false;

  el = get_elem(el);

  if (!el || has_class(el, added_class))
      return false;

  el.className = el.className + ' ' + added_class;

  return true;
};

function remove_class(el, removed_class)
{
  if (typeof(removed_class) == 'undefined' || !removed_class)
    return false;

  el = get_elem(el);

  if (!el)
    return false;

  var class_array = el.className.split(' ');
  var class_changed = false;

  for (var i in class_array)
  {
    if (class_array[i] == removed_class)
    {
      class_array.splice(i, 1);
      class_changed = true;
    }
  }

  if (class_changed)
    el.className = class_array.join(' ');

  return class_changed;
};

function toggle_class(el, added_class, removed_class)
{
  el = get_elem(el);

  if (!el)
    return false;

  add = false;
  if (typeof(added_class) != 'undefined' && added_class)
    add = true;

  remove = false;
  if (typeof(removed_class) != 'undefined' && removed_class)
    remove = true;

  if (!add && !remove )
    return false;

  var class_array = el.className.split(' ');
  var class_changed = false;

  for (var i in class_array)
  {
    if (add && class_array[i] == added_class)
      add = (false || class_changed);

    if (remove && class_array[i] == removed_class)
    {
      class_array.splice(i, 1);
      class_changed = true;
    }
  }

  if (add)
  {
    class_array[class_array.length] = added_class;
    class_changed = true;
  }

  if (class_changed)
    el.className = class_array.join(' ');

  return class_changed;
};

function trim(s)
{
  if (typeof(s) == 'undefined' || !s)
    return '';
  return s.replace(/^\s*|\s*$/g,"");
};

function get_xmlhttp()
{
  var xmlhttp;
  
  if (typeof(XMLHttpRequest) != 'undefined')
  {
    try
    {
      xmlhttp = new XMLHttpRequest();
    }
    catch (e)
    {
      xmlhttp = false;
    }
  }
  return xmlhttp;
};

function validate_email(email) 
{
  if (typeof(email) == 'undefined' || !email)
    return false;
    
  var reg = /^([a-zA-Z0-9])+([A-Za-z0-9_\-\.])*\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
  return (reg.test(email) == false ? false : true);
};

// checks to see if something is a number with max 2 decimals and could have commas
function is_amount(num) 
{
  if (typeof(num) == 'undefined' || !num)
    return false;
  
  var regex1 = /^([0-9]{1,3})?(,([0-9]{3}))*[.]?([0-9]{0,2})$/ // or (\d{1,3})?(,(\d{3}))*\.?(\d{0,2})$/
  var regex2 = /^[0-9]+[.]?([0-9]{0,2})$/; // or /^\d+\.?(\d{0,2})$/
  
  var ret = false;
  if (regex1.test(num) || regex2.test(num))
    ret = true;
    
  return ret;
};

// from http://www.mredkj.com/javascript/numberFormat.html
function add_commas(nStr)
{
  nStr += '';
  var x = nStr.split('.');
  var x1 = x[0];
  var x2 = x.length > 1 ? '.' + x[1] : '';
  var rgx = /(\d+)(\d{3})/;

  while (rgx.test(x1)) 
    x1 = x1.replace(rgx, '$1' + ',' + '$2');

  return x1 + x2;
}

function get_url_arg_from_form_input(input, arg_name, no_amp)
{
  if (typeof(input) == 'undefined' || !input
      || input.tagName != 'INPUT' && input.tagName != 'TEXTAREA' 
      && input.tagName != 'SELECT' && typeof(input.length) == 'undefined'
    )
    return '';
  
  var arg = '';
  var value = '';
  
  if (typeof(input.type) != 'undefined')
  {
    if (input.type == 'checkbox')
      value = input.checked;
    else if (input.tagName == 'SELECT')
    {
      var opt = input.options[input.selectedIndex];
      if (opt)
        value = opt.value;
    }
    else
      value = trim(input.value)
  }
  else if (typeof(input.length) != 'undefined' && input.length)
  {
    for (var i = 0; i < input.length; i++)
    {
      if (input[i].type != 'radio')
        break;
        
      if (input[i].checked)
      {
        value = input[i].value;
        break;
      }
    }
  }
   
  if (typeof (arg_name) == 'undefined' || !arg_name)
    return value;
     
  if (value)
  {
   if (typeof(no_amp) == 'undefined' || !no_amp)
      arg += '&';

    arg += arg_name+'='+ value;
  }
    
  return arg;    
};

function submit_email_signup(frm)
{
  var form = get_elem(frm);

  if (!form || typeof(form.email_signup_form_email) == 'undefined')
    return;
  
  var email = trim(form.email_signup_form_email.value);
  var err_msg = '';
    
  if (!email)
    err_msg += 'Please enter your email address. <br />';
  else if (!validate_email(email))
    err_msg += 'Please enter your valid email address. <br />';
  
  var status_el = get_elem('email_signup_form_status_msg');
  
  if (err_msg)
  {
    if (status_el)
    {
      toggle_class(status_el, 'err_msg', 'not_here');
      status_el.innerHTML = err_msg;
    }
      
    return;
  }
  
  var args = 'e='+ email;
  var url_to_hit = SITE_ROOT + 'ajax/q_email_email_signup';
  var http = get_xmlhttp();
  http.open("POST", url_to_hit, true);
  http.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
  http.send(args);
  http.onreadystatechange = function()
            {
              if (http.readyState == 4)
              {
                var status = TECH_ERROR_MSG;
                try
                {
                  eval('var response =' + http.responseText);
                }
                catch (e)
                {
                  var response = false;
                }
                              
                if (response && typeof(response['status_msg']) != 'undefined' && response['status_msg'])
                  status = response['status_msg'];
                  
                if (status == 'win')
                {
                  if (form)
                    form.reset();
                  
                  if (status_el)
                  {
                    remove_class(status_el, 'not_here');
                    remove_class(status_el, 'err_msg');                  
                    status_el.innerHTML = 'You sucessfully signed-up!';
                  }
                }
                else
                {
                  toggle_class(status_el, 'err_msg', 'not_here');
                  status_el.innerHTML = status;
                }
              }
  };
};

function toggle_send_to_a_friend()
{
  var form = get_elem('send_to_a_friend_form');

  if (!form)
    return false;
  
  toggle_visible(form);
    
  var status_el = get_elem('send_to_a_friend_status_msg');
  if (status_el)
  {
    toggle_class(status_el, 'not_here', 'err_msg');
    status_el.innerHTML = '';
  }
  
  var intsruct_el = get_elem('send_to_a_friend_instruction');
  if (intsruct_el)
    remove_class(intsruct_el, 'not_here');
  
  var inputs_el = get_elem('send_to_a_friend_inputs');
  if (inputs_el)
    remove_class(inputs_el, 'not_here');
  
  return true; 
};

function submit_send_to_a_friend(frm)
{
  var form = get_elem(frm);

  if (!form || typeof(form.send_to_a_friend_from) == 'undefined' || typeof(form.send_to_a_friend_to) == 'undefined')
    return;
  
  var from = trim(form.send_to_a_friend_from.value);
  var to = trim(form.send_to_a_friend_to.value);
  var err_msg = '';

  if (!from)
    err_msg += 'Please enter your email address in the "from" field. <br />';
  else if (!validate_email(from))
    err_msg += 'Please enter your valid email address in the "from" field. <br />';
    
  if (!to)
    err_msg += 'Please enter an email address in the "to" field. <br />';
  else if (!validate_email(to))
    err_msg += 'Please enter a valid email address in the "to" field. <br />';
    
  if (!err_msg && from == to)
    err_msg += 'Please enter different email addresses in the "to" and "from" fields. <br />';
  
  var status_el = get_elem('send_to_a_friend_status_msg');
  var intsruct_el = get_elem('send_to_a_friend_instruction');
  
  if (err_msg)
  {
    if (status_el)
    {
      toggle_class(status_el, 'err_msg', 'not_here');
      status_el.innerHTML = err_msg;
    }
    
    if (intsruct_el)
      add_class(intsruct_el, 'not_here');
      
    return;
  }
  
  var args = 'f='+ from +'&t='+ to+'&u='+ encodeURIComponent(window.location.href);
  var url_to_hit = SITE_ROOT + 'ajax/q_email_send_to_a_friend';
  var http = get_xmlhttp();
  http.open("POST", url_to_hit, true);
  http.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
  http.send(args);
  http.onreadystatechange = function()
            {
              if (http.readyState == 4)
              {
                var status = TECH_ERROR_MSG;
                try
                {
                  eval('var response =' + http.responseText);
                }
                catch (e)
                {
                  var response = false;
                }
                
                if (response && typeof(response['status_msg']) != 'undefined' && response['status_msg'])
                  status = response['status_msg'];

                if ( status == 'win')
                {
                  if (form)
                    form.reset();
                  
                  if (status_el)
                  {
                    remove_class(status_el, 'not_here');
                    remove_class(status_el, 'err_msg');                  
                    status_el.innerHTML = 'This page was successfully sent to your friend!';
                  }
                  
                  if (intsruct_el)
                    add_class(intsruct_el, 'not_here');
                    
                  var inputs_el = get_elem('send_to_a_friend_inputs');
                  if (inputs_el)
                    add_class(inputs_el, 'not_here');

                  setTimeout(toggle_send_to_a_friend, 3000);
                }
                else
                {
                  if (status_el)
                  {
                    toggle_class(status_el, 'err_msg', 'not_here');
                    status_el.innerHTML = status;
                  }
                  
                  if (intsruct_el)
                    add_class(intsruct_el, 'not_here');
                }
              }
  };
};

function submit_contact_us_form(frm)
{
  var form = get_elem(frm);
  
  if (!form || typeof(form.contact_us_form_email) == 'undefined' || typeof(form.contact_us_form_msg) == 'undefined')
    return;
    
  var email = trim(form.contact_us_form_email.value);
  var msg = get_url_arg_from_form_input(form.contact_us_form_msg, 'm');
  var err_msg = '';  
  
  if (!msg)
    err_msg += 'Please enter a message in the comment box. <br />';
    
  if (!email)
    err_msg += 'Please enter your email address. <br />';
  else if (!validate_email(email))
    err_msg += 'Please enter your valid email address. <br />';
  
  var status_el_top = get_elem('contact_us_form_status_msg_top');
  var status_el_bottom = get_elem('contact_us_form_status_msg_bottom');

  if (err_msg)
  {
    if (status_el_top)
    {
      toggle_class(status_el_top, 'err_msg', 'not_here');
      status_el_top.innerHTML = err_msg;
    }
    
    if (status_el_bottom)
    {
      toggle_class(status_el_bottom, 'err_msg', 'not_here');
      status_el_bottom.innerHTML = err_msg;
    }
      
    return;
  }
  
  var args = 'e='+ email + msg;
  
  args += get_url_arg_from_form_input(form.contact_us_form_first_name, 'fn');
  args += get_url_arg_from_form_input(form.contact_us_form_last_name, 'ln');
  args += get_url_arg_from_form_input(form.contact_us_form_updates, 'up');
  args += get_url_arg_from_form_input(form.contact_us_form_address1, 'a1');
  args += get_url_arg_from_form_input(form.contact_us_form_address2, 'a2');
  args += get_url_arg_from_form_input(form.contact_us_form_city, 'c');
  args += get_url_arg_from_form_input(form.contact_us_form_state, 's');
  args += get_url_arg_from_form_input(form.contact_us_form_zip, 'z');
  args += get_url_arg_from_form_input(form.contact_us_form_phone, 'p');
  args += get_url_arg_from_form_input(form.contact_us_form_newsletter, 'news');
  args += get_url_arg_from_form_input(form.contact_us_form_other, 'o');
  args += get_url_arg_from_form_input(form.contact_us_form_events, 'ev');
  
  var url_to_hit = SITE_ROOT + 'ajax/q_email_contact_us';
  var http = get_xmlhttp();
  http.open("POST", url_to_hit, true);
  http.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
  http.send(args);
  http.onreadystatechange = function()
            {
              if (http.readyState == 4)
              {
                var status = TECH_ERROR_MSG;
                try
                {
                  eval('var response =' + http.responseText);
                }
                catch (e)
                {
                  var response = false;
                }
                
                if (response && typeof(response['status_msg']) != 'undefined' && response['status_msg'])
                  status = response['status_msg'];

                if (status == 'win')
                {
                  if (form)
                    form.reset();
                  
                  add_class('contact_us_form_table', 'not_here');
                  
                  if (status_el_top)
                  {
                    toggle_class(status_el_top, 'not_here', 'err_msg');
                    status_el_top.innerHTML = '';
                  }
                  
                  if (status_el_bottom)
                  {
                    remove_class(status_el_bottom, 'not_here');
                    remove_class(status_el_bottom, 'err_msg');
                    status_el_bottom.innerHTML = 'Your message was successfully sent!';
                  }

                }
                else
                {
                  if (status_el_top)
                  {
                    toggle_class(status_el_top, 'err_msg', 'not_here');
                    status_el_top.innerHTML = status;
                  }
                  
                  if (status_el_bottom)
                  {
                    toggle_class(status_el_bottom, 'err_msg', 'not_here');
                    status_el_bottom.innerHTML = status;
                  }

                }
              }
  };
};

function submit_donation_form(frm)
{
  var form = get_elem(frm);
  
  if (!form || typeof(form.donation_form_amount) == 'undefined' || typeof(form.donation_form_email) == 'undefined')
    return false;

  var amt = trim(form.donation_form_amount.value);
  var f_name = trim(form.donation_form_first_name.value);
  var l_name = trim(form.donation_form_last_name.value);
  var address = trim(form.donation_form_address.value);
  var city = trim(form.donation_form_city.value);
  var state = get_url_arg_from_form_input(form.donation_form_state);
  var zip = trim(form.donation_form_zip.value);
  var country = trim(form.donation_form_country.value);
  var email = trim(form.donation_form_email.value);
  var err_msg = '';  
  var regex;
  
  if (!amt)
    err_msg += 'Please enter the amount of your donation. <br />';
  else 
  {
    regex = /^[,.0-9]+$/;
    // if (parseFloat(amt) != amt)
    if (!regex.test(amt))
      err_msg += 'Please enter a numeric value for the amount of your donation. <br />';
  }
    
  if (!f_name)
    err_msg += 'Please enter your first name. <br />';
    
  if (!l_name)
    err_msg += 'Please enter your last name. <br />';
    
  if (!address)
    err_msg += 'Please enter your street address. <br />';
  
  if (!city)
    err_msg += 'Please enter your city. <br />';

  if (!state)
    err_msg += 'Please select your state. <br />';

  if (!zip)
    err_msg += 'Please enter your zip code. <br />';
    
  if (!country)
    err_msg += 'Please enter your country. <br />';
  
  if (!email)
    err_msg += 'Please enter your email address. <br />';
  else if (!validate_email(email))
    err_msg += 'Please enter your valid email address. <br />';
  
  var status_el_top = get_elem('donation_form_status_msg_top');
  var status_el_bottom = get_elem('donation_form_status_msg_bottom');

  if (err_msg)
  {
    if (status_el_top)
    {
      toggle_class(status_el_top, 'err_msg', 'not_here');
      status_el_top.innerHTML = err_msg;
    }
    
    if (status_el_bottom)
    {
      toggle_class(status_el_bottom, 'err_msg', 'not_here');
      status_el_bottom.innerHTML = err_msg;
    }
      
    return false;
  }
  
  return true; 
};

function validate_send_heart_to_a_friend(frm)
{
  var form = get_elem(frm);

  if (!form || typeof(form.from_email) == 'undefined' || typeof(form.friend1_email) == 'undefined')
    return false;
  
  var from_name = trim(form.from_name.value);
  var from_email = trim(form.from_email.value);
  var f1 = trim(form.friend1_email.value);
  var err_msg = '';

  if (!from_name)
    err_msg += "Please enter your name. <br />";
    
  if (!from_email)
    err_msg += 'Please enter your email address. <br />';
  else if (!validate_email(from_email))
    err_msg += 'Please enter your valid email address. <br />';
    
  if (!f1)
    err_msg += 'Please enter your first friend\'s email address. <br />';
  else if (!validate_email(f1))
    err_msg += 'Please enter a valid email address as your first friend\'s email address. <br />';
  
  var f2 = trim(form.friend2_email.value);
  var f3 = trim(form.friend3_email.value);
  var f4 = trim(form.friend4_email.value);
  
  if (f2 && !validate_email(f2))
    err_msg += 'Please enter a valid email address as your second friend\'s email address. <br />';
  
  if (f3 && !validate_email(f3))
    err_msg += 'Please enter a valid email address as your third friend\'s email address. <br />';
    
  if (f4 && !validate_email(f4))
    err_msg += 'Please enter a valid email address as your fourth friend\'s email address. <br />';
  
  if (!err_msg && (from_email == f1 && f1 || from_email == f2 && f2 || from_email == f3 && f3 || from_email == f4 && f4
      || f1 == f2 && f1 || f1 == f3 && f1 || f1 == f4 && f1
      || f2 == f3 && f2 || f2 == f4  && f2 || f3 == f4 && f3)
      )
    err_msg += 'Please enter different email addresses for you and your friend(s). <br />';
    
  if (err_msg)
  {
    var status_el = get_elem('send_heart_to_a_friend_status_msg');
    if (status_el)
    {
      toggle_class(status_el, 'err_msg', 'not_here');
      status_el.innerHTML = err_msg;
    }
    
    return false;
  }
  
  return true;
};


