Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 224 | Rev 259 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
207 aurelien 1
function getUrlBaseJrest() {
2
 
3
	url_page_courante = document.URL;
4
 
5
	if(url_page_courante.indexOf('http://www.') != -1) {
6
		return urlBaseJrest;
7
	} else {
8
		return urlBaseJrest.replace('http://www.','http://');
9
	}
10
}
11
 
54 aurelien 12
/**
13
	************************************************************************************************
14
	************************************************************************************************
15
 
16
	   Fonction permettant de transformer les élements de la classe pliage en accordéon
17
 
18
	************************************************************************************************
19
	************************************************************************************************
20
**/
21
function initialiserElementsPliables() {
22
 
23
	$('.pliage h4').addClass('lien_pliage');
24
 
25
	$('.pliage ul').hide();
26
	$('.pliage > ul:first-child').hide();
207 aurelien 27
 
188 aurelien 28
	$('.1er_element_date ul').show();
29
	$('.1er_element_date > ul:first-child').show();
54 aurelien 30
 
31
	$('.lien_pliage').bind('click', function() {
32
 
33
		$(this).nextAll('ul').slideToggle();
34
		return false;
35
	});
36
}
37
 
38
$('.pliage').ready(function() {
39
	initialiserElementsPliables();
40
});
41
 
42
 
43
/**
44
	************************************************************************************************
45
	************************************************************************************************
46
 
47
	   Fonctions de gestion des onglets du formulaire de saisie d'espèce
48
 
49
	************************************************************************************************
50
	************************************************************************************************
51
**/
52
function initialiserOnglets() {
53
	$(".contenu_onglet").hide();
54
	$("ul.liste_onglets li:first").addClass("active").show();
55
	$(".contenu_onglet:first").show();
56
 
57
	$("ul.liste_onglets li").click(function() {
58
 
59
		$("ul.liste_onglets li").removeClass("active");
60
		$(this).addClass("active");
61
		$(".contenu_onglet").hide();
62
 
63
		var activeTab = $(this).find("a").attr("href");
64
		$(activeTab).fadeIn();
65
		return false;
66
	});
67
}
68
 
69
$('.contenu_onglet').ready(function() {
70
	initialiserOnglets();
71
});
72
 
73
function agrandirZoneCLicBoutonsRadios() {
74
 
75
	$('.formulaire_informations_espece_mini').addClass("element_cliquable");
76
 
77
	$('#form_saisie_espece').children('input[type="submit"]').hide();
78
	$('.formulaire_informations_espece_mini').children('input[type="radio"]').hide();
79
	$('.titre_type').hide();
80
 
81
	$('.formulaire_informations_espece_mini').bind('click',function() {
82
		$(this).children('input[type="radio"]').attr('checked','checked');
83
		$('.formulaire_informations_espece_mini').removeClass('element_clique');
84
		$(this).addClass('element_clique');
85
 
86
		$('#form_saisie_espece').submit();
87
	});
88
}
89
 
90
$('#form_saisie_espece').ready(function() {
91
	agrandirZoneCLicBoutonsRadios();
92
});
93
 
94
 
207 aurelien 95
 
96
 
54 aurelien 97
/**
98
	************************************************************************************************
99
	************************************************************************************************
100
 
101
	   Fonctions permettant de transformer les cases du tableau d'évenements en mini formulaire
102
 
103
	************************************************************************************************
104
	************************************************************************************************
105
**/
106
 
107
htmlEnCours = '';
108
elementEnCours = null;
216 aurelien 109
ancienneValeurEnCours = null;
54 aurelien 110
 
111
function initialiserLignesCliquables() {
112
 
113
	$('.conteneur_element_modifier').hide();
114
 
115
	$(".date_observation_individu").each(function() {
116
 
117
		$(this).bind('click', function() {
118
 
119
			if($(this).hasClass('element_clique')) {
120
				return false;
121
			} else {
122
 
123
				conteneur_obs = $(this).children('span');
124
				id_formulaire = conteneur_obs.attr('id');
125
 
126
				remplacerElementDateParFormulaireAjax(id_formulaire, $(this));
127
 
128
				return false;
129
			}
130
		});
131
	});
132
}
133
 
