var Lng_CHFORM01 = "date must be greater than";
var Lng_CHFORM02 = "date";
var Lng_CHFORM03 = "The field";
var Lng_CHFORM04 = "must be a number";
var Lng_CHFORM05 = "that is greater than";
var Lng_CHFORM06 = "that is less than";
var Lng_CHFORM07 = "The form was not submited due to the following error(s)";
var Lng_CHFORM08 = "The following fields must be entered:";
var Lng_CHFORM09 = "The 2 password fields do not match";
var Lng_CHFORM10 = "Password must be at least 6 characters long";
var Lng_CHFORM11 = "The form was not submited due to the following error(s)";
var Lng_CHFORM12 = "Email address seems incorrect (check @ and .'s)";
var Lng_CHFORM13 = "The username doesn't seem to be valid.";
var Lng_CHFORM14 = "Destination IP address is invalid!";
var Lng_CHFORM15 = "The domain name doesn't seem to be valid.";
var Lng_CHFORM16 = "The address must end in a three-letter domain, or two letter country.";
var Lng_CHFORM17 = "This address is missing a hostname!";
var Lng_CHFORM18 = "Email addresses are not matching!";

//{LNG_VARS}
// redifinition of language-specific variables

var submitFlag = false;
function submitForm(button, frm)
{   
    if (!submitFlag) {
        submitFlag = true;
        frm.command.value = button.name;
        frm.submit();
        submitFlag = false;
    }

}

function submitFormA(cmd, frm)
{
    if (!submitFlag)
    {
       submitFlag = true;
       document.body.style.cursor = "wait";
       frm.command.value = cmd;
       frm.submit();
       submitFlag = false;
    }
}

function checkForm(form)
{
    var emptyFields = "";
    var errors      = "";
    var elem;

    for (var i = 0; i < form.length; i++)
    {
        elem = form.elements[i];

        if (elem.date != null)
        {
              if (elem.value > elem.date.value)
              {
                  errors += "- " + elem.text1 + " " + Lng_CHFORM01 + " " + elem.text2 + " " + Lng_CHFORM02 + "\n";
              }

              continue;
        }

        if ((elem.type == "text" || elem.type == "textarea") && elem.required)
        {
            if (elem.value == null || elem.value == "" || isBlank(elem.value))
            {
                emptyFields += "          " + elem.text + "\n";
                continue;
            }
        }

        if (elem.required || (!elem.required && elem.value != ""))
        {
            if ((String(elem.numeric) != "undefined" && elem.numeric)
                || (String(elem.min) != "" && elem.min != null) 
                || (String(elem.max) != "" && elem.max != null)) 
            {

                n = parseFloat(elem.value);
                if  (isNaN(n)
                     || (String(elem.min) != "" && elem.min != null && (n < elem.min))
                     || (String(elem.max) != "" && elem.max != null && (n > elem.max))) 
                {

                    errors += "- " + Lng_CHFORM03 + " '" + elem.text + "' " + Lng_CHFORM04;
                    if ((elem.min != null) && (n < elem.min))
                    {
                        errors += " " + Lng_CHFORM05 + " " + (elem.min - 1);
                    }
                    else if ((elem.max != null) && (n > elem.max))
                    {
                        errors += " " + Lng_CHFORM06 + " " + (elem.max + 1);
                    }
                    errors += "\n";
                }
                else
                {
                    elem.value = n;
                }
            }
        }
    }

    if (emptyFields == "" && errors == "")
    {
        return true;
    }
    else
    {
        msg = Lng_CHFORM07 + "\n";
        if (emptyFields != "")
        {
            msg += "\n- " + Lng_CHFORM08 + "\n" + emptyFields;
        }

        if (errors != "")
        {
            msg += "\n" + errors;
        }
        alert(msg);
        return false;
    }
}

function checkPasswords(password, confirm_password)
{
    var errors = "";
    if (password.value != confirm_password.value){
        errors += "- " + Lng_CHFORM09 + "\n";
    }
    if (password.value.length < 6) {
        errors += "- " + Lng_CHFORM10 + "\n";
    }
    if (errors != "") {
        var msg = Lng_CHFORM11 + "\n" + errors;
        alert(msg);
        return false;
    }
    return true;

}

function isBlank(s)
{
  // Returns true if string contains only whitespace
  var i;
  var c;

  for (i = 0; i < s.length; i++) {
    c = s.charAt(i);
    if (c != ' ' && c != '\n' && c != '\t')
      return false;
  }
  return true;
}


function emailCheck (emailStr, confirmEmail)
{
    confirmEmail = confirmEmail || false;
    var emailPat=/^(.+)@(.+)$/;
    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
    var validChars="\[^\\s" + specialChars + "\]";
    var quotedUser="(\"[^\"]*\")";
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
    var atom=validChars + '+';
    var word="(" + atom + "|" + quotedUser + ")";
    // The following pattern describes the structure of the user
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
    var matchArray=emailStr.match(emailPat);
    if (matchArray==null)
    {
        alert(Lng_CHFORM12);
        return false;
    }
    var user=matchArray[1];
    var domain=matchArray[2];
    if (user.match(userPat)==null)
    {
    // user is not valid
        alert(Lng_CHFORM13);
        return false;
    }
    var IPArray=domain.match(ipDomainPat)
    if (IPArray!=null)
    {
    // this is an IP address
        for (var i=1;i<=4;i++)
        {
            if (IPArray[i]>255)
            {
                alert(Lng_CHFORM14);
                return false;
            }
        }
        return true;
    }
    var domainArray=domain.match(domainPat);
    if (domainArray==null)
    {
        alert(Lng_CHFORM15);
        return false;
    }
    var atomPat=new RegExp(atom,"g");
    var domArr=domain.match(atomPat);
    var len=domArr.length;
    if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>4)
    {
        alert(Lng_CHFORM16);
        return false;
    }
    if (len<2)
    {
        var errStr=Lng_CHFORM17;
        alert(errStr);
        return false;
    }
    if (confirmEmail && (emailStr != confirmEmail))
    {
        var errStr=Lng_CHFORM18;
        alert(errStr);
        return false;
    }
    return true;
}


function formatNum(num, prec)
{
    var k = Math.pow(10, prec);
    var intPart   = Math.floor(num);
    var fractPart = num - intPart + 1;
    var rounded   = String(Math.round(fractPart * k) / k);
    var s = rounded.substr(2);
    while (s.length < prec) {
        s += "0";
    }
    return intPart + "." + s;
}

function ltrim(str)
{
  return str.replace(/^\s+/, '');
}

function rtrim(str)
{
  return str.replace(/\s+$/, '');
}

function trim(str)
{
  return rtrim(ltrim(str));
}