//=============================================================================
// Validate.js  Located in the Frame set, so it only loads once
//              This java script file contains all validation rules
//              Call this from an underlying form element:
//         e.g. onChange="parent.validate(window,this,'isSSN','isPosInteger')
//        Note: Multiple rules can be invoked in a single call validate()
// CHANGE LOG
//               NOTE: to find the code change, search on the label field.
//  Date     Label   Description
//  -----   ------- ----------------
//  03-06-01 erp1 - added code to better handle allocations and transfers when
//             the total amount > available amount. Fix involved leaving the 
//             offending field as entered, thereby allowing user to determine 
//             which field to adjust. Also, added code to display the incorrect
//             total (>100) in the Totals field. 
//  03-07-01 erp2 - added declaration and initialization of gField var in order
//             to eliminate javascript error on an empty transfers page.  
//
//  03-31-03 RT	Added code in calcTotalF(), calcTotal(), checkAllFields_Dollars(),
//				checkAllFields_Percent(), checkAllFields_Units(),
//				to handle the new lifestyle funds (CONSALLOC, MODALLOC, AGGRALLOC).
//
//=============================================================================


//-----------------------------------------------------------------------------
// Trace function which can be called to 
//-----------------------------------------------------------------------------
var gField = ""        // erp2
var timestamp = 0

function trace(flag, label, value) {
    if (flag) {
        var funcName = debug.caller.toString()
        funcName = funcName.substring(10, funcName.indexOf(")") + 1)
        var msg = "In " + funcName + ": " + label + "=" + value
        var now = new Date()
        var elapsed = now - timestamp
        if (elapsed < 10000) {
            msg += " (" + elapsed + " msec)"
        }
        timestamp = now
        java.lang.System.out.println(msg)
    }
}

//-----------------------------------------------------------------------------
// Show Properties function useful in debugging
//-----------------------------------------------------------------------------
function showProps(obj,objName) {
    var result = ""
    var count = 0
    for (var i in obj) {
        result += objName + "." + i + " = " + obj[i] + "\n"
        count++
        if (count == 25) {
            alert(result)
            result = ""
            count = 0
        }
    }
    alert(result)
}

//-----------------------------------------------------------------------------
// Debug the field properties
//-----------------------------------------------------------------------------
function debugField() {
    //alert("debugField(): fired..." )
    showProps(gField,"gField")
    return true
}

