$(document).ready(function(){
	$("#checkboxall").click(function()
	{
		if($("#checkboxall").is(':checked'))
			alert ("Los dominios .name debe buscarlos por separado\n indicando APELLIDOS.NOMBRE por ejemplo SERRANO.FRANCISCO");
		var checked_status = this.checked;
		$("input[type='checkbox']").each(function()
		{
			if(this.name!="extname")
				this.checked = checked_status;
		});
	});

	$("#dominio_name").click(function()
	{
		if($("#dominio_name").is(':checked'))
			alert ("Para los dominios .name debe buscar indicando APELLIDOS.NOMBRE\n por ejemplo SERRANO.FRANCISCO");
		$("input[type='checkbox']").each(function()
		{
			if(this.name!="extname")
				this.checked = false;
		});
	});
	
	$("input[type='checkbox']").click(function()
	{
		if(this.name!="extname")
			$("#dominio_name").attr('checked',false);
	});
	
	$("#formulario_contratacion").submit(function() {
		if(js_chequeo())
			return true;
		else
			return false;
	});
});

function js_whois(dominio,tipo) {
  popupWin = window.open('whois_popup.php?query='+dominio+'.'+tipo, 'Información', 'resizable=yes,scrollbars=yes,width=750,height=450,top=80,left=5');
}

function js_ampliar_imagen(imagen) {
  popupWin = window.open('images/'+imagen, 'Imagen', 'resizable=no,scrollbars=yes,width=780,height=530,top=80,left=5');
}

function str_replace(search, replace, subject) {
    var f = search, r = replace, s = subject;
    var ra = r instanceof Array, sa = s instanceof Array, f = [].concat(f), r = [].concat(r), i = (s = [].concat(s)).length;
 
    while (j = 0, i--) {
        if (s[i]) {
            while (s[i] = s[i].split(f[j]).join(ra ? r[j] || "" : r[0]), ++j in f){};
        }
    };
 
    return sa ? s : s[0];
}

function js_chequea_dominio(o){
  if($("#dominio_name").is(':checked')){
  		o.value=o.value.replace(/([^0-9a-zA-Z\-\.])/g,"");
		o.value=o.value.toLowerCase();
  }else{
		o.value=o.value.replace(/([^0-9a-zA-Z\-])/g,"");
		o.value=o.value.toLowerCase();
  }
}

function js_chequea_nif(o){
	o.value=o.value.replace(/([^0-9a-zA-Z])/g,"");
	o.value=o.value.toUpperCase();
}

function js_chequea_extname(strdominio)
{
    var x = strdominio;
    var filter  = /^(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9\-])+$/;
    if (filter.test(x)) return true;
    else return false;
}


function js_chequeo() {
	if (!$("#dominio_busqueda").val())
	{
		alert ("Por favor, introduzca un nombre para el dominio, sin WWW. y NO incluya la extensión");
		return false;
	}else if($("#dominio_busqueda").val()=="aqui el nombre que quieres"){
		alert ("Por favor, introduzca un nombre para el dominio, sin WWW. y NO incluya la extensión");
		return false;
	}else{
		var dominio_busqueda=$("#dominio_busqueda").val();
		if (dominio_busqueda.indexOf(".",1)==-1 && $("#dominio_name").is(':checked'))
		{          
			alert ("Por favor, para los dominios .name debe escribir APELLIDOS.NOMBRE.");
			return false;        
		}else{
			if($("#dominio_name").is(':checked')){
				if(!js_chequea_extname($("#dominio_busqueda").val())){
					alert ("Por favor, para los dominios .name debe escribir APELLIDOS.NOMBRE.");
					return false;
				}
			}
		}
		if(!$("#dominio_name").is(':checked')){
			js_chequea_dominio($("#dominio_busqueda").get(0));
		}	
	}	
	return true;
}

function js_is_numeric(valor){
	var log=valor.length; var sw="S";
	for (x=0; x<log; x++)
	{ 
		v1=valor.substr(x,1);
		v2 = parseInt(v1);
		//Compruebo si es un valor numérico
		if (isNaN(v2)) { sw= "N";}
	}
	if (sw=="S") {return true;} else {return false; }
}

