
    function validateCustomCreditCardNo(form) {
        var bValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
        var formName = form.getAttributeNode("name");

        oCreditCard = eval('new ' + formName.value + '_customCreditCardNo()');

        for (x in oCreditCard) {
            if ((form[oCreditCard[x][0]].type == 'text' ||
                 form[oCreditCard[x][0]].type == 'textarea') &&
                (form[oCreditCard[x][0]].value.length > 0)  &&
                 form[oCreditCard[x][0]].disabled == false) {
                
                
                if (!checkCreditCard(form,oCreditCard)) {
                    if (i == 0) {
                        focusField = form[oCreditCard[x][0]];
                    }
                    fields[i++] = oCreditCard[x][1];
                    bValid = false;
                }
            }
        }
        if (fields.length > 0) {
            focusField.focus();
            alert(fields.join('\n'));
        }
        return bValid;
    }

	function checkCreditCard(form,oCreditCard)
	{
		valueStr = form[oCreditCard[x][0]].value;
		resultStr = checkPunct(valueStr,oCreditCard);
		
        AMEX_length = oCreditCard[x][2]("AMEX_length");
        VISA_length = oCreditCard[x][2]("VISA_length");
        if( !(form["onlineCustomer.cuCustomCf1"][0].checked ||form["onlineCustomer.cuCustomCf1"][1].checked || form["onlineCustomer.cuCustomCf1"][2].checked) )
        	return false;
        else if( form["onlineCustomer.cuCustomCf1"][0].checked && resultStr.length!=AMEX_length )
        	return false;
        else if( (form["onlineCustomer.cuCustomCf1"][1].checked || form["onlineCustomer.cuCustomCf1"][2].checked) && resultStr.length!=VISA_length )
        	return false;
        
        if( checkIsNaN(resultStr) )
        	return false;
		
		if( !checkStartFrom(resultStr,form,oCreditCard,"onlineCustomer.cuCustomCf1") )
			return false;

		return true;
		
	}
	
	function checkIsNaN(srcStr)
	{
		for(j=0;j<srcStr.length;j++)
		{
			cardnoChar = srcStr.charAt(j);
			if(isNaN(cardnoChar))
				return true;
		}
		
		return false;
	}
	
	function checkPunct(valueStr,oCreditCard)
	{
        punct = oCreditCard[x][2]("punct");
		resultStr = valueStr;
		for(k=0;k<punct.length;k++)
		{
			punctChar = punct.charAt(k);
			var RegularExpression  =  new RegExp("["+punctChar+"]");
			while(true)
			{
				if(resultStr.indexOf(punctChar)>0)
				{
					resultStr = resultStr.replace(RegularExpression,"");
				}else
					break;
			}
		}
		
		return resultStr;
	}
	
	function checkStartFrom(valueStr,form,oCreditCard,fieldName)
	{
        var startfromFlag = false;
        var startfrom0 = oCreditCard[x][2]("startfrom0");
        var startfrom1 = oCreditCard[x][2]("startfrom1");
        var startfrom2 = oCreditCard[x][2]("startfrom2");
        if( form[fieldName][0].checked && valueStr.indexOf(startfrom0)==0 )
        	startfromFlag = true;
        else if( form[fieldName][1].checked && valueStr.indexOf(startfrom1)==0 )
        	startfromFlag = true;
        else if( form[fieldName][2].checked && valueStr.indexOf(startfrom2)==0 )
        	startfromFlag = true;

		return startfromFlag;
	}
	
	