//-----------------------------------------------------------------------------
// Calculate fund Totals
//-----------------------------------------------------------------------------
function calcTotalF() {
    //var textToWrite = "calcTotalF has been fired..."
    //alert(textToWrite)
    var tempTotal = 0
    if (window.gFrame.document.forms[0].BOND) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].BOND.value))) ?  parseFloat(window.gFrame.document.forms[0].BOND.value) : 0 }
    if (window.gFrame.document.forms[0].CONSALLOC) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].CONSALLOC.value))) ? parseFloat(window.gFrame.document.forms[0].CONSALLOC.value) : 0 }
    if (window.gFrame.document.forms[0].COMPOSITE) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].COMPOSITE.value))) ? parseFloat(window.gFrame.document.forms[0].COMPOSITE.value) : 0 }
    if (window.gFrame.document.forms[0].MODALLOC) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].MODALLOC.value))) ? parseFloat(window.gFrame.document.forms[0].MODALLOC.value) : 0 }
    if (window.gFrame.document.forms[0].MONEY_MKT) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].MONEY_MKT.value))) ? parseFloat(window.gFrame.document.forms[0].MONEY_MKT.value) : 0 }
    if (window.gFrame.document.forms[0].AGGRALLOC) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].AGGRALLOC.value))) ? parseFloat(window.gFrame.document.forms[0].AGGRALLOC.value) : 0 }
    if (window.gFrame.document.forms[0].EQUITY_IDX) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].EQUITY_IDX.value))) ? parseFloat(window.gFrame.document.forms[0].EQUITY_IDX.value) : 0 }
    if (window.gFrame.document.forms[0].FIDEQINC) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].FIDEQINC.value))) ? parseFloat(window.gFrame.document.forms[0].FIDEQINC.value) : 0 }
    if (window.gFrame.document.forms[0].SHORT_BOND) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].SHORT_BOND.value))) ? parseFloat(window.gFrame.document.forms[0].SHORT_BOND.value) : 0 }
    if (window.gFrame.document.forms[0].FIDASSET) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].FIDASSET.value))) ? parseFloat(window.gFrame.document.forms[0].FIDASSET.value) : 0 }
    if (window.gFrame.document.forms[0].MID_BOND) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].MID_BOND.value))) ? parseFloat(window.gFrame.document.forms[0].MID_BOND.value) : 0 }
    if (window.gFrame.document.forms[0].FIDCONTRA) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].FIDCONTRA.value))) ? parseFloat(window.gFrame.document.forms[0].FIDCONTRA.value) : 0 }
    if (window.gFrame.document.forms[0].ALLAMERICA) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].ALLAMERICA.value))) ? parseFloat(window.gFrame.document.forms[0].ALLAMERICA.value) : 0 }
    if (window.gFrame.document.forms[0].SSC_GRWTH) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].SSC_GRWTH.value))) ? parseFloat(window.gFrame.document.forms[0].SSC_GRWTH.value) : 0 }
    if (window.gFrame.document.forms[0].AGGREQUITY) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].AGGREQUITY.value))) ? parseFloat(window.gFrame.document.forms[0].AGGREQUITY.value) : 0 }
    if (window.gFrame.document.forms[0].SSC_BOND) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].SSC_BOND.value))) ? parseFloat(window.gFrame.document.forms[0].SSC_BOND.value) : 0 }
    if (window.gFrame.document.forms[0].MIDCAP_IDX) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].MIDCAP_IDX.value))) ? parseFloat(window.gFrame.document.forms[0].MIDCAP_IDX.value) : 0 }
    if (window.gFrame.document.forms[0].SSC_INTNL) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].SSC_INTNL.value))) ? parseFloat(window.gFrame.document.forms[0].SSC_INTNL.value) : 0 }
    if (window.gFrame.document.forms[0].CALVERT) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].CALVERT.value))) ? parseFloat(window.gFrame.document.forms[0].CALVERT.value) : 0 }
    if (window.gFrame.document.forms[0].AC_CAPAPPR) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].AC_CAPAPPR.value))) ? parseFloat(window.gFrame.document.forms[0].AC_CAPAPPR.value) : 0 }
    if (window.gFrame.document.forms[0].INT_ACCUM) { tempTotal += (!isNaN(parseFloat(window.gFrame.document.forms[0].INT_ACCUM.value))) ? parseFloat(window.gFrame.document.forms[0].INT_ACCUM.value) : 0 }

    return tempTotal
}
function calcTotal() {
    //var textToWrite = "calcTotal has been fired..."
    //alert(textToWrite)
    var tempTotal = 0
    var tempTotalFloat = 0
    if (window.gFrame.document.forms[0].BOND) { tempTotal += (!isNaN(window.gFrame.document.forms[0].BOND.value)) ?  parseFloat(window.gFrame.document.forms[0].BOND.value * 100 ) : 0 }
    if (window.gFrame.document.forms[0].CONSALLOC) { tempTotal += (!isNaN(window.gFrame.document.forms[0].CONSALLOC.value)) ? parseFloat(window.gFrame.document.forms[0].CONSALLOC.value * 100) : 0 }
    if (window.gFrame.document.forms[0].COMPOSITE) { tempTotal += (!isNaN(window.gFrame.document.forms[0].COMPOSITE.value)) ? parseFloat(window.gFrame.document.forms[0].COMPOSITE.value * 100) : 0 }
    if (window.gFrame.document.forms[0].MODALLOC) { tempTotal += (!isNaN(window.gFrame.document.forms[0].MODALLOC.value)) ? parseFloat(window.gFrame.document.forms[0].MODALLOC.value * 100) : 0 }
    if (window.gFrame.document.forms[0].MONEY_MKT) { tempTotal += (!isNaN(window.gFrame.document.forms[0].MONEY_MKT.value)) ? parseFloat(window.gFrame.document.forms[0].MONEY_MKT.value * 100) : 0 }
    if (window.gFrame.document.forms[0].AGGRALLOC) { tempTotal += (!isNaN(window.gFrame.document.forms[0].AGGRALLOC.value)) ? parseFloat(window.gFrame.document.forms[0].AGGRALLOC.value * 100) : 0 }
    if (window.gFrame.document.forms[0].EQUITY_IDX) { tempTotal += (!isNaN(window.gFrame.document.forms[0].EQUITY_IDX.value)) ? parseFloat(window.gFrame.document.forms[0].EQUITY_IDX.value * 100) : 0 }
    if (window.gFrame.document.forms[0].FIDEQINC) { tempTotal += (!isNaN(window.gFrame.document.forms[0].FIDEQINC.value)) ? parseFloat(window.gFrame.document.forms[0].FIDEQINC.value * 100 ) : 0 }
    if (window.gFrame.document.forms[0].SHORT_BOND) { tempTotal += (!isNaN(window.gFrame.document.forms[0].SHORT_BOND.value)) ? parseFloat(window.gFrame.document.forms[0].SHORT_BOND.value * 100) : 0 }
    if (window.gFrame.document.forms[0].FIDASSET) { tempTotal += (!isNaN(window.gFrame.document.forms[0].FIDASSET.value)) ? parseFloat(window.gFrame.document.forms[0].FIDASSET.value * 100) : 0 }
    if (window.gFrame.document.forms[0].MID_BOND) { tempTotal += (!isNaN(window.gFrame.document.forms[0].MID_BOND.value)) ? parseFloat(window.gFrame.document.forms[0].MID_BOND.value * 100) : 0 }
    if (window.gFrame.document.forms[0].FIDCONTRA) { tempTotal += (!isNaN(window.gFrame.document.forms[0].FIDCONTRA.value)) ? parseFloat(window.gFrame.document.forms[0].FIDCONTRA.value  * 100) : 0 }
    if (window.gFrame.document.forms[0].ALLAMERICA) { tempTotal += (!isNaN(window.gFrame.document.forms[0].ALLAMERICA.value)) ? parseFloat(window.gFrame.document.forms[0].ALLAMERICA.value * 100) : 0 }
    if (window.gFrame.document.forms[0].SSC_GRWTH) { tempTotal += (!isNaN(window.gFrame.document.forms[0].SSC_GRWTH.value)) ? parseFloat(window.gFrame.document.forms[0].SSC_GRWTH.value  * 100) : 0 }
    if (window.gFrame.document.forms[0].AGGREQUITY) { tempTotal += (!isNaN(window.gFrame.document.forms[0].AGGREQUITY.value)) ? parseFloat(window.gFrame.document.forms[0].AGGREQUITY.value * 100) : 0 }
    if (window.gFrame.document.forms[0].SSC_BOND) { tempTotal += (!isNaN(window.gFrame.document.forms[0].SSC_BOND.value)) ? parseFloat(window.gFrame.document.forms[0].SSC_BOND.value * 100) : 0 }
    if (window.gFrame.document.forms[0].MIDCAP_IDX) { tempTotal += (!isNaN(window.gFrame.document.forms[0].MIDCAP_IDX.value)) ? parseFloat(window.gFrame.document.forms[0].MIDCAP_IDX.value * 100) : 0 }
    if (window.gFrame.document.forms[0].SSC_INTNL) { tempTotal += (!isNaN(window.gFrame.document.forms[0].SSC_INTNL.value)) ? parseFloat(window.gFrame.document.forms[0].SSC_INTNL.value * 100) : 0 }
    if (window.gFrame.document.forms[0].CALVERT) { tempTotal += (!isNaN(window.gFrame.document.forms[0].CALVERT.value)) ? parseFloat(window.gFrame.document.forms[0].CALVERT.value  * 100) : 0 }
    if (window.gFrame.document.forms[0].AC_CAPAPPR) { tempTotal += (!isNaN(window.gFrame.document.forms[0].AC_CAPAPPR.value)) ? parseFloat(window.gFrame.document.forms[0].AC_CAPAPPR.value * 100) : 0 }
    if (window.gFrame.document.forms[0].INT_ACCUM) { tempTotal += (!isNaN(window.gFrame.document.forms[0].INT_ACCUM.value)) ? parseFloat(window.gFrame.document.forms[0].INT_ACCUM.value * 100) : 0 }

    tempTotalFloat = tempTotal / 100
    return tempTotalFloat
}

