function GetKey(e)
{
  if (window.event) return window.event.keyCode;
  else if (e) return e.which;
  else return null;
}

function ValidatedSubmit(textfield)
{
  if (textfield.form.onsubmit) {
    if (textfield.form.onsubmit()) textfield.form.submit();
  } else textfield.form.submit();
}

function SubmitForm(textfield, e)
{
  if (GetKey(e) == 13) {
    ValidatedSubmit(textfield);
    return false;
  } else return true;
}

function Trim(s)
{
  var i = 0;
  var l = s.length - 1;
  while ((i <= l) && (s.charCodeAt(i) <= 32)) i++;
  if (i > l) return('')
  else {
    while (s.charCodeAt(l) <= 32) l--;
	return(s.substring(i, l + 1));
  }
}

function TestAlphaLow(k)
{
  return((k >= 97) && (k <= 122));
}

function TestAlpha(k)
{
  return(((k >= 65) && (k <= 90)) || ((k >= 97) && (k <= 122)));
}

function TestAlphaEx(k)
{
  return(((k >= 65) && (k <= 90)) || ((k >= 97) && (k <= 122)) || (k == 45) || (k == 32));
}

function TestDigit(k)
{
  return((k >= 48) && (k <= 57));
}

function InputAlpha(textfield, e)
{
  var k=GetKey(e);
  if (k == 13) {
    ValidatedSubmit(textfield);
    return false;
  } else if (TestAlpha(k)) return true;
  else return false;
}

function InputAlphaEx(textfield, e)
{
  var k=GetKey(e);
  if (k == 13) {
    ValidatedSubmit(textfield);
    return false;
  } else if (TestAlphaEx(k)) return true;
  else return false;
}

function InputPostalCode(textfield, e)
{
  var k=GetKey(e);
  if (k == 13) {
    ValidatedSubmit(textfield);
    return false;
  } else if (TestAlphaLow(k)) {
    if (window.event) window.event.keyCode=k-32;
    return true;
  } else if ((TestAlpha(k)) || (TestDigit(k)) || (k == 32)) return true;
  else return false;
}

function InputLogin(textfield, e)
{
  var k=GetKey(e);
  if (k == 13) {
    ValidatedSubmit(textfield);
    return false;
  } else if ((TestAlpha(k)) || (TestDigit(k)) || (k == 95)) return true;
  else return false;
}

function InputName(textfield, e)
{
  var k=GetKey(e);
  if (k == 13) {
    ValidatedSubmit(textfield);
    return false;
  } else if ((TestAlpha(k)) || (TestDigit(k)) || (k == 45) || (k == 32) || (k == 192) || (k = 222)) return true;
  else return false;
}

function InputPhone(textfield, e)
{
  var k=GetKey(e);
  if (k == 13) {
    ValidatedSubmit(textfield);
    return false;
  } else if ((TestAlpha(k)) || (TestDigit(k)) || (k == 45) || (k == 40) || (k == 41)) return true;
  else return false;
}

function InputInteger(textfield, e)
{
  var k=GetKey(e);
  if (k == 13) {
    ValidatedSubmit(textfield);
    return false;
  } else if (TestDigit(k)) return true;
  else return false;
}

function InputFloat(textfield, e)
{
  var k=GetKey(e);
  if (k == 13) {
    ValidatedSubmit(textfield);
    return false;
  } else if ((TestDigit(k)) || ((k == 46) && (textfield.value.indexOf('.') < 0))) return true;
  else return false;
}

function CheckInteger(textfield)
{
  if (textfield.value.indexOf(',') >= 0) return false;
  var a=parseInt(textfield.value,10);
  if (isNaN(a)) return false;
  return((a >= 0) && (a <= 2147483647));
}

function CheckFloat(textfield)
{
  if (textfield.value.indexOf(',') >= 0) return false;
  var a=parseFloat(textfield.value);
  if (isNaN(a)) return false;
  return(a >= 0);
}

