source: geisa/web/initGeisa_script.jsp @ 686

Last change on this file since 686 was 686, checked in by npipsl, 12 years ago

Interface option global et comparison

File size: 128.3 KB
Line 
1<%@ page import="com.ether.Controller" %>
2<%@ page import="com.ether.IsotopeG03" %>
3<%@ page import="com.ether.IsotopeIasiG03" %>
4<%@ page import="com.ether.IsotopeG09" %>
5<%@ page import="com.ether.IsotopeIasiG09" %>
6
7<script type="text/javascript">
8
9
10
11var InterfaceInit = Class.create( {
12
13            initialize: function()
14            {
15
16                /** *********** CONTAINERS *********** **/
17                this.containerFormSpectralRangeLower = $( "#spectralRangeLower" );
18                this.containerFormSpectralRangeUpper = $( "#spectralRangeUpper" );
19                this.containerFormIntensityLower = $( "#intensityLower" );
20                this.containerFormIntensityUpper = $( "#intensityUpper" );
21                this.containerFormMeanValue1 = $( "#meanValue1" );
22                this.containerDownload = $( "#downloadContainer" );
23                this.containerLoading = $( "#loading" );
24                this.containerTabs = $("#tabs");
25
26                /** *********** VARIABLE *********** **/
27                //on va chercher les chemin déclaré dans le controller
28                this.pathProcess = "<%=Controller.PATH_PROCESS%>";
29                this.LongPathImages = "<%=Controller.LONG_PATH_IMAGES%>";
30
31                <%--this.pathImg = <%=Controller.PATH_IMAGES%>;--%>
32
33                this.initializeMolecules();
34                this.createForm();
35
36                var downloadButton = new Button( {value:"Download", parent:$( "#downloadContainer" ), id:"button_submit_2", className: "red_button", classNameText:"red_button_text", onClick:jQuery.proxy( this.onClickDownload, this )} );
37
38                //onglet
39                this.ntabComparison = new Tab( {value:"Databases comparison", parent:this.containerTabs, numTab: 1, id:"tab_Comparison", className: "tab_class", onClick:jQuery.proxy( this.onClickDatabasesComparison, this )} );
40                this.ntabGlobal = new Tab( {value:"Global representation", parent:this.containerTabs, numTab: 1, id:"tab_Global", className: "tab_class", onClick:jQuery.proxy( this.onClickGlobalRepresentation, this )} );
41                this.ntabContents = new Tab( {value:"Database contents", parent:this.containerTabs, numTab: 1, id:"tab_Contents", className: "tab_class", onClick:jQuery.proxy( this.onClickDatabaseContents, this )} );
42                //onglet avec la couleur active par défaut
43                this.ntabContents.active();
44            },
45
46            initializeMolecules: function()
47            {
48                this.arrayGeisa2011 = new Array();
49                this.arrayGeisa2003 = new Array();
50                this.arrayGeisaIasi2011 = new Array();
51                this.arrayGeisaIasi2003 = new Array();
52
53                var molecule = new Object();
54                molecule.id="h2o";
55                molecule.name="H<sub>2</sub>O";
56                molecule.isotopesArray = ["161", "162", "171", "181", "182", "172"];
57                this.arrayGeisa2011.push(molecule);
58                this.arrayGeisa2003.push(molecule);
59                this.arrayGeisaIasi2011.push(molecule);
60                this.arrayGeisaIasi2003.push(molecule);
61
62                var molecule = new Object();
63                molecule.id="co2";
64                molecule.name="CO<sub>2</sub>";
65                molecule.isotopesArray = ["626", "627", "628", "636", "637", "638", "728", "828", "838"];
66                this.arrayGeisa2003.push(molecule);
67                this.arrayGeisa2011.push(molecule);
68                this.arrayGeisaIasi2011.push(molecule);
69                this.arrayGeisaIasi2003.push(molecule);
70
71                var molecule = new Object();
72                molecule.id="o3";
73                molecule.name="O<sub>3</sub>";
74                molecule.isotopesArray = ["666", "668", "686", "667", "676"];
75                this.arrayGeisa2003.push(molecule);
76                this.arrayGeisa2011.push(molecule);
77                this.arrayGeisaIasi2011.push(molecule);
78                this.arrayGeisaIasi2003.push(molecule);
79
80                var molecule = new Object();
81                molecule.id="n2o";
82                molecule.name="N<sub>2</sub>O";
83                molecule.isotopesArray = ["446", "447", "448", "456","458", "546", "548", "556"];
84                this.arrayGeisa2011.push(molecule);
85                this.arrayGeisaIasi2011.push(molecule);
86
87                var molecule = new Object();
88                molecule.id="n2o";
89                molecule.name="N<sub>2</sub>O";
90                molecule.isotopesArray = ["446", "447", "448", "456", "546"];
91                this.arrayGeisa2003.push(molecule);
92                this.arrayGeisaIasi2003.push(molecule);
93
94                var molecule = new Object();
95                molecule.id="co";
96                molecule.name="CO";
97                molecule.isotopesArray = ["26", "36", "28", "27", "38", "37"];
98                this.arrayGeisa2011.push(molecule);
99                this.arrayGeisa2003.push(molecule);
100                this.arrayGeisaIasi2011.push(molecule);
101                this.arrayGeisaIasi2003.push(molecule);
102
103                var molecule = new Object();
104                molecule.id="ch4";
105                molecule.name="CH<sub>4</sub>";
106                molecule.isotopesArray = ["211", "311"];
107                this.arrayGeisa2011.push(molecule);
108                this.arrayGeisa2003.push(molecule);
109
110                var molecule = new Object();
111                molecule.id="ch4";
112                molecule.name="CH<sub>4</sub>";
113                molecule.isotopesArray = ["211", "311", "212", "312"];
114                this.arrayGeisaIasi2011.push(molecule);
115
116                var molecule = new Object();
117                molecule.id="ch4";
118                molecule.name="CH<sub>4</sub>";
119                molecule.isotopesArray = ["211", "311", "212"];
120                this.arrayGeisaIasi2003.push(molecule);
121
122                var molecule = new Object();
123                molecule.id="o2";
124                molecule.name="O<sub>2</sub>";
125                molecule.isotopesArray = ["66", "67", "68"];
126                this.arrayGeisa2011.push(molecule);
127                this.arrayGeisa2003.push(molecule);
128
129                var molecule = new Object();
130                molecule.id="o2";
131                molecule.name="O<sub>2</sub>";
132                molecule.isotopesArray = ["66"];
133                this.arrayGeisaIasi2011.push(molecule);
134                this.arrayGeisaIasi2003.push(molecule);
135
136                var molecule = new Object();
137                molecule.id="no";
138                molecule.name="NO";
139                molecule.isotopesArray = ["46", "48", "56"];
140                this.arrayGeisa2011.push(molecule);
141                this.arrayGeisa2003.push(molecule);
142                this.arrayGeisaIasi2011.push(molecule);
143                this.arrayGeisaIasi2003.push(molecule);
144
145                var molecule = new Object();
146                molecule.id="so2";
147                molecule.name="SO<sub>2</sub>";
148                molecule.isotopesArray = ["626", "646"];
149                this.arrayGeisa2011.push(molecule);
150                this.arrayGeisa2003.push(molecule);
151                this.arrayGeisaIasi2011.push(molecule);
152                this.arrayGeisaIasi2003.push(molecule);
153
154                var molecule = new Object();
155                molecule.id="no2";
156                molecule.name="NO<sub>2</sub>";
157                molecule.isotopesArray = ["646"];
158                this.arrayGeisa2011.push(molecule);
159                this.arrayGeisa2003.push(molecule);
160                this.arrayGeisaIasi2011.push(molecule);
161                this.arrayGeisaIasi2003.push(molecule);
162
163                var molecule = new Object();
164                molecule.id="nh3";
165                molecule.name="NH<sub>3</sub>";
166                molecule.isotopesArray = ["411", "511" ];
167                this.arrayGeisa2011.push(molecule);
168                this.arrayGeisa2003.push(molecule);
169                this.arrayGeisaIasi2011.push(molecule);
170
171                var molecule = new Object();
172                molecule.id="ph3";
173                molecule.name="PH<sub>3</sub>";
174                molecule.isotopesArray = ["131" ];
175                this.arrayGeisa2011.push(molecule);
176                this.arrayGeisa2003.push(molecule);
177
178                var molecule = new Object();
179                molecule.id="hno3";
180                molecule.name="HNO<sub>3</sub>";
181                molecule.isotopesArray = ["146" ];
182                this.arrayGeisa2011.push(molecule);
183                this.arrayGeisa2003.push(molecule);
184                this.arrayGeisaIasi2011.push(molecule);
185                this.arrayGeisaIasi2003.push(molecule);
186
187                var molecule = new Object();
188                molecule.id="oh";
189                molecule.name="OH";
190                molecule.isotopesArray = ["61", "62", "81" ];
191                this.arrayGeisa2011.push(molecule);
192                this.arrayGeisa2003.push(molecule);
193
194                var molecule = new Object();
195                molecule.id="hf";
196                molecule.name="HF";
197                molecule.isotopesArray = ["19" ];
198                this.arrayGeisa2011.push(molecule);
199                this.arrayGeisa2003.push(molecule);
200
201                var molecule = new Object();
202                molecule.id="hcl";
203                molecule.name="HCL";
204                molecule.isotopesArray = ["15", "17" ];
205                this.arrayGeisa2011.push(molecule);
206                this.arrayGeisa2003.push(molecule);
207
208                var molecule = new Object();
209                molecule.id="hbr";
210                molecule.name="HBR";
211                molecule.isotopesArray = ["11", "19" ];
212                this.arrayGeisa2011.push(molecule);
213                this.arrayGeisa2003.push(molecule);
214
215                var molecule = new Object();
216                molecule.id="hi";
217                molecule.name="HI";
218                molecule.isotopesArray = ["17" ];
219                this.arrayGeisa2011.push(molecule);
220                this.arrayGeisa2003.push(molecule);
221
222                var molecule = new Object();
223                molecule.id="clo";
224                molecule.name="ClO";
225                molecule.isotopesArray = ["56", "76" ];
226                this.arrayGeisa2011.push(molecule);
227                this.arrayGeisa2003.push(molecule);
228
229                var molecule = new Object();
230                molecule.id="ocs";
231                molecule.name="OCS";
232                molecule.isotopesArray = ["622", "624", "632", "623", "822", "634"];
233                this.arrayGeisa2011.push(molecule);
234                this.arrayGeisa2003.push(molecule);
235                this.arrayGeisaIasi2011.push(molecule);
236                this.arrayGeisaIasi2003.push(molecule);
237
238                var molecule = new Object();
239                molecule.id="h2co";
240                molecule.name="H<sub>2</sub>CO";
241                molecule.isotopesArray = ["126", "128", "136"];
242                this.arrayGeisa2011.push(molecule);
243                this.arrayGeisa2003.push(molecule);
244
245                var molecule = new Object();
246                molecule.id="h2co";
247                molecule.name="H<sub>2</sub>CO";
248                molecule.isotopesArray = ["126"];
249                this.arrayGeisaIasi2011.push(molecule);
250
251                var molecule = new Object();
252                molecule.id="c2h6";
253                molecule.name="C<sub>2</sub>H<sub>6</sub>";
254                molecule.isotopesArray = ["226", "236"];
255                this.arrayGeisa2011.push(molecule);
256                this.arrayGeisa2003.push(molecule);
257
258                var molecule = new Object();
259                molecule.id="ch3d";
260                molecule.name="CH<sub>3</sub>D";
261                molecule.isotopesArray = ["212", "312"];
262                this.arrayGeisa2011.push(molecule);
263
264                var molecule = new Object();
265                molecule.id="ch3d";
266                molecule.name="CH<sub>3</sub>D";
267                molecule.isotopesArray = ["212"];
268                this.arrayGeisa2003.push(molecule);
269
270                var molecule = new Object();
271                molecule.id="c2h2";
272                molecule.name="C<sub>2</sub>H<sub>2</sub>";
273                molecule.isotopesArray = ["221", "231"];
274                this.arrayGeisa2011.push(molecule);
275                this.arrayGeisa2003.push(molecule);
276                this.arrayGeisaIasi2011.push(molecule);
277                this.arrayGeisaIasi2003.push(molecule);
278
279                var molecule = new Object();
280                molecule.id="c2h4";
281                molecule.name="C<sub>2</sub>H<sub>4</sub>";
282                molecule.isotopesArray = ["211", "311"];
283                this.arrayGeisa2011.push(molecule);
284                this.arrayGeisa2003.push(molecule);
285                this.arrayGeisaIasi2011.push(molecule);
286
287                var molecule = new Object();
288                molecule.id="geh4";
289                molecule.name="GeH<sub>4</sub>";
290                molecule.isotopesArray = ["411"];
291                this.arrayGeisa2011.push(molecule);
292                this.arrayGeisa2003.push(molecule);
293
294                var molecule = new Object();
295                molecule.id="hcn";
296                molecule.name="HCN";
297                molecule.isotopesArray = ["124", "125", "134", "224"];
298                this.arrayGeisa2011.push(molecule);
299                this.arrayGeisaIasi2011.push(molecule);
300
301                var molecule = new Object();
302                molecule.id="hcn";
303                molecule.name="HCN";
304                molecule.isotopesArray = ["124", "125", "134"];
305                this.arrayGeisa2003.push(molecule);
306
307                var molecule = new Object();
308                molecule.id="c3h8";
309                molecule.name="C<sub>3</sub>H<sub>8</sub>";
310                molecule.isotopesArray = ["221"];
311                this.arrayGeisa2011.push(molecule);
312                this.arrayGeisa2003.push(molecule);
313
314                var molecule = new Object();
315                molecule.id="c2n2";
316                molecule.name="C<sub>2</sub>N<sub>2</sub>";
317                molecule.isotopesArray = ["224"];
318                this.arrayGeisa2011.push(molecule);
319                this.arrayGeisa2003.push(molecule);
320
321                var molecule = new Object();
322                molecule.id="c4h2";
323                molecule.name="C<sub>4</sub>H<sub>2</sub>";
324                molecule.isotopesArray = ["211"];
325                this.arrayGeisa2011.push(molecule);
326                this.arrayGeisa2003.push(molecule);
327
328                var molecule = new Object();
329                molecule.id="hc3n";
330                molecule.name="HC<sub>3</sub>N";
331                molecule.isotopesArray = ["124"];
332                this.arrayGeisa2011.push(molecule);
333                this.arrayGeisa2003.push(molecule);
334
335                var molecule = new Object();
336                molecule.id="hocl";
337                molecule.name="HOCl";
338                molecule.isotopesArray = ["165", "167"];
339                this.arrayGeisa2011.push(molecule);
340                this.arrayGeisa2003.push(molecule);
341
342                var molecule = new Object();
343                molecule.id="n2";
344                molecule.name="N<sub>2</sub>";
345                molecule.isotopesArray = ["44"];
346                this.arrayGeisa2011.push(molecule);
347                this.arrayGeisa2003.push(molecule);
348                this.arrayGeisaIasi2011.push(molecule);
349                this.arrayGeisaIasi2003.push(molecule);
350
351                var molecule = new Object();
352                molecule.id="ch3cl";
353                molecule.name="CH<sub>3</sub>Cl";
354                molecule.isotopesArray = ["215", "217"];
355                this.arrayGeisa2011.push(molecule);
356                this.arrayGeisa2003.push(molecule);
357
358                var molecule = new Object();
359                molecule.id="h2o2";
360                molecule.name="H<sub>2</sub>O<sub>2</sub>";
361                molecule.isotopesArray = ["166"];
362                this.arrayGeisa2011.push(molecule);
363                this.arrayGeisa2003.push(molecule);
364
365                var molecule = new Object();
366                molecule.id="h2s";
367                molecule.name="H<sub>2</sub>S";
368                molecule.isotopesArray = ["121", "141", "131"];
369                this.arrayGeisa2011.push(molecule);
370                this.arrayGeisa2003.push(molecule);
371
372                var molecule = new Object();
373                molecule.id="hcooh";
374                molecule.name="HCOOH";
375                molecule.isotopesArray = ["261"];
376                this.arrayGeisa2011.push(molecule);
377                this.arrayGeisa2003.push(molecule);
378                this.arrayGeisaIasi2011.push(molecule);
379
380                var molecule = new Object();
381                molecule.id="cof2";
382                molecule.name="COF<sub>2</sub>";
383                molecule.isotopesArray = ["269"];
384                this.arrayGeisa2011.push(molecule);
385                this.arrayGeisa2003.push(molecule);
386
387                var molecule = new Object();
388                molecule.id="sf6";
389                molecule.name="SF<sub>6</sub>";
390                molecule.isotopesArray = ["29"];
391                this.arrayGeisa2011.push(molecule);
392                this.arrayGeisa2003.push(molecule);
393
394                var molecule = new Object();
395                molecule.id="c3h4";
396                molecule.name="C<sub>3</sub>H<sub>4</sub>";
397                molecule.isotopesArray = ["341"];
398                this.arrayGeisa2011.push(molecule);
399                this.arrayGeisa2003.push(molecule);
400
401                var molecule = new Object();
402                molecule.id="ho2";
403                molecule.name="HO<sub>2</sub>";
404                molecule.isotopesArray = ["166"];
405                this.arrayGeisa2011.push(molecule);
406                this.arrayGeisa2003.push(molecule);
407
408                var molecule = new Object();
409                molecule.id="clono2";
410                molecule.name="ClONO<sub>2</sub>";
411                molecule.isotopesArray = ["564", "764"];
412                this.arrayGeisa2011.push(molecule);
413                this.arrayGeisa2003.push(molecule);
414
415                var molecule = new Object();
416                molecule.id="ch3br";
417                molecule.name="CH<sub>3</sub>Br";
418                molecule.isotopesArray = ["79", "81"];
419                this.arrayGeisa2011.push(molecule);
420
421                var molecule = new Object();
422                molecule.id="ch3oh";
423                molecule.name="CH<sub>3</sub>OH";
424                molecule.isotopesArray = ["216"];
425                this.arrayGeisa2011.push(molecule);
426                this.arrayGeisaIasi2011.push(molecule);
427
428                var molecule = new Object();
429                molecule.id="noplus";
430                molecule.name="NO<sup>+</sup>";
431                molecule.isotopesArray = ["46"];
432                this.arrayGeisa2011.push(molecule);
433
434                var molecule = new Object();
435                molecule.id="hnc";
436                molecule.name="HNC";
437                molecule.isotopesArray = ["142"];
438                this.arrayGeisa2011.push(molecule);
439
440                var molecule = new Object();
441                molecule.id="c6h6";
442                molecule.name="C<sub>6</sub>H<sub>6</sub>";
443                molecule.isotopesArray = ["266"];
444                this.arrayGeisa2011.push(molecule);
445
446                var molecule = new Object();
447                molecule.id="c2hd";
448                molecule.name="C<sub>2</sub>HD";
449                molecule.isotopesArray = ["122"];
450                this.arrayGeisa2011.push(molecule);
451
452                var molecule = new Object();
453                molecule.id="cf4";
454                molecule.name="CF<sub>4</sub>";
455                molecule.isotopesArray = ["291"];
456                this.arrayGeisa2011.push(molecule);
457
458                var molecule = new Object();
459                molecule.id="ch3cn";
460                molecule.name="CH<sub>3</sub>CN";
461                molecule.isotopesArray = ["234"];
462                this.arrayGeisa2011.push(molecule);
463
464
465            },
466
467// CREATES ********************************************************
468            createForm: function()
469            {
470                //Titre de la page
471                var titlePage = document.createTextNode("Graphic vizualisation of the  GEISA  database");
472                document.getElementById("titlePage").appendChild(titlePage);
473
474                // Create menu deroulant  choix de la base
475                var paramDatabase = new Object();
476                paramDatabase.id = "selectDatabase";
477                paramDatabase.parent = $("#database1");
478                this.selectDatabase = new Select( paramDatabase );
479                this.selectDatabase.add( 'GEISA2011', "GEISA 2011", jQuery.proxy(this.onClickSelectDatabase, this), '<%=IsotopeG09.class%>' );
480                this.selectDatabase.add( 'GEISAIASI2011', "GEISA-IASI 2011", jQuery.proxy(this.onClickSelectDatabase, this), '<%=IsotopeIasiG09.class%>' );
481                this.selectDatabase.add( 'GEISA2003', "GEISA 2003", jQuery.proxy(this.onClickSelectDatabase, this), '<%=IsotopeG03.class%>' );
482                this.selectDatabase.add( 'GEISAIASI2003', "GEISA-IASI 2003", jQuery.proxy(this.onClickSelectDatabase, this), '<%=IsotopeIasiG03.class%>' );
483                this.selectDatabase.selectFirst( false );
484                 var bob = this.selectDatabase.getValues();
485
486                // Create menu deroulant  choix de la base2 pour l'onglet "Database comparison"
487
488                var paramDatabase2 = new Object();
489                paramDatabase2.id = "selectDatabase2";
490                paramDatabase2.parent = $("#database2");
491                this.selectDatabase2 = new Select( paramDatabase2 );
492                this.selectDatabase2.add( 'GEISA2011', "GEISA 2011", jQuery.proxy(this.onClickSelectDatabase, this), '<%=IsotopeG09.class%>' );
493                this.selectDatabase2.add( 'GEISA2003', "GEISA 2003", jQuery.proxy(this.onClickSelectDatabase, this), '<%=IsotopeG03.class%>' );
494                this.selectDatabase2.selectFirst( false );
495
496
497
498
499                //création du bloc des molécules
500                this.createMolecules($('#BDD-GEISA2011'), this.arrayGeisa2011, "GEISA2011");
501                this.createMolecules($('#BDD-GEISA2003'), this.arrayGeisa2003, "GEISA2003");
502                this.createMolecules($('#BDD-GEISAIASI2011'), this.arrayGeisaIasi2011, "GEISAIASI2011");
503                this.createMolecules($('#BDD-GEISAIASI2003'), this.arrayGeisaIasi2003, "GEISAIASI2003");
504
505                //bouton selection-deselection toutes les molécules et isotopes
506                this.selectButton = new Button( {value:"Select all molecules", parent:$( "#selectAndShow" ), id:"buttonSelect", className: "gray_button", onClick:jQuery.proxy( this.selectAll, this )} );
507                //bouton montrer-cacher les isotopes
508                this.showButton = new Button( {value:"View all isotopologues", parent:$( "#selectAndShow" ), id:"buttonShow", className: "gray_button", onClick:jQuery.proxy( this.viewAll, this )} );
509
510
511
512                //Zone texte  SpectralRange
513                //Titre général (qui changera en fonction de la base geisa choisie)
514                document.getElementById('spectralRangeTitre').innerHTML = "";
515                document.getElementById('spectralRangeTitre').innerHTML = "Choosing the spectral range (0 to 35877.030506 cm<sup>-1</sup>) :";
516
517                //Titre
518                document.getElementById("spectralRangeLower").innerHTML = "Lower value, cm<sup>-1</sup> : ";
519                document.getElementById("spectralRangeUpper").innerHTML = "Upper value, cm<sup>-1</sup> : ";
520                document.getElementById("samplingStep").innerHTML = "<br> Splitting step, cm<sup>-1</sup> : <a href='#' TITLE='Split equally the selected spectral range for generating a series of graphs. Default case: one graph for the whole spectral range.'><img src='resources/images/elements/index.jpeg' height='16px' width='16px'></a>  ";
521                //zone texte  SpectralRangeLower
522                var inputSpectralRangeLower = $( document.createElement( "input" ) );
523                inputSpectralRangeLower.attr( {id:"rangeLower", class:"styleInputs"} );
524                inputSpectralRangeLower.val(0);
525                //pour mettre à jour le menu déroulant des transitions
526                inputSpectralRangeLower.bind( 'blur', this, jQuery.proxy( this.requestTransition, this ));
527                this.containerFormSpectralRangeLower.append( inputSpectralRangeLower );
528                //zone texte   SpectralRangeUpper
529                var inputSpectralRangeUpper = $( document.createElement( "input" ) );
530                inputSpectralRangeUpper.attr( {id:"rangeUpper"} );
531                inputSpectralRangeUpper.val(35877.030506);
532                //pour mettre à jour le menu déroulant des transitions lorsque l'on change la valeur du spectral range
533                inputSpectralRangeUpper.bind( 'blur', this, jQuery.proxy( this.requestTransition, this ));
534                this.containerFormSpectralRangeUpper.append( inputSpectralRangeUpper );
535                //zone texte   Sampling step
536                var inputSamplingStep = $( document.createElement( "input" ) );
537                inputSamplingStep.attr( {id:"sampStep", size:6} );
538                $("#samplingStep").append( inputSamplingStep );
539
540                 //Zone texte Intensity
541                //Titre
542                  document.getElementById("intensityLower").innerHTML = "Lower value, cm/mol. : "
543                  document.getElementById("intensityUpper").innerHTML = "Upper value, cm/mol. : "
544                //zone texte    IntensityLower
545                var inputIntensityLower = $( document.createElement( "input" ) );
546                inputIntensityLower.attr( {id:"intensityLo", class:"styleInputs"} );
547                inputIntensityLower.val(0);
548                this.containerFormIntensityLower.append( inputIntensityLower );
549                //zone texte    IntensityUpper
550                var inputIntensityUpper = $( document.createElement( "input" ) );
551                inputIntensityUpper.attr( {id:"intensityUp"} );
552                inputIntensityUpper.val(1e-16);
553                this.containerFormIntensityUpper.append( inputIntensityUpper );
554
555
556                // Create menu deroulant  1er choix axe des y
557                //Titre
558                var titleAxeY1 = document.createTextNode("Select parameter (left Y-axis)");
559                document.getElementById("axeY1").appendChild(titleAxeY1);
560                var spaceBr = document.createElement ("br");
561                document.getElementById("axeY1").appendChild(spaceBr);
562                //menu déroulant
563                var paramSelectAxeY1 = new Object();
564                paramSelectAxeY1.id = "selectAxeY1";
565                paramSelectAxeY1.parent = $("#axeY1");
566                this.selectTraceAxeY1 = new Select( paramSelectAxeY1 );
567                this.selectTraceAxeY1.add( 'B', "Intensity", jQuery.proxy(this.onClickSelectTraceAxeY1, this ));
568                this.selectTraceAxeY1.add( 'C', "Air broadening pressure halfwidth HWHM", jQuery.proxy(this.onClickSelectTraceAxeY1, this ) );
569                this.selectTraceAxeY1.add( 'D', "Energy of the lower transition level", jQuery.proxy(this.onClickSelectTraceAxeY1, this ) );
570                this.selectTraceAxeY1.add( 'F', "Temperature dependence coefficient n of HWHM", jQuery.proxy(this.onClickSelectTraceAxeY1, this ) );
571                this.selectTraceAxeY1.add( 'N', "Self broadening pressure halfwidth (HWHMself)", jQuery.proxy(this.onClickSelectTraceAxeY1, this ) );
572                this.selectTraceAxeY1.add( 'O', "Air pressure shift of the line transition", jQuery.proxy(this.onClickSelectTraceAxeY1, this ) );
573                this.selectTraceAxeY1.add( 'R', "Temperature dependence coeff. of the air pressure shift", jQuery.proxy(this.onClickSelectTraceAxeY1, this ) );
574                this.selectTraceAxeY1.selectFirst( false );
575
576                // Create menu deroulant  type de graphe
577                 //Titre
578                var titleTypeTrace = document.createTextNode("Type of graph");
579                document.getElementById("nbCourbes").appendChild(titleTypeTrace);
580                var spaceBr = document.createElement ("br");
581                document.getElementById("nbCourbes").appendChild(spaceBr);
582                //menu déroulant
583                var paramNbCourbes = new Object();
584                paramNbCourbes.id = "selectNbCourbes";
585                paramNbCourbes.parent = $("#nbCourbes");
586                this.selectNbCourbes = new Select( paramNbCourbes );
587                this.selectNbCourbes.add( 'ca', "One curve for all selection", jQuery.proxy(this.onClickSelectNbCourbes, this ) );
588                this.selectNbCourbes.add( 'cm', "Separated molecules : same graph", jQuery.proxy(this.onClickSelectNbCourbes, this ) );
589                this.selectNbCourbes.add( 'gm', "Separated molecules : different graphs", jQuery.proxy(this.onClickSelectNbCourbes, this ) );
590                this.selectNbCourbes.add( 'gi', "Separated isotopologues : different graphs", jQuery.proxy(this.onClickSelectNbCourbes, this ) );
591                this.selectNbCourbes.add( 'ci', "Separated isotopologues : same graph", jQuery.proxy(this.onClickSelectNbCourbes, this ) );
592                this.selectNbCourbes.selectFirst( false );
593
594                // Create menu deroulant  type d'échelle linéaire ou logarithmique  pour le choix y1
595                //Titre
596                var titleScaleY1 = document.createTextNode("Select the type of Scale (if intensity is choosen)");
597                document.getElementById("scaleY1Titre").appendChild(titleScaleY1);
598                //menu déroulant
599                var paramSelectScaleY1 = new Object();
600                paramSelectScaleY1.id = "selectScaleY1";
601                paramSelectScaleY1.parent = $("#scaleY1");
602                this.selectScaleY1 = new Select( paramSelectScaleY1 );
603                this.selectScaleY1.add( 'l', "Linear" );
604                this.selectScaleY1.add( '-log_scale', "Logarithmic" );
605                this.selectScaleY1.selectFirst( false );
606
607
608                // Create menu deroulant  style de tracer   Y1
609                //Titre
610                var titleTypeTrace = document.createTextNode("Select the type of plot");
611                document.getElementById("typePlotY1").appendChild(titleTypeTrace);
612                var spaceBr = document.createElement ("br");
613                document.getElementById("typePlotY1").appendChild(spaceBr);
614                //menu déroulant
615                var paramSelectTypeTraceY1 = new Object();
616                paramSelectTypeTraceY1.id = "selectTypePlotY1";
617                paramSelectTypeTraceY1.parent = $("#typePlotY1");
618                this.selectTypeTraceY1 = new Select( paramSelectTypeTraceY1 );
619                this.selectTypeTraceY1.add( 'l', "Lines" );
620                this.selectTypeTraceY1.add( 'p', "Dots" );
621                this.selectTypeTraceY1.add( 'i', "Peaks" );
622                this.selectTypeTraceY1.add( 'lp', "Lines and Dots" );
623                this.selectTypeTraceY1.selectFirst( false );
624
625                //menu déroulant  tracé de la 2Úme base pour l'onglet "Database comparison"
626                var paramSelectTypeTraceDatabase2 = new Object();
627                paramSelectTypeTraceDatabase2.id = "selectTypePlotDatabase2";
628                paramSelectTypeTraceDatabase2.parent = $("#typePlotDatabase2");
629                this.selectTypeTraceDatabase2 = new Select( paramSelectTypeTraceDatabase2 );
630                this.selectTypeTraceDatabase2.add( 'l', "Lines" );
631                this.selectTypeTraceDatabase2.add( 'p', "Dots" );
632                this.selectTypeTraceDatabase2.add( 'i', "Peaks" );
633                this.selectTypeTraceDatabase2.add( 'lp', "Lines and Dots" );
634                this.selectTypeTraceDatabase2.selectFirst( false );
635
636
637                //lien pour montrer ou cacher le bloc "advanced options"
638                var showHide = $(document.createElement("a"));
639                showHide.html("Show advanced options");
640                showHide.attr( {id:"aShowHide", class:"fieldsetGeneralTitle"} );
641                showHide.bind( 'click', this, jQuery.proxy( this.onClickShowAdvancedOptions));
642                $("#showAdvancedOptions").append(showHide);
643
644
645                //titre  menu deroulant  transition upper
646                var titleTransitionUpper = document.createTextNode("Upper state : ");
647                document.getElementById("transitionUpper").appendChild(titleTransitionUpper);
648                 //titre  menu deroulant  transition upper
649                this.selectTransitionUpper = $( document.createElement( "select" ) );
650                this.selectTransitionUpper.attr( {id:"transition1"} );
651                //fonction sur le menu déroulant (des qu'on clique dessus) et non sur chacune des options
652                this.selectTransitionUpper.bind( 'click', jQuery.proxy(this.OnclickVerifTransition, this));
653                var optTransitionUpper = $( document.createElement( "option" ) );
654                optTransitionUpper.attr( {value:"-1", text:"Select a molecule"} );
655                this.selectTransitionUpper.append(optTransitionUpper);
656                $("#transitionUpper").append(this.selectTransitionUpper);
657
658
659                //titre  menu deroulant  transition lower
660                var titleTransitionLower = document.createTextNode("Lower state : ");
661                document.getElementById("transitionLower").appendChild(titleTransitionLower);
662                // Create menu deroulant  transition lower
663                this.selectTransitionLower = $( document.createElement( "select" ) );
664                this.selectTransitionLower.attr( {id:"transition2"} );
665                this.selectTransitionLower.bind( 'click', jQuery.proxy(this.OnclickVerifTransition, this));
666                var optTransitionLower = $( document.createElement( "option" ) );
667                optTransitionLower.attr( {value:"-1", text:"Select a molecule"} );
668                this.selectTransitionLower.append(optTransitionLower);
669                $("#transitionLower").append(this.selectTransitionLower);
670
671                //bouton reset pour les transition
672                var resetButton = new Button( {value:"Reset", parent:$( "#transitionReset" ), id:"buttonReset", className: "gray_button", onClick:jQuery.proxy( this.requestTransition, this )} );
673
674
675                //Zone text Mean Value
676                //Titre
677                var titleMeanValue = document.createTextNode("Bin-average : ");
678                document.getElementById("meanValue1").appendChild(titleMeanValue);
679                //champ input
680                var inputMeanValue = $( document.createElement( "input" ) );
681                inputMeanValue.attr( {id:"meanValue2", size:6} );
682                inputMeanValue.val(0);
683                this.containerFormMeanValue1.append( inputMeanValue );
684                inputMeanValue.bind( 'blur', this, jQuery.proxy( this.onBlurInputMeanValue, this ));
685
686
687                // Create menu deroulant  2eme choix axe des y
688                //Titre
689                var titleAxeY2 = document.createTextNode("Select secondary parameter (right Y-axis)");
690                document.getElementById("axeY2Titre").appendChild(titleAxeY2);
691                //menu déroulant
692                var paramSelectAxeY2 = new Object();
693                paramSelectAxeY2.id = "selectAxeY2";
694                paramSelectAxeY2.parent = $("#axeY2");
695                this.selectTraceAxeY2 = new Select( paramSelectAxeY2 );
696                this.selectTraceAxeY2.add( 'no', "None", jQuery.proxy(this.onClickSelectTraceAxeY2, this ) );
697                this.selectTraceAxeY2.add( 'B', "Intensity", jQuery.proxy(this.onClickSelectTraceAxeY2, this ) );
698                this.selectTraceAxeY2.add( 'C', "Air broadening pressure halfwidth HWHM", jQuery.proxy(this.onClickSelectTraceAxeY2, this ) );
699                this.selectTraceAxeY2.add( 'D', "Energy of the lower transition level", jQuery.proxy(this.onClickSelectTraceAxeY2, this ) );
700                this.selectTraceAxeY2.add( 'F', "Temperature dependence coefficient n of HWHM", jQuery.proxy(this.onClickSelectTraceAxeY2, this ) );
701                this.selectTraceAxeY2.add( 'N', "Self broadening pressure halfwidth (HWHMself)", jQuery.proxy(this.onClickSelectTraceAxeY2, this ) );
702                this.selectTraceAxeY2.add( 'O', "Air pressure shift of the line transition", jQuery.proxy(this.onClickSelectTraceAxeY2, this ) );
703                this.selectTraceAxeY2.add( 'R', "Temperature dependence coeff. of the air pressure shift", jQuery.proxy(this.onClickSelectTraceAxeY2, this ) );
704                this.selectTraceAxeY2.selectFirst( false );
705
706
707                // Create menu deroulant  type d'échelle linéaire ou logarithmique  pour le choix y2
708                //Titre
709                var titleScaleY2 = document.createTextNode("Select the type of Scale (if intensity is choosen)");
710                document.getElementById("scaleY2Titre").appendChild(titleScaleY2);
711                //menu déroulant
712                var paramSelectScaleY2 = new Object();
713                paramSelectScaleY2.id = "SelectScaleY2";
714                paramSelectScaleY2.parent = $("#scaleY2");
715                this.selectScaleY2 = new Select( paramSelectScaleY2 );
716                this.selectScaleY2.add( 'l', "Linear" );
717                this.selectScaleY2.add( '-log_scale2', "Logarithmic" );
718                this.selectScaleY2.selectFirst( false );
719                //est inactif par defaut car selectTraceAxeY2 est positionne a none par defaut
720                document.getElementById("scaleY2Titre").className = "notActiveText";
721                this.selectScaleY2.disable();
722
723
724                // Create menu deroulant  style de tracer       Y2
725                //Titre
726                var titleTypeTrace = document.createTextNode("Select the type of plot");
727                document.getElementById("typePlotY2Titre").appendChild(titleTypeTrace);
728                //menu déroulant
729                var paramSelectTypeTraceY2 = new Object();
730                paramSelectTypeTraceY2.id = "selectTypePlotY2";
731                paramSelectTypeTraceY2.parent = $("#typePlotY2");
732                this.selectTypeTraceY2 = new Select( paramSelectTypeTraceY2 );
733                this.selectTypeTraceY2.add( 'l', "Lines" );
734                this.selectTypeTraceY2.add( 'p', "Dots" );
735                this.selectTypeTraceY2.add( 'i', "Peaks" );
736                this.selectTypeTraceY2.add( 'lp', "Lines and Dots" );
737                this.selectTypeTraceY2.selectFirst( false );
738                //est inactif par defaut car selectTraceAxeY2 est positionne a none par defaut
739                document.getElementById("typePlotY2Titre").className = "notActiveText";
740                this.selectTypeTraceY2.disable();
741
742                // Create menu deroulant  choix de la sortie pour l'onglet "Database comparison"
743                var paramoutputDatabasecomparison = new Object();
744                paramoutputDatabasecomparison.id = "outputDatabaseComparisonChoice1";
745                paramoutputDatabasecomparison.parent = $("#outputDatabaseComparisonChoice");
746                this.selectOutputDatabasecomparison = new Select( paramoutputDatabasecomparison );
747                this.selectOutputDatabasecomparison.add( 'def', "Default output" );
748                this.selectOutputDatabasecomparison.add( 'diff_step', "différences moyennes" );
749                this.selectOutputDatabasecomparison.add( 'diff_step100', "différences moyennes en pourc" );
750                this.selectOutputDatabasecomparison.add( 'diff_stepboth', "diff moy et diff moy en pourc" );
751                this.selectOutputDatabasecomparison.selectFirst( false );
752
753
754                //création de l'image d'attente
755                var param = new Object();
756               param.id = "loadingForGraphics";
757               param.parent = this.containerLoading;
758               this.loadingGraphics = new Loading( param );
759              // this.loadingGraphics.display();
760               //this.loadingGraphics.hide();
761
762
763                // var submitButton = new Button( {value:"Submit", parent:$( "#boutonSubmit" ), id:"button_submit_3", className: "red_button", classNameText:"red_button_text", onClick:jQuery.proxy( this.onClickSubmit, this )} );
764                var submitButton = new Button( {value:"Submit", parent:$( "#boutonSubmit" ), id:"button_submit_3", className: "positive", onClick:jQuery.proxy( this.onClickSubmit, this )} );
765                 //bouton reset pour toute la page
766                var resetPageButton = new Button( {value:"Reset", parent:$( "#boutonSubmit" ), id:"buttonReset", className: "gray_button", onClick:jQuery.proxy( this.resetPage, this )} );
767
768
769
770            },
771
772
773
774
775            /**
776             * This method creates the case to check for the moles
777             * create cases à cocher pour les molécules
778             * @param container
779             * @param moleculesArray
780             */
781                //createMolecules: function(container, moleculesArray)
782            createMolecules: function(container, moleculesArray, BddVersion)
783            {
784                var table = $(document.createElement("table"));
785                container.append(table);
786
787                var i=0;
788                //nombre de molecules par ligne
789                var l=11;
790                //taille du tableau
791                //alert("l" +moleculesArray.length);
792
793
794                $.each(moleculesArray, jQuery.proxy( function(index, moleculeElement )
795                {
796
797
798                    //this.tr et non var tr pour que tr existe encore à la sortie du if
799                    if ( index == (i*l))
800                    {
801                        //alert(index);
802                        this.tr = $(document.createElement("tr"));
803                        this.tr.attr({valign: "top"});
804                        table.append(this.tr);
805                        i=i+1;
806
807                    }
808                    var td = $(document.createElement("td"));
809                    this.tr.append(td);
810
811                    var span= $(document.createElement("span"));
812                    span.addClass("molecule");
813                    td.append(span);
814
815                    var input = $(document.createElement("input"));
816                    input.attr({type:"checkbox", id:"all-"+moleculeElement.id+"-"+BddVersion});
817                    input.bind( 'click', this, jQuery.proxy( this.cliquetout, [this, moleculeElement.id, BddVersion ] ));
818                    span.append(input);
819
820                    var a = $(document.createElement("a"));
821                    a.html("<b>"+moleculeElement.name+"</b>");
822
823                    a.bind( 'click', this, jQuery.proxy( this.visibilite, [this,"Cache-"+ moleculeElement.id] ));
824                    span.append(a);
825
826                    var div= $(document.createElement("div"));
827                    div.addClass("divViolet");
828                    div.attr({id:"Cache-"+moleculeElement.id, style: "display:none"});
829                    td.append(div);
830
831                    var spanIsotopes= $(document.createElement("span"));
832                    spanIsotopes.addClass("isotope");
833                    spanIsotopes.attr({id:moleculeElement.id+"Isotope"+BddVersion});
834                    div.append(spanIsotopes);
835
836
837                    this.createIsotopes($("#"+moleculeElement.id+"Isotope"+BddVersion), moleculeElement.isotopesArray, moleculeElement.id, BddVersion);
838
839
840                }, this) );
841
842
843            },
844
845            createIsotopes: function(container, isotopesArray, moleculeElement, BddVersion )
846            {
847
848
849                $.each(isotopesArray, jQuery.proxy( function( index, isotopeElement )
850                {
851                    container.append("&nbsp;&nbsp;&nbsp;");
852                    var inputIsotopes = $(document.createElement("input"));
853                    inputIsotopes.attr({type:"checkbox", id:"chk-"+moleculeElement+"_"+isotopeElement+"-"+BddVersion, name:"moles", value:moleculeElement+"_"+isotopeElement});
854                    inputIsotopes.bind( 'click', this, jQuery.proxy( this.cliqueIsotope, [this, moleculeElement+"_"+isotopeElement, moleculeElement, BddVersion ] ));
855                    container.append(inputIsotopes);
856                    container.append(isotopeElement);
857                    var br = $(document.createElement("br"));
858                    container.append(br);
859
860                }, this) );
861            },
862
863            // <table><tr><td>
864            // <span class="molecule"><input type=checkbox id=all-ch3cn-GEISA2011 onclick="cliquetout('this, ch3cn, GEISA2011');">
865            //          <a href="javascript:visibilite('this, Cache-ch3cn');"><B>CH<sub>3</sub>CN</a></B>
866            // </span>
867            // <div class="divViolet" id="Cache-ch3cn" style="display:none;">
868            //          <span class="isotope" id="ch3cnIsotopeGEISA2011">&nbsp;&nbsp;&nbsp;<input type=checkbox id=chk-ch3cn_234-GEISA2011 name=moles value=ch3cn_234 onclick="cliqueIsotope('this, ch3cn_234, GEISA2011');">234<br></span>
869            // </div>
870            // </td></tr></table>
871
872// REQUESTS ********************************************************
873            //récupération de toutes les valeurs choisies par l'utilisateur et transformation de ces valeurs pour les inclure dans la requête fortran
874            requestGeisa: function()
875            {
876                //temps en ms pour obtenir un nom unique de répertoire
877                var dateTime = new Date().getTime();
878                this.NomRepFileOut = "graph"+dateTime+"/";
879
880
881                // appel ajax
882
883                 //sélection du fichier binaire de la base geisa sélectionnée
884                var paramBase = "";
885                switch (this.selectDatabase.getValue()) {
886                    case 'GEISA2003':
887                        paramBase = " -dirin "+this.pathProcess+" -dirout "+this.LongPathImages+this.NomRepFileOut+" -filein "+this.pathProcess+"line_GEISA2003_asc_gs03_v1.0 -input_format asc -database_name GEISA2003 -database_type gs03 -type_out png";
888                        break;
889                    case 'GEISA2011':
890                        paramBase = " -dirin "+this.pathProcess+" -dirout "+this.LongPathImages+this.NomRepFileOut+" -filein "+this.pathProcess+"line_GEISA2009_bin -database_name GEISA2011 -database_type gs08 -type_out png";
891                        break;
892                    case 'GEISAIASI2003':
893                        paramBase = " -dirin "+this.pathProcess+" -dirout "+this.LongPathImages+this.NomRepFileOut+" -filein "+this.pathProcess+"line_GEISAIASI2003_asc_gsi03_v1.0 -input_format asc -database_name GEISAIASI2003 -database_type gsi03 -type_out png";
894                        break;
895                    case 'GEISAIASI2011':
896                        paramBase = " -dirin "+this.pathProcess+" -dirout "+this.LongPathImages+this.NomRepFileOut+" -filein "+this.pathProcess+"line_GEISAIASI2011_bin_gsi08_v1.0 -database_name GEISAIASI2011 -database_type gsi08 -type_out png";
897                        break;
898                }
899
900
901                //molécules
902                //récupération des molécules sélectionnées
903                var inputs = document.getElementsByTagName( 'input' );
904                var count = inputs.length;
905                var isotopesSelectedName ="";
906              //  alert(this.selectDatabase.getValue());
907                var i=0;
908                this.nbIsotopes = 0;
909                this.nbMolecules = 0;
910                this.nbGraph = 0;
911                for( i = 0; i < count; i++ )
912                {
913                    var input = inputs.item( i );
914                    //ne prendre que les isotopes sélectionnés dans la base de données sélectionnée  (rechercher des id du type :  "chk-ch3cn-GEISA-11")
915                    if( input.type == 'checkbox' && input.checked == true && input.id.indexOf("chk-")!= -1 && input.id.indexOf(this.selectDatabase.getValue())!= -1)
916                    {
917                        //nombre d'isotopes sélectionnés
918                        this.nbIsotopes =  this.nbIsotopes + 1;
919
920                        var molN=input.value;
921                        var molN1=molN.replace("_", ":");
922                        // exemple : -moleisot h2o:161 -moleisot h2o:162 -moleisot co2:626 -moleisot co2:627 -moleisot o3:666 -moleisot o3:668
923                        isotopesSelectedName = isotopesSelectedName+"-moleisot "+molN1+" ";
924                    }
925                    //récupération du nombre de molécules sélectionnées
926                    if( input.type == 'checkbox' && input.checked == true && input.id.indexOf("all-")!= -1 && input.id.indexOf(this.selectDatabase.getValue())!= -1)
927                    {
928                        //nombre d'isotopes sélectionnés
929                        this.nbMolecules =  this.nbMolecules + 1;
930                    }
931                }
932
933
934                //averti l'utilisateur qu'il faut au moins sélectionner un isotope
935                if (this.nbIsotopes ==  0) {
936                    alert("Error : no molecule or isotopoloque was selected");
937                    return;
938                }
939
940
941
942                //sélection du nombre de courbes ou de graphs
943
944                var nbCourbes = "";
945
946                switch (this.selectNbCourbes.getValue()) {
947                //sswitch (document.getElementById('selectNbCourbes').options[document.getElementById('selectNbCourbes').selectedIndex].value) {
948                    case 'cm':
949                        nbCourbes = "-separate_mol -same_graph ";
950                        this.nbGraph = 1;
951                        this.nbCourbe =  this.nbMolecules;
952                        if (this.nbCourbe > 8) {
953                            alert("Too much molecules selected to draw one curve for each molecule selected");
954                            return;
955                        }
956                        break;
957                    case 'ci':
958                        nbCourbes = "-separate_iso -same_graph ";
959                        this.nbGraph = 1;
960                        this.nbCourbe =  this.nbIsotopes;
961                        if (this.nbCourbe > 8) {
962                            alert("Too much isotopologues selected to draw one curve for each isotopologues selected");
963                            return;
964                        }
965                        break;
966                    case 'gm':
967                        nbCourbes = "-separate_mol ";
968                        this.nbGraph = this.nbMolecules;
969                        if (this.nbGraph > 20) {
970                            alert("Too much molecules selected to draw one graph for each molecules selected");
971                            return;
972                        }
973                        break;
974                    case 'gi':
975                        nbCourbes = "-separate_iso ";
976                        this.nbGraph = this.nbIsotopes;
977                        if (this.nbGraph > 20) {
978                            alert("Too much isotopologues selected to draw one graph for each isotopologues selected");
979                            return;
980                        }
981                        break;
982                    default:
983                        nbCourbes = "";
984                        this.nbGraph = 1;
985                        break;
986                }
987
988
989                //Spectral range
990                var rangeLower="-wavenb_min "+$("#rangeLower").val();
991                var rangeUpper="-wavenb_max "+$("#rangeUpper").val();
992
993                //controle des valeurs entrées par l'utilisateur
994
995                switch (this.selectDatabase.getValue()) {
996                    case 'GEISA2003':
997                        //isNaN = n'est pas un nombre
998                        if(isNaN(($("#rangeLower").val())) == true ||   parseFloat($("#rangeLower").val()) < 0  || parseFloat($("#rangeLower").val()) > 35877.030506)
999                        {
1000                            alert("Error: Invalid value for lower spectral range area. The value must be between 0 and 35877.030506");
1001                            return;
1002                        }
1003
1004                        if(isNaN(($("#rangeUpper").val())) == true ||   parseFloat( $("#rangeUpper").val()) == 0 || parseFloat( $("#rangeUpper").val()) < 0  || parseFloat($("#rangeUpper").val()) > 35877.030506)
1005                        {
1006                            alert("Error: Invalid value for upper spectral range area. The value must be between 0 and 35877.030506");
1007                            return;
1008                        }
1009
1010                        break;
1011                    case 'GEISA2011':
1012                        //isNaN = n'est pas un nombre
1013                        if(isNaN(($("#rangeLower").val())) == true ||   parseFloat($("#rangeLower").val()) < 0  || parseFloat($("#rangeLower").val()) > 35877.030506)
1014                        {
1015                            alert("Error: Invalid value for lower spectral range area. The value must be between 0 and 35877.030506");
1016                            return;
1017                        }
1018
1019                        if(isNaN(($("#rangeUpper").val())) == true ||   parseFloat( $("#rangeUpper").val()) == 0 || parseFloat( $("#rangeUpper").val()) < 0  || parseFloat($("#rangeUpper").val()) > 35877.030506)
1020                        {
1021                            alert("Error: Invalid value for upper spectral range area. The value must be between 0 and 35877.030506");
1022                            return;
1023                        }
1024                        break;
1025                    case 'GEISAIASI2003':
1026                        //isNaN = n'est pas un nombre
1027                        if(isNaN(($("#rangeLower").val())) == true ||   parseFloat($("#rangeLower").val()) < 0 || parseFloat($("#rangeLower").val()) < 599.000793 || parseFloat($("#rangeLower").val()) > 3000.998767)
1028                        {
1029                            alert("Error: Invalid value for lower spectral range area. The value must be between 599.000793 and 3000.998767");
1030                            return;
1031                        }
1032
1033                        if(isNaN(($("#rangeUpper").val())) == true ||   parseFloat( $("#rangeUpper").val()) == 0 || parseFloat( $("#rangeUpper").val()) < 0  ||  parseFloat($("#rangeUpper").val()) < 599.000793 || parseInt($("#rangeUpper").val()) > 3000.998767)
1034                        {
1035                            alert("Error: Invalid value for upper spectral range area. The value must be between 599.000793 and 3000.998767");
1036                            return;
1037                        }
1038                        break;
1039                    case 'GEISAIASI2011':
1040                        //isNaN = n'est pas un nombre
1041                        if(isNaN(($("#rangeLower").val())) == true ||   parseFloat($("#rangeLower").val()) < 0 || parseFloat($("#rangeLower").val()) < 599.000793 || parseFloat($("#rangeLower").val()) > 3000.998767)
1042                        {
1043                            alert("Error: Invalid value for lower spectral range area. The value must be between 599.000793 and 3000.998767");
1044                            return;
1045                        }
1046
1047                        if(isNaN(($("#rangeUpper").val())) == true ||   parseFloat( $("#rangeUpper").val()) == 0 || parseFloat( $("#rangeUpper").val()) < 0  ||  parseFloat($("#rangeUpper").val()) < 599.000793 || parseInt($("#rangeUpper").val()) > 3000.998767)
1048                        {
1049                            alert("Error: Invalid value for upper spectral range area. The value must be between 599.000793 and 3000.998767");
1050                            return;
1051                        }
1052                        break;
1053                }
1054
1055
1056                if ($("#rangeLower").val() == ""  )
1057                {
1058                    rangeLower="";
1059                }
1060
1061                if ($("#rangeUpper").val() == ""  )
1062                {
1063                    rangeUpper="";
1064                }
1065                if( parseInt($("#rangeLower").val())  > parseInt($("#rangeUpper").val()) )
1066                {
1067                    alert("Error: lower spectral range area is superior to upper spectral range area ");
1068                    return;
1069                }
1070
1071
1072
1073                //Sampling step
1074                if( $("#sampStep").val() > 0 )
1075                {
1076                    var samplingStep="-band "+$("#sampStep").val();
1077                    //calcul du nombre de graphs générés par l'option  Sampling step
1078                    this.nbGraphSamplingStep = (parseFloat($("#rangeUpper").val()) - parseFloat($("#rangeLower").val())) / parseFloat($("#sampStep").val());
1079                    //calcul du nombre de graphs total à tracer   (nbr de graph générés par "type of graph" * nbr de graph généré par "Sampling Step")
1080                       //test pour voir si    "nbGraphSamplingStep" est un entier
1081                       if ((this.nbGraphSamplingStep - parseInt(this.nbGraphSamplingStep)) == 0)
1082                       {
1083                        this.nbGraph=(this.nbGraph)*(this.nbGraphSamplingStep);
1084                       }
1085                       else
1086                       {
1087                        // si  "nbGraphSamplingStep" n'est pas un entier prendre le nbre entier suivant
1088                        this.nbGraph=this.nbGraph*(parseInt(this.nbGraphSamplingStep)+1);
1089                       }
1090                }
1091
1092                if(isNaN($("#sampStep").val()) == true ||   parseInt($("#sampStep").val()) < 0 )
1093                {
1094                    alert("Error: Invalid value for sampling step");
1095                    return;
1096                }
1097
1098                if( $("#sampStep").val() == 0 )
1099                {
1100                    var samplingStep="";
1101                }
1102
1103                //test sur le nombre de graphs générés
1104                if (this.nbGraph > 20)
1105                {
1106                    alert("Too many graphics will be drawn ("+this.nbGraph+"). Please change the value of the sampling step or change the type of graph.");
1107                    return;
1108                }
1109
1110
1111
1112                //Transitions  to do
1113                //exemple de requete avec transition
1114                //./all -filein line_GEISA2009_bin -moleisot h2o:161 -wavenb_min 1 -wavenb_max 1000 -database_name "GEISA2011" -vib_ident_lower '[000]'
1115                var transitionUpper=document.getElementById('transition1').options[document.getElementById('transition1').selectedIndex].value;
1116
1117                //certaine transitions ont plusieurs espaces à droite qui ne sont pas conservés   (ex ch4 et C2HD)
1118                //si la longueur de la chaine de caracteres n'est pas 25 on rajoute le nobre d'espace nécessaire pour arriver à 25
1119                var nb=0;
1120                nb=25-transitionUpper.length
1121                if (nb != 0)
1122                {
1123                    for (i = 1; i <= nb; i++) {
1124                       transitionUpper=transitionUpper+" ";
1125                    }
1126                }
1127
1128
1129                  var transitionLower=document.getElementById('transition2').options[document.getElementById('transition2').selectedIndex].value;
1130
1131                //certaine transitions ont plusieurs espaces à droite qui ne sont pas conservés   (ex ch4 et C2HD)
1132                //si la longueur de la chaine de caracteres n'est pas 25 on rajoute le nobre d'espace nécessaire pour arriver à 25
1133                var nb=0;
1134                nb=25-transitionLower.length
1135                if (nb != 0)
1136                {
1137                    for (i = 1; i <= nb; i++) {
1138                       transitionLower=transitionLower+" ";
1139                    }
1140                }
1141
1142                 //pas de transition sélectionnée
1143
1144                if (( document.getElementById('transition1').options[document.getElementById('transition1').selectedIndex].value == -1) ||  (document.getElementById('transition1').options[document.getElementById('transition1').selectedIndex].value == "transition" ))
1145                {
1146                    transitionUpper ="no";
1147                }
1148                if (( document.getElementById('transition2').options[document.getElementById('transition2').selectedIndex].value == -1) ||  (document.getElementById('transition2').options[document.getElementById('transition2').selectedIndex].value == "transition" ))
1149                {
1150                    transitionLower ="no";
1151                }
1152
1153                if ( document.getElementById('transition1').options[document.getElementById('transition1').selectedIndex].value == "")
1154                {
1155                    transitionUpper ="noValue";
1156                }
1157
1158                if ( document.getElementById('transition2').options[document.getElementById('transition2').selectedIndex].value == "")
1159                {
1160                    transitionLower ="noValue";
1161                }
1162
1163                 var sel = document.getElementById('transition1');
1164                 var idupper = sel.options[sel.selectedIndex].value;
1165
1166                //Intensity range
1167                var intensityLower="-int_min "+$("#intensityLo").val();
1168                var intensityUpper="-int_max "+$("#intensityUp").val();
1169
1170                //controle des valeurs entrées par l'utilisateur
1171                 if(isNaN($("#intensityLo").val()) == true ||   $("#intensityLo").val() < 0  )
1172                {
1173                    alert("Error: Invalid value for lower intensity range area. The value must be between 0 and 1E-16");
1174                    return;
1175                }
1176                if ($("#intensityLo").val() == ""  )
1177                {
1178                    intensityLower="";
1179                }
1180                if(isNaN($("#intensityUp").val()) == true ||   $("#intensityUp").val() < 0  )
1181                {
1182                    alert("Error: Invalid value for upper intensity range area. The value must be between 0 and 1E-16");
1183                    return;
1184                }
1185                if ($("#intensityUp").val() == ""  )
1186                {
1187                    intensityUpper="";
1188                }
1189
1190                //to do javascript ne sait comparer des exponenciels
1191              // if( $("#intensityLo").val()  > $("#intensityUp").val() )
1192
1193               // {
1194               //     alert("Error: lower intensity range area is superior to upper intensity range area ");
1195               //     return;
1196               // }
1197
1198
1199                //Valeur de mean value
1200                var meanValue = "-step "+$("#meanValue2").val();
1201                //controle des valeurs entrées par l'utilisateur
1202                //Si ce n'est pas un nombre ou si il est négatif  ou si mean value est supérieur ou égal à l'interval spectral
1203                if(isNaN($("#meanValue2").val()) == true ||   $("#meanValue2").val() < 0 ||   $("#meanValue2").val() >= (parseFloat($("#rangeUpper").val()) - parseFloat($("#rangeLower").val())) )
1204                {
1205                    alert("Error: Invalid value for Average calculation area");
1206                    return;
1207                }
1208                //si aucune valeur
1209                if ($("#meanValue2").val() == ""  )
1210                {
1211                    meanValue="";
1212                }
1213
1214                //sélection du premier choix pour l'axe des Y
1215                 var field="-field "+this.selectTraceAxeY1.getValue();
1216
1217
1218                 //sélection du type d'échelle pour le parametre Y1 (il y a une valeur pour ce champ que si logaritmic est choisi et si l'option est activée)
1219                if  (this.selectScaleY1.getValue() == '-log_scale' && this.selectScaleY1.isDisable == false)
1220                {
1221                    var logScale = this.selectScaleY1.getValue();
1222                }
1223                else
1224                {
1225                    var logScale = ""
1226                }
1227
1228
1229
1230                //sélection du type de tracé pour Y1
1231                var lineType="-line_type "+this.selectTypeTraceY1.getValue();
1232                //var lineType="-line_type "+document.getElementById('selectTypePlotY1').options[document.getElementById('selectTypePlotY1').selectedIndex].value;
1233
1234
1235                //sélection ou non d'un 2eme choix pour l'axe des Y   (pas de valeur pour ce champ si choix none ou si l'option n'est pas activée)
1236                if  (this.selectTraceAxeY2.getValue() == 'no' ||  this.selectTraceAxeY2.isDisable == true)
1237                {
1238                    var field2 = "";
1239                }
1240                else
1241                {
1242                    var field2 = "-field2 "+this.selectTraceAxeY2.getValue();
1243                    //var field2 = "-field2 "+document.getElementById('selectAxeY2').options[document.getElementById('selectAxeY2').selectedIndex].value;
1244                }
1245
1246                //sélection du type d'échelle pour le parametre Y2 (il y a une valeur pour ce champ que si logaritmic est choisi et si l'option est activée)
1247                if  (this.selectScaleY2.getValue() == '-log_scale2' && this.selectScaleY2.isDisable == false)
1248                {
1249                    var logScale2 =this.selectScaleY2.getValue();
1250                    //  var logScale2 = document.getElementById('selectScaleY2').options[document.getElementById('selectScaleY2').selectedIndex].value;
1251                }
1252                else
1253                {
1254                    var logScale2 = "";
1255                }
1256
1257
1258                //sélection du type de tracé pour Y2  (pas de valeur  si l'option n'est pas activée)
1259                if  ( this.selectTypeTraceY2.isDisable == true)
1260                {
1261                    var lineType2 = "";
1262                }
1263                else
1264                {
1265                    var lineType2 = "-line_type2 "+this.selectTypeTraceY2.getValue();
1266                }
1267
1268
1269                //ouverture de la div de l'image d'attente
1270                this.loadingGraphics.display();
1271
1272
1273
1274
1275                //construction de la requête Fortran
1276
1277                var parameters = "&fortranRequest="+paramBase+" "+isotopesSelectedName+" "+rangeLower+" "+rangeUpper+" "+samplingStep+" "+intensityLower+" "+intensityUpper+" "+
1278                                       meanValue+" "+nbCourbes+" "+field+" "+logScale+" "+lineType+" "+field2+" "+logScale2+" "+lineType2;
1279
1280
1281                //remplacement de espace par "EEE" pour que le shell script ne voit qu'un seul argument en entrée
1282                parameters=parameters.replace(/ /g,"kkk");
1283                transitionUpper=transitionUpper.replace(/ /g,"kkk");
1284                //le + est interprété comme un espace (plus sera retransformé en + dans le shell)
1285                transitionUpper=transitionUpper.replace(/\+/g,"plus");
1286                transitionLower=transitionLower.replace(/ /g,"kkk");
1287                transitionLower=transitionLower.replace(/\+/g,"plus");
1288
1289
1290                //construction du nom du fichier  (exemple  GEISA2011-0_100)
1291                this.nomFichier=this.selectDatabase.getValue()+"-"+$("#rangeLower").val()+"_"+$("#rangeUpper").val();
1292                //envoie de la requête au controller
1293                //en cas de succes appel de la fonction "handleGeisa"
1294                $.ajax( {
1295                            url: "project?methodName=createUserRequest&"+parameters+"&transitionUpper="+ transitionUpper+"&transitionLower="+ transitionLower+"&nbGraph="+ this.nbGraph+"&nomFichier="+this.nomFichier+"&NomRepFileOut="+this.NomRepFileOut,
1296                            success:jQuery.proxy( this.handleGeisa, this )
1297                        } );
1298            },
1299
1300
1301            //requête pour interrogation de la base de données des transitions
1302            requestTransition: function()
1303            {
1304
1305                var  nbMolecules=0;
1306
1307                //Récupération du spectral range
1308                var spectralRangeLower = $("#rangeLower").val();
1309                var spectralRangeUpper = $("#rangeUpper").val();
1310
1311                //Récupération des isotopes sélectionnés
1312                var inputs = document.getElementsByTagName( 'input' );
1313                var count = inputs.length;
1314                var isotopesSelectedNameArray = new Array();
1315                var i=0;
1316
1317                for( i = 0; i < count; i++ )
1318                {
1319                    var input = inputs.item( i );
1320                    //ne prendre que les isotopes sélectionnés dans la base de données sélectionnée  (rechercher des id du type :  "chk-ch3cn-GEISA-11")
1321                    if( input.type == 'checkbox' && input.checked == true && input.id.indexOf("chk-")!= -1 && input.id.indexOf(this.selectDatabase.getValue())!= -1)
1322                    {
1323                        var molN=input.value;
1324                        var molN1=molN.replace("_", ":");
1325                        //tous les isotopes sélectionnés sont placés dans un tableau
1326                        isotopesSelectedNameArray.push(molN1);
1327                    }
1328
1329                    //récupération du nombre de molécules sélectionnées
1330                    if( input.type == 'checkbox' && input.checked == true && input.id.indexOf("all-")!= -1 && input.id.indexOf(this.selectDatabase.getValue())!= -1)
1331                    {
1332                       nbMolecules =  nbMolecules + 1;
1333                    }
1334
1335                }
1336                //alert ("nbMolecules"+nbMolecules);
1337                //si le nombre de molécule sélectionnées est supérieure Ã  1 les menus des transition sont inactifs
1338                if (nbMolecules > 1)
1339                {
1340                    //ajoute une classe à celle déjà existante de transitionUpper
1341                    $("#transitionUpper").addClass("notActiveText");
1342                    $("#transitionLower").addClass("notActiveText");
1343                }
1344                else
1345                {
1346                    $("#transitionUpper").removeClass("notActiveText");
1347                    $("#transitionLower").removeClass("notActiveText");
1348                }
1349
1350
1351                //On ne fait appel à la BDD des transitions    et si au plus 1 molécule est sélectionnée
1352                if (nbMolecules == 1 )
1353                {
1354
1355
1356                    $.ajax( {
1357                                url: "project?methodName=getTransitionByIsotopeName&isotopesSelectedNameArray="+isotopesSelectedNameArray+"&geisaSelectedDatabase="+this.selectDatabase.getValue2()+"&spectralRangeLower="+spectralRangeLower+"&spectralRangeUpper="+spectralRangeUpper,
1358                                success:jQuery.proxy( this.handleRequestTransition, this ),
1359                                error: jQuery.proxy( this.handleErrorRequestTransition, this )
1360                            } );
1361
1362                }
1363                else
1364                {
1365                    //pour réinitialiser le menu déroulant si aucune ou plusieurs molécules sont sélectionnées
1366                    document.getElementById("transition2").length=0;
1367                    //this.selectTransitionUpper.clear();
1368                    document.getElementById("transition1").length=0;
1369
1370                    if (nbMolecules == 0 )
1371                    {
1372                        this.selectTransitionLower.append($( document.createElement( "option" ) ).attr( {value:"-1", text:"Select a molecule", selected:"selected"} ));
1373                        this.selectTransitionUpper.append($( document.createElement( "option" ) ).attr( {value:"-1", text:"Select a molecule", selected:"selected"} ));
1374                        //pour forcer à afficher le premier élément (et non le premier élément précédent)
1375                        //this.selectTransitionLower.selectFirst();
1376                        //this.selectTransitionUpper.selectFirst();
1377                    }
1378
1379                    if (nbMolecules > 1 )
1380                    {
1381
1382                        this.selectTransitionLower.append($( document.createElement( "option" ) ).attr( {value:"-1", text:"", selected:"selected", disabled:"disabled"} ));
1383                        this.selectTransitionUpper.append($( document.createElement( "option" ) ).attr( {value:"-1", text:"", selected:"selected", disabled:"disabled"} ));
1384                        //pour forcer à afficher le premier élément (et non le premier élément précédent)
1385                        //this.selectTransitionLower.selectFirst();
1386                        //this.selectTransitionUpper.selectFirst();
1387                        //ajoute une classe à celle déjà existante de transitionUpper
1388                        $("#transitionUpper").addClass("notActiveText");
1389                        $("#transitionLower").addClass("notActiveText");
1390                    }
1391                }
1392            },
1393
1394
1395
1396
1397            //requête pour interrogation de la base de données des transitions en fonction d'une transition lower
1398            requestTransitionByTransitionLower: function()
1399            {
1400                var context  = this[0];
1401                //exemple transitionLower="                      000" : il y a 25 caractÚres dans chaque transition
1402                 context.transitionLower = this[1];
1403
1404                //Récupération de la Base Geisa sélectionnée
1405                var GeisaSelectedDatabase = context.selectDatabase.getValue();
1406
1407                //Récupération du spectral range
1408                var spectralRangeLower = $("#rangeLower").val();
1409                var spectralRangeUpper = $("#rangeUpper").val();
1410
1411                //Récupération des isotopes sélectionnés
1412                var inputs = document.getElementsByTagName( 'input' );
1413                var count = inputs.length;
1414                var isotopesSelectedNameArray = new Array();
1415                var i=0;
1416
1417                for( i = 0; i < count; i++ )
1418                {
1419                    var input = inputs.item( i );
1420                    //ne prendre que les isotopes sélectionnés dans la base de données sélectionnée  (rechercher des id du type :  "chk-ch3cn-GEISA-11")
1421                    if( input.type == 'checkbox' && input.checked == true && input.id.indexOf("chk-")!= -1 && input.id.indexOf(context.selectDatabase.getValue())!= -1)
1422                    {
1423                        var molN=input.value;
1424                        var molN1=molN.replace("_", ":");
1425                        //tous les isotopes sélectionnés sont placés dans un tableau
1426                        isotopesSelectedNameArray.push(molN1);
1427                    }
1428
1429                }
1430
1431                 //le passage de javascript Ã  java par ajax transforme les + en espace donc transformation des + en plus et dans le controller on fait l'inverse
1432                 var transitionLowerReplaced = context.transitionLower.replace(/\+/g,"plus");
1433
1434                //Appel Ã  la BDD
1435
1436                $.ajax( {
1437                            url: "project?methodName=getTransitionByIsotopeNameByTransitionLower&isotopesSelectedNameArray="+isotopesSelectedNameArray+"&geisaSelectedDatabase="+context.selectDatabase.getValue2()+"&spectralRangeLower="+spectralRangeLower+"&spectralRangeUpper="+spectralRangeUpper+"&transitionLower="+transitionLowerReplaced,
1438                            success:jQuery.proxy( context.handleRequestTransitionByTransitionLower, context)
1439                        } );
1440
1441
1442
1443            },
1444
1445
1446            //requête pour interrogation de la base de données des transitions en fonction d'une transition upper
1447            requestTransitionByTransitionUpper: function()
1448            {
1449                var context  = this[0];
1450                //exemple transitionLower="                      000" : il y a 25 caractÚres dans chaque transition
1451                 context.transitionUpper = this[1];
1452
1453                //Récupération de la Base Geisa sélectionnée
1454                var GeisaSelectedDatabase = context.selectDatabase.getValue();
1455
1456                //Récupération du spectral range
1457                var spectralRangeLower = $("#rangeLower").val();
1458                var spectralRangeUpper = $("#rangeUpper").val();
1459
1460                //Récupération des isotopes sélectionnés
1461                var inputs = document.getElementsByTagName( 'input' );
1462                var count = inputs.length;
1463                var isotopesSelectedNameArray = new Array();
1464                var i=0;
1465
1466                for( i = 0; i < count; i++ )
1467                {
1468                    var input = inputs.item( i );
1469                    //ne prendre que les isotopes sélectionnés dans la base de données sélectionnée  (rechercher des id du type :  "chk-ch3cn-GEISA-11")
1470                    if( input.type == 'checkbox' && input.checked == true && input.id.indexOf("chk-")!= -1 && input.id.indexOf(context.selectDatabase.getValue())!= -1)
1471                    {
1472                        var molN=input.value;
1473                        var molN1=molN.replace("_", ":");
1474                        //tous les isotopes sélectionnés sont placés dans un tableau
1475                        isotopesSelectedNameArray.push(molN1);
1476                    }
1477
1478                }
1479                //le passage de javascript Ã  java par ajax transforme les + en espace donc transformation des + en plus et dans le controller on fait l'inverse
1480                var transitionUpperReplaced = context.transitionUpper.replace(/\+/g,"plus");
1481
1482                //Appel Ã  la BDD
1483                $.ajax( {
1484                            url: "project?methodName=getTransitionByIsotopeNameByTransitionUpper&isotopesSelectedNameArray="+isotopesSelectedNameArray+"&geisaSelectedDatabase="+context.selectDatabase.getValue2()+"&spectralRangeLower="+spectralRangeLower+"&spectralRangeUpper="+spectralRangeUpper+"&transitionUpper="+transitionUpperReplaced,
1485                            success:jQuery.proxy( context.handleRequestTransitionByTransitionUpper, context)
1486                        } );
1487
1488
1489
1490            },
1491
1492
1493
1494//            requestTransition: function()
1495//            {
1496//                $.ajax( {
1497//                            url: "project?methodName=transition&transitionValue="+ this.selectTransitionUpper.getValue(),
1498//                            success:jQuery.proxy( this.handleRequestTransition, this )
1499//                        } );
1500//            },
1501
1502            // HANDLES ******************************************************** = retours ajax
1503            //affichage sur l'interface
1504
1505            handleGeisa: function( result )
1506            {
1507
1508                 //nom du répertoire : exemple de retour de valeur du controleur
1509                //this.nb = jQuery.parseJSON( result ).nb;
1510                //this.NomRepFileOut = jQuery.parseJSON( result ).NomRepFileOut;
1511
1512                //chemin court de l'image
1513                this.pathImg = "<%=Controller.PATH_IMAGES%>"+this.NomRepFileOut;
1514
1515
1516                //Pour tracer le bon nombre de graphe et de bouton download
1517                var i=1;
1518                var content="";
1519                //bouton  "Download All"  si il y a plus d'un graph
1520                if (this.nbGraph > 1)
1521                {
1522                    content = "<a href=project?methodName=downloadFile&fileName=" +this.NomRepFileOut + "GEISA.tar&fileNameToDisplay=GEISA.tar><button class='dataProtocolDownloadButton'>Download All</button></a>";
1523                }
1524                //tracer chaque graphe avec son bouton  download associé
1525                for (i=1; i<this.nbGraph+1; i++) {
1526                    //content = content + '<img src=' + this.pathImg + "graph" + this.nb +"-"+i+ ".png"+ ' /><a href="project?methodName=downloadFile&fileName='  + "graph" + this.nb+"-"+i + ".png"+ '"><button class="dataProtocolDownloadButton">Download</button></a>';
1527                    content = content +'<img src=' + this.pathImg + this.nomFichier +"-"+i+ ".png"+ ' /><a href="project?methodName=downloadFile&fileName=' +this.NomRepFileOut + this.nomFichier+"-"+i + ".png&fileNameToDisplay="+this.nomFichier+"-"+i + ".png"+ '"><button class="dataProtocolDownloadButton">Download</button></a>';
1528                }
1529
1530                this.displayWindow(content);
1531            },
1532
1533
1534            handleRequestTransition: function( result )
1535            {
1536
1537
1538//                var transitions = jQuery.parseJSON( result ).transitions;
1539                 var transitionsLower = jQuery.parseJSON( result ).transitionsLower;
1540                 var transitionsUpper = jQuery.parseJSON( result ).transitionsUpper;
1541
1542                //pour vider les menus déroulant des transitions précédentes
1543                // this.selectTransitionLower.clear();
1544                document.getElementById("transition2").length=0;
1545                //this.selectTransitionUpper.clear();
1546                document.getElementById("transition1").length=0;
1547
1548                // this.selectTransitionLower.add('transition', "Choose a transition");
1549                this.selectTransitionLower.append($( document.createElement( "option" ) ).attr( {value:"transition", text:"Choose a transition", disabled:"disabled", selected:"selected"} ));
1550                // this.selectTransitionUpper.add('transition', "Choose a transition");
1551                this.selectTransitionUpper.append($( document.createElement( "option" ) ).attr( {value:"transition", text:"Choose a transition", disabled:"disabled", selected:"selected"} ));
1552                //pour forcer à afficher le premier élément (et non le premier élément précédent)
1553                // this.selectTransitionLower.selectFirst();
1554                // this.selectTransitionUpper.selectFirst();
1555
1556
1557                $.each(transitionsLower, jQuery.proxy( function(index, transitionsLower )
1558                {
1559                   //  this.selectTransitionLower.add(transitionsLower, transitionsLower,jQuery.proxy(this.requestTransitionByTransitionLower, [this, transitionsLower ]));
1560
1561
1562                    this.selectTransitionLower.append($( document.createElement( "option" ) ).attr( {value:transitionsLower, text:transitionsLower} ).bind( 'click', jQuery.proxy(this.requestTransitionByTransitionLower, [this, transitionsLower ])));
1563
1564                }, this));
1565
1566                $.each(transitionsUpper, jQuery.proxy( function(index, transitionsUpper )
1567                {
1568                    //this.selectTransitionUpper.add(transitionsUpper, transitionsUpper,jQuery.proxy(this.requestTransitionByTransitionUpper, [this, transitionsUpper ]));
1569                    this.selectTransitionUpper.append($( document.createElement( "option" ) ).attr( {value:transitionsUpper, text:transitionsUpper} ).bind( 'click', jQuery.proxy(this.requestTransitionByTransitionUpper, [this, transitionsUpper ])));
1570
1571                }, this));
1572
1573            },
1574
1575            //en cas d'erreur dans la requête des transitions ( pas de valeur ou caractÚres à la place de nombres dans champ spectral)
1576            handleErrorRequestTransition :  function()
1577            {
1578             //pour vider les menus déroulant des transitions précédentes
1579                document.getElementById("transition2").length=0;
1580                document.getElementById("transition1").length=0;
1581
1582               this.selectTransitionLower.append($( document.createElement( "option" ) ).attr( {value:"requestError", text:"Choose a transition", disabled:"disabled", selected:"selected"} ));
1583               this.selectTransitionUpper.append($( document.createElement( "option" ) ).attr( {value:"requestError", text:"Choose a transition", disabled:"disabled", selected:"selected"} ));
1584
1585            },
1586
1587            handleRequestTransitionByTransitionLower : function( result )
1588            {
1589                //alert("transitionLower"+this.transitionLower);
1590                var transitionsUpperBis = jQuery.parseJSON( result ).transitionsUpperBis;
1591                //alert("transitionsUpper"+transitionsUpper);
1592
1593                //pour vider les menus déroulant des transitions précédentes
1594               // this.selectTransitionLower.clear();
1595                document.getElementById("transition2").length=0;
1596                //this.selectTransitionUpper.clear();
1597                document.getElementById("transition1").length=0;
1598               // while(0 < document.getElementById("transition1").length)
1599               // {
1600               //     document.getElementById("transition1").options[0] = null;
1601               // }
1602
1603
1604                //this.selectTransitionLower.add(this.transitionLower, this.transitionLower);
1605                this.selectTransitionLower.append($( document.createElement( "option" ) ).attr( {value:"transition", text:"Choose a transition", disabled:"disabled"} ));
1606                this.selectTransitionLower.append($( document.createElement( "option" ) ).attr( {value:this.transitionLower, text:this.transitionLower,  selected:"selected"} ));
1607                //this.selectTransitionUpper.add('transition', "Choose a transition");
1608                //rajout du text "Choose a transition" selectionné en premier mais on ne peut pas cliquer dessus
1609                this.selectTransitionUpper.append($( document.createElement( "option" ) ).attr( {value:"transition", text:"Choose a transition", disabled:"disabled", selected:"selected"} ));
1610
1611
1612                //pour forcer Ã  afficher le premier Ã©lément (et non le premier Ã©lément précédent)
1613                //this.selectTransitionLower.selectFirst();
1614                //this.selectTransitionUpper.selectFirst();
1615
1616
1617
1618                $.each(transitionsUpperBis, jQuery.proxy( function(index, transitionsUpperBis )
1619                {
1620                   // this.selectTransitionUpper.add(transitionsUpper, transitionsUpper);
1621                     this.selectTransitionUpper.append($( document.createElement( "option" ) ).attr( {value:transitionsUpperBis, text:transitionsUpperBis} ));
1622
1623                }, this));
1624
1625            },
1626
1627
1628            handleRequestTransitionByTransitionUpper : function( result )
1629            {
1630               // alert("transitionUpper"+this.transitionUpper);
1631                var transitionsLowerBis = jQuery.parseJSON( result ).transitionsLowerBis;
1632                //alert("transitionsLower"+transitionsLower);
1633
1634                //pour vider les menus déroulant des transitions précédentes
1635               // this.selectTransitionLower.clear();
1636                document.getElementById("transition2").length=0;
1637                //this.selectTransitionUpper.clear();
1638                document.getElementById("transition1").length=0;
1639
1640               // this.selectTransitionLower.add('transition', "Choose a transition");
1641                this.selectTransitionLower.append($( document.createElement( "option" ) ).attr( {value:"transition", text:"Choose a transition", disabled:"disabled", selected:"selected"} ));
1642
1643               // this.selectTransitionUpper.add(this.transitionUpper, this.transitionUpper);
1644                this.selectTransitionUpper.append($( document.createElement( "option" ) ).attr( {value:"transition", text:"Choose a transition", disabled:"disabled"} ));
1645                this.selectTransitionUpper.append($( document.createElement( "option" ) ).attr( {value:this.transitionUpper, text:this.transitionUpper,  selected:"selected"} ));
1646
1647
1648                //pour forcer Ã  afficher le premier Ã©lément (et non le premier Ã©lément précédent)
1649                //this.selectTransitionLower.selectFirst();
1650                //this.selectTransitionUpper.selectFirst();
1651
1652
1653
1654                $.each(transitionsLowerBis, jQuery.proxy( function(index, transitionsLowerBis )
1655                {
1656                    //this.selectTransitionLower.add(transitionsLower, transitionsLower);
1657                    this.selectTransitionLower.append($( document.createElement( "option" ) ).attr( {value:transitionsLowerBis, text:transitionsLowerBis} ));
1658                }, this));
1659
1660            },
1661            // EVENTS ********************************************************
1662            //
1663            //Action quand on clique sur l'onglet  DatabaseContents
1664            onClickDatabaseContents: function()
1665            {
1666                //change la couleur des onglets
1667                this.ntabContents.active();
1668                this.ntabGlobal.inactive();
1669                this.ntabComparison.inactive();
1670                //change le titre de la page en fonction de l'onglet cliqué
1671                document.getElementById('titlePage').innerHTML = "";
1672                document.getElementById('titlePage').innerHTML = "Graphic vizualisation of the GEISA database";
1673                //Eléments qui apparaissent avec cette option
1674                document.getElementById("informationContents").style.display= "";
1675                document.getElementById("axeY1Gene").style.display= "";
1676                document.getElementById("showAdvancedOptions").style.display= "";
1677                document.getElementById("axeY2Gene").style.display= "";
1678                document.getElementById("drawingOptionsY2").style.display= "";
1679                //Eléments qui disparaissent avec cette option
1680                document.getElementById("informationGlobal").style.display= "none";
1681                document.getElementById("informationComparison").style.display= "none";
1682                document.getElementById("titreDatabase1").style.display= "none";
1683                document.getElementById("titreDatabase2").style.display= "none";
1684                document.getElementById("database2").style.display= "none";
1685                document.getElementById("titreTypePlotY1").style.display= "none";
1686                document.getElementById("titreTypePlotY2").style.display= "none";
1687                document.getElementById("typePlotDatabase2").style.display= "none";
1688                document.getElementById("outputDatabaseComparison").style.display= "none";
1689                //ProblÚme de marge avec le bord du fieldset
1690                $("#database1").removeClass("containerDatabase");
1691                $("#database1").addClass("containerBeginDatabase");
1692            },
1693            //Action quand on clique sur l'onglet   GlobalRepresentation
1694            onClickGlobalRepresentation: function()
1695            {
1696                //change la couleur des onglets
1697                this.ntabGlobal.active();
1698                this.ntabContents.inactive();
1699                this.ntabComparison.inactive();
1700                //change le titre de la page en fonction de l'onglet cliqué
1701                document.getElementById('titlePage').innerHTML = "";
1702                document.getElementById('titlePage').innerHTML = "Global Representation";
1703                //Eléments qui apparaissent avec cette option
1704                document.getElementById("informationGlobal").style.display= "";
1705                //Eléments qui disparaissent avec cette option
1706                document.getElementById("informationContents").style.display= "none";
1707                document.getElementById("informationComparison").style.display= "none";
1708                document.getElementById("titreDatabase1").style.display= "none";
1709                document.getElementById("titreDatabase2").style.display= "none";
1710                document.getElementById("database2").style.display= "none";
1711                document.getElementById("axeY1Gene").style.display= "none";
1712                document.getElementById("titreTypePlotY1").style.display= "none";
1713                document.getElementById("titreTypePlotY2").style.display= "none";
1714                document.getElementById("typePlotDatabase2").style.display= "none";
1715                document.getElementById("showAdvancedOptions").style.display= "none";
1716                document.getElementById("advancedOptions").style.display= "none";
1717                //ProblÚme de marge avec le bord du fieldset
1718                $("#database1").removeClass("containerDatabase");
1719                $("#database1").addClass("containerBeginDatabase");
1720
1721            },
1722            //Action quand on clique sur l'onglet    DatabasesComparison
1723            onClickDatabasesComparison: function()
1724            {
1725                //change la couleur des onglets
1726                this.ntabComparison.active();
1727                this.ntabGlobal.inactive();
1728                this.ntabContents.inactive();
1729                //change le titre de la page en fonction de l'onglet cliqué
1730                document.getElementById('titlePage').innerHTML = "";
1731                document.getElementById('titlePage').innerHTML = "Databases Comparison";
1732                //Eléments qui apparaissent avec cette option
1733                document.getElementById("informationComparison").style.display= "";
1734                document.getElementById("titreDatabase1").style.display= "";
1735                document.getElementById("titreDatabase2").style.display= "";
1736                document.getElementById("database2").style.display= "";
1737                document.getElementById("titreTypePlotY1").style.display= "";
1738                document.getElementById("titreTypePlotY2").style.display= "";
1739                document.getElementById("typePlotDatabase2").style.display= "";
1740                document.getElementById("showAdvancedOptions").style.display= "";
1741                document.getElementById("outputDatabaseComparison").style.display= "";
1742                //Eléments qui disparaissent avec cette option
1743                document.getElementById("informationContents").style.display= "none";
1744                document.getElementById("informationGlobal").style.display= "none";
1745                document.getElementById("axeY2Gene").style.display= "none";
1746                document.getElementById("drawingOptionsY2").style.display= "none";
1747
1748                //ProblÚme de marge avec le bord du fieldset
1749                $("#database1").removeClass("containerBeginDatabase");
1750                $("#database1").addClass("containerDatabase");
1751            },
1752
1753
1754            //affichage de la valeur du spectral range et affichage du bloc des molecules en fonction de la base de donnees selectionnee
1755            onClickSelectDatabase: function(value)
1756            {
1757
1758                if  ('GEISA2011' == value)
1759                {
1760                    //modifier le titre en fonction de la base sélectionnée
1761                    document.getElementById('spectralRangeTitre').innerHTML = "";
1762                    document.getElementById('spectralRangeTitre').innerHTML = "Choosing the spectral range (0 to 35877.030506 cm<sup>-1</sup>) :";
1763
1764                    //remplir les valeurs par défaut
1765                    if($("#rangeLower").val()=="")
1766                        {
1767                            $("#rangeLower").val(0);
1768                        }
1769                    if($("#rangeUpper").val()=="")
1770                        {
1771                            $("#rangeUpper").val(35877.030506);
1772                        }
1773
1774                    //Si les valeur entrées par l'utilisateur ne sont pas correctes, on remet les valeurs des bornes
1775                    if(isNaN(($("#rangeLower").val())) == true || parseFloat( $("#rangeLower").val()) < 0  || parseFloat($("#rangeLower").val()) > 35877.030506)
1776                    {
1777                        $("#rangeLower").val(0);
1778                    }
1779                    if(isNaN(($("#rangeLower").val())) == true || parseFloat( $("#rangeUpper").val()) < 0  || parseFloat($("#rangeUpper").val()) > 35877.030506)
1780                    {
1781                        $("#rangeUpper").val(35877.030506);
1782                    }
1783
1784                    //afficher  le bon bloc de molécules
1785                    document.getElementById( "BDD-GEISA2011" ).style.display = "";
1786                    document.getElementById( "BDD-GEISAIASI2011" ).style.display = "none";
1787                    document.getElementById( "BDD-GEISA2003" ).style.display = "none";
1788                    document.getElementById( "BDD-GEISAIASI2003" ).style.display = "none";
1789                }
1790
1791                if  ('GEISAIASI2011' == value)
1792                {
1793                    document.getElementById('spectralRangeTitre').innerHTML = "";
1794                    document.getElementById('spectralRangeTitre').innerHTML = "Choosing spectral range (599.000793 to 3000.998767 cm<sup>-1</sup>) :";
1795
1796
1797                    //remplir les valeurs par défaut
1798                    if($("#rangeLower").val()=="")
1799                        {
1800                            $("#rangeLower").val(599.000793);
1801                        }
1802                    if($("#rangeUpper").val()=="")
1803                        {
1804                            $("#rangeUpper").val(3000.998767);
1805                        }
1806                    //Si les valeur entrées par l'utilisateur ne sont pas correctes, on remet les valeurs des bornes
1807                    if(isNaN(($("#rangeLower").val())) == true || parseFloat( $("#rangeLower").val()) < 599.000793  || parseFloat($("#rangeLower").val()) > 3000.998767)
1808                    {
1809                        $("#rangeLower").val(599.000793);
1810                    }
1811                    if(isNaN(($("#rangeLower").val())) == true || parseFloat( $("#rangeUpper").val()) < 599.000793  || parseFloat($("#rangeUpper").val()) > 3000.998767)
1812                    {
1813                        $("#rangeUpper").val(3000.998767);
1814                    }
1815
1816                    document.getElementById( "BDD-GEISA2011" ).style.display = "none";
1817                    document.getElementById( "BDD-GEISAIASI2011" ).style.display = "";
1818                    document.getElementById( "BDD-GEISA2003" ).style.display = "none";
1819                    document.getElementById( "BDD-GEISAIASI2003" ).style.display = "none";
1820                }
1821
1822                if  ('GEISA2003' == value)
1823                {
1824                    document.getElementById('spectralRangeTitre').innerHTML = "";
1825                    document.getElementById('spectralRangeTitre').innerHTML = "Choosing the spectral range (0 to 35877.030506 cm<sup>-1</sup>) :";
1826
1827                    //remplir les valeurs par défaut
1828                    if($("#rangeLower").val()=="")
1829                        {
1830                            $("#rangeLower").val(0);
1831                        }
1832                    if($("#rangeUpper").val()=="")
1833                        {
1834                            $("#rangeUpper").val(35877.030506);
1835                        }
1836                    //Si les valeur entrées par l'utilisateur ne sont pas correctes, on remet les valeurs des bornes
1837                    if(isNaN(($("#rangeLower").val())) == true || parseFloat( $("#rangeLower").val()) < 0  || parseFloat($("#rangeLower").val()) > 35877.030506)
1838                    {
1839                        $("#rangeLower").val(0);
1840                    }
1841                    if(isNaN(($("#rangeLower").val())) == true || parseFloat( $("#rangeUpper").val()) < 0  || parseFloat($("#rangeUpper").val()) > 35877.030506)
1842                    {
1843                        $("#rangeUpper").val(35877.030506);
1844                    }
1845
1846                    document.getElementById( "BDD-GEISA2011" ).style.display = "none";
1847                    document.getElementById( "BDD-GEISAIASI2011" ).style.display = "none";
1848                    document.getElementById( "BDD-GEISA2003" ).style.display = "";
1849                    document.getElementById( "BDD-GEISAIASI2003" ).style.display = "none";
1850                }
1851                if  ('GEISAIASI2003' == value)
1852                {
1853                    document.getElementById('spectralRangeTitre').innerHTML = "";
1854                    document.getElementById('spectralRangeTitre').innerHTML = "Choosing spectral range (599.000793 to 3000.998767 cm<sup>-1</sup>) :";
1855
1856                    //remplir les valeurs par défaut
1857                    if($("#rangeLower").val()=="")
1858                        {
1859                            $("#rangeLower").val(599.000793);
1860                        }
1861                    if($("#rangeUpper").val()=="")
1862                        {
1863                            $("#rangeUpper").val(3000.998767);
1864                        }
1865                    //Si les valeur entrées par l'utilisateur ne sont pas correctes, on remet les valeurs des bornes
1866                    if(isNaN(($("#rangeLower").val())) == true || parseFloat( $("#rangeLower").val()) < 599.000793  || parseFloat($("#rangeLower").val()) > 3000.998767)
1867                    {
1868                        $("#rangeLower").val(599.000793);
1869                    }
1870                    if(isNaN(($("#rangeLower").val())) == true || parseFloat( $("#rangeUpper").val()) < 599.000793  || parseFloat($("#rangeUpper").val()) > 3000.998767)
1871                    {
1872                        $("#rangeUpper").val(3000.998767);
1873                    }
1874
1875                    document.getElementById( "BDD-GEISA2011" ).style.display = "none";
1876                    document.getElementById( "BDD-GEISAIASI2011" ).style.display = "none";
1877                    document.getElementById( "BDD-GEISA2003" ).style.display = "none";
1878                    document.getElementById( "BDD-GEISAIASI2003" ).style.display = "";
1879                }
1880
1881                //mettre a jour le menu déroulant des transitions en fonction des isotopes sélectionnés, de la longueur d'onde et de la base geisa
1882                this.requestTransition();
1883            },
1884
1885            //Pour sélectionner-desélectionner tous les isotopes
1886            selectAll: function()
1887            {
1888                var inputs = document.getElementsByTagName( 'input' );
1889                var count = inputs.length;
1890                var i=0;
1891
1892
1893                if( this.selectButton.getValue() == 'Select all molecules')
1894                {
1895                    for( i = 0; i < count; i++ )
1896                    {
1897                        var  input = inputs.item( i );
1898                        if( input.type == 'checkbox' )
1899                        {
1900                            input.checked = true;
1901                        }
1902                    }
1903                    this.selectButton.setValue("Unselect all molecules");
1904
1905                }
1906                else
1907                {
1908                    for( i = 0; i < count; i++ )
1909                    {
1910                        var  input = inputs.item( i );
1911                        if( input.type == 'checkbox' )
1912                        {
1913                            input.checked = false;
1914                        }
1915                    }
1916                    this.selectButton.setValue("Select all molecules");
1917                }
1918
1919              //mettre a jour le menu déroulant des transitions en fonction des isotopes sélectionnés, de la longueur d'onde et de la base geisa
1920                this.requestTransition();
1921
1922            },
1923
1924            //Pour montrer-cacher tous les isotopes
1925            viewAll: function()
1926            {
1927                var divs = document.getElementsByTagName( 'div' );
1928                var count = divs.length;
1929                var i = 0;
1930                if( this.showButton.getValue() == 'View all isotopologues')
1931                {
1932                    for( i = 0; i < count; i++ )
1933                    {
1934                        //ouvrir que les div dont l'id contient la chaine Cache
1935                        if (divs.item(i).id.indexOf("Cache") != -1) {
1936                            divs.item(i).style.display = "" ;
1937                        }
1938                    }
1939                    this.showButton.setValue("Hide all isotopologues");
1940                }
1941                else
1942                {
1943                    for( i = 0; i < count; i++ )
1944                    {
1945                        //fermer que les div dont l'id contient la chaine Cache
1946                        if (divs.item(i).id.indexOf("Cache") != -1) {
1947                            divs.item(i).style.display = "none" ;
1948                        }
1949                    }
1950                    this.showButton.setValue("View all isotopologues");
1951                }
1952            },
1953
1954            //Actions déclenchées quand on clique sur le nom d'une molécule
1955            cliquetout: function()
1956            {
1957                var context = this[0];
1958                // exemple :moleculeName = ch3ch
1959                var moleculeName = this[1];
1960                var bddVersion = this[2];
1961                var inputs = document.getElementsByTagName( 'input' );
1962                var count = inputs.length;
1963                var i=0;
1964                for( i = 0; i < count; i++ )
1965                {
1966                    var  input = inputs.item( i );
1967                    //cliquer toutes les molécules et isotopes du meme nom dans toutes les bases
1968                    //if( input.type == 'checkbox' && ( input.id == ('chk-' + name + '-GEISA-11') || input.id == ('chk-' + name + '-GEISA-03') || input.id == ('chk-' + name + '-GEISA-IASI-11') || input.id == ('chk-' + name + '-GEISA-IASI-03')
1969                    // || input.id == (name + '-all-GEISA-03') || input.id == (name + '-all-GEISA-11') || input.id == (name + '-all-GEISA-IASI-03') || input.id == (name + '-all-GEISA-IASI-11')))
1970
1971                    if( input.type == 'checkbox' && ( input.id.indexOf('chk-' + moleculeName + '_') != -1 || input.id.indexOf('all-'+moleculeName+'-')!= -1 ))
1972
1973                    {
1974                        input.checked = document.getElementById( 'all-'+ moleculeName + '-' + bddVersion ).checked;
1975                    }
1976                }
1977                //mettre a jour le menu déroulant des transitions en fonction des isotopes sélectionnés, de la longueur d'onde et de la base geisa
1978                context.requestTransition();
1979            },
1980
1981            //actions déclenchées quand on clique sur un isotope
1982            cliqueIsotope: function()
1983            {
1984                var context = this[0];
1985                //exemple isotopeName = ch3cn_134
1986                var isotopeName = this[1];
1987                // exemple  moleculeName= ch3cn
1988                var moleculeName = this[2];
1989                var bddVersion = this[3];
1990                var inputs = document.getElementsByTagName( 'input' );
1991                var count = inputs.length;
1992                var i = 0;
1993                for( i = 0; i < count; i++ )
1994                {
1995                    input = inputs.item( i );
1996
1997                    //id=chk-ch3cn_234-GEISA2011
1998                    //cliquer ou decliquer le meme isotope dans toutes les bases
1999                    if( input.type == 'checkbox' &&  input.id.indexOf('chk-' + isotopeName) != -1)
2000                    {
2001                        input.checked = document.getElementById( 'chk-' + isotopeName + '-' + bddVersion ).checked;
2002
2003                    }
2004                     // id=all-ch3cn-GEISA2011
2005                    //pour décocher la case de la molecule quand on décoche un isotope
2006                   // if( input.type == 'checkbox' && input.id.indexOf('all-'+ moleculeName) != -1 && input.checked == true )
2007                    // {
2008                    //     input.checked = false;
2009                    // }
2010                }
2011
2012
2013                //pour cocher molecule quand on clique sur un isotope et décocher molécule quand tous les isotopes de la molécule sont décochés
2014                var nbIsotopeSelected=0;
2015                var input = "";
2016                var j=0;
2017                var k=0;
2018
2019                //tableau contenant toutes les valeurs du menu déroulant  "choosing Database"
2020                var databaseValues=context.selectDatabase.getValues();
2021                //taille du menu déroulant
2022                var nbdatabaseValues=context.selectDatabase.getSize();
2023
2024                //pour chaque base faire ...
2025                for( j = 0; j < nbdatabaseValues ; j++ )
2026                {
2027                    var nbIsotopeSelected=0;
2028                    //calcul du nombre d'isotopes sélectionnés pour une molécule précise  et une base de données
2029                    for( k = 0; k < count; k++ )
2030                    {
2031                        input = inputs.item( k );
2032                        if( input.type == 'checkbox' &&  input.id.indexOf('chk-'+moleculeName+'_') != -1  && input.id.indexOf(databaseValues[j]) != -1 && input.checked == true )
2033                        {
2034                            nbIsotopeSelected=nbIsotopeSelected+1;
2035                        }
2036
2037                    }
2038                    //si aucun isotope est sélectionné et que la molécule existe dans cette base alors on décoche la molécule
2039                    if ( nbIsotopeSelected == 0 && document.getElementById('all-'+ moleculeName+'-'+databaseValues[j]))
2040                    {
2041                        document.getElementById('all-'+ moleculeName+'-'+databaseValues[j]).checked=false;
2042                    }
2043                    //si au moins unisotope est sélectionné et que la molécule existe dans cette base alors on coche la molécule
2044                    if ( nbIsotopeSelected > 0 && document.getElementById('all-'+ moleculeName+'-'+databaseValues[j]))
2045                    {
2046                        document.getElementById('all-'+ moleculeName+'-'+databaseValues[j]).checked=true;
2047                    }
2048                }
2049
2050
2051                //mettre a jour le menu déroulant des transitions en fonction des isotopes sélectionnés, de la longueur d'onde et de la base geisa
2052                context.requestTransition();
2053
2054            },
2055
2056
2057
2058            //pour cacher ou voir les isotopes d'une molecule
2059            visibilite: function(  )
2060            {
2061                var context = this[0];
2062                var thingId = this[1];
2063                var divs = document.getElementsByTagName( 'div' );
2064                var count = divs.length;
2065                var i = 0;
2066                for( i = 0; i < count; i++ )
2067                {
2068                    var div = divs.item( i );
2069
2070
2071                    if  (  div.id ==   thingId)
2072                    {
2073                        if( div.style.display == "none" )
2074                        {
2075                            div.style.display = "";
2076                        }
2077                        else
2078                        {
2079                            div.style.display = "none";
2080                        }
2081                    }
2082                }
2083            },
2084
2085             //Faire apparatre ou disparaitre le bloc "advanced options" quand on clique sur le lien "show advanced options"
2086             onClickShowAdvancedOptions: function()
2087            {
2088                //document.getElementById( "advancedOptions" ).style.display = "none";
2089                  if( document.getElementById( "advancedOptions" ).style.display == "none" )
2090                        {
2091                            document.getElementById( "advancedOptions" ).style.display = "";
2092                            document.getElementById( "aShowHide" ).innerHTML = "";
2093                            document.getElementById( "aShowHide" ).innerHTML = "Hide advanced options";
2094                        }
2095                        else
2096                        {
2097                            document.getElementById( "advancedOptions" ).style.display = "none";
2098                            document.getElementById( "aShowHide" ).innerHTML = "";
2099                            document.getElementById( "aShowHide" ).innerHTML = "Show advanced options";
2100                        }
2101            },
2102
2103            //Alerter l'utilisateur si aucune transition n'a Ã©té trouvée
2104            OnclickVerifTransition : function()
2105            {
2106                //si l'utilisateur change les valeurs de spectral range et clique directement sur le menu déroulant des transitions
2107                //le menu déroulant ne se met pas Ã  jour avant de faire la vérification
2108                this.containerFormSpectralRangeLower.blur();
2109                this.containerFormSpectralRangeUpper.blur();
2110
2111
2112
2113
2114                //si il n'y a qu'un Ã©lément dans les menu déroulant transition upper et lower et que la valeur est "transition"
2115                //cas où la requete utilisateur est correct mais il n'y a pas de transition pour cette molecule t ce domaine spectral
2116                if (document.getElementById('transition1').length==1 && document.getElementById('transition1').options[0].value=="transition" && document.getElementById('transition2').length==1 && document.getElementById('transition2').options[0].value=="transition")
2117                {
2118                   // document.getElementById( "transitionUpper" ).style.display = "none";
2119                   // document.getElementById( "transitionLower" ).style.display = "none";
2120                    this.selectTransitionUpper.blur();
2121                    this.selectTransitionLower.blur();
2122                    alert("Change isotopologues selection or spectral range values to obtain transition values");
2123
2124                    //document.getElementById( "transitionUpper" ).style.display = "";
2125                    //document.getElementById( "transitionLower" ).style.display = "";
2126                }
2127                //si il n'y a qu'un Ã©lément dans les menu déroulant transition upper et lower et que la valeur est "transition"
2128                //cas où la requete est fausse = les valeurs du domaine spectral sont fausses
2129                if (document.getElementById('transition1').length==1 && document.getElementById('transition1').options[0].value=="requestError" && document.getElementById('transition2').length==1 && document.getElementById('transition2').options[0].value=="requestError")
2130                {
2131                    this.selectTransitionUpper.blur();
2132                    this.selectTransitionLower.blur();
2133                 //document.getElementById( "transitionUpper" ).style.display = "none";
2134                // document.getElementById( "transitionLower" ).style.display = "none";
2135                 alert("Change spectral range values to obtain transition values");
2136                // document.getElementById( "transitionUpper" ).style.display = "";
2137                // document.getElementById( "transitionLower" ).style.display = "";
2138                }
2139
2140
2141            },
2142
2143            onBlurInputMeanValue: function()
2144            {
2145                //si step est sup a 0,   ajout d'une ligne Z aux parametres Y1 et y2  si elle n'est pas déjà présente
2146                // !this.selectTraceAxeY1.content('Z') indique que "Z" n'exite pas dans le menu déroulant  selectTraceAxeY1
2147                if  ($("#meanValue2").val() > 0 && !this.selectTraceAxeY1.content('Z'))
2148               //  if  ($("#meanValue2").val() > 0 && document.getElementById('selectAxeY1').options[document.getElementById('selectAxeY1').selectedIndex].value != "Z")
2149                {
2150
2151                    this.selectTraceAxeY1.add( 'Z', "Number of lines ", jQuery.proxy(this.onClickSelectTraceAxeY1, this ) );
2152                    this.selectTraceAxeY2.add( 'Z', "Number of lines ", jQuery.proxy(this.onClickSelectTraceAxeY2, this ) );
2153                    //this.selectTraceAxeY1.append($( document.createElement( "option" ) ).attr( {value:"Z", text:"Number of lines"} ).bind( 'click', jQuery.proxy(this.onClickSelectTraceAxeY1, [this, "Z" ])));
2154                    //this.selectTraceAxeY2.append($( document.createElement( "option" ) ).attr( {value:"Z", text:"Number of lines"} ).bind( 'click', jQuery.proxy(this.onClickSelectTraceAxeY2, [this, "Z" ])));
2155                }
2156                //si step = a 0     et autres valeurs (a faire) , retrait de la ligne Z aux parametres Y1 et y2
2157                if  ($("#meanValue2").val() == 0)
2158                {
2159                    this.selectTraceAxeY1.remove( 'Z', "Number of lines ", jQuery.proxy(this.onClickSelectTraceAxeY1, this ) );
2160                    this.selectTraceAxeY2.remove( 'Z', "Number of lines ", jQuery.proxy(this.onClickSelectTraceAxeY2, this ) );
2161                    //Selection par defaut du 1er element (pour que  "Number of lines"  ne soit plus selectionne par defaut si il n'existe plus)
2162                    this.selectTraceAxeY1.selectFirst();
2163                    this.selectTraceAxeY2.selectFirst();
2164                                     }
2165            },
2166
2167            onClickSelectNbCourbes: function(value)
2168            {
2169              var context  = this[0];
2170              var optionVal = this[1];
2171
2172               //si plusieurs courbes choisis pour les isotopes et ou molecules, les choix pour Y2 sont inactifs
2173                if  ('cm' == value || 'ci' == value)
2174                //if  ('cm' == optionVal || 'ci' == optionVal)
2175                {
2176                    //transformer le texte en gris
2177                    document.getElementById("axeY2Titre").className = "notActiveText";
2178                    document.getElementById("scaleY2Titre").className = "notActiveText";
2179                    document.getElementById("typePlotY2Titre").className = "notActiveText";
2180                    //pour rendre le menu déroulant inactif
2181                    this.selectTraceAxeY2.disable();
2182                    this.selectScaleY2.disable();
2183                    this.selectTypeTraceY2.disable();
2184                    //document.getElementById("selectAxeY2" ).disabled=true;
2185                    //document.getElementById("selectScaleY2" ).disabled=true;
2186                    //document.getElementById("selectTypePlotY2" ).disabled=true;
2187
2188                }
2189                //si une seule courbe choisie pour les isotopes et ou molecules, les choix pour Y2 sont actifs
2190                if  ('ca' == value || 'gm' == value || 'gi' == value)
2191                //if  ('ca' == optionVal || 'gm' == optionVal || 'gi' == optionVal)
2192                {
2193                    //remet le texte en couleur active
2194                    document.getElementById("axeY2Titre").className = "activeText";
2195                    //rendre actif l'echelle que si l'intensite est choisie dans les parametres
2196                    if (this.selectTraceAxeY2.getValue() == 'B')
2197                    {
2198                        document.getElementById("scaleY2Titre").className = "activeText";
2199                    }
2200                    //rendre actif le type de plot si ce n'est pas la valeur none qui est choisie
2201                    if (this.selectTraceAxeY2.getValue() != 'no')
2202                    {
2203                        document.getElementById("typePlotY2Titre").className = "activeText";
2204                    }
2205                    //pour rendre les menu déroulant actifs
2206                    this.selectTraceAxeY2.enable();
2207                    //rendre actif l'echelle que si l'intensite est choisie dans les parametres
2208                    if (this.selectTraceAxeY2.getValue() == 'B')
2209                    {
2210                        this.selectScaleY2.enable();
2211                    }
2212                    //rendre actif le type de plot si ce n'est pas la valeur none qui est choisie
2213                    if (this.selectTraceAxeY2.getValue() != 'no')
2214                    {
2215                        this.selectTypeTraceY2.enable();
2216                    }
2217
2218                    //remet le texte en couleur active
2219                   // document.getElementById("axeY2Titre").className = "activeText";
2220                    //pour rendre les menu déroulant actifs
2221                   // document.getElementById("selectAxeY2" ).disabled=false;
2222                    //rendre actif l'echelle que si l'intensite est choisie dans les parametres
2223                   // if (document.getElementById('selectAxeY2').options[document.getElementById('selectAxeY2').selectedIndex].value == 'B')
2224                   // {
2225                   //     document.getElementById("scaleY2Titre").className = "activeText";
2226                    //    document.getElementById("selectScaleY2" ).disabled=false;
2227                    //}
2228                    //rendre actif le type de plot si ce n'est pas la valeur none qui est choisie
2229                   // if (document.getElementById('selectAxeY2').options[document.getElementById('selectAxeY2').selectedIndex].value != 'no')
2230                    //{
2231                    //    document.getElementById("typePlotY2Titre").className = "activeText";
2232                    //    document.getElementById("selectTypePlotY2" ).disabled=false;
2233                    //}
2234                }
2235
2236
2237            },
2238
2239
2240            onClickSelectTraceAxeY1: function(value)
2241            {
2242                //si intensite n'est pas choisi pour Y1, le type d'échelle est inactif
2243                if  (this.selectTraceAxeY1.getValue() != 'B')
2244               // if  ( document.getElementById('selectAxeY1').options[document.getElementById('selectAxeY1').selectedIndex].value != 'B')
2245                {
2246                    //transformer le texte en gris
2247                    document.getElementById("scaleY1Titre").className = "notActiveText";
2248                    //pour rendre le menu déroulant inactif
2249                    this.selectScaleY1.disable();
2250                   //  document.getElementById("selectScaleY1" ).disabled=true;
2251                }
2252                //si intensite est  choisi pour Y1, le type d'échelle est actif
2253                if  (this.selectTraceAxeY1.getValue() == 'B')
2254                //if  ( document.getElementById('selectAxeY1').options[document.getElementById('selectAxeY1').selectedIndex].value == 'B')
2255                {
2256                    //transformer le texte en gris
2257                    document.getElementById("scaleY1Titre").className = "activeText";
2258                    //pour rendre le menu déroulant inactif
2259                    this.selectScaleY1.enable();
2260                   // document.getElementById("selectScaleY1" ).disabled=false;
2261                }
2262            },
2263
2264            onClickSelectTraceAxeY2: function(value)
2265            {
2266                //si intensite n'est pas choisi pour Y2, le type d'échelle est inactif
2267                if  (this.selectTraceAxeY2.getValue() != 'B')
2268                 //if  ( document.getElementById('selectAxeY2').options[document.getElementById('selectAxeY2').selectedIndex].value != 'B')
2269                {
2270                    //transformer le texte en gris
2271                    document.getElementById("scaleY2Titre").className = "notActiveText";
2272                    //pour rendre le menu déroulant inactif
2273                    this.selectScaleY2.disable();
2274                    //document.getElementById("selectScaleY2" ).disabled=true;
2275                }
2276                //si intensite est  choisi pour Y2, le type d'échelle est actif
2277                if  (this.selectTraceAxeY2.getValue() == 'B')
2278               //if  ( document.getElementById('selectAxeY2').options[document.getElementById('selectAxeY2').selectedIndex].value == 'B')
2279                {
2280                    //transformer le texte en foncé
2281                    document.getElementById("scaleY2Titre").className = "activeText";
2282                    //pour rendre le menu déroulant actif
2283                    this.selectScaleY2.enable();
2284                    //document.getElementById("selectScaleY2" ).disabled=false;
2285                }
2286                //si aucun parametre est  choisi pour Y2, le type de plot est inactif
2287                if  (this.selectTraceAxeY2.getValue() == 'no')
2288                //if  ( document.getElementById('selectAxeY2').options[document.getElementById('selectAxeY2').selectedIndex].value == 'no')
2289                {
2290                    //transformer le texte en gris
2291                    document.getElementById("typePlotY2Titre").className = "notActiveText";
2292                    //pour rendre le menu déroulant inactif
2293                   this.selectTypeTraceY2.disable();
2294                    // document.getElementById("selectTypePlotY2" ).disabled=true;
2295                }
2296                //si un parametre est  choisi pour Y2, le type de plot est actif
2297               if  (this.selectTraceAxeY2.getValue() != 'no')
2298                // if  ( document.getElementById('selectAxeY2').options[document.getElementById('selectAxeY2').selectedIndex].value != 'no')
2299                {
2300                    //transformer le texte en foncé
2301                    document.getElementById("typePlotY2Titre").className = "activeText";
2302                    //pour rendre le menu déroulant actif
2303                    this.selectTypeTraceY2.enable();
2304                   //document.getElementById("selectTypePlotY2" ).disabled=false;
2305                }
2306
2307            },
2308
2309            //bouton reset de toute la page  (rechargement de la page)
2310            resetPage: function()
2311            {
2312                //location.reload(); //pas appliquée car supprime la fenêtre graphique
2313
2314                //reset du choix de la base de données
2315                // selectFirst : affiche le premier élément de la liste
2316                //true : active la fonction associée au bouton
2317                //this.selectDatabase.selectFirst( true );
2318
2319                //cacher tous les isotopes
2320                var divs = document.getElementsByTagName( 'div' );
2321                var count = divs.length;
2322                var i = 0;
2323
2324                for( i = 0; i < count; i++ )
2325                {
2326                    //fermer que les div dont l'id contient la chaine Cache
2327                    if (divs.item(i).id.indexOf("Cache") != -1) {
2328                        divs.item(i).style.display = "none" ;
2329                    }
2330                }
2331                this.showButton.setValue("View all isotopologues");
2332
2333                //déselectionner tous les isotopes
2334                var inputs = document.getElementsByTagName( 'input' );
2335                var count = inputs.length;
2336                var i=0;
2337
2338                for( i = 0; i < count; i++ )
2339                {
2340                    var  input = inputs.item( i );
2341                    if( input.type == 'checkbox' )
2342                    {
2343                        input.checked = false;
2344                    }
2345                }
2346                this.selectButton.setValue("Select all isotopologues");
2347
2348                 //spectral range
2349                 //remettre les valeurs par défaut en fonction de la base sélectionnée :
2350                switch (this.selectDatabase.getValue()) {
2351                    case 'GEISA2003':
2352                        $("#rangeLower").val(0);
2353                        $("#rangeUpper").val(35877.030506);
2354                        break;
2355                    case 'GEISA2011':
2356                        $("#rangeLower").val(0);
2357                        $("#rangeUpper").val(35877.030506);
2358                        break;
2359                    case 'GEISAIASI2003':
2360                        $("#rangeLower").val(599.000793);
2361                        $("#rangeUpper").val(3000.998767);
2362                        break;
2363                    case 'GEISAIASI2011':
2364                        $("#rangeLower").val(599.000793);
2365                        $("#rangeUpper").val(3000.998767);
2366                        break;
2367                }
2368
2369                $("#sampStep").val("");
2370
2371                //intensity range
2372                $("#intensityLo").val(0);
2373                $("#intensityUp").val(1e-16);
2374
2375                this.selectNbCourbes.selectFirst( true );
2376
2377                this.selectTraceAxeY1.selectFirst( true );
2378                this.selectScaleY1.selectFirst( true );
2379                this.selectTypeTraceY1.selectFirst( true );
2380
2381                document.getElementById("transition1").length=0;
2382                document.getElementById("transition2").length=0;
2383                this.selectTransitionLower.append($( document.createElement( "option" ) ).attr( {value:"-1", text:"Select a molecule", selected:"selected"} ));
2384                this.selectTransitionUpper.append($( document.createElement( "option" ) ).attr( {value:"-1", text:"Select a molecule", selected:"selected"} ));
2385                $("#transitionUpper").removeClass("notActiveText");
2386                $("#transitionLower").removeClass("notActiveText");
2387
2388
2389                $("#meanValue2").val("");
2390
2391                this.selectTraceAxeY2.selectFirst( true );
2392                this.selectScaleY2.selectFirst( true );
2393                this.selectTypeTraceY2.selectFirst( true );
2394
2395            },
2396
2397            onClickSubmit: function()
2398            {
2399                this.requestGeisa();
2400            },
2401
2402            displayWindow: function(content)
2403            {
2404                //fermeture de la div de l'image d'attente
2405                this.loadingGraphics.hide();
2406
2407                // var content = '<img src=' + this.pathImg + ' /><a href="project?methodName=downloadFile&fileName='  + this.nameImg + '"><button class="dataProtocolDownloadButton">Download</button></a>';
2408
2409                //alert(content);
2410                var $dialog = $( '<div></div>' )
2411
2412                        .html( content )
2413
2414                        .dialog( {
2415                            autoOpen: false,
2416                            title: "GEISA : spectroscopic database",
2417                            //buttons: { "Close": function() { $(this).dialog("close"); }, "Min": function() { $(this).dialog({ height: 20, width:350  }); },"Max": function() { $(this).dialog({ height: 560, width:700  }); }  },
2418                            buttons:{
2419                                "close":{
2420                                    id:'close',
2421                                    text:'Close',
2422                                    height:'30px',
2423                                    width:'53px',
2424                                    title :'to close the window',
2425                                    click: function() { $(this).dialog("close"); },
2426                                },
2427                                "min" :{
2428                                    id:'Min',
2429                                    text:'-',
2430                                    height:'30px',
2431                                    width:'30px',
2432                                    title :'to reduce the window',
2433                                    click: function() { $(this).dialog({ height:18, width:350  }); },
2434                                },
2435                                "max" :{
2436                                    id:'Max',
2437                                    text:'+',
2438                                    height:'30px',
2439                                    width:'30px',
2440                                    title :'to enlarge the window ',
2441                                    click: function() { $(this).dialog({ height: 640, width:700  }); },
2442                                },
2443                            },
2444
2445                            //minHeight: 500,
2446                            // minWidth: 660,
2447                            height: 640,
2448                            width:700,
2449                            //Exemple de  valeurs possible pour position : "middle", "top",  [200, 100]
2450                            position: "middle"
2451                        } );
2452                $dialog.dialog( 'open' );
2453            },
2454
2455            // displayWindow: function(coordinate)
2456            //{
2457            //var content = '<img src=' + this.pathImg + ' /><a href="project?methodName=downloadFile&fileName=bib.txt"><button class="dataProtocolDownloadButton">Download</button></a>';
2458            // var content = '<img src=' + this.pathImg + ' /><a href="project?methodName=downloadFile&fileName='  + this.nameImg + '"><button class="dataProtocolDownloadButton">Download</button></a>';
2459
2460            //alert(content);
2461            // var $dialog = $( '<div></div>' )
2462            // .html( content + content1 )
2463
2464            // .dialog( {
2465            //    autoOpen: false,
2466            //    title: "GEISA : spectroscopic database",
2467            //    minHeight: 500,
2468            //    minWidth: 660,
2469
2470            //coordonnee y y
2471            //   position:coordinate
2472
2473            // } );
2474            // $dialog.dialog( 'open' )
2475            //},
2476
2477
2478            onClickDownload: function()
2479            {
2480                document.location.href = "project?methodName=downloadFile&fileName=bib.txt";
2481            }
2482
2483
2484        } );
2485
2486
2487</script>
2488
2489
2490
Note: See TracBrowser for help on using the repository browser.