//-----------------------------------------------------------------------------
// Set fund Total
//-----------------------------------------------------------------------------
function setTotal() {
    var tempTotal
    tempTotal = calcTotal()
    window.gFrame.document.forms[0].TOTAL.value = tempTotal
}

//-----------------------------------------------------------------------------
// general purpose function to see if a suspected numeric input
// is ...
//-----------------------------------------------------------------------------
function isPosInteger() {
    //var textToWrite = "isPosInteger has been fired..." + gField.value
    //alert(textToWrite)
    var inputStr = "" + gField.value
    for (var i = 0; i < inputStr.length; i++) {
        var oneChar = inputStr.charAt(i)
        if (oneChar < "0" || oneChar > "9") {
            //alert("Field validation: " + gField.name + ", value=" + gField.value + "\nPlease enter a Positive Integer." )
            return false
        }
    }
    return true
}


function isGoodPercent() {
    //var textToWrite = "isPosInteger has been fired..." + gField.value
    //alert(textToWrite)
    var inputStr = parseInt(gField.value)
    
        if (inputStr < 0 || inputStr > 100) {
            //alert("Field validation: " + gField.name + ", value=" + gField.value + "\nPlease enter a Positive Integer." )
            return false
        }
  
    return true
}





function isValidNum_Percent() {
    //alert("IsValidNum_Percent - checking gField.value:" + gField.value)
    if (!isGoodPercent()) {
        return false
    }
    return true
}

