// =================================================================================================================
//
//    FUNCIONS JAVASCRIPT COMUNS
//
// =================================================================================================================

   
   var NS4 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) < 5);
   var NSX = (navigator.appName == "Netscape");
   var IE4 = (document.all) ? true : false;


   function go() {
	box = document.forms[0].s1;
	destination = box.options[box.selectedIndex].value;
	if (destination) location.href = destination;
   }

	function clipFloat(num,dec){ 
		var t=num+""; 
		alert(t);
		if (t.indexOf(".") > 0) {
			//num = parseFloat(t.substring(0,(t.indexOf(".")+dec+1))); 
			num = t.substring(0,(t.indexOf(".")+dec+1));
			alert(num);
			num = num.replace(".",",");
		} else {
			//num = parseFloat(t+".00"); 
			num = t+",00"; 
		}
		alert(num);
		return (num) 
	} 
 
 	function clipFloat2(num){ 
		var t=num+""; 
		//alert(t);
		var ent = t.slice(0, t.length -4);
		//alert(ent);
		var dec = t.slice(t.length -4, t.length -2);
		//alert(dec);
		if (ent =="") ent = "0";
		num = ent + "," + dec;
		//alert(num);
		return (num) 
	} 

 
   function actualitza_preus(box,prod,preu,tipus,pes_mitja,venda_unitats){

   	    var unitats = box.options[box.selectedIndex].value;
		if (venda_unitats == 1) {
			var selector_unitats = document.getElementById('sel_tipus_unitat['+prod+']');
			var tipus_unitats = selector_unitats.selectedIndex;
			//alert (tipus_unitats);
		} else {
			var tipus_unitats = 0;
		}
		//alert('tipus_unitats'+tipus_unitats);
   	    // així treballem amb sencers i el float del javascript no posa .999999999
   	    if (tipus==3 || (tipus == 2 && tipus_unitats == 1)) {
   	       preu_total = parseInt(unitats * preu*100) * parseInt(pes_mitja*100);
   	    } else {
   	       preu_total = parseInt(unitats*100) * parseInt(preu*100);
   	    }   
		//preu_total = preu_total / 10000;
		preu_total = clipFloat2(preu_total);
   	    //preu_total = preu_total.toFixed(2)
		//preu_total = clipFloat(preu_total,2);

   	    input_field = "import["+prod+"]";
   	    document.getElementById(input_field).value = preu_total;

   }


   function actualitza_preus2(box,prod,preu,tipus,pes_mitja,venda_unitats){

   	    var unitats = box.options[box.selectedIndex].value;
		if (venda_unitats == 1) {
			
			var checked1 = document.getElementById('sel_tipus_unitat['+prod+']_0').checked;
    		var checked2 = document.getElementById('sel_tipus_unitat['+prod+']_1').checked;
	
		//alert(checked1+"-"+checked2);
		
			if (checked1) var tipus_unitats = 0;
			if (checked2) var tipus_unitats = 1;
			//alert (tipus_unitats);
		} else {
			var tipus_unitats = 0;
		}
		//alert('tipus_unitats'+tipus_unitats);
   	    // així treballem amb sencers i el float del javascript no posa .999999999
   	    if (tipus==3 || (tipus == 2 && tipus_unitats == 1)) {
   	       preu_total = parseInt(unitats * preu*100) * parseInt(pes_mitja*100);
   	    } else {
   	       preu_total = parseInt(unitats*100) * parseInt(preu*100);
   	    }   
		//preu_total = preu_total / 10000;
		preu_total = clipFloat2(preu_total);
   	    //preu_total = preu_total.toFixed(2)
		//preu_total = clipFloat(preu_total,2);

   	    input_field = "import["+prod+"]";
   	    document.getElementById(input_field).value = preu_total;

   }



   function canvia_select_unitats(box,prod) {
	   
   		var tipus_unitats = box.selectedIndex;
		if ( tipus_unitats == 1) {
			document.getElementById('sel_unitats['+prod+']').style.display='none';
			document.getElementById('sel_unitats_u['+prod+']').style.display='inline';		
		} else {
			document.getElementById('sel_unitats['+prod+']').style.display='inline';
			document.getElementById('sel_unitats_u['+prod+']').style.display='none';		
		}
	   
   }



   function canvia_radio_unitats(box,prod, preu,tipus,pes_mitja,venda_unitats) {
	   
	    var checked1 = document.getElementById('sel_tipus_unitat['+prod+']_0').checked;
    	var checked2 = document.getElementById('sel_tipus_unitat['+prod+']_1').checked;
	
		//alert(checked1+"-"+checked2);
		
		if (checked1) var value = 0;
		if (checked2) var value = 1;
		
		//alert(value);

		if ( value == 1) {
			document.getElementById('sel_unitats['+prod+']').style.display='none';
			document.getElementById('sel_unitats_u['+prod+']').style.display='inline';		
		} else {
			document.getElementById('sel_unitats['+prod+']').style.display='inline';
			document.getElementById('sel_unitats_u['+prod+']').style.display='none';		
		}
	   
	   
	   	if (value == 1) {
			var select = "sel_unitats_u["+prod+"]";
		} else {
			var select = "sel_unitats["+prod+"]";		
		}
	
		box = document.getElementById(select);

	   //alert ("a punt preu:"+preu+" tipus:"+tipus+" pes_mitja:"+pes_mitja+"venda_unitats:"+venda_unitats);
	   actualitza_preus2(box,prod,preu,tipus,pes_mitja,venda_unitats);
	   
   }



   function afegeix_cistella(producte, venda_unitats){

	//alert(venda_unitats);

	if (venda_unitats == 1) {
		var selector_unitats = document.getElementById('sel_tipus_unitat['+producte+']');
		var tipus_unitats = selector_unitats.selectedIndex;
		//alert ('tipus_unitats'+tipus_unitats);
	} else {
		var tipus_unitats = 0;
	}
  
	if (tipus_unitats == 1) {
    	select = "sel_unitats_u["+producte+"]";
	} else {
    	select = "sel_unitats["+producte+"]";		
	}

	box = document.getElementById(select);
	unitats = box.options[box.selectedIndex].value;

	//iframe = "iframe_cistella.php?addp="+producte+"&addu="+unitats+"&accio=1";
	iframe = "iframe_cistella.php?addp="+producte+"&addu="+unitats+"&tipusu="+tipus_unitats;
	
	//alert("actualitza"+iframe);
	
	if (IE4) {
		  document.iframe_cistella.location.href=iframe;
	} else {

		  //top.origen.location.href=ausel; // no funciona a edticool.com
		  window.iframe_cistella.location.href=iframe;
	}

   }
   
   
 function afegeix_cistella2(producte, venda_unitats){

	//alert(venda_unitats);

	if (venda_unitats == 1) {
		
		var checked1 = document.getElementById('sel_tipus_unitat['+producte+']_0').checked;
		var checked2 = document.getElementById('sel_tipus_unitat['+producte+']_1').checked;

	//alert(checked1+"-"+checked2);
	
		if (checked1) var tipus_unitats = 0;
		if (checked2) var tipus_unitats = 1;
		//alert (tipus_unitats);
	} else {
		var tipus_unitats = 0;
	}
    //alert(tipus_unitats);
  
	if (tipus_unitats == 1) {
    	var select = "sel_unitats_u["+producte+"]";
	} else {
    	var select = "sel_unitats["+producte+"]";		
	}

	var box = document.getElementById(select);
	var unitats = box.options[box.selectedIndex].value;

	//iframe = "iframe_cistella.php?addp="+producte+"&addu="+unitats+"&accio=1";
	var iframe = "iframe_cistella.php?addp="+producte+"&addu="+unitats+"&tipusu="+tipus_unitats;
	
	//alert("actualitza"+iframe);
	
	if (IE4) {
		  document.iframe_cistella.location.href=iframe;
	} else {

		  //top.origen.location.href=ausel; // no funciona a edticool.com
		  window.iframe_cistella.location.href=iframe;
	}

   }
   

   
   
 	function afegeix_cistella_rapida(producte, venda_unitats){
		alert(venda_unitats);
		
		if (venda_unitats == 1) {
			var selector_unitats = document.getElementById('sel_tipus_unitat['+producte+']');
			var tipus_unitats = selector_unitats.selectedIndex;
			//alert ('tipus_unitats'+tipus_unitats);
		} else {
			var tipus_unitats = 0;
		}
	  
		if (tipus_unitats == 1) {
			var select = "sel_unitats_u["+producte+"]";
		} else {
			var select = "sel_unitats["+producte+"]";		
		}

		box = document.getElementById(select);

		//select = "sel_unitats["+producte+"]";
		//box = document.getElementById(select);
		unitats = box.options[box.selectedIndex].value;
		
		pagina = "?addp="+producte+"&addu="+unitats+"&tipusu="+tipus_unitats;
		
		//alert(pagina);
		
		document.location.href=pagina;
		//self.parent.location.href=pagina;
	
   }
   
   
    function afegeix_cistella_rapida2(producte, venda_unitats){
				
		if (venda_unitats == 1) {
			
			var checked1 = document.getElementById('sel_tipus_unitat['+producte+']_0').checked;
			var checked2 = document.getElementById('sel_tipus_unitat['+producte+']_1').checked;
	
		//alert(checked1+"-"+checked2);
		
			if (checked1) var tipus_unitats = 0;
			if (checked2) var tipus_unitats = 1;
			//alert (tipus_unitats);
		} else {
			var tipus_unitats = 0;
		}
	  
		if (tipus_unitats == 1) {
			var select = "sel_unitats_u["+producte+"]";
		} else {
			var select = "sel_unitats["+producte+"]";		
		}

		var box = document.getElementById(select);

		//select = "sel_unitats["+producte+"]";
		//box = document.getElementById(select);
		var unitats = box.options[box.selectedIndex].value;
		
		var pagina = "?addp="+producte+"&addu="+unitats+"&tipusu="+tipus_unitats;
		
		//alert(pagina);
		
		document.location.href=pagina;
		//self.parent.location.href=pagina;
	
   }
   
