Para crear el sistema de validación que usa el prototype, me ha ayudado mucho el siguiente tutorial:
Creating a Credit Card Validation Class With PHP
Creating a Credit Card Validation Class With PHP
String.prototype.validateCardNumber = function() {
// -- 0 devolverí a true, por precaución ...
if (this == 0 || this.length == 0) {
return false;
}
// -- convierto la cadena en una array
var $array = new Array();
$array = this.split("");
// -- invierto el orden del array
$array.reverse();
// -- duplico el valor de cada caracter y lo añado al caracter anterior
for (var i = 0; i<$array.length; i++) {
if (i%2<>0) {
$array.splice(i, 1, $array[i]*2);
}
}
// -- compruebo cifras > 10 se suman los dí gitos (14 = 1 + 4 = 5)
for (var i = 0; i<$array.length; i++) {
if ($array[i]>=10) {
var $var1 = String($array[i]).substr(0, 1);
var $var2 = String($array[i]).substr(1, 1);
$array[i] = (Number($var1)+Number($var2));
}
}
// -- sumo el valor de todos los elementos del array
var $suma = 0;
var $total = 0;
for (var i = 0; i<$array.length; i++) {
$suma = String($array[i]);
$total += Number($suma);
}
// -- mod 10
if ($total%10 == 0) {
return true;
} else {
trace($total%10);
return false;
}
};
numerotarjeta = ""; // -- número de tarjeta trace(numerotarjeta.validateCardNumber());