function ValidateDomain(s)
{
  var c;
  if (!s) return(false);
  if (s.length == 0) return(false);
  for (var i = 0; i < s.length; i++) {
    c = s.charAt(i);
    if ((c == '\~') || (c == '\`') || (c == '\@') || (c == '\#') || (c == '\$') || (c == '\%') || (c == '\^') ||
      (c == '\&') || (c == '\*') || (c == '\(') || (c == '\)') || (c == '\ ') || (c == '\=') || (c == '\+') ||
      (c == '\\') || (c == '\|') || (c == '\[') || (c == '\]') || (c == '\{') || (c == '\}') || (c == '\;') ||
      (c == '\:') || (c == '\'') || (c == '\"') || (c == '\,') || (c == '\<') || (c == '\>') || (c == '\/') ||
      (c == '\?')) return(false);
  }
  return(true);
}

function ValidateUserName(s)
{
  var c;
  if (!s) return(false);
  if (s.length == 0) return(false);
  for (var i = 0; i < s.length; i++) {
    c = s.charAt(i);
    if ((c == '\(') || (c == '\)') || (c == '\ ') || (c == '\\') || (c == '\[') || (c == '\]') || (c == '\;') ||
      (c == '\:') || (c == '\"') || (c == '\,') || (c == '\<') || (c == '\>') || (c == '\/')) return(false);
  }
  return(true);
}

function CheckEmail(textfield)
{
  var n, s;
  n = textfield.value.indexOf('@');
  if (n > 0)
    if (ValidateUserName(textfield.value.substring(0, n))) {
      s = textfield.value.substring(n + 1, textfield.value.length);
      n = s.indexOf('.');
      if ((n > 0) && (n < (s.length - 1)))
        if (ValidateDomain(s))
          return(true);
    }
  return(false);
}

function CheckString(textfield)
{
  var space_count=0;
  for (var i=0;i<textfield.value.length;i++) if (textfield.value.charAt(i) == ' ') space_count++;
  return(space_count < textfield.value.length);
}

function CheckLogin(textfield)
{
  var k;
  for (var i=0;i<textfield.value.length;i++) {
    k = textfield.value.charCodeAt(i);
    if (!((TestAlpha(k)) || (TestDigit(k)) || (k == 95))) return(false);
  }
  return(true);
}

function CheckName(textfield)
{
  var k;
  for (var i=0;i<textfield.value.length;i++) {
    k = textfield.value.charCodeAt(i);
    if (!((TestAlpha(k)) || (TestDigit(k)) || (k == 45) || (k == 32) || (k == 192) || (k = 222))) return(false);
  }
  return(true);
}

function CheckPhone(textfield)
{
  var k;
  for (var i=0;i<textfield.value.length;i++) {
    k = textfield.value.charCodeAt(i);
    if (!((TestAlpha(k)) || (TestDigit(k)) || (k == 45) || (k == 40) || (k == 41))) return(false);
  }
  return(true);
}

function CheckPostalCode(textfield)
{
  var k;
  for (var i=0;i<textfield.value.length;i++) {
    k = textfield.value.charCodeAt(i);
    if (!((TestAlpha(k)) || (TestDigit(k)) || (k == 32))) return(false);
  }
  return(true);
}

function HighlightField(SpanRef, NoHighlight)
{
  if (NoHighlight) SpanRef.className="";
  else SpanRef.className="attention";
}

function ShowAlert(NoAlert)
{
  if (!NoAlert) alert('Some of values you have entered are incorrect. All names of incorrect values highlighted in red.');
}

function CheckIntegerField(FieldName, AcceptsNull)
{
  var res=false, FieldRef, SpanRef;
  eval('SpanRef=document.all.s_'+FieldName);
  eval('FieldRef=document.all.'+FieldName);
  if (FieldRef.value.length == 0) res=AcceptsNull;
  else res=CheckInteger(FieldRef);
  HighlightField(SpanRef, res);
  return(res);
}

