var new_fieldname = ""

function check(form,x)
{
  //If you would like to use this script please do not remove the next 4 lines
  //R - Required
  //I - Integer Only
  //D - Date Only
  //E - Email Only
  //P - Post Date Only - added by James Witika
  //O - Optional Field - added by James Witika

  var message = ""
  var more_message = ""
  var showmsg = "no"

  x = x - 1
  for (var i = 0; i <= x; i++)
  {
    var messenger = form.elements[i].name
    messenger = messenger.substring(0, 2)
    var fieldname = form.elements[i].name
    fieldname = fieldname.substring(2)

    {
      if (messenger == "r_")
      {
        more_message = r_check(form,x,fieldname,i)
      }
      else if (messenger == "i_")
      {
        more_message = i_check(form,x,fieldname,i)
      }
      else if (messenger == "d_")
      {
        more_message = d_check(form,x,fieldname,i)
      }
      else if (messenger == "e_")
      {
        more_message = e_check(form,x,fieldname,i)
      }
      else if (messenger == "p_")
      {
        more_message = p_check(form,x,fieldname,i)
      }
      if (more_message != "")
      {
        if (message == "")
        {
          message = more_message
          more_message=""
        }
        else
        {
          message = message + "\n" + more_message
          more_message=""
        }
      }
      if (message > "")
      {
        showmsg = "yes"
      }													
    }	
  }
	
  //This code will prevent a submit if data is incorrect
  if (showmsg == "yes")
  {
    alert("The following form field(s) were incomplete or incorrect:\n\n" + message + "\n\n Please complete or correct the form and submit again.")
  }
  else
  {
    form.submit()
  }
			
}	


function r_check(form,x,fieldname,i)
{
  var msg_addition = ""
  new_fieldname = fieldname

  var opt_validated = "N"
  opt_validated = is_optional(form,x,fieldname)

  if (opt_validated == "Y")
  {
    for (var y = 0; y <= x; y++)
    {
      if ((form.elements[y].type == "radio" || form.elements[y].type == "checkbox") && form.elements[y].name == new_fieldname && form.elements[y].checked == true)
      {
        msg_addition = ""
        break
      }
      else if ((form.elements[y].type == "radio" || form.elements[y].type == "checkbox") && form.elements[y].name == new_fieldname && form.elements[y].checked == false)
      {
        msg_addition = form.elements[i].value
      }
      else if (form.elements[y].type == "select-one")
      {
        var l = form.elements[y].selectedIndex
        if (form.elements[y].name == fieldname && form.elements[y].options[l].value != "")
        {
          msg_addition = ""
          break
        }
        else if (form.elements[y].name == fieldname && form.elements[y].options[l].value == "")
        {
          msg_addition = form.elements[i].value
        }
      }
      else if (form.elements[y].name == fieldname && form.elements[y].value == "" && form.elements[y].type != "radio" && form.elements[y].type != "checkbox" && form.elements[y].type != "select-one")
      {
        msg_addition = form.elements[i].value
        break
      }
      else if (form.elements[y].name == fieldname && form.elements[y].value != "" && form.elements[y].type != "radio" && form.elements[y].type != "checkbox" && form.elements[y].type != "select-one")
      {
        msg_addition = ""
      }	
    }
  }
  return(msg_addition)
}
			
			
function i_check(form,x,fieldname,i)
{

  for (var y = 0; y <= x; y++)
  {
    if (form.elements[y].name == fieldname)
    break
  }						

  var msg_addition = ""
  var decimal = ""
  inputStr = form.elements[y].value.toString()

  var opt_validated = "N"
  opt_validated = is_optional(form,x,fieldname)

  if (opt_validated == "Y")
  {
    if (inputStr == "")
    {
      //msg_addition = form.elements[i].value
    }
    else
    {
      for (var c = 0; c < inputStr.length; c++)
      {
        var oneChar = inputStr.charAt(c)
        if (c == 0 && oneChar == "-" || oneChar == "."  && decimal == "")
        {
          if (oneChar == ".")
          {
            decimal = "yes"
          }
          continue
        }
        if (oneChar < "0" || oneChar > "9")
        {
          msg_addition = form.elements[i].value
        }
      }
    }
  }
  return(msg_addition)
}	
	
	
//Email validation added 6/20/98
function e_check(form,x,fieldname,i)
{
  for (var y = 0; y <= x; y++)
  {
    if (form.elements[y].name == fieldname)
    break
  }						
	
  var msg_addition = ""
  period = ".";

  var opt_validated = "N"
  opt_validated = is_optional(form,x,fieldname)

  if (opt_validated == "Y")
  {

    if (form.elements[y].value == "" || form.elements[y].value.indexOf ('@', 0) < 2)
      error = 1;
    else
    {
      test = form.elements[y].value.indexOf('.', form.elements[y].value.indexOf ('@', 0))
      if (test != -1)
      {
        error = 0;
      }
      else
      {
        error=1;
      }
    }
    if (error == 1)
    {
      msg_addition = form.elements[i].value
    }
    else
    {
      new_length = form.elements[y].value.length - test
      if (new_length == 4 || new_length == 3 || (new_length >= 5 && form.elements[y].value.indexOf ('.', (test+1)) != -1))
      {
        msg_addition = ""
      }
      else
        msg_addition = form.elements[i].value;
    }
  }
  return(msg_addition)
}	

