var gFileClick = false;
var gAppletInited = true;
var disableSend = false;

function DisableForm () {

  // alert ("disable");
  // gAppletInited = false;
}

function InitApplet (f) {

  onerror = null;

  gAppletInited = true;

  for (i = 0; i < f.elements.length; i++) {
    e = f.elements [i];
    e.disabled = false;
  }
}

function CheckEmail (s) {
 
    if (s.length == 0)
	return true;
   
    if ((s.indexOf (" ") >= 0)
	|| (s.indexOf ("\t") >= 0)
	|| (s.indexOf (":") >= 0)
 	|| (s.indexOf ("<") >= 0)
	|| (s.indexOf (">") >= 0)
	|| (s.indexOf ("/") >= 0)
	|| (s.indexOf ("|") >= 0)
	|| (s.indexOf ("\\") >= 0)
	|| (s.indexOf ("\'") >= 0)
	|| (s.indexOf ("\"") >= 0)
	|| (s.indexOf ("@") < 0)
	|| (s.indexOf (".") < 0))
	return false;
    else
	return true;
}

function CheckID (s) {
 
    if (s.length == 0)
	return false;
   
    if ((s.indexOf (" ") >= 0)
	|| (s.indexOf ("\t") >= 0)
	|| (s.indexOf (":") >= 0)
 	|| (s.indexOf ("<") >= 0)
	|| (s.indexOf (">") >= 0)
	|| (s.indexOf ("/") >= 0)
	|| (s.indexOf ("|") >= 0)
	|| (s.indexOf ("\\") >= 0)
	|| (s.indexOf ("\'") >= 0)
	|| (s.indexOf ("\"") >= 0))
	return false;
    else
	return true;
}

function addFormFields (f, action) {

    if (!gAppletInited)
	return;

    document.SendFileApplet.newForm ();

    for (i = 0; i < f.elements.length; i++) {
        e = f.elements [i];
	switch (e.type) {
	case "hidden":
	case "text":
	    //if (e.name == "recipient-email") {
	    //	if (!CheckEmail (e.value)) {
	    //	    alert ("Please enter a valid e-mail address.");
	    //	    document.SendFileApplet.newForm ();
	    //	    return;
            //    }
            //}
	    document.SendFileApplet.addFormField (e.type, e.name, 30, 0, e.value);
	    break;
	case "textarea":
	    document.SendFileApplet.addFormField (e.type, e.name, 30, 12, e.value);
	    break;
	case "checkbox":
	case "radio":
	    if (e.checked) {
	        v = 1;
		document.SendFileApplet.addFormField (e.type, e.name, 0, v, e.value);
	    }
	    else
	        v = 0;
	    // document.SendFileApplet.addFormField (e.type, e.name, 0, v, e.value);
	    break;
	    
	case "select":
	case "select-one":
	    document.SendFileApplet.addFormField ("select", e.name, 0, 0, e.options [e.selectedIndex].text);
	    break;
	}
    }

    if (action == "sendLater")
	document.SendFileApplet.sendLater ();
    else
    	document.SendFileApplet.transferFiles ();
}

function addFile (f) {

  if (gAppletInited)
    document.SendFileApplet.addFormField ("file", f.file.value, 0, 0, "");
  f.reset ();
}

function addFormFieldsMacIE (f, action) {
  
  if (!gAppletInited)
    return;

  var p = parent.AppletHolder.document;

  p.writeln ("<html>\n<head>\n</head>\n<body>\n");

  if (navigator.appVersion.indexOf ("Mac") >= 0)
    p.writeln ("<applet width=1 height=1 codebase=/sfcommon name=\"FormSlaveApplet\" archive=/sfcommon/SendFileMRJ.jar code=FormSlave.class>");
  else
    p.writeln ("<applet width=1 height=1 codebase=/sfcommon name=\"FormSlaveApplet\" archive=/sfcommon/SendFile.jar code=FormSlave.class>");

  p.writeln ("<param name=cmd0 value=newForm,0,0,0,0>");

  for (i = 0, c = 1; i < f.elements.length; i++, c++) {
    e = f.elements [i];
    switch (e.type) {
    case "text":
    case "hidden":
      //if (e.name == "recipient-email") {
	//if (!CheckEmail (e.value)) {
	  //alert ("Please enter a valid e-mail address.");
	  //p.open ();
	  //p.close ();
	  //return;
        //}
      //}
      p.writeln ("<param name=cmd" + c + ' value="' + e.type + ", " + escape (e.name) + ",30,0, " + escape (e.value) + '">');
      break;
      
    case "textarea":
      p.writeln ("<param name=cmd" + c + ' value="' + e.type + ", " + escape (e.name) + ",30,12, " + escape (e.value) + '">');
      break;

    case "checkbox":
    case "radio":
      if (e.checked) {
        v = 1;
	p.writeln ("<param name=cmd" + c + ' value="' + e.type + ", " + escape (e.name) + ",0," + v + ", " + escape (e.value) + '">');
      }
      else
	c--;
	// v = 0;
      // p.writeln ("<param name=cmd" + c + ' value="' + e.type + ", " + escape (e.name) + ",0," + v + ", " + escape (e.value) + '">');
      break;
    
    case "select":
    case "select-one":
      p.writeln ("<param name=cmd" + c + ' value="select, ' + escape (e.name) + ",0,0, " + escape (e.options [e.selectedIndex].text) + '">');
      break;

    default:
      c--;
    }
  }

  if (action == "sendLater")
    p.writeln ("<param name=cmd" + c + " value=sendLater,0,0,0,0>");
  else
    p.writeln ("<param name=cmd" + c + " value=transferFiles,0,0,0,0>");

  p.writeln ("</applet>\n</body>\n</html>\n");
  p.close ();
}

