var originalCssClasses = new Array();

var originalCssClassesInitialized = new Array();

function NOF_isRequired( formField ) {

if ( formField.type != undefined ) {

if ( (formField.type).indexOf("checkbox") != -1 ) {

if ( formField.checked ) {

return true;

}

} else if ( (formField.type).indexOf("radio") != -1 ) {

if ( formField.checked ) {

return true;

}

} else if ( (formField.type).indexOf("select") != -1 ) {

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

if ( formField[ i ].selected && formField[ i ].value != "" ) {

return true;

}

}

} else {

if ( formField.value != null && formField.value != "" ) {

return true;

}

}

} else {

if ( formField.length > 1 ) {

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

if ( (formField[ i ].type).indexOf("select") != -1 ) {

if ( formField[ i ].selected && formField[ i ].value != "" ) {

return true;

}

}

else {

if ( formField[ i ].checked ) {

return true;

}

}

}

} else {

if ( formField[ 0 ].selected ) {

return true;

}

}

}

return false;

}

function NOF_isEmailAddress( formField ) {

var emailRe = /^(\w[-\w\.]*)?\w(@|%40)\w([\-\.]?\w)*\.[a-z]{2,5}$/i;

return ( ( formField.value != "" ) ? ( NOF_isRequired( formField ) && emailRe.test( formField.value ) ) : true );

}

function NOF_isDomainName( formField ) {

var domainRe = /^\w([\-\.]?\w)*\.[a-z]{2,5}$/i;

return ( ( formField.value != "" ) ? ( NOF_isRequired( formField ) && domainRe.test( formField.value ) ) : true );

}

function NOF_isNumber( formField ) {

var numberRe = /^\d+(\.?\d+)*$/;

return ( ( formField.value != "" ) ? (NOF_isRequired( formField ) && numberRe.test( formField.value ) ) : true );

}

function NOF_isInRange( formField, min, max ) {

var value = NOF_isRequired( formField ) ? parseFloat( formField.value ) : NaN;

var minValue = parseFloat( min );

var maxValue = parseFloat( max );

return ( ( formField.value != "" ) ? (!isNaN( value ) && value >= minValue && value <= maxValue ) : true );

}

function NOF_isLengthInRange( formField, min, max ) {

return ( ( formField.value != "" ) ? (NOF_isRequired( formField ) && formField.value.length >= min && formField.value.length <= max ) : true );

}

function NOF_isPhoneNumber( formField, mask ) {

var newPhoneNumber = "";

if ( formField.value == "" ) { return true; }

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

if ( mask.charAt(i).toLowerCase() == "d" ) {

if ( i < formField.value.length ) {

newPhoneNumber = newPhoneNumber + formField.value.charAt(i);

}

else {

newPhoneNumber = newPhoneNumber + mask.charAt(i);

}

}

else {

newPhoneNumber = newPhoneNumber + mask.charAt(i);

}

}

return ( NOF_isRequired( formField ) && ( newPhoneNumber == formField.value ) );

}

function NOF_isValidCreditCard( formField, cardType ) {

if ( formField.value == "" ) { return true; }

var ccType = cardType.toLowerCase();

var ccNumber = NOF_isRequired( formField ) ? formField.value : "";

var ccNumberLength = ccNumber.length;

var firstChar = ccNumber.charAt( 0 );

var secondChar = ccNumber.charAt( 1 );

if ( ccType == "visa" ) {

return ( ( ccNumberLength == 16 || ccNumberLength == 13 ) && firstChar == "4" );

}

else if ( ccType == "mastercard" ) {

return ( ccNumberLength == 16 && firstChar == "5" && parseInt( secondChar ) >= 1 && parseInt( secondChar ) <= 5 );

}

else if ( ccType == "american express" ) {

return ( ccNumberLength == 15 && firstChar == "3" && ( secondChar == "4" || secondChar == "7" ) );

}

else if ( ccType == "discover" ) {

return ( ccNumberLength == 16 && ccNumber.substring( 0, 4 ) == "6011" );

}

return false;

}

