
var inputRuleList = new Array();
inputRuleList["ruleMandatory"] = new RegExp(".");
inputRuleList["ruleIATA"] = new RegExp("[0-9]{8}");
inputRuleList["ruleNumeric"] = new RegExp("[0-9]{1,}");
inputRuleList["ruleAlpha"] = new RegExp("[A-Za-z]{1,}");
inputRuleList["ruleEmail"] = new RegExp(".{1,}@.{1,}..{1,}");
inputRuleList["ruleInteger"] = new RegExp("^[0-9]*$");
inputRuleList["ruleMustBeNull"] = new RegExp("^$");
var inputRuleMessage = new Array();
inputRuleMessage["ruleMandatory"] = "- mandatory field";
inputRuleMessage["ruleConditional"] = "- conditional field";
inputRuleMessage["ruleIATA"] = "- 8-digit numeric required";
inputRuleMessage["ruleNumeric"] = "- Not numeric";
inputRuleMessage["ruleAlpha"] = "- Not alphabetic";
inputRuleMessage["ruleEmail"] = "- Invalid email format";
inputRuleMessage["ruleInteger"] = "- Not numeric";
inputRuleMessage["ruleMustBeNull"] = "- Must be null";
var inputConditionList = new Array();
var inputConditionLabel = new Array();
var conditionalInput = new Array();
var overrideLabel = new Array();
var dontAppendErrMsg = new Array();
var sameAsInput = new Array();
var notEqualInput = new Array();
function FieldElement(formNameParam, forValue, forLabel)
{
this.formName = formNameParam;
this.fieldId = forValue;
this.fieldName = getIdElement(forValue).name;
this.fieldType = eval("document." + formNameParam + "." + forValue + ".type");
this.fieldValue = returnInputValue(this.formName, this.fieldName, this.fieldId);
this.fieldClassName = getIdElement(forValue).className;
this.fieldLabel = forLabel;
this.conditional = (typeof conditionalInput[this.fieldName] == "undefined") ? false : true;
this.conditionalPassed = (this.conditional && eval(conditionalInput[this.fieldName])) ? true : false;
this.sameAs = (typeof sameAsInput[this.fieldName] == "undefined") ? false : true;
this.sameAsPassed = false;
if(this.sameAs)
{
var a = returnInputValue(this.formName, this.fieldName, this.fieldId);
var b = returnInputValue(this.formName, sameAsInput[this.fieldName], this.fieldId);
this.sameAsPassed = (a == b) ? true : false;
}
this.notEqual = (typeof notEqualInput[this.fieldName] == "undefined") ? false : true;
this.notEqualPassed = false;
if(this.notEqual)
{
var a = returnInputValue(this.formName, this.fieldName, this.fieldId);
var b = returnInputValue(this.formName, notEqualInput[this.fieldName], this.fieldId);
this.notEqualPassed = (a != b) ? true : false;
}
if( typeof inputConditionList[ this.fieldName ] == "undefined" )
{
this.externalCondition = null;
this.externalConditionPassed = false;
}
else
{
this.externalCondition = inputConditionList[ this.fieldName ];
this.externalConditionPassed = eval( inputConditionList[ this.fieldName ] );
}
}
function hideBLSErrors()
{
if(typeof blsErrors != "undefined")
{
getIdElement("blsErrors").style.display="none";
}
}
function checkInputFields(formParam)
{
hideBLSErrors();
var displayErrMsg = "";
var oldFieldName = "";
var formRef = eval( "document." + formParam );
if(getChildElementsByTagName(formRef,'label').length>0)
{
var labels = getChildElementsByTagName(formRef,'label');
for(var i=0; i<labels.length; i++)
{
var fieldObj = new FieldElement(formParam, labels[i].htmlFor, labels[i].innerHTML);
var errMsg = checkValidInput(fieldObj);
if(errMsg == "")
{
labels[i].className = removeErrorClass(labels[i].className);
}
else
{
if (typeof dontAppendErrMsg[fieldObj.fieldName] != "undefined") {
errMsg = "";
}
if(fieldObj.fieldName != oldFieldName)
{
if (typeof overrideLabel[fieldObj.fieldName] != "undefined")
{
displayErrMsg += "- " + overrideLabel[fieldObj.fieldName] + " " + errMsg + "<br />";
}
else
{
displayErrMsg += "- " + fieldObj.fieldLabel + " " + errMsg + "<br />";
}
}
labels[i].className = "errorDisplay " + labels[i].className;
oldFieldName = fieldObj.fieldName;
}
}
}
if(displayErrMsg != "")
{
getIdElement("errorMsgArea").style.display = "block";
getIdElement("errorMsgArea").innerHTML = errMsgIntro + displayErrMsg;
document.body.scrollTop = 1;
return false;
}
else
{
getIdElement("errorMsgArea").style.display = "none";
return true;
}
}
function checkValidInput(fieldObj)
{
var errMsg = "";
var classArray = fieldObj.fieldClassName.split(" ");
if(classArray.length != undefined)
{
for(var i=0; i < classArray.length; i++)
{
if (typeof inputRuleList[classArray[i]] != "undefined")
{
if(!fieldObj.conditional || fieldObj.conditionalPassed)
{
if(!fieldObj.fieldValue.match(inputRuleList[classArray[i]]))
{
errMsg = inputRuleMessage[classArray[i]];
break;
}
}
}
}
}
var defaultError = "- input not as expected, please check format";
if(errMsg == "")
{
if(!fieldObj.conditional || fieldObj.conditionalPassed)
{
if(fieldObj.sameAs && !fieldObj.sameAsPassed)
{
var overrideMessage = inputConditionLabel[ fieldObj.fieldName ];
if( overrideMessage )
{
errMsg = overrideMessage;
}
else
{
errMsg = defaultError;
}
}
}
}
if(errMsg == "")
{
if(!fieldObj.conditional || fieldObj.conditionalPassed)
{
if(fieldObj.notEqual && !fieldObj.notEqualPassed)
{
var overrideMessage = inputConditionLabel[ fieldObj.fieldName ];
if( overrideMessage )
{
errMsg = overrideMessage;
}
else
{
errMsg = fieldObj.fieldName + " " + defaultError;
}
}
}
}
if(errMsg == "" )
{
if(!fieldObj.conditional || fieldObj.conditionalPassed)
{
if(fieldObj.externalCondition && !fieldObj.externalConditionPassed)
{
var overrideMessage = inputConditionLabel[ fieldObj.fieldName ];
if( overrideMessage )
{
errMsg = overrideMessage;
}
else
{
errMsg = fieldObj.fieldName + " " + defaultError;
}
}
}
}
return errMsg;
}
function returnInputValueByObject(fieldObj)
{
var returnValue = "";
var formHeader = "document." + fieldObj.formName + "." + fieldObj.fieldName;
switch(fieldObj.fieldType)
{
case 'text': returnValue = eval(formHeader + ".value"); break;
case 'password': returnValue = eval(formHeader + ".value"); break;
case 'textarea': returnValue = eval(formHeader + ".value"); break;
case 'select-one': returnValue = eval(formHeader + ".value"); break;
case 'checkbox': returnValue = (eval(formHeader + ".checked")) ? "checked" : ""; break;
case 'radio': var radioGroup = document.forms[fieldObj.formName].elements[fieldObj.fieldName];
if(radioGroup.length == undefined)
{
if(radioGroup.checked)
{
returnValue = radioGroup.value;
}
}
else
{
for(var i=0; i < radioGroup.length; i++)
{
if(radioGroup[i].checked)
{
returnValue = radioGroup[i].value;
}
}
}
break;
}
return returnValue;
}
function returnInputValue(formParam, fieldParam, idParam)
{
var returnValue = "";
var formHeader = "document." + formParam + "." + fieldParam;
var typeParam = eval("document." + formParam + "." + idParam + ".type");
switch(typeParam)
{
case 'text': returnValue = eval(formHeader + ".value"); break;
case 'password': returnValue = eval(formHeader + ".value"); break;
case 'textarea': returnValue = eval(formHeader + ".value"); break;
case 'select-one': returnValue = eval(formHeader + ".value"); break;
case 'checkbox': returnValue = (eval(formHeader + ".checked")) ? "checked" : ""; break;
case 'radio': var radioGroup = document.forms[formParam].elements[fieldParam];
if(radioGroup.length == undefined)
{
if(radioGroup.checked)
{
returnValue = radioGroup.value;
}
}
else
{
for(var i=0; i < radioGroup.length; i++)
{
if(radioGroup[i].checked)
{
returnValue = radioGroup[i].value;
}
}
}
break;
}
return returnValue;
}
function removeErrorClass(classString, stringToRemove)
{
if (typeof stringToRemove == 'undefined' || stringToRemove == '')
{
stringToRemove = "errorDisplay";
}
var classArray = classString.split(" ");
var newClassString = "";
if(classArray.length > 0)
{
for(var i=0; i < classArray.length; i++)
{
if(classArray[i] != stringToRemove)
{
newClassString = newClassString + classArray[i] + " ";
}
}
}
return newClassString;
}
function removeMandatoryClass(fieldParam)
{
if(document.getElementsByTagName('label').length>0)
{
var labels = document.getElementsByTagName('label');
for(var i=0; i<labels.length; i++)
{
if(labels[i].htmlFor == fieldParam)
{
labels[i].className += " nonMandatory";
labels[i].className = removeErrorClass(labels[i].className,"mandatory");
getIdElement(fieldParam).className = removeErrorClass(getIdElement(fieldParam).className, "ruleMandatory");
}
}
}
}
function addMandatoryClass(fieldParam)
{
if(document.getElementsByTagName('label').length>0)
{
var labels = document.getElementsByTagName('label');
for(var i=0; i<labels.length; i++)
{
if(labels[i].htmlFor == fieldParam)
{
labels[i].className += " mandatory";
labels[i].className = removeErrorClass(labels[i].className,"nonMandatory");
getIdElement(fieldParam).className += " ruleMandatory";
}
}
}
}
function resetInputLabels(classToRemove)
{
if (typeof classToRemove == 'undefined' || classToRemove == '')
{
classToRemove = "errorDisplay";
}
if(document.getElementsByTagName('label').length>0)
{
var labels = document.getElementsByTagName('label');
for(var i=0; i<labels.length; i++)
{
labels[i].className = removeErrorClass(labels[i].className, classToRemove);
}
}
getIdElement("errorMsgArea").style.display = "none";
}
function getChildElementsByTagName( parentNode, tagName )
{
if( parentNode.nodeType == 1 )
{
var nodes = new Array();
if( parentNode.childNodes.length > 0 )
{
if( parentNode.nodeName == tagName.toUpperCase() )
{
nodes = nodes.concat( parentNode );
}
for( var i = 0; i < parentNode.childNodes.length; i++ )
{
var children = getChildElementsByTagName( parentNode.childNodes[ i ], tagName );
if( children && children.length > 0 )
{
nodes = nodes.concat( children );
}
}
}
return nodes;
}
}
