////////// Menu
function init_nav() {
	var nav = $('navigation');
	if (nav) {
		nav.getElements("LI").each( function(el) {
			el.addEvent("mouseover", function(ev) {
				this.addClass("hover");
			});
			el.addEvent("mouseout", function(ev) {
				this.removeClass("hover");
			});
		});
	}
}

// //////// Ajax
var _ajax_original_content = null;
var _ajax_original_title = null;

function _get_ajax_url(a) {
	var url = a.href;
	if (url[0] == "/")
		return "/ajax" + url;
	else {
		var r = /(http:\/\/[^\/]+)(\/.*)/;
		var m = url.match(r);
		return m[1] + "/ajax" + m[2];
	}
}

function _add_back_link(content) {
	var a = new Element("A", {
		'href' : window.location,
		'class' : 'ajax_backlink'
	});
	if (_ajax_original_title)
		a.innerHTML = "&larr; Retour à : " + _ajax_original_title;
	else
		a.innerHTML = "&larr; Retour au contenu principal de la page";
	function _handler(ev) {
		ev = new Event(ev);
		ev.stop();
		content.innerHTML = _ajax_original_content;
		init_tabs();
		$$('#content A.ajax').each( function(a) {
			a.addEvent("click", do_ajax);
		});
		_ajax_original_content = null;
		window.location = '#';
	}

	a.addEvent("click", _handler);
	// var title = content.getElement("h1");
	// if (title) {
	// var top_a = a.clone();
	// top_a.addEvent("click", _handler);
	// top_a.injectAfter(title);
	// }
	a.setStyle("margin-top", "1em");
	a.injectInside(content);
}

function do_ajax(ev) {
	ev = new Event(ev);
	ev.stop();
	var url = _get_ajax_url(this);
	if (!_ajax_original_content) {
		_ajax_original_content = $('content').innerHTML;
		var title = $('content').getElement("h1");
		if (title)
			_ajax_original_title = title.innerHTML;
	}
	var req = new Request.HTML({
		'url' : url,
		'update' : 'content',
		'onComplete' : function() { /* if (dtr_init) dtr_init($('content')); */
			_add_back_link($('content'));
			document.location = '#top';
		}
	});
	req.get();
}

function init_ajax() {
	$$('A.ajax').each( function(a) {
		a.addEvent("click", do_ajax);
	});
}

// //////// Home/Entreprises
/*
function init_home_entreprises() {
var div = $('home_entreprises');
if (!div)
return;
var panes = div.getElements(".pane");
function _init_tabs(pane) {
var links = pane.getElements("A");
links[0].addEvent("click", function(ev) {
ev = new Event(ev);
ev.stop();
panes[1].addClass("shown");
panes[0].removeClass("shown");
});
links[1].addEvent("click", function(ev) {
ev = new Event(ev);
ev.stop();
panes[0].addClass("shown");
panes[1].removeClass("shown");
});
}
_init_tabs(panes[0]);
_init_tabs(panes[1]);
}
*/
// //////// misc. forms
function _init_programme_autosubmit(form) {
	// var form = $('offers_filter');
	if (!form || !form['programme'] || !form.autosubmit)
		return;
	for ( var i = 0; i < form['programme'].length; i++) {
		var input = form['programme'][i];
		input.addEvent("change", function() {
			this.form.submit();
		});
	}

}

function init_programme_selection(form, autosubmit) {
	if (!form)
		return;
	form.autosubmit = autosubmit;
	for ( var i = 0; i < form['type'].length; i++) {
		var input = $(form['type'][i]);
		input.addEvent("change", function() {
			var req = new Request.HTML({
				'url' : form.action + "?ajax=1&type=" + this.value,
				'onComplete' : function() {
					_init_programme_autosubmit(form);
				},
				'update' : form.getElement(".programme_selection")
			});
			req.send();
		});
	}
	_init_programme_autosubmit(form);
}

function init_programme_selections() {
	init_programme_selection($('offers_filter'), true);
	init_programme_selection($('cv_filter'));
}

function _init_tabs(div) {
	var buttons = div.getElement(".buttons").getElements("a");
	var panes = div.getElements(".pane");
	function _doit(button) {
		var i = buttons.indexOf(button);
		panes.each( function(el) {
			el.removeClass("shown");
		});
		buttons.each( function(el) {
			$(el.parentNode).removeClass("selected");
		});
		panes[i].addClass("shown");
		if (!Browser.Engine.trident4) // ie6
			$(buttons[i].parentNode).addClass("selected");
	}

	for ( var i = 0; i < buttons.length; i++) {
		var button = buttons[i];
		button.addEvent("click", function(ev) {
			ev = new Event(ev);
			ev.stop();
			_doit(this);
		});
		if (Browser.Engine.trident4) { // buggy ie6 multiclass
			$(button.parentNode).removeClass("selected");
		} else {
			button.addEvent("mouseover", function(ev) {
				$(this.parentNode).addClass("hover");
			});
			button.addEvent("mouseout", function(ev) {
				$(this.parentNode).removeClass("hover");
			});
		}
	}
}

