﻿var DataValidation = Class.create({
    initialize: function()
    {
    }
});


DataValidation.isNull = function(p_id)
{
    try
    {
        p_id = $F(p_id);
        return (p_id == null || p_id == '');
    } catch(ex) {
        return (true);
    }
}
DataValidation.validateRequest = function(d_id, classToValidate, errorClass)
{
    //var elms = $('dFormElms').getElementsByTagName('input');
    var errorCount = 0;
    var elms = $(d_id).getElementsByClassName(classToValidate);
    //$('sMessage').innerHTML += elms.length;
    for(var i = 0; i < elms.length; i++)
    {
        //$('sMessage').innerHTML += '<br>' + elms[i].type;
        switch(elms[i].type)
        {
            case 'text':
                if(DataValidation.isNull(elms[i].id))
                {
                    //$('sMessage').innerHTML += '<br>' + elms[i].id;
                    $(elms[i].id).addClassName(errorClass);
                    errorCount++;
                }
                else 
                {
                    $(elms[i].id).removeClassName(errorClass);
                    $(elms[i].id).addClassName(classToValidate);
                    //return (true);
                }
                break;
            case 'select-one':
                if(elms[i].selectedIndex == 0)
                {
                    //$('sMessage').innerHTML += '<br>' + elms[i].id;
                    $(elms[i].id).addClassName(errorClass);
                    errorCount++;
                }
                else
                {
                    $(elms[i].id).removeClassName(errorClass);
                    $(elms[i].id).addClassName(classToValidate);
                }
                //$('sMessage').innerHTML += ' ddl';
                break;
        }
        
        
    }
    //$('sMessage').innerHTML = 'sucks';
    //return (true);
    if(errorCount > 0)
    {
        return (false);
    }
    else
    {
        return (true);
    }
}
        
DataValidation.isValidCreditCard = function(p_cardTypeId, p_cardNumberId, errorClass)
{
    var regExp = '';
    var type = $F(p_cardTypeId);
    var number = $F(p_cardNumberId);
    
    if(type == 'VISA')
    {
        regExp = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/;
    }
    else if(type == 'MasterCard')
    {
        regExp = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
    }
    else if(type == 'Discover')
    {
        regExp = /^6011-?\d{4}-?\d{4}-?\d{4}$/;
    }
    else if(type == 'AmericanExpress')
    {
        regExp = /^3[4,7]\d{13}$/;
    }
    else if(type == 'Diners')
    {
        regExp = /^3[0,6,8]\d{12}$/;
    }
    
    if(!regExp.test(number))
    {
         //$('sMessage').innerHTML = (false);
         $(p_cardNumberId).addClassName(errorClass);
         $(p_cardTypeId).addClassName(errorClass);
         return (false);
    }
    
    number = (number.split('-')).join('');
    number = (number.split('-')).join('');
    
    var checksum = 0;
    
    for(var i = (2 - (number.length % 2)), il = number.length; i <= il; i+= 2)
    {
        checksum += parseInt(number.charAt(i - 1));
    }
    for(var i = (number.length % 2) + 1, il = number.length; i < il; i += 2)
    {
        var digit = parseInt(number.charAt(i - 1)) * 2;
        
        checksum += ((digit < 10) ? digit : (digit - 9));
    }
   return (!(checksum % 10) && checksum);
}