// *******************************************************************

// ベースJavaScript関数定義（開始）

// *******************************************************************

// **************************************

// FORMAT 関数定義

// **************************************

  var escapeString="";

  var escapePos;



	function unFormat(formatedString){

		if ( formatedString.length <= 10 && formatedString.indexOf("/") == 4

					&& (formatedString.lastIndexOf("/") == 7 || formatedString.lastIndexOf("/") == 6))  //フォーマット形式が日付の場合

			stringBeforeFormat = date(formatedString);

		else

			stringBeforeFormat = undate(formatedString);

		return stringBeforeFormat;

	}

	function undate(formatedString){

		var	index;

		var tempChar;

		var stringBeforeFormat="";

		var isNumber=0;

		var isdate = false;



		formatedString = formatedString.toString();

		var strLength = formatedString.length;



		for(index = 0; index < strLength; index++){



			tempChar = formatedString.charAt(index);



			if( tempChar >= '0' && tempChar <='9'){

				stringBeforeFormat += tempChar;

			}



			if( tempChar == '-' ){

				if( index == 0 ) {

					stringBeforeFormat += tempChar;

					isNumber = 1;

				}	else{

					if( (formatedString.charAt(index-1) < '0' || formatedString.charAt(index-1) > '9')

							&& index < strLength-1 && formatedString.charAt(index+1) >= '0'

							&& formatedString.charAt(index+1) <= '9'	 ){

						stringBeforeFormat += tempChar;

						isNumber = 1;

					}

				}

			}



			if (tempChar == '.'){

				if( index > 0 && index < strLength-1){

					if( formatedString.charAt(index-1) >= '0'

							&& formatedString.charAt(index-1) <= '9'

							&& formatedString.charAt(index+1) >= '0'

							&& formatedString.charAt(index+1) <= '9' ) {



						stringBeforeFormat += tempChar;

						isNumber = 1;

					}

				}

			}

		}

		if (isNumber ==1){

			stringBeforeFormat = Number(stringBeforeFormat);

		}

		stringBeforeFormat = stringBeforeFormat.toString();



		return stringBeforeFormat;

	}





	function date(formatedString){

		var stringBeforeFormat="";

		var xx;



		if(formatedString.length == 0 )

			return stringBeforeFormat;

		xx = formatedString.match(/(\d+)\D(\d+)\D(\d+)/);

	    stringBeforeFormat += RegExp.$1 ;

	    if(RegExp.$2.length ==2)

	    	stringBeforeFormat += RegExp.$2 ;

	    else

	    	stringBeforeFormat += '0'+ RegExp.$2;

	    if(RegExp.$3.length ==2)

	    	stringBeforeFormat += RegExp.$3 ;

	    else

	    	stringBeforeFormat += '0'+ RegExp.$3;

		return stringBeforeFormat;

	}



function doFormat( stringToBeFormatted, format) {

    var output = "";

    var moneySymbol = "";

    var hasSignInFormat = false;

    var signCharInFormat = '+';

    var hasSignInInput = false;

    var signCharInInput = '+';



		if( !IsDecimal( stringToBeFormatted ) )

			return stringToBeFormatted;

    if ( stringToBeFormatted.length <= 0 ){

    	return output;

    }



    if (isTimeFormat(stringToBeFormatted, format)) {

      return formatTime(stringToBeFormatted, format);

    }



//    format = formEscapeString(format);





//    if (hasPeriod(stringToBeFormatted) || hasPeriod(format))



    if (stringToBeFormatted.indexOf('.') != -1 || hasPeriod(format))

      output = formatNumeral(stringToBeFormatted, format);

    else

      output = formatNoneNumeral(stringToBeFormatted, format);



    output = removeCommaAndSign(output);



    output = removeDelChars(output);

    return output;

  }





 function removeEscapeChars( input) {

    var output = "";

    var len = input.length;

    var ch;

	var i;



    for ( i = 0; i < len; i++) {

      if ((ch = input.charAt(i)) ==  '\\' && i + 1 < len) {

        i++;

      }

        output += input.charAt(i);

    }

    return output;

  }



  function hasPeriod( input) {

    for (var i = 0; i < input.length; i++)

      if (input.charAt(i) == '.' && i<input.length-1 && i>0

          && ( input.charAt(i-1) == '#' || input.charAt(i-1) == '0' )

          && ( input.charAt(i+1) == '#' || input.charAt(i+1) == '0' ) )

        return true;

    return false;

  }



  function periodPosition( input) {

    for (var i = 0; i < input.length; i++)

      if (input.charAt(i) == '.' && i<input.length-1 && i>0

          && ( input.charAt(i-1) == '#' || input.charAt(i-1) == '0' )

          && ( input.charAt(i+1) == '#' || input.charAt(i+1) == '0' ) )

        return i;

    return -1;

  }





