
		/************************************/
		/*	Gestion Langues					*/
		/************************************/
		var CodTxts = new Array();
		CodTxts['fr'] = new Array();
		CodTxts['nl'] = new Array();
		CodTxts['es'] = new Array();
		CodTxts['en'] = new Array();
		CodTxts['it'] = new Array();
		CodTxts['ch'] = new Array();
		CodTxts['de'] = new Array();
		CodTxts['at'] = new Array();
		CodTxts['cz'] = new Array();
		//CodTxts['us'] = new Array();
		CodTxts[lang] = new Array();
		
		// Hack temporaire, en attente des traductions
		CodTxts['en']['Check_rail_dispovente_state0'] = 'Your article is about to be added to your cart.<br /><br /><p style="font-weight:normal;"><span class="mihyap">The rail [ID] can only hold [NBPAT] carriers.</span> </p><br />How many rails do you want to add to your cart : <input type="text" id="alertName" name="qt" value="1" maxlength="2" size="2" /><br />How many carrier per rail : <select name="patins" id="patins" >[OPTPAT]</select> carrier(s)<input type="hidden" id="ref" name="ref" value="[ID]" /><input type="hidden" id="origin" name="origin" value="msgbox" />';
		CodTxts['nl']['Check_rail_dispovente_state0'] = CodTxts['es']['Check_rail_dispovente_state0'] = CodTxts['it']['Check_rail_dispovente_state0'] = CodTxts['ch']['Check_rail_dispovente_state0'] = CodTxts['de']['Check_rail_dispovente_state0'] = CodTxts['at']['Check_rail_dispovente_state0'] = CodTxts['cz']['Check_rail_dispovente_state0'] = CodTxts['en']['Check_rail_dispovente_state0']; 
		
		
		
		CodTxts['fr']['RemPanART'] = "Voulez-vous vraiment enlever ce produit de votre panier ?";
		CodTxts['fr']['Check_dispovente_nondispo'] = "Ce produit n'est actuellement pas disponible à la vente en ligne.\nVous pouvez tout de même ajouter ce produit à votre panier et en demander un devis.\n\nVoulez-vous ajouter ce produit à votre panier ?";
		CodTxts['fr']['Check_dispovente_state0'] = 'Votre article est sur le point d\'être ajouté à votre panier.<br /><br /><p style="font-weight:normal;"><span class="mihyap">Nos glissières sont vendues à l\'unité et non à la paire.</span> Pour un montage standard, pour un tiroir par exemple, il vous faudra donc généralement deux glissières.</p><br />Combien de produits voulez-vous ajouter à votre panier : <input type="text" id="alertName" name="qt" value="2" maxlength="2" size="2" /><input type="hidden" id="ref" name="ref" value="[ID]" /><input type="hidden" id="origin" name="origin" value="msgbox" />';
		CodTxts['fr']['Check_rail_dispovente_state0'] = 'Votre article est sur le point d\'être ajouté à votre panier.<br /><br /><p style="font-weight:normal;"><span class="mihyap">Le rail [ID] ne peut contenir au maximum que [NBPAT] patins</span> </p><br />Combien de rails voulez-vous ajouter à votre panier : <input type="text" id="alertName" name="qt" value="1" maxlength="2" size="2" /><br />Combien de patins par rail : <select name="patins" id="patins" >[OPTPAT]</select> patin(s)<input type="hidden" id="ref" name="ref" value="[ID]" /><input type="hidden" id="origin" name="origin" value="msgbox" />';
		CodTxts['fr']['Check_dispovente_state0bt1'] = 'Annuler';
		CodTxts['fr']['Check_dispovente_state0bt2'] = 'Ajouter';
		CodTxts['fr']['Check_dispovente_state1'] = 'Votre article a bien été ajouté à votre panier.';
		CodTxts['fr']['Check_dispovente_state1bt1'] = 'Continuer mes achats';
		CodTxts['fr']['Check_dispovente_state1bt2'] = 'Terminer ma commande';
		CodTxts['fr']['GetSTocks_err'] = 'Nos serveurs étant actuellement en maintenance, nous ne pouvons vous confirmer le stock ni enregistrer de commande.\nNous nous excusons de ce désagrément et vous demandons de renouveler votre demande dans quelques instants.';
		CodTxts['fr']['RecalcPan'] = 'En appliquant ces modifications, certain \351l\351ments de votre panier seront supprim\351s.\nVoulez-vous vraiment enlever ces produits de votre panier ?';
		CodTxts['fr']['DelPanAllART'] = 'Voulez-vous vraiment enlever tous les produits votre panier ?';
		
		
		
		CodTxts['nl']['RemPanART'] = "Wilt u inderdaad dit product uit uw winkelwagen verwijderen?";
		CodTxts['nl']['Check_dispovente_nondispo'] = "Dit produkt is op dit moment niet beschikbaar voor online verkoop.\nU kunt dit produkt wel aan uw winkelwagen toevoegen en om een offerte vragen. \n\nWilt u dit produkt aan uw winkelwagen toevoegen?";
		CodTxts['nl']['Check_dispovente_state0'] = 'Het gekozen artikel zal aan uw winkelwagen worden toegevoegd.<br /><br /><p style="font-weight:normal;"><span class="mihyap">Onze geleiders worden per stuk verkocht en niet per paar.</span> In veel toepassingen, zoals bijvoorbeeld met een lade, moet u in het algemeen 2 geleiders gebruiken.</p><br /> Hoeveel van dit artikel wilt u aan uw winkelwagen toevoegen? : <input type="text" id="alertName" name="qt" value="2" maxlength="2" size="2" /><input type="hidden" id="ref" name="ref" value="[ID]" /><input type="hidden" id="origin" name="origin" value="msgbox" />';
		CodTxts['nl']['Check_rail_dispovente_state0'] = 'Het gekozen artikel wordt aan uw winkelwagen toegevoegd.<br /><br /><p style="font-weight:normal;"><span class="mihyap">De geleider [ID] kan niet meer dan maximaal [NBPAT] loopwagens bevatten.</span> </p><br />Hoeveel geleider wilt u aan uw winkelwagen toevoegen : <input type="text" id="alertName" name="qt" value="1" maxlength="2" size="2" /><br />Hoeveel loopwagens per geleider : <select name="patins" id="patins" >[OPTPAT]</select> loopwagens<input type="hidden" id="ref" name="ref" value="[ID]" /><input type="hidden" id="origin" name="origin" value="msgbox" />';
		CodTxts['nl']['Check_dispovente_state0bt1'] = 'Annuleren';
		CodTxts['nl']['Check_dispovente_state0bt2'] = 'Toevoegen';
		CodTxts['nl']['Check_dispovente_state1'] = 'Uw artikel is aan uw winkelwagen toegevoegd.';
		CodTxts['nl']['Check_dispovente_state1bt1'] = 'Doorgaan met winkelen';
		CodTxts['nl']['Check_dispovente_state1bt2'] = 'Bestelling voltooien';
		CodTxts['nl']['GetSTocks_err'] = 'Op dit moment vindt onderhoud plaats aan onze servers, hierdoor kunnen wij geen orders accepteren of voorraden controleren.\nOnze excuses voor het ongemak, probeert u het over enkele ogenblikken opnieuw.';
		CodTxts['nl']['RecalcPan'] = 'Als u deze verandering uitvoert zullen sommige onderdelen uit uw winkelwagen worden verwijderd.\nWilt u deze producten inderdaad uit uw winkelwagen verwijderen?';
		CodTxts['nl']['DelPanAllART'] = 'Wilt u inderdaad alle producten uit uw winkelwagen verwijderen?';
		
		
		CodTxts['es']['RemPanART'] = "¿Quiere de verdad retirar este producto de su cesta?";
		CodTxts['es']['Check_dispovente_nondispo'] = "Este producto no está disponible actualmente a la venta en línea.\nPuede añadir este producto a su cesta y pedir un presupuesto.\n\nQuiere añadir este producto a su cesta?";
		CodTxts['es']['Check_dispovente_state0'] = 'Su artículo  está sobre el punto de añadese a su cesta.<br /><br /><p style="font-weight:normal;"><span class="mihyap">Nuestras guias telescópicas se venden a la unidad y no al par.</span>Para un montaje estándar, para un cajón por ejemplo, necesitareis pues generalmente dos guias telescópicas.</p><br />Cuánto productos quiere añadir a su cesta : <input type="text" id="alertName" name="qt" value="2" maxlength="2" size="2" /><input type="hidden" id="ref" name="ref" value="[ID]" /><input type="hidden" id="origin" name="origin" value="msgbox" />';
		CodTxts['es']['Check_rail_dispovente_state0'] = 'Su artículo  está sobre el punto de añadese a su cesta.<br /><br /><p style="font-weight:normal;"><span class="mihyap">La guia [ID] se puede contener [NBPAT] patínes.</span> </p><br />Cuánto guias quiere añadir a su cesta : <input type="text" id="alertName" name="qt" value="1" maxlength="2" size="2" /><br />Cuánto patínes por guias : <select name="patins" id="patins" >[OPTPAT]</select> patín(es)<input type="hidden" id="ref" name="ref" value="[ID]" /><input type="hidden" id="origin" name="origin" value="msgbox" />';
		CodTxts['es']['Check_dispovente_state0bt1'] = 'Anular';
		CodTxts['es']['Check_dispovente_state0bt2'] = 'Añadir';
		CodTxts['es']['Check_dispovente_state1'] = 'Su articulose añadió bien a su cesta.';
		CodTxts['es']['Check_dispovente_state1bt1'] = 'Seguir mis compras';
		CodTxts['es']['Check_dispovente_state1bt2'] = 'Terminar mi pedido';
		CodTxts['es']['GetSTocks_err'] = 'Nuestros servidores que son actualmente en mantenimiento, no podemos confirmarle las existencias ni registrar de pedido.\nNos disculpamos de esta molestia y le pedimos renovar su demanda en algunos momentos.';
		CodTxts['es']['RecalcPan'] = 'Al aplicar estas modificaciones, se suprimirán determinados elementos de su cesta.\nQuiere de verdad retirar estos productos de su cesta?';
		CodTxts['es']['DelPanAllART'] = 'Quiere de verdad retirar todos los producto de su cesta?';
		

		CodTxts['en']['RemPanART'] = "Do you really want to remove the item from your cart ?";
		CodTxts['en']['Check_dispovente_nondispo'] = "This product is currently not available to the online sale.\nYou can still add this product to your cart and ask for a quotation. \n\nDo you want to add this product to your cart ?";
		CodTxts['en']['Check_dispovente_state0'] = 'Your article is about to be added to your cart.<br /><br /><p style="font-weight:normal;"><span class="mihyap">Our slides are sold individually and not with the pair.</span> For a standard installation, for example a drawer,you have to use two slides in general.</p><br />How many products do you want to add to your cart : <input type="text" id="alertName" name="qt" value="2" maxlength="2" size="2" /><input type="hidden" id="ref" name="ref" value="[ID]" /><input type="hidden" id="origin" name="origin" value="msgbox" />';
		CodTxts['en']['Check_dispovente_state0bt1'] = 'Cancel';
		CodTxts['en']['Check_dispovente_state0bt2'] = 'Add';
		CodTxts['en']['Check_dispovente_state1'] = 'Your item has been added to your cart.';
		CodTxts['en']['Check_dispovente_state1bt1'] = 'Continue shopping';
		CodTxts['en']['Check_dispovente_state1bt2'] = 'Finish my order';
		CodTxts['en']['GetSTocks_err'] = 'Our servers are currently undergoing maintenance, we can\'t confirm or record inventory control.\nWe apologize for this inconvenience and ask you to renew your request in a few moments.';
		CodTxts['en']['RecalcPan'] = 'By applying these changes, some elements of your cart will be removed.\nDo you really want to remove these products of your cart?';
		CodTxts['en']['DelPanAllART'] = 'Do you really want to remove all the items from your cart ?';
		
		CodTxts['it']['RemPanART'] = "Volete davvero eliminare questo prodotto dalla vostra richiesta di preventivo ?";
		CodTxts['it']['Check_dispovente_state0'] = 'Il vostro articolo sta per essere aggiunto al carrello.<br /><br /><p style="font-weight:normal;"><span class="mihyap">Le nostre guide vengono vendute all\'unità e non a coppia.</span> Per un montaggio standard, ad esempio per un cassetto, avrete quindi generalmente bisogno di due guide.</p><br />Quanti prodotti volete aggiungere al carrello :<input type="text" id="alertName" name="qt" value="2" maxlength="2" size="2" /><input type="hidden" id="ref" name="ref" value="[ID]" /><input type="hidden" id="origin" name="origin" value="msgbox" />';
		CodTxts['it']['Check_rail_dispovente_state0'] = 'Il vostro articolo sta per essere aggiunto al carrello.<br /><br /><p style="font-weight:normal;"><span class="mihyap">La guida lineare [ID] può contenere al massimo [NBPAT] pattini</span> </p><br />Quanti guide lineari volete aggiungere al carrello :<input type="text" id="alertName" name="qt" value="1" maxlength="2" size="2" /><br />Quanti pattini per pattini : <select name="patins" id="patins" >[OPTPAT]</select> pattini<input type="hidden" id="ref" name="ref" value="[ID]" /><input type="hidden" id="origin" name="origin" value="msgbox" />';
		CodTxts['it']['Check_dispovente_nondispo'] = "Questo prodotto non è attualmente disponibile alla vendita on line.\nPotete tuttavia aggiungere questo prodotto al carrello e chiederne un preventivo.\n\nVolete aggiungere questo prodotto al carrello ?";
		CodTxts['it']['Check_dispovente_state0bt1'] = 'Annullare';
		CodTxts['it']['Check_dispovente_state0bt2'] = 'Aggiungere';
		CodTxts['it']['Check_dispovente_state1'] = 'Il vostro articolo è stato aggiunto al carrello.';
		CodTxts['it']['Check_dispovente_state1bt1'] = 'Continuare i miei acquisti';
		CodTxts['it']['Check_dispovente_state1bt2'] = 'Terminare il mio ordine';
		CodTxts['it']['GetSTocks_err'] = 'I nostri server sono attualmente in manutenzione, non possiamo confermarvi lo stock né registrare alcun ordine.\nCi scusiamo per il disturbo occasionato e vi chiediamo di rinnovare la richiesta tra qualche istante.';
		CodTxts['it']['RecalcPan'] = 'Applicando queste modifiche, alcuni elementi del carrello verranno eliminati.\nVolete davvero eliminare questi prodotti dal carrello ? ';
		CodTxts['it']['DelPanAllART'] = 'Volete davvero eliminare tutti i prodotti dal carrello ?';
		
		CodTxts['cz']['RemPanART'] = "Opravdu si přejete odebrat tento produkt z vašeho košíku?";
		CodTxts['cz']['Check_dispovente_nondispo'] = "Tento produkt momentálně není k dospozici on-line.\nMůžete jej nicméně vložit do košíku a požádat o cenovou nabídku.\n\nChcete přidat tento produkt do košíku?";
		CodTxts['cz']['Check_dispovente_state0'] = 'Zboží je vloženo do košíku.<br /><br /><p style="font-weight:normal;"><span class="mihyap">Lišty se prodávají po jednotlivých kusech, nikoli po párech.</span> Pro standardní použití, např. pro zásobník, zásuvku, budete potřebovat pravděpodobně 2 lišty.</p><br />Jaké množství chcete vložit do košíku:  <input type="text" id="alertName" name="qt" value="2" maxlength="2" size="2" /><input type="hidden" id="ref" name="ref" value="[ID]" /><input type="hidden" id="origin" name="origin" value="msgbox" />';
		CodTxts['cz']['Check_rail_dispovente_state0'] = 'Položka byla přidána do košíku.<br /><br /><p style="font-weight:normal;"><span class="mihyap">Kolejnice [ID] může mít maximálně [NBPAT] vozíky.</span> </p><br />Kolik kolejnic chcete vložit do košíku: <input type="text" id="alertName" name="qt" value="1" maxlength="2" size="2" /><br />Kolik vozíků na kolejnici: <select name="patins" id="patins" >[OPTPAT]</select> vozíky(/ů)<input type="hidden" id="ref" name="ref" value="[ID]" /><input type="hidden" id="origin" name="origin" value="msgbox" />';
		CodTxts['cz']['Check_rail_dispovente_state0_2'] = 'Položka byla přidána do košíku.<br /><br /><p style="font-weight:normal;"><span class="mihyap">Kolejnice [ID] může mít maximálně [NBPAT] vozíků.</span> </p><br />Kolik kolejnic chcete vložit do košíku: <input type="text" id="alertName" name="qt" value="1" maxlength="2" size="2" /><br />Kolik vozíků na kolejnici: <select name="patins" id="patins" >[OPTPAT]</select> vozíky(/ů)<input type="hidden" id="ref" name="ref" value="[ID]" /><input type="hidden" id="origin" name="origin" value="msgbox" />';
		CodTxts['cz']['Check_dispovente_state0bt1'] = 'Zrušit';
		CodTxts['cz']['Check_dispovente_state0bt2'] = 'Vložit';
		CodTxts['cz']['Check_dispovente_state1'] = 'Zboží bylo vloženo do košíku.';
		CodTxts['cz']['Check_dispovente_state1bt1'] = 'Pokračovat v nákupu.';
		CodTxts['cz']['Check_dispovente_state1bt2'] = 'Ukončit objednávku';
		CodTxts['cz']['GetSTocks_err'] = 'Na našem serveru právě probíhá údržba, proto Vám momentálně nejsme schopni poskytnout informaci o stavu zásob ani potvrdit objednávku.\nProsíme, omluvte tuto komplikaci a zopakujte svůj požadavek za okamžik.';
		CodTxts['cz']['RecalcPan'] = 'Touto změnou dojde k odstranění některých položek z košíku.\nOpravdu chcete položky odstranit z košíku?';
		CodTxts['cz']['DelPanAllART'] = 'Opravdu si přejete vyprázdnit košík?';
		
		
		CodTxts['ch']['RemPanART'] = "Möchten Sie wirklich diesen Artikel aus Ihrem Warenkorb löschen?";
		CodTxts['ch']['Check_dispovente_nondispo'] = "Dieses Produkt kann nicht online verkauft werden.\nSie können dieses Produkt trotzdem Ihrem Warenkorb hinzufügen und um Angebotserstellung bitten.\n\nMöchten diesen Artikel Ihrem Warenkorb hinzufügen?";
		CodTxts['ch']['Check_dispovente_state0'] = 'Ihr Artikel wird gerade Ihrem Warenkorb hinzugefügt.<br /><br /><p style="font-weight:normal;"><span class="mihyap">Unsere Teleskopschienen werden stückweise, nicht paarweise verkauft.</span> Für die meisten Anwendungen (z. B. Schublade) werden jedoch zwei Stück benötigt.</p><br />Wieviele Artikel möchten Sie Ihrem Warenkorb hinzuzufügen: <input type="text" id="alertName" name="qt" value="2" maxlength="2" size="2" /><input type="hidden" id="ref" name="ref" value="[ID]" /><input type="hidden" id="origin" name="origin" value="msgbox" />';
		CodTxts['ch']['Check_dispovente_state0bt1'] = 'Annullieren';
		CodTxts['ch']['Check_dispovente_state0bt2'] = 'Hinzufügen';
		CodTxts['ch']['Check_dispovente_state1'] = 'Ihr Artitkel wurde Ihrem Warenkorb hinzugefügt.';
		CodTxts['ch']['Check_dispovente_state1bt1'] = 'Weiter shoppen';
		CodTxts['ch']['Check_dispovente_state1bt2'] = 'Bestellung beenden';
		CodTxts['ch']['GetSTocks_err'] = 'Da unsere Server momentan gewartet werden, können wir Ihnen keine Angaben zu Verfügbarkeiten machen oder Bestellungen aufnehmen.\nWir möchten uns für die Verzögerung entschuldigen und bitten Sie, Ihre Anfrage in einigen Minuten zu wiederholen.';
		CodTxts['ch']['RecalcPan'] = 'Möchten Sie diese Veränderungen wirklich durchführen?\nEinige Artikel Ihres Warenkorbes werden hierdurch geschlöscht.';
		CodTxts['ch']['DelPanAllART'] = 'Möchten Sie wirklich diesen Artikel aus Ihrem Warenkorb löschen?';
		
		CodTxts['de'] = CodTxts['at'] = CodTxts['ch'];
		if((lang!='fr')&&(lang!='es')&&(lang!='en')&&(lang!='cz')&&(lang!='it')&&(lang!='ch')&&(lang!='de')&&(lang!='at')&&(lang!='nl')) { CodTxts[lang] = CodTxts['en']; }



		CodTxts['fr']['urlcommander'] = site+"FR/produits/commander.html";
		CodTxts['nl']['urlcommander'] = site+"NL/produkten/offerte.html";
		CodTxts['ch']['urlcommander'] = site+"CH/produkte/anfrage.html";
		CodTxts['de']['urlcommander'] = site+"DE/produkte/anfrage.html";
		CodTxts['at']['urlcommander'] = site+"DE/produkte/anfrage.html"; // ! \\
		CodTxts['es']['urlcommander'] = site+"ES/productos/presupuesto.html";
		CodTxts['en']['urlcommander'] = site+"EN/products/quotation.html";
		CodTxts['it']['urlcommander'] = site+"IT/prodotti/preventivo.html";
		CodTxts['cz']['urlcommander'] = site+"CZ/produkty/objednat.html";
		if((lang!='fr')&&(lang!='es')&&(lang!='en')&&(lang!='cz')&&(lang!='it')&&(lang!='ch')&&(lang!='de')&&(lang!='at')&&(lang!='nl')) { CodTxts[lang]['urlcommander'] = site+lang.toUpperCase()+"/products/quotation.html"; } //CodTxts['us']['urlcommander'] = site+"US/products/quotation.html";
		



