<?php

class Link {
	public $title;
	public $href;
	public $icon;

	public function Link($title, $href, $icon) {
		$this->title = $title;
		$this->href = $href;
		$this->icon = $icon;
	}

	public function show()
	{
		echo "<div class=\"link\">\n";
		if($this->icon != "") {
			echo "  <a class=\"link_icon\" rel=\"external\" href=\"" . $this->href . "\">\n";
			echo "    <img alt=\"" . $this->title . "\" src=\"" . $this->icon . "\"/>\n";
			echo "   </a>\n";
		}
		echo "  <a class=\"link_title\" rel=\"external\" href=\"" . $this->href . "\">\n";
		echo "    " . htmlspecialchars_decode($this->title, ENT_QUOTES) . "\n";
		echo "  </a>\n";
		echo "</div>\n";
	}
}

class LinkGroup {
	public $title;
	public $id;
	private $links = array();

	public function LinkGroup($title, $id) {
		$this->title = $title;
		$this->id = $id;
	}

	public function add($link) {
		$key = $link->title;
		$this->links[$key] = $link;
	}

	public function show()
	{
		echo "<div class=\"linkgroup\">\n";
		echo "  <div class=\"linkgroup_title\">". htmlspecialchars_decode($this->title, ENT_QUOTES) . "</div>\n";
		foreach($this->links as $link) {
			$link->show();
		}
		echo "</div>\n";
	}
}

class Links {
	private $file;
	private $groups = array();

	public function add($group) {
		$key = $group->title;
		$this->groups[$key] = $group;
	}
	/*
	public function write()
	{
		$fp = fopen($this->file, "w");
		fwrite($fp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");

		fwrite($fp, "<links>\n");
		foreach($this->links as $link) {
			fwrite($fp, "  <link title=\"" .
						 htmlspecialchars($link->title, ENT_QUOTES, "UTF-8") . "\"\n");
			fwrite($fp, "        href=\"" .
						 htmlspecialchars($link->href, ENT_QUOTES, "UTF-8") . "\">\n");
			fwrite($fp, "        icon=\"" .
						 htmlspecialchars($link->icon, ENT_QUOTES, "UTF-8") . "\">\n");
			fwrite($fp, "  </link>\n");
		}
		fwrite($fp, "</links>\n");

		fclose($fp);
	}
	*/
	public function show($groupid)
	{
		foreach($this->groups as $group) {
			if($groupid == $group->id || $groupid == "all") $group->show();
		}
	}

	private function read()
	{

		$dom = new DomDocument;
		$dom->preserveWhiteSpace = FALSE;
		$dom->load($this->file);

		$xmlgroups = $dom->getElementsByTagName('group');

		foreach ($xmlgroups as $xmlgroup) {

			$group = new LinkGroup($xmlgroup->getAttribute('name'),
														 $xmlgroup->getAttribute('id'));
			$xmllinks = $xmlgroup->getElementsByTagName('link');

			foreach ($xmllinks as $xmllink) {
				$link = new Link($xmllink->getAttribute('title'),
												 $xmllink->getAttribute('href'),
												 $xmllink->getAttribute('icon'));

				$group->add($link);
			}
		
			$this->add($group);
		}
		
		// Key sort
		//		ksort($this->events);
	}

	public function Links($file)
	{
		$this->file = $file;
		if(file_exists($file)) $this->read();
	}
}

?>