var BBC = {
	// Replaces the currently selected text with the passed text.
	//function replaceText(text, textarea){
	replaceText: function(text) {
		var textarea = document.forms['post'].elements['form_text'];
		if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange){ // Attempt to create a text range (IE).
			var caretPos = textarea.caretPos;
	
			caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
			caretPos.select();
		}else if (typeof(textarea.selectionStart) != "undefined"){ // Mozilla text range replace.
			var begin = textarea.value.substr(0, textarea.selectionStart);
			var end = textarea.value.substr(textarea.selectionEnd);
			var scrollPos = textarea.scrollTop;
	
			textarea.value = begin + text + end;
	
			if (textarea.setSelectionRange){
				textarea.focus();
				textarea.setSelectionRange(begin.length + text.length, begin.length + text.length);
			}
			textarea.scrollTop = scrollPos;
		}else{ // Just put it on the end.
			textarea.value += text;
			textarea.focus(textarea.value.length - 1);
		}
	},
	
	// Surrounds the selected text with text1 and text2.
	//function surroundText(text1, text2, textarea) {
	surroundText: function(text1, text2) {
		var textarea = document.forms['post'].elements['form_text'];
		if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange) {// Can a text range be created?
			var caretPos = textarea.caretPos;
	
			caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text1 + caretPos.text + text2 + ' ' : text1 + caretPos.text + text2;
			caretPos.select();
		}else if (typeof(textarea.selectionStart) != "undefined") { // Mozilla text range wrap.
			var begin = textarea.value.substr(0, textarea.selectionStart);
			var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
			var end = textarea.value.substr(textarea.selectionEnd);
			var newCursorPos = textarea.selectionStart;
			var scrollPos = textarea.scrollTop;
	
			textarea.value = begin + text1 + selection + text2 + end;
	
			if (textarea.setSelectionRange) {
				if (selection.length == 0)
					textarea.setSelectionRange(newCursorPos + text1.length, newCursorPos + text1.length);
				else
					textarea.setSelectionRange(newCursorPos, newCursorPos + text1.length + selection.length + text2.length);
				textarea.focus();
			}
			textarea.scrollTop = scrollPos;
		}else{ // Just put them on the end, then.
			textarea.value += text1 + text2;
			textarea.focus(textarea.value.length - 1);
		}
	}
	
}

