// JavaScript Document

function check_necessary( doc )
{
  var field = new Array();
  var number_error = new Array();
  var elements = doc.getElementsByTagName( 'input' );
  for( i = 0; i < elements.length; ++i )
  {
    var elem = elements[i];
    var text = elem.getAttribute( 'gt:necessary' );
    if( ! text )
      continue;
    text = '(' + text +')';
    var attr = eval( text );
    var str = elem.value;
    str = str.trim();
    
    if( attr && attr.necessary == 1 && attr.type == 'file' )
    {
      var f_name = elem.name;
      var del_field = doc.getElementById( 'file_delete['+f_name+']' )
      if( del_field )
      {
        if( del_field.checked )
        {
          if( str.length == 0 )
          {
            field[field.length] = attr.name;
          }
        }
      }
      else
      {
        if( str.length == 0 )
        {
          field[field.length] = attr.name;
        }
      }
    }
    else if( attr && attr.necessary == 1 )
    {
      if( str.length == 0 )
      {
        field[field.length] = attr.name;
      }
      if( attr.type == 'number' )
      {
        if( isNaN( str ) )
          number_error[number_error.length] = attr.name;
      }
    }
    else if( attr && attr.necessary == 0 && attr.type == 'number' )
    {
      if( isNaN( str ) )
        number_error[number_error.length] = attr.name;
    }
  }

  var fields = __check_field( doc.getElementsByTagName( 'textarea' ) );
  if( fields.length > 0 )
    field = field.concat( fields );
  fields = __check_field( doc.getElementsByTagName( 'file' ) );
  if( fields.length > 0 )
    field = field.concat( fields );

  msg = ''
  if( field.length > 0 )
  {
    msg += "以下の必須項目が入力されていません。\r\n";
    for( i = 0; i < field.length ; ++ i )
    {
      msg += '　『' + field[i] + "』\r\n"; 
    }
    
  }
  if( number_error.length > 0 )
  {
    msg += "以下の項目に数値以外が入力されています。\r\n";
    for( i = 0; i < number_error.length ; ++ i )
    {
      msg += '　『' + number_error[i] + "』\r\n"; 
    }
  }
  
  if( msg.length > 0 )
  {
    alert( msg );
    return false;
  }
  return true;
}

function __check_field( elements )
{
  var fields = new Array();
  for( i = 0; i < elements.length; ++i )
  {
    var elem = elements[i];
    var text = elem.getAttribute( 'gt:necessary' );
    if( ! text )
      continue;
    text = '(' + text +')';
    var attr = eval( text );
    if( attr && attr.necessary == 1 )
    {
      var str = elem.value;
      str = str.trim();
      if( str.length == 0 )
      {
        fields[fields.length] = attr.name;
      }
    }
  }
  return fields;
}

String.prototype.trim = function()
{
  return this.replace(/^(\s|\r|\n)+|(\s|\r|\n)+$/g, '');
}