function CheckIntegerNoZeroField(FieldName, AcceptsNull)
{
  var res=false, FieldRef, SpanRef;
  eval('SpanRef=document.all.s_'+FieldName);
  eval('FieldRef=document.all.'+FieldName);
  if (FieldRef.value.length == 0) res=AcceptsNull;
  else {
    res=CheckInteger(FieldRef);
	if (res) res=(FieldRef.value != 0);
  }
  HighlightField(SpanRef, res);
  return(res);
}

function CheckPercentFloatNoZeroField(FieldName, AcceptsNull)
{
  var res=false, FieldRef, SpanRef;
  eval('SpanRef=document.all.s_'+FieldName);
  eval('FieldRef=document.all.'+FieldName);
  if (FieldRef.value.length == 0) res=AcceptsNull;
  else {
    res=CheckFloat(FieldRef);
	if (res) res=((FieldRef.value > 0) && (FieldRef.value <= 100));
  }
  HighlightField(SpanRef, res);
  return(res);
}

function CheckKeyField(FieldName, AcceptsNull)
{
  var res=false, FieldRef, SpanRef;
  eval('SpanRef=document.all.s_'+FieldName);
  eval('FieldRef=document.all.'+FieldName);
  if (FieldRef.value.length == 0) res=AcceptsNull;
  else {
    res=CheckInteger(FieldRef);
	if (res) res=(AcceptsNull || (FieldRef.value != 0));
  }
  HighlightField(SpanRef, res);
  return(res);
}

function CheckFloatField(FieldName, AcceptsNull)
{
  var res=false, FieldRef, SpanRef;
  eval('SpanRef=document.all.s_'+FieldName);
  eval('FieldRef=document.all.'+FieldName);
  if (FieldRef.value.length == 0) res=AcceptsNull;
  else res=CheckFloat(FieldRef);
  HighlightField(SpanRef, res);
  return(res);
}

function CheckFloatNoZeroField(FieldName, AcceptsNull)
{
  var res=false, FieldRef, SpanRef;
  eval('SpanRef=document.all.s_'+FieldName);
  eval('FieldRef=document.all.'+FieldName);
  if (FieldRef.value.length == 0) res=AcceptsNull;
  else {
    res=CheckFloat(FieldRef);
	if (res) res=(FieldRef.value != 0);
  }
  HighlightField(SpanRef, res);
  return(res);
}

function CheckEmailField(FieldName, AcceptsNull)
{
  var res=false, FieldRef, SpanRef;
  eval('SpanRef=document.all.s_'+FieldName);
  eval('FieldRef=document.all.'+FieldName);
  if (FieldRef.value.length == 0) res=AcceptsNull;
  else res=CheckEmail(FieldRef);
  HighlightField(SpanRef, res);
  return(res);
}

function CheckStringField(FieldName, AcceptsNull)
{
  var res=false, FieldRef, SpanRef;
  eval('SpanRef=document.all.s_'+FieldName);
  eval('FieldRef=document.all.'+FieldName);
  if (FieldRef.value.length == 0) res=AcceptsNull;
  else res=CheckString(FieldRef);
  HighlightField(SpanRef, res);
  return(res);
}

function CheckStringFieldLen(FieldName, AcceptsNull, Len)
{
  var res=false, FieldRef, SpanRef;
  eval('SpanRef=document.all.s_'+FieldName);
  eval('FieldRef=document.all.'+FieldName);
  if (FieldRef.value.length == 0) res=AcceptsNull;
  else {
    res=CheckString(FieldRef);
	if (res) res=(FieldRef.value.length<=Len);
  }
  HighlightField(SpanRef, res);
  return(res);
}

function CheckStringFieldFixedLen(FieldName, Len)
{
  var res=false, FieldRef, SpanRef;
  eval('SpanRef=document.all.s_'+FieldName);
  eval('FieldRef=document.all.'+FieldName);
  res = (FieldRef.value.length == Len);
  if (res) res=CheckString(FieldRef);
  HighlightField(SpanRef, res);
  return(res);
}

