// Matt's custom validation code....

function isEmail(testval,required,errorMsg) 
{
    if(testval.length > 0) {
        if( (!(testval.indexOf("@") < testval.lastIndexOf("."))) || (testval.lastIndexOf(".")<0) ) { errorCount++;return(errorMsg) } else { return("") }
    }
    else {
        if(required) { errorCount++;return(errorMsg) } else { return("") }
    }
}

function alphaOnly(testval,required,errorMsg)
{
    if(testval.length > 0) {
        var broken;
        uppertestval = testval.toUpperCase()
        for (i=0; i<testval.length; i++) {
            curCharCode = uppertestval.charCodeAt(i)
            if(!(curCharCode > 64 && curCharCode < 91)) { if(!(curCharCode == 32 || curCharCode == 45)) { broken=1 } }
        }
        if(broken) {errorCount++;return(errorMsg)} else { return("") }
    }
    else {
        if(required) {
            errorCount++;return(errorMsg)
        }
        else {return("")}
        
    }
}

function numericOnly(testval,required,errorMsg)
{
    if(testval.length > 0) {
        var broken;
        for (i=0; i<testval.length; i++) {
            curChar = testval.charAt(i)
            curCharCode = testval.charCodeAt(i)
            if(!(curChar >= 0 && curChar <= 9)) { if(!(curCharCode == 32)) { broken=1 } }
        }
        if(broken) {errorCount++;return(errorMsg)} else { return("") }
    }
    else {
        if(required) { errorCount++;return(errorMsg) } else { return("") }
    }
}

function isPhone(testval,required,errorMsg,minimumLength,maximumLength)
{
    var btestval="";
    for (i=0;i<testval.length;i++) {
        if( testval.charAt(i) !=" " && testval.charAt(i) !="(" && testval.charAt(i) != ")" ) { btestval += testval.charAt(i) }
    }
    
    if(btestval.length > 0) {
        a = numericOnly(btestval,0,"fail")
        if(a == "fail") { errorCount-- }
        if( a == "fail" || (!(btestval.length >= minimumLength && btestval.length <= maximumLength)) ) { errorCount++;return(errorMsg) } else { return("") }
    }
    else { if(required) { errorCount ++;return(errorMsg) } else { return("") }
    }
}

function selectedRadio(testControl,errorMsg)
{   
    var msg = errorMsg
    errorCount++
    eval("obj=" + testControl)
    for(x=0; x<obj.length;x++) {
        if(obj[x].checked) { msg="";errorCount-- }
    }
    return(msg)
}

function isDate(testval,dateFormat,errorMsg,pastfuture,required)
{
   if(testval.length>0) {
        var broken = false
        var dVar="",mVar="",yVar=""

        if(testval.length==dateFormat.length) {
            dateFormat = dateFormat.toUpperCase()
            for(i=0;i<dateFormat.length;i++) {
                curChar = dateFormat.charAt(i)
                if(curChar=="D" || curChar=="M" || curChar=="Y") {
                    // check to make sure the corresponding figure in testval is numerical
                    if(isNaN(testval.charAt(i))) { broken = true }

                    switch(curChar){
                        case "D":
                            dVar = dVar + testval.charAt(i)
                            break;
                        case "M":
                            mVar = mVar + testval.charAt(i)
                            break;
                        case "Y":
                            yVar = yVar + testval.charAt(i)
                            break;
                    }
                }
                else {
                    //check to make sure corresponding character is the same as the format
                    if(! curChar==testval.charAt(i)) { broken = true }
                }
            }
            // test to make sure testval is actually a date
            if(! broken) {
                dVar = stripZero(dVar)
                mVar = stripZero(mVar)
                yVar = stripZero(yVar)
                dateObj = new Date(yVar,mVar,dVar)
                if(!(dateObj.getDate()==dVar && dateObj.getMonth()==mVar && dateObj.getFullYear()==yVar)) { broken = true }
            }
            if(! broken) {
                testDateObj = new Date()
                switch(pastfuture.toLowerCase()) {
                    case "past":
                        if(dateObj.valueOf() > testDateObj.valueOf()) { broken=true }
                        break;
                    case "future":
                        if(testDateObj.valueOf() > dateObj.valueOf()) { broken=true }
                        break;
                }
            }
        }
        else { 
            broken = true 
        }
    }
    else { if(required) { broken = true } }
    if(broken) { errorCount++;return(errorMsg) } else { return("") }
}

function cardExpiry(testval,errorMsg,required)
{
    // Currently Working On! //
    if(testval.length > 0) {
        var finishedMonth = false
        var mVar = "", yVar = "", broken=false
        
        // parse testval
        for(i=0; i<testval.length; i++) {
            if(! (testval.charAt(i) == "/")) {
                if(finishedMonth) { yVar = yVar + testval.charAt(i) } else { mVar = mVar + testval.charAt(i) }
            }
            else
            {
            finishedMonth = true 
            }
        }
        mVar = stripZero(mVar)
        yVar = stripZero(yVar)

        if(!(mVar.isNaN && yVar.isNaN)) {
            if(mVar == 12) {mVar = 1; yVar++} else { mVar++ }
            dateObj = new Date( yVar, mVar, 1)
            testDateObj = new Date()
            // alert(!(dateObj.valueOf() < testDateObj.valueOf()))
            if(!(dateObj.valueOf() > testDateObj.valueOf())) { broken=true }
        }
        else
        { alert("hi");broken = true }
    }
    else
    { if(required) { broken=true } }
    if(broken) { errorCount++;return(errorMsg) } else { return("") }
}

function notSelectedFirst(testControl,errorMsg)
{
    eval("obj = " + testControl)
    if(obj.selectedIndex == 0) { errorCount++; return(errorMsg) } else { return("") }
}

function matchedFields(testVal1,testVal2,errorMsg)
{
    if(!(testVal1==testVal2)) { return(errorMsg) } else { return("") }
}

function required(testVal,errorMsg) {
    if(! testVal.length>0) { errorCount++; return(errorMsg) } else { return("") }
}

function stripZero(varString)
{
    var firstNonZero = false
    for(i=0; i<varString.length; i++) {
        if(! firstNonZero && varString.charAt(i) > 0) { firstNonZero = true; return(varString.substr(i)) }
    }
}

function isChecked(testval,errorMsg) {
    if (testval.checked != true) { errorCount++; return(errorMsg) } else { return("") }
}

function matchLength(testval,required,matchChars,errorMsg) {
    if (testval.length > 0 ) {
	if (testval.length != matchChars ) { errorCount++; return(errorMsg) } else { return("") }
	}
    else { if(required) { errorCount++; return(errorMsg) } else { return("") } }
}