var formeditExists="true";

var initMsg, initField = ""
var errMsg, errFld;
var daysInMonth = new Array ( 0,31,29,31,30,31,30,31,31,30,31,30,31);

function isCanceled(_img) {
    var goBack = false;
    var _elLeng = document.forms[0].elements.length;
    for ( var i=0; i<_elLeng; i++ ) {
        if ( document.forms[0].elements[i].name == _img ) {
            goBack=true;
            break;
        }
    }
    return goBack;
};

function chkInitialize() {
    errMsg = initMsg;
    errFld = initField;
};

function chkErrors( ) {
    if (errMsg == initMsg) {
        return true;
    }
    alert (errMsg);
    errFld.focus();
    if ( errFld.type == "select-one" ) {
//        errFld.select();
    }

    return false;
};

function Warning ( wField,wMessage ) {
//    errMsg += "\n" + wMessage;
    if ( errMsg == initMsg ) {
        errMsg = wMessage;
        errFld = wField;
    }
    return;
};

function isStrictAlpha (_char ) {
    var _ch = _char.toLowerCase();
    var _frCh = "àÀâÂéÉèÈêÊëËîÎïÏôÔùÙûÛçÇ";
    if ( (_ch >= "a"  && _ch <= "z") || _frCh.indexOf(_char) != -1 ) {
        return true;
    }
    return false;
};

function isAlpha (_char ) {
    if ( isStrictAlpha(_char) ) {
        return true;
    }
    return ( _char == "-" || _char == "." || _char == " " || _char == "'" );
};

function isAlphaNum(ch) {
    if ( isStrictAlpha(ch) ) {
        return true;
    }
    return (  (ch >= 0 && ch <= 9) || ch == "-" || ch == "#" || ch == ".");
};

function isEmpty(eField) {
    if ( !eField ) {
        return false;
    }
    if ((eField.value != null) && (eField.value.length != 0)) {
        for (i = 0; i < eField.value.length; i++) {
            var c = eField.value.charAt(i);
            if (whitespace.indexOf(c) == -1) {
                return false;
            }
        }
    }
    return true;
};

function chkAlpha ( aField ) {
    if ( isEmpty( aField) ) {
        return true;
    }
    if ( aField.value.substr(0,1) == " " ) {
        aField.value = aField.value.substr(1);
    }
    var aLen = aField.value.length;
    var aVal = aField.value.toLowerCase();
    for ( var i=0; i<aLen; i++ ) {
        if ( !isAlpha( aVal.substr(i, 1)) ) {
            return false;
        }
    }
    return true;
};

function chkAlphanumeric ( mFld ) {
    var mVal = mFld.value.toLowerCase();
    if ( mVal.substr(0,1) == " " ) {
        mVal = mVal.substr(1);
    }
    var mLen = mVal.length;
    mVal = mVal.toLowerCase();
    for ( var i=0; i<mLen; i++ ) {
        if ( !isAlphaNum( mVal.substr(i, 1)) ) {
            return false;
        }
    }
    return true;
};

function isNull(nField) {
    if ( (nField != null) && (nField.length != 0) ) {
        for (i = 0; i < nField.length; i++) {
            var c = nField.charAt(i);
            if (whitespace.indexOf(c) == -1) {
                return false;
            }
        }
    }
    return true;
};

function chkMandatory(mField,mName) {
    if (isEmpty(mField)) {
//        mMessage = genMsgprefix + mName + mMsgbody+ mName + genMsgsuffix;
        mMessage = genMsgprefix + mName + mMsgbody;
        Warning(mField,mMessage);
        return false;
    }

    return true;
};

function chkNumber(nField,nName,nFlag) {
    if ( isEmpty( nField ) ) {
        if (nFlag=="M") {
            return chkMandatory(nField,nName);
        }
        return true;
    }
    if (isNaN(nField.value)) {
        nMessage = genMsgprefix + nName + nMsgsuffix;
        Warning(nField,nMessage);
        return false;
    }
    return true;
};

function valDigits ( number ) {
    // no commas or spaces allowed ( french no spaces or perisods)
    var invalChars, ch;
    if ( document.forms[0].C.value == "E" ) {
        invalChars = "\$\, ";
    } else {
        invalChars = "\$ ";
    }
	
    for ( var i = 0;  i < number.length;  i++) {
         ch = number.charAt(i);
        for ( var j = 0;  j < invalChars.length;  j++){
            if ( ch == invalChars.charAt(j)) {
                return false;
            }
        }
    }
    
    return (true);
}

// min max range for dollar values
function chkMinMaxAmt ( _field, _fName, _max, _min, _flag ) {
    if ( _flag == "" ) {
        _flag="n";
    }
    var _tmpVal = _field.value.toString();
    if ( _tmpVal.indexOf(",") != -1 ) {
        var _i = _tmpVal.indexOf(",");
        var _newVal = _tmpVal.substr(0, _i) + _tmpVal.substr(_i+1);
        _tmpVal = Number(_newVal);
    }
    var _orig = _field.value;
    _field.value = _tmpVal;
    chkNumRange ( _field, _fName, _min, _max, _flag, "n" );
    _field.value = _orig;
    return;
};

// min max for non dollar values
function chkNumRange(nrField,nrName,nrStart,nrFinish,nrFlag, nrValid) {
    if ( isEmpty(nrField) ) {
        if (nrFlag=="M") {
            return chkMandatory(nrField,nrName);
        }
//        nrField.value = "";
        return true;
    }
    if (chkNumber(nrField,nrName,nrFlag)) {
        if (nrStart <= nrField.value && nrField.value <= nrFinish) {
            if ( nrValid == "V" ) {
                if ( ! valDigits(nrField.value) ) {
                    nrMessage = genMsgprefix + nrName + nrIval;
                    Warning(nrField,nrMessage);
                    return false;
                }
                if ( Math.abs(nrField.value) != nrField.value ) {
                    nrMessage = genMsgprefix + nrName + nrRound;
                    Warning(nrField,nrMessage);
                    return false;
                }
            }
        } else {
            nrMessage = genMsgprefix + nrName + nrMsgbody1 + nrStart + nrMsgbody2 + nrFinish + genMsgsuffix1;
            Warning(nrField,nrMessage);
            return false;
        }
    }
    return true;
};

