var BrowserString;
var BrowserUserAgent = "";
var BrowserName;
var BrowserVersion;
var BrowserOS;
var BrowserStringIndex;

var BROWSER_UNKNOWN   = 0;
var BROWSER_MSIE      = 1;
var BROWSER_NETSCAPE  = 2;
var BROWSER_OPERA     = 3;
var BROWSER_KONQUEROR = 4;
var BROWSER_OMNIWEB   = 5;
var BROWSER_WEBTV     = 6;
var BROWSER_ICAB      = 7;
var BROWSER_SAFARI    = 8;
var BROWSER_NETSCAPE6 = 9;
var BROWSER_FIREFOX   = 10;

var BROWSEROK_UNKNOWN = 0;
var BROWSEROS_WINDOWS = 1;
var BROWSEROS_LINUX   = 2;
var BROWSEROS_UNIX    = 3;
var BROWSEROS_MAC     = 4;

function BrowserSupportsInnerHTML()
{
  GetBrowserAndVersion();
  if      (BrowserName == BROWSER_MSIE)
  {
    if (BrowserVersion >= 4)
    {
      return 1;
    }
  }
  else if (BrowserName == BROWSER_NETSCAPE)
  {
    if (BrowserVersion >= 5)
    {
      return 1;
    }
  }
  else if (BrowserName == BROWSER_NETSCAPE6)
  {
    return 1;
  }
  else if (BrowserName == BROWSER_KONQUEROR)
  {
    return 1;
  }
  else if (BrowserName == BROWSER_SAFARI)
  {
    return 1;
  }
  else if (BrowserName == BROWSER_OPERA)
  {
    if (version >= 7)
    {
      return 1;
    }
  }
  return 0;  
}

function BrowserSupportsAnimation()
{
  GetBrowserAndVersion();
  if      (BrowserName == BROWSER_MSIE)
  {
    if (BrowserVersion >= 6)
    {
      return 1;
    }
  }
  else if (BrowserName == BROWSER_NETSCAPE6)
  {
    return 1; // actually, NS 6 is iffy
  }
  else if (BrowserName == BROWSER_FIREFOX)
  {
    return 1;
  }
  else if (BrowserName == BROWSER_OPERA)
  {
    if (BrowserVersion >= 7)
    {
      return 1;
    }
  }
  return 0;  
}

function BrowserSupported()
{
  GetBrowserAndVersion();
  if      (BrowserName == BROWSER_MSIE)
  {
    if (BrowserVersion >= 6)
    {
      return 1;
    }
  }
  else if (BrowserName == BROWSER_NETSCAPE)
  {
    if (BrowserVersion >= 5)
    {
      return 1;
    }
  }
  else if (BrowserName == BROWSER_FIREFOX)
  {
    return 1;
  }
  else if (BrowserName == BROWSER_OPERA)
  {
    if (version >= 7)
    {
      return 1;
    }
  }
  return 0;  
}

function ShowBrowserNotSupported()
{
  alert("This Web site or Web site feature may not appear or work correctly with this Web browser and version. We recommend either:\nInternet Explorer v6.0 or later\nMozilla Firefox v1.0 or later\nOpera v7.0 or later");
}

function ShowBrowserAndVersion()
{
  GetBrowserAndVersion();
  alert("Browser Name=" + BrowserName + "\nBrowser O/S=" + BrowserOS + "\nBrowser Version=" + BrowserVersion);
}  