function removeLeadingChars(chRemove, input) {

    var output = "";

    var remove = true;

    var ch;

	var i;



    for (i = 0; i < input.length; i++) {

      ch = input.charAt(i);

      if (ch != chRemove)

        remove = false;

      if (ch != chRemove || !remove)

        output += ch;

    }

    return output;

  }

function removeEndingChars(chRemove, input) {

    var output = "";

    var remove = true;

    var ch;

	var i;



    for ( i = input.length - 1; i >= 0 ; i--) {

      ch = input.charAt(i);

      if (ch != chRemove)

        remove = false;

      if (ch != chRemove || !remove)

        output = ch + output;

    }

    return output;

  }



function formatNoneNumeral( stringToBeFormatted,  format) {

    var output = "";

		var formatCount;

		var inputCount;

		var inputChar = '0';

    var formatChar;

    var formatEscChar;

    var storeData = "";

    var storeFormat = "";

    var formatData = "";

    var signInInput = ' ';



    if( stringToBeFormatted.length!=0 && ( stringToBeFormatted.charAt(0) == '+'

        || stringToBeFormatted.charAt(0) == '-') ){

      signInInput = stringToBeFormatted.charAt(0);

      stringToBeFormatted = stringToBeFormatted.substring(1);

    }



		inputCount = stringToBeFormatted.length;

    formatCount = format.length;

    while (formatCount > 0) {

      if( formatCount >=2 )

        formatEscChar = format.charAt(formatCount - 2);

      else

        formatEscChar = ' ';

      formatChar = format.charAt(formatCount - 1);

      if (inputCount > 0)

        inputChar = stringToBeFormatted.charAt(inputCount - 1);

      else

        inputChar = '0';



      if( formatEscChar == '\\'){

        storeFormat = ""+ formatEscChar + formatChar;

        for( var i = formatCount-2; i > 0; i-- ){

          if( format.charAt(i-1)== '\\' ){

            storeFormat = format.charAt(i-1) + storeFormat;

          } else {

            break;

          }

        }

        if( storeFormat.length == Math.floor(storeFormat.length/2)*2 ){

          for( var j=1; j < storeFormat.length; j=j+2 ){

            formatData += storeFormat.charAt(j);

          }

          output = formatData + output;

          formatData = "";

          formatCount = formatCount - storeFormat.length;

          continue;

        }

      }



      if( formatChar == '-' ){

        if( signInInput == '-' ){

          output = signInInput + output;

        }

        formatCount--;

        continue;

      }



      if( formatChar == '+' ){

        if( signInInput == '+' || signInInput == '-' )

          output = signInInput + output;

        else

          output = '+' + output;

        formatCount--;

        continue;

      }



      if( formatChar == ',' ){

        var flag = false;

        if( inputCount >0 ){

          var left = stringToBeFormatted.substring(0,inputCount);

          for( var k=0; k<left.length; k++ ){

            if( left.charAt(k) != '0' ){

              flag = true;

            }

          }

        }

        if( flag){

            output = formatChar + storeData + output;

            storeData = "";

        }

        formatCount--;

        continue;

      }



      if (formatChar == '#' || formatChar == '0') {

        if (inputCount > 0) {

          if( formatChar == '0' ){

            output = inputChar + storeData + output ;

            storeData = "";

            inputCount--;

            formatCount--;

          } else {

            if( formatChar == '#' ){

              if( inputChar == '0' ){

                storeData = inputChar + storeData;

                inputCount--;

                formatCount--;

              } else {

                output = inputChar + storeData + output ;

                storeData = "";

                inputCount--;

                formatCount--;

              }

            }

          }

        }

        else {

          if( formatChar == '#' )

            formatCount--;

          else {

            output = formatChar+ storeData + output;

            storeData = "";

            formatCount--;

          }

        }

      }

      else {

        output = formatChar + output;

        formatCount--;

      }

    }

    return output;

  }