function isValidNum_Dollars() {
    //alert("IsValidNum_Dollars - checking gField.value:" + gField.value)
    if (gField.value == "") {
        return true
    }
    if (isNaN(gField.value)) {
        //gField.value=""
        //var tempTotal = calcTotal()
        //window.gFrame.document.forms[0].TOTAL.value = tempTotal
        return false
    }
    // var re = /.*[\.](.*)/ - For some reason this regular expression doesn't work in IE
      //var modVal = re.exec(gField.value)
    //showProps(RegExp,"RegExp")
    var myString = gField.value
    if ( !(myString.indexOf(".") == -1) && ( (myString.length - myString.indexOf(".")) > 3 ) ) {
        //alert("Or... use string.indexOf():" + myString.indexOf(".") + ", and string.length:" + myString.length )
        //alert("RegExp.$1:" + RegExp.$1 + ", RegExp.$1.length=" + RegExp.$1.length )
        return false
    }
    if (parseFloat(gField.value) == 0 ) {
        //gField.value=""
        //var tempTotal = calcTotal()
        //window.gFrame.document.forms[0].TOTAL.value = tempTotal
        return false
    }
    return true
}

function isValidNum_Units() {
    //alert("IsValidNum_Units - checking gField.value:" + gField.value)
    if (gField.value == "") {
        return true
    }
    if (isNaN(parseFloat(gField.value))) {
        //gField.value=""
        return false
    }
    // var re = /.*\.(.*)/ Regular expression doesn't work in IE
    //  var modVal = re.exec(gField.value)
    //showProps(RegExp,"RegExp")
    //if (RegExp.$1.length > 2) {
    //    alert("RegExp.$1:" + RegExp.$1 + ", RegExp.$1.length=" + RegExp.$1.length )
    //    return false
    //}
    var myString = gField.value
    if ( !(myString.indexOf(".") == -1) && ( (myString.length - myString.indexOf(".")) > 3 ) ) {
        //alert("Or... use string.indexOf():" + myString.indexOf(".") + ", and string.length:" + myString.length )
        //alert("RegExp.$1:" + RegExp.$1 + ", RegExp.$1.length=" + RegExp.$1.length )
        return false
    }
    return true
}

//-----------------------------------------------------------------------------
// Check for UpTo Max Percentage
//-----------------------------------------------------------------------------
function isUpToMax_Percent() {
    var tempTotal = calcTotal()    
    var tempMax = 0
    if (gMaxField) {
        if (!isNaN(gMaxField.value) && gMaxField.value != "") {
            //alert("validate(): isNaN(gMaxField.value):" + isNaN(gMaxField.value) + "\ngMaxField.value:" + gMaxField.value )
            tempMax = gMaxField.value
        }
        if (parseFloat(tempTotal) > parseFloat(tempMax))
            return false
    } else {
        if (parseInt(tempTotal) > 100)
            return false
    }
    return true
}

//-----------------------------------------------------------------------------
// Check for UpTo Max Dollar Amount
//-----------------------------------------------------------------------------
function isUpToMax_Dollars() {
    var tempTotal = calcTotal()
    var tempMax = 0
    //alert("isUpToMax_Dollars: " + gField.name + ", value=" + gField.value + "\nNew total:" + tempTotal + ", Trans Amount:" + gMaxField.value)
    if (!isNaN(gMaxField.value) && gMaxField.value != "") {
        //alert("validate(): isNaN(gMaxField.value):" + isNaN(gMaxField.value) + "\ngMaxField.value:" + gMaxField.value )
        tempMax = gMaxField.value
    }
    if (parseFloat(tempTotal) > parseFloat(tempMax)) {
        //alert("isUpToMax_Dollars - New total:" + tempTotal + "\nGreater than Trans Amount:" + gMaxField.value)
        //showProps(window.gFrame.document.forms[0],"form[0]")
        return false
    }
    return true
}

//-----------------------------------------------------------------------------
// Check for UpTo Max Unit Amount
//-----------------------------------------------------------------------------
function isUpToMax_Units() {
    var tempTotal = calcTotal()
    var tempMax = 0
    if (!isNaN(gMaxField.value) && gMaxField.value != "") {
        //alert("validate(): isNaN(gMaxField.value):" + isNaN(gMaxField.value) + "\ngMaxField.value:" + gMaxField.value )
        tempMax = gMaxField.value
    }
    if (parseFloat(tempTotal) > parseFloat(tempMax)) {
        return false
    }
    return true
}

//-----------------------------------------------------------------------------
// Check for Max (100) Percentage
//-----------------------------------------------------------------------------
function isMax_Percent () {
    var tempTotal = calcTotal()
    if (gMaxField) {
        if (parseFloat(tempTotal) != parseFloat(gMaxField.value))
            return false
    } else {
        if (parseFloat(tempTotal) != 100)
            return false
    }    
    
    return true
}

