//Validation functions for input on forms in custom developed modules

var emptyErr = "You must fill out this field. ";
var emailErr = "This is not a valid email.";

function NotEmpty(obj, id)
{ 
  var err = document.getElementById(id);
  if(obj.value == "")
  {
    err.innerHTML = emptyErr;
    err.style.display = 'block';
    return false;
  }
  else
  { 
    err.innerHTML = "";
    err.style.display = 'none';
    return true;
  }    
}
//Checks if an email is a valid email
function IsEmail(obj,id)
{
    var str= obj.value;
    var err = document.getElementById(id);
    var filter= /^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
    var testResult = filter.test(str);
    if(!testResult)
    {
      err.innerHTML = emailErr;
      err.style.display = 'block';
      obj.focus();
      return false;
    }
    else
    {
        testResult = UseEmail(obj);
        err.innerHTML = "";
        err.style.display = 'none';
        return true;
    }  
}


function LTrim(str)
{
	var whitespace= new String(" \t\n\r");
	var s= new String(str);

	if (whitespace.indexOf(s.charAt(0)) != -1)
	{
		// We have a string with leading blank(s)...

		var j= 0, i= s.length;

		// Iterate from the far left of string until we
		// don't have any more whitespace...
		while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
			j++;

		// Get the substring from the first non-whitespace
		// character to the end of the string...
		s= s.substring(j, i);
	}
	return s;
}
/*
		PURPOSE: Remove trailing blanks from our string.
		IN: str - the string we want to RTrim or LTrim

*/
function RTrim(str)
{
	// We don't want to trip JUST spaces, but also tabs,
	// line feeds, etc.  Add anything else you want to
	// "trim" here in Whitespace
	var whitespace= new String(" \t\n\r");

	var s= new String(str);

	if (whitespace.indexOf(s.charAt(s.length-1)) != -1)
	{
		// We have a string with trailing blank(s)...

		var i= s.length - 1;	   // Get length of string

		// Iterate from the far right of string until we
		// don't have any more whitespace...
		while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
			i--;

		// Get the substring from the front of the string to
		// where the last non-whitespace character is...
		s= s.substring(0, i+1);
	}
	return s;
}


function Trim(str)
{
  return RTrim(LTrim(str));
}