function formatNumeral( stringToBeFormatted, format) {

    var preChar = "";

    var posChar = "";

    var numFormat = "";

    var formatInteger = "";

    var formatFloat = "";

    var output = "";

    var cutString = "";

    var integerPart = "", floatPart = "";

    var hasComma = false;

    var hasPeriodInFormat = false;

    var posPeriodInFormat;



    var rgexp = new RegExp("([^\\#,0123456789\.\+\-]*)([\\#,0123456789\.\+\-]*)([^\\#,0123456789\.\+\-]*)");

    format.match(rgexp);

    preChar = RegExp.$1; numFormat = RegExp.$2; posChar = RegExp.$3;



    numFormat = format;



    cutString = cutNumeral(stringToBeFormatted, numFormat);

    if (cutString != "")

      stringToBeFormatted = cutString;



    // calculate position of period

//    posPeriodInFormat = charPosition('.', numFormat);

    posPeriodInFormat = periodPosition(numFormat);

    if (posPeriodInFormat != -1) {

      hasPeriodInFormat = true;

      formatInteger = numFormat.substring(0, posPeriodInFormat);

    }

    else

      formatInteger = numFormat;



    // format integer part

    integerPart = formatIntegerPart(stringToBeFormatted, formatInteger);



    // format float part

    if (hasPeriodInFormat) {

      formatFloat = formatFloatPart(stringToBeFormatted, numFormat.substring(posPeriodInFormat+1, numFormat.length)) ;



    }



    // append these two parts

    if( formatFloat != "" && formatFloat.charAt(0) >= '0' && formatFloat.charAt(0) <= '9' )

      output = integerPart + "." + formatFloat;

    else

      output = integerPart + formatFloat;



    // append preChar and posChar

//    output = preChar + output + posChar;

    return output;

  }



 function  charPosition( ch,  input) {

 	var i;



    for ( i = 0; i < input.length; i++) {

      if (ch == input.charAt(i))

        return i;

    }



    return -1;

  }

function formatIntegerPart( stringToBeFormatted,  format) {

    var output;



//    if (hasPeriod(stringToBeFormatted))

    if (stringToBeFormatted.indexOf('.') != -1)

      stringToBeFormatted = stringToBeFormatted.substring(0, charPosition('.', stringToBeFormatted));

    output = formatNoneNumeral(stringToBeFormatted, format);

    return output;

  }

function formatFloatPart( stringToBeFormatted,  format) {

    var output = "";

    var storeData = "";

    var periodPosInInput;

    var inputCount, inputLen;

    var formatCount, formatLen;

    var formatChar;

    var inputChar;



    periodPosInInput = charPosition('.', stringToBeFormatted);



    if (periodPosInInput != -1)

      stringToBeFormatted = stringToBeFormatted.substring(periodPosInInput + 1, stringToBeFormatted.length);

    else

      stringToBeFormatted = "";



    formatCount = 0;

    formatLen = format.length;

    inputCount = 0;

    inputLen = stringToBeFormatted.length;

    while (formatCount < formatLen) {

      formatChar = format.charAt(formatCount);

      if (inputCount < inputLen)

        inputChar = stringToBeFormatted.charAt(inputCount);

      else

        inputChar = '0';



      if( formatChar == '\\'){

        formatCount++;

        if ( formatCount < formatLen ){

          formatChar = format.charAt(formatCount);

          output += formatChar;

          formatCount++;

        }

        continue;

      }



      if (formatChar != '#' && formatChar != '0') {

        output +=  formatChar;

        formatCount++;

      }

      else {

        if (inputCount < inputLen) {



          if( formatChar == '0' ){

            output = output + storeData + inputChar;

            inputCount++;

            formatCount++;

            storeData = "";

          } else {

            if( formatChar == '#' ){

              if( inputChar == '0' ){

                storeData += inputChar;

                inputCount++;

                formatCount++;

              } else {

                output = output + storeData + inputChar;

                storeData = "";

                inputCount++;

                formatCount++;

              }

            }

          }

        }

        else {

          if( formatChar == '#' ){

            formatCount++;

          } else {

            output += formatChar;

            storeData = "";

            formatCount++;

          }

        }

      }

    }



    return output;

  }



  // The following function determines whether to cut value.

  // If the value is cut, the string will be returned, otherwise ""

  // will be return.



function cutNumeral( stringToBeFormatted,  format) {

    var output = "";

    var floatLenInInput;

    var floatLenInFormat = 0;

    var cutCharPos;

    var addValue;

    var cutString="";

    var cutChar = '0';

    var cutStringValue;

    var f;

    var cutCount;



//    if (!(hasPeriod(stringToBeFormatted) && hasPeriod(format)))

    if( stringToBeFormatted.indexOf('.') == -1  )

      return "";



    floatLenInInput = stringToBeFormatted.length - charPosition('.', stringToBeFormatted) - 1;

//    floatLenInFormat = format.length - charPosition('.', format) - 1;

		if( charPosition('.', format) != -1 ) {

	    for( var i=charPosition('.', format)+1; i< format.length;i++ ){

	      var ch = format.charAt(i);

	      if( !(ch == '#' || ch == '0') ) break;

	      else  floatLenInFormat ++;

	    }

	  }



    if (floatLenInFormat >= floatLenInInput)

      return "";



    cutCharPos = charPosition('.', stringToBeFormatted) + floatLenInFormat + 1;

    cutChar = stringToBeFormatted.charAt(cutCharPos);

    if (cutChar <= '4')

      return "";



    cutString = stringToBeFormatted.substring(0, cutCharPos);



    output = Add1(cutString);

    return output;

  }