//-----------------------------------------------------------------------------
// Check for Max Dollars
//-----------------------------------------------------------------------------
function isMax_Dollars () {
    var tempTotal = calcTotal()
    window.gFrame.document.forms[0].TOTAL.value = tempTotal
    if (parseFloat(tempTotal) != parseFloat(gMaxField.value)) {
        //alert("isUpToMax_Dollars - New total:" + tempTotal + "\nGreater not equal Trans Amount:" + gMaxField.value)
        return false
    } 
    return true
}

//-----------------------------------------------------------------------------
// Check for Max Units
//-----------------------------------------------------------------------------
function isMax_Units () {
    var tempTotal = calcTotal()
    
    if (parseFloat(tempTotal) != parseFloat(gMaxField.value)) {
        //alert("isUpToMax_Dollars - New total:" + tempTotal + "\nGreater not equal Trans Amount:" + gMaxField.value)
        return false
    } 
    return true
}

//-----------------------------------------------------------------------------
// Check that this account is not the Transfer account
//-----------------------------------------------------------------------------
function isNotTransAccountRE() {
    //alert("isNotTransAccount(): selectedIndex.value:" + window.gFrame.document.forms[0].FUND.options[window.gFrame.document.forms[0].FUND.selectedIndex].value + "; gField.name:" + gField.name )
    //showProps(window.gFrame.document.forms[0].FUND.options[window.gFrame.document.forms[0].FUND.selectedIndex].value,"FUND.option[0]")
    var transAccount = window.gFrame.document.forms[0].FUND.options[window.gFrame.document.forms[0].FUND.selectedIndex].value
    var reField = eval("/" + gField.name + "/")
//  Use Regular Expressions to remove Leading and Trailing spaces
    var reLeadTrail = /^\W*(\w*)\W*$/
    transAccount.replace(reLeadTrail,RegExp.$1)
    var reTA = eval("/" + transAccount + "/")
    var reSpace = / /
    transAccount = transAccount.replace(reSpace,"_")
//  Search for the field name in the name of the Transfer Account selected
    if ( (transAccount.search(reField) == -1) || (gField.name.search(reTA) == -1) ) {
        // if not found in either direction then not a match
        return true
    } else {  // else it was found... and this is not allowed
        return false
    }
}
function isNotTransAccount() {
    //alert("isNotTransAccount(): selectedIndex.value:" + window.gFrame.document.forms[0].FUND.options[window.gFrame.document.forms[0].FUND.selectedIndex].value + "; gField.name:" + gField.name )
    //showProps(window.gFrame.document.forms[0].FUND.options[window.gFrame.document.forms[0].FUND.selectedIndex].value,"FUND.option[0]")
    var transAccount = window.gFrame.document.forms[0].FUND.options[window.gFrame.document.forms[0].FUND.selectedIndex].value
    //Search for the field name in the name of the Transfer Account selected
    if ( transAccount == gField.name ) {
        // if the same then return false
        return false
    } else {  // else not the same, so OK
        return true
    }
}

//-----------------------------------------------------------------------------
// Consolidated: isDistOk_...()
//-----------------------------------------------------------------------------
//........................Percent
function isDistOk_Percent() {
    if (gField.value == "") {
        window.gFrame.document.errorMsg.src = "images/noError.gif"
        tempTotal = calcTotal()
        window.gFrame.document.forms[0].TOTAL.value = tempTotal
        return true
    }
    if ( !isValidNum_Percent() ) {
        window.gFrame.document.errorMsg.src = "images/wholePercent.gif"
        return false
    }
    if ( !isNotTransAccount() ) {
        window.gFrame.document.errorMsg.src = "images/sameAccount.gif"
        gField.value = ""
        return false
    }
    if ( !isUpToMax_Percent() ) {
        window.gFrame.document.errorMsg.src = "images/totalExceedsTransfer.gif"
        //erp1    gField.value = ""
        tempTotal = calcTotal()  //erp1
        window.gFrame.document.forms[0].TOTAL.value = tempTotal   //erp1
        return false
    }
    //Field is OK, so calculate the Total 
    window.gFrame.document.errorMsg.src = "images/noError.gif"
    tempTotal = calcTotal()
    window.gFrame.document.forms[0].TOTAL.value = tempTotal
    return true
}
//.......................Same account
function isSameaccount() {
   if (gField.value == "") {
        window.gFrame.document.errorMsg.src = "images/noError.gif"
        tempTotal = calcTotal()
        window.gFrame.document.forms[0].TOTAL.value = tempTotal
        return true
    }

   if ( !isNotTransAccount() ) {
        window.gFrame.document.errorMsg.src = "images/sameAccount.gif"
        gField.value = ""
        return false
    }

   return true

}

