/**
 * ecolepresquile.fr commons JS
 * KEEPCOM - RYTTER Romain <romain@keepcom.fr>
 * http://www.keepcom.fr
 */

/** Flash **/
function canSWF() {
	return !navigator.platform.match(/linux/i);
}

/** Default configuration **/
var gl = {
	color: '#000',
	colors: {
		blue: '#00B4FF',
		green: '#99B820',
		magenta: '#E51896',
		black: '#000'
	},
	styles: {
		'background-color': '#menu .selected, #subfooter, .dyn_background',
		'border-color': '#footer, .dyn_border',
		'color': '#content h1, #content h2, #content h3, #content a, .dyn_color, .notice a'
	},
	scroll: {
		delay: 250,
		duration: 200
	},
	duration: 250,
	delay: 100,
	XHRbase: 'http://nobase',
	here: '',
	fast: false
};

/** Highslide configuration **/
hs.creditsText = '';
hs.fullExpandTitle = 'Voir en taille maximale';
hs.restoreTitle = 'Cliquez pour fermer cette image, maintenez le clic enfoncé et bougez pour déplacer l\'image. Utilisez les flcèhes du clavier pour parcourir les images.';
hs.focusTitle = 'Cliquez pour mettre au premier plan';
hs.loadingText = 'Chargement...';
hs.loadingTitle = 'Cliquez pour annuler';
hs.graphicsDir = 'js/highslide/graphics/';
hs.outlineType = null;
hs.marginLeft = 10;
hs.marginRight = 35; // leave room for scrollbars + outline
hs.marginTop = 10;
hs.marginBottom = 35; // leave room for scrollbars + outline

/** Layout functions **/
function layout_highslide(oo) {
	$(oo).addEvent('click', function(evt){
		new Event(evt).stop();
		hs.expand(oo);
	});
}

function layout_changeColor(color, delay) {
	if (!color) color = gl.color;
	if (!delay) delay = gl.delay;
	setTimeout('layout_doChangeColor(\''+color+'\');', delay);
}

function layout_doChangeColor(scolor) {
	if (scolor) gl.color = scolor;
	if (gl.fast) var sduration = 0;
	else var sduration = gl.duration;
	var sStyles = gl.styles;
	var selements = [];
	var seffects = {};
	var o = 0;
	for (var sStyle in sStyles) {
		var sClass = sStyles[sStyle];
		if (sStyle == 'border-color') var sGetStyle = 'border-left-color';
		else var sGetStyle = sStyle;
		$$(sClass).each(function(element) {
			seffects[o] = new Object;
			seffects[o][sStyle] = [element.getStyle(sGetStyle), scolor];
			selements.push(element);
			o++;
		});
	}
	new Fx.Elements(selements, {wait: false, duration: sduration}).start(seffects);
}

function layout_listenLocation() {
	var loc = document.location + '';
	var r = new RegExp('/#(.*)');
	if (loc != gl.here) {
		if (r.test(loc)) {
			gl.here = loc;
			layout_loadPage(loc.replace(r, '/$1'));
		}
	}
}

function layout_makeXHRContent(oo) {
	var i = new RegExp('/.*jpeg|jpg|png|gif|bmp|tiff$/i');
	$(oo).getElements('a').each(function(o) {
		if (i.test(o.href) && o.getElement('img')) {
			layout_highslide(o);
		} else {
			if (o.hasClass('galerie')) {
				layout_makeGalerieLink(o);
			} else {
				layout_makeXHRLink(o);
			}
		}
	});
}

function layout_makeXHRLink(oo) {
	var base = gl.XHRbase;
	var r = new RegExp(base + '/(.+)');
	var e = new RegExp(base + '/downloads/.+');
	if (typeof(oo) != 'array') oo = [$(oo)];
	oo.each(function(o) {
		if (r.test(o.href) && !e.test(o.href)) {
			o.href = layout_addAnchorTweak(o.href);
		}
	});
}

function layout_makeGalerieLink(o) {
	o.addEvent('click', function(v) {
		new Event(v).stop();
		layout_showGalerie(o.href);
	});
	o.getParent().addEvent('click', function() {
		layout_showGalerie(o.href);
	});
}