function bareNum( nFld ) {
    var nbr = nFld.value.toString();

    for ( var i=0; i<10; i++ ) {
        var _pos = nbr.indexOf(" ");
        if (_pos != -1 ) {
            i = 0;
            nbr = nbr.substr(0, _pos) + nbr.substr(_pos+1);
        } else {
            i = 99;
        }
    }
    if ( document.forms[0].C.value == "F" ) {
        var _pos = nbr.lastIndexOf(",");
        if (_pos != -1 ) {
            nbr = nbr.substr(0, _pos) + "." + nbr.substr(_pos+1);
        }
    }
    for ( var i=0; i<10; i++ ) {
        var _pos = nbr.indexOf(",");
        if (_pos != -1 ) {
            i = 0;
            nbr = nbr.substr(0, _pos) + nbr.substr(_pos+1);
        } else {
            i = 99;
        }
    }

    return Number( nbr );
};

function chkRange ( _field, _fName, _min, _max, _req, _strict ) {
    if ( !isEmpty(_field) ) {
        var _orig = _field.value;

        var _tmpVal = bareNum(_field);
        _field.value = _tmpVal;
    }
    chkNumRange ( _field, _fName, _min, _max, _req, _strict );
    if ( !isEmpty(_field) ) {
        _field.value = _orig;
    }
    return;
};

function chkIntRange(nrField,nrName,nrStart,nrFinish,nrFlag) {
    if (isEmpty(nrField)) {
        if (nrFlag=="M") {
            return chkMandatory(nrField,nrName);
        } else {
            return true;
        }
    }
    if (chkInteger(nrField,nrName,nrFlag)) {
        if (nrStart <= nrField.value && nrField.value <= nrFinish) {
            return true;
        } else {
            nrMessage = genMsgprefix + nrName + nrMsgbody1 + nrStart + nrMsgbody2 + nrFinish + genMsgsuffix;
            Warning(nrField,nrMessage);
            return false;
        }
    } else {
        return false;
    }
};

function retInt(tFieldnum) {
    if (isNaN(tFieldnum.value) || tFieldnum.value=='') {
        return 0;
    }
    return parseInt(tFieldnum.value);
};

function chkInteger(iField,iName,iFlag) {
    if (!isEmpty(iField))  {
        for (var i = 1; i <= iField.value.length; i++) {
            if (iField.value.substr(i,1)=='.') {
                iMessage = genMsgprefix + iName + nMsgsuffix;
                Warning(iField,iMessage);
                return false;
            }
        }
    }
    return chkNumber(iField,iName,iFlag);
};

function daysInFebruary (year) {
    // February has 29 days in any year evenly divisible by four ,
    // EXCEPT for centurial years which are not also divisible by 400.
    return ( ((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0) ) ) ? 29 : 28 );
};

function calcDays (cMonth,cYear) {
    var cYrind=cYear.selectedIndex;
    var cYr=cYear.options[cYrind].text;
    var cMnth=cMonth.selectedIndex; var lastDay="";

    if (cMnth != 2 ) {
        return ( lastDay = daysInMonth[cMnth] );
    } else {
        return ( lastDay = daysInFebruary(cYr) );
    }
};

function verifyDay(vDay) {
    var vPtr=vDay.selectedIndex;
    if ( vDay.options[vPtr].text != "" ) {
        return true;
    }
    vDay.focus();
    return false;
};

function isPostDate(sYr, sMon, sDay, fYr, fMon, fDay) {
    var sDate,fDate,_ptr,_yr,_mon,_day,_tmp;

    _ptr=sYr.selectedIndex;
    _yr=sYr.options[_ptr].value;
    _mon=(101+sMon.selectedIndex).toString().substr(1,2);
    _day=(101+sDay.selectedIndex).toString().substr(1,2);
    sDate=_yr+_mon+_day;

    _ptr=fYr.selectedIndex;
    _yr=fYr.options[_ptr].value;
    _mon=(101+fMon.selectedIndex).toString().substr(1,2);
    _day=(101+fDay.selectedIndex).toString().substr(1,2);
    fDate=_yr+_mon+_day;

    return (sDate < fDate);
};

function isPostSysDate(sYr, sMon, sDay, fYr, fMon, fDay) {
    var sDate,fDate,_ptr,_yr,_mon,_day,_tmp;
    sDate=sYr.value+sMon.value+sDay.value;

    _ptr=fYr.selectedIndex;
    _yr=fYr.options[_ptr].value;
    _ptr=101+fMon.selectedIndex;
    _mon=_ptr.toString().substr(1,2);
    _day=(101+fDay.selectedIndex).toString().substr(1,2);
    fDate=_yr+_mon+_day;

    return (sDate < fDate);
};

function chkDatecurrent(dtYear,dtMonth,dtDay,dtName,dtFlag) {
    return (new Date(dtYear,dtMonth-1,dtDay) > new Date());
};

function getMinAge (prov) {
    if ( prov == "AB" || prov == "MB" || prov == "ON" || prov == "PE" || prov =="QC" || prov == "SK" ) {
        return 18;
    } else {
        return 19;
    }
};

function chkAgeMaj(prov, Ayr, Amn, Ady, aName ) {
    var yIdx = Ayr.selectedIndex;
    var year = Ayr[yIdx].text;

    var mon  = Amn.selectedIndex;

    var day  = Ady.selectedIndex;

    var pIdx = prov.selectedIndex;
    var pVal = prov[pIdx].value;

    var min = getMinAge(pVal);
    var minYr = Math.abs(document.forms[0].SYSYEAR.value) - min;

    if ( year == minYr ) {
        if ( mon == document.forms[0].SYSMONTH.value ) {
            if ( day > document.forms[0].SYSDAY.value ) {
                aMsg = genMsgprefix + aName + ageMsgPrefix + min.toString() + ageMsgSuffix;
                Warning ( Ayr, aMsg);
                return false;
            }
        } else {
            if ( mon > document.forms[0].SYSMONTH.value ) {
                aMsg = genMsgprefix + aName + ageMsgPrefix + min.toString() + ageMsgSuffix;
                Warning ( Ayr, aMsg);
                return false;
            }
        }
    } else {
        if ( year > minYr ) {
            aMsg = genMsgprefix + aName + ageMsgPrefix + min.toString() + ageMsgSuffix;
            Warning ( Ayr, aMsg);
            return false;
        }
    }
    return true;
};

// input text boes for date fields yyyy mm dd; check future date
function getDays (cMonth,cYear) {
    var daysInMonth = new Array ( 0,31,29,31,30,31,30,31,31,30,31,30,31);
    var yr = cYear.value;
    var mnth = Math.abs(cMonth.value);
    if (mnth != 2 ) {
        return ( daysInMonth[mnth] );
    } else {
        return ( daysInFebruary(yr) );
    }
};