function js_valida_nif_cif_nie(a) {
	if (ieVer<=7 && ieVer!=0) {
		return true;
	}else{
		var resul = true;
		var temp = jQuery.trim(jQuery('#'+a).val()).toUpperCase();
		var cadenadni = "TRWAGMYFPDXBNJZSQVHLCKE";
		if (temp !== '') {
			//algoritmo para comprobacion de codigos tipo CIF
			suma = parseInt(temp[2]) + parseInt(temp[4]) + parseInt(temp[6]);
			for (i = 1; i < 8; i += 2) {
				temp1 = 2 * parseInt(temp[i]);
				temp1 += '';
				temp1 = temp1.substring(0,1);
				temp2 = 2 * parseInt(temp[i]);
				temp2 += '';
				temp2 = temp2.substring(1,2);
				if (temp2 == '') {
					temp2 = '0';
				}
				suma += (parseInt(temp1) + parseInt(temp2));
			}

			suma += '';
			n = 10 - parseInt(suma.substring(suma.length-1, suma.length));
			//si no tiene un formato valido devuelve error
			if ((!/^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$/.test(temp) && !/^[T]{1}[A-Z0-9]{8}$/.test(temp)) && !/^[0-9]{8}[A-Z]{1}$/.test(temp)) {
				if ((temp.length == 9) && (/^[0-9]{9}$/.test(temp))) {
					var posicion = temp.substring(8,0) % 23;
					var letra = cadenadni.charAt(posicion);
					var letradni = temp.charAt(8);
					alert("La letra del NIF no es correcta. " + letradni + " es diferente a " + letra);
					jQuery('#'+a).val(temp.substr(0,8) + letra);
					resul = false;
				} else if (temp.length == 8) {
					if (/^[0-9]{1}/.test(temp)) {
						var posicion = temp.substring(8,0) % 23;
						var letra = cadenadni.charAt(posicion);
						var tipo = 'NIF';
					} else if (/^[KLM]{1}/.test(temp)) {
						var letra = String.fromCharCode(64 + n);
						var tipo = 'NIF';
					} else if (/^[ABCDEFGHJNPQRSUVW]{1}/.test(temp)) {
						var letra = String.fromCharCode(64 + n);
						var tipo = 'CIF';
					} else if (/^[T]{1}/.test(temp)) {
						var letra = String.fromCharCode(64 + n);
						var tipo = 'NIE';
					} else if (/^[XYZ]{1}/.test(temp)) {
						var pos = str_replace(['X', 'Y', 'Z'], ['0','1','2'], temp).substring(0, 8) % 23;
						var letra = cadenadni.substring(pos, pos + 1);
						var tipo = 'NIE';
					}
					if (letra !== '') {
						alert("Añadido la letra del " + tipo + ": " + letra);
						jQuery('#'+a).val(temp + letra);
					} else {
						alert ("El CIF/NIF/NIE tiene que tener 9 caracteres");
						jQuery('#'+a).val(temp);
					}
					resul = false;
				} else if (temp.length < 8) {
					alert ("El CIF/NIF/NIE tiene que tener 9 caracteres");
					jQuery('#'+a).val(temp);
					resul = false;
				} else {
					alert ("CIF/NIF/NIE incorrecto");
					jQuery('#'+a).val(temp);
					resul = false;
				}
			}

			//comprobacion de NIFs estandar
			else if (/^[0-9]{8}[A-Z]{1}$/.test(temp)) {
				var posicion = temp.substring(8,0) % 23;
				var letra = cadenadni.charAt(posicion);
				var letradni = temp.charAt(8);
				if (letra == letradni) {
					return 1;
				} else if (letra != letradni) {
					alert("La letra del NIF no es correcta. " + letradni + " es diferente a " + letra);
					jQuery('#'+a).val(temp.substr(0,8) + letra);
					resul = false;
				} else {
					alert ("NIF incorrecto");
					jQuery('#'+a).val(temp);
					resul = false;
				}
			}

			//comprobacion de NIFs especiales (se calculan como CIFs)
			else if (/^[KLM]{1}/.test(temp)) {
				if (temp[8] == String.fromCharCode(64 + n)) {
					return 1;
				} else if (temp[8] != String.fromCharCode(64 + n)) {
					alert("La letra del NIF no es correcta. " + temp[8] + " es diferente a " + String.fromCharCode(64 + n));
					jQuery('#'+a).val(temp.substr(0,8) + String.fromCharCode(64 + n));
					resul = false;
				} else {
					alert ("NIF incorrecto");
					jQuery('#'+a).val(temp);
					resul = false;
				}
			}
			//comprobacion de CIFs
			else if (/^[ABCDEFGHJNPQRSUVW]{1}/.test(temp)) {
				var temp_n = n + '';
				if (temp[8] == String.fromCharCode(64 + n) || temp[8] == parseInt(temp_n.substring(temp_n.length-1, temp_n.length))) {
					return 2;
				} else if (temp[8] != String.fromCharCode(64 + n)) {
					alert("La letra del CIF no es correcta. " + temp[8] + " es diferente a " + String.fromCharCode(64 + n));
					jQuery('#'+a).val(temp.substr(0,8) + String.fromCharCode(64 + n));
					resul = false;
				} else if (temp[8] != parseInt(temp_n.substring(temp_n.length-1, temp_n.length))) {
					alert("La letra del CIF no es correcta. " + temp[8] + " es diferente a " + parseInt(temp_n.substring(temp_n.length-1, temp_n.length)));
					jQuery('#'+a).val(temp.substr(0,8) + parseInt(temp_n.substring(temp_n.length-1, temp_n.length)));
					resul = false;
				} else {
					alert ("CIF incorrecto");
					jQuery('#'+a).val(temp);
					resul = false;
				}
			}
			//comprobacion de NIEs
			//T
			else if (/^[T]{1}/.test(temp)) {
				if (temp[8] == /^[T]{1}[A-Z0-9]{8}$/.test(temp)) {
					return 3;
				} else if (temp[8] != /^[T]{1}[A-Z0-9]{8}$/.test(temp)) {
					var letra = String.fromCharCode(64 + n);
					var letranie = temp.charAt(8);
					if (letra != letranie) {
						alert("La letra del NIE no es correcta. " + letranie + " es diferente a " + letra);
						jQuery('#'+a).val(temp.substr(0,8) + letra);
						resul = false;
					} else {
						alert ("NIE incorrecto");
						jQuery('#'+a).val(temp);
						resul = false;
					}
				}
			}
			//XYZ
			else if (/^[XYZ]{1}/.test(temp)) {
				var pos = str_replace(['X', 'Y', 'Z'], ['0','1','2'], temp).substring(0, 8) % 23;
				var letra = cadenadni.substring(pos, pos + 1);
				var letranie = temp.charAt(8);
				if (letranie == letra) {
					return 3;
				} else if (letranie != letra) {
					alert("La letra del NIE no es correcta. " + letranie + " es diferente a " + letra);
					jQuery('#'+a).val(temp.substr(0,8) + letra);
					resul = false;
				} else {
					alert ("NIE incorrecto");
					jQuery('#'+a).val(temp);
					resul = false;
				}
			}
		}

		if (!resul) {      
			jQuery('#'+a).focus();
			return resul;
		}
	}
}

