
(function($) {

	var localvars = {
		html: ''
	};

	function _appendItems(data)
	{
		var i;

		for (i=0; i<data.length; i++)
		{
			if (data[i].type == 'group')
			{
				localvars.html += '<li class="group">';

				localvars.html += '<a href="javascript:{}">' + data[i].title + '</a>';

				if (data[i].items.length > 0)
				{
					localvars.html += '<div class="submenu">';
					localvars.html += '<ul>';

					_appendItems(data[i].items);

					localvars.html += '</ul>';
					localvars.html += '</div>';
				}

				localvars.html += '</li>';
			}

			if (data[i].type == 'item')
			{
				localvars.html += '<li class="item">';

				localvars.html += '<a href="javascript:{}" id="'+data[i].href+'">' + data[i].title + '</a>';

				localvars.html += '</li>';
			}
		}

		localvars.html += '<li class="last"></li>';
	}

	function _render(data)
	{
		localvars.html += '<div class="dropdownTop">';
		localvars.html += '<div class="text"><a href="javascript:{}" id="downloadsMenu">downloads:</a></div>';
		localvars.html += '</div>';

		localvars.html += '<ul class="top">';

		_appendItems(data);

		localvars.html += '</ul>';

		localvars.html += '<div class="dropdownOpen"></div>';
		localvars.html += '<div class="dropdownClosed"></div>';
		localvars.html += '<div class="dropdownShadow"></div>';

		$('#downloads').append($(localvars.html));

		$('#downloads .dropdownTop a').bind('click', function(e) {
			$this = $(this);
			if ($this.hasClass('active'))
			{
				$this.removeClass('active');
				$('#downloads .submenu').hide();
				$('#downloads .dropdownOpen').hide();
				$('#downloads .dropdownClosed').show();
				$('#downloads ul.top').slideUp();
				$('#downloads li.group > a').removeClass('active');
			}
			else
			{
				$this.addClass('active');
				$('#downloads ul.top').slideDown(function() {
					$('#downloads .dropdownClosed').hide();
					$('#downloads .dropdownOpen').show();
				});
			}
			e.preventDefault();
		});

		$('#downloads li.group > a').bind('click', function(e) {
			$this = $(this);
			if ($this.hasClass('active'))
			{
				$this.removeClass('active');
				$this.parent().find('li.group > a').removeClass('active');
				$this.parent().find('.submenu').hide();
			}
			else
			{
				$('#downloads li.group > a').removeClass('active');
				$('#downloads .submenu').hide();
				$this.parentsUntil('ul.top').filter('li.group').children('a').addClass('active');
				$this.parentsUntil('ul.top').filter('.submenu').show();
				$this.siblings('.submenu').fadeIn();
			}
			e.preventDefault();
		});

		$('#downloads li.item > a').bind('click', function(e) {
			window.location.href = $(this).attr('id');
			e.preventDefault();
		});
	}

	$.oddmolly.downloads = {
		load: function(params) {
			$.getJSON('/json/downloads/press', params, function(result) {
				if (result.success) {
					_render(result.data);
				} else {
					alert(result.error.text);
				}
			});
		}
	};

	$(document).ready(function() {
		$.ajaxSetup({cache: false});

		$.oddmolly.downloads.load({});
	});

})(jQuery);
