Commits

3k  committed 58fed2b

spaces to tabs

  • Participants
  • Parent commits b55035f

Comments (0)

Files changed (8)

File css/hejes.css

 .clear
 {
 	clear: both;
-}
+}
 body
 {
-  margin: 1em;
+	margin: 1em;
 	overflow: visible;
 }
 div#menu
 	width: 60%;
 	float: left;
 	margin-left: 2ex;
-}
+}

File elements/about.php

 <div id="about-page">
-  <h1>About YouTube Mixer</h1>
-  <p>Contents of this page:</p>
-  <ul>
-    <li><a href="#rationale">Rationale</a></li>
-    <li><a href="#shortcuts">Keyboard shortcuts</a></li>
-    <li>
-      <a href="#FAQ">FAQ</a>
-      <ul>
-        <li><a href="#author">Who made this?</a></li>
-        <li><a href="#source">Is the source available?</a></li>
-        <li><a href="#godfather_of_rap">Who is the godfather of rap?</a></li>
-        <li><a href="#shortcuts_help">Keyboard shortcuts doesn&apos;t work!</a></li>
-        <li><a href="#how_to_record">How can I record my mix?</a></li>
-        <li><a href="#mix_more">Can I mix more than two videos?</a></li>
-      </ul>
-    </li>
-  </ul>
-  <h2 id="rationale">Rationale</h2>
-  <p class="last">Of course this toy was inspired by its famous <a href="http://www.twoyoutubevideosandamotherfuckingcrossfader.com/">mother</a>.
-  My intention was to create a mutation of it with a cleaner interface, more advanced keyboard support and better readable source code.</p>
-  <h2 id="shortcuts">Keyboard shortcuts</h2>
-  <p class="last">Here's a list of currently available keys:</p>
-  <table>
-    <tr>
-      <th>key</th>
-      <th>channel</th>
-      <th>function</th>
-    </tr>
-    <tr>
-      <td>&lt;up&gt;</td>
-      <td>master</td>
-      <td>volume up 10%</td>
-    </tr>
-    <tr>
-      <td>&lt;down&gt;</td>
-      <td>master</td>
-      <td>volume down 10%</td>
-    </tr>
-    <tr class="even">
-      <td>&lt;left&gt;</td>
-      <td>1/2</td>
-      <td>fade player #2 by 10%</td>
-    </tr>
-    <tr class="even">
-      <td>&lt;right&gt;</td>
-      <td>1/2</td>
-      <td>fade player #1 by 10%</td>
-    </tr>
-    <tr class="even">
-      <td>&lt;space&gt;</td>
-      <td>1/2</td>
-      <td>50% mix</td>
-    </tr>
-    <tr>
-      <td>1</td>
-      <td>1</td>
-      <td>play/pause</td>
-    </tr>
-    <tr>
-      <td>q</td>
-      <td>1</td>
-      <td>volume up 10%</td>
-    </tr>
-    <tr>
-      <td>a</td>
-      <td>1</td>
-      <td>volume down 10%</td>
-    </tr>
-    <tr>
-      <td>d</td>
-      <td>1</td>
-      <td>mute</td>
-    </tr>
-    <tr>
-      <td>e</td>
-      <td>1</td>
-      <td>volume 50%</td>
-    </tr>
-    <tr>
-      <td>c</td>
-      <td>1</td>
-      <td>solo</td>
-    </tr>
-    <tr class="even">
-      <td>2</td>
-      <td>2</td>
-      <td>play/pause</td>
-    </tr>
-    <tr class="even">
-      <td>w</td>
-      <td>2</td>
-      <td>volume up</td>
-    </tr>
-    <tr class="even">
-      <td>s</td>
-      <td>2</td>
-      <td>volume down</td>
-    </tr>
-    <tr class="even">
-      <td>f</td>
-      <td>2</td>
-      <td>mute</td>
-    </tr>
-    <tr class="even">
-      <td>r</td>
-      <td>2</td>
-      <td>volume 50%</td>
-    </tr>
-    <tr class="even">
-      <td>v</td>
-      <td>2</td>
-      <td>solo</td>
-    </tr>
-  </table>
-  <h2 id="FAQ">FAQ</h2>
-  <p class="last">Some of the frequently asked questions.</p>
-  <h3 id="author">Who made this?</h3>
-  <p class="last">Designed and coded by Kiripolszky Károly. You can contact him via his website at <a href="http://ekezet.com">ekezet.com</a>!</p>
-  <h3 id="source">Is the source available?</h3>
-  <p class="last">Yes, it is released under the MIT License and can be freely downloaded from the BitBucket <a href="http://bitbucket.org/3k/mixer/src/">mercurial repository</a>.</p>
-  <h3 id="godfather_of_rap">Who is the godfather of rap?</h3>
-  <p class="last">The godfather of rap is an 15th century English poet, who has been called the &ldquo;rude rayling rimer&rdquo;. For more info on <a href="http://en.wikipedia.org/wiki/John_Skelton">John Skelton</a> and his works go to Wikipedia.</p>
-  <h3 id="shortcuts_help">Keyboard shortcuts doesn&apos;t work!</h3>
-  <p class="last">In a web browser only focusable and focused elements can receive keyboard input. By default this element is the page itself. So if the shortcuts don&apos;t work just click on the white background to regain focus and you&apos;re set!</p>
-  <h3 id="how_to_record">How can I record my mix?</h3>
-  <p class="last">To record your mixes you need third party software. For a <a href="http://en.wikipedia.org/wiki/Screencast#Software">list of free and commercial recording software</a> go to Wikipedia. However I prefer using <a href="http://www.virtualdub.org/">VirtualDub</a> which is free.</p>
-  <h3 id="mix_more">Can I mix more than two videos?</h3>
-  <p class="last">Sure, just open the mixer again in a new tab or window! q;)</p>
-</div>
+	<h1>About YouTube Mixer</h1>
+	<p>Contents of this page:</p>
+	<ul>
+		<li><a href="#rationale">Rationale</a></li>
+		<li><a href="#shortcuts">Keyboard shortcuts</a></li>
+		<li>
+			<a href="#FAQ">FAQ</a>
+			<ul>
+				<li><a href="#author">Who made this?</a></li>
+				<li><a href="#source">Is the source available?</a></li>
+				<li><a href="#godfather_of_rap">Who is the godfather of rap?</a></li>
+				<li><a href="#shortcuts_help">Keyboard shortcuts doesn&apos;t work!</a></li>
+				<li><a href="#how_to_record">How can I record my mix?</a></li>
+				<li><a href="#mix_more">Can I mix more than two videos?</a></li>
+			</ul>
+		</li>
+	</ul>
+	<h2 id="rationale">Rationale</h2>
+	<p class="last">Of course this toy was inspired by its famous <a href="http://www.twoyoutubevideosandamotherfuckingcrossfader.com/">mother</a>.
+	My intention was to create a mutation of it with a cleaner interface, more advanced keyboard support and better readable source code.</p>
+	<h2 id="shortcuts">Keyboard shortcuts</h2>
+	<p class="last">Here's a list of currently available keys:</p>
+	<table>
+		<tr>
+			<th>key</th>
+			<th>channel</th>
+			<th>function</th>
+		</tr>
+		<tr>
+			<td>&lt;up&gt;</td>
+			<td>master</td>
+			<td>volume up 10%</td>
+		</tr>
+		<tr>
+			<td>&lt;down&gt;</td>
+			<td>master</td>
+			<td>volume down 10%</td>
+		</tr>
+		<tr class="even">
+			<td>&lt;left&gt;</td>
+			<td>1/2</td>
+			<td>fade player #2 by 10%</td>
+		</tr>
+		<tr class="even">
+			<td>&lt;right&gt;</td>
+			<td>1/2</td>
+			<td>fade player #1 by 10%</td>
+		</tr>
+		<tr class="even">
+			<td>&lt;space&gt;</td>
+			<td>1/2</td>
+			<td>50% mix</td>
+		</tr>
+		<tr>
+			<td>1</td>
+			<td>1</td>
+			<td>play/pause</td>
+		</tr>
+		<tr>
+			<td>q</td>
+			<td>1</td>
+			<td>volume up 10%</td>
+		</tr>
+		<tr>
+			<td>a</td>
+			<td>1</td>
+			<td>volume down 10%</td>
+		</tr>
+		<tr>
+			<td>d</td>
+			<td>1</td>
+			<td>mute</td>
+		</tr>
+		<tr>
+			<td>e</td>
+			<td>1</td>
+			<td>volume 50%</td>
+		</tr>
+		<tr>
+			<td>c</td>
+			<td>1</td>
+			<td>solo</td>
+		</tr>
+		<tr class="even">
+			<td>2</td>
+			<td>2</td>
+			<td>play/pause</td>
+		</tr>
+		<tr class="even">
+			<td>w</td>
+			<td>2</td>
+			<td>volume up</td>
+		</tr>
+		<tr class="even">
+			<td>s</td>
+			<td>2</td>
+			<td>volume down</td>
+		</tr>
+		<tr class="even">
+			<td>f</td>
+			<td>2</td>
+			<td>mute</td>
+		</tr>
+		<tr class="even">
+			<td>r</td>
+			<td>2</td>
+			<td>volume 50%</td>
+		</tr>
+		<tr class="even">
+			<td>v</td>
+			<td>2</td>
+			<td>solo</td>
+		</tr>
+	</table>
+	<h2 id="FAQ">FAQ</h2>
+	<p class="last">Some of the frequently asked questions.</p>
+	<h3 id="author">Who made this?</h3>
+	<p class="last">Designed and coded by Kiripolszky Károly. You can contact him via his website at <a href="http://ekezet.com">ekezet.com</a>!</p>
+	<h3 id="source">Is the source available?</h3>
+	<p class="last">Yes, it is released under the MIT License and can be freely downloaded from the BitBucket <a href="http://bitbucket.org/3k/mixer/src/">mercurial repository</a>.</p>
+	<h3 id="godfather_of_rap">Who is the godfather of rap?</h3>
+	<p class="last">The godfather of rap is an 15th century English poet, who has been called the &ldquo;rude rayling rimer&rdquo;. For more info on <a href="http://en.wikipedia.org/wiki/John_Skelton">John Skelton</a> and his works go to Wikipedia.</p>
+	<h3 id="shortcuts_help">Keyboard shortcuts doesn&apos;t work!</h3>
+	<p class="last">In a web browser only focusable and focused elements can receive keyboard input. By default this element is the page itself. So if the shortcuts don&apos;t work just click on the white background to regain focus and you&apos;re set!</p>
+	<h3 id="how_to_record">How can I record my mix?</h3>
+	<p class="last">To record your mixes you need third party software. For a <a href="http://en.wikipedia.org/wiki/Screencast#Software">list of free and commercial recording software</a> go to Wikipedia. However I prefer using <a href="http://www.virtualdub.org/">VirtualDub</a> which is free.</p>
+	<h3 id="mix_more">Can I mix more than two videos?</h3>
+	<p class="last">Sure, just open the mixer again in a new tab or window! q;)</p>
+</div>

