/**
 * JS file for Itsetuntokysely 2011
 */

$(document).ready(function()
{
	it_init();
});


// ---------------------------


function it_init()
{
	var it = new itsetunto_2011();

	if(typeof(pop_it_modal) !== 'undefined')
	{
		it.dimmer(true);
		it.modal(true);
	}

	it.set_maxes();
	it.set_pagination();
	it.set_next_and_previous_buttons();

	$('#itsetunto_2011 input[type=submit]').val('');
}


// ---------------------------


function itsetunto_2011()
{

	var me = this;
	var current_page_number = 1;
	var page_count = 0;

	this.dimmer = function(onoff)
	{
		switch(onoff)
		{
			case true:
				var a  = '';
					a += '<div id="it_dimmer">';
					a += '</div>';
				$('body').append(a);

				$('#it_dimmer').click(function()
				{
					me.dimmer(false);
					me.modal(false);
				});
			break;

			case false:
				$('#it_dimmer').remove();
			break;
		}
	}


	this.modal = function(onoff)
	{
		switch(onoff)
		{
			case true:
				var a  = '';
					a += '<div id="it_modal">';
					a += '<a href="#" id="it_modal_close" title="Sulje">X</a>';
					a += '	<a href="' + ROOT + 'itsetuntokysely" id="it_take_part_link">Osallistu kyselyyn</a>';
					a += '</div>';
				$('body').append(a);

				$('#it_modal').css({
					top: (($(window).height() / 2) - ($('#it_modal').height() / 2)) - 60,
					//top: 30,
					left: ($('body').width() / 2) - ($('#it_modal').width() / 2)
					//left: 150
				});

				$('#it_modal_close').click(function(e)
				{
					me.dimmer(false);
					me.modal(false);
					return false;
				});

				// Set a cookie
				var exdays	= 10;
				var value	= 1;
				var c_name	= 'it_2011_modal_seen';

				var exdate = new Date();
				exdate.setDate(exdate.getDate() + exdays);
				var c_value = escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
				document.cookie=c_name + "=" + c_value;

			break;

			case false:
				$('#it_modal').remove();
			break;
		}
	}


	this.set_maxes = function()
	{
		$('#itsetunto_2011 ul').change(function()
		{
			if($(this).attr('class').indexOf('max[') > -1)
			{
				// Grab the maximum of checked inputs
				var my_max = parseInt($(this).attr('class').replace('max[', ''));

				// How many are now checked?
				var now_checked = 0;
				$(this).find('input[type=checkbox]').each(function()
				{
					if($(this).is(':checked'))
					{
						now_checked ++;
					}
				});

				// Are we at or over the limit?
				if(now_checked >= my_max)
				{
					// Yes, disable all unchecked inputs
					$(this).find('input[type=checkbox]').each(function()
					{
						if( ! $(this).is(':checked'))
						{
							$(this).attr('disabled', true);
						}
					});
				}
				else
				{
					// No, we're ok to choose more, enable all
					$(this).find('input[type=checkbox]').each(function()
					{
						$(this).attr('disabled', false);
					});
				}
			}
		});
	}


	this.set_pagination = function()
	{
		// Label pages
		var page_number = 1;
		$('#itsetunto_2011 form fieldset').each(function()
		{
			$(this).data('page_number', page_number);
			page_number ++;
		});

		// Count amount of pages
		me.page_count = page_number - 1;

		// Hide all
		$('#itsetunto_2011 form fieldset').hide();

		// Show the first one
		me.jump_to_page(1);
	}


	this.jump_to_page = function(page_number)
	{
		me.current_page_number = page_number;

		// Hide all
		$('#itsetunto_2011 form fieldset').hide();

		$('#itsetunto_2011 form fieldset').each(function()
		{
			if($(this).data('page_number') == page_number)
			{
				$(this).fadeIn(350);
			}
		});

		// Refresh indicator
		$('#it_pagination_indicator').html(me.current_page_number + ' / ' + me.page_count);

		// Remove or show next/prev buttons according to current page number
		if(me.current_page_number < 2)
		{
			$('#it_prev').fadeOut(100);
		}
		else
		{
			$('#it_prev').show();
		}
		if(me.current_page_number == me.page_count)
		{
			$('#it_next').fadeOut(100);
		}
		else
		{
			$('#it_next').show();
		}
	}


	this.jump_to_next_page = function()
	{
		var next = me.current_page_number + 1;
		me.jump_to_page(next);
		me.current_page_number = next;
	}


	this.jump_to_previous_page = function()
	{
		var prev = me.current_page_number - 1;
		me.jump_to_page(prev);
		me.current_page_number = prev;
	}


	this.set_next_and_previous_buttons = function()
	{
		$('#it_next').click(function(e)
		{
			me.jump_to_next_page();
			return false;
		});
		$('#it_prev').click(function(e)
		{
			me.jump_to_previous_page();
			return false;
		});
	}

}

// EOF
