function mod10( cardNumber )
{
	var clen = new Array( cardNumber.length );
	var n = 0,sum = 0;
	for( n = 0; n < cardNumber.length; ++n )
	{
		clen [n] = parseInt ( cardNumber.charAt(n) );
	}
	for( n = clen.length -2; n >= 0; n-=2 )
	{
		clen [n] *= 2;
		if( clen [n] > 9 ){
			clen [n]-=9;
		}
	}
	for( n = 0; n < clen.length; ++n )
	{
		sum += clen [n];
	}
	return(((sum%10)==0)?true : false);
}

function ccCheck(options) {
	if (options.popup) {
		var popup = true
	}
	var valid=false;
	var type=1;
	var card = "";
	cc = $("#c_number").val();

	// General validity check
	if ( cc.length > 0 ) {
		valid = false;
		type = 1;
		card = "";
	if ( !mod10(cc) ) {
		valid = false;
		type = 0;
		card = "";
	} else {
		// JCB
		part = cc.substr(0, 2);
		if ( part=='35' ) { type = 2; card = "jcb"; }
		//DinersClub
		part = cc.substr(0, 2);
		if ( (part=='36') || (part=='55') ) { type = -1; card = "diners"; }
		part = cc.substr(0, 3);
		if ( (part=='300') || (part=='301') || (part=='302') || (part=='303') || (part=='304') || (part=='305') ) { type = -1; card = "diners"; }
		//MasterCard
		part = cc.substr(0, 2);
		if ( (part=='51') || (part=='52') || (part=='53') || (part=='54') || (part=='55') ) { type = -1; card = "mastercard"; }
		// JCB
		part = cc.substr(0, 4);
		if ( (part=='1800') || (part=='2131') ) { type = 2; card = "jcb"; }
		part = cc.substr(0, 6);
		if (part >= 352800 && part <= 358999 ) { type = 2; card = "jcb"; }
		//Solo
		part = cc.substr(0, 4);
		if ( (part=='6334') || (part=='6767') ) { type = 10; card = "solo"; }
		//Discover
		part = cc.substr(0, 2);
		if ( part=='65' ) { type = 5; card = "discover"; }
		part = cc.substr(0, 4);
		if ( part=='6011' ) { type = 5; card = "discover"; }
		part = cc.substr(0, 6);
		if (part >= 622126 && part <= 622925 ) { type = 5; card = "discover"; }
		part = cc.substr(0, 3);
		if (part >= 644 && part <= 649 ) { type = 5; card = "discover"; }
		//Maestro
		part = parseInt(cc.substr(0, 4));
		var prefixes = [5018,5020,5038,6304,6330,6725,6726,6759,6761,6763,5033,5868];
		if (jQuery.inArray(part, prefixes)!=-1) { type = 10; card = "maestro"; }
		part = parseInt(cc.substr(0, 6));
		var prefixes = [503615,545250,560054,561059,589261,601382,630490,630495,630499,670695,676398,676953,677594];
		if (jQuery.inArray(part, prefixes)!=-1) { type = 10; card = "maestro"; }
//		part = cc.substr(0, 6);
//		if (part >= 500000 && part <= 509999 ) { type = 10; card = "maestro"; }
//		part = cc.substr(0, 6);
//		if (part >= 560000 && part <= 589999 ) { type = 10; card = "maestro"; }
//		part = cc.substr(0, 6);
//		if (part >= 600000 && part <= 699999 ) { type = 10; card = "maestro"; }
		// Switch
		part = cc.substr(0, 4);
		if ( (part=='4903') || (part=='4905') || (part=='4911') || (part=='4936') || (part=='6333') || (part=='6759') ) { type = 10; card = "switch"; }
		part = cc.substr(0, 6);
		if ( (part=='564182') || (part=='633110') ) { type = 10; card = "switch"; }
		//Visa
		part = cc.substr(0, 1);
		if ( (part=='4') ) { type = -1; card = "visa"; }
		// Visa Electron
		part = cc.substr(0, 4);
		if ( (part=='4917') || (part=='4913') || (part=='4508') || (part=='4844')) { type = 10; card = "electron"; }
		part = cc.substr(0, 6);
		if ( (part=='417500') ) { type = 10; card = "electron"; }
		// American Express
		part = cc.substr(0, 2);
		if ( (part=='34') || (part=='37') ) { type = 6; card = "amex"; }
		}
	} else {
		type = -1;
		card = "";
	}

	if (type == -1) {
		return change_card({cc_type:card, accepted:true, non_recurring:false, popup:popup });
		//return true;
	} else if (type == 10) {
		return change_card({cc_type:card, accepted:true, non_recurring:true, popup:popup });
		//return true;
	} else {
		change_card({cc_type:card, accepted:false, non_recurring:false, popup:popup });
		return false;
	}
	

}