function NOF_isValidDate( formField, mask ) {

if ( formField.value == "" ) { return true; }

var dateParts = new Array();

var currDate = new Date();

var currYear = currDate.getYear();

var strDate = NOF_isRequired( formField ) ? formField.value : "";

var delimitationChar = "/";

var monthMask = "mm", dayMask = "dd", yearMask = "yyyy";

var monthPos = 0, dayPos = 1, yearPos = 2;

if ( mask.substring(0,1).toLowerCase() == "m" ) {

var re = new RegExp("([mM]{2,3})([\/\s\-\|\.])([dD]{2})([\/\s\-\|\.])([yY]{4}|[yY]{2})");

var m = re.exec(mask);

if (m == null) {

return false;

} else {

if ( m.length == 6 ) {

delimitationChar = m[2];

if ( delimitationChar == m[4] ) {

monthMask = m[1];

dayMask = m[3];

yearMask = m[5];

}

else {

}

}

else {

}

}

}

else if ( mask.substring(0,1).toLowerCase() == "d" ) {

var re = new RegExp("([dD]{2})([\/\s\-\|\.])([mM]{2,3})([\/\s\-\|\.])([yY]{4}|[yY]{2})");

var m = re.exec(mask);

monthPos = 1;

dayPos = 0;

yearPos = 2;

if (m == null) {

alert("No match");

} else {

if ( m.length == 6 ) {

delimitationChar = m[2];

if ( delimitationChar == m[4] ) {

dayMask = m[1];

monthMask = m[3];

yearMask = m[5];

}

else {

}

}

else {

}

}

}

else {

}

if ( currYear.toString().length < 4 ) {

currYear = currYear + 1900;

}

if ( strDate.indexOf( delimitationChar ) > 0) {

dateParts = strDate.split( delimitationChar );

if ( dateParts.length != 3 ) {

return false;

}

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

if ( isNaN( dateParts[ i ] ) ) {

return false;

}

}

var month = parseInt( dateParts[ monthPos ], 10);

if ( month < 1 || month > 12 ) {

return false;

}

var day = parseInt( dateParts[ dayPos ], 10);

if ( day < 1 || day > 31 ) {

return false;

}

var year = parseInt( dateParts[ yearPos ], 10);

if ( yearMask.length == 2 ) {

if ( dateParts[ yearPos ].length != 2 ) {

return false;

}

}

else {

if ( year < currYear - 200 || year > currYear + 200 ) {

return false;

}

}

return true;

}

return false;

}

function NOF_validateForm( formObj, validationInfo, showAllErrors, errorOutput, errMessage ) {

var errMsg = "";

var fieldLabelId;

var fieldId;

if ( originalCssClassesInitialized[formObj.name] == null )

{

originalCssClassesInitialized[formObj.name] = false;

}

if ( originalCssClasses[formObj.name] == null )

{

originalCssClasses[formObj.name] = new Array;

}

if ( !originalCssClassesInitialized[formObj.name] ) {

for ( var elementName in validationInfo ) {

fieldId = NOF_getElementId( formObj.elements[ elementName ] );

fieldLabelId = NOF_getElementLabelObj( fieldId );

originalCssClasses[formObj.name][ elementName ] = new Array();

originalCssClasses[formObj.name][ elementName ][ "label" ] = new Array();

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

originalCssClasses[formObj.name][ elementName ][ "label" ][ i ] = NOF_getElementProperty( fieldLabelId[ i ], "className" );

}

originalCssClasses[formObj.name][ elementName ][ "field" ] = NOF_getElementProperty( fieldId, "className" );

}

originalCssClassesInitialized[formObj.name] = true;

}