function Add1(input) {

    var output = "";

    var cutCount;

    var cutChar;

    var addValue;





    cutCount = input.length;

    while (cutCount > 0) {

      cutChar = input.charAt(cutCount - 1);



      if (cutChar >= '0' && cutChar <= '9') {

        addValue = Number(cutChar) ;

        addValue++;

        if (addValue <= 9) {

          cutChar = addValue.toString();

          output = cutChar + output;

          cutCount--;

          break;

        }

        else {

          cutChar = (addValue - 10).toString();



          output = cutChar + output;

          cutCount--;



          if (cutCount == 0)

            // there is extra bit 1 in the first bit

            output = '1' + output;

        }

      }

      else {

        if (cutChar == '.') {

          output = cutChar + output;

          cutCount--;

        }

        else {

          // maybe the current character is '+' or '-'

          output = '1' + output;

          output = cutChar + output;

          cutCount--;

          break;

        }

      }

    }



    while (cutCount > 0) {

      output = input.charAt(cutCount - 1) + output;

      cutCount--;

    }

    return output;

  }

function removeCommaAndSign( input) {

    var output = "";

    var remove = true;

    var delCharFlag = "\u0001";

    var ch;

	var i;



    for ( i = 0; i < input.length; i++) {

      ch = input.charAt(i);

      if (ch != ',' && ch != '#')

        remove = false;

      if ((ch == ',' || ch == '#') && remove)

        output += delCharFlag;

      else

        output += ch;

    }



    return output;

  }



  function addMoneyChar(input, moneySymbol) {

    var output;

    if (moneySymbol.length == 0)

      return input;

    output = moneySymbol + input;



    return output;

  }

function hasMoneySymbol(input) {

    var ch;



    ch = input.charAt(0);

    if (ch == '$' || ch =='\\')

      return true;

    return false;

  }

function formEscapeString( input) {

    var inputCount = 0;

    var inputChar;

    var escapeCharsNum = 0;

    var posCount = 0;

    var indexCount = 0;

    var output = "";

    var markString = "";

    var markChar = "\u0000";

    var markCount = 0;



    escapeString = "";

    inputCount = 0;

    while (inputCount < input.length) {

      inputChar = input.charAt(inputCount);

      if (inputChar == '\\' && inputCount + 1 < input.length) {

        escapeString = input.charAt(inputCount + 1) + escapeString;

        escapeCharsNum++;

        inputCount += 2;

        markString += markChar;

      } else {

        inputCount++;

        markString += inputChar;

        output += inputChar;

      }

    }



    escapePos = new Array(escapeCharsNum);

    markCount = markString.length;

    indexCount = 0;

    while (markCount >0) {

      inputChar = markString.charAt(markCount - 1);

      posCount++;

      if (inputChar == markChar) {

        escapePos[indexCount] = posCount - 1;

        posCount = 0;

        indexCount++;

      }

      markCount--;

    }

    return output;

  }

  function insertZeroCharsForEscapeString( input) {

    var output = input;

    var insPos = 0;

    var insertChar;

    var i;



    if (escapeString.length == 0)

      return output;



    for ( i = 0; i < escapeString.length; i++) {

      insPos += escapePos[i];

      insertChar = '\u0000';

      if (insPos > output.length) {

        output = insertChar + output;

      }

      else {

        output = output.substring(0, output.length - insPos) + insertChar +

                output.substring(output.length - insPos, output.length);

      }

      insPos++;

    }

    return output;

  }



  function restoreEscapeChars( input) {

    var output = "";

    var inputCount = 0;

    var ch;

    var indexCount = 0;



    inputCount = input.length;

    while (inputCount > 0) {

      ch = input.charAt(inputCount - 1);

      if (ch == "\u0000") {

        output = escapeString.charAt(indexCount) + output;

        indexCount++;

      }

      else

        output = ch + output;

      inputCount--;

    }



    return output;

  }

  function removeDelChars( input) {

    var output = "";

    var ch;

	var i;



    for ( i = 0; i < input.length; i++) {

      ch = input.charAt(i);

      if (ch != "\u0001")

        output += ch;

    }



    return output;

  }



function removeChars( removeChar,  input) {

    var output = "";

    var ch;

	var i;



    for ( i = 0; i < input.length; i++) {

      ch = input.charAt(i);

      if (ch != removeChar)

        output += ch;

    }



    return output;

  }

