  /*
  * not null the elements of the form except those marked false 
  * of not-null property.
  */
  function checkForm(theForm){
    /* put all the elements of the form into array.*/
    var elArr = theForm.elements;
    var validator;
    var valert;
    var valArray;
    var valertArray;
    var notNull;
    var elValue;
    var focusNum = 10000;
    var alertContent = null;
    var alertStatus = true;
	var notSelected;
	var notMulSelected;
	var mostLength;
	var zenCheck;
	var notNulls;
	var nameCheck;
	var escapeStr;
	var notSame;
	var flg;

    /*circulate the form elements for checks.*/
    for(var i = 0; i < elArr.length; i++){
      if(checkNode(elArr[i])){
		  flg = 0;
        /*get corresponding property*/
        notNull			= elArr[i].getAttribute("notNull");
        validator		= elArr[i].getAttribute("validator");
        valert			= elArr[i].getAttribute("valert");
        elValue			= elArr[i].value;
        notSelected		= elArr[i].getAttribute("notSelected");
        notMulSelected	= elArr[i].getAttribute("notMulSelected");
        notChecked		= elArr[i].getAttribute("notChecked");
        mostLength		= elArr[i].getAttribute("mostLength");
        zenCheck		= elArr[i].getAttribute("zenCheck");
        notNulls		= elArr[i].getAttribute("notNulls");
        nameCheck		= elArr[i].getAttribute("nameCheck");
		escapeStr		= elArr[i].getAttribute("escapeStr");
		notSame			= elArr[i].getAttribute("notSame");

        /*
          if has this property,check the value,
          if the value is true,can null,
          else alert corresponding value.
        */
        if(notNull){
          if(notNull != "false"){
            alertContent = notNull ? notNull : "this value must not be null";
            if(isNull(elValue)){
              writeAlert(alertContent);
              focusNum = focusNum < i ? focusNum : i;
              if(focusNum != 10000){
                elArr[focusNum].focus();
              }
			  flg = 1;
              return false;
            }
          }
        }
		if(mostLength){
				if(mostLength != "false"){
					valArray = mostLength.split(";");
					m_mostLength = valArray[0];
					alertContent = valArray[1];
					if(!isMostLengh(elValue,m_mostLength)){
							writeAlert(alertContent);
							focusNum = focusNum < i ? focusNum : i;
							if(focusNum != 10000){
							elArr[focusNum].focus();
							}
						flg = 1;
						 return false;
					}
				}
		}

		if(notSelected){
		    alertContent = notSelected ? notSelected : "this value must not be null";
			//elValue = elArr[i].selectedIndex;
			elValue = elArr[i].value;
			if(!isSelected(elValue)){
				writeAlert(alertContent);
              	focusNum = focusNum < i ? focusNum : i;
              if(focusNum != 10000){
               // elArr[focusNum].focus();
              }
			  flg = 1;
              return false;
			}
		}
		if(notMulSelected){
		    alertContent = notMulSelected ? notMulSelected : "this value must not be null";
			if(!isMulSelected(elArr[i])){
				writeAlert(alertContent);
              	focusNum = focusNum < i ? focusNum : i;
              if(focusNum != 10000){
                elArr[focusNum].focus();
              }
			  flg = 1;
              return false;
			}
		}
		if(notChecked){
		    alertContent = notChecked ? notChecked : "this value must not be null";
			if(!isChecked(i,elArr)){
				writeAlert(alertContent);
              	focusNum = focusNum < i ? focusNum : i;
              if(focusNum != 10000){
                elArr[focusNum].focus();
              }
			  flg = 1;
              return false;
			}
		}
		if(notNulls){
		    alertContent = notNulls ? notNulls : "this value must not be null";
			if(!isNotNulls(i,elArr)){
				writeAlert(alertContent);
              	focusNum = focusNum < i ? focusNum : i;
              if(focusNum != 10000){
                elArr[focusNum].focus();
              }
			  flg = 1;
              return false;
			}
		}
		if(nameCheck){
		    alertContent = nameCheck ? nameCheck : "this value must not be null";
			if(!isNameCheck(i,elArr)){
				writeAlert(alertContent);
              	focusNum = focusNum < i ? focusNum : i;
              if(focusNum != 10000){
                elArr[focusNum].focus();
              }
			  flg = 1;
              return false;
			}
		}
		if(notSame){
		    alertContent = notSame ? notSame : "this value must  be same";
			if(!isSame(i,elArr)){
				writeAlert(alertContent);
              	focusNum = focusNum < i ? focusNum : i;
              if(focusNum != 10000){
                elArr[focusNum].focus();
              }
			  flg = 1;
              return false;
			}
		}
		if(zenCheck){
				  if(zenCheck != "false"){
					alertContent = zenCheck ? zenCheck : "this value must  be zenkaku";
					if(!isZen(elValue)){
					  writeAlert(alertContent);
					  focusNum = focusNum < i ? focusNum : i;
					  if(focusNum != 10000){
						elArr[focusNum].focus();
					  }
					  flg = 1;
					  return false;
					}
				  }
				}
		if(escapeStr){
				  if(escapeStr != "false"){
					alertContent = escapeStr ? escapeStr : "this value must  be zenkaku";
					if(isEscapeStr(elValue)){
					  writeAlert(alertContent);
					  focusNum = focusNum < i ? focusNum : i;
					  if(focusNum != 10000){
						elArr[focusNum].focus();
					  }
					  flg = 1;
					  return false;
					}
				  }
				}

        if(validator){
		 if(elValue == null || elValue ==""){
			  continue;
		  }
          if(validator != ""){
            valArray = validator.split(";");
            valertArray = valert.split(";");
            for(var j = 0; j < valArray.length; j++){
              pattern = PatternsDict[valArray[j]];
              if(pattern == null || pattern ==""){
                continue;
              }
              if(!pattern.exec(elValue)){

                writeAlert(valertArray[j]);

                focusNum = focusNum < i ? focusNum : i;

                if(focusNum != 10000){
                  elArr[focusNum].focus();
                }
				flg = 1;
                return false;
              }
            }
          }
        }
		if(flg == 1){
			window.scroll(100,50);
		}
      }
    }
    return true;
  }

  /*
  *check node type and node name.
  *if node name is input or textarea ,return true.
  */
  function checkNode(node){
    if(node.nodeName=="INPUT" || node.nodeName=="input"){
      if(node.type=="text" || node.type=="password" || node.type=="file" || node.type=="checkbox"){
        return true;
      }
    }
    if(node.nodeName=="TEXTAREA" || node.nodeName=="textarea"){
      return true;
    }
    if(node.nodeName=="SELECT" || node.nodeName=="select"){
      return true;
    }
    
    return false;
  }

  /*
  * not null the elements of the form except those marked false 
  * of not-null property.
  */
  function disableButtons(theForm){
    /* put all the elements of the form into array.*/
    var elArr = theForm.elements;
    var perPro;
    var elValue;

    /*circulate the form elements for checks.*/
    for(var i = 0; i < elArr.length; i++){
      /*get corresponding property*/
      perPro = elArr[i].noDisable;
      /*if not this property,just jump to next circulation*/
      if(perPro){
        if(perPro == "true"){
          continue;
        }
      }
      else{
        /*set this button disabled for prevent iteration submit.*/
        elArr[i].disabled = true;
      }
    }
  }

  /*
  * check this value is null or not.
  */
  function isNull(str){
    var trimStr = trim(str);
    if(trimStr == null || trimStr == ""){
      return true;
    }
    return false;
  }
 function isSelected(str){
    var trimStr = trim(str);
    if(trimStr == "0"){
      return false;
    }
    return true;
  }
  function isMulSelected(elArr){
    for(var i=0; i<elArr.length; i++){
        	if(elArr[i].selected) {
        		return true;
      	}
     }
   return false;
  }
  function isChecked(num,elArr){
    for(var i=0; i<elArr.length; i++){
    	if(elArr[i].id == elArr[num].id){
        	if(elArr[i].checked) {
        		return true;
        	}
      	}
     }
   return false;
  }

  function isNotNulls(num,elArr){
    for(var i=0; i<elArr.length; i++){
    	if(elArr[i].id == elArr[num].id){
        	if(elArr[i].value!=null && elArr[i].value!="") {
        		return true;
        	}
      	}
     }
   return false;
  }
   function isNameCheck(num,elArr){
    	if(elArr[num+2].id=='mailAddress' 
			&&(elArr[num+2].value!=null && elArr[num+2].value!="")
			&&( elArr[num].value==null || elArr[num].value=="" )
			&& (elArr[num+1].value==null || elArr[num+1].value=="")
		){
			return false;
		}
		return true;
  }
  function isSame(num,elArr){
    for(var i=0; i<elArr.length; i++){
		for(var j=i+1;j<elArr.length;j++){
			if(elArr[i].id == elArr[num].id && elArr[j].id == elArr[num].id && elArr[i].value==elArr[j].value){
				return true;
			}
		}
     }
   return false;
  }

  function writeAlert(info){
	  alert(info);
  }

  function isMostLengh(str,mostLength){
		if(str == null || str == ""){
			return true;
		}
		if(str.length > mostLength){
			return false;
		}
    return true;
  }
 
    function isZen(str){
        if(str == null || str == ""){
            return true;
        }
		 for(i = 0; i < str.length; i++){
            if(escape(str.charAt(i)).length < 4){
                return false;
            }
        }
		return true;

    }

 function isEscapeStr(str){
	var charset = new Array("@","—","www","WWW","‚v‚v‚v","‚—‚—‚—","'","url","URL");
	var i;
	for(i=0;i<charset.length;i++){
		if(str.indexOf(charset[i])>=0){
			return true;
		}
	}
	return false;
 }

  function checkDateForToday(year,month,day,info){
    var yearVal = null;
    var monthVal = null;
    var dayVal = null;
    for(var i=0;i<year.length;i++){
      if(year.options[i].selected == true){
        yearVal = year.options[i].innerText;
      }
    }

    for(var i=0;i<month.length;i++){
      if(month.options[i].selected == true){
        monthVal = month.options[i].innerText;
      }
    }

    for(var i=0;i<day.length;i++){
      if(day.options[i].selected == true){
        dayVal = day.options[i].innerText;
      }
    }
    var inputDate = new Date(yearVal,monthVal,dayVal);
    var today = new Date();
    if(inputDate>today){
      deleteAlert();
      writeAlert(info);
      year.focus();
      return false;
    }
    return true;
  }




