//-------------------------------
// Class
//-------------------------------

function NavigationApp() {

	var _self = this;

	//-------------------------------
	// Constants
	//-------------------------------
	
	var XML_PATHS = [
						{"type" : "games", "url" : "http://www.nba.com/blazers/hub.xml"},
						{"type" : "players", "url" : "http://www.iamatrailblazersfan.com/DesktopModules/Iama/PlayerFeed.aspx"}, 
						{"type" : "dancers", "url" : "http://www.iamatrailblazersfan.com/DesktopModules/Iama/DancerFeed.aspx"},
						{"type" : "messageboards", "url" : "http://feeds.feedburner.com/TrailBazersTalk"}
					]
	
	//-------------------------------
	// Properties
	//-------------------------------
	
	var _navigationDataModel;
	var _navigationView;
	var _counter = 0;
	
	//-------------------------------
	// Constructor
	//-------------------------------
	
	$j(function() {
		_navigationDataModel = new NavigationDataModel();
		_navigationView = new NavigationView();
		
		$j(_navigationDataModel).bind(_navigationDataModel.DATA_COMPLETE, onNavigationData);
		$j(window).bind("resize", onOverlayResize);
		$j("#overlay").bind("click", onOverlayHide);
		$j("#navigation .stretcher a.close").bind("click", onOverlayHide);
	});
	
	//-------------------------------
	// Public Methods
	//-------------------------------
	
	_self.deploy = function() {
		$j("#navigation ul.navigation").accordion({ active: false, autoHeight: false, collapsible: true, header: "h3", changestart: _self.accordion.show, change: _self.accordion.status });
		$j("#navigation ul.navigation .stretcher").css({ "visibility" : "visible" });
		
		loadData();
		
		if($j.cookie(IAMA_USER_INFO)) {
			_navigationView.loggedin();
		}
	}
	
	_self.accordion = function() {
		var active;
		
		function show() {
			active = $j("ul.navigation").accordion( "option", "active");
			
			$j("ul.navigation h3.nav").removeClass("selected");
			if(active !== false) $j("ul.navigation h3.nav").eq(active).addClass("selected");
			
			$j("#overlay").show();
			//$j(window).trigger("resize", onOverlayResize);
			onOverlayResize();
			
		}
		
		function hide() {
			$j("ul.navigation").accordion({ active: false });
			$j("ul.navigation h3.nav").removeClass("selected");
			$j("#overlay").hide();
		}
		
		function status() {
			if(active === false) hide();
			else $j("#navigation ul.navigation .stretcher").eq(active).css({ "overflow" : "hidden" });
		}
		
		return {
			show: show,
			hide: hide,
			status: status
		}
	}();
	
	//-------------------------------
	// Private Methods
	//-------------------------------
	
	function loadData() {
		_navigationDataModel.load(XML_PATHS[_counter]);
	}
	
	//-------------------------------
	// Listeners
	//-------------------------------
	
	function onOverlayResize() {
		var position = $j("#overlay").position();
		var h = ($j("body").height() > $j(window).height()) ? $j("body").height() - position.top: $j(window).height() - position.top;
		$j("#overlay").css({"height" : h + "px"});
	}
	
	function onOverlayHide() {
		_self.accordion.hide();
		return false;
	}

	function onNavigationData(event, data, type) {
		switch(type) {
			case "games" :
				_navigationView.games(data);
				break;
			case "players" :
				_navigationView.players(data);
				break;
			case "dancers" :
				_navigationView.dancers(data);
				break;
			case "messageboards" :
				_navigationView.messageboards(data);
				break;
		}
		
		if(_counter < XML_PATHS.length - 1) {
			_counter++;
			loadData();
		}
	}
}
