(function( $ ) {
  $.fn.exists = function() {
  	  if ($(this).length > 0 ) {
  	  	  return true;
  	  }
  	  return false;
  };
  $.fn.swDropdown = function(arguments) {
  	  	var plugin = $(this);
		var settings = {
			'dynamicWidth'	: false,
			'optionsHover'	: true,
			'onChange'		: $.noop,
			'post'			: false,
			'sort'			: false,
			'linked'		: false
		};
		if (arguments) {
			$.extend(settings, arguments);
		}
		return this.each(function() {

			plugin.options = $(this).children().wrapInner('<span />');;
			plugin.options.addClass('dropdown-option');



			if (plugin.data('id') != null) {
				plugin.selectedOption = $(this).find('div[data-id='+$(this).data('id')+']');
				plugin.selectedOption.addClass('selected').hide();
			} else {
				plugin.selectedOption = plugin.options.first();
				plugin.selectedOption.addClass('selected').hide();
			}
			if (settings.sort != false) {
				var list = settings.sort;
				list.children().addClass('sortable-item');
			}
			plugin.options.click(function() {
				plugin.selectedOption.removeClass('selected').show();
				plugin.selectedOption = $(this);
				plugin.selectedOption.addClass('selected').hide();
				plugin.find('span.dropdown-selected').html(plugin.selectedOption.html());
				plugin.attr('data-id', plugin.selectedOption.attr('data-id'));
				plugin.optionsContainer.hide();
				if ($.isFunction(settings.onChange) && settings.post == false) {
					settings.onChange.call(null, plugin.selectedOption.attr('data-filter'));
				}
				if (settings.post.enable) {
					$.post(settings.post.url, {
							'trigger': settings.post.trigger,
							'id': selectedOption.attr('data-id')
						}, function(data) {
						$(settings.post.target).html(data);
					});
				}


				if (settings.sort != false) {
					list.children().hide();
					var selection = list.children('div[data-group*='+$(this).data('filter')+']');
					if (selection.size() > 0) {
						selection.show();
					} else {
						list.children().show();
					}
				}
			});

			if (settings.optionsHover) {
				plugin.options.hover(function() {
					$(this).addClass('dropdown-option-hover');
				}, function() {
					$(this).removeClass('dropdown-option-hover');
				});
			}



			plugin.append('<div class="dropdown-left"></div>');
			plugin.append('<div class="dropdown-middle"><span class="dropdown-selected">'+plugin.selectedOption.html()+'</span></div>');
			plugin.append('<div class="dropdown-right"></div>');
			plugin.append('<div class="dropdown-options"></div>');
			plugin.optionsContainer = plugin.find('.dropdown-options');
			plugin.optionsContainer.html(plugin.options);
			plugin.optionsContainer.hide();

			var width = $('.dropdown-left').width() + $('.dropdown-middle').width() + $('.dropdown-right').width();


			plugin.optionsContainer.css('margin-top', plugin.find('.dropdown-middle').height()-3);
			if (!settings.dynamicWidth) {
				$('.dropdown-middle').css('width', plugin.optionsContainer.width()+62);
				plugin.optionsContainer.css('width', $('.dropdown-left').width() + $('.dropdown-middle').width() + $('.dropdown-right').width()-2);
			}

			plugin.find('.dropdown-right').click(function() {
				plugin.optionsContainer.toggle();
			});
		});
	};

})( jQuery );

jQuery(document).ready(function($) {

	/* init */
	var countryselector = $('#country-selector').swDropdown({
			'sort': $('#sortable-list'),
			'onChange': function(filter) {
				$('#area-selector .dropdown-option').hide();
				if (filter == undefined) {
					$('#area-selector .dropdown-option').show();
					$('#area-selector .dropdown-option.selected').hide();
				} else {
					$('#area-selector .dropdown-option[data-group*="'+filter+'"]').show();
				}
			}
	});
	var areaselector = $('#area-selector').swDropdown({
			'sort'		: $('#sortable-list')

	});

	var brandselector = $('#brand-selector').swDropdown({
			'sort'		: $('#sortable-list')

	});


	/* hacks */
	/* move shopping basket */
	$('li.your-account-usermenu ul').prepend($('li.your-account-cart'));
	if (!$('li.your-account-usermenu ul li.liUpdatePass').exists()) {
		$('li.your-account-usermenu ul li.your-account-cart').hide();
	}



});