function verifyDateByYM(tag){
  var elements = document.forms[0].elements;
  var objYearFrom  = false;
  var objYearTo = false;
  var objMonthFrom   = false;
  var objMonthTo   = false;

  for(var i=0,l=elements.length;i<l;i++){
    if(elements[i].tagName.toUpperCase() == "SELECT"&&(elements[i].name.indexOf(tag) !='-1' )){
      if ((elements[i].name==(tag+'YearFrom'))&&(elements[i].value!='')&&(elements[i].value!='0'))
        objYearFrom=true;
      if ((elements[i].name==(tag+'YearTo'))&&(elements[i].value!='')&&(elements[i].value!='0'))
        objYearTo=true;
      if ((elements[i].name==(tag+'MonthFrom'))&&(elements[i].value!='')&&(elements[i].value!='0'))
        objMonthFrom=true;
      if ((elements[i].name==(tag+'MonthTo'))&&(elements[i].value!='')&&(elements[i].value!='0'))
        objMonthTo=true;
    }
  }

  if (((objYearFrom)&&(objYearTo)&&(objMonthFrom)&&(objMonthTo))==false){
    return false;
  }

  objYearFrom = document.getElementById(tag+'YearFrom');
  objYearTo = document.getElementById(tag+'YearTo');
  objMonthFrom = document.getElementById(tag+'MonthFrom');
  objMonthTo = document.getElementById(tag+'MonthTo');

  if (objYearFrom.value.localeCompare(objYearTo.value)>0){// year begin>to
    if (objMonthFrom.selectedIndex<(objMonthTo.length-1)){// month not max
      objYearTo.selectedIndex=objYearFrom.selectedIndex;
      objMonthTo.selectedIndex=objMonthFrom.selectedIndex+1;
    }else{//month max
      if (objYearFrom.selectedIndex<(objYearTo.length-1)){// year not max
        objYearTo.selectedIndex=objYearFrom.selectedIndex+1;
      }else{
        objYearTo.selectedIndex=objYearFrom.selectedIndex;
      }
    }
  }
  //if (objYearFrom.value.localeCompare(objYearTo.value)==0){// year begin=to
  if (eval(objYearFrom.value)==eval(objYearTo.value)){// year begin=to
    if (eval(objMonthFrom.value)>eval(objMonthTo.value)){// month begin>to
      if (objMonthFrom.selectedIndex<(objMonthTo.length-1)){// month not max
        objMonthTo.selectedIndex=objMonthFrom.selectedIndex+1;
      }else{
        objMonthTo.selectedIndex=objMonthFrom.selectedIndex;
      }
    }
  }

  return true;
}
