﻿function errorOnLabels(formNode, validators){
 var labelNodes = formNode.getElementsByTagName("label");
 // Reset all the labels
 resetLabels(labelNodes);
 for(var i=0; i<validators.length; i++){
 var label = getLinkedLabel(labelNodes, validators[i].name);
  if(label){
   // Flag the labels
   flagLabel(label, validators[i].message);
  }
 }
}

function getLinkedLabel(labelNodes, fieldID){
 for(var i=0; i<labelNodes.length; i++){
  if(labelNodes[i].htmlFor == fieldID){
   return labelNodes[i];
  }
 }
}

function flagLabel(labelNode, message){
 labelNode.oldText = labelNode.firstChild;
 var strongNode = document.createElement("strong");
 var textNode = document.createTextNode(message);
 strongNode.appendChild(textNode);
 labelNode.replaceChild(strongNode, labelNode.firstChild);
}

function resetLabels(labelNodes){
 for(var i=0; i<labelNodes.length; i++){
  if(labelNodes[i].oldText){
   labelNodes[i].replaceChild(labelNodes[i].oldText, labelNodes[i].firstChild);
  }
 }
}

function displayError(formNode, validators){
 var errorHTML = "";
 for(var i=0;i<validators.length;i++){
  errorHTML += "<li><em>" + validators[i].name + "</em>: " + validators[i].message + "</li>";
 }
//エラーメッセージ
 errorHTML = "<strong>必須項目</strong> <img src=/js/images/icon_must.gif alt=必須 width=32 height=16 /><br />必須項目に入力されていない項目があります。<br /><strong>赤字になった項目</strong>をご確認の上、再度ご入力ください。";
//id="back"の位置まで移動
 location.hash = "back";
 document.getElementById("errorDisplay").style.display = "block";
 document.getElementById("errorDisplay").innerHTML = "<ul>" + errorHTML + "</ul>";
 errorOnLabels(formNode, validators);
}