134
function initialiserCalendrierFormulaire() {
135
 
224 aurelien 136
	dateMin = getDateMinCalendrier();
137
	dateMax = getDateMaxCalendrier();
54 aurelien 138
 
139
	$(".calendrier").each(function() {
140
		$(this).find("input").datepicker({
141
			disabled: true,
142
			altFormat: 'dd/mm/yyyy',
224 aurelien 143
			minDate: dateMin,
144
			maxDate: dateMax
54 aurelien 145
 
146
		});
147
	});
148
}
149
 
150
$(document).ready(function() {
151
	initialiserCalendrierFormulaire();
152
 
153
});
154
 
90 aurelien 155
function estUneDateValide(peutEtreUneDate) {
156
	var reg= new RegExp("^[0-3][0-9][/]{1}[0-1][0-2][/]{1}[0-9]{4}$","g");
157
	return reg.test(peutEtreUneDate);
158
}
159
 
216 aurelien 160
function getAnneeEnCoursDeConsultation() {
54 aurelien 161
 
162
	anneeEnCours = jQuery.trim($("#annee_en_cours").html());
163
 
164
	if(typeof(anneeEnCours)=='undefined'){
165
		dateCourante = new Date();
166
		anneeEnCours = dateCourante.getFullYear();
167
	}
168
 
216 aurelien 169
	return anneeEnCours;
170
}
171
 
224 aurelien 172
function getDateMinCalendrier() {
173
	anneeEnCours = getAnneeEnCoursDeConsultation();
174
	dateMin = '01/01/'+anneeEnCours;
175
 
176
	return dateMin;
177
}
178
 
179
function getDateMaxCalendrier() {
180
 
181
	anneeEnCours = getAnneeEnCoursDeConsultation();
182
 
183
	dateMax = '31/12/'+anneeEnCours;
184
 
225 aurelien 185
	dateCourante = new Date();
186
 
224 aurelien 187
	if(anneeEnCours == dateCourante.getFullYear()) {
225 aurelien 188
		dateMax = dateCourante.getDate()+'/'+(dateCourante.getMonth()+ 1)+'/'+anneeEnCours;
224 aurelien 189
	}
190
 
191
	return dateMax;
192
}
193
 
216 aurelien 194
/** Fonctions de manipulation des éléments du tableau pour les transformer en élements cliquables et calendriers **/
195
function initialiserMiniCalendrierFormulaire(id_element) {
196
 
224 aurelien 197
	dateMin = getDateMinCalendrier();
198
	dateMax = getDateMaxCalendrier();
216 aurelien 199
 
90 aurelien 200
	$('#'+id_element)
201
	.datepicker({
54 aurelien 202
		disabled: true,
90 aurelien 203
		constrainInput: true,
54 aurelien 204
		altFormat: 'dd/mm/yyyy',
224 aurelien 205
		minDate: dateMin,
206
		maxDate: dateMax,
90 aurelien 207
		onSelect: function(dateText, inst) {
208
			$('#'+id_element).val(dateText);
209
			donnees_obs = collecterDonneesMiniFormulaire(id_formulaire);
210
			envoyerRequeteAjaxValidationMiniFormulaire(donnees_obs, id_formulaire);
210 aurelien 211
		},
212
		onClose: function(dateText, inst) {
213
			gererFermetureMiniCalendrier(dateText,id_formulaire);
90 aurelien 214
		}
54 aurelien 215
	});
90 aurelien 216
 
217
	$('#'+id_element).datepicker( "show" );
54 aurelien 218
}
219
 
210 aurelien 220
function gererFermetureMiniCalendrier(dateText, id_formulaire) {
221
 
216 aurelien 222
	ancienne_valeur_date = jQuery.trim(ancienneValeurEnCours);
223
	nouvelle_valeur_date = jQuery.trim(dateText);
210 aurelien 224
 
216 aurelien 225
	if(nouvelle_valeur_date == '' && ancienne_valeur_date != '-' && ancienne_valeur_date != nouvelle_valeur_date) {
210 aurelien 226
		if(window.confirm("Voulez vous supprimer cette observation ?")) {
216 aurelien 227
			$('#'+id_formulaire).val(nouvelle_valeur_date);
228
			donnees_obs = collecterDonneesMiniFormulaire(id_formulaire);
229
			envoyerRequeteAjaxValidationMiniFormulaire(donnees_obs, id_formulaire);
230
		} else {
231
			$('#'+id_formulaire).val(ancienne_valeur_date);
232
			remplacerMiniFormulaireParElementDate(id_formulaire);
210 aurelien 233
		}
234
	}
235
}
236
 
