/**
 * バイト数をチェックします。（半角桁数）
 */

function checkByteSize(name, tani, element, min, max)
{
   var byteNumber = byte(element.value);
   if(byteNumber != 0 &&(byteNumber < min || max < byteNumber))
   {
      if(min == max)
      {
         alert(name + "は" + min + tani + "で入力してください。");
      }
      else if ( min == 0 )
      {
          alert(name + "は" + max + tani + "以内で入力してください。");
      
      }	
      else
      {
         alert(name + "は" + min + tani + "から" + max + tani + "で入力してください。");
      }
      element.focus();
      return false;
   }
   return true;
}

/**
 * バイト数をチェックします。（全角桁数）
 */

function checkByteSizeForZenkaku(name, tani, element, min, max)
{
   var byteNumber =  new Number( byte(element.value) ) / new Number( 2 );
   Math.ceil( byteNumber );
   if(byteNumber != 0 &&(byteNumber < min || max < byteNumber))
   {
      if(min == max)
      {
         alert(name + "は全角" + min + tani + "で入力してください。");
      }
      else if ( min == 0 )
      {
          alert(name + "は全角" + max + tani + "以内で入力してください。");
      
      }	
      else
      {
         alert(name + "は全角" + min + tani + "から全角" + max + tani + "で入力してください。");
      }
      element.focus();
      return false;
   }
   return true;
}

/**
 * 半角数字をチェックします。
 */

function checkNumber(name, element)
{
   if(!element.value.match(/^\d*$/))
   {
      alert(name + "は半角数字で入力してください。");
      element.focus();
      return false;
   }
   return true;
}
/**
 * ２桁以上で、１文字目が０の場合アラートを出す。
 */

function checkNotFirstZero(name, element)
{
   if(element.value.match(/^0(\d)+/))
   {
      alert(name + "を正しく入力してください。");
      element.focus();
      return false;
   }
   return true;
}
/**
 * 日付をチェックします。
 */

function checkDate(name, element)
{
   if(!checkByteSize(name, "桁", element, 8, 8))
   {
      element.focus();
      return false;
   }
   if(!checkNumber(name, element))
   {
      element.focus();
      return false;
   }
   element.value.match(/^(\d{4})(\d{2})(\d{2})$/);
   var year = RegExp.$1;
   var month = RegExp.$2;
   var date = RegExp.$3;
   var regularDate = new Date(year + "/" + month + "/" + date);
   if(element.value != "" &&(year != regularDate.getFullYear() || month != regularDate.getMonth() + 1 || date != regularDate.getDate()))
   {
      alert(name + "を正しく入力してください。");
      element.focus();
      return false;
   }
   return true;
}
/**
 * 時刻をチェックします。
 */

function checkTime(name, element)
{
   if(!checkByteSize(name, "桁", element, 4, 4))
   {
      return false;
   }
   if(!checkNumber(name, element))
   {
      return false;
   }
   if(!element.value.match(/^([0-1][0-9][0-5][0-9]|2[0-3][0-5][0-9])?$/))
   {
      alert(name + "を正しく入力してください。");
      element.focus();
      return false;
   }
   return true;
}
/**
 * 入力有無をチェックします。
 */

function checkNotNull(name, element)
{
   if(element.value == null || element.value == "")
   {
      alert(name + "を入力してください。");
      element.focus();
      return false;
   }
   return true;
}
/**
 * 半角英数字をチェックします。
 */

function checkAlphameric(name, element)
{
   if(!element.value.match(/^\w*$/))
   {
      alert(name + "は半角英数字で入力してください。");
      element.focus();
      return false;
   }
   return true;
}
/**
 * １つ以上選択されていることをチェックします。
 */

function checkSelected(name, element)
{
   if(countSelected(element) < 1)
   {
      alert(name + "を１つ以上選択してください。");
      return false;
   }
   return true;
}
/**
 * １つだけ選択されていることをチェックします。
 */

function checkSingleSelected(name, element)
{
   if(countSelected(element) != 1)
   {
      alert(name + "を１つ選択してください。");
      return false;
   }
   return true;
}
/**
 * 選択されている要素の数を返します。
 */

function countSelected(element)
{
   if(element == void(0))
   {
      // 定義なし
      return 0;
   }
   else if(element.length != void(0))
   {
      // 配列
      var count = 0;
      for(var i = 0; i < element.length; i++)
      {
         if(element[i].checked)
         {
            count++;
         }
      }
      return count;
   }
   else if(element.value != void(0))
   {
      // 一つ
      if(element.checked)
      {
         return 1;
      }
      return 0;
   }
   else 
   {
      // 多分ないと思うけど念のため
      return 0;
   }
}
/**
 * 入力可能文字をチェックします。
 */

