
var menu = {
	els: {},
	init: function() {
		
		$('#menu li').each(function() {
			var _this = $(this);
			var id = _this.attr('id');
			menu.els[id] = {left: _this.css('margin-left').toInt(), top: _this.css('margin-top').toInt()};
			
			if(_this.attr('rel') && _this.attr('rel') != '') {
				var directions = _this.attr('rel').split(':');
				menu.els[id].toLeft = directions[0].toInt();
				menu.els[id].toTop = directions[1].toInt();
			}
			
		});
		
		$('#menu li').mouseenter(function() {
			var _this = $(this);
			var id = _this.attr('id');
			
			if(id && menu.els[id]) {
				var item = menu.els[id];
				_this.animate({'margin-left': item.left+item.toLeft, 'margin-top': item.top+item.toTop}, {duration: 200, queue: false});
			}
			else { return false; }
			
		}).mouseleave(function() {
			var _this = $(this);
			var id = _this.attr('id');
			if(id && menu.els[id]) {
				var item = menu.els[id];
				_this.animate({'margin-left': item.left, 'margin-top': item.top}, {duration: 400, queue: false});
			}
			else { return false; }
		});
	}
}

var social = {
	//Set options vars,
	current: '#tab_social_facebook',
	
	//Set the Init function,
	init: function() {
		var _this = this;
		$('#sidebar_social_menu li a').click(_this.switchTab);
	},
	
	//Set the switch tabs function,
	switchTab: function(e) {
		var new_tab = $(this).attr('href');
		
		if(new_tab == social.current) { return false; }
		
		//Switch tabs,
		$(new_tab).show();
		$(social.current).hide();
		
		//Switch bgs,
		$('#sidebar_social').addClass(new_tab.replace('#', ''));
		$('#sidebar_social').removeClass(social.current.replace('#', ''));
		
		social.current = new_tab;
		
		return false;
	}
	
};