54 aurelien 237
function remplacerElementDateParFormulaireAjax(id_element, conteneur_selectionne) {
238
 
239
	if(elementEnCours != null) {
240
		elementEnCours.removeClass('element_clique');
241
		elementEnCours.html(htmlEnCours);
216 aurelien 242
		ancienneValeurEnCours = null;
54 aurelien 243
	}
244
 
216 aurelien 245
	ancienneValeurEnCours = conteneur_selectionne.children('span').html()
54 aurelien 246
	elementEnCours = conteneur_selectionne;
247
	htmlEnCours = conteneur_selectionne.html();
248
 
249
	conteneur_obs = $('#'+id_element);
250
	valeur_date = conteneur_obs.html();
251
	valeur_date = valeur_date.replace('-','');
90 aurelien 252
 
54 aurelien 253
	conteneur_selectionne.addClass('element_clique');
90 aurelien 254
	conteneur_selectionne.html('<span class="calendrier"><input type="text" value="'+jQuery.trim(valeur_date)+'" class="calendrier" id="'+id_formulaire+'" size="7" maxlenght="10" /></div>');
54 aurelien 255
	initialiserMiniCalendrierFormulaire(id_formulaire);
256
 
257
}
258
 
259
function remplacerMiniFormulaireParElementDate(id_element) {
260
 
90 aurelien 261
	valeur_date_pour_stade = $('#'+id_element).val();
262
 
216 aurelien 263
	if(jQuery.trim(valeur_date_pour_stade) == '') {
264
		valeur_date_pour_stade = '-';
265
	}
266
 
54 aurelien 267
	elementEnCours.html('<span id="'+id_element+'">'+valeur_date_pour_stade+' </span>');
268
	elementEnCours.removeClass('element_clique');
269
	elementEnCours = null;
216 aurelien 270
	ancienneValeurEnCours = null;
100 aurelien 271
 
54 aurelien 272
}
273
 
274
 
275
/** Fonctions d'envoi et de récupération des élements du formulaire ajax **/
276
function envoyerRequeteAjaxValidationMiniFormulaire(donnees_obs, id_formulaire) {
277
 
100 aurelien 278
	url_page_courante = document.URL;
279
	url_page_courante = url_page_courante.replace('module=Individu','module=Observation');
280
	url_page_courante = url_page_courante.replace('action=afficherListeIndividu','action=validerFormulaireModificationObservationAjax');
281
	url_ajax = url_page_courante.replace('action=validerFormulaireSaisieIndividu','action=validerFormulaireModificationObservationAjax');
282
 
283
	$.post(url_ajax, donnees_obs, function(obj_retour) {
284
 
54 aurelien 285
		if(obj_retour.reponse === 'OK') {
286
			remplacerMiniFormulaireParElementDate(id_formulaire);
287
		}
288
	});
289
}
290
 
291
function collecterDonneesMiniFormulaire(id_formulaire) {
292
 
293
	valeur_date_pour_stade = $('#'+id_formulaire).val();
294
 
216 aurelien 295
	if(valeur_date_pour_stade == null ) {
54 aurelien 296
		return false ;
297
	}
298
 
216 aurelien 299
	if(jQuery.trim(valeur_date_pour_stade) == '') {
300
		valeur_date_pour_stade = '00/00/'+anneeEnCours;
301
	}
302
 
54 aurelien 303
	id_individu_stade_obs = id_formulaire.split('_');
304
 
305
	stade_obs = 'observation_'+id_individu_stade_obs[3];
306
	date_annee_en_cours = jQuery.trim($("#annee_en_cours").html());
307
 
308
	donnees_obs = { "id_individu": id_individu_stade_obs[1],
90 aurelien 309
					"annee_en_cours": date_annee_en_cours
54 aurelien 310
					};
311
 
90 aurelien 312
	identifiant_observation = 'observation_'+id_individu_stade_obs[3];
54 aurelien 313
 
90 aurelien 314
	donnees_obs[identifiant_observation] = valeur_date_pour_stade;
315
 
54 aurelien 316
	return donnees_obs;
317
}
318
 
319
 
