/*
 * jQuery Validator Plugin. Extend Methods
 *
 * @date: 2008-11-24
 * @author: Iberia L.A.E.
 *
 */
jQuery.validator.addMethod("str",function(value,element){
	return this.optional(element) || /^([a-zA-Z \s áéíóúàèìòùâêîôûäëïöüñÁÉÍÓÚÀÈÌÒÙÂÊÎÔÛÄËÏÖÜÑ]+)$/.test(value);
},jQuery.validator.messages.isString);
jQuery.validator.addMethod("strName",function(value,element){
	return this.optional(element) || /^[a-zA-Z \\-\\.\\'\\àÀáÁâÂãÃäÄåÅæÆçÇèÈéÉêÊëËìÌíÍîÎïÏðÐñÑòÒóÓôÔõÕöÖøØùÙúÚûÛüÜýÝþÞÿß]*$/.test(value);
},jQuery.validator.messages.strName);
jQuery.validator.addMethod("alphanumStrict",function(value,element){
	return this.optional(element) || /^[a-zA-Z0-9]*$/.test(value);
},jQuery.validator.messages.alphanumStrict);
jQuery.validator.addMethod("phone",function(value,element){
	return this.optional(element) || /^[a-zA-Z0-9\ +\(\)\-\.]*[0-9][a-zA-Z0-9\ +\(\)\-\.]*[0-9][a-zA-Z0-9\ +\(\)\-\.]*[0-9][a-zA-Z0-9\ +\(\)\-\.]*[0-9][a-zA-Z0-9\ +\(\)\-\.]*$/.test(value);
},jQuery.validator.messages.phone);
jQuery.validator.addMethod("companyPhone",function(value,element){
	return this.optional(element) || /^[a-zA-Z0-9\ +\(\)\-\.]*[0-9][a-zA-Z0-9\ +\(\)\-\.]*[0-9][a-zA-Z0-9\ +\(\)\-\.]*[0-9][a-zA-Z0-9\ +\(\)\-\.]*[0-9][a-zA-Z0-9\ +\(\)\-\.]*$/.test(value);
},jQuery.validator.messages.companyPhone);
jQuery.validator.addMethod("nif_cif_nie",function(value,element){
	return this.optional(element) || valida_nif_cif_nie(value);
},jQuery.validator.messages.nif);
jQuery.validator.addMethod("residentCard",function(value,element){
	return this.optional(element) || validaTResidencia(element);
},jQuery.validator.messages.residentCard);
jQuery.validator.addMethod("nif",function(value,element){
	return this.optional(element) || isNif(value);
},jQuery.validator.messages.nif);
jQuery.validator.addMethod("nie",function(value,element){
	return this.optional(element) || isNie(value);
},jQuery.validator.messages.nie);
jQuery.validator.addMethod("passport",function(value,element){
	return this.optional(element) || /^[a-zA-Z0-9\-\.]*$/.test(value);
},jQuery.validator.messages.passport);
jQuery.validator.addMethod("ibcreditcard",function(value,element){	
	var ccRight=false;
	if(this.optional(element)) return "dependency-mismatch";
	if(!/[0-9]{14,16}/.test(value)){
		if(/^\*{6,12}\d+$/.test(value)) return true;
	}else{
		var nCheck=0,
		nDigit=0,
		bEven=false;
		value=value.replace(/\D/g, "");
		for (n=value.length-1;n>=0;n--) {
			var cDigit = value.charAt(n);
			var nDigit = parseInt(cDigit, 10);
			if(bEven){if((nDigit*=2)>9) nDigit-=9;}
			nCheck += nDigit;
			bEven = !bEven;
		}
		if((nCheck % 10)==0) ccRight=true;
	}
	return ccRight;
},jQuery.validator.messages.cc);
jQuery.validator.addMethod("requiredselect",function(value,element){
	var chk=false;
	if(value!="-1"){chk=true};
	return this.optional(element) || chk;
},jQuery.validator.messages.requiredselect);



function isNie(nie)
{
	if(nie.substring(0,1)=='X') {
		nie = '0'+nie.substring(1);
		letras = new Array("t","r","w","a","g","m","y","f","p","d","x","b","n","j","z","s","q","v","h","l","c","k","e");
		nie=nie.toLowerCase();
		nifcorrecto = true;
		dni=nie.substring(0,nie.length-1);
		dni=parseInt(dni,10);
		letra=nie.charAt(nie.length-1);
		letraCorrecta = letras[ dni % 23];
		if (dni > 99999999)
			nifcorrecto = false;
		if(letra!=letraCorrecta)
			nifcorrecto = false;
		if (nifcorrecto)
			return true;
		else
			return false;
	} else {
			return false;
	}
}

function isNif(nif)
{
	letras = new Array("t","r","w","a","g","m","y","f","p","d","x","b","n","j","z","s","q","v","h","l","c","k","e");
	nif=nif.toLowerCase();
	nifcorrecto = true;
	dni=nif.substring(0,nif.length-1);
	dni=parseInt(dni,10);
	letra=nif.charAt(nif.length-1);
	letraCorrecta = letras[ dni % 23];
	if (dni > 99999999)
		nifcorrecto = false;
	if(letra!=letraCorrecta)
		nifcorrecto = false;
	if (nifcorrecto)
		return true;
	else
		return false;
}

function isCif(cif)
{
	cif=cif.toUpperCase();
	var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
	var v2 = new Array('J','A','B','C','D','E','F','G','H','I');
	var digCrtl=cif.charAt(cif.length-1);
	var temp = 0;
	var temp1;

	if(/^[Pp]{1}[0-9]{8}$/.test(cif)) {
		return false
	}		

	if(!/^[A-Za-z0-9]{9}$/.test(cif)) {
		return false
	}
		
	if (!/^[ABCDEFGHKLMNPQS]/.test(cif)) {
		return false
	} else {
		for(i=2;i<=6;i+=2 ) {
		      temp = temp + v1[ parseInt(cif.substr(i-1,1)) ];
		      temp = temp + parseInt(cif.substr(i,1));
		 };

		temp = temp + v1[ parseInt(cif.substr(7,1)) ];
		temp = (10 - ( temp % 10));

		if( temp == 10 ){
		    if(!(digCrtl=="J" || digCrtl=="0")) {
					return false
				}
		}else{
			if(digCrtl==temp || digCrtl==v2[temp]) {
				return true
			}
		
		  else if(digCrtl!=temp) {
				return false
			}
		}

	}
	return true;
}
function isLetter (c)
{	c=c.toUpperCase()
	return ((c >= "A") && (c <= "Z"))
}
function validaTResidencia(nie)
{
    nie = nie.value;
    nie=nie.toLowerCase();
    if(nie.substring(0,1)=='x' || nie.substring(0,1)=='y' || nie.substring(0,1)=='z') {
		if(nie.substring(0,1)=='x')
		    nie = '0'+nie.substring(1);
		if(nie.substring(0,1)=='y')
		    nie = '1'+nie.substring(1);
		if(nie.substring(0,1)=='z')
		    nie = '2'+nie.substring(1);

		letras = new Array("t","r","w","a","g","m","y","f","p","d","x","b","n","j","z","s","q","v","h","l","c","k","e");

		nifcorrecto = true;
		dni=nie.substring(0,nie.length-1);
		dni=parseInt(dni,10);
		letra=nie.charAt(nie.length-1);
		letraCorrecta = letras[ dni % 23];
		if (dni > 99999999)
			nifcorrecto = false;
		if(letra!=letraCorrecta)
			nifcorrecto = false;
		return nifcorrecto;

	} else {
			return false;
	}
}

function valida_nif_cif_nie(a) 
{
	return (isCif(a) || isNif(a) || isNie(a));
}

jQuery.validator.addMethod("alphanumeric",function(value,element){
	return this.optional(element) || /^[a-zA-Z0-9 \- \. \' \\ àÀáÁâÂãÃäÄåÅæÆçÇèÈéÉêÊëËìÌíÍîÎïÏðÐñÑòÒóÓôÔõÕöÖøØùÙúÚûÛüÜýÝþÞÿß]*$/.test(value);
},jQuery.validator.messages.alphanumeric);
jQuery.validator.addMethod("fqtv",function(value,element){
	return true;
},jQuery.validator.messages.fqtv);
jQuery.validator.addMethod("cp",function(value,element){
	return this.optional(element) || /^((0[1-9]|5[0-2])|[1-4][0-9])[0-9]{3}$/.test(value);
},jQuery.validator.messages.cp);
jQuery.validator.addMethod("nameSpanish",function(value,element){
	return this.optional(element) || /^[a-zA-Z \- \. \' \\ àÀáÁâÂãÃäÄåÅæÆªçÇèÈéÉêÊëËìÌíÍîÎïÏðÐñÑòÒóÓôÔõÕöÖøØùÙúÚûÛüÜýÝþÞÿß]*$/.test(value);
},jQuery.validator.messages.nameSpanish);
jQuery.validator.addMethod("equalEMail",function(value,element){
	var isEqual=false;
	var thisVal=value.toUpperCase();
	if($("#dcto_01").size()>0)
		($("#dcto_01").val().toUpperCase()==thisVal)? isEqual=true : isEqual=false
	else if($("#email").size()>0)
		($("#email").val().toUpperCase()==thisVal)? isEqual=true : isEqual=false
	else if($("#EMAIL_1").size()>0)
		($("#EMAIL_1").val().toUpperCase()==thisVal)? isEqual=true : isEqual=false
	return this.optional(element) || isEqual;
},jQuery.validator.messages.equalEMail);
jQuery.validator.addMethod("noRepeatChars",function(value,element){
	var repeat=true;
	for (i = 1; i < value.length; i++){
		var c1 = value.charAt(i-1);
		var c2 = value.charAt(i);
		if(c1!=c2){repeat=true;break;}
		else{repeat=false }
	}
	return this.optional(element) || repeat;
},jQuery.validator.messages.noRepeatChars);
jQuery.validator.addMethod("noLadderLetters",function(value,element){
	var ladder=true;
	var uppercaseLetters="ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚÑ";
	var uppercaseLettersReverse="ÑÚÓÍÉÁZYXWVUTSRQPONMLKJIHGFEDCBA";
	str=value.toUpperCase();
	mayStr=uppercaseLetters.indexOf(str)
	mayRevStr=uppercaseLettersReverse.indexOf(str)
	if(mayStr!=-1) ladder=false;
	if(mayRevStr!=-1) ladder=false;
	return this.optional(element) || ladder;
},jQuery.validator.messages.noLadderLetters);
jQuery.validator.addMethod("noLadderNumbers",function(value,element){
	var ladder=true;
	var digits="0123456789";
	var digitsReverse="9876543210";
	str=value.toUpperCase();
	numStr=digits.indexOf(str)
	numRevStr=digitsReverse.indexOf(str)	
	if(numStr!=-1) ladder=false;
	if(numRevStr!=-1) ladder=false;
	return this.optional(element) || ladder;
},jQuery.validator.messages.noLadderNumbers);
jQuery.validator.addMethod("equalPin",function(value,element){
	var isEqual=false;
	if($("#spin_01").size()>0)
		($("#spin_01").val()==value)? isEqual=true : isEqual=false
	else if($("#newPin").size()>0)
		($("#newPin").val()==value)? isEqual=true : isEqual=false
	else if($("#nuevoPin").size()>0)
		($("#nuevoPin").val()==value)? isEqual=true : isEqual=false
	return this.optional(element) || isEqual;
},jQuery.validator.messages.equalPin);

jQuery.validator.addMethod("equalToIgnoreCase",function(value, element, param) {
			return value.toUpperCase() == $(param).val().toUpperCase();
},jQuery.validator.messages.equalToIgnoreCase);

jQuery.validator.addMethod("cvv",function(value,element){
	return this.optional(element) || /[1-9]/.test(value);
},jQuery.validator.messages.cvv);