//........................Dollars
function isDistOk_Dollars() {
    if (gField.value == "") {
        window.gFrame.document.errorMsg.src = "images/noError.gif"
        tempTotal = calcTotal()
        window.gFrame.document.forms[0].TOTAL.value = tempTotal
        return true
    }
    if ( !isValidNum_Dollars() ) {
        window.gFrame.document.errorMsg.src = "images/valid2Decimal.gif"
        return false
    }
    if ( !isNotTransAccount() ) {
        window.gFrame.document.errorMsg.src = "images/sameAccount.gif"
      //  gField.value = ""
        return false
    }
   if ( !isUpToMax_Dollars() ) {
        window.gFrame.document.errorMsg.src = "images/totalExceedsTransfer.gif"
        //erp1    gField.value = ""
        tempTotal = calcTotal()  //erp1
        window.gFrame.document.forms[0].TOTAL.value = tempTotal   //erp1
        return false
    }
    //Field is OK, so calculate the Total 
    window.gFrame.document.errorMsg.src = "images/noError.gif"
    tempTotal = calcTotal()
    window.gFrame.document.forms[0].TOTAL.value = tempTotal
    return true
}
//........................Units
function isDistOk_Units() {
    if (gField.value == "") {
        window.gFrame.document.errorMsg.src = "images/noError.gif"
        tempTotal = calcTotal()
        window.gFrame.document.forms[0].TOTAL.value = tempTotal
        return true
    }
    if ( !isValidNum_Units() ) {
        window.gFrame.document.errorMsg.src = "images/valid2Decimal.gif"
        return false
    }
    if ( !isNotTransAccount() ) {
        window.gFrame.document.errorMsg.src = "images/sameAccount.gif"
        gField.value = ""
        return false
    }
    if ( !isUpToMax_Units() ) {
        window.gFrame.document.errorMsg.src = "images/totalExceedsTransfer.gif"
        //erp1    gField.value = ""
        tempTotal = calcTotal()  //erp1
        window.gFrame.document.forms[0].TOTAL.value = tempTotal   //erp1
        return false
    }
    //Field is OK, so calculate the Total 
    window.gFrame.document.errorMsg.src = "images/noError.gif"
    tempTotal = calcTotal()
    window.gFrame.document.forms[0].TOTAL.value = tempTotal
    return true
}
//-----------------------------------------------------------------------------
// Consolidated: isDistOk_...()
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Consolidated: isTransOk_...()
//-----------------------------------------------------------------------------
//.........................Percent
function isTransOk_Percent() {
    if ( !isValidNum_Percent() ) {
        window.gFrame.document.errorMsg.src = "images/wholePercent.gif"
        return false
    }
    return true
}
//.........................Dollars
function isTransOk_Dollars() {
    if ( !isValidNum_Dollars() ) {
        window.gFrame.document.errorMsg.src = "images/valid2Decimal.gif"
        return false
    }
    return true
}
//.........................Units
function isTransOk_Units() {
    if ( !isValidNum_Units() ) {
        window.gFrame.document.errorMsg.src = "images/valid2Decimal.gif"
        return false
    }
    return true
}
//-----------------------------------------------------------------------------
// Consolidated: isTransOk_...()
//-----------------------------------------------------------------------------