320
$('#saisie_liste_evenements').ready(function() {
321
	initialiserLignesCliquables();
322
});
323
 
324
 
325
 
326
 
327
/**
328
	************************************************************************************************
329
	************************************************************************************************
330
 
331
	    Fonctions concernant la carte permettant de pointer d'afficher l'emplacement des stations
332
 
333
	************************************************************************************************
334
	************************************************************************************************
335
**/
336
var map;
337
var marker;
100 aurelien 338
var liste_localite_en_cours;
339
var indice_commune_en_cours;
340
var liste_auto_completion_a_le_focus;
341
var timerRequeteAutocompletion;
342
var timerAffichageAutocompletion;
54 aurelien 343
 
100 aurelien 344
 
345
function cacherElementsRafraichissables() {
346
	$('.rafraichissable input').attr('disabled', 'disabled');
347
	$('.rafraichissable input[type="text"]').addClass("chargement");
348
}
349
 
350
function montrerElementsRafraichissables() {
351
	$('.rafraichissable input').removeAttr('disabled');
352
	$('.chargement').removeClass("chargement");
353
}
354
 
355
function ajouterAutoCompletionCommune() {
356
 
357
	$('input#station_commune').after('<div class="conteneur_suggestions"></div>');
358
	$('input#station_commune').parent().addClass('autocompletion');
359
	$('input#station_commune').attr('autocomplete','off');
360
	$('.conteneur_suggestions').hide();
361
	rendreListeAutoCompletionInteractive('input#station_commune');
362
}
363
 
54 aurelien 364
function ajouterListenerFormulaireSaisieLatLon() {
100 aurelien 365
 
54 aurelien 366
	$('input#localiser_lat_lon').click(function() {
367
		verifierEtLocaliserCoordonnees();
368
	});
369
}
370
 
371
function carteEstEnSaisie() {
372
	return ($('#conteneur_form_liens_lat_lon').length > 0);
373
}
374
 
375
function verifierEtLocaliserCoordonnees() {
376
 
377
	lat ;
378
	lon;
379
 
380
	if(carteEstEnSaisie()) {
381
		lat = $('#station_lat').val();
382
		lon = $('#station_lon').val();
100 aurelien 383
 
384
		obtenirInformationsPourCoordonnees(lat, lon);
54 aurelien 385
	} else {
386
		var lat = jQuery.trim($('#station_lat').html());
387
		var lon = jQuery.trim($('#station_lon').html());
388
	}
389
 
390
	if(jQuery.trim(lat) == '' || jQuery.trim(lon) == '') {
391
		return;
392
	}
393
 
394
	if(!isNaN(lat) && lat.length > 0 && !isNaN(lon) && lon.length > 0) {
395
 
396
	} else {
397
		window.alert("coordonnées invalides");
398
	}
399
 
400
	var positionMarker = new google.maps.LatLng(lat, lon);
401
 
402
	marker.setPosition(positionMarker);
403
	map.setCenter(positionMarker);
100 aurelien 404
	map.setZoom(12);
54 aurelien 405
}
406
 
100 aurelien 407
function obtenirInformationsPourCoordonnees(lat, lon) {
408
 
409
	lat = jQuery.trim(lat);
410
	lon = jQuery.trim(lon);
411
 
412
	if(isNaN(lat) || lat.length <= 0 || isNaN(lon) || lon.length <= 0) {
413
		return;
414
	}
415
 
416
	cacherElementsRafraichissables();
207 aurelien 417
 
168 aurelien 418
	$.get(urlBaseJrest+'OdsCommune/informationsPourCoordonnees/?lat='+lat+'&lon='+lon, function(data) {
100 aurelien 419
 
420
		infos_localites = jQuery.parseJSON(data);
421
		$('#station_alt').val(infos_localites.alt);
422
 
196 aurelien 423
		if(infos_localites.commune != null && infos_localites.commune != '') {
424
		  $('#station_commune').val(infos_localites.commune);
425
		  $('#station_code_insee').val(infos_localites.code_insee);
100 aurelien 426
		}
427
 
428
		montrerElementsRafraichissables();
429
 
430
	});
431
 
432
}
433
 
