function ProduitData(dbRequest){
	this.request=dbRequest;

	this.valeurParDefaut=function(){
        console.log("valeur par defaut ajouter");
		this.request.onupgradeneeded = function (event) {
			var baseAMettreAjour = event.target.result;
			var ancienneVersion = event.oldVersion;
			var nouvelleVersion = event.newVersion;
			switch (ancienneVersion) {
				case 0:
					baseAMettreAjour.createObjectStore('produit', { 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 transaction = baseActive.transaction('produit','readwrite');
			// Puis nous insérons notre valeur avec add() sur l'ObjectStore, en ajoutant en second argument la clé de notre valeur
			//transaction.objectStore('produit').add({nom: nom,categorie: categorie,fab:fab});
            transaction.objectStore('produit').add({nom:'Nice',categorie:'snack',fab:'JB',prix:'500'});
transaction.objectStore('produit').add({nom:'Sablito',categorie:'snack',fab:'JB',prix:'600'});
transaction.objectStore('produit').add({nom:'Salto GM',categorie:'snack',fab:'JB',prix:'600'});
transaction.objectStore('produit').add({nom:'Salto PM',categorie:'snack',fab:'JB',prix:'200'});
transaction.objectStore('produit').add({nom:'Sablito PM',categorie:'snack',fab:'JB',prix:'200'});
transaction.objectStore('produit').add({nom:'Salto sandwich',categorie:'snack',fab:'JB',prix:'200'});
transaction.objectStore('produit').add({nom:'Gouty GM',categorie:'snack',fab:'JB',prix:'600'});
transaction.objectStore('produit').add({nom:'Gouty PM',categorie:'snack',fab:'JB',prix:'200'});
transaction.objectStore('produit').add({nom:'Bisky PM',categorie:'snack',fab:'JB',prix:'200'});
transaction.objectStore('produit').add({nom:'Bolo',categorie:'snack',fab:'JB',prix:'200'});
transaction.objectStore('produit').add({nom:'Bolo pix',categorie:'snack',fab:'JB',prix:'200'});
transaction.objectStore('produit').add({nom:'Kip coco',categorie:'snack',fab:'JB',prix:'600'});
transaction.objectStore('produit').add({nom:'Goldy',categorie:'snack',fab:'Socobis',prix:'700'});
transaction.objectStore('produit').add({nom:'Coca cola 35cl',categorie:'boisson',fab:'Star',prix:'1200'});
            
            baseActive.close();
		};

		this.request.onerror= function(e){
			console.log('error defaultValue');
		};
	};

	this.ajouter=function(nom,categorie,fab,prix){
		this.request.onupgradeneeded = function (event) {
			var baseAMettreAjour = event.target.result;
			var ancienneVersion = event.oldVersion;
			var nouvelleVersion = event.newVersion;
			switch (ancienneVersion) {
				case 0:
					baseAMettreAjour.createObjectStore('produit', { 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('produit',
			'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('produit').add({nom: nom,categorie: categorie,fab:fab,prix:prix});
			// 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
                Materialize.toast('Entana voatahiry', 4000);
                var db_manager=new Database();
                db_manager.configure();
                getProduit(db_manager);
				console.log(nom+" ajoutée");
			};
            baseActive.close();
		};

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

    this.modprix=function(id,prix){
		this.request.onupgradeneeded = function (event) {
			var baseAMettreAjour = event.target.result;
			var ancienneVersion = event.oldVersion;
			var nouvelleVersion = event.newVersion;
			switch (ancienneVersion) {
				case 0:
					baseAMettreAjour.createObjectStore('produit', { 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(['produit'],'readwrite').objectStore('produit');
            var quest = trans.get(parseInt(id));
            quest.onerror = function(event) {
              
            };
            quest.onsuccess = function(event) {
              var data = event.target.result;
                console.table(data);
              //nouveau prix                
              data.prix = prix;

              // 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();
                   getProduit(db_manager);
                };
            };
		};

		this.request.onerror= function(e){
			alert("erreur. . . ");
		};
	};
    
    this.afficher=function(element,type){
		this.request.onupgradeneeded = function (event) {
			var baseAMettreAjour = event.target.result;
			var ancienneVersion = event.oldVersion;
			var nouvelleVersion = event.newVersion;
			switch (ancienneVersion) {
				case 0:
					baseAMettreAjour.createObjectStore('produit', { keyPath:
					'id', autoIncrement: true });
					//produit.createIndex('indexNom', 'nom', {unique: true});
					break;
				case 1:
					break;	
			};
		}

		this.request.onsuccess = function (event) {
            element.html("");
			var baseActive = event.target.result;
			// Nous démarrons une transaction avec la base sur la table utilisateurs en lecture-écriture
			var transactionLecture = baseActive.transaction('produit','readonly');
	
			var recuperationPointeur =transactionLecture.objectStore('produit').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){
                    if(pointeur.value.categorie==type){
                        var unite='';
                        if(type=="carburant") unite="/l";
                        else if(type=="viande") unite="/kg";
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="moy-font list-group-item-heading l-produit" value="'+pointeur.value.id+'">'+pointeur.value.nom+'</h4><p class="sm-font list-group-item-text">'+pointeur.value.fab+'</p><div class="check-style"><input data-toggle="toggle" type="checkbox" class="pchk" value="'+pointeur.value.id+"-"+pointeur.value.nom+"-"+pointeur.value.categorie+"-"+pointeur.value.fab+"-"+pointeur.value.prix+'"></div></a>');
                    }
                    pointeur.continue();
                }
			}
            baseActive.close();
		};

		this.request.onerror= function(e){
			alert("erreur. . . ");
		};
	};
    
    this.rechercher=function(key,element){
        var reg=new RegExp(key, "i");
        element.html('<img src="../img/spinner2-greenie.gif" width="30" style="left: 44%;position: relative;">');
        this.request.onupgradeneeded = function (event) {
			var baseAMettreAjour = event.target.result;
			var ancienneVersion = event.oldVersion;
			var nouvelleVersion = event.newVersion;
			switch (ancienneVersion) {
				case 0:
					baseAMettreAjour.createObjectStore('produit', { keyPath:
					'id', autoIncrement: true });
					break;
				case 1:
					break;	
			};
		}

		this.request.onsuccess = function (event) {
            var aucunResultat=true;
			var baseActive = event.target.result;
			// Nous démarrons une transaction avec la base sur la table utilisateurs en lecture-écriture
			var transactionLecture = baseActive.transaction('produit','readonly');
	
			var recuperationPointeur =transactionLecture.objectStore('produit').openCursor();
            element.html("");
			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='';   
                        if(pointeur.value.categorie=="carburant") unite="/l";
                        else if(pointeur.value.categorie=="viande") unite="/kg";
                        if(reg.exec(pointeur.value.nom) || reg.exec(pointeur.value.prix) || reg.exec(pointeur.value.fab)){
                            aucunResultat=false;
                        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 moy-font" value="'+pointeur.value.id+'">'+pointeur.value.nom+'</h4><p class="sm-font list-group-item-text">'+pointeur.value.categorie+'</p><div class="check-style"><input data-toggle="toggle" type="checkbox" class="pchk" value="'+pointeur.value.id+"-"+pointeur.value.nom+"-"+pointeur.value.categorie+"-"+pointeur.value.fab+"-"+pointeur.value.prix+'"></div></a>');
                        }
                    pointeur.continue();
                }
                else{
                    if(aucunResultat) element.html("<mark>Tsy misy mifandray @ teny tadiavina</mark>");
                }
			}
            baseActive.close();
		};

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