function anadirProducto(form,idproducto){
	form.idp.value=idproducto;
	form.accion.value="anadir";
	form.action.value="carrito.php";
	form.submit();

}

function eliminarProducto(form,idproducto){
	form.idp.value=idproducto;
	form.accion.value="borrar";
	form.action.value="carrito.php";
	form.submit();

}
function vaciarCarrito(form){
	form.accion.value="vaciar";
	form.action.value="carrito.php";
	form.submit();

}
function cambiarUnidades(form,idproducto,unidades){
	form.idp.value=idproducto;
	form.unid.value=unidades;
	form.accion.value="cambiar";
	form.action.value="carrito.php";
	form.submit();

}
//las funciones de las provincias
var provincias=new Array();
var provinciasNombre=new Array();
var codigosPostales=new Array();
var contPr=0;

//funcion que anade una provincia al array de provincias y al array de mascaras
// de los codigos postales
function anadirProvincia(nprov,laprov,codPostal){
    var pr=new Option(nprov,laprov);
    provincias[contPr]=pr;
	provinciasNombre[laprov]=nprov;
    codigosPostales[laprov]=codPostal;
    contPr++;
}

//funcion que devuelve el array de provincias
function getProvincias(){
    return provincias;
}
//funcion que incializa el array de provincias a 0
function inicializarProvincias(){
    provincias=new Array();
    contPr=0;
}

//funcion que al cambiar el pais cambia las provincias
function cambiarProvs(form){

   var pro=provincias;
   for (cont1=0;cont1<pro.length;cont1++){
    form.provincias.options[cont1]=pro[cont1];
   }
   form.provincias.options.selectedIndex=0;
  
}

//funcion que carga un pais dado y las provincias asociadas
function seleccionarProvincia(form,laprov){

   var pro=provincias;
   for (cont1=0;cont1<pro.length;cont1++){
    form.provincias.options[cont1]=pro[cont1];
    if (pro[cont1].value==laprov) provs=cont1;
   }
 form.provincias.options.selectedIndex=provs;

}

/*Funcion que valida la direccion de email*/

////////////////////////////////////////////////////////////////////////////////
function emailCorrecto(emailStr) {
////////////////////////////////////////////////////////////////////////////////

// Comprueba si el e-mail se adecua al formato usuario@dominio.
//  Tambien se usa para separar usuario de dominio.
var emailPat=/^(.+)@(.+)$/

// Cadena que representa los patrones que son caracteres especiales.
//   Son  ( ) < > @ , ; : \ " . [ ]
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]áéíóúÁÉÍÓÚâêîôû^ÂÊÎÔÛàèìòùÀÈÌÒÙÄËÏÖÜëïü¨"

// Rango de caracteres permitido en usuario o dominio.
//   Realmente afirma aquellos que no son permitido.
var validChars="\[^\\s" + specialChars + "\]"

// El siguiente patron se aplica si el "usuario" es una cadena con
// comillas (en ese caso no hay reglas sobre que caracteres se
// permiten y cuales no, todo vale). Por ejemplo, "evelio ojito"@talytal.com
// seria un e-mail legal.
var quotedUser="(\"[^\"]*\")"

// El siguiente patron aplica para dominios que son direcciones IP en
// vez de nombre simbolicos. P.ej. pepe@[123.124.233.4] es un e-mail legal
// NOTA: Se necesitan los corchetes.
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/

// La siguiente cadena representa un atomo (basicamente como una serie de
// caracteres no especiales.
var atom=validChars + '+'

// La siguiente cadena represente una palabra en el nombre de usuario
// tipico. P.ej. pepe.rodriguez@algunsitio.com, pepe y rodriguez son palabras.
// Basicamente, una palabra es un atomo o una cadena entrecomillada.
var word="(" + atom + "|" + quotedUser + ")"

// Estructura del usuario
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")

// Estructura de un dominio simbolico normal, en contraposicion a un
// patron de dominio IP, como mas arriba
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")


// Finalmente averiguamos si la direccion es valida

// Empezamos con el patron burdo para romper usuario@dominio en distintas
// parte que son facilmente analizables

var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
  // Demasiados o pocas @; basicamente, esta direccion no cuadra con el
  // molde general de una direccion de email valida
        return false
}
var user=matchArray[1]
var domain=matchArray[2]

// Mirar si "usuario" es valido
if (user.match(userPat)==null) {
    // usuario no es valido
    return false
}

// si el e-mail es una direccion IP (en vez de host simbolico)
// asegurarse que la IP es valida
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
    // this is an IP address
          for (var i=1;i<=4;i++) {
            if (IPArray[i]>255) {
                return false
            }
    }
    return true
}