File elements/mixer.php

 <div id="players">
-  <div id="master">
-    <h2>M</h2>
+	<div id="master">
+		<h2>M</h2>
 
-    <div id="volume-m" class="player-vol"></div>
+		<div id="volume-m" class="player-vol"></div>
 
-    <div class="clear"></div>
+		<div class="clear"></div>
 
-    <?php geg_render('reset_btn', array('text'=>'100', 'onclick'=>"Mixer.masterslider.slider('value', 100)", 'title'=>'Maximum Volume')) ?>
-    <?php geg_render('reset_btn', array('text'=>'&frac12;', 'onclick'=>"Mixer.masterslider.slider('value', 50)", 'title'=>'50% volume')) ?>
-    <?php geg_render('reset_btn', array('text'=>'0', 'onclick'=>"Mixer.masterslider.slider('value', 0)", 'title'=>'Minimum Volume')) ?>
-  </div>
-  <?php
-    geg_render('player', array('id'=>1));
-    geg_render('player', array('id'=>2));
-  ?>
+		<?php geg_render('reset_btn', array('text'=>'100', 'onclick'=>"Mixer.masterslider.slider('value', 100)", 'title'=>'Maximum Volume')) ?>
+		<?php geg_render('reset_btn', array('text'=>'&frac12;', 'onclick'=>"Mixer.masterslider.slider('value', 50)", 'title'=>'50% volume')) ?>
+		<?php geg_render('reset_btn', array('text'=>'0', 'onclick'=>"Mixer.masterslider.slider('value', 0)", 'title'=>'Minimum Volume')) ?>
+	</div>
+	<?php
+		geg_render('player', array('id'=>1));
+		geg_render('player', array('id'=>2));
+	?>
 </div>
 
 <div class="clear"></div>
 
 <div id="controls">
