// JavaScript Document
function CvvCodeValidate(source, arguments, cardTypeCtlName) {
    //Get the text of the selected card type
    var cardType = document.getElementById(cardTypeCtlName).options[document.getElementById(cardTypeCtlName).selectedIndex].text;
    // Get the value of the CVV code
    // var cvvCode = document.getElementById('txtCVVCode').value;
    var cvvCode = arguments.Value;

    var digits = 0;
    switch (cardType.toUpperCase()) {
        case 'MASTERCARD':
        case 'EUROCARD':
        case 'EUROCARD/MASTERCARD':
        case 'VISA':
        case 'DISCOVER':
            digits = 3;
            break;
        case 'AMEX':
        case 'AMERICANEXPRESS':
        case 'AMERICAN EXPRESS':
            digits = 4;
            break;
        default:
            return false;
    }
    var regExp = new RegExp('[0-9]{' + digits + '}');
    return (cvvCode.length == digits && regExp.test(cvvCode))
}

function ccClientValidate(source, arguments) {
    var cc = arguments.Value;
    var ccSansSpace;
    var i, digits, total;

    // SAMPLE ONLY.  Not a real world actual credit card algo.
    // Based on ANSI X4.13, the LUHN formula (also known as the modulus 10 -- or mod 10 -- algorithm )
    // is used to generate and/or validate and verify the accuracy of some credit-card numbers.

    // Get the number, parse out any non digits, should have 16 left
    ccSansSpace = cc.replace(/\D/g, "");
    if (ccSansSpace.length != 16) {
        arguments.IsValid = false;
        return;   // invalid ccn
    }

    // Convert to array of digits
    digits = new Array(16);
    for (i = 0; i < 16; i++)
        digits[i] = Number(ccSansSpace.charAt(i));

    // Double & sum digits of every other number
    for (i = 0; i < 16; i += 2) {
        digits[i] *= 2;
        if (digits[i] > 9) digits[i] -= 9;
    }

    // Sum the numbers
    total = 0;
    for (i = 0; i < 16; i++) total += digits[i];

    // Results
    if (total % 10 == 0) {
        arguments.IsValid = true;
        return;    // valid ccn
    }
    else {
        arguments.IsValid = false;
        return;   // invalid ccn
    }
}

function MM_preloadImages() { //v3.0
    var d = document; if (d.images) {
        if (!d.MM_p) d.MM_p = new Array();
        var i, j = d.MM_p.length, a = MM_preloadImages.arguments; for (i = 0; i < a.length; i++)
            if (a[i].indexOf("#") != 0) { d.MM_p[j] = new Image; d.MM_p[j++].src = a[i]; } 
    }
}
function MM_swapImgRestore() { //v3.0
    var i, x, a = document.MM_sr; for (i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++) x.src = x.oSrc;
}
function MM_findObj(n, d) { //v4.01
    var p, i, x; if (!d) d = document; if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
        d = parent.frames[n.substring(p + 1)].document; n = n.substring(0, p);
    }
    if (!(x = d[n]) && d.all) x = d.all[n]; for (i = 0; !x && i < d.forms.length; i++) x = d.forms[i][n];
    for (i = 0; !x && d.layers && i < d.layers.length; i++) x = MM_findObj(n, d.layers[i].document);
    if (!x && d.getElementById) x = d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
    var i, j = 0, x, a = MM_swapImage.arguments; document.MM_sr = new Array; for (i = 0; i < (a.length - 2); i += 3)
        if ((x = MM_findObj(a[i])) != null) { document.MM_sr[j++] = x; if (!x.oSrc) x.oSrc = x.src; x.src = a[i + 2]; }
}
sfHover = function() {
    if (document.getElementById("nav") != null) {
        var sfEls = document.getElementById("nav").getElementsByTagName("LI");
        for (var i = 0; i < sfEls.length; i++) {
            sfEls[i].onmouseover = function() {
                this.className += " sfhover";
            }
            sfEls[i].onmouseout = function() {
                this.className = this.className.replace(new RegExp(" sfhover\\b"), "");
            }
        }
    }
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
sfHover2 = function() {
    if (document.getElementById("nav2") != null) {
        var sfEls = document.getElementById("nav2").getElementsByTagName("LI");
        for (var i = 0; i < sfEls.length; i++) {
            sfEls[i].onmouseover = function() {
                this.className += " sfhover2";
            }
            sfEls[i].onmouseout = function() {
                this.className = this.className.replace(new RegExp(" sfhover2\\b"), "");
            }
        }
    }
}
if (window.attachEvent) window.attachEvent("onload", sfHover2);