




function getCheckboxField(checkbox)
{
	var field = checkbox.getProperty('name').replace('[]', '');
	//alert(field);
	return field;
}


function performFieldSpecificActions(checkbox)
{
	var field = getCheckboxField(checkbox);
	
	//alert('found:'+field);
	
	switch (field)
	{
		case "terms" :
		
			//alert('TERMS!!');
			checkTermCount(checkbox);
			updateTermsList();
		
		break;
		
		case "branches" :

//			if ($('all_branches-field') && !checkbox.checked) $('all_branches-field').checked = false;
			updateBranchesList();
		
		break;
		
		case "categories" :
			updateCatsList();
		break;

		
	}
}




function addOption(obj, val, label, selected)
{
	var opt = new Element('option');
	opt.setProperty('value', val);
	if (arguments.length > 3) { if (selected) opt.setProperty('selected', 'selected'); }
	opt.innerHTML = label;
	opt.injectInside(obj);
}




function addListItem(obj, text)
{
	var li = new Element('li');
	li.innerHTML = text;
	li.injectInside(obj);
}



function getChildCheckbox(label)
{
	var id = label.getProperty("id").replace('-label-', '-input-');
	return $(id);
}



function addOptionEvents(checkbox)
{

	if (checkbox.hasClass('events_added')) return;

	var label = checkbox.getParent();
	
	//alert('addOptionEvents '+label.get('text'));
	
	if (checkbox.checked) label.addClass('selected');
	
	checkbox.setStyle('display', 'none');
	

	label.addEvent('mouseover', function(e) {
		$$('.multi_option.hover').each(function(item) { item.removeClass('hover'); });
		this.addClass('hover');
	});
	//label.addEvent('mouseleave', function(e) { label.removeClass('hover'); });
	label.addEvent('mouseout', function(e) { label.removeClass('hover'); });

	if (Browser.Engine.trident)	// mootools 1.2
	{
		label.addEvent('click', function(e) {

			//alert('here');

			var label = this;
			var checkbox = getChildCheckbox(label)
			
			if (label.hasClass('selected'))
			{
				checkbox.checked = false;
				label.removeClass('selected');
			}
			else
			{
				checkbox.checked = true;
				label.addClass('selected');
			}
			
			performFieldSpecificActions(checkbox);
			//e.stop();
		});					
	}
	else
	{
		checkbox.addEvent('change', function(e) {
											 
			var checkbox = this;
			var label = checkbox.getParent();
			
			if (checkbox.checked == true) label.addClass('selected');
			else label.removeClass('selected');
			
			performFieldSpecificActions(checkbox);
		});
	}


	checkbox.addClass('events_added');
}



function updateTermsList()
{
	if ($('terms_selected_list') && $('terms_multi_select'))
	{
		//alert('updateTermsList');
		
		$('terms_selected_list').empty();

		// add valid days term
		var not_valid_days = new Array();
		var valid_days = new Array();
		$$('.valid_days_control input').each(function(item) {
			var day_label = item.getParent().get('text').trim();
			if (!item.checked) not_valid_days[not_valid_days.length] = day_label;
			else valid_days[valid_days.length] = day_label;
		});
		
		
		// valid_days_default_count
		// is_admin_user
		
		if (not_valid_days.length > 0)
		{
			if ($('is_admin_user').value == 0 && valid_days.length < 5)
			{
				alert('You must select a minimum of 5 days of the week that this offer is valid.');
				addListItem($('terms_selected_list'), 'INVALID DAY SELECTION');
			}
			else if (valid_days.length < 1)
			{
				alert('You must select a minimum of 1 day of the week that this offer is valid.');
				addListItem($('terms_selected_list'), 'INVALID DAY SELECTION');
			}
			else if (not_valid_days.length < valid_days.length) addListItem($('terms_selected_list'), 'Offer not valid on '+smart_implode(not_valid_days, ', ', ' or '));
			else addListItem($('terms_selected_list'), 'Offer only valid on '+smart_implode(valid_days, ', ', ' or '));
		}

		if ($('reservation_required-field').checked)
		{
			addListItem($('terms_selected_list'), 'A reservation is essential');
		}


		// add ALL other terms
		$$('#terms_multi_select label input').each(function(item) { 
			if (item.checked) addListItem($('terms_selected_list'), item.getParent().get('text'));
		});


	}
	


}


function updateBranchesList()
{
	var all_selected = true;
	var branch_count = 0;
//	if ($('all_branches-field') && !checkbox.checked) $('all_branches-field').checked = false;
	
	if ($('branches_selected_list') && $('branches_multi_select'))
	{
		$('branches_selected_list').empty();
		$$('#branches_multi_select label input').each(function(item) { 
			branch_count++;
			if (item.checked) 
			{
				addListItem($('branches_selected_list'), item.getParent().get('text'));
			}
			else all_selected = false;
		});
		
		if ($('all_branches-field')) $('all_branches-field').checked = (branch_count > 0 && all_selected);
	}
}



function addTermOption(id, text, selected)
{
	//alert('addTermOption: '+text);
	
	var lbl = new Element('label');
	
	while (text.indexOf('"') != -1) text = text.replace('"', "'");

	//if (selected) lbl.addClass('selected');
	lbl.setProperty('id', 'terms-label-'+id);
	lbl.innerHTML = 
		/* '<input id="terms-input-'+id+'" type="checkbox" value="'+id+'" name="terms[]" ' + */
		'<input id="terms-input-'+id+'" type="checkbox" value="'+text+'" name="terms[]" ' +
		(selected ? ' checked="checked" ' : '') +
		' />'+text;
		
	lbl.injectInside($('terms_multi_select'));
	var checkbox = getChildCheckbox(lbl);
	

	
	addOptionEvents(checkbox);
}


function updateCatsList()
{
	if ($('cats_selected_list') && $('merchant_cats_select'))
	{
		$('cats_selected_list').empty();
		$$('#merchant_cats_select label input').each(function(item) { 
			if (item.checked)
			{
				var id = item.getProperty('id')+'_selected';
				var text = item.getParent().get('text').trim();
				
				var li = new Element('li');
				li.setProperty('id', id);
				li.setProperty('title', 'Click here to remove this category');
				li.set('text', text);
				
				li.injectInside($('cats_selected_list'));
				
				li.addEvent('mouseenter', function(e){
					if (!this.hasClass('hover')) this.addClass('hover');
				});
				
				li.addEvent('mouseleave', function(e){
					if (this.hasClass('hover')) this.removeClass('hover');
				});
	
				li.addEvent('click', function(e){
					var id = this.getProperty('id');
					var checkbox = $(id.replace('_selected', ''));
					var label = checkbox.getParent();
				
					checkbox.checked = false;
					label.removeClass('selected');
					performFieldSpecificActions(checkbox);
				});
			}
		});	
	}
}



window.addEvent('domready',function(){



	// set events for ALL initial form options
	$$('.nice_multi_select label input').each(function(item) { 
		addOptionEvents(item);
	});

	updateCatsList();
	updateTermsList();
	updateBranchesList();

});

