/**
 * @author lancewf
 */
function ParkSearchNodeTreeBuilder()
{
	this.buildTree = function(listener)
	{
		var displayer = new ParkNodeDisplayer();
		
		var root = new Node();
		root.setListener(listener);
		root.setName("");
		root.setIsLeaf(false);
		root.setDisplayer(displayer);
				
		root.addChild(this._buildDisneyParks(listener, displayer));
		
		root.addChild(this._buildUniversalParks(listener, displayer));
		
		root.addChild(this._buildSixFlagsParks(listener, displayer));
		
		root.addChild(this._buildOtherParks(listener, displayer));		
		
		return root;
	}
	
	this._buildDisneyParks = function(listener, displayer)
	{
		var disney = new Node();
		disney.setName("Walt Disney Parks");
		disney.setIsLeaf(false);
		disney.setListener(listener);
		disney.setDisplayer(displayer);
		
		var node = new Node();
		node.setName("Disneyland Resort");
		node.setIsLeaf(true);
		node.setChildLink("http://disneyland.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		disney.addChild(node);
		
		node = new Node();
		node.setName("California Adventure");
		node.setIsLeaf(true);
		node.setChildLink("http://california-adventure.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		disney.addChild(node);
		
		node = new Node();
		node.setName("Magic Kingdom");
		node.setIsLeaf(true);
		node.setChildLink("http://magic-kingdom.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		disney.addChild(node);
		
		node = new Node();
		node.setName("Disney's Animal Kingdom");
		node.setIsLeaf(true);
		node.setChildLink("http://animal-kingdom.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		disney.addChild(node);
		
		node = new Node();
		node.setName("Epcot");
		node.setIsLeaf(true);
		node.setChildLink("http://epcot.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		disney.addChild(node);
		
		node = new Node();
		node.setName("Disney's Hollywood Studios");
		node.setIsLeaf(true);
		node.setChildLink("http://hollywood-studios.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		disney.addChild(node);
		
		node = new Node();
		node.setName("Tokyo Disneyland");
		node.setIsLeaf(true);
		node.setChildLink("http://tokyo-disneyland.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		disney.addChild(node);
		
		node = new Node();
		node.setName("Tokyo DisneySea");
		node.setIsLeaf(true);
		node.setChildLink("http://tokyo-disneysea.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		disney.addChild(node);
		
		node = new Node();
		node.setName("Disneyland Park (Paris)");
		node.setIsLeaf(true);
		node.setChildLink("http://disneyland-park.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		disney.addChild(node);
		
		node = new Node();
		node.setName("Walt Disney Studios Park (Paris)");
		node.setIsLeaf(true);
		node.setChildLink("http://walt-disney-studios-park.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		disney.addChild(node);

		return disney;
	}
	
	this._buildSixFlagsParks = function(listener, displayer)
	{
		var sixflags = new Node();
		sixflags.setName("Six Flags Parks");
		sixflags.setIsLeaf(false);
		sixflags.setListener(listener);
		sixflags.setDisplayer(displayer);
		
		var node = new Node();
		node.setName("Six Flags Magic Mountain");
		node.setIsLeaf(true);
		node.setChildLink("http://magic-mountain.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		sixflags.addChild(node);
		
		node = new Node();
		node.setName("Six Flags Great Adventure");
		node.setIsLeaf(true);
		node.setChildLink("http://great-adventure.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		sixflags.addChild(node);
		
		node = new Node();
		node.setName("Six Flags Over Texas");
		node.setIsLeaf(true);
		node.setChildLink("http://over-texas.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		sixflags.addChild(node);
		
		node = new Node();
		node.setName("Six Flags Great America");
		node.setIsLeaf(true);
		node.setChildLink("http://great-america.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		sixflags.addChild(node);

		node = new Node();
		node.setName("Six Flags Over Georgia");
		node.setIsLeaf(true);
		node.setChildLink("http://over-georgia.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		sixflags.addChild(node);
		
		node = new Node();
		node.setName("Six Flags Discovery Kingdom");
		node.setIsLeaf(true);
		node.setChildLink("http://discovery-kingdom.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		sixflags.addChild(node);
		
		node = new Node();
		node.setName("Six Flags Kentucky Kingdom");
		node.setIsLeaf(true);
		node.setChildLink("http://kentucky-kingdom.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		sixflags.addChild(node);

		node = new Node();
		node.setName("Six Flags America (Baltimore/Washington, D.C.)");
		node.setIsLeaf(true);
		node.setChildLink("http://six-flags-america.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		sixflags.addChild(node);
		
		node = new Node();
		node.setName("Six Flags New England");
		node.setIsLeaf(true);
		node.setChildLink("http://new-england.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		sixflags.addChild(node);
		
		node = new Node();
		node.setName("Six Flags St. Louis");
		node.setIsLeaf(true);
		node.setChildLink("http://st-louis.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		sixflags.addChild(node);
		
		return sixflags;
	}
	
	this._buildUniversalParks = function(listener, displayer)
	{
		var universal = new Node();
		universal.setName("Universal Studios Parks");
		universal.setIsLeaf(false);
		universal.setListener(listener);
		universal.setDisplayer(displayer);
		
		var node = new Node();
		node.setName("Universal Studios Florida");
		node.setIsLeaf(true);
		node.setChildLink("http://universal-studios-florida.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		universal.addChild(node);
		
		var node = new Node();
		node.setName("Universal Studios Hollywood");
		node.setIsLeaf(true);
		node.setChildLink("http://universal-studios-hollywood.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		universal.addChild(node);
		
		var node = new Node();
		node.setName("Universal's Islands of Adventure");
		node.setIsLeaf(true);
		node.setChildLink("http://islands-of-adventure.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		universal.addChild(node);
		
		return universal;
	}
	
	this._buildOtherParks = function(listener, displayer)
	{
		var other = new Node();
		other.setName("Other Parks");
		other.setIsLeaf(false);
		other.setListener(listener);
		other.setDisplayer(displayer);
		
		var node = new Node();
		node.setName("Knott's Berry Farm");
		node.setIsLeaf(true);
		node.setChildLink("http://knotts-berry-farm.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		other.addChild(node);
		
		var node = new Node();
		node.setName("Busch Gardens Tampa Bay");
		node.setIsLeaf(true);
		node.setChildLink("http://busch-gardens-tampa.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		other.addChild(node);
		
		var node = new Node();
		node.setName("LEGOLAND California");
		node.setIsLeaf(true);
		node.setChildLink("http://legoland-california.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		other.addChild(node);
		
		var node = new Node();
		node.setName("SeaWorld Orlando");
		node.setIsLeaf(true);
		node.setChildLink("http://seaworld-orlando.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		other.addChild(node);
		
		var node = new Node();
		node.setName("SeaWorld San Antonio");
		node.setIsLeaf(true);
		node.setChildLink("http://seaworld-san-antonio.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		other.addChild(node);
		
		var node = new Node();
		node.setName("Canada's Wonderland");
		node.setIsLeaf(true);
		node.setChildLink("http://canadas-wonderland.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		other.addChild(node);
		
		var node = new Node();
		node.setName("Cedar Point");
		node.setIsLeaf(true);
		node.setChildLink("http://cedar-point.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		other.addChild(node);
		
		var node = new Node();
		node.setName("Hersheypark");
		node.setIsLeaf(true);
		node.setChildLink("http://hersheypark.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		other.addChild(node);
		
		var node = new Node();
		node.setName("Thorpe Park");
		node.setIsLeaf(true);
		node.setChildLink("http://thorpe-park.coasterq.com/");
		node.setListener(listener);
		node.setDisplayer(displayer);
		
		other.addChild(node);
		
		return other;
	}
}