function addFileMacIE (f) {

  if (!gFileClick)
    return;

  gFileClick = false;

  if (!gAppletInited) {
    f.reset ();
    return;
  }

  if (f.file.value.length == 0)
    return;

  var p = parent.AppletHolder.document;

  p.writeln ("<html>\n<head>\n</head>\n<body>\n");
  p.writeln ("<applet width=1 height=1 name=\"FormSlave\" archive=/sfcommon/SendFileMRJ.jar codebase=/sfcommon code=FormSlave.class>");

  p.writeln ('<param name=cmd0 value="file, ' + f.file.value + ',0,0,0">');
  p.writeln ("</applet>\n</body>\n</html>\n");

  p.close ();

  f.reset ();
}

function sendOutboxMessage (f, outboxTime, acctid) {
  
  var p = parent.OutboxAppletFrame.document;

  // document base
  p.writeln ("<base href=\"" + parent.location + "\">\n<html>\n<head>\n</head>\n<body bgcolor=white>");

  // applet
  if ((navigator.appVersion.indexOf ("Mac") >= 0)
      && (navigator.appVersion.indexOf ("MSIE") >= 0))
    p.writeln ("<applet width=1 height=1 codebase=/sfcommon archive=/sfcommon/SendFileMRJ.jar code=SendFile.class>");
  else
    p.writeln ("<applet width=1 height=1 codebase=/sfcommon archive=/sfcommon/SendFile.jar code=SendFile.class>");

  // common parameters
  p.writeln ("<param name=cabbase value=\"../sfcommon/SendFile.cab\">");
  p.writeln ("<param name=NoSendButton value=1>");
  p.writeln ("<param name=NoAddButton value=1>");
  p.writeln ("<param name=bgcolor value=ffffff>");
  p.writeln ("<param name=dooutbox value=1>");
  p.writeln ("<param name=OutboxTime value=\"" + outboxTime + "\">");
  p.writeln ("<param name=NoSuccessPage value=1>");
  p.writeln ("<param name=EnableHTTPS value=1>");

  // browser-dependent parameters
  if ((navigator.appVersion.indexOf ("Mac") >= 0)
      && (navigator.appVersion.indexOf ("MSIE 5.") >= 0)) {
    p.writeln ("<param name=FinishPage value=\"../sfcommon/OutboxRedirect.html\">");
  } else {
    p.writeln ("<param name=FinishPage value=\"/" + acctid + "/Outbox.html\">");
    p.writeln ("<param name=FinishFrame value=\"_parent\">");
  }
 
  // form parameters
  p.writeln ("<param name=cmd0 value=newForm,0,0,0,0>");

  for (i = 0, c = 1; i < f.elements.length; i++, c++) {
    e = f.elements [i];
    switch (e.type) {
    case "text":
    case "hidden":
      //if (e.name == "recipient-email") {
	//if (!CheckEmail (e.value)) {
	  //alert ("Please enter a valid e-mail address.");
	  //p.open ();
	  //p.close ();
	  //return;
        //}
      //}
      p.writeln ("<param name=cmd" + c + ' value="' + e.type + ", " + escape (e.name) + ",30,0, " + escape (e.value) + '">');
      break;
      
    case "textarea":
      p.writeln ("<param name=cmd" + c + ' value="' + e.type + ", " + escape (e.name) + ",30,12, " + escape (e.value) + '">');
      break;

    case "checkbox":
    case "radio":
      if (e.checked) {
        v = 1;
	p.writeln ("<param name=cmd" + c + ' value="' + e.type + ", " + escape (e.name) + ",0," + v + ", " + escape (e.value) + '">');
      }
      else
	c--;
	// v = 0;
      // p.writeln ("<param name=cmd" + c + ' value="' + e.type + ", " + escape (e.name) + ",0," + v + ", " + escape (e.value) + '">');
      break;
    
    case "select":
    case "select-one":
    case "select-multiple":
      if (e.name == "sfattach") {
	for (j = 0; j < e.options.length; j++, c++)
	  p.writeln ("<param name=cmd" + c + ' value="file, ' + escape (e.options [j].text) + ',0,0,0">');
	c--;
      }
      else
	p.writeln ("<param name=cmd" + c + ' value="select, ' + escape (e.name) + ",0,0, " + escape (e.options [e.selectedIndex].text) + '">');
      break;

    default:
      c--;
    }
  }

  p.writeln ("<param name=cmd" + c + " value=transferFiles,0,0,0,0>");
  p.writeln ("</applet>\n</body>\n</html>\n");

  p.close ();
}