function chkFutDate(year, mon, day, string, numFutDays) {
    if ( numFutDays == "" ) {
        numFutDays = 0;
    }
    var yrS = " \(Year\) ";
    var mnS = " \(Month\ )";
    var dyS = " \(Day\) ";
    if ( document.forms[0].C.value.toUpperCase() == "F" ) {
        yrS = " \(Année\) ";
        mnS = " \(Mois\) ";
        dyS = " \(Jour\) ";
    }
    if ( !chkNumber(year,string,"m") || !chkNumber(mon,string,"m") || !chkNumber(day,string,"m") ) {
        return false;
    }
    var oldYr = year.value;
    year.value = Math.abs(oldYr);
    if ( year.value.length != 4 || !chkIntRange ( year, string+ yrS , Math.abs(document.forms[0].SYSYEAR.value), Math.abs(document.forms[0].SYSYEAR.value)+26, "M" ) ) {
        year.value = oldYr;
        return;
    }

    var oldMo = mon.value;
    mon.value = oldMo;
    if ( oldMo.charAt[0] == 0 ) {
        mon.value = oldMo.substr(1,1);
    }
    if ( !chkIntRange ( mon, string+ mnS , 1, 12, "M" ) ) {
        mon.value = oldMo;
        return;
    }
    var maxDays = getDays(mon, year);

    var oldDy = day.value;
    day.value = Math.abs(oldDy);

    if ( year.value == document.forms[0].SYSYEAR.value ) {
        if ( mon.value == document.forms[0].SYSMONTH.value ) {
            chkRange ( day, string+ dyS , document.forms[0].SYSDAY.value, maxDays, "M","V" );
        } else {
            if ( mon.value > document.forms[0].SYSMONTH.value ) {
                chkRange ( day, string+ dyS, 1, maxDays, "M","V" );
            } else {
                chkRange ( mon, string+ mnS, document.forms[0].SYSMONTH.value, 12, "M","V" );
            }
        }
    } else {
        if ( year.value > document.forms[0].SYSYEAR.value ) {
            chkRange ( day, string+ dyS, 1, maxDays, "M","V" );
        } else {
            var yMsg = "The "+string+" must be a future date. Please correct.";
            Warning(year, yMsg);
        }
    }
    year.value = oldYr;
    mon.value = oldMo;
    day.value = oldDy;
    return;
};
// end check future date modules

function isAgeOfMaj (prov, Ayr, Amn, Ady ) {
    var yIdx = Ayr.selectedIndex;
    var year = Ayr[yIdx].text;
    var mon  = Amn.selectedIndex;
    var day  = Ady.selectedIndex;
    var pIdx = prov.selectedIndex;
    var pVal = prov[pIdx].value;
    var min = getMinAge(pVal);
    var minYr = Math.abs(document.forms[0].SYSYEAR.value) - min;

    if ( year == minYr ) {
        if ( mon == document.forms[0].SYSMONTH.value ) {
            if ( day > document.forms[0].SYSDAY.value ) {
                return false;
            }
        } else {
            if ( mon > document.forms[0].SYSMONTH.value ) {
                return false;
            }
        }
    } else {
        if ( year > minYr ) {
            return false;
        }
    }
    return true;
};

function chkDateymd(dtYear,dtMonth,dtDay,dtName,dtFlag) {
    if (isEmpty(dtYear) && isEmpty(dtMonth) && isEmpty(dtDay)) {
        if (dtFlag=="M") {
            return chkMandatory(dtYear,dtName);
        } else {
            return true;
        }
    }
    if (!chkNumRange(dtYear,dtMsgyy + dtName,1800,2100,"M")) {
        return false;
    } else {
        if (!chkNumRange(dtMonth,dtMsgmm + dtName,1,12,"M")) {
            return false;
        } else {
            daysInMonth[2]=daysInFebruary(dtYear.value);
            lastdate=daysInMonth[Math.abs(dtMonth.value)];
            return chkNumRange(dtDay,dtMsgdd + dtName,1,lastdate,"M");
        }
    }
};

function chkDatemd(dtMonth,dtDay,dtName,dtFlag) {
    if (isEmpty(dtMonth) && isEmpty(dtDay)) {
        if (dtFlag=="M") {
            return chkMandatory(dtMonth,dtName);
        } else {
            return true;
        }
    }
    if (!chkNumRange(dtMonth,dtMsgmm + dtName,1,12,"M")) {
        return false;
    } else {
        lastdate=daysInMonth[Math.abs(dtMonth.value)];
        return chkNumRange(dtDay,dtMsgdd + dtName,1,lastdate,"M");
    }
};

function chkDateym(dtYear,dtMonth,dtName,dtFlag) {
    if (isEmpty(dtYear) && isEmpty(dtMonth)) {
        if (dtFlag=="M") {
            return chkMandatory(dtYear,dtName);
        } else {
            return true;
        }
    }
    if (!chkNumRange(dtYear,dtMsgyy + dtName,1800,2100,"M")) {
        return false;
    } else {
        return chkNumRange(dtMonth,dtMsgmm + dtName,1,12,"M");
    }
};

function chkMod7 (_mFld) {
    var _num = _mFld.substr(0,(_mFld.length-1));
    var _chkDig = _mFld.substr((_mFld.length-1),1);

    return ( _chkDig  == (_num % 7) );
};

/**************
*   chkMod10 ( mField )
*
*   calling function MUST enusre that:
*                   - mField is a valid numeric value
*                   - pass the value of the field to be checked
*
*   Note: even-numbered field lengths have odd-numbered digits multiplied by 2
*         while odd-numbered field lengths have even-numb'd digits multiplied by 2
*
*   Mod 10 function - eg. 3974326
*       strip last digit -> 6
*       1st digit + 2nd digit*2 + 3rd digit+ 4th digit*2 etc.
*       products greater than 9 are added ie 11 = 1+1 = 2
*       sum subtracted from next highest multiple of 10, so
*
*        3+(9*2)+7+(4*2)+3+(2*2) = >  3+(1+8)+7(8)+3+4
*       => 3+9+7+8+3+4 => 34
*        therefore 40 - 34 = 6
*
**************/
function chkMod10 (mField) {
    vLen = mField.length;
    vlastNum =  Math.abs( mField.substr(vLen-1) );
    vSum = 0;
    ( vLen % 2 == 0 ? evens=true : evens=false );
    Mod10Tbl = new Array ( 0,2,4,6,8,1,3,5,7,9 );
    if (evens) {
        for ( i=0; i<vLen-1; i++) {
            if (i % 2 == 0 ) {
                j=Math.abs(mField.substr(i,1));
                vSum += Mod10Tbl[j];
            } else {
                vSum += Math.abs(mField.substr(i,1));
            }
        }
    } else {
        for ( i=0; i<vLen-1; i++) {
            if (i % 2 == 0 ) {
                vSum += Math.abs(mField.substr(i,1));
            } else {
                j=Math.abs(mField.substr(i,1));
                vSum += Mod10Tbl[j];
            }
        }
    }
    lastDigit = vSum.toString().length -1;
    vTmp = Math.abs( vSum.toString().substr(lastDigit) );
    ( vTmp == 0 ? vBase = 0 : vBase=10 );
    return ( vBase-vTmp == vlastNum ? true : false);
};

