diff --git a/airtime_mvc/application/controllers/LibraryController.php b/airtime_mvc/application/controllers/LibraryController.php index 514d08e16..1d616ba1a 100644 --- a/airtime_mvc/application/controllers/LibraryController.php +++ b/airtime_mvc/application/controllers/LibraryController.php @@ -183,7 +183,7 @@ class LibraryController extends Zend_Controller_Action } } } - if ($isAdminOrPM) { + if ($isAdminOrPM || $file->getFileOwnerId() == $user->getId()) { $menu["del"] = array("name"=> "Delete", "icon" => "delete", "url" => $baseUrl."/library/delete"); $menu["edit"] = array("name"=> "Edit Metadata", "icon" => "edit", "url" => $baseUrl."/library/edit-file-md/id/{$id}"); } @@ -279,6 +279,7 @@ class LibraryController extends Zend_Controller_Action $streams = array(); $message = null; + $noPermissionMsg = "You don't have permission to delete selected items."; foreach ($mediaItems as $media) { @@ -296,19 +297,21 @@ class LibraryController extends Zend_Controller_Action try { Application_Model_Playlist::deletePlaylists($playlists, $user->getId()); } catch (PlaylistNoPermissionException $e) { - $this->view->message = "You don't have permission to delete selected items."; - - return; + $message = $noPermissionMsg; } try { Application_Model_Block::deleteBlocks($blocks, $user->getId()); + } catch (BlockNoPermissionException $e) { + $message = $noPermissionMsg; } catch (Exception $e) { //TODO: warn user that not all blocks could be deleted. } try { Application_Model_Webstream::deleteStreams($streams, $user->getId()); + } catch (WebstreamNoPermissionException $e) { + $message = $noPermissionMsg; } catch (Exception $e) { //TODO: warn user that not all streams could be deleted. Logging::info($e); @@ -321,6 +324,8 @@ class LibraryController extends Zend_Controller_Action if (isset($file)) { try { $res = $file->delete(true); + } catch (FileNoPermissionException $e) { + $message = $noPermissionMsg; } catch (Exception $e) { //could throw a scheduled in future exception. $message = "Could not delete some scheduled files."; @@ -367,15 +372,17 @@ class LibraryController extends Zend_Controller_Action { $user = Application_Model_User::getCurrentUser(); $isAdminOrPM = $user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER)); - if (!$isAdminOrPM) { - return; - } $request = $this->getRequest(); - $form = new Application_Form_EditAudioMD(); $file_id = $this->_getParam('id', null); $file = Application_Model_StoredFile::Recall($file_id); + + if (!$isAdminOrPM && $file->getFileOwnerId() != $user->getId()) { + return; + } + + $form = new Application_Form_EditAudioMD(); $form->populate($file->getDbColMetadata()); if ($request->isPost()) { diff --git a/airtime_mvc/application/controllers/PlaylistController.php b/airtime_mvc/application/controllers/PlaylistController.php index 2cca81ac2..38dbd4fd2 100644 --- a/airtime_mvc/application/controllers/PlaylistController.php +++ b/airtime_mvc/application/controllers/PlaylistController.php @@ -513,6 +513,7 @@ class PlaylistController extends Zend_Controller_Action } catch (BlockNotFoundException $e) { $this->playlistNotFound('block', true); } catch (Exception $e) { + //Logging::info($e); $this->playlistUnknownError($e); } } diff --git a/airtime_mvc/application/forms/SmartBlockCriteria.php b/airtime_mvc/application/forms/SmartBlockCriteria.php index 55a28c79a..e48fc7590 100644 --- a/airtime_mvc/application/forms/SmartBlockCriteria.php +++ b/airtime_mvc/application/forms/SmartBlockCriteria.php @@ -212,6 +212,14 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm }//for + $repeatTracks = new Zend_Form_Element_Checkbox('sp_repeat_tracks'); + $repeatTracks->setDecorators(array('viewHelper')) + ->setLabel('Allow Repeat Tracks:'); + if (isset($storedCrit["repeat_tracks"])) { + $repeatTracks->setChecked($storedCrit["repeat_tracks"]["value"] == 1?true:false); + } + $this->addElement($repeatTracks); + $limit = new Zend_Form_Element_Select('sp_limit_options'); $limit->setAttrib('class', 'sp_input_select') ->setDecorators(array('viewHelper')) @@ -220,7 +228,7 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm $limit->setValue($storedCrit["limit"]["modifier"]); } $this->addElement($limit); - + $limitValue = new Zend_Form_Element_Text('sp_limit_value'); $limitValue->setAttrib('class', 'sp_input_text_limit') ->setLabel('Limit to') diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index eb1aab691..57018ad5f 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -308,10 +308,11 @@ SQL; $length = $value." ".$modifier; } else { $hour = "00"; + $mins = "00"; if ($modifier == "minutes") { if ($value >59) { $hour = intval($value/60); - $value = $value%60; + $mins = $value%60; } } elseif ($modifier == "hours") { @@ -1092,6 +1093,14 @@ SQL; ->setDbValue($p_criteriaData['etc']['sp_limit_value']) ->setDbBlockId($this->id) ->save(); + + // insert repeate track option + $qry = new CcBlockcriteria(); + $qry->setDbCriteria("repeat_tracks") + ->setDbModifier("N/A") + ->setDbValue($p_criteriaData['etc']['sp_repeat_tracks']) + ->setDbBlockId($this->id) + ->save(); } /** @@ -1104,7 +1113,12 @@ SQL; $this->saveSmartBlockCriteria($p_criteria); $insertList = $this->getListOfFilesUnderLimit(); $this->deleteAllFilesFromBlock(); - $this->addAudioClips(array_keys($insertList)); + // constrcut id array + $ids = array(); + foreach ($insertList as $ele) { + $ids[] = $ele['id']; + } + $this->addAudioClips(array_values($ids)); // update length in playlist contents. $this->updateBlockLengthInAllPlaylist(); @@ -1133,6 +1147,7 @@ SQL; $info = $this->getListofFilesMeetCriteria(); $files = $info['files']; $limit = $info['limit']; + $repeat = $info['repeat_tracks']; $insertList = array(); $totalTime = 0; @@ -1141,19 +1156,37 @@ SQL; // this moves the pointer to the first element in the collection $files->getFirst(); $iterator = $files->getIterator(); - while ($iterator->valid() && $totalTime < $limit['time']) { + + $isBlockFull = false; + + while ($iterator->valid()) { $id = $iterator->current()->getDbId(); $length = Application_Common_DateHelper::calculateLengthInSeconds($iterator->current()->getDbLength()); - $insertList[$id] = $length; + $insertList[] = array('id'=>$id, 'length'=>$length); $totalTime += $length; $totalItems++; - - if ((!is_null($limit['items']) && $limit['items'] == count($insertList)) || $totalItems > 500) { + + if ((!is_null($limit['items']) && $limit['items'] == count($insertList)) || $totalItems > 500 || $totalTime > $limit['time']) { + $isBlockFull = true; break; } $iterator->next(); } + + $sizeOfInsert = count($insertList); + + // if block is not full and reapeat_track is check, fill up more + while (!$isBlockFull && $repeat == 1) { + $randomEleKey = array_rand(array_slice($insertList, 0, $sizeOfInsert)); + $insertList[] = $insertList[$randomEleKey]; + $totalTime += $insertList[$randomEleKey]['length']; + $totalItems++; + + if ((!is_null($limit['items']) && $limit['items'] == count($insertList)) || $totalItems > 500 || $totalTime > $limit['time']) { + break; + } + } return $insertList; } @@ -1201,6 +1234,8 @@ SQL; if ($criteria == "limit") { $storedCrit["limit"] = array("value"=>$value, "modifier"=>$modifier); + } else if($criteria == "repeat_tracks") { + $storedCrit["repeat_tracks"] = array("value"=>$value); } else { $storedCrit["crit"][$criteria][] = array("criteria"=>$criteria, "value"=>$value, "modifier"=>$modifier, "extra"=>$extra, "display_name"=>$criteriaOptions[$criteria]); } @@ -1316,6 +1351,7 @@ SQL; } // construct limit restriction $limits = array(); + if (isset($storedCrit['limit'])) { if ($storedCrit['limit']['modifier'] == "items") { $limits['time'] = 1440 * 60; @@ -1327,10 +1363,16 @@ SQL; $limits['items'] = null; } } + + $repeatTracks = 0; + if (isset($storedCrit['repeat_tracks'])) { + $repeatTracks = $storedCrit['repeat_tracks']['value']; + } + try { $out = $qry->setFormatter(ModelCriteria::FORMAT_ON_DEMAND)->find(); - return array("files"=>$out, "limit"=>$limits, "count"=>$out->count()); + return array("files"=>$out, "limit"=>$limits, "repeat_tracks"=> $repeatTracks, "count"=>$out->count()); } catch (Exception $e) { Logging::info($e); } @@ -1376,7 +1418,7 @@ SQL; $output['etc'][$ele['name']] = $ele['value']; } } - + return $output; } // smart block functions end diff --git a/airtime_mvc/application/models/Datatables.php b/airtime_mvc/application/models/Datatables.php index 65e7b1256..7545aec71 100644 --- a/airtime_mvc/application/models/Datatables.php +++ b/airtime_mvc/application/models/Datatables.php @@ -13,9 +13,9 @@ class Application_Model_Datatables if ($dbname == 'utime' || $dbname == 'mtime') { $input1 = isset($info[0])?Application_Common_DateHelper::ConvertToUtcDateTimeString($info[0]):null; $input2 = isset($info[1])?Application_Common_DateHelper::ConvertToUtcDateTimeString($info[1]):null; - } else if($dbname == 'bit_rate') { - $input1 = isset($info[0])?intval($info[0]) * 1000:null; - $input2 = isset($info[1])?intval($info[1]) * 1000:null; + } else if($dbname == 'bit_rate' || $dbname == 'sample_rate') { + $input1 = isset($info[0])?doubleval($info[0]) * 1000:null; + $input2 = isset($info[1])?doubleval($info[1]) * 1000:null; } else { $input1 = isset($info[0])?$info[0]:null; $input2 = isset($info[1])?$info[1]:null; diff --git a/airtime_mvc/application/models/Schedule.php b/airtime_mvc/application/models/Schedule.php index b668f13e5..c6776a43e 100644 --- a/airtime_mvc/application/models/Schedule.php +++ b/airtime_mvc/application/models/Schedule.php @@ -268,7 +268,7 @@ SQL; //We need to search 24 hours before and after the show times so that that we - //capture all of the show's contents. + //capture all of the show's contents. $p_track_start= $p_start->sub(new DateInterval("PT24H"))->format("Y-m-d H:i:s"); $p_track_end = $p_end->add(new DateInterval("PT24H"))->format("Y-m-d H:i:s"); @@ -661,6 +661,7 @@ SQL; $data["media"][$switch_start]['start'] = $switch_start; $data["media"][$switch_start]['end'] = $switch_start; $data["media"][$switch_start]['event_type'] = "switch_off"; + $data["media"][$switch_start]['type'] = "event"; $data["media"][$switch_start]['independent_event'] = true; } } diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php index 41ffbeefd..6f088046d 100644 --- a/airtime_mvc/application/models/Show.php +++ b/airtime_mvc/application/models/Show.php @@ -270,6 +270,13 @@ SQL; try { //update the status flag in cc_schedule. + + /* Since we didn't use a propel object when updating + * cc_show_instances table we need to clear the instances + * so the correct information is retrieved from the db + */ + CcShowInstancesPeer::clearInstancePool(); + $instances = CcShowInstancesQuery::create() ->filterByDbEnds($current_timestamp, Criteria::GREATER_THAN) ->filterByDbShowId($this->_showId) @@ -1253,6 +1260,7 @@ SQL; if ($data['add_show_id'] != -1) { $con = Propel::getConnection(CcSchedulePeer::DATABASE_NAME); $con->beginTransaction(); + //current timesamp in UTC. $current_timestamp = gmdate("Y-m-d H:i:s"); diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index 03b98c782..43f0c550d 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -344,6 +344,13 @@ SQL; throw new DeleteScheduledFileException(); } + $userInfo = Zend_Auth::getInstance()->getStorage()->read(); + $user = new Application_Model_User($userInfo->id); + $isAdminOrPM = $user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER)); + if (!$isAdminOrPM && $this->getFileOwnerId() != $user->getId()) { + throw new FileNoPermissionException(); + } + $music_dir = Application_Model_MusicDir::getDirByPK($this->_file->getDbDirectory()); $type = $music_dir->getType(); @@ -1163,6 +1170,10 @@ SQL; return $this->_file->getDbFileExists(); } + public function getFileOwnerId() + { + return $this->_file->getDbOwnerId(); + } // note: never call this method from controllers because it does a sleep public function uploadToSoundCloud() @@ -1211,3 +1222,4 @@ SQL; class DeleteScheduledFileException extends Exception {} class FileDoesNotExistException extends Exception {} +class FileNoPermissionException extends Exception {} diff --git a/airtime_mvc/application/models/Webstream.php b/airtime_mvc/application/models/Webstream.php index 45d3caf9a..ef3f32605 100644 --- a/airtime_mvc/application/models/Webstream.php +++ b/airtime_mvc/application/models/Webstream.php @@ -92,7 +92,7 @@ class Application_Model_Webstream implements Application_Model_LibraryEditable if (count($leftOver) == 0) { CcWebstreamQuery::create()->findPKs($p_ids)->delete(); } else { - throw new Exception("Invalid user permissions"); + throw new WebstreamNoPermissionException; } } @@ -185,7 +185,7 @@ class Application_Model_Webstream implements Application_Model_LibraryEditable } $mediaUrl = self::getMediaUrl($url, $mime, $content_length_found); - if (preg_match("/(x-mpegurl)|(xspf\+xml)|(pls\+xml)/", $mime)) { + if (preg_match("/(x-mpegurl)|(xspf\+xml)|(pls\+xml)|(x-scpls)/", $mime)) { list($mime, $content_length_found) = self::discoverStreamMime($mediaUrl); } } catch (Exception $e) { @@ -307,7 +307,7 @@ class Application_Model_Webstream implements Application_Model_LibraryEditable $media_url = self::getM3uUrl($url); } elseif (preg_match("/xspf\+xml/", $mime)) { $media_url = self::getXspfUrl($url); - } elseif (preg_match("/pls\+xml/", $mime)) { + } elseif (preg_match("/pls\+xml/", $mime) || preg_match("/x-scpls/", $mime)) { $media_url = self::getPlsUrl($url); } elseif (preg_match("/(mpeg|ogg)/", $mime)) { if ($content_length_found) { @@ -370,3 +370,6 @@ class Application_Model_Webstream implements Application_Model_LibraryEditable return $webstream->getDbId(); } } + +class WebstreamNoPermissionException extends Exception {} + diff --git a/airtime_mvc/application/views/scripts/api/status.phtml b/airtime_mvc/application/views/scripts/api/status.phtml index 1cffa8b84..b597b4b71 100644 --- a/airtime_mvc/application/views/scripts/api/status.phtml +++ b/airtime_mvc/application/views/scripts/api/status.phtml @@ -1,3 +1,3 @@ - -
-
-
-
- Help Airtime improve by letting us know how you are using it. This info - will be collected regularly in order to enhance your user experience. -

- Click "Yes, help Airtime" and we'll make sure the features you use are - constantly improving. -
-
- - element->getElement('SupportFeedback')->hasErrors()) : ?> -
    - element->getElement('SupportFeedback')->getMessages() as $error): ?> -
  • - -
- -
-
- Click the box below to advertise your station on - Sourcefabric.org. - In order to promote your station, "Send support feedback" must be enabled. This data will be collected in addition to the support feedback. -
-
- - element->getElement('Publicise')->hasErrors()) : ?> -
    - element->getElement('Publicise')->getMessages() as $error): ?> -
  • - -
- -
-
- -
- -
-
- Show me what I am sending -
- element->getElement('SendInfo') ?> -
-
-
-
-
- privacyChecked){?> - - - Terms and Conditions - -
-
- + diff --git a/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml b/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml index 0f27248ca..c75791fe1 100644 --- a/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml +++ b/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml @@ -59,6 +59,20 @@
+
+ element->getElement('sp_repeat_tracks')->getLabel() ?> + + element->getElement('sp_repeat_tracks')?> + element->getElement("sp_repeat_tracks")->hasErrors()) : ?> + element->getElement("sp_repeat_tracks")->getMessages() as $error): ?> + + + + + +
+
+
element->getElement('sp_limit_value')->getLabel() ?> element->getElement('sp_limit_value')?> diff --git a/airtime_mvc/application/views/scripts/library/edit-file-md.phtml b/airtime_mvc/application/views/scripts/library/edit-file-md.phtml index 6b7696c0a..bdead9832 100644 --- a/airtime_mvc/application/views/scripts/library/edit-file-md.phtml +++ b/airtime_mvc/application/views/scripts/library/edit-file-md.phtml @@ -1,6 +1,6 @@

Edit Metadata