function formatTime( input, format) {

    var output = "";

    var ch;



    output = input.substring(0, 4);

    output += '/';

    if (!(input.charAt(4) == '0' && format.charAt(5) == '#'))

      output += input.charAt(4);



    output += input.charAt(5);

    output += '/';



    if (!(input.charAt(6) == '0' && format.charAt(8) == '#'))

      output += input.charAt(6);



    output += input.charAt(7);

    return output;

  }

  function isTimeFormat(input, format) {

    var ch;

	var i;



    if (format.length != 10)

      return false;



    if (input.length != 8)

      return false;

    for ( i = 0; i < 4; i++) {

      ch = format.charAt(i);

      if (!(isDigit(ch) || ch == '#'))

        return false;

    }



    if (format.charAt(4) != '/')

      return false;



    if (format.charAt(7) != '/')

      return false;



    for (i = 5; i <= 6; i++) {

      ch = format.charAt(i);

      if (!(isDigit(ch) || ch == '#'))

        return false;

    }



    for (i = 8; i <= 9; i++) {

      ch = format.charAt(i);

      if (!(isDigit(ch) || ch == '#'))

        return false;

    }



    return true;

  }

function isDigit( ch) {

    if (ch >= '0' && ch <= '9' )

      return true;

    else

      return false;

  }

// **************************************

// チェック関数定義

// **************************************

// Trim関数

function Trim(targetString){

	return targetString.replace(/^(\s*)(\S.*\S)(\s*)$/, "$2");

}



function IsNotNull( targetString ){

//Trim必要

	if( Trim(targetString) == "" ){

		return false;

	} else {

		return true;

	}

}



//Ascii文字判定関数

function IsAscii( targetString ){

	var strAscii  ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 !#%&()*+,-./:;<=>?@[]^_`{|}~$\"\'\\";

	for ( var i = 0; i < targetString.length; i++ ){

		var c = targetString.charAt(i);

		if ( strAscii.indexOf(c,0) == -1 ) {

			return false;

		}

	}

	return true;

}



// 半角判定関数

function IsHankaku(targetString) {

	var strHankaku  ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｧｨｩｪｫｯｬｭｮｰﾞﾟ !#%&()*+,-./:;<=>?@[]^_`{|}~･｢｣$\"\'\\";

	for ( var i = 0; i < targetString.length; i++ ){

		var c = targetString.charAt(i);

		if ( strHankaku.indexOf(c,0) == -1 ) {

			return false;

		}

	}

	return true;

}



// 全角判定関数

function IsZenkaku(I_str){

    var v_i;

    for(v_i=0;v_i<=I_str.length-1;v_i++){

    	if(escape(I_str.charAt(v_i)).length < 4){return false;  }

    	else { if(IsHankaku(I_str.charAt(v_i))) {return false;  } }

    }

    return true;

}





// 英字判定関数

function IsAlphabet(targetString) {

	var strAlphabet  = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

	for ( var i = 0; i < targetString.length; i++ ){

		var c = targetString.charAt(i);

		if ( strAlphabet.indexOf(c,0) == -1 ) {

			return false;

		}

	}

	return true;

}



// 数字判定関数

function IsNumber(targetString){

	var strNumber  ="0123456789";

	for ( var i = 0; i < targetString.length; i++ ){

		var c = targetString.charAt(i);

		if ( strNumber.indexOf(c,0) == -1 ) {

			return false;

		}

	}

	return true;

}



// 英数字判定関数

function IsAlNum(targetString){

	var strAlnum="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"

	for ( var i = 0; i < targetString.length; i++ ){

		var c = targetString.charAt(i);

		if ( strAlnum.indexOf(c,0) == -1 ) {

			return false;

		}

	}

	return true;

}



// 整数判定関数

function IsInteger(targetString){

	var c = '.';

	if( isNaN(targetString) ){

		return false;

	}else{

		if( targetString.indexOf(c,0) == -1 ){

			return true;

		};

	}

	return false;

}



// 実数判定関数

function IsDecimal(targetString){

	var c = '.';

	if( isNaN(targetString) ){

		return false;

	}else{

		return true;

	}

}



//大小チェック

function IsGreaterThan(targetString,opt){

  if (targetString==""){

    return true;

  } else {

  	var n,m;

  	n = Number(targetString);

  	m = Number(opt);

  	if( isNaN(n) || isNaN(m) ){

	  	return false;

  	} else if( n > m ){

  		return true;

  	} else {

	  	return false;

  	}

	}

}



//大小チェック

function IsGreaterEqualThan(targetString,opt){

  if (targetString==""){

    return true;

  } else {

  	if( IsGreaterThan(targetString,opt) || IsEqual(targetString,opt)){

	  	return true;

  	} else {

  		return false;

  	}

  	return( IsGreaterThan(targetString,opt) || IsEqual(targetString,opt));

  }

}



//改要-228 2001/07/25 

//NULLの場合は、チェックしない

// 指示者 NRI 高畠、作業者 GNT 劉

function IsLessThan(targetString,opt){

	//改要-228 Start

	if(targetString=="") return true;

	//改要-228 End

	return( IsGreaterThan(opt,targetString));

}