/*************
*   chkMod11 ( mField )
*
*   calling function MUST enusre that:
*                   - mField is a valid numeric value
*                   - pass the value of the field to be checked
*
*       Assume the number is 7 digits long
*       Strip the 7th digit from mField for number validation
*       Multiply the 1st number by 7, the 2nd by 6, 3rd by 5, 4th by 4,
*           5th by 3 and 6th by 2.
*       sum these values and divide by 11 keeping the remainder
*       Subtract the remainder from 11 and check against 7th digit
*
**************/
function chkMod11 (mField) {
    vLen = mField.length;
    lastNum = Math.abs( mField.substr(vLen-1) );
    vSum = 0; vMult=vLen; vTot=0;
    for ( i=0; i<vLen-1; i++) {
        vSum += Math.abs( mField.substr(i,1))*vMult;
        --vMult;
    }
    vTot = 11 - (vSum % 11);
    ( vTot > 9 ? (vTot > 10 ? vTot=1 : vTot = 0 ) : vTot=vTot );
    return ( vTot == lastNum ? true : false);
};

function chkMod11Two (mField) {
    vLen = mField.length;
    lastNum = Math.abs( mField.substr(vLen-1) );
    vSum = 0; vMult=vLen; vTot=0;
    for ( i=0; i<vLen-1; i++) {
        vSum += Math.abs( mField.substr(i,1))*vMult;
        --vMult;
    }
    if ( vSum%11 < 3 && mField%10 < 2 ) {
        return true;
    }
    vTot = 11 - (vSum % 11);
    ( vTot > 9 ? (vTot > 10 ? vTot=1 : vTot = 0 ) : vTot=vTot );

    return ( vTot == lastNum ? true : false);
};

function chkSIN(sinField,sinName,sinFlag) {
    if (isEmpty(sinField)) {
        if (sinFlag=="M") {
            return chkMandatory(sinField,sinName);
        }
        return true;
    }
    if (sinField.value.length != 9) {
        sinMessage = genMsgprefix + sinName + sinMsg3suffix;
        Warning(sinField,sinMessage);
        return false;
    }
    if (sinField.value.substr(0,3)=="9") {
        sinMessage = sinMsg4;
        Warning(sinField,sinMessage);
        return false;
    }
    if (!chkMod10(sinField.value)) {
        sinMessage = genMsgprefix + sinName + sinMsg1suffix;
        Warning(sinField,sinMessage);
        return false;
    }
    if ((sinField.value.substr(0,1)=="0") ||
       (sinField.value=="111111111") || (sinField.value=="222222222") ||
       (sinField.value=="333333333") || (sinField.value=="444444444") ||
       (sinField.value=="555555555") || (sinField.value=="666666666") ||
       (sinField.value=="777777777") || (sinField.value=="888888888") ||
       (sinField.value=="999999999") || (sinField.value=="888888880") ||
       (sinField.value=="888888889") || (sinField.value=="899999999") ||
       (sinField.value=="988888889") || (sinField.value=="998999999") ||
       (sinField.value=="999999899") || (sinField.value=="999999980") ||
       (sinField.value=="999999988") || (sinField.value=="999999989") ||
       (sinField.value=="999999990") || (sinField.value=="999999991") ||
       (sinField.value=="999999994") || (sinField.value=="999999998"))
    {
        sinMessage = genMsgprefix + sinName + sinMsg2suffix;
        Warning(sinField,sinMessage);
        return false;
    }
    return true;
};

function chkTransit(trField,trName,trFlag) {
    if (chkInteger(trField,trName,trFlag) && !isEmpty(trField)) {
        if (trField.value.length!=5) {
	    trMessage = genMsgprefix + trName  + trMsg1suffix;
            Warning(trField,trMessage);
        } else {
            trValue=trField.value.substr(4,1)+trField.value.substr(1,3)+trField.value.substr(0,1);
            if (!chkMod10(trValue)) {
                trMessage = genMsgprefix + trName + trMsg2suffix;
                Warning(trField,trMessage);
            }
        }
    }
};

function chkAcct(aField,aName,aFlag,aLen,aMod10Flag) {
    if ( chkInteger(aField, aName, aFlag) ) {
        aMessage = genMsgprefix + aName  + aMsgbody + aLen + aMsgsuffix;
        acctErr=false;
        if (aField.value.length != aLen) {
            acctErr=true;
        } else {
            if (aMod10Flag) {
                if (!chkMod10(aField.value) ) {
                    acctErr=true;
                }
            } else {
                if (!chkMod11(aField.value) ) {
                    acctErr=true;
                }
            }
        }
        if ( acctErr ) {
            Warning(aField,aMessage);
        }
    }
};

function chkBNSacct(_aNum, _aName, _aSwitch ) {
    var _trans = _aNum.value.substr(0,5);
    var _acct = _aNum.value.substr(5,7);
    var _digit;
    if ( _aSwitch == "Y" ) {
        _digit = _aNum.value.substr(10,1);
	if ( _digit != 7 && _digit != 9 ) {
            var aMsg = genMsgprefix+_aName+aMsgbody+ "12"+aMsgsuffix;
            Warning (_aNum, aMsg);
	    return false;
	}
    }
    if ( !chkMod10(_trans) || (!chkMod11(_acct) && !chkMod11Two(_acct)) ) {
        var aMsg = genMsgprefix+_aName+aMsgbody+ "12"+aMsgsuffix;
        Warning (_aNum, aMsg);
        return false;
    }
    return;
};

function chkRRSPacct(rName,rAcct, rLen) {
    var rNum = rAcct.value;
    var rMsg = genMsgprefix+rName+aMsgbody+ " 9 "+aMsgsuffix;

    if ( rLen == 12 ) {
        if ( rNum.substr(0,3) == "000" ) {
            rLen = 9;
        }
    }
    if ( !chkMod10(rNum) || rLen != 9 ) {
        Warning (rAcct, rMsg);
    }
    return;
};