$Q(document).ready(function(){ 












		/************************************/
		/*	Gestion panier					*/
		/************************************/
			
			$Q('.pan_add_bt').livequery('click', function(event) {  
			//$Q('.pan_add_bt').click(function(){
				origin = ( $Q(this).parent().attr('class')=='icoBoxPanier')? 'panier': 'table';
			//	alert(origin);
				//alert($Q(this).parent().attr('class'));
				if(origin=='table') { Check_dispovente( $Q(this).attr('id').replace("_add", ''), origin); }
				else { AddPanART( $Q(this).attr('id').replace("_add", ''), origin, 1); }
			});
			
			
			$Q('.pan_del_bt').livequery('click', function(event) {  
				
				DelPanART( $Q(this).attr('id').replace("_del", ''));
			});
			
			/* Panier Complet */
			$Q('#armageddon').livequery('click', function(event) {  
				
				DelPanAllART();
			});
			
			$Q('.removeArt').livequery('click', function(event) {  
				
				RemPanART( $Q(this).attr('id').replace("_rem", ''));
			});
			
			$Q('#recalc, #buylnk').livequery('click', function(event) {  
				//alert('click');
				RecalcPan();
			});
				
		
			$Q('.vals').keypress(function (e) {
				if(e.which < 48 || e.which > 57) {
					
					e.preventDefault();
					e.stopPropagation();
					}
				
		
			});
			
			$Q('.XHRUpd').keyup(function (e) {
				
					
					
			RecalcPan();
		
			});
										  
			/*
			
			jQuery.isJson = function(str) {
				if (jQuery.trim(str) == '') return false;
				str = str.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
				return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); } 
				
			*/
	});

	
	
	function AddPanART(id, origin, qt)
	{
		// => passage info sup pour affichage message confirmation ajout au panier
		qt=(parseInt(qt)<1)? 1 : qt;
		qtd=(parseInt(qt)>1)? '&qtd='+parseInt(qt) : '&qtd=1';
		o = (origin=='panier')? 0: 1;
		durl = (o==0)? '' : '&url='+$Q("#product_url").attr('href');
		$Q.ajax({type: "GET", url: site+"tl_files/chambrelan/_soa/soa_pan.php?act=soa&todo=addpan&art="+id+"&origin="+o+durl+qtd, dataType: "json", success: function(json){ 
		//alert(json.toSource());
				if(json['ok']=='1')
				{
					//si ajout depuis tableau charges
					
					if(origin=='table')
					{
						//$Q("#msg_ajout_ok").show();
						//$Q("#msg_ajout_ok").fadeOut(2000);
						$Q("#pan_tbody").html(json['msg']);
						$Q.scrollTo("#sideBarTopCorner");
						$Q("#BlocPanier, #BlocAchat").fadeOut(800).fadeIn(800).fadeOut(400).fadeIn(400).fadeOut(400).fadeIn(400);

						//alert("Vérif stock+prix -> info devis et non commande\nRemonter vers panier.");
						
						//document.location.href="FR/produits/panier.html";
						$Q("#"+id+"_nb").html((parseInt($Q("#"+id+"_nb").html())+1));
					}
					
					else if(origin=='msgbox')
					{
						//$Q("#msg_ajout_ok").show();
						//$Q("#msg_ajout_ok").fadeOut(2000);
						$Q("#pan_tbody").html(json['msg']);
						//$Q.scrollTo("#sideBarTopCorner");
						//$Q("#BlocPanier, #BlocAchat").fadeOut(800).fadeIn(800).fadeOut(400).fadeIn(400).fadeOut(400).fadeIn(400);
						
						//State
						$Q.prompt.goToState('state1');
						
						//alert("Vérif stock+prix -> info devis et non commande\nRemonter vers panier.");
						
						//document.location.href="FR/produits/panier.html";
						$Q("#"+id+"_nb").html((parseInt($Q("#"+id+"_nb").html())+parseInt(qt)));
					}
					
					else
					{
						$Q("#"+id+"_nb").html((parseInt($Q("#"+id+"_nb").html())+1));	
					}
					/**/
									
					// Si ajout depuis espace panier
					
					$Q("#NBARTS").html(json['tot']);
					
					if(json['tot']>0) { $Q(".optgestpan").show(); $Q("#BlocPanier").show(); $Q("#BlocAchat").show(); }
				}
			
			}
		
			
		});
	
	}
	
	
	function DelPanART(id)
	{
	
		if(parseInt($Q("#"+id+"_nb").html())>1)
		{
			DODelPanART(id);
		}
		else
		{
			if (confirm(CodTxts[lang]['RemPanART'])) { 
			  DODelPanART(id);
			}
		}
		
	}
	
		
	
	function DODelPanART(id)
	{
		$Q.ajax({type: "GET", url: site+"tl_files/chambrelan/_soa/soa_pan.php?act=soa&todo=delpan&art="+id, dataType: "json", success: function(json){ 
		
				if(json['ok']=='1')
				{
					if(json['msg']=='')
					{
						$Q("#"+id+"_nb").html((parseInt($Q("#"+id+"_nb").html())-1));						
					}
					else
					{
						$Q("#pan_tbody").html(json['msg']);					
					}
					$Q("#NBARTS").html(json['tot']);
					
					
					if(json['tot']<1) { $Q(".optgestpan").hide(); $Q("#BlocPanier").hide(); $Q("#BlocAchat").hide(); }
					
				}			
			}
		});
	
	}	
	