function d_check(form,x,fieldname,i)
{

  // Gather the form field who's value is being validated
  for (var y = 0; y <= x; y++)
  {
    if (form.elements[y].name == fieldname)
      break
  }

  var msg_addition = ""	

  var opt_validated = "N"
  opt_validated = is_optional(form,x,fieldname)

  if (opt_validated == "Y")
  {

    var int_or_not = isInteger(form.elements[y].value)
    if (int_or_not == "true")
    {
      var sdate = form.elements[y].value

      if ( isValidDate(sdate, '/') == 0 )
      {
        msg_addition = form.elements[i].value
      }
    }
    else
    {
      msg_addition = form.elements[i].value
    }
  }
  return(msg_addition)
}

function p_check(form,x,fieldname,i)
{

  // Get the form element which stores the postdate
  for (var y = 0; y <= x; y++)
  {
    if (form.elements[y].name == fieldname)
    {
      break
    }
  }

  // Get the form element which stores todays date
  for (var z = 0; z <= x; z++)
  {
    if (form.elements[z].name == 'now')
      break
  }

  var reason = "";
  var msg_addition = "";

  var opt_validated = "N"
  opt_validated = is_optional(form,x,fieldname)

  if (opt_validated == "Y")
  {

    var int_or_not = isInteger(form.elements[y].value)

    if (int_or_not == "true")
    {
      var postdate = form.elements[y].value
      var today = form.elements[z].value
      var validDateResult = isValidDate(postdate, '/');

      if ( validDateResult == 1 )
      {
        DP = DatePosition(postdate, today);
        if ( DP == -1 )
        {
          msg_addition = form.elements[i].value + "\n - Due Date has already expired"
        }
      }
      else if ( validDateResult == 0 )
      {
        msg_addition = form.elements[i].value
      }
      else
      {
        msg_addition = form.elements[i].value + "\n> Only accepts full dates. eg. 21/10/2001"
      }
    }
    else
    {
      msg_addition = form.elements[i].value + reason
    }
  }

  return(msg_addition)
}

function isValidDate (myDate,sep)
{
// checks if date passed is in valid dd/mm/yyyy format
    if (myDate.length == 10)
    {
        if (myDate.substring(2,3) == sep && myDate.substring(5,6) == sep)
        {
            var date  = myDate.substring(0,2);
            var month = myDate.substring(3,5);
            var year  = myDate.substring(6,10);

            var test = new Date(year,month-1,date);

            if (year == y2k(test.getYear()) && (month-1 == test.getMonth()) && (date == test.getDate()))
            {
                return 1;
            }
            else 
            {
                return 0;
            }
        }
        else
        {
            return 2;
        }
    }
    else
    {
        return 2;
    }
}

function DatePosition(dateString,nowString) {

    var date2 = new Date(dateString.substring(6,10),
                         dateString.substring(3,5)-1,
                         dateString.substring(0,2));

    var daten  = nowString.substring(12,14);
    var monthn = nowString.substring(9,11);
    var yearn  = nowString.substring(4,8);

    var nowDate = new Date(yearn, monthn-1, daten);

    if (date2 < nowDate)
    {
        return -1;
    }
    else if (date2 > nowDate)
    {
        return 1;
        
    }
    else
    {
        return 0;
    }
}


function isInteger(sDate)
{
  var new_msg = "true"
  inputStr = sDate.toString()
  for (var i = 0; i < inputStr.length; i++)
  {
    var oneChar = inputStr.charAt(i)			
    if ((oneChar < "0" || oneChar > "9") && oneChar != "/")
    {
      new_msg = "false"
    }
  }
  return (new_msg)
}

	
function doall(script_name, copyright, email)
{
  var code = 0
  var test = script_name + copyright + email
  for (var a = 0; a < test.length; a++)
  {
    var each_char = test.charAt(a)
    var x = asc(each_char)
    code += x
  }
  return (code)
}

	
function asc(each_char)
{
  var n = 0
  var char_str = charSetStr()
  for (i = 0; i < char_str.length; i++)
  {
    if (each_char == char_str.substring(i, i+1))
    {
      break
    }
  }
  return i + 32
}

		
function charSetStr()
{
  var str
  str = ' !"#$%&' + "'" + '()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'
  return str
}



// Added postdate validation functionality to check Australian Dates, and Postdates
function y2k(number) 
{
  return (number < 1000) ? number + 1900 : number;
}

function is_optional(form,x,fieldname)
{
  var optional_field_found = "N"
  var optional_validated = "Y"

  // Checks whether the form field has an Optional Validation
  for (var j = 0; j <= x; j++)
  {
    var optmessenger = form.elements[j].name
    optmessenger = optmessenger.substring(0, 2)
    var optfieldname = form.elements[j].name
    optfieldname = optfieldname.substring(2)

    if (optmessenger == "o_" && optfieldname == fieldname)
    {
      var optional_field_found = "Y"      
      var optional_fieldname = form.elements[j].value
      break
    }
  }

  if (optional_field_found == "Y")
  {

    optional_validated = "N"

    // Check to see if the optional field exists and if it has been ticked
    for (var k = 0; k <= x; k++)
    {
      if (form.elements[k].name == optional_fieldname)
      {
        if (form.elements[k].checked == true)
        {
          var optional_validated = "Y"      
        }
        break
      }
    }						
  }
  return (optional_validated)
}