function chkVISAacct(vFld, vName, vLen ) {
    var visa = vFld.value;
    var vpTest = visa.substr(0,6);

    var valVISApref= new Array ("453510","453511","453500","453700","453701",
                                "453702","453703","453704","453705","453706",
                                "453707","453708","453709","453710","453800",
                                "453801","453802","453803","453804","453810",
                                "453815","453816","453820","453821","453822"
                               );

    if ( (vLen == 13 || vLen == 16) && chkMod10(visa) ) {
        for ( var v=0; v<valVISApref.length; v++ ) {
             if ( vpTest == valVISApref[v] ) {
                return true;
            }
        }
    }
    var aMsg = genMsgprefix+vName+aMsgbody+ vLen +aMsgsuffix;
    Warning (vFld, aMsg);
    return false;
};

function getRctr ( _obj ) {
    var _len = 0;
    var _elems = document.forms[0].elements.length;

    for ( var i=0; i<_elems; i++ ) {
        if ( document.forms[0].elements[i].name == _obj ) {
            _len++;
        }
    }
    return _len;
};

function isRadioed ( rObj ) {
    var rCtr = getRctr(rObj);
    var object = eval ( "document.forms[0]." + rObj );

    for ( var i=0; i<rCtr; i++ ) {
        if ( object[i].checked == true ) {
            return true;
        }
    }
    return false;
};

function chkRadio ( rField, rCtr, rName ) {
    for ( var i=0; i<rCtr; i++ ) {
        if (rField[i].checked == true ) {
            return true;
        }
    }
    rMessage = rMsgprefix + rName + rMsgsuffix;
    Warning(rField[0],rMessage);
    return false;
};

function isSelected(sObj) {
//    if ( sObj.selectedIndex >= 1 ) {
    if ( sObj && sObj.selectedIndex >= 1 ) {
        return true;
    }
    return false;
};

function chkSelect(sField,sName) {
    var _idx = 0;
    if ( sField && sField.selectedIndex > 0 ) {
        _idx = sField.selectedIndex;
    }
    if ( !sField || sField.options[_idx].value == "") {
        sMessage = sMsgprefix + sName + sMsgsuffix;
        Warning(sField,sMessage);
    }
    return true;
};

/*** valChars (emailstring.value)
*
* we have at least one perild, one at symbol and no spaces
*
****/
function valChars (vStr) {
    invalChars="\"\~\!\#\$\%^\&\*\(\)\=\|\?\\\/\{\}\<\>\;\:";
    for (i=0; i< invalChars.length; i++) {
        if ( vStr.indexOf( invalChars.substr(i,1),0) != -1)
            return false;
    }
    return true;
};

/**** valSyntax (emailstring.value)
*
* we have valid chars, we don't have invalid chars so now
* check for syntax rules;
*
* a 2nd @ symbol in substringed domain part is invalid, as is
* non-existence of period (may have been in user portion only)
* at least 2 chars after at symbol
* at least 2 chars (but no more than 4) at end of string
*
****/
function valSyntax (vStr) {
    var _At = vStr.indexOf('@');
    var _Dot = vStr.indexOf('.');
    if ( _At < 2 || _Dot < 1 ) {
        return false;
    }
    var _User = vStr.substr(0,_At);
    var _Domain = vStr.substr(_At+1);
    var _len = _Domain.length;
    var _EndDot = _Domain.lastIndexOf('.');
    if ( _EndDot == -1 ) {
        return false;
    }

    if ( _Dot < _At ) {
        if ( _Dot < 1 || _Dot > (_At-1) ) {
            return false;
        }
        // okay, reset pointers for domain test
        _At = 0;
        _Dot = _Domain.indexOf('.',0);
    } else {
        if ( _User.length < 3 ) {
            return false;
        }
    }
    if ( _Domain.indexOf('@',0) != -1
       || _Dot < _At+2
       || !( _len-_EndDot > 2 && _len-_EndDot < 6 ) )
    {
        return false;
    }
    return true;
};

function chkEmail(email,eName,eFlag) {
    if (isEmpty(email)) {
        if (eFlag=="M") {
            return chkMandatory(email,eName);
        } else {
            return true;
        }
    }
    if ( email.value.indexOf ('@',0) == -1
       || email.value.indexOf ('.',0) == -1
       || email.value.indexOf (' ',0) != -1
       || !(valChars(email.value) )
       || !(valSyntax(email.value) ) )
    {
        eMsg = genMsgprefix+eName+eMsgsuffix;
        Warning(email,eMsg);
        return false;
    }
};

function chkCApostalCode( prov,pc1,pc2,pcName,pcFlag) {
    if (isEmpty(pc1) && isEmpty(pc2)) {
        if (pcFlag=="M") {
            return chkMandatory(pc1,pcName);
        } else {
            return true;
        }
    }
    pcMessage = genMsgprefix + pcName + pcMsgsuffix;
    if ( (pc1.value.length != 3) || !isStrictAlpha(pc1.value.charAt(0)) || isNaN(pc1.value.charAt(1)) || !isStrictAlpha(pc1.value.charAt(2))) {
        Warning(pc1,pcMessage);
        return false;
    } else {
        if ( pc2.value.length != 3 || isNaN(pc2.value.charAt(0)) || !isStrictAlpha(pc2.value.charAt(1)) || isNaN(pc2.value.charAt(2)) ) {
            Warning(pc2,pcMessage);
            return false;
        }
    }
    if (prov.selectedIndex == "0" &&  prov.options[0].value == "") {
        return;
    } else {
        provVal = prov.options[prov.selectedIndex].value;
        if ( provVal == "NU" ) {
            provVal = "NT";
        }
        var Tarry = new Array ("AB"); var Varry = new Array ("BC");
        var Rarry = new Array ("MB"); var Earry = new Array ("NB");
        var Aarry = new Array ("NL"); var Xarry = new Array ("NT");
        var Barry = new Array ("NS"); var Karry = new Array ("ON");
        var Larry = new Array ("ON"); var Marry = new Array ("ON");
        var Narry = new Array ("ON"); var Parry = new Array ("ON");
        var Carry = new Array ("PE"); var Garry = new Array ("QC");
        var Harry = new Array ("QC"); var Jarry = new Array ("QC");
        var Sarry = new Array ("SK"); var Yarry = new Array ("YK");

        var valFirstChar = ""; var testArry = ""
        valFirstChar = eval ( pc1.value.charAt(0).toUpperCase() + "arry[0]");
        testArry = eval ( pc1.value.charAt(0).toUpperCase() + "arry");

        if ( !testArry  || valFirstChar  != provVal ) {
            Warning(pc1,pcMessage);
            return false;
        }
    }
};