//改要-228 2001/07/25 

//NULLの場合は、チェックしない

// 指示者 NRI 高畠、作業者 GNT 劉

function IsLessEqualThan(targetString,opt){

	//改要-228 Start

	if(targetString=="") return true;

	//改要-228 End

	return( IsGreaterEqualThan(opt,targetString) );

}



//等値チェック

//改要-228 2001/07/25 

//NULLの場合は、チェックしない

// 指示者 NRI 高畠、作業者 GNT 劉

function IsEqual(targetString,opt){

	//改要-228 Start

	if(targetString=="") return true;

	//改要-228 End

	var n,m;

	n = Number(targetString);

	m = Number(opt);

	if( isNaN(n) || isNaN(m) ){

		return false;

	} else if( n == m ){

		return true;

	} else {

		return false;

	}

}



// 日付判定関数

function IsDate(targetString) {

	if ( targetString.length <=0 ) return true;

// targetStringの書式は"YYYYMMDD"とする.

	YYYY = new String;

	MM = new String;

	DDay = new String;

	YYYY.value = String(targetString).substring(0,4);

	MM.value = String(targetString).substring(4,6);

	DDay.value = String(targetString).substring(6,8);

	ManthLastDay = new Array(12);

	ManthLastDay[0] = 31; //1月

	ManthLastDay[1] = 28; //2月

	ManthLastDay[2] = 31; //3月

	ManthLastDay[3] = 30; //4月

	ManthLastDay[4] = 31; //5月

	ManthLastDay[5] = 30; //6月

	ManthLastDay[6] = 31; //7月

	ManthLastDay[7] = 31; //8月

	ManthLastDay[8] = 30; //9月

	ManthLastDay[9] = 31; //10月

	ManthLastDay[10] = 30; //11月

	ManthLastDay[11] = 31; //12月



	//数字チェック

	if ( !(IsNumber(YYYY.value) && IsNumber(MM.value) && IsNumber(DDay.value)) ) {

		return false

	};



	if ( ((Number(YYYY.value) % 100 != 0) && (Number(YYYY.value) % 4 == 0 )) || ((Number(YYYY.value) % 400 == 0) && (Number(YYYY.value) % 4 == 0 )) ) {

		ManthLastDay[1] = 29;

	}



	if ( (Number(YYYY.value) < 1) || (Number(YYYY.value) > 9999) ) {

		return false;

	}

	if ( (Number(MM.value) < 1) || (Number(MM.value) > 12) ) {

		return false;

	}

	if ( (Number(DDay.value) < 1)  || (Number(DDay.value) > ManthLastDay[Number(MM.value)-1])  ) {

		return false;

	}

	return true;

}



//桁数判定関数

//改要-228 2001/07/25 

//NULLの場合は、チェックしない

// 指示者 NRI 高畠、作業者 GNT 劉

function IsRightSize(targetString,opt){

	//改要-228 Start

	if(targetString=="") return true;

	//改要-228 End

	var n,m;

	n = targetString.length;

	m = Number(opt);

	if( isNaN(n) || isNaN(m) ){

		return false;

	} else if( n == m ){

		return true;

	} else {

		return false;

	}

}



//桁数判定関数

//改要-228 2001/07/25 

//NULLの場合は、チェックしない

// 指示者 NRI 高畠、作業者 GNT 劉

function IsInMaxSize(targetString,opt){

	//改要-228 Start

	if(targetString=="") return true;

	//改要-228 End

	var n,m;

	n = targetString.length;

	m = Number(opt);

	if( isNaN(n) || isNaN(m) ){

		return false;

	} else if( n <= m ){

		return true;

	} else {

		return false;

	}

}



  // 半角カナ判定関数

  function isHankakukana(targetString) {

    var strHankakukana  ="ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｧｨｩｪｫｯｬｭｮｰﾞﾟ ";

    for ( var i = 0; i < targetString.length; i++ ){

        var c = targetString.charAt(i);

        if ( strHankakukana.indexOf(c,0) == -1 ) { return false; }

    }

    return true;

  }



  // 全角カナ判定関数

  function isZenkakuKana(targetString){

    var strHankakukana  ="アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォッャュョー";

    for ( var i = 0; i < targetString.length; i++ ){

        var c = targetString.charAt(i);

        if ( strHankakukana.indexOf(c,0) == -1 ) { return false; }

    }

    return true;

  }







  // 制約チェック関数

  function validate(target,constraintName,constraintCondition){

    // 制約とチェック関数との対応付け

    targetString = String(target.value);

    if (constraintName == "IS_NOT_NULL")    return (IsNotNull(targetString));

    if (constraintName == "IS_HANKAKU")   return (IsHankaku(targetString));

    if (constraintName == "IS_ZENKAKU")   return (IsZenkaku(targetString));

    if (constraintName == "IS_ASCII")   return (IsAscii(targetString));

    if (constraintName == "IS_ALPHABET")  return (IsAlphabet(targetString));

    if (constraintName == "IS_ALNUM")  return (IsAlNum(targetString));

    if (constraintName == "IS_NUMBER")     return (IsNumber(targetString));

    if (constraintName == "IS_INTEGER")   return (IsInteger(targetString));

    if (constraintName == "IS_DECIMAL")  return (IsDecimal(targetString));

    if (constraintName == "IS_GREATER_THAN")    return (IsGreaterThan(targetString,constraintCondition));

    if (constraintName == "IS_GREATER_EQUAL_THAN")    return (IsGreaterEqualThan(targetString,constraintCondition));

    if (constraintName == "IS_LESS_THAN")    return (IsLessThan(targetString,constraintCondition));

    if (constraintName == "IS_LESS_EQUAL_THAN")    return (IsLessEqualThan(targetString,constraintCondition));

    if (constraintName == "IS_EQUAL")    return (IsEqual(targetString,constraintCondition));

    if (constraintName == "IS_DATE")        return (IsDate(targetString) );



    if (constraintName == "IS_RIGHT_SIZE")   return( IsRightSize(targetString,constraintCondition));

    if (constraintName == "IS_IN_MAX_SIZE")     return (IsInMaxSize(targetString,constraintCondition));



  }









