
var StrutsUtils={};StrutsUtils.getValidationErrors=function(data){if(data.indexOf("/* {")===0){return eval("( "+data.substring(2,data.length-2)+" )");}else{return null;}};StrutsUtils.clearValidationErrors=function(form){var firstNode=StrutsUtils.firstElement(form);var xhtml=firstNode.tagName.toLowerCase()==="table";if(xhtml){clearErrorMessagesXHTML(form);clearErrorLabelsXHTML(form);}else{clearErrorMessagesCSS(form);clearErrorLabelsCSS(form);}
if(StrutsUtils.errorLists[form]&&StrutsUtils.errorLists[form]!==null){form.parentNode.removeChild(StrutsUtils.errorLists[form]);StrutsUtils.errorLists[form]=null;}};StrutsUtils.errorLists=[];StrutsUtils.showValidationErrors=function(form,errors){StrutsUtils.clearValidationErrors(form,errors);if(errors.errors){var l,errorList=document.createElement("ul");errorList.setAttribute("class","errorMessage");errorList.setAttribute("className","errorMessage");for(l=0;l<errors.errors.length;l++){var item=document.createElement("li");var itemText=document.createTextNode(errors.errors[l]);item.appendChild(itemText);errorList.appendChild(item);}
form.parentNode.insertBefore(errorList,form);StrutsUtils.errorLists[form]=errorList;}
var i,fieldName,firstNode=StrutsUtils.firstElement(form);var xhtml=firstNode.tagName.toLowerCase()==="table";if(errors.fieldErrors){for(fieldName in errors.fieldErrors){if(errors.fieldErrors.hasOwnProperty(fieldName)){for(i=0;i<errors.fieldErrors[fieldName].length;i++){if(xhtml){addErrorXHTML(form.elements[fieldName],errors.fieldErrors[fieldName][i]);}else{addErrorCSS(form.elements[fieldName],errors.fieldErrors[fieldName][i]);}}}}}};StrutsUtils.firstElement=function(parentNode,tagName){var node=parentNode.firstChild;while(node&&node.nodeType!==1){node=node.nextSibling;}
if(tagName&&node&&node.tagName&&node.tagName.toLowerCase()!==tagName.toLowerCase()){node=StrutsUtils.nextElement(node,tagName);}
return node;};StrutsUtils.nextElement=function(node,tagName){if(!node){return null;}
do{node=node.nextSibling;}while(node&&node.nodeType!==1);if(node&&tagName&&tagName.toLowerCase()!==node.tagName.toLowerCase()){return StrutsUtils.nextElement(node,tagName);}
return node;};StrutsUtils.previousElement=function(node,tagName){if(!node){return null;}
if(tagName){tagName=tagName.toLowerCase();}
do{node=node.previousSibling;}while(node&&node.nodeType!==1);if(node&&tagName&&tagName.toLowerCase()!==node.tagName.toLowerCase()){return StrutsUtils.previousElement(node,tagName);}
return node;};StrutsUtils.addOnLoad=function(func){var oldonload=window.onload;if(typeof window.onload!=='function'){window.onload=func;}else{window.onload=function(){oldonload();func();};}};StrutsUtils.addEventListener=function(element,name,observer,capture){if(element.addEventListener){element.addEventListener(name,observer,false);}else if(element.attachEvent){element.attachEvent('on'+name,observer);}};var firstFieldErrorPosition=null;function clearErrorMessagesCSS(form){firstFieldErrorPosition=null;var i,divs=form.getElementsByTagName("div"),paragraphsToDelete=[];for(i=0;i<divs.length;i++){var p=divs[i];if(p.getAttribute("errorFor")){paragraphsToDelete.push(p);}}
for(i=0;i<paragraphsToDelete.length;i++){var r=paragraphsToDelete[i];var parent=r.parentNode;parent.removeChild(r);}}
function clearErrorMessages(form){clearErrorMessagesCSS(form);}
function clearErrorLabelsCSS(form){var i,labels=form.getElementsByTagName("label");for(i=0;i<labels.length;i++){var label=labels[i];if(label){if(label.getAttribute("class")==="errorLabel"){label.setAttribute("class","label");label.setAttribute("className","label");}}}}
function clearErrorLabels(form){clearErrorLabelsCSS(form);}
function findWWGrpNode(elem){while(elem.parentNode){elem=elem.parentNode;if(elem.className&&elem.className.match(/wwgrp/)){return elem;}}
return null;}
function findWWCtrlNode(enclosingDiv){var elems=enclosingDiv.getElementsByTagName("div");for(i=0;i<elems.length;++i){if(elems[i].className&&elems[i].className.match(/(wwlbl|wwctrl)/)){return elems[i];}}
elems=enclosingDiv.getElementsByTagName("span");for(i=0;i<elems.length;++i){if(elems[i].className&&elems[i].className.match(/(wwlbl|wwctrl)/)){return elems[i];}}
return enclosingDiv.getElementsByTagName("span")[0];}
function findFieldPosition(elem){if(!elem.form){alert("no form for "+elem);}
var form=elem.form;for(i=0;i<form.elements.length;i++){if(form.elements[i].name===elem.name){return i;}}
return null;}
function addErrorCSS(e,errorText){try{if(!e){return;}
var elem=(e.type?e:e[0]);var enclosingDiv=findWWGrpNode(elem);var fieldPos=findFieldPosition(elem);if(fieldPos!==null&&(firstFieldErrorPosition===null||firstFieldErrorPosition>fieldPos)){firstFieldErrorPosition=fieldPos;}
if(!enclosingDiv){alert("Could not validate: "+e.id);return;}
var label=enclosingDiv.getElementsByTagName("label")[0];if(label){label.setAttribute("class","errorLabel");label.setAttribute("className","errorLabel");}
var firstCtrNode=findWWCtrlNode(enclosingDiv);var error=document.createTextNode(errorText);var errorDiv=document.createElement("div");errorDiv.setAttribute("class","errorMessage");errorDiv.setAttribute("className","errorMessage");errorDiv.setAttribute("errorFor",elem.id);errorDiv.appendChild(error);if(!firstCtrNode&&navigator.appName==='Microsoft Internet Explorer'){enclosingDiv.insertBefore(errorDiv);}else{enclosingDiv.insertBefore(errorDiv,firstCtrNode);}}catch(err){alert("An exception occurred: "+err.name+". Error message: "+err.message);}}
function addError(e,errorText){addErrorCSS(e,errorText);}
var StrutsUtils_showValidationErrors=StrutsUtils.showValidationErrors;StrutsUtils.showValidationErrors=function(form,errors){StrutsUtils_showValidationErrors(form,errors);if(firstFieldErrorPosition!==null&&form.elements[firstFieldErrorPosition].focus){form.elements[firstFieldErrorPosition].focus();}};function clearErrorMessagesXHTML(form){var table,i,r;for(i=0;i<form.childNodes.length;i++){if(form.childNodes[i].tagName!==undefined&&form.childNodes[i].tagName.toLowerCase()==='table'){table=form.childNodes[i];break;}}
if(table===null){return;}
var rows=table.rows;if(rows===null){return;}
var rowsToDelete=[];for(i=0;i<rows.length;i++){r=rows[i];if(r.getAttribute("errorFor")!==null){rowsToDelete.push(r);}}
for(i=0;i<rowsToDelete.length;i++){r=rowsToDelete[i];table.deleteRow(r.rowIndex);}}
function clearErrorMessages(form){clearErrorMessagesXHTML(form);}
function clearErrorLabelsXHTML(form){var i,elements=form.elements;for(i=0;i<elements.length;i++){var parentEl=elements[i];while(parentEl.nodeName.toUpperCase()!=="TR"&&parentEl.nodeName.toUpperCase()!=="FORM"){parentEl=parentEl.parentNode;}
if(parentEl.nodeName.toUpperCase()==="FORM"){parentEl=null;}
if(parentEl&&parentEl.cells){var labelRow=parentEl.cells.length>1?parentEl:StrutsUtils.previousElement(parentEl,"tr");if(labelRow){var cells=labelRow.cells;if(cells&&cells.length>=1){var label=cells[0].getElementsByTagName("label")[0];if(label){label.setAttribute("class","label");label.setAttribute("className","label");}}}}}}
function clearErrorLabels(form){clearErrorLabelsXHTML(form);}
function addErrorXHTML(e,errorText){try{var row=(e.type?e:e[0]);while(row.nodeName.toUpperCase()!=="TR"){row=row.parentNode;}
var table=row.parentNode;var error=document.createTextNode(errorText);var tr=document.createElement("tr");var td=document.createElement("td");var span=document.createElement("span");td.align="center";td.valign="top";td.colSpan=2;span.setAttribute("class","errorMessage");span.setAttribute("className","errorMessage");span.appendChild(error);td.appendChild(span);tr.appendChild(td);tr.setAttribute("errorFor",e.id);table.insertBefore(tr,row);var labelRow=row.cells.length>1?row:StrutsUtils.previousElement(tr,"tr");var label=labelRow.cells[0].getElementsByTagName("label")[0];if(label){label.setAttribute("class","errorLabel");label.setAttribute("className","errorLabel");}}catch(err){alert(err);}}
function addError(e,errorText){addErrorXHTML(e,errorText);}