function init_tabs() {
	$$("DIV.tabs").each(_init_tabs);
}

NUM_IMAGE_SETS = 3;
NUM_IMAGES_PER_SET = 2;
NUM_CYCLES = NUM_IMAGES_PER_SET * NUM_IMAGE_SETS;
CYCLE_INTERVAL = 1800;
FADE_DURATION = 1600;
FADE_FPS = 30;
/*
var HomeAnimator = new Class({
	initialize : function(background_image, visuals) {
		this.background_image = background_image;
		this.visuals = visuals;
		this.images = [];
		this.index = null; // which pole
		this.cycle = 0; // choose image in set
	},
	_get_vis_index : function(i, index) {
		if (i >= this.index)
			return i + 1;
		else
			return i;
	},
	start : function(index, images) {
		this.index = index;
		this.set_images(images);
		this.background_image.tween("opacity", 0);
		this.cycle_images();
		this.periodicalId = this.cycle_images.periodical(CYCLE_INTERVAL, this);
	},
	_init_images : function() {
		this.cycle = 0;
		for ( var i = 0; i < NUM_IMAGE_SETS; i++) {
			// only 3 visuals (4th is the current pole, managed in css, via .active)
			var div = this.visuals[this._get_vis_index(i)];
			var imgs = div.getElements("img");
			for ( var j = 0; j < imgs.length; j++) {
				var img = imgs[j];
				img.fx.cancel();
				img.fx.set("opacity", 0);
				img.src = this.images[i][j];
				img.fx.start("opacity", 1);
			}
		}
	},
	cycle_images : function() {
		if (this.index == null)
			return;
		function _check_cycle(i, j, cycle) {
			var c = cycle - 3, n = 0;
			if (c > 0)
				n = 7 << c;
			else
				n = 7 >> -c;
			return ((n & (1 << i)) ? 1 : 0) ^ j;
			// return j==cycle;
		}

		for ( var i = 0; i < NUM_IMAGE_SETS; i++) {
			// only 3 visuals (4th is the current pole, managed in css, via .active)
			var div = this.visuals[this._get_vis_index(i)];
			var imgs = div.getElements("img");
			for ( var j = 0; j < imgs.length; j++) {
				var img = imgs[j];
				img.fx.cancel();
				if (_check_cycle(i, j, this.cycle)) {
					img.fx.start("opacity", 1);
				} else {
					img.fx.start("opacity", 0);
				}
			}
		}
		this.cycle = (this.cycle + 1) % NUM_CYCLES;
	},
	stop : function() {
		this.visuals.each( function(div) {
			// div.empty();
			div.getElements("img").each( function(img) {
				img.fx.cancel();
				img.fx.onComplete = function() {
				};
				img.fx.set("opacity", 0);
			});
			// var img = div.getElement("img");
			// if (!img) return;
		});
		this.index = null;
		this.background_image.tween("opacity", 1);
	},
	set_images : function(images) {
		$clear(this.periodicalId);
		this.images = images;
		this._init_images();
	}
});
*/
function init_home_poles_animation() {
	var image_names = [ "admin", "commerce", "comm", "sante" ];
	var test = $$("body.home .content .promo");
	if (!test || !test[0])
		return;
	var div = test[0];
	var background_image = div.getElement("img");
	var visuals = div.getElements(".visual");
	var lis = div.getElements("li");
	var animator = new HomeAnimator(background_image, visuals);

	background_image.set("tween", {
		'duration' : 500,
		'fps' : 20
	});

	function _make_images(name) {
		var ans = [];
		for ( var i = 0; i < NUM_IMAGE_SETS; i++) {
			ans.push( [
			"/media/images/" + name + "-img" + (i * 2 + 1) + ".gif",
			"/media/images/" + name + "-img" + (i * 2 + 2) + ".gif" ]);
		}
		return ans;
	}

	function _start_pole_animation(index) {
		animator.start(index, _make_images(image_names[index]));
	}

	function _stop_pole_animation(index) {
		animator.stop();
	}

	function _handler_pole_over(ev) {
		this.addClass("active");
		_start_pole_animation(this.index);
	}

	function _handler_pole_leave(ev) {
		this.removeClass("active");
		_stop_pole_animation(this.index);
	}

	function _init_home_pole_animation(li, index) {
		li.index = index;
		li.addEvent("mouseover", _handler_pole_over);
		li.addEvent("mouseleave", _handler_pole_leave);
		var visual = visuals[index];
		visual.empty();
		for ( var i = 0; i < NUM_IMAGES_PER_SET; i++) {
			var img = new Element("img", {});
			img.fx = new Fx.Tween(img, {
				'duration' : FADE_DURATION,
				'fps' : FADE_FPS
			});
			img.fx.set("opacity", 0);
			img.injectInside(visual);
		}
	}

	for (i = 0; i < lis.length; i++) {
		_init_home_pole_animation(lis[i], i);
	}
}

