From 3f1ea46d3d2fce573e1b5f9f8fb3259917564860 Mon Sep 17 00:00:00 2001
From: martin <martin@martin-ThinkPad-T410.(none)>
Date: Mon, 26 Sep 2011 12:18:43 -0400
Subject: [PATCH 01/16] CC-2694: Create command line program for
 viewing/dumping log files

-fix package dependencies
---
 install_full/ubuntu/airtime-full-install | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/install_full/ubuntu/airtime-full-install b/install_full/ubuntu/airtime-full-install
index 94496443f..1570b457c 100755
--- a/install_full/ubuntu/airtime-full-install
+++ b/install_full/ubuntu/airtime-full-install
@@ -27,7 +27,7 @@ apt-get -y install tar gzip curl apache2 php5-pgsql libapache2-mod-php5 \
 php-pear php5-gd postgresql odbc-postgresql python2.6 lame libsoundtouch-ocaml \
 libmp3lame-dev libtaglib-ocaml libao-ocaml libmad-ocaml ecasound \
 libesd0 icecast2 libportaudio2 libsamplerate0 rabbitmq-server patch \
-php5-curl mpg123 monit python-virtualenv
+php5-curl mpg123 monit python-virtualenv multitail
 
 #possibly remove?
 #libvorbis-ocaml-dev

From 974612badfc6372542084b9a22eb51055245f2d5 Mon Sep 17 00:00:00 2001
From: martin <martin@martin-ThinkPad-T410.(none)>
Date: Mon, 26 Sep 2011 12:51:02 -0400
Subject: [PATCH 02/16] CC-2888: Create a monit file for each airtime component

---
 install_minimal/airtime-install                       |  3 ++-
 install_minimal/airtime-uninstall                     |  3 ++-
 install_minimal/include/AirtimeIni.php                |  7 -------
 install_minimal/include/airtime-install.php           |  2 --
 .../media-monitor/install/media-monitor-install.py    |  6 ++++++
 .../media-monitor/install/media-monitor-uninstall.py  |  6 ++++++
 .../media-monitor/monit-airtime-media-monitor.cfg     |  9 +++++++++
 python_apps/monit/airtime-monit.cfg                   |  4 ----
 python_apps/monit/monit-airtime-generic.cfg           | 10 ++++++++++
 python_apps/monit/monit-airtime-rabbitmq-server.cfg   | 11 +++++++++++
 python_apps/pypo/install/pypo-install.py              |  6 ++++++
 python_apps/pypo/install/pypo-uninstall.py            |  9 ++++++++-
 python_apps/pypo/monit-airtime-liquidsoap.cfg         |  9 +++++++++
 python_apps/pypo/monit-airtime-playout.cfg            |  9 +++++++++
 python_apps/show-recorder/install/recorder-install.py |  6 ++++++
 .../show-recorder/install/recorder-uninstall.py       |  7 +++++++
 .../show-recorder/monit-airtime-show-recorder.cfg     |  9 +++++++++
 17 files changed, 100 insertions(+), 16 deletions(-)
 create mode 100644 python_apps/media-monitor/monit-airtime-media-monitor.cfg
 create mode 100644 python_apps/monit/monit-airtime-generic.cfg
 create mode 100644 python_apps/monit/monit-airtime-rabbitmq-server.cfg
 create mode 100644 python_apps/pypo/monit-airtime-liquidsoap.cfg
 create mode 100644 python_apps/pypo/monit-airtime-playout.cfg
 create mode 100644 python_apps/show-recorder/monit-airtime-show-recorder.cfg

diff --git a/install_minimal/airtime-install b/install_minimal/airtime-install
index b962ec5c6..0255c1ae8 100755
--- a/install_minimal/airtime-install
+++ b/install_minimal/airtime-install
@@ -61,8 +61,9 @@ python ${SCRIPTPATH}/../python_apps/show-recorder/install/recorder-install.py
 echo -e "\n*** Media Monitor Installation ***"
 python ${SCRIPTPATH}/../python_apps/media-monitor/install/media-monitor-install.py
 
-monit monitor icecast2
+set +e
 monit monitor rabbitmq-server
+set -e
 
 echo -e "\n*** Verifying your system environment ***"
 sleep 10
diff --git a/install_minimal/airtime-uninstall b/install_minimal/airtime-uninstall
index 5de4dd80d..9aae54194 100755
--- a/install_minimal/airtime-uninstall
+++ b/install_minimal/airtime-uninstall
@@ -25,8 +25,9 @@ SCRIPTPATH=`dirname $SCRIPT`
 
 echo -e "\n******************************* Uninstall Begin ********************************"
 
-monit unmonitor icecast2 >/dev/null 2>&1
+set +e
 monit unmonitor rabbitmq-server >/dev/null 2>&1
+set -e
 
 echo -e "\n*** Uninstalling Pypo ***"
 python ${SCRIPTPATH}/../python_apps/pypo/install/pypo-uninstall.py
diff --git a/install_minimal/include/AirtimeIni.php b/install_minimal/include/AirtimeIni.php
index d06bcb64d..59b1fafaf 100644
--- a/install_minimal/include/AirtimeIni.php
+++ b/install_minimal/include/AirtimeIni.php
@@ -120,13 +120,6 @@ class AirtimeIni
                 chmod($filename, 0640));
     }
     
-    public static function CreateMonitFile(){
-        if (!copy(__DIR__."/../../python_apps/monit/airtime-monit.cfg", AirtimeIni::CONF_FILE_MONIT)){
-            echo "Could not copy airtime-monit.cfg to /etc/monit/conf.d/. Exiting.";
-            exit(1);
-        }
-    }
-
     public static function RemoveMonitFile(){
         @unlink("/etc/monit/conf.d/airtime-monit.cfg");
     }
diff --git a/install_minimal/include/airtime-install.php b/install_minimal/include/airtime-install.php
index 19c2997d1..6ab5e75cd 100644
--- a/install_minimal/include/airtime-install.php
+++ b/install_minimal/include/airtime-install.php
@@ -110,8 +110,6 @@ if ($overwrite) {
     echo "* Creating INI files".PHP_EOL;
     AirtimeIni::CreateIniFiles();
 }
-AirtimeIni::CreateMonitFile();
-
 
 AirtimeInstall::InstallPhpCode();
 AirtimeInstall::InstallBinaries();
diff --git a/python_apps/media-monitor/install/media-monitor-install.py b/python_apps/media-monitor/install/media-monitor-install.py
index a96b3e4d4..ab5324705 100644
--- a/python_apps/media-monitor/install/media-monitor-install.py
+++ b/python_apps/media-monitor/install/media-monitor-install.py
@@ -39,6 +39,10 @@ def get_current_script_dir():
   index = current_script_dir.rindex('/')
   return current_script_dir[0:index]
 
+def copy_monit_file(current_script_dir):
+    shutil.copy("%s/../monit-airtime-media-monitor.cfg"%current_script_dir, "/etc/monit/conf.d/")
+    shutil.copy("%s/../../monit/monit-airtime-generic.cfg"%current_script_dir, "/etc/monit/conf.d/")
+
 
 try:
   # load config file
@@ -50,6 +54,8 @@ try:
 
   current_script_dir = get_current_script_dir()
 
+  copy_monit_file(current_script_dir)
+
   p = Popen("/etc/init.d/airtime-media-monitor stop >/dev/null 2>&1", shell=True)
   sts = os.waitpid(p.pid, 0)[1]
 
diff --git a/python_apps/media-monitor/install/media-monitor-uninstall.py b/python_apps/media-monitor/install/media-monitor-uninstall.py
index a9b69399d..ed6fa4195 100644
--- a/python_apps/media-monitor/install/media-monitor-uninstall.py
+++ b/python_apps/media-monitor/install/media-monitor-uninstall.py
@@ -18,6 +18,9 @@ def get_current_script_dir():
   index = current_script_dir.rindex('/')
   return current_script_dir[0:index]
 
+def remove_monit_file():
+    os.system("rm -f /etc/monit/conf.d/monit-airtime-media-monitor.cfg")
+
 try:
     # load config file
     try:
@@ -30,6 +33,9 @@ try:
     os.system("rm -f /etc/init.d/airtime-media-monitor")
     os.system("update-rc.d -f airtime-media-monitor remove >/dev/null 2>&1")
 
+    print "Removing monit file"
+    remove_monit_file()
+
     print "Removing log directories"
     remove_path(config["log_dir"])
 
diff --git a/python_apps/media-monitor/monit-airtime-media-monitor.cfg b/python_apps/media-monitor/monit-airtime-media-monitor.cfg
new file mode 100644
index 000000000..7001a3f5a
--- /dev/null
+++ b/python_apps/media-monitor/monit-airtime-media-monitor.cfg
@@ -0,0 +1,9 @@
+ set daemon 10 # Poll at 5 second intervals
+ set logfile /var/log/monit.log
+
+ set httpd port 2812
+
+ check process airtime-media-monitor
+    with pidfile "/var/run/airtime-media-monitor.pid"
+    start program = "/etc/init.d/airtime-media-monitor start" with timeout 10 seconds
+    stop program = "/etc/init.d/airtime-media-monitor stop"
diff --git a/python_apps/monit/airtime-monit.cfg b/python_apps/monit/airtime-monit.cfg
index 8480dda7f..0f5dd0f69 100644
--- a/python_apps/monit/airtime-monit.cfg
+++ b/python_apps/monit/airtime-monit.cfg
@@ -21,10 +21,6 @@
     with pidfile "/var/run/airtime-show-recorder.pid"
     start program = "/etc/init.d/airtime-show-recorder start" with timeout 10 seconds
     stop program = "/etc/init.d/airtime-show-recorder stop"
- check process icecast2
-    matching "/usr/bin/icecast2"
-    start program = "/etc/init.d/icecast2 start" with timeout 10 seconds
-    stop program = "/etc/init.d/icecast2 stop"
  check process rabbitmq-server
     with pidfile "/var/run/rabbitmq.pid"
     start program = "/bin/bash -c '/etc/init.d/rabbitmq-server start; sed "s/.*,\(.*\)\}.*/\1/" /var/lib/rabbitmq/pids > /var/run/rabbitmq.pid'"
diff --git a/python_apps/monit/monit-airtime-generic.cfg b/python_apps/monit/monit-airtime-generic.cfg
new file mode 100644
index 000000000..03f0d0173
--- /dev/null
+++ b/python_apps/monit/monit-airtime-generic.cfg
@@ -0,0 +1,10 @@
+ set daemon 10 # Poll at 5 second intervals
+ set logfile /var/log/monit.log
+
+ set httpd port 2812
+    allow admin:monit
+
+ check process rabbitmq-server
+    with pidfile "/var/run/rabbitmq.pid"
+    start program = "/bin/bash -c '/etc/init.d/rabbitmq-server start; sed "s/.*,\(.*\)\}.*/\1/" /var/lib/rabbitmq/pids > /var/run/rabbitmq.pid'"
+    stop program = "/etc/init.d/rabbitmq-server stop"
diff --git a/python_apps/monit/monit-airtime-rabbitmq-server.cfg b/python_apps/monit/monit-airtime-rabbitmq-server.cfg
new file mode 100644
index 000000000..74742dc58
--- /dev/null
+++ b/python_apps/monit/monit-airtime-rabbitmq-server.cfg
@@ -0,0 +1,11 @@
+ set daemon 10 # Poll at 5 second intervals
+ #set logfile syslog facility log_daemon
+ set logfile /var/log/monit.log
+
+ set httpd port 2812
+    allow admin:monit
+
+ check process rabbitmq-server
+    with pidfile "/var/run/rabbitmq.pid"
+    start program = "/bin/bash -c '/etc/init.d/rabbitmq-server start; sed "s/.*,\(.*\)\}.*/\1/" /var/lib/rabbitmq/pids > /var/run/rabbitmq.pid'"
+    stop program = "/etc/init.d/rabbitmq-server stop"
diff --git a/python_apps/pypo/install/pypo-install.py b/python_apps/pypo/install/pypo-install.py
index 0853cf9a9..0ee6e9667 100644
--- a/python_apps/pypo/install/pypo-install.py
+++ b/python_apps/pypo/install/pypo-install.py
@@ -50,6 +50,10 @@ def is_natty():
             return True
     return False
 
+def copy_monit_file(current_script_dir):
+    shutil.copy("%s/../monit-airtime-playout.cfg"%current_script_dir, "/etc/monit/conf.d/")
+    shutil.copy("%s/../monit-airtime-liquidsoap.cfg"%current_script_dir, "/etc/monit/conf.d/")
+    shutil.copy("%s/../../monit/monit-airtime-generic.cfg"%current_script_dir, "/etc/monit/conf.d/")
 
 try:
   # load config file
@@ -61,6 +65,8 @@ try:
 
   current_script_dir = get_current_script_dir()
 
+  copy_monit_file(current_script_dir)
+
   p = Popen("/etc/init.d/airtime-playout stop >/dev/null 2>&1", shell=True)
   sts = os.waitpid(p.pid, 0)[1]
 
diff --git a/python_apps/pypo/install/pypo-uninstall.py b/python_apps/pypo/install/pypo-uninstall.py
index c6f95da3a..9b4429598 100644
--- a/python_apps/pypo/install/pypo-uninstall.py
+++ b/python_apps/pypo/install/pypo-uninstall.py
@@ -17,6 +17,10 @@ def get_current_script_dir():
   current_script_dir = os.path.realpath(__file__)
   index = current_script_dir.rindex('/')
   return current_script_dir[0:index]
+
+def remove_monit_file():
+    os.system("rm -f /etc/monit/conf.d/monit-airtime-playout.cfg")
+    os.system("rm -f /etc/monit/conf.d/monit-airtime-liquidsoap.cfg")
     
 try:
     # load config file
@@ -30,8 +34,11 @@ try:
     os.system("rm -f /etc/init.d/airtime-playout")
     os.system("update-rc.d -f airtime-playout remove >/dev/null 2>&1")
 
-    #copy logrotate script
+    #remove logrotate script
     os.system("rm -f /etc/logrotate.d/airtime-liquidsoap")
+
+    print "Removing monit file"
+    remove_monit_file()
         
     print "Removing cache directories"
     remove_path(config["cache_base_dir"])
diff --git a/python_apps/pypo/monit-airtime-liquidsoap.cfg b/python_apps/pypo/monit-airtime-liquidsoap.cfg
new file mode 100644
index 000000000..aececd388
--- /dev/null
+++ b/python_apps/pypo/monit-airtime-liquidsoap.cfg
@@ -0,0 +1,9 @@
+ set daemon 10 # Poll at 5 second intervals
+ set logfile /var/log/monit.log
+
+ set httpd port 2812
+
+ check process airtime-liquidsoap
+    with pidfile "/var/run/airtime-liquidsoap.pid"
+    start program = "/etc/init.d/airtime-playout monit-restart" with timeout 5 seconds
+    stop program = "/etc/init.d/airtime-playout stop"
diff --git a/python_apps/pypo/monit-airtime-playout.cfg b/python_apps/pypo/monit-airtime-playout.cfg
new file mode 100644
index 000000000..5b096c72a
--- /dev/null
+++ b/python_apps/pypo/monit-airtime-playout.cfg
@@ -0,0 +1,9 @@
+ set daemon 10 # Poll at 5 second intervals
+ set logfile /var/log/monit.log
+
+ set httpd port 2812
+
+ check process airtime-playout
+    with pidfile "/var/run/airtime-playout.pid"
+    start program = "/etc/init.d/airtime-playout monit-restart" with timeout 5 seconds
+    stop program = "/etc/init.d/airtime-playout stop"
diff --git a/python_apps/show-recorder/install/recorder-install.py b/python_apps/show-recorder/install/recorder-install.py
index ad576e22f..762b6daed 100644
--- a/python_apps/show-recorder/install/recorder-install.py
+++ b/python_apps/show-recorder/install/recorder-install.py
@@ -32,6 +32,10 @@ def get_current_script_dir():
   index = current_script_dir.rindex('/')
   return current_script_dir[0:index]
 
+def copy_monit_file(current_script_dir):
+    shutil.copy("%s/../monit-airtime-show-recorder.cfg"%current_script_dir, "/etc/monit/conf.d/")
+    shutil.copy("%s/../../monit/monit-airtime-generic.cfg"%current_script_dir, "/etc/monit/conf.d/")
+
 
 try:
   # load config file
@@ -43,6 +47,8 @@ try:
 
   current_script_dir = get_current_script_dir()
 
+  copy_monit_file(current_script_dir)
+
   p = Popen("/etc/init.d/airtime-show-recorder stop >/dev/null 2>&1", shell=True)
   sts = os.waitpid(p.pid, 0)[1]
 
diff --git a/python_apps/show-recorder/install/recorder-uninstall.py b/python_apps/show-recorder/install/recorder-uninstall.py
index 35e923dfb..d778f8d07 100644
--- a/python_apps/show-recorder/install/recorder-uninstall.py
+++ b/python_apps/show-recorder/install/recorder-uninstall.py
@@ -17,6 +17,10 @@ def get_current_script_dir():
   current_script_dir = os.path.realpath(__file__)
   index = current_script_dir.rindex('/')
   return current_script_dir[0:index]
+
+def remove_monit_file():
+    os.system("rm -f /etc/monit/conf.d/monit-airtime-show-recorder.cfg")
+
     
 try:
     # load config file
@@ -29,6 +33,9 @@ try:
     os.system("/etc/init.d/airtime-show-recorder stop")
     os.system("rm -f /etc/init.d/airtime-show-recorder")
     os.system("update-rc.d -f airtime-show-recorder remove >/dev/null 2>&1")
+
+    print "Removing monit file"
+    remove_monit_file()
     
     print "Removing log directories"
     remove_path(config["log_dir"])
diff --git a/python_apps/show-recorder/monit-airtime-show-recorder.cfg b/python_apps/show-recorder/monit-airtime-show-recorder.cfg
new file mode 100644
index 000000000..137e56c03
--- /dev/null
+++ b/python_apps/show-recorder/monit-airtime-show-recorder.cfg
@@ -0,0 +1,9 @@
+ set daemon 10 # Poll at 5 second intervals
+ set logfile /var/log/monit.log
+
+ set httpd port 2812
+
+ check process airtime-show-recorder
+    with pidfile "/var/run/airtime-show-recorder.pid"
+    start program = "/etc/init.d/airtime-show-recorder start" with timeout 10 seconds
+    stop program = "/etc/init.d/airtime-show-recorder stop"

From 2c0b0a2eff95377e2dc454a0e7823bae88c9da48 Mon Sep 17 00:00:00 2001
From: martin <martin@martin-ThinkPad-T410.(none)>
Date: Mon, 26 Sep 2011 14:47:21 -0400
Subject: [PATCH 03/16] CC-2888: Create a monit file for each airtime component

-remove old monit file on upgrade
-remove old monit file from git repo.
---
 .../airtime-2.0.0/airtime-upgrade.php         | 10 +++++--
 python_apps/monit/airtime-monit.cfg           | 27 -------------------
 2 files changed, 8 insertions(+), 29 deletions(-)
 delete mode 100644 python_apps/monit/airtime-monit.cfg

diff --git a/install_minimal/upgrades/airtime-2.0.0/airtime-upgrade.php b/install_minimal/upgrades/airtime-2.0.0/airtime-upgrade.php
index a2cb64b09..ac5f99ade 100644
--- a/install_minimal/upgrades/airtime-2.0.0/airtime-upgrade.php
+++ b/install_minimal/upgrades/airtime-2.0.0/airtime-upgrade.php
@@ -238,7 +238,7 @@ class Airtime200Upgrade{
     }
     
     public static function InstallAirtimePhpServerCode($phpDir)
-        {
+    {
     
             $AIRTIME_SRC = realpath(__DIR__.'/../../../airtime_mvc');
     
@@ -247,7 +247,11 @@ class Airtime200Upgrade{
             echo "* Installing PHP code to ".$phpDir.PHP_EOL;
             exec("mkdir -p ".$phpDir);
             exec("cp -R ".$AIRTIME_SRC."/* ".$phpDir);
-        }
+    }
+        
+    public static function RemoveOldMonitFile(){
+        unlink("/etc/monit/conf.d/airtime-monit.cfg");
+    }
 }
 
 class ConvertToUtc{
@@ -577,6 +581,8 @@ AirtimeInstall::SetDefaultStreamSetting();
 
 AirtimeInstall::GetOldLiquidsoapCfgAndUpdate();
 
+AirtimeUpgrade::RemoveOldMonitFile();
+
 // restart monit
 exec("service monit restart");
 
diff --git a/python_apps/monit/airtime-monit.cfg b/python_apps/monit/airtime-monit.cfg
deleted file mode 100644
index 0f5dd0f69..000000000
--- a/python_apps/monit/airtime-monit.cfg
+++ /dev/null
@@ -1,27 +0,0 @@
- set daemon 10 # Poll at 5 second intervals
- #set logfile syslog facility log_daemon
- set logfile /var/log/monit.log
-
- set httpd port 2812
-    allow admin:monit
-
- check process airtime-playout
-    with pidfile "/var/run/airtime-playout.pid"
-    start program = "/etc/init.d/airtime-playout monit-restart" with timeout 5 seconds
-    stop program = "/etc/init.d/airtime-playout stop"
- check process airtime-liquidsoap
-    with pidfile "/var/run/airtime-liquidsoap.pid"
-    start program = "/etc/init.d/airtime-playout monit-restart" with timeout 5 seconds
-    stop program = "/etc/init.d/airtime-playout stop"
- check process airtime-media-monitor
-    with pidfile "/var/run/airtime-media-monitor.pid"
-    start program = "/etc/init.d/airtime-media-monitor start" with timeout 10 seconds
-    stop program = "/etc/init.d/airtime-media-monitor stop"
- check process airtime-show-recorder
-    with pidfile "/var/run/airtime-show-recorder.pid"
-    start program = "/etc/init.d/airtime-show-recorder start" with timeout 10 seconds
-    stop program = "/etc/init.d/airtime-show-recorder stop"
- check process rabbitmq-server
-    with pidfile "/var/run/rabbitmq.pid"
-    start program = "/bin/bash -c '/etc/init.d/rabbitmq-server start; sed "s/.*,\(.*\)\}.*/\1/" /var/lib/rabbitmq/pids > /var/run/rabbitmq.pid'"
-    stop program = "/etc/init.d/rabbitmq-server stop"

From dfe43c98bb0abe5f846b82ebf851efc14c6fcdb0 Mon Sep 17 00:00:00 2001
From: martin <martin@martin-ThinkPad-T410.(none)>
Date: Mon, 26 Sep 2011 15:19:04 -0400
Subject: [PATCH 04/16] CC-2833: Use ClassLoaders for PHP Files

-autoload RabbitMq class
---
 airtime_mvc/application/Bootstrap.php         |  2 +-
 .../controllers/LibraryController.php         |  4 ++--
 .../controllers/PreferenceController.php      |  2 +-
 .../controllers/ScheduleController.php        |  2 +-
 .../controllers/plugins/RabbitMqPlugin.php    |  6 ++---
 airtime_mvc/application/models/MusicDir.php   |  8 +++----
 airtime_mvc/application/models/Preference.php |  4 ++--
 airtime_mvc/application/models/RabbitMq.php   |  2 +-
 .../application/models/ScheduleGroup.php      |  4 ++--
 airtime_mvc/application/models/Show.php       | 10 ++++-----
 .../application/models/ShowInstance.php       | 22 +++++++++----------
 .../application/models/tests/populator.php    |  4 ++--
 12 files changed, 35 insertions(+), 35 deletions(-)

diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php
index c514ce8ca..f3f956da5 100644
--- a/airtime_mvc/application/Bootstrap.php
+++ b/airtime_mvc/application/Bootstrap.php
@@ -19,7 +19,7 @@ require_once 'Soundcloud.php';
 require_once 'Preference.php';
 //require_once 'Shows.php';
 //require_once 'User.php';
-require_once 'RabbitMq.php';
+//require_once 'RabbitMq.php';
 require_once 'DateHelper.php';
 require_once __DIR__.'/controllers/plugins/RabbitMqPlugin.php';
 
diff --git a/airtime_mvc/application/controllers/LibraryController.php b/airtime_mvc/application/controllers/LibraryController.php
index 2f0466b12..28987eb81 100644
--- a/airtime_mvc/application/controllers/LibraryController.php
+++ b/airtime_mvc/application/controllers/LibraryController.php
@@ -164,7 +164,7 @@ class LibraryController extends Zend_Controller_Action
                 else {
                     $res = settype($res, "integer");
                     $data = array("filepath" => $file->getFilePath(), "delete" => $res);
-                    RabbitMq::SendMessageToMediaMonitor("file_delete", $data);
+                    Application_Model_RabbitMq::SendMessageToMediaMonitor("file_delete", $data);
                 }
             }
 
@@ -214,7 +214,7 @@ class LibraryController extends Zend_Controller_Action
 
                 $data = $file->getMetadata();
 
-                RabbitMq::SendMessageToMediaMonitor("md_update", $data);
+                Application_Model_RabbitMq::SendMessageToMediaMonitor("md_update", $data);
 
                 $this->_helper->redirector('index');
             }
diff --git a/airtime_mvc/application/controllers/PreferenceController.php b/airtime_mvc/application/controllers/PreferenceController.php
index 4fdf9ec0b..11fead872 100644
--- a/airtime_mvc/application/controllers/PreferenceController.php
+++ b/airtime_mvc/application/controllers/PreferenceController.php
@@ -188,7 +188,7 @@ class PreferenceController extends Zend_Controller_Action
                 Application_Model_StreamSetting::setStreamSetting($values);
                 $data = array();
                 $data['setting'] = Application_Model_StreamSetting::getStreamSetting();
-                RabbitMq::SendMessageToPypo("update_stream_setting", $data);
+                Application_Model_RabbitMq::SendMessageToPypo("update_stream_setting", $data);
                 $this->view->statusMsg = "<div class='success'>Stream Setting Updated.</div>";
             }
         }
diff --git a/airtime_mvc/application/controllers/ScheduleController.php b/airtime_mvc/application/controllers/ScheduleController.php
index 4f2ade3cd..a99392f7c 100644
--- a/airtime_mvc/application/controllers/ScheduleController.php
+++ b/airtime_mvc/application/controllers/ScheduleController.php
@@ -700,7 +700,7 @@ class ScheduleController extends Zend_Controller_Action
             $show->clearShow();
             $show->deleteShow();
             // send 'cancel-current-show' command to pypo
-            RabbitMq::SendMessageToPypo("cancel_current_show", array());
+            Application_Model_RabbitMq::SendMessageToPypo("cancel_current_show", array());
         }
     }
 