-  <div id="xfader"></div>
+	<div id="xfader"></div>
 
-  <table id="fader-controls">
-    <tr>
-      <td>
-        <?php geg_render('reset_btn', array('text'=>'01', 'onclick'=>"Mixer.xfader.slider('value', 0)", 'title'=>'Player 01 Solo <c>')) ?>
-      </td>
-      <td>
-        <?php geg_render('reset_btn', array('text'=>'&frac12;', 'onclick'=>"Mixer.xfader.slider('value', 50)", 'style'=>"margin: auto", 'title'=>'50% mix <space>')) ?>
-      </td>
-      <td>
-        <?php geg_render('reset_btn', array('text'=>'02', 'onclick'=>"Mixer.xfader.slider('value', 100)", 'style'=>"margin-left: auto", 'title'=>'Player 02 Solo <v>')) ?>
-      </td>
-    </tr>
-  </table>
+	<table id="fader-controls">
+		<tr>
+			<td>
+				<?php geg_render('reset_btn', array('text'=>'01', 'onclick'=>"Mixer.xfader.slider('value', 0)", 'title'=>'Player 01 Solo <c>')) ?>
+			</td>
+			<td>
+				<?php geg_render('reset_btn', array('text'=>'&frac12;', 'onclick'=>"Mixer.xfader.slider('value', 50)", 'style'=>"margin: auto", 'title'=>'50% mix <space>')) ?>
+			</td>
+			<td>
+				<?php geg_render('reset_btn', array('text'=>'02', 'onclick'=>"Mixer.xfader.slider('value', 100)", 'style'=>"margin-left: auto", 'title'=>'Player 02 Solo <v>')) ?>
+			</td>
+		</tr>
+	</table>
 </div>
 
 <div id="search">
 </div>
 
 <div id="page-tools">
-  <form id="get-link">
-    <?php geg_render('reset_btn', array(
-    	'text'=>'Link!',
-    	'onclick'=>'getLink(\'http'.(empty($_SERVER['HTTPS']) ? '' : 's').'://'.$_SERVER['HTTP_HOST'].BASE_URL.'\')',
-    	'title'=>'Generate link for current page and settings')) ?>&nbsp;&nbsp;
-    <input id="link-txtbox" name="page-link" value="" />
-  </form>
-</div>
+	<form id="get-link">
+		<?php geg_render('reset_btn', array(
+			'text'=>'Link!',
+			'onclick'=>'getLink(\'http'.(empty($_SERVER['HTTPS']) ? '' : 's').'://'.$_SERVER['HTTP_HOST'].BASE_URL.'\')',
+			'title'=>'Generate link for current page and settings')) ?>&nbsp;&nbsp;
+		<input id="link-txtbox" name="page-link" value="" />
+	</form>
+</div>

File elements/player.php

 <?php $shkeys = array(
-  'p1' => array(
-    1 => 'e',
-    2 => 'd'
-  ),
-  'p2' => array(
-    1 => 'r',
-    2 => 'f'
-  )
+	'p1' => array(
+		1 => 'e',
+		2 => 'd'
+	),
+	'p2' => array(
+		1 => 'r',
+		2 => 'f'
+	)
 ); ?>
 <div id="player_<?php echo $id ?>" class="player">
-  <h2><?php echo sprintf('%02d', $id) ?></h2>
+	<h2><?php echo sprintf('%02d', $id) ?></h2>
 
-  <div class="player-controls">
-    <div class="player-vol" id="volume-<?php echo $id ?>"></div>
+	<div class="player-controls">
+		<div class="player-vol" id="volume-<?php echo $id ?>"></div>
 
-    <div class="clear"></div>
+		<div class="clear"></div>
 