434
function obtenirInformationsPourCommune(nom_commune) {
435
 
436
	if(jQuery.trim(nom_commune) == '') {
437
		$('.conteneur_suggestions').hide();
438
		return;
439
	}
440
 
168 aurelien 441
	$.get(urlBaseJrest+'OdsCommune/informationsPourCommune/?commune='+nom_commune, function(data) {
100 aurelien 442
 
443
		infos_localites = jQuery.parseJSON(data);
444
		afficherListeAutoCompletion(infos_localites);
445
	});
446
}
447
 
448
function afficherListeAutoCompletion(tableau_localites) {
449
 
450
	liste_localite_en_cours = tableau_localites;
451
 
452
	html_liste_localite = '<ul class="liste_suggestions">';
453
 
454
	for(i = 0; i< tableau_localites.length; i++) {
455
		html_liste_localite += '<li id="commune_'+i+'" class="element_auto_completion_commune">'+tableau_localites[i]['commune']+'  ('+tableau_localites[i]['dpt']+')</li>';
456
	}
457
 
458
	html_liste_localite += '</ul>';
459
 
460
	$('.conteneur_suggestions').html(html_liste_localite);
461
 
462
	$('.element_auto_completion_commune').hover(function() {
463
		indice = $(this).attr('id').split('_')[1];
464
		mettreEnSurbrillanceCommune(indice);
465
	});
466
 
467
	$('.element_auto_completion_commune').click(function() {
468
		indice = $(this).attr('id').split('_')[1];
469
		selectionnerCommune(indice);
470
	});
471
 
472
	if(tableau_localites.length > 0) {
473
		$('.conteneur_suggestions').show();
474
 
475
		mettreEnSurbrillanceCommune(0);
476
	}
477
}
478
 
479
function mettreEnSurbrillanceCommune(indice) {
480
 
481
	if(indice_commune_en_cours != null) {
482
		$('#commune_'+indice_commune_en_cours).removeClass('element_selectionne');
483
	}
484
	$('#commune_'+indice).addClass('element_selectionne');
485
	indice_commune_en_cours = indice;
486
 
487
	reprogrammerTimerPourCacherListeAutoCompletion();
488
}
489
 
490
function rendreListeAutoCompletionInteractive(selecteur) {
491
 
492
	$(selecteur).keyup(function(event) {
493
		if(event.which == 8 || (event.which >= 48 && event.which <= 90)) {
494
 
495
			reprogrammerTimerPourCacherListeAutoCompletion();
496
			reprogrammerTimerPourLancerRequeteCommune();
497
		}
498
	});
499
 
500
	$(selecteur).keydown(function(event) {
501
 
502
		reprogrammerTimerPourCacherListeAutoCompletion();
503
 
504
		// entree
505
		if(event.which==13){
506
			selectionnerCommune(indice_commune_en_cours);
507
			event.preventDefault();
508
		}
509
 
510
		// haut
511
		if(event.which == 38){
512
			if(indice_commune_en_cours > 0) {
513
				mettreEnSurbrillanceCommune(indice_commune_en_cours - 1);
514
			}
515
		}
516
 
517
		// bas
518
		if(event.which == 40){
519
			if(indice_commune_en_cours < liste_localite_en_cours.length - 1) {
520
				mettreEnSurbrillanceCommune(indice_commune_en_cours + 1);
521
			}
522
		}
523
	});
524
 
525
	$('.conteneur_suggestions').blur(function() {
526
		$('.conteneur_suggestions').hide();
527
	});
528
}
529
 
530
function reprogrammerTimerPourCacherListeAutoCompletion() {
531
 
532
	if(timerAffichageAutocompletion != null) {
533
		window.clearTimeout(timerAffichageAutocompletion);
534
	}
535
 
536
	timerAffichageAutocompletion = window.setTimeout(function() {
537
		$('.conteneur_suggestions').hide();
538
	}, 2000);
539
}
540
 
541
function reprogrammerTimerPourLancerRequeteCommune() {
542
 
543
	if(timerRequeteAutocompletion != null) {
544
		window.clearTimeout(timerRequeteAutocompletion);
545
	}
546
 
547
	timerRequeteAutocompletion = window.setTimeout(function() {
548
		obtenirInformationsPourCommune($('input#station_commune').val());
549
	}, 350);
550
}
551
 