//-----------------------------------------------------------------------------
// Consolidated: isAllocOk_...()
//-----------------------------------------------------------------------------
//........................Percent
function isAllocOk_Percent() {
    if (gField.value == "") {
        window.gFrame.document.errorMsg.src = "images/noError.gif"
        tempTotal = calcTotal()
        window.gFrame.document.forms[0].TOTAL.value = tempTotal
        return true
    }
    if ( !isValidNum_Percent() ) {
        window.gFrame.document.errorMsg.src = "images/wholePercent.gif"
        return false
    }
    if ( !isUpToMax_Percent() ) {
        window.gFrame.document.errorMsg.src = "images/totalExceedsAlloc.gif"
    //erp1    gField.value = ""
        tempTotal = calcTotal()  //erp1
        window.gFrame.document.forms[0].TOTAL.value = tempTotal   //erp1
        return false
    }
    //Field is OK, so calculate the Total 
    window.gFrame.document.errorMsg.src = "images/noError.gif"
    tempTotal = calcTotal()
    window.gFrame.document.forms[0].TOTAL.value = tempTotal
    return true
}
//-----------------------------------------------------------------------------
// Consolidated: isAllocOk_...()
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// check range for all individual fields
//-----------------------------------------------------------------------------
function checkAllFields_Dollars() {
    //var textToWrite = "checkAllFields has been fired..."
    //alert(textToWrite)
    if (window.gFrame.document.forms[0].BOND) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".BOND")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].CONSALLOC) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".CONSALLOC")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].COMPOSITE) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".COMPOSITE")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].MODALLOC) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".MODALLOC")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].MONEY_MKT) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".MONEY_MKT")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].AGGRALLOC) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".AGGRALLOC")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].EQUITY_IDX) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".EQUITY_IDX")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].FIDEQINC) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".FIDEQINC")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].SHORT_BOND) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".SHORT_BOND")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].FIDASSET) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".FIDASSET")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].MID_BOND) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".MID_BOND")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].FIDCONTRA) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".FIDCONTRA")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].ALLAMERICA) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".ALLAMERICA")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }

    }
    if (window.gFrame.document.forms[0].SSC_GRWTH) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".SSC_GRWTH")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].AGGREQUITY) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".AGGREQUITY")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }

    }
    if (window.gFrame.document.forms[0].SSC_BOND) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".SSC_BOND")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].MIDCAP_IDX) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".MIDCAP_IDX")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }

    }
    if (window.gFrame.document.forms[0].SSC_INTNL) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".SSC_INTNL")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }

    }
    if (window.gFrame.document.forms[0].CALVERT) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".CALVERT")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }

    }
    if (window.gFrame.document.forms[0].AC_CAPAPPR) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".AC_CAPAPPR")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }

    }
    if (window.gFrame.document.forms[0].INT_ACCUM) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".INT_ACCUM")
        if (!isDistOk_Dollars()) {
            gField.focus()
            return false
        }

    }

    return true
}
function checkAllFields_Percent() {
    //var textToWrite = "checkAllFields has been fired..."
    //alert(textToWrite)
    if (window.gFrame.document.forms[0].BOND) { 
        gField = eval("window." + gFrame.name + ".document." + gForm.name + ".BOND")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].CONSALLOC){ 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".CONSALLOC")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].COMPOSITE){ 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".COMPOSITE")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].MODALLOC){ 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".MODALLOC")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].MONEY_MKT){ 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".MONEY_MKT")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].AGGRALLOC){ 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".AGGRALLOC")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].EQUITY_IDX) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".EQUITY_IDX")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].FIDEQINC){ 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".FIDEQINC")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].SHORT_BOND) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".SHORT_BOND")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].FIDASSET){ 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".FIDASSET")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].MID_BOND) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".MID_BOND")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].FIDCONTRA) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".FIDCONTRA")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].ALLAMERICA) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".ALLAMERICA")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].SSC_GRWTH) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".SSC_GRWTH")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].AGGREQUITY) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".AGGREQUITY")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].SSC_BOND) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".SSC_BOND")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].MIDCAP_IDX) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".MIDCAP_IDX")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].SSC_INTNL) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".SSC_INTNL")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].CALVERT) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".CALVERT")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].AC_CAPAPPR) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".AC_CAPAPPR")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }
    if (window.gFrame.document.forms[0].INT_ACCUM) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".INT_ACCUM")
        if (gForm.name == "allocation") {
            if (!isAllocOk_Percent()) {
                gField.focus()
                return false
            }
        } else {
            if (!isDistOk_Percent()) {
                gField.focus()
                return false
            }
        }
    }

    return true
}
function checkAllFields_Units() {
    //var textToWrite = "checkAllFields has been fired..."
    //alert(textToWrite)
    if (window.gFrame.document.forms[0].BOND) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".BOND")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].CONSALLOC) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".CONSALLOC")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].COMPOSITE) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".COMPOSITE")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].MODALLOC) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".MODALLOC")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].MONEY_MKT) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".MONEY_MKT")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].AGGRALLOC) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".AGGRALLOC")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].EQUITY_IDX) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".EQUITY_IDX")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].FIDEQINC) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".FIDEQINC")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].SHORT_BOND) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".SHORT_BOND")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].FIDASSET) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".FIDASSET")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].MID_BOND) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".MID_BOND")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].FIDCONTRA) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".FIDCONTRA")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].ALLAMERICA) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".ALLAMERICA")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].SSC_GRWTH) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".SSC_GRWTH")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].AGGREQUITY) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".AGGREQUITY")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].SSC_BOND) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".SSC_BOND")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].MIDCAP_IDX) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".MIDCAP_IDX")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].SSC_INTNL) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".SSC_INTNL")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].CALVERT) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".CALVERT")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].AC_CAPAPPR) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".AC_CAPAPPR")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }
    if (window.gFrame.document.forms[0].INT_ACCUM) { 
        gField =eval("window." + gFrame.name + ".document." + gForm.name + ".INT_ACCUM")
        if (!isDistOk_Units()) {
            gField.focus()
            return false
        }
    }

    return true
}



