﻿
	// nécessite l'inclusion de jQuery au préalable

	/**
	 * remplit une balise select avec des <option value="YYYY">YYYY</option>
	 * @param selectId: l'id de la balise select visée
	 * @param firstYear [int]: la première année à insérer dans le select
	 * @param lastYear [int]: la dernière année à insérer dans le select
	 * @param specialValue: la valeur spéciale à insérer en fin de select, peut être null
	 * @param specialValueLabel; le label de la valeur spéciale à insérer, peut être null
	 */
	function fillSelect(selectClass, firstYear, lastYear, specialValue, specialValueLabel){
		// fonction écrite en utilisant que du js basic (pas de jQuery, prototype.js...)
		
		var element;
		var selectedYear;
		var newSelectedYear = 0;
		var select = jQuery('.'+selectClass);
		var optionList = jQuery('.'+selectClass+' option');
		if (select.size() == 0 ) return false;
		
			/* calcul du nouveau index selectionné */
			if (optionList.size() >0 && select.val() != 0){
				selectedYear = parseInt(optionList.first().val() + select.val());
				if (selectedYear >= firstYear)
					newSelectedYear = selectedYear - firstYear;
			}
			
			/* suppression de tous les élements contenus à l'intérieur du select */
			jQuery('.'+selectClass).empty();
			
			/* ajout des nouveaux élements */
			for (var i=firstYear; i<=lastYear; i++){
				element = document.createElement('option');
				element.value = i;
				element.innerHTML = i;		
				select.append(element);
			}
			if (specialValue != undefined){
				element = document.createElement('option');
				element.value = 0;
				element.innerHTML = specialValueLabel;
				select.append(element);
			}
			
			/* sélection de l'élement précedément selectionné s'il y a lieu */
			select.attr('value', newSelectedYear);
			
			return true;
	}

	/**
	 * permet d'ajouter dynamiquement une librairie javascript
	 * vérifie que celle-ci n'est pas déjà ajoutée auparavant
	 * @param url : url de la bibliotheque à ajouter
	 * @param headerID : l'id du header (l'element auquel il faut ajouter la bibliothèque)
	 * @return false en cas d'échec, true sinon
	 */
	function addJavaScriptLibrary(url, headerID ){
		// utilise du jQuery!
	/*	var head = (headerID == undefined ? 'head' : "#"+headerID);
		if (!searchForJavaScriptLibrary(url)){			
			var script = '<scri'+'pt type="text/javascript" src="'+url+'">';
			script += '</scri'+'pt>';
			jQuery(head).append(script);
			return true;
		} else return false;*/
		
		//jQuery.getScript(url);
		
		jQuery.ajax({
			async: false,
			cache:true,
			type: "GET",
			url: url,
			data: null,
			//success: success_callback,
			dataType: 'script'
			});
	}
	
	/**
	 * 
	 * @param url : l'url à chercher
	 * @return true if the script's url is already included in the header
	 */
	function searchForJavaScriptLibrary(url){
		// utilise du jQuery!
		// on cherche dans l'ensemble des <script/> ayant un attribut src
		return jQuery('script[src]').filter(function(){
				return this.getAttribute('src') == url;
			}
		).length != 0;
	}
	
	/**
	 * 
	 * @param nomWidget : le nom du widget
	 * @param argList : la liste des args, sous forme de tableau [{nom, valeur},{}]
	 * @return l'export code sous forme de string
	 */
	function generateExportCode(widgetURL, paramNomWidget, nomWidget, argList){
//		alert('generateExportCode('+widgetURL+', '+paramNomWidget+', '
//				+nomWidget+', argList);');
		var choixCadre = jQuery('#choix_cadre input:radio:checked').val();
		var exportCode = '<object'
			+' data="'+widgetURL+'?'+paramNomWidget+'='+nomWidget+'&c='+choixCadre;
		for (var i=0; i<argList.length; i++){
			exportCode+='&'+argList[i]['nom']+'='+argList[i]['valeur'];
		}
		exportCode += '"'; // fermeture de l'attribut data
		exportCode += ' type="text/html"'
			+ ' width="360"'
			+ ' height="360">'
			+ '</object>';
		return exportCode;
	}
	
	function generateExpertCodeAndOverview(widgetURL, paramNomWidget, nomWidget, argList){
		var exportCode = generateExportCode(widgetURL, paramNomWidget, nomWidget, argList);
		// on colle le code exportable dans le textarea
		jQuery('#widget_export_code_exportable').text(exportCode);
		// on affiche le widget
		jQuery('#widget_export_apercu').html(exportCode);
		jQuery('#widget_export_resultat').show();
	}
	
	/**
	 * 
	 */
	function changeOnClickAction(buttonID, action){
//		alert('l\'action du bouton '+buttonID+' est à présent: '+'javascript:'+action);
		jQuery('#'+buttonID).unbind('click').click(function() { eval(action);});
	}
	