/* /static/js/advanced_search.js */ /* UTF8 COOKIE éà */

function	advancedSearchClass(url, ajaxUrl, themes, services)
{
	this.url = url;
	this.ajaxUrl = ajaxUrl;
	this.themes = themes;
	this.services = services;
	this.reschedule = null;
	this.results = null;
}


advancedSearchClass.prototype.recompute = function()
{
	var	self = this;

	if(this.reschedule != null)
	{
		clearTimeout(this.reschedule);
		this.reschedule = null;
	}

	vkDom.setText('SEARCH_NRESULTS', '...');
	this.results = null;

//	vkDebug.enable();
	getAjax();
//	ajax.debug = true;

	ajax.onLoad = function(status, data)
	{
		if(data != null && typeof(data) == 'number')
		{
			self.results = data;
			vkDom.setText('SEARCH_NRESULTS', data+' résultat'+(data==1?'':'s'));
		}
		else
			self.retry();
	}

	ajax.onTimeout = function()
	{
		self.retry();
	}
	
	ajax.post(
		this.buildUrl(true),
		null,
		15000
	);


	return true;
}

advancedSearchClass.prototype.retry = function()
{
	var	self = this;

	this.reschedule = setTimeout(function() { self.recompute(); }, 5000);
}


advancedSearchClass.prototype.buildUrl = function(ajax)
{
	var	i, tmp, url = this.ajaxUrl;

	if(ajax)
		url = this.ajaxUrl;
	else
		url = this.url+'/1';

	url += vkDom.el('AS_DEST').options[vkDom.el('AS_DEST').selectedIndex].value;

	// Themes

	tmp = '';
	for(i = 0; i < this.themes.length; i++)
	{
		if(vkDom.el('AS_T_'+this.themes[i]) && vkDom.el('AS_T_'+this.themes[i]).checked)
			tmp += (tmp.length ? '-' : '') + this.themes[i];
	}
	if(tmp.length)
		url += '/T/'+tmp;

	// Services

	tmp = '';
	for(i = 0; i < this.services.length; i++)
	{
		if(vkDom.el('AS_S_'+this.services[i]) && vkDom.el('AS_S_'+this.services[i]).checked)
			tmp += (tmp.length ? '-' : '') + this.services[i];
	}
	if(tmp.length)
		url += '/S/'+tmp;


	//vkDebug.text('URL: '+url);
	return url;
}

advancedSearchClass.prototype.go = function()
{
	if(this.results == null)
		return false;

	if(!this.results)
	{
		alert('Votre recherche n\'a retourné aucun résultat');
		return false;
	}

	window.location = this.buildUrl(false);
	return false;
}


advancedSearchClass.prototype.init = function()
{
	var	i, el;

	// Setup handlers on GUI

	if(window.addEventListener)
		vkDom.el('AS_DEST').addEventListener('change', function() { return as.recompute(); }, false);
	else if(window.attachEvent)
		vkDom.el('AS_DEST').attachEvent('onchange', function() { return as.recompute(); });


	for(i = 0; i < this.themes.length; i++)
	{
		if(el = vkDom.el('AS_T_'+this.themes[i]))
		{
			if(window.addEventListener)
				el.addEventListener('click', function() { return as.recompute(); }, false);
			else if(window.attachEvent)
				el.attachEvent('onclick', function() { return as.recompute(); });
		}
	}

	for(i = 0; i < this.services.length; i++)
	{
		if(el = vkDom.el('AS_S_'+this.services[i]))
		{
			if(window.addEventListener)
				el.addEventListener('click', function() { return as.recompute(); }, false);
			else if(window.attachEvent)
				el.attachEvent('onclick', function() { return as.recompute(); });
		}
	}

	this.recompute();
}

vkDom.onLoad(
	function()
	{
		if(as)
			as.init();
	}
);