function init_openables() {
	function _init_openables(div) {
		var open_button = div.getElement(".open_button");
		var close_button = div.getElement(".close_button");
		if (open_button)
			open_button.addEvent("click", function(ev) {
				new Event(ev).stop();
				div.addClass("open");
			});
		if (close_button)
			close_button.addEvent("click", function(ev) {
				new Event(ev).stop();
				div.removeClass("open");
			});
	}

	$$(".openable_container").each(_init_openables);
}

function init_autolabels(parent) {
	function _set_input_default(input, initial_text) {
		if (!input)
			return;
		function _hint() {
			if (input.value && input.value != initial_text)
				return;
			input.addEvent("focus", function() {
				if (this.value == initial_text)
					this.value = '';
				this.removeClass("inactive");
			});
			input.addEvent("blur", function() {
				if (this.value == '') {
					this.value = initial_text;
					this.addClass("inactive");
				}
			});
			input.value = initial_text;
			input.addClass("inactive");
		}

		function _reset(ev) {
			function _later() {
				if (input.value == initial_text)
					return;
				input.value = initial_text;
				input.addClass("inactive");
			}

			_later.delay(500);
		}

		function _pre_submit() {
			if (input.value == initial_text) {
				input.value = '';
			}
		}

		_hint();
		$(input.form).addEvent("submit", _pre_submit);
		$(input.form).addEvent("presubmit", _pre_submit);
		$(input.form).addEvent("reset", _reset);
	}

	parent = parent || document.body;
	parent.getElements("INPUT.autolabel, TEXTAREA.autolabel").each( function(input) {
		var label = input.title;
		input.title = '';
		_set_input_default(input, label);
	});
}

function preload_images() {
	// hardcoded
	new Asset.images( [
	// hovers espace entreprise
	// '/media/images/espace-head-b.jpg',
	// '/media/images/espace-deposer.jpg',
	// '/media/images/espace-consulter-1-b.jpg',
	// '/media/images/espace-consulter-2-b.jpg',
	// '/media/images/espace-consulter-3-b.jpg',
	// '/media/images/espace-consulter-4-b.jpg',
	// '/media/images/espace-consulter-5-b.jpg',
	// '/media/images/content/footer-a-ouest-b.png',
	// '/media/images/content/footer-a-phone-b.gif',
	// '/media/images/content/footer-a-alter-b.gif',
	// '/media/images/content/footer-a-class-b.gif',
	// '/media/images/content/footer-a-cif-b.gif',
	// '/media/images/content/footer-a-25-b.gif',
	// '/media/images/content/footer-a-est-b.png',

	// headers
	'/media/images/sprite-headers.png'
	// home poles
	// '/media/images/admin-div.gif',
	// '/media/images/comm-div.gif',
	// '/media/images/commerce-div.gif',
	// '/media/images/pole1-ov.png',
	// '/media/images/pole2-ov.png',
	// '/media/images/pole3-ov.png',
	// '/media/images/pole4-ov.png',
	// '/media/images/sante-div.gif'
	//
	// '/media/images/admin-img1.gif',
	// '/media/images/admin-img2.gif',
	// '/media/images/admin-img3.gif',
	// '/media/images/admin-img4.gif',
	// '/media/images/admin-img5.gif',
	// '/media/images/admin-img6.gif',
	// '/media/images/comm-img1.gif',
	// '/media/images/comm-img2.gif',
	// '/media/images/comm-img3.gif',
	// '/media/images/comm-img4.gif',
	// '/media/images/comm-img5.gif',
	// '/media/images/comm-img6.gif',
	// '/media/images/commerce-img1.gif',
	// '/media/images/commerce-img2.gif',
	// '/media/images/commerce-img3.gif',
	// '/media/images/commerce-img4.gif',
	// '/media/images/commerce-img5.gif',
	// '/media/images/commerce-img6.gif',
	// '/media/images/sante-img1.gif',
	// '/media/images/sante-img2.gif',
	// '/media/images/sante-img3.gif',
	// '/media/images/sante-img4.gif',
	// '/media/images/sante-img5.gif',
	// '/media/images/sante-img6.gif'

	]);
}

// window.addEvent("domready", init_tooltips);
// window.addEvent("domready", init_menu);

// window.addEvent("domready", preload_images);
// window.addEvent("domready", init_nav);
// window.addEvent("domready", init_ajax);
// window.addEvent("domready", init_home_entreprises);
// window.addEvent("domready", init_programme_selections);
// window.addEvent("domready", init_tabs);
// window.addEvent("domready", init_openables);
// window.addEvent("domready", init_home_poles_animation);
// window.addEvent("domready", init_autolabels);