-    <?php geg_render('reset_btn', array('text'=>'100', 'onclick'=>"Mixer.sliders[".($id-1)."].slider('value', 100)", 'title'=>sprintf('Player %02d Maximum Volume', $id))) ?>
-    <?php geg_render('reset_btn', array('text'=>'&frac12;', 'onclick'=>"Mixer.sliders[".($id-1)."].slider('value', 50)", 'title'=>sprintf('Player %02d 50%% Volume <'.$shkeys["p$id"][1].'>', $id))) ?>
-    <?php geg_render('reset_btn', array('text'=>'0', 'onclick'=>"Mixer.sliders[".($id-1)."].slider('value', 0)", 'title'=>sprintf('Player %02d Minimum Volume <'.$shkeys["p$id"][2].'>', $id))) ?>
-  </div>
+		<?php geg_render('reset_btn', array('text'=>'100', 'onclick'=>"Mixer.sliders[".($id-1)."].slider('value', 100)", 'title'=>sprintf('Player %02d Maximum Volume', $id))) ?>
+		<?php geg_render('reset_btn', array('text'=>'&frac12;', 'onclick'=>"Mixer.sliders[".($id-1)."].slider('value', 50)", 'title'=>sprintf('Player %02d 50%% Volume <'.$shkeys["p$id"][1].'>', $id))) ?>
+		<?php geg_render('reset_btn', array('text'=>'0', 'onclick'=>"Mixer.sliders[".($id-1)."].slider('value', 0)", 'title'=>sprintf('Player %02d Minimum Volume <'.$shkeys["p$id"][2].'>', $id))) ?>
+	</div>
 
-  <div id="flashobj_<?php echo $id ?>" class="video_obj">
-    Sorry, but you need to have Flash player 8.0 or above and JavaScript enabled to watch this video!
-  </div>
-</div>
+	<div id="flashobj_<?php echo $id ?>" class="video_obj">
+		Sorry, but you need to have Flash player 8.0 or above and JavaScript enabled to watch this video!
+	</div>
+</div>
 <?php
 	require_once('config.php');
-  include_once('lib/geg.php');
-  $page = "mixer";
-  if (isset($_GET['url']) && !empty($_GET['url']))
-    $page = trim(strtolower($_GET['url']));
-  $homepage = $_SERVER['SERVER_NAME'];
-  header('content-type: text/html; charset=utf-8');
+	include_once('lib/geg.php');
+	$page = "mixer";
+	if (isset($_GET['url']) && !empty($_GET['url']))
+		$page = trim(strtolower($_GET['url']));
+	$homepage = $_SERVER['SERVER_NAME'];
+	header('content-type: text/html; charset=utf-8');
 ?>
 <!DOCTYPE html>
 <html xmlns:og="http://opengraphprotocol.org/schema/">
-  <head>
-    <meta charset="utf-8" />
+	<head>
+		<meta charset="utf-8" />
 		<meta property="og:title" content="YouTube Mixer" />
 		<meta property="og:type" content="website" />
 		<meta property="og:url" content="<?php echo BASE_URL ?>" />
 		<title>Tecső Mixer!</title>
-    <link rel="stylesheet" type="text/css" href="<?php echo BASE_URL ?>css/hejes.css" />
-    <link rel="stylesheet" type="text/css" href="<?php echo BASE_URL ?>css/yt.css" />
-    <link rel="stylesheet" type="text/css" href="<?php echo BASE_URL ?>css/jquery-ui-1.7.3.custom.css" />
-    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
-    <script type="text/javascript" src="<?php echo BASE_URL ?>js/jquery-ui-1.7.3.custom.min.js"></script>
-    <script type="text/javascript" src="<?php echo BASE_URL ?>js/jquery.template.min.js"></script>
-    <script type="text/javascript" src="<?php echo BASE_URL ?>js/swfobject.js"></script>
-    <script type="text/javascript" src="<?php echo BASE_URL ?>js/kbd.js"></script>
-    <script type="text/javascript" src="<?php echo BASE_URL ?>js/sense.js"></script>
+		<link rel="stylesheet" type="text/css" href="<?php echo BASE_URL ?>css/hejes.css" />
+		<link rel="stylesheet" type="text/css" href="<?php echo BASE_URL ?>css/yt.css" />
+		<link rel="stylesheet" type="text/css" href="<?php echo BASE_URL ?>css/jquery-ui-1.7.3.custom.css" />
+		<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
+		<script type="text/javascript" src="<?php echo BASE_URL ?>js/jquery-ui-1.7.3.custom.min.js"></script>
+		<script type="text/javascript" src="<?php echo BASE_URL ?>js/jquery.template.min.js"></script>
+		<script type="text/javascript" src="<?php echo BASE_URL ?>js/swfobject.js"></script>
+		<script type="text/javascript" src="<?php echo BASE_URL ?>js/kbd.js"></script>
+		<script type="text/javascript" src="<?php echo BASE_URL ?>js/sense.js"></script>
 	</head>
 
-  <body>
-    <div id="container">
-      <div id="content">
-        <?php geg_render($page); ?>
-      </div>
+	<body>
+		<div id="container">
+			<div id="content">
+				<?php geg_render($page); ?>
+			</div>
 
-      <div class="clear"></div>
+			<div class="clear"></div>
 