var inscription = {
	//Set options vars,
	nb_tabs: 0,
	members: [],
	price: 90, // 100 (1 juillet)
	taxes: 0, // 12.5%
	
	init: function() {
		var _this = inscription;
		
		_this.team_member_html = '<div id="ins_team_tabs_content_{id}" class="tab_content"><table cellspacing="0" cellpadding="0" border="0"><tr><td><label for="ins_team_member_name_{id}">'+ins_locale[lang].name+'</label><input id="ins_team_member_name_{id}" name="ins_team_member_name_{id}" type="text" /></td><td><label for="ins_team_member_email_{id}">'+ins_locale[lang].email+'</label><input id="ins_team_member_email_{id}" name="ins_team_member_email_{id}" type="text" /></td></tr><tr><td><label for="ins_team_member_age_{id}">'+ins_locale[lang].age+'</label><input id="ins_team_member_age_{id}" name="ins_team_member_age_{id}" type="text" /></td><td><label for="ins_team_member_phone_{id}">'+ins_locale[lang].phone+'</label><input id="ins_team_member_phone_{id}" name="ins_team_member_phone_{id}" type="text" /></td></tr><tr><td><label for="ins_team_member_origin_{id}">'+ins_locale[lang].origin+'</label><input id="ins_team_member_origin_{id}" name="ins_team_member_origin_{id}" type="text" /></td><td><label for="ins_team_member_captain_{id}">'+ins_locale[lang].captain+'</label><input id="ins_team_member_captain_{id}" class="ins_team_member_captain_input checkbox" name="ins_team_member_captain_{id}" type="checkbox" /></td></tr></table></div>';
		
		//Init the lightbox,
		$("a#btn_inscription_box").fancybox({
			width: 656,
			height: 792,
			autoDimensions: false,
			autoScale: false,
			overlayOpacity: 0.6,
			hideOnOverlayClick: false,
			padding: 0,
			margin: 0
		});
		
		//Init the form,
		this.initForm();
		
		//Clear the picture input value,
		$('#ins_team_photo').val("");
		
		//Init the team members management,
		$('#ins_team_nb').val(0);
		
		this.select_team_nb(0);
		$('#ins_team_nb').change(this.select_team_nb);
		
		//Init the team members tabs,
		$('#ins_team_tabs li a').live('click', function() {
			var id = $(this).attr('href').split('_');
			id = id[id.length-1];
			_this.selectTab(id);
			
			return false;
		});
		
		//Only one Captain,
		$('.ins_team_member_captain_input').live('click', function() {
			$('.ins_team_member_captain_input').attr('checked', false);
			$(this).attr('checked', true);
		});
		
		//Manage competition types,
		$('#ins_team_type').change(function() {
			var val = parseInt($(this).val());
			switch(val) {
				case 1:
					$('#ins_team_nb option').remove();
					$('<option value="" selected="selected">Choisir</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option>').appendTo('#ins_team_nb');
					$("#ins_team_nb").val("");
					inscription.select_team_nb("");
				break;
				case 2:
					$('#ins_team_nb option').remove();
					$('#ins_team_nb').html('<option value="" selected="selected">Choisir</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option>');
					$("#ins_team_nb").val("");
					inscription.select_team_nb("");
				break;
				case 3:
					$('#ins_team_nb option').remove();
					$('#ins_team_nb').html('<option value="" selected="selected">Choisir</option><option value="1">1</option>');
					$("#ins_team_nb").val("");
					inscription.select_team_nb("");
				break;
			}
			
		});
		
		
	},
	
	select_team_nb: function(nb) {
		var _this = inscription;
		
		//Manage tabs,
		if(nb == "") { nb = 0; }
		else { nb = $('#ins_team_nb').val(); }
		inscription.gen_tabs(nb);
		
		//Adjust price,
		var price = (_this.price*nb)+((_this.price*nb)*_this.taxes);
		$('#ins_team_price').html(price+'$ <small>(plus taxes)</small>');
		$('#amount').val(price);
		
	},
	
	
	initForm: function() {	
		var _this = inscription;
		//Main msg container,
		_this.form_msg = $('#ins_form_msg');
		
		//Init form,
		_this.form = new JSForm('#ins_form', {
			lang:'en',
			breakOnError: false,
			submit:function(isValid,errors) {
				if(!isValid) {
					_this.errorfield.showErrors();
					
					var error_inputs = [];
					_this.form.inputs.each(function(a, b) {
						if(a.errors.length > 0) { error_inputs.push(b); }
					});
					
					if(error_inputs[0]) {
						var tab = error_inputs[0].split('_');
						tab = tab[tab.length-1];
						//Select the tab if it exist,
						_this.selectTab(tab);
					}
					
					return false;
				} else {
					//Everything's fine, the for is submited,
				}
			}
		});
		
		_this.errorfield = new UIErrorField(_this.form, {messageContainer:'#ins_form_msg', errorClass: 'error', errorElement: '{input}', limit: 1});
		
		_this.form.registerInput('#ins_team_name', [
			["required", ins_locale[lang].validate.name]
		]);
		
		_this.form.registerInput('#ins_team_presentation', [
			["required", ins_locale[lang].validate.desc]
		]);
		
		_this.form.registerInput('#ins_team_type', [
			["required", ins_locale[lang].validate.type]
		]);
		
		_this.form.registerInput('#ins_team_nb', [
			["required", ins_locale[lang].validate.number]
		]);
		
	},
	
	
	gen_tabs: function(nb) {
		var _this = inscription;
		
		if(nb === "") { nb = 0; }
		
		nb = parseInt(nb);
		_this.nb_tabs = parseInt(_this.nb_tabs);
		
		if(nb == _this.nb_tabs) { return false; }
		else if(nb > _this.nb_tabs) {
			//Add tabs,
			var nb_add = nb-_this.nb_tabs;
			for(var i=0; i<nb_add;i++) {
				_this.addTab(_this.nb_tabs+(i+1));
			}
			
			_this.selectTab(1);
			_this.nb_tabs = nb;
			
		}
		else {
			//Remove tabs,
			var nb_remove = _this.nb_tabs-nb;
			for(var j=0; j<nb_remove;j++) {
				_this.removeTab(_this.nb_tabs-j);
			}
			
			_this.selectTab(1);
			_this.nb_tabs = nb;
			
		}
		
	},
	
	selectTab: function(id) {
		if($('#ins_team_tabs_content #ins_team_tabs_content_'+id)[0]) {
			$('#ins_team_tabs_content .tab_content').hide();
			$('#ins_team_tabs_content #ins_team_tabs_content_'+id).show();
			
			$('#ins_team_tabs li').removeClass('on');
			$('#ins_team_tabs li#ins_team_tabs_'+id).addClass('on');
		}
	},
	
	addTab: function(id) {
		var _this = inscription;
		
		//Tab,
		$('#ins_team_tabs').append('<li id="ins_team_tabs_'+id+'"><a href="#ins_team_tabs_content_'+id+'">Membre '+id+'</a></li>');
		
		//Content,
		var data = {id: id};
		
		var team_member_html = _this.team_member_html.supplant(data);
		$('#ins_team_tabs_content').append(team_member_html);
		
		//Validation,
		_this.form.registerInput('#ins_team_member_name_'+id, [
			["required", ins_locale[lang].validate.member_name+id+".</p>"]
		]);
		
		_this.form.registerInput('#ins_team_member_email_'+id, [
			["required", ins_locale[lang].validate.member_email+id+".</p>"],
			["email", ins_locale[lang].validate.member_email_format+id+")</p>"]
		]);
		
		_this.form.registerInput('#ins_team_member_age_'+id, [
			["required", ins_locale[lang].validate.member_age+id+".</p>"],
			["digits", ins_locale[lang].validate.member_age_format+id+")</p>"]
		]);
		
		_this.form.registerInput('#ins_team_member_phone_'+id, [
			["required", ins_locale[lang].validate.member_phone+id+".</p>"],
			["phone", ins_locale[lang].validate.member_phone_format+id+")</p>"]
		]);
		
		//Check the first member so that he's the captain,
		if(id == 1) { $('#ins_team_member_captain_'+id).attr('checked', 'checked'); }
		
	},
	
	
	removeTab: function(id) {
		var _this = inscription;
		
		//Tab,
		if($('#ins_team_tabs #ins_team_tabs_'+id)) { $('#ins_team_tabs #ins_team_tabs_'+id).remove(); }
		
		//Content,
		if($('#ins_team_tabs_content #ins_team_tabs_content_'+id)) { $('#ins_team_tabs_content #ins_team_tabs_content_'+id).remove(); }
		
		//Validation,
		_this.form.inputs.remove('ins_team_member_name_'+id);
		_this.form.inputs.remove('ins_team_member_email_'+id);
		_this.form.inputs.remove('ins_team_member_age_'+id);
		_this.form.inputs.remove('ins_team_member_phone_'+id);
		_this.form.inputs.remove('ins_team_member_origin_'+id);
		
	}
	
};


