/**
 * Fonctions relatives aux widgets
 *
 * @author      G. JAGUIN
 * @copyright   BleuRoy.com
 * @version     1.0.1
 */

var cacheWidgetsFunc = new Array();
cacheWidgetsFunc['saveWidgetsPosition-1'] = ''; 
cacheWidgetsFunc['saveWidgetsPosition-2'] = ''; 
	
function setWidgetListeners(widgetId){
	//enregistrement des paramètres
	if ($('widget-'+widgetId).down('div.blocEditWidget').down('form', 0))
	{
		$('widget-'+widgetId).down('div.blocEditWidget').down('form', 0).observe('submit', function(event)
		{
			eval('loadWidget'+widgetId+'()');
			$('widget-'+widgetId).down('div.blocEditWidget').hide();
			event.stop();
		});
	}
	
	//affichage du paramètrage du widget
	if ($('widget-'+widgetId).down('div.blocHautWidget').down('a', 1))
		$('widget-'+widgetId).down('div.blocHautWidget').down('a', 1).observe('click', function(){ $('widget-'+widgetId).down('div.blocEditWidget').toggle(); });
	
	
	//suppression du widget
	$('widget-'+widgetId).down('div.blocHautWidget').down('a', 0).observe('click', function(event){
		//suppression dans le DOM
		$('widget-'+widgetId).remove();
		var myAjax = new Ajax.Request('/widgets/removeWidget', {
			method: 'post',
			postBody: 'id='+widgetId,
			onComplete: function()
			{
				new Ajax.Updater('blocPerso', '/widgets/renderListeWidgetsBarrePerso', { asynchronous:true, evalScripts:true });
				//vérification du nombre de widgets
				nbWidgets = parseInt($('colWidgetGauche').childElements('div.widget').length) + parseInt($('colWidgetDroite').childElements('div.widget').length);
				//affichage du message s'il n'y a pas de widget sur la page
				if (nbWidgets == 0)
					$('noWidgetMessage').show();
			}
		});
	});
}

function saveWidgetsPosition(colonneId){
	var colonnesNames = new Array();
	colonnesNames['colWidgetGauche'] = 1;
	colonnesNames['colWidgetDroite'] = 2;
	//création du tableau d'ordre des widgets
	var ordre = new Array();
	$(colonneId).childElements('div.widget').each( function(widget, index){ if (widget.id) ordre.push(widget.id); });
	postBodyParams = 'col='+colonnesNames[colonneId]+'&ordre='+Object.toJSON(ordre);
	//gestion du cache js
	if (cacheWidgetsFunc['saveWidgetsPosition-'+colonnesNames[colonneId]] != postBodyParams)
	{
		new Ajax.Request('/widgets/saveWidgetsPosition',
		{
			method: 'post',
			postBody: postBodyParams,
			onFailure: function(){ alert("Un problème est survenu lors de sauvegarde de la position des widgets.") }
		});
		//mise en cache
		cacheWidgetsFunc['saveWidgetsPosition-'+colonnesNames[colonneId]] = postBodyParams;
	}
}

function initSortablesOnColonnes()
{
	targets = [$('colWidgetGauche'), $('colWidgetDroite')];
	targets.each(function(target) {
	  Sortable.create(target.id, {
	    tag: 'div',
	    only: 'blocWidget',
	    handle: 'blocHautWidget',
	    containment: targets,
	    constraint: false,
	    dropOnEmpty: true,
	 	onChange: function() {
	  		saveWidgetsPosition(target.id);
  		}
		});
	});
}

function insertExportButtons(widgetId)
{
	new Ajax.Request('/widgets/renderExportButtons', {
		method: 'post',
		postBody: 'id='+widgetId,
		onSuccess: function(transport)
		{
			$('widget-'+widgetId).down('div.blocBasWidget').update(transport.responseText);
		}
	});
}