function layout_showGalerie(u) {
	var g = $('galerie');
	var c = g.getElement('div.container').getElement('div.sub').getElement('div.content');
	var bg = g.getElement('div.bg');
	var cl = g.getElement('div.container').getElement('div.sub').getElement('a.close');
	cl.addEvent('click', function(v) {
		new Event(v).stop();
		g.setStyle('display', 'none');
	});
	var r = function() {
		var rq = new Ajax(u, {
			method: 'get',
			update: c,
			evalScripts: true,
			onRequest: function() {
			},
			onSuccess: function() {
				g.setStyle('display', 'block');
				layout_changeColor();
			},
			onFailure: function() {
			}
		});
		rq.request();
		}
	layout_scrollTo();
	r.delay(gl.scroll.delay);
}

function layout_setPagination(type, uri, title) {
	var cont = (type == 'previous') ? $('pagination_previous') : $('pagination_next');
	var a = cont.getElement('a');
	if (!a) a = new Element('a').inject(cont);
	if (title) a.innerHTML = title;
	if (uri) {
		a.href = uri;
		layout_makeXHRLink(a);
		cont.setStyle('display', 'block');
	} else {
		cont.setStyle('display', 'none');
	}
}

function layout_addAnchorTweak(href) {
	var r = new RegExp(gl.XHRbase + '/(.*)');
	if (r.test(href)) {
		return href.replace(r, gl.XHRbase + '/#$1');
	}
	return href;
}

function layout_deleteAnchorTweak(href) {
	var r = new RegExp('/#(.*)');
	if (r.test(href)) {
		return href.replace(r, '/$1');
	}
	return href;
}

var layout_scrollTo = function(o) {
	var fx = new Fx.Scroll(window, {
		wait: false,
		duration: gl.scroll.duration,
		transition: Fx.Transitions.Quad.easeInOut
	});
	if (o) fx.toElement(o);
	else fx.toTop();
}

function layout_loadPage(uri, params) {
	if (uri) {
		layout_autoMenu(uri);
		var u = uri;
		var reg = /\?/;
		var dt = new Date().getTime();
		if (reg.test(uri)) u += '&xhr=' + dt;
		else u += '?xhr=' + dt;
		if (!params) params = {};
		var content = $('content');
		var r = function() {
			var rq = new Ajax(u, {
				method: 'get',
				update: 'content',
				evalScripts: true,
				onRequest: function() {
					$('message').setStyle('visibility', 'visible');
					content.setStyle('opacity', 0.25);
					layout_slideshow_hide();
					$('layout').removeClass('home');
					$('content').addClass('active');
				},
				onSuccess: function() {
					$('message').setStyle('visibility', 'hidden');
					// $('swf-diapos-container').setStyle('display', 'block');
					$('swf-crayons-container').setStyle('display', 'block');
					layout_makeXHRContent('content');
					content.setStyle('opacity', 1);
				},
				onFailure: function() {
					$('message').setStyle('visibility', 'hidden');
					content.setStyle('opacity', 1);
					content.innerHTML = '<h1>Une erreur est survenue</h1>La page demand&eacute;e n\'existe pas ou n\'est pas disponible.<br />Veuillez nous excuser de la g&ecirc;ne occasionn&eacute;e.<div class="more dyn_border"><ul><li><a href="'+ gl.XHRbase +'">&raquo; Retourner &agrave; la page d\'accueil</a></li></ul></div>';
					layout_changeColor();
				}
			});
			rq.request();
		}
		layout_scrollTo();
		r.delay(gl.scroll.delay);
	}
}

function layout_autoMenu(uri) {
	
	var r = new RegExp('#');
	var m = $('menu');
	if (typeof m != 'null') {
		var oo = m.getElements('.block');
		var f = false;
		var d = new Date().getTime();
		d += '.' + Math.random(0, 100);
		
		m.setStyle('visibility', 'visible');
		if (!r.test(uri)) {
			uri = layout_addAnchorTweak(uri);
		}
		oo.each(function(o) {
			if (l = o.getElement('a')) {
				if (l.href == uri) {
					o.select();
					f = true;
				}
			}
		});
		if (!f) {
			oo.each(function(o) {
				o.unselect();
			});
		}
	}
}

