function validateCards(){
    var msg = "";
    var cards = document.getElementsByTagName("input");
    for (var i = 0; i < cards.length; i++) {
        var type = cards[i].type
        if(type == "text" && cards[i].name.indexOf("cardNumber") >= 0){
            var prop = cards[i].name.substring(0, 20)+".cardTypeId";
            var cardTypeIndex = document.getElementById(prop).selectedIndex;
            var cardType = document.getElementById(prop).options[cardTypeIndex].text;
            
            if(cards[i].value != null && trim(cards[i].value) != '' && cardType != trim("Debit Card")){
                if(!isValidCreditCard(cards[i].value)){
                    msg += "Card["+cards[i].value+"] is not valid.";
                    alert(msg);
                    return false;
                }
            }
        }
    }
    lockBttn(true); 
    return true;
}

function isValidCreditCard(ccnum) {
    // Visa: length 16, prefix 4, dashes optional.
    var re = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/;
    if (!re.test(ccnum)){
        // Mastercard: length 16, prefix 51-55, dashes optional.
        re = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
        if (!re.test(ccnum)){
            // Discover: length 16, prefix 6011, dashes optional.
            re = /^6011-?\d{4}-?\d{4}-?\d{4}$/;
            if (!re.test(ccnum)) {
                // American Express: length 15, prefix 34 or 37.
                re = /^3[4,7]\d{13}$/;
                if (!re.test(ccnum)) {
                    // Diners: length 14, prefix 30, 36, or 38.
                    re = /^3[0,6,8]\d{12}$/;
                    if (!re.test(ccnum))
                        return false;
                }
            }
        }
    }
    
    // Remove all dashes for the checksum checks to eliminate negative numbers
    ccnum = ccnum.split("-").join("");
    // Checksum ("Mod 10")
    // Add even digits in even length strings or odd digits in odd length strings.
    var checksum = 0;
    for (var i=(2-(ccnum.length % 2)); i<=ccnum.length; i+=2) {
        checksum += parseInt(ccnum.charAt(i-1));
    }
    // Analyze odd digits in even length strings or even digits in odd length strings.
    for (var i=(ccnum.length % 2) + 1; i<ccnum.length; i+=2) {
        var digit = parseInt(ccnum.charAt(i-1)) * 2;
        if (digit < 10) { checksum += digit; } else { checksum += (digit-9); }
    }
    if ((checksum % 10) == 0)return true; else return false;
}

function checkFormatSelect(msg){
    if(document.getElementById('format')){
        var format = trim(document.getElementById('format').value);
        
        if(format == ""){
            alert(msg);
            return false;
        }
    }
    
    return true;
}

function init() {
    
    var inputs = document.getElementsByTagName('input');
    for (var i = 0; i < inputs.length; i++) {
        inputs[i].setAttribute("autocomplete", "off");
    } 
} 

function lock(){
    unlock();
    
    var inputs2 = document.getElementsByTagName('select');
    for (var i = 0; i < inputs2.length; i++) {
        inputs2[i].disabled = true;
    }  
    
    lockHistory();
    
    lockInputs();
}

function lockInputs(){ 
    var inputs = document.getElementsByTagName('input');
    for (var i = 0; i < inputs.length; i++) {
        inputs[i].disabled = true;
    } 
}

function unlock(){
    var inputs2 = document.getElementsByTagName('select');
    for (var i = 0; i < inputs2.length; i++) {
        inputs2[i].disabled = false;
    }   
    var inputs = document.getElementsByTagName('input');
    for (var i = 0; i < inputs.length; i++) {
        inputs[i].disabled = false;
    }
    
    lockHistory();
}

function addClickEvents(){
    var inputs2 = document.getElementsByTagName('select');
    for (var i = 0; i < inputs2.length; i++) {
        inputs2[i].onclick = hideScreen;
    }   
    var inputs = document.getElementsByTagName('input');
    for (var i = 0; i < inputs.length; i++) {
        inputs[i].onclick = hideScreen;
    }
}

function trim(str){
    if(str == null){
        return false;
    }
    return str.replace(/(^\s+)|(\s+$)/g,"");
}

function paymentCountryChange(){
    var code = document.getElementById("paymentCountry").value;
    changeCurrency(code);
}

function showScreen(){
    //this works for firefox but not IE
    try{
        document.getElementById('transactionTD').style.display = 'table-cell';
    }catch(e){}
    
    //This works for IE but not firefox
    bName = navigator.appName; //1
    bVer = parseInt(navigator.appVersion); //2
    if (bName == "Microsoft Internet Explorer" && bVer >= 4)
        document.getElementById('transactionTD').style.display = 'block';
    else if (bName == "Microsoft Internet Explorer")
        document.getElementById('transactionTD').style.display = 'block';
    
    document.getElementById('lang').style.display = 'none'
    
    if(document.getElementById("notes"))
        hideNoteScreen();
    
    return false;
}