function checkInvalidCharacter(name, element)
{
   if(!htmlEncode(name, element.value))
   {
      element.focus();
      return false;
   }
   return true;
}

/**
 * 入力文字がオールスペースでないかチェックします。
 */
function checkAllSpace( name, element )
{
    if ( element == null )
    {
        return false;
    }

    var str = element.value;
	if ( str == "" ) {
		return true;
	}
	
    if ( str.match(/^\s*$/) )
    {
        alert( name + "を正しく入力してください。");
        element.focus();
        return false;
    }
    return true;
}
/**
 * すべてチェック、リセット押下
 *
 * checkObj: チェックボックスオブジェクトを指定　　例：「document.F001.C001_CheckBox」
 * check   : true  チェックボックスにチェック    false: チェックボックスのチェックを除去
 */

function setCheckBox(checkObj, check)
{
   if(checkObj != null)
   {
      /* checkObjのチェックボックス数を取得 */
      var pro_no = 1;
      if(checkObj.length)
      {
         pro_no = checkObj.length;
      }
      /* チェックボックス値を変更 */
      if(parseInt(pro_no) > 1)
      {
         for(var i = 0; i < pro_no; i++)
         {
            checkObj[i].checked = check;
         }
      }
      else 
      {
         checkObj.checked = check;
      }
   }
}
/*
 *チェックボックスの選択結果の値のみ取得する
 */

function getCheckedArrays(element)
{
   var result = new Array();
   if(element == void(0))
   {
      // 定義なし
						
   }
   else if(element.length != void(0))
   {
      // 配列
      var count = 0;
      for(var i = 0; i < element.length; i++)
      {
         if(element[i].checked)
         {
            result = result.concat(new Array( element[i].value ));
         }
      }
   }
   else if(element.value != void(0))
   {
      // 一つ
      if(element.checked)
      {
         result = result.concat(new Array(element.value));
      }
   }
   else 
   {
      // 多分ないと思うけど念のため
   }
   return result;
}

/**
 * ラジオボタンの選択された値を返します。
 */
function getRadioButtonValue( element ){
    if ( element == null ) {
        return false;
    }
    var i;
    if (element.length) {
        for (i = 0; i < element.length; i++) {
            if (element[i].checked) {
                return element[i].value;
            }
        }
    } else {
        if (element.checked) {
            return element.value;
        }
    }
}

/**
 *  プルダウンの選択された値を返します。
 */
function getPullDownValue( element ) {
    if( element == null ) {
        return false;
    }
    var i;
    if (element.length) {
        for (i = 0; i < element.length; i++) {
            if (element[i].selected) {
                return element[i].value;
            }
        }
    } else {
        if (element.selected) {
            return element.value;
        }
    }
}


/**
 *  プルダウンの選択された文字列を返します。
 */
function getPullDownText( element ) {
    if( element == null ) {
        return false;
    }
    var i;
    if (element.length) {
        for (i = 0; i < element.length; i++) {
            if (element[i].selected) {
                return element[i].text;
            }
        }
    } else {
        if (element.selected) {
            return element.text;
        }
    }
}

/**
 * 日付の大小関係をチェックします。
 */

function checkDateHani(name, namekaisibi, namesyuryobi, element, kaisibi, syuryobi)
{
   if(element.value < kaisibi)
   {
      alert(name + "は" + namekaisibi + "以降の日付を入力してください。");
      element.focus();
      return false;
   }
   if(element.value > syuryobi)
   {
      alert(name + "は" + namesyuryobi + "以前の日付を入力してください。");
      element.focus();
      return false;
   }
   return true;
}

/**
 * 日付の大小関係をチェックします。
 */

function checkDateComp(namekaisibi, namesyuryobi, kaisibi, syuryobi)
{
   if( syuryobi.value < kaisibi.value)
   {
      alert(namekaisibi+ "は" + namesyuryobi + "以前の日付を入力してください。");
      return false;
   }
   return true;
}

/**
 * 時間の大小関係をチェックします。
 */

function checkTimeComp(namekaisijikan, namesyuryojikan, kaisijikan, syuryojikan)
{
   if( syuryojikan.value < kaisijikan.value)
   {
      alert(namekaisijikan+ "は" + namesyuryojikan + "以前の時間を入力してください。");
      return false;
   }
   
   return true;
}

/**
 * 数値の上限をチェックします。（10進数）
 */

function checkSize(name, element, max)
{
   var intNumber = parseInt(element.value,10);
   if(intNumber != 0 && max < intNumber)
   {
      alert(name + "は" + max + "以内で入力してください。");
      element.focus();
      return false;
   }
   return true;
}