function chkPostalCode(pc1,pc2,pcName,pcFlag) {
    if (isEmpty(pc1) && isEmpty(pc2)) {
        if (pcFlag=="M") {
            return chkMandatory(pc1,pcName);
        } else {
            return true;
        }
    } else {
        pcMessage = genMsgprefix + pcName + pcMsgsuffix;
        if (!isStrictAlpha(pc1.value.charAt(0)) || isNaN(pc1.value.charAt(1)) || !isStrictAlpha(pc1.value.charAt(2))) {
            Warning(pc1,pcMessage);
            return false;
        } else {
            if (isNaN(pc2.value.charAt(0)) || !isStrictAlpha(pc2.value.charAt(1)) || isNaN(pc2.value.charAt(2)) || (pc2.value.length != 3)) {
                Warning(pc2,pcMessage);
                return false;
            }
        }
    }
};

function chkPhone (p1,p2,p3,p4, pName,pFlag, noExt) {
    if ( isEmpty(p1) && isEmpty(p2) && isEmpty(p3) ) {
        if (pFlag=="M") {
            return ( chkMandatory(p1,pName));
        } else {
            if ( noExt != 0 && !isEmpty(p4) ) {
                eMsg = pExtMsg;
                Warning(p4,eMsg);
                return false;
            }
        }
        return true;
    }
    if ( isEmpty(p1) || isEmpty(p2) || isEmpty(p3) ) {
        var _obj;
        for ( var i=3; i>0; i-- ) {
            _obj = eval ("p"+i);
            if ( isEmpty(_obj) ) {
                break;
            }
        }
        pMsg = genMsgprefix + pName + pMsgbody;
        Warning( _obj, pMsg );
        return false;
    }
    if ( p1.value.length == 3 && p2.value.length == 3 && p3.value.length == 4) {
        if ( chkNumber(p1, pName) && chkNumber(p2, pName) && chkNumber(p3, pName) ) {
            if ( noExt != 0 && !isEmpty(p4) ) {
                chkNumber(p4, pName);
            }
        }
    } else {
        var _obj; var _len = 3;
        for ( var i=1; i<4; i++ ) {
            _obj = eval ("p"+i);
            if ( i == 3 ) {
                _len = 4;
            }
            if ( _obj.value.length != _len ) {
                break;
            }
        }
        pMsg = genMsgprefix + pName + nrLengPrefix + "10" + nrLengSuffix;
        Warning(_obj,pMsg );
        return false;

    }
    return true;
};

function postAddr ( same ) {
    if ( same.checked == "1" ) {
        if ( document.forms[0].STNUM ) {
            document.forms[0].CA_STNUM.value=document.forms[0].STNUM.value;
        }
        document.forms[0].CA_ADDR.value=document.forms[0].ADDR.value;
        if ( document.forms[0].APT ) {
            document.forms[0].CA_APT.value=document.forms[0].APT.value;
        }
        document.forms[0].CA_CITY.value=document.forms[0].CITY.value;
        for ( var m=0; m<13; m++ ) {
            if ( document.forms[0].PROV.value == document.forms[0].CA_PROV.options[m].value ) {
                document.forms[0].CA_PROV.focus();
                document.forms[0].CA_PROV.options[m].selected = true;
                break;
            }
        }
        document.forms[0].CA_PC1.value=document.forms[0].PC1.value;
        document.forms[0].CA_PC2.value=document.forms[0].PC2.value;

        document.forms[0].PHAREA21.value=document.forms[0].PHAREA11.value;
        document.forms[0].PHEXCH21.value=document.forms[0].PHEXCH11.value;
        document.forms[0].PHNUM21.value=document.forms[0].PHNUM11.value;
        if ( document.forms[0].PHEXT11 ) {
            document.forms[0].PHEXT21.value=document.forms[0].PHEXT11.value;
        }
        document.forms[0].CA_DOB_Y.select();
    } else {
        document.forms[0].CA_STNUM.value="";
        document.forms[0].CA_ADDR.value= "";
        document.forms[0].CA_APT.value= "";
        document.forms[0].CA_CITY.value= "";
        document.forms[0].CA_PROV.options[0].selected = true;
        document.forms[0].CA_PC1.value= "";
        document.forms[0].CA_PC2.value= "";
        document.forms[0].PHAREA21.value= "";
        document.forms[0].PHEXCH21.value= "";
        document.forms[0].PHNUM21.value= "";
        document.forms[0].PHEXT21.value= "";
        document.forms[0].CA_STNUM.focus();
    }
};

function postFullAddr ( same, _nextFld ) {
    if ( same.checked == "1" ) {
        if ( document.forms[0].STNUM ) {
            document.forms[0].CA_STNUM.value=document.forms[0].STNUM.value;
        }
        document.forms[0].CA_ADDR.value=document.forms[0].ADDR.value;
        if ( document.forms[0].UNITNUM ) {
            document.forms[0].CA_UNITNUM.value=document.forms[0].UNITNUM.value;
        }
        document.forms[0].CA_CITY.value=document.forms[0].CITY.value;
        for ( var m=0; m<13; m++ ) {
            if ( document.forms[0].PROV.value == document.forms[0].CA_PROV.options[m].value ) {
                document.forms[0].CA_PROV.focus();
                document.forms[0].CA_PROV.options[m].selected = true;
                break;
            }
        }
        document.forms[0].CA_PC1.value=document.forms[0].PC1.value;
        document.forms[0].CA_PC2.value=document.forms[0].PC2.value;

        _nextFld.select();
        _nextFld.focus();
    } else {
        document.forms[0].CA_STNUM.value="";
        document.forms[0].CA_ADDR.value= "";
        document.forms[0].CA_UNITNUM.value= "";
        document.forms[0].CA_CITY.value= "";
        document.forms[0].CA_PROV.options[0].selected = true;
        document.forms[0].CA_PC1.value= "";
        document.forms[0].CA_PC2.value= "";
        document.forms[0].CA_STNUM.select();
        document.forms[0].CA_STNUM.focus();
    }
};