else {

for ( var i in originalCssClasses[formObj.name] ) {

fieldId = NOF_getElementId( formObj.elements[ i ] );

fieldLabelId = NOF_getElementLabelObj( fieldId );

for ( var j = 0; j < fieldLabelId.length; j++ ) {

NOF_setElementProperty( fieldLabelId[j], "className", originalCssClasses[formObj.name][ i ][ "label" ][ j ] );

}

NOF_setElementProperty( fieldId, "className", originalCssClasses[formObj.name][ i ][ "field" ] );

}

}

for ( var i in validationInfo ) {

var errorFound = false;

for ( var j = 0; j < validationInfo[ i ].length; j++ ) {

var validationRecord = validationInfo[ i ][ j ];

var functionName = validationRecord[ 0 ];

var functionArgs = validationRecord[ 1 ];

var errorMessage = validationRecord[ 2 ];

var errorLabelCss = validationRecord[ 3 ];

var errorFieldCss = validationRecord[ 4 ];

if ( functionArgs.length

? eval( "!" + functionName + "(formObj.elements['" + i + "'],'" + functionArgs.join("','") + "')" )

: eval( "!" + functionName + "(formObj.elements['" + i + "'])") ) {

errorFound = true;

errMsg += "\n" + errorMessage;

fieldId = NOF_getElementId( formObj.elements[ i ] );

fieldLabelId = NOF_getElementLabelObj( fieldId );

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

fieldLabelId[k].className = errorLabelCss;

NOF_setElementProperty( fieldLabelId[j], "className", errorLabelCss );

}

NOF_setElementProperty( fieldId,"className", errorFieldCss );

}

if ( errorFound && !showAllErrors ) {

break;

}

}

}

if ( errMsg != "" ) {

if ( errMessage == null || errMessage == "" ) {

errMessage = "";

} else {

errMessage = errMessage + "\n";

}

if ( errorOutput == null || errorOutput == "" ) {

alert( errMessage + errMsg );

} else {

NOF_setElementProperty( errorOutput, "innerHTML", (errMessage + errMsg).split("\n").join("<BR>") );

}

return false;

} else {

if ( errorOutput != null || errorOutput != "" ) {

NOF_setElementProperty( errorOutput, "innerHTML", "" );

}

}

return true;

}

function NOF_getElementId( element ) {

if ( element.id == undefined ) {

if ( element.length > 1 && element[ 0 ] != undefined ) {

return ( element[ 0 ].id != undefined ) ? element[ 0 ].id : "";

}

return "";

}

return element.id;

}

function NOF_getElementProperty( element, property ) {

if ( typeof element != "string" ) {

if ( element.property != undefined ) {

return eval("element." + property);

} else {

return "";

}

} else {

if ( document.getElementById ) {

if ( document.getElementById( element ) != null ) {

return eval( "document.getElementById('" + element + "')." + property );

}

} else {

if ( document.layers[ element ] != undefined ) {

}

}

}

return "";

}

function NOF_getElementLabelObj( element ) {

var labelArray = new Array();

if ( element != "" ) {

if ( document.getElementById ) {

if ( document.getElementById( element ) != null ) {

for ( var i = 0; i < document.getElementsByTagName( "label" ).length; i++ ) {

if ( document.getElementsByTagName( "label" )[ i ].phpFor == document.getElementById( element ).id ) {

labelArray[ labelArray.length ] = document.getElementsByTagName( "label" )[ i ];

}

}

}

} else {

alert(element + " : " + document.layers[ element ]);

if ( document.layers[ element ] != undefined ) {

alert('NOF_getElementLabelObj_: ' + document.ids[element]);

}

}

}

return labelArray;

}

function NOF_setElementProperty( element, property, value ) {

if ( document.getElementById ) {

if ( document.getElementById( element ) != null ) {

eval( "document.getElementById('" + element + "')." + property + "= value;" );

}

} else {

if ( document.layers[ element ] != undefined ) {

if ( property == "innerHTML" ) {

with ( document.layers[ element ].document ) {

open();

write( "<font class='lbErr'>" + value + "</font>" );

close();

}

}

}

}

}