function isNotEmpty(elem) {
	var str = elem.value;
	if (str == null || str.length == 0) {
		alert("Els camps obligatoris han de tenir un valor");
		return false;
	} else {
		return true;
	}
}

function isNumber(elem) {
	var str = elem.value;
	var re = /\d/;
	
	if (str == null || str.length == 0) {
	    return true;
	}
	if (!str.match(re)) {
		alert("Número amb format incorrecte");
		return false;
	} else {
		return true;
	}
}

function isLen(elem, n) {
	var str = elem.value;
	if (str.length != n) {
		alert("El camp requereix" + n + "dígits");
		return false;
	} else {
		return true;
	}
}


function isTel(elem, idioma) {
	var txt_error1=new Array();
	txt_error1[1] = "Número de telèfon amb format incorrecte";
	txt_error1[2] = "Número de teléfono con formato incorrecto";

	var str = elem.value;
	var re = /[69]\d{8}/;
	
	if (str == null || str.length == 0) {
	    return true;
	}
	if (!str.match(re)) {
		alert(txt_error1[idioma]);
		return false;
	} else {
		return true;
	}
}


function isEmailAddr(elem, idioma) {
	var txt_error1=new Array();
	txt_error1[1] = "Adreça d'Email amb format incorrecte";
	txt_error1[2] = "Dirección de Email con formato incorrecto";

	var str = elem.value;
	var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
	
	if (str == null || str.length == 0) {
	    return true;
	}
	if (!str.match(re)) {
		alert(txt_error1[idioma]);
		return false;
	} else {
		return true;
	}
}