//=============================================================================
//
//  Begin validation dispatching mechanism
//
//=============================================================================
function dispatcher(validationFunc) {
   this.doValidate = validationFunc
}
var dispatchLookup = new Array()

dispatchLookup["calcTotal"] = new dispatcher(calcTotal)
dispatchLookup["setTotal"] = new dispatcher(setTotal)
dispatchLookup["checkAllFields_Dollars"] = new dispatcher(checkAllFields_Dollars)
dispatchLookup["checkAllFields_Percent"] = new dispatcher(checkAllFields_Percent)
dispatchLookup["checkAllFields_Units"] = new dispatcher(checkAllFields_Units)
dispatchLookup["isTransOk_Percent"] = new dispatcher(isTransOk_Percent)
dispatchLookup["isTransOk_Dollars"] = new dispatcher(isTransOk_Dollars)
dispatchLookup["isTransOk_Units"]   = new dispatcher(isTransOk_Units)
dispatchLookup["isDistOk_Percent"] = new dispatcher(isDistOk_Percent)
dispatchLookup["isDistOk_Dollars"] = new dispatcher(isDistOk_Dollars)
dispatchLookup["isDistOk_Units"]   = new dispatcher(isDistOk_Units)
dispatchLookup["isMax_Percent"] = new dispatcher(isMax_Percent)
dispatchLookup["isMax_Dollars"] = new dispatcher(isMax_Dollars)
dispatchLookup["isMax_Units"] = new dispatcher(isMax_Units)
dispatchLookup["isAllocOk_Percent"] = new dispatcher(isAllocOk_Percent)
dispatchLookup["isSameaccount"] = new dispatcher(isSameaccount)

//-----------------------------------------------------------------------------
// choice validation function called by form element event handlers
//   This version checks the value type (i.e. Dollars, Percent, Units)
//-----------------------------------------------------------------------------
function validate(frame, field, method) {
    gFrame = frame
    gForm = eval("window." + frame.name + ".document.forms[0]" )
    gField = eval("window." + frame.name + ".document.forms[0]." + field.name)
    gMaxField = eval("window." + frame.name + ".document.forms[0].AMOUNT")
    window.gFrame.document.errorMsg.src = "images/noError.gif"
    //alert("validate - gMaxField:" + gMaxField)
    var args = validate.arguments
    //showProps(args,"args")
    //showProps(window.gFrame.document.forms[0].TYPE,"TYPE")

    for (i = 2; i < args.length; i++) {
        //var textToWrite = "for (i = 2, args.length), args[" + i + "]:" + args[i]
        //textToWrite += "\nEnding method character is:" + args[i].charAt(args[i].length - 1)
        //alert(textToWrite)
        if (args[i].charAt(args[i].length - 1) == "_") {
            for (var j = 0; j < window.gFrame.document.forms[0].TYPE.length; j++) {
                if (window.gFrame.document.forms[0].TYPE[j].checked) {
                    //var textToWrite = "inside radio for loop j=" + j
                    //alert(textToWrite)
                    break
                }
            }
            var cArgsi = (j == 0) ? args[i] + "Dollars" : (j == 1) ? args[i] + "Percent" : (j == 2) ? args[i] + "Units" : args[i]
        } else {
            var cArgsi = args[i]
        }

        //var textToWrite = "cArgsi=" + cArgsi
        //alert(textToWrite)
        if (!dispatchLookup[cArgsi].doValidate()) {
            gField.focus()
            return false
        }
    }

    return true
}

//-----------------------------------------------------------------------------
// main validation function called by the form
//-----------------------------------------------------------------------------
function validateForm(frame, form, method) {
    //alert("validateForm(): fired")
    //showProps(form,"form")
    gFrame = frame
    gForm = eval("window." + frame.name + ".document." + form.name )
     gMaxField = eval("window." + frame.name + ".document.forms[0].AMOUNT")
    var args = validateForm.arguments
    //showProps(args,"args")
    for (i = 2; i < args.length; i++) {
        //var textToWrite = "for (i = 2, args.length), args[" + i + "]:" + args[i]
        //alert(textToWrite)
        if (args[i].charAt(args[i].length - 1) == "_") {
            for (var j = 0; j < window.gFrame.document.forms[0].TYPE.length; j++) {
                if (window.gFrame.document.forms[0].TYPE[j].checked) {
                    //var textToWrite = "inside radio for loop j=" + j
                    //alert(textToWrite)
                    break
                }
            }
            var cArgsi = (j == 0) ? args[i] + "Dollars" : (j == 1) ? args[i] + "Percent" : (j == 2) ? args[i] + "Units" : args[i]
        } else {
            var cArgsi = args[i]
        }
        if (!dispatchLookup[cArgsi].doValidate()) {
            return false
        }
    }

    return true
}