// Definition of the Class Site
var Utilitaries = new Class ({
	start: function(){
		Site.open_ext_link();
		Site.dynamiseNav();
		Site.dynamiseGallery();
		if(document.forms['post']) { 
			if     (document.forms['post'].elements['form_name']) { document.forms['post'].elements['form_name'].focus(); }
			else if(document.forms['post'].elements['form_email']) { document.forms['post'].elements['form_email'].focus(); }
		}
	},
	open_ext_link: function() {
		var links = $$('a');
		links.each(function(el, i) {
			if(el.hasClass('target_blank')) {
				el.title += " - Will open in a new window - "
				el.addEvent('click', function(e){
					e = new Event(e).stop();
					window.open(this.href);
				});
			}
		});
	},
	dynamiseNav: function(){
		var CSSelements = 'div#naviguation ul li a';
		var sideblocks = $$(CSSelements);
		
		sideblocks.each(function(el, i){
			var first = el.getFirst();
//			if (!first || first.getTag() != 'a') return;
	
			var overfxs = new Fx.Styles(el, {wait: false, duration: 250, transition: Fx.Transitions.quadOut});
			
//			var fromcolor = el.getStyle('color');
//			var frombgcolor = el.getStyle('background-color');
			var frompadding = el.getStyle('padding');
			
//			var tocolor = first.getStyle('color');
//			var tobgcolor = first.getStyle('background-color');
//			var topadding = first.getStyle('padding');
			var topadding = '0 0 0 10px';
			
			el.mouseouted = true;
			el.addEvent('mouseenter', function(e){
				overfxs.start({
//					'color': tocolor,
//					'background-color': tobgcolor,
					'padding': topadding
				});
			});
			el.addEvent('mouseleave', function(e){
				overfxs.start({
//					'color': fromcolor,
//					'background-color': frombgcolor,
					'padding': frompadding
				});
			});
		}, this);
	},
	dynamiseGallery: function(){
		var CSSelements = 'div#uploaded_items ul#gallery li a';
		var sideblocks = $$(CSSelements);
		
		sideblocks.each(function(el, i){
			el.setOpacity(0.99);
			var overfxs = new Fx.Style(el, 'opacity', {wait: false, duration: 250, transition: Fx.Transitions.quadOut});
			
			el.mouseouted = true;
			el.addEvent('mouseenter', function(e){
				overfxs.start(0.99, 0.5);
			});
			el.addEvent('mouseleave', function(e){
				overfxs.start(0.5, 0.99);
			});
		}, this);
	},
	// Fonction qui vrifie les champs du formulaire d'envoi d'Emails
	validateForm: function() {
		
		if (document.pressed == 'update') return true;
		
		var warning = "";
		var first = false;
		
		var form = document.forms['post'];
		/* Page contact */
		if (form.elements['form_Email'] && ((form.elements['form_Email'].value.indexOf("@") < 0) || (form.elements['form_Email'].value.indexOf(".") < 3))) {
		// il faut au moins un caractre, un "@", au moins un caractre puis un point.
			warning = warning + "- une adresse Email valide.\n";
			if(!first) first = form.elements['form_Email'];
		}
		if (form.elements['form_Sujet'] && form.elements['form_Sujet'].value.length == 0) {
			warning = warning + "- un sujet.\n";
			if(!first) first = form.elements['form_Sujet'];
		}
		if (form.elements['form_Message'] && form.elements['form_Message'].value.length == 0) {
			warning = warning + "- un message.\n";
			if(!first) first = form.elements['form_Message'];
		}
		/* Page caddie */
		
		if (form.elements['form_name'] && form.elements['form_name'].value.length == 0) {
			warning = warning + "- votre nom.\n";
			if(!first) first = form.elements['form_name'];
		}
		if (form.elements['form_firstname'] && form.elements['form_firstname'].value.length == 0) {
			warning = warning + "- votre prénom.\n";
			if(!first) first = form.elements['form_firstname'];
		}
		if (form.elements['form_address'] && form.elements['form_address'].value.length == 0) {
			warning = warning + "- votre adresse.\n";
			if(!first) first = form.elements['form_address'];
		}
		if (form.elements['form_npa'] && form.elements['form_npa'].value.length == 0) {
			warning = warning + "- votre numéro postal.\n";
			if(!first) first = form.elements['form_npa'];
		}
		if (form.elements['form_state'] && form.elements['form_state'].value.length == 0) {
			warning = warning + "- votre localité.\n";
			if(!first) first = form.elements['form_state'];
		}
		if (form.elements['form_email'] && ((form.elements['form_email'].value.indexOf("@") < 0) || (form.elements['form_email'].value.indexOf(".") < 3))) {
		// il faut au moins un caractre, un "@", au moins un caractre puis un point.
			warning = warning + "- une adresse Email valide.\n";
			if(!first) first = form.elements['form_email'];
		}
		if (form.elements['form_subj'] && form.elements['form_subj'].value.length == 0) {
			warning = warning + "- un sujet.\n";
			if(!first) first = form.elements['form_subj'];
		}
		if (form.elements['form_text'] && form.elements['form_text'].value.length == 0) {
			warning = warning + "- un commentaire.\n";
			if(!first) first = form.elements['form_text'];
		}
	
		if (form.elements['form_captcha'] && form.elements['form_captcha'].value != document.getElementById("gotcha-captcha").alt) {
			warning = warning + "- le code sur l'image.\n";
			if(!first) first = form.elements['form_captcha'];
		}
		
		if (warning != "") {
			warning = "Veuillez entrer:\n" + warning;
			first.select();
			alert(warning);
			return false;
		}else{
			return true;
		}
	}
});

var Site = new Utilitaries();
window.addEvent('domready', Site.start);