function GetBrowserAndVersion()
{
  if (BrowserUserAgent)
  {
    return; // already got it
  }
  BrowserUserAgent = navigator.userAgent.toLowerCase();
  var os,browser,version,ix,ch;

  if (GetBrowserIndex('konqueror'))
  {
    browser = BROWSER_KONQUEROR;
    os = BROWSEROS_LINUX;
  }
  else if (GetBrowserIndex('safari'))
  {
    browser = BROWSER_SAFARI;
  }
  else if (GetBrowserIndex('omniweb'))
  {
    browser = BROWSER_OMNIWEB;
  }
  else if (GetBrowserIndex('opera'))
  {
    browser = BROWSER_OPERA;
  }
  else if (GetBrowserIndex('webtv'))
  {
    browser = BROWSER_WEBTV;
  }
  else if (GetBrowserIndex('icab'))
  {
    browser = BROWSER_ICAB;
  }
  else if (GetBrowserIndex('msie'))
  {
    browser = BROWSER_MSIE;
  }
  else if (GetBrowserIndex('netscape6'))
  {
    browser = BROWSER_NETSCAPE6;
  }
  else if (GetBrowserIndex('firefox'))
  {
    browser = BROWSER_FIREFOX;
  }
  else if (!GetBrowserIndex('compatible'))
  {
    browser = BROWSER_NETSCAPE;
	version = BrowserUserAgent.charAt('Mozilla'.length+1);
  }
  else 
  {
    browser = BROWSER_UNKNOWN;
  }

  if (!version) 
  {
    version = BrowserUserAgent.charAt(BrowserStringIndex + BrowserString.length);
    ch = BrowserUserAgent.charAt(BrowserStringIndex + BrowserString.length + 1);
    if ((ch >= '0') && (ch <= '9'))
    {
      version += ch;
    }
  }

  if (!os)
  {
	if (GetBrowserIndex('linux'))
    {
      os = BROWSEROS_LINUX;
    }
	else if (GetBrowserIndex('x11'))
    {
      os = BROWSEROS_UNIX;
    }
	else if (GetBrowserIndex('mac'))
    { 
      os = BROWSEROS_MAC;
    }
	else if (GetBrowserIndex('win'))
    {
      os = BROWSEROS_WINDOWS;
    }
	else 
    {
      os = BROWSEROS_UNKNOWN;
    }
  }
  BrowserName = browser;
  BrowserOS = os;
  BrowserVersion = version;
}

function GetBrowserIndex(string)
{
  BrowserStringIndex = BrowserUserAgent.indexOf(string) + 1;
  BrowserString = string;
  return BrowserStringIndex;
}

function BrowserNeedUpgradeSelect()
{
  GetBrowserAndVersion();
  if ((BrowserName == BROWSER_MSIE) && (parseInt(BrowserVersion) <= 6))
  {
    return true;
  }
  return false;
}

function SetDate()
{
  var today = new Date();
  document.forms[0].Date.value = 
    (today.getMonth() + 1).toString() + "/" +
    (today.getDate()).toString() + "/" +
    (today.getFullYear()).toString();
}

function ProcessSubmitButton()
{
  if (Verify())
  {
    document.forms[0].submit();
  }
}

//function ProcessResetButton()
//{
//  document.forms[0].reset();
//  Setup();
//}

function IsBlank(elem)
{
  var str = elem.value;
  var ix, ch;
  for (ix = 0; ix < str.length; ix++)
  {
    ch = str.charAt(ix);
    if ((ch > ' ') && (ch < '~'))
    {
      return false;
    }
  }
  return true;
}

function VerifyFields() 
{
  var msg = "";
  var email = "";
  var empty_fields = "";
  var ix, elem, form;
  form = document.forms[0];
  for (ix = 0; ix < form.length; ix++)
  {
    elem = form.elements[ix];
    if ((elem.type == "text") || (elem.type == "textarea") || (elem.type == "file") )
    {
      if (AnyHTML(elem.value))  msg = "No HTML allowed.";
    }
    if (!IsFieldRequired(elem.name))
    {
      continue;
    }
    if (elem.name.search(/YourEmail/) >= 0)
    {
      email = elem.value;
    }
    if ((elem.type == "text") || (elem.type == "textarea") || (elem.type == "file") )
    {
      if (!IsBlank(elem))
      {
        continue;
      }
    }
    else
    {
      continue;
    }
    empty_fields += "\n    " + elem.name;
  }
  if (!empty_fields)
  { 
    if ((email.length > 0) && (email.match(/^[\w\-\_\.]+\@[\w\.\-\_]+$/) == null))
    {
      msg = "Email address invalid.";
    }
  }
  else
  {
    msg = "The folowing fields are required:" + empty_fields;
  }
  if (msg.length <= 0)
  {
    return true;
  }
  else
  {
    alert(msg);
    return false;
  }
}

function AnyHTML(str)
{
  str = str.toLowerCase();
  if (str.indexOf("href") > 0) return 1;
  return 0;
}

function IsFieldRequired(field_name)
{
  if (field_name.substr(0,3) == "opt")
  {
    return false;
  }
  else
  {
    return true;
  }
}