/*
	TEAMS,
*/

var teams = {
	//Vars,
	scrollview: false,
	
	//functions,
	init: function() {
		this.initScrollview();
	},
	
	initScrollview: function() {
		this.scrollview = new UIScrollView({
			contentId: '#team-list',
			btnLeft: '#team-list-prev',
			btnRight:'#team-list-next',
			step: 520,
			direction: 'horizontal'
		});
	}

};


var img_fader = {
	init: function(opts) {
		this.container = opts.container;
		this.delay = opts.delay ? opts.delay : 5000;
		this.childType = opts.childType ? opts.childType : 'img';
		
		this.container.children(this.childType).hide();
		
		this.current = this.container.children(this.childType+':first');
		
		this.current.show();
		
		//If there's more than one child, init the fader,
		if(this.container.children(this.childType).length > 1) {
			var _this = this;
			this.interval = setInterval(function() { _this.change(); }, this.delay);
		}
		
	},
	
	change: function() {
		var _this = this;
		clearInterval(_this.interval);
		
		var next = _this.current.next();
		if(next.length == 0) { next = this.container.children(this.childType+':first'); }
		
		_this.current.animate({'margin-left': '-60px', opacity: 0}, 400, 'swing', function() {
			_this.current.hide();
			next.css('opacity', 0).css('margin-left', '80px');
			next.show();
			
			next.animate({'margin-left': '0px', opacity: 1}, 600, 'swing', function() {
				_this.interval = setInterval(function() { _this.change(); }, _this.delay);
				_this.current = next;
			});
			
		});
	}
};


$(document).ready(function() {
	
	menu.init();
	social.init();
	inscription.init();
	teams.init();
	
	
	img_fader.init({
		container: $('#header_partners_container'),
		delay: 5000,
		childType: 'img'
	});
	
});