﻿function payPageDrpCardTypesSelectedIndexChanged()
{
    var payPageDrpCardTypesRef = $(prefixTagNameMain + 'payPageDrpCardTypes');
    var payPageTxtCreditCardNo4Ref = $(prefixTagNameMain + 'payPageTxtCreditCardNo4');
    var payPageTxtAuthorityCodeRef = $(prefixTagNameMain + 'payPageTxtAuthorityCode');
    
    if (payPageDrpCardTypesRef.selectedIndex == 3) // 3: American Express
    {
        payPageTxtCreditCardNo4Ref.maxLength = 3;
        payPageTxtAuthorityCodeRef.maxLength = 4;
        
        payPageTxtCreditCardNo4Ref.value = payPageTxtCreditCardNo4Ref.value.substring(0, 3);
    }
    else
    {
        payPageTxtCreditCardNo4Ref.maxLength = 4;
        payPageTxtAuthorityCodeRef.maxLength = 3;
        
        payPageTxtAuthorityCodeRef.value = payPageTxtAuthorityCodeRef.value.substring(0, 3);
    }
}

function payPageTxtCreditCardNoKeyUp(txtRef, e)
{
    if (!e)
        e = window.event;
    
    var specialKeyKodes = new Array(8, 9, 16, 37, 39, 46);
    var keyCode;
    if (browserRef.isIE)
        keyCode = e.keyCode;
    else
        keyCode = e.which;
    
    for (var i = 0; i < specialKeyKodes.length; i++)
    {
        if (keyCode == specialKeyKodes[i])
            return;
    }
    
    var payPageTxtCreditCardNoIDs = new Array('payPageTxtCreditCardNo1', 'payPageTxtCreditCardNo2', 'payPageTxtCreditCardNo3', 'payPageTxtCreditCardNo4');
    var txtRefIndex = -1;
    if (txtRef.value.length == 4)
    {   
        for (var i = 0; i < payPageTxtCreditCardNoIDs.length; i++)
        {
            if (txtRef.id == prefixTagNameMain + payPageTxtCreditCardNoIDs[i])
            {
                txtRefIndex = i;
                break;
            }
        }
        
        if (txtRefIndex != -1)
            $(prefixTagNameMain + payPageTxtCreditCardNoIDs[txtRefIndex + 1]).focus();
    }
}

function payPageTxtCreditCardNo4KeyUp(txtRef, e)
{
    if (!e)
        e = window.event;
    
    var specialKeyKodes = new Array(8, 9, 16, 37, 39, 46);
    var keyCode;
    if (browserRef.isIE)
        keyCode = e.keyCode;
    else
        keyCode = e.which;
    
    for (var i = 0; i < specialKeyKodes.length; i++)
    {
        if (keyCode == specialKeyKodes[i])
            return;
    }
    
    var payPageDrpCardTypesRef = $(prefixTagNameMain + 'payPageDrpCardTypes');
    var payPageTxtAuthorityCodeRef = $(prefixTagNameMain + 'payPageTxtAuthorityCode');
    
    if (payPageDrpCardTypesRef.selectedIndex == 3 && txtRef.value.length == 3 || txtRef.value.length == 4) // 3: American Express
        payPageTxtAuthorityCodeRef.focus();
}

function clientValidateForPayPageCreditCardNo(source, argument)
{
    var payPageDrpCardTypesRef = $(prefixTagNameMain + 'payPageDrpCardTypes');
    var payPageTxtCreditCardNoIDs = new Array('payPageTxtCreditCardNo1', 'payPageTxtCreditCardNo2', 'payPageTxtCreditCardNo3', 'payPageTxtCreditCardNo4');
    var creditCardNoValueLength = 0;
    for (var i = 0; i < payPageTxtCreditCardNoIDs.length; i++)
        creditCardNoValueLength += $(prefixTagNameMain + payPageTxtCreditCardNoIDs[i]).value.length;
        
    if (payPageDrpCardTypesRef.selectedIndex == 3 && creditCardNoValueLength == 15) // 3: American Express
        argument.IsValid = true;
    else if (payPageDrpCardTypesRef.selectedIndex != 3 && creditCardNoValueLength == 16)
        argument.IsValid = true;
    else
        argument.IsValid = false;
}

function clientValidateForPayPageTxtAuthorityCode(source, argument)
{
    var payPageDrpCardTypesRef = $(prefixTagNameMain + 'payPageDrpCardTypes');
    var payPageTxtAuthorityCodeRef = $(prefixTagNameMain + 'payPageTxtAuthorityCode');
    
    if (payPageDrpCardTypesRef.selectedIndex == 3 && payPageTxtAuthorityCodeRef.value.length == 4) // 3: American Express
        argument.IsValid = true;
    else if (payPageDrpCardTypesRef.selectedIndex != 3 && payPageTxtAuthorityCodeRef.value.length == 3)
        argument.IsValid = true;
    else
        argument.IsValid = false;
}

function payPageBtnBackToPayPageCBIClick()
{
    new Effect.Fade('divPayPagePay', { duration: 0.5, afterFinish: function() { new Effect.Appear('divPayPageCBI'); } });
}