function FormatNumber(val, precision, separator) 
{
  var round, tmp, decimals, ix, integers, result;
  if (precision > 0) 
  {
    precision++;
    round = "."; 
    for (var ix = 1; ix < precision; ix++) 
    { 
      round += "0"; 
    } 
    round += "5";
    tmp = eval(val) + eval(round);
    decimals = "" + (tmp - Math.floor(tmp));
    decimals = decimals.substring(2,precision+1);
  }
  else 
  { 
    tmp = Math.round(val); 
  }
  integers = "" + Math.floor(tmp);
  result = integers.substring(integers.length,(integers.length - 1));
  for (ix = 1; ix < integers.length; ix++) 
  {
    if (separator) 
    { 
      if (!(ix % 3)) 
      { 
        result = separator + result; 
      } 
    }
    result = integers.substring((integers.length - ix),(integers.length - ix - 1)) + result;
  }
  if (precision > 0) 
  { 
    result = result + "." + decimals; 
  }
  return result;
}

function IsNotNull(val,msg) 
{
  var errmsg = msg + " can not be zero or blank.";
  if ((val.value == 0) || (val.value.length == 0)) 
  {
    alert(errmsg);
    return false;
  }
  return true;
}

function IsNumeric(val,msg) 
{
  var mask = "1234567890";
  var errmsg = msg + " must contain valid numbers, with no commas or currency indicators.";
  var decpt = false;
  var ix;
  for (ix = 0; ix < val.length; ix++) 
  {
    if ((mask.indexOf(val.charAt(ix)) == -1)) 
    { 
      if (val.charAt(ix) == '.') 
      {
        if (decpt) // already seen decimal point?
        { 
          alert(errmsg); 
          return false; 
        }
        else 
        { 
          decpt = true; // saw first decimal point
        }
      }
      else 
      { 
        alert(errmsg); 
        return false; 
      }
    }
  }
  return true;
}

//function CheckHighLow(val,msg,lowval,highval) 
//{
//  var errmsg = msg + " must be between " + lowval + " and " + highval + ".";
//  if ((val.value < lowval) || (val.value > highval)) 
//  { 
//    alert(errmsg); 
//    return false; 
//  }
//  return true;
//}
/*
function IsIE()
// really is Internet Explorer OR Netscape >= 6
{
  var nVer = navigator.appVersion;
  var nAgt = navigator.userAgent;

  var fullVersion;
  var majorVersion;
  var verOffset;
  
  // In Internet Explorer, the true version is after "MSIE" 

  if ((verOffset=nAgt.indexOf("MSIE")) != -1) 
  {
    fullVersion = parseFloat(nAgt.substring(verOffset+5,nAgt.length));
    majorVersion = parseInt(''+fullVersion);
    return(true);
  }

  // In Opera, the true version is after "Opera"
  else if ((verOffset=nAgt.indexOf("Opera")) != -1) 
  {
   fullVersion = parseFloat(nAgt.substring(verOffset+6,nAgt.length));
   majorVersion = parseInt(''+fullVersion);
   return(false);
  }

  else if ((verOffset=nAgt.indexOf("Netscape6")) != -1) 
  {
    fullVersion = parseFloat(nVer);
    majorVersion = parseInt(nVer);
    return(true);
  }
  
  else // netscape
  {
    fullVersion = parseFloat(nVer);
    majorVersion = parseInt(nVer);
    return(false);
  }
}
*/

function GetQueryString()
// Parse querystring, store the name/value pairs in properties of an object, return that object.
{
  var argname, argvalue, pos, ix;
  var args = new Object();
  var query = location.search.substring(1); 
  var pairs = query.split("&");
  var str = "";
  for (ix = 0; ix < pairs.length; ix++)
  {
    pos = pairs[ix].indexOf('=');
    if (pos < 0)
    {
      continue;
    }
    argname = pairs[ix].substring(0,pos);
    argvalue = (pairs[ix].substring(pos+1)).replace(/\+/g, " ");
    args[argname] = unescape(argvalue);
    str = str + " " + argname + "=" + argvalue;
  }
  return args;
}

function GetMailTo(name)
{
  window.location = "mailto:" + name + "@" + "alleycatsw" + ".com";
}

