function Carnet(dbRequest){
	
    this.request=dbRequest;
    
	this.ecrire=function(produit,qte){
		this.request.onupgradeneeded = function (event) {
			var baseAMettreAjour = event.target.result;
			var ancienneVersion = event.oldVersion;
			var nouvelleVersion = event.newVersion;
			switch (ancienneVersion) {
				case 0:
					baseAMettreAjour.createObjectStore('carnet', { keyPath:'id',autoIncrement: true });
					break;
				case 1:
					break;	
			};
		}

		this.request.onsuccess = function () {
			var baseActive = this.result;
            // Nous démarrons une transaction avec la base sur la table utilisateurs en lecture-écriture
			var transaction = baseActive.transaction('carnet','readwrite');
			// Puis nous insérons notre valeur avec add() sur l'ObjectStore, en ajoutant en second argument la clé de notre valeur
			var ajout = transaction.objectStore('carnet').add({nom: produit.nom,categorie: produit.categorie,unite:produit.unite,fab:produit.fab,prix:produit.prix,qte:qte,effectue:"non",history:-1});
			// Et enfin, comme l'ajout est asynchrone, nous attendons son retour
			ajout.onsuccess = function() {
			// Notre valeur a bien été insérée
			// Elle aura en plus une propriété id automatiquement ajoutée
				//document.location.href="";
                var d_manager=new Database();
                d_manager.configure();
                var carnet = new Carnet(d_manager.open("smarkhelp2",2));
                carnet.afficher($("#aacheter"),$("#total"),$("#depense"),$("#reste"));
                Materialize.toast("Entana voatahiry anaty lisitra",4000);
                console.log("ajout in carnet");
			};
		};

		this.request.onerror= function(e){
			alert("erreur. . . ");
		};
	};
    
    this.effectue=function(id,etat){
		this.request.onupgradeneeded = function (event) {
			var baseAMettreAjour = event.target.result;
			var ancienneVersion = event.oldVersion;
			var nouvelleVersion = event.newVersion;
			switch (ancienneVersion) {
				case 0:
					baseAMettreAjour.createObjectStore('carnet', { keyPath:
					'id', autoIncrement: true });
					break;
				case 1:
					break;	
			};
		}

		this.request.onsuccess = function (event) {
			var baseActive = event.target.result;
			// Nous démarrons une transaction avec la base sur la table utilisateurs en lecture-écriture
			var trans = baseActive.transaction(['carnet'],'readwrite').objectStore('carnet');
            var quest = trans.get(parseInt(id));
            quest.onerror = function(event) {
              
            };
            quest.onsuccess = function(event) {
              var data = event.target.result;
                console.table(data);
                
              data.effectue = etat;

              // Put this updated object back into the database.
              var requestUpdate = trans.put(data);
               requestUpdate.onerror = function(event) {
                 
               };
               requestUpdate.onsuccess = function(event) {
                 console.log("donnee maj");
                    var db_manager=new Database();
                    db_manager.configure();
                    var carnet = new Carnet(db_manager.open("smarkhelp2",2));    
					$("#aacheter").hide('linear');                   
					carnet.afficher($("#aacheter"),$("#total"),$("#depense"),$("#reste"));
               		$("#aacheter").show('linear'); 
               };
            };
		};

		this.request.onerror= function(e){
			alert("erreur. . . ");
		};
	};
    
   this.saveHistory=function(id,prods){
		this.request.onupgradeneeded = function (event) {
			var baseAMettreAjour = event.target.result;
			var ancienneVersion = event.oldVersion;
			var nouvelleVersion = event.newVersion;
			switch (ancienneVersion) {
				case 0:
					baseAMettreAjour.createObjectStore('carnet', { keyPath:
					'id', autoIncrement: true });
					break;
				case 1:
					break;	
			};
		}

		this.request.onsuccess = function (event) {
			var baseActive = event.target.result;
			// Nous démarrons une transaction avec la base sur la table utilisateurs en lecture-écriture
			var trans = baseActive.transaction(['carnet'],'readwrite').objectStore('carnet');
            for(var i=0;i<prods.length;i++){   
                var quest = trans.get(parseInt(prods[i].getAttribute("value")));
                console.log("prods : "+prods[i].getAttribute("value"));

                quest.onerror = function(event) {

                };
                quest.onsuccess = function(event) {
                  var data = event.target.result;
                  console.table(data);

                  data.history = id;

                  // Put this updated object back into the database.
                  var requestUpdate = trans.put(data);
                   requestUpdate.onerror = function(event) {

                   };
                   requestUpdate.onsuccess = function(event) {
                     console.log("historisation..."); 
                   };
                };
            }
        };

		this.request.onerror= function(e){
			alert("erreur. . . ");
		};
	};
    
   this.afficher=function(element,ctotal,cdepense,creste){
		this.request.onupgradeneeded = function (event) {
			var baseAMettreAjour = event.target.result;
			var ancienneVersion = event.oldVersion;
			var nouvelleVersion = event.newVersion;
			switch (ancienneVersion) {
				case 0:
					baseAMettreAjour.createObjectStore('carnet', { keyPath:
					'id', autoIncrement: true });
					break;
				case 1:
					break;	
			};
		}

		this.request.onsuccess = function (event) {
			element.html("");
            var prix="0Ar";
            var tabtotal=new Array();
            var tabdepense=new Array();
            var somme=0;
            var depense=0;
            var reste=somme-depense;
			var baseActive = event.target.result;
			// Nous démarrons une transaction avec la base sur la table utilisateurs en lecture-écriture
			var transactionLecture = baseActive.transaction('carnet','readonly');
	
			var recuperationPointeur =transactionLecture.objectStore('carnet').openCursor();

			recuperationPointeur.onsuccess = function (event) {
				// Nous récupérons le pointeur qui sait naviguer dans la table
				var pointeur = event.target.result;
                //alert(pointeur.size);
                if(pointeur && pointeur.value){
                    var unite='';
                    var chk='';
                    if(pointeur.value.history==-1){                    
                    	tabtotal.push(parseInt(pointeur.value.prix*parseFloat(pointeur.value.qte)));
                        if(pointeur.value.effectue=="oui"){   tabdepense.push(parseInt(pointeur.value.prix)*parseFloat(pointeur.value.qte));
                        chk+='checked';
                        }

                        element.append('<a class="list-group-item allow-badge widget" data-uib="twitter%20bootstrap/list_item" data-ver="1"><span class="badge">'+pointeur.value.prix+' Ar'+unite+'</span><h4 class="list-group-item-heading l-produit id-on-carnet" value="'+pointeur.value.id+'">'+pointeur.value.nom+'</h4><p class="list-group-item-text">Qté : '+pointeur.value.qte+' '+pointeur.value.unite+'</p><div class="check-style"><input type="checkbox" class="pchk" value="'+pointeur.value.id+'" '+chk+'></div></a>');
                    }
                    pointeur.continue();   
                }
                else{
                	if(element.html()=="") element.html("<div class=\"cyan lighten-5 center-align\" style=\"width:100%;padding: 5px;\">Tsy misy entana tokony ho vidiana</div>");
                    for(var i=0;i<tabtotal.length;i++){
                        somme+=tabtotal[i];
                    }
                    for(var i=0;i<tabdepense.length;i++){
                        depense+=tabdepense[i];
                    }
                    reste=somme-depense;
                    ctotal.html(somme+"Ar");
                    cdepense.html(depense+"Ar");
                    creste.html(reste+"Ar");
                    var per=(depense*100)/somme;
                    $(".progress-bar").css("width",per+"%");
                	if(element.html()=="") element.html("<div class=\"cyan lighten-5 center-align\" style=\"width:100%;padding: 5px;\">Tsy misy entana tokony ho vidiana</div>");
                }
			}
		};

		this.request.onerror= function(e){
			alert("erreur. . . ");
		};
	};

    this.recup=function(element,course){
		this.request.onupgradeneeded = function (event) {
			var baseAMettreAjour = event.target.result;
			var ancienneVersion = event.oldVersion;
			var nouvelleVersion = event.newVersion;
			switch (ancienneVersion) {
				case 0:
					baseAMettreAjour.createObjectStore('carnet', { keyPath:
					'id', autoIncrement: true });
					break;
				case 1:
					break;	
			};
		}

		this.request.onsuccess = function (event) {
            element.html("");
            var prix="0Ar";
            var tabtotal=new Array();
            var tabdepense=new Array();
            var somme=0;
            var depense=0;
            var reste=somme-depense;
			var baseActive = event.target.result;
			// Nous démarrons une transaction avec la base sur la table utilisateurs en lecture-écriture
            console.log(baseActive);
			var transactionLecture = baseActive.transaction('carnet','readonly');
	
			var recuperationPointeur =transactionLecture.objectStore('carnet').openCursor();

			recuperationPointeur.onsuccess = function (event) {
				// Nous récupérons le pointeur qui sait naviguer dans la table
				var pointeur = event.target.result;
                //alert(pointeur.size);
                if(pointeur && pointeur.value){
                    var unite='';
                    var chk='';
                    if(pointeur.value.history==parseInt(course)){                    tabtotal.push(parseInt(pointeur.value.prix*parseInt(pointeur.value.qte)));
                        if(pointeur.value.effectue=="oui"){   tabdepense.push(parseInt(pointeur.value.prix)*parseInt(pointeur.value.qte));
                        chk+='checked';
                        }

                        element.append('<a class="list-group-item allow-badge widget" data-uib="twitter%20bootstrap/list_item" data-ver="1"><span class="badge">'+pointeur.value.prix+' Ar'+unite+'</span><h4 class="list-group-item-heading l-produit id-on-carnet" value="'+pointeur.value.id+'">'+pointeur.value.nom+'</h4><p class="list-group-item-text">Qté : '+pointeur.value.qte+'</p><div class="check-style"><input type="checkbox" class="pchk" value="'+pointeur.value.id+'" '+chk+' disabled></div></a>');
                    }
                    pointeur.continue();   
                }
                else{
                    for(var i=0;i<tabtotal.length;i++){
                        somme+=tabtotal[i];
                    }
                    for(var i=0;i<tabdepense.length;i++){
                        depense+=tabdepense[i];
                    }
                    reste=somme-depense;
                    $("#tdepense").html("Fitambarany : "+depense+"Ar");
                }
			}

		};

		this.request.onerror= function(e){
			alert("erreur. . . ");
		};
	};
}