Drupal.behaviors.pfArchive = function(context) {
	if ($('form#pf-archive-form').length > 0) {
		// We remove submit button and place action to select change
		$('form#pf-archive-form input.form-submit').remove();
		var defCategory = $('form#pf-archive-form select option:first').val();
		$('form#pf-archive-form select').change(function(){
			nodes = getSelectedNodes();
			$.ajax({
				url     : Drupal.settings.basePath +'js/get-archive/'+ $(this).val(),
				type    : 'POST',
				data    : nodes,
				success : function(data){
					$('div#archive-content').html(data);
					initArchiveTabs();
				}
			});
		}).val(defCategory);

		$('div#archive-content input[type=checkbox]').attr('checked', false);
		initArchiveTabs();

		$('input#archive-submit').click(function(){
			nodes = getSelectedNodes();
			if (nodes) {
				$.ajax({
					url     : Drupal.settings.basePath +'js/order-form',
					type    : 'POST',
					data    : nodes,
					success : function(data){
						if ($('div#order-popup').length > 0)
							$('div#order-popup').html(data);
						else
							$('body').append('<div id="order-popup">'+ data +'</div>');
						initOrderPopup();
					}
				});
				$(this).attr('disabled', 'disabled');
			} else {
				alert('Please select films to submit them');
			}
			return false;
		});
	}
};

function getSelectedNodes() {
	var nodes = [];
	$.each(orderedFilms, function(nid){
		if (this != false) {
			nodes.push('films['+ nid +']='+ this);
		}
	});

	return nodes.join('&');
}

function initArchiveTabs() {
	$('div#archive-content div.tabs-content:eq(0)').addClass('tabs-active');

	var animating = false;
	$('div#archive-content ul.tabs li:first').addClass('active');
	$('div#archive-content ul.tabs li a').click(function(){
		var id = $(this).attr('rel');

		if (animating || $('div'+ id +':visible').length > 0) return false;
		animating = true;

		$('div'+ id).siblings('div').filter(':visible').fadeOut('fast', function() {
			$('div'+ id).fadeIn('fast', function(){animating = false});
		});

		$(this).parent().siblings().removeClass('active');
		$(this).parent().addClass('active');
		return false;
	});

	$('div#archive-content li').bind('click', initAddintToOrder);
}

var orderedFilms = {};
var initAddintToOrder = function(e) {
	if ($.inArray(e.target, $(this).children()) < 0) return;

	var nid = $(this).children('input[type=checkbox]').val();
	if (orderedFilms[nid]) orderedFilms[nid] = false;
	else orderedFilms[nid] = $(this).children('span.title').text();

	if (orderedFilms[nid]) {
		$(this).addClass('selected');
		$(this).children('input[type=checkbox]').attr('checked', 'checked');
	} else {
		$(this).removeClass('selected');
		$(this).children('input[type=checkbox]').attr('checked', false);
	}
}

var initOrderPopup = function() {
	$('div#archive-content span.title').unbind('click', initAddintToOrder);
	var popup = $('div#order-popup');
	popup.css('top', getPopupTop()).fadeIn('def');

	$('div#order-popup div.close').click(function(){
		popup.fadeOut('def', function(){
			$(this).html('');
			$('input#archive-submit').attr('disabled', false);
			$('div#archive-content span.title').bind('click', initAddintToOrder);
		});
	});

	$(window).bind('scroll', function(){
		popup.stop().animate({top: getPopupTop()}, 'fast');
	});

	function getPopupTop(){
		var divHeight = popup.height();
		var winHeight = $(window).height();
		var scrollTop = $(document).scrollTop();

		return divHeight > winHeight ? scrollTop : scrollTop + (winHeight - divHeight)/2;
	}

	$('form#pf-archive-submit-form').submit(function(){
		var form  = $(this);
		var fname = $(this).find('input[name=fname]').val();
		var lname = $(this).find('input[name=lname]').val();
		var email = $(this).find('input[name=email]').val();
		var err = new Array();

		if (fname.length < 1) err.push('First name is required field');
		if (lname.length < 1) err.push('Last name is required field');
		if (email.length < 1) err.push('Email is required field');

		if (err.length > 0) alert(err.join('\n'));
		else {
			$.ajax({
				url     : Drupal.settings.basePath +'js/order-submit',
				type    : 'POST',
				data    : form.serialize(),
				success : function(data){
					popup.fadeOut('def', function(){
						$('input#archive-submit').attr('disabled', false);
						$(this).html(data).fadeIn('def');
						setTimeout(function(){
							popup.fadeOut('def');
						}, 3000);
						$('div#archive-content span.title').bind('click', initAddintToOrder);
					});
					
					$('div#archive-content span.title').removeClass('selected');
					orderedFilms = {};
				}
			});
		}
		return false;
	});
}