function js_calcular_digito_control(valor){
  valores = new Array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6);
  control = 0;
  for (i=0; i<=9; i++)
    control += parseInt(valor.charAt(i)) * valores[i];
  control = 11 - (control % 11);
  if (control == 11) control = 0;
  else if (control == 10) control = 1;
  return control;
}

function js_calcular_cuenta_bancaria(f) {
  if (f.frmbanco.value == ""  || f.frmoficina.value == "" ||
      f.frmdc.value == "" || f.frmcuenta.value == ""){
    alert("Por favor, introduzca los datos de su cuenta");
    return false;
  }else {
    if (f.frmbanco.value.length != 4 || f.frmoficina.value.length != 4 ||
        f.frmdc.value.length != 2 || f.frmcuenta.value.length != 10){
      alert("Por favor, introduzca correctamente los datos de su cuenta;"
	    + " no están completos");
	   return false;
    }else{
      if (!js_is_numeric(f.frmbanco.value) || !js_is_numeric(f.frmoficina.value) ||
          !js_is_numeric(f.frmdc.value) || !js_is_numeric(f.frmcuenta.value)){
        alert("Por favor, introduzca correctamente los datos de su "
         + "cuenta; no son numericos");
         return false;
      }else{
        if (!(js_calcular_digito_control("00" + f.frmbanco.value + f.frmoficina.value) ==
              parseInt(f.frmdc.value.charAt(0))) || 
            !(js_calcular_digito_control(f.frmcuenta.value) ==
              parseInt(f.frmdc.value.charAt(1)))){
          alert("Los dígitos de control no se corresponden con los demás"
            + " números de la cuenta");
          return false;
        }else{
          return true;
        }
      }
    }
  }
}

function js_activar_tooltip(){
	$('.tooltip_title').tipsy({gravity: 's',fade: true});
}

var ieVer=/*@cc_on function(){ switch(@_jscript_version){ case 1.0:return 3; case 3.0:return 4; case 5.0:return 5; case 5.1:return 5; case 5.5:return 5.5; case 5.6:return 6; case 5.7:return 7; case 5.8:return 8; }}()||@*/0;
if(/MSIE 6.0/i.test(navigator.userAgent)) {ieVer=6;}