/*
-----------------------------------------------------------------------------------------
jquery.kichenscreens.js
-----------------------------------------------------------------------------------------
*/

if(typeof ($.JWT) == "undefined") {
	$.JWT = Object;
}

$.JWT.Screens = {
	
	items: $('.kitchens div.hgroup').add('.kitchens ul a'),
	container: $('.kitchens'),
	
	numItems: null,
	rowStart: 0,
	itemsPerRow: 4,
	rowEnd: null,
	numRows: null,
	screensStart: 0,
	rowsPerScreen: 2,
	screensEnd: null,
	numScreens: 0,
	
	init: function() {
		//calculate initial properties
		this.numItems = this.items.length;
		this.rowEnd = this.rowStart + this.itemsPerRow;
		this.numRows = Math.ceil(this.numItems / this.itemsPerRow);
		this.screensEnd = this.screensStart + this.rowsPerScreen
		//call initial functions
		this.container.empty();
		this.createRows();
		this.createScreens();
		this.cleanUp();
	},
	
	createRows: function() {
		for(i = 0; i < this.numRows; i++) {
			var rowItems = $.JWT.Screens.getRowItems($.JWT.Screens.rowStart,$.JWT.Screens.rowEnd,$.JWT.Screens.items);
			$.JWT.Screens.addRow(rowItems);
			$.JWT.Screens.rowStart = $.JWT.Screens.rowStart + $.JWT.Screens.itemsPerRow;
			$.JWT.Screens.rowEnd = $.JWT.Screens.rowEnd + $.JWT.Screens.itemsPerRow;
			if ($.JWT.Screens.rowEnd > $.JWT.Screens.items.length) $.JWT.Screens.rowEnd = undefined;
		}
	},
	
	getRowItems: function(start,end,itemsRef) {
		if(end) {
			var row = itemsRef.slice(start,end);
		} else {
			var row = itemsRef.slice(start);
		}
		return row;
	},
	
	addRow: function(rowItems) {
		$('body').append('<div id="tmp-holder" class="hidden"></div>');
		var newRow = $('#tmp-holder').append(rowItems).wrapInner('<div class="row"></div>').find('.row').remove();
		$('#tmp-holder').remove();
		this.container.append(newRow);
	},
	
	createScreens: function() {
		var rowsRef = this.container.find('.row');
		var numRows = rowsRef.length;
		$.JWT.Screens.numScreens = Math.ceil(numRows / $.JWT.Screens.rowsPerScreen);
		for(i = 0; i < $.JWT.Screens.numScreens; i++) {
			var screenObj = $.JWT.Screens.getScreens($.JWT.Screens.screensStart,$.JWT.Screens.screensEnd,rowsRef);
			$.JWT.Screens.addScreen(screenObj);
			$.JWT.Screens.screensStart = $.JWT.Screens.screensStart + $.JWT.Screens.rowsPerScreen;
			$.JWT.Screens.screensEnd = $.JWT.Screens.screensEnd + $.JWT.Screens.rowsPerScreen;
			if ($.JWT.Screens.screensEnd > numRows) $.JWT.Screens.screensEnd = undefined;
		}
	},
	
	getScreens: function(start,end,rowsRef) {
		if(end) {
			var screenObj = rowsRef.slice(start,end);
		} else {
			var screenObj = rowsRef.slice(start);
		}
		return screenObj;
	},
	
	addScreen: function(screenObj) {
		$('body').append('<div id="tmp-holder" class="hidden"></div>');
		var newScreen = $('#tmp-holder').append(screenObj).wrapInner('<div class="section"></div>').find('.section').remove();
		$('#tmp-holder').remove();
		this.container.append(newScreen);
	},
	
	cleanUp: function() {
		$('div.row a:last-child').addClass('last');
	}

}
