/*
---

name: CollectionNavigation

description: Build navigation using DropDownNavigation

authors: Rolf Langenhuijzen

license: MIT-style license.

requires: [Core, DropDownNavigation]

provides: CollectionNavigation

...
*/

var CollectionNavigation = new Class({

	Implements: [Options, Events],

	options: {
	  /*
	  onDataLoaded: function(){},
	  onLinkClicked: function(){},
	  */
		data: {},
		dataURL: '',
		basePath: '',
		trailingSlash: true,
		container: document.body
	},

	initialize: function(options){
		this.setup(options);
	},

	setup: function(options){
		this.setOptions(options);
		this.data = this.options.data;
		this.navigation = null;
		this.loadData();
	},

	toElement: function(){
		return this.navigation;
	},

	loadData: function(){
    new Request.JSON({
			url: this.options.dataURL,
			onSuccess: function(response){
				if (response.result == 'success'){
					this.data = response.data;
					this.fireEvent('dataLoaded', this.data);
					this.build();
				}
			}.bind(this)
		}).send();
	},

	build: function(){
		this.navigation = new DropDownNavigation(this.data, {
			container: this.options.container,
			basePath: this.options.basePath,
			trailingSlash: this.options.trailingSlash
		});
		this.navigation.addEvent('linkClicked', function(url){
			document.id(this.navigation).fade('out').get('tween').chain(function(){
				this.fireEvent('linkClicked', url);
			}.bind(this));
		}.bind(this));
	}

});