552
function selectionnerCommune(indice) {
553
 
554
	infos_commune = liste_localite_en_cours[indice];
555
 
556
	$('input#station_commune').val(infos_commune['commune']);
557
	$('input#station_lat').val(infos_commune['lat']);
558
	$('input#station_lon').val(infos_commune['lon']);
168 aurelien 559
	$('input#station_code_insee').val(infos_commune['code_insee']);
100 aurelien 560
 
561
	verifierEtLocaliserCoordonnees();
562
 
563
	$('.conteneur_suggestions').hide();
564
}
565
 
54 aurelien 566
function mettreAJourValeursFormulaire(latlon) {
567
 
568
	latlon = latlon.toString().split(',');
569
 
100 aurelien 570
	lat = latlon[0].replace('(', '');
571
	lon = latlon[1].replace(')', '');
572
 
54 aurelien 573
	$('#station_lat').val(latlon[0].replace('(', ''));
574
	$('#station_lon').val(latlon[1].replace(')', ''));
100 aurelien 575
 
576
	obtenirInformationsPourCoordonnees(lat, lon);
54 aurelien 577
}
578
 
579
function initialiserCarte() {
580
 
581
	if($('#map_canvas').length == 0) {
582
		return;
583
	}
584
 
585
	var latlng = new google.maps.LatLng(47.0504, 2.2347);
586
	var myOptions = {
587
		zoom: 6,
588
		center: latlng,
589
		mapTypeId: google.maps.MapTypeId.HYBRID
590
	};
591
 
592
	map = new google.maps.Map(document.getElementById("map_canvas"),
593
    	myOptions);
594
 
595
	marker = new google.maps.Marker({
596
	      position: latlng,
597
	      title:""
598
	});
599
 
600
	if (carteEstEnSaisie()) {
601
 
602
			marker.setDraggable(true);
603
 
100 aurelien 604
			google.maps.event.addListener(marker, 'dragend', function(event) {
54 aurelien 605
				mettreAJourValeursFormulaire(marker.getPosition());
606
			});
607
			$('#conteneur_form_liens_lat_lon').ready(function() {
608
				verifierEtLocaliserCoordonnees();
609
				ajouterListenerFormulaireSaisieLatLon();
100 aurelien 610
				ajouterAutoCompletionCommune();
54 aurelien 611
			});
612
	} else {
613
		marker.setDraggable(false);
614
		$('#conteneur_liens_lat_lon').ready(function() {
615
			verifierEtLocaliserCoordonnees();
616
		});
617
	}
618
 
619
	marker.setClickable(true);
620
 
621
	// To add the marker to the map, call setMap();
622
	marker.setMap(map);
623
}
624
 
625
$('#map_canvas').ready(function() {
626
	initialiserCarte();
100 aurelien 627
});
628
 
210 aurelien 629
/**
630
************************************************************************************************
631
************************************************************************************************
100 aurelien 632
 
210 aurelien 633
    Fonctions généralistes s'appliquant automatiquement à certaines classes css
634
 
635
************************************************************************************************
636
************************************************************************************************
637
**/
638
 
639
function initialiserLiensSuppression() {
640
	$('.lien_suppression').click(function() {
641
		return window.confirm('Êtes vous sur de vouloir supprimer ?');
642
	});
643
}
644
 
645
$(document).ready(function() {
646
	initialiserLiensSuppression();
647
});
648
 
649
 
650
 
100 aurelien 651
/**
652
************************************************************************************************
653
************************************************************************************************
654
 
655
    Fonctions de debug permattant d'afficher les objets javascript à la manière de print_r
656
 
657
************************************************************************************************
658
************************************************************************************************
659
**/
660
 
661
function dump(arr,level) {
662
	var dumped_text = "";
663
	if(!level) level = 0;
664
 
665
	//The padding given at the beginning of the line.
666
	var level_padding = "";
667
	for(var j=0;j<level+1;j++) level_padding += "    ";
668
 
669
	if(typeof(arr) == 'object') { //Array/Hashes/Objects
670
	 for(var item in arr) {
671
	  var value = arr[item];
672
 
673
	  if(typeof(value) == 'object') { //If it is an array,
674
	   dumped_text += level_padding + "'" + item + "' ...\n";
675
	   dumped_text += dump(value,level+1);
676
	  } else {
677
	   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
678
	  }
679
	 }
680
	} else { //Stings/Chars/Numbers etc.
681
	 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
682
	}
683
	return dumped_text;
684
}