-      <div id="footer">
-        <a href="<?php echo BASE_URL ?>">mixer</a>
-        &nbsp;
-        <a href="<?php echo BASE_URL ?>about">about</a>
-        &nbsp;
-        <a href="http<?php echo empty($_SERVER['HTTPS']) ? '' : 's' ?>://<?php echo $homepage ?>/"><?php echo $homepage ?></a>
-        &nbsp;
-        |
-        &nbsp;
-        <a href="javascript:;" onclick="Mixer.reset()">reset mixer</a>
-      </div>
-    </div>
+			<div id="footer">
+				<a href="<?php echo BASE_URL ?>">mixer</a>
+				&nbsp;
+				<a href="<?php echo BASE_URL ?>about">about</a>
+				&nbsp;
+				<a href="http<?php echo empty($_SERVER['HTTPS']) ? '' : 's' ?>://<?php echo $homepage ?>/"><?php echo $homepage ?></a>
+				&nbsp;
+				|
+				&nbsp;
+				<a href="javascript:;" onclick="Mixer.reset()">reset mixer</a>
+			</div>
+		</div>
 
-    <script type="text/javascript">
-      $(document).ready(function()
-      {
-      	// check if localStorage is available
-      	if ('localStorage' in window && window['localStorage'] !== null)
-      	{
-      		Mixer.storeConfig = true;
-	      	var storedConfig = localStorage.getItem('config');
+		<script type="text/javascript">
+			$(document).ready(function()
+			{
+				// check if localStorage is available
+				if ('localStorage' in window && window['localStorage'] !== null)
+				{
+					Mixer.storeConfig = true;
+					var storedConfig = localStorage.getItem('config');
 					if (storedConfig)
 						Mixer.config = JSON.parse(storedConfig);
 				}
 
-        <?php
-          printf("Mixer.init(%s, %s, %s, %s, '%s', '%s');",
-            _g('f', 'Mixer.config.fade'), _g('m', 'Mixer.config.mastervol'),
-            _g('ch1', 'Mixer.config.maxvols[0]'), _g('ch2', 'Mixer.config.maxvols[1]'),
+				<?php
+					printf("Mixer.init(%s, %s, %s, %s, '%s', '%s');",
+						_g('f', 'Mixer.config.fade'), _g('m', 'Mixer.config.mastervol'),
+						_g('ch1', 'Mixer.config.maxvols[0]'), _g('ch2', 'Mixer.config.maxvols[1]'),
 						_g('v1', ''), _g('v2', ''))
-        ?>
+				?>
 
-        // init keyboard support
-        Keyboard.init();
-      });
-    </script>
+				// init keyboard support
+				Keyboard.init();
+			});
+		</script>
 
-    <script type="text/javascript">
-      var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-      document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-    </script>
+		<script type="text/javascript">
+			var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+			document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+		</script>
 
-    <script type="text/javascript">
-      try
-      {
-	      var pageTracker = _gat._getTracker("UA-1329669-6");
-	      pageTracker._setDomainName(".<?php echo $homepage ?>");
-	      pageTracker._trackPageview();
-      } catch(err) { }
-    </script>
-  </body>
-</html>
+		<script type="text/javascript">
+			try
+			{
+				var pageTracker = _gat._getTracker("UA-1329669-6");
+				pageTracker._setDomainName(".<?php echo $homepage ?>");
+				pageTracker._trackPageview();
+			} catch(err) { }
+		</script>
+	</body>
+</html>
 				return;
 
 			// left
-      if (event.which == 37)
-      {
-        if (Mixer.config.fade > 0)
-          Mixer.xfader.slider('value', Mixer.config.fade-10);
-      }
-      // up
-      if (event.which == 38)
-      {
-        if (Mixer.config.mastervol > 0)
-          Mixer.masterslider.slider('value', Mixer.config.mastervol+10);
-      }
-      // right
-      if (event.which == 39)
-      {
-        if (Mixer.config.fade < 100)
-          Mixer.xfader.slider('value', Mixer.config.fade+10);
-      }
-      // down
-      if (event.which == 40)
-      {
-        if (Mixer.config.mastervol > 0)
-          Mixer.masterslider.slider('value', Mixer.config.mastervol-10);
-      }
+			if (event.which == 37)
+			{
+				if (Mixer.config.fade > 0)
+					Mixer.xfader.slider('value', Mixer.config.fade-10);
+			}
+			// up
+			if (event.which == 38)
+			{
+				if (Mixer.config.mastervol > 0)
+					Mixer.masterslider.slider('value', Mixer.config.mastervol+10);
+			}
+			// right
+			if (event.which == 39)
+			{
+				if (Mixer.config.fade < 100)
+					Mixer.xfader.slider('value', Mixer.config.fade+10);
+			}
+			// down
+			if (event.which == 40)
+			{
+				if (Mixer.config.mastervol > 0)
+					Mixer.masterslider.slider('value', Mixer.config.mastervol-10);
+			}
 		});
 
 		$(document).keypress(function(event)
 			}
 
 			if (event.which == 'q'.charCodeAt(0))
-	    {
-	      if (Mixer.config.maxvols[0] < 100)
-	        Mixer.sliders[0].slider('value', Mixer.config.maxvols[0]+10);
-	    }
+			{
+				if (Mixer.config.maxvols[0] < 100)
+					Mixer.sliders[0].slider('value', Mixer.config.maxvols[0]+10);
+			}
 			if (event.which == 'a'.charCodeAt(0))
-	    {
-	      if (Mixer.config.maxvols[0] > 0)
-	        Mixer.sliders[0].slider('value', Mixer.config.maxvols[0]-10);
-	    }
+			{
+				if (Mixer.config.maxvols[0] > 0)
+					Mixer.sliders[0].slider('value', Mixer.config.maxvols[0]-10);
+			}
 			if (event.which == 'w'.charCodeAt(0))