function layout_slideshow_hide() {
	$('slideshow-box').setStyle('visibility', 'hidden');
	$('alt-background').setStyle('visibility', 'visible');
}

function layout_slideshow_show() {
	$('slideshow-box').setStyle('visibility', 'visible');
	$('alt-background').setStyle('visibility', 'hidden');
}

function layout_slideshow_empty() {
	$('slideshow').empty();
}

function layout_slideshow_add(uri, img) {
	var a = $(new Element('a', {'class': 'hs', 'href': uri}));
	var i = $(new Element('img', {'class': 'item dyn_border', 'src': img}));
	layout_highslide(a);
	$('slideshow').adopt(a.adopt(i));	
}
function layout_slideshow() {
	var szNormal = 75, szSmall  = 75, szFull = 105;
	var kwicks = $$("#slideshow .item");
	var fx = new Fx.Elements(kwicks, {wait: false, duration: 300, transition: Fx.Transitions.Cubic.easeOut});
	kwicks.each(function(kwick, i) {
		kwick.addEvent("mouseenter", function(event) {
			var o = {};
			kwicks.each(function(other, j) {
				if(i != j) {
					var w = other.getStyle("width").toInt();
					var h = other.getStyle("height").toInt();
					if(w != szSmall) o[j] = {width: [w, szSmall], height: [h, szSmall], opacity: 1};
				} else {
					o[i] = {width: [kwick.getStyle("width").toInt(), szFull], height: [kwick.getStyle("height").toInt(), szFull], opacity: 1};
				}
			});
			fx.start(o);
		});
	});
	 
	$("slideshow").addEvent("mouseleave", function(event) {
		var o = {};
		kwicks.each(function(kwick, i) {
			kwick = $(kwick);
			o[i] = {width: [kwick.getStyle("width").toInt(), szNormal], height: [kwick.getStyle("height").toInt(), szNormal], opacity: 1}
		});
		fx.start(o);
	})
}

function layout_makeMenu() {
	layout_makeXHRContent($('menu'));
	/** menu **/	
	$$('#menu .block').each(function(element) {
		element.oldColor = element.getStyle('background-color');
		element.state = (element.hasClass('selected') ? true : false);
		element.fx = null;
		if (link = element.getElement('a')) {
			//layout_makeXHRLink(link);
			if (!link.hasClass('galerie')) element.href = link.href;
			link.addEvent('click', function(ev) {
				new Event(ev).stop();
				element.fireEvent('click');
				return false;
			});
		} else element.href = '';
		element.addEvent('click', function(ev) {
			//ev = new Event(ev);
			if (!element.state) {
				element.select();
				//if (element.href) layout_loadPage(element.href);
				if (element.href) document.location = element.href;
			}
			else element.unselect();
			//ev.stop();
			//return false;
		});
		element.select = function() {
			if (!element.state) {
				if (element.hasClass('main')) var elements = $$('#menu .block');
				else var elements = element.getParent().getElements('.block');
				elements.each(function(el) {
					el.unselect();
				});
				if (element.getParent().parentBox) {
					element.getParent().parentBox.select();
				}
				element.addClass('selected');
				element.setStyle('background-color', gl.color);
				element.state = true;
				if (element.fx) {
					if (gl.fast) element.fx.show();
					else element.fx.slideIn();
				}
			}
		};
		element.unselect = function() {
			if (element.state) {
				element.removeClass('selected');
				element.setStyle('background-color', element.oldColor);
				element.state = false;
				if (element.fx) {
					element.fx.hide();
				}
			}
		}
		if (element.hasClass('toggle')) {
			element.fx = new Fx.Slide(element.id+'_bx', {wait: false, duration: 200, mode: (element.hasClass('horizontal') ? 'horizontal' : 'vertical')});
			$(element.id+'_bx').parentBox = element;
			element.fx.hide();
		}
	});
	setTimeout('layout_autoMenu(\''+ document.location +'\')', 100);
	setInterval('layout_listenLocation()', 100);
}

/** Initialization **/
Window.addEvent('domready', function(){
	
	layout_makeXHRContent(document);

	
});