// Appel ajax pour le chargement de la page 'coming soon'
function comingsoonAjaxCall(toUpdate) {
	new Request.HTML({
		url: "./ajax/comingsoon_data.php5",
		method: "post",
		update: (toUpdate == undefined ? $('content_wrapper') : $(toUpdate)),
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
			var jsonObj = JSON.decode(this.getHeader('X-JSON'));
			if(jsonObj) {
				switch (jsonObj._status) {
					case 'request_successful':
						//$('content_wrapper').setStyle('display', 'block');
						var loc = document.location.href;
						if(loc.indexOf("r2.php5") != -1) {
							$('top_calendar_line').setStyle('display', 'none');
							$('calendar_header').setStyle('display', 'none');
							$('calendar_wrapper').setStyle('display', 'none');
						}
						
						// Switch content_wrapper / temp_wrapper
						$('temp_wrapper').setStyle('display', 'none');
						$('content_wrapper').setStyle('display', 'block');
						break;
				}
			}
		}
	}).send("ajax=yes");
}

// Javascript version of PHP's basename
function basename (path, suffix) {
  // http://kevin.vanzonneveld.net
  // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // +   improved by: Ash Searle (http://hexmen.com/blog/)
  // +   improved by: Lincoln Ramsay
  // +   improved by: djmix
  // *     example 1: basename('/www/site/home.htm', '.htm');
  // *     returns 1: 'home'

  var b = path.replace(/^.*[\/\\]/g, '');
  
  if (typeof(suffix) == 'string' && b.substr(b.length-suffix.length) == suffix) {
      b = b.substr(0, b.length-suffix.length);
  }
  
  return b;
}

// Validation formulaires
function verifemail(email) {
	var pattern = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
  return pattern.test(email);
}

function verifheure(heure) {
	var pattern = /^((([01][0-9])|(2[0-3]))[:]([0-5][0-9]))$/;
  return pattern.test(heure);
}

function verifjour(jour) {
	var reponse = /^((0[1-9])|([12][0-9])|(3[0-1]))[/]((0[1-9])|(1[0-2]))[/]((200[1-9])|(201[0-9]))$/;
	if(!reponse.test(jour)){
		alert("Format incorrect pour la date !\nVous devez respecter le format suivant : 'jj/mm/aaaa'");
		return false;
	} else {
		return true;
	}
}

// *** Gestion des 'select' des 'menu_bis' ***
var alone_over = function(evt) {evt.target.addClass('alonehover');};
var alone_out = function(evt) {evt.target.removeClass('alonehover');};

function initMenu_bisSelect() {
	$('menu').setStyle('z-index', 1200);
	$('menu').setStyle('position', 'relative');
	
	if($$('ul.select li[class~=selected]')[0]) {
		$$('ul.select li[class~=selected]')[0].removeEvent("mouseover", alone_over);
		$$('ul.select li[class~=selected]')[0].removeEvent("mouseout", alone_out);
	}
	
	$$('ul.select li[class^=choix]')[0].addEvent("mouseover", alone_over);
	$$('ul.select li[class^=choix]')[0].addEvent("mouseout", alone_out);
	
	var x = 0;
	$$('ul.select li').each(function(elt) {
		if(x++ == 0) {
			elt.set('class', 'choix');
			elt.setStyle('display', 'block');
		} else {
			elt.set('class', '');
		}
	});
	
	$$('ul[class^=select]')[0].removeClass('displayed');
}
// *** FIN - Gestion des 'select' des 'menu_bis' ***