function CheckUserInfo (f) {

  if (f.name.value.length == 0 || f.email.value.length == 0) {
    alert ("Please specify at least your name and e-mail address.");
    return false;
  }

  if (f.pwd1.value != f.pwd2.value) {
    alert ("Your two password entries do not match.");
    return false;
  }

  if (f.pwd1.value.length > 0) {
    if ((f.pwd1.value.length < 6) || !CheckID (f.pwd1.value)) {
      alert ("Please specify a password of at least 6 characters.");
      return false;
    }
  }

  return true;
}

function CheckUserInfoNoEmail (f) {

  if (f.name.value.length == 0) {
    alert ("Please specify at least your name.");
    return false;
  }

  if (f.pwd1.value != f.pwd2.value) {
    alert ("Your two password entries do not match.");
    return false;
  }

  if (f.pwd1.value.length > 0) {
    if ((f.pwd1.value.length < 6) || !CheckID (f.pwd1.value)) {
      alert ("Please specify a password of at least 6 characters.");
      return false;
    }
  }

  return true;
}

function CheckSignup (f) {

  if (!CheckID (f.userid.value)) {
    alert ("Please specify a valid userid.");
    return false;
  }

  if ((f.pwd1.value.length < 6) || !CheckID (f.pwd1.value)) {
    alert ("Please specify a password of at least 6 characters.");
    return false;
  }

  if (f.pwd1.value != f.pwd2.value) {
    alert ("Your two password entries do not match.");
    return false;
  }

  if (f.Name.value.length == 0 || f.email.value.length == 0) {
    alert ("Please specify your name and e-mail address.");
    return false;
  }

  return true;
}

function CheckEmailSignup (f) {

  if (f.Name.value.length == 0 || f.userid.value.length == 0 || !CheckEmail (f.userid.value)) {
    alert ("Please specify at least your name and e-mail address.");
    return false;
  }

  return true;
}

function FilePrepHelp () {

  window.open('s.sfc?command=fileprepurl&template=FilePrep.html','FilePrepWindow','directories=no,height=250,location=no,menubar=no,resizable=no,status=no,toolbar=no,width=400');
}

function FilePrepDownload () {

  if (navigator.appVersion.indexOf ("Mac") >= 0)
    window.open('s.sfc?command=fileprepurl&template=FilePrepDownload.html','FilePrepWindow','directories=no,height=250,location=no,menubar=no,resizable=no,status=no,toolbar=no,width=400');
}

function AddValueToField (form, field, value) {

  var i;

  // find the field
  for (i = 0; i < form.elements.length; i++) {
    if (form.elements [i].name == field)
      break;
  }

  var toValue = form.elements [i].value;

  if (toValue.indexOf (value) < 0) {
      if (toValue.length > 0)
        form.elements [i].value += ", " + value;
      else
        form.elements [i].value = value;
  }
}

// name - name of the desired cookie
// * return string containing value of specified cookie or null if cookie does not exist
function GetCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

// name - name of the cookie
// [path] - path of the cookie (must be same as path used to create cookie)
// [domain] - domain of the cookie (must be same as domain used to create cookie)
// * path and domain default if assigned null or omitted if no explicit argument proceeds
function DeleteCookie(name, path, domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