diff --git a/airtime_mvc/application/controllers/plugins/RabbitMqPlugin.php b/airtime_mvc/application/controllers/plugins/RabbitMqPlugin.php
index 50dc9969f..1c885528c 100644
--- a/airtime_mvc/application/controllers/plugins/RabbitMqPlugin.php
+++ b/airtime_mvc/application/controllers/plugins/RabbitMqPlugin.php
@@ -4,10 +4,10 @@ class RabbitMqPlugin extends Zend_Controller_Plugin_Abstract
 {
     public function dispatchLoopShutdown()
     {
-        if (RabbitMq::$doPush) {
+        if (Application_Model_RabbitMq::$doPush) {
             $md = array('schedule' => Application_Model_Schedule::GetScheduledPlaylists());
-            RabbitMq::SendMessageToPypo("update_schedule", $md);
-            RabbitMq::SendMessageToShowRecorder("update_schedule");
+            Application_Model_RabbitMq::SendMessageToPypo("update_schedule", $md);
+            Application_Model_RabbitMq::SendMessageToShowRecorder("update_schedule");
         }
     }
 }
diff --git a/airtime_mvc/application/models/MusicDir.php b/airtime_mvc/application/models/MusicDir.php
index 0ca8ab00d..cee6182cd 100644
--- a/airtime_mvc/application/models/MusicDir.php
+++ b/airtime_mvc/application/models/MusicDir.php
@@ -58,7 +58,7 @@ class Application_Model_MusicDir {
             $temp_show->updateScheduledTime();
         }
 
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
     }
 
     /**
@@ -184,7 +184,7 @@ class Application_Model_MusicDir {
 
             $data = array();
             $data["directory"] = $p_path;
-            RabbitMq::SendMessageToMediaMonitor("new_watch", $data);
+            Application_Model_RabbitMq::SendMessageToMediaMonitor("new_watch", $data);
         }
         return $res;
     }
@@ -256,7 +256,7 @@ class Application_Model_MusicDir {
             $data = array();
             $data["directory"] = $p_dir;
             $data["dir_id"] = $dirId;
-            RabbitMq::SendMessageToMediaMonitor("change_stor", $data);
+            Application_Model_RabbitMq::SendMessageToMediaMonitor("change_stor", $data);
             return array("code"=>0);
         }else{
             return array("code"=>1, "error"=>"'$p_dir' is already set as the current storage dir or in the watched folders list.");
@@ -289,7 +289,7 @@ class Application_Model_MusicDir {
             $dir->remove();
             $data = array();
             $data["directory"] = $p_dir;
-            RabbitMq::SendMessageToMediaMonitor("remove_watch", $data);
+            Application_Model_RabbitMq::SendMessageToMediaMonitor("remove_watch", $data);
             return array("code"=>0);
         }
     }
diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php
index db4f095ee..513067b79 100644
--- a/airtime_mvc/application/models/Preference.php
+++ b/airtime_mvc/application/models/Preference.php
@@ -81,7 +81,7 @@ class Application_Model_Preference
         self::SetValue("station_name", $title);
         $defaultNamespace = new Zend_Session_Namespace('title_name');
         $defaultNamespace->title = $title;
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
 
         //set session variable to new station name so that html title is updated.
         //should probably do this in a view helper to keep this controller as minimal as possible.
@@ -107,7 +107,7 @@ class Application_Model_Preference
 
     public static function SetStreamLabelFormat($type){
         self::SetValue("stream_label_format", $type);
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
     }
 
     public static function GetStreamLabelFormat(){
diff --git a/airtime_mvc/application/models/RabbitMq.php b/airtime_mvc/application/models/RabbitMq.php
index 537136c9f..d5bbfbfba 100644
--- a/airtime_mvc/application/models/RabbitMq.php
+++ b/airtime_mvc/application/models/RabbitMq.php
@@ -9,7 +9,7 @@ class RabbitMq
      * Sets a flag to push the schedule at the end of the request.
      */
     public static function PushSchedule() {
-        RabbitMq::$doPush = TRUE;
+        Application_Model_RabbitMq::$doPush = TRUE;
     }
 
     public static function SendMessageToPypo($event_type, $md)
diff --git a/airtime_mvc/application/models/ScheduleGroup.php b/airtime_mvc/application/models/ScheduleGroup.php
index 713c9c5bc..5d8b29b21 100644
--- a/airtime_mvc/application/models/ScheduleGroup.php
+++ b/airtime_mvc/application/models/ScheduleGroup.php
@@ -116,7 +116,7 @@ class Application_Model_ScheduleGroup {
             }
         }
 
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
         return $this->groupId;
     }
 
@@ -155,7 +155,7 @@ class Application_Model_ScheduleGroup {
         ." WHERE group_id = ".$this->groupId;
         //echo $sql;
         $retVal = $CC_DBC->query($sql);
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
         return $retVal;
     }
 
diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php
index 6f241e999..77f86953e 100644
--- a/airtime_mvc/application/models/Show.php
+++ b/airtime_mvc/application/models/Show.php
@@ -19,7 +19,7 @@ class Application_Model_Show {
     {
         $show = CcShowQuery::create()->findPK($this->_showId);
         $show->setDbName($name);
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
     }
 
     public function getDescription()
@@ -119,7 +119,7 @@ class Application_Model_Show {
                     WHERE starts >= '{$day_timestamp}' AND show_id = {$this->_showId}";
 
         $CC_DBC->query($sql);
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
     }
 
     /**
@@ -871,7 +871,7 @@ class Application_Model_Show {
         }
 
         Application_Model_Show::populateShowUntil($showId);
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
         return $showId;
     }
 
@@ -1008,7 +1008,7 @@ class Application_Model_Show {
                 }
             }
         }
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
     }
 
     //for a show with repeat_type == 0,1,2
@@ -1091,7 +1091,7 @@ class Application_Model_Show {
         }
 
         Application_Model_Show::setNextPop($next_date, $show_id, $day);
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
     }
 
     private static function populateShow($repeatType, $show_id, $next_pop_date,
diff --git a/airtime_mvc/application/models/ShowInstance.php b/airtime_mvc/application/models/ShowInstance.php
index 163dcdbde..7fed88a1a 100644
--- a/airtime_mvc/application/models/ShowInstance.php
+++ b/airtime_mvc/application/models/ShowInstance.php
@@ -111,14 +111,14 @@ class Application_Model_ShowInstance {
     {
         $this->_showInstance->setDbStarts($start)
             ->save();
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
     }
 
     public function setShowEnd($end)
     {
         $this->_showInstance->setDbEnds($end)
             ->save();
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
     }
 
     public function updateScheduledTime()
@@ -153,7 +153,7 @@ class Application_Model_ShowInstance {
                 $CC_DBC->query($sql);
             }
         }
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
     }
 
     public function moveShow($deltaDay, $deltaMin)
@@ -219,7 +219,7 @@ class Application_Model_ShowInstance {
             $show->setShowLastShow($new_ends);
         }
         
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
     }
 
     public function resizeShow($deltaDay, $deltaMin)
@@ -263,7 +263,7 @@ class Application_Model_ShowInstance {
         }
 
         $this->setShowEnd($new_ends);
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
     }
 
     /**
@@ -295,7 +295,7 @@ class Application_Model_ShowInstance {
         else {
             $groupId = $sched->addPlaylistAfter($this->_instanceId, $lastGroupId, $plId);
         }
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
         $this->updateScheduledTime();
     }
 
@@ -315,7 +315,7 @@ class Application_Model_ShowInstance {
         else {
             $groupId = $sched->addFileAfter($this->_instanceId, $lastGroupId, $file_id);
         }
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
         $this->updateScheduledTime();
     }
 
@@ -351,7 +351,7 @@ class Application_Model_ShowInstance {
                     WHERE starts >= '{$groupBoundry["end_timestamp"]}' AND instance_id = {$this->_instanceId}";
 
         $CC_DBC->query($sql);
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
         $this->updateScheduledTime();
     }
 
@@ -360,7 +360,7 @@ class Application_Model_ShowInstance {
         CcScheduleQuery::create()
             ->filterByDbInstanceId($this->_instanceId)
             ->delete();
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
         $this->updateScheduledTime();
     }
 
@@ -373,9 +373,9 @@ class Application_Model_ShowInstance {
         CcShowInstancesQuery::create()
             ->findPK($this->_instanceId)
             ->delete();
-        RabbitMq::PushSchedule();
+        Application_Model_RabbitMq::PushSchedule();
         if($recording){
-            RabbitMq::SendMessageToShowRecorder("cancel_recording");
+            Application_Model_RabbitMq::SendMessageToShowRecorder("cancel_recording");
         }
     }
 
diff --git a/airtime_mvc/application/models/tests/populator.php b/airtime_mvc/application/models/tests/populator.php
index 82c7ad1e6..6d70e1fbb 100644
--- a/airtime_mvc/application/models/tests/populator.php
+++ b/airtime_mvc/application/models/tests/populator.php
@@ -97,9 +97,9 @@ while ($showTime < $endDate) {
     $showNumber = $showNumber + 1;
 }
 
-if (RabbitMq::$doPush) {
+if (Application_Model_RabbitMq::$doPush) {
     $md = array('schedule' => Application_Model_Schedule::GetScheduledPlaylists());
-    RabbitMq::SendMessageToPypo("update_schedule", $md);
+    Application_Model_RabbitMq::SendMessageToPypo("update_schedule", $md);
 }
 
 

From b8838a5bdaf047679ee4dce2a89e2298e54513a0 Mon Sep 17 00:00:00 2001
From: martin <martin@martin-ThinkPad-T410.(none)>
Date: Mon, 26 Sep 2011 15:24:48 -0400
Subject: [PATCH 05/16] CC-2833: Use ClassLoaders for PHP Files

-autoload AtSoundcloud class
---
 airtime_mvc/application/Bootstrap.php                 | 4 ++--
 airtime_mvc/application/controllers/ApiController.php | 2 +-
 airtime_mvc/application/models/Soundcloud.php         | 2 +-
 airtime_mvc/application/models/StoredFile.php         | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php
index f3f956da5..9da2f81e9 100644
--- a/airtime_mvc/application/Bootstrap.php
+++ b/airtime_mvc/application/Bootstrap.php
@@ -11,12 +11,12 @@ require_once __DIR__."/configs/constants.php";
 require_once __DIR__."/configs/conf.php";
 require_once 'DB.php';
 
-require_once 'Soundcloud.php';
+//require_once 'Soundcloud.php';
 //require_once 'MusicDir.php';
 //require_once 'Playlist.php';
 //require_once 'StoredFile.php';
 //require_once 'Schedule.php';
-require_once 'Preference.php';
+//require_once 'Preference.php';
 //require_once 'Shows.php';
 //require_once 'User.php';
 //require_once 'RabbitMq.php';
diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php
index 7e6b5768f..8e0fc20f7 100644
--- a/airtime_mvc/application/controllers/ApiController.php
+++ b/airtime_mvc/application/controllers/ApiController.php
@@ -400,7 +400,7 @@ class ApiController extends Zend_Controller_Action
         		$tags = array_merge($hosts, array($show_name));
 
         		try {
-        			$soundcloud = new ATSoundcloud();
+        			$soundcloud = new Application_Model_AtSoundcloud();
         			$soundcloud_id = $soundcloud->uploadTrack($file->getFilePath(), $tmpTitle, $description, $tags, $show_start_time, $show_genre);
         			$file->setSoundCloudFileId($soundcloud_id);
         			break;
diff --git a/airtime_mvc/application/models/Soundcloud.php b/airtime_mvc/application/models/Soundcloud.php
index 5e17049b6..29ad98772 100644
--- a/airtime_mvc/application/models/Soundcloud.php
+++ b/airtime_mvc/application/models/Soundcloud.php
@@ -2,7 +2,7 @@
 
 require_once 'soundcloud-api/Services/Soundcloud.php';
 
-class ATSoundcloud {
+class Application_Model_AtSoundcloud {
 
     private $_soundcloud;
 
diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php
index a9f0913d7..6c9bf6e16 100644
--- a/airtime_mvc/application/models/StoredFile.php
+++ b/airtime_mvc/application/models/StoredFile.php
@@ -924,7 +924,7 @@ class Application_Model_StoredFile {
                 $release = $file->getDbYear();
 
                 try {
-                    $soundcloud = new ATSoundcloud();
+                    $soundcloud = new Application_Model_AtSoundcloud();
                     $soundcloud_id = $soundcloud->uploadTrack($this->getFilePath(), $this->getName(), $description, $tag, $release, $genre);
                     $this->setSoundCloudFileId($soundcloud_id);
                     break;

From 9e6a1ebf44195bac156b6b104c5b6c68743022e9 Mon Sep 17 00:00:00 2001
From: martin <martin@martin-ThinkPad-T410.(none)>
Date: Mon, 26 Sep 2011 15:29:12 -0400
Subject: [PATCH 06/16] CC-2833: Use ClassLoaders for PHP Files

-autoload DateHelper class
---
 airtime_mvc/application/Bootstrap.php         |  2 +-
 .../application/controllers/ApiController.php |  2 +-
 .../controllers/ScheduleController.php        |  8 +++----
 airtime_mvc/application/models/DateHelper.php |  2 +-
 airtime_mvc/application/models/Nowplaying.php | 14 +++++------
 airtime_mvc/application/models/Schedule.php   |  6 ++---
 airtime_mvc/application/models/Show.php       | 24 +++++++++----------
 7 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php
index 9da2f81e9..fbb337a19 100644
--- a/airtime_mvc/application/Bootstrap.php
+++ b/airtime_mvc/application/Bootstrap.php
@@ -20,7 +20,7 @@ require_once 'DB.php';
 //require_once 'Shows.php';
 //require_once 'User.php';
 //require_once 'RabbitMq.php';
-require_once 'DateHelper.php';
+//require_once 'DateHelper.php';
 require_once __DIR__.'/controllers/plugins/RabbitMqPlugin.php';
 
 global $CC_CONFIG, $CC_DBC;
diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php
index 8e0fc20f7..fd246d863 100644
--- a/airtime_mvc/application/controllers/ApiController.php
+++ b/airtime_mvc/application/controllers/ApiController.php
@@ -158,7 +158,7 @@ class ApiController extends Zend_Controller_Action
             $this->view->layout()->disableLayout();
             $this->_helper->viewRenderer->setNoRender(true);
 
-            $date = new DateHelper;
+            $date = new Application_Model_DateHelper;
             $timeNow = $date->getTimestamp();
             $result = array("env"=>APPLICATION_ENV,
                 "schedulerTime"=>gmdate("Y-m-d H:i:s"),
diff --git a/airtime_mvc/application/controllers/ScheduleController.php b/airtime_mvc/application/controllers/ScheduleController.php
index a99392f7c..d1ed1674d 100644
--- a/airtime_mvc/application/controllers/ScheduleController.php
+++ b/airtime_mvc/application/controllers/ScheduleController.php
@@ -152,8 +152,8 @@ class ScheduleController extends Zend_Controller_Action
 
 		$params = '/format/json/id/#id#';
         
-        $showStartDateHelper = DateHelper::ConvertToLocalDateTime($show->getShowStart());
-        $showEndDateHelper = DateHelper::ConvertToLocalDateTime($show->getShowEnd());
+        $showStartDateHelper = Application_Model_DateHelper::ConvertToLocalDateTime($show->getShowStart());
+        $showEndDateHelper = Application_Model_DateHelper::ConvertToLocalDateTime($show->getShowEnd());
         		
 		if ($epochNow < $showStartDateHelper->getTimestamp()) {
 
@@ -461,7 +461,7 @@ class ScheduleController extends Zend_Controller_Action
             $i = 1;
             foreach ($rebroadcastsRelative as $rebroadcast){
                 $rebroadcastFormValues["add_show_rebroadcast_date_$i"] = $rebroadcast['day_offset'];
-                $rebroadcastFormValues["add_show_rebroadcast_time_$i"] = DateHelper::removeSecondsFromTime($rebroadcast['start_time']);
+                $rebroadcastFormValues["add_show_rebroadcast_time_$i"] = Application_Model_DateHelper::removeSecondsFromTime($rebroadcast['start_time']);
                 $i++;
             }
             $formRebroadcast->populate($rebroadcastFormValues);
@@ -471,7 +471,7 @@ class ScheduleController extends Zend_Controller_Action
             $i = 1;
             foreach ($rebroadcastsAbsolute as $rebroadcast){
                 $rebroadcastAbsoluteFormValues["add_show_rebroadcast_date_absolute_$i"] = $rebroadcast['start_date'];
-                $rebroadcastAbsoluteFormValues["add_show_rebroadcast_time_absolute_$i"] = DateHelper::removeSecondsFromTime($rebroadcast['start_time']);
+                $rebroadcastAbsoluteFormValues["add_show_rebroadcast_time_absolute_$i"] = Application_Model_DateHelper::removeSecondsFromTime($rebroadcast['start_time']);
                 $i++;
             }
             $formAbsoluteRebroadcast->populate($rebroadcastAbsoluteFormValues);
diff --git a/airtime_mvc/application/models/DateHelper.php b/airtime_mvc/application/models/DateHelper.php
index 41068f319..63b71f26e 100644
--- a/airtime_mvc/application/models/DateHelper.php
+++ b/airtime_mvc/application/models/DateHelper.php
@@ -1,6 +1,6 @@
 <?php
 
-class DateHelper
+class Application_Model_DateHelper
 {
     private $_dateTime;
 
diff --git a/airtime_mvc/application/models/Nowplaying.php b/airtime_mvc/application/models/Nowplaying.php
index 9f42aa895..17c531fec 100644
--- a/airtime_mvc/application/models/Nowplaying.php
+++ b/airtime_mvc/application/models/Nowplaying.php
@@ -14,10 +14,10 @@ class Application_Model_Nowplaying
         
         foreach ($p_dbRows as $dbRow){
                     
-            $showStartDateTime = DateHelper::ConvertToLocalDateTime($dbRow['show_starts']);
-            $showEndDateTime = DateHelper::ConvertToLocalDateTime($dbRow['show_ends']);
-            $itemStartDateTime = DateHelper::ConvertToLocalDateTime($dbRow['item_starts']);
-            $itemEndDateTime = DateHelper::ConvertToLocalDateTime($dbRow['item_ends']);
+            $showStartDateTime = Application_Model_DateHelper::ConvertToLocalDateTime($dbRow['show_starts']);
+            $showEndDateTime = Application_Model_DateHelper::ConvertToLocalDateTime($dbRow['show_ends']);
+            $itemStartDateTime = Application_Model_DateHelper::ConvertToLocalDateTime($dbRow['item_starts']);
+            $itemEndDateTime = Application_Model_DateHelper::ConvertToLocalDateTime($dbRow['item_ends']);
         
             $showStarts = $showStartDateTime->format("Y-m-d H:i:s");
             $showEnds = $showEndDateTime->format("Y-m-d H:i:s");
@@ -61,7 +61,7 @@ class Application_Model_Nowplaying
             $startCutoff = 60;
             $endCutoff = 86400; //60*60*24 - seconds in a day
         } else {
-            $date = new DateHelper;
+            $date = new Application_Model_DateHelper;
             $time = $date->getTime();
             $date->setDate($dateString." ".$time);
             $timeNow = $date->getUtcTimestamp();
@@ -81,8 +81,8 @@ class Application_Model_Nowplaying
             $showId = $si->getShowId();
             $show = new Application_Model_Show($showId);
             
-            $showStartDateTime = DateHelper::ConvertToLocalDateTime($si->getShowStart());
-            $showEndDateTime = DateHelper::ConvertToLocalDateTime($si->getShowEnd());
+            $showStartDateTime = Application_Model_DateHelper::ConvertToLocalDateTime($si->getShowStart());
+            $showEndDateTime = Application_Model_DateHelper::ConvertToLocalDateTime($si->getShowEnd());
             
             //append show header row
             $data[] = self::CreateHeaderRow($show->getName(), $showStartDateTime->format("Y-m-d H:i:s"), $showEndDateTime->format("Y-m-d H:i:s"));
diff --git a/airtime_mvc/application/models/Schedule.php b/airtime_mvc/application/models/Schedule.php
index fffc5b13a..faccafcb7 100644
--- a/airtime_mvc/application/models/Schedule.php
+++ b/airtime_mvc/application/models/Schedule.php
@@ -143,7 +143,7 @@ class Application_Model_Schedule {
 
         global $CC_CONFIG;
 
-        $date = new DateHelper;
+        $date = new Application_Model_DateHelper;
         $timeNow = $date->getUtcTimestamp();
         return array("env"=>APPLICATION_ENV,
             "schedulerTime"=>$timeNow,
@@ -499,8 +499,8 @@ class Application_Model_Schedule {
                     'fade_in' => Application_Model_Schedule::WallTimeToMillisecs($item["fade_in"]),
                     'fade_out' => Application_Model_Schedule::WallTimeToMillisecs($item["fade_out"]),
                     'fade_cross' => 0,
-                    'cue_in' => DateHelper::CalculateLengthInSeconds($item["cue_in"]),
-                    'cue_out' => DateHelper::CalculateLengthInSeconds($item["cue_out"]),
+                    'cue_in' => Application_Model_DateHelper::CalculateLengthInSeconds($item["cue_in"]),
+                    'cue_out' => Application_Model_DateHelper::CalculateLengthInSeconds($item["cue_out"]),
                     'export_source' => 'scheduler',
                     'start' => $starts,
                     'end' => Application_Model_Schedule::AirtimeTimeToPypoTime($item["ends"])
diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php
index 77f86953e..0c7afa4a5 100644
--- a/airtime_mvc/application/models/Show.php
+++ b/airtime_mvc/application/models/Show.php
@@ -137,7 +137,7 @@ class Application_Model_Show {
         $uncheckedDaysImploded = implode(",", $p_uncheckedDays);
         $showId = $this->getId();
 
-        $date = new DateHelper;
+        $date = new Application_Model_DateHelper;
         $timestamp = $date->getTimestamp();
 
         $sql = "DELETE FROM cc_show_instances"
@@ -302,7 +302,7 @@ class Application_Model_Show {
     public function deleteAllInstances(){
         global $CC_DBC;
 
-        $date = new DateHelper;
+        $date = new Application_Model_DateHelper;
         $timestamp = $date->getTimestamp();
 
         $showId = $this->getId();
@@ -321,7 +321,7 @@ class Application_Model_Show {
     public function deleteAllRebroadcasts(){
         global $CC_DBC;
 
-        $date = new DateHelper;
+        $date = new Application_Model_DateHelper;
         $timestamp = $date->getTimestamp();
 
         $showId = $this->getId();
@@ -343,11 +343,11 @@ class Application_Model_Show {
     public function removeAllInstancesFromDate($p_date=null){
         global $CC_DBC;
 
-        $date = new DateHelper;
+        $date = new Application_Model_DateHelper;
         $timestamp = $date->getTimestamp();
 
         if(is_null($p_date)) {
-            $date = new DateHelper;
+            $date = new Application_Model_DateHelper;
             $p_date = $date->getDate();
         }
 
@@ -377,7 +377,7 @@ class Application_Model_Show {
     public function removeAllInstancesBeforeDate($p_date){
         global $CC_DBC;
 
-        $date = new DateHelper;
+        $date = new Application_Model_DateHelper;
         $timestamp = $date->getTimestamp();
 
         $showId = $this->getId();
@@ -481,7 +481,7 @@ class Application_Model_Show {
      *      true if the StartDate is in the past, false otherwise
      */
     public function isStartDateTimeInPast(){
-        $date = new DateHelper;
+        $date = new Application_Model_DateHelper;
         $current_timestamp = $date->getTimestamp();
         return ($current_timestamp > $this->getStartDate()." ".$this->getStartTime());
     }
@@ -495,7 +495,7 @@ class Application_Model_Show {
     public function getAllFutureInstanceIds(){
         global $CC_DBC;
 
-        $date = new DateHelper;
+        $date = new Application_Model_DateHelper;
         $timestamp = $date->getTimestamp();
 
         $showId = $this->getId();
@@ -517,7 +517,7 @@ class Application_Model_Show {
 
         global $CC_DBC;
 
-        $date = new DateHelper;
+        $date = new Application_Model_DateHelper;
         $timestamp = $date->getTimestamp();
 
         $sql = "UPDATE cc_show_days "
@@ -538,7 +538,7 @@ class Application_Model_Show {
 
         global $CC_DBC;
 
-        $date = new DateHelper;
+        $date = new Application_Model_DateHelper;
         $timestamp = $date->getTimestamp();
 
         $sql = "UPDATE cc_show_days "
@@ -955,7 +955,7 @@ class Application_Model_Show {
             $sql = "SELECT timestamp '{$start}' + interval '{$duration}'";
             $end = $CC_DBC->GetOne($sql);
 
-            $date = new DateHelper();
+            $date = new Application_Model_DateHelper();
             $currentTimestamp = $date->getTimestamp();
 
             $show = new Application_Model_Show($show_id);
@@ -1028,7 +1028,7 @@ class Application_Model_Show {
         $rebroadcasts = $CC_DBC->GetAll($sql);
         $show = new Application_Model_Show($show_id);
 
-        $date = new DateHelper();
+        $date = new Application_Model_DateHelper();
         $currentTimestamp = $date->getTimestamp();
 
         while(strtotime($next_date) <= strtotime($end_timestamp) && (strtotime($last_show) > strtotime($next_date) || is_null($last_show))) {

From 685cc879519375a02d012e5998c8a598a2a17729 Mon Sep 17 00:00:00 2001
From: martin <martin@martin-ThinkPad-T410.(none)>
Date: Mon, 26 Sep 2011 15:32:56 -0400
Subject: [PATCH 07/16] CC-2833: Use ClassLoaders for PHP Files

-temporarily reenable some files from being always loaded
---
 airtime_mvc/application/Bootstrap.php       | 4 ++--
 airtime_mvc/application/models/RabbitMq.php | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php
index fbb337a19..f42f172fc 100644
--- a/airtime_mvc/application/Bootstrap.php
+++ b/airtime_mvc/application/Bootstrap.php
@@ -16,10 +16,10 @@ require_once 'DB.php';
 //require_once 'Playlist.php';
 //require_once 'StoredFile.php';
 //require_once 'Schedule.php';
-//require_once 'Preference.php';
+require_once 'Preference.php';
 //require_once 'Shows.php';
 //require_once 'User.php';
-//require_once 'RabbitMq.php';
+require_once 'RabbitMq.php';
 //require_once 'DateHelper.php';
 require_once __DIR__.'/controllers/plugins/RabbitMqPlugin.php';
 
diff --git a/airtime_mvc/application/models/RabbitMq.php b/airtime_mvc/application/models/RabbitMq.php
index d5bbfbfba..65f03539a 100644
--- a/airtime_mvc/application/models/RabbitMq.php
+++ b/airtime_mvc/application/models/RabbitMq.php
@@ -1,7 +1,7 @@
 <?php
 require_once 'php-amqplib/amqp.inc';
 
-class RabbitMq
+class Application_Model_RabbitMq
 {
     static public $doPush = FALSE;
 

From fb9ab448b74e9f50f0771774c8adaa1dd5ae9735 Mon Sep 17 00:00:00 2001
From: martin <martin@martin-ThinkPad-T410.(none)>
Date: Mon, 26 Sep 2011 15:43:58 -0400
Subject: [PATCH 08/16] CC-2833: Use ClassLoaders for PHP Files

---
 airtime_mvc/application/Bootstrap.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php
index f42f172fc..11c73d154 100644
--- a/airtime_mvc/application/Bootstrap.php
+++ b/airtime_mvc/application/Bootstrap.php
@@ -19,7 +19,7 @@ require_once 'DB.php';
 require_once 'Preference.php';
 //require_once 'Shows.php';
 //require_once 'User.php';
-require_once 'RabbitMq.php';
+//require_once 'RabbitMq.php';
 //require_once 'DateHelper.php';
 require_once __DIR__.'/controllers/plugins/RabbitMqPlugin.php';
 

From df4bf9e1c7fa8655e162723fdfb5b091f766a438 Mon Sep 17 00:00:00 2001
From: martin <martin@martin-ThinkPad-T410.(none)>
Date: Mon, 26 Sep 2011 17:01:43 -0400
Subject: [PATCH 09/16] CC-2833: Use ClassLoaders for PHP Files

---
 airtime_mvc/application/Bootstrap.php | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php
index 11c73d154..8bf8d58aa 100644
--- a/airtime_mvc/application/Bootstrap.php
+++ b/airtime_mvc/application/Bootstrap.php
@@ -11,16 +11,7 @@ require_once __DIR__."/configs/constants.php";
 require_once __DIR__."/configs/conf.php";
 require_once 'DB.php';
 
-//require_once 'Soundcloud.php';
-//require_once 'MusicDir.php';
-//require_once 'Playlist.php';
-//require_once 'StoredFile.php';
-//require_once 'Schedule.php';
 require_once 'Preference.php';
-//require_once 'Shows.php';
-//require_once 'User.php';
-//require_once 'RabbitMq.php';
-//require_once 'DateHelper.php';
 require_once __DIR__.'/controllers/plugins/RabbitMqPlugin.php';
 
 global $CC_CONFIG, $CC_DBC;

From dffe6b33ace94d44a893b3ab26cda6206f118e45 Mon Sep 17 00:00:00 2001
From: martin <martin@martin-ThinkPad-T410.(none)>
Date: Mon, 26 Sep 2011 20:42:08 -0400
Subject: [PATCH 10/16] CC-2888: Create a monit file for each airtime component

-missed some changes in the full-install
---
 install_full/ubuntu/airtime-full-install | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/install_full/ubuntu/airtime-full-install b/install_full/ubuntu/airtime-full-install
index 1570b457c..d36ae4ab6 100755
--- a/install_full/ubuntu/airtime-full-install
+++ b/install_full/ubuntu/airtime-full-install
@@ -74,16 +74,14 @@ echo "4. Enable Monit"
 echo "----------------------------------------------------"
 cd /etc/default/
 sed -i 's/startup=0/startup=1/g' monit
-cp $SCRIPTPATH/../../python_apps/monit/airtime-monit.cfg /etc/monit/conf.d
 
 grep -q "include /etc/monit/conf.d" /etc/monit/monitrc
 RETVAL=$?
 if [ $RETVAL -ne 0 ] ; then
+    mkdir -p /etc/monit/conf.d
     echo "include /etc/monit/conf.d/*" >> /etc/monit/monitrc 
 fi
 
-service monit start
-
 # Run Airtime Install
 echo "----------------------------------------------------"
 echo "5. Run Airtime Install"

From d5ec44027fe5af1825ad2644964127c7de10b010 Mon Sep 17 00:00:00 2001
From: martin <martin@martin-ThinkPad-T410.(none)>
Date: Mon, 26 Sep 2011 23:45:58 -0400
Subject: [PATCH 11/16] -update airtime-nuke

---
 dev_tools/airtime-nuke.sh | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/dev_tools/airtime-nuke.sh b/dev_tools/airtime-nuke.sh
index 4e48eba1f..fde45d1dd 100755
--- a/dev_tools/airtime-nuke.sh
+++ b/dev_tools/airtime-nuke.sh
@@ -18,6 +18,8 @@ rm -rf "/var/tmp/airtime"
 rm -rf "/opt/pypo"
 rm -rf "/opt/recorder"
 rm -rf "/srv/airtime"
+rm -rf "/etc/monit/conf.d/airtime-monit.cfg"
+rm -rf /etc/monit/conf.d/monit-airtime-*
 
 echo "DROP DATABASE AIRTIME;" | su postgres -c psql
 echo "DROP LANGUAGE plpgsql;" | su postgres -c psql

From fef0392e43fa8f16d7096b392e3034c50d325fff Mon Sep 17 00:00:00 2001
From: martin <martin@martin-ThinkPad-T410.(none)>
Date: Tue, 27 Sep 2011 13:31:02 -0400
Subject: [PATCH 12/16] CC-2724: Play Stream Icon + jPlayer popup styling
 -upgraded to jplayer 2.1

---
 .../scripts/dashboard/stream-player.phtml     |  72 +++++---
 airtime_mvc/public/css/add-show.css           |   9 +-
 .../public/css/images/airtime_logo_jp.png     | Bin 0 -> 1957 bytes
 airtime_mvc/public/css/styles.css             | 136 ++++++++++++---
 .../public/js/airtime/dashboard/playlist.js   |   2 +-
 airtime_mvc/public/js/jplayer/Jplayer.swf     | Bin 7679 -> 8452 bytes
 .../public/js/jplayer/jquery.jplayer.min.js   | 155 ++++++++++--------
 .../js/jplayer/skin/jplayer.blue.monday.css   | 105 ++++++++----
 .../public/js/jplayer/skin/jplayer.png        | Bin 0 -> 8046 bytes
 9 files changed, 330 insertions(+), 149 deletions(-)
 create mode 100644 airtime_mvc/public/css/images/airtime_logo_jp.png
 create mode 100644 airtime_mvc/public/js/jplayer/skin/jplayer.png

diff --git a/airtime_mvc/application/views/scripts/dashboard/stream-player.phtml b/airtime_mvc/application/views/scripts/dashboard/stream-player.phtml
index dab53ad48..717072ddc 100644
--- a/airtime_mvc/application/views/scripts/dashboard/stream-player.phtml
+++ b/airtime_mvc/application/views/scripts/dashboard/stream-player.phtml
@@ -1,34 +1,52 @@
+<div id="content" class="jp-container">
 <script>
 $(document).ready(function(){
 
-	$("#jquery_jplayer_1").jPlayer({
-		ready: function () {
-			$(this).jPlayer("setMedia", {
-				oga: "http://localhost:8000/airtime_128"
-			}).jPlayer("play");
-		},
-		ended: function (event) {
-			$(this).jPlayer("play");
-		},
-		swfPath: "js",
-		supplied: "oga"
-	});
+    $("#jquery_jplayer_1").jPlayer({
+        ready: function () {
+            $(this).jPlayer("setMedia", {
+                oga: "http://localhost:8000/airtime_128"
+            }).jPlayer("play");
+        },
+        ended: function (event) {
+            $(this).jPlayer("play");
+        },
+        swfPath: "js",
+        supplied: "oga",
+        wmode: "window"
+    });
 });
 </script>
+  <div class="jp-logo"></div>
+        <div class="jp-stream">
+            <div class="jp-stream-text">Select stream:</div>
+              <form id="form1" method="post" action="">
+                  <label>
+                    <input type="radio" name="select-stream" value="radio" id="select-stream_0" checked="checked" />
+                    48 Kbit/s</label>
+                  <label>
+                    <input type="radio" name="select-stream" value="radio" id="select-stream_1" />
+                    96 Kbit/s</label>
+                  <label>
+                    <input type="radio" name="select-stream" value="radio" id="select-stream_2" />
+                    192 Kbit/s</label>
+              </form>
+        </div>
+        <div id="jquery_jplayer_1" class="jp-jplayer"></div>
 
-		<div id="jquery_jplayer_1" class="jp-jplayer"></div>
+  <div id="jp_container_1" class="jp-audio">
+            <div class="jp-type-single">
+                <div id="jp_interface_1" class="jp-gui jp-interface">
+                    <ul class="jp-controls">
+                        <li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li>
+                        <li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>
+                        <li><a href="javascript:;" class="jp-mute" tabindex="1">mute</a></li>
+                        <li><a href="javascript:;" class="jp-unmute" tabindex="1">unmute</a></li>
+                    </ul>
+                </div>
+                <div id="jp_playlist_1" class="jp-playlist">
+                </div>
 
-		<div class="jp-audio">
-			<div class="jp-type-single">
-				<div id="jp_interface_1" class="jp-interface">
-					<ul class="jp-controls">
-						<li><a href="#" class="jp-play" tabindex="1">play</a></li>
-						<li><a href="#" class="jp-pause" tabindex="1">pause</a></li>
-						<li><a href="#" class="jp-mute" tabindex="1">mute</a></li>
-						<li><a href="#" class="jp-unmute" tabindex="1">unmute</a></li>
-					</ul>
-				</div>
-				<div id="jp_playlist_1" class="jp-playlist">
-				</div>
-			</div>
-		</div>
+            </div>
+        </div>
+</div>
diff --git a/airtime_mvc/public/css/add-show.css b/airtime_mvc/public/css/add-show.css
index 96008facd..fbd1c6be5 100644
--- a/airtime_mvc/public/css/add-show.css
+++ b/airtime_mvc/public/css/add-show.css
@@ -51,7 +51,7 @@
     margin: 0;
     padding: 4px 0;
     text-align: left;
-	min-width:100px;
+	min-width:103px;
 	clear:left;
 }
 #schedule-add-show dt.big {
@@ -94,7 +94,7 @@ label.wrapp-label input[type="checkbox"] {
 	margin-right:5px;
 }
 #add_show_name-element .input_text {
-	width:99%;
+	/*width:99%;*/
 }
 
 #schedule-add-show-overlap {
@@ -113,12 +113,13 @@ label.wrapp-label input[type="checkbox"] {
 }
 
 #add_show_start_time, #add_show_end_time	{
-	width: 60px;
+	width: 54px;
 	margin-left:10px;
 }
 
 #add_show_end_date_no_repeat, #add_show_start_date  {
-	width: 95px;
+	width: 89px;
+
 }
 
 #add_show_duration	{
diff --git a/airtime_mvc/public/css/images/airtime_logo_jp.png b/airtime_mvc/public/css/images/airtime_logo_jp.png
new file mode 100644
index 0000000000000000000000000000000000000000..0bc1ff866533221a2699a5c9a4ac5adb39896eeb
GIT binary patch
literal 1957
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
WBIxRROy1%6aY~}%#9u|GANUWT;srqf

literal 0
HcmV?d00001

diff --git a/airtime_mvc/public/css/styles.css b/airtime_mvc/public/css/styles.css
index db6111c4d..6cd9305f6 100644
--- a/airtime_mvc/public/css/styles.css
+++ b/airtime_mvc/public/css/styles.css
@@ -456,7 +456,7 @@ dl.inline-list dd {
     background-color: #95d5f7 !important;
 }
 
-.datatable tr td:first-child, .datatable tr th:first-child, .datatable tr th.ui-state-default:first-child, tr td:first-child, tr th:first-child {
+.datatable tr td:first-child, .datatable tr th:first-child, .datatable tr th.ui-state-default:first-child {
 	border-left-width:0 !important;
 }
 .ui-widget-header + .datatable {
@@ -1057,7 +1057,7 @@ h2#scheduled_playlist_name span {
 }
 
 .stream-setting-content dd.block-display {
-	width: 60%;
+	/*width: 60%;*/
 }
 
 .simple-formblock.padded-strong {
@@ -1566,9 +1566,6 @@ div.success{
 	background:url(images/icon_soundcloud.png) no-repeat 0 0;
 	width:21px;
 }
-.small-icon.sc-error {
-    background:url(images/icon_soundcloud_error2.png) no-repeat 0 0;
-}
 .small-icon.progress {
 	background:url(images/upload-icon.gif) no-repeat;
     background-color:black;
@@ -1658,8 +1655,10 @@ dd.radio-inline-list, .preferences dd.radio-inline-list, .stream-config dd.radio
 .preferences dd.block-display .input_select, .stream-config dd.block-display .input_select {
     width: 100%;
 }
-.preferences dd.block-display .input_text_area, .preferences dd.block-display .input_text {
-    width: 99.5%;
+.preferences dd.block-display .input_text_area, .preferences dd.block-display .input_text 
+.stream-config dd.block-display .input_text_area, .stream-config dd.block-display .input_text,
+.stream-config dd.block-display input[type="text"], .stream-config dd.block-display input[type="password"] {
+    width: 98.5%;
 }
 
 .preferences dd#SoundCloudTags-element.block-display .input_text_area {
@@ -1935,12 +1934,13 @@ dd .info-text-small {
 	line-height:140%;
 }
 
-.stream-config dd input {
-    width:300px;
+.stream-config dd input[type="text"] {
+    /*width:98.5%;*/
+	min-width:152px;
 }
 
 .stream-config dd input[id$=port] {
-    width:160px;
+    width:152px;
 }
 
 dt.block-display.info-block {
@@ -1979,7 +1979,7 @@ dt.block-display.info-block {
 }
 
 .stream-config dt.block-display, .stream-config dd.block-display {
-	float: left;
+	/*float: left;*/
 }
 .collapsible-header-disabled {
 	cursor:default;
@@ -2049,8 +2049,7 @@ dt.block-display.info-block {
 table {
     border-color: #5b5b5b;
     border-style: solid;
-    border-width: 2px 1px 1px 1px;
-	background-color: #D8D8D8;
+    border-width: 0;
 }
 tbody tr th	{
 	color: #000000;
@@ -2067,7 +2066,7 @@ tbody tr th	{
 }
 thead tr th	{
 	color: #FFFFFF;
-    font-size: 13px;
+    font-size: 12px;
     padding: 5px 5px;
 	border-color:#CCCCCC;
 	background-color: #6e6e6e;
@@ -2079,8 +2078,8 @@ thead tr th	{
 tr td	{
     border-color: #b1b1b1;
     border-style: solid;
-    border-width: 1px 0 0 1px;
-    font-size: 13px;
+    border-width: 0;
+    font-size: 12px;
     padding: 5px 5px;
 }
 tfoot tr td, tfoot tr th	{
@@ -2101,13 +2100,21 @@ tfoot tr th	{
 	
 	
 /*---////////////////////    STATUS TABLE    ////////////////////---*/
-
-.statustable tr td	{
+.statustable	{
+	background-color: #D8D8D8;
+    border-width: 2px 1px 1px;
+}
+.statustable tr td, .statustable tr th	{
 	text-align:center;
 	vertical-align:text-top;
+	font-size:13px;
+}
+.statustable tr td	{
+	border-width: 1px 0 0 1px;
 }
 .statustable tr td:first-child, .statustable tr th:first-child {
 	text-align:left;
+    border-left-width: 0 !important;
 }
 .checked-icon	{
 	width:100%;
@@ -2140,7 +2147,7 @@ tfoot tr th	{
 	-moz-border-radius: 4px;
 	font-size:13px;
 }
-.big	{
+.statustable .big	{
 	width:120px;
 	height:10px;
 	background:#444444;
@@ -2195,3 +2202,94 @@ tfoot tr th	{
 	border:none;
 	margin:0;
 }
+
+/*---////////////////////    TRIAL BOX HEADER    ////////////////////---*/
+
+.trial-box	{
+	width:142px;
+	height:38px;
+	display:block;
+	position:absolute;
+	right:20px;
+	bottom:10px;
+	background-color:#222;
+	background-color:rgba(0, 0, 0, 0.7);
+	z-index:100;
+	-moz-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+	color:#FFF;
+	font-size:11px;
+	padding:7px;
+}
+.trial-box p	{
+	padding:0 0 3px 0;
+	margin:0 0 5px 0;
+	float:left;
+}
+.trial-box-button a {
+	width:92px;
+	height:14px;
+	display:block;	
+	padding: 1px 3px;
+	-moz-border-radius: 1px;
+	-webkit-border-radius: 1px;
+	border-radius: 1px;
+	text-transform:uppercase;
+	text-align:center;
+	font-family:Arial, Helvetica, sans-serif;
+	font-weight:bold;
+	text-decoration:none;
+	color:#FFFFFF;
+	background-color:#ff5d1a;
+    background: -moz-linear-gradient(top, #ff5d1a 0, #dd4202 100%);
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ff5d1a), color-stop(100%, #dd4202));
+	box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset;
+	-moz-box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset;
+	-webkit-box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset;
+	float:left;
+}
+.trial-box-button a:hover {
+	background-color:#dd4202;
+    background: -moz-linear-gradient(top, #dd4202 0, #ff5d1a 100%);
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #dd4202), color-stop(100%, #ff5d1a));
+	box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset;
+	-moz-box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset;
+	-webkit-box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset;
+}
+.trial-box-calendar	{
+	float:right;
+	text-align:center;
+	font-weight:bold;
+}
+.trial-box-calendar-white	{
+	font-size:18px;
+	color:#ff5d1a;
+	background:#FFF;
+	width:36px;
+	height:22px;
+	display:block;
+	-webkit-border-top-right-radius: 1px;
+	-moz-border-radius-topright: 1px;	
+	-webkit-border-top-left-radius: 1px;
+	-moz-border-radius-topleft: 1px;	
+}
+.trial-box-calendar-gray	{
+	width:36px;
+	height:14px;
+	display:block;
+	color:#FFF;
+	font-size:11px;
+	padding:1px 0;
+	text-transform:uppercase;
+	background-color:#676767;
+    background: -moz-linear-gradient(top, #7f7f7f 0, #555555 100%);
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #7f7f7f), color-stop(100%, #555555));
+	-webkit-border-bottom-right-radius: 1px;
+	-moz-border-radius-bottomright: 1px;	
+	-webkit-border-bottom-left-radius: 1px;
+	-moz-border-radius-bottomleft: 1px;	
+	box-shadow: rgba(0, 0, 0, 0.4) 0 2px 1px inset;
+	-moz-box-shadow: rgba(0, 0, 0, 0.4) 0 2px 2px inset;
+	-webkit-box-shadow: rgba(0, 0, 0, 0.4) 0 2px 2px inset;
+}
\ No newline at end of file
diff --git a/airtime_mvc/public/js/airtime/dashboard/playlist.js b/airtime_mvc/public/js/airtime/dashboard/playlist.js
index a740a9227..be91be286 100644
--- a/airtime_mvc/public/js/airtime/dashboard/playlist.js
+++ b/airtime_mvc/public/js/airtime/dashboard/playlist.js
@@ -259,7 +259,7 @@ function init() {
     setupQtip();
     
     $('#on-air-info').click(function() {
-        newwindow=window.open("Dashboard/stream-player", 'name', 'height=200,width=450');
+        newwindow=window.open("Dashboard/stream-player", 'name', 'width=380,height=168');
         if (window.focus) {newwindow.focus()}
         return false;
     });
diff --git a/airtime_mvc/public/js/jplayer/Jplayer.swf b/airtime_mvc/public/js/jplayer/Jplayer.swf
index 9487f49b5a6cacf53f320a41c21f94d1cd35feb1..4d50c86ae1faf32a43ff61906129cb15f80a6b49 100644
GIT binary patch
literal 8452
zcmV+fA^YA#S5phOKmY)E+O>NJcpOEtaM$eY^zJIH*0yZRfdypAVJ$fkENp|2RtZTf
z6aX6(M!PebwO6}hgKTrakxb6PWH2Ti>3}11i90TF0a%&CT;h&PJ}##hF1$Ovs-Bq*
zvi;uo-ur)jR8LiRb#--BcXieJZWoh(!dUrZj4c4xQn`>Z_VGEd17n+#5xudmrPaS{
zA{I|IBDJ~BNT(+o8ya@*+*!YKeSIQ1-mrG##*GbY)-|kKw;DNCr*_BF>aNxC)bVv&
zgn$+;6;4Jc)6qoSPqaFg$fP&d)mc&_;hfOPOfn`!M#2qROq<Z+=~Tno`n4!15^mHJ
z$q6;RMV*|CMZ+qIYuL3qWhBBocB)g_YCWc=j7<%BMw*k3reoTc?Y%K|x0V!xW)F=;
z@_KD4*wyw)!7TI;GYa`=-ehJh7EKvia!WhvvU?}4=I=^J1aE$fIKxRzO(&9Dy4B<k
zf2Y4!jjQ8EG?h-o1+zU&tT8n{o>9lOEx{f!mZOEHYFgW}X6@>JZF2RxHEY+JYEkE=
zhFKQ2deCWGSc~@~$0pV+&CJYf^El9}3WDtH?PuaI&BvClLodJS=`^>@UY~p87RIoP
z=}C1$Tg$wxo;jqM4?e@0!<_V&kDK2QPyLg`<f%k7QYs8zuT7D+JOj}QEg2-7pPop>
zG&QdDr<2k6xYCoE7}JuKhHbNY%PXbU>SB@-8r!ag(`8m)e_BmvQcf{cX08*7rf5v*
zpG-#6nx{LFNoiu-+nk7}wO#3MEuJwaoT2R=OQ^|+ph`PJ!DKRFE>qs4rA^s_^!01u
z42s*G=irtG%JwreT5|V-6!w`rXichNvUE#yJep3)nJCH*CnhEmaZ_T+#O{uGG%XBK
zV(OepM`J0c*)y@bdvd+GbKCCNA-Xrr?%v>xrf`r)Q)fjZTEdy$)s-0cm@;Xr?g4CC
zqgpKDjA&z-aXE?$m#4IJX0i*9nHJZQsgjt$1`@PN9^X)*$3~E|DHDk%MkXfL7t<S5
zixvwbJ%#2U38O!g-C887a-?DjH9}v~)<s_xT~TUvj2N04aU(I6h-D@;;+x2%wMxtB
zt+WSW=t|rIS=2OMi<(xeES_#HtrFd?#v?H;S(emN(F-(-DmAHK9Pjh)(lADZ9oEP~
z3>%q#3?JdN)iYuVTy*$I?ld}LiSY_y#O~C%HCnO5IzSe^_^`9vnD-!`*xjGV#3Po=
zC&)@p(c_-j-E64wxE3oFv_(+2d18H{y9>>!C9N(z4+BXxo}y4zE{1a?&g;|8&uFQ%
z+gvKHr9FdvT~=pB8jsoFBt-{t;L0YGiE%VmN>HUKP1}LDQ4lUvSy-K;qg$gf%`F^E
zSgA%g!P>WrJRO?U;-!Q%CnhFiT3VZ%5}UCo+hq1?rUt1TZ9CDXh3`x9x~3}gxGgK+
zV_r#1_j2oNp9G6EB@&^TH(n-fWpa>H98DLY?Q|^ZT#IAr%LwtN70yy)Xu#5OElsZI
zqZg(GiIz-KJT~QsH)oPbluXw1<w?QXr^RM>HI1c?IqH!y*Hp~w;iS6}aio%A7lMdF
z3L^bl+8s^NJlr2*{pL<RBq0<hEiIG=d^ny~lWAmVN$iZ%=5Y!!VUNqiv`CpSMQ<V%
zr9BCA^=ip5nJ%2)T$P1eL%28G&(!R0+#hP6)?5+GL}e4!mF+_-?{?Xg6CJLlo#IG|
zBSc3vn$#lR)GUR0%v4v231yca)q19b(RZq2A~o&|#}aYPl}?yX&3|=IH{d-rgQ;js
z#U+euBBGb!tB|L}?Z6j$!Yv*P!n|?&*|5%@M~g?S(>6C%_=ecWJ#31zrsMe_PmzVi
z0jW&HX9YQaR<N(XBh=$uSHHG?O<8AeSJT#D-$-Ausby=KwV9D5S=VQewRSc2xAz76
zg9ARBLBs`N^zyuf{*G<I^1KL&o&}@5!KQ(N(Milqa;rCYbu^!mTV2H3+*q)$FVvSC
z6E3c>$Ifo*>*?retFT9Rs>wLIr_vtp3N^L#4>a`+*sp?kQpB0?+C05|p*GaL-)pnj
z0VKCd|6qS_u%{)rN-C4WP!-8(*mQcRZy={3CZEZ4Zf>x<cc3GfpQ}w^5~W4*vIm;F
zx(dcow^&Szl;*U<Piamw{Nz^cZ5r$k=2jJ#uBvd~!ItjeKvPT8KvPxW=Cuf28amg$
zVs7H}6>}0-fvr0RiftXGi&asmY2o;!8B}uP%}qUo<;KHmoLH)6jSsZ<g$CQ&t7fsK
zjbtJ-ZshG244zTAnjN_d$Ac~9g~M7Tx8s41?%-fA?l_p+F+Bxltj?dj9yCk-<k3aU
zN$A75&FxJ+ZFvb8p|mi*yyJO4v<xC2UN)06w<kNAncQ=2?z2K&gWZ<Yxi+sEzD-Vd
zOYro;wvq1sHn&J5Mldp2$#H5o=3NsmJI#cZC3ub!J6jSHYBcT<?o4*X^@L|qrNldp
zdE2p8Nuov)V_H2Xm<>(+>l@asS#x5;SSA`n=guukh#Sp>xTd(X#r&FCHRTq#o|ZhO
zn5hF(4w2MOX(r>M|3b*(!gRk;ggzQq(_yT79LwvDm!c6*-3mMMI?zILI+@X&cz4FN
z@_uUj!)i?HPDC_UPiUmSxv4AYPT5@^!O;|pj>laCq27_MVC#TWB~meCm{*OM5!X&}
zogzNDu)Eoa#v(2&=Z=;X6a-!aqy6b*w~lxRx*}CkFi0IPOJ9HW8&CMr${R(Y<u9u6
zyxqZ`!I6%EU^gD%u3+;3KABj|O$dSVWF}>lg!58i7wmTKj7HLiVrbEEBduWQK|g!O
z)bNh+BqdK3d9*nZOC;SB8FXw6T_lqfJ{3(x$6}gtMsVxMV6T(zMW0i|M;X_hEVo>-
z3*8r2W0gS*5&qQGu;x~$)M!ja5hY|DJae?5jHZswNoo^`DXqwmm9t8MM*qCSdg7T_
zta4VVFq@Bh3ixs*M2@eZhxkhJbw$0CE<=5pICp-!_5RKNauGgrWJ#{RX!OG}mw5#n
z{R-t!xP<LUQDXST1{?iydiSIzArl%8UtvClHw>@1A|ywu4y!>L{i(^#PJehZDOz>2
z><_0mJN%K&^N(DeG%hYGPjEgR<Fm>AsIn(dRr)V9$J)iAp#2n(PV;q*t5eZ&%HR{2
z*w3*dLE#S*%E(wujqjLe4doLa3KZa3GOKcF^lSCl)r|KG7vvT?Zy+%~j?bANYahRT
z+5J46PR6iwcBPD{o<^j!ncQQt)mO~A@nuE9q4Ka$Qg!4A<hCk~Mt@nvk|hLFCWo1N
zN61Vp<PbjXuI5m8Z&z?2X#dhcNk)oW^}GW~w_Tt#mK9bgjpaqvMk7|!J!(&Rs;HbQ
z?+*?3w2atmxF)UC*fX{ptCE2PzW5~qHS=dBrp3q81|Q3e;k8P6@Bs{K;)<1<KRXRr
zNvKCe$X-KDX`Y_o0HqQGgZ<_G!REofj)AS_{@kgFL?Ue<`;u9OQlr0cCv#>eo{j!G
zEcW$;97aDv-O0HWwVqCAeLqHrMt?!^vV4VqwZFK4!LH4Ixm!&e4s|TGq$u~Tx6u0j
zOgM~6%{@#$#-KSzShPCdN11MYM|=uncZAkkau_?|J&ANH`D5OZ(&zf}qWrnulh2nG
zyePPl3N@Wp!$wZDQ-l(3O_M3HP|&IvAY_Uja}G<m8~qNvkZ#mK)A3+NRvm$(DJC**
zKehhlJt2RvwH2fPiesyw%2DO2DqAqm$*LAr)hsv-zo%E7u^_hKDp+tmAoU(L^TG9f
zsGe8-1E~H0s(%R8KZ5EHq3VxNb&XW@B?%c^)z^burZ~ViXRdQz)%*nutHDv`1;^53
z=2rLx{h-7_;*!k4$wA@3xx>xD!yP4DD&=xHmnyjA<x(Y=d|aBtrMVpDaixkY^EoWw
zu#hX&oG<3e67E>am1DTW&y{1javWEV=dNX3spU!?SC(^S1y@#bWffNfTv^SPdag8Z
zWer!>a%CM?)^lY8S5Dx{iCj5}D<^YhBUc)^atc>Aab+`Cws7TC?rGvB&D_(%OM=|f
z%1hd~r=6E{a8D;M?c$zp?&;y45Qkn4XL9J{o__8b;GRM5Ig5MF=ALu7XDjz?<DPT5
z=REEi;+|pd8R4E$4l0K+4q*-v4jT999L6~q9HJbybJ)RQf<v4`g2N<-^Eo6rq&TEG
zWH?N5*vVlRhus`5;P5dH7jn3W!^Ipv&fyZ^a4EuN2$v&Vfv^YRN`$Ksu0gmK;W~sH
zfS23|+<O!7(wp&n3x03KZ#(yPb8ip#hPd}^?mdTlw{q_`?md@#&*R=9?j7dd5$+x3
z-rJD-c7!_+_9Ea$?nJ?NA>55{FT(u@4<bB-@G!!o2%kWB0^uoyPa-^v@F|2B5MDxf
z1>rS>&mepb;dO*BB76zqD+pgh_&UNj5#B<02VolFUEq}m@%tTw?;?B;+*RQI34r@&
z2yyH=1YG_Fem_F^CE~xr@2?SlgYa8~-y!@S;SazU{RzK+#_zx2_umoz0(|aY@%uM~
zza#ty!aorHi7<n337+mt5iUcx9N`LtJqTAKT!nD8#1~(S-|G;rN4NpuMuZ0t_DSvw
zz<nXOF9P?+z<n`_dlI{!mU!ti_<a%KWrSDo_Pi!>`O^rWLHI28eIDU;gfAd`5#bGq
zFZnWlzk={}gl`~x6X9D3Zy~&m@Q&nOD!EG#%OXr896<Os!g~k@5xy(Azb833e1P~5
zCHEo1e}VW%2){)56~eC(euMB^$$hcI{SR=s{|U(U2g&W13}*cSNQ_C~a1fen9CBeJ
zey$hYPUZqo3conPnVYI$!(BE8ZpNJ8apE6QCDfGW8ac;S#&UnaoYokv2~ci{DQp~;
z(k92zssCPU!Qngt6#f-R%Hfb7b~4!|qxD=401y5#H~j<1VLSStC=F0yBVHSk|4;i7
z4BXbZ(&KhAINnEk&S7jWIOZ|tVpWXIXA2lx$f_Az#1`XX9?ufdE@kW(<`?L(z@+1V
zIgSS=*Wl)s0aI#$@j76x<-pu4fO%E|D_I4sGytq@HL&t}U=<C(yla3}t_9{>2W-xI
zU~@MBn|A`RsuO|DKMB}^lYuSV2&{Uc$L(fIY8n|kg>7PNGuy)0sq8eyn%L=#HM17d
zG)PS=HEpDQJFul4z>etz=05}2v0cE9>jrjw53rgLuw}i#YR?2#*9UBQKd==8z*Y_d
zTXhz&z}di7p98FZE3k%bz}B1#Z0&i#)(rt$KMZWc2(S}Ift{!VJ82Bq$u90LW2aPy
z(Uy`D5oXcIm^%4qoEn3gC^g%u*+ET=nh9#+)Fj9)lhm9~O_G`vHEC)x#4^PgXFGvy
z+68R$ZeUw30CwuffSq<BuqMUrE@v(BMYQ>gadm)?AIpN5z_F}#k;h%ZI+k6E$Kf(y
zm*eLOV0-X$C9tc2%qUEDHIVhL5$(02y$*nNUXRTgH(=9sBR1VPVbgOnHlbUv>Ae-3
zGjGGD?{;kZ@4#kYFE)dBVsqAA*qn{7I0s#^6-~MgO?obx^gJ}_5Sn!OZe$oin~tJQ
zRkZ0C+BA$djogC++P&DI5f`&YxDOAujGfI(?kDU%fCoU4<Ocv>E5#x21K0<OEbj+=
zxfG}T2*7?&6!|g0S4`pZ;{cC<;*y^Pe9;uQ{4~I0pm^kG0ADwyM1Bt7aZpO-=K)_j
zrA&Si;7L%*<(C0pJ*7f^72s)5yz-|3UqGc&{w%;Vp!np^1HOjJ9Qg|X&w(;megp7j
zROZQF26!HnD*3B`ucR_xeiPtDP!`DF0DLi(h4QxmUIwLFejD)hR2IoufLB3TEFS=T
zNtGq?w*lIja}iX^z&64{nZfDcl9|+on*_%=ERvaQ;3ams9oaSLJ&>Jl&z}*`4!JsA
z%$S!QnqL#CVV(0Oqbl3MMn4UK_aXEdfb8gJLH``+pNGJYVV_034*LQ>g?)xEtIr#9
zTAg2jRwt-o?6Nw(2!Wr&Q)*=N4H*3r=wAl)D?s>HLH`=4ZwlP4e;u;=y3jX3BC<sP
zCXyS7L^*mm^B#R7K8#;A42hwI)13>!STOW0WLpqIvt)-BO?NH=qgr%Ti>|D`crQZe
zIBDoD=zI&<C2zsO1EII^5WNF|e}z$(ejn`Xd<Wo?ci?^M`!}dXQbIB;zdKs0XHnJ(
zq{WzQQ7000K%a(p$K=ofkcQud1ID{J;P>6eSa#@`&SRLdG^;PIajM@2^ZOosm)$3;
z2L*DaLw%o+TJ<~T=ezV-Ever#$?wxAr=I!)BJ0!-Xg^EEzI3!unf^mWHkuY%FskUU
zA$hV%Ru_|1qmuq3B#*Vo(1$=bS5hRm=Mg~PW7m)IF8u`bpMvjZMp$4~R$mtS8F~Zp
zKvu7{@zq(q&c^Gr`f?j@$m%O>93`%_@wHifm5r~<>H!;HpVe2}_=c=rZ{b<p7dQdc
zzn^wHuXPQCehxA!>yR97Pi=P1^np3}mK^Zmi=M3w9S_;MPz`uJNYxQlixhIp4&2&3
z60-ZQ!y#dx{V2O3Z>~p+$rp>smx{?Ji^->o$w!LG=Znb~Y|?vGu_}j(RXJ3w%AsOa
z4i&3%s92Rl#i|@CR^?E!DoCP<oMfU`g^BJVy{d~%R9$SM>S7aB7n`WM*hJOECaNwr
zQFXD2stZkIl20SKR#<Frv1W&gH9J(S*`Z?14i#&5s93W@#hM)|*6dKRW`~M3GYzPa
z0XL%k{BxG0nt_|7>3yM-M9`_lh?A`~7H8{>B@~M~$nVpkcBpO725y#+tF9g2<XHl4
z$qT3>0d=;31wufzE#OvLfNPe3+m0Zh_6P!Qw*|N*aC@pS00i!!t{fw_xIqt%E~U}E
z=ICM{7bm#&9M+Cp^kJ-olvqhzcUsFMU#Z}mUiJ~+-?|luIfpY=nwxRgk!Nfxn6Zs!
zl+lb@nsGPI2;3vtvs~t^)^p7n^kuA^xK|MOy|(;$)8akSBbDXmjL>-?400Ytiwc_1
zL=)~Sm=Kxv%@xcw%;XkdZ<Xj1kCNGKqbSI$m=4JX?w6+ZU*O~TptNsV{|HE^6<+6y
z@G8O_v1F(9i}F#fvI?Wzr5KU}4@n~W2NKh|7TAx{jJ<*Lr}go`1=IRu;KFG=8MtU#
zPX#_Ut)GvEdN^?Lw4N5ogit6D7yBJ7xr86g1|G&2>zAm`BhtPD`mYdql#pK|@)#k%
zLF5yJ{8ngs0FCIQt!$yKJTA@J!7_U0+~URVbVFzz9DP4?6qnoc6$~=V!^-k7&jy~L
z*IoY|uJ@F*kI>%>$@r!pM0g(|EK}n&*=pFcD}5N;SD37V#4>LMnq9vX^n-`>yiYy8
z8_>pLzB%pTOjyay$T4CsA5+G7=_;EW*EW$cj)P88$`ml>e5gixIP<=@&Sb?NzTe{h
zJ>;|<lLedD30}hL1DGO=IYaB6m>f*y_kr7*TfD8g&-#|qv07>kdmb_~1#1||_vv`e
zl@zyUA-#c^Sxmo+X~pyy<rLFnPLpAt6P?yb5Bg$XHF-(FnDr3dYrQS-NvTtDgc{5f
zoExbw7(oeDbQR`h*9`puhMEJ<N}bIRcuoraK}5XyMT4Iz9$Y|!i)n4Y&nGrB9e7^a
zhhO~%B8fqsg%a|3kY`%I7`=`?)eb!HcTf%zcmdDZAH`|#;(!|`(%cVVFJ(S~mn4%C
z<6}5Jt^Wzos95>0nAZOcQ$Dv?H1Mi~Yk9HAb9+x=j6@!+X*p1>P~zxah;5fifVY$`
zEMk&ZqShrXdV6L@x_)Nn>6sbCP>DqnX3BNhH5wb`YexSC){Oou!oMN>JAw!QJBKY1
ze?}#;FV5%HOJv;Xt+cP9Q#wy!Mq_qpbLVDeY|0Luy6n~Yb)Bb5#+K|*Q)d%1PRkB8
zcQ!NQbj-b%{SD0IyQPo_7G&kER;J#TrBK~srFMPh>lw7jkV&>$<e(s}Xtz{xxJw@u
zswq~U*cSL420l6jf1&KMO*ed%WX(;K7Gh%6LuuBTIMNvUE7so>L)UC$D-W(*vuXmC
zxTLI~HfU{BZyYVx|Ax$+rV@=9DgKV+8F}(Qkn9rVQ1djNBHX&(7TSp`woR)VwzcYb
zHq_7BV1473f51Pn9;dgcf{qE`BZeGx>NxJjPi9_*-32<fg?3rzo05jMPDP?!A@i|x
zJI0Fl{Z%Qy>(IwY0e!pAPkYA|wws)f6o|=&wzB*MDjwNJ8EFr#bR4ZzSG>~K3Rk+&
zvTCT89@^t+7pv&%wAC;*A=Wm`-JlUnAukp0r3P?HH6?E)q->B<dM`K8AB*gM8F6qF
zYOYc1L<80rtMq10rO=SI%%jE2)D<t&l3%99T4s4}nSLTy$RI*gUgC?z5?6w0nrYtx
zVP!p9Nuon%A<>!_-)f0pMG<4GFpZwbwvMnea!%-MvfqF>syir<3X|;+&RJoKjbm&m
z5$}RE@mXI5vu4qBe9X6zJ^@nr7_mUD8qKTye6iZA^K5m6Y%dhE)jN>wIKkGso0<7T
zTj&C8@m}B|-x4}Us%@v#t3k%V_ljih%$PbjGy~JEGXQ&6Qj#Uq9-s0pHaBC?6K7vX
z^K{Tnp_8J=%p?f4-;TMRxo(NwlQmPdHhp4hWu+~bOk?B5Uf;7vHP|XKB95ee7!Qcp
zF1G$u!PdPIQ;3*YUSTc21MkBCc-t+~$O<zc7v_N&33dGMH1!gU37aq`T#Dar5ff^0
ztpk<0b)GC(r?#D9HQ8^CESu$vbyLj)VA`_o{Q_&c>^)6C<-@tP@0$j#VL3}$X5FM;
zCe^TV({?7QCXVbDg_)r$aTIfyexcQDk09GL3U?wmxdiudxoNRt$N0iWbw)|f8D3wZ
zv7Mq29x$Wd0hETLD+<(hAo=cI`r(B9mp9;ADyUDvi%3%T*F-RHG0m6PXL|v@!`$@&
zk<K45)ADt6ITr{Qi2V9A(OO=`+pwN)!$vc%MY65KY`;25wrw3{>iJfuik(RdA45DP
z7)F?yMgbcr>Yr@hk=ZBMBk)H3a)~lNk=8frS4d{p!|gRxo18%Ng@TRx9&#=>+4e~0
z_=#YT(~%H^<aTjm5;%Sm&8JEN70RWeq&{^#BLa^_SPPy^6G~}<%EX4TZzClU%Q0)Z
zQaWlD0ag~V5I5Z@fkQ?a!<hZw1IB$6S55(tos>A?n~(1#_H2@{r(ZmXhK7}%jxdgZ
z?}iaY*p9FRA%-x45XXpTB&eCB=6q_B)TF3MBS$7X$c!lzy;+iE=UlRiw&y)sE<24&
z)EYXDZJ}l9!NqH^(&rRDi0!qpi5wQ+i#tD+nCa23&8vYjPP4m7yV_iLQ(-r8*NX1b
z(R>asn(r!MK7Nk0#BgDMGqGQd0buxk2;2w8{V@Ch1Ren60T_M|0{g&t5Qg_bU_Ti9
zVE7>jJOai;FuWfEkAblth98E&<6t}t!;e7VNiZIP;YT6xG#HP<@M92o28_pG_!F4l
zg7FC$ejEbNgYh^FKLLRk!FU3OpM=26U_1%KPeI^SFrI?pry=lZFrJ3tPeS0cV0;pW
zpMk*V!FUFSpM}5|z<3shpM$^~U_1xIpMt=b!T1ymKM#Sgg7G{IzW{+Z!FU0NUxdIn
zz<3dcUxL85z<3FUUxvWjV7v^&uRtIR#w#%VDg+LI@hS|z27zyb@fw|x7FlsBb11o{
zs-we^Jz!jveb=}chk^<?mHB8xWfUtk{i3XX@#xjk=r#EMJJC<AE*!=}f9P5%;0`<>
z1+r3LS_-@?1+Ip`HPCvk#F48F9U;%LlVLahca8&(tb+2}^NDW<<uY%G?D8_`ybPFu
z<*b?KUIn?-wIH{>8Vadvpdi(~7U;YWT>+g}pq$H5^UGnhLcb0#`5j<pli1<auSeug
ztK(9rRd0~8gqS~-UJX_fe3Qj-joop*)p4!eajVrq(G0iJ31&qzZT>iM4T$u_W#MLi
zat393o2&>W9!$LTH8A&B`&lqEt@jU0{;s2}>jojCi&C?Oqo!te!;y2d?qc<>E>Q1k
zTfH9QaZx&Uv!Fwi##9rXlR7Iu>!ledlhkTEKcg2WbQ?X9*P3foStC9%a=SHRu6QQB
z2|7i<dq5bYtU;t*w}6$c&B<kJBFcugf|n{clh_7SViTUh@KTz40kKIxEB0whva`27
z+K)e<z2$Z_D}C$F^VJpc&C1^fI6jImO2xkT4i=_2O8QOGzQFe-yGrujO*LxhE;NS(
zRIQ5g;qa=UmOSnK5iu8t{DDM|20b1R*#bvz&iA$6BEhn~P%7-Z7ngWYEJoNJ%v|h9
zHI8=|RlO;ydWF6R13!}N%C`km-47+Z^gR)&A6t~<U5?aGEXv_UzXyJ5QF5+Gc8Vg|
ziAC~*Gc(STnVESrGbhi??3$UmY-Z*`Q7sSB)n8|4wC|ZtLWkW*rx?%QbUs;{Rn45`
zv=WH|6aCD-0XTj(jZYPi|J)uQ;+>pb!rz<D>i2?rD;1-AFp69$!bRtm07UA0W=D=a
zFs<Gu0tVrs+a(ZZ(EL$vk2tIv9!^~S96Hjc(!Tb9e~!3dIN`5!>@mpPA=%g2-02Yt
zS@Z5~J#q=VP0Cdklqgo_ONPtAAKEK{SudPR^}@UVvw8uw-1h&zUijwGFX)!SRn1a%
z4+i$ool@aBI9d%6qv&Zxjq>>gHH3&ALM+u1_RcFS&DDeg^vkDM#w;|5`!0zRV_fvV
zttHN*T4Imme^pE1k$9@W2bn1|jkJw`uBgga8f`S7-!0KE+y6gni`R}=TkJc!<Eq&a
zJVue-ySc#NYYQFZ5p@T;#%nzk8Q&2dBK&^zx<rIHJQR6v3{hcnnq8QPEc$;{oea~p
zt;ts>SAqD@9WJpIy$Z}qW#s=_sf^MsKIO=jido2^<IPgVYc4Ko713$c4k{HRE>lDr
z=`j+y#4b)sty$*b$yF%fT!k`RSfPvwA6XTONm#2yB<lwnQPPwjUczXSl_Ho7B?Yx6
za*$zl`lo>p!PG2M`Fe4x^E-Sk@4=_?_w+9x_agFlK;%BD;OE6!H6xrdMJ+Om>yRey
z(fcLSIhO*F^xHO0E$Y2b690Hkzth#`ey1Z1QQ5LwB7s?jsCc)sqU^#{^y$K=Gp|_v
mKNdVY<96ltz|ku=*{a+YA%E!{`X5f&{}1)k5dTl-RQ~qVeMFD|

literal 7679
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

diff --git a/airtime_mvc/public/js/jplayer/jquery.jplayer.min.js b/airtime_mvc/public/js/jplayer/jquery.jplayer.min.js
index 1bcbb530d..bcf7901a0 100644
--- a/airtime_mvc/public/js/jplayer/jquery.jplayer.min.js
+++ b/airtime_mvc/public/js/jplayer/jquery.jplayer.min.js
@@ -1,78 +1,97 @@
 /*
  * jPlayer Plugin for jQuery JavaScript Library
- * http://www.happyworm.com/jquery/jplayer
+ * http://www.jplayer.org
  *
- * Copyright (c) 2009 - 2010 Happyworm Ltd
+ * Copyright (c) 2009 - 2011 Happyworm Ltd
  * Dual licensed under the MIT and GPL licenses.
  *  - http://www.opensource.org/licenses/mit-license.php
  *  - http://www.gnu.org/copyleft/gpl.html
  *
  * Author: Mark J Panaghiston
- * Version: 2.0.0
- * Date: 20th December 2010
+ * Version: 2.1.0
+ * Date: 1st September 2011
  */
 
-(function(c,h){c.fn.jPlayer=function(a){var b=typeof a==="string",d=Array.prototype.slice.call(arguments,1),f=this;a=!b&&d.length?c.extend.apply(null,[true,a].concat(d)):a;if(b&&a.charAt(0)==="_")return f;b?this.each(function(){var e=c.data(this,"jPlayer"),g=e&&c.isFunction(e[a])?e[a].apply(e,d):e;if(g!==e&&g!==h){f=g;return false}}):this.each(function(){var e=c.data(this,"jPlayer");if(e){e.option(a||{})._init();e.option(a||{})}else c.data(this,"jPlayer",new c.jPlayer(a,this))});return f};c.jPlayer=
-function(a,b){if(arguments.length){this.element=c(b);this.options=c.extend(true,{},this.options,a);var d=this;this.element.bind("remove.jPlayer",function(){d.destroy()});this._init()}};c.jPlayer.event={ready:"jPlayer_ready",resize:"jPlayer_resize",error:"jPlayer_error",warning:"jPlayer_warning",loadstart:"jPlayer_loadstart",progress:"jPlayer_progress",suspend:"jPlayer_suspend",abort:"jPlayer_abort",emptied:"jPlayer_emptied",stalled:"jPlayer_stalled",play:"jPlayer_play",pause:"jPlayer_pause",loadedmetadata:"jPlayer_loadedmetadata",
-loadeddata:"jPlayer_loadeddata",waiting:"jPlayer_waiting",playing:"jPlayer_playing",canplay:"jPlayer_canplay",canplaythrough:"jPlayer_canplaythrough",seeking:"jPlayer_seeking",seeked:"jPlayer_seeked",timeupdate:"jPlayer_timeupdate",ended:"jPlayer_ended",ratechange:"jPlayer_ratechange",durationchange:"jPlayer_durationchange",volumechange:"jPlayer_volumechange"};c.jPlayer.htmlEvent=["loadstart","abort","emptied","stalled","loadedmetadata","loadeddata","canplaythrough","ratechange"];c.jPlayer.pause=
-function(){c.each(c.jPlayer.prototype.instances,function(a,b){b.data("jPlayer").status.srcSet&&b.jPlayer("pause")})};c.jPlayer.timeFormat={showHour:false,showMin:true,showSec:true,padHour:false,padMin:true,padSec:true,sepHour:":",sepMin:":",sepSec:""};c.jPlayer.convertTime=function(a){a=new Date(a*1E3);var b=a.getUTCHours(),d=a.getUTCMinutes();a=a.getUTCSeconds();b=c.jPlayer.timeFormat.padHour&&b<10?"0"+b:b;d=c.jPlayer.timeFormat.padMin&&d<10?"0"+d:d;a=c.jPlayer.timeFormat.padSec&&a<10?"0"+a:a;return(c.jPlayer.timeFormat.showHour?
-b+c.jPlayer.timeFormat.sepHour:"")+(c.jPlayer.timeFormat.showMin?d+c.jPlayer.timeFormat.sepMin:"")+(c.jPlayer.timeFormat.showSec?a+c.jPlayer.timeFormat.sepSec:"")};c.jPlayer.uaMatch=function(a){a=a.toLowerCase();var b=/(opera)(?:.*version)?[ \/]([\w.]+)/,d=/(msie) ([\w.]+)/,f=/(mozilla)(?:.*? rv:([\w.]+))?/;a=/(webkit)[ \/]([\w.]+)/.exec(a)||b.exec(a)||d.exec(a)||a.indexOf("compatible")<0&&f.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}};c.jPlayer.browser={};var m=c.jPlayer.uaMatch(navigator.userAgent);
-if(m.browser){c.jPlayer.browser[m.browser]=true;c.jPlayer.browser.version=m.version}c.jPlayer.prototype={count:0,version:{script:"2.0.0",needFlash:"2.0.0",flash:"unknown"},options:{swfPath:"js",solution:"html, flash",supplied:"mp3",preload:"metadata",volume:0.8,muted:false,backgroundColor:"#000000",cssSelectorAncestor:"#jp_interface_1",cssSelector:{videoPlay:".jp-video-play",play:".jp-play",pause:".jp-pause",stop:".jp-stop",seekBar:".jp-seek-bar",playBar:".jp-play-bar",mute:".jp-mute",unmute:".jp-unmute",
-volumeBar:".jp-volume-bar",volumeBarValue:".jp-volume-bar-value",currentTime:".jp-current-time",duration:".jp-duration"},idPrefix:"jp",errorAlerts:false,warningAlerts:false},instances:{},status:{src:"",media:{},paused:true,format:{},formatType:"",waitForPlay:true,waitForLoad:true,srcSet:false,video:false,seekPercent:0,currentPercentRelative:0,currentPercentAbsolute:0,currentTime:0,duration:0},_status:{volume:h,muted:false,width:0,height:0},internal:{ready:false,instance:h,htmlDlyCmdId:h},solution:{html:true,
-flash:true},format:{mp3:{codec:'audio/mpeg; codecs="mp3"',flashCanPlay:true,media:"audio"},m4a:{codec:'audio/mp4; codecs="mp4a.40.2"',flashCanPlay:true,media:"audio"},oga:{codec:'audio/ogg; codecs="vorbis"',flashCanPlay:false,media:"audio"},wav:{codec:'audio/wav; codecs="1"',flashCanPlay:false,media:"audio"},webma:{codec:'audio/webm; codecs="vorbis"',flashCanPlay:false,media:"audio"},m4v:{codec:'video/mp4; codecs="avc1.42E01E, mp4a.40.2"',flashCanPlay:true,media:"video"},ogv:{codec:'video/ogg; codecs="theora, vorbis"',
-flashCanPlay:false,media:"video"},webmv:{codec:'video/webm; codecs="vorbis, vp8"',flashCanPlay:false,media:"video"}},_init:function(){var a=this;this.element.empty();this.status=c.extend({},this.status,this._status);this.internal=c.extend({},this.internal);this.formats=[];this.solutions=[];this.require={};this.htmlElement={};this.html={};this.html.audio={};this.html.video={};this.flash={};this.css={};this.css.cs={};this.css.jq={};this.status.volume=this._limitValue(this.options.volume,0,1);this.status.muted=
-this.options.muted;this.status.width=this.element.css("width");this.status.height=this.element.css("height");this.element.css({"background-color":this.options.backgroundColor});c.each(this.options.supplied.toLowerCase().split(","),function(e,g){var i=g.replace(/^\s+|\s+$/g,"");if(a.format[i]){var j=false;c.each(a.formats,function(n,k){if(i===k){j=true;return false}});j||a.formats.push(i)}});c.each(this.options.solution.toLowerCase().split(","),function(e,g){var i=g.replace(/^\s+|\s+$/g,"");if(a.solution[i]){var j=
-false;c.each(a.solutions,function(n,k){if(i===k){j=true;return false}});j||a.solutions.push(i)}});this.internal.instance="jp_"+this.count;this.instances[this.internal.instance]=this.element;this.element.attr("id")===""&&this.element.attr("id",this.options.idPrefix+"_jplayer_"+this.count);this.internal.self=c.extend({},{id:this.element.attr("id"),jq:this.element});this.internal.audio=c.extend({},{id:this.options.idPrefix+"_audio_"+this.count,jq:h});this.internal.video=c.extend({},{id:this.options.idPrefix+
-"_video_"+this.count,jq:h});this.internal.flash=c.extend({},{id:this.options.idPrefix+"_flash_"+this.count,jq:h,swf:this.options.swfPath+(this.options.swfPath!==""&&this.options.swfPath.slice(-1)!=="/"?"/":"")+"Jplayer.swf"});this.internal.poster=c.extend({},{id:this.options.idPrefix+"_poster_"+this.count,jq:h});c.each(c.jPlayer.event,function(e,g){if(a.options[e]!==h){a.element.bind(g+".jPlayer",a.options[e]);a.options[e]=h}});this.htmlElement.poster=document.createElement("img");this.htmlElement.poster.id=
-this.internal.poster.id;this.htmlElement.poster.onload=function(){if(!a.status.video||a.status.waitForPlay)a.internal.poster.jq.show()};this.element.append(this.htmlElement.poster);this.internal.poster.jq=c("#"+this.internal.poster.id);this.internal.poster.jq.css({width:this.status.width,height:this.status.height});this.internal.poster.jq.hide();this.require.audio=false;this.require.video=false;c.each(this.formats,function(e,g){a.require[a.format[g].media]=true});this.html.audio.available=false;if(this.require.audio){this.htmlElement.audio=
-document.createElement("audio");this.htmlElement.audio.id=this.internal.audio.id;this.html.audio.available=!!this.htmlElement.audio.canPlayType}this.html.video.available=false;if(this.require.video){this.htmlElement.video=document.createElement("video");this.htmlElement.video.id=this.internal.video.id;this.html.video.available=!!this.htmlElement.video.canPlayType}this.flash.available=this._checkForFlash(10);this.html.canPlay={};this.flash.canPlay={};c.each(this.formats,function(e,g){a.html.canPlay[g]=
-a.html[a.format[g].media].available&&""!==a.htmlElement[a.format[g].media].canPlayType(a.format[g].codec);a.flash.canPlay[g]=a.format[g].flashCanPlay&&a.flash.available});this.html.desired=false;this.flash.desired=false;c.each(this.solutions,function(e,g){if(e===0)a[g].desired=true;else{var i=false,j=false;c.each(a.formats,function(n,k){if(a[a.solutions[0]].canPlay[k])if(a.format[k].media==="video")j=true;else i=true});a[g].desired=a.require.audio&&!i||a.require.video&&!j}});this.html.support={};
-this.flash.support={};c.each(this.formats,function(e,g){a.html.support[g]=a.html.canPlay[g]&&a.html.desired;a.flash.support[g]=a.flash.canPlay[g]&&a.flash.desired});this.html.used=false;this.flash.used=false;c.each(this.solutions,function(e,g){c.each(a.formats,function(i,j){if(a[g].support[j]){a[g].used=true;return false}})});this.html.used||this.flash.used||this._error({type:c.jPlayer.error.NO_SOLUTION,context:"{solution:'"+this.options.solution+"', supplied:'"+this.options.supplied+"'}",message:c.jPlayer.errorMsg.NO_SOLUTION,
-hint:c.jPlayer.errorHint.NO_SOLUTION});this.html.active=false;this.html.audio.gate=false;this.html.video.gate=false;this.flash.active=false;this.flash.gate=false;if(this.flash.used){var b="id="+escape(this.internal.self.id)+"&vol="+this.status.volume+"&muted="+this.status.muted;if(c.browser.msie&&Number(c.browser.version)<=8){var d='<object id="'+this.internal.flash.id+'"';d+=' classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"';d+=' codebase="'+document.URL.substring(0,document.URL.indexOf(":"))+
-'://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"';d+=' type="application/x-shockwave-flash"';d+=' width="0" height="0">';d+="</object>";var f=[];f[0]='<param name="movie" value="'+this.internal.flash.swf+'" />';f[1]='<param name="quality" value="high" />';f[2]='<param name="FlashVars" value="'+b+'" />';f[3]='<param name="allowScriptAccess" value="always" />';f[4]='<param name="bgcolor" value="'+this.options.backgroundColor+'" />';b=document.createElement(d);for(d=0;d<f.length;d++)b.appendChild(document.createElement(f[d]));
-this.element.append(b)}else{f='<embed name="'+this.internal.flash.id+'" id="'+this.internal.flash.id+'" src="'+this.internal.flash.swf+'"';f+=' width="0" height="0" bgcolor="'+this.options.backgroundColor+'"';f+=' quality="high" FlashVars="'+b+'"';f+=' allowScriptAccess="always"';f+=' type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';this.element.append(f)}this.internal.flash.jq=c("#"+this.internal.flash.id);this.internal.flash.jq.css({width:"0px",
-height:"0px"})}if(this.html.used){if(this.html.audio.available){this._addHtmlEventListeners(this.htmlElement.audio,this.html.audio);this.element.append(this.htmlElement.audio);this.internal.audio.jq=c("#"+this.internal.audio.id)}if(this.html.video.available){this._addHtmlEventListeners(this.htmlElement.video,this.html.video);this.element.append(this.htmlElement.video);this.internal.video.jq=c("#"+this.internal.video.id);this.internal.video.jq.css({width:"0px",height:"0px"})}}this.html.used&&!this.flash.used&&
-window.setTimeout(function(){a.internal.ready=true;a.version.flash="n/a";a._trigger(c.jPlayer.event.ready)},100);c.each(this.options.cssSelector,function(e,g){a._cssSelector(e,g)});this._updateInterface();this._updateButtons(false);this._updateVolume(this.status.volume);this._updateMute(this.status.muted);this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide();c.jPlayer.prototype.count++},destroy:function(){this._resetStatus();this._updateInterface();this._seeked();this.css.jq.currentTime.length&&
-this.css.jq.currentTime.text("");this.css.jq.duration.length&&this.css.jq.duration.text("");this.status.srcSet&&this.pause();c.each(this.css.jq,function(a,b){b.unbind(".jPlayer")});this.element.removeData("jPlayer");this.element.unbind(".jPlayer");this.element.empty();this.instances[this.internal.instance]=h},enable:function(){},disable:function(){},_addHtmlEventListeners:function(a,b){var d=this;a.preload=this.options.preload;a.muted=this.options.muted;a.addEventListener("progress",function(){if(b.gate&&
-!d.status.waitForLoad){d._getHtmlStatus(a);d._updateInterface();d._trigger(c.jPlayer.event.progress)}},false);a.addEventListener("timeupdate",function(){if(b.gate&&!d.status.waitForLoad){d._getHtmlStatus(a);d._updateInterface();d._trigger(c.jPlayer.event.timeupdate)}},false);a.addEventListener("durationchange",function(){if(b.gate&&!d.status.waitForLoad){d.status.duration=this.duration;d._getHtmlStatus(a);d._updateInterface();d._trigger(c.jPlayer.event.durationchange)}},false);a.addEventListener("play",
-function(){if(b.gate&&!d.status.waitForLoad){d._updateButtons(true);d._trigger(c.jPlayer.event.play)}},false);a.addEventListener("playing",function(){if(b.gate&&!d.status.waitForLoad){d._updateButtons(true);d._seeked();d._trigger(c.jPlayer.event.playing)}},false);a.addEventListener("pause",function(){if(b.gate&&!d.status.waitForLoad){d._updateButtons(false);d._trigger(c.jPlayer.event.pause)}},false);a.addEventListener("waiting",function(){if(b.gate&&!d.status.waitForLoad){d._seeking();d._trigger(c.jPlayer.event.waiting)}},
-false);a.addEventListener("canplay",function(){if(b.gate&&!d.status.waitForLoad){a.volume=d._volumeFix(d.status.volume);d._trigger(c.jPlayer.event.canplay)}},false);a.addEventListener("seeking",function(){if(b.gate&&!d.status.waitForLoad){d._seeking();d._trigger(c.jPlayer.event.seeking)}},false);a.addEventListener("seeked",function(){if(b.gate&&!d.status.waitForLoad){d._seeked();d._trigger(c.jPlayer.event.seeked)}},false);a.addEventListener("suspend",function(){if(b.gate&&!d.status.waitForLoad){d._seeked();
-d._trigger(c.jPlayer.event.suspend)}},false);a.addEventListener("ended",function(){if(b.gate&&!d.status.waitForLoad){if(!c.jPlayer.browser.webkit)d.htmlElement.media.currentTime=0;d.htmlElement.media.pause();d._updateButtons(false);d._getHtmlStatus(a,true);d._updateInterface();d._trigger(c.jPlayer.event.ended)}},false);a.addEventListener("error",function(){if(b.gate&&!d.status.waitForLoad){d._updateButtons(false);d._seeked();if(d.status.srcSet){d.status.waitForLoad=true;d.status.waitForPlay=true;
-d.status.video&&d.internal.video.jq.css({width:"0px",height:"0px"});d._validString(d.status.media.poster)&&d.internal.poster.jq.show();d.css.jq.videoPlay.length&&d.css.jq.videoPlay.show();d._error({type:c.jPlayer.error.URL,context:d.status.src,message:c.jPlayer.errorMsg.URL,hint:c.jPlayer.errorHint.URL})}}},false);c.each(c.jPlayer.htmlEvent,function(f,e){a.addEventListener(this,function(){b.gate&&!d.status.waitForLoad&&d._trigger(c.jPlayer.event[e])},false)})},_getHtmlStatus:function(a,b){var d=0,
-f=0,e=0,g=0;d=a.currentTime;f=this.status.duration>0?100*d/this.status.duration:0;if(typeof a.seekable==="object"&&a.seekable.length>0){e=this.status.duration>0?100*a.seekable.end(a.seekable.length-1)/this.status.duration:100;g=100*a.currentTime/a.seekable.end(a.seekable.length-1)}else{e=100;g=f}if(b)f=g=d=0;this.status.seekPercent=e;this.status.currentPercentRelative=g;this.status.currentPercentAbsolute=f;this.status.currentTime=d},_resetStatus:function(){this.status=c.extend({},this.status,c.jPlayer.prototype.status)},
-_trigger:function(a,b,d){a=c.Event(a);a.jPlayer={};a.jPlayer.version=c.extend({},this.version);a.jPlayer.status=c.extend(true,{},this.status);a.jPlayer.html=c.extend(true,{},this.html);a.jPlayer.flash=c.extend(true,{},this.flash);if(b)a.jPlayer.error=c.extend({},b);if(d)a.jPlayer.warning=c.extend({},d);this.element.trigger(a)},jPlayerFlashEvent:function(a,b){if(a===c.jPlayer.event.ready&&!this.internal.ready){this.internal.ready=true;this.version.flash=b.version;this.version.needFlash!==this.version.flash&&
-this._error({type:c.jPlayer.error.VERSION,context:this.version.flash,message:c.jPlayer.errorMsg.VERSION+this.version.flash,hint:c.jPlayer.errorHint.VERSION});this._trigger(a)}if(this.flash.gate)switch(a){case c.jPlayer.event.progress:this._getFlashStatus(b);this._updateInterface();this._trigger(a);break;case c.jPlayer.event.timeupdate:this._getFlashStatus(b);this._updateInterface();this._trigger(a);break;case c.jPlayer.event.play:this._seeked();this._updateButtons(true);this._trigger(a);break;case c.jPlayer.event.pause:this._updateButtons(false);
-this._trigger(a);break;case c.jPlayer.event.ended:this._updateButtons(false);this._trigger(a);break;case c.jPlayer.event.error:this.status.waitForLoad=true;this.status.waitForPlay=true;this.status.video&&this.internal.flash.jq.css({width:"0px",height:"0px"});this._validString(this.status.media.poster)&&this.internal.poster.jq.show();this.css.jq.videoPlay.length&&this.css.jq.videoPlay.show();this.status.video?this._flash_setVideo(this.status.media):this._flash_setAudio(this.status.media);this._error({type:c.jPlayer.error.URL,
-context:b.src,message:c.jPlayer.errorMsg.URL,hint:c.jPlayer.errorHint.URL});break;case c.jPlayer.event.seeking:this._seeking();this._trigger(a);break;case c.jPlayer.event.seeked:this._seeked();this._trigger(a);break;default:this._trigger(a)}return false},_getFlashStatus:function(a){this.status.seekPercent=a.seekPercent;this.status.currentPercentRelative=a.currentPercentRelative;this.status.currentPercentAbsolute=a.currentPercentAbsolute;this.status.currentTime=a.currentTime;this.status.duration=a.duration},
-_updateButtons:function(a){this.status.paused=!a;if(this.css.jq.play.length&&this.css.jq.pause.length)if(a){this.css.jq.play.hide();this.css.jq.pause.show()}else{this.css.jq.play.show();this.css.jq.pause.hide()}},_updateInterface:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.width(this.status.seekPercent+"%");this.css.jq.playBar.length&&this.css.jq.playBar.width(this.status.currentPercentRelative+"%");this.css.jq.currentTime.length&&this.css.jq.currentTime.text(c.jPlayer.convertTime(this.status.currentTime));
-this.css.jq.duration.length&&this.css.jq.duration.text(c.jPlayer.convertTime(this.status.duration))},_seeking:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.addClass("jp-seeking-bg")},_seeked:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.removeClass("jp-seeking-bg")},setMedia:function(a){var b=this;this._seeked();clearTimeout(this.internal.htmlDlyCmdId);var d=this.html.audio.gate,f=this.html.video.gate,e=false;c.each(this.formats,function(g,i){var j=b.format[i].media==="video";
-c.each(b.solutions,function(n,k){if(b[k].support[i]&&b._validString(a[i])){var l=k==="html";if(j)if(l){b.html.audio.gate=false;b.html.video.gate=true;b.flash.gate=false}else{b.html.audio.gate=false;b.html.video.gate=false;b.flash.gate=true}else if(l){b.html.audio.gate=true;b.html.video.gate=false;b.flash.gate=false}else{b.html.audio.gate=false;b.html.video.gate=false;b.flash.gate=true}if(b.flash.active||b.html.active&&b.flash.gate||d===b.html.audio.gate&&f===b.html.video.gate)b.clearMedia();else if(d!==
-b.html.audio.gate&&f!==b.html.video.gate){b._html_pause();b.status.video&&b.internal.video.jq.css({width:"0px",height:"0px"});b._resetStatus()}if(j){if(l){b._html_setVideo(a);b.html.active=true;b.flash.active=false}else{b._flash_setVideo(a);b.html.active=false;b.flash.active=true}b.css.jq.videoPlay.length&&b.css.jq.videoPlay.show();b.status.video=true}else{if(l){b._html_setAudio(a);b.html.active=true;b.flash.active=false}else{b._flash_setAudio(a);b.html.active=false;b.flash.active=true}b.css.jq.videoPlay.length&&
-b.css.jq.videoPlay.hide();b.status.video=false}e=true;return false}});if(e)return false});if(e){if(this._validString(a.poster))if(this.htmlElement.poster.src!==a.poster)this.htmlElement.poster.src=a.poster;else this.internal.poster.jq.show();else this.internal.poster.jq.hide();this.status.srcSet=true;this.status.media=c.extend({},a);this._updateButtons(false);this._updateInterface()}else{this.status.srcSet&&!this.status.waitForPlay&&this.pause();this.html.audio.gate=false;this.html.video.gate=false;
-this.flash.gate=false;this.html.active=false;this.flash.active=false;this._resetStatus();this._updateInterface();this._updateButtons(false);this.internal.poster.jq.hide();this.html.used&&this.require.video&&this.internal.video.jq.css({width:"0px",height:"0px"});this.flash.used&&this.internal.flash.jq.css({width:"0px",height:"0px"});this._error({type:c.jPlayer.error.NO_SUPPORT,context:"{supplied:'"+this.options.supplied+"'}",message:c.jPlayer.errorMsg.NO_SUPPORT,hint:c.jPlayer.errorHint.NO_SUPPORT})}},
-clearMedia:function(){this._resetStatus();this._updateButtons(false);this.internal.poster.jq.hide();clearTimeout(this.internal.htmlDlyCmdId);if(this.html.active)this._html_clearMedia();else this.flash.active&&this._flash_clearMedia()},load:function(){if(this.status.srcSet)if(this.html.active)this._html_load();else this.flash.active&&this._flash_load();else this._urlNotSetError("load")},play:function(a){a=typeof a==="number"?a:NaN;if(this.status.srcSet)if(this.html.active)this._html_play(a);else this.flash.active&&
-this._flash_play(a);else this._urlNotSetError("play")},videoPlay:function(){this.play()},pause:function(a){a=typeof a==="number"?a:NaN;if(this.status.srcSet)if(this.html.active)this._html_pause(a);else this.flash.active&&this._flash_pause(a);else this._urlNotSetError("pause")},pauseOthers:function(){var a=this;c.each(this.instances,function(b,d){a.element!==d&&d.data("jPlayer").status.srcSet&&d.jPlayer("pause")})},stop:function(){if(this.status.srcSet)if(this.html.active)this._html_pause(0);else this.flash.active&&
-this._flash_pause(0);else this._urlNotSetError("stop")},playHead:function(a){a=this._limitValue(a,0,100);if(this.status.srcSet)if(this.html.active)this._html_playHead(a);else this.flash.active&&this._flash_playHead(a);else this._urlNotSetError("playHead")},mute:function(){this.status.muted=true;this.html.used&&this._html_mute(true);this.flash.used&&this._flash_mute(true);this._updateMute(true);this._updateVolume(0);this._trigger(c.jPlayer.event.volumechange)},unmute:function(){this.status.muted=false;
-this.html.used&&this._html_mute(false);this.flash.used&&this._flash_mute(false);this._updateMute(false);this._updateVolume(this.status.volume);this._trigger(c.jPlayer.event.volumechange)},_updateMute:function(a){if(this.css.jq.mute.length&&this.css.jq.unmute.length)if(a){this.css.jq.mute.hide();this.css.jq.unmute.show()}else{this.css.jq.mute.show();this.css.jq.unmute.hide()}},volume:function(a){a=this._limitValue(a,0,1);this.status.volume=a;this.html.used&&this._html_volume(a);this.flash.used&&this._flash_volume(a);
-this.status.muted||this._updateVolume(a);this._trigger(c.jPlayer.event.volumechange)},volumeBar:function(a){if(!this.status.muted&&this.css.jq.volumeBar){var b=this.css.jq.volumeBar.offset();a=a.pageX-b.left;b=this.css.jq.volumeBar.width();this.volume(a/b)}},volumeBarValue:function(a){this.volumeBar(a)},_updateVolume:function(a){this.css.jq.volumeBarValue.length&&this.css.jq.volumeBarValue.width(a*100+"%")},_volumeFix:function(a){var b=0.0010*Math.random();return a+(a<0.5?b:-b)},_cssSelectorAncestor:function(a,
-b){this.options.cssSelectorAncestor=a;b&&c.each(this.options.cssSelector,function(d,f){self._cssSelector(d,f)})},_cssSelector:function(a,b){var d=this;if(typeof b==="string")if(c.jPlayer.prototype.options.cssSelector[a]){this.css.jq[a]&&this.css.jq[a].length&&this.css.jq[a].unbind(".jPlayer");this.options.cssSelector[a]=b;this.css.cs[a]=this.options.cssSelectorAncestor+" "+b;this.css.jq[a]=b?c(this.css.cs[a]):[];this.css.jq[a].length&&this.css.jq[a].bind("click.jPlayer",function(f){d[a](f);c(this).blur();
-return false});b&&this.css.jq[a].length!==1&&this._warning({type:c.jPlayer.warning.CSS_SELECTOR_COUNT,context:this.css.cs[a],message:c.jPlayer.warningMsg.CSS_SELECTOR_COUNT+this.css.jq[a].length+" found for "+a+" method.",hint:c.jPlayer.warningHint.CSS_SELECTOR_COUNT})}else this._warning({type:c.jPlayer.warning.CSS_SELECTOR_METHOD,context:a,message:c.jPlayer.warningMsg.CSS_SELECTOR_METHOD,hint:c.jPlayer.warningHint.CSS_SELECTOR_METHOD});else this._warning({type:c.jPlayer.warning.CSS_SELECTOR_STRING,
-context:b,message:c.jPlayer.warningMsg.CSS_SELECTOR_STRING,hint:c.jPlayer.warningHint.CSS_SELECTOR_STRING})},seekBar:function(a){if(this.css.jq.seekBar){var b=this.css.jq.seekBar.offset();a=a.pageX-b.left;b=this.css.jq.seekBar.width();this.playHead(100*a/b)}},playBar:function(a){this.seekBar(a)},currentTime:function(){},duration:function(){},option:function(a,b){var d=a;if(arguments.length===0)return c.extend(true,{},this.options);if(typeof a==="string"){var f=a.split(".");if(b===h){for(var e=c.extend(true,
-{},this.options),g=0;g<f.length;g++)if(e[f[g]]!==h)e=e[f[g]];else{this._warning({type:c.jPlayer.warning.OPTION_KEY,context:a,message:c.jPlayer.warningMsg.OPTION_KEY,hint:c.jPlayer.warningHint.OPTION_KEY});return h}return e}e=d={};for(g=0;g<f.length;g++)if(g<f.length-1){e[f[g]]={};e=e[f[g]]}else e[f[g]]=b}this._setOptions(d);return this},_setOptions:function(a){var b=this;c.each(a,function(d,f){b._setOption(d,f)});return this},_setOption:function(a,b){var d=this;switch(a){case "cssSelectorAncestor":this.options[a]=
-b;c.each(d.options.cssSelector,function(f,e){d._cssSelector(f,e)});break;case "cssSelector":c.each(b,function(f,e){d._cssSelector(f,e)})}return this},resize:function(a){this.html.active&&this._resizeHtml(a);this.flash.active&&this._resizeFlash(a);this._trigger(c.jPlayer.event.resize)},_resizePoster:function(){},_resizeHtml:function(){},_resizeFlash:function(a){this.internal.flash.jq.css({width:a.width,height:a.height})},_html_initMedia:function(){this.status.srcSet&&!this.status.waitForPlay&&this.htmlElement.media.pause();
-this.options.preload!=="none"&&this._html_load();this._trigger(c.jPlayer.event.timeupdate)},_html_setAudio:function(a){var b=this;c.each(this.formats,function(d,f){if(b.html.support[f]&&a[f]){b.status.src=a[f];b.status.format[f]=true;b.status.formatType=f;return false}});this.htmlElement.media=this.htmlElement.audio;this._html_initMedia()},_html_setVideo:function(a){var b=this;c.each(this.formats,function(d,f){if(b.html.support[f]&&a[f]){b.status.src=a[f];b.status.format[f]=true;b.status.formatType=
-f;return false}});this.htmlElement.media=this.htmlElement.video;this._html_initMedia()},_html_clearMedia:function(){if(this.htmlElement.media){this.htmlElement.media.id===this.internal.video.id&&this.internal.video.jq.css({width:"0px",height:"0px"});this.htmlElement.media.pause();this.htmlElement.media.src="";c.browser.msie&&Number(c.browser.version)>=9||this.htmlElement.media.load()}},_html_load:function(){if(this.status.waitForLoad){this.status.waitForLoad=false;this.htmlElement.media.src=this.status.src;
-try{this.htmlElement.media.load()}catch(a){}}clearTimeout(this.internal.htmlDlyCmdId)},_html_play:function(a){var b=this;this._html_load();this.htmlElement.media.play();if(!isNaN(a))try{this.htmlElement.media.currentTime=a}catch(d){this.internal.htmlDlyCmdId=setTimeout(function(){b.play(a)},100);return}this._html_checkWaitForPlay()},_html_pause:function(a){var b=this;a>0?this._html_load():clearTimeout(this.internal.htmlDlyCmdId);this.htmlElement.media.pause();if(!isNaN(a))try{this.htmlElement.media.currentTime=
-a}catch(d){this.internal.htmlDlyCmdId=setTimeout(function(){b.pause(a)},100);return}a>0&&this._html_checkWaitForPlay()},_html_playHead:function(a){var b=this;this._html_load();try{if(typeof this.htmlElement.media.seekable==="object"&&this.htmlElement.media.seekable.length>0)this.htmlElement.media.currentTime=a*this.htmlElement.media.seekable.end(this.htmlElement.media.seekable.length-1)/100;else if(this.htmlElement.media.duration>0&&!isNaN(this.htmlElement.media.duration))this.htmlElement.media.currentTime=
-a*this.htmlElement.media.duration/100;else throw"e";}catch(d){this.internal.htmlDlyCmdId=setTimeout(function(){b.playHead(a)},100);return}this.status.waitForLoad||this._html_checkWaitForPlay()},_html_checkWaitForPlay:function(){if(this.status.waitForPlay){this.status.waitForPlay=false;this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide();if(this.status.video){this.internal.poster.jq.hide();this.internal.video.jq.css({width:this.status.width,height:this.status.height})}}},_html_volume:function(a){if(this.html.audio.available)this.htmlElement.audio.volume=
-a;if(this.html.video.available)this.htmlElement.video.volume=a},_html_mute:function(a){if(this.html.audio.available)this.htmlElement.audio.muted=a;if(this.html.video.available)this.htmlElement.video.muted=a},_flash_setAudio:function(a){var b=this;try{c.each(this.formats,function(f,e){if(b.flash.support[e]&&a[e]){switch(e){case "m4a":b._getMovie().fl_setAudio_m4a(a[e]);break;case "mp3":b._getMovie().fl_setAudio_mp3(a[e])}b.status.src=a[e];b.status.format[e]=true;b.status.formatType=e;return false}});
-if(this.options.preload==="auto"){this._flash_load();this.status.waitForLoad=false}}catch(d){this._flashError(d)}},_flash_setVideo:function(a){var b=this;try{c.each(this.formats,function(f,e){if(b.flash.support[e]&&a[e]){switch(e){case "m4v":b._getMovie().fl_setVideo_m4v(a[e])}b.status.src=a[e];b.status.format[e]=true;b.status.formatType=e;return false}});if(this.options.preload==="auto"){this._flash_load();this.status.waitForLoad=false}}catch(d){this._flashError(d)}},_flash_clearMedia:function(){this.internal.flash.jq.css({width:"0px",
-height:"0px"});try{this._getMovie().fl_clearMedia()}catch(a){this._flashError(a)}},_flash_load:function(){try{this._getMovie().fl_load()}catch(a){this._flashError(a)}this.status.waitForLoad=false},_flash_play:function(a){try{this._getMovie().fl_play(a)}catch(b){this._flashError(b)}this.status.waitForLoad=false;this._flash_checkWaitForPlay()},_flash_pause:function(a){try{this._getMovie().fl_pause(a)}catch(b){this._flashError(b)}if(a>0){this.status.waitForLoad=false;this._flash_checkWaitForPlay()}},
-_flash_playHead:function(a){try{this._getMovie().fl_play_head(a)}catch(b){this._flashError(b)}this.status.waitForLoad||this._flash_checkWaitForPlay()},_flash_checkWaitForPlay:function(){if(this.status.waitForPlay){this.status.waitForPlay=false;this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide();if(this.status.video){this.internal.poster.jq.hide();this.internal.flash.jq.css({width:this.status.width,height:this.status.height})}}},_flash_volume:function(a){try{this._getMovie().fl_volume(a)}catch(b){this._flashError(b)}},
-_flash_mute:function(a){try{this._getMovie().fl_mute(a)}catch(b){this._flashError(b)}},_getMovie:function(){return document[this.internal.flash.id]},_checkForFlash:function(a){var b=false,d;if(window.ActiveXObject)try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+a);b=true}catch(f){}else if(navigator.plugins&&navigator.mimeTypes.length>0)if(d=navigator.plugins["Shockwave Flash"])if(navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/,"$1")>=a)b=true;return c.browser.msie&&
-Number(c.browser.version)>=9?false:b},_validString:function(a){return a&&typeof a==="string"},_limitValue:function(a,b,d){return a<b?b:a>d?d:a},_urlNotSetError:function(a){this._error({type:c.jPlayer.error.URL_NOT_SET,context:a,message:c.jPlayer.errorMsg.URL_NOT_SET,hint:c.jPlayer.errorHint.URL_NOT_SET})},_flashError:function(a){this._error({type:c.jPlayer.error.FLASH,context:this.internal.flash.swf,message:c.jPlayer.errorMsg.FLASH+a.message,hint:c.jPlayer.errorHint.FLASH})},_error:function(a){this._trigger(c.jPlayer.event.error,
-a);if(this.options.errorAlerts)this._alert("Error!"+(a.message?"\n\n"+a.message:"")+(a.hint?"\n\n"+a.hint:"")+"\n\nContext: "+a.context)},_warning:function(a){this._trigger(c.jPlayer.event.warning,h,a);if(this.options.errorAlerts)this._alert("Warning!"+(a.message?"\n\n"+a.message:"")+(a.hint?"\n\n"+a.hint:"")+"\n\nContext: "+a.context)},_alert:function(a){alert("jPlayer "+this.version.script+" : id='"+this.internal.self.id+"' : "+a)}};c.jPlayer.error={FLASH:"e_flash",NO_SOLUTION:"e_no_solution",NO_SUPPORT:"e_no_support",
-URL:"e_url",URL_NOT_SET:"e_url_not_set",VERSION:"e_version"};c.jPlayer.errorMsg={FLASH:"jPlayer's Flash fallback is not configured correctly, or a command was issued before the jPlayer Ready event. Details: ",NO_SOLUTION:"No solution can be found by jPlayer in this browser. Neither HTML nor Flash can be used.",NO_SUPPORT:"It is not possible to play any media format provided in setMedia() on this browser using your current options.",URL:"Media URL could not be loaded.",URL_NOT_SET:"Attempt to issue media playback commands, while no media url is set.",
-VERSION:"jPlayer "+c.jPlayer.prototype.version.script+" needs Jplayer.swf version "+c.jPlayer.prototype.version.needFlash+" but found "};c.jPlayer.errorHint={FLASH:"Check your swfPath option and that Jplayer.swf is there.",NO_SOLUTION:"Review the jPlayer options: support and supplied.",NO_SUPPORT:"Video or audio formats defined in the supplied option are missing.",URL:"Check media URL is valid.",URL_NOT_SET:"Use setMedia() to set the media URL.",VERSION:"Update jPlayer files."};c.jPlayer.warning=
-{CSS_SELECTOR_COUNT:"e_css_selector_count",CSS_SELECTOR_METHOD:"e_css_selector_method",CSS_SELECTOR_STRING:"e_css_selector_string",OPTION_KEY:"e_option_key"};c.jPlayer.warningMsg={CSS_SELECTOR_COUNT:"The number of methodCssSelectors found did not equal one: ",CSS_SELECTOR_METHOD:"The methodName given in jPlayer('cssSelector') is not a valid jPlayer method.",CSS_SELECTOR_STRING:"The methodCssSelector given in jPlayer('cssSelector') is not a String or is empty.",OPTION_KEY:"The option requested in jPlayer('option') is undefined."};
-c.jPlayer.warningHint={CSS_SELECTOR_COUNT:"Check your css selector and the ancestor.",CSS_SELECTOR_METHOD:"Check your method name.",CSS_SELECTOR_STRING:"Check your css selector is a string.",OPTION_KEY:"Check your option name."}})(jQuery);
\ No newline at end of file
+(function(b,f){b.fn.jPlayer=function(a){var c=typeof a==="string",d=Array.prototype.slice.call(arguments,1),e=this,a=!c&&d.length?b.extend.apply(null,[!0,a].concat(d)):a;if(c&&a.charAt(0)==="_")return e;c?this.each(function(){var c=b.data(this,"jPlayer"),h=c&&b.isFunction(c[a])?c[a].apply(c,d):c;if(h!==c&&h!==f)return e=h,!1}):this.each(function(){var c=b.data(this,"jPlayer");c?c.option(a||{}):b.data(this,"jPlayer",new b.jPlayer(a,this))});return e};b.jPlayer=function(a,c){if(arguments.length){this.element=
+b(c);this.options=b.extend(!0,{},this.options,a);var d=this;this.element.bind("remove.jPlayer",function(){d.destroy()});this._init()}};b.jPlayer.emulateMethods="load play pause";b.jPlayer.emulateStatus="src readyState networkState currentTime duration paused ended playbackRate";b.jPlayer.emulateOptions="muted volume";b.jPlayer.reservedEvent="ready flashreset resize repeat error warning";b.jPlayer.event={ready:"jPlayer_ready",flashreset:"jPlayer_flashreset",resize:"jPlayer_resize",repeat:"jPlayer_repeat",
+click:"jPlayer_click",error:"jPlayer_error",warning:"jPlayer_warning",loadstart:"jPlayer_loadstart",progress:"jPlayer_progress",suspend:"jPlayer_suspend",abort:"jPlayer_abort",emptied:"jPlayer_emptied",stalled:"jPlayer_stalled",play:"jPlayer_play",pause:"jPlayer_pause",loadedmetadata:"jPlayer_loadedmetadata",loadeddata:"jPlayer_loadeddata",waiting:"jPlayer_waiting",playing:"jPlayer_playing",canplay:"jPlayer_canplay",canplaythrough:"jPlayer_canplaythrough",seeking:"jPlayer_seeking",seeked:"jPlayer_seeked",
+timeupdate:"jPlayer_timeupdate",ended:"jPlayer_ended",ratechange:"jPlayer_ratechange",durationchange:"jPlayer_durationchange",volumechange:"jPlayer_volumechange"};b.jPlayer.htmlEvent="loadstart,abort,emptied,stalled,loadedmetadata,loadeddata,canplay,canplaythrough,ratechange".split(",");b.jPlayer.pause=function(){b.each(b.jPlayer.prototype.instances,function(a,b){b.data("jPlayer").status.srcSet&&b.jPlayer("pause")})};b.jPlayer.timeFormat={showHour:!1,showMin:!0,showSec:!0,padHour:!1,padMin:!0,padSec:!0,
+sepHour:":",sepMin:":",sepSec:""};b.jPlayer.convertTime=function(a){var c=new Date(a*1E3),d=c.getUTCHours(),a=c.getUTCMinutes(),c=c.getUTCSeconds(),d=b.jPlayer.timeFormat.padHour&&d<10?"0"+d:d,a=b.jPlayer.timeFormat.padMin&&a<10?"0"+a:a,c=b.jPlayer.timeFormat.padSec&&c<10?"0"+c:c;return(b.jPlayer.timeFormat.showHour?d+b.jPlayer.timeFormat.sepHour:"")+(b.jPlayer.timeFormat.showMin?a+b.jPlayer.timeFormat.sepMin:"")+(b.jPlayer.timeFormat.showSec?c+b.jPlayer.timeFormat.sepSec:"")};b.jPlayer.uaBrowser=
+function(a){var a=a.toLowerCase(),b=/(opera)(?:.*version)?[ \/]([\w.]+)/,d=/(msie) ([\w.]+)/,e=/(mozilla)(?:.*? rv:([\w.]+))?/,a=/(webkit)[ \/]([\w.]+)/.exec(a)||b.exec(a)||d.exec(a)||a.indexOf("compatible")<0&&e.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}};b.jPlayer.uaPlatform=function(a){var b=a.toLowerCase(),d=/(android)/,e=/(mobile)/,a=/(ipad|iphone|ipod|android|blackberry|playbook|windows ce|webos)/.exec(b)||[],b=/(ipad|playbook)/.exec(b)||!e.exec(b)&&d.exec(b)||[];a[1]&&(a[1]=a[1].replace(/\s/g,
+"_"));return{platform:a[1]||"",tablet:b[1]||""}};b.jPlayer.browser={};b.jPlayer.platform={};var i=b.jPlayer.uaBrowser(navigator.userAgent);if(i.browser)b.jPlayer.browser[i.browser]=!0,b.jPlayer.browser.version=i.version;i=b.jPlayer.uaPlatform(navigator.userAgent);if(i.platform)b.jPlayer.platform[i.platform]=!0,b.jPlayer.platform.mobile=!i.tablet,b.jPlayer.platform.tablet=!!i.tablet;b.jPlayer.prototype={count:0,version:{script:"2.1.0",needFlash:"2.1.0",flash:"unknown"},options:{swfPath:"js",solution:"html, flash",
+supplied:"mp3",preload:"metadata",volume:0.8,muted:!1,wmode:"opaque",backgroundColor:"#000000",cssSelectorAncestor:"#jp_container_1",cssSelector:{videoPlay:".jp-video-play",play:".jp-play",pause:".jp-pause",stop:".jp-stop",seekBar:".jp-seek-bar",playBar:".jp-play-bar",mute:".jp-mute",unmute:".jp-unmute",volumeBar:".jp-volume-bar",volumeBarValue:".jp-volume-bar-value",volumeMax:".jp-volume-max",currentTime:".jp-current-time",duration:".jp-duration",fullScreen:".jp-full-screen",restoreScreen:".jp-restore-screen",
+repeat:".jp-repeat",repeatOff:".jp-repeat-off",gui:".jp-gui",noSolution:".jp-no-solution"},fullScreen:!1,autohide:{restored:!1,full:!0,fadeIn:200,fadeOut:600,hold:1E3},loop:!1,repeat:function(a){a.jPlayer.options.loop?b(this).unbind(".jPlayerRepeat").bind(b.jPlayer.event.ended+".jPlayer.jPlayerRepeat",function(){b(this).jPlayer("play")}):b(this).unbind(".jPlayerRepeat")},nativeVideoControls:{},noFullScreen:{msie:/msie [0-6]/,ipad:/ipad.*?os [0-4]/,iphone:/iphone/,ipod:/ipod/,android_pad:/android [0-3](?!.*?mobile)/,
+android_phone:/android.*?mobile/,blackberry:/blackberry/,windows_ce:/windows ce/,webos:/webos/},noVolume:{ipad:/ipad/,iphone:/iphone/,ipod:/ipod/,android_pad:/android(?!.*?mobile)/,android_phone:/android.*?mobile/,blackberry:/blackberry/,windows_ce:/windows ce/,webos:/webos/,playbook:/playbook/},verticalVolume:!1,idPrefix:"jp",noConflict:"jQuery",emulateHtml:!1,errorAlerts:!1,warningAlerts:!1},optionsAudio:{size:{width:"0px",height:"0px",cssClass:""},sizeFull:{width:"0px",height:"0px",cssClass:""}},
+optionsVideo:{size:{width:"480px",height:"270px",cssClass:"jp-video-270p"},sizeFull:{width:"100%",height:"100%",cssClass:"jp-video-full"}},instances:{},status:{src:"",media:{},paused:!0,format:{},formatType:"",waitForPlay:!0,waitForLoad:!0,srcSet:!1,video:!1,seekPercent:0,currentPercentRelative:0,currentPercentAbsolute:0,currentTime:0,duration:0,readyState:0,networkState:0,playbackRate:1,ended:0},internal:{ready:!1},solution:{html:!0,flash:!0},format:{mp3:{codec:'audio/mpeg; codecs="mp3"',flashCanPlay:!0,
+media:"audio"},m4a:{codec:'audio/mp4; codecs="mp4a.40.2"',flashCanPlay:!0,media:"audio"},oga:{codec:'audio/ogg; codecs="vorbis"',flashCanPlay:!1,media:"audio"},wav:{codec:'audio/wav; codecs="1"',flashCanPlay:!1,media:"audio"},webma:{codec:'audio/webm; codecs="vorbis"',flashCanPlay:!1,media:"audio"},fla:{codec:"audio/x-flv",flashCanPlay:!0,media:"audio"},m4v:{codec:'video/mp4; codecs="avc1.42E01E, mp4a.40.2"',flashCanPlay:!0,media:"video"},ogv:{codec:'video/ogg; codecs="theora, vorbis"',flashCanPlay:!1,
+media:"video"},webmv:{codec:'video/webm; codecs="vorbis, vp8"',flashCanPlay:!1,media:"video"},flv:{codec:"video/x-flv",flashCanPlay:!0,media:"video"}},_init:function(){var a=this;this.element.empty();this.status=b.extend({},this.status);this.internal=b.extend({},this.internal);this.internal.domNode=this.element.get(0);this.formats=[];this.solutions=[];this.require={};this.htmlElement={};this.html={};this.html.audio={};this.html.video={};this.flash={};this.css={};this.css.cs={};this.css.jq={};this.ancestorJq=
+[];this.options.volume=this._limitValue(this.options.volume,0,1);b.each(this.options.supplied.toLowerCase().split(","),function(c,d){var e=d.replace(/^\s+|\s+$/g,"");if(a.format[e]){var f=!1;b.each(a.formats,function(a,b){if(e===b)return f=!0,!1});f||a.formats.push(e)}});b.each(this.options.solution.toLowerCase().split(","),function(c,d){var e=d.replace(/^\s+|\s+$/g,"");if(a.solution[e]){var f=!1;b.each(a.solutions,function(a,b){if(e===b)return f=!0,!1});f||a.solutions.push(e)}});this.internal.instance=
+"jp_"+this.count;this.instances[this.internal.instance]=this.element;this.element.attr("id")||this.element.attr("id",this.options.idPrefix+"_jplayer_"+this.count);this.internal.self=b.extend({},{id:this.element.attr("id"),jq:this.element});this.internal.audio=b.extend({},{id:this.options.idPrefix+"_audio_"+this.count,jq:f});this.internal.video=b.extend({},{id:this.options.idPrefix+"_video_"+this.count,jq:f});this.internal.flash=b.extend({},{id:this.options.idPrefix+"_flash_"+this.count,jq:f,swf:this.options.swfPath+
+(this.options.swfPath.toLowerCase().slice(-4)!==".swf"?(this.options.swfPath&&this.options.swfPath.slice(-1)!=="/"?"/":"")+"Jplayer.swf":"")});this.internal.poster=b.extend({},{id:this.options.idPrefix+"_poster_"+this.count,jq:f});b.each(b.jPlayer.event,function(b,c){a.options[b]!==f&&(a.element.bind(c+".jPlayer",a.options[b]),a.options[b]=f)});this.require.audio=!1;this.require.video=!1;b.each(this.formats,function(b,c){a.require[a.format[c].media]=!0});this.options=this.require.video?b.extend(!0,
+{},this.optionsVideo,this.options):b.extend(!0,{},this.optionsAudio,this.options);this._setSize();this.status.nativeVideoControls=this._uaBlocklist(this.options.nativeVideoControls);this.status.noFullScreen=this._uaBlocklist(this.options.noFullScreen);this.status.noVolume=this._uaBlocklist(this.options.noVolume);this._restrictNativeVideoControls();this.htmlElement.poster=document.createElement("img");this.htmlElement.poster.id=this.internal.poster.id;this.htmlElement.poster.onload=function(){(!a.status.video||
+a.status.waitForPlay)&&a.internal.poster.jq.show()};this.element.append(this.htmlElement.poster);this.internal.poster.jq=b("#"+this.internal.poster.id);this.internal.poster.jq.css({width:this.status.width,height:this.status.height});this.internal.poster.jq.hide();this.internal.poster.jq.bind("click.jPlayer",function(){a._trigger(b.jPlayer.event.click)});this.html.audio.available=!1;if(this.require.audio)this.htmlElement.audio=document.createElement("audio"),this.htmlElement.audio.id=this.internal.audio.id,
+this.html.audio.available=!!this.htmlElement.audio.canPlayType&&this._testCanPlayType(this.htmlElement.audio);this.html.video.available=!1;if(this.require.video)this.htmlElement.video=document.createElement("video"),this.htmlElement.video.id=this.internal.video.id,this.html.video.available=!!this.htmlElement.video.canPlayType&&this._testCanPlayType(this.htmlElement.video);this.flash.available=this._checkForFlash(10);this.html.canPlay={};this.flash.canPlay={};b.each(this.formats,function(b,c){a.html.canPlay[c]=
+a.html[a.format[c].media].available&&""!==a.htmlElement[a.format[c].media].canPlayType(a.format[c].codec);a.flash.canPlay[c]=a.format[c].flashCanPlay&&a.flash.available});this.html.desired=!1;this.flash.desired=!1;b.each(this.solutions,function(c,d){if(c===0)a[d].desired=!0;else{var e=!1,f=!1;b.each(a.formats,function(b,c){a[a.solutions[0]].canPlay[c]&&(a.format[c].media==="video"?f=!0:e=!0)});a[d].desired=a.require.audio&&!e||a.require.video&&!f}});this.html.support={};this.flash.support={};b.each(this.formats,
+function(b,c){a.html.support[c]=a.html.canPlay[c]&&a.html.desired;a.flash.support[c]=a.flash.canPlay[c]&&a.flash.desired});this.html.used=!1;this.flash.used=!1;b.each(this.solutions,function(c,d){b.each(a.formats,function(b,c){if(a[d].support[c])return a[d].used=!0,!1})});this._resetActive();this._resetGate();this._cssSelectorAncestor(this.options.cssSelectorAncestor);!this.html.used&&!this.flash.used?(this._error({type:b.jPlayer.error.NO_SOLUTION,context:"{solution:'"+this.options.solution+"', supplied:'"+
+this.options.supplied+"'}",message:b.jPlayer.errorMsg.NO_SOLUTION,hint:b.jPlayer.errorHint.NO_SOLUTION}),this.css.jq.noSolution.length&&this.css.jq.noSolution.show()):this.css.jq.noSolution.length&&this.css.jq.noSolution.hide();if(this.flash.used){var c,d="jQuery="+encodeURI(this.options.noConflict)+"&id="+encodeURI(this.internal.self.id)+"&vol="+this.options.volume+"&muted="+this.options.muted;if(b.browser.msie&&Number(b.browser.version)<=8){d=['<param name="movie" value="'+this.internal.flash.swf+
+'" />','<param name="FlashVars" value="'+d+'" />','<param name="allowScriptAccess" value="always" />','<param name="bgcolor" value="'+this.options.backgroundColor+'" />','<param name="wmode" value="'+this.options.wmode+'" />'];c=document.createElement('<object id="'+this.internal.flash.id+'" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="0" height="0"></object>');for(var e=0;e<d.length;e++)c.appendChild(document.createElement(d[e]))}else e=function(a,b,c){var d=document.createElement("param");
+d.setAttribute("name",b);d.setAttribute("value",c);a.appendChild(d)},c=document.createElement("object"),c.setAttribute("id",this.internal.flash.id),c.setAttribute("data",this.internal.flash.swf),c.setAttribute("type","application/x-shockwave-flash"),c.setAttribute("width","1"),c.setAttribute("height","1"),e(c,"flashvars",d),e(c,"allowscriptaccess","always"),e(c,"bgcolor",this.options.backgroundColor),e(c,"wmode",this.options.wmode);this.element.append(c);this.internal.flash.jq=b(c)}if(this.html.used){if(this.html.audio.available)this._addHtmlEventListeners(this.htmlElement.audio,
+this.html.audio),this.element.append(this.htmlElement.audio),this.internal.audio.jq=b("#"+this.internal.audio.id);if(this.html.video.available)this._addHtmlEventListeners(this.htmlElement.video,this.html.video),this.element.append(this.htmlElement.video),this.internal.video.jq=b("#"+this.internal.video.id),this.status.nativeVideoControls?this.internal.video.jq.css({width:this.status.width,height:this.status.height}):this.internal.video.jq.css({width:"0px",height:"0px"}),this.internal.video.jq.bind("click.jPlayer",
+function(){a._trigger(b.jPlayer.event.click)})}this.options.emulateHtml&&this._emulateHtmlBridge();this.html.used&&!this.flash.used&&setTimeout(function(){a.internal.ready=!0;a.version.flash="n/a";a._trigger(b.jPlayer.event.repeat);a._trigger(b.jPlayer.event.ready)},100);this._updateNativeVideoControls();this._updateInterface();this._updateButtons(!1);this._updateAutohide();this._updateVolume(this.options.volume);this._updateMute(this.options.muted);this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide();
+b.jPlayer.prototype.count++},destroy:function(){this.clearMedia();this._removeUiClass();this.css.jq.currentTime.length&&this.css.jq.currentTime.text("");this.css.jq.duration.length&&this.css.jq.duration.text("");b.each(this.css.jq,function(a,b){b.length&&b.unbind(".jPlayer")});this.internal.poster.jq.unbind(".jPlayer");this.internal.video.jq&&this.internal.video.jq.unbind(".jPlayer");this.options.emulateHtml&&this._destroyHtmlBridge();this.element.removeData("jPlayer");this.element.unbind(".jPlayer");
+this.element.empty();delete this.instances[this.internal.instance]},enable:function(){},disable:function(){},_testCanPlayType:function(a){try{return a.canPlayType(this.format.mp3.codec),!0}catch(b){return!1}},_uaBlocklist:function(a){var c=navigator.userAgent.toLowerCase(),d=!1;b.each(a,function(a,b){if(b&&b.test(c))return d=!0,!1});return d},_restrictNativeVideoControls:function(){if(this.require.audio&&this.status.nativeVideoControls)this.status.nativeVideoControls=!1,this.status.noFullScreen=!0},
+_updateNativeVideoControls:function(){if(this.html.video.available&&this.html.used)this.htmlElement.video.controls=this.status.nativeVideoControls,this._updateAutohide(),this.status.nativeVideoControls&&this.require.video?(this.internal.poster.jq.hide(),this.internal.video.jq.css({width:this.status.width,height:this.status.height})):this.status.waitForPlay&&this.status.video&&(this.internal.poster.jq.show(),this.internal.video.jq.css({width:"0px",height:"0px"}))},_addHtmlEventListeners:function(a,
+c){var d=this;a.preload=this.options.preload;a.muted=this.options.muted;a.volume=this.options.volume;a.addEventListener("progress",function(){c.gate&&(d._getHtmlStatus(a),d._updateInterface(),d._trigger(b.jPlayer.event.progress))},!1);a.addEventListener("timeupdate",function(){c.gate&&(d._getHtmlStatus(a),d._updateInterface(),d._trigger(b.jPlayer.event.timeupdate))},!1);a.addEventListener("durationchange",function(){if(c.gate)d.status.duration=this.duration,d._getHtmlStatus(a),d._updateInterface(),
+d._trigger(b.jPlayer.event.durationchange)},!1);a.addEventListener("play",function(){c.gate&&(d._updateButtons(!0),d._html_checkWaitForPlay(),d._trigger(b.jPlayer.event.play))},!1);a.addEventListener("playing",function(){c.gate&&(d._updateButtons(!0),d._seeked(),d._trigger(b.jPlayer.event.playing))},!1);a.addEventListener("pause",function(){c.gate&&(d._updateButtons(!1),d._trigger(b.jPlayer.event.pause))},!1);a.addEventListener("waiting",function(){c.gate&&(d._seeking(),d._trigger(b.jPlayer.event.waiting))},
+!1);a.addEventListener("seeking",function(){c.gate&&(d._seeking(),d._trigger(b.jPlayer.event.seeking))},!1);a.addEventListener("seeked",function(){c.gate&&(d._seeked(),d._trigger(b.jPlayer.event.seeked))},!1);a.addEventListener("volumechange",function(){if(c.gate)d.options.volume=a.volume,d.options.muted=a.muted,d._updateMute(),d._updateVolume(),d._trigger(b.jPlayer.event.volumechange)},!1);a.addEventListener("suspend",function(){c.gate&&(d._seeked(),d._trigger(b.jPlayer.event.suspend))},!1);a.addEventListener("ended",
+function(){if(c.gate){if(!b.jPlayer.browser.webkit)d.htmlElement.media.currentTime=0;d.htmlElement.media.pause();d._updateButtons(!1);d._getHtmlStatus(a,!0);d._updateInterface();d._trigger(b.jPlayer.event.ended)}},!1);a.addEventListener("error",function(){if(c.gate&&(d._updateButtons(!1),d._seeked(),d.status.srcSet))clearTimeout(d.internal.htmlDlyCmdId),d.status.waitForLoad=!0,d.status.waitForPlay=!0,d.status.video&&!d.status.nativeVideoControls&&d.internal.video.jq.css({width:"0px",height:"0px"}),
+d._validString(d.status.media.poster)&&!d.status.nativeVideoControls&&d.internal.poster.jq.show(),d.css.jq.videoPlay.length&&d.css.jq.videoPlay.show(),d._error({type:b.jPlayer.error.URL,context:d.status.src,message:b.jPlayer.errorMsg.URL,hint:b.jPlayer.errorHint.URL})},!1);b.each(b.jPlayer.htmlEvent,function(e,g){a.addEventListener(this,function(){c.gate&&d._trigger(b.jPlayer.event[g])},!1)})},_getHtmlStatus:function(a,b){var d=0,e=0,g=0,f=0;if(a.duration)this.status.duration=a.duration;d=a.currentTime;
+e=this.status.duration>0?100*d/this.status.duration:0;typeof a.seekable==="object"&&a.seekable.length>0?(g=this.status.duration>0?100*a.seekable.end(a.seekable.length-1)/this.status.duration:100,f=100*a.currentTime/a.seekable.end(a.seekable.length-1)):(g=100,f=e);b&&(e=f=d=0);this.status.seekPercent=g;this.status.currentPercentRelative=f;this.status.currentPercentAbsolute=e;this.status.currentTime=d;this.status.readyState=a.readyState;this.status.networkState=a.networkState;this.status.playbackRate=
+a.playbackRate;this.status.ended=a.ended},_resetStatus:function(){this.status=b.extend({},this.status,b.jPlayer.prototype.status)},_trigger:function(a,c,d){a=b.Event(a);a.jPlayer={};a.jPlayer.version=b.extend({},this.version);a.jPlayer.options=b.extend(!0,{},this.options);a.jPlayer.status=b.extend(!0,{},this.status);a.jPlayer.html=b.extend(!0,{},this.html);a.jPlayer.flash=b.extend(!0,{},this.flash);if(c)a.jPlayer.error=b.extend({},c);if(d)a.jPlayer.warning=b.extend({},d);this.element.trigger(a)},
+jPlayerFlashEvent:function(a,c){if(a===b.jPlayer.event.ready)if(this.internal.ready){if(this.flash.gate){if(this.status.srcSet){var d=this.status.currentTime,e=this.status.paused;this.setMedia(this.status.media);d>0&&(e?this.pause(d):this.play(d))}this._trigger(b.jPlayer.event.flashreset)}}else this.internal.ready=!0,this.internal.flash.jq.css({width:"0px",height:"0px"}),this.version.flash=c.version,this.version.needFlash!==this.version.flash&&this._error({type:b.jPlayer.error.VERSION,context:this.version.flash,
+message:b.jPlayer.errorMsg.VERSION+this.version.flash,hint:b.jPlayer.errorHint.VERSION}),this._trigger(b.jPlayer.event.repeat),this._trigger(a);if(this.flash.gate)switch(a){case b.jPlayer.event.progress:this._getFlashStatus(c);this._updateInterface();this._trigger(a);break;case b.jPlayer.event.timeupdate:this._getFlashStatus(c);this._updateInterface();this._trigger(a);break;case b.jPlayer.event.play:this._seeked();this._updateButtons(!0);this._trigger(a);break;case b.jPlayer.event.pause:this._updateButtons(!1);
+this._trigger(a);break;case b.jPlayer.event.ended:this._updateButtons(!1);this._trigger(a);break;case b.jPlayer.event.click:this._trigger(a);break;case b.jPlayer.event.error:this.status.waitForLoad=!0;this.status.waitForPlay=!0;this.status.video&&this.internal.flash.jq.css({width:"0px",height:"0px"});this._validString(this.status.media.poster)&&this.internal.poster.jq.show();this.css.jq.videoPlay.length&&this.status.video&&this.css.jq.videoPlay.show();this.status.video?this._flash_setVideo(this.status.media):
+this._flash_setAudio(this.status.media);this._updateButtons(!1);this._error({type:b.jPlayer.error.URL,context:c.src,message:b.jPlayer.errorMsg.URL,hint:b.jPlayer.errorHint.URL});break;case b.jPlayer.event.seeking:this._seeking();this._trigger(a);break;case b.jPlayer.event.seeked:this._seeked();this._trigger(a);break;case b.jPlayer.event.ready:break;default:this._trigger(a)}return!1},_getFlashStatus:function(a){this.status.seekPercent=a.seekPercent;this.status.currentPercentRelative=a.currentPercentRelative;
+this.status.currentPercentAbsolute=a.currentPercentAbsolute;this.status.currentTime=a.currentTime;this.status.duration=a.duration;this.status.readyState=4;this.status.networkState=0;this.status.playbackRate=1;this.status.ended=!1},_updateButtons:function(a){if(a!==f)this.status.paused=!a,this.css.jq.play.length&&this.css.jq.pause.length&&(a?(this.css.jq.play.hide(),this.css.jq.pause.show()):(this.css.jq.play.show(),this.css.jq.pause.hide()));this.css.jq.restoreScreen.length&&this.css.jq.fullScreen.length&&
+(this.status.noFullScreen?(this.css.jq.fullScreen.hide(),this.css.jq.restoreScreen.hide()):this.options.fullScreen?(this.css.jq.fullScreen.hide(),this.css.jq.restoreScreen.show()):(this.css.jq.fullScreen.show(),this.css.jq.restoreScreen.hide()));this.css.jq.repeat.length&&this.css.jq.repeatOff.length&&(this.options.loop?(this.css.jq.repeat.hide(),this.css.jq.repeatOff.show()):(this.css.jq.repeat.show(),this.css.jq.repeatOff.hide()))},_updateInterface:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.width(this.status.seekPercent+
+"%");this.css.jq.playBar.length&&this.css.jq.playBar.width(this.status.currentPercentRelative+"%");this.css.jq.currentTime.length&&this.css.jq.currentTime.text(b.jPlayer.convertTime(this.status.currentTime));this.css.jq.duration.length&&this.css.jq.duration.text(b.jPlayer.convertTime(this.status.duration))},_seeking:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.addClass("jp-seeking-bg")},_seeked:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.removeClass("jp-seeking-bg")},
+_resetGate:function(){this.html.audio.gate=!1;this.html.video.gate=!1;this.flash.gate=!1},_resetActive:function(){this.html.active=!1;this.flash.active=!1},setMedia:function(a){var c=this,d=!1,e=this.status.media.poster!==a.poster;this._resetMedia();this._resetGate();this._resetActive();b.each(this.formats,function(e,f){var i=c.format[f].media==="video";b.each(c.solutions,function(b,e){if(c[e].support[f]&&c._validString(a[f])){var g=e==="html";i?(g?(c.html.video.gate=!0,c._html_setVideo(a),c.html.active=
+!0):(c.flash.gate=!0,c._flash_setVideo(a),c.flash.active=!0),c.css.jq.videoPlay.length&&c.css.jq.videoPlay.show(),c.status.video=!0):(g?(c.html.audio.gate=!0,c._html_setAudio(a),c.html.active=!0):(c.flash.gate=!0,c._flash_setAudio(a),c.flash.active=!0),c.css.jq.videoPlay.length&&c.css.jq.videoPlay.hide(),c.status.video=!1);d=!0;return!1}});if(d)return!1});if(d){if((!this.status.nativeVideoControls||!this.html.video.gate)&&this._validString(a.poster))e?this.htmlElement.poster.src=a.poster:this.internal.poster.jq.show();
+this.status.srcSet=!0;this.status.media=b.extend({},a);this._updateButtons(!1);this._updateInterface()}else this._error({type:b.jPlayer.error.NO_SUPPORT,context:"{supplied:'"+this.options.supplied+"'}",message:b.jPlayer.errorMsg.NO_SUPPORT,hint:b.jPlayer.errorHint.NO_SUPPORT})},_resetMedia:function(){this._resetStatus();this._updateButtons(!1);this._updateInterface();this._seeked();this.internal.poster.jq.hide();clearTimeout(this.internal.htmlDlyCmdId);this.html.active?this._html_resetMedia():this.flash.active&&
+this._flash_resetMedia()},clearMedia:function(){this._resetMedia();this.html.active?this._html_clearMedia():this.flash.active&&this._flash_clearMedia();this._resetGate();this._resetActive()},load:function(){this.status.srcSet?this.html.active?this._html_load():this.flash.active&&this._flash_load():this._urlNotSetError("load")},play:function(a){a=typeof a==="number"?a:NaN;this.status.srcSet?this.html.active?this._html_play(a):this.flash.active&&this._flash_play(a):this._urlNotSetError("play")},videoPlay:function(){this.play()},
+pause:function(a){a=typeof a==="number"?a:NaN;this.status.srcSet?this.html.active?this._html_pause(a):this.flash.active&&this._flash_pause(a):this._urlNotSetError("pause")},pauseOthers:function(){var a=this;b.each(this.instances,function(b,d){a.element!==d&&d.data("jPlayer").status.srcSet&&d.jPlayer("pause")})},stop:function(){this.status.srcSet?this.html.active?this._html_pause(0):this.flash.active&&this._flash_pause(0):this._urlNotSetError("stop")},playHead:function(a){a=this._limitValue(a,0,100);
+this.status.srcSet?this.html.active?this._html_playHead(a):this.flash.active&&this._flash_playHead(a):this._urlNotSetError("playHead")},_muted:function(a){this.options.muted=a;this.html.used&&this._html_mute(a);this.flash.used&&this._flash_mute(a);!this.html.video.gate&&!this.html.audio.gate&&(this._updateMute(a),this._updateVolume(this.options.volume),this._trigger(b.jPlayer.event.volumechange))},mute:function(a){a=a===f?!0:!!a;this._muted(a)},unmute:function(a){a=a===f?!0:!!a;this._muted(!a)},_updateMute:function(a){if(a===
+f)a=this.options.muted;this.css.jq.mute.length&&this.css.jq.unmute.length&&(this.status.noVolume?(this.css.jq.mute.hide(),this.css.jq.unmute.hide()):a?(this.css.jq.mute.hide(),this.css.jq.unmute.show()):(this.css.jq.mute.show(),this.css.jq.unmute.hide()))},volume:function(a){a=this._limitValue(a,0,1);this.options.volume=a;this.html.used&&this._html_volume(a);this.flash.used&&this._flash_volume(a);!this.html.video.gate&&!this.html.audio.gate&&(this._updateVolume(a),this._trigger(b.jPlayer.event.volumechange))},
+volumeBar:function(a){if(this.css.jq.volumeBar.length){var b=this.css.jq.volumeBar.offset(),d=a.pageX-b.left,e=this.css.jq.volumeBar.width(),a=this.css.jq.volumeBar.height()-a.pageY+b.top,b=this.css.jq.volumeBar.height();this.options.verticalVolume?this.volume(a/b):this.volume(d/e)}this.options.muted&&this._muted(!1)},volumeBarValue:function(a){this.volumeBar(a)},_updateVolume:function(a){if(a===f)a=this.options.volume;a=this.options.muted?0:a;this.status.noVolume?(this.css.jq.volumeBar.length&&this.css.jq.volumeBar.hide(),
+this.css.jq.volumeBarValue.length&&this.css.jq.volumeBarValue.hide(),this.css.jq.volumeMax.length&&this.css.jq.volumeMax.hide()):(this.css.jq.volumeBar.length&&this.css.jq.volumeBar.show(),this.css.jq.volumeBarValue.length&&(this.css.jq.volumeBarValue.show(),this.css.jq.volumeBarValue[this.options.verticalVolume?"height":"width"](a*100+"%")),this.css.jq.volumeMax.length&&this.css.jq.volumeMax.show())},volumeMax:function(){this.volume(1);this.options.muted&&this._muted(!1)},_cssSelectorAncestor:function(a){var c=
+this;this.options.cssSelectorAncestor=a;this._removeUiClass();this.ancestorJq=a?b(a):[];a&&this.ancestorJq.length!==1&&this._warning({type:b.jPlayer.warning.CSS_SELECTOR_COUNT,context:a,message:b.jPlayer.warningMsg.CSS_SELECTOR_COUNT+this.ancestorJq.length+" found for cssSelectorAncestor.",hint:b.jPlayer.warningHint.CSS_SELECTOR_COUNT});this._addUiClass();b.each(this.options.cssSelector,function(a,b){c._cssSelector(a,b)})},_cssSelector:function(a,c){var d=this;typeof c==="string"?b.jPlayer.prototype.options.cssSelector[a]?
+(this.css.jq[a]&&this.css.jq[a].length&&this.css.jq[a].unbind(".jPlayer"),this.options.cssSelector[a]=c,this.css.cs[a]=this.options.cssSelectorAncestor+" "+c,this.css.jq[a]=c?b(this.css.cs[a]):[],this.css.jq[a].length&&this.css.jq[a].bind("click.jPlayer",function(c){d[a](c);b(this).blur();return!1}),c&&this.css.jq[a].length!==1&&this._warning({type:b.jPlayer.warning.CSS_SELECTOR_COUNT,context:this.css.cs[a],message:b.jPlayer.warningMsg.CSS_SELECTOR_COUNT+this.css.jq[a].length+" found for "+a+" method.",
+hint:b.jPlayer.warningHint.CSS_SELECTOR_COUNT})):this._warning({type:b.jPlayer.warning.CSS_SELECTOR_METHOD,context:a,message:b.jPlayer.warningMsg.CSS_SELECTOR_METHOD,hint:b.jPlayer.warningHint.CSS_SELECTOR_METHOD}):this._warning({type:b.jPlayer.warning.CSS_SELECTOR_STRING,context:c,message:b.jPlayer.warningMsg.CSS_SELECTOR_STRING,hint:b.jPlayer.warningHint.CSS_SELECTOR_STRING})},seekBar:function(a){if(this.css.jq.seekBar){var b=this.css.jq.seekBar.offset(),a=a.pageX-b.left,b=this.css.jq.seekBar.width();
+this.playHead(100*a/b)}},playBar:function(a){this.seekBar(a)},repeat:function(){this._loop(!0)},repeatOff:function(){this._loop(!1)},_loop:function(a){if(this.options.loop!==a)this.options.loop=a,this._updateButtons(),this._trigger(b.jPlayer.event.repeat)},currentTime:function(){},duration:function(){},gui:function(){},noSolution:function(){},option:function(a,c){var d=a;if(arguments.length===0)return b.extend(!0,{},this.options);if(typeof a==="string"){var e=a.split(".");if(c===f){for(var d=b.extend(!0,
+{},this.options),g=0;g<e.length;g++)if(d[e[g]]!==f)d=d[e[g]];else return this._warning({type:b.jPlayer.warning.OPTION_KEY,context:a,message:b.jPlayer.warningMsg.OPTION_KEY,hint:b.jPlayer.warningHint.OPTION_KEY}),f;return d}for(var g=d={},h=0;h<e.length;h++)h<e.length-1?(g[e[h]]={},g=g[e[h]]):g[e[h]]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,c){var d=this;switch(a){case "volume":this.volume(c);
+break;case "muted":this._muted(c);break;case "cssSelectorAncestor":this._cssSelectorAncestor(c);break;case "cssSelector":b.each(c,function(a,b){d._cssSelector(a,b)});break;case "fullScreen":this.options[a]!==c&&(this._removeUiClass(),this.options[a]=c,this._refreshSize());break;case "size":!this.options.fullScreen&&this.options[a].cssClass!==c.cssClass&&this._removeUiClass();this.options[a]=b.extend({},this.options[a],c);this._refreshSize();break;case "sizeFull":this.options.fullScreen&&this.options[a].cssClass!==
+c.cssClass&&this._removeUiClass();this.options[a]=b.extend({},this.options[a],c);this._refreshSize();break;case "autohide":this.options[a]=b.extend({},this.options[a],c);this._updateAutohide();break;case "loop":this._loop(c);break;case "nativeVideoControls":this.options[a]=b.extend({},this.options[a],c);this.status.nativeVideoControls=this._uaBlocklist(this.options.nativeVideoControls);this._restrictNativeVideoControls();this._updateNativeVideoControls();break;case "noFullScreen":this.options[a]=
+b.extend({},this.options[a],c);this.status.nativeVideoControls=this._uaBlocklist(this.options.nativeVideoControls);this.status.noFullScreen=this._uaBlocklist(this.options.noFullScreen);this._restrictNativeVideoControls();this._updateButtons();break;case "noVolume":this.options[a]=b.extend({},this.options[a],c);this.status.noVolume=this._uaBlocklist(this.options.noVolume);this._updateVolume();this._updateMute();break;case "emulateHtml":this.options[a]!==c&&((this.options[a]=c)?this._emulateHtmlBridge():
+this._destroyHtmlBridge())}return this},_refreshSize:function(){this._setSize();this._addUiClass();this._updateSize();this._updateButtons();this._updateAutohide();this._trigger(b.jPlayer.event.resize)},_setSize:function(){this.options.fullScreen?(this.status.width=this.options.sizeFull.width,this.status.height=this.options.sizeFull.height,this.status.cssClass=this.options.sizeFull.cssClass):(this.status.width=this.options.size.width,this.status.height=this.options.size.height,this.status.cssClass=
+this.options.size.cssClass);this.element.css({width:this.status.width,height:this.status.height})},_addUiClass:function(){this.ancestorJq.length&&this.ancestorJq.addClass(this.status.cssClass)},_removeUiClass:function(){this.ancestorJq.length&&this.ancestorJq.removeClass(this.status.cssClass)},_updateSize:function(){this.internal.poster.jq.css({width:this.status.width,height:this.status.height});!this.status.waitForPlay&&this.html.active&&this.status.video||this.html.video.available&&this.html.used&&
+this.status.nativeVideoControls?this.internal.video.jq.css({width:this.status.width,height:this.status.height}):!this.status.waitForPlay&&this.flash.active&&this.status.video&&this.internal.flash.jq.css({width:this.status.width,height:this.status.height})},_updateAutohide:function(){var a=this,b=function(){a.css.jq.gui.fadeIn(a.options.autohide.fadeIn,function(){clearTimeout(a.internal.autohideId);a.internal.autohideId=setTimeout(function(){a.css.jq.gui.fadeOut(a.options.autohide.fadeOut)},a.options.autohide.hold)})};
+this.css.jq.gui.length&&(this.css.jq.gui.stop(!0,!0),clearTimeout(this.internal.autohideId),this.element.unbind(".jPlayerAutohide"),this.css.jq.gui.unbind(".jPlayerAutohide"),this.status.nativeVideoControls?this.css.jq.gui.hide():this.options.fullScreen&&this.options.autohide.full||!this.options.fullScreen&&this.options.autohide.restored?(this.element.bind("mousemove.jPlayer.jPlayerAutohide",b),this.css.jq.gui.bind("mousemove.jPlayer.jPlayerAutohide",b),this.css.jq.gui.hide()):this.css.jq.gui.show())},
+fullScreen:function(){this._setOption("fullScreen",!0)},restoreScreen:function(){this._setOption("fullScreen",!1)},_html_initMedia:function(){this.htmlElement.media.src=this.status.src;this.options.preload!=="none"&&this._html_load();this._trigger(b.jPlayer.event.timeupdate)},_html_setAudio:function(a){var c=this;b.each(this.formats,function(b,e){if(c.html.support[e]&&a[e])return c.status.src=a[e],c.status.format[e]=!0,c.status.formatType=e,!1});this.htmlElement.media=this.htmlElement.audio;this._html_initMedia()},
+_html_setVideo:function(a){var c=this;b.each(this.formats,function(b,e){if(c.html.support[e]&&a[e])return c.status.src=a[e],c.status.format[e]=!0,c.status.formatType=e,!1});if(this.status.nativeVideoControls)this.htmlElement.video.poster=this._validString(a.poster)?a.poster:"";this.htmlElement.media=this.htmlElement.video;this._html_initMedia()},_html_resetMedia:function(){this.htmlElement.media&&(this.htmlElement.media.id===this.internal.video.id&&!this.status.nativeVideoControls&&this.internal.video.jq.css({width:"0px",
+height:"0px"}),this.htmlElement.media.pause())},_html_clearMedia:function(){if(this.htmlElement.media)this.htmlElement.media.src="",this.htmlElement.media.load()},_html_load:function(){if(this.status.waitForLoad)this.status.waitForLoad=!1,this.htmlElement.media.load();clearTimeout(this.internal.htmlDlyCmdId)},_html_play:function(a){var b=this;this._html_load();this.htmlElement.media.play();if(!isNaN(a))try{this.htmlElement.media.currentTime=a}catch(d){this.internal.htmlDlyCmdId=setTimeout(function(){b.play(a)},
+100);return}this._html_checkWaitForPlay()},_html_pause:function(a){var b=this;a>0?this._html_load():clearTimeout(this.internal.htmlDlyCmdId);this.htmlElement.media.pause();if(!isNaN(a))try{this.htmlElement.media.currentTime=a}catch(d){this.internal.htmlDlyCmdId=setTimeout(function(){b.pause(a)},100);return}a>0&&this._html_checkWaitForPlay()},_html_playHead:function(a){var b=this;this._html_load();try{if(typeof this.htmlElement.media.seekable==="object"&&this.htmlElement.media.seekable.length>0)this.htmlElement.media.currentTime=
+a*this.htmlElement.media.seekable.end(this.htmlElement.media.seekable.length-1)/100;else if(this.htmlElement.media.duration>0&&!isNaN(this.htmlElement.media.duration))this.htmlElement.media.currentTime=a*this.htmlElement.media.duration/100;else throw"e";}catch(d){this.internal.htmlDlyCmdId=setTimeout(function(){b.playHead(a)},100);return}this.status.waitForLoad||this._html_checkWaitForPlay()},_html_checkWaitForPlay:function(){if(this.status.waitForPlay)this.status.waitForPlay=!1,this.css.jq.videoPlay.length&&
+this.css.jq.videoPlay.hide(),this.status.video&&(this.internal.poster.jq.hide(),this.internal.video.jq.css({width:this.status.width,height:this.status.height}))},_html_volume:function(a){if(this.html.audio.available)this.htmlElement.audio.volume=a;if(this.html.video.available)this.htmlElement.video.volume=a},_html_mute:function(a){if(this.html.audio.available)this.htmlElement.audio.muted=a;if(this.html.video.available)this.htmlElement.video.muted=a},_flash_setAudio:function(a){var c=this;try{if(b.each(this.formats,
+function(b,d){if(c.flash.support[d]&&a[d]){switch(d){case "m4a":case "fla":c._getMovie().fl_setAudio_m4a(a[d]);break;case "mp3":c._getMovie().fl_setAudio_mp3(a[d])}c.status.src=a[d];c.status.format[d]=!0;c.status.formatType=d;return!1}}),this.options.preload==="auto")this._flash_load(),this.status.waitForLoad=!1}catch(d){this._flashError(d)}},_flash_setVideo:function(a){var c=this;try{if(b.each(this.formats,function(b,d){if(c.flash.support[d]&&a[d]){switch(d){case "m4v":case "flv":c._getMovie().fl_setVideo_m4v(a[d])}c.status.src=
+a[d];c.status.format[d]=!0;c.status.formatType=d;return!1}}),this.options.preload==="auto")this._flash_load(),this.status.waitForLoad=!1}catch(d){this._flashError(d)}},_flash_resetMedia:function(){this.internal.flash.jq.css({width:"0px",height:"0px"});this._flash_pause(NaN)},_flash_clearMedia:function(){try{this._getMovie().fl_clearMedia()}catch(a){this._flashError(a)}},_flash_load:function(){try{this._getMovie().fl_load()}catch(a){this._flashError(a)}this.status.waitForLoad=!1},_flash_play:function(a){try{this._getMovie().fl_play(a)}catch(b){this._flashError(b)}this.status.waitForLoad=
+!1;this._flash_checkWaitForPlay()},_flash_pause:function(a){try{this._getMovie().fl_pause(a)}catch(b){this._flashError(b)}if(a>0)this.status.waitForLoad=!1,this._flash_checkWaitForPlay()},_flash_playHead:function(a){try{this._getMovie().fl_play_head(a)}catch(b){this._flashError(b)}this.status.waitForLoad||this._flash_checkWaitForPlay()},_flash_checkWaitForPlay:function(){if(this.status.waitForPlay)this.status.waitForPlay=!1,this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide(),this.status.video&&
+(this.internal.poster.jq.hide(),this.internal.flash.jq.css({width:this.status.width,height:this.status.height}))},_flash_volume:function(a){try{this._getMovie().fl_volume(a)}catch(b){this._flashError(b)}},_flash_mute:function(a){try{this._getMovie().fl_mute(a)}catch(b){this._flashError(b)}},_getMovie:function(){return document[this.internal.flash.id]},_checkForFlash:function(a){var b=!1,d;if(window.ActiveXObject)try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+a),b=!0}catch(e){}else navigator.plugins&&
+navigator.mimeTypes.length>0&&(d=navigator.plugins["Shockwave Flash"])&&navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/,"$1")>=a&&(b=!0);return b},_validString:function(a){return a&&typeof a==="string"},_limitValue:function(a,b,d){return a<b?b:a>d?d:a},_urlNotSetError:function(a){this._error({type:b.jPlayer.error.URL_NOT_SET,context:a,message:b.jPlayer.errorMsg.URL_NOT_SET,hint:b.jPlayer.errorHint.URL_NOT_SET})},_flashError:function(a){var c;c=this.internal.ready?"FLASH_DISABLED":
+"FLASH";this._error({type:b.jPlayer.error[c],context:this.internal.flash.swf,message:b.jPlayer.errorMsg[c]+a.message,hint:b.jPlayer.errorHint[c]});this.internal.flash.jq.css({width:"1px",height:"1px"})},_error:function(a){this._trigger(b.jPlayer.event.error,a);this.options.errorAlerts&&this._alert("Error!"+(a.message?"\n\n"+a.message:"")+(a.hint?"\n\n"+a.hint:"")+"\n\nContext: "+a.context)},_warning:function(a){this._trigger(b.jPlayer.event.warning,f,a);this.options.warningAlerts&&this._alert("Warning!"+
+(a.message?"\n\n"+a.message:"")+(a.hint?"\n\n"+a.hint:"")+"\n\nContext: "+a.context)},_alert:function(a){alert("jPlayer "+this.version.script+" : id='"+this.internal.self.id+"' : "+a)},_emulateHtmlBridge:function(){var a=this;b.each(b.jPlayer.emulateMethods.split(/\s+/g),function(b,d){a.internal.domNode[d]=function(b){a[d](b)}});b.each(b.jPlayer.event,function(c,d){var e=!0;b.each(b.jPlayer.reservedEvent.split(/\s+/g),function(a,b){if(b===c)return e=!1});e&&a.element.bind(d+".jPlayer.jPlayerHtml",
+function(){a._emulateHtmlUpdate();var b=document.createEvent("Event");b.initEvent(c,!1,!0);a.internal.domNode.dispatchEvent(b)})})},_emulateHtmlUpdate:function(){var a=this;b.each(b.jPlayer.emulateStatus.split(/\s+/g),function(b,d){a.internal.domNode[d]=a.status[d]});b.each(b.jPlayer.emulateOptions.split(/\s+/g),function(b,d){a.internal.domNode[d]=a.options[d]})},_destroyHtmlBridge:function(){var a=this;this.element.unbind(".jPlayerHtml");b.each((b.jPlayer.emulateMethods+" "+b.jPlayer.emulateStatus+
+" "+b.jPlayer.emulateOptions).split(/\s+/g),function(b,d){delete a.internal.domNode[d]})}};b.jPlayer.error={FLASH:"e_flash",FLASH_DISABLED:"e_flash_disabled",NO_SOLUTION:"e_no_solution",NO_SUPPORT:"e_no_support",URL:"e_url",URL_NOT_SET:"e_url_not_set",VERSION:"e_version"};b.jPlayer.errorMsg={FLASH:"jPlayer's Flash fallback is not configured correctly, or a command was issued before the jPlayer Ready event. Details: ",FLASH_DISABLED:"jPlayer's Flash fallback has been disabled by the browser due to the CSS rules you have used. Details: ",
+NO_SOLUTION:"No solution can be found by jPlayer in this browser. Neither HTML nor Flash can be used.",NO_SUPPORT:"It is not possible to play any media format provided in setMedia() on this browser using your current options.",URL:"Media URL could not be loaded.",URL_NOT_SET:"Attempt to issue media playback commands, while no media url is set.",VERSION:"jPlayer "+b.jPlayer.prototype.version.script+" needs Jplayer.swf version "+b.jPlayer.prototype.version.needFlash+" but found "};b.jPlayer.errorHint=
+{FLASH:"Check your swfPath option and that Jplayer.swf is there.",FLASH_DISABLED:"Check that you have not display:none; the jPlayer entity or any ancestor.",NO_SOLUTION:"Review the jPlayer options: support and supplied.",NO_SUPPORT:"Video or audio formats defined in the supplied option are missing.",URL:"Check media URL is valid.",URL_NOT_SET:"Use setMedia() to set the media URL.",VERSION:"Update jPlayer files."};b.jPlayer.warning={CSS_SELECTOR_COUNT:"e_css_selector_count",CSS_SELECTOR_METHOD:"e_css_selector_method",
+CSS_SELECTOR_STRING:"e_css_selector_string",OPTION_KEY:"e_option_key"};b.jPlayer.warningMsg={CSS_SELECTOR_COUNT:"The number of css selectors found did not equal one: ",CSS_SELECTOR_METHOD:"The methodName given in jPlayer('cssSelector') is not a valid jPlayer method.",CSS_SELECTOR_STRING:"The methodCssSelector given in jPlayer('cssSelector') is not a String or is empty.",OPTION_KEY:"The option requested in jPlayer('option') is undefined."};b.jPlayer.warningHint={CSS_SELECTOR_COUNT:"Check your css selector and the ancestor.",
+CSS_SELECTOR_METHOD:"Check your method name.",CSS_SELECTOR_STRING:"Check your css selector is a string.",OPTION_KEY:"Check your option name."}})(jQuery);
\ No newline at end of file
diff --git a/airtime_mvc/public/js/jplayer/skin/jplayer.blue.monday.css b/airtime_mvc/public/js/jplayer/skin/jplayer.blue.monday.css
index 950b4ff64..981f3000f 100644
--- a/airtime_mvc/public/js/jplayer/skin/jplayer.blue.monday.css
+++ b/airtime_mvc/public/js/jplayer/skin/jplayer.blue.monday.css
@@ -14,6 +14,48 @@
  * Date: 20th December 2010
  */
 
+.jp-container	{
+	background: #282828;
+    height: 100%;
+    margin: 0;
+    padding: 0;
+}
+.jp-logo	{
+	width:380px;
+	height: 67px;
+	background:#282828 url(../../../css/images/airtime_logo_jp.png) no-repeat 120px 14px;
+	background: url(../../../css/images/airtime_logo_jp.png) no-repeat 120px 14px, -moz-radial-gradient(200px 0px, circle cover, rgba(70,70,70,1) 0%, rgba(40,40,40,1) 90%);
+	background: url(../../../css/images/airtime_logo_jp.png) no-repeat 120px 14px, -webkit-radial-gradient(170px 20px, rgba(70,70,70,1) 0%,rgba(40,40,40,1) 70%);
+	display:block;
+}
+.jp-stream	{
+	height: 18px;
+	display:block;
+	border-top:1px solid #050505;
+	color:#ff5d1a;
+	font-size:12px;
+	padding:6px 4px 4px 10px;
+	background:#313131;
+	background: -moz-linear-gradient(top, #292929 0, #3a3a3a 100%);
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #292929), color-stop(100%, #3a3a3a));
+	box-shadow: rgba(248,248,248,.3) 0px 1px 0px, rgba(0, 0, 0, 0.2) 0 2px 2px inset;
+	-moz-box-shadow: rgba(0, 0, 0, 0.7) 0 0 5px inset;
+	-webkit-box-shadow: rgba(0, 0, 0, 0.7) 0 0 5px inset;
+}
+.jp-stream-text,
+.jp-stream form	{
+	float:left;
+}
+.jp-stream form	{
+	margin-left:10px;
+}
+.jp-stream label	{
+	color:#ababab;
+	padding: 0 10px 0 0;
+	font-size:12px;
+}
+.jp-stream label input[type="radio"]	{
+}
 div.jp-audio,
 div.jp-video {
 
@@ -28,7 +70,7 @@ div.jp-video {
 	color: #666;
 }
 div.jp-audio {
-	width:180px;
+	/*width:180px;*/
 }
 div.jp-video-270p {
 	width:480px;
@@ -38,14 +80,17 @@ div.jp-video-360p {
 }
 div.jp-interface {
 	position: relative;
-	background-color:#eee;
+	background-color:#3D3D3D;
+	background: -moz-linear-gradient(top, #4e4e4e 0, #3a3a3a 100%);
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #4e4e4e), color-stop(100%, #3a3a3a));
 	/* width:418px; */
 	width:100%;
-	border:1px solid #009be3;
+	border-top:1px solid #7c7c7c;
+	border-bottom:1px solid #1a1a1a;
 }
 div.jp-audio div.jp-type-single div.jp-interface {
-	height:80px;
-	border-bottom:none;
+	height:70px;
+	/*border-bottom:none;*/
 }
 div.jp-audio div.jp-type-playlist div.jp-interface {
 	height:80px;
@@ -73,13 +118,13 @@ div.jp-interface ul.jp-controls a {
 }
 a.jp-play,
 a.jp-pause {
-	width:40px;
+	width:75px;
 	height:40px;
 	z-index:1;
 }
 div.jp-audio div.jp-type-single a.jp-play,
 div.jp-audio div.jp-type-single a.jp-pause {
-	top:20px;
+	top:15px;
 	left:40px;
 }
 div.jp-audio div.jp-type-playlist a.jp-play,
@@ -108,17 +153,17 @@ div.jp-video-360p div.jp-type-playlist a.jp-pause {
 	left:300px;
 }
 a.jp-play {
-	background: url("jplayer.blue.monday.jpg") 0 0 no-repeat;
+	background: url("jplayer.png") 0 0 no-repeat;
 }
 a.jp-play:hover {
-	background: url("jplayer.blue.monday.jpg") -41px 0 no-repeat;
+	background: url("jplayer.png") -75px 0 no-repeat;
 }
 a.jp-pause {
-	background: url("jplayer.blue.monday.jpg") 0 -42px no-repeat;
+	background: url("jplayer.png") 0 -40px no-repeat;
 	display: none;
 }
 a.jp-pause:hover {
-	background: url("jplayer.blue.monday.jpg") -41px -42px no-repeat;
+	background: url("jplayer.png") -75px -40px no-repeat;
 }
 div.jp-audio div.jp-type-single a.jp-stop {
 	top:26px;
@@ -144,13 +189,13 @@ div.jp-video-360p div.jp-type-playlist a.jp-stop {
 	left:378px;
 }
 a.jp-stop {
-	background: url("jplayer.blue.monday.jpg") 0 -83px no-repeat;
+	background: url("jplayer.png") 0 -83px no-repeat;
 	width:28px;
 	height:28px;
 	z-index:1;
 }
 a.jp-stop:hover {
-	background: url("jplayer.blue.monday.jpg") -29px -83px no-repeat;
+	background: url("jplayer.png") -29px -83px no-repeat;
 }
 div.jp-audio div.jp-type-playlist a.jp-previous {
 	left:20px;
@@ -166,12 +211,12 @@ div.jp-video-360p div.jp-type-playlist a.jp-previous {
 	left:272px;
 }
 a.jp-previous {
-	background: url("jplayer.blue.monday.jpg") 0 -112px no-repeat;
+	background: url("jplayer.png") 0 -112px no-repeat;
 	width:28px;
 	height:28px;
 }
 a.jp-previous:hover {
-	background: url("jplayer.blue.monday.jpg") -29px -112px no-repeat;
+	background: url("jplayer.png") -29px -112px no-repeat;
 }
 div.jp-audio div.jp-type-playlist a.jp-next {
 	left:88px;
@@ -187,12 +232,12 @@ div.jp-video-360p div.jp-type-playlist a.jp-next {
 	left:340px;
 }
 a.jp-next {
-	background: url("jplayer.blue.monday.jpg") 0 -141px no-repeat;
+	background: url("jplayer.png") 0 -141px no-repeat;
 	width:28px;
 	height:28px;
 }
 a.jp-next:hover {
-	background: url("jplayer.blue.monday.jpg") -29px -141px no-repeat;
+	background: url("jplayer.png") -29px -141px no-repeat;
 }
 div.jp-progress {
 	position: absolute;
@@ -218,14 +263,14 @@ div.jp-video div.jp-progress {
 	height:10px;
 }
 div.jp-seek-bar {
-	background: url("jplayer.blue.monday.jpg") 0 -202px repeat-x;
+	background: url("jplayer.png") 0 -202px repeat-x;
 	width:0px;
 	/* height:15px; */
 	height:100%;
 	cursor: pointer;
 }
 div.jp-play-bar {
-	background: url("jplayer.blue.monday.jpg") 0 -218px repeat-x ;
+	background: url("jplayer.png") 0 -218px repeat-x ;
 	width:0px;
 	/* height:15px; */
 	height:100%;
@@ -238,13 +283,13 @@ div.jp-seeking-bg {
 
 a.jp-mute,
 a.jp-unmute {
-	width:18px;
-	height:15px;
+	width:30px;
+	height:30px;
 }
 div.jp-audio div.jp-type-single a.jp-mute,
 div.jp-audio div.jp-type-single a.jp-unmute {
-	top:32px;
-	left:124px;
+	top:22px;
+	left:300px;
 }
 div.jp-audio div.jp-type-playlist a.jp-mute,
 div.jp-audio div.jp-type-playlist a.jp-unmute {
@@ -272,22 +317,22 @@ div.jp-video-360p div.jp-type-playlist a.jp-unmute {
 	left:443px;
 }
 a.jp-mute {
-	background: url("jplayer.blue.monday.jpg") 0 -186px no-repeat;
+	background: url("jplayer.png") 0 -110px no-repeat;
 }
 a.jp-mute:hover {
-	background: url("jplayer.blue.monday.jpg") -19px -170px no-repeat;
+	background: url("jplayer.png") -30px -80px no-repeat;
 }
 a.jp-unmute {
-	background: url("jplayer.blue.monday.jpg") 0 -170px no-repeat;
+	background: url("jplayer.png") 0 -80px no-repeat;
 	display: none;
 }
 a.jp-unmute:hover {
-	background: url("jplayer.blue.monday.jpg") -19px -186px no-repeat;
+	background: url("jplayer.png") -30px -110px no-repeat;
 }
 div.jp-volume-bar {
 	position: absolute;
 	overflow:hidden;
-	background: url("jplayer.blue.monday.jpg") 0 -250px repeat-x;
+	background: url("jplayer.png") 0 -250px repeat-x;
 	width:46px;
 	height:5px;
 	cursor: pointer;
@@ -316,7 +361,7 @@ div.jp-video-360p div.jp-type-playlist div.jp-volume-bar {
 	left:471px;
 }
 div.jp-volume-bar-value {
-	background: url("jplayer.blue.monday.jpg") 0 -256px repeat-x;
+	background: url("jplayer.png") 0 -256px repeat-x;
 	width:0px;
 	height:5px;
 }
@@ -352,7 +397,7 @@ div.jp-playlist {
 	/* width:418px; */
 	width:100%;
 	background-color:#ccc;
-	border:1px solid #009be3;
+	/*border:1px solid #009be3;*/
 	border-top:none;
 }
 div.jp-playlist ul {
diff --git a/airtime_mvc/public/js/jplayer/skin/jplayer.png b/airtime_mvc/public/js/jplayer/skin/jplayer.png
new file mode 100644
index 0000000000000000000000000000000000000000..03aef17942b4926f2e8cbe7244c220ef7c67bcae
GIT binary patch
literal 8046
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
TIA;I;0<Na4rBtb45%RwP-U<KO

literal 0
HcmV?d00001


From 3dbedc3a56b523d131d33acac39262d7b7743bc3 Mon Sep 17 00:00:00 2001
From: martin <martin@martin-ThinkPad-T410.(none)>
Date: Tue, 27 Sep 2011 15:26:40 -0400
Subject: [PATCH 13/16] CC-2724: Play Stream Icon + jPlayer popup styling

-#of streams and stream bitrates now fetched from database.
---
 .../application/models/StreamSetting.php      | 43 +++++++++++++++++--
 .../scripts/dashboard/stream-player.phtml     | 19 ++++----
 2 files changed, 51 insertions(+), 11 deletions(-)

diff --git a/airtime_mvc/application/models/StreamSetting.php b/airtime_mvc/application/models/StreamSetting.php
index 1e43b435d..eea87ba0a 100644
--- a/airtime_mvc/application/models/StreamSetting.php
+++ b/airtime_mvc/application/models/StreamSetting.php
@@ -1,7 +1,43 @@
 <?php
 class Application_Model_StreamSetting {
-    public function __construct(){
-    
+
+    /* Returns the id's of all streams that are enabled in an array. An
+     * example of the array returned in JSON notation is ["s1", "s2", "s3"] */
+    public static function getEnabledStreamIds(){
+        global $CC_DBC;
+        $sql = "SELECT * "
+                ."FROM cc_stream_setting "
+                ."WHERE keyname LIKE '%_output' "
+                ."AND value != 'disabled'";
+
+        $rows = $CC_DBC->getAll($sql);
+        $ids = array();
+
+        foreach ($rows as $row){
+            $ids[] = substr($row["keyname"], 0, strpos($row["keyname"], "_"));
+        }
+
+        //Logging::log(print_r($ids, true));
+        
+        return $ids;
+    }
+
+    /* Returns all information related to a specific stream. An example
+     * of a stream id is 's1' or 's2'. */
+    public static function getStreamData($p_streamId){
+        global $CC_DBC;
+        $sql = "SELECT * "
+                ."FROM cc_stream_setting "
+                ."WHERE keyname LIKE '${p_streamId}_%'";
+
+        $rows = $CC_DBC->getAll($sql);
+        $data = array();
+
+        foreach($rows as $row){
+            $data[$row["keyname"]] = $row["value"];
+        }
+
+        return $data;
     }
     
     public static function getStreamSetting(){
@@ -12,6 +48,7 @@ class Application_Model_StreamSetting {
         $rows = $CC_DBC->getAll($sql);
         return $rows;
     }
+    
     public static function setStreamSetting($data){
         global $CC_DBC;
         foreach($data as $key=>$d){
@@ -37,4 +74,4 @@ class Application_Model_StreamSetting {
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/airtime_mvc/application/views/scripts/dashboard/stream-player.phtml b/airtime_mvc/application/views/scripts/dashboard/stream-player.phtml
index 717072ddc..352ed6de8 100644
--- a/airtime_mvc/application/views/scripts/dashboard/stream-player.phtml
+++ b/airtime_mvc/application/views/scripts/dashboard/stream-player.phtml
@@ -15,21 +15,24 @@ $(document).ready(function(){
         supplied: "oga",
         wmode: "window"
     });
+
+    $('.bit-rates').click(function(){console.log("click")});
 });
 </script>
   <div class="jp-logo"></div>
         <div class="jp-stream">
             <div class="jp-stream-text">Select stream:</div>
               <form id="form1" method="post" action="">
+
+                  <?php $ids = Application_Model_StreamSetting::getEnabledStreamIds();
+                        foreach($ids as $id):
+                        $streamData = Application_Model_StreamSetting::getStreamData($id);
+                        Logging::log("id: ".print_r($streamData, true));
+                    ?>
                   <label>
-                    <input type="radio" name="select-stream" value="radio" id="select-stream_0" checked="checked" />
-                    48 Kbit/s</label>
-                  <label>
-                    <input type="radio" name="select-stream" value="radio" id="select-stream_1" />
-                    96 Kbit/s</label>
-                  <label>
-                    <input type="radio" name="select-stream" value="radio" id="select-stream_2" />
-                    192 Kbit/s</label>
+                    <input class='bit-rates' type="radio" name="select-stream" value="radio" id="select-stream_<?php echo $id ?>" checked="checked" />
+                    <?php echo "Stream ".substr($id, 1)." (".$streamData["${id}_bitrate"]; ?> Kbit/s)</label>                    
+                    <?php endforeach; ?>
               </form>
         </div>
         <div id="jquery_jplayer_1" class="jp-jplayer"></div>

From 5418ce46010d694296c92eeaca3dc240b94ec550 Mon Sep 17 00:00:00 2001
From: martin <martin@martin-ThinkPad-T410.(none)>
Date: Tue, 27 Sep 2011 16:37:03 -0400
Subject: [PATCH 14/16] CC-2724: Play Stream Icon + jPlayer popup styling

-Everything looks to be working.
---
 .../scripts/dashboard/stream-player.phtml     | 48 +++++++++++++++----
 1 file changed, 38 insertions(+), 10 deletions(-)

diff --git a/airtime_mvc/application/views/scripts/dashboard/stream-player.phtml b/airtime_mvc/application/views/scripts/dashboard/stream-player.phtml
index 352ed6de8..9e8959a22 100644
--- a/airtime_mvc/application/views/scripts/dashboard/stream-player.phtml
+++ b/airtime_mvc/application/views/scripts/dashboard/stream-player.phtml
@@ -1,22 +1,43 @@
 <div id="content" class="jp-container">
+<?php $ids = Application_Model_StreamSetting::getEnabledStreamIds(); ?>
 <script>
-$(document).ready(function(){
-
+function setjPlayer(url, type){
+    var obj = new Object();
+    obj[type] = url;
+    
+    $("#jquery_jplayer_1").jPlayer("destroy");
     $("#jquery_jplayer_1").jPlayer({
         ready: function () {
-            $(this).jPlayer("setMedia", {
-                oga: "http://localhost:8000/airtime_128"
-            }).jPlayer("play");
+            $(this).jPlayer("setMedia", obj).jPlayer("play");
         },
         ended: function (event) {
             $(this).jPlayer("play");
         },
         swfPath: "js",
-        supplied: "oga",
+        supplied: type,
         wmode: "window"
     });
+}
+    
+$(document).ready(function(){
 
-    $('.bit-rates').click(function(){console.log("click")});
+    $('.bit-rates').click(function(eventObject){
+        var elem = $(eventObject.target);
+
+        setjPlayer(elem.attr("data-url"), elem.attr("data-type"));
+    });
+
+        <?php
+            if (count($ids) > 0){
+                $id = $ids[0];
+                $streamData = Application_Model_StreamSetting::getStreamData($id);
+                $url = "http://".$streamData["${id}_host"].":".$streamData["${id}_port"]."/".$streamData["${id}_mount"];
+                $type = $streamData["${id}_type"];
+                if ($type == "ogg")
+                    $type = "oga";
+                echo "setjPlayer('$url', '$type');";
+            }
+        ?>
 });
 </script>
   <div class="jp-logo"></div>
@@ -24,15 +45,22 @@ $(document).ready(function(){
             <div class="jp-stream-text">Select stream:</div>
               <form id="form1" method="post" action="">
 
-                  <?php $ids = Application_Model_StreamSetting::getEnabledStreamIds();
+                  <?php
+                        $i=0;
                         foreach($ids as $id):
                         $streamData = Application_Model_StreamSetting::getStreamData($id);
                         Logging::log("id: ".print_r($streamData, true));
+
+                        $url = "http://".$streamData["${id}_host"].":".$streamData["${id}_port"]."/".$streamData["${id}_mount"];
+                        $type = $streamData["${id}_type"];
+
+                        if ($type == "ogg")
+                            $type = "oga";
                     ?>
                   <label>
-                    <input class='bit-rates' type="radio" name="select-stream" value="radio" id="select-stream_<?php echo $id ?>" checked="checked" />
+                    <input class='bit-rates' type="radio" name="select-stream" value="radio" data-url="<?php echo $url ?>" data-type="<?php echo $type ?>" id="select-stream_<?php echo $id ?>" <?php echo $i==0 ? "checked=\"checked\"": ""; ?>/>
                     <?php echo "Stream ".substr($id, 1)." (".$streamData["${id}_bitrate"]; ?> Kbit/s)</label>                    
-                    <?php endforeach; ?>
+                    <?php $i++; endforeach; ?>
               </form>
         </div>
         <div id="jquery_jplayer_1" class="jp-jplayer"></div>

From 1cbc098e919159e85cedfea370d5e1533e56011d Mon Sep 17 00:00:00 2001
From: martin <martin@martin-ThinkPad-T410.(none)>
Date: Wed, 28 Sep 2011 12:15:13 -0400
Subject: [PATCH 15/16] CC-2750: Ability to query health status for pypo,
 liquidsoap, media monitor, and recorder

---
 install_minimal/airtime-install                | 18 +++++++++++-------
 .../media-monitor/airtime-media-monitor-init-d | 10 ++++++++++
 .../install/media-monitor-install.py           |  2 +-
 python_apps/pypo/airtime-playout-init-d        | 11 +++++++++++
 python_apps/pypo/install/pypo-install.py       |  2 +-
 .../show-recorder/airtime-show-recorder-init-d | 10 ++++++++++
 .../show-recorder/install/recorder-install.py  |  2 +-
 7 files changed, 45 insertions(+), 10 deletions(-)

diff --git a/install_minimal/airtime-install b/install_minimal/airtime-install
index 0255c1ae8..bb45530d5 100755
--- a/install_minimal/airtime-install
+++ b/install_minimal/airtime-install
@@ -42,13 +42,6 @@ elif [ "$result" -ne "0" ]; then
 fi
 set -e
 
-# Need to ensure monit is running before Airtime daemons are run. This is
-# so we can ensure they can register with monit to monitor them when they start.
-# If monit is already running, this step is still useful as we need monit to
-# reload its config files.
-/etc/init.d/monit restart
-
-
 echo -e "\n*** API Client Installation ***"
 python ${SCRIPTPATH}/../python_apps/api_clients/install/api_client_install.py
 
@@ -61,7 +54,18 @@ python ${SCRIPTPATH}/../python_apps/show-recorder/install/recorder-install.py
 echo -e "\n*** Media Monitor Installation ***"
 python ${SCRIPTPATH}/../python_apps/media-monitor/install/media-monitor-install.py
 
+# Need to ensure monit is running before Airtime daemons are run. This is
+# so we can ensure they can register with monit to monitor them when they start.
+# If monit is already running, this step is still useful as we need monit to
+# reload its config files.
+/etc/init.d/monit restart
+
+
 set +e
+monit monitor airtime-media-monitor
+monit monitor airtime-liquidsoap
+monit monitor airtime-playout
+monit monitor airtime-show-recorder
 monit monitor rabbitmq-server
 set -e
 
diff --git a/python_apps/media-monitor/airtime-media-monitor-init-d b/python_apps/media-monitor/airtime-media-monitor-init-d
index 2780a224e..2f37a49fa 100755
--- a/python_apps/media-monitor/airtime-media-monitor-init-d
+++ b/python_apps/media-monitor/airtime-media-monitor-init-d
@@ -28,6 +28,10 @@ stop () {
         rm -f $PIDFILE
 }
 
+start_no_monit() {
+    start-stop-daemon --start --background --quiet --chuid $USERID:$GROUPID --make-pidfile --pidfile $PIDFILE --startas $DAEMON
+}
+
 
 case "${1:-''}" in
   'start')
@@ -49,6 +53,12 @@ case "${1:-''}" in
            start
            echo "Done."
         ;;
+  'start-no-monit')
+           # restart commands here
+           echo -n "Starting $NAME: "
+           start_no_monit
+           echo "Done."
+        ;;
   'status')
            # status commands here
            /usr/bin/airtime-check-system
diff --git a/python_apps/media-monitor/install/media-monitor-install.py b/python_apps/media-monitor/install/media-monitor-install.py
index ab5324705..b5968b8ef 100644
--- a/python_apps/media-monitor/install/media-monitor-install.py
+++ b/python_apps/media-monitor/install/media-monitor-install.py
@@ -78,7 +78,7 @@ try:
   sts = os.waitpid(p.pid, 0)[1]
 
   print "Waiting for processes to start..."
-  p = Popen("/etc/init.d/airtime-media-monitor start", shell=True)
+  p = Popen("/etc/init.d/airtime-media-monitor start-no-monit", shell=True)
   sts = os.waitpid(p.pid, 0)[1]
 
 except Exception, e:
diff --git a/python_apps/pypo/airtime-playout-init-d b/python_apps/pypo/airtime-playout-init-d
index b56989f88..f873f671a 100755
--- a/python_apps/pypo/airtime-playout-init-d
+++ b/python_apps/pypo/airtime-playout-init-d
@@ -66,6 +66,11 @@ monit_restart() {
         
 }
 
+start_no_monit() {
+        start-stop-daemon --start --background --quiet --chuid $USERID:$GROUPID --make-pidfile --pidfile $PIDFILE0 --startas $DAEMON0        
+        liquidsoap_start
+}
+
 case "${1:-''}" in
   'start')
             # start commands here
@@ -86,6 +91,12 @@ case "${1:-''}" in
            start
            echo "Done."
         ;;
+  'start-no-monit')
+           # restart commands here
+           echo -n "Starting $NAME: "
+           start_no_monit
+           echo "Done."
+        ;;
   'monit-restart')
            # restart commands here
            echo -n "Monit Restarting $NAME: "
diff --git a/python_apps/pypo/install/pypo-install.py b/python_apps/pypo/install/pypo-install.py
index 0ee6e9667..240525334 100644
--- a/python_apps/pypo/install/pypo-install.py
+++ b/python_apps/pypo/install/pypo-install.py
@@ -153,7 +153,7 @@ try:
   else:
       print "Unable to connect to the Airtime server."
   print "Waiting for processes to start..."
-  p = Popen("/etc/init.d/airtime-playout start", shell=True)
+  p = Popen("/etc/init.d/airtime-playout start-no-monit", shell=True)
   sts = os.waitpid(p.pid, 0)[1]
  
   
diff --git a/python_apps/show-recorder/airtime-show-recorder-init-d b/python_apps/show-recorder/airtime-show-recorder-init-d
index 8ffce4698..2fb8f4666 100755
--- a/python_apps/show-recorder/airtime-show-recorder-init-d
+++ b/python_apps/show-recorder/airtime-show-recorder-init-d
@@ -29,6 +29,10 @@ stop () {
         rm -f $PIDFILE
 }
 
+start_no_monit() {
+        start-stop-daemon --start --background --quiet --chuid $USERID:$GROUPID --make-pidfile --pidfile $PIDFILE --startas $DAEMON
+}
+
 
 case "${1:-''}" in
   'start')
@@ -50,6 +54,12 @@ case "${1:-''}" in
            start
            echo "Done."
         ;;
+  'start-no-monit')
+           # restart commands here
+           echo -n "Starting $NAME: "
+           start_no_monit
+           echo "Done."
+        ;;
   'status')
            # status commands here
            /usr/bin/airtime-check-system
diff --git a/python_apps/show-recorder/install/recorder-install.py b/python_apps/show-recorder/install/recorder-install.py
index 762b6daed..84ace3e78 100644
--- a/python_apps/show-recorder/install/recorder-install.py
+++ b/python_apps/show-recorder/install/recorder-install.py
@@ -75,7 +75,7 @@ try:
   sts = os.waitpid(p.pid, 0)[1]
 
   print "Waiting for processes to start..."
-  p = Popen("/etc/init.d/airtime-show-recorder start", shell=True)
+  p = Popen("/etc/init.d/airtime-show-recorder start-no-monit", shell=True)
   sts = os.waitpid(p.pid, 0)[1]
 
 except Exception, e:

From f697e475fd5b0cd35522ad04229ed29f4e015df6 Mon Sep 17 00:00:00 2001
From: martin <martin@martin-ThinkPad-T410.(none)>
Date: Wed, 28 Sep 2011 12:45:19 -0400
Subject: [PATCH 16/16] CC-2750: Ability to query health status for pypo,
 liquidsoap, media monitor, and recorder

-remove icecast monitoring for now
---
 airtime_mvc/application/controllers/ApiController.php         | 1 -
 .../application/controllers/SystemstatusController.php        | 4 +---
 utils/airtime-check-system.php                                | 4 ----
 3 files changed, 1 insertion(+), 8 deletions(-)

diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php
index fd246d863..62261db47 100644
--- a/airtime_mvc/application/controllers/ApiController.php
+++ b/airtime_mvc/application/controllers/ApiController.php
@@ -664,7 +664,6 @@ class ApiController extends Zend_Controller_Action
             "platform"=>Application_Model_Systemstatus::GetPlatformInfo(),
             "airtime_version"=>Application_Model_Preference::GetAirtimeVersion(),
             "services"=>array(
-                "icecast2"=>Application_Model_Systemstatus::GetIcecastStatus(),
                 "rabbitmq"=>Application_Model_Systemstatus::GetRabbitMqStatus(),
                 "pypo"=>Application_Model_Systemstatus::GetPypoStatus(),
                 "liquidsoap"=>Application_Model_Systemstatus::GetLiquidsoapStatus(),
diff --git a/airtime_mvc/application/controllers/SystemstatusController.php b/airtime_mvc/application/controllers/SystemstatusController.php
index d78c8e6bb..b4d1c2b3f 100644
--- a/airtime_mvc/application/controllers/SystemstatusController.php
+++ b/airtime_mvc/application/controllers/SystemstatusController.php
@@ -18,8 +18,7 @@ class SystemstatusController extends Zend_Controller_Action
             "liquidsoap"=>Application_Model_Systemstatus::GetLiquidsoapStatus(),
             "show-recorder"=>Application_Model_Systemstatus::GetShowRecorderStatus(),
             "media-monitor"=>Application_Model_Systemstatus::GetMediaMonitorStatus(),
-            "rabbitmq-server"=>Application_Model_Systemstatus::GetRabbitMqStatus(),
-            "icecast2"=>Application_Model_Systemstatus::GetIcecastStatus()
+            "rabbitmq-server"=>Application_Model_Systemstatus::GetRabbitMqStatus()
         );
 
         $partitions = Application_Model_Systemstatus::GetDiskInfo();
@@ -27,7 +26,6 @@ class SystemstatusController extends Zend_Controller_Action
         $this->view->status = new StdClass;
         $this->view->status->services = $services;
         $this->view->status->partitions = $partitions;
-
     }
 
     public function getLogFileAction()
diff --git a/utils/airtime-check-system.php b/utils/airtime-check-system.php
index 6fc13060f..4a90dcc2c 100644
--- a/utils/airtime-check-system.php
+++ b/utils/airtime-check-system.php
@@ -85,10 +85,6 @@ class AirtimeCheck {
         self::output_status("SHOW_RECORDER_RUNNING_SECONDS", $p_status->services->show_recorder->uptime_seconds);
         self::output_status("SHOW_RECORDER_MEM_PERC", $p_status->services->show_recorder->memory_perc);
         self::output_status("SHOW_RECORDER_CPU_PERC", $p_status->services->show_recorder->cpu_perc);
-        self::output_status("ICECAST_PROCESS_ID", $p_status->services->icecast2->process_id);
-        self::output_status("ICECAST_RUNNING_SECONDS", $p_status->services->icecast2->uptime_seconds);
-        self::output_status("ICECAST_MEM_PERC", $p_status->services->icecast2->memory_perc);
-        self::output_status("ICECAST_CPU_PERC", $p_status->services->icecast2->cpu_perc);
         self::output_status("RABBITMQ_PROCESS_ID", $p_status->services->rabbitmq->process_id);
         self::output_status("RABBITMQ_RUNNING_SECONDS", $p_status->services->rabbitmq->uptime_seconds);
         self::output_status("RABBITMQ_MEM_PERC", $p_status->services->rabbitmq->memory_perc);