// Dominio es un nombre simbólico
var domainArray=domain.match(domainPat)
if (domainArray==null) {
    return false
}

// Nombre de dominio parece valido, pero asegurarse que termina en una palabra
// de 3 letras o 4 letras (como com, edu, gov, info) o una palabra de 2 letras representando un
// pais (es, uk nl) y que hay un nombre de host precediendo al dominio o pais


// Necesitamos romper el dominio para contar cuantos atomos tiene

var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 ||
    domArr[domArr.length-1].length>4) { 
// la dirección debe terminar en una palabra de 2 o 3 o 4 letras.
   return false;
}

// Asegurarse que hay un nombre de host precediendo al dominio
if (len<2) {
   return false
}

// Si hemos llegado hasta aqui, todo es válido
return true;
}
function isValid(string,allowed){
    for (var i=0; i< string.length; i++){
        if (allowed.indexOf(string.charAt(i)) == -1) return false;
    }
    return true;
}
//funcion que valida si un nombre es correcto
function nomCorrecto(ape){
allowed =  'abcdefghijklmnñopqrstuvwxyzáéíóú ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚ,-.';
return isValid(ape,allowed);
}

//funcion que valida un codigo postal, con su mascara
function validarCodigoP(form,codigo){
 
  var sProv=form.provincias[form.provincias.selectedIndex].value;
  var patronCod=codigosPostales[sProv];
  var patronJ="";
  for (pc=0;pc<patronCod.length;pc++){
    if (patronCod.charAt(pc)=='?') patronJ+="\\d{1}";
    else patronJ+=patronCod.charAt(pc);
  }
    var patronMask=new RegExp("^" + patronJ + "$")
    var maskArray=codigo.match(patronMask)
        if (maskArray==null) return false;
        else return true;
 }
 
 //Variables globales para el tipo
var nombreTipo=new Array();
var apellidoTipo=new Array();
var dniTipo=new Array();
var ejeTipo=new Array();
var tNnombreTipo=new Array();
//funcion que anade los textos del tipo
function anadirTipo(tipo,nom,ape,dni,eje,tnom){
    nombreTipo[tipo]=nom;
    apellidoTipo[tipo]=ape;
    dniTipo[tipo]=dni;
    ejeTipo[tipo]=eje;
    tNnombreTipo[tipo]=tnom;
}
//funcion que añade los tipos para la dir
function anadirTipoDir(tipo,nom,ape,tnom){
    nombreTipo[tipo]=nom;
    apellidoTipo[tipo]=ape;
    tNnombreTipo[tipo]=tnom;
}
//funcion que cambia los datos del tipo
function cambiarTipoDir(form,nombre){
    if(form.tipo_dir[0].checked){
        form.tnombre.value=nombreTipo[0];
        form.tapellidos.value=apellidoTipo[0];
        form.nombre.value="";
        form.apellidos.value="";
    }
    else{
        form.tnombre.value=nombreTipo[1];
        form.tapellidos.value=apellidoTipo[1];
        form.nombre.value=tNnombreTipo[1];
        form.apellidos.value="";
    }

}
//funcion que cambia los datos del tipo
function cambiarTipo(form,nombre){
    if(form.tipo_cliente[0].checked){
        form.tnombre.value=nombreTipo[0];
        form.nombre.value="";
        form.apellidos.value="";
        form.tapellidos.value=apellidoTipo[0];
        form.tdni.value=dniTipo[0];
        form.teje.value=ejeTipo[0];
    }
    else{
        form.tnombre.value=nombreTipo[1];
        form.nombre.value=tNnombreTipo[1];
        form.apellidos.value="";
        form.tapellidos.value=apellidoTipo[1];
        form.tdni.value=dniTipo[1];
        form.teje.value=ejeTipo[1];
    }

}
function inicializarTipo(form){ 
   if(form.tipo_cliente[0].checked){
        form.tnombre.value=nombreTipo[0];
        form.tapellidos.value=apellidoTipo[0];
        form.tdni.value=dniTipo[0];
        form.teje.value=ejeTipo[0];
    }
    else{
        form.tnombre.value=nombreTipo[1];
        form.tapellidos.value=apellidoTipo[1];
        form.tdni.value=dniTipo[1];
        form.teje.value=ejeTipo[1];
    }
}

function trim(cadena){
 cadena=cadena.replace(/^[\s]+/g,"");
 cadena=cadena.replace(/[\s]+$/g, ""); 
   return cadena;
}