function mysubmitfunc(v,m,f){
     //alert(v);
	 //alert(m.toSource());
	 if(v==true) { alert(f.ref); }
	 
      return true;
}
	
	function Check_dispovente(id, origin)
	{
		
		if((parseInt($Q("#"+id+"_stock").html())<1)||($Q("#"+id+"_stock").hasClass("noprx"))) 
		{ if(confirm(CodTxts[lang]['Check_dispovente_nondispo'])) { AddPanART( id, origin, 1) } }	
		else { 
		
		var bt = new Object();
		var bt2 = new Object();
		
		if(id.indexOf("_M"))
		{ 
			patins = id.split("_M");
			id = patins[0];
			//$Q(this).attr('id').replace("_add", '')
			//alert("Rail "+id+" : "+patins[1]+" patins max");
			
			
		}
		
		
		//alert(CodTxts[lang]['Check_dispovente_state1bt2'].toUpperCase());
			bt[CodTxts[lang]['Check_dispovente_state0bt1']] = false;
			bt[CodTxts[lang]['Check_dispovente_state0bt2']] = true; 	
			
			bt2[CodTxts[lang]['Check_dispovente_state1bt1']] = false;
			bt2[CodTxts[lang]['Check_dispovente_state1bt2']] = true; 	

		//alert(bt.toString());
		
		//alert(bt.toString());
		
		
		// Anciennement indication page devis
		
		
		// Si Rails => choix du NB de patins
		if(patins[1]>0)
		{
			//alert(lang);
			msgtxt = CodTxts[lang]['Check_rail_dispovente_state0'].replace('[ID]',id);
			if((lang=='cz')&&(patins[1]>4)) { msgtxt = CodTxts[lang]['Check_rail_dispovente_state0_2'].replace('[ID]',id); }
			
			msgtxt = msgtxt.replace('[ID]',id);
			msgtxt = msgtxt.replace('[NBPAT]',patins[1]);
			optpat = '';
			for(var i=1; i<=patins[1]; i++)
			{
				optpat += '<option value="'+i+'" '+((i==1)? 'SELECTED':'' )+'>'+i+'</option>';
			}
			msgtxt = msgtxt.replace('[OPTPAT]',optpat);
			
			
			var temp = {
					state0: {
						html:msgtxt,
						buttons: bt,
						focus: 1,
						submit:function(v,m,f){ 
							if(!v)
								$Q.prompt.close()
							//else $Q.prompt.goToState('state1');//go forward
							else AddPanART( f.ref+"_"+f.patins, f.origin, f.qt);//go forward
							return false; 
						}
					},
					state1: {
						html:CodTxts[lang]['Check_dispovente_state1'],
						buttons: bt2,
						focus: 2,
						submit:function(v,m,f){
							if(v==0)
								$Q.prompt.close()
							else if(v==1)
								document.location.href= CodTxts[lang]['urlcommander'];
								//$.prompt.goToState('state2');//go forward
							return false; 
						}
					}
				};
			
		}
		else {
			var temp = {
					state0: {
						html:CodTxts[lang]['Check_dispovente_state0'].replace('[ID]',id),
						buttons: bt,
						focus: 1,
						submit:function(v,m,f){ 
							if(!v)
								$Q.prompt.close()
							//else $Q.prompt.goToState('state1');//go forward
							else AddPanART( f.ref, f.origin, f.qt);//go forward
							return false; 
						}
					},
					state1: {
						html:CodTxts[lang]['Check_dispovente_state1'],
						buttons: bt2,
						focus: 2,
						submit:function(v,m,f){
							if(v==0)
								$Q.prompt.close()
							else if(v==1)
								document.location.href= CodTxts[lang]['urlcommander'];
								//$.prompt.goToState('state2');//go forward
							return false; 
						}
					}
				};
			
		}
		

				
				$Q.prompt(temp, { prefix:'jqismooth' });
		}
		
		
		
		
	}
		
		
	
	
	function GetSTocks(ref)
	{
		//alert('test');
		$Q.ajax({type: "GET", url: site+"tl_files/chambrelan/_soa/soa_produit.php?act=soa&todo=GetStock&ref="+ref, dataType: "json", success: function(json){ 
				//alert(json);
		
		/*
				for(i=0;i<json.length;i++)
				{
					//alert(json[i]);	
					
					$Q("#"+json[i]['ref']+"_stock").html(json[i]['stock']);
					$Q("#"+json[i]['ref']+"_prix").html(json[i]['prix']);
					$Q("."+json[i]['ref']+"_addopt").show();

				}
				
				*/
				//alert(json);
				/*
				if(!$Q.isJson(json)) {
					alert('NO JSON');	
				}
				*/
				json = eval(json);
				
				for (var i in json)
                {    
					$Q("#"+i+"_stock").html(json[i]['stock']);
					if(json[i]['prix']=='----') { $Q("#"+i+"_stock").addClass("noprx");	 }
					//$Q("#"+i+"_prix").html(json[i]['prix']);
					$Q("."+i+"_addopt").show();
					//alert(json[i].toSource());
				}
		/*		if(json['ok']=='1')
				{
					if(json['msg']=='')
					{
						$Q("#"+id+"_nb").html((parseInt($Q("#"+id+"_nb").html())-1));						
					}
					else
					{
						$Q("#pan_tbody").html(json['msg']);					
					}
					$Q("#NBARTS").html(json['tot']);
					
					
					if(json['tot']<1) { $Q(".optgestpan").hide(); }
				}		*/	
			},
                error:function (xhr, ajaxOptions, thrownError){
                   // alert(xhr.status);
				   
                    alert(CodTxts[lang]['GetSTocks_err']);
					
					$Q.ajax({type: "GET", url: site+"tl_files/chambrelan/_soa/soa_produit.php?act=soa&todo=SoapErrors&MSG="+urlencode(xhr.responseText+'<hr><ul><li>Page : '+document.location.href+'</li></ul>')});
					//$Q.ajax({type: "GET", url: site+"tl_files/chambrelan/_soa/soa_produit.php?act=soa&todo=SoapErrors"});
                }   
		});
	
	}	
	
	
	
	function GetSTocksPatins(ref)
	{
		//alert('test');
		$Q.ajax({type: "GET", url: site+"tl_files/chambrelan/_soa/soa_produit.php?act=soa&todo=GetStock&ref="+ref, dataType: "json", success: function(json){ 
				//alert(json);
		
		/*
				for(i=0;i<json.length;i++)
				{
					//alert(json[i]);	
					
					$Q("#"+json[i]['ref']+"_stock").html(json[i]['stock']);
					$Q("#"+json[i]['ref']+"_prix").html(json[i]['prix']);
					$Q("."+json[i]['ref']+"_addopt").show();

				}
				
				*/
				//alert(json);
				/*
				if(!$Q.isJson(json)) {
					alert('NO JSON');	
				}
				*/
				json = eval(json);
				$Q(".railsto").html('OK');
				
				/*
				for (var i in json)
                {    
					$Q("#"+i+"_stock").html(json[i]['stock']);
					if(json[i]['prix']=='----') { $Q("#"+i+"_stock").addClass("noprx");	 }
					//$Q("#"+i+"_prix").html(json[i]['prix']);
					$Q("."+i+"_addopt").show();
					//alert(json[i].toSource());
				}
				*/
				
		/*		if(json['ok']=='1')
				{
					if(json['msg']=='')
					{
						$Q("#"+id+"_nb").html((parseInt($Q("#"+id+"_nb").html())-1));						
					}
					else
					{
						$Q("#pan_tbody").html(json['msg']);					
					}
					$Q("#NBARTS").html(json['tot']);
					
					
					if(json['tot']<1) { $Q(".optgestpan").hide(); }
				}		*/	
			},
                error:function (xhr, ajaxOptions, thrownError){
                   // alert(xhr.status);
				   
                    alert(CodTxts[lang]['GetSTocks_err']);
					
					$Q.ajax({type: "GET", url: site+"tl_files/chambrelan/_soa/soa_produit.php?act=soa&todo=SoapErrors&MSG="+urlencode(xhr.responseText+'<hr><ul><li>Page : '+document.location.href+'</li></ul>')});
					//$Q.ajax({type: "GET", url: site+"tl_files/chambrelan/_soa/soa_produit.php?act=soa&todo=SoapErrors"});
                }   
		});
	
	}	
	
	
	function urlencode (str) {
    str = (str+'').toString();
    
    // Tilde should be allowed unescaped in future versions of PHP (as reflected below), but if you want to reflect current
    // PHP behavior, you would need to add ".replace(/~/g, '%7E');" to the following.
    return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+');
}
	
	
	
	
	
	/* Panier complet  */
	
	
	function RemPanART(id)
	{
			//alert(lang);
		
		
		if (confirm(CodTxts[lang]['RemPanART'])) { 
			   $Q.ajax({type: "GET", url: site+"tl_files/chambrelan/_soa/soa_pan.php?act=soa&todo=rempan&art="+id, dataType: "json", success: function(json){ 
		
				if(json['ok']=='1')
				{
									
					if(json['tot']<1)
					{
						/*$Q("#nbprod").html('0');		
						$Q("#recalc").hide();		
						$Q("#armageddon").hide();	
						$Q(".cart_table").hide();	
						$Q("#msgvide").show();		*/		
						HideUseless();
						
						$Q("#dmainContent").hide();	
						$Q("#commstate").hide();	
						$Q(".optcalcpan").hide();//	
						
					}
					else
					{
						//alert(json);
						//var $kids = $(e.target).children();

						$Q("#nbprod").html(json['tot']);
						$Q("#"+id+"_pant").remove();	
						$Q("."+id+"_mored").remove();	
						RecalcPan();
					}
					
					
				}			
			}
		});
		}
		
	}
	
	function RecalcPan()
	{
		 var cha = '';
		 var pat = '';
		 var patins = '';
		 var azzero = 0;
		 $Q('.vals').each( function() { 
			  //this.attr('id', false);
			  pat = $Q(this).attr('id').replace("_nb", '')+'_patins';
			  patins = (parseInt($Q("#"+pat+"").html())>0)? '_'+parseInt($Q("#"+pat+"").html()): '';
			//  alert($Q("#"+pat+"").attr('id')+' => '+parseInt($Q("#"+pat+"").html()));
			//  alert(patins);
			  cha = cha + '&' + $Q(this).attr('id').replace("_nb", '') + patins + '=' + $Q(this).val();
			  if(($Q(this).val()==0)||$Q(this).val()=='') { azzero = azzero+1; }
			  
			});
		
		if((azzero==0)||(confirm(CodTxts[lang]['RecalcPan']))) { 
		 $Q.ajax({type: "GET", url: site+"tl_files/chambrelan/_soa/soa_pan.php?act=soa&todo=updpan"+cha, dataType: "json", success: function(json){ 
		
				if(json['ok']=='1')
				{
					
							
					if(json['tot']<1)
					{
						//alert('tabularasa');
						/*
						$Q("#nbprod").html('0');		
						$Q("#recalc").hide();		
						$Q("#much").hide();		
						$Q("#few").hide();		
						$Q("#armageddon").hide();	
						$Q(".cart_table").hide();	
						$Q(".nfopanprodz").hide();
						$Q("#msgvide").show();		
						
						$Q("#msgfew").hide(); $Q("#msgmuch").hide(); $Q("#buylnk").hide(); $Q("#msgsto").hide(); $Q("#devlnk").show(); */
						HideUseless();
						$Q("#dmainContent").hide(); $Q("#devlnk").show(); 
						
						$Q("#commstate").hide();	
						$Q(".optcalcpan").hide();//	
					}
					else if((json['tot']>0)&&($Q("#facturetable .nfosoc").length==0))
					{
						//alert(azzero+' / '+$Q("#facturetable .nfosoc").length);
						//alert($Q("#facturetable .nfosoc").length);
						
						HideUseless();
						$Q("#dmainContent").hide(); 
						$Q("#devlnk").show(); 
						$Q("#msgsto").show(); 
						$Q("#commstate").hide();	
						$Q("#msgvide, #contenu-de-la-page-de-la-commande p").hide();
						
					$Q(".optcalcpan").hide();//	
					}
					else
					{
						$Q("#nbprod").html(json['tot']);
						var sstot = 0;
						var sstotglob = 0;
						var got_max_stock = 0;
						$Q('.vals').each( function() { 
						  //this.attr('id', false);
						  elem = $Q(this).attr('id').replace("_nb", '');
						  cha = cha + '&' + elem + '=' + $Q(this).val();
						  
						  
						  if(($Q(this).val()==0)||$Q(this).val()=='') { $Q("#"+elem+"_pant").remove(); $Q("."+elem+"_mored").remove(); sstot = 0; }
						  else
						  {
							 if($Q(this).val() > intval($Q(this).attr('class').replace('vals max_',''))) { got_max_stock = 1; }
							 
								// sstot = ($Q(this).val()*(parseFloat($Q("#"+elem+"_pu").html())));
						 sstot = ($Q(this).val()*(parseFloat($Q("#"+elem+"_pu").html().replace(",", '.'))));
							 
							
							 
							  $Q("#"+elem+"_pt").html(number_format(sstot, 2, ',', ' '));
							  
						  }
						  
						  sstotglob = (sstotglob+sstot);
						  
						  
						});
						
						var tva = ((sstotglob*19.6)/100);
						
						$Q("#sstotnfo").html(number_format(sstotglob, 2, ',', ' '));
						$Q("#tvanfo").html(number_format(tva, 2, ',', ' '));
						
						var tot = sstotglob+tva;
						$Q("#totnfo").html("****"+number_format(tot, 2, ',', ' '));
						
						
						if((tot<50)||(tot>1000))
						{
							//$Q("#buylnk").hide();
							if((tot<50)) { $Q("#msgsto").hide(); $Q("#buylnk").show(); $Q("#devlnk").hide(); $Q("#msgmuch").hide(); $Q("#msgfew").hide(); }
							else if(tot>1000) {  $Q("#msgsto").hide(); $Q("#buylnk").hide(); $Q("#devlnk").show(); $Q("#msgfew").hide(); $Q("#msgmuch").show(); }
							
						}
						else
						{
							if(got_max_stock == 1)
							{
								$Q("#msgfew").hide(); $Q("#msgmuch").hide(); $Q("#buylnk").hide(); $Q("#msgsto").show(); $Q("#devlnk").show(); 
							}
							else
							{
								 $Q("#msgsto").hide(); $Q("#msgfew").hide(); $Q("#msgmuch").hide();$Q("#devlnk").hide();  $Q("#buylnk").show(); 
							}
						}
					}
					
					
				}			
			}
		});
		}
	}
	
	
	
	function DelPanAllART()
	{

		if (confirm(CodTxts[lang]['DelPanAllART'])) { 
			  $Q.ajax({type: "GET", url: site+"tl_files/chambrelan/_soa/soa_pan.php?act=soa&todo=delallpan", dataType: "json", success: function(json){ 
		
				if(json['ok']=='1')
				{
					//alert(window.opener.document.location);
					/*
					$Q("#nbprod").html('0');//		
					$Q("#recalc").hide();		
					$Q("#armageddon").hide();	
					$Q(".cart_table").hide();//
					$Q(".nfopanprodz").hide();//
					
					$Q("#msgvide").show();//
					
					$Q("#msgfew").hide(); $Q("#msgmuch").hide(); $Q("#buylnk").hide(); $Q("#msgsto").hide(); $Q("#devlnk").show(); */
					
					HideUseless();
					$Q("#dmainContent").hide();		
						$Q("#commstate").hide();
					$Q(".optcalcpan").hide();//	
						
					
					
				}			
			}
		});
		}
		
		
	}
	
	function HideUseless()
	{
						$Q("#nbprod").html('0');		
						$Q("#recalc").hide();		
						$Q("#much").hide();		
						$Q("#few").hide();		
						$Q("#armageddon").hide();	
						$Q(".cart_table").hide();	
						$Q(".nfopanprodz").hide();
						$Q("#msgvide").show();		
						
						$Q("#msgfew").hide(); $Q("#msgmuch").hide(); $Q("#buylnk").hide(); $Q("#msgsto").hide(); $Q("#devlnk").show(); 
	}
	
	function number_format (number, decimals, dec_point, thousands_sep) {
    // Formats a number with grouped thousands
    //
    // version: 906.1806
    // discuss at: http://phpjs.org/functions/number_format
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // +    revised by: Luke Smith (http://lucassmith.name)
    // +     bugfix by: Diogo Resende
    // +     bugfix by: Rival
    // +     input by: Kheang Hok Chin (http://www.distantia.ca/)
    // +     improved by: davook
    // +     improved by: Brett Zamir (http://brett-zamir.me)
    // +     input by: Jay Klehr
    // +     improved by: Brett Zamir (http://brett-zamir.me)
    // +     input by: Amir Habibi (http://www.residence-mixte.com/)
    // +     bugfix by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: number_format(1234.56);
    // *     returns 1: '1,235'
    // *     example 2: number_format(1234.56, 2, ',', ' ');
    // *     returns 2: '1 234,56'
    // *     example 3: number_format(1234.5678, 2, '.', '');
    // *     returns 3: '1234.57'
    // *     example 4: number_format(67, 2, ',', '.');
    // *     returns 4: '67,00'
    // *     example 5: number_format(1000);
    // *     returns 5: '1,000'
    // *     example 6: number_format(67.311, 2);
    // *     returns 6: '67.31'
    // *     example 7: number_format(1000.55, 1);
    // *     returns 7: '1,000.6'
    // *     example 8: number_format(67000, 5, ',', '.');
    // *     returns 8: '67.000,00000'
    // *     example 9: number_format(0.9, 0);
    // *     returns 9: '1'
    // *     example 10: number_format('1.20', 2);
    // *     returns 10: '1.20'
    // *     example 11: number_format('1.20', 4);
    // *     returns 11: '1.2000'
    // *     example 12: number_format('1.2000', 3);
    // *     returns 12: '1.200'
    var n = number, prec = decimals;
 
    var toFixedFix = function (n,prec) {
        var k = Math.pow(10,prec);
        return (Math.round(n*k)/k).toString();
    };
 
    n = !isFinite(+n) ? 0 : +n;
    prec = !isFinite(+prec) ? 0 : Math.abs(prec);
    var sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep;
    var dec = (typeof dec_point === 'undefined') ? '.' : dec_point;
 
    var s = (prec > 0) ? toFixedFix(n, prec) : toFixedFix(Math.round(n), prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;
 
    var abs = toFixedFix(Math.abs(n), prec);
    var _, i;
 
    if (abs >= 1000) {
        _ = abs.split(/\D/);
        i = _[0].length % 3 || 3;
 
        _[0] = s.slice(0,i + (n < 0)) +
              _[0].slice(i).replace(/(\d{3})/g, sep+'$1');
        s = _.join(dec);
    } else {
        s = s.replace('.', dec);
    }
 
    var decPos = s.indexOf(dec);
    if (prec >= 1 && decPos !== -1 && (s.length-decPos-1) < prec) {
        s += new Array(prec-(s.length-decPos-1)).join(0)+'0';
    }
    else if (prec >= 1 && decPos === -1) {
        s += dec+new Array(prec).join(0)+'0';
    }
    return s;
}

function intval (mixed_var, base) {
    // Get the integer value of a variable using the optional base for the conversion  
    // 
    // version: 910.813
    // discuss at: http://phpjs.org/functions/intval
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: stensi
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   input by: Matteo
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: intval('Kevin van Zonneveld');
    // *     returns 1: 0
    // *     example 2: intval(4.2);
    // *     returns 2: 4
    // *     example 3: intval(42, 8);
    // *     returns 3: 42
    // *     example 4: intval('09');
    // *     returns 4: 9
    // *     example 5: intval('1e', 16);
    // *     returns 5: 30
    var tmp;

    var type = typeof( mixed_var );

    if (type === 'boolean') {
        return (mixed_var) ? 1 : 0;
    } else if (type === 'string') {
        tmp = parseInt(mixed_var, base || 10);
        return (isNaN(tmp) || !isFinite(tmp)) ? 0 : tmp;
    } else if (type === 'number' && isFinite(mixed_var) ) {
        return Math.floor(mixed_var);
    } else {
        return 0;
    }
}

function strpos (haystack, needle, offset) {
    // Finds position of first occurrence of a string within another  
    // 
    // version: 1103.1210
    // discuss at: http://phpjs.org/functions/strpos    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Onno Marsman    
    // +   bugfixed by: Daniel Esteban
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: strpos('Kevin van Zonneveld', 'e', 5);    // *     returns 1: 14
    var i = (haystack + '').indexOf(needle, (offset || 0));
    return i === -1 ? false : i;
}
