var invalidPos = 0;
var creditCardSize = 0;

    function validateCustomCustomerCreditCard(form) {
        var bValid = true;
        var focusField = null;
        var fields = new Array();
        var formName = form.getAttributeNode("name");
        
        if( creditCardSize<=1 && (form["item[0].mpContent1"]==undefined || trim(form["item[0].mpContent1"].value).length==0) )
        	return true;
        
        if( !form["customer.cuCustomCf1"][0].checked && !form["customer.cuCustomCf1"][1].checked && !form["customer.cuCustomCf1"][2].checked )
        {
            alert(customerProfileForm_customer_creditcard_required);
            return false;
        }

    	if( trim(form["customer.cuCustomf18"].value).length<=0 )
    	{
            alert(customerProfileForm_customer_cuCustomf18_required);
            form["customer.cuCustomf18"].focus();
            return false;
    	}

        oCreditCard = eval('new ' + formName.value + '_customCustomerCreditCard()');

        for (x in oCreditCard) {
        	
        	if( !checkCustomerCreditCardNo(form,oCreditCard) )
        	{
        		alert(customerProfileForm_customer_creditcardno_invalid);
	            form["item["+(invalidPos-1)+"].mpContent1"].focus();
	            return false;
        	}
        
        	if( !checkCustomerBaseJSDate(form,oCreditCard) )
        	{
        		alert(customerProfileForm_customer_creditcarddate_invalid);
	            form["item["+(invalidPos-1)+"].credMonth"].focus();
	            return false;
        	}
/*        	
	        if (!checkCustomerCreditCard(form,oCreditCard)) {
                focusField = form[oCreditCard[x][0]];
                fields[i++] = oCreditCard[x][1];
	            bValid = false;
	        }
*/	        
        }
/*        
        if (fields.length > 0) {
            focusField.focus();
            alert(fields.join('\n'));
            //alert("The customer credit card [" + invalidPos + "] number or date is not invalid." );
        }
*/        
        return bValid;
    }

	function checkCustomerCreditCard(form,oCreditCard)
	{
		if( !checkCustomerCreditCardNo(form,oCreditCard) )
			return false;
			
		if( !checkCustomerBaseJSDate(form,oCreditCard) )
			return false;

		return true;
		
	}
	
	function checkCustomerCreditCardNo(form,oCreditCard)
	{
		cardTypeStr = "";
        if( form["customer.cuCustomCf1"][0].checked )
        	cardTypeStr = "A";
        else if( form["customer.cuCustomCf1"][1].checked )
        	cardTypeStr = "V";
        else if( form["customer.cuCustomCf1"][2].checked )
        	cardTypeStr = "M";
		
       	var fieldName = oCreditCard[x][0];
		//for(i=0;i<creditCardSize;i++)
		for(i=0;i<1;i++)
		{
			invalidPos = i+1;
			//valueStr = form["item["+i+"].mpContent1"].value;
			valueStr = form[fieldName].value;
			if( trim(valueStr).length==0 )
				return false;
			
			resultStr = checkPunct(valueStr,oCreditCard);
			
	        AMEX_length = oCreditCard[x][2]("AMEX_length");
	        VISA_length = oCreditCard[x][2]("VISA_length");

	        if( cardTypeStr=="" )
	        	return false;
	        else if( cardTypeStr=="A" && resultStr.length!=AMEX_length )
	        	return false;
	        else if( (cardTypeStr=="V" || cardTypeStr=="M") && resultStr.length!=VISA_length )
	        	return false;

	        if( checkIsNaN(resultStr) ) //the function is in custom_validateCreditCardNo.js
	        	return false;

			if( !checkStartFrom(resultStr,form,oCreditCard,"customer.cuCustomCf1") ) //the function is in custom_validateCreditCardNo.js
				return false;
		}
		
		invalidPos = 0;
		return true;
	}
	
    function checkCustomerBaseJSDate(form,oCreditCard)
    {
		for(i=0;i<creditCardSize;i++)
		{
			invalidPos = i+1;
			monStr = form["item["+i+"].credMonth"].value;
			yearStr = form["item["+i+"].credYear"].value;
			var valueStr = form["item["+i+"].mpContent1"].value;
	    	if( isNaN(monStr) || isNaN(yearStr) )
    			return false; 

	    	if( trim(monStr).length==0 || trim(yearStr).length==0 )
	    	{
	    		if( i==0 )
	    			return false; 
	    		else if( trim(valueStr).length==0 )
	    			continue;
	    	}

	    	if( !compareDateWithNow(monStr,yearStr) )
	    		return false;
		}
    	
		invalidPos = 0;
    	return true;
    }
    	
	


