(function () {

/*
function dataRetriever() {
	var self;
	self = this;
	
	function requestURL() {
		var url;
		var search;

		function decodeSearch() {
			var options = {};
			var search = window.location.search; 
			if (search.length < 1) {
				return options;
			}
			search = search.replace(/\^?/, '');
		}

		function encodeSearch(search) {
			
		}

		url = window.location.protocol  + '//' + window.location.host
			+ '/' + window.location.pathname + '/';
		search = decodeSearch();
	}

	function load() {
		$.ajax({
		});
	}
	
	self.test = function () {
		requestURL();
	}
}
*/

function tabHandler() {
	var self;
	var container;
	
	self = this;
	container = $('#nurse-types');

	function changeTab() {
		var tabId;

		tabId = parseInt($(this).parent().attr('id').replace('nurses-', ''));

		$('li', container).removeClass('active');
		$(this).parent().addClass('active');

		switch(tabId) {
			case 0: // all
				break;
			case 1: // nannies
				break;
			case 2: // nurses
				break;
			case 3: // house-keepers
				break;
		}

		return false;
	}

	function init() {
		$('a', container).click(changeTab);
	}

	init();
}

function tableHandler() {
	var self;
	var prototype;
	var currentPage;
	var itemsPerPage;

	self = this;
	prototype = $('#nurse-row-prototype table');
	itemsPerPage = 10;

	function addPaginator() {
		var numEntries;
		var numPages;
		var container;
		var page;
		
		numEntries = countEntriesOnPage(1);
		numPages = countPages();
		currentPage = 0;

		container = $('#nurses-pagination');
		container.empty();
		container.append($('<ul></ul>'));
		
		function changePage(pageNumber) {
			var pageLinks;

			if (!pageNumber) {
				pageNumber = 1;
			}

			pageLinks = $('a', container);
			pageLinks.removeClass('active');
			$(pageLinks[pageNumber-1]).addClass('active');
			self.redraw(pageNumber);
		}

		if (numPages < 2) {
			return;
		}
		for (var i=0; i < numPages; i++) {
			page = $('<a></a>')
				.attr('href', 'javascript:void(0);')
				.append($('<span></span>').text(i+1));
			page.addClass(i ? '' : 'active');
			(function (page, i) {
				page.click(function () {
					changePage(i+1);
					return false;
				});
			})(page, i);
			$('ul', container).append($('<li></li>').append(page));
		}
	}

	function countEntriesinTable() {
		if (nursesData && $.isArray(nursesData)) {
			return nursesData.length;
		}
		return 0;
	}

	function countEntriesOnPage(pageNumber) {
		var offset;
		var totalLength;
		var numEntries;

		if (!pageNumber) {
			pageNumber = 1;
		}

		if (nursesData && $.isArray(nursesData)) {
			totalLength = nursesData.length;
			offset = (pageNumber-1) * itemsPerPage;

			if (offset + itemsPerPage > totalLength) {
				return Math.abs(totalLength - (itemsPerPage + offset));
			}

			return itemsPerPage;			
		}
		return 0;
	}

	function countPages() {
		return Math.ceil(countEntriesinTable() / (itemsPerPage * 1.0));
	}

	function calculateOffset(pageNumber) {
		if (pageNumber) {
			return (pageNumber - 1) * itemsPerPage;
		}
		return 0;
	}

	function itemsFromPage(pageNumber) {
		var offset;
		var result;
		if (nursesData && $.isArray(nursesData)) {
			numEntries = totalEntries = nursesData.length;
			numEntries =
				numEntries > itemsPerPage ? itemsPerPage : numEntries;
		}
		if (pageNumber) {
			offset = (pageNumber - 1) * itemsPerPage;
		}
		result = [];
	}

	self.redraw =  function (pageNumber) {
		var table;
		var container;
		var numEntries;
		var totalEntries;
		var row;
		var offset;
		
		numEntries = countEntriesOnPage(pageNumber);
		totalEntries = countEntriesinTable();
		offset = calculateOffset(pageNumber);

		container = $('#nurses-static');
		container.empty();
		
		for (var i=0; i < numEntries; i++) {
			table = prototype.clone();
			row = nursesData[i+offset];
			$('.role', table).text('niania');
			$('.name', table).text(row.name);
			$('.description', table).text(row.availability);
			container.append($('<div class="nurse"></div>').append(table));
		}
	}

	function init() {
		self.redraw(1);	
		addPaginator();
	}

	init();
}

$(document).ready(function () {
	var ddOptions;
	var tabs;
	var table;

	ddOptions = {
		width: 120
	};
	$('#nurse-location').dropdownchecklist(ddOptions);
	$('#nurse-age').dropdownchecklist(ddOptions);
	$('#nurse-hours').dropdownchecklist(ddOptions);
	
	// $('.nurse-about').tooltip({});

	tabs = new tabHandler();
	table = new tableHandler();
	
});
})(jQuery);