-	    {
-	      if (Mixer.config.maxvols[1] < 100)
-	        Mixer.sliders[1].slider('value', Mixer.config.maxvols[1]+10);
-	    }
+			{
+				if (Mixer.config.maxvols[1] < 100)
+					Mixer.sliders[1].slider('value', Mixer.config.maxvols[1]+10);
+			}
 			if (event.which == 's'.charCodeAt(0))
-	    {
-	      if (Mixer.config.maxvols[1] > 0)
-	        Mixer.sliders[1].slider('value', Mixer.config.maxvols[1]-10);
-	    }
+			{
+				if (Mixer.config.maxvols[1] > 0)
+					Mixer.sliders[1].slider('value', Mixer.config.maxvols[1]-10);
+			}
 
 			if (event.which == 'e'.charCodeAt(0))
-	    {
-	      Mixer.sliders[0].slider('value', 50);
-	    }
+			{
+				Mixer.sliders[0].slider('value', 50);
+			}
 			if (event.which == 'd'.charCodeAt(0))
-	    {
-	      Mixer.sliders[0].slider('value', 0);
-	    }
+			{
+				Mixer.sliders[0].slider('value', 0);
+			}
 			if (event.which == 'r'.charCodeAt(0))
-	    {
-	      Mixer.sliders[1].slider('value', 50);
-	    }
+			{
+				Mixer.sliders[1].slider('value', 50);
+			}
 			if (event.which == 'f'.charCodeAt(0))
-	    {
-	      Mixer.sliders[1].slider('value', 0);
-	    }
+			{
+				Mixer.sliders[1].slider('value', 0);
+			}
 
 			if (event.which == 'c'.charCodeAt(0))
-	    {
-	      Mixer.xfader.slider('value', 0);
-	    }
-	    // space
+			{
+				Mixer.xfader.slider('value', 0);
+			}
+			// space
 			if (event.which == 32)
-	    {
-	      Mixer.xfader.slider('value', 50);
-	    }
+			{
+				Mixer.xfader.slider('value', 50);
+			}
 			if (event.which == 'v'.charCodeAt(0))
-	    {
-	      Mixer.xfader.slider('value', 100);
-	    }
+			{
+				Mixer.xfader.slider('value', 100);
+			}
 		});
 	}
