diff --git a/modules/discojuice/default-disable b/modules/discojuice/default-disable
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/modules/discojuice/hooks/hook_cron.php b/modules/discojuice/hooks/hook_cron.php
new file mode 100644
index 0000000000000000000000000000000000000000..229c9190cce485d619eb0f535b4d7471fe046812
--- /dev/null
+++ b/modules/discojuice/hooks/hook_cron.php
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Hook to run a cron job.
+ *
+ * @param array &$croninfo  Output
+ */
+function discojuice_hook_cron(&$croninfo) {
+	assert('is_array($croninfo)');
+	assert('array_key_exists("summary", $croninfo)');
+	assert('array_key_exists("tag", $croninfo)');
+
+	if ($croninfo['tag'] !== 'hourly') return;
+
+	SimpleSAML_Logger::info('cron [discojuice metadata caching]: Running cron in tag [' . $croninfo['tag'] . '] ');
+
+	try {
+	
+		$feed = new sspmod_discojuice_Feed();
+		$feed->store();
+
+	} catch (Exception $e) {
+		$croninfo['summary'][] = 'Error during discojuice metadata caching: ' . $e->getMessage();
+	}
+}
+?>
\ No newline at end of file
diff --git a/modules/discojuice/hooks/hook_frontpage.php b/modules/discojuice/hooks/hook_frontpage.php
new file mode 100644
index 0000000000000000000000000000000000000000..798450d9aaceb471125058f8746372f2b1663957
--- /dev/null
+++ b/modules/discojuice/hooks/hook_frontpage.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ * Hook to add links to the frontpage.
+ *
+ * @param array &$links  The links on the frontpage, split into sections.
+ */
+function discojuice_hook_frontpage(&$links) {
+	assert('is_array($links)');
+	assert('array_key_exists("links", $links)');
+
+	$links['federation'][] = array(
+		'href' => SimpleSAML_Module::getModuleURL('discojuice/central.php'),
+		'text' => array('en' => 'DiscoJuice: Discovery Service (not functional without IdP Discovery parameters)'),
+	);
+
+	$links['federation'][] = array(
+		'href' => SimpleSAML_Module::getModuleURL('discojuice/feed.php'),
+		'text' => array('en' => 'DiscoJuice: Metadata Feed (JSON)'),
+	);
+
+}
+?>
\ No newline at end of file
diff --git a/modules/discojuice/lib/Country.php b/modules/discojuice/lib/Country.php
new file mode 100644
index 0000000000000000000000000000000000000000..79d8d0cd6b27bcbd43b70e0dc753738a500cd3cb
--- /dev/null
+++ b/modules/discojuice/lib/Country.php
@@ -0,0 +1,164 @@
+<?php
+
+/**
+ * ...
+ */
+class sspmod_discojuice_Country {
+
+	const CACHETIME = 86400; 
+
+	
+	/* Instance of sspmod_core_Storage_SQLPermanentStorage
+	 * 
+	 * key1		calendar URL
+	 * key2		NULL
+	 * type		'calendar'
+	 *
+	 */
+	public $store;
+	public $ip;
+	
+	public function __construct($ip = NULL) {
+		if (is_null($ip)) $ip = $_SERVER['REMOTE_ADDR'];
+		
+		if (empty($ip))
+			throw new Exception('Trying to use the TimeZone class without specifying an IP address');
+		$this->ip = $ip;
+		
+		$this->store = new sspmod_core_Storage_SQLPermanentStorage('iptimezone');
+
+	}
+
+	public function lookupRegion($region) {
+		
+		if ($this->store->exists('region', $region, NULL)) {
+			SimpleSAML_Logger::debug('IP Geo location: Found region [' . $region . '] in cache.');
+			return $this->store->getValue('region', $region, NULL);
+		}
+		
+		SimpleSAML_Logger::debug('Lookup region');
+		$rawdata = file_get_contents('http://freegeoip.net/tz/json/' . $region);
+		
+		if (empty($rawdata)) throw new Exception('Error looking up IP geo location for [' . $ip . ']');
+		$data = json_decode($rawdata, TRUE);
+		if (empty($data)) throw new Exception('Error decoding response from looking up IP geo location for [' . $ip . ']');
+		
+		if (empty($data['timezone'])) throw new Exception('Could not get TimeZone from IP lookup');
+		
+		$timezone = $data['timezone'];
+		
+		SimpleSAML_Logger::debug('IP Geo location: Store region [' . $region . '] in cache: ' . $timezone);
+		$this->store->set('region', $region, NULL, $timezone);
+		
+		return $timezone;	
+	}
+	
+	public function getRegion() {
+		return $this->lookupIP($this->ip);		
+	}
+	
+	public function getGeo() {
+		return $this->lookupGeo($this->ip);		
+	}
+	
+	public function lookupGeo($ip) {
+
+		if ($this->store->exists('geo', $ip, NULL)) {
+			SimpleSAML_Logger::debug('IP Geo location (geo): Found ip [' . $ip . '] in cache.');
+			return $this->store->getValue('geo', $ip, NULL);
+		}
+		
+		SimpleSAML_Logger::debug('Lookup IP');
+		$rawdata = file_get_contents('http://freegeoip.net/json/' . $ip);
+		
+		if (empty($rawdata)) throw new Exception('Error looking up IP geo location for [' . $ip . ']');
+		$data = json_decode($rawdata, TRUE);
+		if (empty($data)) throw new Exception('Error decoding response from looking up IP geo location for [' . $ip . ']');
+		
+		if (empty($data['longitude'])) throw new Exception('Could not get longitude from IP lookup');
+		if (empty($data['latitude'])) throw new Exception( 'Could not get latitude from IP lookup');
+		
+		$geo = $data['latitude'] . ',' . $data['longitude'];
+		
+		SimpleSAML_Logger::debug('IP Geo location: Store ip [' . $ip . '] in cache: ' . $geo);
+		$this->store->set('geo', $ip, NULL, $geo);
+		
+		return $geo;
+	}
+	
+	public function lookupIP($ip) {
+
+		if ($this->store->exists('ip', $ip, NULL)) {
+			SimpleSAML_Logger::debug('IP Geo location: Found ip [' . $ip . '] in cache.');
+			return $this->store->getValue('ip', $ip, NULL);
+		}
+		
+		SimpleSAML_Logger::debug('Lookup IP [' . $ip. ']');
+		$rawdata = file_get_contents('http://freegeoip.net/json/' . $ip);
+		
+		if (empty($rawdata)) throw new Exception('Error looking up IP geo location for [' . $ip . ']');
+		$data = json_decode($rawdata, TRUE);
+		if (empty($data)) throw new Exception('Error decoding response from looking up IP geo location for [' . $ip . ']');
+		
+		SimpleSAML_Logger::info('Country code: ' . $data['country_code']);
+		
+		if (empty($data['country_code'])) throw new Exception('Could not get Coutry Code from IP lookup : ' . var_export($data, TRUE));
+		if (empty($data['region_code'])) $region = 'NA';
+		
+		$region = $data['country_code'] . '/' . $data['region_code'];
+		
+		SimpleSAML_Logger::debug('IP Geo location: Store ip [' . $ip . '] in cache: ' . $region);
+		$this->store->set('ip', $ip, NULL, $region);
+		
+		return $region;
+	}
+	
+	public function getTimeZone() {
+		$tz = 'Europe/Amsterdam';
+		
+		try {
+			$tz = $this->lookupRegion($this->lookupIP($this->ip));
+		} catch(Exception $e) {
+			$tz = 'Europe/Amsterdam';
+		}
+		
+		return $tz;
+	}
+	
+
+	
+	public function getSelectedTimeZone() {
+	
+	
+		if (isset($_REQUEST['timezone'])) {		
+			return $_REQUEST['timezone'];
+		}
+		return $this->getTimeZone();
+	}
+	
+	public function getHTMLList($default = NULL, $autosubmit = FALSE) {
+
+		$tzlist = DateTimeZone::listIdentifiers();
+		$tzlist = array_reverse($tzlist);
+		$thiszone = $this->getTimeZone();
+		
+		if (is_null($default)) $default = $thiszone;
+		
+		$a = '';
+		if ($autosubmit) $a = "onchange='this.form.submit()' ";
+		
+		$html = '<select ' .  $a . 'name="timezone">' . "\n";
+		foreach($tzlist AS $tz) {
+			if ($tz == $default) {
+				$html .= ' <option selected="selected" value="' . htmlspecialchars($tz) . '">' . htmlspecialchars($tz) . '</option>' . "\n";				
+			} else {
+				$html .= ' <option value="' . htmlspecialchars($tz) . '">' . htmlspecialchars($tz) . '</option>' . "\n";				
+			}
+
+		}
+		$html .= '</select>' . "\n";
+		return $html;
+	}
+	
+
+}
diff --git a/modules/discojuice/lib/Feed.php b/modules/discojuice/lib/Feed.php
new file mode 100644
index 0000000000000000000000000000000000000000..2c1edc25410602fd1c7d6588e9e254cce3c63656
--- /dev/null
+++ b/modules/discojuice/lib/Feed.php
@@ -0,0 +1,295 @@
+<?php
+
+/**
+ * ...
+ */
+class sspmod_discojuice_Feed {
+	
+	protected $config;
+	
+	protected $exlude, $override, $insert;
+	
+	protected $metadata;
+	protected $feed;
+	
+	protected $contrytags, $countryTLDs;
+	
+	function __construct() {
+	
+		$this->config = SimpleSAML_Configuration::getInstance();
+		$this->djconfig = SimpleSAML_Configuration::getOptionalConfig('disojuicefeed.php');
+
+		$metadatah = SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler();
+		$this->metadata = $metadatah->getList('saml20-idp-remote');
+		
+		$this->excludes = array_flip($this->djconfig->getValue('exclude'));
+		$this->insert = $this->djconfig->getValue('insert');
+		$this->overrides = $this->djconfig->getValue('overrides');
+		
+		$this->countrytags = array(
+			'croatia' => 'HR',
+			'czech' => 'CZ',
+			'denmark' => 'DK',
+			'finland' => 'FI',
+			'france' => 'FR',
+			'germany' => 'DE',
+			'greece' => 'GR',
+			'ireland' => 'IE',
+			'italy' => 'IT',
+			'luxembourg' => 'LU',
+			'hungary' => 'HU',
+			'netherlands' => 'NL',
+			'norway' => 'NO',
+			'portugal' => 'PT',
+			'poland' => 'PL',
+			'slovenia' => 'SI',
+			'spain' => 'ES',
+			'sweden' => 'SE',
+			'switzerland' => 'CH',
+			'turkey' => 'TR',
+			'us' => 'US',
+			'uk' => 'GB',
+		);
+		
+		$this->countryTLDs = array(
+			'lp.' => 'PL',
+			'uh.' => 'HU',
+			'es.' => 'SE',
+			'ed.' => 'DE',
+			'if.' => 'FI',
+			'zc.' => 'CZ',
+			'rt.' => 'TR',
+			'kd.' => 'DK',
+			'on.' => 'NO',
+			'ude.' => 'US',
+			'ku.oc.' => 'GB',
+		);
+	}
+	
+	public function store() {
+		$datadir = $this->config->getPathValue('datadir', 'data/');
+		
+		if (!is_dir($datadir))
+			throw new Exception('Data directory [' . $datadir. '] does not exist');
+		if (!is_writable($datadir))
+			throw new Exception('Data directory [' . $datadir. '] is not writable');
+		
+		$djdatadir = $datadir . 'disojuice/';
+		if (!is_dir($djdatadir)) {
+			mkdir($djdatadir);
+		}
+		
+		$djdatafile = $djdatadir . 'discojuice.cache';
+		
+		$data = $this->getJSON();
+		
+		file_put_contents($djdatafile, json_encode($data));
+		
+	}
+	
+	
+	public function read() {
+		$djdatafile = $this->config->getPathValue('datadir', 'data/')  . 'disojuice/'  . 'discojuice.cache';
+
+		if (!file_exists($djdatafile)) {
+			error_log('Did not find cached version, generating content again...');
+			return json_encode($this->getJSON());
+		}
+		
+		return file_get_contents($djdatafile);
+	}
+	
+	private function exclude($e) {
+		if ($this->excludes === NULL) return FALSE;
+		return (array_key_exists($e, $this->excludes));
+	}
+	
+	private function process() {
+		
+		$this->feed = array();
+		foreach($this->metadata AS $m) {
+			if ($this->exclude($m['entityid'])) continue;
+			
+			$this->feed[] = $this->processEntity($m);
+			
+			
+		}
+		
+		if (!empty($this->insert)) {
+			foreach($this->insert AS $i) {
+				$this->feed[] = $i;
+			}
+		}
+	}
+	
+	
+	private function processEntity($m) {
+		
+		$data = array('entityid' => $m['entityid']);
+		
+		$this->getCountry($data, $m);
+		$this->getTitle($data, $m);
+		$this->getOverrides($data, $m);
+		
+		$this->getGeo($data, $m);
+
+
+		return $data;
+	}
+	
+	public function getJSON() {
+		$this->process();
+		return $this->feed;
+	}
+	
+	
+	
+	
+	protected function getGeo(&$data, $m) {
+		
+		// Do not lookup Geo locations from IP if geo location is already set.
+		if (array_key_exists('geo', $data)) return;
+	
+		// Look for SingleSignOnService endpoint.
+		if (!empty($m['SingleSignOnService']) ) {
+			
+			$m['metadata-set'] = 'saml20-idp-remote';
+			$mc = SimpleSAML_Configuration::loadFromArray($m);
+			$endpoint = $mc->getDefaultEndpoint('SingleSignOnService');
+
+			try {
+				$host = parse_url($endpoint['Location'], PHP_URL_HOST); if (empty($host)) return;
+				$ip = gethostbyname($host); if (empty($ip)) return;
+				$capi = new sspmod_discojuice_Country($ip);
+				
+				if (empty($data['geo'])) {
+					$geo = $capi->getGeo();
+					$geos = explode(',', $geo);
+					$data['geo'] = array('lat' => $geos[0], 'lon' => $geos[1]);
+				}
+
+			} catch(Exception $e) {
+				error_log('Error looking up geo coordinates: ' . $e->getMessage());
+			}
+			
+		}
+
+		
+	}
+	
+	
+	protected function getCountry(&$data, $m) {
+		if (!empty($m['tags'])) {
+		
+			foreach($m['tags'] AS $tag) {
+				if (array_key_exists($tag, $this->countrytags)) {
+					$data['country'] = $this->countrytags[$tag];
+					return;
+				}
+			}
+		}
+		
+		
+		$c = self::countryFromURL($m['entityid']);
+		if (!empty($c)) { $data['country'] = $c; return; }
+
+		if (!empty($m['SingleSignOnService']) ) {
+			
+			SimpleSAML_Logger::debug('SingleSignOnService found');
+			
+			$mc = SimpleSAML_Configuration::loadFromArray($m);
+			$endpoint = $mc->getDefaultEndpoint('SingleSignOnService');
+			
+			error_log('Endpoint: ' . var_export($endpoint, TRUE));
+			
+			$c = $this->countryFromURL($endpoint['Location']);
+			if (!empty($c)) { $data['country'] = $c; return; }
+				
+			try {
+				$host = parse_url($endpoint['Location'], PHP_URL_HOST);
+				$ip = gethostbyname($host);
+				$capi = new sspmod_discojuice_Country($ip);
+
+				$region = $capi->getRegion();
+				
+				if (preg_match('|^([A-Z][A-Z])/|', $region, $match)) {
+					$data['country'] = $match[1];
+
+				}
+			} catch(Exception $e) {}			
+			
+		}
+		
+
+
+		return null;
+	}
+	
+	protected function getTitle(&$data, $m) {
+		if(isset($m['name']) && is_string($m['name'])) {
+			$data['title'] = $m['name'];
+		} else if(isset($m['name']) && array_key_exists('en', $m['name'])) {
+			$data['title'] = $m['name']['en'];
+		} else if (isset($m['name']) && is_string($m['name'])) {
+			$data['title'] = $m['name'];	
+		} else if (isset($m['OrganizationName']) && isset($m['OrganizationName']['en'])) {
+			$data['title'] = $m['OrganizationName']['en'];
+		} else {
+			$data['title'] = substr($m['entityid'], 0, 20);
+			$data['weight'] = 9;
+		}
+	}
+	
+	protected function getOverrides(&$data, $m) {
+		if (empty($this->overrides)) return;
+		if (empty($this->overrides[$m['entityid']])) return;
+		
+		$override = $this->overrides[$m['entityid']];
+		
+		foreach($override AS $k => $v) {
+			$data[$k] = $v;
+		}
+		
+	}
+	
+		
+	protected static function prefix($word, $prefix) {
+		if ( strlen($word) < strlen($prefix)) {
+				$tmp = $prefix;
+				$prefix = $word;
+				$word = $tmp;
+		}
+	
+		$word = substr($word, 0, strlen($prefix));
+	
+		if ($prefix == $word) {
+				return 1;
+		}
+	
+		return 0;
+	}
+
+	
+	protected function countryFromURL($entityid) {
+		try {
+			$pu = parse_url($entityid, PHP_URL_HOST);			
+			if (!empty($pu)) {
+				$rh = strrev($pu); 
+				// error_log('Looking up TLD : ' . $rh);
+				 
+				foreach($this->countryTLDs AS $domain => $country) {
+					if (self::prefix($domain, $rh)) {
+						error_log('Looking up TLD : ' . $rh . ' matched ' . $country);
+						return $country;
+					}
+				}
+			}	
+		} catch(Exception $e) {
+		}
+		return null;
+	}
+
+	
+
+}
+
diff --git a/modules/discojuice/templates/central.tpl.php b/modules/discojuice/templates/central.tpl.php
new file mode 100644
index 0000000000000000000000000000000000000000..38e2aeda757e5d0d8411640791f5e75f0c46e07b
--- /dev/null
+++ b/modules/discojuice/templates/central.tpl.php
@@ -0,0 +1,177 @@
+<?php
+
+header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
+
+?><!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="utf-8" />
+	<title>Select Your Login Provider</title>
+	
+
+<?php
+
+echo '<link rel="shortcut icon" href="' . SimpleSAML_Module::getModuleURL('discojuice/favicon.png') . '" />
+
+';
+
+
+echo '<!-- JQuery -->';
+echo '<script type="text/javascript" language="javascript" src="' . SimpleSAML_Module::getModuleURL('discojuice/discojuice/jquery-1.4.3.min.js') . '"></script>
+<script type="text/javascript" language="javascript" src="' . SimpleSAML_Module::getModuleURL('discojuice/discojuice/jquery-ui-1.8.5.custom.min.js') . '"></script>
+
+<link rel="stylesheet" type="text/css" href="' . SimpleSAML_Module::getModuleURL('discojuice/discojuice/css/custom/jquery-ui-1.8.5.custom.css') . '" />
+
+
+';
+
+
+
+echo '<!-- DiscoJuice -->
+<script type="text/javascript" language="javascript" src="' . SimpleSAML_Module::getModuleURL('discojuice/discojuice/discojuice.misc.js') . '"></script>
+<script type="text/javascript" language="javascript" src="' . SimpleSAML_Module::getModuleURL('discojuice/discojuice/discojuice.ui.js') . '"></script>
+<script type="text/javascript" language="javascript" src="' . SimpleSAML_Module::getModuleURL('discojuice/discojuice/discojuice.control.js') . '"></script>
+
+<script type="text/javascript" language="javascript" src="' . SimpleSAML_Module::getModuleURL('discojuice/discojuice/idpdiscovery.js') . '"></script>
+
+<link rel="stylesheet" type="text/css" href="' . SimpleSAML_Module::getModuleURL('discojuice/discojuice/css/discojuice.css') . '" />';
+
+?>
+
+	<style type="text/css">
+		
+		body {
+			text-align: center;
+		}
+		div.discojuice {
+			text-align: left;
+			position: relative;
+			width: 600px;
+			margin-right: auto;
+			margin-left: auto;
+			
+		}
+		
+	</style>
+
+	<script type="text/javascript">
+<?php
+
+
+$options = $this->data['discojuice.options'];
+
+echo 'var options = ' . json_encode($options) . ';' . "\n\n";
+
+echo 'options.countryAPI = "' . SimpleSAML_Module::getModuleURL('discojuice/country.php'). '"; ' . "\n";
+echo 'options.metadata = "' . SimpleSAML_Module::getModuleURL('discojuice/feed.php'). '"; ' . "\n";
+
+echo 'options.disco = { url: "' . SimpleSAML_Module::getModuleURL('discojuice/discojuiceDiscoveryResponse.html?'). '" }; ' . "\n";
+echo 'options.discoPath = "discojuice/"; ' . "\n";
+
+echo 'var acl = ' . json_encode($this->data['acl']) . ';' . "\n";
+echo 'acl.push("' . SimpleSAML_Utilities::getSelfHost() . '");' . "\n\n";
+
+?>
+		
+		IdPDiscovery.receive();
+		IdPDiscovery.setup(options, acl);
+	</script>
+	
+	
+	
+</head>
+<body style="background: #ccc">
+
+<p style="text-align: right"><a class="signin" href="/"></a></p>
+<div class="noscript">
+<?php
+
+
+$metadata = $this->data['metadata'];
+
+function cmp($a, $b) {
+	$xa = isset($a['weight']) ? $a['weight'] : 0;
+	$xb = isset($b['weight']) ? $b['weight'] : 0;
+	return ($xa-$xb);
+}
+usort($metadata, 'cmp');
+
+
+
+$spentityid = !empty($_REQUEST['entityID']) ? $_REQUEST['entityID'] : null;
+$returnidparam = !empty($_REQUEST['returnIDParam']) ? $_REQUEST['returnIDParam'] : 'entityID';
+$returnto = !empty($_REQUEST['return']) ? $_REQUEST['return'] : null;
+
+
+
+function show($item) {
+	
+	global $returnidparam, $returnto;
+	
+	$iconPath = 'discojuice/logos/';
+	
+	$href = $returnto . '&' . $returnidparam . '=' . urlencode($item['entityid']);
+	if (!empty($item['icon'])) {
+		echo '<a href="' . htmlspecialchars($href) . '" class="">' . 
+			'<img src="' . htmlspecialchars($iconPath . $item['icon']) . '" />' .
+			'<span class="title">' . htmlspecialchars($item['title']) . '</span>' . 
+			'<span class="substring">' . (!empty($item['descr']) ? htmlspecialchars($item['descr']) : '') . '</span>' .
+			'<hr style="clear: both; height: 0px; visibility:hidden" /></a>';
+
+	} else {
+		echo '<a href="' . htmlspecialchars($href) . '" class="">' . 
+			'<span class="title">' . htmlspecialchars($item['title']) . '</span>' . 
+			'<span class="substring">' . (!empty($item['descr']) ? htmlspecialchars($item['descr']) : '') . '</span></a>';
+	}
+
+}
+
+
+echo '<div style="display: block" class="discojuice">
+		<div class="top">
+			<a href="#" class="discojuice_close">&nbsp;</a>
+			<p class="discojuice_maintitle">Sign in</p>
+			<p class="discojuice_subtitle">Select your login provider</p>
+		</div>
+		<div id="content" style="">
+			<p class="moretext"></p>
+			<div class="scroller">';
+
+	foreach($metadata AS $item) {
+		show($item);
+	}
+	
+// 	echo '<pre>';
+// 	print_r($metadata);
+// 	echo '</pre>';
+	
+	echo '</div>
+		</div>
+		<div class="filters bottom">
+			<p>You have disabled Javascript in your browser &mdash; therefore there user interface for selecting your provider is
+			lacking some features. You may still use browser inline search to easier locate your provider on the list.</p>
+		</div>
+	</div>';
+
+
+
+?>
+</div>
+</body>
+</html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/discojuice/www/central.php b/modules/discojuice/www/central.php
new file mode 100644
index 0000000000000000000000000000000000000000..3c39d97b94a6dfc07e768986fa04bf8f9bb70b80
--- /dev/null
+++ b/modules/discojuice/www/central.php
@@ -0,0 +1,18 @@
+<?php
+
+
+$djconfig = SimpleSAML_Configuration::getOptionalConfig('disojuicecentral.php');
+$config = SimpleSAML_Configuration::getInstance();
+
+
+$feed = new sspmod_discojuice_Feed();
+$metadata = json_decode($feed->read(), TRUE);	
+
+
+
+$t = new SimpleSAML_XHTML_Template($config, 'discojuice:central.tpl.php');
+$t->data['metadata'] = $metadata;
+$t->data['discojuice.options'] = $djconfig->getValue('discojuice.options');
+$t->data['acl'] = $djconfig->getValue('acl');
+$t->show();
+
diff --git a/modules/discojuice/www/country.php b/modules/discojuice/www/country.php
new file mode 100644
index 0000000000000000000000000000000000000000..50c73438552c418f23619787d09f9cf9395d0dd9
--- /dev/null
+++ b/modules/discojuice/www/country.php
@@ -0,0 +1,40 @@
+<?php
+
+header('Content-type: application/json; utf-8');
+
+
+try {
+	
+	$djconfig = SimpleSAML_Configuration::getOptionalConfig('disojuicecentral.php');
+	$options = $djconfig->getConfigItem('discojuice.options');
+	$enableCountryAPI = $options->getValue('country', FALSE);
+	
+	if ($enableCountryAPI !== TRUE) {
+		throw new Exception('Use of the DiscoJuice Country API is disabled.');
+	}
+
+	$result = array('status' => 'ok');
+
+	$c = new sspmod_discojuice_Country();
+	$region = $c->getRegion();
+	
+	if (preg_match('|^(.*?)/(.*?)$|', $region, $matches)) {
+		if (!empty($matches[1])) $result['country'] = $matches[1];
+		if (!empty($matches[2])) $result['region'] = $matches[2];
+	}
+	
+	$geo = $c->getGeo();
+
+	if (preg_match('|^(.*?),(.*?)$|', $geo, $matches)) {
+		$result['geo'] = array('lat' => (float) $matches[1], 'lon' => (float)$matches[2]);
+	}
+
+	echo json_encode($result); exit;	
+	throw new Exception('Could not lookup, invalid format: ' . $region);
+	
+} catch(Exception $e) {
+	
+	echo json_encode(array('status' => 'error', 'error' => $e->getMessage()));
+	
+}
+
diff --git a/modules/discojuice/www/disco.tgz b/modules/discojuice/www/disco.tgz
new file mode 100644
index 0000000000000000000000000000000000000000..349d9eb7e81129060842e39e49f9e9dac3e99713
Binary files /dev/null and b/modules/discojuice/www/disco.tgz differ
diff --git a/modules/discojuice/www/discojuice/build.sh b/modules/discojuice/www/discojuice/build.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4eb3a87f7755f215396ecf95cd6a43def019a6ae
--- /dev/null
+++ b/modules/discojuice/www/discojuice/build.sh
@@ -0,0 +1,5 @@
+#! /bin/bash
+
+cat discojuice.misc.js > discojuice.js
+cat discojuice.ui.js >> discojuice.js
+cat discojuice.control.js >> discojuice.js
\ No newline at end of file
diff --git a/modules/discojuice/www/discojuice/css/custom/images/ui-bg_flat_0_aaaaaa_40x100.png b/modules/discojuice/www/discojuice/css/custom/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4
Binary files /dev/null and b/modules/discojuice/www/discojuice/css/custom/images/ui-bg_flat_0_aaaaaa_40x100.png differ
diff --git a/modules/discojuice/www/discojuice/css/custom/images/ui-bg_glass_55_fbf9ee_1x400.png b/modules/discojuice/www/discojuice/css/custom/images/ui-bg_glass_55_fbf9ee_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad3d6346e00f246102f72f2e026ed0491988b394
Binary files /dev/null and b/modules/discojuice/www/discojuice/css/custom/images/ui-bg_glass_55_fbf9ee_1x400.png differ
diff --git a/modules/discojuice/www/discojuice/css/custom/images/ui-bg_glass_65_ffffff_1x400.png b/modules/discojuice/www/discojuice/css/custom/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..42ccba269b6e91bef12ad0fa18be651b5ef0ee68
Binary files /dev/null and b/modules/discojuice/www/discojuice/css/custom/images/ui-bg_glass_65_ffffff_1x400.png differ
diff --git a/modules/discojuice/www/discojuice/css/custom/images/ui-bg_glass_75_dadada_1x400.png b/modules/discojuice/www/discojuice/css/custom/images/ui-bg_glass_75_dadada_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a46b47cb16631068aee9e0bd61269fc4e95e5cd
Binary files /dev/null and b/modules/discojuice/www/discojuice/css/custom/images/ui-bg_glass_75_dadada_1x400.png differ
diff --git a/modules/discojuice/www/discojuice/css/custom/images/ui-bg_glass_75_e6e6e6_1x400.png b/modules/discojuice/www/discojuice/css/custom/images/ui-bg_glass_75_e6e6e6_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..86c2baa655eac8539db34f8d9adb69ec1226201c
Binary files /dev/null and b/modules/discojuice/www/discojuice/css/custom/images/ui-bg_glass_75_e6e6e6_1x400.png differ
diff --git a/modules/discojuice/www/discojuice/css/custom/images/ui-bg_glass_75_ffffff_1x400.png b/modules/discojuice/www/discojuice/css/custom/images/ui-bg_glass_75_ffffff_1x400.png
new file mode 100644
index 0000000000000000000000000000000000000000..e65ca1297c7b0fca6d0d10c4c5475b8c20cf0e62
Binary files /dev/null and b/modules/discojuice/www/discojuice/css/custom/images/ui-bg_glass_75_ffffff_1x400.png differ
diff --git a/modules/discojuice/www/discojuice/css/custom/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/modules/discojuice/www/discojuice/css/custom/images/ui-bg_highlight-soft_75_cccccc_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..7c9fa6c6edcfcdd3e5b77e6f547b719e6fc66e30
Binary files /dev/null and b/modules/discojuice/www/discojuice/css/custom/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ
diff --git a/modules/discojuice/www/discojuice/css/custom/images/ui-bg_inset-soft_95_fef1ec_1x100.png b/modules/discojuice/www/discojuice/css/custom/images/ui-bg_inset-soft_95_fef1ec_1x100.png
new file mode 100644
index 0000000000000000000000000000000000000000..0e05810fffe0b6b8ac320e55d1eb4ba259b89d92
Binary files /dev/null and b/modules/discojuice/www/discojuice/css/custom/images/ui-bg_inset-soft_95_fef1ec_1x100.png differ
diff --git a/modules/discojuice/www/discojuice/css/custom/images/ui-icons_222222_256x240.png b/modules/discojuice/www/discojuice/css/custom/images/ui-icons_222222_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a
Binary files /dev/null and b/modules/discojuice/www/discojuice/css/custom/images/ui-icons_222222_256x240.png differ
diff --git a/modules/discojuice/www/discojuice/css/custom/images/ui-icons_2e83ff_256x240.png b/modules/discojuice/www/discojuice/css/custom/images/ui-icons_2e83ff_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..09d1cdc856c292c4ab6dd818c7543ac0828bd616
Binary files /dev/null and b/modules/discojuice/www/discojuice/css/custom/images/ui-icons_2e83ff_256x240.png differ
diff --git a/modules/discojuice/www/discojuice/css/custom/images/ui-icons_454545_256x240.png b/modules/discojuice/www/discojuice/css/custom/images/ui-icons_454545_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..59bd45b907c4fd965697774ce8c5fc6b2fd9c105
Binary files /dev/null and b/modules/discojuice/www/discojuice/css/custom/images/ui-icons_454545_256x240.png differ
diff --git a/modules/discojuice/www/discojuice/css/custom/images/ui-icons_888888_256x240.png b/modules/discojuice/www/discojuice/css/custom/images/ui-icons_888888_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d02426c114be4b57aabc0a80b8a63d9e56b9eb6
Binary files /dev/null and b/modules/discojuice/www/discojuice/css/custom/images/ui-icons_888888_256x240.png differ
diff --git a/modules/discojuice/www/discojuice/css/custom/images/ui-icons_cd0a0a_256x240.png b/modules/discojuice/www/discojuice/css/custom/images/ui-icons_cd0a0a_256x240.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ab019b73ec11a485fa09378f3a0e155194f6a5d
Binary files /dev/null and b/modules/discojuice/www/discojuice/css/custom/images/ui-icons_cd0a0a_256x240.png differ
diff --git a/modules/discojuice/www/discojuice/css/custom/jquery-ui-1.8.5.custom.css b/modules/discojuice/www/discojuice/css/custom/jquery-ui-1.8.5.custom.css
new file mode 100644
index 0000000000000000000000000000000000000000..fc55f292bf0cf5b6f60e53043ed890b969013cc7
--- /dev/null
+++ b/modules/discojuice/www/discojuice/css/custom/jquery-ui-1.8.5.custom.css
@@ -0,0 +1,572 @@
+/*
+ * jQuery UI CSS Framework @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_75_ffffff_1x400.png) 50% 50% repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
+.ui-widget-header a { color: #222222; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_inset-soft_95_fef1ec_1x100.png) 50% bottom repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-right {  -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Resizable @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.ui-accordion { width: 100%; }
+.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.ui-accordion .ui-accordion-li-fix { display: inline; }
+.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.ui-accordion .ui-accordion-content-active { display: block; }/*
+ * jQuery UI Autocomplete @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
+.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.ui-buttonset { margin-right: 7px; }
+.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative;  }
+.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; } 
+.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.ui-datepicker { width: 17em; padding: .2em .2em 0; }
+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.ui-datepicker .ui-datepicker-prev { left:2px; }
+.ui-datepicker .ui-datepicker-next { right:2px; }
+.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.ui-datepicker select.ui-datepicker-month, 
+.ui-datepicker select.ui-datepicker-year { width: 49%;}
+.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.ui-datepicker td { border: 0; padding: 1px; }
+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi { width:auto; }
+.ui-datepicker-multi .ui-datepicker-group { float:left; }
+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.ui-datepicker-row-break { clear:both; width:100%; }
+
+/* RTL support */
+.ui-datepicker-rtl { direction: rtl; }
+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar @VERSION
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.ui-progressbar { height:2em; text-align: left; }
+.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/modules/discojuice/www/discojuice/css/discojuice.css b/modules/discojuice/www/discojuice/css/discojuice.css
new file mode 100644
index 0000000000000000000000000000000000000000..51c61541326577e92d097ab7e5f1256ad166d513
--- /dev/null
+++ b/modules/discojuice/www/discojuice/css/discojuice.css
@@ -0,0 +1,374 @@
+
+/*
+ * Generic css for whole popup box
+ */
+div.discojuice {
+	font-family: Arial;
+	font-size: small;
+	z-index: 100;
+	margin: 0;
+	padding: 0;
+	width: 320px;
+	position: absolute;
+	top: 30px;
+	right: 10px;
+	z-index: 150;
+
+}
+
+div.discojuice p {
+	margin: 2px; padding: 0px;
+}
+
+
+
+div.discojuice > div.top {
+
+	background: #fff;
+	border-bottom: 1px solid #bbb;
+	
+	-webkit-border-top-left-radius: 15px;
+	-webkit-border-top-right-radius: 15px;
+	-moz-border-radius-topleft: 15px;
+	-moz-border-radius-topright: 15px;
+	border-top-left-radius: 15px;
+	border-top-right-radius: 15px;
+}
+
+div.discojuice > div {
+
+	background: #eee;
+	border-bottom: 1px solid #bbb;
+	
+	padding: 8px 14px;
+	margin: 0;
+}
+
+div.discojuice > div.bottom {
+/*	background: url(../images/box-bottom.png) no-repeat 0% 100%;*/
+
+	background: #f8f8f8;
+
+	padding: 10px 17px;
+	margin: 0;
+		
+	-webkit-border-bottom-right-radius: 15px;
+	-webkit-border-bottom-left-radius: 15px;
+	-moz-border-radius-bottomright: 15px;
+	-moz-border-radius-bottomleft: 15px;
+	border-bottom-right-radius: 15px;
+	border-bottom-left-radius: 15px;
+	
+}
+
+div.discojuice .discojuice_maintitle {
+	font-size: 15px;
+	font-family: Tahoma, Helvetica;
+	font-weight: normal;
+	color: #666;
+}
+
+div.discojuice .discojuice_subtitle {
+	font-size: 12px;
+	font-family: Tahoma, Helvetica;
+	font-weight: normal;
+	color: #888;
+}
+
+div.discojuice .discojuice_close {
+	width: 62px;
+	height: 29px;
+	background: url(../images/close.png) no-repeat;
+	text-decoration: none;
+	float: right;
+}
+
+div.discojuice .discojuice_close:hover {
+	background: url(../images/close-hover.png) no-repeat;
+}
+
+
+div.discojuice a {
+	outline: none;
+	color: #444;
+	text-decoration: none;
+}
+
+div.discojuice a img {
+	border: none;
+	outline: none;
+}
+
+div.discojuice a.textlink:hover {
+	color: #666;
+	border-bottom: 1px solid #aaa;
+}
+
+
+
+
+
+
+/*
+ * Section for the scroller
+ */
+div.discojuice #content {
+	overflow: auto;	
+	max-height: 450px;	
+}
+div.discojuice div.scroller {
+	padding:  1px 1px 10px 1px;
+}
+div.discojuice div.scroller img.logo {
+	margin: 0px;
+	float:  right;
+}
+
+
+div.discojuice div.scroller a span {
+	margin: 3px;
+/*	display: block;*/
+}
+div.discojuice div.scroller a span.title {
+	margin-right: .4em;
+}
+div.discojuice div.scroller a span.substring {
+	font-size:  95%;
+	color: #777;
+}
+div.discojuice div.scroller a span.distance {
+	font-size:  90%;
+	color: #aaa;
+}
+
+div.discojuice div.scroller a span.location {
+	display: block;
+}
+div.discojuice div.scroller a span.country {
+	font-size:  86%;
+	color: #555;
+}
+div.discojuice div.scroller a div.debug {
+	font-size:  86%;
+	color: #aaa;
+}
+
+
+div.discojuice div.scroller hr {
+	margin: 0px;
+	padding: 0px;
+}
+
+
+div.discojuice div.scroller.filtered a {
+	display: none !important;
+}
+
+div.discojuice div.scroller.filtered a.present {
+	display: inline-block !important;
+}
+
+
+div.discojuice div.loadingData {
+	color: #aaa;
+}
+
+
+
+/*
+ * Section for the filters
+ */
+
+
+
+
+
+
+
+
+/*
+ * Section for the search box
+ */
+div.discojuice input.discojuice_search {
+	width: 100%;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*
+ * ------ SECTION FOR THE IDP Buttons -----
+ */
+
+/* Generals */
+div.discojuice div.scroller a {
+	margin: 4px 2px 0px 0px;
+	display:  block;
+
+	border: 1px solid #bbb;
+	border-radius: 4px;
+	-moz-border-radius:4px;
+	-webkit-border-radius:4px;
+	
+
+	
+background-image: -webkit-gradient(
+    linear,
+    left bottom,
+    left top,
+    color-stop(0.3, rgb(220,220,220)),
+    color-stop(0.9, rgb(240,240,240))
+);
+background-image: -moz-linear-gradient(
+    center bottom,
+    rgb(220,220,220) 30%,
+    rgb(240,240,240) 90%
+);
+background-image: -o-linear-gradient(
+    bottom,
+    rgb(220,220,220) 30%,
+    rgb(240,240,240) 90%
+);
+
+	/* Text */
+	color: #333;
+	text-shadow: 0 1px #fff;
+	font-size:  135%;
+	font-family:  "Arial Narrow", "Arial", sans-serif;
+	text-decoration: none;
+}
+
+/* Shaddow effect for normal entries... */
+div.discojuice div.scroller a  {
+/*	box-shadow: inset 0 1px 3px #fff, inset 0 -15px #cbe6f2, 0 0 3px #8ec1da;*/
+} 
+
+
+/* Item that is hovered. */
+div.discojuice div.scroller a:hover, div.discojuice div.scroller a.hothit:hover {
+	background-color: #fafafa;
+	border: 1px solid #666! important;
+}
+div.discojuice div.scroller a:hover {
+	background-color: #fafafa;
+	border: 1px solid #666;
+
+/*
+	-o-box-shadow: none;
+	-webkit-box-shadow:none;
+	-moz-box-shadow: none;
+	color: #333;
+	text-shadow: 0 1px #fff;
+*/
+}
+
+
+/* Highlight the entry that is listed on top reccomended.
+ * usually because the user has selected that item before.
+ */
+div.discojuice div.scroller a.hothit {
+/*	border: 3px solid #ccc;*/
+	border: 1px solid #aaa;
+/*	background-color: #daebf3;*/
+	color: #333;
+	margin-bottom: 14px;
+	
+	border-radius: 4px;
+	box-shadow: 0 0 5px  #ccc;
+	-o-box-shadow: 0 0 5px  #ccc;
+	-webkit-box-shadow: 0 0 5px  #ccc;
+	-moz-box-shadow: 0 0 5px  #ccc;
+	color: #333;
+	text-shadow: 0 1px #fff;
+}
+
+
+
+
+
+
+/*
+ * ------ END OF ---- SECTION FOR THE IDP Buttons -----
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+div.discojuice a#moreoptions, a.discojuice_what {
+	padding-left: 12px;
+	background: url(../images/arrow.png) no-repeat 0px 3px;
+}
+
+div.discojuice .discojuice_whatisthis.show a.discojuice_what {
+	background: url(../images/arrow-r.png) no-repeat 0px 5px;
+}
+
+div.discojuice p.moretext {
+	margin-top: 0;
+	color: #777;
+}
+
+div.discojuice div.discojuice_whatisthis {
+	margin-bottom: 10px;
+}
+
+div.discojuice .discojuice_whattext {
+	display: none;
+	margin-top: 1px;
+	margin-left: 12px;
+	margin-bottom: 0;
+	padding: 0;
+	font-size: 11px;
+	color: #555;
+}
+
+div.discojuice .discojuice_whatisthis.show .discojuice_whattext {
+	display: block;
+}
+
+
+
+
+/*
+ * Overlay grey out background
+ */
+
+div#discojuice_overlay {
+    background-color: black;
+    filter:alpha(opacity=50); /* IE */
+    opacity: 0.5; /* Safari, Opera */
+    -moz-opacity:0.50; /* FireFox */
+    z-index: 20;
+    height: 100%;
+    width: 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+    position:absolute;
+    top: 0px;
+    left: 0px;
+}
+
+
+
+
diff --git a/modules/discojuice/www/discojuice/discojuice.control.js b/modules/discojuice/www/discojuice/discojuice.control.js
new file mode 100644
index 0000000000000000000000000000000000000000..f8128850c598e27ba3c3d7b63aeecbd3776f7d3c
--- /dev/null
+++ b/modules/discojuice/www/discojuice/discojuice.control.js
@@ -0,0 +1,497 @@
+/*
+ * DiscoJuice
+ *  Work is based upon mock up made by the Kantara ULX group.
+ * 
+ * Author: Andreas Ã…kre Solberg, UNINETT, andreas.solberg@uninett.no
+ * Licence undecided. Awaiting alignment with the licence of the origin Kantara mockup.
+ */
+if (typeof DiscoJuice == "undefined") var DiscoJuice = {};
+
+
+DiscoJuice.Control = {
+	// Reference to the top level DiscoJuice object
+	"parent" : DiscoJuice,
+
+	// Reference to the UI object...
+	"ui": null,	
+	"data": null,
+	
+	// Set filter values to filter the result.
+	"filters": {},
+	
+	"location": null,
+	"showdistance": false,
+
+	
+	/*
+	 * Fetching JSON Metadata using AJAX.
+	 * Callback postLoad is called when data is returned.
+	 */
+	"load": function() {
+		var that = this;		
+		if (this.data) return;
+		var metadataurl = this.parent.Utils.options.get('metadata');
+		
+		this.parent.Utils.log('metadataurl is ' + metadataurl);
+		if (!metadataurl) return;
+		
+		$.getJSON(metadataurl, function(data) {
+			that.data = data;
+			that.parent.Utils.log('Successfully loaded metadata');
+			that.postLoad();
+		});
+	},
+	
+	"postLoad": function() {
+		if (!this.data) return;
+		this.readCookie();
+		this.prepareData();
+		this.discoReadSetup();
+		this.showallSetup();
+		this.searchboxSetup();		
+		this.filterCountrySetup();
+		this.getCountry();
+		
+	},
+	
+	"readCookie": function() {
+		if (this.parent.Utils.options.get('cookie', false)) {
+			var selected = this.parent.Utils.readCookie();
+			this.parent.Utils.log('COOKIE read ' + selected);
+			if(selected) this.setWeight(selected, -100);			
+		}
+	},
+	
+	
+	
+	/*
+	 * Set weight to a specific data entry.
+	 */
+	"setWeight": function(entityid, weight) {
+		for(i = 0; i < this.data.length; i++) {
+			if (this.data[i].entityid == entityid) {
+				if (isNaN(this.data[i].weight)) this.data[i].weight = 0;
+				this.data[i].weight += weight;
+				this.parent.Utils.log('COOKIE Setting weight to ' + this.data[i].weight);
+			}
+		}
+	},
+	
+	"discoResponse": function(entityid) {
+		this.setWeight(entityid, -100);
+		this.prepareData();
+	},
+	
+	"calculateDistance": function() {
+		for(i = 0; i < this.data.length; i++) {
+			if (this.data[i].geo) {
+				this.data[i].distance = this.parent.Utils.calculateDistance(
+					this.data[i].geo.lat, this.data[i].geo.lon, this.location[0], this.location[1]
+				);
+				
+				this.data[i].distanceweight = (2 * Math.log(this.data[i].distance + 1)) - 10;
+			}
+		}
+// 		for(i = 0; i < this.data.length; i++) {
+// 			if (this.data[i].distance) {
+// 				console.log('Distance for [' + this.data[i].title + '] ' + this.data[i].distance);
+// 			} else {
+// 				console.log('Distance for [' + this.data[i].title + '] NA');
+// 			}
+// 		}
+		this.showdistance = true;
+		this.prepareData();
+	},
+	
+	"locateMe": function() {
+		var that = this;
+		console.log('Locate me');
+		
+		if (navigator.geolocation) {
+			navigator.geolocation.getCurrentPosition( 
+	
+				function (position) {  
+	
+					// Did we get the position correctly?
+					// alert (position.coords.latitude);
+	
+					// To see everything available in the position.coords array:
+					// for (key in position.coords) {alert(key)}
+	
+					//console.log('You are here: lat ' + position.coords.latitude + ' lon ' + position.coords.longitude);
+					
+					that.ui.setLocationText('You are here: ' + position.coords.latitude + ', ' + position.coords.longitude + '. Nearby providers shown on top.');
+					
+					that.location = [position.coords.latitude, position.coords.longitude];
+					that.calculateDistance();
+					
+				}, 
+				// next function is the error callback
+				function (error) {
+					switch(error.code) {
+						case error.TIMEOUT:
+							that.ui.setLocationText('Timeout');
+							break;
+						case error.POSITION_UNAVAILABLE:
+							that.ui.setLocationText('Position unavailable');
+							break;
+						case error.PERMISSION_DENIED:
+							that.ui.setLocationText('Permission denied');
+							break;
+						case error.UNKNOWN_ERROR:
+							that.ui.setLocationText('Unknown error');
+							break;
+					}
+				}
+			);
+		} else {
+			console.log('Did not find navigator.geolocation');
+		}
+		
+	},
+	
+	
+	"prepareData": function(showall) {
+	
+		var showall = (showall ? true : false);
+	
+		this.parent.Utils.log('DiscoJuice.Control prepareData()');
+		
+		var hits, i, current, search;
+ 		var maxhits = 10;
+
+ 		var term = this.getTerm();
+ 		var categories = this.getCategories();
+
+		if (!this.data) return;
+		
+		/*
+		 * Sort data by weight...
+		 */
+		this.data.sort(function(a, b) {
+		
+			// Weight
+			var xa, xb;		
+			xa = (a.weight ? a.weight : 0);
+			xb = (b.weight ? b.weight : 0);
+			
+			if (a.distanceweight) xa += a.distanceweight;
+			if (b.distanceweight) xb += b.distanceweight;
+
+			return (xa-xb);
+		});
+		
+		if (term || categories) {
+			this.ui.popup.find("p.discojuice_showall").show();
+		} else {
+			this.ui.popup.find("p.discojuice_showall").hide();
+		}
+		if (categories) {
+			maxhits = 125;
+		}
+		if (showall) {
+			maxhits = 200;
+		}
+// 		if (term) {
+// 			maxhits = 10;
+// 		}
+	
+		this.ui.clearItems();
+		
+		hits = 0;
+		for(i = 0; i < this.data.length; i++) {
+			current = this.data[i];
+			if (!current.weight) current.weight = 0;
+			
+			if (term) {
+				search = this.parent.Utils.searchMatch(current,term);
+				if (search === false && current.weight > -50) continue;
+			} else {
+				search = null;
+			}
+			
+			if (categories && categories.country) {
+				if (!current.country) continue;
+				if (current.country !== '_all_' && categories.country !== current.country && current.weight > -50) continue;
+			}
+// 			if (categories && categories.type) {
+// 				if (!current.ctype && current.weight > -50) {
+// 	//				DiscoJuice.log(current);
+// 				continue;
+// 				}
+// 	//			DiscoJuice.log(current.title + ' category ' + current.ctype);
+// 				if (categories.type !== current.ctype && current.weight > -50) continue;
+// 			}
+
+			if (++hits > maxhits) { //  && showall !== true) {
+				this.ui.popup.find("p.discojuice_showall").show();
+				break;
+			}
+			
+	// 		DiscoJuice.log('Accept: ' + current.title);
+	
+			var countrydef = null;
+			if (current.country) {
+				var cname = (this.parent.Constants.Countries[current.country] ? this.parent.Constants.Countries[current.country] : current.country);
+				if (cname !== '_all_')  {
+					var cflag = (this.parent.Constants.Flags[current.country] ? this.parent.Constants.Flags[current.country] : undefined);
+					countrydef = {'country': cname, 'flag': cflag};
+				}
+			}
+	
+			var descr = current.descr || null;
+	
+			// addItem(item, {country, flag}, keywordmatch, distance)
+			
+			this.ui.addItem(current, countrydef, search, current.distance);
+
+
+		}
+		if (hits < maxhits) { //  && showall !== true) {
+//			this.ui.popup.find("p.discojuice_showall").hide();
+		}
+		
+		this.ui.refreshData();
+		
+		//log('Loaded ' + DiscoJuice.data.length + ' accounts to select from');
+	},
+	
+	"discoWrite": function(entityid) {
+		
+	},
+	
+	"selectProvider": function(entityid) {			
+		var callback;
+		var that = this;
+		var mustwait = that.discoWrite(entityid);
+		
+		if (this.parent.Utils.options.get('cookie', false)) {
+			this.parent.Utils.log('COOKIE write ' + entityid);
+			this.parent.Utils.createCookie(entityid);		
+		}
+
+		var entity = null;
+		for(i = 0; i < this.data.length; i++) {
+			if (this.data[i].entityid == entityid) {
+				entity = this.data[i];
+			}
+		}
+
+		console.log(entity);
+
+		callback = this.parent.Utils.options.get('callback');	
+		if (callback) {
+			if (mustwait) {
+				$.doTimeout(1000, function(){
+					callback(entity);
+				});
+				
+			} else {
+				callback(entity);
+			}
+			return;
+		}
+
+	},
+	
+	// Setup an iframe to read discovery cookies from other domains
+	"discoReadSetup": function() {
+		var settings = this.parent.Utils.options.get('disco');
+		if (!settings) return;
+	
+		var html = '';
+		var returnurl = settings.url;
+		var spentityid = settings.spentityid;
+		var stores = settings.stores;
+		var i;
+		var currentStore;
+		
+		if (!stores) return;
+		
+		for(i = 0; i < stores.length; i++) {
+			currentStore = stores[i];
+			
+			iframeurl = currentStore + '?entityID=' + escape(spentityid) + '&isPassive=true&returnIDParam=entityID&return=' + escape(returnurl);
+			
+			html = '<iframe src="' + iframeurl + '" style="display: none"></iframe>';
+			this.ui.addContent(html);
+		}
+	},
+
+
+	"discoWrite": function(e) {
+	
+		var settings = this.parent.Utils.options.get('disco');
+		if (!settings) return false;
+		if (!settings.writableStore) return false;
+	
+		var html = '';
+		var returnurl = settings.url;
+		var spentityid = settings.spentityid;
+		var writableStore = settings.writableStore;
+		
+		this.parent.Utils.log('DiscoJuice.Control discoWrite(' + e + ') to ' + writableStore);
+			
+		iframeurl = writableStore + '?entityID=' + escape(spentityid) + '&IdPentityID=' + 
+			escape(e) + '&isPassive=true&returnIDParam=bogus&return=' + escape(returnurl);
+			
+		html = '<iframe src="' + iframeurl + '" style="display: none"></iframe>';
+		this.ui.addContent(html);
+		return true;
+	},
+
+	"searchboxSetup": function() {
+		
+		var that = this;
+		/*
+			Initialise the search box.
+			*/
+			
+//		this.parent.Utils.log(this.ui.popup.find("input.discojuice_search"));
+		this.ui.popup.find("input.discojuice_search").autocomplete({
+			minLength: 0,
+			source: function( request, response ) {
+				var term = request.term;
+				if (term.length === 1) return;
+//				that.resetCategories();							
+				that.prepareData();
+			}
+		});
+	},
+
+	"filterCountrySetup": function (choice) {
+		var that = this;
+		var key;
+
+		var preset = this.parent.Utils.options.get('setCountry');
+		if (!choice && preset) {
+			if (filterOptions[preset]) choice = preset;
+		}
+	
+		var ftext = '<p class="discojuice_filter_country">Show providers in ' +
+			'<select class="discojuice_filterCountrySelect" name="filterCountrySelect">';
+		
+		if (choice) {
+			ftext += '<option value="all">all countries</option>';
+		} else {
+			ftext += '<option value="all" selected="selected">all countries</option>';
+		}
+		
+		for (key in this.parent.Constants.Countries) {
+			if (key === choice) {
+				ftext += '<option value="' + key + '" selected="selected">' + this.parent.Constants.Countries[key] + '</option>';
+			} else {
+				ftext += '<option value="' + key + '" >' + this.parent.Constants.Countries[key] + '</option>';
+			}
+		}
+		ftext += '</select></p>';
+		
+		this.ui.addFilter(ftext).find("select").change(function(event) {
+			event.preventDefault();
+			//$("input#ulxSearchField").val('')
+			//DiscoJuice.listResults();
+			that.resetTerm();
+			that.ui.focusSearch();
+			that.prepareData();
+		});
+	},
+	"setCountry": function(country) {
+		if (this.parent.Constants.Countries[country]) {
+			this.ui.popup.find('select.discojuice_filterCountrySelect').val(country);
+			this.prepareData();		
+		}
+	},
+	"setPosition": function(lat, lon) {
+		this.location = [lat, lon];
+		this.calculateDistance();
+	},
+	"getCountry": function() {
+		// If countryAPI is set, then lookup by IP.
+		var countryapi = this.parent.Utils.options.get('countryAPI', false);
+		var that = this;
+		
+		if (countryapi) {
+			
+			var countrycache = this.parent.Utils.readCookie('Country2');
+			var geocachelat = parseFloat(this.parent.Utils.readCookie('GeoLat'));
+			var geocachelon = parseFloat(this.parent.Utils.readCookie('GeoLon'));
+		
+			if (countrycache) {
+				
+				this.setCountry(countrycache);
+				this.parent.Utils.log('DiscoJuice getCountry() : Found country in cache: ' + countrycache);
+				
+				if (geocachelat && geocachelon) {
+					this.setPosition(geocachelat, geocachelon);
+				}
+				
+			} else {
+				
+				$.getJSON(countryapi, function(data) {
+		//			DiscoJuice.log(data);
+					if (data.status == 'ok' && data.country) {
+						that.parent.Utils.createCookie(data.country, 'Country2');
+						that.setCountry(data.country);
+						that.parent.Utils.log('DiscoJuice getCountry() : Country lookup succeeded: ' + data.country);
+						
+						if (data.geo && data.geo.lat && data.geo.lon) {
+							that.setPosition(data.geo.lat, data.geo.lon);
+							that.parent.Utils.createCookie(data.geo.lat, 'GeoLat');
+							that.parent.Utils.createCookie(data.geo.lon, 'GeoLon');
+						}
+						
+					} else {
+						that.parent.Utils.log('DiscoJuice getCountry() : Country lookup failed: ' + (data.error || ''));
+					}
+				});
+			
+			}
+		}
+	},
+	
+	"showallSetup": function() {
+		var that = this;
+		this.ui.popup.find("a.discojuice_showall").click(function(event) {
+			event.preventDefault();
+			that.resetCategories();
+			that.resetTerm();
+			that.prepareData(true);
+			that.ui.focusSearch();
+		});
+	},
+	
+	"resetCategories": function() {
+		//this.ui.popup.find("select.discojuice_filterTypeSelect").val()
+		this.ui.popup.find("select.discojuice_filterCountrySelect").val('all');
+	},
+	
+		
+	"getCategories": function () {
+		var filters = {};
+		var type, country;
+		
+		type = this.ui.popup.find("select.discojuice_filterTypeSelect").val();	
+		if (type && type !== 'all') {
+			filters.type = type;
+		}
+	
+		country = this.ui.popup.find("select.discojuice_filterCountrySelect").val();	
+		if (country && country !== 'all') {
+			filters.country = country;
+		}
+	//	DiscoJuice.log('filters is');
+//		this.parent.Utils.log(filters);
+		
+		return filters;
+	},
+	
+	"getTerm": function() {
+		return this.ui.popup.find("input.discojuice_search").val();
+	},
+	"resetTerm": function() {
+		//this.ui.popup.find("select.discojuice_filterTypeSelect").val()
+		this.ui.popup.find("input.discojuice_search").val('');
+	},
+
+
+};
\ No newline at end of file
diff --git a/modules/discojuice/www/discojuice/discojuice.js b/modules/discojuice/www/discojuice/discojuice.js
new file mode 100644
index 0000000000000000000000000000000000000000..78e77720cce51246b1f6fc8296648af30c589038
--- /dev/null
+++ b/modules/discojuice/www/discojuice/discojuice.js
@@ -0,0 +1,840 @@
+/*
+ * jQuery doTimeout: Like setTimeout, but better! - v1.0 - 3/3/2010
+ * http://benalman.com/projects/jquery-dotimeout-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($){var a={},c="doTimeout",d=Array.prototype.slice;$[c]=function(){return b.apply(window,[0].concat(d.call(arguments)))};$.fn[c]=function(){var f=d.call(arguments),e=b.apply(this,[c+f[0]].concat(f));return typeof f[0]==="number"||typeof f[1]==="number"?this:e};function b(l){var m=this,h,k={},g=l?$.fn:$,n=arguments,i=4,f=n[1],j=n[2],p=n[3];if(typeof f!=="string"){i--;f=l=0;j=n[1];p=n[2]}if(l){h=m.eq(0);h.data(l,k=h.data(l)||{})}else{if(f){k=a[f]||(a[f]={})}}k.id&&clearTimeout(k.id);delete k.id;function e(){if(l){h.removeData(l)}else{if(f){delete a[f]}}}function o(){k.id=setTimeout(function(){k.fn()},j)}if(p){k.fn=function(q){if(typeof p==="string"){p=g[p]}p.apply(m,d.call(n,i))===true&&!q?o():e()};o()}else{if(k.fn){j===undefined?e():k.fn(j===false);return true}else{e()}}}})(jQuery);
+
+
+// Making sure that console.log does not throw errors on Firefox + IE etc.
+if (typeof console == "undefined") var console = { log: function() {} };
+
+var DiscoJuice = {};
+
+
+/*
+ * Country codes available here http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
+ */
+DiscoJuice.Constants = {
+	"Countries": {
+
+		'CZ': 'Czech',
+		'DK': 'Denmark',
+		'FI': 'Finland',
+		'FR': 'France',
+		'DE': 'Germany',
+		'GR': 'Greece',
+		'HR': 'Croatia',
+		'IE': 'Ireland',
+		'IT': 'Italy',
+		'HU': 'Hungary',
+		'LU': 'Luxembourg',
+		'NL': 'Netherlands',
+		'NO': 'Norway',
+		'PL': 'Poland',
+		'PT': 'Portugal',
+		'SI': 'Slovenia',
+		'ES': 'Spain',
+		'SE': 'Sweden',
+		'CH': 'Switzerland',
+		'TR': 'Turkey',
+		'US': 'USA',
+		'XX': 'Experimental'
+	},
+	"Flags": {
+		'CZ': 'cz.png',
+		'DK': 'dk.png',
+		'FI': 'fi.png',
+		'FR': 'fr.png',
+		'DE': 'de.png',
+		'GR': 'gr.png',
+		'HR': 'hr.png',
+		'IE': 'ie.png',
+		'IT': 'it.png',
+		'HU': 'hu.png',
+		'LU': 'lu.png',
+		'NL': 'nl.png',
+		'NO': 'no.png',
+		'PL': 'pl.png',
+		'PT': 'pt.png',
+		'SI': 'si.png',
+		'ES': 'es.png',
+		'SE': 'se.png',
+		'CH': 'ch.png',
+		'TR': 'tr.png',
+		'US': 'us.png',
+	}
+};
+
+DiscoJuice.Utils = {
+	"log": function(string) {
+		console.log(string);
+		// opera.postError(string);
+	},
+	"options": function() {
+		var options;
+		return {
+			"get": function (key, def) {
+	//			DiscoJuice.log(options);
+	//			DiscoJuice.log('Getting [' + key + '] default [' + def + '] val [' + options[key] + ']');
+				if (!options) return def;
+				if (!options[key]) return def;
+				return options[key];
+			},
+			"set": function(opts) {
+				options = opts;
+			}
+		}
+	}(),
+	
+	/* Functions for setting, reading and erasing cookies */
+	"createCookie": function(value, type) {
+		var type = type || 'EntityID';
+		var name = '_DiscoJuice_' + type;
+		var days = 1825;
+		if (days) {
+			var date = new Date();
+			date.setTime(date.getTime()+(days*24*60*60*1000));
+			var expires = "; expires="+date.toGMTString();
+		}
+		else var expires = "";
+		document.cookie = name+"="+escape(value)+expires+"; path=/";
+	},
+	"readCookie": function(type) {
+		var type = type || 'EntityID';
+		var name = '_DiscoJuice_' + type;
+		var days = 1825;
+		var nameEQ = name + "=";
+		var ca = document.cookie.split(';');
+		for(var i=0;i < ca.length;i++) {
+			var c = ca[i];
+			while (c.charAt(0)==' ') c = c.substring(1,c.length);
+			if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length,c.length));
+		}
+		return null;
+	},
+	"eraseCookie": function (type) {
+		var type = type || 'EntityID';
+		var name = '_DiscoJuice_' + type;
+		DiscoJuice.createCookie(name,"",-1);
+	},
+	/* ------ ------ ------ ------ ------ */
+
+
+	/*
+	 * Performs a search 'term' against an entity.
+	 * If no match, return false.
+	 * If match return the keyword that matches.
+	 */
+	"searchMatch": function(item, term) {
+		if (item.title.toLowerCase().search(term.toLowerCase()) !== -1) return true;
+		var key, i, keyword;
+		
+		if (item.keywords) {
+			for(key in item.keywords) {
+				keyword = item.keywords[key];
+				for(i = 0; i < keyword.length; i++) {
+					if (keyword[i].toLowerCase().search(term.toLowerCase()) !== -1) return keyword[i];
+				}
+			}
+		}
+		return false;
+	}
+
+
+};
+
+
+
+
+/*
+	Plugin for JQuery.
+	*/
+(function($) {
+	$.fn.DiscoJuice = function(options) {
+		return this.each(function() {
+			DiscoJuice.Utils.options.set(options);
+			
+			DiscoJuice.Control.ui = DiscoJuice.UI;
+			DiscoJuice.UI.control = DiscoJuice.Control;
+			
+			DiscoJuice.UI.enable(this);
+
+		});
+	};
+})(jQuery);
+
+
+/*
+ * DiscoJuice
+ *  Work is based upon mock up made by the Kantara ULX group.
+ * 
+ * Author: Andreas Ã…kre Solberg, UNINETT, andreas.solberg@uninett.no
+ * Licence undecided. Awaiting alignment with the licence of the origin Kantara mockup.
+ */
+if (typeof DiscoJuice == "undefined") var DiscoJuice = {};
+
+
+
+
+
+DiscoJuice.UI = {
+	// Reference to the top level DiscoJuice object
+	"parent" : DiscoJuice,
+	
+	// The current data model
+	"control": null,
+	
+	// Reference to the 
+	"popup": null,
+	
+	// Entities / items
+	"resulthtml": 'Loading data…',
+
+	"show": function() {
+		this.control.load();
+	
+		this.popup.fadeIn("slow");
+		$("div#discojuice_overlay").show(); // fadeIn("fast");
+		this.focusSearch();
+	},
+	
+	"focusSearch": function() {
+		$("input.discojuice_search").focus();
+	},
+	"hide": function() {
+		$("div#discojuice_overlay").fadeOut("slow"); //fadeOut("fast");
+		this.popup.fadeOut("slow");
+	},
+	
+	"clearItems": function() {
+		this.resulthtml = '';
+	},
+	"addItem": function(current, substring, flag) {
+		var textLink = '';
+		var classes = '';
+		if (current.weight < -50) classes += 'hothit';
+
+		var iconpath = this.parent.Utils.options.get('discoPath', '') + 'logos/';
+		var flagpath = this.parent.Utils.options.get('discoPath', '') + 'flags/';
+		
+		var flagtext = '';
+		
+		if (flag) {
+			flagtext = '<img src="' + flagpath + flag + '" alt="' + escape(substring) + '" /> ';
+		}
+
+		if (current.icon) {
+			if (!substring) {
+				textLink += '<a href="" class="' + classes + '" rel="' + escape(current.entityid) + '" title="' + current.title + '">' + 
+					'<img class="logo" src="' + iconpath + current.icon + '" />' +
+					'<span class="title">' + current.title + '</span><hr style="clear: both; height: 0px; visibility:hidden" /></a>';
+			} else {
+				textLink += '<a href="" class="' + classes + '" rel="' + escape(current.entityid) + '" title="' + current.title + '">' + 
+					'<img class="logo" src="' + iconpath +  current.icon + '" />' +
+					'<span class="title">' + current.title + '</span>' + 
+					'<span class="substring">' + flagtext + substring + '</span>' +
+					'<hr style="clear: both; height: 0px; visibility:hidden" /></a>';
+						}
+		} else {
+			if (!substring) {
+				textLink += '<a href="" class="' + classes + '" rel="' + escape(current.entityid) + '"><span class="title">' + current.title + '</span></a>';		
+			} else {
+				textLink += '<a href="" class="' + classes + '" rel="' + escape(current.entityid) + '"><span class="title">' + current.title + '</span><span class="substring">' + flagtext + substring + '</span></a>';					
+			}
+	
+		}
+		this.resulthtml += textLink;
+	},
+	"refreshData": function() {
+		var that = this;
+		
+		this.parent.Utils.log('DiscoJuice.UI refreshData()');
+		
+		this.popup.find("div.scroller").empty().append(this.resulthtml);
+		this.popup.find("div.scroller a").each(function() {
+			var overthere = that;	// Overthere is a reference to the UI object
+			$(this).click(function(event) {
+				event.preventDefault();
+				overthere.hide();
+				var entityid = unescape($(this).attr('rel'));
+				overthere.control.selectProvider(entityid);
+			});
+		});
+	},
+
+	"enable": function(control) {
+		var html = 	'<div style="display: none" class="discojuice">' +
+			'<div class="top">' +
+				'<a href="#" class="discojuice_close">&nbsp;</a>' +
+				'<p class="discojuice_maintitle">' + this.parent.Utils.options.get('title', 'Title')  +  '</p>' +
+				'<p class="discojuice_subtitle">' + this.parent.Utils.options.get('subtitle', 'Subtitle') + '</p>' +
+			'</div>' +
+			'<div id="content" style="">' +
+				'<p class="moretext"></p>' +
+				'<div class="scroller"></div>' +
+			'</div>' +
+	
+			'<div id="search" class="" >' +
+				'<p><input type="search" class="discojuice_search" results=5 autosave="discojuice" name="searchfield" placeholder="or search for a provider, in example Univerity of Oslo" value="" /></p>' +
+				'<div class="discojuice_whatisthis" style="margin-top: 15px; font-size: 11px;">' +
+					'<a  href="#" class="textlink discojuice_what">Help me, I cannot find my provider</a>' +
+//					'<p class="discojuice_whattext">If your institusion is not connected to Foodle, you may either select to login one of the commercial providers such as Facebook or Google, or you may create a new account using any of the Guest providers, such as Feide OpenIdP.</p>' +
+					'<p class="discojuice_whattext">If your institusion is not connected to Foodle, you may create a new account using any of the Guest providers, such as <strong>OpenIdP (Guest users)</strong>.</p>' +
+				'</div>' +
+			'</div>' +
+			
+			'<div class="filters bottom">' +
+				'<p id="filterCountry"></p>' +
+				'<p id="filterType"></p>' +
+				'<p class="discojuice_showall" ><a class="discojuice_showall textlink" href="">Show all providers</a></p>' +
+				'<p style="margin 0px; text-align: right; color: #ccc; font-size: x-small">DiscoJuice &copy; 2011, UNINETT</p>' +
+			'</div>' +
+	
+// 			'<dd id="locatemediv">' +
+// 				'<img style="float: left; margin-right: 5px" src="ulx/images/target.png" alt="locate me..." />' +
+// 				'<p style="margin-top: 10px"><a id="locateme" href="">' +
+// 					'Locate me</a> to show providers nearby' +
+// 				'</p>' +
+// 				'<p style="color: #999" id="locatemeinfo"></p>' +
+// 				'<div style="clear: both" >' +
+// 				'</div>' +
+// 			'</dd>' +
+		'</div>';
+		var that = this;
+		
+		if (this.parent.Utils.options.get('overlay', true) === true) {
+			var overlay = '<div id="discojuice_overlay" style="display: none"></div>';
+			$(overlay).appendTo($("body"));
+		}
+		
+		this.popup = $(html).appendTo($("body"));
+
+
+		if (this.parent.Utils.options.get('always', false) === true) {
+			this.popup.find(".discojuice_close").hide();
+			this.show();
+		} else {
+			// Add a listener to the sign in button.
+			$(control).click(function(event) {
+				event.preventDefault();
+				that.show();
+				return false;
+			});
+		}
+
+
+		// Add listeners to the close button.
+		this.popup.find(".discojuice_close").click(function() {
+			that.hide();
+		});
+
+ 		// Add toogle for what is this text.
+		this.popup.find(".discojuice_what").click(function() {
+			that.popup.find(".discojuice_whatisthis").toggleClass("show");
+		});
+
+
+// 	
+// 		
+// 		// Add listener to show all providers button.
+// 		$("p#showall a").click(function(event){
+// 			event.preventDefault();
+// 			$("select#filterCountrySelect").val('all');	
+// 			DiscoJuice.listResults(true);
+// 			$("p#showall").hide();
+// 		});
+// 		$("p#showall").hide();
+// 		
+// 		//locateMe();
+// 	
+// 		// Setup filter by type.
+// 		if (DiscoJuice.options.get('location', false) && navigator.geolocation) {
+// 			$("#locateme").click(function(event) {
+// 				event.preventDefault();
+// 				DiscoJuice.locateMe();
+// 			});
+// 		} else {
+// 			$("dd#locatemediv").hide();
+// 		}	
+// 	
+// 	
+// 		// Setup filter by type.
+// 		if (DiscoJuice.options.get('type', false)) {
+// 			DiscoJuice.filterTypeSetup();
+// 		}
+// 	
+// 	
+// 		// Setup filter by country.
+// 		if (DiscoJuice.options.get('country', false)) {
+// 			DiscoJuice.filterCountrySetup();
+// 		}
+// 		
+// 		
+
+// 		
+// 			
+// 		if (DiscoJuice.options.get('location', false)) {
+// 			$("#locateme").click(function(event) {
+// 				event.preventDefault();
+// 				DiscoJuice.locateMe();
+// 			});
+// 		} else {
+// 			$("dd#locatemediv").hide();
+// 		}	
+// 		
+// 		/*
+// 			Initialise the search box.
+// 			*/
+// 		$("input#ulxSearchField").autocomplete({
+// 			minLength: 2,
+// 			source: function( request, response ) {
+// 				var term = request.term;
+// 				var result;
+// 				
+// 				$("select#filterCountrySelect").val('all');
+// 							
+// 	//			$("dd#content img.spinning").show();
+// 				DiscoJuice.listResults();
+// 	//			$("dd#content img.spinning").hide();
+// 			}
+// 		});
+// 	
+// 		// List the initial results...
+// 		// DiscoJuice.listResults();
+
+	
+	},
+	
+	"addContent": function(html) {
+		return $(html).appendTo($("body"));
+	},
+	"addFilter": function(html) {
+		return $(html).prependTo(this.popup.find('.filters'));
+//		this.popup.find('.filters').append(html).css('border', '1px solid red');
+	}
+};
+
+/*
+ * DiscoJuice
+ *  Work is based upon mock up made by the Kantara ULX group.
+ * 
+ * Author: Andreas Ã…kre Solberg, UNINETT, andreas.solberg@uninett.no
+ * Licence undecided. Awaiting alignment with the licence of the origin Kantara mockup.
+ */
+if (typeof DiscoJuice == "undefined") var DiscoJuice = {};
+
+
+DiscoJuice.Control = {
+	// Reference to the top level DiscoJuice object
+	"parent" : DiscoJuice,
+
+	// Reference to the UI object...
+	"ui": null,	
+	"data": null,
+	
+	// Set filter values to filter the result.
+	"filters": {},
+	
+	/*
+	 * Fetching JSON Metadata using AJAX.
+	 * Callback postLoad is called when data is returned.
+	 */
+	"load": function() {
+		var that = this;		
+		if (this.data) return;
+		var metadataurl = this.parent.Utils.options.get('metadata');
+		
+		this.parent.Utils.log('metadataurl is ' + metadataurl);
+		if (!metadataurl) return;
+		
+		$.getJSON(metadataurl, function(data) {
+			that.data = data;
+			that.parent.Utils.log('Successfully loaded metadata');
+			that.postLoad();
+		});
+	},
+	
+	"postLoad": function() {
+		if (!this.data) return;
+		this.readCookie();
+		this.prepareData();
+		this.discoReadSetup();
+		this.showallSetup();
+		this.searchboxSetup();		
+		this.filterCountrySetup();
+		this.getCountry();
+		
+	},
+	
+	"readCookie": function() {
+		if (this.parent.Utils.options.get('cookie', false)) {
+			var selected = this.parent.Utils.readCookie();
+			this.parent.Utils.log('COOKIE read ' + selected);
+			if(selected) this.setWeight(selected, -100);			
+		}
+	},
+	
+	
+	
+	/*
+	 * Set weight to a specific data entry.
+	 */
+	"setWeight": function(entityid, weight) {
+		for(i = 0; i < this.data.length; i++) {
+			if (this.data[i].entityid == entityid) {
+				if (isNaN(this.data[i].weight)) this.data[i].weight = 0;
+				this.data[i].weight += weight;
+				this.parent.Utils.log('COOKIE Setting weight to ' + this.data[i].weight);
+			}
+		}
+	},
+	
+	"discoResponse": function(entityid) {
+		this.setWeight(entityid, -100);
+		this.prepareData();
+	},
+	
+	
+	"prepareData": function(showall) {
+	
+		var showall = (showall ? true : false);
+	
+		this.parent.Utils.log('DiscoJuice.Control prepareData()');
+		
+		var hits, i, current, search;
+ 		var maxhits = 10;
+// 		
+ 		var term = this.getTerm();
+ 		var categories = this.getCategories();
+// 	
+// 		var textIcon = '';
+		
+		if (!this.data) return;
+		
+		/*
+		 * Sort data by weight...
+		 */
+		this.data.sort(function(a, b) {
+			var xa, xb;		
+			xa = (a.weight ? a.weight : 0);
+			xb = (b.weight ? b.weight : 0);
+			return (xa-xb);
+		});
+		
+		if (term || categories) {
+			this.ui.popup.find("p.discojuice_showall").show();
+		} else {
+			this.ui.popup.find("p.discojuice_showall").hide();
+		}
+		if (categories) {
+			maxhits = 25;
+		}
+		if (showall) {
+			maxhits = 200;
+		}
+// 		if (term) {
+// 			maxhits = 10;
+// 		}
+	
+		this.ui.clearItems();
+		
+		hits = 0;
+		for(i = 0; i < this.data.length; i++) {
+			current = this.data[i];
+			if (!current.weight) current.weight = 0;
+			
+			if (term) {
+				search = this.parent.Utils.searchMatch(current,term);
+				if (search === false && current.weight > -50) continue;
+			} else {
+				search = null;
+			}
+			
+			if (categories && categories.country) {
+				if (!current.country) continue;
+				if (current.country !== '_all_' && categories.country !== current.country && current.weight > -50) continue;
+			}
+// 			if (categories && categories.type) {
+// 				if (!current.ctype && current.weight > -50) {
+// 	//				DiscoJuice.log(current);
+// 				continue;
+// 				}
+// 	//			DiscoJuice.log(current.title + ' category ' + current.ctype);
+// 				if (categories.type !== current.ctype && current.weight > -50) continue;
+// 			}
+
+			if (++hits > maxhits) { //  && showall !== true) {
+				this.ui.popup.find("p.discojuice_showall").show();
+				break;
+			}
+			
+	// 		DiscoJuice.log('Accept: ' + current.title);
+	
+			if (search === true) {
+				if (current.descr) {
+					this.ui.addItem(current, current.descr);
+				} else if (current.country) {
+					var cname = (this.parent.Constants.Countries[current.country] ? this.parent.Constants.Countries[current.country] : current.country);
+					if (cname === '_all_') cname = '';
+					var cflag = (this.parent.Constants.Flags[current.country] ? this.parent.Constants.Flags[current.country] : undefined);
+					this.ui.addItem(current, cname, cflag);
+				} else {
+					this.ui.addItem(current);
+				}
+
+			} else if (search === null) {
+//				this.ui.addItem(current);
+
+				var cname = (this.parent.Constants.Countries[current.country] ? this.parent.Constants.Countries[current.country] : current.country);
+				if (cname === '_all_') cname = '';
+				var cflag = (this.parent.Constants.Flags[current.country] ? this.parent.Constants.Flags[current.country] : undefined);
+
+
+				if (current.descr) {
+					this.ui.addItem(current, current.descr, cflag);
+				} else if (!categories.country && current.country) {
+					this.ui.addItem(current, cname, cflag);
+				} else {
+					this.ui.addItem(current);
+				}
+
+			} else {
+				this.ui.addItem(current, search);
+			}
+
+		}
+		if (hits < maxhits) { //  && showall !== true) {
+//			this.ui.popup.find("p.discojuice_showall").hide();
+		}
+		
+		this.ui.refreshData();
+		
+		//log('Loaded ' + DiscoJuice.data.length + ' accounts to select from');
+	},
+	
+	"discoWrite": function(entityid) {
+		
+	},
+	
+	"selectProvider": function(entityid) {			
+		var callback;
+		var that = this;
+		var mustwait = that.discoWrite(entityid);
+		
+		if (this.parent.Utils.options.get('cookie', false)) {
+			this.parent.Utils.log('COOKIE write ' + entityid);
+			this.parent.Utils.createCookie(entityid);		
+		}
+
+		var entity = null;
+		for(i = 0; i < this.data.length; i++) {
+			if (this.data[i].entityid == entityid) {
+				entity = this.data[i];
+			}
+		}
+
+		console.log(entity);
+
+		callback = this.parent.Utils.options.get('callback');	
+		if (callback) {
+			if (mustwait) {
+				$.doTimeout(1000, function(){
+					callback(entity);
+				});
+				
+			} else {
+				callback(entity);
+			}
+			return;
+		}
+
+	},
+	
+	// Setup an iframe to read discovery cookies from other domains
+	"discoReadSetup": function() {
+		var settings = this.parent.Utils.options.get('disco');
+		if (!settings) return;
+	
+		var html = '';
+		var returnurl = settings.url;
+		var spentityid = settings.spentityid;
+		var stores = settings.stores;
+		var i;
+		var currentStore;
+		
+		if (!stores) return;
+		
+		for(i = 0; i < stores.length; i++) {
+			currentStore = stores[i];
+			
+			iframeurl = currentStore + '?entityID=' + escape(spentityid) + '&isPassive=true&returnIDParam=entityID&return=' + escape(returnurl);
+			
+			html = '<iframe src="' + iframeurl + '" style="display: none"></iframe>';
+			this.ui.addContent(html);
+		}
+	},
+
+
+	"discoWrite": function(e) {
+	
+		var settings = this.parent.Utils.options.get('disco');
+		if (!settings) return false;
+		if (!settings.writableStore) return false;
+	
+		var html = '';
+		var returnurl = settings.url;
+		var spentityid = settings.spentityid;
+		var writableStore = settings.writableStore;
+		
+		this.parent.Utils.log('DiscoJuice.Control discoWrite(' + e + ') to ' + writableStore);
+			
+		iframeurl = writableStore + '?entityID=' + escape(spentityid) + '&IdPentityID=' + 
+			escape(e) + '&isPassive=true&returnIDParam=bogus&return=' + escape(returnurl);
+			
+		html = '<iframe src="' + iframeurl + '" style="display: none"></iframe>';
+		this.ui.addContent(html);
+		return true;
+	},
+
+	"searchboxSetup": function() {
+		
+		var that = this;
+		/*
+			Initialise the search box.
+			*/
+			
+//		this.parent.Utils.log(this.ui.popup.find("input.discojuice_search"));
+		this.ui.popup.find("input.discojuice_search").autocomplete({
+			minLength: 0,
+			source: function( request, response ) {
+				var term = request.term;
+				if (term.length === 1) return;
+//				that.resetCategories();							
+				that.prepareData();
+			}
+		});
+	},
+
+	"filterCountrySetup": function (choice) {
+		var that = this;
+		var key;
+
+		var preset = this.parent.Utils.options.get('setCountry');
+		if (!choice && preset) {
+			if (filterOptions[preset]) choice = preset;
+		}
+	
+		var ftext = '<p class="discojuice_filter_country">Show providers in ' +
+			'<select class="discojuice_filterCountrySelect" name="filterCountrySelect">';
+		
+		if (choice) {
+			ftext += '<option value="all">all countries</option>';
+		} else {
+			ftext += '<option value="all" selected="selected">all countries</option>';
+		}
+		
+		for (key in this.parent.Constants.Countries) {
+			if (key === choice) {
+				ftext += '<option value="' + key + '" selected="selected">' + this.parent.Constants.Countries[key] + '</option>';
+			} else {
+				ftext += '<option value="' + key + '" >' + this.parent.Constants.Countries[key] + '</option>';
+			}
+		}
+		ftext += '</select></p>';
+		
+		this.ui.addFilter(ftext).find("select").change(function(event) {
+			event.preventDefault();
+			//$("input#ulxSearchField").val('')
+			//DiscoJuice.listResults();
+			that.resetTerm();
+			that.ui.focusSearch();
+			that.prepareData();
+		});
+	},
+	"setCountry": function(country) {
+		if (this.parent.Constants.Countries[country]) {
+			this.ui.popup.find('select.discojuice_filterCountrySelect').val(country);
+			this.prepareData();		
+		}
+	},
+	"getCountry": function() {
+		// If countryAPI is set, then lookup by IP.
+		var countryapi = this.parent.Utils.options.get('countryAPI', false);
+		var that = this;
+		
+		if (countryapi) {
+			
+			var countrycache = this.parent.Utils.readCookie('Country');
+		
+			if (countrycache) {
+				
+				this.setCountry(countrycache);
+				this.parent.Utils.log('DiscoJuice getCountry() : Found country in cache: ' + countrycache);
+				
+			} else {
+				
+				$.getJSON(countryapi, function(data) {
+		//			DiscoJuice.log(data);
+					if (data.status == 'ok' && data.country) {
+						that.parent.Utils.createCookie(data.country, 'Country');
+						that.setCountry(data.country);
+						that.parent.Utils.log('DiscoJuice getCountry() : Country lookup succeeded: ' + data.country);
+					} else {
+						that.parent.Utils.log('DiscoJuice getCountry() : Country lookup failed: ' + (data.error || ''));
+					}
+				});
+			
+			}
+		}
+	},
+	
+	"showallSetup": function() {
+		var that = this;
+		this.ui.popup.find("a.discojuice_showall").click(function(event) {
+			event.preventDefault();
+			that.resetCategories();
+			that.resetTerm();
+			that.prepareData(true);
+			that.ui.focusSearch();
+		});
+	},
+	
+	"resetCategories": function() {
+		//this.ui.popup.find("select.discojuice_filterTypeSelect").val()
+		this.ui.popup.find("select.discojuice_filterCountrySelect").val('all');
+	},
+	
+		
+	"getCategories": function () {
+		var filters = {};
+		var type, country;
+		
+		type = this.ui.popup.find("select.discojuice_filterTypeSelect").val();	
+		if (type && type !== 'all') {
+			filters.type = type;
+		}
+	
+		country = this.ui.popup.find("select.discojuice_filterCountrySelect").val();	
+		if (country && country !== 'all') {
+			filters.country = country;
+		}
+	//	DiscoJuice.log('filters is');
+//		this.parent.Utils.log(filters);
+		
+		return filters;
+	},
+	
+	"getTerm": function() {
+		return this.ui.popup.find("input.discojuice_search").val();
+	},
+	"resetTerm": function() {
+		//this.ui.popup.find("select.discojuice_filterTypeSelect").val()
+		this.ui.popup.find("input.discojuice_search").val('');
+	},
+
+
+};
\ No newline at end of file
diff --git a/modules/discojuice/www/discojuice/discojuice.misc.js b/modules/discojuice/www/discojuice/discojuice.misc.js
new file mode 100644
index 0000000000000000000000000000000000000000..15e47c357539c8bb51e74d2616ed966356f38642
--- /dev/null
+++ b/modules/discojuice/www/discojuice/discojuice.misc.js
@@ -0,0 +1,192 @@
+/*
+ * jQuery doTimeout: Like setTimeout, but better! - v1.0 - 3/3/2010
+ * http://benalman.com/projects/jquery-dotimeout-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($){var a={},c="doTimeout",d=Array.prototype.slice;$[c]=function(){return b.apply(window,[0].concat(d.call(arguments)))};$.fn[c]=function(){var f=d.call(arguments),e=b.apply(this,[c+f[0]].concat(f));return typeof f[0]==="number"||typeof f[1]==="number"?this:e};function b(l){var m=this,h,k={},g=l?$.fn:$,n=arguments,i=4,f=n[1],j=n[2],p=n[3];if(typeof f!=="string"){i--;f=l=0;j=n[1];p=n[2]}if(l){h=m.eq(0);h.data(l,k=h.data(l)||{})}else{if(f){k=a[f]||(a[f]={})}}k.id&&clearTimeout(k.id);delete k.id;function e(){if(l){h.removeData(l)}else{if(f){delete a[f]}}}function o(){k.id=setTimeout(function(){k.fn()},j)}if(p){k.fn=function(q){if(typeof p==="string"){p=g[p]}p.apply(m,d.call(n,i))===true&&!q?o():e()};o()}else{if(k.fn){j===undefined?e():k.fn(j===false);return true}else{e()}}}})(jQuery);
+
+
+// Making sure that console.log does not throw errors on Firefox + IE etc.
+if (typeof console == "undefined") var console = { log: function() {} };
+
+var DiscoJuice = {};
+
+
+/*
+ * Country codes available here http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
+ */
+DiscoJuice.Constants = {
+	"Countries": {
+		'CZ': 'Czech',
+		'DK': 'Denmark',
+		'FI': 'Finland',
+		'FR': 'France',
+		'DE': 'Germany',
+		'GR': 'Greece',
+		'HR': 'Croatia',
+		'IE': 'Ireland',
+		'IT': 'Italy',
+		'HU': 'Hungary',
+		'LU': 'Luxembourg',
+		'NL': 'Netherlands',
+		'NO': 'Norway',
+		'PL': 'Poland',
+		'PT': 'Portugal',
+		'SI': 'Slovenia',
+		'ES': 'Spain',
+		'SE': 'Sweden',
+		'CH': 'Switzerland',
+		'TR': 'Turkey',
+		'US': 'USA',
+		'GB': 'UK',
+		'XX': 'Experimental'
+	},
+	"Flags": {
+		'CZ': 'cz.png',
+		'DK': 'dk.png',
+		'FI': 'fi.png',
+		'FR': 'fr.png',
+		'DE': 'de.png',
+		'GR': 'gr.png',
+		'HR': 'hr.png',
+		'IE': 'ie.png',
+		'IT': 'it.png',
+		'HU': 'hu.png',
+		'LU': 'lu.png',
+		'NL': 'nl.png',
+		'NO': 'no.png',
+		'PL': 'pl.png',
+		'PT': 'pt.png',
+		'SI': 'si.png',
+		'ES': 'es.png',
+		'SE': 'se.png',
+		'CH': 'ch.png',
+		'TR': 'tr.png',
+		'GB': 'gb.png',
+		'US': 'us.png',
+	}
+};
+
+DiscoJuice.Utils = {
+	"log": function(string) {
+		console.log(string);
+		// opera.postError(string);
+	},
+	"options": function() {
+		var options;
+		return {
+			"get": function (key, def) {
+	//			DiscoJuice.log(options);
+	//			DiscoJuice.log('Getting [' + key + '] default [' + def + '] val [' + options[key] + ']');
+				if (!options) return def;
+				if (!options[key]) return def;
+				return options[key];
+			},
+			"set": function(opts) {
+				options = opts;
+			}
+		}
+	}(),
+	
+	/* Functions for setting, reading and erasing cookies */
+	"createCookie": function(value, type) {
+		var type = type || 'EntityID';
+		var name = '_DiscoJuice_' + type;
+		var days = 1825;
+		if (days) {
+			var date = new Date();
+			date.setTime(date.getTime()+(days*24*60*60*1000));
+			var expires = "; expires="+date.toGMTString();
+		}
+		else var expires = "";
+		document.cookie = name+"="+escape(value)+expires+"; path=/";
+	},
+	"readCookie": function(type) {
+		var type = type || 'EntityID';
+		var name = '_DiscoJuice_' + type;
+		var days = 1825;
+		var nameEQ = name + "=";
+		var ca = document.cookie.split(';');
+		for(var i=0;i < ca.length;i++) {
+			var c = ca[i];
+			while (c.charAt(0)==' ') c = c.substring(1,c.length);
+			if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length,c.length));
+		}
+		return null;
+	},
+	"eraseCookie": function (type) {
+		var type = type || 'EntityID';
+		var name = '_DiscoJuice_' + type;
+		DiscoJuice.createCookie(name,"",-1);
+	},
+	/* ------ ------ ------ ------ ------ */
+
+
+	/*
+	 * Performs a search 'term' against an entity.
+	 * If no match, return false.
+	 * If match return the keyword that matches.
+	 */
+	"searchMatch": function(item, term) {
+		if (item.title.toLowerCase().search(term.toLowerCase()) !== -1) return true;
+		var key, i, keyword;
+		
+		if (item.keywords) {
+			for(key in item.keywords) {
+				keyword = item.keywords[key];
+				for(i = 0; i < keyword.length; i++) {
+					if (keyword[i].toLowerCase().search(term.toLowerCase()) !== -1) return keyword[i];
+				}
+			}
+		}
+		return false;
+	},
+
+
+
+	// calculate distance between two locations
+	"calculateDistance": function (lat1, lon1, lat2, lon2) {
+		var R = 6371; // km
+		var dLat = this.toRad(lat2-lat1);
+		var dLon = this.toRad(lon2-lon1); 
+		var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
+				Math.cos(this.toRad(lat1)) * Math.cos(this.toRad(lat2)) * 
+				Math.sin(dLon/2) * Math.sin(dLon/2); 
+		var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
+		var d = R * c;
+		return d;
+	},
+
+	"toRad": function (deg) {
+		return deg * Math.PI/180;
+	}
+
+
+
+
+};
+
+
+
+
+/*
+	Plugin for JQuery.
+	*/
+(function($) {
+	$.fn.DiscoJuice = function(options) {
+		return this.each(function() {
+			DiscoJuice.Utils.options.set(options);
+			
+			DiscoJuice.Control.ui = DiscoJuice.UI;
+			DiscoJuice.UI.control = DiscoJuice.Control;
+			
+			DiscoJuice.UI.enable(this);
+
+		});
+	};
+})(jQuery);
+
+
diff --git a/modules/discojuice/www/discojuice/discojuice.ui.js b/modules/discojuice/www/discojuice/discojuice.ui.js
new file mode 100644
index 0000000000000000000000000000000000000000..03b85ad8b836e48897cd49321bef1c28247173af
--- /dev/null
+++ b/modules/discojuice/www/discojuice/discojuice.ui.js
@@ -0,0 +1,264 @@
+/*
+ * DiscoJuice
+ *  Work is based upon mock up made by the Kantara ULX group.
+ * 
+ * Author: Andreas Ã…kre Solberg, UNINETT, andreas.solberg@uninett.no
+ * Licence undecided. Awaiting alignment with the licence of the origin Kantara mockup.
+ */
+if (typeof DiscoJuice == "undefined") var DiscoJuice = {};
+
+
+
+
+
+DiscoJuice.UI = {
+	// Reference to the top level DiscoJuice object
+	"parent" : DiscoJuice,
+	
+	// The current data model
+	"control": null,
+	
+	// Reference to the 
+	"popup": null,
+	
+	
+	// Entities / items
+	"resulthtml": 'Loading data…',
+
+	"show": function() {
+		this.control.load();
+	
+		this.popup.fadeIn("slow");
+		$("div#discojuice_overlay").show(); // fadeIn("fast");
+		this.focusSearch();
+	},
+	
+	"focusSearch": function() {
+		$("input.discojuice_search").focus();
+	},
+	"hide": function() {
+		$("div#discojuice_overlay").fadeOut("slow"); //fadeOut("fast");
+		this.popup.fadeOut("slow");
+	},
+	
+	"clearItems": function() {
+		this.resulthtml = '';
+	},
+	
+	// addItem(item, description, {country, flag}, keywordmatch, distance)	 		
+	// addItem(current, current.descr || null, countrydef, search, current.distance);
+	"addItem": function(item, countrydef, search, distance) {
+		var textLink = '';
+		var classes = '';
+		if (item.weight < -50) classes += 'hothit';
+
+		var iconpath = this.parent.Utils.options.get('discoPath', '') + 'logos/';
+		var flagpath = this.parent.Utils.options.get('discoPath', '') + 'flags/';
+		var clear = false;
+		
+		var debugweight = this.parent.Utils.options.get('debug.weight', false);
+		
+// 		console.log('Dump item');
+// 		console.log(item);
+// 		console.log(countrydef);
+// 		console.log(search);
+// 		console.log(distance);
+		
+
+		
+		// Add icon element first
+		if (item.icon) {
+			textLink += '<img class="logo" src="' + iconpath + item.icon + '" />';
+			clear = true;
+		}
+		
+		// Add title
+		textLink += '<span class="title">' + item.title + '</span>';
+		
+		// Add matched search term
+		if (search && search !== true) {
+			textLink += '<span class="substring">– ' + search + '</span>';
+		} else if (item.descr) {
+			textLink += '<span class="substring">– ' +  item.descr + '</span>';
+		}
+		
+		
+
+		if (countrydef || distance) {
+				
+			textLink += '<span class="location">';
+			if (countrydef) {
+				textLink += '<span class="country">';
+				if (countrydef.flag) textLink += '<img src="' + flagpath + countrydef.flag + '" alt="' + escape(countrydef.country) + '" /> ';
+				textLink += countrydef.country + '</span>';
+			}
+	
+			
+			if (distance) {
+				textLink += '<span class="distance">' +  Math.round(distance) + ' km' + '</span>';
+			}
+			textLink += '</span>';
+// 			clear = true;
+		}
+		
+		if (debugweight) {
+			textLink += '<div class="debug">';
+			var w = 0;
+			if (item.weight) {
+				w += item.weight;
+			}
+			if (item.distanceweight) {
+				w += item.distanceweight;
+			}
+			textLink += 'Weight <strong style="color: #888">' + Math.round(100*w)/100 + '</strong> ';
+
+			if (item.weight) {
+				textLink += ' (base ' + item.weight + ')   ';
+			}
+			if (item.distanceweight) {
+				textLink += '(dist ' + Math.round(100*item.distanceweight)/100 + ')';
+			}
+
+
+			textLink += '</div>';
+		}
+
+		
+		// Add a clear bar. 
+		if (clear) {
+			textLink += '<hr style="clear: both; height: 0px; visibility:hidden" />';
+		}
+		
+		// Wrap in A element
+		textLink = '<a href="" class="' + classes + '" rel="' + escape(item.entityid) + '" title="' + escape(item.title) + '">' + 
+			textLink + '</a>';
+
+
+		this.resulthtml += textLink;
+	},
+	"refreshData": function() {
+		var that = this;
+		
+		this.parent.Utils.log('DiscoJuice.UI refreshData()');
+		
+		this.popup.find("div.scroller").empty().append(this.resulthtml);
+		this.popup.find("div.scroller a").each(function() {
+			var overthere = that;	// Overthere is a reference to the UI object
+			$(this).click(function(event) {
+				event.preventDefault();
+				overthere.hide();
+				var entityid = unescape($(this).attr('rel'));
+				overthere.control.selectProvider(entityid);
+			});
+		});
+	},
+
+	"enable": function(control) {
+		var imgpath = this.parent.Utils.options.get('discoPath', '') + 'images/';
+	
+		var html = 	'<div style="display: none" class="discojuice">' +
+			'<div class="top">' +
+				'<a href="#" class="discojuice_close">&nbsp;</a>' +
+				'<p class="discojuice_maintitle">' + this.parent.Utils.options.get('title', 'Title')  +  '</p>' +
+				'<p class="discojuice_subtitle">' + this.parent.Utils.options.get('subtitle', 'Subtitle') + '</p>' +
+			'</div>' +
+			
+			'<div id="content" style="">' +
+				'<p class="moretext"></p>' +
+				'<div class="scroller">' +
+					'<div class="loadingData" ><img src="' + imgpath + 'spinning.gif" /> Loading list of providers...</div>' +
+				'</div>' +
+			'</div>' +
+	
+			'<div id="search" class="" >' +
+				'<p><input type="search" class="discojuice_search" results=5 autosave="discojuice" name="searchfield" placeholder="or search for a provider, in example Univerity of Oslo" value="" /></p>' +
+				'<div class="discojuice_whatisthis" style="margin-top: 15px; font-size: 11px;">' +
+					'<a  href="#" class="textlink discojuice_what">Help me, I cannot find my provider</a>' +
+//					'<p class="discojuice_whattext">If your institusion is not connected to Foodle, you may either select to login one of the commercial providers such as Facebook or Google, or you may create a new account using any of the Guest providers, such as Feide OpenIdP.</p>' +
+					'<p class="discojuice_whattext">If your institusion is not connected to Foodle, you may create a new account using any of the Guest providers, such as <strong>OpenIdP (Guest users)</strong>.</p>' +
+				'</div>' +
+			'</div>' +
+			
+			'<div id="locatemediv">' +
+				'<div class="locatemebefore">' +
+					'<p style="margin-top: 10px"><a id="locateme" href="">' +
+						'<img style="float: left; margin-right: 5px; margin-top: -10px" src="' + imgpath + 'target.png" alt="locate me..." />' +
+						'Locate me more accurately using HTML5 Geo-Location</a>' +
+					'</p>' +
+					'<p style="color: #999" id="locatemeinfo"></p>' +
+				'</div>' +
+				'<div style="clear: both" class="locatemeafter"></div>' +
+			'</div>' +
+			
+			'<div class="filters bottom">' +
+// 				'<p id="filterCountry"></p>' +
+// 				'<p id="filterType"></p>' +
+				'<p class="discojuice_showall" ><a class="discojuice_showall textlink" href="">Show all providers</a></p>' +
+				'<p style="margin 0px; text-align: right; color: #ccc; font-size: x-small">DiscoJuice &copy; 2011, UNINETT</p>' +
+			'</div>' +
+	
+
+		'</div>';
+		var that = this;
+		
+		if (this.parent.Utils.options.get('overlay', true) === true) {
+			var overlay = '<div id="discojuice_overlay" style="display: none"></div>';
+			$(overlay).appendTo($("body"));
+		}
+		
+		this.popup = $(html).appendTo($("body"));
+
+
+		if (this.parent.Utils.options.get('always', false) === true) {
+			this.popup.find(".discojuice_close").hide();
+			this.show();
+		} else {
+			// Add a listener to the sign in button.
+			$(control).click(function(event) {
+				event.preventDefault();
+				that.show();
+				return false;
+			});
+		}
+
+
+		// Add listeners to the close button.
+		this.popup.find(".discojuice_close").click(function() {
+			that.hide();
+		});
+
+ 		// Add toogle for what is this text.
+		this.popup.find(".discojuice_what").click(function() {
+			that.popup.find(".discojuice_whatisthis").toggleClass("show");
+		});
+
+
+		if (this.parent.Utils.options.get('location', false) && navigator.geolocation) {
+			var that = this;
+			$("#locateme").click(function(event) {
+				var imgpath = that.parent.Utils.options.get('discoPath', '') + 'images/';
+				event.preventDefault();
+				$("div.locatemebefore").hide();
+				$("div.locatemeafter").html('<div class="loadingData" ><img src="' + imgpath + 'spinning.gif" /> Getting your location...</div>');
+				that.control.locateMe();
+			});
+		} else {
+			$("dd#locatemediv").hide();
+		}	
+
+	
+	},
+	
+	"setLocationText": function(html) {
+		return $("div.locatemeafter").html(html);
+	},
+	
+	"addContent": function(html) {
+		return $(html).appendTo($("body"));
+	},
+	"addFilter": function(html) {
+		return $(html).prependTo(this.popup.find('.filters'));
+//		this.popup.find('.filters').append(html).css('border', '1px solid red');
+	}
+};
+
diff --git a/modules/discojuice/www/discojuice/discojuiceDiscoveryResponse.html b/modules/discojuice/www/discojuice/discojuiceDiscoveryResponse.html
new file mode 100644
index 0000000000000000000000000000000000000000..e525ad2c4fada983af92989158d2ff292910f113
--- /dev/null
+++ b/modules/discojuice/www/discojuice/discojuiceDiscoveryResponse.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+	<title>IdP Discovery Response Receiver</title>
+
+	<script type="text/javascript">
+
+function receive() {
+	
+	var urlParams = {};
+	(function () {
+		var e,
+			a = /\+/g,  // Regex for replacing addition symbol with a space
+			r = /([^&;=]+)=?([^&;]*)/g,
+			d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
+			q = window.location.search.substring(1);
+
+		while (e = r.exec(q))
+		   urlParams[d(e[1])] = d(e[2]);
+	})();
+	
+	if (urlParams.entityID) {
+		window.parent.DiscoJuice.Utils.log('Response from discovery service: ' + urlParams.entityID);
+		window.parent.DiscoJuice.Control.discoResponse(urlParams.entityID);
+	} 
+
+}
+	</script>
+</head>
+
+<body onload="receive();">
+
+</body>
+</html>
diff --git a/modules/discojuice/www/discojuice/flags/ad.png b/modules/discojuice/www/discojuice/flags/ad.png
new file mode 100644
index 0000000000000000000000000000000000000000..625ca84f9ec596848d4b967b5556fda897ca7183
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ad.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ae.png b/modules/discojuice/www/discojuice/flags/ae.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef3a1ecfccdfe9cf7e9fc086a2c6c010f7977ed8
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ae.png differ
diff --git a/modules/discojuice/www/discojuice/flags/af.png b/modules/discojuice/www/discojuice/flags/af.png
new file mode 100644
index 0000000000000000000000000000000000000000..a4742e299f517aee16c248e40eccad39ac34c9e9
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/af.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ag.png b/modules/discojuice/www/discojuice/flags/ag.png
new file mode 100644
index 0000000000000000000000000000000000000000..556d5504dc28d89be22ec1883f12e8d8c07d5f41
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ag.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ai.png b/modules/discojuice/www/discojuice/flags/ai.png
new file mode 100644
index 0000000000000000000000000000000000000000..74ed29d92616c86757d3c0ec04378301c8f591b4
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ai.png differ
diff --git a/modules/discojuice/www/discojuice/flags/al.png b/modules/discojuice/www/discojuice/flags/al.png
new file mode 100644
index 0000000000000000000000000000000000000000..92354cb6e257be2cade71cb825027ce8d9efc06d
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/al.png differ
diff --git a/modules/discojuice/www/discojuice/flags/am.png b/modules/discojuice/www/discojuice/flags/am.png
new file mode 100644
index 0000000000000000000000000000000000000000..344a2a86c43d52f490455d0fe582da93e07175b2
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/am.png differ
diff --git a/modules/discojuice/www/discojuice/flags/an.png b/modules/discojuice/www/discojuice/flags/an.png
new file mode 100644
index 0000000000000000000000000000000000000000..633e4b89fded98256a8d142dfb60a8058f7e6b67
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/an.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ao.png b/modules/discojuice/www/discojuice/flags/ao.png
new file mode 100644
index 0000000000000000000000000000000000000000..bcbd1d6d40d8665ed9b1001c490ce48befabb258
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ao.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ar.png b/modules/discojuice/www/discojuice/flags/ar.png
new file mode 100644
index 0000000000000000000000000000000000000000..e5ef8f1fcddb9fa0b89c353430e9640c122445cc
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ar.png differ
diff --git a/modules/discojuice/www/discojuice/flags/as.png b/modules/discojuice/www/discojuice/flags/as.png
new file mode 100644
index 0000000000000000000000000000000000000000..32f30e4ce4eedd22d4f09c4f3a46c52dd064f113
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/as.png differ
diff --git a/modules/discojuice/www/discojuice/flags/at.png b/modules/discojuice/www/discojuice/flags/at.png
new file mode 100644
index 0000000000000000000000000000000000000000..0f15f34f2883c4b4360fc871d7105309f1533282
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/at.png differ
diff --git a/modules/discojuice/www/discojuice/flags/au.png b/modules/discojuice/www/discojuice/flags/au.png
new file mode 100644
index 0000000000000000000000000000000000000000..a01389a745d51e16b01a9dc0a707572564a17625
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/au.png differ
diff --git a/modules/discojuice/www/discojuice/flags/aw.png b/modules/discojuice/www/discojuice/flags/aw.png
new file mode 100644
index 0000000000000000000000000000000000000000..a3579c2d621069c8128d7cf16440d5e45a3ab3cd
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/aw.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ax.png b/modules/discojuice/www/discojuice/flags/ax.png
new file mode 100644
index 0000000000000000000000000000000000000000..1eea80a7b739bea4a249dd10a3457010525f60da
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ax.png differ
diff --git a/modules/discojuice/www/discojuice/flags/az.png b/modules/discojuice/www/discojuice/flags/az.png
new file mode 100644
index 0000000000000000000000000000000000000000..4ee9fe5ced2610a60ff99e6cc4fbe80d7d53c624
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/az.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ba.png b/modules/discojuice/www/discojuice/flags/ba.png
new file mode 100644
index 0000000000000000000000000000000000000000..c77499249c9c54700885c84465bc9039a433a2c9
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ba.png differ
diff --git a/modules/discojuice/www/discojuice/flags/bb.png b/modules/discojuice/www/discojuice/flags/bb.png
new file mode 100644
index 0000000000000000000000000000000000000000..0df19c71d20d7fdc06e1cba01028983439b2bdae
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/bb.png differ
diff --git a/modules/discojuice/www/discojuice/flags/bd.png b/modules/discojuice/www/discojuice/flags/bd.png
new file mode 100644
index 0000000000000000000000000000000000000000..076a8bf87c0cedcce47099c6b74b59f2c9d1dbce
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/bd.png differ
diff --git a/modules/discojuice/www/discojuice/flags/be.png b/modules/discojuice/www/discojuice/flags/be.png
new file mode 100644
index 0000000000000000000000000000000000000000..d86ebc800a673e6cf357c33d00edef93e2df0787
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/be.png differ
diff --git a/modules/discojuice/www/discojuice/flags/bf.png b/modules/discojuice/www/discojuice/flags/bf.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab5ce8fe1237a18d6809a5570024eb108cb14a3e
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/bf.png differ
diff --git a/modules/discojuice/www/discojuice/flags/bg.png b/modules/discojuice/www/discojuice/flags/bg.png
new file mode 100644
index 0000000000000000000000000000000000000000..0469f0607dc76eb60327c29e04d9585f3ef25dc7
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/bg.png differ
diff --git a/modules/discojuice/www/discojuice/flags/bh.png b/modules/discojuice/www/discojuice/flags/bh.png
new file mode 100644
index 0000000000000000000000000000000000000000..ea8ce68761bbd8ee06f80c487c24d4493abfb52d
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/bh.png differ
diff --git a/modules/discojuice/www/discojuice/flags/bi.png b/modules/discojuice/www/discojuice/flags/bi.png
new file mode 100644
index 0000000000000000000000000000000000000000..5cc2e30cfc47452d5bef949628e955a522d59e50
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/bi.png differ
diff --git a/modules/discojuice/www/discojuice/flags/bj.png b/modules/discojuice/www/discojuice/flags/bj.png
new file mode 100644
index 0000000000000000000000000000000000000000..1cc8b458a4ca83a29117c1ab9e6cd1e60a717db2
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/bj.png differ
diff --git a/modules/discojuice/www/discojuice/flags/bm.png b/modules/discojuice/www/discojuice/flags/bm.png
new file mode 100644
index 0000000000000000000000000000000000000000..c0c7aead8dfdeb942752d40cead84182c94f3c94
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/bm.png differ
diff --git a/modules/discojuice/www/discojuice/flags/bn.png b/modules/discojuice/www/discojuice/flags/bn.png
new file mode 100644
index 0000000000000000000000000000000000000000..8fb09849e9b5712e9cdd8a2c25035da201535cf5
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/bn.png differ
diff --git a/modules/discojuice/www/discojuice/flags/bo.png b/modules/discojuice/www/discojuice/flags/bo.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce7ba522aa7e948d581478432643c230eed1a658
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/bo.png differ
diff --git a/modules/discojuice/www/discojuice/flags/br.png b/modules/discojuice/www/discojuice/flags/br.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b1a5538b264a295021f4f717d4299bb8ed98d98
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/br.png differ
diff --git a/modules/discojuice/www/discojuice/flags/bs.png b/modules/discojuice/www/discojuice/flags/bs.png
new file mode 100644
index 0000000000000000000000000000000000000000..639fa6cfa9c4792d03fb09fa197faf7ae549bfdf
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/bs.png differ
diff --git a/modules/discojuice/www/discojuice/flags/bt.png b/modules/discojuice/www/discojuice/flags/bt.png
new file mode 100644
index 0000000000000000000000000000000000000000..1d512dfff42db1ea3e7c59fa7dd69319e789ee12
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/bt.png differ
diff --git a/modules/discojuice/www/discojuice/flags/bv.png b/modules/discojuice/www/discojuice/flags/bv.png
new file mode 100644
index 0000000000000000000000000000000000000000..160b6b5b79db15e623fa55e5774e5d160b933180
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/bv.png differ
diff --git a/modules/discojuice/www/discojuice/flags/bw.png b/modules/discojuice/www/discojuice/flags/bw.png
new file mode 100644
index 0000000000000000000000000000000000000000..fcb103941523e24b03726fbbd88ef213dd476577
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/bw.png differ
diff --git a/modules/discojuice/www/discojuice/flags/by.png b/modules/discojuice/www/discojuice/flags/by.png
new file mode 100644
index 0000000000000000000000000000000000000000..504774ec10efa9fdbedf75295ac88848f23a3908
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/by.png differ
diff --git a/modules/discojuice/www/discojuice/flags/bz.png b/modules/discojuice/www/discojuice/flags/bz.png
new file mode 100644
index 0000000000000000000000000000000000000000..be63ee1c623af897a81d80c8e60506d2c9bc0a43
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/bz.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ca.png b/modules/discojuice/www/discojuice/flags/ca.png
new file mode 100644
index 0000000000000000000000000000000000000000..1f204193ae58c87efdd88d46700ccb48c2e1d0d8
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ca.png differ
diff --git a/modules/discojuice/www/discojuice/flags/catalonia.png b/modules/discojuice/www/discojuice/flags/catalonia.png
new file mode 100644
index 0000000000000000000000000000000000000000..5041e308e3a0f57f5ef9651b574d49d30e5dc635
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/catalonia.png differ
diff --git a/modules/discojuice/www/discojuice/flags/cc.png b/modules/discojuice/www/discojuice/flags/cc.png
new file mode 100644
index 0000000000000000000000000000000000000000..aed3d3b4e4467c33717ab3e2f61596e06113f9bb
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/cc.png differ
diff --git a/modules/discojuice/www/discojuice/flags/cd.png b/modules/discojuice/www/discojuice/flags/cd.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e489424884d2ec9e429f70d69af00edf242a077
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/cd.png differ
diff --git a/modules/discojuice/www/discojuice/flags/cf.png b/modules/discojuice/www/discojuice/flags/cf.png
new file mode 100644
index 0000000000000000000000000000000000000000..da687bdce928e32e4a2bcbed2f3d2d97f42d340c
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/cf.png differ
diff --git a/modules/discojuice/www/discojuice/flags/cg.png b/modules/discojuice/www/discojuice/flags/cg.png
new file mode 100644
index 0000000000000000000000000000000000000000..a859792ef32a02b41503b5ab5f216191af397e02
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/cg.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ch.png b/modules/discojuice/www/discojuice/flags/ch.png
new file mode 100644
index 0000000000000000000000000000000000000000..242ec01aaf5ad351cb978a4eb650ad801a438b09
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ch.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ci.png b/modules/discojuice/www/discojuice/flags/ci.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f2c62eb4d7dc192036af889b593b782dbe8abac
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ci.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ck.png b/modules/discojuice/www/discojuice/flags/ck.png
new file mode 100644
index 0000000000000000000000000000000000000000..746d3d6f758858c749523ac27c05c85930d10667
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ck.png differ
diff --git a/modules/discojuice/www/discojuice/flags/cl.png b/modules/discojuice/www/discojuice/flags/cl.png
new file mode 100644
index 0000000000000000000000000000000000000000..29c6d61bd4f16075228cdc6e526aafc3443029d7
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/cl.png differ
diff --git a/modules/discojuice/www/discojuice/flags/cm.png b/modules/discojuice/www/discojuice/flags/cm.png
new file mode 100644
index 0000000000000000000000000000000000000000..f65c5bd5a79e2885060515be55f03a3ea4a15d95
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/cm.png differ
diff --git a/modules/discojuice/www/discojuice/flags/cn.png b/modules/discojuice/www/discojuice/flags/cn.png
new file mode 100644
index 0000000000000000000000000000000000000000..89144146219e6fbec7eaa89e1bf4b073d299569e
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/cn.png differ
diff --git a/modules/discojuice/www/discojuice/flags/co.png b/modules/discojuice/www/discojuice/flags/co.png
new file mode 100644
index 0000000000000000000000000000000000000000..a118ff4a146fbd40ce865ea3c93b9d20ab3f14a0
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/co.png differ
diff --git a/modules/discojuice/www/discojuice/flags/cr.png b/modules/discojuice/www/discojuice/flags/cr.png
new file mode 100644
index 0000000000000000000000000000000000000000..c7a3731794031667843f05ad3897a85c7c434877
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/cr.png differ
diff --git a/modules/discojuice/www/discojuice/flags/cs.png b/modules/discojuice/www/discojuice/flags/cs.png
new file mode 100644
index 0000000000000000000000000000000000000000..8254790ca72f98d9e79d94bdfcb8839b1fd434ad
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/cs.png differ
diff --git a/modules/discojuice/www/discojuice/flags/cu.png b/modules/discojuice/www/discojuice/flags/cu.png
new file mode 100644
index 0000000000000000000000000000000000000000..083f1d611c94a535e02954711486da244ec3c5d0
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/cu.png differ
diff --git a/modules/discojuice/www/discojuice/flags/cv.png b/modules/discojuice/www/discojuice/flags/cv.png
new file mode 100644
index 0000000000000000000000000000000000000000..a63f7eaf63c028615b2ded5878b5e14a7dbe962f
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/cv.png differ
diff --git a/modules/discojuice/www/discojuice/flags/cx.png b/modules/discojuice/www/discojuice/flags/cx.png
new file mode 100644
index 0000000000000000000000000000000000000000..48e31adbf4cc0074f40e95f87c1f103b91fe270e
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/cx.png differ
diff --git a/modules/discojuice/www/discojuice/flags/cy.png b/modules/discojuice/www/discojuice/flags/cy.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b1ad6c07886e6963db439afff55d7056e3c5cd4
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/cy.png differ
diff --git a/modules/discojuice/www/discojuice/flags/cz.png b/modules/discojuice/www/discojuice/flags/cz.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8403dd21fd15f46d501a766a7a97733462f3b22
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/cz.png differ
diff --git a/modules/discojuice/www/discojuice/flags/de.png b/modules/discojuice/www/discojuice/flags/de.png
new file mode 100644
index 0000000000000000000000000000000000000000..ac4a977362738ca7daa20784717f10f9617136b4
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/de.png differ
diff --git a/modules/discojuice/www/discojuice/flags/dj.png b/modules/discojuice/www/discojuice/flags/dj.png
new file mode 100644
index 0000000000000000000000000000000000000000..582af364f8a9cb680628beae33cc9a2dbe0559f4
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/dj.png differ
diff --git a/modules/discojuice/www/discojuice/flags/dk.png b/modules/discojuice/www/discojuice/flags/dk.png
new file mode 100644
index 0000000000000000000000000000000000000000..e2993d3c59ae78855f777c158a6aae6c1fb5c843
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/dk.png differ
diff --git a/modules/discojuice/www/discojuice/flags/dm.png b/modules/discojuice/www/discojuice/flags/dm.png
new file mode 100644
index 0000000000000000000000000000000000000000..5fbffcba3cb0f20016c9717614127b89db4c9664
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/dm.png differ
diff --git a/modules/discojuice/www/discojuice/flags/do.png b/modules/discojuice/www/discojuice/flags/do.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a04932d87963bcb063497b1179cee12f407e18a
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/do.png differ
diff --git a/modules/discojuice/www/discojuice/flags/dz.png b/modules/discojuice/www/discojuice/flags/dz.png
new file mode 100644
index 0000000000000000000000000000000000000000..335c2391d39090d6b40a409870a74326665589c2
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/dz.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ec.png b/modules/discojuice/www/discojuice/flags/ec.png
new file mode 100644
index 0000000000000000000000000000000000000000..0caa0b1e785295d003869330fc4e073dce07e7f6
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ec.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ee.png b/modules/discojuice/www/discojuice/flags/ee.png
new file mode 100644
index 0000000000000000000000000000000000000000..0c82efb7dde983e6ab0f6bebb3b2eb326ce3874a
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ee.png differ
diff --git a/modules/discojuice/www/discojuice/flags/eg.png b/modules/discojuice/www/discojuice/flags/eg.png
new file mode 100644
index 0000000000000000000000000000000000000000..8a3f7a10b5757b006948ea4436fb242d02dc9a4e
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/eg.png differ
diff --git a/modules/discojuice/www/discojuice/flags/eh.png b/modules/discojuice/www/discojuice/flags/eh.png
new file mode 100644
index 0000000000000000000000000000000000000000..90a1195b47a6f12c70d06cb0bd0e4ea88d7bfb03
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/eh.png differ
diff --git a/modules/discojuice/www/discojuice/flags/england.png b/modules/discojuice/www/discojuice/flags/england.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a7311d5617df952329b1e293fdfddc64e95ca72
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/england.png differ
diff --git a/modules/discojuice/www/discojuice/flags/er.png b/modules/discojuice/www/discojuice/flags/er.png
new file mode 100644
index 0000000000000000000000000000000000000000..13065ae99ccace42df97be8b594049f9f40dcc4f
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/er.png differ
diff --git a/modules/discojuice/www/discojuice/flags/es.png b/modules/discojuice/www/discojuice/flags/es.png
new file mode 100644
index 0000000000000000000000000000000000000000..c2de2d7111e3cb59cf6511dd2ab045e824bdb43e
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/es.png differ
diff --git a/modules/discojuice/www/discojuice/flags/et.png b/modules/discojuice/www/discojuice/flags/et.png
new file mode 100644
index 0000000000000000000000000000000000000000..2e893fa056c3d27448b6b9b6579486439ac6e490
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/et.png differ
diff --git a/modules/discojuice/www/discojuice/flags/europeanunion.png b/modules/discojuice/www/discojuice/flags/europeanunion.png
new file mode 100644
index 0000000000000000000000000000000000000000..d6d87115808a2a43c079fb8e1b33134ffb523c79
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/europeanunion.png differ
diff --git a/modules/discojuice/www/discojuice/flags/fam.png b/modules/discojuice/www/discojuice/flags/fam.png
new file mode 100644
index 0000000000000000000000000000000000000000..cf50c759eb28b5962720aa1ce0617a29003e477d
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/fam.png differ
diff --git a/modules/discojuice/www/discojuice/flags/fi.png b/modules/discojuice/www/discojuice/flags/fi.png
new file mode 100644
index 0000000000000000000000000000000000000000..14ec091b802cf24ebd9f8825f81cd2f6e360b46d
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/fi.png differ
diff --git a/modules/discojuice/www/discojuice/flags/fj.png b/modules/discojuice/www/discojuice/flags/fj.png
new file mode 100644
index 0000000000000000000000000000000000000000..cee998892eb316c3293ef2d52afec9218bdbbc03
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/fj.png differ
diff --git a/modules/discojuice/www/discojuice/flags/fk.png b/modules/discojuice/www/discojuice/flags/fk.png
new file mode 100644
index 0000000000000000000000000000000000000000..ceaeb27decb3f138ab5b385491c092557b79da92
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/fk.png differ
diff --git a/modules/discojuice/www/discojuice/flags/fm.png b/modules/discojuice/www/discojuice/flags/fm.png
new file mode 100644
index 0000000000000000000000000000000000000000..066bb247389893b9ac33893fe346732ef394d8d6
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/fm.png differ
diff --git a/modules/discojuice/www/discojuice/flags/fo.png b/modules/discojuice/www/discojuice/flags/fo.png
new file mode 100644
index 0000000000000000000000000000000000000000..cbceb809eb9b96d5d8ae231a53c4f4a98f0fcba9
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/fo.png differ
diff --git a/modules/discojuice/www/discojuice/flags/fr.png b/modules/discojuice/www/discojuice/flags/fr.png
new file mode 100644
index 0000000000000000000000000000000000000000..8332c4ec23c853944c29b02d7b32a88033f48a71
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/fr.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ga.png b/modules/discojuice/www/discojuice/flags/ga.png
new file mode 100644
index 0000000000000000000000000000000000000000..0e0d434363abd6766f9e8a8c8c9ad7275d23702a
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ga.png differ
diff --git a/modules/discojuice/www/discojuice/flags/gb.png b/modules/discojuice/www/discojuice/flags/gb.png
new file mode 100644
index 0000000000000000000000000000000000000000..ff701e19f6d2c0658fb23b1d94124cba4ce60851
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/gb.png differ
diff --git a/modules/discojuice/www/discojuice/flags/gd.png b/modules/discojuice/www/discojuice/flags/gd.png
new file mode 100644
index 0000000000000000000000000000000000000000..9ab57f5489bb9ebb6450cb27f4efe0cfb466144e
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/gd.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ge.png b/modules/discojuice/www/discojuice/flags/ge.png
new file mode 100644
index 0000000000000000000000000000000000000000..728d97078df1d07241ae605dff2f2cac463be72e
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ge.png differ
diff --git a/modules/discojuice/www/discojuice/flags/gf.png b/modules/discojuice/www/discojuice/flags/gf.png
new file mode 100644
index 0000000000000000000000000000000000000000..8332c4ec23c853944c29b02d7b32a88033f48a71
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/gf.png differ
diff --git a/modules/discojuice/www/discojuice/flags/gh.png b/modules/discojuice/www/discojuice/flags/gh.png
new file mode 100644
index 0000000000000000000000000000000000000000..4e2f8965914ddd3bd6be97674d2e40a9a3f7d26f
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/gh.png differ
diff --git a/modules/discojuice/www/discojuice/flags/gi.png b/modules/discojuice/www/discojuice/flags/gi.png
new file mode 100644
index 0000000000000000000000000000000000000000..e76797f62fedcbfca8c83c51951680d6a6e9081f
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/gi.png differ
diff --git a/modules/discojuice/www/discojuice/flags/gl.png b/modules/discojuice/www/discojuice/flags/gl.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef12a73bf9628ff5a67b81bd980d9c5d2b2c0f05
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/gl.png differ
diff --git a/modules/discojuice/www/discojuice/flags/gm.png b/modules/discojuice/www/discojuice/flags/gm.png
new file mode 100644
index 0000000000000000000000000000000000000000..0720b667aff506d7892c5c301af04e6bbf932751
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/gm.png differ
diff --git a/modules/discojuice/www/discojuice/flags/gn.png b/modules/discojuice/www/discojuice/flags/gn.png
new file mode 100644
index 0000000000000000000000000000000000000000..ea660b01faefde01ad2527a6abcf7d1a5c1b0526
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/gn.png differ
diff --git a/modules/discojuice/www/discojuice/flags/gp.png b/modules/discojuice/www/discojuice/flags/gp.png
new file mode 100644
index 0000000000000000000000000000000000000000..dbb086d0012637103c0bebca861c10116ed3d527
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/gp.png differ
diff --git a/modules/discojuice/www/discojuice/flags/gq.png b/modules/discojuice/www/discojuice/flags/gq.png
new file mode 100644
index 0000000000000000000000000000000000000000..ebe20a28de06f3e6e520cea360cfc57586a5bec3
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/gq.png differ
diff --git a/modules/discojuice/www/discojuice/flags/gr.png b/modules/discojuice/www/discojuice/flags/gr.png
new file mode 100644
index 0000000000000000000000000000000000000000..8651ade7cbe030e85efc811a844d8f366c97a50c
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/gr.png differ
diff --git a/modules/discojuice/www/discojuice/flags/gs.png b/modules/discojuice/www/discojuice/flags/gs.png
new file mode 100644
index 0000000000000000000000000000000000000000..7ef0bf598d9aa7c12264551d5db06f44307911d1
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/gs.png differ
diff --git a/modules/discojuice/www/discojuice/flags/gt.png b/modules/discojuice/www/discojuice/flags/gt.png
new file mode 100644
index 0000000000000000000000000000000000000000..c43a70d36424b66f1627216ad988cd23a4be9285
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/gt.png differ
diff --git a/modules/discojuice/www/discojuice/flags/gu.png b/modules/discojuice/www/discojuice/flags/gu.png
new file mode 100644
index 0000000000000000000000000000000000000000..92f37c05330243ce2eae41bcd9a368c66d656875
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/gu.png differ
diff --git a/modules/discojuice/www/discojuice/flags/gw.png b/modules/discojuice/www/discojuice/flags/gw.png
new file mode 100644
index 0000000000000000000000000000000000000000..b37bcf06bf20520555542c58534333e92022d929
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/gw.png differ
diff --git a/modules/discojuice/www/discojuice/flags/gy.png b/modules/discojuice/www/discojuice/flags/gy.png
new file mode 100644
index 0000000000000000000000000000000000000000..22cbe2f5914953f1cdea98b7b0979b327ced9582
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/gy.png differ
diff --git a/modules/discojuice/www/discojuice/flags/hk.png b/modules/discojuice/www/discojuice/flags/hk.png
new file mode 100644
index 0000000000000000000000000000000000000000..d5c380ca9d84d30674f05b95c2f645b500626c07
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/hk.png differ
diff --git a/modules/discojuice/www/discojuice/flags/hm.png b/modules/discojuice/www/discojuice/flags/hm.png
new file mode 100644
index 0000000000000000000000000000000000000000..a01389a745d51e16b01a9dc0a707572564a17625
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/hm.png differ
diff --git a/modules/discojuice/www/discojuice/flags/hn.png b/modules/discojuice/www/discojuice/flags/hn.png
new file mode 100644
index 0000000000000000000000000000000000000000..96f838859fd2aed975f5f4134050fdbc0486ce1e
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/hn.png differ
diff --git a/modules/discojuice/www/discojuice/flags/hr.png b/modules/discojuice/www/discojuice/flags/hr.png
new file mode 100644
index 0000000000000000000000000000000000000000..696b515460ddb670acb7e9de4438aaf21fc5fb77
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/hr.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ht.png b/modules/discojuice/www/discojuice/flags/ht.png
new file mode 100644
index 0000000000000000000000000000000000000000..416052af772d719132c152e26649635a97a63a94
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ht.png differ
diff --git a/modules/discojuice/www/discojuice/flags/hu.png b/modules/discojuice/www/discojuice/flags/hu.png
new file mode 100644
index 0000000000000000000000000000000000000000..7baafe44ddcaec29ad9f187f759a7fa3a1a5df00
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/hu.png differ
diff --git a/modules/discojuice/www/discojuice/flags/id.png b/modules/discojuice/www/discojuice/flags/id.png
new file mode 100644
index 0000000000000000000000000000000000000000..c6bc0fafac79403c97c64ba0228d35f250d05b57
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/id.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ie.png b/modules/discojuice/www/discojuice/flags/ie.png
new file mode 100644
index 0000000000000000000000000000000000000000..26baa31e182ddd14106e67de1ac092a7da8e4899
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ie.png differ
diff --git a/modules/discojuice/www/discojuice/flags/il.png b/modules/discojuice/www/discojuice/flags/il.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ca772d0b79b255872cde2fb29060bbbbad950f2
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/il.png differ
diff --git a/modules/discojuice/www/discojuice/flags/in.png b/modules/discojuice/www/discojuice/flags/in.png
new file mode 100644
index 0000000000000000000000000000000000000000..e4d7e81a98d705da8d7054e77e7d311805659678
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/in.png differ
diff --git a/modules/discojuice/www/discojuice/flags/io.png b/modules/discojuice/www/discojuice/flags/io.png
new file mode 100644
index 0000000000000000000000000000000000000000..3e74b6a316477b90cce8b5f2111f911b1c640950
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/io.png differ
diff --git a/modules/discojuice/www/discojuice/flags/iq.png b/modules/discojuice/www/discojuice/flags/iq.png
new file mode 100644
index 0000000000000000000000000000000000000000..878a351403a9a33fd9ae3af1ffd54739545f364d
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/iq.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ir.png b/modules/discojuice/www/discojuice/flags/ir.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5fd136aee534ecb59914e336cad18d18ead2a4a
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ir.png differ
diff --git a/modules/discojuice/www/discojuice/flags/is.png b/modules/discojuice/www/discojuice/flags/is.png
new file mode 100644
index 0000000000000000000000000000000000000000..b8f6d0f06675a9570c2c6e696ee51282097c3876
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/is.png differ
diff --git a/modules/discojuice/www/discojuice/flags/it.png b/modules/discojuice/www/discojuice/flags/it.png
new file mode 100644
index 0000000000000000000000000000000000000000..89692f74f051cd43503744c3dab65c8ba773b7e2
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/it.png differ
diff --git a/modules/discojuice/www/discojuice/flags/jm.png b/modules/discojuice/www/discojuice/flags/jm.png
new file mode 100644
index 0000000000000000000000000000000000000000..7be119e03d203695325568174b72522124bb2f12
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/jm.png differ
diff --git a/modules/discojuice/www/discojuice/flags/jo.png b/modules/discojuice/www/discojuice/flags/jo.png
new file mode 100644
index 0000000000000000000000000000000000000000..11bd4972b6d5f134045d4e8ce134601ea9b5654f
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/jo.png differ
diff --git a/modules/discojuice/www/discojuice/flags/jp.png b/modules/discojuice/www/discojuice/flags/jp.png
new file mode 100644
index 0000000000000000000000000000000000000000..325fbad3ffd3075a4a84d8d898ad26ef7d3e0d56
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/jp.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ke.png b/modules/discojuice/www/discojuice/flags/ke.png
new file mode 100644
index 0000000000000000000000000000000000000000..51879adf17c0c29167225a81645cf1123dda84a0
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ke.png differ
diff --git a/modules/discojuice/www/discojuice/flags/kg.png b/modules/discojuice/www/discojuice/flags/kg.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a818f67ea37e1bf1398b3e2f92a52e331abf4e7
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/kg.png differ
diff --git a/modules/discojuice/www/discojuice/flags/kh.png b/modules/discojuice/www/discojuice/flags/kh.png
new file mode 100644
index 0000000000000000000000000000000000000000..30f6bb1b9b6c5bf355f67a17531fa73beafa6639
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/kh.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ki.png b/modules/discojuice/www/discojuice/flags/ki.png
new file mode 100644
index 0000000000000000000000000000000000000000..2dcce4b33ffe1f40d490cb1a2e03efe22ea56155
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ki.png differ
diff --git a/modules/discojuice/www/discojuice/flags/km.png b/modules/discojuice/www/discojuice/flags/km.png
new file mode 100644
index 0000000000000000000000000000000000000000..812b2f56c5a2a6af805d9edd67d549952d5278ca
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/km.png differ
diff --git a/modules/discojuice/www/discojuice/flags/kn.png b/modules/discojuice/www/discojuice/flags/kn.png
new file mode 100644
index 0000000000000000000000000000000000000000..febd5b486f3f90056637b23caa26d838fbadd7d0
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/kn.png differ
diff --git a/modules/discojuice/www/discojuice/flags/kp.png b/modules/discojuice/www/discojuice/flags/kp.png
new file mode 100644
index 0000000000000000000000000000000000000000..d3d509aa874809a323ea99f3b37ece8a02201f77
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/kp.png differ
diff --git a/modules/discojuice/www/discojuice/flags/kr.png b/modules/discojuice/www/discojuice/flags/kr.png
new file mode 100644
index 0000000000000000000000000000000000000000..9c0a78eb942da568f9cdac7190c17e23cceda7ed
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/kr.png differ
diff --git a/modules/discojuice/www/discojuice/flags/kw.png b/modules/discojuice/www/discojuice/flags/kw.png
new file mode 100644
index 0000000000000000000000000000000000000000..96546da328ab142ab0c7370511cbdbeb9a20efaf
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/kw.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ky.png b/modules/discojuice/www/discojuice/flags/ky.png
new file mode 100644
index 0000000000000000000000000000000000000000..15c5f8e4775b2b68e0360c1f4ff1f37e61611276
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ky.png differ
diff --git a/modules/discojuice/www/discojuice/flags/kz.png b/modules/discojuice/www/discojuice/flags/kz.png
new file mode 100644
index 0000000000000000000000000000000000000000..45a8c887424cff6eb0471f5a1535139b965e241e
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/kz.png differ
diff --git a/modules/discojuice/www/discojuice/flags/la.png b/modules/discojuice/www/discojuice/flags/la.png
new file mode 100644
index 0000000000000000000000000000000000000000..e28acd018a21b62d2cc4b76eec7bbe1f714dfc6c
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/la.png differ
diff --git a/modules/discojuice/www/discojuice/flags/lb.png b/modules/discojuice/www/discojuice/flags/lb.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0d452bf868e0cd6417f518f1dbe695f191ef392
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/lb.png differ
diff --git a/modules/discojuice/www/discojuice/flags/lc.png b/modules/discojuice/www/discojuice/flags/lc.png
new file mode 100644
index 0000000000000000000000000000000000000000..a47d065541b0d998da832e1981b479097a9b36aa
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/lc.png differ
diff --git a/modules/discojuice/www/discojuice/flags/li.png b/modules/discojuice/www/discojuice/flags/li.png
new file mode 100644
index 0000000000000000000000000000000000000000..6469909c013eb9b752ca001694620a229f5792c7
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/li.png differ
diff --git a/modules/discojuice/www/discojuice/flags/lk.png b/modules/discojuice/www/discojuice/flags/lk.png
new file mode 100644
index 0000000000000000000000000000000000000000..088aad6db9515dc659152b18ffdf60c269768777
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/lk.png differ
diff --git a/modules/discojuice/www/discojuice/flags/lr.png b/modules/discojuice/www/discojuice/flags/lr.png
new file mode 100644
index 0000000000000000000000000000000000000000..89a5bc7e70711575c1ee3b83cc2be7f0e1fb29c5
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/lr.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ls.png b/modules/discojuice/www/discojuice/flags/ls.png
new file mode 100644
index 0000000000000000000000000000000000000000..33fdef101f74e38e2422bb85dc8a31bbf1da326b
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ls.png differ
diff --git a/modules/discojuice/www/discojuice/flags/lt.png b/modules/discojuice/www/discojuice/flags/lt.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8ef0da0919b1e77ca91232de0cdf0d99dc8d68f
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/lt.png differ
diff --git a/modules/discojuice/www/discojuice/flags/lu.png b/modules/discojuice/www/discojuice/flags/lu.png
new file mode 100644
index 0000000000000000000000000000000000000000..4cabba98ae70837922beadc41453b5f848f03854
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/lu.png differ
diff --git a/modules/discojuice/www/discojuice/flags/lv.png b/modules/discojuice/www/discojuice/flags/lv.png
new file mode 100644
index 0000000000000000000000000000000000000000..49b69981085ff54568907cd51a56a1e5d8b01ada
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/lv.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ly.png b/modules/discojuice/www/discojuice/flags/ly.png
new file mode 100644
index 0000000000000000000000000000000000000000..b163a9f8a0660fc223c2648b22ed6a074fe28b21
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ly.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ma.png b/modules/discojuice/www/discojuice/flags/ma.png
new file mode 100644
index 0000000000000000000000000000000000000000..f386770280b92a96a02b13032e056c3adfebfa18
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ma.png differ
diff --git a/modules/discojuice/www/discojuice/flags/mc.png b/modules/discojuice/www/discojuice/flags/mc.png
new file mode 100644
index 0000000000000000000000000000000000000000..1aa830f121ab8ee0107d03251a03fee7cbcf790b
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/mc.png differ
diff --git a/modules/discojuice/www/discojuice/flags/md.png b/modules/discojuice/www/discojuice/flags/md.png
new file mode 100644
index 0000000000000000000000000000000000000000..4e92c189044b7ec02a5b7a3a9460e1d01b354801
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/md.png differ
diff --git a/modules/discojuice/www/discojuice/flags/me.png b/modules/discojuice/www/discojuice/flags/me.png
new file mode 100644
index 0000000000000000000000000000000000000000..ac7253558ab939481a85cc06dcc4d73503afb9f0
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/me.png differ
diff --git a/modules/discojuice/www/discojuice/flags/mg.png b/modules/discojuice/www/discojuice/flags/mg.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2715b3d0e11b3a92c4f33cfad6b4f3488d0310d
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/mg.png differ
diff --git a/modules/discojuice/www/discojuice/flags/mh.png b/modules/discojuice/www/discojuice/flags/mh.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb523a8c39d40401b9abcfb144a73cbb2d76b286
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/mh.png differ
diff --git a/modules/discojuice/www/discojuice/flags/mk.png b/modules/discojuice/www/discojuice/flags/mk.png
new file mode 100644
index 0000000000000000000000000000000000000000..db173aaff21955d9aed640beb344986335a1d164
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/mk.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ml.png b/modules/discojuice/www/discojuice/flags/ml.png
new file mode 100644
index 0000000000000000000000000000000000000000..2cec8ba440b76ab6ebef1bba4bcb924f6ba40eaf
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ml.png differ
diff --git a/modules/discojuice/www/discojuice/flags/mm.png b/modules/discojuice/www/discojuice/flags/mm.png
new file mode 100644
index 0000000000000000000000000000000000000000..f464f67ffb4c7108d217a9f526acb17786641284
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/mm.png differ
diff --git a/modules/discojuice/www/discojuice/flags/mn.png b/modules/discojuice/www/discojuice/flags/mn.png
new file mode 100644
index 0000000000000000000000000000000000000000..9396355db45a8ee040c790782209868acaad4b85
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/mn.png differ
diff --git a/modules/discojuice/www/discojuice/flags/mo.png b/modules/discojuice/www/discojuice/flags/mo.png
new file mode 100644
index 0000000000000000000000000000000000000000..deb801dda2457f619d53bc176cc889d362cfa032
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/mo.png differ
diff --git a/modules/discojuice/www/discojuice/flags/mp.png b/modules/discojuice/www/discojuice/flags/mp.png
new file mode 100644
index 0000000000000000000000000000000000000000..298d588b14b9b19e04c26ab36266ace317b81d59
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/mp.png differ
diff --git a/modules/discojuice/www/discojuice/flags/mq.png b/modules/discojuice/www/discojuice/flags/mq.png
new file mode 100644
index 0000000000000000000000000000000000000000..010143b3867f21e7791b8254e806b325c13b2895
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/mq.png differ
diff --git a/modules/discojuice/www/discojuice/flags/mr.png b/modules/discojuice/www/discojuice/flags/mr.png
new file mode 100644
index 0000000000000000000000000000000000000000..319546b100864f32c26f29b54b87fe1aee73af21
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/mr.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ms.png b/modules/discojuice/www/discojuice/flags/ms.png
new file mode 100644
index 0000000000000000000000000000000000000000..d4cbb433d8f9fe49f06585dc46ee15593e3e621c
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ms.png differ
diff --git a/modules/discojuice/www/discojuice/flags/mt.png b/modules/discojuice/www/discojuice/flags/mt.png
new file mode 100644
index 0000000000000000000000000000000000000000..00af94871de66cd0fbf0ca8e46dc436d66e2f713
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/mt.png differ
diff --git a/modules/discojuice/www/discojuice/flags/mu.png b/modules/discojuice/www/discojuice/flags/mu.png
new file mode 100644
index 0000000000000000000000000000000000000000..b7fdce1bdd7d174a894a4a075743695301d32450
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/mu.png differ
diff --git a/modules/discojuice/www/discojuice/flags/mv.png b/modules/discojuice/www/discojuice/flags/mv.png
new file mode 100644
index 0000000000000000000000000000000000000000..5073d9ec47c3b98e18bd3cd8499433d463ab8e67
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/mv.png differ
diff --git a/modules/discojuice/www/discojuice/flags/mw.png b/modules/discojuice/www/discojuice/flags/mw.png
new file mode 100644
index 0000000000000000000000000000000000000000..13886e9f8bf65186eb96071d4399fbe077ec92a3
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/mw.png differ
diff --git a/modules/discojuice/www/discojuice/flags/mx.png b/modules/discojuice/www/discojuice/flags/mx.png
new file mode 100644
index 0000000000000000000000000000000000000000..5bc58ab3e3552b74d990d28a0f500e9eb6209dfe
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/mx.png differ
diff --git a/modules/discojuice/www/discojuice/flags/my.png b/modules/discojuice/www/discojuice/flags/my.png
new file mode 100644
index 0000000000000000000000000000000000000000..9034cbab2c02704b65fba6ecc4a7a1c1d053b6c5
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/my.png differ
diff --git a/modules/discojuice/www/discojuice/flags/mz.png b/modules/discojuice/www/discojuice/flags/mz.png
new file mode 100644
index 0000000000000000000000000000000000000000..76405e063d43f2f3b5b9cae4f76d9f1c73cea25b
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/mz.png differ
diff --git a/modules/discojuice/www/discojuice/flags/na.png b/modules/discojuice/www/discojuice/flags/na.png
new file mode 100644
index 0000000000000000000000000000000000000000..63358c67df905515b49cf50cd766834dea8c18ce
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/na.png differ
diff --git a/modules/discojuice/www/discojuice/flags/nc.png b/modules/discojuice/www/discojuice/flags/nc.png
new file mode 100644
index 0000000000000000000000000000000000000000..2cad28378232e91848d9a2c8bd9d72a9e6a635f8
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/nc.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ne.png b/modules/discojuice/www/discojuice/flags/ne.png
new file mode 100644
index 0000000000000000000000000000000000000000..d85f424f38da0678471ef4b3dc697675118bc7e0
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ne.png differ
diff --git a/modules/discojuice/www/discojuice/flags/nf.png b/modules/discojuice/www/discojuice/flags/nf.png
new file mode 100644
index 0000000000000000000000000000000000000000..f9bcdda12ca7b07b3d16bd88c759db2c82c88884
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/nf.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ng.png b/modules/discojuice/www/discojuice/flags/ng.png
new file mode 100644
index 0000000000000000000000000000000000000000..3eea2e020756c41abf81f765659a864c174f89db
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ng.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ni.png b/modules/discojuice/www/discojuice/flags/ni.png
new file mode 100644
index 0000000000000000000000000000000000000000..3969aaaaee470644115aa805cc344d032d2faa29
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ni.png differ
diff --git a/modules/discojuice/www/discojuice/flags/nl.png b/modules/discojuice/www/discojuice/flags/nl.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe44791e32b790949b0317ab3c258864b9024ebe
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/nl.png differ
diff --git a/modules/discojuice/www/discojuice/flags/no.png b/modules/discojuice/www/discojuice/flags/no.png
new file mode 100644
index 0000000000000000000000000000000000000000..160b6b5b79db15e623fa55e5774e5d160b933180
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/no.png differ
diff --git a/modules/discojuice/www/discojuice/flags/np.png b/modules/discojuice/www/discojuice/flags/np.png
new file mode 100644
index 0000000000000000000000000000000000000000..aeb058b7ea8b5d88519dadc69cfe7cdba77a587f
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/np.png differ
diff --git a/modules/discojuice/www/discojuice/flags/nr.png b/modules/discojuice/www/discojuice/flags/nr.png
new file mode 100644
index 0000000000000000000000000000000000000000..705fc337ccd50d4d49709597d5bd4b946c0d8a32
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/nr.png differ
diff --git a/modules/discojuice/www/discojuice/flags/nu.png b/modules/discojuice/www/discojuice/flags/nu.png
new file mode 100644
index 0000000000000000000000000000000000000000..c3ce4aedda9bea0553b43c8d3d849eba6b3d2cd1
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/nu.png differ
diff --git a/modules/discojuice/www/discojuice/flags/nz.png b/modules/discojuice/www/discojuice/flags/nz.png
new file mode 100644
index 0000000000000000000000000000000000000000..10d6306d17429012904035e4097bf93a8d205971
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/nz.png differ
diff --git a/modules/discojuice/www/discojuice/flags/om.png b/modules/discojuice/www/discojuice/flags/om.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ffba7e8c43f160bb0d9634fb9e6cb4093741340
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/om.png differ
diff --git a/modules/discojuice/www/discojuice/flags/pa.png b/modules/discojuice/www/discojuice/flags/pa.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b2ee9a780955566cc7dc2f59ce175f32d3731a0
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/pa.png differ
diff --git a/modules/discojuice/www/discojuice/flags/pe.png b/modules/discojuice/www/discojuice/flags/pe.png
new file mode 100644
index 0000000000000000000000000000000000000000..62a04977fb2b29b96d01ffef3b88b6bf2ff05862
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/pe.png differ
diff --git a/modules/discojuice/www/discojuice/flags/pf.png b/modules/discojuice/www/discojuice/flags/pf.png
new file mode 100644
index 0000000000000000000000000000000000000000..771a0f652254b4e891fc73910aab38967864da54
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/pf.png differ
diff --git a/modules/discojuice/www/discojuice/flags/pg.png b/modules/discojuice/www/discojuice/flags/pg.png
new file mode 100644
index 0000000000000000000000000000000000000000..10d6233496c10e52ead975c5a504459fad68ffb8
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/pg.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ph.png b/modules/discojuice/www/discojuice/flags/ph.png
new file mode 100644
index 0000000000000000000000000000000000000000..b89e15935d9daf25173f89a36d8111824fda5db5
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ph.png differ
diff --git a/modules/discojuice/www/discojuice/flags/pk.png b/modules/discojuice/www/discojuice/flags/pk.png
new file mode 100644
index 0000000000000000000000000000000000000000..e9df70ca4d63a979e6bcea2399263c081ce5eaeb
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/pk.png differ
diff --git a/modules/discojuice/www/discojuice/flags/pl.png b/modules/discojuice/www/discojuice/flags/pl.png
new file mode 100644
index 0000000000000000000000000000000000000000..d413d010b5b097c4e0a4604eba86dad79567ed16
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/pl.png differ
diff --git a/modules/discojuice/www/discojuice/flags/pm.png b/modules/discojuice/www/discojuice/flags/pm.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba91d2c7a0de26e554979f6351d42a1a4e22de3b
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/pm.png differ
diff --git a/modules/discojuice/www/discojuice/flags/pn.png b/modules/discojuice/www/discojuice/flags/pn.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa9344f575bc92f4c1a5043e6e7d0a8b239daa64
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/pn.png differ
diff --git a/modules/discojuice/www/discojuice/flags/pr.png b/modules/discojuice/www/discojuice/flags/pr.png
new file mode 100644
index 0000000000000000000000000000000000000000..82d9130da452fc294baa03a349ec2e71259a80af
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/pr.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ps.png b/modules/discojuice/www/discojuice/flags/ps.png
new file mode 100644
index 0000000000000000000000000000000000000000..f5f547762ed3a7f556b1cb8b12fb80ed17fe1c4e
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ps.png differ
diff --git a/modules/discojuice/www/discojuice/flags/pt.png b/modules/discojuice/www/discojuice/flags/pt.png
new file mode 100644
index 0000000000000000000000000000000000000000..ece79801506ecf8c42397349b4fa2cfe8176b999
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/pt.png differ
diff --git a/modules/discojuice/www/discojuice/flags/pw.png b/modules/discojuice/www/discojuice/flags/pw.png
new file mode 100644
index 0000000000000000000000000000000000000000..6178b254a5dd2d91eeaa2a2adf124b6dba0af27f
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/pw.png differ
diff --git a/modules/discojuice/www/discojuice/flags/py.png b/modules/discojuice/www/discojuice/flags/py.png
new file mode 100644
index 0000000000000000000000000000000000000000..cb8723c06408828ce68a932ff472daabecc64139
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/py.png differ
diff --git a/modules/discojuice/www/discojuice/flags/qa.png b/modules/discojuice/www/discojuice/flags/qa.png
new file mode 100644
index 0000000000000000000000000000000000000000..ed4c621fa7181fb14c46325a76a16422653aafc7
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/qa.png differ
diff --git a/modules/discojuice/www/discojuice/flags/re.png b/modules/discojuice/www/discojuice/flags/re.png
new file mode 100644
index 0000000000000000000000000000000000000000..8332c4ec23c853944c29b02d7b32a88033f48a71
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/re.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ro.png b/modules/discojuice/www/discojuice/flags/ro.png
new file mode 100644
index 0000000000000000000000000000000000000000..57e74a6510dd6a4b29668db181cb94727d1eb4b7
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ro.png differ
diff --git a/modules/discojuice/www/discojuice/flags/rs.png b/modules/discojuice/www/discojuice/flags/rs.png
new file mode 100644
index 0000000000000000000000000000000000000000..9439a5b605d82713decf23aba9c63c8d719cc200
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/rs.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ru.png b/modules/discojuice/www/discojuice/flags/ru.png
new file mode 100644
index 0000000000000000000000000000000000000000..47da4214fd9edb383687c1d4f84fe8b42a51ceb2
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ru.png differ
diff --git a/modules/discojuice/www/discojuice/flags/rw.png b/modules/discojuice/www/discojuice/flags/rw.png
new file mode 100644
index 0000000000000000000000000000000000000000..535649178a885355c836b5c838d096ec3ce8d365
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/rw.png differ
diff --git a/modules/discojuice/www/discojuice/flags/sa.png b/modules/discojuice/www/discojuice/flags/sa.png
new file mode 100644
index 0000000000000000000000000000000000000000..b4641c7e8b0dd79aafaa73babdb525d3d2dc6a8e
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/sa.png differ
diff --git a/modules/discojuice/www/discojuice/flags/sb.png b/modules/discojuice/www/discojuice/flags/sb.png
new file mode 100644
index 0000000000000000000000000000000000000000..a9937ccf091a3faecacbd5101c6630ea0d0b16d8
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/sb.png differ
diff --git a/modules/discojuice/www/discojuice/flags/sc.png b/modules/discojuice/www/discojuice/flags/sc.png
new file mode 100644
index 0000000000000000000000000000000000000000..39ee37184e09c39dd05425db127288def220abb7
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/sc.png differ
diff --git a/modules/discojuice/www/discojuice/flags/scotland.png b/modules/discojuice/www/discojuice/flags/scotland.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0e57b4122acbf0beea91277639f92c010afe103
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/scotland.png differ
diff --git a/modules/discojuice/www/discojuice/flags/sd.png b/modules/discojuice/www/discojuice/flags/sd.png
new file mode 100644
index 0000000000000000000000000000000000000000..eaab69eb78776f8593b41c8fdc3fd65a86119a0a
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/sd.png differ
diff --git a/modules/discojuice/www/discojuice/flags/se.png b/modules/discojuice/www/discojuice/flags/se.png
new file mode 100644
index 0000000000000000000000000000000000000000..1994653dac1fc1c6ee3c9fcb35c8af97f16eefc7
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/se.png differ
diff --git a/modules/discojuice/www/discojuice/flags/sg.png b/modules/discojuice/www/discojuice/flags/sg.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd34d6121073fffcb2fcb5b9402b3e6361cded35
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/sg.png differ
diff --git a/modules/discojuice/www/discojuice/flags/sh.png b/modules/discojuice/www/discojuice/flags/sh.png
new file mode 100644
index 0000000000000000000000000000000000000000..4b1d2a29107be96413eb86e64a75ac7a3ba5793d
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/sh.png differ
diff --git a/modules/discojuice/www/discojuice/flags/si.png b/modules/discojuice/www/discojuice/flags/si.png
new file mode 100644
index 0000000000000000000000000000000000000000..bb1476ff5fe8e0d3af4fc6bd11e513d95fd9cccd
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/si.png differ
diff --git a/modules/discojuice/www/discojuice/flags/sj.png b/modules/discojuice/www/discojuice/flags/sj.png
new file mode 100644
index 0000000000000000000000000000000000000000..160b6b5b79db15e623fa55e5774e5d160b933180
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/sj.png differ
diff --git a/modules/discojuice/www/discojuice/flags/sk.png b/modules/discojuice/www/discojuice/flags/sk.png
new file mode 100644
index 0000000000000000000000000000000000000000..7ccbc8274ad8f76f28960b83f2bba2a619029d87
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/sk.png differ
diff --git a/modules/discojuice/www/discojuice/flags/sl.png b/modules/discojuice/www/discojuice/flags/sl.png
new file mode 100644
index 0000000000000000000000000000000000000000..12d812d29fa6ea097743074e4a341ccfc691946a
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/sl.png differ
diff --git a/modules/discojuice/www/discojuice/flags/sm.png b/modules/discojuice/www/discojuice/flags/sm.png
new file mode 100644
index 0000000000000000000000000000000000000000..3df2fdcf8c0b0cc9b581f704c466db1f15c0d422
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/sm.png differ
diff --git a/modules/discojuice/www/discojuice/flags/sn.png b/modules/discojuice/www/discojuice/flags/sn.png
new file mode 100644
index 0000000000000000000000000000000000000000..eabb71db4e8275a5bfb7b1b8f3a8374d50da95db
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/sn.png differ
diff --git a/modules/discojuice/www/discojuice/flags/so.png b/modules/discojuice/www/discojuice/flags/so.png
new file mode 100644
index 0000000000000000000000000000000000000000..4a1ea4b29b3f541f047dead7c202fd3b566575a9
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/so.png differ
diff --git a/modules/discojuice/www/discojuice/flags/sr.png b/modules/discojuice/www/discojuice/flags/sr.png
new file mode 100644
index 0000000000000000000000000000000000000000..5eff9271d28cf8bf1cb85378600c4fa4997faa33
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/sr.png differ
diff --git a/modules/discojuice/www/discojuice/flags/st.png b/modules/discojuice/www/discojuice/flags/st.png
new file mode 100644
index 0000000000000000000000000000000000000000..2978557b19d7d4283aa9a00ca78dcdd2580edc7a
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/st.png differ
diff --git a/modules/discojuice/www/discojuice/flags/sv.png b/modules/discojuice/www/discojuice/flags/sv.png
new file mode 100644
index 0000000000000000000000000000000000000000..24987990b733244b23f8e03059f4924804662c75
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/sv.png differ
diff --git a/modules/discojuice/www/discojuice/flags/sy.png b/modules/discojuice/www/discojuice/flags/sy.png
new file mode 100644
index 0000000000000000000000000000000000000000..f5ce30dcb79b443ebc1615fe4889cc26e2d762b1
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/sy.png differ
diff --git a/modules/discojuice/www/discojuice/flags/sz.png b/modules/discojuice/www/discojuice/flags/sz.png
new file mode 100644
index 0000000000000000000000000000000000000000..914ee861d419bc6c1e8a7ac432e96deea7504d3a
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/sz.png differ
diff --git a/modules/discojuice/www/discojuice/flags/tc.png b/modules/discojuice/www/discojuice/flags/tc.png
new file mode 100644
index 0000000000000000000000000000000000000000..8fc1156bec3389e54d3c5bb8339901773a881e68
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/tc.png differ
diff --git a/modules/discojuice/www/discojuice/flags/td.png b/modules/discojuice/www/discojuice/flags/td.png
new file mode 100644
index 0000000000000000000000000000000000000000..667f21fd9d552df546386174e506a6b5b606a258
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/td.png differ
diff --git a/modules/discojuice/www/discojuice/flags/tf.png b/modules/discojuice/www/discojuice/flags/tf.png
new file mode 100644
index 0000000000000000000000000000000000000000..80529a4361941e01d1def5d581bf2847cf99fef6
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/tf.png differ
diff --git a/modules/discojuice/www/discojuice/flags/tg.png b/modules/discojuice/www/discojuice/flags/tg.png
new file mode 100644
index 0000000000000000000000000000000000000000..3aa00ad4dface0a9c23744ab451cec0443f187bf
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/tg.png differ
diff --git a/modules/discojuice/www/discojuice/flags/th.png b/modules/discojuice/www/discojuice/flags/th.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd8ba91719ba641502bc7ffda16c25dc71b2066c
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/th.png differ
diff --git a/modules/discojuice/www/discojuice/flags/tj.png b/modules/discojuice/www/discojuice/flags/tj.png
new file mode 100644
index 0000000000000000000000000000000000000000..617bf6455f69849b7f66f43ff36093bbcb07fc3d
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/tj.png differ
diff --git a/modules/discojuice/www/discojuice/flags/tk.png b/modules/discojuice/www/discojuice/flags/tk.png
new file mode 100644
index 0000000000000000000000000000000000000000..67b8c8cb5191080a1cf33125cfd05efe0b9a76e0
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/tk.png differ
diff --git a/modules/discojuice/www/discojuice/flags/tl.png b/modules/discojuice/www/discojuice/flags/tl.png
new file mode 100644
index 0000000000000000000000000000000000000000..77da181e9c57a490c90a99ec08a8718ea8fc0835
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/tl.png differ
diff --git a/modules/discojuice/www/discojuice/flags/tm.png b/modules/discojuice/www/discojuice/flags/tm.png
new file mode 100644
index 0000000000000000000000000000000000000000..828020ecd0f6fc73348373c9e7a235fdced09de7
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/tm.png differ
diff --git a/modules/discojuice/www/discojuice/flags/tn.png b/modules/discojuice/www/discojuice/flags/tn.png
new file mode 100644
index 0000000000000000000000000000000000000000..183cdd3dc98c6957bde83f375a431e543a3ce9e4
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/tn.png differ
diff --git a/modules/discojuice/www/discojuice/flags/to.png b/modules/discojuice/www/discojuice/flags/to.png
new file mode 100644
index 0000000000000000000000000000000000000000..f89b8ba755f5609dc761384fe0656f73c854031e
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/to.png differ
diff --git a/modules/discojuice/www/discojuice/flags/tr.png b/modules/discojuice/www/discojuice/flags/tr.png
new file mode 100644
index 0000000000000000000000000000000000000000..be32f77e9910c0896c1ee8e7ed4f0edf815a517e
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/tr.png differ
diff --git a/modules/discojuice/www/discojuice/flags/tt.png b/modules/discojuice/www/discojuice/flags/tt.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a11c1e20ac7f5a4761049adf5e326654b94069b
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/tt.png differ
diff --git a/modules/discojuice/www/discojuice/flags/tv.png b/modules/discojuice/www/discojuice/flags/tv.png
new file mode 100644
index 0000000000000000000000000000000000000000..28274c5fb40e5d3bacd7c05d9a1b8017eeaffa6c
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/tv.png differ
diff --git a/modules/discojuice/www/discojuice/flags/tw.png b/modules/discojuice/www/discojuice/flags/tw.png
new file mode 100644
index 0000000000000000000000000000000000000000..f31c654c99c023dbed9a7070103c4542326c4464
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/tw.png differ
diff --git a/modules/discojuice/www/discojuice/flags/tz.png b/modules/discojuice/www/discojuice/flags/tz.png
new file mode 100644
index 0000000000000000000000000000000000000000..c00ff7961424da8dabee61bfb53158c537e935e1
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/tz.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ua.png b/modules/discojuice/www/discojuice/flags/ua.png
new file mode 100644
index 0000000000000000000000000000000000000000..09563a21941f2a94c937d43aceda1aa546246302
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ua.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ug.png b/modules/discojuice/www/discojuice/flags/ug.png
new file mode 100644
index 0000000000000000000000000000000000000000..33f4affadee432c0d4f499fd7e04736a29c48b06
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ug.png differ
diff --git a/modules/discojuice/www/discojuice/flags/um.png b/modules/discojuice/www/discojuice/flags/um.png
new file mode 100644
index 0000000000000000000000000000000000000000..c1dd9654b0705371876d3e3d06f950be02de2a73
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/um.png differ
diff --git a/modules/discojuice/www/discojuice/flags/us.png b/modules/discojuice/www/discojuice/flags/us.png
new file mode 100644
index 0000000000000000000000000000000000000000..10f451fe85c41c6c9a06d543a57114ae2f87ecc1
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/us.png differ
diff --git a/modules/discojuice/www/discojuice/flags/uy.png b/modules/discojuice/www/discojuice/flags/uy.png
new file mode 100644
index 0000000000000000000000000000000000000000..31d948a067fe02d067a8c2e69f28cca446bc7c57
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/uy.png differ
diff --git a/modules/discojuice/www/discojuice/flags/uz.png b/modules/discojuice/www/discojuice/flags/uz.png
new file mode 100644
index 0000000000000000000000000000000000000000..fef5dc1709d69d32f6535fa9694069a56097adc9
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/uz.png differ
diff --git a/modules/discojuice/www/discojuice/flags/va.png b/modules/discojuice/www/discojuice/flags/va.png
new file mode 100644
index 0000000000000000000000000000000000000000..b31eaf225d6fd770e0557c2baf8747c91ce88983
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/va.png differ
diff --git a/modules/discojuice/www/discojuice/flags/vc.png b/modules/discojuice/www/discojuice/flags/vc.png
new file mode 100644
index 0000000000000000000000000000000000000000..8fa17b0612bd318a649571fbc4f68e4512c65c5b
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/vc.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ve.png b/modules/discojuice/www/discojuice/flags/ve.png
new file mode 100644
index 0000000000000000000000000000000000000000..00c90f9aff09fb1b6d697c6a5680df01f37cad60
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ve.png differ
diff --git a/modules/discojuice/www/discojuice/flags/vg.png b/modules/discojuice/www/discojuice/flags/vg.png
new file mode 100644
index 0000000000000000000000000000000000000000..415690798657a5921fd007b8ae85a5e5d414e7fa
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/vg.png differ
diff --git a/modules/discojuice/www/discojuice/flags/vi.png b/modules/discojuice/www/discojuice/flags/vi.png
new file mode 100644
index 0000000000000000000000000000000000000000..ed26915a3238534bf8f1249b75dd9ddde10db65a
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/vi.png differ
diff --git a/modules/discojuice/www/discojuice/flags/vn.png b/modules/discojuice/www/discojuice/flags/vn.png
new file mode 100644
index 0000000000000000000000000000000000000000..ec7cd48a3468a511e27c49a69194b0ef5564e615
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/vn.png differ
diff --git a/modules/discojuice/www/discojuice/flags/vu.png b/modules/discojuice/www/discojuice/flags/vu.png
new file mode 100644
index 0000000000000000000000000000000000000000..b3397bc63d718b344e604266259134e653925c9d
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/vu.png differ
diff --git a/modules/discojuice/www/discojuice/flags/wales.png b/modules/discojuice/www/discojuice/flags/wales.png
new file mode 100644
index 0000000000000000000000000000000000000000..e0d7cee1107205e017c840042272f12476ee0aa0
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/wales.png differ
diff --git a/modules/discojuice/www/discojuice/flags/wf.png b/modules/discojuice/www/discojuice/flags/wf.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f9558734f0482439b2292a01f768639a287ac25
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/wf.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ws.png b/modules/discojuice/www/discojuice/flags/ws.png
new file mode 100644
index 0000000000000000000000000000000000000000..c16950802ea95b40a4e024be6cce870b1991f40e
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ws.png differ
diff --git a/modules/discojuice/www/discojuice/flags/ye.png b/modules/discojuice/www/discojuice/flags/ye.png
new file mode 100644
index 0000000000000000000000000000000000000000..468dfad03867903f825e82de35934f3191e5f638
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/ye.png differ
diff --git a/modules/discojuice/www/discojuice/flags/yt.png b/modules/discojuice/www/discojuice/flags/yt.png
new file mode 100644
index 0000000000000000000000000000000000000000..c298f378beee6b170a6909fd4f73ffbeb5997cff
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/yt.png differ
diff --git a/modules/discojuice/www/discojuice/flags/za.png b/modules/discojuice/www/discojuice/flags/za.png
new file mode 100644
index 0000000000000000000000000000000000000000..57c58e2119f402072640ca758657798b621f3fb1
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/za.png differ
diff --git a/modules/discojuice/www/discojuice/flags/zm.png b/modules/discojuice/www/discojuice/flags/zm.png
new file mode 100644
index 0000000000000000000000000000000000000000..c25b07beef894408ae11c3be294d6e0eeb28c0bb
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/zm.png differ
diff --git a/modules/discojuice/www/discojuice/flags/zw.png b/modules/discojuice/www/discojuice/flags/zw.png
new file mode 100644
index 0000000000000000000000000000000000000000..53c97259b9b3e31c2f612e78344d035281682fa7
Binary files /dev/null and b/modules/discojuice/www/discojuice/flags/zw.png differ
diff --git a/modules/discojuice/www/discojuice/idpdiscovery.js b/modules/discojuice/www/discojuice/idpdiscovery.js
new file mode 100644
index 0000000000000000000000000000000000000000..3e95f89cf1e4e1ec0ae53fb52270b6c6e2569f7e
--- /dev/null
+++ b/modules/discojuice/www/discojuice/idpdiscovery.js
@@ -0,0 +1,140 @@
+/*
+ * IdP Discovery Service
+ *
+ * An implementation of the IdP Discovery Protocol in Javascript
+ * 
+ * Author: Andreas Ã…kre Solberg, UNINETT, andreas.solberg@uninett.no
+ * Licence: LGPLv2
+ */
+
+var IdPDiscovery = function() {
+
+	var acl = true;
+	var returnURLs = [];
+	var serviceNames = {
+		'http://dev.andreas.feide.no/simplesaml/module.php/saml/sp/metadata.php/default-sp': 'Andreas Developer SP',
+		'https://beta.foodl.org/simplesaml/module.php/saml/sp/metadata.php/saml': 'Foodle Beta',
+		'https://foodl.org/simplesaml/module.php/saml/sp/metadata.php/saml': 'Foodle',
+		'https://ow.feide.no/simplesaml/module.php/saml/sp/metadata.php/default-sp': 'Feide OpenWiki',
+		'https://openwiki.feide.no/simplesaml/module.php/saml/sp/metadata.php/default-sp': 'Feide OpenWiki Administration',
+		'https://rnd.feide.no/simplesaml/module.php/saml/sp/metadata.php/saml': 'Feide Rnd',
+		'http://ulx.foodl.org/simplesaml/module.php/saml/sp/metadata.php/saml': 'Foodle ULX Demo'
+	};
+	
+	var query = {};
+	(function () {
+		var e,
+			a = /\+/g,  // Regex for replacing addition symbol with a space
+			r = /([^&;=]+)=?([^&;]*)/g,
+			d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
+			q = window.location.search.substring(1);
+
+		while (e = r.exec(q))
+		   query[d(e[1])] = d(e[2]);
+	})();
+	
+	return {
+		
+		"nameOf": function(entityid) {
+			if (serviceNames[entityid]) return serviceNames[entityid];
+			return entityid;
+		},
+		"getSP": function() {
+			return (query.entityID || null);
+		},
+		"getName": function() {
+			return this.nameOf(this.getSP());
+		},
+		
+		// This function takes an url as input and returns the hostname.
+		"getHostname" : function(str) {
+			var re = new RegExp('^(?:f|ht)tp(?:s)?\://([^/]+)', 'im');
+			return str.match(re)[1].toString();
+		},
+		
+		"returnTo": function(e) {
+			
+			var returnTo = query['return'] || null;
+			var returnIDParam = query.returnIDParam || 'entityID';
+			if(!returnTo) {
+				DiscoJuice.Utils.log('Missing required parameter [return]');
+				return;
+			}
+			if (acl) {
+				var allowed = false;
+				
+				var returnToHost = this.getHostname(returnTo);
+				
+				for (var i = 0; i < returnURLs.length; i++) {
+					if (returnURLs[i] == returnToHost) allowed = true;
+				}
+				
+				if (!allowed) {
+					DiscoJuice.Utils.log('Access denied for return parameter [' + returnToHost + ']');
+					return;
+				}
+			}
+			
+			if (e && e.auth) {
+				returnTo += '&auth=' + e.auth;
+			}
+			
+			if (!e.entityid) {
+				window.location = returnTo;
+			} else {
+				window.location = returnTo + '&' + returnIDParam + '=' + escape(e.entityid);
+			}
+			
+			
+
+		},
+		
+		"receive": function() {
+		
+			var entityID = this.getSP();
+
+			if(!entityID) {
+				DiscoJuice.Utils.log('Missing required parameter [entityID]');
+				return;
+			}
+			
+			var preferredIdP = DiscoJuice.Utils.readCookie() || null;
+			
+			if (query.IdPentityID) {
+				DiscoJuice.Utils.createCookie(query.IdPentityID);
+				preferredIdP = query.IdPentityID;
+			}
+			
+			var isPassive = query.isPassive || 'false';
+			
+			if (isPassive === 'true') {
+				this.returnTo(preferredIdP);
+			}
+		},
+		
+
+		
+		"setup": function(options, rurls) {
+
+			var that = this;
+				
+			this.returnURLs = rurls;
+			
+			$(document).ready(function() {
+				var overthere = that;
+				var name = overthere.getName();
+				if (!name) name = 'unknown service';
+				
+				options.callback = function(e) {
+					overthere.returnTo(e); 
+				};
+				
+				$("a.signin").DiscoJuice(options);
+				$("div.noscript").hide();
+			});
+			
+		}
+		
+	};
+}();
+
diff --git a/modules/discojuice/www/discojuice/images/LICENCE.txt b/modules/discojuice/www/discojuice/images/LICENCE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a669e9079e249c657aa172267da68b24d52b451d
--- /dev/null
+++ b/modules/discojuice/www/discojuice/images/LICENCE.txt
@@ -0,0 +1,6 @@
+target.png
+http://www.iconfinder.com/icondetails/53875/32/goal_target_icon
+Creative Commons (Unported 3.0) http://creativecommons.org/licenses/by/3.0/
+
+
+
diff --git a/modules/discojuice/www/discojuice/images/arrow-r.png b/modules/discojuice/www/discojuice/images/arrow-r.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2c47a96657612dc9ca626b6d9484d0ef9f287f7
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/arrow-r.png differ
diff --git a/modules/discojuice/www/discojuice/images/arrow.png b/modules/discojuice/www/discojuice/images/arrow.png
new file mode 100644
index 0000000000000000000000000000000000000000..f5439ce94201cd24cc5de1e951b84df172452515
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/arrow.png differ
diff --git a/modules/discojuice/www/discojuice/images/box-bottom.png b/modules/discojuice/www/discojuice/images/box-bottom.png
new file mode 100644
index 0000000000000000000000000000000000000000..afcbf77dacd6a999cbafbd899b3e8ca51402931b
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/box-bottom.png differ
diff --git a/modules/discojuice/www/discojuice/images/box-main.png b/modules/discojuice/www/discojuice/images/box-main.png
new file mode 100644
index 0000000000000000000000000000000000000000..dfa44750df822c19d615ce27e15ac9a2c36c14fb
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/box-main.png differ
diff --git a/modules/discojuice/www/discojuice/images/box-top.png b/modules/discojuice/www/discojuice/images/box-top.png
new file mode 100644
index 0000000000000000000000000000000000000000..9d846404c7fe3e480a6e343008e8af04dc255d35
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/box-top.png differ
diff --git a/modules/discojuice/www/discojuice/images/close-hover.png b/modules/discojuice/www/discojuice/images/close-hover.png
new file mode 100644
index 0000000000000000000000000000000000000000..782b8ae9d39a22c8d0c6cc8db839e9138bc75415
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/close-hover.png differ
diff --git a/modules/discojuice/www/discojuice/images/close.png b/modules/discojuice/www/discojuice/images/close.png
new file mode 100644
index 0000000000000000000000000000000000000000..7f7c73532ed00601e5f5da5e4985160ac5e9fb3c
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/close.png differ
diff --git a/modules/discojuice/www/discojuice/images/item-hover.png b/modules/discojuice/www/discojuice/images/item-hover.png
new file mode 100644
index 0000000000000000000000000000000000000000..923183f67f020f6acc704726d53fdc12d8117127
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/item-hover.png differ
diff --git a/modules/discojuice/www/discojuice/images/item.png b/modules/discojuice/www/discojuice/images/item.png
new file mode 100644
index 0000000000000000000000000000000000000000..61ea115a7b1e6f572e0d76631b9795b519280f11
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/item.png differ
diff --git a/modules/discojuice/www/discojuice/images/overlay.png b/modules/discojuice/www/discojuice/images/overlay.png
new file mode 100644
index 0000000000000000000000000000000000000000..b09e80e05a46b0d4a35e7ba0911b896ad1739543
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/overlay.png differ
diff --git a/modules/discojuice/www/discojuice/images/search-active.png b/modules/discojuice/www/discojuice/images/search-active.png
new file mode 100644
index 0000000000000000000000000000000000000000..ff44e1e67991a7b5e014e4397323f8b345e16f38
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/search-active.png differ
diff --git a/modules/discojuice/www/discojuice/images/search.png b/modules/discojuice/www/discojuice/images/search.png
new file mode 100644
index 0000000000000000000000000000000000000000..042084266b4c558fd3893940d4b4ceac71334459
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/search.png differ
diff --git a/modules/discojuice/www/discojuice/images/site-loggedin-back.png b/modules/discojuice/www/discojuice/images/site-loggedin-back.png
new file mode 100644
index 0000000000000000000000000000000000000000..1d7bbcb9f9e068be106c6f8eddaaac5b362edb85
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/site-loggedin-back.png differ
diff --git a/modules/discojuice/www/discojuice/images/site-loggedin.png b/modules/discojuice/www/discojuice/images/site-loggedin.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d15b802d3f6985a89f7d800481ae1dda2a3574e
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/site-loggedin.png differ
diff --git a/modules/discojuice/www/discojuice/images/site-loggedout-back.png b/modules/discojuice/www/discojuice/images/site-loggedout-back.png
new file mode 100644
index 0000000000000000000000000000000000000000..86a8e500bd0720c3ccdaa8904f0ac6d98d1023f7
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/site-loggedout-back.png differ
diff --git a/modules/discojuice/www/discojuice/images/site-loggedout.png b/modules/discojuice/www/discojuice/images/site-loggedout.png
new file mode 100644
index 0000000000000000000000000000000000000000..1124f381efe679ad9fa7488cfd94978bb51b5460
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/site-loggedout.png differ
diff --git a/modules/discojuice/www/discojuice/images/spinning.gif b/modules/discojuice/www/discojuice/images/spinning.gif
new file mode 100644
index 0000000000000000000000000000000000000000..704b875fa1b2854ddb00e6f8a7a5c5ff45e35f59
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/spinning.gif differ
diff --git a/modules/discojuice/www/discojuice/images/target.png b/modules/discojuice/www/discojuice/images/target.png
new file mode 100644
index 0000000000000000000000000000000000000000..9346c7153fe0210101eff72137a541b8946bf4e4
Binary files /dev/null and b/modules/discojuice/www/discojuice/images/target.png differ
diff --git a/modules/discojuice/www/discojuice/jquery-1.4.3.min.js b/modules/discojuice/www/discojuice/jquery-1.4.3.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..c941a5f7a9f3b32f49f049ff5c411c22176ccf6f
--- /dev/null
+++ b/modules/discojuice/www/discojuice/jquery-1.4.3.min.js
@@ -0,0 +1,166 @@
+/*!
+ * jQuery JavaScript Library v1.4.3
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Oct 14 23:10:06 2010 -0400
+ */
+(function(E,A){function U(){return false}function ba(){return true}function ja(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ga(a){var b,d,e=[],f=[],h,k,l,n,s,v,B,D;k=c.data(this,this.nodeType?"events":"__events__");if(typeof k==="function")k=k.events;if(!(a.liveFired===this||!k||!k.live||a.button&&a.type==="click")){if(a.namespace)D=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var H=k.live.slice(0);for(n=0;n<H.length;n++){k=H[n];k.origType.replace(X,
+"")===a.type?f.push(k.selector):H.splice(n--,1)}f=c(a.target).closest(f,a.currentTarget);s=0;for(v=f.length;s<v;s++){B=f[s];for(n=0;n<H.length;n++){k=H[n];if(B.selector===k.selector&&(!D||D.test(k.namespace))){l=B.elem;h=null;if(k.preType==="mouseenter"||k.preType==="mouseleave"){a.type=k.preType;h=c(a.relatedTarget).closest(k.selector)[0]}if(!h||h!==l)e.push({elem:l,handleObj:k,level:B.level})}}}s=0;for(v=e.length;s<v;s++){f=e[s];if(d&&f.level>d)break;a.currentTarget=f.elem;a.data=f.handleObj.data;
+a.handleObj=f.handleObj;D=f.handleObj.origHandler.apply(f.elem,arguments);if(D===false||a.isPropagationStopped()){d=f.level;if(D===false)b=false}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(Ha,"`").replace(Ia,"&")}function ka(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Ja.test(b))return c.filter(b,
+e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function la(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this,e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var k in e[h])c.event.add(this,h,e[h][k],e[h][k].data)}}})}function Ka(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}
+function ma(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?La:Ma,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a,"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function ca(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Na.test(a)?e(a,h):ca(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?
+e(a,""):c.each(b,function(f,h){ca(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(na.concat.apply([],na.slice(0,b)),function(){d[this]=a});return d}function oa(a){if(!da[a]){var b=c("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";da[a]=d}return da[a]}function ea(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var u=E.document,c=function(){function a(){if(!b.isReady){try{u.documentElement.doScroll("left")}catch(i){setTimeout(a,
+1);return}b.ready()}}var b=function(i,r){return new b.fn.init(i,r)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,k=/\S/,l=/^\s+/,n=/\s+$/,s=/\W/,v=/\d/,B=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,D=/^[\],:{}\s]*$/,H=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,G=/(?:^|:|,)(?:\s*\[)+/g,M=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,j=/(msie) ([\w.]+)/,o=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,
+q=[],t,x=Object.prototype.toString,C=Object.prototype.hasOwnProperty,P=Array.prototype.push,N=Array.prototype.slice,R=String.prototype.trim,Q=Array.prototype.indexOf,L={};b.fn=b.prototype={init:function(i,r){var y,z,F;if(!i)return this;if(i.nodeType){this.context=this[0]=i;this.length=1;return this}if(i==="body"&&!r&&u.body){this.context=u;this[0]=u.body;this.selector="body";this.length=1;return this}if(typeof i==="string")if((y=h.exec(i))&&(y[1]||!r))if(y[1]){F=r?r.ownerDocument||r:u;if(z=B.exec(i))if(b.isPlainObject(r)){i=
+[u.createElement(z[1])];b.fn.attr.call(i,r,true)}else i=[F.createElement(z[1])];else{z=b.buildFragment([y[1]],[F]);i=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this,i)}else{if((z=u.getElementById(y[2]))&&z.parentNode){if(z.id!==y[2])return f.find(i);this.length=1;this[0]=z}this.context=u;this.selector=i;return this}else if(!r&&!s.test(i)){this.selector=i;this.context=u;i=u.getElementsByTagName(i);return b.merge(this,i)}else return!r||r.jquery?(r||f).find(i):b(r).find(i);
+else if(b.isFunction(i))return f.ready(i);if(i.selector!==A){this.selector=i.selector;this.context=i.context}return b.makeArray(i,this)},selector:"",jquery:"1.4.3",length:0,size:function(){return this.length},toArray:function(){return N.call(this,0)},get:function(i){return i==null?this.toArray():i<0?this.slice(i)[0]:this[i]},pushStack:function(i,r,y){var z=b();b.isArray(i)?P.apply(z,i):b.merge(z,i);z.prevObject=this;z.context=this.context;if(r==="find")z.selector=this.selector+(this.selector?" ":
+"")+y;else if(r)z.selector=this.selector+"."+r+"("+y+")";return z},each:function(i,r){return b.each(this,i,r)},ready:function(i){b.bindReady();if(b.isReady)i.call(u,b);else q&&q.push(i);return this},eq:function(i){return i===-1?this.slice(i):this.slice(i,+i+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(i){return this.pushStack(b.map(this,function(r,y){return i.call(r,
+y,r)}))},end:function(){return this.prevObject||b(null)},push:P,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var i=arguments[0]||{},r=1,y=arguments.length,z=false,F,I,K,J,fa;if(typeof i==="boolean"){z=i;i=arguments[1]||{};r=2}if(typeof i!=="object"&&!b.isFunction(i))i={};if(y===r){i=this;--r}for(;r<y;r++)if((F=arguments[r])!=null)for(I in F){K=i[I];J=F[I];if(i!==J)if(z&&J&&(b.isPlainObject(J)||(fa=b.isArray(J)))){if(fa){fa=false;clone=K&&b.isArray(K)?K:[]}else clone=
+K&&b.isPlainObject(K)?K:{};i[I]=b.extend(z,clone,J)}else if(J!==A)i[I]=J}return i};b.extend({noConflict:function(i){E.$=e;if(i)E.jQuery=d;return b},isReady:false,readyWait:1,ready:function(i){i===true&&b.readyWait--;if(!b.readyWait||i!==true&&!b.isReady){if(!u.body)return setTimeout(b.ready,1);b.isReady=true;if(!(i!==true&&--b.readyWait>0)){if(q){for(var r=0;i=q[r++];)i.call(u,b);q=null}b.fn.triggerHandler&&b(u).triggerHandler("ready")}}},bindReady:function(){if(!p){p=true;if(u.readyState==="complete")return setTimeout(b.ready,
+1);if(u.addEventListener){u.addEventListener("DOMContentLoaded",t,false);E.addEventListener("load",b.ready,false)}else if(u.attachEvent){u.attachEvent("onreadystatechange",t);E.attachEvent("onload",b.ready);var i=false;try{i=E.frameElement==null}catch(r){}u.documentElement.doScroll&&i&&a()}}},isFunction:function(i){return b.type(i)==="function"},isArray:Array.isArray||function(i){return b.type(i)==="array"},isWindow:function(i){return i&&typeof i==="object"&&"setInterval"in i},isNaN:function(i){return i==
+null||!v.test(i)||isNaN(i)},type:function(i){return i==null?String(i):L[x.call(i)]||"object"},isPlainObject:function(i){if(!i||b.type(i)!=="object"||i.nodeType||b.isWindow(i))return false;if(i.constructor&&!C.call(i,"constructor")&&!C.call(i.constructor.prototype,"isPrototypeOf"))return false;for(var r in i);return r===A||C.call(i,r)},isEmptyObject:function(i){for(var r in i)return false;return true},error:function(i){throw i;},parseJSON:function(i){if(typeof i!=="string"||!i)return null;i=b.trim(i);
+if(D.test(i.replace(H,"@").replace(w,"]").replace(G,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(i):(new Function("return "+i))();else b.error("Invalid JSON: "+i)},noop:function(){},globalEval:function(i){if(i&&k.test(i)){var r=u.getElementsByTagName("head")[0]||u.documentElement,y=u.createElement("script");y.type="text/javascript";if(b.support.scriptEval)y.appendChild(u.createTextNode(i));else y.text=i;r.insertBefore(y,r.firstChild);r.removeChild(y)}},nodeName:function(i,r){return i.nodeName&&i.nodeName.toUpperCase()===
+r.toUpperCase()},each:function(i,r,y){var z,F=0,I=i.length,K=I===A||b.isFunction(i);if(y)if(K)for(z in i){if(r.apply(i[z],y)===false)break}else for(;F<I;){if(r.apply(i[F++],y)===false)break}else if(K)for(z in i){if(r.call(i[z],z,i[z])===false)break}else for(y=i[0];F<I&&r.call(y,F,y)!==false;y=i[++F]);return i},trim:R?function(i){return i==null?"":R.call(i)}:function(i){return i==null?"":i.toString().replace(l,"").replace(n,"")},makeArray:function(i,r){var y=r||[];if(i!=null){var z=b.type(i);i.length==
+null||z==="string"||z==="function"||z==="regexp"||b.isWindow(i)?P.call(y,i):b.merge(y,i)}return y},inArray:function(i,r){if(r.indexOf)return r.indexOf(i);for(var y=0,z=r.length;y<z;y++)if(r[y]===i)return y;return-1},merge:function(i,r){var y=i.length,z=0;if(typeof r.length==="number")for(var F=r.length;z<F;z++)i[y++]=r[z];else for(;r[z]!==A;)i[y++]=r[z++];i.length=y;return i},grep:function(i,r,y){var z=[],F;y=!!y;for(var I=0,K=i.length;I<K;I++){F=!!r(i[I],I);y!==F&&z.push(i[I])}return z},map:function(i,
+r,y){for(var z=[],F,I=0,K=i.length;I<K;I++){F=r(i[I],I,y);if(F!=null)z[z.length]=F}return z.concat.apply([],z)},guid:1,proxy:function(i,r,y){if(arguments.length===2)if(typeof r==="string"){y=i;i=y[r];r=A}else if(r&&!b.isFunction(r)){y=r;r=A}if(!r&&i)r=function(){return i.apply(y||this,arguments)};if(i)r.guid=i.guid=i.guid||r.guid||b.guid++;return r},access:function(i,r,y,z,F,I){var K=i.length;if(typeof r==="object"){for(var J in r)b.access(i,J,r[J],z,F,y);return i}if(y!==A){z=!I&&z&&b.isFunction(y);
+for(J=0;J<K;J++)F(i[J],r,z?y.call(i[J],J,F(i[J],r)):y,I);return i}return K?F(i[0],r):A},now:function(){return(new Date).getTime()},uaMatch:function(i){i=i.toLowerCase();i=M.exec(i)||g.exec(i)||j.exec(i)||i.indexOf("compatible")<0&&o.exec(i)||[];return{browser:i[1]||"",version:i[2]||"0"}},browser:{}});b.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(i,r){L["[object "+r+"]"]=r.toLowerCase()});m=b.uaMatch(m);if(m.browser){b.browser[m.browser]=true;b.browser.version=
+m.version}if(b.browser.webkit)b.browser.safari=true;if(Q)b.inArray=function(i,r){return Q.call(r,i)};if(!/\s/.test("\u00a0")){l=/^[\s\xA0]+/;n=/[\s\xA0]+$/}f=b(u);if(u.addEventListener)t=function(){u.removeEventListener("DOMContentLoaded",t,false);b.ready()};else if(u.attachEvent)t=function(){if(u.readyState==="complete"){u.detachEvent("onreadystatechange",t);b.ready()}};return E.jQuery=E.$=b}();(function(){c.support={};var a=u.documentElement,b=u.createElement("script"),d=u.createElement("div"),
+e="script"+c.now();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],k=u.createElement("select"),l=k.appendChild(u.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),
+hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:l.selected,optDisabled:false,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};k.disabled=true;c.support.optDisabled=!l.disabled;b.type="text/javascript";try{b.appendChild(u.createTextNode("window."+e+"=1;"))}catch(n){}a.insertBefore(b,
+a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function s(){c.support.noCloneEvent=false;d.detachEvent("onclick",s)});d.cloneNode(true).fireEvent("onclick")}d=u.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=u.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var s=u.createElement("div");
+s.style.width=s.style.paddingLeft="1px";u.body.appendChild(s);c.boxModel=c.support.boxModel=s.offsetWidth===2;if("zoom"in s.style){s.style.display="inline";s.style.zoom=1;c.support.inlineBlockNeedsLayout=s.offsetWidth===2;s.style.display="";s.innerHTML="<div style='width:4px;'></div>";c.support.shrinkWrapBlocks=s.offsetWidth!==2}s.innerHTML="<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";var v=s.getElementsByTagName("td");c.support.reliableHiddenOffsets=v[0].offsetHeight===
+0;v[0].style.display="";v[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&v[0].offsetHeight===0;s.innerHTML="";u.body.removeChild(s).style.display="none"});a=function(s){var v=u.createElement("div");s="on"+s;var B=s in v;if(!B){v.setAttribute(s,"return;");B=typeof v[s]==="function"}return B};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",
+cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var pa={},Oa=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?pa:a;var e=a.nodeType,f=e?a[c.expando]:null,h=c.cache;if(!(e&&!f&&typeof b==="string"&&d===A)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=
+c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==A)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?pa:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando);else if(d)delete f[e];else for(var k in a)delete a[k]}},acceptData:function(a){if(a.nodeName){var b=
+c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){if(typeof a==="undefined")return this.length?c.data(this[0]):null;else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===A){var e=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(e===A&&this.length){e=c.data(this[0],a);if(e===A&&this[0].nodeType===1){e=this[0].getAttribute("data-"+a);if(typeof e===
+"string")try{e=e==="true"?true:e==="false"?false:e==="null"?null:!c.isNaN(e)?parseFloat(e):Oa.test(e)?c.parseJSON(e):e}catch(f){}else e=A}}return e===A&&d[1]?this.data(d[0]):e}else return this.each(function(){var h=c(this),k=[d[0],b];h.triggerHandler("setData"+d[1]+"!",k);c.data(this,a,b);h.triggerHandler("changeData"+d[1]+"!",k)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var e=c.data(a,b);if(!d)return e||
+[];if(!e||c.isArray(d))e=c.data(a,b,c.makeArray(d));else e.push(d);return e}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),e=d.shift();if(e==="inprogress")e=d.shift();if(e){b==="fx"&&d.unshift("inprogress");e.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===A)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,
+a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var qa=/[\n\t]/g,ga=/\s+/,Pa=/\r/g,Qa=/^(?:href|src|style)$/,Ra=/^(?:button|input)$/i,Sa=/^(?:button|input|object|select|textarea)$/i,Ta=/^a(?:rea)?$/i,ra=/^(?:radio|checkbox)$/i;c.fn.extend({attr:function(a,b){return c.access(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,
+a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(s){var v=c(this);v.addClass(a.call(this,s,v.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ga),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1)if(f.className){for(var h=" "+f.className+" ",k=f.className,l=0,n=b.length;l<n;l++)if(h.indexOf(" "+b[l]+" ")<0)k+=" "+b[l];f.className=c.trim(k)}else f.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(n){var s=
+c(this);s.removeClass(a.call(this,n,s.attr("class")))});if(a&&typeof a==="string"||a===A)for(var b=(a||"").split(ga),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1&&f.className)if(a){for(var h=(" "+f.className+" ").replace(qa," "),k=0,l=b.length;k<l;k++)h=h.replace(" "+b[k]+" "," ");f.className=c.trim(h)}else f.className=""}return this},toggleClass:function(a,b){var d=typeof a,e=typeof b==="boolean";if(c.isFunction(a))return this.each(function(f){var h=c(this);h.toggleClass(a.call(this,
+f,h.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var f,h=0,k=c(this),l=b,n=a.split(ga);f=n[h++];){l=e?l:!k.hasClass(f);k[l?"addClass":"removeClass"](f)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(qa," ").indexOf(a)>-1)return true;return false},
+val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one";if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h<e;h++){var k=f[h];if(k.selected&&(c.support.optDisabled?!k.disabled:k.getAttribute("disabled")===null)&&(!k.parentNode.disabled||!c.nodeName(k.parentNode,"optgroup"))){a=c(k).val();if(b)return a;d.push(a)}}return d}if(ra.test(b.type)&&
+!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Pa,"")}return A}var l=c.isFunction(a);return this.each(function(n){var s=c(this),v=a;if(this.nodeType===1){if(l)v=a.call(this,n,s.val());if(v==null)v="";else if(typeof v==="number")v+="";else if(c.isArray(v))v=c.map(v,function(D){return D==null?"":D+""});if(c.isArray(v)&&ra.test(this.type))this.checked=c.inArray(s.val(),v)>=0;else if(c.nodeName(this,"select")){var B=c.makeArray(v);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),B)>=0});if(!B.length)this.selectedIndex=-1}else this.value=v}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return A;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==A;b=e&&c.props[b]||b;if(a.nodeType===1){var h=Qa.test(b);if((b in a||a[b]!==A)&&e&&!h){if(f){b==="type"&&Ra.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:Sa.test(a.nodeName)||Ta.test(a.nodeName)&&a.href?0:A;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return A;a=!c.support.hrefNormalized&&e&&
+h?a.getAttribute(b,2):a.getAttribute(b);return a===null?A:a}}});var X=/\.(.*)$/,ha=/^(?:textarea|input|select)$/i,Ha=/\./g,Ia=/ /g,Ua=/[^\w\s.|`]/g,Va=function(a){return a.replace(Ua,"\\$&")},sa={focusin:0,focusout:0};c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var k=a.nodeType?"events":"__events__",l=h[k],n=h.handle;if(typeof l===
+"function"){n=l.handle;l=l.events}else if(!l){a.nodeType||(h[k]=h=function(){});h.events=l={}}if(!n)h.handle=n=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(n.elem,arguments):A};n.elem=a;b=b.split(" ");for(var s=0,v;k=b[s++];){h=f?c.extend({},f):{handler:d,data:e};if(k.indexOf(".")>-1){v=k.split(".");k=v.shift();h.namespace=v.slice(0).sort().join(".")}else{v=[];h.namespace=""}h.type=k;if(!h.guid)h.guid=d.guid;var B=l[k],D=c.event.special[k]||{};if(!B){B=l[k]=[];
+if(!D.setup||D.setup.call(a,e,v,n)===false)if(a.addEventListener)a.addEventListener(k,n,false);else a.attachEvent&&a.attachEvent("on"+k,n)}if(D.add){D.add.call(a,h);if(!h.handler.guid)h.handler.guid=d.guid}B.push(h);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,k=0,l,n,s,v,B,D,H=a.nodeType?"events":"__events__",w=c.data(a),G=w&&w[H];if(w&&G){if(typeof G==="function"){w=G;G=G.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||
+typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in G)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[k++];){v=f;l=f.indexOf(".")<0;n=[];if(!l){n=f.split(".");f=n.shift();s=RegExp("(^|\\.)"+c.map(n.slice(0).sort(),Va).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(B=G[f])if(d){v=c.event.special[f]||{};for(h=e||0;h<B.length;h++){D=B[h];if(d.guid===D.guid){if(l||s.test(D.namespace)){e==null&&B.splice(h--,1);v.remove&&v.remove.call(a,D)}if(e!=null)break}}if(B.length===0||e!=null&&B.length===1){if(!v.teardown||
+v.teardown.call(a,n)===false)c.removeEvent(a,f,w.handle);delete G[f]}}else for(h=0;h<B.length;h++){D=B[h];if(l||s.test(D.namespace)){c.event.remove(a,v,D.handler,h);B.splice(h--,1)}}}if(c.isEmptyObject(G)){if(b=w.handle)b.elem=null;delete w.events;delete w.handle;if(typeof w==="function")c.removeData(a,H);else c.isEmptyObject(w)&&c.removeData(a)}}}}},trigger:function(a,b,d,e){var f=a.type||a;if(!e){a=typeof a==="object"?a[c.expando]?a:c.extend(c.Event(f),a):c.Event(f);if(f.indexOf("!")>=0){a.type=
+f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return A;a.result=A;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===
+false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){e=a.target;var k,l=f.replace(X,""),n=c.nodeName(e,"a")&&l==="click",s=c.event.special[l]||{};if((!s._default||s._default.call(d,a)===false)&&!n&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[l]){if(k=e["on"+l])e["on"+l]=null;c.event.triggered=true;e[l]()}}catch(v){}if(k)e["on"+l]=k;c.event.triggered=false}}},handle:function(a){var b,d,e;
+d=[];var f,h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var k=d.length;f<k;f++){var l=d[f];if(b||e.test(l.namespace)){a.handler=l.handler;a.data=
+l.data;a.handleObj=l;l=l.handler.apply(this,h);if(l!==A){a.result=l;if(l===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[c.expando])return a;var b=a;a=c.Event(b);for(var d=this.props.length,e;d;){e=this.props[--d];a[e]=b[e]}if(!a.target)a.target=a.srcElement||u;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=u.documentElement;d=u.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(a.which==null&&(a.charCode!=null||a.keyCode!=null))a.which=a.charCode!=null?a.charCode:a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==A)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,Y(a.origType,a.selector),c.extend({},a,{handler:Ga,guid:a.handler.guid}))},remove:function(a){c.event.remove(this,
+Y(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,d){if(c.isWindow(this))this.onbeforeunload=d},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.removeEvent=u.removeEventListener?function(a,b,d){a.removeEventListener&&a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent&&a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=
+c.now();this[c.expando]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=ba;var a=this.originalEvent;if(a)if(a.preventDefault)a.preventDefault();else a.returnValue=false},stopPropagation:function(){this.isPropagationStopped=ba;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=ba;this.stopPropagation()},isDefaultPrevented:U,isPropagationStopped:U,isImmediatePropagationStopped:U};
+var ta=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},ua=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?ua:ta,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?ua:ta)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(){if(this.nodeName.toLowerCase()!==
+"form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length){a.liveFired=A;return ja("submit",this,arguments)}});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13){a.liveFired=A;return ja("submit",this,arguments)}})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};if(!c.support.changeBubbles){var V,
+va=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ha.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=va(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===A||f===e))if(e!=null||f){a.type="change";a.liveFired=
+A;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",va(a))}},setup:function(){if(this.type===
+"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ha.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ha.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}u.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){sa[b]++===0&&u.addEventListener(a,d,true)},teardown:function(){--sa[b]===
+0&&u.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=A}var k=b==="one"?c.proxy(f,function(n){c(this).unbind(n,k);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var l=this.length;h<l;h++)c.event.add(this[h],d,k,e)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&!a.preventDefault)for(var d in a)this.unbind(d,
+a[d]);else{d=0;for(var e=this.length;d<e;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,e){return this.live(b,d,e,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var d=c.Event(a);d.preventDefault();d.stopPropagation();c.event.trigger(d,b,this[0]);return d.result}},toggle:function(a){for(var b=arguments,d=
+1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(e){var f=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,f+1);e.preventDefault();return b[f].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var wa={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,e,f,h){var k,l=0,n,s,v=h||this.selector;h=h?this:c(this.context);if(typeof d===
+"object"&&!d.preventDefault){for(k in d)h[b](k,e,d[k],v);return this}if(c.isFunction(e)){f=e;e=A}for(d=(d||"").split(" ");(k=d[l++])!=null;){n=X.exec(k);s="";if(n){s=n[0];k=k.replace(X,"")}if(k==="hover")d.push("mouseenter"+s,"mouseleave"+s);else{n=k;if(k==="focus"||k==="blur"){d.push(wa[k]+s);k+=s}else k=(wa[k]||k)+s;if(b==="live"){s=0;for(var B=h.length;s<B;s++)c.event.add(h[s],"live."+Y(k,v),{data:e,selector:v,handler:f,origType:k,origHandler:f,preType:n})}else h.unbind("live."+Y(k,v),f)}}return this}});
+c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d,e){if(e==null){e=d;d=null}return arguments.length>0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
+(function(){function a(g,j,o,m,p,q){p=0;for(var t=m.length;p<t;p++){var x=m[p];if(x){x=x[g];for(var C=false;x;){if(x.sizcache===o){C=m[x.sizset];break}if(x.nodeType===1&&!q){x.sizcache=o;x.sizset=p}if(x.nodeName.toLowerCase()===j){C=x;break}x=x[g]}m[p]=C}}}function b(g,j,o,m,p,q){p=0;for(var t=m.length;p<t;p++){var x=m[p];if(x){x=x[g];for(var C=false;x;){if(x.sizcache===o){C=m[x.sizset];break}if(x.nodeType===1){if(!q){x.sizcache=o;x.sizset=p}if(typeof j!=="string"){if(x===j){C=true;break}}else if(l.filter(j,
+[x]).length>0){C=x;break}}x=x[g]}m[p]=C}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,k=true;[0,0].sort(function(){k=false;return 0});var l=function(g,j,o,m){o=o||[];var p=j=j||u;if(j.nodeType!==1&&j.nodeType!==9)return[];if(!g||typeof g!=="string")return o;var q=[],t,x,C,P,N=true,R=l.isXML(j),Q=g,L;do{d.exec("");if(t=d.exec(Q)){Q=t[3];q.push(t[1]);if(t[2]){P=t[3];
+break}}}while(t);if(q.length>1&&s.exec(g))if(q.length===2&&n.relative[q[0]])x=M(q[0]+q[1],j);else for(x=n.relative[q[0]]?[j]:l(q.shift(),j);q.length;){g=q.shift();if(n.relative[g])g+=q.shift();x=M(g,x)}else{if(!m&&q.length>1&&j.nodeType===9&&!R&&n.match.ID.test(q[0])&&!n.match.ID.test(q[q.length-1])){t=l.find(q.shift(),j,R);j=t.expr?l.filter(t.expr,t.set)[0]:t.set[0]}if(j){t=m?{expr:q.pop(),set:D(m)}:l.find(q.pop(),q.length===1&&(q[0]==="~"||q[0]==="+")&&j.parentNode?j.parentNode:j,R);x=t.expr?l.filter(t.expr,
+t.set):t.set;if(q.length>0)C=D(x);else N=false;for(;q.length;){t=L=q.pop();if(n.relative[L])t=q.pop();else L="";if(t==null)t=j;n.relative[L](C,t,R)}}else C=[]}C||(C=x);C||l.error(L||g);if(f.call(C)==="[object Array]")if(N)if(j&&j.nodeType===1)for(g=0;C[g]!=null;g++){if(C[g]&&(C[g]===true||C[g].nodeType===1&&l.contains(j,C[g])))o.push(x[g])}else for(g=0;C[g]!=null;g++)C[g]&&C[g].nodeType===1&&o.push(x[g]);else o.push.apply(o,C);else D(C,o);if(P){l(P,p,o,m);l.uniqueSort(o)}return o};l.uniqueSort=function(g){if(w){h=
+k;g.sort(w);if(h)for(var j=1;j<g.length;j++)g[j]===g[j-1]&&g.splice(j--,1)}return g};l.matches=function(g,j){return l(g,null,null,j)};l.matchesSelector=function(g,j){return l(j,null,null,[g]).length>0};l.find=function(g,j,o){var m;if(!g)return[];for(var p=0,q=n.order.length;p<q;p++){var t=n.order[p],x;if(x=n.leftMatch[t].exec(g)){var C=x[1];x.splice(1,1);if(C.substr(C.length-1)!=="\\"){x[1]=(x[1]||"").replace(/\\/g,"");m=n.find[t](x,j,o);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=j.getElementsByTagName("*"));
+return{set:m,expr:g}};l.filter=function(g,j,o,m){for(var p=g,q=[],t=j,x,C,P=j&&j[0]&&l.isXML(j[0]);g&&j.length;){for(var N in n.filter)if((x=n.leftMatch[N].exec(g))!=null&&x[2]){var R=n.filter[N],Q,L;L=x[1];C=false;x.splice(1,1);if(L.substr(L.length-1)!=="\\"){if(t===q)q=[];if(n.preFilter[N])if(x=n.preFilter[N](x,t,o,q,m,P)){if(x===true)continue}else C=Q=true;if(x)for(var i=0;(L=t[i])!=null;i++)if(L){Q=R(L,x,i,t);var r=m^!!Q;if(o&&Q!=null)if(r)C=true;else t[i]=false;else if(r){q.push(L);C=true}}if(Q!==
+A){o||(t=q);g=g.replace(n.match[N],"");if(!C)return[];break}}}if(g===p)if(C==null)l.error(g);else break;p=g}return t};l.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=l.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
+POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,j){var o=typeof j==="string",m=o&&!/\W/.test(j);o=o&&!m;if(m)j=j.toLowerCase();m=0;for(var p=g.length,q;m<p;m++)if(q=g[m]){for(;(q=q.previousSibling)&&q.nodeType!==1;);g[m]=o||q&&q.nodeName.toLowerCase()===
+j?q||false:q===j}o&&l.filter(j,g,true)},">":function(g,j){var o=typeof j==="string",m,p=0,q=g.length;if(o&&!/\W/.test(j))for(j=j.toLowerCase();p<q;p++){if(m=g[p]){o=m.parentNode;g[p]=o.nodeName.toLowerCase()===j?o:false}}else{for(;p<q;p++)if(m=g[p])g[p]=o?m.parentNode:m.parentNode===j;o&&l.filter(j,g,true)}},"":function(g,j,o){var m=e++,p=b,q;if(typeof j==="string"&&!/\W/.test(j)){q=j=j.toLowerCase();p=a}p("parentNode",j,m,g,q,o)},"~":function(g,j,o){var m=e++,p=b,q;if(typeof j==="string"&&!/\W/.test(j)){q=
+j=j.toLowerCase();p=a}p("previousSibling",j,m,g,q,o)}},find:{ID:function(g,j,o){if(typeof j.getElementById!=="undefined"&&!o)return(g=j.getElementById(g[1]))&&g.parentNode?[g]:[]},NAME:function(g,j){if(typeof j.getElementsByName!=="undefined"){for(var o=[],m=j.getElementsByName(g[1]),p=0,q=m.length;p<q;p++)m[p].getAttribute("name")===g[1]&&o.push(m[p]);return o.length===0?null:o}},TAG:function(g,j){return j.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,j,o,m,p,q){g=" "+g[1].replace(/\\/g,
+"")+" ";if(q)return g;q=0;for(var t;(t=j[q])!=null;q++)if(t)if(p^(t.className&&(" "+t.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))o||m.push(t);else if(o)j[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var j=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=j[1]+(j[2]||1)-0;g[3]=j[3]-0}g[0]=e++;return g},ATTR:function(g,j,o,
+m,p,q){j=g[1].replace(/\\/g,"");if(!q&&n.attrMap[j])g[1]=n.attrMap[j];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,j,o,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=l(g[3],null,null,j);else{g=l.filter(g[3],j,o,true^p);o||m.push.apply(m,g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===
+true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,j,o){return!!l(o[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===
+g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,j){return j===0},last:function(g,j,o,m){return j===m.length-1},even:function(g,j){return j%2===0},odd:function(g,j){return j%2===1},lt:function(g,j,o){return j<o[3]-0},gt:function(g,j,o){return j>o[3]-0},nth:function(g,j,o){return o[3]-
+0===j},eq:function(g,j,o){return o[3]-0===j}},filter:{PSEUDO:function(g,j,o,m){var p=j[1],q=n.filters[p];if(q)return q(g,o,j,m);else if(p==="contains")return(g.textContent||g.innerText||l.getText([g])||"").indexOf(j[3])>=0;else if(p==="not"){j=j[3];o=0;for(m=j.length;o<m;o++)if(j[o]===g)return false;return true}else l.error("Syntax error, unrecognized expression: "+p)},CHILD:function(g,j){var o=j[1],m=g;switch(o){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(o===
+"first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":o=j[2];var p=j[3];if(o===1&&p===0)return true;var q=j[0],t=g.parentNode;if(t&&(t.sizcache!==q||!g.nodeIndex)){var x=0;for(m=t.firstChild;m;m=m.nextSibling)if(m.nodeType===1)m.nodeIndex=++x;t.sizcache=q}m=g.nodeIndex-p;return o===0?m===0:m%o===0&&m/o>=0}},ID:function(g,j){return g.nodeType===1&&g.getAttribute("id")===j},TAG:function(g,j){return j==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===
+j},CLASS:function(g,j){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(j)>-1},ATTR:function(g,j){var o=j[1];o=n.attrHandle[o]?n.attrHandle[o](g):g[o]!=null?g[o]:g.getAttribute(o);var m=o+"",p=j[2],q=j[4];return o==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&o!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,j,o,m){var p=n.setFilters[j[2]];
+if(p)return p(g,o,j,m)}}},s=n.match.POS,v=function(g,j){return"\\"+(j-0+1)},B;for(B in n.match){n.match[B]=RegExp(n.match[B].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[B]=RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[B].source.replace(/\\(\d+)/g,v))}var D=function(g,j){g=Array.prototype.slice.call(g,0);if(j){j.push.apply(j,g);return j}return g};try{Array.prototype.slice.call(u.documentElement.childNodes,0)}catch(H){D=function(g,j){var o=j||[],m=0;if(f.call(g)==="[object Array]")Array.prototype.push.apply(o,
+g);else if(typeof g.length==="number")for(var p=g.length;m<p;m++)o.push(g[m]);else for(;g[m];m++)o.push(g[m]);return o}}var w,G;if(u.documentElement.compareDocumentPosition)w=function(g,j){if(g===j){h=true;return 0}if(!g.compareDocumentPosition||!j.compareDocumentPosition)return g.compareDocumentPosition?-1:1;return g.compareDocumentPosition(j)&4?-1:1};else{w=function(g,j){var o=[],m=[],p=g.parentNode,q=j.parentNode,t=p;if(g===j){h=true;return 0}else if(p===q)return G(g,j);else if(p){if(!q)return 1}else return-1;
+for(;t;){o.unshift(t);t=t.parentNode}for(t=q;t;){m.unshift(t);t=t.parentNode}p=o.length;q=m.length;for(t=0;t<p&&t<q;t++)if(o[t]!==m[t])return G(o[t],m[t]);return t===p?G(g,m[t],-1):G(o[t],j,1)};G=function(g,j,o){if(g===j)return o;for(g=g.nextSibling;g;){if(g===j)return-1;g=g.nextSibling}return 1}}l.getText=function(g){for(var j="",o,m=0;g[m];m++){o=g[m];if(o.nodeType===3||o.nodeType===4)j+=o.nodeValue;else if(o.nodeType!==8)j+=l.getText(o.childNodes)}return j};(function(){var g=u.createElement("div"),
+j="script"+(new Date).getTime();g.innerHTML="<a name='"+j+"'/>";var o=u.documentElement;o.insertBefore(g,o.firstChild);if(u.getElementById(j)){n.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:A:[]};n.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}o.removeChild(g);
+o=g=null})();(function(){var g=u.createElement("div");g.appendChild(u.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(j,o){var m=o.getElementsByTagName(j[1]);if(j[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(j){return j.getAttribute("href",2)};g=null})();u.querySelectorAll&&
+function(){var g=l,j=u.createElement("div");j.innerHTML="<p class='TEST'></p>";if(!(j.querySelectorAll&&j.querySelectorAll(".TEST").length===0)){l=function(m,p,q,t){p=p||u;if(!t&&!l.isXML(p))if(p.nodeType===9)try{return D(p.querySelectorAll(m),q)}catch(x){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var C=p.id,P=p.id="__sizzle__";try{return D(p.querySelectorAll("#"+P+" "+m),q)}catch(N){}finally{if(C)p.id=C;else p.removeAttribute("id")}}return g(m,p,q,t)};for(var o in g)l[o]=g[o];
+j=null}}();(function(){var g=u.documentElement,j=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,o=false;try{j.call(u.documentElement,":sizzle")}catch(m){o=true}if(j)l.matchesSelector=function(p,q){try{if(o||!n.match.PSEUDO.test(q))return j.call(p,q)}catch(t){}return l(q,null,null,[p]).length>0}})();(function(){var g=u.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===
+0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(j,o,m){if(typeof o.getElementsByClassName!=="undefined"&&!m)return o.getElementsByClassName(j[1])};g=null}}})();l.contains=u.documentElement.contains?function(g,j){return g!==j&&(g.contains?g.contains(j):true)}:function(g,j){return!!(g.compareDocumentPosition(j)&16)};l.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var M=function(g,
+j){for(var o=[],m="",p,q=j.nodeType?[j]:j;p=n.match.PSEUDO.exec(g);){m+=p[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;p=0;for(var t=q.length;p<t;p++)l(g,q[p],o);return l.filter(m,o)};c.find=l;c.expr=l.selectors;c.expr[":"]=c.expr.filters;c.unique=l.uniqueSort;c.text=l.getText;c.isXMLDoc=l.isXML;c.contains=l.contains})();var Wa=/Until$/,Xa=/^(?:parents|prevUntil|prevAll)/,Ya=/,/,Ja=/^.[^:#\[\.,]*$/,Za=Array.prototype.slice,$a=c.expr.match.POS;c.fn.extend({find:function(a){for(var b=this.pushStack("",
+"find",a),d=0,e=0,f=this.length;e<f;e++){d=b.length;c.find(a,this[e],b);if(e>0)for(var h=d;h<b.length;h++)for(var k=0;k<d;k++)if(b[k]===b[h]){b.splice(h--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,e=b.length;d<e;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(ka(this,a,false),"not",a)},filter:function(a){return this.pushStack(ka(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,
+b){var d=[],e,f,h=this[0];if(c.isArray(a)){var k={},l,n=1;if(h&&a.length){e=0;for(f=a.length;e<f;e++){l=a[e];k[l]||(k[l]=c.expr.match.POS.test(l)?c(l,b||this.context):l)}for(;h&&h.ownerDocument&&h!==b;){for(l in k){e=k[l];if(e.jquery?e.index(h)>-1:c(h).is(e))d.push({selector:l,elem:h,level:n})}h=h.parentNode;n++}}return d}k=$a.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e<f;e++)for(h=this[e];h;)if(k?k.index(h)>-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||
+!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context):c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});
+c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",
+d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Wa.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||Ya.test(e))&&Xa.test(a))f=f.reverse();return this.pushStack(f,a,Za.call(arguments).join(","))}});
+c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===A||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var xa=/ jQuery\d+="(?:\d+|null)"/g,
+$=/^\s+/,ya=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,za=/<([\w:]+)/,ab=/<tbody/i,bb=/<|&#?\w+;/,Aa=/<(?:script|object|embed|option|style)/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,cb=/\=([^="'>\s]+\/)>/g,O={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],
+area:[1,"<map>","</map>"],_default:[0,"",""]};O.optgroup=O.option;O.tbody=O.tfoot=O.colgroup=O.caption=O.thead;O.th=O.td;if(!c.support.htmlSerialize)O._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==A)return this.empty().append((this[0]&&this[0].ownerDocument||u).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,
+d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},
+unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=
+c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));
+c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(xa,"").replace(cb,'="$1">').replace($,
+"")],e)[0]}else return this.cloneNode(true)});if(a===true){la(this,b);la(this.find("*"),b.find("*"))}return b},html:function(a){if(a===A)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(xa,""):null;else if(typeof a==="string"&&!Aa.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!O[(za.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ya,"<$1></$2>");try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(e){this.empty().append(a)}}else c.isFunction(a)?
+this.each(function(f){var h=c(this);h.html(a.call(this,f,h.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),e=d.html();d.replaceWith(a.call(this,b,e))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,
+true)},domManip:function(a,b,d){var e,f,h=a[0],k=[],l;if(!c.support.checkClone&&arguments.length===3&&typeof h==="string"&&Ba.test(h))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(h))return this.each(function(s){var v=c(this);a[0]=h.call(this,s,b?v.html():A);v.domManip(a,b,d)});if(this[0]){e=h&&h.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:c.buildFragment(a,this,k);l=e.fragment;if(f=l.childNodes.length===1?l=l.firstChild:
+l.firstChild){b=b&&c.nodeName(f,"tr");f=0;for(var n=this.length;f<n;f++)d.call(b?c.nodeName(this[f],"table")?this[f].getElementsByTagName("tbody")[0]||this[f].appendChild(this[f].ownerDocument.createElement("tbody")):this[f]:this[f],f>0||e.cacheable||this.length>1?l.cloneNode(true):l)}k.length&&c.each(k,Ka)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:u;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===u&&!Aa.test(a[0])&&(c.support.checkClone||
+!Ba.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=
+d.length;f<h;f++){var k=(f>0?this.clone(true):this).get();c(d[f])[b](k);e=e.concat(k)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||u;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||u;for(var f=[],h=0,k;(k=a[h])!=null;h++){if(typeof k==="number")k+="";if(k){if(typeof k==="string"&&!bb.test(k))k=b.createTextNode(k);else if(typeof k==="string"){k=k.replace(ya,"<$1></$2>");var l=(za.exec(k)||["",""])[1].toLowerCase(),n=O[l]||O._default,
+s=n[0],v=b.createElement("div");for(v.innerHTML=n[1]+k+n[2];s--;)v=v.lastChild;if(!c.support.tbody){s=ab.test(k);l=l==="table"&&!s?v.firstChild&&v.firstChild.childNodes:n[1]==="<table>"&&!s?v.childNodes:[];for(n=l.length-1;n>=0;--n)c.nodeName(l[n],"tbody")&&!l[n].childNodes.length&&l[n].parentNode.removeChild(l[n])}!c.support.leadingWhitespace&&$.test(k)&&v.insertBefore(b.createTextNode($.exec(k)[0]),v.firstChild);k=v.childNodes}if(k.nodeType)f.push(k);else f=c.merge(f,k)}}if(d)for(h=0;f[h];h++)if(e&&
+c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script"))));d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,k=0,l;(l=a[k])!=null;k++)if(!(l.nodeName&&c.noData[l.nodeName.toLowerCase()]))if(d=l[c.expando]){if((b=e[d])&&b.events)for(var n in b.events)f[n]?
+c.event.remove(l,n):c.removeEvent(l,n,b.handle);if(h)delete l[c.expando];else l.removeAttribute&&l.removeAttribute(c.expando);delete e[d]}}});var Ca=/alpha\([^)]*\)/i,db=/opacity=([^)]*)/,eb=/-([a-z])/ig,fb=/([A-Z])/g,Da=/^-?\d+(?:px)?$/i,gb=/^-?\d/,hb={position:"absolute",visibility:"hidden",display:"block"},La=["Left","Right"],Ma=["Top","Bottom"],W,ib=u.defaultView&&u.defaultView.getComputedStyle,jb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===A)return this;
+return c.access(this,a,b,true,function(d,e,f){return f!==A?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true,zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),k=a.style,l=c.cssHooks[h];b=c.cssProps[h]||
+h;if(d!==A){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!l||!("set"in l)||(d=l.set(a,d))!==A)try{k[b]=d}catch(n){}}}else{if(l&&"get"in l&&(f=l.get(a,false,e))!==A)return f;return k[b]}}},css:function(a,b,d){var e,f=c.camelCase(b),h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==A)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=
+e[f]},camelCase:function(a){return a.replace(eb,jb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=ma(d,b,f);else c.swap(d,hb,function(){h=ma(d,b,f)});return h+"px"}},set:function(d,e){if(Da.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return db.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":
+b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f=d.filter||"";d.filter=Ca.test(f)?f.replace(Ca,e):d.filter+" "+e}};if(ib)W=function(a,b,d){var e;d=d.replace(fb,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return A;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};else if(u.documentElement.currentStyle)W=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],
+h=a.style;if(!Da.test(f)&&gb.test(f)){d=h.left;e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f};if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var kb=c.now(),lb=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+mb=/^(?:select|textarea)/i,nb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ob=/^(?:GET|HEAD|DELETE)$/,Na=/\[\]$/,T=/\=\?(&|$)/,ia=/\?/,pb=/([?&])_=[^&]*/,qb=/^(\w+:)?\/\/([^\/?#]+)/,rb=/%20/g,sb=/#.*$/,Ea=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ea)return Ea.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=
+b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(k,l){if(l==="success"||l==="notmodified")h.html(f?c("<div>").append(k.responseText.replace(lb,"")).find(f):k.responseText);d&&h.each(d,[k.responseText,l,k])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&
+!this.disabled&&(this.checked||mb.test(this.nodeName)||nb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})},
+getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html",
+script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),k=ob.test(h);b.url=b.url.replace(sb,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ia.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data||
+!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+kb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var l=E[d];E[d]=function(m){f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);if(c.isFunction(l))l(m);else{E[d]=A;try{delete E[d]}catch(p){}}v&&v.removeChild(B)}}if(b.dataType==="script"&&b.cache===null)b.cache=
+false;if(b.cache===false&&h==="GET"){var n=c.now(),s=b.url.replace(pb,"$1_="+n);b.url=s+(s===b.url?(ia.test(b.url)?"&":"?")+"_="+n:"")}if(b.data&&h==="GET")b.url+=(ia.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");n=(n=qb.exec(b.url))&&(n[1]&&n[1]!==location.protocol||n[2]!==location.host);if(b.dataType==="script"&&h==="GET"&&n){var v=u.getElementsByTagName("head")[0]||u.documentElement,B=u.createElement("script");if(b.scriptCharset)B.charset=b.scriptCharset;B.src=
+b.url;if(!d){var D=false;B.onload=B.onreadystatechange=function(){if(!D&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){D=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);B.onload=B.onreadystatechange=null;v&&B.parentNode&&v.removeChild(B)}}}v.insertBefore(B,v.firstChild);return A}var H=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!k||a&&a.contentType)w.setRequestHeader("Content-Type",
+b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}n||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(G){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&&
+c.triggerGlobal(b,"ajaxSend",[w,b]);var M=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){H||c.handleComplete(b,w,e,f);H=true;if(w)w.onreadystatechange=c.noop}else if(!H&&w&&(w.readyState===4||m==="timeout")){H=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d||
+c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&g.call&&g.call(w);M("abort")}}catch(j){}b.async&&b.timeout>0&&setTimeout(function(){w&&!H&&M("timeout")},b.timeout);try{w.send(k||b.data==null?null:b.data)}catch(o){c.handleError(b,w,null,o);c.handleComplete(b,w,e,f)}b.async||M();return w}},param:function(a,b){var d=[],e=function(h,k){k=c.isFunction(k)?k():k;d[d.length]=encodeURIComponent(h)+
+"="+encodeURIComponent(k)};if(b===A)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)ca(f,a[f],b,e);return d.join("&").replace(rb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess",[b,a])},handleComplete:function(a,
+b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),e=a.getResponseHeader("Etag");
+if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}});if(E.ActiveXObject)c.ajaxSettings.xhr=
+function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var da={},tb=/^(?:toggle|show|hide)$/,ub=/^([+\-]=)?([\d+.\-]+)(.*)$/,aa,na=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show",3),a,b,d);else{a=
+0;for(b=this.length;a<b;a++){if(!c.data(this[a],"olddisplay")&&this[a].style.display==="none")this[a].style.display="";this[a].style.display===""&&c.css(this[a],"display")==="none"&&c.data(this[a],"olddisplay",oa(this[a].nodeName))}for(a=0;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b,d){if(a||a===0)return this.animate(S("hide",3),a,b,d);else{a=0;for(b=this.length;a<b;a++){d=c.css(this[a],"display");d!=="none"&&c.data(this[a],"olddisplay",d)}for(a=
+0;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b,d){var e=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||e?this.each(function(){var f=e?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(S("toggle",3),a,b,d);return this},fadeTo:function(a,b,d,e){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d,e)},animate:function(a,b,d,e){var f=c.speed(b,d,e);if(c.isEmptyObject(a))return this.each(f.complete);
+return this[f.queue===false?"each":"queue"](function(){var h=c.extend({},f),k,l=this.nodeType===1,n=l&&c(this).is(":hidden"),s=this;for(k in a){var v=c.camelCase(k);if(k!==v){a[v]=a[k];delete a[k];k=v}if(a[k]==="hide"&&n||a[k]==="show"&&!n)return h.complete.call(this);if(l&&(k==="height"||k==="width")){h.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(c.css(this,"display")==="inline"&&c.css(this,"float")==="none")if(c.support.inlineBlockNeedsLayout)if(oa(this.nodeName)===
+"inline")this.style.display="inline-block";else{this.style.display="inline";this.style.zoom=1}else this.style.display="inline-block"}if(c.isArray(a[k])){(h.specialEasing=h.specialEasing||{})[k]=a[k][1];a[k]=a[k][0]}}if(h.overflow!=null)this.style.overflow="hidden";h.curAnim=c.extend({},a);c.each(a,function(B,D){var H=new c.fx(s,h,B);if(tb.test(D))H[D==="toggle"?n?"show":"hide":D](a);else{var w=ub.exec(D),G=H.cur(true)||0;if(w){var M=parseFloat(w[2]),g=w[3]||"px";if(g!=="px"){c.style(s,B,(M||1)+g);
+G=(M||1)/H.cur(true)*G;c.style(s,B,G+g)}if(w[1])M=(w[1]==="-="?-1:1)*M+G;H.custom(G,M,g)}else H.custom(G,D,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var e=d.length-1;e>=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b,
+d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a*
+Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(h){return f.step(h)}
+this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;var f=this;a=c.fx;e.elem=this.elem;if(e()&&c.timers.push(e)&&!aa)aa=setInterval(a.tick,a.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;
+this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(l,n){f.style["overflow"+n]=h.overflow[l]})}this.options.hide&&c(this.elem).hide();if(this.options.hide||
+this.options.show)for(var k in this.options.curAnim)c.style(this.elem,k,this.options.orig[k]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=
+c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},interval:13,stop:function(){clearInterval(aa);aa=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===
+b.elem}).length};var vb=/^t(?:able|d|h)$/i,Fa=/^(?:body|html)$/i;c.fn.offset="getBoundingClientRect"in u.documentElement?function(a){var b=this[0],d;if(a)return this.each(function(k){c.offset.setOffset(this,a,k)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);try{d=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,h=f.documentElement;if(!d||!c.contains(h,b))return d||{top:0,left:0};b=f.body;f=ea(f);return{top:d.top+(f.pageYOffset||c.support.boxModel&&
+h.scrollTop||b.scrollTop)-(h.clientTop||b.clientTop||0),left:d.left+(f.pageXOffset||c.support.boxModel&&h.scrollLeft||b.scrollLeft)-(h.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(s){c.offset.setOffset(this,a,s)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,e=b.ownerDocument,f,h=e.documentElement,k=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;
+for(var l=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==k&&b!==h;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;f=e?e.getComputedStyle(b,null):b.currentStyle;l-=b.scrollTop;n-=b.scrollLeft;if(b===d){l+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&vb.test(b.nodeName))){l+=parseFloat(f.borderTopWidth)||0;n+=parseFloat(f.borderLeftWidth)||0}d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&f.overflow!=="visible"){l+=
+parseFloat(f.borderTopWidth)||0;n+=parseFloat(f.borderLeftWidth)||0}f=f}if(f.position==="relative"||f.position==="static"){l+=k.offsetTop;n+=k.offsetLeft}if(c.offset.supportsFixedPosition&&f.position==="fixed"){l+=Math.max(h.scrollTop,k.scrollTop);n+=Math.max(h.scrollLeft,k.scrollLeft)}return{top:l,left:n}};c.offset={initialize:function(){var a=u.body,b=u.createElement("div"),d,e,f,h=parseFloat(c.css(a,"marginTop"))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",
+height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);d=b.firstChild;e=d.firstChild;f=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=e.offsetTop!==5;this.doesAddBorderForTableAndCells=
+f.offsetTop===5;e.style.position="fixed";e.style.top="20px";this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15;e.style.position=e.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==h;a.removeChild(b);c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.css(a,
+"marginTop"))||0;d+=parseFloat(c.css(a,"marginLeft"))||0}return{top:b,left:d}},setOffset:function(a,b,d){var e=c.css(a,"position");if(e==="static")a.style.position="relative";var f=c(a),h=f.offset(),k=c.css(a,"top"),l=c.css(a,"left"),n=e==="absolute"&&c.inArray("auto",[k,l])>-1;e={};var s={};if(n)s=f.position();k=n?s.top:parseInt(k,10)||0;l=n?s.left:parseInt(l,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+k;if(b.left!=null)e.left=b.left-h.left+l;"using"in b?b.using.call(a,
+e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Fa.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||u.body;a&&!Fa.test(a.nodeName)&&
+c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==A)return this.each(function(){if(h=ea(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=ea(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();
+c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(h){var k=c(this);k[d](e.call(this,h,k[d]()))});return c.isWindow(f)?f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b]:f.nodeType===9?Math.max(f.documentElement["client"+
+b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]):e===A?parseFloat(c.css(f,d)):this.css(d,typeof e==="string"?e:e+"px")}})})(window);
diff --git a/modules/discojuice/www/discojuice/jquery-ui-1.8.5.custom.min.js b/modules/discojuice/www/discojuice/jquery-ui-1.8.5.custom.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..827b5f05ba3e5c8eedcd6c0cb432cade6cf682a7
--- /dev/null
+++ b/modules/discojuice/www/discojuice/jquery-ui-1.8.5.custom.min.js
@@ -0,0 +1,778 @@
+/*!
+ * jQuery UI 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.5",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,
+NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,
+"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");
+if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"));if(!isNaN(b)&&b!=0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind("mousedown.ui-disableSelection selectstart.ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f,
+"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c.style(this,h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c.style(this,
+h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}});
+c(function(){var a=document.createElement("div"),b=document.body;c.extend(a.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.appendChild(a).offsetHeight===100;b.removeChild(a).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,
+d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)}})}})(jQuery);
+;/*!
+ * jQuery UI Widget 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)b(d).triggerHandler("remove");k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,
+a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)===
+"_")return h;e?this.each(function(){var g=b.data(this,a);if(!g)throw"cannot call methods on "+a+" prior to initialization; attempted to call method '"+d+"'";if(!b.isFunction(g[d]))throw"no such method '"+d+"' for "+a+" widget instance";var i=g[d].apply(g,f);if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",
+widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+
+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}b.each(d,function(f,h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",
+false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
+;/*!
+ * jQuery UI Mouse 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ *	jquery.ui.widget.js
+ */
+(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&&
+this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();
+return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.browser.safari||a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&
+this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-
+a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
+;/*
+ * jQuery UI Position 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Position
+ */
+(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.scrollTo&&d.document){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j=
+{top:b.of.pageY,left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/
+2;if(b.at[1]==="bottom")j.top+=k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+parseInt(c.curCSS(this,"marginRight",true))||0,w=m+q+parseInt(c.curCSS(this,"marginBottom",true))||0,i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]===
+"center")i.top-=m/2;i.left=parseInt(i.left);i.top=parseInt(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();
+b.left=d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];
+b.left+=a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=
+c(b),g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery);
+;/*
+ * jQuery UI Draggable 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Draggables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper==
+"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b=
+this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-
+this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();
+d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||
+this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if(!this.element[0]||!this.element[0].parentNode)return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element,
+b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==
+a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||
+0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],
+this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-
+(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment==
+"parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&
+a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),
+10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],
+this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():
+f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.left<this.containment[0])e=this.containment[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+
+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.top<this.containment[1])?g-b.grid[1]:g+b.grid[1]:g;e=this.originalPageX+
+Math.round((e-this.originalPageX)/b.grid[0])*b.grid[0];e=this.containment?!(e-this.offset.click.left<this.containment[0]||e-this.offset.click.left>this.containment[2])?e:!(e-this.offset.click.left<this.containment[0])?e-b.grid[0]:e+b.grid[0]:e}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop()),left:e-this.offset.click.left-
+this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(a,b,c){c=c||this._uiHash();d.ui.plugin.call(this,a,[b,c]);if(a=="drag")this.positionAbs=
+this._convertPositionTo("absolute");return d.Widget.prototype._trigger.call(this,a,b,c)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});d.extend(d.ui.draggable,{version:"1.8.5"});d.ui.plugin.add("draggable","connectToSortable",{start:function(a,b){var c=d(this).data("draggable"),f=c.options,e=d.extend({},b,{item:c.element});c.sortables=[];d(f.connectToSortable).each(function(){var g=d.data(this,"sortable");
+if(g&&!g.options.disabled){c.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",a,e)}})},stop:function(a,b){var c=d(this).data("draggable"),f=d.extend({},b,{item:c.element});d.each(c.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;c.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(a);this.instance.options.helper=this.instance.options._helper;
+c.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",a,f)}})},drag:function(a,b){var c=d(this).data("draggable"),f=this;d.each(c.sortables,function(){this.instance.positionAbs=c.positionAbs;this.instance.helperProportions=c.helperProportions;this.instance.offset.click=c.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=
+1;this.instance.currentItem=d(f).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return b.helper[0]};a.target=this.instance.currentItem[0];this.instance._mouseCapture(a,true);this.instance._mouseStart(a,true,true);this.instance.offset.click.top=c.offset.click.top;this.instance.offset.click.left=c.offset.click.left;this.instance.offset.parent.left-=c.offset.parent.left-this.instance.offset.parent.left;
+this.instance.offset.parent.top-=c.offset.parent.top-this.instance.offset.parent.top;c._trigger("toSortable",a);c.dropped=this.instance.element;c.currentItem=c.element;this.instance.fromOutside=c}this.instance.currentItem&&this.instance._mouseDrag(a)}else if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",a,this.instance._uiHash(this.instance));this.instance._mouseStop(a,true);this.instance.options.helper=
+this.instance.options._helper;this.instance.currentItem.remove();this.instance.placeholder&&this.instance.placeholder.remove();c._trigger("fromSortable",a);c.dropped=false}})}});d.ui.plugin.add("draggable","cursor",{start:function(){var a=d("body"),b=d(this).data("draggable").options;if(a.css("cursor"))b._cursor=a.css("cursor");a.css("cursor",b.cursor)},stop:function(){var a=d(this).data("draggable").options;a._cursor&&d("body").css("cursor",a._cursor)}});d.ui.plugin.add("draggable","iframeFix",{start:function(){var a=
+d(this).data("draggable").options;d(a.iframeFix===true?"iframe":a.iframeFix).each(function(){d('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")})},stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;
+if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!=document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!=
+"HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop+c.scrollSpeed;else if(a.pageY-b.overflowOffset.top<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop-c.scrollSpeed;if(!c.axis||c.axis!="y")if(b.overflowOffset.left+b.scrollParent[0].offsetWidth-a.pageX<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft+c.scrollSpeed;else if(a.pageX-
+b.overflowOffset.left<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft-c.scrollSpeed}else{if(!c.axis||c.axis!="x")if(a.pageY-d(document).scrollTop()<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()-c.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()+c.scrollSpeed);if(!c.axis||c.axis!="y")if(a.pageX-d(document).scrollLeft()<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()-
+c.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()+c.scrollSpeed)}f!==false&&d.ui.ddmanager&&!c.dropBehaviour&&d.ui.ddmanager.prepareOffsets(b,a)}});d.ui.plugin.add("draggable","snap",{start:function(){var a=d(this).data("draggable"),b=a.options;a.snapElements=[];d(b.snap.constructor!=String?b.snap.items||":data(draggable)":b.snap).each(function(){var c=d(this),f=c.offset();this!=a.element[0]&&a.snapElements.push({item:this,
+width:c.outerWidth(),height:c.outerHeight(),top:f.top,left:f.left})})},drag:function(a,b){for(var c=d(this).data("draggable"),f=c.options,e=f.snapTolerance,g=b.offset.left,n=g+c.helperProportions.width,m=b.offset.top,o=m+c.helperProportions.height,h=c.snapElements.length-1;h>=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e<g&&g<k+e&&j-e<m&&m<l+e||i-e<g&&g<k+e&&j-e<o&&o<l+e||i-e<n&&n<k+e&&j-e<m&&m<l+e||i-e<n&&n<k+e&&j-e<o&&
+o<l+e){if(f.snapMode!="inner"){var p=Math.abs(j-o)<=e,q=Math.abs(l-m)<=e,r=Math.abs(i-n)<=e,s=Math.abs(k-g)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:j-c.helperProportions.height,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:l,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:i-c.helperProportions.width}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:k}).left-c.margins.left}var t=
+p||q||r||s;if(f.snapMode!="outer"){p=Math.abs(j-m)<=e;q=Math.abs(l-o)<=e;r=Math.abs(i-g)<=e;s=Math.abs(k-n)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:j,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:l-c.helperProportions.height,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:i}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:k-c.helperProportions.width}).left-c.margins.left}if(!c.snapElements[h].snapping&&
+(p||q||r||s||t))c.options.snap.snap&&c.options.snap.snap.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[h].item}));c.snapElements[h].snapping=p||q||r||s||t}else{c.snapElements[h].snapping&&c.options.snap.release&&c.options.snap.release.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[h].item}));c.snapElements[h].snapping=false}}}});d.ui.plugin.add("draggable","stack",{start:function(){var a=d(this).data("draggable").options;a=d.makeArray(d(a.stack)).sort(function(c,f){return(parseInt(d(c).css("zIndex"),
+10)||0)-(parseInt(d(f).css("zIndex"),10)||0)});if(a.length){var b=parseInt(a[0].style.zIndex)||0;d(a).each(function(c){this.style.zIndex=b+c});this[0].style.zIndex=b+a.length}}});d.ui.plugin.add("draggable","zIndex",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("zIndex"))b._zIndex=a.css("zIndex");a.css("zIndex",b.zIndex)},stop:function(a,b){a=d(this).data("draggable").options;a._zIndex&&d(b.helper).css("zIndex",a._zIndex)}})})(jQuery);
+;/*
+ * jQuery UI Droppable 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Droppables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.draggable.js
+ */
+(function(d){d.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"},_create:function(){var a=this.options,b=a.accept;this.isover=0;this.isout=1;this.accept=d.isFunction(b)?b:function(c){return c.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};d.ui.ddmanager.droppables[a.scope]=d.ui.ddmanager.droppables[a.scope]||[];d.ui.ddmanager.droppables[a.scope].push(this);
+a.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var a=d.ui.ddmanager.droppables[this.options.scope],b=0;b<a.length;b++)a[b]==this&&a.splice(b,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(a,b){if(a=="accept")this.accept=d.isFunction(b)?b:function(c){return c.is(b)};d.Widget.prototype._setOption.apply(this,arguments)},_activate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&
+this.element.addClass(this.options.activeClass);b&&this._trigger("activate",a,this.ui(b))},_deactivate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);b&&this._trigger("deactivate",a,this.ui(b))},_over:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.addClass(this.options.hoverClass);
+this._trigger("over",a,this.ui(b))}},_out:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("out",a,this.ui(b))}},_drop:function(a,b){var c=b||d.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return false;var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var g=
+d.data(this,"droppable");if(g.options.greedy&&!g.options.disabled&&g.options.scope==c.options.scope&&g.accept.call(g.element[0],c.currentItem||c.element)&&d.ui.intersect(c,d.extend(g,{offset:g.element.offset()}),g.options.tolerance)){e=true;return false}});if(e)return false;if(this.accept.call(this.element[0],c.currentItem||c.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass);this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("drop",
+a,this.ui(c));return this.element}return false},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}});d.extend(d.ui.droppable,{version:"1.8.5"});d.ui.intersect=function(a,b,c){if(!b.offset)return false;var e=(a.positionAbs||a.position.absolute).left,g=e+a.helperProportions.width,f=(a.positionAbs||a.position.absolute).top,h=f+a.helperProportions.height,i=b.offset.left,k=i+b.proportions.width,j=b.offset.top,l=j+b.proportions.height;
+switch(c){case "fit":return i<=e&&g<=k&&j<=f&&h<=l;case "intersect":return i<e+a.helperProportions.width/2&&g-a.helperProportions.width/2<k&&j<f+a.helperProportions.height/2&&h-a.helperProportions.height/2<l;case "pointer":return d.ui.isOver((a.positionAbs||a.position.absolute).top+(a.clickOffset||a.offset.click).top,(a.positionAbs||a.position.absolute).left+(a.clickOffset||a.offset.click).left,j,i,b.proportions.height,b.proportions.width);case "touch":return(f>=j&&f<=l||h>=j&&h<=l||f<j&&h>l)&&(e>=
+i&&e<=k||g>=i&&g<=k||e<i&&g>k);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f<c.length;f++)if(!(c[f].options.disabled||a&&!c[f].accept.call(c[f].element[0],a.currentItem||a.element))){for(var h=0;h<g.length;h++)if(g[h]==c[f].element[0]){c[f].proportions.height=0;continue a}c[f].visible=c[f].element.css("display")!=
+"none";if(c[f].visible){c[f].offset=c[f].element.offset();c[f].proportions={width:c[f].element[0].offsetWidth,height:c[f].element[0].offsetHeight};e=="mousedown"&&c[f]._activate.call(c[f],b)}}},drop:function(a,b){var c=false;d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(this.options){if(!this.options.disabled&&this.visible&&d.ui.intersect(a,this,this.options.tolerance))c=c||this._drop.call(this,b);if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],a.currentItem||
+a.element)){this.isout=1;this.isover=0;this._deactivate.call(this,b)}}});return c},drag:function(a,b){a.options.refreshPositions&&d.ui.ddmanager.prepareOffsets(a,b);d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var c=d.ui.intersect(a,this,this.options.tolerance);if(c=!c&&this.isover==1?"isout":c&&this.isover==0?"isover":null){var e;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");if(g.length){e=
+d.data(g[0],"droppable");e.greedyChild=c=="isover"?1:0}}if(e&&c=="isover"){e.isover=0;e.isout=1;e._out.call(e,b)}this[c]=1;this[c=="isout"?"isover":"isout"]=0;this[c=="isover"?"_over":"_out"].call(this,b);if(e&&c=="isout"){e.isout=0;e.isover=1;e._over.call(e,b)}}}})}}})(jQuery);
+;/*
+ * jQuery UI Resizable 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function(e){e.widget("ui.resizable",e.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");e.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element,
+_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&e.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(e('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),
+top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=
+this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",
+nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d<c.length;d++){var f=e.trim(c[d]),g=e('<div class="ui-resizable-handle '+("ui-resizable-"+f)+'"></div>');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor==
+String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection();
+this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){e(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};
+if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),
+d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=
+this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:
+this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",
+b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;
+f={width:c.size.width-(f?0:c.sizeDiff.width),height:c.size.height-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",
+b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top=
+a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidth<b.width,f=l(b.height)&&a.maxHeight&&a.maxHeight<b.height,g=l(b.width)&&a.minWidth&&a.minWidth>b.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,
+k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a<this._proportionallyResizeElements.length;a++){var c=this._proportionallyResizeElements[a];if(!this.borderDif){var d=[c.css("borderTopWidth"),
+c.css("borderRightWidth"),c.css("borderBottomWidth"),c.css("borderLeftWidth")],f=[c.css("paddingTop"),c.css("paddingRight"),c.css("paddingBottom"),c.css("paddingLeft")];this.borderDif=e.map(d,function(g,h){g=parseInt(g,10)||0;h=parseInt(f[h],10)||0;return g+h})}e.browser.msie&&(e(b).is(":hidden")||e(b).parents(":hidden").length)||c.css({height:b.height()-this.borderDif[0]-this.borderDif[2]||0,width:b.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var b=this.options;this.elementOffset=
+this.element.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+
+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,
+arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,
+{version:"1.8.5"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,
+function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=
+(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=
+false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left-
+a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",
+b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top",
+"Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,
+f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=
+a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+
+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&
+e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",
+height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=
+d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery);
+;/*
+ * jQuery UI Selectable 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),
+selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX,
+c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting",
+c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d=
+this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected");a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting");
+a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting=true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&&
+!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected=false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d=
+e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.5"})})(jQuery);
+;/*
+ * jQuery UI Sortable 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Sortables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function(d){d.widget("ui.sortable",d.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:false,connectWith:false,containment:false,cursor:"auto",cursorAt:false,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){this.containerCache={};this.element.addClass("ui-sortable");
+this.refresh();this.floating=this.items.length?/left|right/.test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a==="disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,
+arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=
+c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset,
+{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();
+if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",
+a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");
+if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY<b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop+b.scrollSpeed;else if(a.pageY-this.overflowOffset.top<b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop-b.scrollSpeed;if(this.overflowOffset.left+
+this.scrollParent[0].offsetWidth-a.pageX<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft+b.scrollSpeed;else if(a.pageX-this.overflowOffset.left<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft-b.scrollSpeed}else{if(a.pageY-d(document).scrollTop()<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()-b.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()+
+b.scrollSpeed);if(a.pageX-d(document).scrollLeft()<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()-b.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()+b.scrollSpeed)}c!==false&&d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+
+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(b=this.items.length-1;b>=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a,
+c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]==
+document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp();this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate",
+null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):
+d(this.domPosition.parent).prepend(this.currentItem);return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")},toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||
+"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+j<k&&b+l>g&&b+l<h;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?j:g<b+
+this.helperProportions.width/2&&c-this.helperProportions.width/2<h&&i<e+this.helperProportions.height/2&&f-this.helperProportions.height/2<k},_intersectsWithPointer:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left,a.width);b=b&&a;a=this._getDragVerticalDirection();var c=this._getDragHorizontalDirection();if(!b)return false;return this.floating?c&&c=="right"||a=="down"?2:1:a&&(a=="down"?
+2:1)},_intersectsWithSides:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top+a.height/2,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left+a.width/2,a.width);var c=this._getDragVerticalDirection(),e=this._getDragHorizontalDirection();return this.floating&&e?e=="right"&&a||e=="left"&&!a:c&&(c=="down"&&b||c=="up"&&!b)},_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},
+_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith();if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!=
+this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a=
+this.currentItem.find(":data(sortable-item)"),b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(a){this.items=[];this.containers=[this];var b=this.items,c=[[d.isFunction(this.options.items)?this.options.items.call(this.element[0],a,{item:this.currentItem}):d(this.options.items,this.element),this]],e=this._connectWith();if(e)for(var f=e.length-1;f>=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");
+if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h<g;h++){i=d(e[h]);i.data("sortable-item",a);b.push({item:i,instance:a,width:0,height:0,left:0,top:0})}}},refreshPositions:function(a){if(this.offsetParent&&this.helper)this.offset.parent=this._getParentOffset();for(var b=this.items.length-1;b>=
+0;b--){var c=this.items[b],e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=
+this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f},
+update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=
+null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this));
+this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-f)<b){b=Math.abs(h-f);e=this.items[g]}}if(e||this.options.dropOnEmpty){this.currentContainer=this.containers[c];e?this._rearrange(a,e,null,true):this._rearrange(a,
+null,this.containers[c].element,true);this._trigger("change",a,this._uiHash());this.containers[c]._trigger("change",a,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder);this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}}},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a,this.currentItem])):b.helper=="clone"?this.currentItem.clone():this.currentItem;a.parents("body").length||
+d(b.appendTo!="parent"?b.appendTo:this.currentItem[0].parentNode)[0].appendChild(a[0]);if(a[0]==this.currentItem[0])this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")};if(a[0].style.width==""||b.forceHelperSize)a.width(this.currentItem.width());if(a[0].style.height==""||b.forceHelperSize)a.height(this.currentItem.height());return a},_adjustOffsetFromHelper:function(a){if(typeof a==
+"string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition==
+"absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition==
+"relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},
+_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-
+this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)){var b=d(a.containment)[0];a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),
+10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?
+this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=
+this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0]))this.offset.relative=this._getRelativeOffset();var f=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.left<this.containment[0])f=this.containment[0]+
+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?
+g:!(g-this.offset.click.top<this.containment[1])?g-b.grid[1]:g+b.grid[1]:g;f=this.originalPageX+Math.round((f-this.originalPageX)/b.grid[0])*b.grid[0];f=this.containment?!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:!(f-this.offset.click.left<this.containment[0])?f-b.grid[0]:f+b.grid[0]:f}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():
+e?0:c.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())}},_rearrange:function(a,b,c,e){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?b.item[0]:b.item[0].nextSibling);this.counter=this.counter?++this.counter:1;var f=this,g=this.counter;window.setTimeout(function(){g==
+f.counter&&f.refreshPositions(!e)},0)},_clear:function(a,b){this.reverting=false;var c=[];!this._noFinalSort&&this.currentItem[0].parentNode&&this.placeholder.before(this.currentItem);this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var e in this._storedCSS)if(this._storedCSS[e]=="auto"||this._storedCSS[e]=="static")this._storedCSS[e]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!b&&c.push(function(f){this._trigger("receive",
+f,this._uiHash(this.fromOutside))});if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!b)c.push(function(f){this._trigger("update",f,this._uiHash())});if(!d.ui.contains(this.element[0],this.currentItem[0])){b||c.push(function(f){this._trigger("remove",f,this._uiHash())});for(e=this.containers.length-1;e>=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",
+g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=
+0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",a,this._uiHash());for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}return false}b||this._trigger("beforeStop",a,this._uiHash());this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
+this.helper[0]!=this.currentItem[0]&&this.helper.remove();this.helper=null;if(!b){for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){d.Widget.prototype._trigger.apply(this,arguments)===false&&this.cancel()},_uiHash:function(a){var b=a||this;return{helper:b.helper,placeholder:b.placeholder||d([]),position:b.position,originalPosition:b.originalPosition,offset:b.positionAbs,item:b.currentItem,sender:a?a.element:null}}});
+d.extend(d.ui.sortable,{version:"1.8.5"})})(jQuery);
+;/*
+ * jQuery UI Accordion 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ */
+(function(c){c.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");
+a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
+if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var f=d.closest(".ui-accordion-header");a.active=f.length?f:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion",function(g){return a._keydown(g)}).next().attr("role",
+"tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(g){a._clickHandler.call(a,g,this);g.preventDefault()})},_createIcons:function(){var a=this.options;if(a.icons){c("<span></span>").addClass("ui-icon "+a.icons.header).prependTo(this.headers);
+this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex");
+this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons();
+b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,f=this.headers.index(a.target),g=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:g=this.headers[(f+1)%d];break;case b.LEFT:case b.UP:g=this.headers[(f-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target);
+a.preventDefault()}if(g){c(a.target).attr("tabIndex",-1);c(g).attr("tabIndex",0);g.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+
+c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options;
+if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);
+a.next().addClass("ui-accordion-content-active")}h=a.next();f=this.active.next();g={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):h,oldContent:f};d=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(h,f,g,b,d)}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);
+this.active.next().addClass("ui-accordion-content-active");var f=this.active.next(),g={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:f},h=this.active=c([]);this._toggle(h,f,g)}},_toggle:function(a,b,d,f,g){var h=this,e=h.options;h.toShow=a;h.toHide=b;h.data=d;var j=function(){if(h)return h._completed.apply(h,arguments)};h._trigger("changestart",null,h.data);h.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&f?{toShow:c([]),toHide:b,complete:j,
+down:g,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:g,autoHeight:e.autoHeight||e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;f=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!f[k]&&!c.easing[k])k="slide";f[k]||(f[k]=function(l){this.slide(l,{easing:k,duration:i||700})});
+f[k](d)}else{if(e.collapsible&&f)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.5",animations:{slide:function(a,
+b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),f=0,g={},h={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){h[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);g[i]={value:j[1],
+unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(h,{step:function(j,i){if(i.prop=="height")f=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=f*g[i.prop].value+g[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",paddingTop:"hide",
+paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery);
+;/*
+ * jQuery UI Autocomplete 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *	jquery.ui.position.js
+ */
+(function(e){e.widget("ui.autocomplete",{options:{appendTo:"body",delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},_create:function(){var a=this,b=this.element[0].ownerDocument;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!a.options.disabled){var d=e.ui.keyCode;switch(c.keyCode){case d.PAGE_UP:a._move("previousPage",
+c);break;case d.PAGE_DOWN:a._move("nextPage",c);break;case d.UP:a._move("previous",c);c.preventDefault();break;case d.DOWN:a._move("next",c);c.preventDefault();break;case d.ENTER:case d.NUMPAD_ENTER:a.menu.element.is(":visible")&&c.preventDefault();case d.TAB:if(!a.menu.active)return;a.menu.select(c);break;case d.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay);
+break}}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};this.menu=e("<ul></ul>").addClass("ui-autocomplete").appendTo(e(this.options.appendTo||"body",b)[0]).mousedown(function(c){var d=a.menu.element[0];
+c.target===d&&setTimeout(function(){e(document).one("mousedown",function(f){f.target!==a.element[0]&&f.target!==d&&!e.ui.contains(d,f.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,d){d=d.item.data("item.autocomplete");false!==a._trigger("focus",null,{item:d})&&/^key/.test(c.originalEvent.type)&&a.element.val(d.value)},selected:function(c,d){d=d.item.data("item.autocomplete");var f=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();
+a.previous=f}if(false!==a._trigger("select",c,{item:d})){a.term=d.value;a.element.val(d.value)}a.close(c);a.selectedItem=d},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");e.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");
+this.menu.element.remove();e.Widget.prototype.destroy.call(this)},_setOption:function(a,b){e.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(e(b||"body",this.element[0].ownerDocument)[0])},_initSource:function(){var a=this,b,c;if(e.isArray(this.options.source)){b=this.options.source;this.source=function(d,f){f(e.ui.autocomplete.filter(b,d.term))}}else if(typeof this.options.source==="string"){c=this.options.source;this.source=
+function(d,f){a.xhr&&a.xhr.abort();a.xhr=e.getJSON(c,d,function(g,i,h){h===a.xhr&&f(g);a.xhr=null})}}else this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search")!==false)return this._search(a)},_search:function(a){this.element.addClass("ui-autocomplete-loading");this.source({term:a},this.response)},_response:function(a){if(a.length){a=
+this._normalize(a);this._suggest(a);this._trigger("open")}else this.close();this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing);if(this.menu.element.is(":visible")){this._trigger("close",a);this.menu.element.hide();this.menu.deactivate()}},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(a){if(a.length&&a[0].label&&a[0].value)return a;return e.map(a,function(b){if(typeof b===
+"string")return{label:b,value:b};return e.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(a){var b=this.menu.element.empty().zIndex(this.element.zIndex()+1),c;this._renderMenu(b,a);this.menu.deactivate();this.menu.refresh();this.menu.element.show().position(e.extend({of:this.element},this.options.position));a=b.width("").outerWidth();c=this.element.outerWidth();b.outerWidth(Math.max(a,c))},_renderMenu:function(a,b){var c=this;e.each(b,function(d,f){c._renderItem(a,f)})},
+_renderItem:function(a,b){return e("<li></li>").data("item.autocomplete",b).append(e("<a></a>").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});e.extend(e.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},
+filter:function(a,b){var c=new RegExp(e.ui.autocomplete.escapeRegex(b),"i");return e.grep(a,function(d){return c.test(d.label||d.value||d)})}})})(jQuery);
+(function(e){e.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(b){if(e(b.target).closest(".ui-menu-item a").length){b.preventDefault();a.select(b)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex",
+-1).mouseenter(function(b){a.activate(b,e(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.attr("scrollTop"),f=this.element.height();if(c<0)this.element.attr("scrollTop",d+c);else c>=f&&this.element.attr("scrollTop",d+c-f+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:b})},
+deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);
+a.length?this.activate(c,a):this.activate(c,this.element.children(b))}else this.activate(c,this.element.children(b))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(":first"));else{var b=this.active.offset().top,c=this.element.height(),d=this.element.children("li").filter(function(){var f=e(this).offset().top-b-c+e(this).height();return f<10&&f>-10});d.length||(d=this.element.children(":last"));this.activate(a,d)}else this.activate(a,this.element.children(!this.active||
+this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(":last"));else{var b=this.active.offset().top,c=this.element.height();result=this.element.children("li").filter(function(){var d=e(this).offset().top-b+c-e(this).height();return d<10&&d>-10});result.length||(result=this.element.children(":first"));this.activate(a,result)}else this.activate(a,this.element.children(!this.active||this.first()?":last":":first"))},
+hasScroll:function(){return this.element.height()<this.element.attr("scrollHeight")},select:function(a){this._trigger("selected",a,{item:this.active})}})})(jQuery);
+;/*
+ * jQuery UI Button 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ */
+(function(a){var g,i=function(b){a(":ui-button",b.target.form).each(function(){var c=a(this).data("button");setTimeout(function(){c.refresh()},1)})},h=function(b){var c=b.name,d=b.form,e=a([]);if(c)e=d?a(d).find("[name='"+c+"']"):a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form});return e};a.widget("ui.button",{options:{disabled:null,text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",
+i);if(typeof this.options.disabled!=="boolean")this.options.disabled=this.element.attr("disabled");this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var b=this,c=this.options,d=this.type==="checkbox"||this.type==="radio",e="ui-state-hover"+(!d?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",
+function(){if(!c.disabled){a(this).addClass("ui-state-hover");this===g&&a(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){c.disabled||a(this).removeClass(e)}).bind("focus.button",function(){a(this).addClass("ui-state-focus")}).bind("blur.button",function(){a(this).removeClass("ui-state-focus")});d&&this.element.bind("change.button",function(){b.refresh()});if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).toggleClass("ui-state-active");
+b.buttonElement.attr("aria-pressed",b.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");b.buttonElement.attr("aria-pressed",true);var f=b.element[0];h(f).not(f).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");
+g=this;a(document).one("mouseup",function(){g=null})}).bind("mouseup.button",function(){if(c.disabled)return false;a(this).removeClass("ui-state-active")}).bind("keydown.button",function(f){if(c.disabled)return false;if(f.keyCode==a.ui.keyCode.SPACE||f.keyCode==a.ui.keyCode.ENTER)a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(f){f.keyCode===a.ui.keyCode.SPACE&&a(this).click()})}this._setOption("disabled",
+c.disabled)},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?"input":"button";if(this.type==="checkbox"||this.type==="radio"){this.buttonElement=this.element.parents().last().find("label[for="+this.element.attr("id")+"]");this.element.addClass("ui-helper-hidden-accessible");var b=this.element.is(":checked");b&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",b)}else this.buttonElement=
+this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active  ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());this.hasTitle||
+this.buttonElement.removeAttr("title");a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled")c?this.element.attr("disabled",true):this.element.removeAttr("disabled");this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b);if(this.type==="radio")h(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed",
+true):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",false)});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed",true):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",false)},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var b=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"),
+c=a("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("<span class='ui-button-icon-primary ui-icon "+d.primary+"'></span>");d.secondary&&b.append("<span class='ui-button-icon-secondary ui-icon "+d.secondary+"'></span>");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary");
+this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":visible").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end().end()},
+destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery);
+;/*
+ * jQuery UI Dialog 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *  jquery.ui.button.js
+ *	jquery.ui.draggable.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.position.js
+ *	jquery.ui.resizable.js
+ */
+(function(c,j){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",of:window,collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");
+if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||"&#160;",f=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog",
+"aria-labelledby":f}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var e=(a.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);
+return false}).appendTo(e);(a.uiDialogTitlebarCloseText=c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("<span></span>").addClass("ui-dialog-title").attr("id",f).html(d).prependTo(e);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;e.find("*").add(e).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&
+g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");
+b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,f=d.options;if(f.modal&&!a||!f.stack&&!f.modal)return d._trigger("focus",b);if(f.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=
+f.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show);
+a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(f){if(f.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),e=g.filter(":first");g=g.filter(":last");if(f.target===g[0]&&!f.shiftKey){e.focus(1);return false}else if(f.target===e[0]&&f.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,
+f=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("<div></div>").addClass("ui-dialog-buttonset").appendTo(f);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(e,h){h=c.isFunction(h)?{click:h,text:e}:h;e=c("<button></button>",h).unbind("click").click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&e.button()});f.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(e){return{position:e.position,
+offset:e.offset}}var b=this,d=b.options,f=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(e,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",e,a(h))},drag:function(e,h){b._trigger("drag",e,a(h))},stop:function(e,h){d.position=[h.position.left-f.scrollLeft(),h.position.top-f.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);
+b._trigger("dragStop",e,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}a=a===j?this.options.resizable:a;var d=this,f=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:d._minHeight(),
+handles:a,start:function(e,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",e,b(h))},resize:function(e,h){d._trigger("resize",e,b(h))},stop:function(e,h){c(this).removeClass("ui-dialog-resizing");f.height=c(this).height();f.width=c(this).width();d._trigger("resizeStop",e,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,
+a.height)},_position:function(a){var b=[],d=[0,0],f;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,e){if(+b[g]===b[g]){d[g]=b[g];b[g]=e}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(f=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(a);
+f||this.uiDialog.hide()},_setOption:function(a,b){var d=this,f=d.uiDialog,g=f.is(":data(resizable)"),e=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);e=true;break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":f.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case "draggable":b?
+d._makeDraggable():f.draggable("destroy");break;case "height":e=true;break;case "maxHeight":g&&f.resizable("option","maxHeight",b);e=true;break;case "maxWidth":g&&f.resizable("option","maxWidth",b);e=true;break;case "minHeight":g&&f.resizable("option","minHeight",b);e=true;break;case "minWidth":g&&f.resizable("option","minWidth",b);e=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&f.resizable("destroy");g&&typeof b==="string"&&f.resizable("option","handles",b);!g&&b!==false&&
+d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||"&#160;"));break;case "width":e=true;break}c.Widget.prototype._setOption.apply(d,arguments);e&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:c.support.minHeight?"auto":Math.max(a.minHeight-
+b,0)}:{minHeight:0,height:Math.max(a.height-b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.5",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),
+function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()<c.ui.dialog.overlay.maxZ)return false})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=
+(this.oldInstances.pop()||c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,
+b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a<b?c(window).height()+"px":a+"px"}else return c(document).height()+"px"},width:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);b=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return a<
+b?c(window).width()+"px":a+"px"}else return c(document).width()+"px"},resize:function(){var a=c([]);c.each(c.ui.dialog.overlay.instances,function(){a=a.add(this)});a.css({width:0,height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
+;/*
+ * jQuery UI Slider 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var a=this,b=this.options;this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");b.disabled&&this.element.addClass("ui-slider-disabled ui-disabled");
+this.range=d([]);if(b.range){if(b.range===true){this.range=d("<div></div>");if(!b.values)b.values=[this._valueMin(),this._valueMin()];if(b.values.length&&b.values.length!==2)b.values=[b.values[0],b.values[0]]}else this.range=d("<div></div>");this.range.appendTo(this.element).addClass("ui-slider-range");if(b.range==="min"||b.range==="max")this.range.addClass("ui-slider-range-"+b.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("<a href='#'></a>").appendTo(this.element).addClass("ui-slider-handle");
+if(b.values&&b.values.length)for(;d(".ui-slider-handle",this.element).length<b.values.length;)d("<a href='#'></a>").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(b.disabled)d(this).blur();
+else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!a.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e=
+false;if(!a._keySliding){a._keySliding=true;d(this).addClass("ui-state-active");h=a._start(c,f);if(h===false)return}break}i=a.options.step;h=a.options.values&&a.options.values.length?(g=a.values(f)):(g=a.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=a._valueMin();break;case d.ui.keyCode.END:g=a._valueMax();break;case d.ui.keyCode.PAGE_UP:g=a._trimAlignValue(h+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=a._trimAlignValue(h-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h===
+a._valueMax())return;g=a._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===a._valueMin())return;g=a._trimAlignValue(h-i);break}a._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(a._keySliding){a._keySliding=false;a._stop(c,e);a._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");
+this._mouseDestroy();return this},_mouseCapture:function(a){var b=this.options,c,e,f,h,g;if(b.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(b.range===true&&this.values(1)===b.min){g+=1;f=d(this.handles[g])}if(this._start(a,
+g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();b=f.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-b.left-f.width()/2,top:a.pageY-b.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this._slide(a,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(a){var b=
+this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;if(this.orientation==="horizontal"){b=
+this.elementSize.width;a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}b=a/b;if(b>1)b=1;if(b<0)b=0;if(this.orientation==="vertical")b=1-b;a=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+b*a)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);
+c.values=this.values()}return this._trigger("start",a,c)},_slide:function(a,b,c){var e;if(this.options.values&&this.options.values.length){e=this.values(b?0:1);if(this.options.values.length===2&&this.options.range===true&&(b===0&&c>e||b===1&&c<e))c=e;if(c!==this.values(b)){e=this.values();e[b]=c;a=this._trigger("slide",a,{handle:this.handles[b],value:c,values:e});this.values(b?0:1);a!==false&&this.values(b,c,true)}}else if(c!==this.value()){a=this._trigger("slide",a,{handle:this.handles[b],value:c});
+a!==false&&this.value(c)}},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("change",a,c)}},value:function(a){if(arguments.length){this.options.value=
+this._trimAlignValue(a);this._refreshValue();this._change(null,0)}return this._value()},values:function(a,b){var c,e,f;if(arguments.length>1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;f<c.length;f+=1){c[f]=this._trimAlignValue(e[f]);this._change(null,f)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(a):this.value();
+else return this._values()},_setOption:function(a,b){var c,e=0;if(d.isArray(this.options.values))e=this.options.values.length;d.Widget.prototype._setOption.apply(this,arguments);switch(a){case "disabled":if(b){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.attr("disabled","disabled");this.element.addClass("ui-disabled")}else{this.handles.removeAttr("disabled");this.element.removeClass("ui-disabled")}break;case "orientation":this._detectOrientation();
+this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(c=0;c<e;c+=1)this._change(null,c);this._animateOff=false;break}},_value:function(){var a=this.options.value;return a=this._trimAlignValue(a)},_values:function(a){var b,c;if(arguments.length){b=this.options.values[a];
+return b=this._trimAlignValue(b)}else{b=this.options.values.slice();for(c=0;c<b.length;c+=1)b[c]=this._trimAlignValue(b[c]);return b}},_trimAlignValue:function(a){if(a<this._valueMin())return this._valueMin();if(a>this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=a%b;a=a-c;if(Math.abs(c)*2>=b)a+=c>0?b:-b;return parseFloat(a.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a=
+this.options.range,b=this.options,c=this,e=!this._animateOff?b.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,b.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},b.animate);if(k===1)c.range[e?"animate":"css"]({width:f-
+g+"%"},{queue:false,duration:b.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},b.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:b.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,b.animate);if(a==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},
+b.animate);if(a==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:b.animate});if(a==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},b.animate);if(a==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:b.animate})}}});d.extend(d.ui.slider,{version:"1.8.5"})})(jQuery);
+;/*
+ * jQuery UI Tabs 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ */
+(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(true)},_setOption:function(a,e){if(a=="selected")this.options.collapsible&&
+e==this.options.selected||this.select(e);else{this.options[a]=e;this._tabify()}},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var a=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[a].concat(d.makeArray(arguments)))},_ui:function(a,e){return{tab:a,panel:e,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var a=
+d(this);a.html(a.data("label.tabs")).removeData("label.tabs")})},_tabify:function(a){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var b=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]||
+(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))b.panels=b.panels.add(b._sanitizeSelector(i));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=b._tabId(f);f.href="#"+i;f=d("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(b.panels[g-1]||b.list);f.data("destroy.tabs",true)}b.panels=b.panels.add(f)}else c.disabled.push(g)});if(a){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");
+this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(b._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected=
+this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return b.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");
+if(c.selected>=0&&this.anchors.length){this.panels.eq(c.selected).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");b.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[c.selected],b.panels[c.selected]))});this.load(c.selected)}d(window).bind("unload",function(){b.lis.add(b.anchors).unbind(".tabs");b.lis=b.anchors=b.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[c.collapsible?"addClass":
+"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);a=0;for(var j;j=this.lis[a];a++)d(j)[d.inArray(a,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs",
+function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);b._trigger("show",
+null,b._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");b._trigger("show",null,b._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){b.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);b.element.dequeue("tabs")})}:function(g,f){b.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");b.element.dequeue("tabs")};this.anchors.bind(c.event+".tabs",
+function(){var g=this,f=d(g).closest("li"),i=b.panels.filter(":not(.ui-tabs-hide)"),l=d(b._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||b.panels.filter(":animated").length||b._trigger("select",null,b._ui(this,l[0]))===false){this.blur();return false}c.selected=b.anchors.index(this);b.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected=-1;c.cookie&&b._cookie(c.selected,c.cookie);b.element.queue("tabs",
+function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&b._cookie(c.selected,c.cookie);b.element.queue("tabs",function(){r(g,l)});b.load(b.anchors.index(this));this.blur();return false}c.cookie&&b._cookie(c.selected,c.cookie);if(l.length){i.length&&b.element.queue("tabs",function(){s(g,i)});b.element.queue("tabs",function(){r(g,l)});b.load(b.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",
+function(){return false})},_getIndex:function(a){if(typeof a=="string")a=this.anchors.index(this.anchors.filter("[href$="+a+"]"));return a},destroy:function(){var a=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href=
+e;var b=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){b.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});a.cookie&&this._cookie(null,a.cookie);return this},add:function(a,e,b){if(b===p)b=this.anchors.length;
+var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,a).replace(/#\{label\}/g,e));a=!a.indexOf("#")?a.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=d("#"+a);j.length||(j=d(h.panelTemplate).attr("id",a).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(b>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[b]);
+j.insertBefore(this.panels[b])}h.disabled=d.map(h.disabled,function(k){return k>=b?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[b],this.panels[b]));return this},remove:function(a){a=this._getIndex(a);var e=this.options,b=this.lis.eq(a).remove(),c=this.panels.eq(a).remove();
+if(b.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(a+(a+1<this.anchors.length?1:-1));e.disabled=d.map(d.grep(e.disabled,function(h){return h!=a}),function(h){return h>=a?--h:h});this._tabify();this._trigger("remove",null,this._ui(b.find("a")[0],c[0]));return this},enable:function(a){a=this._getIndex(a);var e=this.options;if(d.inArray(a,e.disabled)!=-1){this.lis.eq(a).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(b){return b!=a});this._trigger("enable",null,
+this._ui(this.anchors[a],this.panels[a]));return this}},disable:function(a){a=this._getIndex(a);var e=this.options;if(a!=e.selected){this.lis.eq(a).addClass("ui-state-disabled");e.disabled.push(a);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a]))}return this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;this.anchors.eq(a).trigger(this.options.event+".tabs");return this},
+load:function(a){a=this._getIndex(a);var e=this,b=this.options,c=this.anchors.eq(a)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(a).addClass("ui-state-processing");if(b.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(b.spinner)}this.xhr=d.ajax(d.extend({},b.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(c.hash)).html(k);e._cleanup();b.cache&&d.data(c,"cache.tabs",
+true);e._trigger("load",null,e._ui(e.anchors[a],e.panels[a]));try{b.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[a],e.panels[a]));try{b.ajaxOptions.error(k,n,a,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(a,
+e){this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.5"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(a,e){var b=this,c=this.options,h=b._rotate||(b._rotate=function(j){clearTimeout(b.rotation);b.rotation=setTimeout(function(){var k=c.selected;b.select(++k<b.anchors.length?k:0)},a);j&&j.stopPropagation()});e=b._unrotate||(b._unrotate=!e?function(j){j.clientX&&b.rotate(null)}:
+function(){t=c.selected;h()});if(a){this.element.bind("tabsshow",h);this.anchors.bind(c.event+".tabs",e);h()}else{clearTimeout(b.rotation);this.element.unbind("tabsshow",h);this.anchors.unbind(c.event+".tabs",e);delete this._rotate;delete this._unrotate}return this}})})(jQuery);
+;/*
+ * jQuery UI Datepicker 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ */
+(function(d,G){function L(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass=
+"ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su",
+"Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",
+minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>')}function E(a,b){d.extend(a,
+b);for(var c in b)if(b[c]==null||b[c]==G)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.5"}});var y=(new Date).getTime();d.extend(L.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){E(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=
+f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')}},
+_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&
+b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f==
+""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,
+c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),
+true);this._updateDatepicker(b);this._updateAlternate(b)}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}E(a.settings,e||{});b=b&&b.constructor==
+Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);
+d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},
+_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=
+d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;
+for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false},_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"?d.extend({},e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&&
+this._hideDatepicker();var h=this._getDateDatepicker(a,true);E(e.settings,f);this._attachments(d(a),e);this._autoSize(e);this._setDateDatepicker(a,h);this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a,b);this._updateDatepicker(a);this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&&
+!a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass,b.dpDiv).add(d("td."+d.datepicker._currentClass,b.dpDiv));c[0]?d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]):d.datepicker._hideDatepicker();
+return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target);c=a.ctrlKey||a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey||
+a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,-7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,
+a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();a.stopPropagation()}},_doKeyPress:function(a){var b=d.datepicker._getInst(a.target);if(d.datepicker._get(b,"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat"));
+var c=String.fromCharCode(a.charCode==G?a.keyCode:a.charCode);return a.ctrlKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||
+a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");E(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);
+d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&
+d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=d.datepicker._getBorders(b.dpDiv);b.dpDiv.find("iframe.ui-datepicker-cover").css({left:-i[0],top:-i[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,
+h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a)).find("iframe.ui-datepicker-cover").css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}).end().find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){d(this).removeClass("ui-state-hover");
+this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).addClass("ui-datepicker-prev-hover");
+this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);var e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");
+a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input.focus()},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),
+k=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>k&&k>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1);)a=a[b?"previousSibling":"nextSibling"];
+a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():
+"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&
+!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;
+b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=
+this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=
+d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,
+"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b==
+"object"?b.toString():b+"";if(b=="")return null;for(var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff,f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,k=c=-1,l=-1,u=-1,j=false,o=function(p){(p=z+1<a.length&&a.charAt(z+1)==p)&&z++;return p},m=function(p){o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"?4:p=="o"?
+3:2)+"}");p=b.substring(s).match(p);if(!p)throw"Missing number at position "+s;s+=p[0].length;return parseInt(p[0],10)},n=function(p,w,H){p=o(p)?H:w;for(w=0;w<p.length;w++)if(b.substr(s,p[w].length).toLowerCase()==p[w].toLowerCase()){s+=p[w].length;return w+1}throw"Unknown name at position "+s;},r=function(){if(b.charAt(s)!=a.charAt(z))throw"Unexpected literal at position "+s;s++},s=0,z=0;z<a.length;z++)if(j)if(a.charAt(z)=="'"&&!o("'"))j=false;else r();else switch(a.charAt(z)){case "d":l=m("d");
+break;case "D":n("D",f,h);break;case "o":u=m("o");break;case "m":k=m("m");break;case "M":k=n("M",i,g);break;case "y":c=m("y");break;case "@":var v=new Date(m("@"));c=v.getFullYear();k=v.getMonth()+1;l=v.getDate();break;case "!":v=new Date((m("!")-this._ticksTo1970)/1E4);c=v.getFullYear();k=v.getMonth()+1;l=v.getDate();break;case "'":if(o("'"))r();else j=true;break;default:r()}if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>
+-1){k=1;l=u;do{e=this._getDaysInMonth(c,k-1);if(l<=e)break;k++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,k-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=k||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*
+60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=j+1<a.length&&a.charAt(j+1)==o)&&j++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length<n;)m="0"+m;return m},k=function(o,m,n,r){return i(o)?r[m]:n[m]},l="",u=false;if(b)for(var j=0;j<a.length;j++)if(u)if(a.charAt(j)==
+"'"&&!i("'"))u=false;else l+=a.charAt(j);else switch(a.charAt(j)){case "d":l+=g("d",b.getDate(),2);break;case "D":l+=k("D",b.getDay(),e,f);break;case "o":l+=g("o",(b.getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864E5,3);break;case "m":l+=g("m",b.getMonth()+1,2);break;case "M":l+=k("M",b.getMonth(),h,c);break;case "y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case "@":l+=b.getTime();break;case "!":l+=b.getTime()*1E4+this._ticksTo1970;break;case "'":if(i("'"))l+=
+"'";else u=true;break;default:l+=a.charAt(j)}return l},_possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+1)==h)&&f++;return h},f=0;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case "d":case "m":case "y":case "@":b+="0123456789";break;case "D":case "M":return null;case "'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==G?a.settings[b]:this._defaults[b]},
+_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,f,h;f=h=this._getDefaultDate(a);var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth=f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,
+this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var e=function(h){var i=new Date;i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g=(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,k=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,j=u.exec(h);j;){switch(j[2]||"d"){case "d":case "D":g+=
+parseInt(j[1],10);break;case "w":case "W":g+=parseInt(j[1],10)*7;break;case "m":case "M":l+=parseInt(j[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(k,l));break;case "y":case "Y":k+=parseInt(j[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(k,l));break}j=u.exec(h)}return new Date(k,l,g)};if(b=(b=b==null?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):b)&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},
+_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?
+"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),k=
+this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),j=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=j&&n<j?j:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,
+"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-k,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._adjustDate('#"+a.id+"', -"+k+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+
+n+"</span></a>";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,g+k,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._adjustDate('#"+a.id+"', +"+k+", 'M');\" title=\""+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+r+'"><span class="ui-icon ui-icon-circle-triangle-'+
+(c?"w":"e")+'">'+r+"</span></a>";k=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&a.currentDay?u:b;k=!h?k:this.formatDate(k,r,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+y+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,r)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+
+y+".datepicker._gotoToday('#"+a.id+"');\">"+k+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;k=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),w=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var M=this._getDefaultDate(a),I="",C=0;C<i[0];C++){for(var N=
+"",D=0;D<i[1];D++){var J=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",x="";if(l){x+='<div class="ui-datepicker-group';if(i[1]>1)switch(D){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&C==0?c?
+f:n:"")+(/all|right/.test(t)&&C==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,j,o,C>0||D>0,z,v)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var A=k?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(t=0;t<7;t++){var q=(t+h)%7;A+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+r[q]+'">'+s[q]+"</span></th>"}x+=A+"</tr></thead><tbody>";A=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,
+A);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;A=l?6:Math.ceil((t+A)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O<A;O++){x+="<tr>";var P=!k?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(q)+"</td>";for(t=0;t<7;t++){var F=p?p.apply(a.input?a.input[0]:null,[q]):[true,""],B=q.getMonth()!=g,K=B&&!H||!F[0]||j&&q<j||o&&q>o;P+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(B?" ui-datepicker-other-month":"")+(q.getTime()==J.getTime()&&g==a.selectedMonth&&
+a._keyEvent||M.getTime()==q.getTime()&&M.getTime()==J.getTime()?" "+this._dayOverClass:"")+(K?" "+this._unselectableClass+" ui-state-disabled":"")+(B&&!w?"":" "+F[1]+(q.getTime()==u.getTime()?" "+this._currentClass:"")+(q.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!B||w)&&F[2]?' title="'+F[2]+'"':"")+(K?"":' onclick="DP_jQuery_'+y+".datepicker._selectDay('#"+a.id+"',"+q.getMonth()+","+q.getFullYear()+', this);return false;"')+">"+(B&&!w?"&#xa0;":K?'<span class="ui-state-default">'+q.getDate()+
+"</span>":'<a class="ui-state-default'+(q.getTime()==b.getTime()?" ui-state-highlight":"")+(q.getTime()==J.getTime()?" ui-state-active":"")+(B?" ui-priority-secondary":"")+'" href="#">'+q.getDate()+"</a>")+"</td>";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+=P+"</tr>"}g++;if(g>11){g=0;m++}x+="</tbody></table>"+(l?"</div>"+(i[0]>0&&D==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");N+=x}I+=N}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':
+"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var k=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),j='<div class="ui-datepicker-title">',o="";if(h||!k)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+
+a.id+"');\">";for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&&(!m||n<=f.getMonth()))o+='<option value="'+n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(j+=o+(h||!(k&&l)?"&#xa0;":""));if(h||!l)j+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b,
+i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(j+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+a.id+"');\">";b<=g;b++)j+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";j+="</select>"}j+=this._get(a,"yearSuffix");if(u)j+=(h||!(k&&l)?"&#xa0;":"")+o;j+="</div>";return j},_adjustInstDate:function(a,b,c){var e=
+a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&b<c?c:b;return b=a&&b>a?a:b},_notifyChange:function(a){var b=this._get(a,
+"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);
+c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,
+"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=
+function(a){if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));
+return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new L;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.5";window["DP_jQuery_"+y]=d})(jQuery);
+;/*
+ * jQuery UI Progressbar 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar
+ *
+ * Depends:
+ *   jquery.ui.core.js
+ *   jquery.ui.widget.js
+ */
+(function(b,c){b.widget("ui.progressbar",{options:{value:0},min:0,max:100,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.max,"aria-valuenow":this._value()});this.valueDiv=b("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element);this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow");
+this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===c)return this._value();this._setOption("value",a);return this},_setOption:function(a,d){if(a==="value"){this.options.value=d;this._refreshValue();this._trigger("change")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.max,Math.max(this.min,a))},_refreshValue:function(){var a=this.value();this.valueDiv.toggleClass("ui-corner-right",
+a===this.max).width(a+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.5"})})(jQuery);
+;/*
+ * jQuery UI Effects 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/
+ */
+jQuery.effects||function(f,j){function l(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1],
+16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return m.transparent;return m[f.trim(c).toLowerCase()]}function r(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return l(b)}function n(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,
+a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function o(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in s||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function t(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d=
+a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:f.fx.speeds[b]||f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=r(b.elem,a);b.end=l(b.end);b.colorInit=
+true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var m={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,
+183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,
+165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},p=["add","remove","toggle"],s={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b,d){if(f.isFunction(b)){d=b;b=null}return this.each(function(){var e=f(this),g=e.attr("style")||" ",h=o(n.call(this)),q,u=e.attr("className");f.each(p,function(v,
+i){c[i]&&e[i+"Class"](c[i])});q=o(n.call(this));e.attr("className",u);e.animate(t(h,q),a,b,function(){f.each(p,function(v,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)})})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?
+f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.5",save:function(c,a){for(var b=0;b<a.length;b++)a[b]!==
+null&&c.data("ec.storage."+a[b],c[0].style[a[b]])},restore:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.css(a[b],c.data("ec.storage."+a[b]))},setMode:function(c,a){if(a=="toggle")a=c.is(":hidden")?"show":"hide";return a},getBaseline:function(c,a){var b;switch(c[0]){case "top":b=0;break;case "middle":b=0.5;break;case "bottom":b=1;break;default:b=c[0]/a.height}switch(c[1]){case "left":c=0;break;case "center":c=0.5;break;case "right":c=1;break;default:c=c[1]/a.width}return{x:c,y:b}},createWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent();
+var a={width:c.outerWidth(true),height:c.outerHeight(true),"float":c.css("float")},b=f("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});
+c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments);a={options:a[1],duration:a[2],callback:a[3]};var b=f.effects[c];return b&&!f.fx.off?b.call(this,a):this},_show:f.fn.show,show:function(c){if(!c||
+typeof c=="number"||f.fx.speeds[c]||!f.effects[c])return this._show.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||!f.effects[c])return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||!f.effects[c]||typeof c==
+"boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,
+a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=
+e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+
+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/
+2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g))+b},easeOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*
+a)*Math.sin((a*e-c)*2*Math.PI/g)+d+b},easeInOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;
+return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,
+a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c,a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);
+;/*
+ * jQuery UI Effects Blind 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Blind
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(b){b.effects.blind=function(c){return this.queue(function(){var a=b(this),g=["position","top","left"],f=b.effects.setMode(a,c.options.mode||"hide"),d=c.options.direction||"vertical";b.effects.save(a,g);a.show();var e=b.effects.createWrapper(a).css({overflow:"hidden"}),h=d=="vertical"?"height":"width";d=d=="vertical"?e.height():e.width();f=="show"&&e.css(h,0);var i={};i[h]=f=="show"?d:0;e.animate(i,c.duration,c.options.easing,function(){f=="hide"&&a.hide();b.effects.restore(a,g);b.effects.removeWrapper(a);
+c.callback&&c.callback.apply(a[0],arguments);a.dequeue()})})}})(jQuery);
+;/*
+ * jQuery UI Effects Bounce 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Bounce
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(e){e.effects.bounce=function(b){return this.queue(function(){var a=e(this),l=["position","top","left"],h=e.effects.setMode(a,b.options.mode||"effect"),d=b.options.direction||"up",c=b.options.distance||20,m=b.options.times||5,i=b.duration||250;/show|hide/.test(h)&&l.push("opacity");e.effects.save(a,l);a.show();e.effects.createWrapper(a);var f=d=="up"||d=="down"?"top":"left";d=d=="up"||d=="left"?"pos":"neg";c=b.options.distance||(f=="top"?a.outerHeight({margin:true})/3:a.outerWidth({margin:true})/
+3);if(h=="show")a.css("opacity",0).css(f,d=="pos"?-c:c);if(h=="hide")c/=m*2;h!="hide"&&m--;if(h=="show"){var g={opacity:1};g[f]=(d=="pos"?"+=":"-=")+c;a.animate(g,i/2,b.options.easing);c/=2;m--}for(g=0;g<m;g++){var j={},k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing);c=h=="hide"?c*2:c/2}if(h=="hide"){g={opacity:0};g[f]=(d=="pos"?"-=":"+=")+c;a.animate(g,i/2,b.options.easing,function(){a.hide();e.effects.restore(a,l);e.effects.removeWrapper(a);
+b.callback&&b.callback.apply(this,arguments)})}else{j={};k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing,function(){e.effects.restore(a,l);e.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments)})}a.queue("fx",function(){a.dequeue()});a.dequeue()})}})(jQuery);
+;/*
+ * jQuery UI Effects Clip 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Clip
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(b){b.effects.clip=function(e){return this.queue(function(){var a=b(this),i=["position","top","left","height","width"],f=b.effects.setMode(a,e.options.mode||"hide"),c=e.options.direction||"vertical";b.effects.save(a,i);a.show();var d=b.effects.createWrapper(a).css({overflow:"hidden"});d=a[0].tagName=="IMG"?d:a;var g={size:c=="vertical"?"height":"width",position:c=="vertical"?"top":"left"};c=c=="vertical"?d.height():d.width();if(f=="show"){d.css(g.size,0);d.css(g.position,c/2)}var h={};h[g.size]=
+f=="show"?c:0;h[g.position]=f=="show"?0:c/2;d.animate(h,{queue:false,duration:e.duration,easing:e.options.easing,complete:function(){f=="hide"&&a.hide();b.effects.restore(a,i);b.effects.removeWrapper(a);e.callback&&e.callback.apply(a[0],arguments);a.dequeue()}})})}})(jQuery);
+;/*
+ * jQuery UI Effects Drop 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Drop
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(c){c.effects.drop=function(d){return this.queue(function(){var a=c(this),h=["position","top","left","opacity"],e=c.effects.setMode(a,d.options.mode||"hide"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a);var f=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var g=d.options.distance||(f=="top"?a.outerHeight({margin:true})/2:a.outerWidth({margin:true})/2);if(e=="show")a.css("opacity",0).css(f,b=="pos"?-g:g);var i={opacity:e=="show"?1:
+0};i[f]=(e=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+g;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){e=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
+;/*
+ * jQuery UI Effects Explode 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Explode
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(j){j.effects.explode=function(a){return this.queue(function(){var c=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3,d=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3;a.options.mode=a.options.mode=="toggle"?j(this).is(":visible")?"hide":"show":a.options.mode;var b=j(this).show().css("visibility","hidden"),g=b.offset();g.top-=parseInt(b.css("marginTop"),10)||0;g.left-=parseInt(b.css("marginLeft"),10)||0;for(var h=b.outerWidth(true),i=b.outerHeight(true),e=0;e<c;e++)for(var f=
+0;f<d;f++)b.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+
+e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery);
+;/*
+ * jQuery UI Effects Fade 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Fade
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+;/*
+ * jQuery UI Effects Fold 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Fold
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","left"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],10)/100*
+f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery);
+;/*
+ * jQuery UI Effects Highlight 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Highlight
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&&
+this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
+;/*
+ * jQuery UI Effects Pulsate 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Pulsate
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c<times;c++){b.animate({opacity:animateTo},duration,a.options.easing);animateTo=(animateTo+1)%2}b.animate({opacity:animateTo},duration,
+a.options.easing,function(){animateTo==0&&b.hide();a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()}).dequeue()})}})(jQuery);
+;/*
+ * jQuery UI Effects Scale 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Scale
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(c){c.effects.puff=function(b){return this.queue(function(){var a=c(this),e=c.effects.setMode(a,b.options.mode||"hide"),g=parseInt(b.options.percent,10)||150,h=g/100,i={height:a.height(),width:a.width()};c.extend(b.options,{fade:true,mode:e,percent:e=="hide"?g:100,from:e=="hide"?i:{height:i.height*h,width:i.width*h}});a.effect("scale",b.options,b.duration,b.callback);a.dequeue()})};c.effects.scale=function(b){return this.queue(function(){var a=c(this),e=c.extend(true,{},b.options),g=c.effects.setMode(a,
+b.options.mode||"effect"),h=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:g=="hide"?0:100),i=b.options.direction||"both",f=b.options.origin;if(g!="effect"){e.origin=f||["middle","center"];e.restore=true}f={height:a.height(),width:a.width()};a.from=b.options.from||(g=="show"?{height:0,width:0}:f);h={y:i!="horizontal"?h/100:1,x:i!="vertical"?h/100:1};a.to={height:f.height*h.y,width:f.width*h.x};if(b.options.fade){if(g=="show"){a.from.opacity=0;a.to.opacity=1}if(g=="hide"){a.from.opacity=
+1;a.to.opacity=0}}e.from=a.from;e.to=a.to;e.mode=g;a.effect("size",e,b.duration,b.callback);a.dequeue()})};c.effects.size=function(b){return this.queue(function(){var a=c(this),e=["position","top","left","width","height","overflow","opacity"],g=["position","top","left","overflow","opacity"],h=["width","height","overflow"],i=["fontSize"],f=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],k=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=c.effects.setMode(a,
+b.options.mode||"effect"),n=b.options.restore||false,m=b.options.scale||"both",l=b.options.origin,j={height:a.height(),width:a.width()};a.from=b.options.from||j;a.to=b.options.to||j;if(l){l=c.effects.getBaseline(l,j);a.from.top=(j.height-a.from.height)*l.y;a.from.left=(j.width-a.from.width)*l.x;a.to.top=(j.height-a.to.height)*l.y;a.to.left=(j.width-a.to.width)*l.x}var d={from:{y:a.from.height/j.height,x:a.from.width/j.width},to:{y:a.to.height/j.height,x:a.to.width/j.width}};if(m=="box"||m=="both"){if(d.from.y!=
+d.to.y){e=e.concat(f);a.from=c.effects.setTransition(a,f,d.from.y,a.from);a.to=c.effects.setTransition(a,f,d.to.y,a.to)}if(d.from.x!=d.to.x){e=e.concat(k);a.from=c.effects.setTransition(a,k,d.from.x,a.from);a.to=c.effects.setTransition(a,k,d.to.x,a.to)}}if(m=="content"||m=="both")if(d.from.y!=d.to.y){e=e.concat(i);a.from=c.effects.setTransition(a,i,d.from.y,a.from);a.to=c.effects.setTransition(a,i,d.to.y,a.to)}c.effects.save(a,n?e:g);a.show();c.effects.createWrapper(a);a.css("overflow","hidden").css(a.from);
+if(m=="content"||m=="both"){f=f.concat(["marginTop","marginBottom"]).concat(i);k=k.concat(["marginLeft","marginRight"]);h=e.concat(f).concat(k);a.find("*[width]").each(function(){child=c(this);n&&c.effects.save(child,h);var o={height:child.height(),width:child.width()};child.from={height:o.height*d.from.y,width:o.width*d.from.x};child.to={height:o.height*d.to.y,width:o.width*d.to.x};if(d.from.y!=d.to.y){child.from=c.effects.setTransition(child,f,d.from.y,child.from);child.to=c.effects.setTransition(child,
+f,d.to.y,child.to)}if(d.from.x!=d.to.x){child.from=c.effects.setTransition(child,k,d.from.x,child.from);child.to=c.effects.setTransition(child,k,d.to.x,child.to)}child.css(child.from);child.animate(child.to,b.duration,b.options.easing,function(){n&&c.effects.restore(child,h)})})}a.animate(a.to,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){a.to.opacity===0&&a.css("opacity",a.from.opacity);p=="hide"&&a.hide();c.effects.restore(a,n?e:g);c.effects.removeWrapper(a);b.callback&&
+b.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
+;/*
+ * jQuery UI Effects Shake 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Shake
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(d){d.effects.shake=function(a){return this.queue(function(){var b=d(this),j=["position","top","left"];d.effects.setMode(b,a.options.mode||"effect");var c=a.options.direction||"left",e=a.options.distance||20,l=a.options.times||3,f=a.duration||a.options.duration||140;d.effects.save(b,j);b.show();d.effects.createWrapper(b);var g=c=="up"||c=="down"?"top":"left",h=c=="up"||c=="left"?"pos":"neg";c={};var i={},k={};c[g]=(h=="pos"?"-=":"+=")+e;i[g]=(h=="pos"?"+=":"-=")+e*2;k[g]=(h=="pos"?"-=":"+=")+
+e*2;b.animate(c,f,a.options.easing);for(e=1;e<l;e++)b.animate(i,f,a.options.easing).animate(k,f,a.options.easing);b.animate(i,f,a.options.easing).animate(c,f/2,a.options.easing,function(){d.effects.restore(b,j);d.effects.removeWrapper(b);a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()});b.dequeue()})}})(jQuery);
+;/*
+ * jQuery UI Effects Slide 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Slide
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(c){c.effects.slide=function(d){return this.queue(function(){var a=c(this),h=["position","top","left"],e=c.effects.setMode(a,d.options.mode||"show"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a).css({overflow:"hidden"});var f=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var g=d.options.distance||(f=="top"?a.outerHeight({margin:true}):a.outerWidth({margin:true}));if(e=="show")a.css(f,b=="pos"?-g:g);var i={};i[f]=(e=="show"?b=="pos"?
+"+=":"-=":b=="pos"?"-=":"+=")+g;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){e=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
+;/*
+ * jQuery UI Effects Transfer 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Transfer
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */
+(function(e){e.effects.transfer=function(a){return this.queue(function(){var b=e(this),c=e(a.options.to),d=c.offset();c={top:d.top,left:d.left,height:c.innerHeight(),width:c.innerWidth()};d=b.offset();var f=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments);
+b.dequeue()})})}})(jQuery);
+;
\ No newline at end of file
diff --git a/modules/discojuice/www/discojuice/logos/brown.png b/modules/discojuice/www/discojuice/logos/brown.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d02f894180b0135e0e560497c177ac5bc45a96c
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/brown.png differ
diff --git a/modules/discojuice/www/discojuice/logos/cesnet.png b/modules/discojuice/www/discojuice/logos/cesnet.png
new file mode 100644
index 0000000000000000000000000000000000000000..64d8de82395a78089e9130d0de262786fb4e811e
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/cesnet.png differ
diff --git a/modules/discojuice/www/discojuice/logos/cru.png b/modules/discojuice/www/discojuice/logos/cru.png
new file mode 100644
index 0000000000000000000000000000000000000000..0858997910277a6b8e11407abc533a65454f2b11
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/cru.png differ
diff --git a/modules/discojuice/www/discojuice/logos/csc.png b/modules/discojuice/www/discojuice/logos/csc.png
new file mode 100644
index 0000000000000000000000000000000000000000..19890e427b5f337630fbd137da062fc4ce72a11b
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/csc.png differ
diff --git a/modules/discojuice/www/discojuice/logos/fccn.png b/modules/discojuice/www/discojuice/logos/fccn.png
new file mode 100644
index 0000000000000000000000000000000000000000..b38468421343701a84933d566398d859e4d48365
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/fccn.png differ
diff --git a/modules/discojuice/www/discojuice/logos/feide-s.png b/modules/discojuice/www/discojuice/logos/feide-s.png
new file mode 100644
index 0000000000000000000000000000000000000000..07ef008eefd426b7356258a1ce084263ec818dd3
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/feide-s.png differ
diff --git a/modules/discojuice/www/discojuice/logos/feide.png b/modules/discojuice/www/discojuice/logos/feide.png
new file mode 100644
index 0000000000000000000000000000000000000000..28eb56390146d5f37b722812e05f188fa6997a11
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/feide.png differ
diff --git a/modules/discojuice/www/discojuice/logos/feide2.png b/modules/discojuice/www/discojuice/logos/feide2.png
new file mode 100644
index 0000000000000000000000000000000000000000..864eb5e5e0a63a4cc4d2b0b9ecfd36756dda68e3
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/feide2.png differ
diff --git a/modules/discojuice/www/discojuice/logos/geant.png b/modules/discojuice/www/discojuice/logos/geant.png
new file mode 100644
index 0000000000000000000000000000000000000000..2c243bb3f8a8ffb623778928a3132df1ad104b71
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/geant.png differ
diff --git a/modules/discojuice/www/discojuice/logos/google.png b/modules/discojuice/www/discojuice/logos/google.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e2276c960e8dc17c5428f3ec19d4031c1a1956a
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/google.png differ
diff --git a/modules/discojuice/www/discojuice/logos/haka.png b/modules/discojuice/www/discojuice/logos/haka.png
new file mode 100644
index 0000000000000000000000000000000000000000..c51a23f76a5df5ea793be3ba7865f98f135b2458
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/haka.png differ
diff --git a/modules/discojuice/www/discojuice/logos/nordunet.png b/modules/discojuice/www/discojuice/logos/nordunet.png
new file mode 100644
index 0000000000000000000000000000000000000000..579c1480dca8f896cd596863e895d7846d19c087
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/nordunet.png differ
diff --git a/modules/discojuice/www/discojuice/logos/ntnu.png b/modules/discojuice/www/discojuice/logos/ntnu.png
new file mode 100644
index 0000000000000000000000000000000000000000..65f732ed88767825a5fbfbbf9347232689e38196
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/ntnu.png differ
diff --git a/modules/discojuice/www/discojuice/logos/ntua.png b/modules/discojuice/www/discojuice/logos/ntua.png
new file mode 100644
index 0000000000000000000000000000000000000000..64614018054f8068caf838d94914a42c20b437fb
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/ntua.png differ
diff --git a/modules/discojuice/www/discojuice/logos/openidp.png b/modules/discojuice/www/discojuice/logos/openidp.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f5868e07e22ac4852d6dd8801662fb014d92690
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/openidp.png differ
diff --git a/modules/discojuice/www/discojuice/logos/protectnetwork.png b/modules/discojuice/www/discojuice/logos/protectnetwork.png
new file mode 100644
index 0000000000000000000000000000000000000000..80ebedef3bb998b51dd7af992a8451fb49ecb42c
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/protectnetwork.png differ
diff --git a/modules/discojuice/www/discojuice/logos/rediris.png b/modules/discojuice/www/discojuice/logos/rediris.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a1de0b8cfbf5d6f4dded95bdc7d7d00c42b8246
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/rediris.png differ
diff --git a/modules/discojuice/www/discojuice/logos/skole.png b/modules/discojuice/www/discojuice/logos/skole.png
new file mode 100644
index 0000000000000000000000000000000000000000..4b479f58af6bf2493fc0b1293d61cbbf99d8cd5e
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/skole.png differ
diff --git a/modules/discojuice/www/discojuice/logos/surfnet.png b/modules/discojuice/www/discojuice/logos/surfnet.png
new file mode 100644
index 0000000000000000000000000000000000000000..43862e23554ff33e0f7254a59f8a821efc21b5ac
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/surfnet.png differ
diff --git a/modules/discojuice/www/discojuice/logos/terena.png b/modules/discojuice/www/discojuice/logos/terena.png
new file mode 100644
index 0000000000000000000000000000000000000000..af69384f9d55eaa375d9fdec9ce3fcffc88192c0
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/terena.png differ
diff --git a/modules/discojuice/www/discojuice/logos/terena2.png b/modules/discojuice/www/discojuice/logos/terena2.png
new file mode 100644
index 0000000000000000000000000000000000000000..22ee56fa5d80c89bdb65fb17d5a711813eb23565
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/terena2.png differ
diff --git a/modules/discojuice/www/discojuice/logos/twitter.png b/modules/discojuice/www/discojuice/logos/twitter.png
new file mode 100644
index 0000000000000000000000000000000000000000..604dabc7257c5e41fcab4b81925ca3ad1e3cfd4b
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/twitter.png differ
diff --git a/modules/discojuice/www/discojuice/logos/uio.png b/modules/discojuice/www/discojuice/logos/uio.png
new file mode 100644
index 0000000000000000000000000000000000000000..557c0bf53c97f0fd5784982d891d65adb4b28aad
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/uio.png differ
diff --git a/modules/discojuice/www/discojuice/logos/uma.png b/modules/discojuice/www/discojuice/logos/uma.png
new file mode 100644
index 0000000000000000000000000000000000000000..6a639e4628bbb13e5e60f44e0f4f9ccc9a709566
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/uma.png differ
diff --git a/modules/discojuice/www/discojuice/logos/umeaa.png b/modules/discojuice/www/discojuice/logos/umeaa.png
new file mode 100644
index 0000000000000000000000000000000000000000..bdf3e6e07cc4ef0f0965cce57095be08a91f4119
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/umeaa.png differ
diff --git a/modules/discojuice/www/discojuice/logos/uninett.png b/modules/discojuice/www/discojuice/logos/uninett.png
new file mode 100644
index 0000000000000000000000000000000000000000..8fa1901569a70026a9bbff75920dc2d0377e25aa
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/uninett.png differ
diff --git a/modules/discojuice/www/discojuice/logos/wayf.png b/modules/discojuice/www/discojuice/logos/wayf.png
new file mode 100644
index 0000000000000000000000000000000000000000..51ed88ae6943626d1314a45af9ecee3d717e4a9e
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/wayf.png differ
diff --git a/modules/discojuice/www/discojuice/logos/wayf2.png b/modules/discojuice/www/discojuice/logos/wayf2.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef5049e3267740aeb46f09426d950e922e2ab5fa
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/wayf2.png differ
diff --git a/modules/discojuice/www/discojuice/logos/yahoo.png b/modules/discojuice/www/discojuice/logos/yahoo.png
new file mode 100644
index 0000000000000000000000000000000000000000..559afa241dca33a0162761cf6fa2d9bf441b6ab9
Binary files /dev/null and b/modules/discojuice/www/discojuice/logos/yahoo.png differ
diff --git a/modules/discojuice/www/favicon.png b/modules/discojuice/www/favicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..45d8f2e74e3ef7ace28c43a83ca086a53ad7b167
Binary files /dev/null and b/modules/discojuice/www/favicon.png differ
diff --git a/modules/discojuice/www/feed-debug.php b/modules/discojuice/www/feed-debug.php
new file mode 100644
index 0000000000000000000000000000000000000000..b19ef59b9e53f8c91f6791e0f0728d3a60602041
--- /dev/null
+++ b/modules/discojuice/www/feed-debug.php
@@ -0,0 +1,33 @@
+<?php
+
+
+#sleep(2);
+
+$feed = new sspmod_discojuice_Feed();
+$datajson = $feed->read();	
+
+$data = json_decode($datajson, TRUE);
+
+
+header('Content-Type: text/plain; charset=utf-8');
+
+# print_r($data); exit;
+
+foreach($data AS $key => $e) {
+	
+	if ($e['country'] == 'ES') {
+		print_r($e);
+	}
+	
+	if (empty($e['geo'])) {
+		#print_r($e);
+		echo "Entity [" . $e['entityid'] . "] is missing geo-coordinates\n";
+	}
+	
+	
+}
+
+
+
+
+
diff --git a/modules/discojuice/www/feed.php b/modules/discojuice/www/feed.php
new file mode 100644
index 0000000000000000000000000000000000000000..8241ed6af38595b73852d50ac24bd0952930d7ba
--- /dev/null
+++ b/modules/discojuice/www/feed.php
@@ -0,0 +1,39 @@
+<?php
+
+
+#sleep(2);
+
+$feed = new sspmod_discojuice_Feed();
+
+if (!empty($_REQUEST['refresh'])) {
+	$feed->store();
+	$data = $feed->read();	
+} else {
+	$data = $feed->read();	
+}
+
+
+
+
+if (!empty($_REQUEST['debug'])) {
+
+	header('Content-Type: text/plain; charset=utf-8');
+	print_r($data);
+	
+}
+
+header('Content-Type: application/json; charset=utf-8');
+	
+
+if(isset($_REQUEST['callback'])) {
+	echo $_REQUEST['callback'] . '(' . $data . ');';
+} else {
+	echo $data;
+}
+
+
+
+
+
+
+
diff --git a/modules/saml/lib/Auth/Source/SP.php b/modules/saml/lib/Auth/Source/SP.php
index de71894e058bb29d237a2da87f13b7ca6d1b8210..6edbc3e04c266edc7f474fda2ea18804cd0dadd7 100644
--- a/modules/saml/lib/Auth/Source/SP.php
+++ b/modules/saml/lib/Auth/Source/SP.php
@@ -58,6 +58,10 @@ class sspmod_saml_Auth_Source_SP extends SimpleSAML_Auth_Source {
 		$this->entityId = $this->metadata->getString('entityID');
 		$this->idp = $this->metadata->getString('idp', NULL);
 		$this->discoURL = $this->metadata->getString('discoURL', NULL);
+		
+		if (SimpleSAML_Module::isModuleEnabled('discojuice')) {
+			$this->discoURL = SimpleSAML_Module::getModuleURL('discojuice/central.php');
+		}
 	}