// **************************************

// エラーハンドラ定義

// **************************************



  // デフォルトエラーハンドラ関数定義

  function defaultErrorHandler(source,messageId,condition){

    var values = new Array;

    values[0] = fields[source.name].logicalName;

    if (condition != null ) {

        values[1] = condition;

    }

    //メッセージ取得および編集処理

    msg = messages[messageId].getFormattedMessage("SHORT");

    msg = messages.substituteMessageVariable(msg, values);



    //メッセージ表示処理

    alert(msg);

    //フォーカス設定処理

    source.focus();

    if ((source.type == "file") || (source.type == "password") || (source.type == "text") || (source.type == "textarea")) source.select();



  }



  // エラーハンドラへの登録

  errorHandler = defaultErrorHandler;



// **************************************

// イベントハンドラ定義

// **************************************





  // NotNull制約以外の制約をチェックする関数の定義

	var checkFlag = "";   //add by sunhunjun

  function validateFieldWithoutNotNullConstraint(target){

    NotNullConstraintName = "IS_NOT_NULL";



    for ( z in fields ) {

      if ( z == target.name ) {



    for (i=1; i<=fields[target.name].constraints.length; i++){

      con = fields[target.name].constraints[i];

      if (con.name == NotNullConstraintName) continue;

//add by sunhunjun

      // 無限ループ回避

	  if (( checkFlag != "")&&(checkFlag != target) )  {

	  	target.blur;

	  	return false;

	  }

//add by sunhunjun

      if (!validate(target,con.name,con.condition)){

        errorHandler(target,messages.getMessageIdByConstraintName(con.name),con.condition);

        checkFlag = target;   //add by sunhunjun

        return false;

      }

    }



      }

    }

    checkFlag = "";  //add by sunhunjun

    return true;

  }



  // 該当画面の全項目に対してNotNull制約をチェックする関数の定義

  function validateAllFieldsNotNullConstraint(target){

    // NotNull制約チェック

    NotNullConstraintName = "IS_NOT_NULL";

    for (i=0; i<target.elements.length; i++){

      e = target.elements[i];

      // 改要-121  2001/03/01  START

      // <FieldSet>タグがある場合、不具合対応

      // 指示者 NRI 高畠、作業者 PASONATECH 李

      // if ((e.type == "button") || (e.type == "hidden") || (e.type == "reset") || (e.type == "submit")) continue;

      // 改要-121  2001/03/16  START

      // <textarea>タグ追加

      // 指示者 NRI 高畠、作業者 PASONATECH 李

      //if ((e.type == "text") || (e.type == "password") || (e.type == "file") ) {

      if ((e.type == "text") || (e.type == "password") || (e.type == "file") || (e.type == "textarea") ) {

      // 改要-121  2001/03/16  END

      // 改要-121  2001/03/01  END

        for ( z in fields ) {

          if ( z == e.name ) {

            for (j=1; j<=fields[e.name].constraints.length; j++){

              con = fields[e.name].constraints[j];

              if (con.name == NotNullConstraintName){

                if (!validate(e, NotNullConstraintName, null)){

                  errorHandler(e,messages.getMessageIdByConstraintName(NotNullConstraintName),null);

                  return false;

                }

              }

            }

          }

        }

      }

    }

    return true;

  }



  // 改要-142  2001/03/16  START

  // submitEventHandler不具合対応（関連処理除外のみ)

  // 指示者 NRI 高畠、作業者 PASONATECH 李

  // フォームサブミット関数

  //var formSubmitted = false;

  //function submitForm(source){

  //  if ( formSubmitted == false ) {

  //    formSubmitted = true;

  //    var actionID = source.name;

  //    var i = 0;

      //for (var i in form.elements ) {

  //    for ( i = 0 ; i < source.elements.length; i++ ) {

  //      if ( source.elements[i].name == "_ActionID" ) {

  //        source.elements[i].value = actionID;

  //     }

  //    }

      //source._ActionID.value = actionID;

  //    if ( source.type == "button" ) {

  //      source.submit();

  //    }

  //  } else {

  //    alert('すでにアクションの実行中です');

  //  }

  //}

  // 改要-142  2001/03/16  END

  // デフォルトイベントハンドラ関数

  function defaultBlurEventHandler(source){

    // 当該項目の各制約に対してチェックを行う.

     if (validateFieldWithoutNotNullConstraint(source)){

		validateFieldFormat(source);

       	return true;

     }

     else

     	return false;

  }

  // フォーマットする関数の定義

  function validateFieldFormat(target){

     	//チェック、フォーマットを定義していない項目に対して行わない

    for ( z in fields ) {

     	if ( z == target.name ) {



		  if (fields[target.name].format != "")

	    	target.value = doFormat(String(target.value),fields[target.name].format);

	  	}

		}

	}