function BCK_isDNI(elem, idioma) {
	var txt_error1=new Array();
	txt_error1[1] = "Format de DNI o NIE incorrecte. Ha de ser X0000000X";
	txt_error1[2] = "Formato de DNI o NIE incorrecto. Tiene que ser X0000000X";

	var txt_error2=new Array();
	txt_error2[1] = "Valor de DNI o NIE incorrecte. La lletra no és correcta";
	txt_error2[2] = "Valor de DNI o NIE incorrecto. La letra no es correcta";

	var txt_error3=new Array();
	txt_error3[1] = "Valor de CIF incorrecte";
	txt_error3[2] = "Valor de CIF incorrecto";


	var valor = elem.value;
	var letras = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E', 'T'];

	if (valor == null || valor.length == 0) {
	    return true;
	}
	valor = valor.toUpperCase(); 
	
	var valor1 = valor.substring(0,1);
	var valor2 = valor.substring(1,9);
	
	valor1 = valor1.replace("X","0");
	valor1 = valor1.replace("Y","1");
	valor1 = valor1.replace("Z","2");
	
	valor = valor1+valor2;
	
	if( !(/^\d{8}[A-Z]$/.test(valor)) ) {
		alert(txt_error1[idioma]);
	  	return false;
	}
	 
	if(valor.charAt(8) != letras[(valor.substring(0, 8))%23]) {
		alert(txt_error2[idioma]);
		return false;
	}

	return true;
}


