var PeopleList = {
	initialize: function() {
		var sf = PeopleList.sortField = $('sort');
		PeopleList.table = $('peoplelist');
		if (!sf || !PeopleList.table) return;
		sf.addEvent('change', function() { PeopleList.sort(sf.value); });
		for (i = sf.options.length - 1; i >= 0; i--) {
			if (sf.options[i].defaultSelected != sf.options[i].selected) {
				PeopleList.sort(sf.value);
				break;
			}
		}
	},
	
	collectData: function() {
		var table = PeopleList.table;
		var people = new Array();
		
		var tables = table.getElements('table');
		for (var i = tables.length - 1; i >= 0; i--) {
			var t = tables[i];
			
			for (var y = t.rows.length - 1; y >= 0; y--) {
				var row = t.rows[y];
				
				for (var x = row.cells.length - 1; x >= 0; x--) {
					var cell = $(row.cells[x]);
					var a = cell.getElement('a');
					if (!a) continue;
					var img = a.getElement('img');
					people.push({ image: (img ? img.get('src') : ''), name: a.getElement('span.name').get('text'), title: a.getElement('span.title').get('text'), href: a.get('href') });
				}
			}
		}
		
		return people;
	},
	
	compareName: function(a, b, shallow) {
		var fa = a.name.toLowerCase();
		var fb = b.name.toLowerCase();
		if (fa < fb) return -1;
		else if (fa > fb) return 1;
		else if (shallow != true) return PeopleList.compareTitle(a, b, true);
		else return 0;
	},
	
	compareTitle: function(a, b, shallow) {
		var fa = a.title.toLowerCase();
		var fb = b.title.toLowerCase();
		if (fa < fb) return -1;
		else if (fa > fb) return 1;
		else if (shallow != true) return PeopleList.compareName(a, b, true);
		else return 0;
	},
	
	sort: function(field) {
		if (!PeopleList.people)
			PeopleList.people = PeopleList.collectData();
		
		var table = PeopleList.table;
		var people = PeopleList.people.sort((field == 'title' ? PeopleList.compareTitle : PeopleList.compareName));
		
		table.empty();
		
		var numPeople = people.length;
		var numPages = Math.ceil(numPeople / 15);
		var mainRow = new Element('tr');
		
		for (var i = 0; i < numPages; i++) {
			var t = new Element('table', { 'class': (i == 0 ? 'first' : '') + ' ' + (i == numPages - 1 ? 'last' : '') }).inject(new Element('td').inject(mainRow));
			
			for (var j = 0; j < 3; j++) {
				var row = new Element('tr').inject(t);
				
				for (var k = 0; k < 5; k++) {
					var cell = new Element('td').inject(row);
					var index = i * 15 + j * 5 + k;
					if (index < numPeople) {
						var person = people[index];
						var a = new Element('a', { href: person.href, 'class': 'contact fadingbackground' });
						a.grab(new Element('span', { 'class': 'background' }));
						var fg = new Element('span', { 'class': 'foreground' });
						var thumb = new Element('span', { 'class': 'thumb' });
						if (person.image != '')
							thumb.grab(new Element('img', { src: person.image, alt: person.name }));
						fg.grab(thumb);
						fg.grab(new Element('span', { 'class': 'name' }).appendText(person.name));
						fg.grab(new Element('span', { 'class': 'title' }).appendText(person.title));
						a.grab(fg);
						cell.grab(a);
						Site.setupFadingBackground(a);
					}
				}
			}
		}
		
		table.grab(mainRow);
		table.getParent('div.view').fireEvent('resize');
	},
	
	getPageDescription: function(num) {
		var cell = (PeopleList.table || $('peoplelist')).getElement('tr').cells[num];
		if (cell) {
			var sort = (PeopleList.sortField || $('sort')).value;
			var table = $(cell).getChildren('table')[0];
			var text1 = null, text2 = null;
			var cell = table.getElement('tr').getElement('td');
			if (cell) text1 = cell.getElement((sort == 'title' ? 'span.title' : 'span.name'));
			var rows = table.getElements('tr');
			var numRows = rows.length;
			var numCells = rows[0].getElements('td').length;
			for (var i = numRows - 1; i >= 0; i--) {
				var cells = rows[i].getElements('td');
				for (var j = numCells - 1; j >= 0; j--) {
					var cell = cells[j];
					if (cell) {
						var t = cell.getElement((sort == 'title' ? 'span.title' : 'span.name'));
						if (t) {
							text2 = t;
							break;
						}
					}
				}
				if (text2) break;
			}
			if (text1)
				return text1.get('text').substr(0, 1) + '-' + (text2 ? text2.get('text').substr(0, 1) : text1.get('text').substr(0, 1));
		}
		return '';
	}
};

function getPageDescription(num, slider) {
	return PeopleList.getPageDescription(num);
}

window.addEvent('domready', function() { if (!Site.IE6) PeopleList.initialize(); });