//    if ((target.value != "") && (fields[target.name].format != ""))

//    	target.value = doFormat(String(target.value),fields[target.name].format);

  // NotNull制約以外の制約をアンフォーマットする関数の定義

  function defaultFocusEventHandler(source){

    // 当該項目の各制約に対してアンフォーマットを行う.

		if (checkFlag != "") return false;

     	//チェック、フォーマットを定義していない項目に対して行わない

    for ( z in fields ) {

     	if ( z == source.name ) {

				if ( fields[source.name].format != ""){

					source.value = unFormat(source.value);

				}

			}

		}

  }

  // 該当画面の全項目に対してアンフォーマットする関数の定義

  function validateAllFieldsUnformat(target){

    for (i=0; i<target.elements.length; i++){

      e = target.elements[i];

      if ((e.type == "button") || (e.type == "hidden") || (e.type == "reset") || (e.type == "submit")) continue;

     	//チェック、フォーマットを定義していない項目に対して行わない

    	for ( z in fields ) {

     		if ( z == e.name ) {

					if (fields[e.name].format != "" ){

      			e.value = unFormat(e.value);

      		}

      	}

      }

    }

  }



  // デフォルトイベントハンドラ関数

  function defaultSubmitEventHandler(source){

    // 改要-76  2001/04/06  START

    // Focus移動制御のchecksubmit処理追加

    // 指示者 NRI 高畠、作業者 PASONATECH 李

    if (arguments.length > 1) {

       //Submitするかどうかをチェック

        if (!checkSubmit()) return false;

        if (arguments[1] == 1) {

            if (!validateAllFieldsNotNullConstraint(source)) return false;

        }

    }else{

       // NotNull制約チェック

       if (!validateAllFieldsNotNullConstraint(source)) return false;

    }

    // 改要-76  2001/04/06  END

    // フォームサブミット処理

//    validateAllFieldsUnformat(source);

    // 改要-142  2001/03/16  START

    // submitEventHandler不具合対応（関連処理除外のみ)

    // 指示者 NRI 高畠、作業者 PASONATECH 李

    //return submitForm(source);

      return true;

    // 改要-142  2001/03/16  END

  }
  

  // セレクトチェック関数 2001/12/07 kawakami@EC-ONE
  
function isSelected(obj){
	var idx=obj.select.selectedIndex;
	if(idx==0){
		alert("対象が選択されていません。");
		return false;
	}
	return true;
}

function openwin(url) {
	win1 = open(url,"pop","toolbar=1,location=1,directories=1,status=1,menubar=1,resizable=1,scrollbars=1,width=610,height=550,outerwidth=610,outerheight=550");
	win1.focus();
}
function _moveunder(sel) {
		if ((sel != "") && (sel != "#")) {
			   window.location = sel;
		}
}
function _moveunder(sel, formName) {
		if ((sel != "") && (sel != "#")) {
				window.open(sel);
		}
		document.forms[formName].menu.options.selectedIndex=0;
}



  // イベントハンドラ登録

  blurEventHandler   = defaultBlurEventHandler;

  focusEventHandler   = defaultFocusEventHandler;

  submitEventHandler = defaultSubmitEventHandler;




// 2002-03-28 nobuakiy

function inputChecked(t){
    if (submitEventHandler(t)) {
        if (isSelected(t)) {
            return true;
        }
    }
    return false;
}