- form->setAction($this->url()); + form->setAction($this->url()); echo $this->form; ?>
diff --git a/airtime_mvc/application/views/scripts/library/library.phtml b/airtime_mvc/application/views/scripts/library/library.phtml index 0f13eedfa..03c4ad259 100644 --- a/airtime_mvc/application/views/scripts/library/library.phtml +++ b/airtime_mvc/application/views/scripts/library/library.phtml @@ -1,6 +1,6 @@ -
+
Advanced Search Options
diff --git a/airtime_mvc/application/views/scripts/playlist/update.phtml b/airtime_mvc/application/views/scripts/playlist/update.phtml index 70176ff9e..87cd0662f 100644 --- a/airtime_mvc/application/views/scripts/playlist/update.phtml +++ b/airtime_mvc/application/views/scripts/playlist/update.phtml @@ -92,5 +92,13 @@ if ($item['type'] == 2) { -
  • Empty playlist
  • +
  • +obj instanceof Application_Model_Block) { + echo 'Empty smart block'; + } else { + echo 'Empty playlist'; + } +?> +
  • diff --git a/airtime_mvc/application/views/scripts/schedule/show-list.phtml b/airtime_mvc/application/views/scripts/schedule/show-list.phtml index 992701db3..939ab6afd 100644 --- a/airtime_mvc/application/views/scripts/schedule/show-list.phtml +++ b/airtime_mvc/application/views/scripts/schedule/show-list.phtml @@ -1,2 +1,2 @@ -
    +
    \ No newline at end of file diff --git a/airtime_mvc/application/views/scripts/showbuilder/builderDialog.phtml b/airtime_mvc/application/views/scripts/showbuilder/builderDialog.phtml index 92331d6cc..46ce9488e 100644 --- a/airtime_mvc/application/views/scripts/showbuilder/builderDialog.phtml +++ b/airtime_mvc/application/views/scripts/showbuilder/builderDialog.phtml @@ -1,7 +1,7 @@
    -
    +
    Advanced Search Options
    diff --git a/airtime_mvc/application/views/scripts/webstream/webstream.phtml b/airtime_mvc/application/views/scripts/webstream/webstream.phtml index 1757f9be0..6695c82fc 100644 --- a/airtime_mvc/application/views/scripts/webstream/webstream.phtml +++ b/airtime_mvc/application/views/scripts/webstream/webstream.phtml @@ -9,6 +9,10 @@
  • New Webstream
  • + +
    + +
    obj)) : ?>
    @@ -37,24 +41,23 @@
    - - -
    -
    - -
    - -
    -
    - -
    -
    - -
    +
    - - + +
    + + +
    +
    + +
    + +
    +
    + +
    +
    No webstream
    diff --git a/airtime_mvc/public/css/add-show.css b/airtime_mvc/public/css/add-show.css index 0dd479a3c..4ca5dc469 100644 --- a/airtime_mvc/public/css/add-show.css +++ b/airtime_mvc/public/css/add-show.css @@ -1,129 +1,129 @@ -#schedule-add-show, -#fullcalendar_show_display { - float: left; -} - -#schedule-add-show { - font-size: 12px; - /*width: 25%;*/ - width:310px; -} - -#schedule-add-show textarea { - width: 99%; - height: 80px; -} - -#fullcalendar_show_display { - width: 60%; -} - - - -#schedule-add-show .ui-tabs-panel { - padding-top: 8px; -} -#schedule-add-show fieldset { - padding:8px; - margin-bottom:8px; -} - -#schedule-add-show dl { - padding:8px; - margin-bottom:8px; - margin:0; - padding:0; - width:100%; -} -#schedule-add-show dd { - padding: 4px 0; - float: left; - font-size: 1.2em; - margin: 0; - padding: 4px 0 4px 15px; -} -#schedule-add-show dt, #schedule-add-show dt.big { - clear: left; - color: #666666; - float: left; - font-size: 1.2em; - font-weight: bold; - margin: 0; - padding: 4px 0; - text-align: left; - min-width:103px; - clear:left; -} -#schedule-add-show dt.big { - min-width:130px; -} -#schedule-add-show dt.block-display, #schedule-add-show dd.block-display { - display:block; - float:none; - margin-left:0; - padding-left:0; -} - -#schedule-add-show dt label { - padding-right:0; -} -.wrapp-label { - padding:0; - height:16px; - display:block; - line-height:18px; -} -label.wrapp-label input[type="checkbox"] { - float:left; - margin:-1px 2px 0 0; -} - -#schedule-add-show fieldset:last-child { - margin-bottom:0; -} -#schedule-add-show fieldset dd input[type="checkbox"] { - margin-top:2px; -} -#add_show_day_check-element.block-display { - margin-bottom:15px; - margin-top:7px; -} -#add_show_day_check-element.block-display label.wrapp-label { - font-size:12px; - float:left; - margin-right:10px; -} -#add_show_name-element .input_text { - /*width:99%;*/ -} - -#schedule-add-show-overlap { - border: 1px solid #c83f3f; - background: #c6b4b4; - margin-top:8px; - padding:8px; - color:#902d2d; - display:none; -} - -#add_show_hosts-element { - max-height: 80px; - min-width: 150px; - overflow: auto; -} - -#add_show_start_time, #add_show_end_time { - width: 54px; - margin-left:10px; -} - -#add_show_end_date_no_repeat, #add_show_start_date { - width: 89px; - -} - -#add_show_duration { - background: #AAAAAA; - cursor: default; - width: 65px; -} +#schedule-add-show, +#fullcalendar_show_display { + float: left; +} + +#schedule-add-show { + font-size: 12px; + /*width: 25%;*/ + width:310px; +} + +#schedule-add-show textarea { + width: 99%; + height: 80px; +} + +#fullcalendar_show_display { + width: 60%; +} + + + +#schedule-add-show .ui-tabs-panel { + padding-top: 8px; +} +#schedule-add-show fieldset { + padding:8px; + margin-bottom:8px; +} + +#schedule-add-show dl { + padding:8px; + margin-bottom:8px; + margin:0; + padding:0; + width:100%; +} +#schedule-add-show dd { + padding: 4px 0; + float: left; + font-size: 1.2em; + margin: 0; + padding: 4px 0 4px 15px; +} +#schedule-add-show dt, #schedule-add-show dt.big { + clear: left; + color: #666666; + float: left; + font-size: 1.2em; + font-weight: bold; + margin: 0; + padding: 4px 0; + text-align: left; + min-width:103px; + clear:left; +} +#schedule-add-show dt.big { + min-width:130px; +} +#schedule-add-show dt.block-display, #schedule-add-show dd.block-display { + display:block; + float:none; + margin-left:0; + padding-left:0; +} + +#schedule-add-show dt label { + padding-right:0; +} +.wrapp-label { + padding:0; + height:16px; + display:block; + line-height:18px; +} +label.wrapp-label input[type="checkbox"] { + float:left; + margin:-1px 2px 0 0; +} + +#schedule-add-show fieldset:last-child { + margin-bottom:0; +} +#schedule-add-show fieldset dd input[type="checkbox"] { + margin-top:2px; +} +#add_show_day_check-element.block-display { + margin-bottom:15px; + margin-top:7px; +} +#add_show_day_check-element.block-display label.wrapp-label { + font-size:12px; + float:left; + margin-right:10px; +} +#add_show_name-element .input_text { + /*width:99%;*/ +} + +#schedule-add-show-overlap { + border: 1px solid #c83f3f; + background: #c6b4b4; + margin-top:8px; + padding:8px; + color:#902d2d; + display:none; +} + +#add_show_hosts-element { + max-height: 80px; + min-width: 150px; + overflow: auto; +} + +#add_show_start_time, #add_show_end_time { + width: 54px; + margin-left:10px; +} + +#add_show_end_date_no_repeat, #add_show_start_date { + width: 89px; + +} + +#add_show_duration { + background: #AAAAAA; + cursor: default; + width: 65px; +} diff --git a/airtime_mvc/public/css/colorpicker/css/colorpicker.css b/airtime_mvc/public/css/colorpicker/css/colorpicker.css index d704c4c64..9b449e780 100644 --- a/airtime_mvc/public/css/colorpicker/css/colorpicker.css +++ b/airtime_mvc/public/css/colorpicker/css/colorpicker.css @@ -1,162 +1,162 @@ -.colorpicker { - width: 356px; - height: 176px; - overflow: hidden; - position: absolute; - background: url(../images/colorpicker_background.png); - font-family: Arial, Helvetica, sans-serif; - display: none; - z-index: 1003; /* so it can display above the jQuery dialog*/ -} -.colorpicker_color { - width: 150px; - height: 150px; - left: 14px; - top: 13px; - position: absolute; - background: #f00; - overflow: hidden; - cursor: crosshair; -} -.colorpicker_color div { - position: absolute; - top: 0; - left: 0; - width: 150px; - height: 150px; - background: url(../images/colorpicker_overlay.png); -} -.colorpicker_color div div { - position: absolute; - top: 0; - left: 0; - width: 11px; - height: 11px; - overflow: hidden; - background: url(../images/colorpicker_select.gif); - margin: -5px 0 0 -5px; -} -.colorpicker_hue { - position: absolute; - top: 13px; - left: 171px; - width: 35px; - height: 150px; - cursor: n-resize; -} -.colorpicker_hue div { - position: absolute; - width: 35px; - height: 9px; - overflow: hidden; - background: url(../images/colorpicker_indic.gif) left top; - margin: -4px 0 0 0; - left: 0px; -} -.colorpicker_new_color { - position: absolute; - width: 60px; - height: 30px; - left: 213px; - top: 13px; - background: #f00; -} -.colorpicker_current_color { - position: absolute; - width: 60px; - height: 30px; - left: 283px; - top: 13px; - background: #f00; -} -.colorpicker input { - background-color: transparent; - border: 1px solid transparent; - position: absolute; - font-size: 10px; - font-family: Arial, Helvetica, sans-serif; - color: #898989; - top: 4px; - right: 11px; - text-align: right; - margin: 0; - padding: 0; - height: 11px; -} -.colorpicker_hex { - position: absolute; - width: 72px; - height: 22px; - background: url(../images/colorpicker_hex.png) top; - left: 212px; - top: 142px; -} -.colorpicker_hex input { - right: 6px; -} -.colorpicker_field { - height: 22px; - width: 62px; - background-position: top; - position: absolute; -} -.colorpicker_field span { - position: absolute; - width: 12px; - height: 22px; - overflow: hidden; - top: 0; - right: 0; - cursor: n-resize; -} -.colorpicker_rgb_r { - background-image: url(../images/colorpicker_rgb_r.png); - top: 52px; - left: 212px; -} -.colorpicker_rgb_g { - background-image: url(../images/colorpicker_rgb_g.png); - top: 82px; - left: 212px; -} -.colorpicker_rgb_b { - background-image: url(../images/colorpicker_rgb_b.png); - top: 112px; - left: 212px; -} -.colorpicker_hsb_h { - background-image: url(../images/colorpicker_hsb_h.png); - top: 52px; - left: 282px; -} -.colorpicker_hsb_s { - background-image: url(../images/colorpicker_hsb_s.png); - top: 82px; - left: 282px; -} -.colorpicker_hsb_b { - background-image: url(../images/colorpicker_hsb_b.png); - top: 112px; - left: 282px; -} -.colorpicker_submit { - position: absolute; - width: 22px; - height: 22px; - background: url(../images/colorpicker_submit.png) top; - left: 322px; - top: 142px; - overflow: hidden; -} -.colorpicker_focus { - background-position: center; -} -.colorpicker_hex.colorpicker_focus { - background-position: bottom; -} -.colorpicker_submit.colorpicker_focus { - background-position: bottom; -} -.colorpicker_slider { - background-position: bottom; -} +.colorpicker { + width: 356px; + height: 176px; + overflow: hidden; + position: absolute; + background: url(../images/colorpicker_background.png); + font-family: Arial, Helvetica, sans-serif; + display: none; + z-index: 1003; /* so it can display above the jQuery dialog*/ +} +.colorpicker_color { + width: 150px; + height: 150px; + left: 14px; + top: 13px; + position: absolute; + background: #f00; + overflow: hidden; + cursor: crosshair; +} +.colorpicker_color div { + position: absolute; + top: 0; + left: 0; + width: 150px; + height: 150px; + background: url(../images/colorpicker_overlay.png); +} +.colorpicker_color div div { + position: absolute; + top: 0; + left: 0; + width: 11px; + height: 11px; + overflow: hidden; + background: url(../images/colorpicker_select.gif); + margin: -5px 0 0 -5px; +} +.colorpicker_hue { + position: absolute; + top: 13px; + left: 171px; + width: 35px; + height: 150px; + cursor: n-resize; +} +.colorpicker_hue div { + position: absolute; + width: 35px; + height: 9px; + overflow: hidden; + background: url(../images/colorpicker_indic.gif) left top; + margin: -4px 0 0 0; + left: 0px; +} +.colorpicker_new_color { + position: absolute; + width: 60px; + height: 30px; + left: 213px; + top: 13px; + background: #f00; +} +.colorpicker_current_color { + position: absolute; + width: 60px; + height: 30px; + left: 283px; + top: 13px; + background: #f00; +} +.colorpicker input { + background-color: transparent; + border: 1px solid transparent; + position: absolute; + font-size: 10px; + font-family: Arial, Helvetica, sans-serif; + color: #898989; + top: 4px; + right: 11px; + text-align: right; + margin: 0; + padding: 0; + height: 11px; +} +.colorpicker_hex { + position: absolute; + width: 72px; + height: 22px; + background: url(../images/colorpicker_hex.png) top; + left: 212px; + top: 142px; +} +.colorpicker_hex input { + right: 6px; +} +.colorpicker_field { + height: 22px; + width: 62px; + background-position: top; + position: absolute; +} +.colorpicker_field span { + position: absolute; + width: 12px; + height: 22px; + overflow: hidden; + top: 0; + right: 0; + cursor: n-resize; +} +.colorpicker_rgb_r { + background-image: url(../images/colorpicker_rgb_r.png); + top: 52px; + left: 212px; +} +.colorpicker_rgb_g { + background-image: url(../images/colorpicker_rgb_g.png); + top: 82px; + left: 212px; +} +.colorpicker_rgb_b { + background-image: url(../images/colorpicker_rgb_b.png); + top: 112px; + left: 212px; +} +.colorpicker_hsb_h { + background-image: url(../images/colorpicker_hsb_h.png); + top: 52px; + left: 282px; +} +.colorpicker_hsb_s { + background-image: url(../images/colorpicker_hsb_s.png); + top: 82px; + left: 282px; +} +.colorpicker_hsb_b { + background-image: url(../images/colorpicker_hsb_b.png); + top: 112px; + left: 282px; +} +.colorpicker_submit { + position: absolute; + width: 22px; + height: 22px; + background: url(../images/colorpicker_submit.png) top; + left: 322px; + top: 142px; + overflow: hidden; +} +.colorpicker_focus { + background-position: center; +} +.colorpicker_hex.colorpicker_focus { + background-position: bottom; +} +.colorpicker_submit.colorpicker_focus { + background-position: bottom; +} +.colorpicker_slider { + background-position: bottom; +} diff --git a/airtime_mvc/public/css/jquery.ui.timepicker.css b/airtime_mvc/public/css/jquery.ui.timepicker.css index 374da6bbb..01f57a5a9 100644 --- a/airtime_mvc/public/css/jquery.ui.timepicker.css +++ b/airtime_mvc/public/css/jquery.ui.timepicker.css @@ -1,72 +1,72 @@ -/* - * Timepicker stylesheet - * Highly inspired from datepicker - * FG - Nov 2010 - Web3R - * - * version 0.0.3 : Fixed some settings, more dynamic - * version 0.0.4 : Removed width:100% on tables - * version 0.1.1 : set width 0 on tables to fix an ie6 bug - */ - -.ui-timepicker-inline { display: inline; } - -#ui-timepicker-div { - padding: 0.2em; - z-index: 1000; -} -.ui-timepicker-table { display: inline-table; width: 0; } -.ui-timepicker-table table { margin:0.15em 0 0 0; border-collapse: collapse; } - -.ui-timepicker-hours, .ui-timepicker-minutes { padding: 0.2em; } - -.ui-timepicker-table .ui-timepicker-title { line-height: 1.8em; text-align: center; } -.ui-timepicker-table td { padding: 0.1em; width: 2.2em; } -.ui-timepicker-table th.periods { padding: 0.1em; width: 2.2em; } - -/* span for disabled cells */ -.ui-timepicker-table td span { - display:block; - padding:0.2em 0.3em 0.2em 0.5em; - width: 1.2em; - - text-align:right; - text-decoration:none; -} -/* anchors for clickable cells */ -.ui-timepicker-table td a { - display:block; - padding:0.2em 0.3em 0.2em 0.5em; - width: 1.2em; - cursor: pointer; - text-align:right; - text-decoration:none; -} - - -/* buttons and button pane styling */ -.ui-timepicker .ui-timepicker-buttonpane { - background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; -} -.ui-timepicker .ui-timepicker-buttonpane button { margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } -/* The close button */ -.ui-timepicker .ui-timepicker-close { float: right } - -/* the now button */ -.ui-timepicker .ui-timepicker-now { float: left; } - -/* the deselect button */ -.ui-timepicker .ui-timepicker-deselect { float: left; } - - -/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ -.ui-timepicker-cover { - display: none; /*sorry for IE5*/ - display/**/: block; /*sorry for IE5*/ - position: absolute; /*must have*/ - z-index: -1; /*must have*/ - filter: mask(); /*must have*/ - top: -4px; /*must have*/ - left: -4px; /*must have*/ - width: 200px; /*must have*/ - height: 200px; /*must have*/ +/* + * Timepicker stylesheet + * Highly inspired from datepicker + * FG - Nov 2010 - Web3R + * + * version 0.0.3 : Fixed some settings, more dynamic + * version 0.0.4 : Removed width:100% on tables + * version 0.1.1 : set width 0 on tables to fix an ie6 bug + */ + +.ui-timepicker-inline { display: inline; } + +#ui-timepicker-div { + padding: 0.2em; + z-index: 1000; +} +.ui-timepicker-table { display: inline-table; width: 0; } +.ui-timepicker-table table { margin:0.15em 0 0 0; border-collapse: collapse; } + +.ui-timepicker-hours, .ui-timepicker-minutes { padding: 0.2em; } + +.ui-timepicker-table .ui-timepicker-title { line-height: 1.8em; text-align: center; } +.ui-timepicker-table td { padding: 0.1em; width: 2.2em; } +.ui-timepicker-table th.periods { padding: 0.1em; width: 2.2em; } + +/* span for disabled cells */ +.ui-timepicker-table td span { + display:block; + padding:0.2em 0.3em 0.2em 0.5em; + width: 1.2em; + + text-align:right; + text-decoration:none; +} +/* anchors for clickable cells */ +.ui-timepicker-table td a { + display:block; + padding:0.2em 0.3em 0.2em 0.5em; + width: 1.2em; + cursor: pointer; + text-align:right; + text-decoration:none; +} + + +/* buttons and button pane styling */ +.ui-timepicker .ui-timepicker-buttonpane { + background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; +} +.ui-timepicker .ui-timepicker-buttonpane button { margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +/* The close button */ +.ui-timepicker .ui-timepicker-close { float: right } + +/* the now button */ +.ui-timepicker .ui-timepicker-now { float: left; } + +/* the deselect button */ +.ui-timepicker .ui-timepicker-deselect { float: left; } + + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-timepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ } \ No newline at end of file diff --git a/airtime_mvc/public/css/plupload.queue.css b/airtime_mvc/public/css/plupload.queue.css index 3766a71f7..3d5f8d042 100644 --- a/airtime_mvc/public/css/plupload.queue.css +++ b/airtime_mvc/public/css/plupload.queue.css @@ -1,176 +1,176 @@ -/* - Plupload -------------------------------------------------------------------- */ - -.plupload_button { - display: -moz-inline-box; /* FF < 3*/ - display: inline-block; - font: normal 12px sans-serif; - text-decoration: none; - color: #42454a; - border: 1px solid #bababa; - padding: 2px 8px 3px 20px; - margin-right: 4px; - background: #f3f3f3 url('img/buttons.png') no-repeat 0 center; - outline: 0; - - /* Optional rounded corners for browsers that support it */ - -moz-border-radius: 3px; - -khtml-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} - -.plupload_button:hover { - color: #000; - text-decoration: none; -} - -.plupload_disabled, a.plupload_disabled:hover { - color: #737373; - border-color: #c5c5c5; - background: #ededed url('img/buttons-disabled.png') no-repeat 0 center; - cursor: default; -} - -.plupload_add { - background-position: -181px center; -} - -.plupload_wrapper { - font: normal 11px Verdana,sans-serif; - width: 100%; -} - -.plupload_container { - padding: 8px; - background: url('img/transp50.png'); - /*-moz-border-radius: 5px;*/ -} - -.plupload_container input { - border: 1px solid #DDD; - font: normal 11px Verdana,sans-serif; - width: 98%; -} - -.plupload_header {background: #2A2C2E url('img/backgrounds.gif') repeat-x;} -.plupload_header_content { - min-height: 56px; - padding-left: 10px; - color: #FFF; -} -.plupload_header_title { - font: normal 18px sans-serif; - padding: 6px 0 3px; -} -.plupload_header_text { - font: normal 12px sans-serif; -} - -.plupload_filelist { - margin: 0; - padding: 0; - list-style: none; -} - -.plupload_scroll .plupload_filelist { - height: 185px; - background: #F5F5F5; - overflow-y: scroll; -} - -.plupload_filelist li { - padding: 10px 8px; - background: #F5F5F5 url('img/backgrounds.gif') repeat-x 0 -156px; - border-bottom: 1px solid #DDD; -} - -.plupload_filelist_header, .plupload_filelist_footer { - background: #DFDFDF; - padding: 8px 8px; - color: #42454A; -} -.plupload_filelist_header { - border-top: 1px solid #EEE; - border-bottom: 1px solid #CDCDCD; -} - -.plupload_filelist_footer {border-top: 1px solid #FFF; height: 22px; line-height: 20px; vertical-align: middle;} -.plupload_file_name {float: left; overflow: hidden} -.plupload_file_status {color: #777;} -.plupload_file_status span {color: #42454A;} -.plupload_file_size, .plupload_file_status, .plupload_progress { - float: right; - width: 80px; -} -.plupload_file_size, .plupload_file_status, .plupload_file_action {text-align: right;} - -.plupload_filelist .plupload_file_name {width: 68%;} - -.plupload_file_action { - float: right; - width: 16px; - height: 16px; - margin-left: 15px; -} - -.plupload_file_action * { - display: none; - width: 16px; - height: 16px; -} - -li.plupload_uploading {background: #ECF3DC url('img/backgrounds.gif') repeat-x 0 -238px;} -li.plupload_done {color:#AAA} - -li.plupload_delete a { - background: url('img/delete.gif'); -} - -li.plupload_failed a { - background: url('img/error.gif'); - cursor: default; -} - -li.plupload_done a { - background: url('img/done.gif'); - cursor: default; -} - -.plupload_progress, .plupload_upload_status { - display: none; -} - -.plupload_progress_container { - margin-top: 3px; - border: 1px solid #CCC; - background: #FFF; - padding: 1px; -} -.plupload_progress_bar { - width: 0px; - height: 7px; - background: #CDEB8B; -} - -.plupload_scroll .plupload_filelist_header .plupload_file_action, .plupload_scroll .plupload_filelist_footer .plupload_file_action { - margin-right: 17px; -} - -/* Floats */ - -.plupload_clear,.plupload_clearer {clear: both;} -.plupload_clearer, .plupload_progress_bar { - display: block; - font-size: 0; - line-height: 0; -} - -li.plupload_droptext { - background: transparent; - text-align: center; - vertical-align: middle; - border: 0; - line-height: 165px; -} +/* + Plupload +------------------------------------------------------------------- */ + +.plupload_button { + display: -moz-inline-box; /* FF < 3*/ + display: inline-block; + font: normal 12px sans-serif; + text-decoration: none; + color: #42454a; + border: 1px solid #bababa; + padding: 2px 8px 3px 20px; + margin-right: 4px; + background: #f3f3f3 url('img/buttons.png') no-repeat 0 center; + outline: 0; + + /* Optional rounded corners for browsers that support it */ + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.plupload_button:hover { + color: #000; + text-decoration: none; +} + +.plupload_disabled, a.plupload_disabled:hover { + color: #737373; + border-color: #c5c5c5; + background: #ededed url('img/buttons-disabled.png') no-repeat 0 center; + cursor: default; +} + +.plupload_add { + background-position: -181px center; +} + +.plupload_wrapper { + font: normal 11px Verdana,sans-serif; + width: 100%; +} + +.plupload_container { + padding: 8px; + background: url('img/transp50.png'); + /*-moz-border-radius: 5px;*/ +} + +.plupload_container input { + border: 1px solid #DDD; + font: normal 11px Verdana,sans-serif; + width: 98%; +} + +.plupload_header {background: #2A2C2E url('img/backgrounds.gif') repeat-x;} +.plupload_header_content { + min-height: 56px; + padding-left: 10px; + color: #FFF; +} +.plupload_header_title { + font: normal 18px sans-serif; + padding: 6px 0 3px; +} +.plupload_header_text { + font: normal 12px sans-serif; +} + +.plupload_filelist { + margin: 0; + padding: 0; + list-style: none; +} + +.plupload_scroll .plupload_filelist { + height: 185px; + background: #F5F5F5; + overflow-y: scroll; +} + +.plupload_filelist li { + padding: 10px 8px; + background: #F5F5F5 url('img/backgrounds.gif') repeat-x 0 -156px; + border-bottom: 1px solid #DDD; +} + +.plupload_filelist_header, .plupload_filelist_footer { + background: #DFDFDF; + padding: 8px 8px; + color: #42454A; +} +.plupload_filelist_header { + border-top: 1px solid #EEE; + border-bottom: 1px solid #CDCDCD; +} + +.plupload_filelist_footer {border-top: 1px solid #FFF; height: 22px; line-height: 20px; vertical-align: middle;} +.plupload_file_name {float: left; overflow: hidden} +.plupload_file_status {color: #777;} +.plupload_file_status span {color: #42454A;} +.plupload_file_size, .plupload_file_status, .plupload_progress { + float: right; + width: 80px; +} +.plupload_file_size, .plupload_file_status, .plupload_file_action {text-align: right;} + +.plupload_filelist .plupload_file_name {width: 68%;} + +.plupload_file_action { + float: right; + width: 16px; + height: 16px; + margin-left: 15px; +} + +.plupload_file_action * { + display: none; + width: 16px; + height: 16px; +} + +li.plupload_uploading {background: #ECF3DC url('img/backgrounds.gif') repeat-x 0 -238px;} +li.plupload_done {color:#AAA} + +li.plupload_delete a { + background: url('img/delete.gif'); +} + +li.plupload_failed a { + background: url('img/error.gif'); + cursor: default; +} + +li.plupload_done a { + background: url('img/done.gif'); + cursor: default; +} + +.plupload_progress, .plupload_upload_status { + display: none; +} + +.plupload_progress_container { + margin-top: 3px; + border: 1px solid #CCC; + background: #FFF; + padding: 1px; +} +.plupload_progress_bar { + width: 0px; + height: 7px; + background: #CDEB8B; +} + +.plupload_scroll .plupload_filelist_header .plupload_file_action, .plupload_scroll .plupload_filelist_footer .plupload_file_action { + margin-right: 17px; +} + +/* Floats */ + +.plupload_clear,.plupload_clearer {clear: both;} +.plupload_clearer, .plupload_progress_bar { + display: block; + font-size: 0; + line-height: 0; +} + +li.plupload_droptext { + background: transparent; + text-align: center; + vertical-align: middle; + border: 0; + line-height: 165px; +} diff --git a/airtime_mvc/public/css/pro_dropdown_3.css b/airtime_mvc/public/css/pro_dropdown_3.css index f83211876..ad31500ae 100644 --- a/airtime_mvc/public/css/pro_dropdown_3.css +++ b/airtime_mvc/public/css/pro_dropdown_3.css @@ -1,185 +1,185 @@ -/* ================================================================ -This copyright notice must be kept untouched in the stylesheet at -all times. - -The original version of this stylesheet and the associated (x)html -is available at http://www.stunicholls.com/menu/pro_dropdown_3.html -Copyright (c) 2005-2007 Stu Nicholls. All rights reserved. -This stylesheet and the associated (x)html may be modified in any -way to fit your requirements. -=================================================================== */ - -#nav { - padding:7px 0 0 6px; - margin:0; - list-style:none; - height:28px; - background:#353535; - position:relative; - z-index:500; - font-family:Arial, Helvetica, sans-serif; - border-top:1px solid #7e7e7e; - border-bottom:1px solid #242424; - -moz-box-shadow: 0 2px 5px rgba(0,0,0,.35); - -webkit-box-shadow: 0 2px 5px rgba(0,0,0,.35); - box-shadow: 0 2px 5px rgba(0,0,0,.35); -} -#nav li.top { - display:block; - float:left; - margin:0 5px 0 0; -} -#nav li a.top_link { - display:block; - float:left; - height:18px; - color:#ccc; - text-decoration:none; - font-size:11px; - text-transform:uppercase; - font-weight:bold; - padding:4px 0 0 14px; - cursor:pointer; -} -#nav li a.top_link span { - float:left; - display:block; - padding:0 14px 0 0; -} -#nav li a.top_link span.down { - float:left; - display:block; - padding:0 28px 0 0px; - background:url(images/down_arrow.png) no-repeat right 50%; - -} -#nav li:hover a.top_link, #nav li.active a.top_link, #nav li.active:hover a.top_link { - color:#fff; - background:#000; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} -#nav li:hover a.top_link span { - -} -#nav li:hover a.top_link span.down { - background:url(images/down_arrow.png) no-repeat right 50%; -} -/* Default list styling */ - -#nav li:hover { - position:relative; - z-index:200; -} -#nav li:hover ul.sub { - left:1px; - top:22px; - background: #202020; - padding:3px; - border:1px solid #161616; - white-space:nowrap; - width:200px; - height:auto; - z-index:300; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - -} -#nav li:hover ul.sub li { - display:block; - height:22px; - position:relative; - float:left; - width:200px; - font-weight:normal; -} -#nav li:hover ul.sub li a { - display:block; - font-size:12px; - height:20px; - width:198px; - line-height:20px; - text-indent:5px; - color:#fff; - text-decoration:none; - border:1px solid #202020; - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; -} -#nav li ul.sub li a.fly { - background:#202020 url(images/arrow.png) 190px 6px no-repeat; -} -#nav li:hover ul.sub li a:hover { - background:#3d3d3d; - color:#fff; - border-color:#4e4e4e; -} -#nav li:hover ul.sub li a.fly:hover { - background:#3d3d3d url(images/arrow_over.png) 190px 6px no-repeat; - color:#fff; -} -#nav li strong { - display:block; - font-size:12px; - height:20px; - width:198px; - line-height:20px; - margin-bottom:3px; - text-indent:6px; - color:#ff5d1a; - border-bottom:1px solid #414141; - cursor:default; - font-weight:bold; -} -#nav li:hover li:hover ul, #nav li:hover li:hover li:hover ul, #nav li:hover li:hover li:hover li:hover ul, #nav li:hover li:hover li:hover li:hover li:hover ul { - left:200px; - top:-4px; - background: #202020; - padding:3px; - border:1px solid #161616; - white-space:nowrap; - width:200px; - z-index:400; - height:auto; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} -#nav ul, #nav li:hover ul ul, #nav li:hover li:hover ul ul, #nav li:hover li:hover li:hover ul ul, #nav li:hover li:hover li:hover li:hover ul ul { - position:absolute; - left:-9999px; - top:-9999px; - width:0; - height:0; - margin:0; - padding:0; - list-style:none; -} -#nav li:hover li:hover a.fly, #nav li:hover li:hover li:hover a.fly, #nav li:hover li:hover li:hover li:hover a.fly, #nav li:hover li:hover li:hover li:hover li:hover a.fly { - background:#3d3d3d url(images/arrow_over.png) 190px 6px no-repeat; - color:#fff; - border-color:#4e4e4e; -} - - -#nav li:hover li:hover li:hover a.fly { - background:#3d3d3d url(images/arrow_over.png) 190px 6px no-repeat; - color:#fff; - border-color:#4e4e4e; -} -#nav li:hover li:hover li:hover li:hover li:hover a.fly { - background:#3d3d3d url(images/arrow_over.png) 190px 6px no-repeat; - color:#fff; - border-color:#4e4e4e; -} -#nav li:hover li:hover li a.fly, -#nav li:hover li:hover li:hover li a.fly, -#nav li:hover li:hover li:hover li:hover li a.fly { - background:#202020 url(images/arrow.png) 190px 6px no-repeat; - color:#fff; - border-color:#202020; -} - +/* ================================================================ +This copyright notice must be kept untouched in the stylesheet at +all times. + +The original version of this stylesheet and the associated (x)html +is available at http://www.stunicholls.com/menu/pro_dropdown_3.html +Copyright (c) 2005-2007 Stu Nicholls. All rights reserved. +This stylesheet and the associated (x)html may be modified in any +way to fit your requirements. +=================================================================== */ + +#nav { + padding:7px 0 0 6px; + margin:0; + list-style:none; + height:28px; + background:#353535; + position:relative; + z-index:500; + font-family:Arial, Helvetica, sans-serif; + border-top:1px solid #7e7e7e; + border-bottom:1px solid #242424; + -moz-box-shadow: 0 2px 5px rgba(0,0,0,.35); + -webkit-box-shadow: 0 2px 5px rgba(0,0,0,.35); + box-shadow: 0 2px 5px rgba(0,0,0,.35); +} +#nav li.top { + display:block; + float:left; + margin:0 5px 0 0; +} +#nav li a.top_link { + display:block; + float:left; + height:18px; + color:#ccc; + text-decoration:none; + font-size:11px; + text-transform:uppercase; + font-weight:bold; + padding:4px 0 0 14px; + cursor:pointer; +} +#nav li a.top_link span { + float:left; + display:block; + padding:0 14px 0 0; +} +#nav li a.top_link span.down { + float:left; + display:block; + padding:0 28px 0 0px; + background:url(images/down_arrow.png) no-repeat right 50%; + +} +#nav li:hover a.top_link, #nav li.active a.top_link, #nav li.active:hover a.top_link { + color:#fff; + background:#000; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +#nav li:hover a.top_link span { + +} +#nav li:hover a.top_link span.down { + background:url(images/down_arrow.png) no-repeat right 50%; +} +/* Default list styling */ + +#nav li:hover { + position:relative; + z-index:200; +} +#nav li:hover ul.sub { + left:1px; + top:22px; + background: #202020; + padding:3px; + border:1px solid #161616; + white-space:nowrap; + width:200px; + height:auto; + z-index:300; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + +} +#nav li:hover ul.sub li { + display:block; + height:22px; + position:relative; + float:left; + width:200px; + font-weight:normal; +} +#nav li:hover ul.sub li a { + display:block; + font-size:12px; + height:20px; + width:198px; + line-height:20px; + text-indent:5px; + color:#fff; + text-decoration:none; + border:1px solid #202020; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; +} +#nav li ul.sub li a.fly { + background:#202020 url(images/arrow.png) 190px 6px no-repeat; +} +#nav li:hover ul.sub li a:hover { + background:#3d3d3d; + color:#fff; + border-color:#4e4e4e; +} +#nav li:hover ul.sub li a.fly:hover { + background:#3d3d3d url(images/arrow_over.png) 190px 6px no-repeat; + color:#fff; +} +#nav li strong { + display:block; + font-size:12px; + height:20px; + width:198px; + line-height:20px; + margin-bottom:3px; + text-indent:6px; + color:#ff5d1a; + border-bottom:1px solid #414141; + cursor:default; + font-weight:bold; +} +#nav li:hover li:hover ul, #nav li:hover li:hover li:hover ul, #nav li:hover li:hover li:hover li:hover ul, #nav li:hover li:hover li:hover li:hover li:hover ul { + left:200px; + top:-4px; + background: #202020; + padding:3px; + border:1px solid #161616; + white-space:nowrap; + width:200px; + z-index:400; + height:auto; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +#nav ul, #nav li:hover ul ul, #nav li:hover li:hover ul ul, #nav li:hover li:hover li:hover ul ul, #nav li:hover li:hover li:hover li:hover ul ul { + position:absolute; + left:-9999px; + top:-9999px; + width:0; + height:0; + margin:0; + padding:0; + list-style:none; +} +#nav li:hover li:hover a.fly, #nav li:hover li:hover li:hover a.fly, #nav li:hover li:hover li:hover li:hover a.fly, #nav li:hover li:hover li:hover li:hover li:hover a.fly { + background:#3d3d3d url(images/arrow_over.png) 190px 6px no-repeat; + color:#fff; + border-color:#4e4e4e; +} + + +#nav li:hover li:hover li:hover a.fly { + background:#3d3d3d url(images/arrow_over.png) 190px 6px no-repeat; + color:#fff; + border-color:#4e4e4e; +} +#nav li:hover li:hover li:hover li:hover li:hover a.fly { + background:#3d3d3d url(images/arrow_over.png) 190px 6px no-repeat; + color:#fff; + border-color:#4e4e4e; +} +#nav li:hover li:hover li a.fly, +#nav li:hover li:hover li:hover li a.fly, +#nav li:hover li:hover li:hover li:hover li a.fly { + background:#202020 url(images/arrow.png) 190px 6px no-repeat; + color:#fff; + border-color:#202020; +} + diff --git a/airtime_mvc/public/css/redmond/jquery-ui-1.8.8.custom.css b/airtime_mvc/public/css/redmond/jquery-ui-1.8.8.custom.css index 4956e096e..3ac07ab95 100644 --- a/airtime_mvc/public/css/redmond/jquery-ui-1.8.8.custom.css +++ b/airtime_mvc/public/css/redmond/jquery-ui-1.8.8.custom.css @@ -1,1524 +1,1524 @@ -/* - * jQuery UI CSS Framework 1.8.6 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - */ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { - display: none; -} -.ui-helper-hidden-accessible { - position: absolute; - left: -99999999px; -} -.ui-helper-reset { - margin: 0; - padding: 0; - border: 0; - outline: 0; - line-height: 1.3; - text-decoration: none; - font-size: 100%; - list-style: none; -} -.ui-helper-clearfix:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} -.ui-helper-clearfix { - display: inline-block; -} -/* required comment for clearfix to work in Opera \*/ -* html .ui-helper-clearfix { - height:1%; -} -.ui-helper-clearfix { - display:block; -} -/* end clearfix */ -.ui-helper-zfix { - width: 100%; - height: 100%; - top: 0; - left: 0; - position: absolute; - opacity: 0; - filter:Alpha(Opacity=0); -} -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { - cursor: default !important; -} -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { - display: block; - text-indent: -99999px; - overflow: hidden; - background-repeat: no-repeat; -} -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} -/* - * jQuery UI CSS Framework 1.8.6 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - * - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Helvetica,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.2em&cornerRadius=0px&bgColorHeader=ebebeb&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=50&borderColorHeader=d3d3d3&fcHeader=444444&iconColorHeader=007fb3&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=dddddd&fcContent=444444&iconColorContent=ff0084&bgColorDefault=f6f6f6&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=100&borderColorDefault=d3d3d3&fcDefault=3b3b3b&iconColorDefault=666666&bgColorHover=007fb3&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=25&borderColorHover=007fb3&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=ffffff&bgTextureActive=01_flat.png&bgImgOpacityActive=65&borderColorActive=d3d3d3&fcActive=007fb3&iconColorActive=454545&bgColorHighlight=eff6eb&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=65a539&fcHighlight=65a539&iconColorHighlight=65a539&bgColorError=fae5e5&bgTextureError=01_flat.png&bgImgOpacityError=55&borderColorError=d00000&fcError=d00000&iconColorError=d00000&bgColorOverlay=9d9d9d&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=50&bgColorShadow=6c6c6c&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=6px&offsetTopShadow=-6px&offsetLeftShadow=-6px&cornerRadiusShadow=0px - */ - - -/* Component containers -----------------------------------*/ -.ui-widget { - font-family: Helvetica, Arial, sans-serif; - font-size: 1.2em; -} -.ui-widget .ui-widget { - font-size: 1em; -} -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { - font-family: Helvetica, Arial, sans-serif; - font-size: 12px; -} -.ui-widget-content { - border: 1px solid #5b5b5b; - background: #aaaaaa url(images/ui-bg_default_aaaaaa.png) repeat-x 0 0; - color: #1c1c1c; -} -.ui-widget-content a { - color: #444444; -} -.ui-widget-header { - border: 1px solid #5b5b5b; - background: #9a9a9a url(images/ui-bg_highlight.png) 0 0 repeat-x; - color: #444444; - font-weight: bold; -} -.ui-widget-header a { - color: #444444; -} -/* Interaction states -----------------------------------*/ - - -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { - border: 1px solid #5b5b5b; - background-color: #6e6e6e; - background: -moz-linear-gradient(top, #868686 0, #6e6e6e 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #868686), color-stop(100%, #6e6e6e)); - color: #ffffff; -} -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { - color: #ffffff; - text-decoration: none; -} -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { - border: 1px solid #242424; - background-color: #292929; - background: -moz-linear-gradient(top, #3b3b3b 0, #292929 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #3b3b3b), color-stop(100%, #292929)); - color: #ffffff; -} -.ui-state-hover a, .ui-state-hover a:hover { - color: #ffffff; - text-decoration: none; -} -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { - border: 1px solid #5b5b5b; - background: #c6c6c6; - color: #000; - outline:none; -} -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { - color: #000; - text-decoration: none; -} -.ui-widget :active { - outline: none; -} -.ui-widget-header .ui-state-default, -.ui-widget-header .ui-state-hover, -.ui-widget-header .ui-state-focus, -.ui-widget-header .ui-state-active { - font-weight:bold; -} -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { - border: 1px solid #65a539; - background: #eff6eb url(images/ui-bg_flat_55_eff6eb_40x100.png) 50% 50% repeat-x; - color: #65a539; -} -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a { - color: #65a539; -} -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { - border: 1px solid #d00000; - background: #fae5e5 url(images/ui-bg_flat_55_fae5e5_40x100.png) 50% 50% repeat-x; - color: #d00000; -} -.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { - color: #d00000; -} -.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { - color: #d00000; -} -.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { - font-weight: bold; -} -.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { - opacity: .7; - filter:Alpha(Opacity=70); - font-weight: normal; -} -.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { - opacity: .35; - filter:Alpha(Opacity=35); - background-image: none; -} -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { - width: 16px; - height: 16px; - background-image: url(images/ui-icons_ffffff_256x240.png); -} -.ui-widget-content .ui-icon { - background-image: url(images/ui-icons_ffffff_256x240.png); -} -.ui-widget-header .ui-icon { - background-image: url(images/ui-icons_ffffff_256x240.png); -} -.ui-state-default .ui-icon { - background-image: url(images/ui-icons_ffffff_256x240.png); -} -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon { - background-image: url(images/ui-icons_ff5d1a_256x240.png); -} -.ui-state-active .ui-icon { - background-image: url(images/ui-icons_ff5d1a_256x240.png); -} -.ui-state-highlight .ui-icon { - background-image: url(images/ui-icons_65a539_256x240.png); -} -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon { - background-image: url(images/ui-icons_d00000_256x240.png); -} -/* positioning */ -.ui-icon-carat-1-n { - background-position: 0 0; -} -.ui-icon-carat-1-ne { - background-position: -16px 0; -} -.ui-icon-carat-1-e { - background-position: -32px 0; -} -.ui-icon-carat-1-se { - background-position: -48px 0; -} -.ui-icon-carat-1-s { - background-position: -64px 0; -} -.ui-icon-carat-1-sw { - background-position: -80px 0; -} -.ui-icon-carat-1-w { - background-position: -96px 0; -} -.ui-icon-carat-1-nw { - background-position: -112px 0; -} -.ui-icon-carat-2-n-s { - background-position: -128px 0; -} -.ui-icon-carat-2-e-w { - background-position: -144px 0; -} -.ui-icon-triangle-1-n { - background-position: 0 -16px; -} -.ui-icon-triangle-1-ne { - background-position: -16px -16px; -} -.ui-icon-triangle-1-e { - background-position: -32px -16px; -} -.ui-icon-triangle-1-se { - background-position: -48px -16px; -} -.ui-icon-triangle-1-s { - background-position: -64px -16px; -} -.ui-icon-triangle-1-sw { - background-position: -80px -16px; -} -.ui-icon-triangle-1-w { - background-position: -96px -16px; -} -.ui-icon-triangle-1-nw { - background-position: -112px -16px; -} -.ui-icon-triangle-2-n-s { - background-position: -128px -16px; -} -.ui-icon-triangle-2-e-w { - background-position: -144px -16px; -} -.ui-icon-arrow-1-n { - background-position: 0 -32px; -} -.ui-icon-arrow-1-ne { - background-position: -16px -32px; -} -.ui-icon-arrow-1-e { - background-position: -32px -32px; -} -.ui-icon-arrow-1-se { - background-position: -48px -32px; -} -.ui-icon-arrow-1-s { - background-position: -64px -32px; -} -.ui-icon-arrow-1-sw { - background-position: -80px -32px; -} -.ui-icon-arrow-1-w { - background-position: -96px -32px; -} -.ui-icon-arrow-1-nw { - background-position: -112px -32px; -} -.ui-icon-arrow-2-n-s { - background-position: -128px -32px; -} -.ui-icon-arrow-2-ne-sw { - background-position: -144px -32px; -} -.ui-icon-arrow-2-e-w { - background-position: -160px -32px; -} -.ui-icon-arrow-2-se-nw { - background-position: -176px -32px; -} -.ui-icon-arrowstop-1-n { - background-position: -192px -32px; -} -.ui-icon-arrowstop-1-e { - background-position: -208px -32px; -} -.ui-icon-arrowstop-1-s { - background-position: -224px -32px; -} -.ui-icon-arrowstop-1-w { - background-position: -240px -32px; -} -.ui-icon-arrowthick-1-n { - background-position: 0 -48px; -} -.ui-icon-arrowthick-1-ne { - background-position: -16px -48px; -} -.ui-icon-arrowthick-1-e { - background-position: -32px -48px; -} -.ui-icon-arrowthick-1-se { - background-position: -48px -48px; -} -.ui-icon-arrowthick-1-s { - background-position: -64px -48px; -} -.ui-icon-arrowthick-1-sw { - background-position: -80px -48px; -} -.ui-icon-arrowthick-1-w { - background-position: -96px -48px; -} -.ui-icon-arrowthick-1-nw { - background-position: -112px -48px; -} -.ui-icon-arrowthick-2-n-s { - background-position: -128px -48px; -} -.ui-icon-arrowthick-2-ne-sw { - background-position: -144px -48px; -} -.ui-icon-arrowthick-2-e-w { - background-position: -160px -48px; -} -.ui-icon-arrowthick-2-se-nw { - background-position: -176px -48px; -} -.ui-icon-arrowthickstop-1-n { - background-position: -192px -48px; -} -.ui-icon-arrowthickstop-1-e { - background-position: -208px -48px; -} -.ui-icon-arrowthickstop-1-s { - background-position: -224px -48px; -} -.ui-icon-arrowthickstop-1-w { - background-position: -240px -48px; -} -.ui-icon-arrowreturnthick-1-w { - background-position: 0 -64px; -} -.ui-icon-arrowreturnthick-1-n { - background-position: -16px -64px; -} -.ui-icon-arrowreturnthick-1-e { - background-position: -32px -64px; -} -.ui-icon-arrowreturnthick-1-s { - background-position: -48px -64px; -} -.ui-icon-arrowreturn-1-w { - background-position: -64px -64px; -} -.ui-icon-arrowreturn-1-n { - background-position: -80px -64px; -} -.ui-icon-arrowreturn-1-e { - background-position: -96px -64px; -} -.ui-icon-arrowreturn-1-s { - background-position: -112px -64px; -} -.ui-icon-arrowrefresh-1-w { - background-position: -128px -64px; -} -.ui-icon-arrowrefresh-1-n { - background-position: -144px -64px; -} -.ui-icon-arrowrefresh-1-e { - background-position: -160px -64px; -} -.ui-icon-arrowrefresh-1-s { - background-position: -176px -64px; -} -.ui-icon-arrow-4 { - background-position: 0 -80px; -} -.ui-icon-arrow-4-diag { - background-position: -16px -80px; -} -.ui-icon-extlink { - background-position: -32px -80px; -} -.ui-icon-newwin { - background-position: -48px -80px; -} -.ui-icon-refresh { - background-position: -64px -80px; -} -.ui-icon-shuffle { - background-position: -80px -80px; -} -.ui-icon-transfer-e-w { - background-position: -96px -80px; -} -.ui-icon-transferthick-e-w { - background-position: -112px -80px; -} -.ui-icon-folder-collapsed { - background-position: 0 -96px; -} -.ui-icon-folder-open { - background-position: -16px -96px; -} -.ui-icon-document { - background-position: -32px -96px; -} -.ui-icon-document-b { - background-position: -48px -96px; -} -.ui-icon-note { - background-position: -64px -96px; -} -.ui-icon-mail-closed { - background-position: -80px -96px; -} -.ui-icon-mail-open { - background-position: -96px -96px; -} -.ui-icon-suitcase { - background-position: -112px -96px; -} -.ui-icon-comment { - background-position: -128px -96px; -} -.ui-icon-person { - background-position: -144px -96px; -} -.ui-icon-print { - background-position: -160px -96px; -} -.ui-icon-trash { - background-position: -176px -96px; -} -.ui-icon-locked { - background-position: -192px -96px; -} -.ui-icon-unlocked { - background-position: -208px -96px; -} -.ui-icon-bookmark { - background-position: -224px -96px; -} -.ui-icon-tag { - background-position: -240px -96px; -} -.ui-icon-home { - background-position: 0 -112px; -} -.ui-icon-flag { - background-position: -16px -112px; -} -.ui-icon-calendar { - background-position: -32px -112px; -} -.ui-icon-cart { - background-position: -48px -112px; -} -.ui-icon-pencil { - background-position: -64px -112px; -} -.ui-icon-clock { - background-position: -80px -112px; -} -.ui-icon-disk { - background-position: -96px -112px; -} -.ui-icon-calculator { - background-position: -112px -112px; -} -.ui-icon-zoomin { - background-position: -128px -112px; -} -.ui-icon-zoomout { - background-position: -144px -112px; -} -.ui-icon-search { - background-position: -160px -112px; -} -.ui-icon-wrench { - background-position: -176px -112px; -} -.ui-icon-gear { - background-position: -192px -112px; -} -.ui-icon-heart { - background-position: -208px -112px; -} -.ui-icon-star { - background-position: -224px -112px; -} -.ui-icon-link { - background-position: -240px -112px; -} -.ui-icon-cancel { - background-position: 0 -128px; -} -.ui-icon-plus { - background-position: -16px -128px; -} -.ui-icon-plusthick { - background-position: -32px -128px; -} -.ui-icon-minus { - background-position: -48px -128px; -} -.ui-icon-minusthick { - background-position: -64px -128px; -} -.ui-icon-close { - background-position: -80px -128px; -} -.ui-icon-closethick { - background-position: -96px -128px; -} -.ui-icon-key { - background-position: -112px -128px; -} -.ui-icon-lightbulb { - background-position: -128px -128px; -} -.ui-icon-scissors { - background-position: -144px -128px; -} -.ui-icon-clipboard { - background-position: -160px -128px; -} -.ui-icon-copy { - background-position: -176px -128px; -} -.ui-icon-contact { - background-position: -192px -128px; -} -.ui-icon-image { - background-position: -208px -128px; -} -.ui-icon-video { - background-position: -224px -128px; -} -.ui-icon-script { - background-position: -240px -128px; -} -.ui-icon-alert { - background-position: 0 -144px; -} -.ui-icon-info { - background-position: -16px -144px; -} -.ui-icon-notice { - background-position: -32px -144px; -} -.ui-icon-help { - background-position: -48px -144px; -} -.ui-icon-check { - background-position: -64px -144px; -} -.ui-icon-bullet { - background-position: -80px -144px; -} -.ui-icon-radio-off { - background-position: -96px -144px; -} -.ui-icon-radio-on { - background-position: -112px -144px; -} -.ui-icon-pin-w { - background-position: -128px -144px; -} -.ui-icon-pin-s { - background-position: -144px -144px; -} -.ui-icon-play { - background-position: 0 -160px; -} -.ui-icon-pause { - background-position: -16px -160px; -} -.ui-icon-seek-next { - background-position: -32px -160px; -} -.ui-icon-seek-prev { - background-position: -48px -160px; -} -.ui-icon-seek-end { - background-position: -64px -160px; -} -.ui-icon-seek-start { - background-position: -80px -160px; -} -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { - background-position: -80px -160px; -} -.ui-icon-stop { - background-position: -96px -160px; -} -.ui-icon-eject { - background-position: -112px -160px; -} -.ui-icon-volume-off { - background-position: -128px -160px; -} -.ui-icon-volume-on { - background-position: -144px -160px; -} -.ui-icon-power { - background-position: 0 -176px; -} -.ui-icon-signal-diag { - background-position: -16px -176px; -} -.ui-icon-signal { - background-position: -32px -176px; -} -.ui-icon-battery-0 { - background-position: -48px -176px; -} -.ui-icon-battery-1 { - background-position: -64px -176px; -} -.ui-icon-battery-2 { - background-position: -80px -176px; -} -.ui-icon-battery-3 { - background-position: -96px -176px; -} -.ui-icon-circle-plus { - background-position: 0 -192px; -} -.ui-icon-circle-minus { - background-position: -16px -192px; -} -.ui-icon-circle-close { - background-position: -32px -192px; -} -.ui-icon-circle-triangle-e { - background-position: -48px -192px; -} -.ui-icon-circle-triangle-s { - background-position: -64px -192px; -} -.ui-icon-circle-triangle-w { - background-position: -80px -192px; -} -.ui-icon-circle-triangle-n { - background-position: -96px -192px; -} -.ui-icon-circle-arrow-e { - background-position: -112px -192px; -} -.ui-icon-circle-arrow-s { - background-position: -128px -192px; -} -.ui-icon-circle-arrow-w { - background-position: -144px -192px; -} -.ui-icon-circle-arrow-n { - background-position: -160px -192px; -} -.ui-icon-circle-zoomin { - background-position: -176px -192px; -} -.ui-icon-circle-zoomout { - background-position: -192px -192px; -} -.ui-icon-circle-check { - background-position: -208px -192px; -} -.ui-icon-circlesmall-plus { - background-position: 0 -208px; -} -.ui-icon-circlesmall-minus { - background-position: -16px -208px; -} -.ui-icon-circlesmall-close { - background-position: -32px -208px; -} -.ui-icon-squaresmall-plus { - background-position: -48px -208px; -} -.ui-icon-squaresmall-minus { - background-position: -64px -208px; -} -.ui-icon-squaresmall-close { - background-position: -80px -208px; -} -.ui-icon-grip-dotted-vertical { - background-position: 0 -224px; -} -.ui-icon-grip-dotted-horizontal { - background-position: -16px -224px; -} -.ui-icon-grip-solid-vertical { - background-position: -32px -224px; -} -.ui-icon-grip-solid-horizontal { - background-position: -48px -224px; -} -.ui-icon-gripsmall-diagonal-se { - background-position: -64px -224px; -} -.ui-icon-grip-diagonal-se { - background-position: -80px -224px; -} -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-tl { - -moz-border-radius-topleft: 0px; - -webkit-border-top-left-radius: 0px; - border-top-left-radius: 0px; -} -.ui-corner-tr { - -moz-border-radius-topright: 0px; - -webkit-border-top-right-radius: 0px; - border-top-right-radius: 0px; -} -.ui-corner-bl { - -moz-border-radius-bottomleft: 0px; - -webkit-border-bottom-left-radius: 0px; - border-bottom-left-radius: 0px; -} -.ui-corner-br { - -moz-border-radius-bottomright: 0px; - -webkit-border-bottom-right-radius: 0px; - border-bottom-right-radius: 0px; -} -.ui-corner-top { - -moz-border-radius-topleft: 0px; - -webkit-border-top-left-radius: 0px; - border-top-left-radius: 0px; - -moz-border-radius-topright: 0px; - -webkit-border-top-right-radius: 0px; - border-top-right-radius: 0px; -} -.ui-corner-bottom { - -moz-border-radius-bottomleft: 0px; - -webkit-border-bottom-left-radius: 0px; - border-bottom-left-radius: 0px; - -moz-border-radius-bottomright: 0px; - -webkit-border-bottom-right-radius: 0px; - border-bottom-right-radius: 0px; -} -.ui-corner-right { - -moz-border-radius-topright: 0px; - -webkit-border-top-right-radius: 0px; - border-top-right-radius: 0px; - -moz-border-radius-bottomright: 0px; - -webkit-border-bottom-right-radius: 0px; - border-bottom-right-radius: 0px; -} -.ui-corner-left { - -moz-border-radius-topleft: 0px; - -webkit-border-top-left-radius: 0px; - border-top-left-radius: 0px; - -moz-border-radius-bottomleft: 0px; - -webkit-border-bottom-left-radius: 0px; - border-bottom-left-radius: 0px; -} -.ui-corner-all { - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - border-radius: 0px; -} -/* Overlays */ -.ui-widget-overlay { - background: #9d9d9d url(images/ui-bg_flat_0_9d9d9d_40x100.png) 50% 50% repeat-x; - opacity: .50; - filter:Alpha(Opacity=50); -} -.ui-widget-shadow { - margin: -6px 0 0 -6px; - padding: 6px; - background: #6c6c6c url(images/ui-bg_flat_0_6c6c6c_40x100.png) 50% 50% repeat-x; - opacity: .60; - filter:Alpha(Opacity=60); - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - border-radius: 0px; -}/* - * jQuery UI Resizable 1.8.6 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Resizable#theming - */ -.ui-resizable { - position: relative; -} -.ui-resizable-handle { - position: absolute; - font-size: 0.1px; - z-index: 99999; - display: block; -} -.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { - display: none; -} -.ui-resizable-n { - cursor: n-resize; - height: 7px; - width: 100%; - top: -5px; - left: 0; -} -.ui-resizable-s { - cursor: s-resize; - height: 7px; - width: 100%; - bottom: -5px; - left: 0; -} -.ui-resizable-e { - cursor: e-resize; - width: 7px; - right: -5px; - top: 0; - height: 100%; -} -.ui-resizable-w { - cursor: w-resize; - width: 7px; - left: -5px; - top: 0; - height: 100%; -} -.ui-resizable-se { - cursor: se-resize; - width: 12px; - height: 12px; - right: 1px; - bottom: 1px; -} -.ui-resizable-sw { - cursor: sw-resize; - width: 9px; - height: 9px; - left: -5px; - bottom: -5px; -} -.ui-resizable-nw { - cursor: nw-resize; - width: 9px; - height: 9px; - left: -5px; - top: -5px; -} -.ui-resizable-ne { - cursor: ne-resize; - width: 9px; - height: 9px; - right: -5px; - top: -5px; -}/* - * jQuery UI Selectable 1.8.6 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Selectable#theming - */ -.ui-selectable-helper { - position: absolute; - z-index: 100; - border:1px dotted black; -} -/* - * jQuery UI Accordion 1.8.6 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Accordion#theming - */ -/* IE/Win - Fix animation bug - #4615 */ -.ui-accordion { - width: 100%; -} -.ui-accordion .ui-accordion-header { - cursor: pointer; - position: relative; - margin-top: 1px; - zoom: 1; - font-weight:bold; -} -.ui-accordion .ui-accordion-li-fix { - display: inline; -} -.ui-accordion .ui-accordion-header-active { - border-bottom: 0 !important; -} -.ui-accordion .ui-accordion-header a { - display: block; - font-size: 1em; - padding: .5em .5em .5em .7em; -} -.ui-accordion-icons .ui-accordion-header a { - padding-left: 2.2em; -} -.ui-accordion .ui-accordion-header .ui-icon { - position: absolute; - left: .5em; - top: 50%; - margin-top: -8px; -} -.ui-accordion .ui-accordion-content { - padding: 10px; - border-top: 0; - margin-top: -2px; - position: relative; - top: 1px; - margin-bottom: 2px; - overflow: auto; - display: none; - zoom: 1; -} -.ui-accordion .ui-accordion-content-active { - display: block; -}/* - * jQuery UI Autocomplete 1.8.6 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Autocomplete#theming - */ -.ui-autocomplete { - position: absolute; - cursor: default; -} -/* workarounds */ -* html .ui-autocomplete { - width:1px; -} /* without this, the menu expands to 100% in IE6 */ -/* - * jQuery UI Menu 1.8.6 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Menu#theming - */ -.ui-menu { - list-style:none; - padding: 2px; - margin: 0; - display:block; - float: left; -} -.ui-menu .ui-menu { - margin-top: -3px; -} -.ui-menu .ui-menu-item { - margin:0; - padding: 0; - zoom: 1; - float: left; - clear: left; - width: 100%; -} -.ui-menu .ui-menu-item a { - text-decoration:none; - display:block; - padding:.2em .4em; - line-height:1.5; - zoom:1; -} -.ui-menu .ui-menu-item a.ui-state-hover, .ui-menu .ui-menu-item a.ui-state-active { - font-weight: normal; - margin: -1px; -} -/* - * jQuery UI Button 1.8.6 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Button#theming - */ -.ui-button { - display: inline-block; - position: relative; - padding: 0; - margin-right: .1em; - text-decoration: none !important; - cursor: pointer; - text-align: center; - zoom: 1; - overflow: visible; -} /* the overflow property removes extra width in IE */ -.ui-button-icon-only { - width: 2.2em; -} /* to make room for the icon, a width needs to be set here */ -button.ui-button-icon-only { - width: 2.4em; -} /* button elements seem to need a little more width */ -.ui-button-icons-only { - width: 3.4em; -} -button.ui-button-icons-only { - width: 3.7em; -} -/*button text element */ -.ui-button .ui-button-text { - display: block; - line-height: 1.4; -} -.ui-button-text-only .ui-button-text { - padding: .4em 1em; -} -.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { - padding: .4em; - text-indent: -9999999px; -} -.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { - padding: .4em 1em .4em 2.1em; -} -.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { - padding: .4em 2.1em .4em 1em; -} -.ui-button-text-icons .ui-button-text { - padding-left: 2.1em; - padding-right: 2.1em; -} -/* no icon support for input elements, provide padding by default */ -input.ui-button { - padding: .4em 1em; -} -/*button icon element(s) */ -.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { - position: absolute; - top: 50%; - margin-top: -8px; - left: 0.2em; -} -.ui-button-icon-only .ui-icon { - left: 50%; - margin-left: -8px; -} -.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { - left: .5em; -} -.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { - right: .5em; -} -.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { - right: .5em; -} -/*button sets*/ -.ui-buttonset { - margin-right: 7px; -} -.ui-buttonset .ui-button { - margin-left: 0; - margin-right: -.3em; -} - -/* workarounds */ - -button.ui-button.::-moz-focus-inner { - border: 0; - padding: 0; -} - - /* reset extra padding in Firefox */ -/* - * jQuery UI Dialog 1.8.6 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog#theming - */ -.ui-dialog { - position: absolute; - padding: .4em; - width: 300px; - overflow: hidden; - border-width: 3px; -} -.ui-dialog .ui-dialog-titlebar { - padding: 6px 8px 6px 8px; - position: relative; -} -.ui-dialog .ui-dialog-title { - float: left; - margin: .1em 16px .2em 0; -} -.ui-dialog .ui-dialog-titlebar-close { - position: absolute; - right: .3em; - top: 50%; - width: 19px; - margin: -10px 0 0 0; - padding: 1px; - height: 18px; -} -.ui-dialog .ui-dialog-titlebar-close span { - display: block; - margin: 1px; -} -.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { - padding: 0; -} -.ui-dialog .ui-dialog-content { - position: relative; - border: 0; - padding: .5em 1em; - background: none; - overflow: auto; - zoom: 1; - -} -.ui-dialog .ui-dialog-buttonpane { - text-align: left; - border-width: 1px 0 0 0; - background: none; - margin: .5em 0 0 0; - margin: 0.3em -0.4em 0; - padding: 0.3em 1em 0 0.4em; - border-color: #9f9f9f; -} -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { - float: right; -} -.ui-dialog .ui-dialog-buttonpane button { - margin: .5em .4em .5em 0; - cursor: pointer; -} -.ui-dialog .ui-resizable-se { - width: 14px; - height: 14px; - right: 3px; - bottom: 3px; -} -.ui-draggable .ui-dialog-titlebar { - cursor: move; -} -/* - * jQuery UI Slider 1.8.6 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Slider#theming - */ -.ui-slider { - position: relative; - text-align: left; -} -.ui-slider .ui-slider-handle { - position: absolute; - z-index: 2; - width: 1.2em; - height: 1.2em; - cursor: default; -} -.ui-slider .ui-slider-range { - position: absolute; - z-index: 1; - font-size: .7em; - display: block; - border: 0; - background-position: 0 0; -} -.ui-slider-horizontal { - height: .8em; -} -.ui-slider-horizontal .ui-slider-handle { - top: -.3em; - margin-left: -.6em; -} -.ui-slider-horizontal .ui-slider-range { - top: 0; - height: 100%; -} -.ui-slider-horizontal .ui-slider-range-min { - left: 0; -} -.ui-slider-horizontal .ui-slider-range-max { - right: 0; -} -.ui-slider-vertical { - width: .8em; - height: 100px; -} -.ui-slider-vertical .ui-slider-handle { - left: -.3em; - margin-left: 0; - margin-bottom: -.6em; -} -.ui-slider-vertical .ui-slider-range { - left: 0; - width: 100%; -} -.ui-slider-vertical .ui-slider-range-min { - bottom: 0; -} -.ui-slider-vertical .ui-slider-range-max { - top: 0; -}/* - * jQuery UI Tabs 1.8.6 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Tabs#theming - */ -.ui-tabs { - position: relative; - padding: 4px; - zoom: 1; -} /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ -.ui-tabs .ui-tabs-nav { - margin: 0; - padding: .2em .2em 0; -} -.ui-tabs .ui-tabs-nav li { - list-style: none; - float: left; - position: relative; - top: 1px; - margin: 0 .2em 1px 0; - border-bottom: 0 !important; - padding: 0; - white-space: nowrap; -} -.ui-tabs .ui-tabs-nav li a { - float: left; - padding: .5em 1em; - text-decoration: none; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-selected { - margin-bottom: 0; - padding-bottom: 1px; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { - cursor: text; -} -.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { - cursor: pointer; -} /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ -.ui-tabs .ui-tabs-panel { - display: block; - border-width: 0; - /*padding: 1em 1.4em;*/ - background: none; -} -.ui-tabs .ui-tabs-hide { - display: none !important; -} -/* - * jQuery UI Datepicker 1.8.6 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Datepicker#theming - */ -.ui-datepicker { - width: 17em; - padding: .2em .2em 0; -} -.ui-datepicker .ui-datepicker-header { - position:relative; - padding:.2em 0; -} -.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { - position:absolute; - top: 2px; - width: 1.8em; - height: 1.8em; -} -.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { - top: 1px; -} -.ui-datepicker .ui-datepicker-prev { - left:2px; -} -.ui-datepicker .ui-datepicker-next { - right:2px; -} -.ui-datepicker .ui-datepicker-prev-hover { - left:1px; -} -.ui-datepicker .ui-datepicker-next-hover { - right:1px; -} -.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { - display: block; - position: absolute; - left: 50%; - margin-left: -8px; - top: 50%; - margin-top: -8px; -} -.ui-datepicker .ui-datepicker-title { - margin: 0 2.3em; - line-height: 1.8em; - text-align: center; -} -.ui-datepicker .ui-datepicker-title select { - font-size:1em; - margin:1px 0; -} -.ui-datepicker select.ui-datepicker-month-year { - width: 100%; -} -.ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { - width: 49%; -} -.ui-datepicker table { - width: 100%; - font-size: .9em; - border-collapse: collapse; - margin:0 0 .4em; -} -.ui-datepicker th { - padding: .7em .3em; - text-align: center; - font-weight: bold; - border: 0; -} -.ui-datepicker td { - border: 0; - padding: 1px; -} -.ui-datepicker td span, .ui-datepicker td a { - display: block; - padding: .2em; - text-align: right; - text-decoration: none; -} -.ui-datepicker .ui-datepicker-buttonpane { - background-image: none; - margin: .7em 0 0 0; - padding:0 .2em; - border-left: 0; - border-right: 0; - border-bottom: 0; -} -.ui-datepicker .ui-datepicker-buttonpane button { - float: right; - margin: .5em .2em .4em; - cursor: pointer; - padding: .2em .6em .3em .6em; - width:auto; - overflow:visible; -} -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { - float:left; -} -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { - width:auto; -} -.ui-datepicker-multi .ui-datepicker-group { - float:left; -} -.ui-datepicker-multi .ui-datepicker-group table { - width:95%; - margin:0 auto .4em; -} -.ui-datepicker-multi-2 .ui-datepicker-group { - width:50%; -} -.ui-datepicker-multi-3 .ui-datepicker-group { - width:33.3%; -} -.ui-datepicker-multi-4 .ui-datepicker-group { - width:25%; -} -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { - border-left-width:0; -} -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { - border-left-width:0; -} -.ui-datepicker-multi .ui-datepicker-buttonpane { - clear:left; -} -.ui-datepicker-row-break { - clear:both; - width:100%; -} -/* RTL support */ -.ui-datepicker-rtl { - direction: rtl; -} -.ui-datepicker-rtl .ui-datepicker-prev { - right: 2px; - left: auto; -} -.ui-datepicker-rtl .ui-datepicker-next { - left: 2px; - right: auto; -} -.ui-datepicker-rtl .ui-datepicker-prev:hover { - right: 1px; - left: auto; -} -.ui-datepicker-rtl .ui-datepicker-next:hover { - left: 1px; - right: auto; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane { - clear:right; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane button { - float: left; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { - float:right; -} -.ui-datepicker-rtl .ui-datepicker-group { - float:right; -} -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { - border-right-width:0; - border-left-width:1px; -} -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { - border-right-width:0; - border-left-width:1px; -} -/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ -.ui-datepicker-cover { - display: none; /*sorry for IE5*/ - display/**/: block; /*sorry for IE5*/ - position: absolute; /*must have*/ - z-index: -1; /*must have*/ - filter: mask(); /*must have*/ - top: -4px; /*must have*/ - left: -4px; /*must have*/ - width: 200px; /*must have*/ - height: 200px; /*must have*/ -}/* - * jQuery UI Progressbar 1.8.6 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Progressbar#theming - */ -.ui-progressbar { - height:2em; - text-align: left; -} -.ui-progressbar .ui-progressbar-value { - margin: -1px; - height:100%; -} - - -.ui-datepicker { - display:none; +/* + * jQuery UI CSS Framework 1.8.6 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + position: absolute; + left: -99999999px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} +.ui-helper-clearfix { + display: inline-block; +} +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { + height:1%; +} +.ui-helper-clearfix { + display:block; +} +/* end clearfix */ +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); +} +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +/* + * jQuery UI CSS Framework 1.8.6 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Helvetica,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.2em&cornerRadius=0px&bgColorHeader=ebebeb&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=50&borderColorHeader=d3d3d3&fcHeader=444444&iconColorHeader=007fb3&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=dddddd&fcContent=444444&iconColorContent=ff0084&bgColorDefault=f6f6f6&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=100&borderColorDefault=d3d3d3&fcDefault=3b3b3b&iconColorDefault=666666&bgColorHover=007fb3&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=25&borderColorHover=007fb3&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=ffffff&bgTextureActive=01_flat.png&bgImgOpacityActive=65&borderColorActive=d3d3d3&fcActive=007fb3&iconColorActive=454545&bgColorHighlight=eff6eb&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=65a539&fcHighlight=65a539&iconColorHighlight=65a539&bgColorError=fae5e5&bgTextureError=01_flat.png&bgImgOpacityError=55&borderColorError=d00000&fcError=d00000&iconColorError=d00000&bgColorOverlay=9d9d9d&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=50&bgColorShadow=6c6c6c&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=6px&offsetTopShadow=-6px&offsetLeftShadow=-6px&cornerRadiusShadow=0px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Helvetica, Arial, sans-serif; + font-size: 1.2em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { + font-family: Helvetica, Arial, sans-serif; + font-size: 12px; +} +.ui-widget-content { + border: 1px solid #5b5b5b; + background: #aaaaaa url(images/ui-bg_default_aaaaaa.png) repeat-x 0 0; + color: #1c1c1c; +} +.ui-widget-content a { + color: #444444; +} +.ui-widget-header { + border: 1px solid #5b5b5b; + background: #9a9a9a url(images/ui-bg_highlight.png) 0 0 repeat-x; + color: #444444; + font-weight: bold; +} +.ui-widget-header a { + color: #444444; +} +/* Interaction states +----------------------------------*/ + + +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { + border: 1px solid #5b5b5b; + background-color: #6e6e6e; + background: -moz-linear-gradient(top, #868686 0, #6e6e6e 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #868686), color-stop(100%, #6e6e6e)); + color: #ffffff; +} +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { + color: #ffffff; + text-decoration: none; +} +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { + border: 1px solid #242424; + background-color: #292929; + background: -moz-linear-gradient(top, #3b3b3b 0, #292929 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #3b3b3b), color-stop(100%, #292929)); + color: #ffffff; +} +.ui-state-hover a, .ui-state-hover a:hover { + color: #ffffff; + text-decoration: none; +} +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { + border: 1px solid #5b5b5b; + background: #c6c6c6; + color: #000; + outline:none; +} +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { + color: #000; + text-decoration: none; +} +.ui-widget :active { + outline: none; +} +.ui-widget-header .ui-state-default, +.ui-widget-header .ui-state-hover, +.ui-widget-header .ui-state-focus, +.ui-widget-header .ui-state-active { + font-weight:bold; +} +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { + border: 1px solid #65a539; + background: #eff6eb url(images/ui-bg_flat_55_eff6eb_40x100.png) 50% 50% repeat-x; + color: #65a539; +} +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a { + color: #65a539; +} +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { + border: 1px solid #d00000; + background: #fae5e5 url(images/ui-bg_flat_55_fae5e5_40x100.png) 50% 50% repeat-x; + color: #d00000; +} +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { + color: #d00000; +} +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { + color: #d00000; +} +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); + font-weight: normal; +} +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); + background-image: none; +} +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; + background-image: url(images/ui-icons_ffffff_256x240.png); +} +.ui-widget-content .ui-icon { + background-image: url(images/ui-icons_ffffff_256x240.png); +} +.ui-widget-header .ui-icon { + background-image: url(images/ui-icons_ffffff_256x240.png); +} +.ui-state-default .ui-icon { + background-image: url(images/ui-icons_ffffff_256x240.png); +} +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon { + background-image: url(images/ui-icons_ff5d1a_256x240.png); +} +.ui-state-active .ui-icon { + background-image: url(images/ui-icons_ff5d1a_256x240.png); +} +.ui-state-highlight .ui-icon { + background-image: url(images/ui-icons_65a539_256x240.png); +} +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon { + background-image: url(images/ui-icons_d00000_256x240.png); +} +/* positioning */ +.ui-icon-carat-1-n { + background-position: 0 0; +} +.ui-icon-carat-1-ne { + background-position: -16px 0; +} +.ui-icon-carat-1-e { + background-position: -32px 0; +} +.ui-icon-carat-1-se { + background-position: -48px 0; +} +.ui-icon-carat-1-s { + background-position: -64px 0; +} +.ui-icon-carat-1-sw { + background-position: -80px 0; +} +.ui-icon-carat-1-w { + background-position: -96px 0; +} +.ui-icon-carat-1-nw { + background-position: -112px 0; +} +.ui-icon-carat-2-n-s { + background-position: -128px 0; +} +.ui-icon-carat-2-e-w { + background-position: -144px 0; +} +.ui-icon-triangle-1-n { + background-position: 0 -16px; +} +.ui-icon-triangle-1-ne { + background-position: -16px -16px; +} +.ui-icon-triangle-1-e { + background-position: -32px -16px; +} +.ui-icon-triangle-1-se { + background-position: -48px -16px; +} +.ui-icon-triangle-1-s { + background-position: -64px -16px; +} +.ui-icon-triangle-1-sw { + background-position: -80px -16px; +} +.ui-icon-triangle-1-w { + background-position: -96px -16px; +} +.ui-icon-triangle-1-nw { + background-position: -112px -16px; +} +.ui-icon-triangle-2-n-s { + background-position: -128px -16px; +} +.ui-icon-triangle-2-e-w { + background-position: -144px -16px; +} +.ui-icon-arrow-1-n { + background-position: 0 -32px; +} +.ui-icon-arrow-1-ne { + background-position: -16px -32px; +} +.ui-icon-arrow-1-e { + background-position: -32px -32px; +} +.ui-icon-arrow-1-se { + background-position: -48px -32px; +} +.ui-icon-arrow-1-s { + background-position: -64px -32px; +} +.ui-icon-arrow-1-sw { + background-position: -80px -32px; +} +.ui-icon-arrow-1-w { + background-position: -96px -32px; +} +.ui-icon-arrow-1-nw { + background-position: -112px -32px; +} +.ui-icon-arrow-2-n-s { + background-position: -128px -32px; +} +.ui-icon-arrow-2-ne-sw { + background-position: -144px -32px; +} +.ui-icon-arrow-2-e-w { + background-position: -160px -32px; +} +.ui-icon-arrow-2-se-nw { + background-position: -176px -32px; +} +.ui-icon-arrowstop-1-n { + background-position: -192px -32px; +} +.ui-icon-arrowstop-1-e { + background-position: -208px -32px; +} +.ui-icon-arrowstop-1-s { + background-position: -224px -32px; +} +.ui-icon-arrowstop-1-w { + background-position: -240px -32px; +} +.ui-icon-arrowthick-1-n { + background-position: 0 -48px; +} +.ui-icon-arrowthick-1-ne { + background-position: -16px -48px; +} +.ui-icon-arrowthick-1-e { + background-position: -32px -48px; +} +.ui-icon-arrowthick-1-se { + background-position: -48px -48px; +} +.ui-icon-arrowthick-1-s { + background-position: -64px -48px; +} +.ui-icon-arrowthick-1-sw { + background-position: -80px -48px; +} +.ui-icon-arrowthick-1-w { + background-position: -96px -48px; +} +.ui-icon-arrowthick-1-nw { + background-position: -112px -48px; +} +.ui-icon-arrowthick-2-n-s { + background-position: -128px -48px; +} +.ui-icon-arrowthick-2-ne-sw { + background-position: -144px -48px; +} +.ui-icon-arrowthick-2-e-w { + background-position: -160px -48px; +} +.ui-icon-arrowthick-2-se-nw { + background-position: -176px -48px; +} +.ui-icon-arrowthickstop-1-n { + background-position: -192px -48px; +} +.ui-icon-arrowthickstop-1-e { + background-position: -208px -48px; +} +.ui-icon-arrowthickstop-1-s { + background-position: -224px -48px; +} +.ui-icon-arrowthickstop-1-w { + background-position: -240px -48px; +} +.ui-icon-arrowreturnthick-1-w { + background-position: 0 -64px; +} +.ui-icon-arrowreturnthick-1-n { + background-position: -16px -64px; +} +.ui-icon-arrowreturnthick-1-e { + background-position: -32px -64px; +} +.ui-icon-arrowreturnthick-1-s { + background-position: -48px -64px; +} +.ui-icon-arrowreturn-1-w { + background-position: -64px -64px; +} +.ui-icon-arrowreturn-1-n { + background-position: -80px -64px; +} +.ui-icon-arrowreturn-1-e { + background-position: -96px -64px; +} +.ui-icon-arrowreturn-1-s { + background-position: -112px -64px; +} +.ui-icon-arrowrefresh-1-w { + background-position: -128px -64px; +} +.ui-icon-arrowrefresh-1-n { + background-position: -144px -64px; +} +.ui-icon-arrowrefresh-1-e { + background-position: -160px -64px; +} +.ui-icon-arrowrefresh-1-s { + background-position: -176px -64px; +} +.ui-icon-arrow-4 { + background-position: 0 -80px; +} +.ui-icon-arrow-4-diag { + background-position: -16px -80px; +} +.ui-icon-extlink { + background-position: -32px -80px; +} +.ui-icon-newwin { + background-position: -48px -80px; +} +.ui-icon-refresh { + background-position: -64px -80px; +} +.ui-icon-shuffle { + background-position: -80px -80px; +} +.ui-icon-transfer-e-w { + background-position: -96px -80px; +} +.ui-icon-transferthick-e-w { + background-position: -112px -80px; +} +.ui-icon-folder-collapsed { + background-position: 0 -96px; +} +.ui-icon-folder-open { + background-position: -16px -96px; +} +.ui-icon-document { + background-position: -32px -96px; +} +.ui-icon-document-b { + background-position: -48px -96px; +} +.ui-icon-note { + background-position: -64px -96px; +} +.ui-icon-mail-closed { + background-position: -80px -96px; +} +.ui-icon-mail-open { + background-position: -96px -96px; +} +.ui-icon-suitcase { + background-position: -112px -96px; +} +.ui-icon-comment { + background-position: -128px -96px; +} +.ui-icon-person { + background-position: -144px -96px; +} +.ui-icon-print { + background-position: -160px -96px; +} +.ui-icon-trash { + background-position: -176px -96px; +} +.ui-icon-locked { + background-position: -192px -96px; +} +.ui-icon-unlocked { + background-position: -208px -96px; +} +.ui-icon-bookmark { + background-position: -224px -96px; +} +.ui-icon-tag { + background-position: -240px -96px; +} +.ui-icon-home { + background-position: 0 -112px; +} +.ui-icon-flag { + background-position: -16px -112px; +} +.ui-icon-calendar { + background-position: -32px -112px; +} +.ui-icon-cart { + background-position: -48px -112px; +} +.ui-icon-pencil { + background-position: -64px -112px; +} +.ui-icon-clock { + background-position: -80px -112px; +} +.ui-icon-disk { + background-position: -96px -112px; +} +.ui-icon-calculator { + background-position: -112px -112px; +} +.ui-icon-zoomin { + background-position: -128px -112px; +} +.ui-icon-zoomout { + background-position: -144px -112px; +} +.ui-icon-search { + background-position: -160px -112px; +} +.ui-icon-wrench { + background-position: -176px -112px; +} +.ui-icon-gear { + background-position: -192px -112px; +} +.ui-icon-heart { + background-position: -208px -112px; +} +.ui-icon-star { + background-position: -224px -112px; +} +.ui-icon-link { + background-position: -240px -112px; +} +.ui-icon-cancel { + background-position: 0 -128px; +} +.ui-icon-plus { + background-position: -16px -128px; +} +.ui-icon-plusthick { + background-position: -32px -128px; +} +.ui-icon-minus { + background-position: -48px -128px; +} +.ui-icon-minusthick { + background-position: -64px -128px; +} +.ui-icon-close { + background-position: -80px -128px; +} +.ui-icon-closethick { + background-position: -96px -128px; +} +.ui-icon-key { + background-position: -112px -128px; +} +.ui-icon-lightbulb { + background-position: -128px -128px; +} +.ui-icon-scissors { + background-position: -144px -128px; +} +.ui-icon-clipboard { + background-position: -160px -128px; +} +.ui-icon-copy { + background-position: -176px -128px; +} +.ui-icon-contact { + background-position: -192px -128px; +} +.ui-icon-image { + background-position: -208px -128px; +} +.ui-icon-video { + background-position: -224px -128px; +} +.ui-icon-script { + background-position: -240px -128px; +} +.ui-icon-alert { + background-position: 0 -144px; +} +.ui-icon-info { + background-position: -16px -144px; +} +.ui-icon-notice { + background-position: -32px -144px; +} +.ui-icon-help { + background-position: -48px -144px; +} +.ui-icon-check { + background-position: -64px -144px; +} +.ui-icon-bullet { + background-position: -80px -144px; +} +.ui-icon-radio-off { + background-position: -96px -144px; +} +.ui-icon-radio-on { + background-position: -112px -144px; +} +.ui-icon-pin-w { + background-position: -128px -144px; +} +.ui-icon-pin-s { + background-position: -144px -144px; +} +.ui-icon-play { + background-position: 0 -160px; +} +.ui-icon-pause { + background-position: -16px -160px; +} +.ui-icon-seek-next { + background-position: -32px -160px; +} +.ui-icon-seek-prev { + background-position: -48px -160px; +} +.ui-icon-seek-end { + background-position: -64px -160px; +} +.ui-icon-seek-start { + background-position: -80px -160px; +} +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { + background-position: -80px -160px; +} +.ui-icon-stop { + background-position: -96px -160px; +} +.ui-icon-eject { + background-position: -112px -160px; +} +.ui-icon-volume-off { + background-position: -128px -160px; +} +.ui-icon-volume-on { + background-position: -144px -160px; +} +.ui-icon-power { + background-position: 0 -176px; +} +.ui-icon-signal-diag { + background-position: -16px -176px; +} +.ui-icon-signal { + background-position: -32px -176px; +} +.ui-icon-battery-0 { + background-position: -48px -176px; +} +.ui-icon-battery-1 { + background-position: -64px -176px; +} +.ui-icon-battery-2 { + background-position: -80px -176px; +} +.ui-icon-battery-3 { + background-position: -96px -176px; +} +.ui-icon-circle-plus { + background-position: 0 -192px; +} +.ui-icon-circle-minus { + background-position: -16px -192px; +} +.ui-icon-circle-close { + background-position: -32px -192px; +} +.ui-icon-circle-triangle-e { + background-position: -48px -192px; +} +.ui-icon-circle-triangle-s { + background-position: -64px -192px; +} +.ui-icon-circle-triangle-w { + background-position: -80px -192px; +} +.ui-icon-circle-triangle-n { + background-position: -96px -192px; +} +.ui-icon-circle-arrow-e { + background-position: -112px -192px; +} +.ui-icon-circle-arrow-s { + background-position: -128px -192px; +} +.ui-icon-circle-arrow-w { + background-position: -144px -192px; +} +.ui-icon-circle-arrow-n { + background-position: -160px -192px; +} +.ui-icon-circle-zoomin { + background-position: -176px -192px; +} +.ui-icon-circle-zoomout { + background-position: -192px -192px; +} +.ui-icon-circle-check { + background-position: -208px -192px; +} +.ui-icon-circlesmall-plus { + background-position: 0 -208px; +} +.ui-icon-circlesmall-minus { + background-position: -16px -208px; +} +.ui-icon-circlesmall-close { + background-position: -32px -208px; +} +.ui-icon-squaresmall-plus { + background-position: -48px -208px; +} +.ui-icon-squaresmall-minus { + background-position: -64px -208px; +} +.ui-icon-squaresmall-close { + background-position: -80px -208px; +} +.ui-icon-grip-dotted-vertical { + background-position: 0 -224px; +} +.ui-icon-grip-dotted-horizontal { + background-position: -16px -224px; +} +.ui-icon-grip-solid-vertical { + background-position: -32px -224px; +} +.ui-icon-grip-solid-horizontal { + background-position: -48px -224px; +} +.ui-icon-gripsmall-diagonal-se { + background-position: -64px -224px; +} +.ui-icon-grip-diagonal-se { + background-position: -80px -224px; +} +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { + -moz-border-radius-topleft: 0px; + -webkit-border-top-left-radius: 0px; + border-top-left-radius: 0px; +} +.ui-corner-tr { + -moz-border-radius-topright: 0px; + -webkit-border-top-right-radius: 0px; + border-top-right-radius: 0px; +} +.ui-corner-bl { + -moz-border-radius-bottomleft: 0px; + -webkit-border-bottom-left-radius: 0px; + border-bottom-left-radius: 0px; +} +.ui-corner-br { + -moz-border-radius-bottomright: 0px; + -webkit-border-bottom-right-radius: 0px; + border-bottom-right-radius: 0px; +} +.ui-corner-top { + -moz-border-radius-topleft: 0px; + -webkit-border-top-left-radius: 0px; + border-top-left-radius: 0px; + -moz-border-radius-topright: 0px; + -webkit-border-top-right-radius: 0px; + border-top-right-radius: 0px; +} +.ui-corner-bottom { + -moz-border-radius-bottomleft: 0px; + -webkit-border-bottom-left-radius: 0px; + border-bottom-left-radius: 0px; + -moz-border-radius-bottomright: 0px; + -webkit-border-bottom-right-radius: 0px; + border-bottom-right-radius: 0px; +} +.ui-corner-right { + -moz-border-radius-topright: 0px; + -webkit-border-top-right-radius: 0px; + border-top-right-radius: 0px; + -moz-border-radius-bottomright: 0px; + -webkit-border-bottom-right-radius: 0px; + border-bottom-right-radius: 0px; +} +.ui-corner-left { + -moz-border-radius-topleft: 0px; + -webkit-border-top-left-radius: 0px; + border-top-left-radius: 0px; + -moz-border-radius-bottomleft: 0px; + -webkit-border-bottom-left-radius: 0px; + border-bottom-left-radius: 0px; +} +.ui-corner-all { + -moz-border-radius: 0px; + -webkit-border-radius: 0px; + border-radius: 0px; +} +/* Overlays */ +.ui-widget-overlay { + background: #9d9d9d url(images/ui-bg_flat_0_9d9d9d_40x100.png) 50% 50% repeat-x; + opacity: .50; + filter:Alpha(Opacity=50); +} +.ui-widget-shadow { + margin: -6px 0 0 -6px; + padding: 6px; + background: #6c6c6c url(images/ui-bg_flat_0_6c6c6c_40x100.png) 50% 50% repeat-x; + opacity: .60; + filter:Alpha(Opacity=60); + -moz-border-radius: 0px; + -webkit-border-radius: 0px; + border-radius: 0px; +}/* + * jQuery UI Resizable 1.8.6 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Resizable#theming + */ +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + z-index: 99999; + display: block; +} +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +}/* + * jQuery UI Selectable 1.8.6 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectable#theming + */ +.ui-selectable-helper { + position: absolute; + z-index: 100; + border:1px dotted black; +} +/* + * jQuery UI Accordion 1.8.6 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */ +/* IE/Win - Fix animation bug - #4615 */ +.ui-accordion { + width: 100%; +} +.ui-accordion .ui-accordion-header { + cursor: pointer; + position: relative; + margin-top: 1px; + zoom: 1; + font-weight:bold; +} +.ui-accordion .ui-accordion-li-fix { + display: inline; +} +.ui-accordion .ui-accordion-header-active { + border-bottom: 0 !important; +} +.ui-accordion .ui-accordion-header a { + display: block; + font-size: 1em; + padding: .5em .5em .5em .7em; +} +.ui-accordion-icons .ui-accordion-header a { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-header .ui-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; +} +.ui-accordion .ui-accordion-content { + padding: 10px; + border-top: 0; + margin-top: -2px; + position: relative; + top: 1px; + margin-bottom: 2px; + overflow: auto; + display: none; + zoom: 1; +} +.ui-accordion .ui-accordion-content-active { + display: block; +}/* + * jQuery UI Autocomplete 1.8.6 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete#theming + */ +.ui-autocomplete { + position: absolute; + cursor: default; +} +/* workarounds */ +* html .ui-autocomplete { + width:1px; +} /* without this, the menu expands to 100% in IE6 */ +/* + * jQuery UI Menu 1.8.6 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Menu#theming + */ +.ui-menu { + list-style:none; + padding: 2px; + margin: 0; + display:block; + float: left; +} +.ui-menu .ui-menu { + margin-top: -3px; +} +.ui-menu .ui-menu-item { + margin:0; + padding: 0; + zoom: 1; + float: left; + clear: left; + width: 100%; +} +.ui-menu .ui-menu-item a { + text-decoration:none; + display:block; + padding:.2em .4em; + line-height:1.5; + zoom:1; +} +.ui-menu .ui-menu-item a.ui-state-hover, .ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} +/* + * jQuery UI Button 1.8.6 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ +.ui-button { + display: inline-block; + position: relative; + padding: 0; + margin-right: .1em; + text-decoration: none !important; + cursor: pointer; + text-align: center; + zoom: 1; + overflow: visible; +} /* the overflow property removes extra width in IE */ +.ui-button-icon-only { + width: 2.2em; +} /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { + width: 2.4em; +} /* button elements seem to need a little more width */ +.ui-button-icons-only { + width: 3.4em; +} +button.ui-button-icons-only { + width: 3.7em; +} +/*button text element */ +.ui-button .ui-button-text { + display: block; + line-height: 1.4; +} +.ui-button-text-only .ui-button-text { + padding: .4em 1em; +} +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { + padding: .4em; + text-indent: -9999999px; +} +.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { + padding: .4em 1em .4em 2.1em; +} +.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { + padding: .4em 2.1em .4em 1em; +} +.ui-button-text-icons .ui-button-text { + padding-left: 2.1em; + padding-right: 2.1em; +} +/* no icon support for input elements, provide padding by default */ +input.ui-button { + padding: .4em 1em; +} +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { + position: absolute; + top: 50%; + margin-top: -8px; + left: 0.2em; +} +.ui-button-icon-only .ui-icon { + left: 50%; + margin-left: -8px; +} +.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { + left: .5em; +} +.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { + right: .5em; +} +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { + right: .5em; +} +/*button sets*/ +.ui-buttonset { + margin-right: 7px; +} +.ui-buttonset .ui-button { + margin-left: 0; + margin-right: -.3em; +} + +/* workarounds */ + +button.ui-button.::-moz-focus-inner { + border: 0; + padding: 0; +} + + /* reset extra padding in Firefox */ +/* + * jQuery UI Dialog 1.8.6 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */ +.ui-dialog { + position: absolute; + padding: .4em; + width: 300px; + overflow: hidden; + border-width: 3px; +} +.ui-dialog .ui-dialog-titlebar { + padding: 6px 8px 6px 8px; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 16px .2em 0; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 19px; + margin: -10px 0 0 0; + padding: 1px; + height: 18px; +} +.ui-dialog .ui-dialog-titlebar-close span { + display: block; + margin: 1px; +} +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { + padding: 0; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; + zoom: 1; + +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background: none; + margin: .5em 0 0 0; + margin: 0.3em -0.4em 0; + padding: 0.3em 1em 0 0.4em; + border-color: #9f9f9f; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-se { + width: 14px; + height: 14px; + right: 3px; + bottom: 3px; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} +/* + * jQuery UI Slider 1.8.6 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { + position: relative; + text-align: left; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1.2em; + height: 1.2em; + cursor: default; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} +.ui-slider-horizontal { + height: .8em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -.3em; + margin-left: -.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +}/* + * jQuery UI Tabs 1.8.6 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs#theming + */ +.ui-tabs { + position: relative; + padding: 4px; + zoom: 1; +} /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 1px; + margin: 0 .2em 1px 0; + border-bottom: 0 !important; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav li a { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { + margin-bottom: 0; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { + cursor: text; +} +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { + cursor: pointer; +} /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + /*padding: 1em 1.4em;*/ + background: none; +} +.ui-tabs .ui-tabs-hide { + display: none !important; +} +/* + * jQuery UI Datepicker 1.8.6 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Datepicker#theming + */ +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; +} +.ui-datepicker .ui-datepicker-header { + position:relative; + padding:.2em 0; +} +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { + position:absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left:2px; +} +.ui-datepicker .ui-datepicker-next { + right:2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left:1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right:1px; +} +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size:1em; + margin:1px 0; +} +.ui-datepicker select.ui-datepicker-month-year { + width: 100%; +} +.ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { + width: 49%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin:0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, .ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding:0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width:auto; + overflow:visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float:left; +} +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width:auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float:left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width:95%; + margin:0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width:50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width:33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width:25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { + border-left-width:0; +} +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width:0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear:left; +} +.ui-datepicker-row-break { + clear:both; + width:100%; +} +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear:right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { + float:right; +} +.ui-datepicker-rtl .ui-datepicker-group { + float:right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { + border-right-width:0; + border-left-width:1px; +} +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width:0; + border-left-width:1px; +} +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +}/* + * jQuery UI Progressbar 1.8.6 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar#theming + */ +.ui-progressbar { + height:2em; + text-align: left; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height:100%; +} + + +.ui-datepicker { + display:none; } \ No newline at end of file diff --git a/airtime_mvc/public/css/styles.css b/airtime_mvc/public/css/styles.css index b7ff90ac2..3d98fc82f 100644 --- a/airtime_mvc/public/css/styles.css +++ b/airtime_mvc/public/css/styles.css @@ -105,7 +105,7 @@ select { } .airtime_auth_help_icon, .custom_auth_help_icon, .stream_username_help_icon, -.playlist_type_help_icon, .master_username_help_icon { +.playlist_type_help_icon, .master_username_help_icon, .repeat_tracks_help_icon{ cursor: help; position: relative; display:inline-block; zoom:1; diff --git a/airtime_mvc/public/js/airtime/common/audioplaytest.js b/airtime_mvc/public/js/airtime/common/audioplaytest.js index 76bc5d7c1..f96ad09af 100644 --- a/airtime_mvc/public/js/airtime/common/audioplaytest.js +++ b/airtime_mvc/public/js/airtime/common/audioplaytest.js @@ -14,5 +14,6 @@ function isAudioSupported(mime){ //Note that checking the navigator.mimeTypes value does not work for IE7, but the alternative //is adding a javascript library to do the work for you, which seems like overkill.... return (!!audio.canPlayType && audio.canPlayType(bMime) != "") || - (mime.indexOf("mp3") != -1 && navigator.mimeTypes ["application/x-shockwave-flash"] != undefined); + (mime.indexOf("mp3") != -1 && navigator.mimeTypes ["application/x-shockwave-flash"] != undefined) || + (mime.indexOf("mp4") != -1 && navigator.mimeTypes ["application/x-shockwave-flash"] != undefined); } diff --git a/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js b/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js index 4b139f66e..5392cbd49 100644 --- a/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js +++ b/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js @@ -64,8 +64,9 @@ var AIRTIME = (function(AIRTIME) { helper : function() { var $el = $(this), selected = mod - .getChosenAudioFilesLength(), container, message, li = $("#side_playlist ul[id='spl_sortable'] li:first"), width = li - .width(), height = 55; + .getChosenAudioFilesLength(), container, message, li = $("#side_playlist ul[id='spl_sortable'] li:first"), + width = li.width(), height = 55; + if (width > 798) width = 798; // dragging an element that has an unselected // checkbox. diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index 4a4d77ffc..02b2ad4d9 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -70,7 +70,7 @@ var AIRTIME = (function(AIRTIME) { }; mod.getChosenAudioFilesLength = function(){ - //var files = Object.keys(chosenItems), + // var files = Object.keys(chosenItems), var files, $trs, cItem, @@ -215,7 +215,7 @@ var AIRTIME = (function(AIRTIME) { mod.removeFromChosen = function($el) { var id = $el.attr("id"); - //used to not keep dragged items selected. + // used to not keep dragged items selected. if (!$el.hasClass(LIB_SELECTED_CLASS)) { delete chosenItems[id]; } @@ -252,11 +252,11 @@ var AIRTIME = (function(AIRTIME) { }; /* - * selects all items which the user can currently see. - * (behaviour taken from gmail) + * selects all items which the user can currently see. (behaviour taken from + * gmail) * - * by default the items are selected in reverse order - * so we need to reverse it back + * by default the items are selected in reverse order so we need to reverse + * it back */ mod.selectCurrentPage = function() { $.fn.reverse = [].reverse; @@ -276,8 +276,8 @@ var AIRTIME = (function(AIRTIME) { }; /* - * deselects all items that the user can currently see. - * (behaviour taken from gmail) + * deselects all items that the user can currently see. (behaviour taken + * from gmail) */ mod.deselectCurrentPage = function() { var $inputs = $libTable.find("tbody input:checkbox"), @@ -328,7 +328,7 @@ var AIRTIME = (function(AIRTIME) { temp, aMedia = []; - //process selected files/playlists. + // process selected files/playlists. for (item in aData) { temp = aData[item]; if (temp !== null && temp.hasOwnProperty('id') ) { @@ -433,36 +433,37 @@ var AIRTIME = (function(AIRTIME) { oTable = $libTable.dataTable( { - //put hidden columns at the top to insure they can never be visible on the table through column reordering. + // put hidden columns at the top to insure they can never be visible + // on the table through column reordering. "aoColumns": [ - /* ftype */ { "sTitle" : "" , "mDataProp" : "ftype" , "bSearchable" : false , "bVisible" : false } , - /* Checkbox */ { "sTitle" : "" , "mDataProp" : "checkbox" , "bSortable" : false , "bSearchable" : false , "sWidth" : "25px" , "sClass" : "library_checkbox" } , - /* Type */ { "sTitle" : "" , "mDataProp" : "image" , "bSearchable" : false , "sWidth" : "25px" , "sClass" : "library_type" , "iDataSort" : 0 } , - /* Title */ { "sTitle" : "Title" , "mDataProp" : "track_title" , "sClass" : "library_title" , "sWidth" : "170px" } , - /* Creator */ { "sTitle" : "Creator" , "mDataProp" : "artist_name" , "sClass" : "library_creator" , "sWidth" : "160px" } , - /* Album */ { "sTitle" : "Album" , "mDataProp" : "album_title" , "sClass" : "library_album" , "sWidth" : "150px" } , - /* Bit Rate */ { "sTitle" : "Bit Rate" , "mDataProp" : "bit_rate" , "bVisible" : false , "sClass" : "library_bitrate" , "sWidth" : "80px" }, - /* BPM */ { "sTitle" : "BPM" , "mDataProp" : "bpm" , "bVisible" : false , "sClass" : "library_bpm" , "sWidth" : "50px" }, - /* Composer */ { "sTitle" : "Composer" , "mDataProp" : "composer" , "bVisible" : false , "sClass" : "library_composer" , "sWidth" : "150px" }, - /* Conductor */ { "sTitle" : "Conductor" , "mDataProp" : "conductor" , "bVisible" : false , "sClass" : "library_conductor" , "sWidth" : "125px" }, - /* Copyright */ { "sTitle" : "Copyright" , "mDataProp" : "copyright" , "bVisible" : false , "sClass" : "library_copyright" , "sWidth" : "125px" }, - /* Encoded */ { "sTitle" : "Encoded By" , "mDataProp" : "encoded_by" , "bVisible" : false , "sClass" : "library_encoded" , "sWidth" : "150px" }, - /* Genre */ { "sTitle" : "Genre" , "mDataProp" : "genre" , "bVisible" : false , "sClass" : "library_genre" , "sWidth" : "100px" }, - /* ISRC Number */ { "sTitle" : "ISRC" , "mDataProp" : "isrc_number" , "bVisible" : false , "sClass" : "library_isrc" , "sWidth" : "150px" }, - /* Label */ { "sTitle" : "Label" , "mDataProp" : "label" , "bVisible" : false , "sClass" : "library_label" , "sWidth" : "125px" }, - /* Language */ { "sTitle" : "Language" , "mDataProp" : "language" , "bVisible" : false , "sClass" : "library_language" , "sWidth" : "125px" }, + /* ftype */ { "sTitle" : "" , "mDataProp" : "ftype" , "bSearchable" : false , "bVisible" : false } , + /* Checkbox */ { "sTitle" : "" , "mDataProp" : "checkbox" , "bSortable" : false , "bSearchable" : false , "sWidth" : "25px" , "sClass" : "library_checkbox" } , + /* Type */ { "sTitle" : "" , "mDataProp" : "image" , "bSearchable" : false , "sWidth" : "25px" , "sClass" : "library_type" , "iDataSort" : 0 } , + /* Title */ { "sTitle" : "Title" , "mDataProp" : "track_title" , "sClass" : "library_title" , "sWidth" : "170px" } , + /* Creator */ { "sTitle" : "Creator" , "mDataProp" : "artist_name" , "sClass" : "library_creator" , "sWidth" : "160px" } , + /* Album */ { "sTitle" : "Album" , "mDataProp" : "album_title" , "sClass" : "library_album" , "sWidth" : "150px" } , + /* Bit Rate */ { "sTitle" : "Bit Rate" , "mDataProp" : "bit_rate" , "bVisible" : false , "sClass" : "library_bitrate" , "sWidth" : "80px" }, + /* BPM */ { "sTitle" : "BPM" , "mDataProp" : "bpm" , "bVisible" : false , "sClass" : "library_bpm" , "sWidth" : "50px" }, + /* Composer */ { "sTitle" : "Composer" , "mDataProp" : "composer" , "bVisible" : false , "sClass" : "library_composer" , "sWidth" : "150px" }, + /* Conductor */ { "sTitle" : "Conductor" , "mDataProp" : "conductor" , "bVisible" : false , "sClass" : "library_conductor" , "sWidth" : "125px" }, + /* Copyright */ { "sTitle" : "Copyright" , "mDataProp" : "copyright" , "bVisible" : false , "sClass" : "library_copyright" , "sWidth" : "125px" }, + /* Encoded */ { "sTitle" : "Encoded By" , "mDataProp" : "encoded_by" , "bVisible" : false , "sClass" : "library_encoded" , "sWidth" : "150px" }, + /* Genre */ { "sTitle" : "Genre" , "mDataProp" : "genre" , "bVisible" : false , "sClass" : "library_genre" , "sWidth" : "100px" }, + /* ISRC Number */ { "sTitle" : "ISRC" , "mDataProp" : "isrc_number" , "bVisible" : false , "sClass" : "library_isrc" , "sWidth" : "150px" }, + /* Label */ { "sTitle" : "Label" , "mDataProp" : "label" , "bVisible" : false , "sClass" : "library_label" , "sWidth" : "125px" }, + /* Language */ { "sTitle" : "Language" , "mDataProp" : "language" , "bVisible" : false , "sClass" : "library_language" , "sWidth" : "125px" }, /* Last Modified */ { "sTitle" : "Last Modified" , "mDataProp" : "mtime" , "bVisible" : false , "sClass" : "library_modified_time" , "sWidth" : "125px" }, - /* Last Played */ { "sTitle" : "Last Played " , "mDataProp" : "lptime" , "bVisible" : false , "sClass" : "library_modified_time" , "sWidth" : "125px" }, - /* Length */ { "sTitle" : "Length" , "mDataProp" : "length" , "sClass" : "library_length" , "sWidth" : "80px" } , - /* Mime */ { "sTitle" : "Mime" , "mDataProp" : "mime" , "bVisible" : false , "sClass" : "library_mime" , "sWidth" : "80px" }, - /* Mood */ { "sTitle" : "Mood" , "mDataProp" : "mood" , "bVisible" : false , "sClass" : "library_mood" , "sWidth" : "70px" }, - /* Owner */ { "sTitle" : "Owner" , "mDataProp" : "owner_id" , "bVisible" : false , "sClass" : "library_language" , "sWidth" : "125px" }, - /* Replay Gain */ { "sTitle" : "Replay Gain" , "mDataProp" : "replay_gain" , "bVisible" : false , "sClass" : "library_replay_gain" , "sWidth" : "80px" }, - /* Sample Rate */ { "sTitle" : "Sample Rate" , "mDataProp" : "sample_rate" , "bVisible" : false , "sClass" : "library_sr" , "sWidth" : "80px" }, - /* Track Number */ { "sTitle" : "Track Number" , "mDataProp" : "track_number" , "bVisible" : false , "sClass" : "library_track" , "sWidth" : "65px" }, - /* Upload Time */ { "sTitle" : "Uploaded" , "mDataProp" : "utime" , "sClass" : "library_upload_time" , "sWidth" : "125px" } , - /* Website */ { "sTitle" : "Website" , "mDataProp" : "info_url" , "bVisible" : false , "sClass" : "library_url" , "sWidth" : "150px" }, - /* Year */ { "sTitle" : "Year" , "mDataProp" : "year" , "bVisible" : false , "sClass" : "library_year" , "sWidth" : "60px" } + /* Last Played */ { "sTitle" : "Last Played " , "mDataProp" : "lptime" , "bVisible" : false , "sClass" : "library_modified_time" , "sWidth" : "125px" }, + /* Length */ { "sTitle" : "Length" , "mDataProp" : "length" , "sClass" : "library_length" , "sWidth" : "80px" } , + /* Mime */ { "sTitle" : "Mime" , "mDataProp" : "mime" , "bVisible" : false , "sClass" : "library_mime" , "sWidth" : "80px" }, + /* Mood */ { "sTitle" : "Mood" , "mDataProp" : "mood" , "bVisible" : false , "sClass" : "library_mood" , "sWidth" : "70px" }, + /* Owner */ { "sTitle" : "Owner" , "mDataProp" : "owner_id" , "bVisible" : false , "sClass" : "library_language" , "sWidth" : "125px" }, + /* Replay Gain */ { "sTitle" : "Replay Gain" , "mDataProp" : "replay_gain" , "bVisible" : false , "sClass" : "library_replay_gain" , "sWidth" : "80px" }, + /* Sample Rate */ { "sTitle" : "Sample Rate" , "mDataProp" : "sample_rate" , "bVisible" : false , "sClass" : "library_sr" , "sWidth" : "80px" }, + /* Track Number */ { "sTitle" : "Track Number" , "mDataProp" : "track_number" , "bVisible" : false , "sClass" : "library_track" , "sWidth" : "65px" }, + /* Upload Time */ { "sTitle" : "Uploaded" , "mDataProp" : "utime" , "sClass" : "library_upload_time" , "sWidth" : "125px" } , + /* Website */ { "sTitle" : "Website" , "mDataProp" : "info_url" , "bVisible" : false , "sClass" : "library_url" , "sWidth" : "150px" }, + /* Year */ { "sTitle" : "Year" , "mDataProp" : "year" , "bVisible" : false , "sClass" : "library_year" , "sWidth" : "60px" } ], "bProcessing": true, @@ -472,7 +473,7 @@ var AIRTIME = (function(AIRTIME) { "bStateSave": true, "fnStateSaveParams": function (oSettings, oData) { - //remove oData components we don't want to save. + // remove oData components we don't want to save. delete oData.oSearch; delete oData.aoSearchCols; }, @@ -499,8 +500,8 @@ var AIRTIME = (function(AIRTIME) { length, a = oData.abVisCols; - //putting serialized data back into the correct js type to make - //sure everything works properly. + // putting serialized data back into the correct js type to make + // sure everything works properly. for (i = 0, length = a.length; i < length; i++) { if (typeof(a[i]) === "string") { a[i] = (a[i] === "true") ? true : false; @@ -524,11 +525,12 @@ var AIRTIME = (function(AIRTIME) { "sAjaxDataProp": "files", "fnServerData": function ( sSource, aoData, fnCallback ) { - /* The real validation check is done in dataTables.columnFilter.js - * We also need to check it here because datatable is redrawn everytime - * an action is performed in the Library page. - * In order for datatable to redraw the advanced search fields - * MUST all be valid. + /* + * The real validation check is done in + * dataTables.columnFilter.js We also need to check it here + * because datatable is redrawn everytime an action is performed + * in the Library page. In order for datatable to redraw the + * advanced search fields MUST all be valid. */ var advSearchFields = $("div#advanced_search").children(':visible'); var advSearchValid = validateAdvancedSearch(advSearchFields); @@ -536,7 +538,7 @@ var AIRTIME = (function(AIRTIME) { aoData.push( { name: "format", value: "json"} ); aoData.push( { name: "advSearch", value: advSearchValid} ); - //push whether to search files/playlists or all. + // push whether to search files/playlists or all. type = $("#library_display_type").find("select").val(); type = (type === undefined) ? 0 : type; aoData.push( { name: "type", value: type} ); @@ -552,30 +554,37 @@ var AIRTIME = (function(AIRTIME) { "fnRowCallback": AIRTIME.library.fnRowCallback, "fnCreatedRow": function( nRow, aData, iDataIndex ) { - //add the play function to the library_type td + // add the play function to the library_type td $(nRow).find('td.library_type').click(function(){ if (aData.ftype === 'playlist' && aData.length !== '0.0'){ - playlistIndex = $(this).parent().attr('id').substring(3); //remove the pl_ + playlistIndex = $(this).parent().attr('id').substring(3); // remove + // the + // pl_ open_playlist_preview(playlistIndex, 0); } else if (aData.ftype === 'audioclip') { open_audio_preview(aData.ftype, aData.audioFile, aData.track_title, aData.artist_name); } else if (aData.ftype == 'stream') { open_audio_preview(aData.ftype, aData.audioFile, aData.track_title, aData.artist_name); } else if (aData.ftype == 'block' && aData.bl_type == 'static') { - blockIndex = $(this).parent().attr('id').substring(3); //remove the bl_ + blockIndex = $(this).parent().attr('id').substring(3); // remove + // the + // bl_ open_block_preview(blockIndex, 0); } return false; }); alreadyclicked=false; - //call the context menu so we can prevent the event from propagating. + // call the context menu so we can prevent the event from + // propagating. $(nRow).find('td:not(.library_checkbox, .library_type)').click(function(e){ var el=$(this); if (alreadyclicked) { alreadyclicked=false; // reset - clearTimeout(alreadyclickedTimeout); // prevent this from happening + clearTimeout(alreadyclickedTimeout); // prevent this + // from + // happening // do what needs to happen on double click. $tr = $(el).parent(); @@ -587,8 +596,8 @@ var AIRTIME = (function(AIRTIME) { alreadyclicked=true; alreadyclickedTimeout=setTimeout(function(){ alreadyclicked=false; // reset when it happens - // do what needs to happen on single click. - // use el instead of $(this) because $(this) is + // do what needs to happen on single click. + // use el instead of $(this) because $(this) is // no longer the element el.contextMenu({x: e.pageX, y: e.pageY}); },300); // <-- dblclick tolerance here @@ -596,7 +605,8 @@ var AIRTIME = (function(AIRTIME) { return false; }); - //add a tool tip to appear when the user clicks on the type icon. + // add a tool tip to appear when the user clicks on the type + // icon. $(nRow).find("td:not(.library_checkbox, .library_type)").qtip({ content: { text: "Loading...", @@ -620,7 +630,8 @@ var AIRTIME = (function(AIRTIME) { }, my: 'left center', at: 'right center', - viewport: $(window), // Keep the tooltip on-screen at all times + viewport: $(window), // Keep the tooltip on-screen at + // all times effect: false // Disable positioning animation }, style: { @@ -638,10 +649,11 @@ var AIRTIME = (function(AIRTIME) { hide: {event:'mouseout', delay: 50, fixed:true} }); }, - //remove any selected nodes before the draw. + // remove any selected nodes before the draw. "fnPreDrawCallback": function( oSettings ) { - //make sure any dragging helpers are removed or else they'll be stranded on the screen. + // make sure any dragging helpers are removed or else they'll be + // stranded on the screen. $("#draggingContainer").remove(); }, "fnDrawCallback": AIRTIME.library.fnDrawCallback, @@ -673,14 +685,32 @@ var AIRTIME = (function(AIRTIME) { setColumnFilter(oTable); oTable.fnSetFilteringDelay(350); - + + var simpleSearchText; + $libContent.on("click", "legend", function(){ + $simpleSearch = $libContent.find("#library_display_filter label"); var $fs = $(this).parents("fieldset"); if ($fs.hasClass("closed")) { $fs.removeClass("closed"); + + //keep value of simple search for when user switches back to it + simpleSearchText = $simpleSearch.find('input').val(); + + // clear the simple search text field and reset datatable + $(".dataTables_filter input").val("").keyup(); + + $simpleSearch.addClass("sp-invisible"); } else { + //clear the advanced search fields and reset datatable + $(".filter_column input").val("").keyup(); + + //reset datatable with previous simple search results (if any) + $(".dataTables_filter input").val(simpleSearchText).keyup(); + + $simpleSearch.removeClass("sp-invisible"); $fs.addClass("closed"); } }); @@ -734,7 +764,7 @@ var AIRTIME = (function(AIRTIME) { addQtipToSCIcons(); - //begin context menu initialization. + // begin context menu initialization. $.contextMenu({ selector: '#library_display td:not(.library_checkbox)', trigger: "left", @@ -749,7 +779,7 @@ var AIRTIME = (function(AIRTIME) { function processMenuItems(oItems) { - //define an add to playlist callback. + // define an add to playlist callback. if (oItems.pl_add !== undefined) { var aItems = []; @@ -761,7 +791,7 @@ var AIRTIME = (function(AIRTIME) { oItems.pl_add.callback = callback; } - //define an edit callback. + // define an edit callback. if (oItems.edit !== undefined) { if (data.ftype === "audioclip") { @@ -785,7 +815,7 @@ var AIRTIME = (function(AIRTIME) { oItems.edit.callback = callback; } - //define a play callback. + // define a play callback. if (oItems.play !== undefined) { if (oItems.play.mime !== undefined) { @@ -796,23 +826,28 @@ var AIRTIME = (function(AIRTIME) { callback = function() { if (data.ftype === 'playlist' && data.length !== '0.0'){ - playlistIndex = $(this).parent().attr('id').substring(3); //remove the pl_ + playlistIndex = $(this).parent().attr('id').substring(3); // remove + // the + // pl_ open_playlist_preview(playlistIndex, 0); } else if (data.ftype === 'audioclip' || data.ftype === 'stream') { open_audio_preview(data.ftype, data.audioFile, data.track_title, data.artist_name); } else if (data.ftype === 'block') { - blockIndex = $(this).parent().attr('id').substring(3); //remove the pl_ + blockIndex = $(this).parent().attr('id').substring(3); // remove + // the + // pl_ open_block_preview(blockIndex, 0); } }; oItems.play.callback = callback; } - //define a delete callback. + // define a delete callback. if (oItems.del !== undefined) { - //delete through the playlist controller, will reset - //playlist screen if this is the currently edited playlist. + // delete through the playlist controller, will reset + // playlist screen if this is the currently edited + // playlist. if ((data.ftype === "playlist" || data.ftype === "block") && screen === "playlist") { callback = function() { aMedia = []; @@ -846,7 +881,7 @@ var AIRTIME = (function(AIRTIME) { oItems.del.callback = callback; } - //define a download callback. + // define a download callback. if (oItems.download !== undefined) { callback = function() { @@ -854,11 +889,11 @@ var AIRTIME = (function(AIRTIME) { }; oItems.download.callback = callback; } - //add callbacks for Soundcloud menu items. + // add callbacks for Soundcloud menu items. if (oItems.soundcloud !== undefined) { var soundcloud = oItems.soundcloud.items; - //define an upload to soundcloud callback. + // define an upload to soundcloud callback. if (soundcloud.upload !== undefined) { callback = function() { @@ -869,7 +904,7 @@ var AIRTIME = (function(AIRTIME) { soundcloud.upload.callback = callback; } - //define a view on soundcloud callback + // define a view on soundcloud callback if (soundcloud.view !== undefined) { callback = function() { @@ -985,7 +1020,8 @@ function addQtipToSCIcons(){ viewport: $(window) }, show: { - ready: true // Needed to make it show on first mouseover event + ready: true // Needed to make it show on first mouseover + // event } }); } @@ -1012,7 +1048,8 @@ function addQtipToSCIcons(){ viewport: $(window) }, show: { - ready: true // Needed to make it show on first mouseover event + ready: true // Needed to make it show on first mouseover + // event } }); }else if($(this).hasClass("sc-error")){ @@ -1039,7 +1076,8 @@ function addQtipToSCIcons(){ viewport: $(window) }, show: { - ready: true // Needed to make it show on first mouseover event + ready: true // Needed to make it show on first mouseover + // event } }); } @@ -1093,7 +1131,7 @@ function validateAdvancedSearch(divs) { } } - //string fields do not need validation + // string fields do not need validation if (searchTermType !== "s") { valid = regExpr.test(searchTerm[i]); if (!valid) allValid = false; @@ -1101,11 +1139,11 @@ function validateAdvancedSearch(divs) { addRemoveValidationIcons(valid, $(field), searchTermType); - /* Empty fields should not have valid/invalid indicator - * Range values are considered valid even if only the - * 'From' value is provided. Therefore, if the 'To' value - * is empty but the 'From' value is not empty we need to - * keep the validation icon on screen. + /* + * Empty fields should not have valid/invalid indicator Range values + * are considered valid even if only the 'From' value is provided. + * Therefore, if the 'To' value is empty but the 'From' value is not + * empty we need to keep the validation icon on screen. */ } else if (searchTerm[0] === "" && searchTerm[1] !== "" || searchTerm[0] === "" && searchTerm[1] === ""){ @@ -1141,7 +1179,7 @@ function addRemoveValidationIcons(valid, field, searchTermType) { if (valid) { if (!field.closest('div').children(':last-child').hasClass('checked-icon')) { - //remove invalid icon before adding valid icon + // remove invalid icon before adding valid icon if (field.closest('div').children(':last-child').hasClass('not-available-icon')) { field.closest('div').children(':last-child').remove(); } @@ -1149,7 +1187,7 @@ function addRemoveValidationIcons(valid, field, searchTermType) { } } else { if (!field.closest('div').children(':last-child').hasClass('not-available-icon')) { - //remove valid icon before adding invalid icon + // remove valid icon before adding invalid icon if (field.closest('div').children(':last-child').hasClass('checked-icon')) { field.closest('div').children(':last-child').remove(); } @@ -1158,12 +1196,9 @@ function addRemoveValidationIcons(valid, field, searchTermType) { } } -/* Validation types: - * s => string - * i => integer - * n => numeric (positive/negative, whole/decimals) - * t => timestamp - * l => length +/* + * Validation types: s => string i => integer n => numeric (positive/negative, + * whole/decimals) t => timestamp l => length */ var validationTypes = { "album_title" : "s", @@ -1192,7 +1227,7 @@ var validationTypes = { "owner_id" : "s", "rating" : "i", "replay_gain" : "n", - "sample_rate" : "i", + "sample_rate" : "n", "track_title" : "s", "track_number" : "i", "info_url" : "s", diff --git a/airtime_mvc/public/js/airtime/playlist/smart_blockbuilder.js b/airtime_mvc/public/js/airtime/playlist/smart_blockbuilder.js index f05b55873..b53e0cb3a 100644 --- a/airtime_mvc/public/js/airtime/playlist/smart_blockbuilder.js +++ b/airtime_mvc/public/js/airtime/playlist/smart_blockbuilder.js @@ -384,6 +384,28 @@ function setupUI() { at: "right center" }, }); + + $(".repeat_tracks_help_icon").qtip({ + content: { + text: "If your criteria is too strict, Airtime may not be able to fill up the desired smart block length." + + " Hence, if you check this option, tracks will be used more than once." + }, + hide: { + delay: 500, + fixed: true + }, + style: { + border: { + width: 0, + radius: 4 + }, + classes: "ui-tooltip-dark ui-tooltip-rounded" + }, + position: { + my: "left bottom", + at: "right center" + }, + }); } function enableAndShowExtraField(valEle, index) { diff --git a/airtime_mvc/public/js/airtime/showbuilder/builder.js b/airtime_mvc/public/js/airtime/showbuilder/builder.js index bb8af54b3..481e2d9ce 100644 --- a/airtime_mvc/public/js/airtime/showbuilder/builder.js +++ b/airtime_mvc/public/js/airtime/showbuilder/builder.js @@ -339,11 +339,23 @@ var AIRTIME = (function(AIRTIME){ }); }; + mod.jumpToCurrentTrack = function() { + var $scroll = $sbContent.find(".dataTables_scrolling"); + var scrolled = $scroll.scrollTop(); + var scrollingTop = $scroll.offset().top; + var oTable = $('#show_builder_table').dataTable(); + var current = $sbTable.find("."+NOW_PLAYING_CLASS); + var currentTop = current.offset().top; + + $scroll.scrollTop(currentTop - scrollingTop + scrolled); + } + mod.builderDataTable = function() { $sbContent = $('#show_builder'); $lib = $("#library_content"), $sbTable = $sbContent.find('table'); - + var isInitialized = false; + oSchedTable = $sbTable.dataTable( { "aoColumns": [ /* checkbox */ {"mDataProp": "allowed", "sTitle": "", "sWidth": "15px", "sClass": "sb-checkbox"}, @@ -636,6 +648,17 @@ var AIRTIME = (function(AIRTIME){ $("#draggingContainer").remove(); }, "fnDrawCallback": function fnBuilderDrawCallback(oSettings, json) { + var isInitialized = false; + + if (!isInitialized) { + //when coming to 'Now Playing' page we want the page + //to jump to the current track + if ($(this).find("."+NOW_PLAYING_CLASS).length > 0) { + mod.jumpToCurrentTrack(); + } + } + + isInitialized = true; var wrapperDiv, markerDiv, $td, @@ -966,13 +989,18 @@ var AIRTIME = (function(AIRTIME){ "") .append("
    " + "
    ") - .append("
    " + + "
    "); + + //if 'Add/Remove content' was chosen from the context menu + //in the Calendar do not append these buttons + if ($(".ui-dialog-content").length === 0) { + $menu.append("
    " + "
    ") .append("
    " + "
    "); + } $toolbar.append($menu); $menu = undefined; @@ -1021,7 +1049,7 @@ var AIRTIME = (function(AIRTIME){ if (AIRTIME.button.isDisabled('icon-step-forward', true) === true) { return; } - + /* var $scroll = $sbContent.find(".dataTables_scrolling"), scrolled = $scroll.scrollTop(), scrollingTop = $scroll.offset().top, @@ -1029,6 +1057,8 @@ var AIRTIME = (function(AIRTIME){ currentTop = current.offset().top; $scroll.scrollTop(currentTop - scrollingTop + scrolled); + */ + mod.jumpToCurrentTrack(); }); //delete overbooked tracks. @@ -1196,7 +1226,7 @@ var AIRTIME = (function(AIRTIME){ }; } - }); + }); }; return AIRTIME; diff --git a/airtime_mvc/public/js/airtime/showbuilder/main_builder.js b/airtime_mvc/public/js/airtime/showbuilder/main_builder.js index b2a653f7f..15aa73515 100644 --- a/airtime_mvc/public/js/airtime/showbuilder/main_builder.js +++ b/airtime_mvc/public/js/airtime/showbuilder/main_builder.js @@ -113,40 +113,179 @@ AIRTIME = (function(AIRTIME) { } mod.onReady = function() { - //define module vars. - $lib = $("#library_content"); - $builder = $("#show_builder"); - $fs = $builder.find('fieldset'); - - /* - * Icon hover states for search. - */ - $builder.on("mouseenter", ".sb-timerange .ui-button", function(ev) { - $(this).addClass("ui-state-hover"); - }); - $builder.on("mouseleave", ".sb-timerange .ui-button", function(ev) { - $(this).removeClass("ui-state-hover"); - }); - - $builder.find(dateStartId).datepicker(oBaseDatePickerSettings); - $builder.find(timeStartId).timepicker(oBaseTimePickerSettings); - $builder.find(dateEndId).datepicker(oBaseDatePickerSettings); - $builder.find(timeEndId).timepicker(oBaseTimePickerSettings); - - oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId); - AIRTIME.showbuilder.fnServerData.start = oRange.start; - AIRTIME.showbuilder.fnServerData.end = oRange.end; + // define module vars. + $lib = $("#library_content"); + $builder = $("#show_builder"); + $fs = $builder.find('fieldset'); - AIRTIME.library.libraryInit(); - AIRTIME.showbuilder.builderDataTable(); - setWidgetSize(); - - $libWrapper = $lib.find("#library_display_wrapper"); - $libWrapper.prepend($libClose); - - $builder.find('.dataTables_scrolling').css("max-height", widgetHeight - 95); - - $builder.on("click", "#sb_submit", showSearchSubmit); + /* + * Icon hover states for search. + */ + $builder.on("mouseenter", ".sb-timerange .ui-button", function(ev) { + $(this).addClass("ui-state-hover"); + }); + $builder.on("mouseleave", ".sb-timerange .ui-button", function(ev) { + $(this).removeClass("ui-state-hover"); + }); + + $builder.find(dateStartId).datepicker(oBaseDatePickerSettings); + $builder.find(timeStartId).timepicker(oBaseTimePickerSettings); + $builder.find(dateEndId).datepicker(oBaseDatePickerSettings); + $builder.find(timeEndId).timepicker(oBaseTimePickerSettings); + + oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, + dateEndId, timeEndId); + AIRTIME.showbuilder.fnServerData.start = oRange.start; + AIRTIME.showbuilder.fnServerData.end = oRange.end; + + AIRTIME.library.libraryInit(); + AIRTIME.showbuilder.builderDataTable(); + setWidgetSize(); + + $libWrapper = $lib.find("#library_display_wrapper"); + $libWrapper.prepend($libClose); + + $builder.find('.dataTables_scrolling').css("max-height", + widgetHeight - 95); + + $builder.on("click", "#sb_submit", showSearchSubmit); + + $builder.on("click", "#sb_edit", function(ev) { + var schedTable = $("#show_builder_table").dataTable(); + + // reset timestamp to redraw the cursors. + AIRTIME.showbuilder.resetTimestamp(); + + $lib.show().width(Math.floor(screenWidth * 0.48)); + + $builder.width(Math.floor(screenWidth * 0.48)).find("#sb_edit") + .remove().end().find("#sb_date_start") + .css("margin-left", 0).end(); + + schedTable.fnDraw(); + + $.ajax( { + url : "/usersettings/set-now-playing-screen-settings", + type : "POST", + data : { + settings : { + library : true + }, + format : "json" + }, + dataType : "json", + success : function() { + } + }); + }); + + $lib.on("click", "#sb_lib_close", function() { + var schedTable = $("#show_builder_table").dataTable(); + + $lib.hide(); + $builder.width(screenWidth).find(".sb-timerange").prepend( + $toggleLib).find("#sb_date_start").css("margin-left", 30) + .end().end(); + + $toggleLib.removeClass("ui-state-hover"); + schedTable.fnDraw(); + + $.ajax( { + url : "/usersettings/set-now-playing-screen-settings", + type : "POST", + data : { + settings : { + library : false + }, + format : "json" + }, + dataType : "json", + success : function() { + } + }); + }); + + $builder.find('legend').click( + function(ev, item) { + + if ($fs.hasClass("closed")) { + + $fs.removeClass("closed"); + $builder.find('.dataTables_scrolling').css( + "max-height", widgetHeight - 150); + } else { + $fs.addClass("closed"); + + // set defaults for the options. + $fs.find('select').val(0); + $fs.find('input[type="checkbox"]').attr("checked", + false); + $builder.find('.dataTables_scrolling').css( + "max-height", widgetHeight - 110); + } + }); + + // set click event for all my shows checkbox. + $builder.on("click", "#sb_my_shows", function(ev) { + + if ($(this).is(':checked')) { + $(ev.delegateTarget).find('#sb_show_filter').val(0); + } + + showSearchSubmit(); + }); + + //set select event for choosing a show. + $builder.on("change", '#sb_show_filter', function(ev) { + + if ($(this).val() !== 0) { + $(ev.delegateTarget).find('#sb_my_shows') + .attr("checked", false); + } + + showSearchSubmit(); + + }); + + function checkScheduleUpdates() { + var data = {}, oTable = $('#show_builder_table').dataTable(), fn = oTable + .fnSettings().fnServerData, start = fn.start, end = fn.end; + + data["format"] = "json"; + data["start"] = start; + data["end"] = end; + data["timestamp"] = AIRTIME.showbuilder.getTimestamp(); + data["instances"] = AIRTIME.showbuilder.getShowInstances(); + + if (fn.hasOwnProperty("ops")) { + data["myShows"] = fn.ops.myShows; + data["showFilter"] = fn.ops.showFilter; + } + + $.ajax( { + "dataType" : "json", + "type" : "GET", + "url" : "/showbuilder/check-builder-feed", + "data" : data, + "success" : function(json) { + if (json.update === true) { + oTable.fnDraw(); + } + } + }); + } + + //check if the timeline view needs updating. + setInterval(checkScheduleUpdates, 5 * 1000); //need refresh in milliseconds + }; + + mod.onResize = function() { + + clearTimeout(resizeTimeout); + resizeTimeout = setTimeout(setWidgetSize, 100); + }; + + return AIRTIME; $builder.on("click","#sb_edit", function (ev){ var schedTable = $("#show_builder_table").dataTable(); diff --git a/airtime_mvc/public/js/datatables/plugin/dataTables.columnFilter.js b/airtime_mvc/public/js/datatables/plugin/dataTables.columnFilter.js index 4084fbbdb..80cb011cf 100644 --- a/airtime_mvc/public/js/datatables/plugin/dataTables.columnFilter.js +++ b/airtime_mvc/public/js/datatables/plugin/dataTables.columnFilter.js @@ -190,7 +190,7 @@ } else if (th.attr('id') == "length") { label = " hh:mm:ss.t"; } else if (th.attr('id') == "sample_rate") { - label = " Hz"; + label = " kHz"; } th.html(_fnRangeLabelPart(0)); diff --git a/airtime_mvc/tests/phpunit.xml b/airtime_mvc/tests/phpunit.xml index e69de29bb..01ad1609e 100644 --- a/airtime_mvc/tests/phpunit.xml +++ b/airtime_mvc/tests/phpunit.xml @@ -0,0 +1,2 @@ + + diff --git a/install_full/ubuntu/airtime-full-install b/install_full/ubuntu/airtime-full-install index 11bff85ec..955ec3ac7 100755 --- a/install_full/ubuntu/airtime-full-install +++ b/install_full/ubuntu/airtime-full-install @@ -27,11 +27,11 @@ code=`lsb_release -cs` if [ "$dist" = "Debian" ]; then set +e - grep -E "deb +http://www.deb-multimedia.org/? squeeze +main +non-free" /etc/apt/sources.list + grep -E "deb http://backports.debian.org/debian-backports squeeze-backports main" /etc/apt/sources.list returncode=$? set -e if [ "$returncode" -ne "0" ]; then - echo "deb http://www.deb-multimedia.org squeeze main non-free" >> /etc/apt/sources.list + echo "deb http://backports.debian.org/debian-backports squeeze-backports main" >> /etc/apt/sources.list fi fi diff --git a/install_full/ubuntu/airtime-full-install-nginx b/install_full/ubuntu/airtime-full-install-nginx index 6b802b3bb..7e38e34cb 100755 --- a/install_full/ubuntu/airtime-full-install-nginx +++ b/install_full/ubuntu/airtime-full-install-nginx @@ -29,9 +29,9 @@ dist=`lsb_release -is` code=`lsb_release -cs` if [ "$dist" -eq "Debian" ]; then - grep "deb http://www.deb-multimedia.org squeeze main non-free" /etc/apt/sources.list + grep "deb http://backports.debian.org/debian-backports squeeze-backports main" /etc/apt/sources.list if [ "$?" -ne "0" ]; then - echo "deb http://www.deb-multimedia.org squeeze main non-free" >> /etc/apt/sources.list + echo "deb http://backports.debian.org/debian-backports squeeze-backports main" >> /etc/apt/sources.list fi fi diff --git a/install_minimal/upgrades/airtime-2.1.0/common/Version20120405114454.php b/install_minimal/upgrades/airtime-2.1.0/common/Version20120405114454.php index 1f17976d0..073457cbb 100644 --- a/install_minimal/upgrades/airtime-2.1.0/common/Version20120405114454.php +++ b/install_minimal/upgrades/airtime-2.1.0/common/Version20120405114454.php @@ -9,16 +9,16 @@ class Version20120405114454 extends AbstractMigration { public function up(Schema $schema) { - //create cc_subjs_token table - $cc_subjs_token = $schema->createTable('cc_subjs_token'); - + //create cc_subjs_token table + $cc_subjs_token = $schema->createTable('cc_subjs_token'); + $cc_subjs_token->addColumn('id', 'integer', array('unsigned' => true, 'autoincrement' => true)); - $cc_subjs_token->addColumn('user_id', 'integer', array('notnull' => 1)); - $cc_subjs_token->addColumn('action', 'string', array('length' => 255, 'notnull' => 1)); + $cc_subjs_token->addColumn('user_id', 'integer', array('notnull' => 1)); + $cc_subjs_token->addColumn('action', 'string', array('length' => 255, 'notnull' => 1)); $cc_subjs_token->addColumn('token', 'string', array('length' => 40, 'notnull' => 1)); - $cc_subjs_token->addColumn('created', 'datetime', array('notnull' => 1)); - - $cc_subjs_token->setPrimaryKey(array('id')); + $cc_subjs_token->addColumn('created', 'datetime', array('notnull' => 1)); + + $cc_subjs_token->setPrimaryKey(array('id')); //end create cc_subjs_token table } diff --git a/install_minimal/upgrades/airtime-2.1.0/common/Version20120410104441.php b/install_minimal/upgrades/airtime-2.1.0/common/Version20120410104441.php index aada5793c..80db8b1b3 100644 --- a/install_minimal/upgrades/airtime-2.1.0/common/Version20120410104441.php +++ b/install_minimal/upgrades/airtime-2.1.0/common/Version20120410104441.php @@ -24,21 +24,21 @@ class Version20120410104441 extends AbstractMigration $this->_addSql("ALTER TABLE cc_files ADD temp_br integer"); $this->_addSql("ALTER TABLE cc_files ADD temp_sr integer"); - $this->_addSql("UPDATE cc_files SET temp_br = bit_rate::integer"); - $this->_addSql("UPDATE cc_files SET temp_sr = sample_rate::integer"); + $this->_addSql("UPDATE cc_files SET temp_br = bit_rate::integer"); + $this->_addSql("UPDATE cc_files SET temp_sr = sample_rate::integer"); - $this->_addSql("ALTER TABLE cc_files DROP COLUMN sample_rate"); + $this->_addSql("ALTER TABLE cc_files DROP COLUMN sample_rate"); $this->_addSql("ALTER TABLE cc_files DROP COLUMN bit_rate"); - - $this->_addSql("ALTER TABLE cc_files RENAME COLUMN temp_sr TO sample_rate"); + + $this->_addSql("ALTER TABLE cc_files RENAME COLUMN temp_sr TO sample_rate"); $this->_addSql("ALTER TABLE cc_files RENAME COLUMN temp_br TO bit_rate"); - //add utime, lptime - $this->_addSql("ALTER TABLE cc_files ADD utime timestamp"); + //add utime, lptime + $this->_addSql("ALTER TABLE cc_files ADD utime timestamp"); $this->_addSql("ALTER TABLE cc_files ADD lptime timestamp"); - //setting these to a default now for timeline refresh purposes. - $now = gmdate("Y-m-d H:i:s"); + //setting these to a default now for timeline refresh purposes. + $now = gmdate("Y-m-d H:i:s"); $this->_addSql("UPDATE cc_files SET utime = '$now'"); } diff --git a/install_minimal/upgrades/airtime-2.1.0/common/Version20120410143340.php b/install_minimal/upgrades/airtime-2.1.0/common/Version20120410143340.php index a4468606b..9cd72c7fc 100644 --- a/install_minimal/upgrades/airtime-2.1.0/common/Version20120410143340.php +++ b/install_minimal/upgrades/airtime-2.1.0/common/Version20120410143340.php @@ -12,7 +12,7 @@ class Version20120410143340 extends AbstractMigration */ public function up(Schema $schema) { - //convert column creator to be creator_id on cc_playlist + //convert column creator to be creator_id on cc_playlist $this->_addSql("ALTER TABLE cc_playlist ADD creator_id integer"); $this->_addSql("UPDATE cc_playlist SET creator_id = (SELECT id FROM cc_subjs WHERE creator = login)"); $this->_addSql("ALTER TABLE cc_playlist DROP COLUMN creator"); diff --git a/install_minimal/upgrades/airtime-2.1.0/propel/airtime/CcShowInstances.php b/install_minimal/upgrades/airtime-2.1.0/propel/airtime/CcShowInstances.php index 9cf5407ca..260fee1f9 100644 --- a/install_minimal/upgrades/airtime-2.1.0/propel/airtime/CcShowInstances.php +++ b/install_minimal/upgrades/airtime-2.1.0/propel/airtime/CcShowInstances.php @@ -136,36 +136,36 @@ class CcShowInstances extends BaseCcShowInstances { ->update(array('DbPlayoutStatus' => 0), $con); } - /** - * Computes the value of the aggregate column time_filled - * - * @param PropelPDO $con A connection object - * - * @return mixed The scalar result from the aggregate query - */ - public function computeDbTimeFilled(PropelPDO $con) - { - $stmt = $con->prepare('SELECT SUM(clip_length) FROM "cc_schedule" WHERE cc_schedule.INSTANCE_ID = :p1'); - $stmt->bindValue(':p1', $this->getDbId()); - $stmt->execute(); - return $stmt->fetchColumn(); - } - - /** - * Updates the aggregate column time_filled - * - * @param PropelPDO $con A connection object - */ - public function updateDbTimeFilled(PropelPDO $con) - { - $this->setDbTimeFilled($this->computeDbTimeFilled($con)); - $this->save($con); + /** + * Computes the value of the aggregate column time_filled + * + * @param PropelPDO $con A connection object + * + * @return mixed The scalar result from the aggregate query + */ + public function computeDbTimeFilled(PropelPDO $con) + { + $stmt = $con->prepare('SELECT SUM(clip_length) FROM "cc_schedule" WHERE cc_schedule.INSTANCE_ID = :p1'); + $stmt->bindValue(':p1', $this->getDbId()); + $stmt->execute(); + return $stmt->fetchColumn(); + } + + /** + * Updates the aggregate column time_filled + * + * @param PropelPDO $con A connection object + */ + public function updateDbTimeFilled(PropelPDO $con) + { + $this->setDbTimeFilled($this->computeDbTimeFilled($con)); + $this->save($con); } public function preInsert(PropelPDO $con = null) { - $now = new DateTime("now", new DateTimeZone("UTC")); - $this->setDbCreated($now); - return true; + $now = new DateTime("now", new DateTimeZone("UTC")); + $this->setDbCreated($now); + return true; } } // CcShowInstances diff --git a/install_minimal/upgrades/upgrade-template/UpgradeCommon.php b/install_minimal/upgrades/upgrade-template/UpgradeCommon.php index 218ecfa3c..8792c89cf 100644 --- a/install_minimal/upgrades/upgrade-template/UpgradeCommon.php +++ b/install_minimal/upgrades/upgrade-template/UpgradeCommon.php @@ -26,31 +26,31 @@ class UpgradeCommon { */ public static function connectToDatabase($p_exitOnError = true) { - try { - $con = Propel::getConnection(); - } catch (Exception $e) { - echo $e->getMessage().PHP_EOL; - echo "Database connection problem.".PHP_EOL; - echo "Check if database exists with corresponding permissions.".PHP_EOL; - if ($p_exitOnError) { - exit(1); - } - return false; - } - return true; + try { + $con = Propel::getConnection(); + } catch (Exception $e) { + echo $e->getMessage().PHP_EOL; + echo "Database connection problem.".PHP_EOL; + echo "Check if database exists with corresponding permissions.".PHP_EOL; + if ($p_exitOnError) { + exit(1); + } + return false; + } + return true; } public static function DbTableExists($p_name) { - $con = Propel::getConnection(); - try { - $sql = "SELECT * FROM ".$p_name." LIMIT 1"; - $con->query($sql); - } catch (PDOException $e){ - return false; - } - return true; + $con = Propel::getConnection(); + try { + $sql = "SELECT * FROM ".$p_name." LIMIT 1"; + $con->query($sql); + } catch (PDOException $e){ + return false; + } + return true; } private static function GetAirtimeSrcDir() diff --git a/python_apps/icecast2/airtime-icecast-status.xsl b/python_apps/icecast2/airtime-icecast-status.xsl index 565c81ebe..c69ba714d 100644 --- a/python_apps/icecast2/airtime-icecast-status.xsl +++ b/python_apps/icecast2/airtime-icecast-status.xsl @@ -1,7 +1,7 @@ - - - - - - - + + + + + + + diff --git a/python_apps/media-monitor2/media/monitor/manager.py b/python_apps/media-monitor2/media/monitor/manager.py index a266c1479..548590f38 100644 --- a/python_apps/media-monitor2/media/monitor/manager.py +++ b/python_apps/media-monitor2/media/monitor/manager.py @@ -202,6 +202,12 @@ class Manager(Loggable): organize. """ store_paths = mmp.expand_storage(store) + # First attempt to make sure that all paths exist before adding any + # watches + for path_type, path in store_paths.iteritems(): + try: mmp.create_dir(path) + except mmp.FailedToCreateDir as e: self.unexpected_exception(e) + self.set_problem_files_path(store_paths['problem_files']) self.set_imported_path(store_paths['imported']) self.set_recorded_path(store_paths['recorded']) diff --git a/python_apps/media-monitor2/mm2.py b/python_apps/media-monitor2/mm2.py index 37fb23ebf..2abace71c 100644 --- a/python_apps/media-monitor2/mm2.py +++ b/python_apps/media-monitor2/mm2.py @@ -105,6 +105,9 @@ def main(global_config, api_client_config, log_config, airtime_notifier = AirtimeNotifier(config, airtime_receiver) store = apiclient.setup_media_monitor() + + log.info("Initing with the following airtime response:%s" % str(store)) + airtime_receiver.change_storage({ 'directory':store[u'stor'] }) for watch_dir in store[u'watched_dirs']: @@ -116,6 +119,7 @@ def main(global_config, api_client_config, log_config, (given from the database)." % watch_dir) if os.path.exists(watch_dir): airtime_receiver.new_watch({ 'directory':watch_dir }, restart=True) + else: log.info("Failed to add watch on %s" % str(watch_dir)) bs = Bootstrapper( db=sdb, watch_signal='watch' ) diff --git a/python_apps/pypo/liquidsoap_scripts/library/gstreamer.liq b/python_apps/pypo/liquidsoap_scripts/library/gstreamer.liq new file mode 100644 index 000000000..d3a364abd --- /dev/null +++ b/python_apps/pypo/liquidsoap_scripts/library/gstreamer.liq @@ -0,0 +1,34 @@ +%ifdef input.gstreamer.video +# Stream from a video4linux 2 input device, such as a webcam. +# @category Source / Input +# @param ~id Force the value of the source ID. +# @param ~clock_safe Force the use of the dedicated v4l clock. +# @param ~device V4L2 device to use. +def input.v4l2(~id="",~clock_safe=true,~device="/dev/video0") + pipeline = "v4l2src device=#{device}" + input.gstreamer.video(id=id, clock_safe=clock_safe, pipeline=pipeline) +end + +# Stream from a video4linux 2 input device, such as a webcam. +# @category Source / Input +# @param ~id Force the value of the source ID. +# @param ~clock_safe Force the use of the dedicated v4l clock. +# @param ~device V4L2 device to use. +def input.v4l2_with_audio(~id="",~clock_safe=true,~device="/dev/video0") + audio_pipeline = "autoaudiosrc" + video_pipeline = "v4l2src device=#{device}" + input.gstreamer.audio_video(id=id, clock_safe=clock_safe, audio_pipeline=audio_pipeline, video_pipeline=video_pipeline) +end + +def gstreamer.encode_x264_avi(fname, source) + output.gstreamer.video(pipeline="videoconvert ! x264enc ! avimux ! filesink location=\"#{fname}\"", source) +end + +def gstreamer.encode_jpeg_avi(fname, source) + output.gstreamer.video(pipeline="videoconvert ! jpegenc ! avimux ! filesink location=\"#{fname}\"", source) +end + +def gstreamer.encode_mp3(fname, source) + output.gstreamer.audio(pipeline="audioconvert ! lamemp3enc ! filesink location=\"#{fname}\"", source) +end +%endif \ No newline at end of file diff --git a/widgets/css/airtime-widgets.css b/widgets/css/airtime-widgets.css index 7ff364ead..29527cc39 100644 --- a/widgets/css/airtime-widgets.css +++ b/widgets/css/airtime-widgets.css @@ -1,213 +1,213 @@ -@charset "utf-8"; -/* CSS Document */ - - -#headerLiveHolder { - overflow: hidden; - position:relative; - width:300px!important; - font-family: Arial,Helvetica,sans-serif; - font-size: 13px; - margin: 0; - padding: 0; - } - #headerLiveHolder * { - margin: 0; - padding: 0; - } - #headerLiveHolder ul { - list-style-type:none; - margin: 0; - padding: 0; - } - #headerLiveHolder h4 { - font-size:10px; - color:#68bd44; - text-transform:uppercase; - font-weight:normal; - line-height:12px; - } - #headerLiveHolder ul li { - overflow:hidden; - position:relative; - height:12px; - padding-right:70px; - font-size:11px; - color:#999999; - line-height:11px; - } - #headerLiveHolder ul li.current { - font-weight:bold; - color:#666666; - } - #headerLiveHolder ul li span { - position:absolute; - right:0px; - top:0px; - } - #headerLiveHolder ul li span#time-elapsed { - right: 50px; - } - #headerLiveHolder ul li span#time-elapsed:before { - content: "e."; - } - #headerLiveHolder ul li span#time-remaining:before { - content: "r."; - } - -#onAirToday { - width:300px; - margin-bottom:15px; - border:1px solid #999999; - font-family: Arial,Helvetica,sans-serif; - } - #onAirToday h3 { - margin:0; - padding:0 10px; - font-size:13px; - color:#ffffff; - line-height:28px; - background: #999999; - } - #onAirToday table { - border-collapse: collapse; - clear: both; - padding: 0; - } - #onAirToday table tbody { - color: #000; - font-size:12px; - } - #onAirToday table tbody tr { - height: 30px; - } - #onAirToday table tbody tr td { - border-bottom: 1px dotted #d9d9d9; - height: 30px; - padding-left: 10px; - font-weight:bold; - } - #onAirToday table tbody tr td a { - text-decoration:none; - } - #onAirToday table tbody tr td a:hover { - text-decoration:underline; - } - #onAirToday table tbody tr:last-child td { - border-bottom: none; - } - #onAirToday table tbody tr td.time { - font-weight:normal; - color: #666666; - } -/* = PROGRAM SCHEDULE ---------------- */ - - /* - + Center Column */ - #scheduleTabs { - font-family: Arial,Helvetica,sans-serif; - } - #scheduleTabs ul { - overflow:hidden; - height:28px; - background: url( widget-img/schedule-tabs-list-bgr.png) repeat-x left bottom; - list-style-type:none; - margin:0; - padding:0; - } - #scheduleTabs ul li { - float:left; - height:28px; - margin:0; - padding:0; - } - #scheduleTabs ul li a { - display:block; - float:left; - height:25px; - padding:0 10px; - margin-top:3px; - font-size:12px; - font-weight:bold; - color:#666; - line-height:25px; - border-right:1px solid #dbdbdb; - border-left:1px solid #f4f4f4; - text-decoration:none; - } - #scheduleTabs ul li a:hover { - color:#000; - text-decoration:none; - } - #scheduleTabs ul li.ui-tabs-selected a { - height:27px; - margin-top:0px; - line-height:27px; - color:#333333; - background:#ffffff; - border:1px solid #cac9c9; border-bottom:none; - } - #scheduleTabs table { - clear:both; - padding:0px; - border-collapse:collapse; - width:100%; - } - #scheduleTabs table thead { - height:35px; - font-size:12px; color:#333333; line-height:35px; - background-color: #fff; - background: -moz-linear-gradient(top, #ffffff 10%, #f4f4f4 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(10%, #ffffff), color-stop(100%, #f4f4f4)); - border-bottom:1px solid #d4d4d4; - } - #scheduleTabs table thead tr { - height:35px; - } - #scheduleTabs table thead tr td { - padding-left:10px; - font-size:11px; color:#999999; text-transform:uppercase; - } - #scheduleTabs table tfoot { - } - #scheduleTabs table tbody { - font-size:13px; color:#666666; font-weight:bold; - } - #scheduleTabs table tbody tr { - height:30px; - } - #scheduleTabs table tbody tr td { - height:30px; - padding-left:10px; - border-bottom:1px dotted #b3b3b3; - } - #scheduleTabs table tbody tr td h4 { - color:#333333; font-size:12px; - margin:0; - padding:0; - } - #scheduleTabs table tbody tr td ul { - background:none !important; - list-style-type:none; - } - #scheduleTabs table tbody tr td ul li { - float:left; - height:30px !important; - padding:0 2px; - font-size:12px; color:#cc0000; font-weight:normal; line-height:30px !important; - } - #scheduleTabs table tbody tr td ul li a { - height:30px !important; - margin:0px !important; padding:0px !important; - font-size:12px; color:#68BD44 !important; font-weight:normal !important; text-transform:uppercase; line-height:30px !important; - background:none !important; - border:none !important; - } - #scheduleTabs table tbody tr td ul li a:hover { - text-decoration:underline; - } - -#scheduleTabs.ui-tabs .ui-tabs-hide { - display: none; -} +@charset "utf-8"; +/* CSS Document */ + + +#headerLiveHolder { + overflow: hidden; + position:relative; + width:300px!important; + font-family: Arial,Helvetica,sans-serif; + font-size: 13px; + margin: 0; + padding: 0; + } + #headerLiveHolder * { + margin: 0; + padding: 0; + } + #headerLiveHolder ul { + list-style-type:none; + margin: 0; + padding: 0; + } + #headerLiveHolder h4 { + font-size:10px; + color:#68bd44; + text-transform:uppercase; + font-weight:normal; + line-height:12px; + } + #headerLiveHolder ul li { + overflow:hidden; + position:relative; + height:12px; + padding-right:70px; + font-size:11px; + color:#999999; + line-height:11px; + } + #headerLiveHolder ul li.current { + font-weight:bold; + color:#666666; + } + #headerLiveHolder ul li span { + position:absolute; + right:0px; + top:0px; + } + #headerLiveHolder ul li span#time-elapsed { + right: 50px; + } + #headerLiveHolder ul li span#time-elapsed:before { + content: "e."; + } + #headerLiveHolder ul li span#time-remaining:before { + content: "r."; + } + +#onAirToday { + width:300px; + margin-bottom:15px; + border:1px solid #999999; + font-family: Arial,Helvetica,sans-serif; + } + #onAirToday h3 { + margin:0; + padding:0 10px; + font-size:13px; + color:#ffffff; + line-height:28px; + background: #999999; + } + #onAirToday table { + border-collapse: collapse; + clear: both; + padding: 0; + } + #onAirToday table tbody { + color: #000; + font-size:12px; + } + #onAirToday table tbody tr { + height: 30px; + } + #onAirToday table tbody tr td { + border-bottom: 1px dotted #d9d9d9; + height: 30px; + padding-left: 10px; + font-weight:bold; + } + #onAirToday table tbody tr td a { + text-decoration:none; + } + #onAirToday table tbody tr td a:hover { + text-decoration:underline; + } + #onAirToday table tbody tr:last-child td { + border-bottom: none; + } + #onAirToday table tbody tr td.time { + font-weight:normal; + color: #666666; + } +/* = PROGRAM SCHEDULE ---------------- */ + + /* + + Center Column */ + #scheduleTabs { + font-family: Arial,Helvetica,sans-serif; + } + #scheduleTabs ul { + overflow:hidden; + height:28px; + background: url( widget-img/schedule-tabs-list-bgr.png) repeat-x left bottom; + list-style-type:none; + margin:0; + padding:0; + } + #scheduleTabs ul li { + float:left; + height:28px; + margin:0; + padding:0; + } + #scheduleTabs ul li a { + display:block; + float:left; + height:25px; + padding:0 10px; + margin-top:3px; + font-size:12px; + font-weight:bold; + color:#666; + line-height:25px; + border-right:1px solid #dbdbdb; + border-left:1px solid #f4f4f4; + text-decoration:none; + } + #scheduleTabs ul li a:hover { + color:#000; + text-decoration:none; + } + #scheduleTabs ul li.ui-tabs-selected a { + height:27px; + margin-top:0px; + line-height:27px; + color:#333333; + background:#ffffff; + border:1px solid #cac9c9; border-bottom:none; + } + #scheduleTabs table { + clear:both; + padding:0px; + border-collapse:collapse; + width:100%; + } + #scheduleTabs table thead { + height:35px; + font-size:12px; color:#333333; line-height:35px; + background-color: #fff; + background: -moz-linear-gradient(top, #ffffff 10%, #f4f4f4 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(10%, #ffffff), color-stop(100%, #f4f4f4)); + border-bottom:1px solid #d4d4d4; + } + #scheduleTabs table thead tr { + height:35px; + } + #scheduleTabs table thead tr td { + padding-left:10px; + font-size:11px; color:#999999; text-transform:uppercase; + } + #scheduleTabs table tfoot { + } + #scheduleTabs table tbody { + font-size:13px; color:#666666; font-weight:bold; + } + #scheduleTabs table tbody tr { + height:30px; + } + #scheduleTabs table tbody tr td { + height:30px; + padding-left:10px; + border-bottom:1px dotted #b3b3b3; + } + #scheduleTabs table tbody tr td h4 { + color:#333333; font-size:12px; + margin:0; + padding:0; + } + #scheduleTabs table tbody tr td ul { + background:none !important; + list-style-type:none; + } + #scheduleTabs table tbody tr td ul li { + float:left; + height:30px !important; + padding:0 2px; + font-size:12px; color:#cc0000; font-weight:normal; line-height:30px !important; + } + #scheduleTabs table tbody tr td ul li a { + height:30px !important; + margin:0px !important; padding:0px !important; + font-size:12px; color:#68BD44 !important; font-weight:normal !important; text-transform:uppercase; line-height:30px !important; + background:none !important; + border:none !important; + } + #scheduleTabs table tbody tr td ul li a:hover { + text-decoration:underline; + } + +#scheduleTabs.ui-tabs .ui-tabs-hide { + display: none; +} \ No newline at end of file diff --git a/widgets/widget_schedule.html b/widgets/widget_schedule.html index f7e8ae2de..66b02c546 100644 --- a/widgets/widget_schedule.html +++ b/widgets/widget_schedule.html @@ -1,1823 +1,1823 @@ - - - - -Airtime widgets - - - - - - - - - - - - - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TimeProgram NameDetails
    00:00 - 00:30

    The Interview (EN)

    00:30 - 01:00

    The Interview (EN)

    00:30 - 01:00

    Applause (EN)

    01:00 - 01:30

    L'invité

    01:30 - 02:00

    Applaudissement (FR)

    02:00 - 02:30

    Music From Countries - Promo

    02:30 - 03:00

    Music From Countries - Promo

    03:00 - 03:30

    The Interview (EN)

    03:00 - 03:30

    Newslink

      -
    • -
    03:30 - 04:00

    Applause (EN)

    04:00 - 04:30

    L'invité

    04:30 - 05:00

    Applaudissement (FR)

    05:00 - 05:30

    Music From Countries - Promo

    05:30 - 06:00

    Music From Countries - Promo

    06:00 - 06:30

    Music From Countries - Promo

    06:30 - 07:00

    Music From Countries - Promo

    07:00 - 07:30

    Newslink (EN)

    07:30 - 08:00

    Well Body

    08:00 - 08:30

    L'info chez vous (FR)

    09:00 - 09:30

    Brèves - Music - Promo

    09:30 - 10:00

    Youth Connection

    09:30 - 10:00

    Growing Matters (EN)

    11:00 - 12:00

    Breves-Music-Promo

    12:00 - 12:30

    Newslink (EN)

    12:30 - 13:00

    Well Body

    13:00 - 13:30

    L'info chez vous (FR)

    14:00 - 15:00

    Brèves - Music - Promo

    15:00 - 16:00

    Brèves - Music - Promo

    16:00 - 16:30

    Newslink

    17:00 - 17:30

    L'Info Chez-Vous

    18:30 - 19:00

    Youth Connection

    19:00 - 19:30

    L'info chez vous (FR)

    19:30 - 20:00

    Réseau jeunesse

    20:00 - 20:30

    Newslink (EN)

    20:30 - 21:00

    Well Body

    22:30 - 23:00

    Youth Connection

    23:30 - 00:00

    Réseau jeunesse

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TimeProgram NameDetails
    00:00 - 00:30

    Newslink (EN)

    01:00 - 01:30

    L'Info chez-vous

    02:00 - 02:30

    Music From Countries - Promo

    02:30 - 03:00

    Music From Countries - Promo

    03:00 - 03:30

    Newslink

      -
    • -
    03:30 - 04:00

    Well Body

    04:00 - 04:30

    L'info chez-vous (FR)

    05:00 - 05:30

    Music From Countries - Promo

    05:30 - 06:00

    Music From Countries - Promo

    06:00 - 06:30

    Music From Countries - Promo

    06:30 - 07:00

    Music From Countries - Promo

    07:00 - 07:30

    Newslink (EN)

    07:30 - 08:00

    Choices (EN)

    08:00 - 08:30

    L'info chez vous (FR)

    09:00 - 09:30

    Brèves - Music - Promo

    10:30 - 11:00

    Le Grenier

    11:00 - 12:00

    Breves-Music-Promo

    12:00 - 12:30

    Newslink (EN)

    12:30 - 13:00

    Choices (EN)

    13:00 - 13:30

    L'info chez vous (FR)

    14:00 - 15:00

    Brèves - Music - Promo

    15:00 - 16:00

    Brèves - Music - Promo

    16:00 - 16:30

    Newslink

    16:30 - 17:00

    Applause (EN)

    17:00 - 17:30

    L'Info Chez-Vous

    19:00 - 19:30

    L'info chez vous (FR)

    19:30 - 20:00

    Le Grenier

    20:00 - 20:30

    Newslink (EN)

    20:30 - 21:00

    Choices (EN)

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TimeProgram NameDetails
    00:00 - 00:30

    Newslink (EN)

    00:30 - 01:00

    Applause (EN)

    01:00 - 01:30

    L'Info chez-vous

    02:00 - 02:30

    Music From Countries - Promo

    02:30 - 03:00

    Music From Countries - Promo

    03:00 - 03:30

    Newslink

      -
    • -
    03:30 - 04:00

    Choices (EN)

    04:00 - 04:30

    L'info chez-vous (FR)

    05:00 - 05:30

    Music From Countries - Promo

    05:30 - 06:00

    Music From Countries - Promo

    06:00 - 06:30

    Music From Countries - Promo

    06:30 - 07:00

    Music From Countries - Promo

    07:00 - 07:30

    Newslink (EN)

    08:00 - 08:30

    L'info chez vous (FR)

    08:30 - 09:00

    Fifty Fifty (FR)

    09:00 - 09:30

    Brèves - Music - Promo

    09:30 - 10:00

    Well Body

    11:00 - 12:00

    Breves-Music-Promo

    12:00 - 12:30

    Newslink (EN)

    13:00 - 13:30

    L'info chez vous (FR)

    13:30 - 14:00

    Fifty Fifty (FR)

    14:00 - 15:00

    Brèves - Music - Promo

    15:00 - 16:00

    Brèves - Music - Promo

    16:00 - 16:30

    Newslink

    16:30 - 16:45

    The Citizen (EN)

    17:00 - 17:30

    L'Info Chez-Vous

    17:30 - 17:45

    Le Citoyen

    17:30 - 17:45

    Le Citoyen

    18:30 - 19:00

    Well Body

    19:00 - 19:30

    L'info chez vous (FR)

    20:00 - 20:30

    Newslink (EN)

    21:30 - 22:00

    Fifty Fifty (FR)

    22:00 - 22:15

    The Citizen (EN)

    22:30 - 23:00

    Well Body (EN)

    23:00 - 23:15

    Le Citoyen

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TimeProgram NameDetails
    00:00 - 00:30

    Newslink (EN)

    00:30 - 00:45

    The Citizen (EN)

    01:00 - 01:30

    L'Info chez-vous

    01:30 - 01:45

    Le Citoyen

    02:00 - 02:30

    Music From Countries - Promo

    02:30 - 03:00

    Music From Countries - Promo

    03:00 - 03:30

    Newslink

      -
    • -
    04:00 - 04:30

    L'info chez-vous (FR)

    04:30 - 05:00

    Fifty Fifty (FR)

    05:00 - 05:30

    Music From Countries - Promo

    05:30 - 06:00

    Music From Countries - Promo

    06:00 - 06:30

    Music From Countries - Promo

    06:30 - 07:00

    Music From Countries - Promo

    07:00 - 07:30

    Newslink (EN)

    07:30 - 08:00

    Growing Matters (EN)

    08:00 - 08:30

    L'info chez vous (FR)

    08:30 - 09:00

    Le Grenier

    09:00 - 09:30

    Brèves - Music - Promo

    09:30 - 10:00

    Choices (EN)

    11:00 - 12:00

    Breves-Music-Promo

    12:00 - 12:30

    Newslink (EN)

    12:30 - 13:00

    Growing Matters (EN)

    13:00 - 13:30

    L'info chez vous (FR)

    13:30 - 14:00

    Le Grenier

    14:00 - 15:00

    Brèves - Music - Promo

    15:00 - 16:00

    Brèves - Music - Promo

    16:00 - 16:30

    Newslink

    16:30 - 17:00

    Pages of History (EN)

    17:00 - 17:30

    L'Info Chez-Vous

    17:30 - 04:00

    Pages d'histoire

    18:30 - 19:00

    Choices (EN)

    19:00 - 19:30

    L'info chez vous (FR)

    20:00 - 20:30

    Newslink (EN)

    20:30 - 21:00

    Growing Matters (EN)

    21:30 - 22:00

    Le Grenier

    22:00 - 22:30

    Pages of History (EN)

    22:30 - 23:00

    Choices (EN)

    23:00 - 09:30

    Pages d'histoire

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TimeProgram NameDetails
    00:00 - 00:30

    Newslink (EN)

    00:30 - 01:00

    Pages of History (EN)

    01:00 - 01:30

    L'Info chez-vous

    01:30 - 12:00

    Pages d'histoire

    02:00 - 02:30

    Music From Countries - Promo

    02:30 - 03:00

    Music From Countries - Promo

    03:00 - 03:30

    Newslink

      -
    • -
    03:30 - 04:00

    Growing Matters (EN)

    04:00 - 04:30

    L'info chez-vous (FR)

    04:30 - 05:00

    Le Grenier

    05:00 - 05:30

    Music From Countries - Promo

    05:30 - 06:00

    Music From Countries - Promo

    06:00 - 06:30

    Music From Countries - Promo

    06:30 - 07:00

    Music From Countries - Promo

    07:00 - 07:30

    Newslink (EN)

    07:30 - 08:00

    Youth Connection

    08:00 - 08:30

    L'info chez vous (FR)

    08:30 - 09:00

    Réseau jeunesse

    09:00 - 09:30

    Brèves - Music - Promo

    10:30 - 11:00

    Fifty Fifty (FR)

    11:00 - 12:00

    Breves-Music-Promo

    12:00 - 12:30

    Newslink (EN)

    12:30 - 13:00

    Youth Connection

    13:00 - 13:30

    L'info chez vous (FR)

    13:30 - 14:00

    Réseau jeunesse

    14:00 - 15:00

    Brèves - Music - Promo

    15:00 - 16:00

    Brèves - Music - Promo

    16:00 - 16:30

    Newslink

    17:00 - 17:30

    L'Info Chez-Vous

    17:30 - 18:00

    Mano River Press (EN)

    19:00 - 19:30

    L'info chez vous (FR)

    19:30 - 20:00

    Réseau jeunesse

    20:00 - 20:30

    Newslink (EN)

    21:30 - 22:00

    Fifty Fifty (FR)

    22:30 - 23:00

    Youth Connection

    23:30 - 00:00

    Réseau jeunesse

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TimeProgram NameDetails
    00:00 - 00:30

    Newslink (EN)

    01:00 - 01:30

    L'Info chez-vous

    03:00 - 03:30

    Newslink

      -
    • -
    03:30 - 04:00

    Youth Connection

    04:00 - 04:30

    L'info chez-vous (FR)

    04:30 - 05:00

    Réseau jeunesse

    07:00 - 07:30

    Mano River Press (EN)

    07:30 - 08:00

    Weekend Review (EN)

    08:30 - 09:00

    Focus (FR)

    09:15 - 09:30

    The Stadium (EN)

    09:30 - 10:00

    Echoes of Charles Taylor Trial

      -
    • -
    11:45 - 12:00

    The Stadium (EN)

    12:30 - 13:00

    Weekend Review (EN)

    12:30 - 13:00

    Mano River Press (EN)

    13:30 - 14:00

    Focus (FR)

    16:00 - 16:30

    Mano River Press (EN)

    16:30 - 17:00

    Weekend Review (EN)

    17:30 - 18:00

    Focus (FR)

    18:00 - 18:15

    The Stadium (EN)

    18:30 - 19:00

    Echoes of Charles Taylor Trial

      -
    • -
    20:00 - 20:30

    Mano River Press (EN)

    20:30 - 21:00

    Weekend Review (EN)

    21:30 - 22:00

    Focus (FR)

    22:00 - 22:15

    The Stadium (EN)

    22:30 - 23:00

    Echoes of Charles Taylor Trial

      -
    • -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TimeProgram NameDetails
    00:00 - 00:30

    Mano River Press (EN)

    00:30 - 01:00

    Weekend Review (EN)

    01:30 - 02:00

    Focus (FR)

    03:00 - 03:30

    Mano River Press (EN)

    03:30 - 04:00

    Weekend Review (EN)

    04:30 - 05:00

    Focus (FR)

    07:00 - 07:30

    The Interview (EN)

    07:30 - 08:00

    Applause (EN)

    08:00 - 08:30

    L'invité

    08:30 - 09:00

    Applaudissement (FR)

    09:15 - 09:30

    The Citizen (EN)

    09:30 - 10:00

    Pages of History (EN)

    10:15 - 10:30

    Le Citoyen

    11:45 - 12:00

    The Citizen (EN)

    12:00 - 12:30

    The Interview (EN)

    12:30 - 13:00

    Applause (EN)

    13:00 - 13:30

    L'invité

    13:30 - 14:00

    Applaudissement (FR)

    16:00 - 16:30

    The Interview (EN)

    16:30 - 17:00

    Applause (EN)

    16:30 - 17:00

    The Interview (EN)

    17:00 - 17:30

    L'invité

    17:30 - 18:00

    Applaudissement (FR)

    18:00 - 18:15

    The Citizen (EN)

    18:30 - 19:00

    Pages of History (EN)

    19:00 - 19:15

    Le Citoyen

    20:00 - 20:30

    The Interview (EN)

    20:30 - 21:00

    Applause (EN)

    21:00 - 21:30

    L'invité

    21:30 - 22:00

    Applaudissement (FR)

    22:00 - 22:30

    The Interview (EN)

    22:00 - 22:30

    Pages of History (EN)

    -
    -
    - - + + + + +Airtime widgets + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TimeProgram NameDetails
    00:00 - 00:30

    The Interview (EN)

    00:30 - 01:00

    The Interview (EN)

    00:30 - 01:00

    Applause (EN)

    01:00 - 01:30

    L'invité

    01:30 - 02:00

    Applaudissement (FR)

    02:00 - 02:30

    Music From Countries - Promo

    02:30 - 03:00

    Music From Countries - Promo

    03:00 - 03:30

    The Interview (EN)

    03:00 - 03:30

    Newslink

      +
    • +
    03:30 - 04:00

    Applause (EN)

    04:00 - 04:30

    L'invité

    04:30 - 05:00

    Applaudissement (FR)

    05:00 - 05:30

    Music From Countries - Promo

    05:30 - 06:00

    Music From Countries - Promo

    06:00 - 06:30

    Music From Countries - Promo

    06:30 - 07:00

    Music From Countries - Promo

    07:00 - 07:30

    Newslink (EN)

    07:30 - 08:00

    Well Body

    08:00 - 08:30

    L'info chez vous (FR)

    09:00 - 09:30

    Brèves - Music - Promo

    09:30 - 10:00

    Youth Connection

    09:30 - 10:00

    Growing Matters (EN)

    11:00 - 12:00

    Breves-Music-Promo

    12:00 - 12:30

    Newslink (EN)

    12:30 - 13:00

    Well Body

    13:00 - 13:30

    L'info chez vous (FR)

    14:00 - 15:00

    Brèves - Music - Promo

    15:00 - 16:00

    Brèves - Music - Promo

    16:00 - 16:30

    Newslink

    17:00 - 17:30

    L'Info Chez-Vous

    18:30 - 19:00

    Youth Connection

    19:00 - 19:30

    L'info chez vous (FR)

    19:30 - 20:00

    Réseau jeunesse

    20:00 - 20:30

    Newslink (EN)

    20:30 - 21:00

    Well Body

    22:30 - 23:00

    Youth Connection

    23:30 - 00:00

    Réseau jeunesse

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TimeProgram NameDetails
    00:00 - 00:30

    Newslink (EN)

    01:00 - 01:30

    L'Info chez-vous

    02:00 - 02:30

    Music From Countries - Promo

    02:30 - 03:00

    Music From Countries - Promo

    03:00 - 03:30

    Newslink

      +
    • +
    03:30 - 04:00

    Well Body

    04:00 - 04:30

    L'info chez-vous (FR)

    05:00 - 05:30

    Music From Countries - Promo

    05:30 - 06:00

    Music From Countries - Promo

    06:00 - 06:30

    Music From Countries - Promo

    06:30 - 07:00

    Music From Countries - Promo

    07:00 - 07:30

    Newslink (EN)

    07:30 - 08:00

    Choices (EN)

    08:00 - 08:30

    L'info chez vous (FR)

    09:00 - 09:30

    Brèves - Music - Promo

    10:30 - 11:00

    Le Grenier

    11:00 - 12:00

    Breves-Music-Promo

    12:00 - 12:30

    Newslink (EN)

    12:30 - 13:00

    Choices (EN)

    13:00 - 13:30

    L'info chez vous (FR)

    14:00 - 15:00

    Brèves - Music - Promo

    15:00 - 16:00

    Brèves - Music - Promo

    16:00 - 16:30

    Newslink

    16:30 - 17:00

    Applause (EN)

    17:00 - 17:30

    L'Info Chez-Vous

    19:00 - 19:30

    L'info chez vous (FR)

    19:30 - 20:00

    Le Grenier

    20:00 - 20:30

    Newslink (EN)

    20:30 - 21:00

    Choices (EN)

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TimeProgram NameDetails
    00:00 - 00:30

    Newslink (EN)

    00:30 - 01:00

    Applause (EN)

    01:00 - 01:30

    L'Info chez-vous

    02:00 - 02:30

    Music From Countries - Promo

    02:30 - 03:00

    Music From Countries - Promo

    03:00 - 03:30

    Newslink

      +
    • +
    03:30 - 04:00

    Choices (EN)

    04:00 - 04:30

    L'info chez-vous (FR)

    05:00 - 05:30

    Music From Countries - Promo

    05:30 - 06:00

    Music From Countries - Promo

    06:00 - 06:30

    Music From Countries - Promo

    06:30 - 07:00

    Music From Countries - Promo

    07:00 - 07:30

    Newslink (EN)

    08:00 - 08:30

    L'info chez vous (FR)

    08:30 - 09:00

    Fifty Fifty (FR)

    09:00 - 09:30

    Brèves - Music - Promo

    09:30 - 10:00

    Well Body

    11:00 - 12:00

    Breves-Music-Promo

    12:00 - 12:30

    Newslink (EN)

    13:00 - 13:30

    L'info chez vous (FR)

    13:30 - 14:00

    Fifty Fifty (FR)

    14:00 - 15:00

    Brèves - Music - Promo

    15:00 - 16:00

    Brèves - Music - Promo

    16:00 - 16:30

    Newslink

    16:30 - 16:45

    The Citizen (EN)

    17:00 - 17:30

    L'Info Chez-Vous

    17:30 - 17:45

    Le Citoyen

    17:30 - 17:45

    Le Citoyen

    18:30 - 19:00

    Well Body

    19:00 - 19:30

    L'info chez vous (FR)

    20:00 - 20:30

    Newslink (EN)

    21:30 - 22:00

    Fifty Fifty (FR)

    22:00 - 22:15

    The Citizen (EN)

    22:30 - 23:00

    Well Body (EN)

    23:00 - 23:15

    Le Citoyen

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TimeProgram NameDetails
    00:00 - 00:30

    Newslink (EN)

    00:30 - 00:45

    The Citizen (EN)

    01:00 - 01:30

    L'Info chez-vous

    01:30 - 01:45

    Le Citoyen

    02:00 - 02:30

    Music From Countries - Promo

    02:30 - 03:00

    Music From Countries - Promo

    03:00 - 03:30

    Newslink

      +
    • +
    04:00 - 04:30

    L'info chez-vous (FR)

    04:30 - 05:00

    Fifty Fifty (FR)

    05:00 - 05:30

    Music From Countries - Promo

    05:30 - 06:00

    Music From Countries - Promo

    06:00 - 06:30

    Music From Countries - Promo

    06:30 - 07:00

    Music From Countries - Promo

    07:00 - 07:30

    Newslink (EN)

    07:30 - 08:00

    Growing Matters (EN)

    08:00 - 08:30

    L'info chez vous (FR)

    08:30 - 09:00

    Le Grenier

    09:00 - 09:30

    Brèves - Music - Promo

    09:30 - 10:00

    Choices (EN)

    11:00 - 12:00

    Breves-Music-Promo

    12:00 - 12:30

    Newslink (EN)

    12:30 - 13:00

    Growing Matters (EN)

    13:00 - 13:30

    L'info chez vous (FR)

    13:30 - 14:00

    Le Grenier

    14:00 - 15:00

    Brèves - Music - Promo

    15:00 - 16:00

    Brèves - Music - Promo

    16:00 - 16:30

    Newslink

    16:30 - 17:00

    Pages of History (EN)

    17:00 - 17:30

    L'Info Chez-Vous

    17:30 - 04:00

    Pages d'histoire

    18:30 - 19:00

    Choices (EN)

    19:00 - 19:30

    L'info chez vous (FR)

    20:00 - 20:30

    Newslink (EN)

    20:30 - 21:00

    Growing Matters (EN)

    21:30 - 22:00

    Le Grenier

    22:00 - 22:30

    Pages of History (EN)

    22:30 - 23:00

    Choices (EN)

    23:00 - 09:30

    Pages d'histoire

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TimeProgram NameDetails
    00:00 - 00:30

    Newslink (EN)

    00:30 - 01:00

    Pages of History (EN)

    01:00 - 01:30

    L'Info chez-vous

    01:30 - 12:00

    Pages d'histoire

    02:00 - 02:30

    Music From Countries - Promo

    02:30 - 03:00

    Music From Countries - Promo

    03:00 - 03:30

    Newslink

      +
    • +
    03:30 - 04:00

    Growing Matters (EN)

    04:00 - 04:30

    L'info chez-vous (FR)

    04:30 - 05:00

    Le Grenier

    05:00 - 05:30

    Music From Countries - Promo

    05:30 - 06:00

    Music From Countries - Promo

    06:00 - 06:30

    Music From Countries - Promo

    06:30 - 07:00

    Music From Countries - Promo

    07:00 - 07:30

    Newslink (EN)

    07:30 - 08:00

    Youth Connection

    08:00 - 08:30

    L'info chez vous (FR)

    08:30 - 09:00

    Réseau jeunesse

    09:00 - 09:30

    Brèves - Music - Promo

    10:30 - 11:00

    Fifty Fifty (FR)

    11:00 - 12:00

    Breves-Music-Promo

    12:00 - 12:30

    Newslink (EN)

    12:30 - 13:00

    Youth Connection

    13:00 - 13:30

    L'info chez vous (FR)

    13:30 - 14:00

    Réseau jeunesse

    14:00 - 15:00

    Brèves - Music - Promo

    15:00 - 16:00

    Brèves - Music - Promo

    16:00 - 16:30

    Newslink

    17:00 - 17:30

    L'Info Chez-Vous

    17:30 - 18:00

    Mano River Press (EN)

    19:00 - 19:30

    L'info chez vous (FR)

    19:30 - 20:00

    Réseau jeunesse

    20:00 - 20:30

    Newslink (EN)

    21:30 - 22:00

    Fifty Fifty (FR)

    22:30 - 23:00

    Youth Connection

    23:30 - 00:00

    Réseau jeunesse

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TimeProgram NameDetails
    00:00 - 00:30

    Newslink (EN)

    01:00 - 01:30

    L'Info chez-vous

    03:00 - 03:30

    Newslink

      +
    • +
    03:30 - 04:00

    Youth Connection

    04:00 - 04:30

    L'info chez-vous (FR)

    04:30 - 05:00

    Réseau jeunesse

    07:00 - 07:30

    Mano River Press (EN)

    07:30 - 08:00

    Weekend Review (EN)

    08:30 - 09:00

    Focus (FR)

    09:15 - 09:30

    The Stadium (EN)

    09:30 - 10:00

    Echoes of Charles Taylor Trial

      +
    • +
    11:45 - 12:00

    The Stadium (EN)

    12:30 - 13:00

    Weekend Review (EN)

    12:30 - 13:00

    Mano River Press (EN)

    13:30 - 14:00

    Focus (FR)

    16:00 - 16:30

    Mano River Press (EN)

    16:30 - 17:00

    Weekend Review (EN)

    17:30 - 18:00

    Focus (FR)

    18:00 - 18:15

    The Stadium (EN)

    18:30 - 19:00

    Echoes of Charles Taylor Trial

      +
    • +
    20:00 - 20:30

    Mano River Press (EN)

    20:30 - 21:00

    Weekend Review (EN)

    21:30 - 22:00

    Focus (FR)

    22:00 - 22:15

    The Stadium (EN)

    22:30 - 23:00

    Echoes of Charles Taylor Trial

      +
    • +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TimeProgram NameDetails
    00:00 - 00:30

    Mano River Press (EN)

    00:30 - 01:00

    Weekend Review (EN)

    01:30 - 02:00

    Focus (FR)

    03:00 - 03:30

    Mano River Press (EN)

    03:30 - 04:00

    Weekend Review (EN)

    04:30 - 05:00

    Focus (FR)

    07:00 - 07:30

    The Interview (EN)

    07:30 - 08:00

    Applause (EN)

    08:00 - 08:30

    L'invité

    08:30 - 09:00

    Applaudissement (FR)

    09:15 - 09:30

    The Citizen (EN)

    09:30 - 10:00

    Pages of History (EN)

    10:15 - 10:30

    Le Citoyen

    11:45 - 12:00

    The Citizen (EN)

    12:00 - 12:30

    The Interview (EN)

    12:30 - 13:00

    Applause (EN)

    13:00 - 13:30

    L'invité

    13:30 - 14:00

    Applaudissement (FR)

    16:00 - 16:30

    The Interview (EN)

    16:30 - 17:00

    Applause (EN)

    16:30 - 17:00

    The Interview (EN)

    17:00 - 17:30

    L'invité

    17:30 - 18:00

    Applaudissement (FR)

    18:00 - 18:15

    The Citizen (EN)

    18:30 - 19:00

    Pages of History (EN)

    19:00 - 19:15

    Le Citoyen

    20:00 - 20:30

    The Interview (EN)

    20:30 - 21:00

    Applause (EN)

    21:00 - 21:30

    L'invité

    21:30 - 22:00

    Applaudissement (FR)

    22:00 - 22:30

    The Interview (EN)

    22:00 - 22:30

    Pages of History (EN)

    +
    +
    + + diff --git a/widgets/widgets.html b/widgets/widgets.html index 0c1ba7e2c..c4b8bc4dc 100644 --- a/widgets/widgets.html +++ b/widgets/widgets.html @@ -1,51 +1,51 @@ - - - - -Airtime widgets - - - - -
    -

    On air now >>

    - -
    -
    -
    -
    -

    On air today

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    04:30 - 05:00Réseau jeunesse
    07:00 - 07:30Mano River Press (EN)
    07:30 - 08:00Weekend Review (EN)
    08:30 - 09:00Focus (FR)
    09:15 - 09:30The Stadium (EN)
    09:30 - 10:00Echoes of Charles Taylor Trial
    -
    - - + + + + +Airtime widgets + + + + +
    +

    On air now >>

    + +
    +
    +
    +
    +

    On air today

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    04:30 - 05:00Réseau jeunesse
    07:00 - 07:30Mano River Press (EN)
    07:30 - 08:00Weekend Review (EN)
    08:30 - 09:00Focus (FR)
    09:15 - 09:30The Stadium (EN)
    09:30 - 10:00Echoes of Charles Taylor Trial
    +
    + +