function postCAAddr ( same ) {
    // new CanPost standards
    if ( same.checked == "1" ) {
        if ( document.forms[0].UNIT ) {
            var _nunits = document.forms[0].CA_UNIT.length;
            for ( var u=1; u < _nunits; u++ ) {
                if ( document.forms[0].CA_UNIT.options[u].value == document.forms[0].UNIT.value ) {
                    document.forms[0].CA_UNIT.focus();
                    document.forms[0].CA_UNIT.options[u].selected = true;
                    break;
                }
            }
            document.forms[0].CA_UNITNUM.value=document.forms[0].UNITNUM.value;
        }
        if ( document.forms[0].ADDR ) {
            if ( document.forms[0].STNUM ) {
                document.forms[0].CA_STNUM.value=document.forms[0].STNUM.value;
            }
            if ( document.forms[0].ADDR ) {
                document.forms[0].CA_ADDR.value=document.forms[0].ADDR.value;
            }
        } else {
            // alternate address types
            var _items = document.forms[0].CA_ALTTYPE1.length;
            for ( var a=1; a < 5; a++ ) {
                var _type = eval("document.forms[0].ALTTYPE"+a);
                var _num  = eval("document.forms[0].ALTNUM"+a);
                if ( _type ) {
                    var _CAtype = eval("document.forms[0].CA_ALTTYPE"+a);
                    var _CAnum  = eval("document.forms[0].CA_ALTNUM"+a);
                    for ( var m=0; m<_items; m++ ) {
                        if ( _type.value == _CAtype.options[m].value ) {
                            _CAtype.options[m].selected = true;
                            _CAnum.value = _num.value;
                            break;
                        }
                    }
                }
            }
        }
        document.forms[0].CA_CITY.value=document.forms[0].CITY.value;
        var _numprovs = document.forms[0].CA_PROV.length;
        for ( var m=1; m<_numprovs; m++ ) {
            if ( document.forms[0].PROV.value == document.forms[0].CA_PROV.options[m].value ) {
                document.forms[0].CA_PROV.focus();
                document.forms[0].CA_PROV.options[m].selected = true;
                break;
            }
        }
        document.forms[0].CA_PC1.value=document.forms[0].PC1.value;
        document.forms[0].CA_PC2.value=document.forms[0].PC2.value;
        if ( document.forms[0].PHAREA21 ) {
            document.forms[0].PHAREA21.value=document.forms[0].PHAREA11.value;
            document.forms[0].PHEXCH21.value=document.forms[0].PHEXCH11.value;
            document.forms[0].PHNUM21.value=document.forms[0].PHNUM11.value;
            if ( document.forms[0].PHEXT11 ) {
                document.forms[0].PHEXT21.value=document.forms[0].PHEXT11.value;
            }
        }
        document.forms[0].CA_PC1.focus();
    } else {
        // address is different than primary applicant
        document.forms[0].CA_STNUM.value="";
        document.forms[0].CA_ADDR.value= "";
        document.forms[0].CA_UNIT.options[0].selected = true;
        document.forms[0].CA_UNITNUM.value= "";
        if ( document.forms[0].CA_ALTTYPE1 ) {
            document.forms[0].CA_ALTTYPE1.options[0].selected = true;
            document.forms[0].CA_ALTNUM1.value = "";
            document.forms[0].CA_ALTTYPE2.options[0].selected = true;
            document.forms[0].CA_ALTNUM2.value = "";
            document.forms[0].CA_ALTTYPE3.options[0].selected = true;
            document.forms[0].CA_ALTNUM3.value = "";
            document.forms[0].CA_ALTTYPE4.options[0].selected = true;
            document.forms[0].CA_ALTNUM4.value = "";
        }
        document.forms[0].CA_CITY.value= "";
        document.forms[0].CA_PROV.options[0].selected = true;
        document.forms[0].CA_PC1.value= "";
        document.forms[0].CA_PC2.value= "";
        if ( document.forms[0].PHAREA21 ) {
            document.forms[0].PHAREA21.value= "";
            document.forms[0].PHEXCH21.value= "";
            document.forms[0].PHNUM21.value= "";
            document.forms[0].PHEXT21.value= ""
        }
        document.forms[0].CA_STNUM.focus();
    }
};


function chkScotiaCard(_scNum, sName, sFlag ) {
    var vBin = "";
    if ( isEmpty( _scNum ) ) {
        if ( sFlag == "M" ) {
            return ( chkMandatory( _scNum, sName ) );
        }
        return true;
    }
    if ( _scNum.value.length != 16 ) {
        vMsg = genMsgprefix + sName + scMsgBody;
        Warning ( _scNum, vMsg);
        return false;
    }
    vBin = _scNum.value.substr(0,4);
    if ( vBin == "4536" && chkMod10( _scNum.value ) ) {
        return true;
    }
    vMsg = genMsgprefix + sName + msgBody+ sName+genMsgsuffix;
    Warning ( _scNum, vMsg);
    return false;
};

function chkName ( fFld, fName, mFld, mName, lFld, lName ) {
    if ( chkMandatory ( fFld,  fName ) ) {;
        if ( !chkAlpha ( fFld ) ) {
            nMsg = genMsgprefix + fName + alphaSuffix;
            Warning ( fFld, nMsg);
            return false;
        }
    }
    if ( !isEmpty ( mFld ) ) {
        if ( !chkAlpha ( mFld ) ) {
            nMsg = genMsgprefix + mName + alphaSuffix;
            Warning ( mFld, nMsg);
            return false;
        }
    }
    if ( chkMandatory ( lFld, lName ) ) {
        if ( !chkAlpha ( lFld ) ) {
            nMsg = genMsgprefix + lName + alphaSuffix;
            Warning ( lFld, nMsg);
            return false;
        }
    }
    return true;
};

function chkAddress ( nName, nFld, aName, aFld, cName, cFld, pName, pFld, pcName, pcFld1, pcFld2) {
    if ( !isEmpty(nFld) ) {
        if ( !chkAlphanumeric(nFld) ) {
            aMsg = genMsgprefix + nName + invalAsuffix;
            Warning ( nFld, aMsg);
            return false;
        }
    }
    if ( chkMandatory ( aFld, aName) ) {
        if ( !chkAlphanumeric ( aFld ) ) {
            aMsg = genMsgprefix + aName + alphaSuffix;
            Warning ( aFld, aMsg);
            return false;
        }
    }

    if ( chkMandatory ( cFld, cName) ) {
        if ( !chkAlpha ( cFld ) ) {
            aMsg = genMsgprefix + cName + alphaSuffix;
            Warning ( cFld, aMsg);
            return false;
        }
    }

    chkSelect ( pFld, pName );
//    chkPostalCode ( pcFld1, pcFld2, pcName, "M" );
    chkCApostalCode ( pFld, pcFld1, pcFld2, pcName, "M" );
    return true;
};

function chkFullAddress ( nName,nFld,aName,aFld,uName,uFld,cName,cFld,pName,pFld,pcName,pcFld1,pcFld2) {
    if ( !isEmpty(nFld) ) {
        if ( !chkAlphanumeric(nFld) ) {
            aMsg = genMsgprefix + nName + invalAsuffix;
            Warning ( nFld, aMsg);
            return false;
        }
    }
    if ( chkMandatory ( aFld, aName) ) {
        if ( !chkAlphanumeric ( aFld ) ) {
            aMsg = genMsgprefix + aName + alphaSuffix;
            Warning ( aFld, aMsg);
            return false;
        }
    }
    if ( !isEmpty(uFld) ) {
        if ( !chkAlphanumeric(uFld) ) {
            aMsg = genMsgprefix + uName + invalAsuffix;
            Warning ( uFld, aMsg);
            return false;
        }
    }

    if ( chkMandatory ( cFld, cName) ) {
        if ( !chkAlpha ( cFld ) ) {
            aMsg = genMsgprefix + cName + alphaSuffix;
            Warning ( cFld, aMsg);
            return false;
        }
    }

    chkSelect ( pFld, pName );
    chkPostalCode ( pcFld1, pcFld2, pcName, "M" );
    return true;
};

