// For example usage see Sri_Lanka/law/law_service_form_process.jsp

var kapruka_input_fields_to_check = new Array(); // Gloval var used to stack validating fields of a form

function input_field_object(input_field,test_type)
    {
    this.input_field = input_field;
    this.test_type = test_type;
    }

function add_to_check_list(input_field,test_type)
{
var object = new input_field_object();

object.input_field = input_field;
object.test_type = test_type;
kapruka_input_fields_to_check.push(object);
}

function kapruka_validate_input_fields()
{
result = true;
var first_error_field;
for (i=0;i<kapruka_input_fields_to_check.length;i++)
    {
     input_field_object = kapruka_input_fields_to_check[i];     
     
     // Required check
     if (input_field_object.test_type=="required") 
         {          
          input_field_element = document.getElementsByName(input_field_object.input_field.name)[0];
          if (input_field_element.value.length < 1) 
              {
              if (result==true) first_error_field = input_field_element;
              result = false;
              input_field_element.className = 'text_field_error';              
              }
          else
              {
              input_field_element.className = 'text_field_normal';
              }
         }

     // Email check
     else if (input_field_object.test_type=="email") 
         {          
          input_field_element = document.getElementsByName(input_field_object.input_field.name)[0];
          if (!is_valid_email(input_field_element.value)) 
              {
              if (result==true) first_error_field = input_field_element;
              result = false;
              input_field_element.className = 'text_field_error';              
              }
          else
              {
              input_field_element.className = 'text_field_normal';
              }
         }

    }

if (result==false) 
   {
    first_error_field.focus();
    alert ("The details you entered are NOT complete.\n\n See highlighted fields and correct them\n\n");
   }
return result;
}

function is_valid_email(str) 
{
var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
if (filter.test(str))
return true
else return false;
}


function isValidEmail(email, required) 
{
    if (required==undefined)
    {   // if not specified, assume it's required
        required=true;
    }
    if (email==null)
    {
        if (required)
        {
            return false;
        }
        return true;
    }
    if (email.length==0)
    {
        if (required)
        {
            return false;
        }
        return true;
    }
    if (! allValidChars(email))
    {  // check to make sure all characters are valid
        return false;
    }
    if (email.indexOf("@") < 1)
    { //  must contain @, and it must not be the first character
        return false;
    } else if (email.lastIndexOf(".") <= email.indexOf("@"))
    {  // last dot must be after the @
        return false;
    } else if (email.indexOf("@") == email.length)
    {  // @ must not be the last character
        return false;
    } else if (email.indexOf("..") >=0)
    { // two periods in a row is not valid
        return false;
    } else if (email.indexOf(".") == email.length)
    {  // . must not be the last character
        return false;
    }
    return true;
}

function allValidChars(email) 
{
    var parsed = true;
    var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
    for (var i=0; i < email.length; i++)
    {
        var letter = email.charAt(i).toLowerCase();
        if (validchars.indexOf(letter) != -1)
            continue;
        parsed = false;
        break;
    }
    return parsed;
}

