// ---------------------------------------------
// =ButtonsGroup [Function]
// ---------------------------------------------
var ButtonsGroup = function(visual)
{
	var buttonsGroupClass = this;
	
	var _id = 			visual.id;
	var _visual = 		visual;
	var _value = 		null;
	var _locked =		false;
	var _swipeLocked = 	false;
	var _increment =	1;
	var _allButtons = 	[];
	
	
//	Initialisation
	this.init = function() {
		setDefaultValue();
		initButtons();
	};
	
	var setDefaultValue = function() {
		var selected = $(_visual).children('.selected');
		if (selected.size() == 1) _value = selected.attr('id');
	};
	
//	Buttons management
	var initButtons = function() {
		_allButtons = $(_visual).children('a');
		_allButtons.bind(TouchUtils.CLICK ,onButtonClick);
	};
	
	var onButtonClick = function(e) {
		selectButton(this);
	};
	
	var selectButton = function(btn)
	{
		if (_locked) return;
		
		var previous = $($(_visual).children('.selected'));
		if (previous[0].rel != btn.rel || btn.rel == '') previous.removeClass('selected');
			
		$(btn).addClass('selected');
		
		if ($(btn).index() > previous.index())		_increment = 1;
		else if ($(btn).index() < previous.index())	_increment = -1;
		else										_increment = 0;
	};
	
//	Public access
	this.lock 	= function() { _locked = true; };
	this.unlock = function() { _locked = false; _swipeLocked = false };
	
	this.selectSwipeNext = function()
	{
		if (_swipeLocked) return;
		
		var btn = $(_visual).children('.selected').next('a');
		if(btn.size() > 0) {
			btn.trigger(TouchUtils.CLICK);
			_swipeLocked = true;
		}
	};
	
	this.selectSwipePrev = function()
	{
		if (_swipeLocked) return;
		
		var btn = $(_visual).children('.selected').prev('a');
		if(btn.size() > 0) {
			btn.trigger(TouchUtils.CLICK);
			_swipeLocked = true;
		}
	};
	
//	Getters
	this.id 			= function() { return _id; };
	this.value			= function() { return _value; };
	this.increment 		= function() { return _increment; };
	this.locked 		= function() { return _locked; };
	
// 	Constructor
	(function() {
		buttonsGroupClass.init();
    })();
};