function str_replace(search, replace, subject) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Gabriel Paderni
    // +   improved by: Philip Peterson
    // +   improved by: Simon Willison (http://simonwillison.net)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   bugfixed by: Anton Ongson
    // +      input by: Onno Marsman
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    tweaked by: Onno Marsman
    // *     example 1: str_replace(' ', '.', 'Kevin van Zonneveld');
    // *     returns 1: 'Kevin.van.Zonneveld'
    // *     example 2: str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars');
    // *     returns 2: 'hemmo, mars'
 
    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];
}


//Retorna: 1 = NIF ok, 2 = CIF ok, 3 = NIE ok, -1 = NIF error, -2 = CIF error, -3 = NIE error, 0 = ??? error
//function valida_nif_cif_nie(a) {
function isDNI(elem, idioma) {
	var a = elem.value;
	var temp=a.toUpperCase();
	var cadenadni="TRWAGMYFPDXBNJZSQVHLCKE";
	
	var txt_error1=new Array();
	txt_error1[1] = "Format de DNI o NIE incorrecte. Ha de ser X0000000X";
	txt_error1[2] = "Formato de DNI o NIE incorrecto. Tiene que ser X0000000X";

	var txt_error2=new Array();
	txt_error2[1] = "Valor de DNI o NIE incorrecte. La lletra no és correcta";
	txt_error2[2] = "Valor de DNI o NIE incorrecto. La letra no es correcta";

	var txt_error3=new Array();
	txt_error3[1] = "Valor de CIF incorrecte";
	txt_error3[2] = "Valor de CIF incorrecto";

	if (temp!==''){
		//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))
		{
			alert(txt_error1[idioma]);
			return false;
		}
 
		//comprobacion de NIFs estandar
		if (/^[0-9]{8}[A-Z]{1}$/.test(temp))
		{
			posicion = a.substring(8,0) % 23;
			letra = cadenadni.charAt(posicion);
			var letradni=temp.charAt(8);
			if (letra == letradni)
			{
			   	return true;
			}
			else
			{
				alert(txt_error2[idioma]);
				return false;
			}
		}
 
		//algoritmo para comprobacion de codigos tipo CIF
		suma = parseInt(a[2])+parseInt(a[4])+parseInt(a[6]);
		for (i = 1; i < 8; i += 2)
		{
			temp1 = 2 * parseInt(a[i]);
			temp1 += '';
			temp1 = temp1.substring(0,1);
			temp2 = 2 * parseInt(a[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));
 
		//comprobacion de NIFs especiales (se calculan como CIFs)
		if (/^[KLM]{1}/.test(temp))
		{
			if (a[8] == String.fromCharCode(64 + n))
			{
				return true;
			}
			else
			{
				alert(txt_error3[idioma]);
				return false;
			}
		}
 
		//comprobacion de CIFs
		if (/^[ABCDEFGHJNPQRSUVW]{1}/.test(temp))
		{
			temp = n + '';
			if (a[8] == String.fromCharCode(64 + n) || a[8] == parseInt(temp.substring(temp.length-1, temp.length)))
			{
				return true;
			}
			else
			{
				alert(txt_error3[idioma]);
				return false;
			}
		}
 
		//comprobacion de NIEs
		//T
		if (/^[T]{1}/.test(temp))
		{
			if (a[8] == /^[T]{1}[A-Z0-9]{8}$/.test(temp))
			{
				return true;
			}
			else
			{
				alert(txt_error3[idioma]);
				return false;
			}
		}
 
		//XYZ
		if (/^[XYZ]{1}/.test(temp))
		{
			pos = str_replace(['X', 'Y', 'Z'], ['0','1','2'], temp).substring(0, 8) % 23;
			if (a[8] == cadenadni.substring(pos, pos + 1))
			{
				return true;
			}
			else
			{
				alert(txt_error3[idioma]);
				return false;
			}
		}
	}
	alert(txt_error1[idioma]);
	return false;
}