function chkDuration ( _yr, _mo, dName, dFlag ) {
    if ( isEmpty(_yr) && isEmpty(_mo)  ) {
        if ( dFlag == "M" ) {
            dMsg = durationPref + dName+genMsgsuffix;
            Warning(_yr,dMsg);
            return false;
        } else {
            return 1;
        }
    }
    if ( (_yr.value == 0 || _yr.value.toString() == "00") && (_mo.value == 0 || _mo.value.toString() == "00" ) ) {
        dMsg = durationPref + dName + durationSuff;
        Warning(_yr,dMsg);
        return false;
    }
    if ( !isEmpty(_yr) && chkNumber ( _yr, dName, "n") ) {
        chkNumRange ( _yr, dName, 0, 99, "n", "V" );
    }
    if ( !isEmpty(_mo) && chkNumber ( _mo, dName, "n") ) {
        chkNumRange ( _mo, dName, 0, 12, "n", "V" );
    }
    return true;
};

function chkEmpDuration ( _yr, _mo, dName, dFlag ) {
    if ( isEmpty(_yr) && isEmpty(_mo)  ) {
        if ( dFlag == "M" ) {
            dMsg = durationPref + dName+genMsgsuffix;
            Warning(_yr,dMsg);
            return false;
        } else {
            return true;
        }
    }
    if ( (_yr.value == 0 || _yr.value.toString() == "00") && (_mo.value == 0 || _mo.value.toString() == "00" ) ) {
        dMsg = durationPref + dName + durationSuff;
        Warning(_yr,dMsg);
        return false;
    }
    var _chk=false;
    if ( !isEmpty(_yr) ) {
        if ( chkNumRange ( _yr, dName, 0, 50, "M", "V" ) ) {
            _chk=true;
        }
    }
    if ( !isEmpty(_mo) ) {
        if ( chkNumRange ( _mo, dName, 0, 12, "M", "V" ) ) {
            _chk=true;
        } else {
            _chk=false;
        }
    }
    return _chk;
};

// revised functions and others required for Canada Post address standards

function chkStrNumName( nName, nFld, aName, aFld ) {
    _street = false;
    if ( !isEmpty(nFld) && isEmpty(aFld) ) {
        return chkMandatory(aFld, aName);
    }
    if ( !isEmpty(nFld) ) {
        if ( !chkAlphanumeric(nFld) ) {
            var aMsg = genMsgprefix + nName + invalAsuffix;
            Warning ( nFld, aMsg);
            return false;
        }
    }
    if ( !isEmpty(aFld) ) {
        if ( !chkAlphanumeric ( aFld ) ) {
            aMsg = genMsgprefix + aName + alphaSuffix;
            Warning ( aFld, aMsg);
            return false;
        }
        _street = true;
    }
    return true;
};

function chkUnitFields ( tName, tFld, uName, uFld ) {
    var msg1 = unitTypeReq;
    var msg2 = genMsgprefix + uName + alphaSuffix;

    if ( tFld.selectedIndex == 0 && tFld.options[0].value == "" ) {
        if ( !isEmpty (uFld) ) {
            Warning ( tFld, msg1 );
            return false;
        }
    } else {
        if ( chkMandatory (uFld, uName) ) {
            if ( !chkAlphanumeric( uFld ) ) {
                Warning ( uFld, msg2 );
                return false;
            }
        }
    }
    return true;
};

function chkAltFields ( tName, tFld, nName, uFld ) {
    _altern = false;
    var _flag = true;  var ctr = 5; var _type, _num = "";
    var msg1 = genMsgprefix + nName + invalAsuffix;
    var msg2 = altTypeNumReq;
    var msg3 = altNumNumReq;

    for ( var i=1; i<ctr; i++ ) {
        _type = eval ( "document.forms[0]."+ tFld + i );
        _num = eval ( "document.forms[0]." + uFld + i );
        if ( isSelected(_type) && isEmpty(_num) ) {
            Warning ( _num, msg3 );
            _flag = false;  i = 5;
        } else {
            if ( !isSelected(_type) && !isEmpty(_num)  ) {
                Warning ( _type, msg2 );
                _flag = false;  i = 5;
            } else {
                if ( !isEmpty(_num) ) {
                    if ( !chkAlphanumeric( _num ) ) {
                        Warning ( _num, msg1 );
                        _flag = false; i=5;
                    }
                    _altern = true;
                }
            }
        }
    }
    return _flag;
};

function chkComplete(addr) {
    var msg1 = incompletAddr;
    var msg2 = bothNotAllowed;

    if ( _street == true && _altern == true ) {
        Warning ( addr, msg2);
        return false;
    } else {
        if ( _street == false && _altern == false ) {
            Warning ( addr, msg1 );
            return false;
        }
    }
    return true;
};

function chkCAaddr (snName, snFld, stName, stFld, utName, utFld, unName, unFld, atName, atFld, anName, anFld, cName, cFld, pName, pFld, pcName, pc1Fld, pc2Fld ) {
    var stnum = eval ( "document.forms[0]."+snFld );
    var street = eval ( "document.forms[0]."+ stFld );
    chkStrNumName(snName, stnum, stName, street);

    var unit = eval ( "document.forms[0]."+ utFld );
    var unum = eval ( "document.forms[0]."+ unFld );
    chkUnitFields ( utName, unit, unName, unum );

    chkAltFields( atName, atFld, anName, anFld );
    if ( chkComplete(document.forms[0].ADDR) ) {
        var city = eval ( "document.forms[0]." + cFld );
        if ( chkMandatory ( city, cName) ) {
            if ( !chkAlpha ( city ) ) {
                cMsg = genMsgprefix + cName + alphaSuffix;
                Warning ( cFld, cMsg);
                return false;
            }
        }
        var prov = eval ( "document.forms[0]." + pFld );
        chkSelect ( prov, pName );
        var pcode1 = eval ( "document.forms[0]." + pc1Fld );
        var pcode2 = eval ( "document.forms[0]." + pc2Fld );
        chkCApostalCode ( prov, pcode1, pcode2, pcName, "M" );
    }
    return;
};

