

var Data = {
	
	clients: [],
	onFailure: null,
	onSuccess: null,

	load: function(file) {
		var date = new Date();
		new Ajax.Request(file, {
			method:'get',
			parameters: {date: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate()},
			onSuccess: function(transport){	
				var doc = transport.responseXML.documentElement; 
				
				var clients = doc.getElementsByTagName('client');
				for(var i = 0, cnt = clients.length; i < cnt; ++i) {
					var client = {};
					client.name = (clients[i].getElementsByTagName('name')[0].firstChild)? clients[i].getElementsByTagName('name')[0].firstChild.data : "";
					client.subname = (clients[i].getElementsByTagName('subname')[0].firstChild)? clients[i].getElementsByTagName('subname')[0].firstChild.data : "";
					client.length = (clients[i].getElementsByTagName('length')[0].firstChild)? clients[i].getElementsByTagName('length')[0].firstChild.data : "";
					client.who = (clients[i].getElementsByTagName('who')[0].firstChild)? clients[i].getElementsByTagName('who')[0].firstChild.data : "";
					client.description = (clients[i].getElementsByTagName('description')[0].firstChild)? clients[i].getElementsByTagName('description')[0].firstChild.data : "";
					client.image = clients[i].getElementsByTagName('image')[0].firstChild.data;
					client.stills = clients[i].getElementsByTagName('stills')[0].firstChild.data;
					client.bgcolor = clients[i].getElementsByTagName('bgcolor')[0].firstChild.data;
					client.movies = clients[i].getElementsByTagName('movie');
					Data.clients.push(client);
				}
				if(Data.onSuccess) Data.onSuccess(Data);
			},
			onFailure: function() { 
				if(Data.onFailure) Data.onFailure(Data);
			}
		});
	},
	
	get: function(id) {
		var client = Data.clients[id];
		var obj = {};
		obj.images = [];
		obj.movies = [];
		obj.name = client.name;
		obj.subname = client.subname;
		obj.length = client.length;
		obj.who = client.who;
		obj.description = client.description;
		obj.stills = client.stills;
		obj.bgcolor = client.bgcolor;
		obj.image = client.image;
		for(var i = 0, cnt = client.movies.length; i < cnt; ++i) {
			var version = {};
			obj.movies.push(client.movies[i].firstChild.data);
		}
		return obj;
	},
	
	size: function() {
		return Data.clients.length;
	}

}



var Viewer = {

	data: null,
	currentlyActive: 0,

	init: function(data) {
		Viewer.data = data;
		Viewer.select(0);
	},
	
	buildText: function(client) {
		$('title').update(client.name);
		$('subtitle').update(client.subname);
		var len = (client.length)? ' (' + client.length + ')' : "";
		$('description-title').update(client.name.toUpperCase() + len);
		$('description-who').update(client.who);
		$('description').update(client.description);
		$('title-box').setStyle({backgroundColor:client.bgcolor});
	},
	
	buildImage: function(image) {
		$('preview-img').src = image;
	},
	
	buildStill: function(stills) {
		$('still-link').href = stills;
	},
	
	buildMovies: function(movies) {
		var output = '<li class="title">View Movie Clip</li>';
		var total = movies.length;
		for(var i = 0; i < total; ++i) {
			output += '<li><a href="#" onclick="Viewer.selectMovie('+i+'); return false">'+(i+1)+'</a></li>';
		}
		$('movie-links').update(output);
	},
	
	select: function(id) {;
		if(id < 0 || id >= Viewer.data.size()) return;
		var client = Viewer.data.get(id);
		Viewer.currentlyActive = id;
		Viewer.buildImage(client.image);
		Viewer.buildText(client);
		Viewer.buildStill(client.stills);
		Viewer.buildMovies(client.movies);
	},
	
	next: function() {
		if(Viewer.currentlyActive + 1 >= Viewer.data.size()) Viewer.select(0);
		else Viewer.select(Viewer.currentlyActive + 1);
	},
	
	previous: function() {
		if(Viewer.currentlyActive - 1 < 0) Viewer.select(Viewer.data.size() - 1);
		else Viewer.select(Viewer.currentlyActive - 1);
	},
	
	selectMovie: function(id) {
		var client = Viewer.data.get(Viewer.currentlyActive);
		var movie = client.movies[id];
		var win = window.open('videos/' + movie,'video','width=675,height=400');
		win.focus();
	}
}


Event.observe(window, 'load', function(e) {
	Data.onSuccess = function(data) {
		Viewer.init(data);
	};
	Data.load('data/projects.xml');
});