function CheckLoginField(FieldName, AcceptsNull)
{
  var res=false, FieldRef, SpanRef;
  eval('SpanRef=document.all.s_'+FieldName);
  eval('FieldRef=document.all.'+FieldName);
  if (FieldRef.value.length == 0) res=AcceptsNull;
  else res=CheckLogin(FieldRef);
  HighlightField(SpanRef, res);
  return(res);
}

function CheckNameField(FieldName, AcceptsNull)
{
  var res=false, FieldRef, SpanRef;
  eval('SpanRef=document.all.s_'+FieldName);
  eval('FieldRef=document.all.'+FieldName);
  if (FieldRef.value.length == 0) res=AcceptsNull;
  else res=CheckName(FieldRef);
  HighlightField(SpanRef, res);
  return(res);
}

function CheckPhoneField(FieldName, AcceptsNull)
{
  var res=false, FieldRef, SpanRef;
  eval('SpanRef=document.all.s_'+FieldName);
  eval('FieldRef=document.all.'+FieldName);
  if (FieldRef.value.length == 0) res=AcceptsNull;
  else res=CheckPhone(FieldRef);
  HighlightField(SpanRef, res);
  return(res);
}

function CheckPostalCodeField(FieldName, AcceptsNull)
{
  var res=false, FieldRef, SpanRef;
  eval('SpanRef=document.all.s_'+FieldName);
  eval('FieldRef=document.all.'+FieldName);
  if (FieldRef.value.length == 0) res=AcceptsNull;
  else {
    res=CheckPostalCode(FieldRef);
	if (res) FieldRef.value=FieldRef.value.toUpperCase();
  }
  HighlightField(SpanRef, res);
  return(res);
}

function CopyToClipboard(s)
{
  document.copy_form.copy_area.value=s;
  r=document.copy_form.copy_area.createTextRange();
  r.select();
  r.execCommand('Copy');
}

function MenuMouseOver(mi)
{
  var s = mi.id.substring(2, mi.id.length);
  if (document.all['sn' + s]) document.all['sn' + s].style.display = 'none';
  if (document.all['so' + s]) document.all['so' + s].style.display = '';
}

function MenuMouseOut(mi)
{
  var s = mi.id.substring(2, mi.id.length);
  if (document.all['so' + s]) document.all['so' + s].style.display = 'none';
  if (document.all['sn' + s]) document.all['sn' + s].style.display = '';
}

function MenuClick(mi)
{
  if ((window.event.srcElement.id.indexOf('ln_') == 0) || (window.event.srcElement.id.indexOf('lo_') == 0)) return;
  var s = mi.id.substring(2, mi.id.length);
  if (document.all['ln' + s]) document.all['ln' + s].click();
}

function SetFocus()
{
  var is_visible, el;
  if (document.form1)
    for (var i=0;i<document.form1.elements.length;i++)
      with (document.form1.elements[i])
	    if ((type == 'text') || (type == 'textarea') || (type == 'file') || (type == 'select-one') ||
		  (type == 'password') || (type == 'radio') || (type == 'checkbox')) {
		  is_visible = true;
		  el = parentElement;
		  while (el) {
		    if ((el.style) && (el.style.display) && (el.style.display == 'none')) {
			  is_visible = false;
			  break;
			}
		    el = el.parentElement;
		  }
		  if (is_visible) {
            focus();
		    break;
		  }
		}
}

function CancelForm()
{
  if (confirm('Are you sure you want to cancel filling out this form and back to the previous page?'))
    history.back();
}

function ClearForm()
{
  if (confirm('Are you sure you want to clear all form values?'))
    for (var i=0;i<document.form1.elements.length;i++)
      with (document.form1.elements[i])
        if ((type == 'text') || (type == 'textarea') || (type == 'file') || (type == 'password')) value='';
	    else if (type == 'select-one') if (options.length > 0) selectedIndex=0;
}

window.onload=new Function("SetFocus()");