//Checks if a phone, mobile or fax number is a valid number
function IsPhone(input)
{
    var str = input.value;
    var err = document.getElementById(input.id + '_err');
    var filter = /^[(+0-9.-]+[ ()0-9.-]+[ 0-9]$/i;
    if(!filter.test(str))
    {
        err.innerHTML = "This is not a valid " + input.id.toLowerCase() + "number";
        input.focus();
        return false;
    }
    else
    {
        err.innerHTML = "";
        return true;
    }    
}


//Checks if an email is on the "not allowed" list and ask user if they want to use the email anyway.
function UseEmail(input)
{
    var index = input.value.indexOf("@");
    var domain = input.value.substring(index+1).toLowerCase();
    var i = 0;
    var useEmail = true;
    var confirmBox;
    while(i<notAllowed.length)
    {
        if(domain == notAllowed[i])
        {
            confirmBox = confirm(notAllowedTxt);
            if (confirmBox != true)
            {
                input.value = "";
                input.focus();
                useEmail = false;
            }
            break;
        }
        i++;
    }
    return useEmail;
}

//Checks if to inputs are identical
function IsIdentical(input1,input2)
{
    var err = document.getElementById(input1.id + '_err');
    if(input1.value == input2.value)
    {
        err.innerHTML = "";
        err.style.display = 'none';
        return true;
    }
    else
    {
        err.innerHTML = "Password and retyped password must be identical";
        err.style.display = 'block';
        input1.value = "";
        input2.value = "";
        input1.focus();
        return false;
    }
}


function ValidateForgotPassword(id)
{
    var oForm = document.getElementById(id);
    var valid = true;
    valid = NotEmpty(document.getElementById('username'), 'username_err');
    if(valid)
    {
      valid = NotEmpty(document.getElementById('email'), 'email_err');
    }
    else
      return false;
      
    if(valid)
    {
      valid = IsEmail(document.getElementById('email'), 'email_err');
    }
    else
      return false;

    if(valid)
    {
      oForm.submit();
    }
}

function validateUser(id)
{
   var oForm = document.getElementById(id);
    var aValid = new Array();
    var valid = true;
    var formElements = oForm.elements;
    for(var i = 0; i < formElements.length; i++)
    { 
        aValid[i] = true;
        if(formElements[i].type == "text" && formElements[i].id != "jobtitle" && formElements[i].id != "mobile" && formElements[i].id != "fax" && formElements[i].id != "comment" && formElements[i].id != "other_printertypes")
        { 
            aValid[i] = NotEmpty(formElements[i], formElements[i].id + '_err');
            if(aValid[i] && formElements[i].id == "email")
            {
                aValid[i] = IsEmail(formElements[i], 'email_err');
                if(aValid[i])
                {
                    aValid[i] = UseEmail(formElements[i]);
                }
            }
            else if(aValid[i] && (formElements[i].id == "phone" || formElements[i].id == "mobile" || formElements[i].id == "fax"))
            {
                aValid[i] = IsPhone(formElements[i]);
            }
        }
        if(aValid[i] && formElements[i].type == "select-one" && formElements[i].id != "role")
        {
            aValid[i] = NotEmpty(formElements[i], formElements[i].id +'_err');
        }
    }
    for(var i = 0; i < aValid.length; i++)
    {
        if(aValid[i] == false)
            valid = false;
    }
    if(valid)
    {
        valid = IsIdentical(document.getElementById("password"), document.getElementById("password2"));
    }
    if(valid)
	{ 
	    oForm.submit();
	    return true;
    }
    else
    {
        return false;
    }
}



//Checks if all obligatory information has been filled in
function validateInput(id) //(oForm)
{
    var oForm = document.getElementById(id);
    var aValid = new Array();
    var valid = true;
    var formElements = oForm.elements;
    for(var i = 0; i < formElements.length; i++)
    {
        aValid[i] = true;
        if(formElements[i].type == "text" && formElements[i].id != "Address2" && formElements[i].id != "Fax" && formElements[i].id != "hidden" && formElements[i].id != "Comment")
        {
            aValid[i] = NotEmpty(formElements[i]);
            if(aValid[i] && formElements[i].id == "Email")
            {
                aValid[i] = IsEmail(formElements[i]);
                if(aValid[i])
                {
                    aValid[i] = UseEmail(formElements[i]);
                }
            }
            else if(aValid[i] && (formElements[i].id == "Phone" || formElements[i].id == "Mobile" || formElements[i].id == "Fax"))
            {
                aValid[i] = IsPhone(formElements[i]);
            }
        }
        if(aValid[i] && formElements[i].type == "select-one" && formElements[i].id != "Role")
        {
            aValid[i] = NotEmpty(formElements[i]);
        }
    }
    for(var i = 0; i < aValid.length; i++)
    {
        if(aValid[i] == false)
            valid = false;
    }
    if(valid)
    {
        valid = IsIdentical(document.getElementById("Password1"), document.getElementById("Password2"));
    }
    if(valid)
	{ 
	    oForm.submit();
	    return true;
    }
    else
    {
        return false;
    }
}

//Validate the payment form
function Payment_Form_Validator(theForm)
{
  if (theForm.cust_name.value == "")
  {
    var err = document.getElementById('cust_name_err');
    err.innerHTML = "Please enter a value for the \"Customer name\" field.";
    err.style.display = 'block';
    theForm.cust_name.focus();
    return (false);
  }
  else if (theForm.cust_name.value.length < 4)
  {
    var err = document.getElementById('cust_name_err');
    err.innerHTML = "Please enter at least 4 characters in the \"Customer name\" field.";
    err.style.display = 'block';
    theForm.cust_name.focus();
    return (false);
  }
  else
  {
    var err = document.getElementById('cust_name_err');
    err.style.display = 'none';
  }

  if (theForm.cust_street.value == "")
  {
    var err = document.getElementById('cust_street_err');
    err.innerHTML = "Please enter a value for the \"Company name\" field.";
    err.style.display = 'block';
    theForm.cust_street.focus();
    return (false);
  }
  else if (theForm.cust_street.value.length < 4)
  {
  var err = document.getElementById('cust_street_err');
  err.innerHTML = "Please enter at least 4 characters in the \"Company name\" field.";
  err.style.display = 'block';
    theForm.cust_street.focus();
    return (false);
  }
  else 
  {
  var err = document.getElementById('cust_street_err');
  err.style.display = 'none';
  }
    var filter= /^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
    var testResult = filter.test(theForm.cust_email.value);
  if (theForm.cust_email.value == "")
  {
  var err = document.getElementById('cust_email_err');
  err.innerHTML = "Please enter a value for the \"E-mail\" field.";
  err.style.display = 'block';
    theForm.cust_email.focus();
    return (false);
  }
  else if (!testResult)
  {
    var err = document.getElementById('cust_email_err');
    err.innerHTML = "Please enter a valid e-mail.";
    err.style.display = 'block';
    theForm.cust_email.focus();
    return (false);
  }
  else
  {
  var err = document.getElementById('cust_email_err');
  err.style.display = 'none';
  }

var checkOK = "0123456789-.";
  var checkStr = theForm.amount.value;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    if (ch == ".")
    {
      allNum += ".";
      decPoints++;
    }
    else
      allNum += ch;
  }
  
  if (theForm.amount.value == "")
  {
  var err = document.getElementById('amount_err');
    err.innerHTML = "Please enter a value for the \"Amount\" field.";
    err.style.display = 'block';
    theForm.amount.focus();
    return (false);
  }
  else if (theForm.amount.value.length < 2)
  {
    var err = document.getElementById('amount_err');
    err.innerHTML = "Please enter at least 2 characters in the \"Amount\" field.";
    err.style.display = 'block';
    theForm.amount.focus();
    return (false);
  }
  else if (!allValid)
  {
    var err = document.getElementById('amount_err');
    err.innerHTML = "Please enter only digit characters in the \"Amount\" field.";
    err.style.display = 'block';
    theForm.amount.focus();
    return (false);
  }
  else if (decPoints > 1)
  {
    var err = document.getElementById('amount_err');
    err.innerHTML = "Please enter a valid number in the \"Amount\" field.";
    err.style.display = 'block';
    theForm.amount.focus();
    return (false);
  }
  else 
  {
  var err = document.getElementById('amount_err');
  err.style.display = 'none';
  }

  if (theForm.sessionid.value == "")
  {
    var err = document.getElementById('sessionid_err');
    err.innerHTML = "Please enter a value for the \"Order/Invoice\" field.";
    err.style.display = 'block';
    theForm.sessionid.focus();
    return (false);
  }
  else if (theForm.sessionid.value.length < 3)
  {
    var err = document.getElementById('sessionid_err');
    err.innerHTML = "Please enter at least 3 characters in the \"Order/Invoice\" field.";
    err.style.display = 'block';
    theForm.sessionid.focus();
    return (false);
  }
  else
  {
  var err = document.getElementById('sessionid_err');
  err.style.display = 'none';
  }

  if (theForm.cardnum.value == "")
  {
    var err = document.getElementById('cardnum_err');
    err.innerHTML = "Please enter a value for the \"Card number\" field.";
    err.style.display = 'block';
    theForm.cardnum.focus();
    return (false);
  }
  else if (theForm.cardnum.value.length < 8)
  {
    var err = document.getElementById('cardnum_err');
    err.innerHTML = "Please enter at least 8 characters in the \"Card number\" field.";
    err.style.display = 'block';
    theForm.cardnum.focus();
    return (false);
  }
  else if (theForm.cardnum.value.length > 30)
  {
    var err = document.getElementById('cardnum_err');
    err.innerHTML = "Please enter at most 30 characters in the \"Card number\" field.";
    err.style.display = 'block';
    theForm.cardnum.focus();
    return (false);
  }
  else
  {
  var err = document.getElementById('cardnum_err');
  err.style.display = 'none';
  }

  if (theForm.emonth.selectedIndex < 0)
  {
    var err = document.getElementById('emonth_err');
    err.innerHTML = "Please select one of the \"Expiry month\" options.";
    err.style.display = 'block';
    theForm.emonth.focus();
    return (false);
  }
  else
  {
  var err = document.getElementById('emonth_err');
  err.style.display = 'none';
  }

  if (theForm.eyear.selectedIndex < 0)
  {
    var err = document.getElementById('eyear_err');
    err.innerHTML = "Please select one of the \"Expiry year\" options.";
    err.style.display = 'block';
    theForm.eyear.focus();
    return (false);
  }
  else
  {
  var err = document.getElementById('eyear_err');
  err.style.display = 'none';
  }

  if (theForm.cvc.value == "")
  {
    var err = document.getElementById('cvc_err');
    err.innerHTML = "Please enter a value for the \"Security code\" field.";
    err.style.display = 'block';
    theForm.cvc.focus();
    return (false);
  }
  else if (theForm.cvc.value.length < 3)
  {
    var err = document.getElementById('cvc_err');
    err.innerHTML = "Please enter at least 3 characters in the \"Security code\" field.";
    err.style.display = 'block';
    theForm.cvc.focus();
    return (false);
  }
  else
  {
  var err = document.getElementById('cvc_err');
  err.style.display = 'none';
  }
  
  if (theForm.currency.selectedIndex < 0)
  {
    var err = document.getElementById('currency_err');
    err.innerHTML = "Please select one of the \"Currency\" options.";
    err.style.display = 'block';
    theForm.currency.focus();
    return (false);
  }
  else
  {
  var err = document.getElementById('currency_err');
  err.style.display = 'none';
  }
  
  if (theForm.currency.value == "208")
  {
    theForm.shopid.value = "SafeCom";
  }
  else if (theForm.currency.value == "036")
  {
    theForm.shopid.value = "SafeCom_aud";
  }
  else if (theForm.currency.value == "978")
  {
    theForm.shopid.value = "SafeCom_eur";
  }
  else if (theForm.currency.value == "826")
  {
    theForm.shopid.value = "SafeCom_gbp";
  } 
  else if (theForm.currency.value == "840")
  {
    theForm.shopid.value = "SafeCom_usd"
   } 
return (true);
}