//funcion que valida que se haya seleccionado algun tipo de cliente
function validarTipo(form){
    if (form.tipo_cliente[0].checked) return 'P';
    else return 'E';
}

//funcion que valida si una razon social es correcta
function razonSocialCorrecto(nom,tempresa){
if (nom==tempresa) return false;
else{
allowed =  'abcdefghijklmnñopqrstuvwxyzáéíóú ABCDEFGHIJKLMNÑOPQRSTUVWXYZ\\:.,/ºª0123456789-ÁÉÍÓÚ-';
return isValid(nom,allowed);
    }
}

//funcion que valida si una direccion es correcta
function dirCorrecto(ape){
allowed =  'abcdefghijklmnñopqrstuvwxyzáéíóú ABCDEFGHIJKLMNÑOPQRSTUVWXYZ\\:.,/ºª0123456789-ÁÉÍÓÚ-';
return isValid(ape,allowed);
}

//funcion que valida el formulario de los datos de facturacion
function validarDatos(form,tempresa){
		/*var errorS="";
        var tipo=validarTipo(form,tempresa);
        if (form.email.value=="") errorS="Debe introducir el email";
        else if (!emailCorrecto(form.email.value)) errorS="El email no es correcto";
        else if (form.nombre.value=="") errorS="No ha introducido nada en el nombre";
        else if (!razonSocialCorrecto(form.nombre.value,tempresa)) errorS="Debe introducir el nombre";
        else if ((tipo=='E')&&(form.apellidos.value=="")) errorS="No ha introducido nada en persona de contacto";
		else if ((tipo=='P')&&(form.apellidos.value=="")) errorS="No ha introducido nada en apellidos";
        else if ((tipo=='E')&&!nomCorrecto(form.apellidos.value)) errorS="La persona de contacto no parece válida";
		else if ((tipo=='P')&&!nomCorrecto(form.apellidos.value)) errorS="Los apellidos no son validos";
        else if (form.dni.value=="") errorS="Debe introducir el NIF/CIF";
        else if (!calcularNIF(form.dni.value)) errorS="El NIF/CIF no es correcto";
        else if (form.direccion.value=="") errorS="La dirección está vacía";
        else if (!dirCorrecto(form.direccion.value)) errorS="La dirección no es correcta";
        else if (form.poblacion.value=="") errorS="Debe escribir la población";
        else if (!nomCorrecto(form.poblacion.value)) errorS="La población no parece correcta";
        else if (form.provincias[form.provincias.selectedIndex].value==-1) errorS="Debe seleccionar una provincia";
        else if (form.cp.value=="") errorS="Debe rellenar el código postal";
        else if (!validarCodigoP(form,form.cp.value)) errorS="El código postal no es correcto";
        else if (form.telefono1.value=="") errorS="Debe introducir el teléfono";
        else if (!telefonoCorrecto(form.telefono1.value)) errorS="El teléfono no parece correcto";
		else if (form.telefono2.value=="") errorS="Debe introducir el número de movil";
        else if (!telefonoCorrecto(form.telefono2.value)) errorS="El número de movil no parece correcto";
        if (errorS=="") {
		form.provincia.value=provinciasNombre[form.provincias[form.provincias.selectedIndex].value];*/
    if (!form.condiciones.checked){
        alert("Hay que aceptar las condiciones para finalizar el proceso de compra");
    }
    else form.submit();
}