// Gestionnaire des jours du calendrier - AJAX
function getCalendar(toSend) {
	// Activation du bon onglet du calendrier, modification de la variable 'jour' et mise à jour du formulaire "inner_link"
	var jour = toSend.substring(toSend.lastIndexOf("=") + 1); // On récupère la valeur du champ 'jour' transmise dans toSend
	$$('ul#calendar_header li[class~=active]')[0].removeClass('active');
	$(jour).addClass('active');
	var target_x = $(jour).getPosition('calendar_header').x;
	$('calendar_tab').setStyle('left', target_x - 1);
	$('asd').value = jour;	
	
	new Request.HTML({
		url: "./ajax/calendar_data.php5",
		method: "post",
		update: $('calendar_wrapper'),
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
			var jsonObj = JSON.decode(this.getHeader('X-JSON'));
			if(jsonObj) {
				switch (jsonObj._status) {
					case 'request_successful':
						// Affichage des header et wrapper du calendrier (dans le cas où ils avaient été masqués)
						if(document.location.href.indexOf("r2.php5") != -1)
							$('top_calendar_line').setStyle('display', 'block');
						$('calendar_header').setStyle('display', 'block');
						$('calendar_wrapper').setStyle('display', 'block');
						
						// On fixe la hauteur des 'time_line' à la hauteur des li.title (qui peuvent passer sur plusieurs lignes)
						$$('ul[class=time_line]').each(function(ul) {
							var li_title = ul.getFirst('li');
							var li_height = li_title.getSize().y;
							li_title.setStyle('zoom', 1); // Hack pour IE6 ! Doit être placé à cet endroit précis (sinon IE6 ne parvient pas à calculer la hauteur du li) !!!
							ul.setStyle('height', li_height);
						});
						
						// Cas de la rubrique Infos pratiques (un clic sur un nom de lieu doit permettre l'affichage de l'onglet infop)
						if(document.location.href.indexOf("r3.php5") != -1) {
							$$('ul[class=time_line] li[id^=l_]').addEvent("click", function(e) {
								var tab_wrapper = $('infop_tab_wrapper');
								if(e.target.hasClass('title_infop')) {
									if($$('ul[class=time_line] li[class=title_infop_active]')[0]) {
										var other_active = $$('ul[class=time_line] li[class=title_infop_active]')[0];
										other_active.removeClass('title_infop_active');
										other_active.addClass('title_infop');
									}
									tab_wrapper.set('html', '<div class="infop_ajax_loader"><img src="./img/ajax_loader_2.gif" alt="" /></div>');
									tab_wrapper.setStyle('top', e.target.getCoordinates($('top_container')).bottom);
									tab_wrapper.setStyle('left', 20);
									tab_wrapper.setStyle('display', 'block');
									infop_tabAjaxCall(e.target.id.substring(2));
								} else {
									tab_wrapper.setStyle('display', 'none');
								}
								e.target.toggleClass('title_infop');
								e.target.toggleClass('title_infop_active');
							});
						}
						break;
				}
			}
		}
	}).send(toSend);
}