-};
+};
 // see http://code.google.com/intl/hu/apis/youtube/js_api_reference.html
 
 var Mixer = {
-  // crossfader widget (see http://mootools.net/docs/more/Drag/Slider)
-  xfader 				: null,
-  // master volume slider
-  masterslider 	: null,
-  // channel volume widgets
-  sliders 			: [],
-  // for storing volume levels calculated at runtime
-  volumes 			: [0, 0],
+	// crossfader widget (see http://mootools.net/docs/more/Drag/Slider)
+	xfader 				: null,
+	// master volume slider
+	masterslider 	: null,
+	// channel volume widgets
+	sliders 			: [],
+	// for storing volume levels calculated at runtime
+	volumes 			: [0, 0],
 
 	// mixer configuration
-  config : {
-	  // position of fader knob (0-100)
-	  fade 			: 50,
-	  // master volume
-	  mastervol : 100,
-	  // maximum volumes on 100% mix (2 channels)
-	  maxvols 	: [50, 50],
-	  // video hashes,
-	  videos 		: ['QoQ86ruvCQM', 'c_7w1lRq3dU']
+	config : {
+		// position of fader knob (0-100)
+		fade 			: 50,
+		// master volume
+		mastervol : 100,
+		// maximum volumes on 100% mix (2 channels)
+		maxvols 	: [50, 50],
+		// video hashes,
+		videos 		: ['QoQ86ruvCQM', 'c_7w1lRq3dU']
 	},
 	// save mixer config into localStorage if True
 	storeConfig : false,
 
-  // see http://en.wikipedia.org/wiki/Linear_equation
-  calculate : function()
-  {
-    if (!this.loaded()) return false;
+	// see http://en.wikipedia.org/wiki/Linear_equation
+	calculate : function()
+	{
+		if (!this.loaded()) return false;
 
-    var gain = this.config.mastervol / 100.0;
-    var slope;
+		var gain = this.config.mastervol / 100.0;
+		var slope;
 
-    if (this.config.fade > 50)
-    {
-      slope = this.config.maxvols[0] / -100.0;
-      this.volumes[0] = (slope*this.config.fade)+this.config.maxvols[0];
-      this.volumes[0] = this.volumes[0] * gain;
-    } else
-      this.volumes[0] = this.config.maxvols[0];
+		if (this.config.fade > 50)
+		{
+			slope = this.config.maxvols[0] / -100.0;
+			this.volumes[0] = (slope*this.config.fade)+this.config.maxvols[0];
+			this.volumes[0] = this.volumes[0] * gain;
+		} else
+			this.volumes[0] = this.config.maxvols[0];
 
-    if (this.config.fade < 50)
-    {
-      slope = this.config.maxvols[1] / -100.0;
-      this.volumes[1] = slope*(100.0-this.config.fade)+this.config.maxvols[1];
-      this.volumes[1] = this.volumes[1] * gain;
-    } else
-      this.volumes[1] = this.config.maxvols[1];
-  },
+		if (this.config.fade < 50)
+		{
+			slope = this.config.maxvols[1] / -100.0;
+			this.volumes[1] = slope*(100.0-this.config.fade)+this.config.maxvols[1];
+			this.volumes[1] = this.volumes[1] * gain;
+		} else
+			this.volumes[1] = this.config.maxvols[1];
+	},
 
-  // updates the interface
-  apply : function()
-  {
-    if (!this.loaded()) return false;
+	// updates the interface
+	apply : function()
+	{
+		if (!this.loaded()) return false;
 
-    if (Players[0]) Players[0].setVolume(this.volumes[0]);
-    if (Players[1]) Players[1].setVolume(this.volumes[1]);
-  },
+		if (Players[0]) Players[0].setVolume(this.volumes[0]);
+		if (Players[1]) Players[1].setVolume(this.volumes[1]);
+	},
 
-  // calculates volume levels and updates the ui
-  update : function()
-  {
-    if (!this.loaded()) return false;
+	// calculates volume levels and updates the ui
+	update : function()
+	{
+		if (!this.loaded()) return false;
 
-    this.calculate();
-    this.apply();
-    // update stored config
-    if (this.storeConfig)
-    	localStorage.setItem('config', JSON.stringify(this.config));
-  },
+		this.calculate();
+		this.apply();
+		// update stored config
+		if (this.storeConfig)
+			localStorage.setItem('config', JSON.stringify(this.config));
+	},
 
-  init : function(xfade, master, slide1, slide2, hash1, hash2)
-  {
-    this.config.fade = xfade;
-    this.config.maxvols = [slide1, slide2];
-    this.config.mastervol = master;
+	init : function(xfade, master, slide1, slide2, hash1, hash2)
+	{
+		this.config.fade = xfade;
+		this.config.maxvols = [slide1, slide2];
+		this.config.mastervol = master;
 		this.config.videos[0] = hash1 == '' ? this.config.videos[0] : hash1;
 
-  	var evt = function(event, ui)
-    {
-      Mixer.config.fade = parseInt(ui.value);
-      Mixer.update();
-    };
+		var evt = function(event, ui)
+		{
+			Mixer.config.fade = parseInt(ui.value);
+			Mixer.update();
+		};
 
-    this.xfader = $('#xfader').slider({
-    	value 	: this.config.fade,
+		this.xfader = $('#xfader').slider({
+			value 	: this.config.fade,
 			min 		: 0,
 			max 		: 100,
-      slide 	: evt,
-      change 	: evt
-    });
+			slide 	: evt,
+			change 	: evt
+		});
 
 		evt = function(event, ui)
-    {
-      Mixer.config.mastervol = parseInt(ui.value);
-      Mixer.update();
-    };
+		{
+			Mixer.config.mastervol = parseInt(ui.value);
+			Mixer.update();
+		};
 
-    this.masterslider = $('#volume-m').slider({
-    	value 				: this.config.mastervol,
+		this.masterslider = $('#volume-m').slider({
+			value 				: this.config.mastervol,
 			min 					: 0,
 			max 					: 100,
 			orientation 	: 'vertical',
 			range 				: 'min',
-      slide 				: evt,
-      change 				: evt
-    });
+			slide 				: evt,
+			change 				: evt
+		});
 
 		evt = function(event, ui)
-    {
-    	var parts = event.target.id.split('-');
-    	var id = parseInt(parts[parts.length-1])-1;
-      Mixer.config.maxvols[id] = parseInt(ui.value);
-      Mixer.update();
-    };
+		{
+			var parts = event.target.id.split('-');
+			var id = parseInt(parts[parts.length-1])-1;
+			Mixer.config.maxvols[id] = parseInt(ui.value);
+			Mixer.update();
+		};
 
 		var volumeSliderOptions = {
-    	value 				: 100,
+			value 				: 100,
 			min 					: 0,
 			max 					: 100,
 			orientation 	: 'vertical',
 			range 				: 'min',
-      slide 				: evt,
-      change 				: evt
+			slide 				: evt,
+			change 				: evt
 		};
 
 		volumeSliderOptions.value = this.config.maxvols[0];
-    Mixer.sliders[0] = $('#volume-1').slider(volumeSliderOptions);
+		Mixer.sliders[0] = $('#volume-1').slider(volumeSliderOptions);
 		volumeSliderOptions.value = this.config.maxvols[1];
-    Mixer.sliders[1] = $('#volume-2').slider(volumeSliderOptions);
+		Mixer.sliders[1] = $('#volume-2').slider(volumeSliderOptions);
 
-    // embed video players
-    var embedParams = {
-      allowScriptAccess : "always",
-      bgcolor : "#c4c4c4"
-    };
-    var attrs = {};
-    var vid = "";
-    for (var i=1; i<=2; i++)
-    {
-	    attrs = { id : "flashobj_"+i };
-	    vid = this.config.videos[i-1];
-	    swfobject.embedSWF(
-	      "http://www.youtube.com/v/"+vid+"?enablejsapi=1&amp;border=0&amp;disablekb=1&amp;playerapiid="+i,
-	      "flashobj_"+i, "425", "300", "8.0.0", "swf/expressInstall.swf", null, embedParams, attrs
-	    );
-    }
+		// embed video players
+		var embedParams = {
+			allowScriptAccess : "always",
+			bgcolor : "#c4c4c4"
+		};
+		var attrs = {};
+		var vid = "";
+		for (var i=1; i<=2; i++)
+		{
+			attrs = { id : "flashobj_"+i };
+			vid = this.config.videos[i-1];
+			swfobject.embedSWF(
+				"http://www.youtube.com/v/"+vid+"?enablejsapi=1&amp;border=0&amp;disablekb=1&amp;playerapiid="+i,
+				"flashobj_"+i, "425", "300", "8.0.0", "swf/expressInstall.swf", null, embedParams, attrs
+			);
+		}
 
-    this.apply();
-    this.update();
-  },
+		this.apply();
+		this.update();
+	},
 
 	loadVideoByURL : function(id, url)
 	{
 		}
 	},
 
-  loaded  : function() { return (this.masterslider != null) && (this.xfader != null); },
+	loaded  : function() { return (this.masterslider != null) && (this.xfader != null); },
 
-  reset : function()
-  {
-  	if (!this.storeConfig)
-  		return;
+	isPlayerLoaded : function(chan)
+	{
+		chan = parseInt(chan);
+		return (Players[chan] != null) && (Players[chan].getPlayerState != null);
+	},
 
-  	localStorage.removeItem('config');
-  	window.location.reload();
-  }
+	reset : function()
+	{
+		if (!this.storeConfig)
+			return;
+
+		localStorage.removeItem('config');
+		window.location.reload();
+	}
 };
 
 var Finder = {
 
 function playPause(chan)
 {
-  if (!isPlayerLoaded(chan)) return false;
-  chan = parseInt(chan);
-  var state = Players[chan].getPlayerState();
+	if (!Mixer.isPlayerLoaded(chan)) return false;
+	chan = parseInt(chan);
+	var state = Players[chan].getPlayerState();
 
-  switch (state)
-  {
-    case 1:
-      Players[chan].pauseVideo();
-      break;
+	switch (state)
+	{
+		case 1:
+			Players[chan].pauseVideo();
+			break;
 
-    default:
-      Players[chan].playVideo();
-  }
+		default:
+			Players[chan].playVideo();
+	}
 }
 
 function stopPause(chan)
 {
-  if (!isPlayerLoaded(chan)) return false;
-  chan = parseInt(chan);
-  var state = Players[chan].getPlayerState();
+	if (!Mixer.isPlayerLoaded(chan)) return false;
+	chan = parseInt(chan);
+	var state = Players[chan].getPlayerState();
 
-  switch (state)
-  {
-    case 1:
-      Players[chan].stopVideo();
-      break;
+	switch (state)
+	{
+		case 1:
+			Players[chan].stopVideo();
+			break;
 
-    default:
-      Players[chan].playVideo();
-  }
+		default:
+			Players[chan].playVideo();
+	}
 }
 
 function getVideoHash(chan)
 {
-  if (!isPlayerLoaded(chan)) return false;
-  var url = Players[parseInt(chan)].getVideoUrl();
-  var match = url.match(/&v=([^&]+)/);
-  var hash = undefined;
-  if (match.length > 1)
-  	hash = match[1];
-  else
-  {
-  	match = url.match(/\/videos\/([^&]+)/);
-	  if (match.length > 1)
-	  	hash = match[1];
-  }
-  return hash;
+	if (!Mixer.isPlayerLoaded(chan)) return false;
+	var url = Players[parseInt(chan)].getVideoUrl();
+	var match = url.match(/&v=([^&]+)/);
+	var hash = undefined;
+	if (match.length > 1)
+		hash = match[1];
+	else
+	{
+		match = url.match(/\/videos\/([^&]+)/);
+		if (match.length > 1)
+			hash = match[1];
+	}
+	return hash;
 }
 
 function onPlayerStateChange(state)
 
 function onPlayerError(errcode)
 {
-  console.log('ERROR code: ' + errcode);
+	console.log('ERROR code: ' + errcode);
 }
 
 function onYouTubePlayerReady(player_id)
 {
-  var chan = parseInt(player_id)-1;
-  var player = Players[chan] = $('#flashobj_'+player_id).get(0);
+	var chan = parseInt(player_id)-1;
+	var player = Players[chan] = $('#flashobj_'+player_id).get(0);
 
-  player.addEventListener("onStateChange", "onPlayerStateChange");
-  player.addEventListener("onError", "onPlayerError");
-  Mixer.apply();
-}
-
-function isPlayerLoaded(chan)
-{
-	chan = parseInt(chan);
-  return (Players[chan] != null) && (Players[chan].getPlayerState != null);
+	player.addEventListener("onStateChange", "onPlayerStateChange");
+	player.addEventListener("onError", "onPlayerError");
+	Mixer.apply();
 }
 
 function getLink(baseURL)
 {
-  var mastervol = Mixer.config.mastervol;
-  if (!isPlayerLoaded(0)) return false;
-  var ch1vol = Mixer.config.maxvols[0];
-  if (!isPlayerLoaded(1)) return false;
-  var ch2vol = Mixer.config.maxvols[1];
-  var faderpos = Mixer.config.fade;
-  var hash1 = getVideoHash(0);
-  var hash2 = getVideoHash(1);
+	var mastervol = Mixer.config.mastervol;
+	if (!Mixer.isPlayerLoaded(0)) return false;
+	var ch1vol = Mixer.config.maxvols[0];
+	if (!Mixer.isPlayerLoaded(1)) return false;
+	var ch2vol = Mixer.config.maxvols[1];
+	var faderpos = Mixer.config.fade;
+	var hash1 = getVideoHash(0);
+	var hash2 = getVideoHash(1);
 
-  var params = [
-    "v1="+hash1,
-    "v2="+hash2,
-    "f="+faderpos,
-    "m="+mastervol,
-    "ch1="+ch1vol,
-    "ch2="+ch2vol
-  ].join('&');
+	var params = [
+		"v1="+hash1,
+		"v2="+hash2,
+		"f="+faderpos,
+		"m="+mastervol,
+		"ch1="+ch1vol,
+		"ch2="+ch2vol
+	].join('&');
 
-  var link = baseURL+'?'+params;
-  var txtbox = $('#link-txtbox');
-  if (!txtbox) return false;
-  txtbox.val(link);
+	var link = baseURL+'?'+params;
+	var txtbox = $('#link-txtbox');
+	if (!txtbox) return false;
+	txtbox.val(link);
 
-  return true;
-}
+	return true;
+}