//funcion que valida el formulario de los datos de facturacion
function validarDatosAltaCliente(form,tempresa){
		var errorS="";
        var tipo=validarTipo(form,tempresa);
        if (form.email.value=="") errorS="Debe introducir el email";
        else if (!emailCorrecto(form.email.value)) errorS="El email no es correcto";
		else if (form.password.value=="") errorS="No ha introducido nada en el password";
		else if (form.password.value!=form.repassword.value) errorS="No coinciden la contraseña y la confirmación de contraseña";
		else if (form.password.value.length<4) errorS="El password debe ser mínimo de 4 letras";
        else if (form.nombre.value=="") errorS="No ha introducido nada en el nombre";
        else if (!razonSocialCorrecto(form.nombre.value,tempresa)) errorS="Debe introducir el nombre";
        else if ((tipo=='E')&&(form.apellidos.value=="")) errorS="No ha introducido nada en persona de contacto";
		else if ((tipo=='P')&&(form.apellidos.value=="")) errorS="No ha introducido nada en apellidos";
        else if ((tipo=='E')&&!nomCorrecto(form.apellidos.value)) errorS="La persona de contacto no parece válida";
		else if ((tipo=='P')&&!nomCorrecto(form.apellidos.value)) errorS="Los apellidos no son validos";
        else if (form.dni.value=="") errorS="Debe introducir el NIF/CIF";
        else if (!calcularNIF(form.dni.value)) errorS="El NIF/CIF no es correcto";
        else if (form.direccion.value=="") errorS="La dirección está vacía";
        else if (!dirCorrecto(form.direccion.value)) errorS="La dirección no es correcta";
        else if (form.poblacion.value=="") errorS="Debe escribir la población";
        else if (!nomCorrecto(form.poblacion.value)) errorS="La población no parece correcta";
        else if (form.provincias[form.provincias.selectedIndex].value==-1) errorS="Debe seleccionar una provincia";
        else if (form.cp.value=="") errorS="Debe rellenar el código postal";
        else if (!validarCodigoP(form,form.cp.value)) errorS="El código postal no es correcto";
        else if (form.telefono1.value=="") errorS="Debe introducir el teléfono";
        else if (!telefonoCorrecto(form.telefono1.value)) errorS="El teléfono no parece correcto";
		else if (form.telefono2.value=="") errorS="Debe introducir el número de movil";
        else if (!telefonoCorrecto(form.telefono2.value)) errorS="El número de movil no parece correcto";
        if (errorS=="") {
		form.provincia.value=provinciasNombre[form.provincias[form.provincias.selectedIndex].value];
		form.submit();
		}else {alert(errorS);errorS="";}
}


function validarLogin(form){
	var errorS="";
	if (form.usuario.value=="") errorS="Debe introducir el usuario";
    else if (form.pass.value=="") errorS="Debe introducir la contraseña";
	 if (errorS=="") {
		form.submit();
		}else {alert(errorS);errorS="";}
	
}

//funcion que valida el formulario de los datos de facturacion
function validarDatosAlta(form){
		var errorS="";
        if (form.email.value=="") errorS="Debe introducir el email";
        else if (!emailCorrecto(form.email.value)) errorS="El email no es correcto";
        else if (form.nombre.value=="") errorS="No ha introducido nada en el nombre";
        else if (!nomCorrecto(form.nombre.value)) errorS="El nombre no parece correcto";
        else if ((form.apellidos.value=="")) errorS="No ha introducido nada en persona de contacto";
        else if (!nomCorrecto(form.apellidos.value)) errorS="La persona de contacto no parece válida";
        else if (form.dni.value=="") errorS="Debe introducir el NIF/CIF";
        else if (!calcularNIF(form.dni.value)) errorS="El NIF/CIF no es correcto";
        else if (form.direccion.value=="") errorS="La dirección está vacía";
        else if (!dirCorrecto(form.direccion.value)) errorS="La dirección no es correcta";
        else if (form.poblacion.value=="") errorS="Debe escribir la población";
        else if (!nomCorrecto(form.poblacion.value)) errorS="La población no parece correcta";
        else if (form.provincias[form.provincias.selectedIndex].value==-1) errorS="Debe seleccionar una provincia";
        else if (form.cp.value=="") errorS="Debe rellenar el código postal";
        else if (!validarCodigoP(form,form.cp.value)) errorS="El código postal no es correcto";
        else if (form.telefono1.value=="") errorS="Debe introducir el teléfono";
        else if (!telefonoCorrecto(form.telefono1.value)) errorS="El teléfono no parece correcto";
		else if (form.telefono2.value=="") errorS="Debe introducir el número de movil";
        else if (!telefonoCorrecto(form.telefono2.value)) errorS="El número de movil no parece correcto";
        if (errorS=="") {
		form.provincia.value=provinciasNombre[form.provincias[form.provincias.selectedIndex].value];

		form.submit();
		}else {alert(errorS);errorS="";}
}


function recordarPass(form){
	var errorS="";
	if (form.usuario.value=="") errorS="Debe introducir el email";
	 if (errorS=="") {
		form.submit();
		}else {alert(errorS);errorS="";}
	
}

//función que sólo permite escribir números

function teclearNumero(objInputText){
    strTmp = "";
    cad = objInputText.value;
    for (var i = 0; i < cad.length; i++) {
        var caracter = cad.charAt(i);
	if (!isNaN(caracter)) strTmp = strTmp + caracter;
    }
    objInputText.value = strTmp;
} 
function modificarElCarrito(formu){
	    intValor = parseInt(formu.unid.value);
	 
    if (intValor < 1){//si hay un 0, lo actualizao al mínimo que es una unidad
        formu.unid.value = 1;
    }
    formu.accion.value='cambiar';
    formu.submit();
    
}