/* *** D O M  R E A D Y *** */
window.addEvent("domready", function() {
	/* *** Fix IE6 background image flicker *** */
	if(/MSIE (6)/.test(navigator.userAgent)) {
		try {
			document.execCommand("BackgroundImageCache", false, true);
		} catch(err) { }
	}
	
	// Gestionnaire du Menu principal
	$$('ul#menu li a').addEvent("click", function(e) {
		new Event(e).stop();
		var short_href = e.target.get('href').substring(0, e.target.get('href').indexOf('?'));
		document.location.href = "./" + short_href;
		//document.location.href = short_href;
	});
	
	// Gestionnaire des 'select' des 'menu_bis'
	if($$('ul[class^=select]')[0]) {
		$$('ul.select li[class^=choix]')[0].addEvent("mouseover", alone_over);
		$$('ul.select li[class^=choix]')[0].addEvent("mouseout", alone_out);
		
		$$('ul.select li').addEvent("click", function(e) {
			//new Event(e).stop();
			if(e.target.hasClass('displayed')) { // Le combo est déroulé : on va le replier
				$('menu').setStyle('z-index', 1200);
				$('menu').setStyle('position', 'relative');
				
				if(e.target.hasClass('choix')) { // On a cliqué sur "Par année"
					if(e.target.hasClass('was_selected')) {
						e.target.removeClass('was_selected');
						var to_attach_to = e.target;
					} else {
						var to_attach_to = $$('ul.select li.was_selected')[0];
						$$('ul.select li[class^=choix]')[0].setStyle('display', 'none');
						$$('ul.select li.was_selected')[0].addClass('selected');
						$$('ul.select li.was_selected')[0].removeClass('was_selected');
					}
				} else { // On a cliqué sur une année
					if(!e.target.hasClass('was_selected')) { // Gestion de l'action à effectuer en fonction de la rubrique
						if(document.location.href.indexOf("r8.php5") != -1) { // Archives
							mosaicAjaxCall("&eid=" + e.target.id);
							// Mise à jour du formulaire "inner_link"
							$('sr').value = '3';
							$('i').value = '0';
							$('seg').value = '0';
							$('y').value = e.target.id;
						} else if(document.location.href.indexOf("r6.php5") != -1) { // Presse
							if(e.target.id.substring(3) == "expo") {
								mosaicAjaxCall("&expousoiree=expo");
								// Mise à jour du formulaire "inner_link"
								$('sr').value = '1';
								$('i').value = '0';
							} else if(e.target.id.substring(3) == "soiree") {
								mosaicAjaxCall("&expousoiree=soiree");
								// Mise à jour du formulaire "inner_link"
								$('sr').value = '2';
								$('i').value = '0';
							} else if(e.target.id.substring(3) == "2_bios") {
								getPressData('todo=2_bios');
								// Mise à jour du formulaire "inner_link"
								$('sr').value = '3';
								$('i').value = '0';
							} else if(e.target.id.substring(3) == "logo_affiche") {
								getPressData('todo=logo_affiche');
								// Mise à jour du formulaire "inner_link"
								$('sr').value = '4';
								$('i').value = '0';
							}
						}
						
						// Dé-sélection du menu sélectionné parmi ceux corrélés à 'ul.select'
						if($('addToMenuBis').getChildren('ul')[0].getChildren('li[class$=active]')[0]) {
							$('addToMenuBis').getChildren('ul')[0].getChildren('li[class$=active]')[0].removeClass('active');
						}
					}
					
					$$('ul.select li[class^=choix]')[0].setStyle('display', 'none');
					$$('ul.select li.was_selected')[0].removeClass('was_selected');
					e.target.addClass('selected');
					var to_attach_to = e.target;
				}
				$$('ul[class^=select]')[0].removeClass('displayed');
				$$('ul.select li').removeClass('displayed');
				
				to_attach_to.addEvent("mouseover", alone_over);
				to_attach_to.addEvent("mouseout", alone_out);
				if(e.target.hasClass('choix')) {
					to_attach_to.addClass('alonehover');
				}
				
			} else { // Le combo est replié : on va le dérouler
				$('menu').setStyle('z-index', '0');
				$('menu').setStyle('position', 'static');
				
				e.target.fireEvent("mouseout", e);
				e.target.removeEvent("mouseover", alone_over);
				e.target.removeEvent("mouseout", alone_out);
				
				$$('ul.select li[class^=choix]')[0].setStyle('display', 'block');
				if(e.target.hasClass('selected')) {
					e.target.removeClass('selected');
				}
				e.target.addClass('was_selected');
				$$('ul[class^=select]')[0].addClass('displayed');
				$$('ul.select li').addClass('displayed');
			}
		});
	}
	
	// Gestionnaire des jours du calendrier
	if($('calendar_header')) {
		$$('ul#calendar_header li[id!=calendar_tab]').addEvent("click", function(e) {
			$$('ul#calendar_header li[class~=active]')[0].removeClass('active');
			e.target.addClass('active');
			var target_x = e.target.getPosition('calendar_header').x;
			$('calendar_tab').setStyle('left', target_x - 1);
			
			if(document.location.href.indexOf("r2.php5") != -1) { // Programmation
				var sous_rubrique_id = $$('div#addToMenuBis ul li[class~=active]')[0].id;
				if(sous_rubrique_id.indexOf("program_expo_") != -1) {
					var type = "expo";
				} else if(sous_rubrique_id.indexOf("program_soirees_") != -1) {
					var type = "soiree";
				}
			} else if(document.location.href.indexOf("r7.php5") != -1) { // Evénements partenaires
				var type = "partenaire";
			}
			var jour = e.target.id;
			getCalendar("type=" + type + "&jour=" + jour);
		});
	}
});