function showNoteScreen(){  
    document.getElementById("notes").style.display = 'block';
    document.getElementById("transactionData").innerHTML = "";
    //this works for firefox but not IE
    try{
        document.getElementById('transactionTD').style.display = 'table-cell';
    }catch(e){}
    
    //This works for IE but not firefox
    bName = navigator.appName; //1
    bVer = parseInt(navigator.appVersion); //2
    if (bName == "Microsoft Internet Explorer" && bVer >= 4)
        document.getElementById('transactionTD').style.display = 'block';
    else if (bName == "Microsoft Internet Explorer")
        document.getElementById('transactionTD').style.display = 'block';
    return false;
}

function hideNoteScreen(){
    document.getElementById("notes").style.display = 'none';
    return false;
}


function hideScreen(){
    document.getElementById('transactionTD').style.display = 'none';
    document.getElementById('lang').style.display = 'block'  
    
    if(document.getElementById("notes"))
        showNoteScreen();
}


function createPaymentScreen(){
    
    var params = "method=initialMakePayment";    
    
    document.getElementById("transactionData").innerHTML = "";
    processScreen('createPaymentForm.do', params, "createPaymentStatusData");
    
    return false;
}

function registerEbill(){
    processScreen('ebillInstructions.do', null, "previewStatusData");
}

function requestPaymentHistory(){
    var email = document.getElementById("historyEmail").value;
    var params = "historyEmail=" + escape(email);    
    
    document.getElementById("transactionData").innerHTML = "";
    processScreen('paymentHistory.do', params, "historyStatusData");
    
    return false;
}

function requestPaymentHistoryPage(){
    
    var params = "";    
    
    document.getElementById("transactionData").innerHTML = "";
    processScreen('oecsRequestHistoryPage.do', params, "createPaymentStatusData");
    
    return false;
}

function ebillSubscribe(){
    var email = document.getElementById("email").value;
    var params = "email=" + escape(email);    
    
    document.getElementById("transactionData").innerHTML = "";
    processScreen('ebillSubscribe.do', params, "ebillStatusData");
    
    return false;
}

function ebillSubscribePage(){
    
    var params = "";    
    
    document.getElementById("transactionData").innerHTML = "";
    processScreen('ebillSubscribePage.do', params, "createPaymentStatusData");
    
    return false;
}

function previewPaymentScreen(){
    var country = document.getElementById("paymentCountry").value;
    var customerName = document.getElementById("customerName").value;
    var ban = document.getElementById("ban").value;
    var telephoneNumber = document.getElementById("telephoneNumber").value;
    var amount = document.getElementById("amount").value;
    var type = document.getElementById("type").value;
    var login = document.getElementById("login").value;
    var password = document.getElementById("paymentPassword").value;
    
    var params = "method=preview&country=" + escape(country) +
    "&customerName=" + escape(customerName) +
    "&ban=" + escape(ban) +
    "&telephoneNumber=" + escape(telephoneNumber) +
    "&amount=" + escape(amount) +
    "&type=" + escape(type) +
    "&login=" + escape(login) +
    "&password=" + escape(password);
    
    processScreen('paymentPreview.do', params, "previewStatusData");
    
    return false;
}

function previewAlternatePaymentScreen(){
   
    processScreen('alternative1.do', null, "previewStatusData");
}
function makePaymentScreen(){
    var cvv = document.getElementById("cvv").value;
    var card = document.getElementById("card").value;
    
    var params = "method=makePayment&cvv=" + escape(cvv) +
    "&card=" + escape(card);
    
    processScreen('payPayment.do', params, "payStatusData");
    
    return false;
}
function showPasswordChangeForm(){
    processScreen('changePasswordForm.do', "", "");
    document.getElementById("transactionData").innerHTML = "";
    
    return false;
}
function changePassword(str){
    var old = document.getElementById("old").value;
    var newP = document.getElementById("new").value;
    var confirm = document.getElementById("confirm").value;
    
    var params = "new=" + escape(newP) +
    "&old=" + escape(old) +
    "&confirm=" + escape(confirm) +
    "&fromLogin=" + escape(str);
    
    processScreen('password.do', params, "passwordStatusData");
    return false;
}

function changeRequiredPassword(str){
    var old = document.getElementById("old").value;
    var newP = document.getElementById("new").value;
    var confirm = document.getElementById("confirm").value;
    
    var params = "new=" + escape(newP) +
    "&old=" + escape(old) +
    "&confirm=" + escape(confirm) +
    "&fromLogin=" + escape(str);
    
    document.location.href = "password.do?"+params;
    
    return false;
}
function secure(){
    var securityCode = document.getElementById("securityCode").value;
    
    var params = "method=secure&securityCode=" + escape(securityCode);
    
    processScreen('securityCode.do', params, "secureData");
    return false;
}

function goBack(url, params, status){ 
    processScreen(url, params, status);
    return false;
}

function lockHistory(){
    if(document.getElementById("historyEmail")){
        document.getElementById("historyEmail").disabled = !document.getElementById("sendEmail").checked;
        
        
    }
}

function lockBttn(lock){
    if(document.getElementById("paybttn"))
        document.getElementById("paybttn").disabled = lock;
    
    init();
}

