/* ------------------------------------------------------------------------
 * SANDIA NATIONAL LABS
 * ------------------------------------------------------------------------
 * File Name:      subs.js
 * Written On:     9/18/2001
 * Author:         Emily Dickinson (09517)
 * Description:    Javascript for S.O.N. subscription service
 * ------------------------------------------------------------------------
 * PVCS Header Information
 * ------------------------------------------------------------------------
 * @(#)PVCSID:  $Archive:  $
 * @(#)PVCSID:  $Revision: 1.4 $
 * @(#)PVCSID:  $Date: 2002/07/23 23:24:04 $
 * @(#)PVCSID:  $Author: egd $
 * ------------------------------------------------------------------------ */

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];}}
}

/* ------------------------------------------------------------------------
 * VALIDATION FUNCTIONS
 * ------------------------------------------------------------------------ */

/* Returns true if:
 * 1. form input "login" is a valid email address, and
 * 2. form inputs "password" is non-blank
 */
function is_valid_login_and_password(form)  {
   if (! is_valid_login(form))    {  return false;  }
   if (! is_valid_password(form)) {  return false;  }
   return true;
}

/* Returns true if form input "login" is a valid email address. */
function is_valid_login(form)  {
   var login = form.login.value;

   if ( is_blank(login)) {
      alert("Please specify your email address");
      form.login.focus();
      return false;
   }

   if (! is_email(login))  {
      alert("Please specify a valid email address");
      form.login.focus();
      return false;
   }

   return true;
}

/* Returns true if form input "password" is non-blank. */
function is_valid_password(form)  {
   var password = form.password.value;
   if ( is_blank(password)) {
      alert("Please specify your password");
      form.password.focus();
      return false;
   }
   return true;
}

/* Returns true if str given is valid email address. */
function is_email(str) {
   if  ( (str.indexOf("@") != -1) && (str.indexOf(".") != -1)) {
	   return true;
   }
   return false;
}

/* Returns true if str is blank. */
function is_blank(str) {
    var trimmed_str = trim_string(str);
	if (trimmed_str.length > 0) {  return false; }
	else { return true; }
}	

/* Returns str, with leading and trailing whitespace removed. */
function trim_string(str)   {
	return( str.replace(/^\s+/g,"").replace(/\s+$/g,"") );
}

/* ------------------------------------------------------------------------
 * SHOW AND DO FUNCTIONS
 * ------------------------------------------------------------------------ */

/* show_subscriptions. Asserts inputs are valid, then submit to subs.cgi, 
 * with operation = "show_subscriptions" 
 */
function show_subscriptions(form)   {
   if (is_valid_login_and_password(form) == false)  { return false; }
   form.operation.value = "show_subscriptions";
   form.action = "/cgi-bin/subscriptions/subs.cgi";
   form.submit();
}

/* do_reg. Submits to subs.cgi, with operation = "do_reg" */
function do_reg(form)   {
   form.password.value = "";
   form.operation.value = "do_reg";
   form.action = "/cgi-bin/subscriptions/subs.cgi";
   form.submit();
}

/* show_profile. Submits to subs.cgi, with operation = "show_profile" */
function show_profile(form)   {
   form.operation.value = "show_profile";
   form.action = "/cgi-bin/subscriptions/subs.cgi";
   form.submit();
}

/* do_send_password. Asserts form input "login" is valid, then submits to subs.cgi, 
 * with operation = "do_send_password" 
*/
function do_send_password(form)   {
   if (is_valid_login(form) == false)  { return false; }
   form.operation.value = "do_send_password";
   form.action = "/cgi-bin/subscriptions/subs.cgi";
   form.submit();
}


/* show_remind. Validates form input 'login'.
 * Submits to subs.cgi, with operation = "show_remind" 
 */
function show_remind(form)   {
   if (is_valid_login(form) == false)  { return false; }
   form.operation.value = "show_remind";
   form.action = "/cgi-bin/subscriptions/subs.cgi";
   form.submit();
}

/* show_login. Relocates to subs.cgi, no operation or nuttin.
 */
function show_login()   {
   document.location = "/cgi-bin/subscriptions/subs.cgi";
}

/* show_reg. 
 * Submits to subs.cgi, with operation = "show_reg" 
 */
function show_reg(form)   {
   form.operation.value = "show_reg";
   form.action = "/cgi-bin/subscriptions/subs.cgi";
   form.submit();
}

/* do_update_subscriptions
 * Submits to subs.cgi, with operation = "do_update_subscriptions" 
 * and input subscribe_to_all equal to the one passed in.
 */
function do_update_subscriptions(form, subscribed_to_all)   {
   form.operation.value = "do_update_subscriptions";
   form.subscribed_to_all.value = subscribed_to_all;
   form.action = "/cgi-bin/subscriptions/subs.cgi";
   form.submit();
}

/* Calls subs.cgi with operation = do_unsubscribe */
function do_unsubscribe(form)  {
    if ( ! confirm('Do you want to unsubscribe from all on-line publications and be removed from the subscription database?') ) {
		return false;
	}
   form.action = "/cgi-bin/subscriptions/subs.cgi";
   form.operation.value = "do_unsubscribe"; 
   form.submit();
}

/* Validates registration form, then calls subs.cgi with operation = "do_reg" */
function do_reg(form)  {
   if (! is_valid_registration_form(form))    {  return false;  }
   form.action = "/cgi-bin/subscriptions/subs.cgi";
   form.operation.value = "do_reg"; 
   form.submit();
}

/* Returns true if form has is a valid registration form. */
function is_valid_registration_form(form)  {
   var login = form.login.value;
   var first_name = form.first_name.value;
   var last_name = form.last_name.value;
   var password = form.password.value;
   var password2 = form.password2.value;

   if ( is_blank(login)) {
      alert("Please specify your email address");
      form.login.focus();
      return false;
   }

   if ( is_blank(first_name)) {
      alert("Please specify your First Name");
      form.first_name.focus();
      return false;
   }

   if ( is_blank(last_name)) {
      alert("Please specify your Last Name");
      form.last_name.focus();
      return false;
   }

   if (! is_email(login))  {
      alert("Please specify a valid email address");
      form.login.focus();
      return false;
   }

   if ( is_blank(password)) {
      alert("Please specify a password");
      form.password.focus();
      return false;
   }

   if ( is_blank(password2)) {
      alert("Please re-type your password");
      form.password2.focus();
      return false;
   }

   if (password != password2) {
      alert("The first password you typed differs from the second one. Please re-type.");
      form.password.value = "";
      form.password2.value = "";
      form.password.focus();
      return false;
   }

   return true;
}

/* Assert form contains valid profile info, then call subs.cgi
 * with operation = do_profile
 */
function do_profile(form)   {
   if (is_valid_registration_form(form) == false)  { return false; }
   form.operation.value = "do_profile";
   form.action = "/cgi-bin/subscriptions/subs.cgi";
   form.submit();
}
