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

	this.valeurParDefaut=function(){
		this.request.onupgradeneeded = function (event) {
			var baseAMettreAjour = event.target.result;
			var ancienneVersion = event.oldVersion;
			var nouvelleVersion = event.newVersion;
			switch (ancienneVersion) {
				case 0:
					baseAMettreAjour.createObjectStore('orange', { 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('orange','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('orange').add({nom:'Be connect 10 Mo',categorie:'internet',code:'#123#+instruction',prix:'100',duree:"1j",detail:""});        
            transaction.objectStore('orange').add({nom:'Be connect 20 Mo',categorie:'internet',code:'#123#+instruction',prix:'600',duree:"1j",detail:""});        
            transaction.objectStore('orange').add({nom:'Be connect 50 Mo',categorie:'internet',code:'#123#+instruction',prix:'1000',duree:"1j",detail:""});        
            transaction.objectStore('orange').add({nom:'Be connect 100 Mo',categorie:'internet',code:'#123#+instruction',prix:'3000',duree:"3j",detail:""});        
            transaction.objectStore('orange').add({nom:'Be connect 250 Mo',categorie:'internet',code:'#123#+instruction',prix:'7200',duree:"5j",detail:""});        
            transaction.objectStore('orange').add({nom:'Be connect 500 Mo',categorie:'internet',code:'#123#+instruction',prix:'13500',duree:"7j",detail:""});        
            transaction.objectStore('orange').add({nom:'Be connect 1 Go',categorie:'internet',code:'#123#+instruction',prix:'34500',duree:"21j",detail:""});        
            transaction.objectStore('orange').add({nom:'Be connect 3 Go',categorie:'internet',code:'#123#+instruction',prix:'77500',duree:"30j",detail:""});        
            transaction.objectStore('orange').add({nom:'Be connect 5 Go',categorie:'internet',code:'#123#+instruction',prix:'97000',duree:"30j",detail:""});        
            transaction.objectStore('orange').add({nom:'Be connect 8 Go',categorie:'internet',code:'#123#+instruction',prix:'148500',duree:"30j",detail:""});        
            transaction.objectStore('orange').add({nom:'Be connect 20 Go',categorie:'internet',code:'#123#+instruction',prix:'220000',duree:"45j",detail:""});        
            transaction.objectStore('orange').add({nom:'Be connect 30 Go',categorie:'internet',code:'#123#+instruction',prix:'245000',duree:"60j",detail:""});        
            transaction.objectStore('orange').add({nom:'Be connect 50 Go',categorie:'internet',code:'#123#+instruction',prix:'275000',duree:"60j",detail:""});         transaction.objectStore('orange').add({nom:'Mandam\'',categorie:'tarif',code:' #123#2#5#1#1#1#',prix:'600',duree:"1j",detail:"3min d'appel HC / 2min d'appel HP / 30sms vers orange / internet 20Mo"});        
 transaction.objectStore('orange').add({nom:'Mandam\'Maxi',categorie:'tarif',code:' #123#2#5#2#1#1#',prix:'1200',duree:"1j",detail:"20min d'appel HC / 30sms vers orange / internet 50Mo"});        
 transaction.objectStore('orange').add({nom:'Be iray',categorie:'appel',code:'  #123#2#2#1#1#1#',prix:'950',duree:"1j",detail:"0,6Ar sec appel HC / 2Ar sec appel HP / 4Ar autre opérateurs"});        
 transaction.objectStore('orange').add({nom:'Be roa',categorie:'appel',code:'  #123#2#2#2#1#1#',prix:'2000',duree:"2j",detail:"1h appel HC+HP / 4Ar autre opérateurs "});        
 transaction.objectStore('orange').add({nom:'Be dimy',categorie:'appel',code:'  #123#2#2#3#1#1#',prix:'450',duree:"1j",detail:"1,5Ar sec appel HC+HP / 5Ar sec appel vers toute opérateur / 4Ar autre opérateurs"});        
 transaction.objectStore('orange').add({nom:'Be sms',categorie:'sms',code:'  #123#2#3#1#1#',prix:'700',duree:"1j",detail:"60 sms vers orange"});        
 transaction.objectStore('orange').add({nom:'Izy',categorie:'tarif',code:'  par défaut',prix:'',duree:"",detail:"8Ar sec appel n°famille / 13Ar sec appel /  80 Ar sms / 60Ar sms vers n°famille / extras : wikipédia gratuit"});        
 transaction.objectStore('orange').add({nom:'Akama',categorie:'tarif',code:'234',prix:'500',duree:"7j",detail:"8Ar sec appel n°famille / 12Ar sec appel vers orange / 15Ar sec appel vers autre opérateurs / 8Ar sec Bonus 60mn d'appels de 21h à 6h valables 7j entre akama /  80 Ar sms / 50Ar sms vers n°famille / extras : Facebook 500Mo + Wikipédia gratuit"});        
            baseActive.close();
            console.log("orange defaut...");
		};

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

	this.ajouter=function(nom,categorie,code,prix,duree,detail){
		this.request.onupgradeneeded = function (event) {
			var baseAMettreAjour = event.target.result;
			var ancienneVersion = event.oldVersion;
			var nouvelleVersion = event.newVersion;
			switch (ancienneVersion) {
				case 0:
					baseAMettreAjour.createObjectStore('orange', { 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('orange',
			'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('orange').add({nom: nom,categorie: categorie,code:code,prix:prix,duree:duree,detail:detail});
			// 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('tarif!', 4000);
			};
            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('orange', { 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(['orange'],'readwrite').objectStore('orange');
            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");
                };
            };
		};

		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('orange', { 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;
            var dur,pr,inf;
			// Nous démarrons une transaction avec la base sur la table utilisateurs en lecture-écriture
            console.log(baseActive);
			var transactionLecture = baseActive.transaction('orange','readonly');
	
			var recuperationPointeur =transactionLecture.objectStore('orange').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 || type=="tout"){
                        if(pointeur.value.duree!="") dur=pointeur.value.duree;
                        else dur="";
                        if(pointeur.value.prix!="") pr=pointeur.value.prix;
                        else pr="";
                        if(pr!="")inf=pr+"Ar";
                        else inf="";
                        if(dur!="") inf+="/"+dur;
                        element.append('<a class="odet list-group-item allow-badge widget" data-uib="twitter%20bootstrap/list_item" data-ver="1"><span class="badge">'+inf+'</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.code+'</p><input type="hidden" class="oval" value="'+pointeur.value.id+"-"+pointeur.value.nom+"-"+pointeur.value.categorie+"-"+pointeur.value.code+"-"+pointeur.value.prix+'-'+inf+'-'+pointeur.value.detail+'"></a>');
                    }
                    pointeur.continue();
                }
                else $("#loader").hide("linear");
			}
            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('orange', { 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
            console.log(baseActive);
			var transactionLecture = baseActive.transaction('orange','readonly');
	
			var recuperationPointeur =transactionLecture.objectStore('orange').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){
                        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</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.code+"-"+pointeur.value.prix+'"></div></a>');
                        }
                    pointeur.continue();
                }
                else{
                    if(aucunResultat) element.html("<mark>Aucun resultat trouvé</mark>");
                }
			}
            baseActive.close();
		};

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