├── .gitignore ├── config.yml ├── config.ru ├── public └── javascripts │ ├── glow │ └── widgets │ │ ├── images │ │ ├── t.gif │ │ ├── darkpanel │ │ │ ├── ab.png │ │ │ ├── al.png │ │ │ ├── ar.png │ │ │ ├── at.png │ │ │ ├── bg.gif │ │ │ ├── cbl.png │ │ │ ├── cbr.png │ │ │ ├── ctl.png │ │ │ ├── ctr.png │ │ │ ├── close.png │ │ │ └── transbg.png │ │ ├── lightpanel │ │ │ ├── ab.png │ │ │ ├── al.png │ │ │ ├── ar.png │ │ │ ├── at.png │ │ │ ├── bg.gif │ │ │ ├── cbl.png │ │ │ ├── cbr.png │ │ │ ├── close.png │ │ │ ├── ctl.png │ │ │ ├── ctr.png │ │ │ └── transbg.png │ │ ├── slider │ │ │ ├── darkh.png │ │ │ ├── darkv.png │ │ │ ├── lighth.png │ │ │ └── lightv.png │ │ ├── carousel │ │ │ ├── darkh.png │ │ │ ├── darkv.png │ │ │ ├── lighth.png │ │ │ ├── lightv.png │ │ │ ├── darkdots.png │ │ │ ├── darkdotsv.png │ │ │ ├── lightdots.png │ │ │ └── lightdotsv.png │ │ ├── editor │ │ │ ├── menuarrow.png │ │ │ ├── button-bold.png │ │ │ ├── button-italics.png │ │ │ ├── button-strike.png │ │ │ ├── dark-button-bold.png │ │ │ ├── button-blockquote.png │ │ │ ├── button-orderedlist.png │ │ │ ├── dark-button-italics.png │ │ │ ├── dark-button-strike.png │ │ │ ├── light-button-bold.png │ │ │ ├── light-button-strike.png │ │ │ ├── button-unorderedlist.png │ │ │ ├── light-button-italics.png │ │ │ ├── dark-button-blockquote.png │ │ │ ├── dark-button-orderedlist.png │ │ │ ├── light-button-blockquote.png │ │ │ └── dark-button-unorderedlist.png │ │ └── timetable │ │ │ ├── darkh.png │ │ │ ├── darkv.png │ │ │ ├── lighth.png │ │ │ └── lightv.png │ │ ├── widgets.css │ │ └── widgets.debug.css │ └── application.js ├── Rakefile ├── lib ├── settings.rb ├── gobbler.rb ├── bot.rb ├── bots.rb └── daemon.rb ├── bin └── twitter-server ├── test ├── settings_test.rb ├── fixtures │ └── twitter │ │ ├── empty.json │ │ └── example.json ├── bot_test.rb ├── riot_macros.rb ├── test_helper.rb ├── app_test.rb └── daemon_test.rb ├── README.textile └── app.rb /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | *.swo 3 | tmp/ 4 | log/ 5 | -------------------------------------------------------------------------------- /config.yml: -------------------------------------------------------------------------------- 1 | sections: 2 | - Halloween 3 | - Ruby 4 | - Love 5 | -------------------------------------------------------------------------------- /config.ru: -------------------------------------------------------------------------------- 1 | require 'app' 2 | 3 | use Rack::ShowExceptions 4 | run Sinatra::Application 5 | -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/t.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/t.gif -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/darkpanel/ab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/darkpanel/ab.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/darkpanel/al.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/darkpanel/al.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/darkpanel/ar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/darkpanel/ar.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/darkpanel/at.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/darkpanel/at.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/darkpanel/bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/darkpanel/bg.gif -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/darkpanel/cbl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/darkpanel/cbl.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/darkpanel/cbr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/darkpanel/cbr.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/darkpanel/ctl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/darkpanel/ctl.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/darkpanel/ctr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/darkpanel/ctr.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/lightpanel/ab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/lightpanel/ab.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/lightpanel/al.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/lightpanel/al.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/lightpanel/ar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/lightpanel/ar.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/lightpanel/at.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/lightpanel/at.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/lightpanel/bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/lightpanel/bg.gif -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/slider/darkh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/slider/darkh.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/slider/darkv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/slider/darkv.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/slider/lighth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/slider/lighth.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/slider/lightv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/slider/lightv.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/carousel/darkh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/carousel/darkh.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/carousel/darkv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/carousel/darkv.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/carousel/lighth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/carousel/lighth.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/carousel/lightv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/carousel/lightv.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/darkpanel/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/darkpanel/close.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/menuarrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/menuarrow.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/lightpanel/cbl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/lightpanel/cbl.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/lightpanel/cbr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/lightpanel/cbr.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/lightpanel/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/lightpanel/close.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/lightpanel/ctl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/lightpanel/ctl.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/lightpanel/ctr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/lightpanel/ctr.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/timetable/darkh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/timetable/darkh.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/timetable/darkv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/timetable/darkv.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/timetable/lighth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/timetable/lighth.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/timetable/lightv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/timetable/lightv.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/carousel/darkdots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/carousel/darkdots.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/carousel/darkdotsv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/carousel/darkdotsv.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/carousel/lightdots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/carousel/lightdots.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/darkpanel/transbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/darkpanel/transbg.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/button-bold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/button-bold.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/lightpanel/transbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/lightpanel/transbg.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/carousel/lightdotsv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/carousel/lightdotsv.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/button-italics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/button-italics.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/button-strike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/button-strike.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/dark-button-bold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/dark-button-bold.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/button-blockquote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/button-blockquote.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/button-orderedlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/button-orderedlist.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/dark-button-italics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/dark-button-italics.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/dark-button-strike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/dark-button-strike.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/light-button-bold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/light-button-bold.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/light-button-strike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/light-button-strike.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/button-unorderedlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/button-unorderedlist.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/light-button-italics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/light-button-italics.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/dark-button-blockquote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/dark-button-blockquote.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/dark-button-orderedlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/dark-button-orderedlist.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/light-button-blockquote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/light-button-blockquote.png -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/images/editor/dark-button-unorderedlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexyoung/gobbler/master/public/javascripts/glow/widgets/images/editor/dark-button-unorderedlist.png -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | require 'rake/testtask' 2 | 3 | Rake::TestTask.new :test do |test| 4 | test.libs << 'lib' << 'test' 5 | test.pattern = 'test/**/*_test.rb' 6 | test.verbose = true 7 | end 8 | 9 | task :default => :test 10 | -------------------------------------------------------------------------------- /lib/settings.rb: -------------------------------------------------------------------------------- 1 | class Settings 2 | CONFIG_FILE = File.dirname(__FILE__) / '..' / 'config.yml' 3 | 4 | def self.[](key) 5 | @@config ||= YAML.load(File.open(CONFIG_FILE)) 6 | @@config[key] 7 | end 8 | 9 | def self.[]=(key, value) 10 | @@config[key] = value 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /bin/twitter-server: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require File.join(File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'gobbler') 3 | 4 | case ARGV.last 5 | when 'start' 6 | Gobbler::Daemon.start 7 | when 'stop' 8 | Gobbler::Daemon.stop 9 | when 'restart' 10 | Gobbler::Daemon.stop 11 | Gobbler::Daemon.start 12 | else 13 | puts "Run with start, stop or restart" 14 | exit 1 15 | end 16 | -------------------------------------------------------------------------------- /test/settings_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | context 'The Settings class' do 4 | 5 | context 'reads settings' do 6 | asserts('returns a list of search terms') { Settings['sections'] }.any? 7 | end 8 | 9 | context 'writes settings' do 10 | setup { Settings['sections'] = %w(iphone windows7) } 11 | asserts('expected sections') { Settings['sections'] }.equals(%w(iphone windows7)) 12 | end 13 | 14 | end 15 | -------------------------------------------------------------------------------- /README.textile: -------------------------------------------------------------------------------- 1 | Gobble loads tweets in a scrolling view. It's similar to "Twistori":http://twistori.com/ 2 | 3 | h3. Installation 4 | 5 | # Download the source 6 | # Edit the config.yml file to watch topics that you're interested in 7 | # Set up a suitable rack-friendly web server (Passenger) or just run it locally 8 | 9 | h3. Info 10 | 11 | * It uses a background daemon to regularly fetch tweets from the twitter search API 12 | * It's zero-conf, so the web app will automatically launch the daemon as required 13 | * It uses "Sinatra":http://www.sinatrarb.com/ and the BBC's "glow framework":http://www.bbc.co.uk/glow/ 14 | 15 | h3. Todo 16 | 17 | * Multiple searches 18 | -------------------------------------------------------------------------------- /test/fixtures/twitter/empty.json: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Date: Sun, 11 Oct 2009 10:43:10 GMT 3 | Server: hi 4 | Status: 200 OK 5 | X-Served-From: searchdb006 6 | Content-Type: application/json; charset=utf-8 7 | X-Served-By: searchweb006.twitter.com 8 | X-Timeline-Cache-Hit: Miss 9 | Cache-Control: max-age=15, must-revalidate, max-age=300 10 | Expires: Sun, 11 Oct 2009 10:48:10 GMT 11 | Content-Length: 9514 12 | Vary: Accept-Encoding 13 | X-Varnish: 2074177752 14 | Age: 0 15 | Via: 1.1 varnish 16 | X-Cache-Svr: searchweb006.twitter.com 17 | X-Cache: MISS 18 | Connection: close 19 | 20 | {"results":[],"max_id":-1,"since_id":0,"results_per_page":15,"page":1,"completed_in":0.003348,"query":"xkxclscaaaaaaaaaaaa"} 21 | -------------------------------------------------------------------------------- /test/bot_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | context 'Twitter Bot' do 4 | 5 | context 'Search results are available' do 6 | setup do 7 | mock_query('example', 'example.json') 8 | end 9 | 10 | asserts('returns tweets') { topic.new_tweets }.any? 11 | end 12 | 13 | context 'Search results are not available' do 14 | setup do 15 | mock_query('example', 'empty.json') 16 | end 17 | 18 | asserts('returns array') { topic.new_tweets }.empty? 19 | end 20 | 21 | context 'Fetches updates "since" ID' do 22 | setup do 23 | mock_query('example', 'example.json') 24 | end 25 | 26 | asserts('returns expected messages') { topic.update ; topic.tweets_since(4781718128) }.any? 27 | end 28 | 29 | end 30 | -------------------------------------------------------------------------------- /test/riot_macros.rb: -------------------------------------------------------------------------------- 1 | module Custom 2 | module AssertionMacros 3 | def empty? 4 | length == 0 || fail("expected an empty collection, but got a #{actual.class.name} with #{actual.length rescue 0} items") 5 | end 6 | 7 | def any? 8 | length > 0 || fail("expected an array of items") 9 | end 10 | 11 | def length 12 | actual.respond_to?(:length) && actual.length || fail("#{actual.class.name} does not respond to length") 13 | end 14 | end 15 | 16 | module Macros 17 | def asserts_response_status(expected) 18 | asserts("response status is #{expected}") do 19 | last_response.status 20 | end.equals(expected) 21 | end 22 | end 23 | end 24 | 25 | Riot::Assertion.instance_eval { include Custom::AssertionMacros } 26 | Riot::Context.instance_eval { include Custom::Macros } 27 | -------------------------------------------------------------------------------- /test/test_helper.rb: -------------------------------------------------------------------------------- 1 | %w(rubygems riot fakeweb mocha rack/test).each do |lib| 2 | require lib 3 | end 4 | require 'lib/gobbler' 5 | require 'riot_macros' 6 | 7 | # TODO: This should be in Riot::Context 8 | include Mocha::API 9 | 10 | class File 11 | def self.here 12 | dirname(__FILE__) 13 | end 14 | end 15 | 16 | def fake_query(query, file_name) 17 | sanitized_query = TwitterSearch::Client.new.sanitize_query query 18 | uri = "#{TwitterSearch::Client::TWITTER_SEARCH_API_URL}?#{sanitized_query}&rpp=20" 19 | FakeWeb.register_uri(:get, uri, :response => File.here / 'fixtures' / 'twitter' / file_name) 20 | end 21 | 22 | def mock_query(query, json_file) 23 | query = { :q => query } 24 | fake_query query, json_file 25 | Gobbler::Bot.new query[:q] 26 | end 27 | 28 | Gobbler.logger = Logger.new STDOUT 29 | Gobbler.logger.level = Logger::WARN 30 | FakeWeb.allow_net_connect = false 31 | -------------------------------------------------------------------------------- /test/app_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | require 'rack/test' 3 | require 'app' 4 | 5 | # TODO: these lines should be in Riot::Context, but this isn't working 6 | def app; @app; end 7 | def session ; last_request.env['rack.session'] ; end 8 | include Rack::Test::Methods 9 | 10 | context 'Web App' do 11 | setup { @app = Sinatra::Application } 12 | 13 | context '/' do 14 | setup { get '/' } 15 | asserts_response_status 200 16 | asserts('last_tweet_id is nil') { session[:last_tweet_id] }.nil 17 | end 18 | 19 | context '/updates.json' do 20 | setup do 21 | tweets = [{ 'from_user' => '@alex_young', 22 | 'text' => 'This is a message' }] 23 | Sinatra::Application.any_instance.expects(:start_server_if_required).returns true 24 | Sinatra::Application.any_instance.expects(:tweets).returns(tweets) 25 | get '/updates.json' 26 | end 27 | asserts_response_status 200 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /lib/gobbler.rb: -------------------------------------------------------------------------------- 1 | require 'rubygems' 2 | require 'yaml' 3 | require 'twitter_search' 4 | require 'drb' 5 | require 'fileutils' 6 | require 'logger' 7 | require 'timeout' 8 | 9 | class String 10 | def /(other) 11 | File.join(self, other) 12 | end 13 | end 14 | 15 | module Gobbler 16 | LOG_DIR = File.dirname(__FILE__) / '..' / 'log' 17 | 18 | def self.logger 19 | @logger ||= enable_logging 20 | end 21 | 22 | def self.logger=(logger) 23 | @logger.close if @logger 24 | @logger = logger 25 | end 26 | 27 | def self.enable_logging 28 | FileUtils.mkdir_p LOG_DIR 29 | Logger.new(LOG_DIR / 'twitter-bot.log') 30 | rescue => exception 31 | puts "Error opening log file: #{exception}" 32 | Logger.new STDOUT 33 | end 34 | end 35 | 36 | require File.join(File.dirname(__FILE__), 'settings') 37 | require File.join(File.dirname(__FILE__), 'bot') 38 | require File.join(File.dirname(__FILE__), 'bots') 39 | require File.join(File.dirname(__FILE__), 'daemon') 40 | -------------------------------------------------------------------------------- /public/javascripts/application.js: -------------------------------------------------------------------------------- 1 | $ = glow.dom.get; 2 | observe = glow.events.addListener; 3 | 4 | glow.ready(function() { 5 | var updating = false; 6 | 7 | observe(window, 'resize', function() { 8 | window.scrollTo(0, 1); 9 | }); 10 | 11 | function render_tweet(tweet) { 12 | return '
  • ' + tweet['from_user'] + ' ' + tweet['text'] + '
  • '; 13 | } 14 | 15 | function limit_list() { 16 | var items = $('#updates li'); 17 | if (items.length > 25) { 18 | items.slice(0, items.length - 25).destroy(); 19 | } 20 | } 21 | 22 | function run_update() { 23 | if (updating) return; 24 | updating = true; 25 | 26 | glow.net.get('/updates.json', { onLoad: function(response) { 27 | var tweets = response.json(), 28 | element = $('#updates'); 29 | 30 | for (var key in tweets) { 31 | try { 32 | var tweet = glow.dom.create(render_tweet(tweets[key])), 33 | last_height = element[0].scrollHeight; 34 | element.append(tweet); 35 | element[0].style.bottom = '-' + (element[0].scrollHeight - last_height) + 'px'; 36 | tweet[0].style.opacity = 0.0; 37 | glow.anim.fadeIn(tweet, 1); 38 | glow.anim.css(element, 0.5, { 'bottom': { to: 0 } }).start(); 39 | } catch (exception) { 40 | console.log(exception); 41 | } 42 | 43 | limit_list(); 44 | } 45 | updating = false; 46 | }}); 47 | } 48 | 49 | run_update(); 50 | setInterval(run_update, 3000); 51 | }); 52 | -------------------------------------------------------------------------------- /test/daemon_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | def mock_drb_file_handling 4 | Gobbler.stubs(:current_drb_handle).returns('test_file') 5 | File.stubs('exists?').returns(true) 6 | File.stubs(:read).returns('druby://blah:9999') 7 | File.stubs(:delete).returns(true) 8 | end 9 | 10 | def mock_launch_daemon 11 | Gobbler::Daemon.stubs(:sleep).returns(true) 12 | Gobbler::Daemon.stubs(:install_at_exit_handler).returns(true) 13 | Gobbler::Daemon.expects(:system).with(Gobbler::Daemon::SERVER_COMMAND) 14 | end 15 | 16 | context 'Daemon' do 17 | 18 | context 'launching the daemon' do 19 | setup do 20 | mock_drb_file_handling 21 | end 22 | 23 | asserts 'launching the daemon calls system' do 24 | mock_launch_daemon.returns(true) 25 | Gobbler::Daemon.launch_daemon 26 | end 27 | 28 | asserts 'launching the daemon fails' do 29 | mock_launch_daemon.returns(false) 30 | Gobbler.expects(:logger).returns(mock :error => true) 31 | Gobbler::Daemon.launch_daemon 32 | end.nil? 33 | 34 | asserts('drb handle is expected value') { Gobbler::Daemon.current_drb_handle }.equals('druby://blah:9999') 35 | end 36 | 37 | context 'context stopping the daemon' do 38 | setup do 39 | mock_drb_file_handling 40 | end 41 | 42 | asserts 'stopping the daemon calls @server stop' do 43 | server = mock :alive => true 44 | server.expects :stop 45 | Gobbler::Daemon.expects(:connect_to_drb).returns(true) 46 | Gobbler::Daemon.instance_variable_set('@server', server) 47 | Gobbler::Daemon.stop 48 | end 49 | end 50 | 51 | end 52 | 53 | -------------------------------------------------------------------------------- /lib/bot.rb: -------------------------------------------------------------------------------- 1 | class Gobbler::Bot 2 | STORAGE_LIMIT = 25 3 | 4 | def initialize(watch, &block) 5 | @watch = watch 6 | @tweets = [] 7 | main_loop(block) if block 8 | end 9 | 10 | def search 11 | client = TwitterSearch::Client.new 'gobbler' 12 | client.query :q => @watch, :rpp => '20' 13 | rescue => exception 14 | Gobbler.logger.error "Exception in Bot#search for #{@watch}: #{exception}" 15 | [] 16 | end 17 | 18 | def update 19 | Gobbler.logger.info "Checking twitter for updates" 20 | tweets = search.reverse 21 | tweets.delete_if { |t| t.id < @last_tweet.id or t.id == @last_tweet.id } if @last_tweet 22 | @last_tweet = tweets.last if tweets.length > 0 23 | 24 | @tweets += tweets.clone 25 | @tweets.slice!(0, @tweets.size - STORAGE_LIMIT) if @tweets.size > STORAGE_LIMIT 26 | 27 | Gobbler.logger.info "Update found #{tweets.length} tweets. @tweets now has #{@tweets.length} items" 28 | 29 | tweets 30 | rescue => exception 31 | Gobbler.logger.error "Exception in Bot#update for #{@watch}: #{exception}" 32 | [] 33 | rescue Exception => exception 34 | Gobbler.logger.error "Fatal exception in Bot#update for #{@watch}: #{exception}" 35 | exit 99 36 | end 37 | 38 | def new_tweets 39 | update 40 | end 41 | 42 | def tweets_since(tweet_id) 43 | if tweet_id 44 | @tweets.reject { |t| t.id <= tweet_id } 45 | else 46 | @tweets 47 | end 48 | end 49 | 50 | def main_loop(block) 51 | while true 52 | tweets = new_tweets 53 | block.call(tweets) if tweets.length > 0 54 | sleep 5 55 | end 56 | end 57 | end 58 | -------------------------------------------------------------------------------- /lib/bots.rb: -------------------------------------------------------------------------------- 1 | class Gobbler::Bots 2 | attr_reader :bots 3 | 4 | def initialize 5 | @bots = {} 6 | end 7 | 8 | def start 9 | init_bots 10 | run_update_loop 11 | end 12 | 13 | def stop 14 | Gobbler.logger.info "Stopping bots" 15 | DRb.stop_service 16 | exit 17 | end 18 | 19 | def run_update_loop 20 | DRb.start_service nil, self 21 | Gobbler::Daemon.write_drb_handle DRb.uri 22 | Thread.new do 23 | while true do 24 | begin 25 | get_updates 26 | rescue => exception 27 | Gobbler.logger.error "Exception in main Bots loop thread: #{exception}" 28 | end 29 | 30 | sleep 5 31 | end 32 | end 33 | DRb.thread.join 34 | end 35 | 36 | def init_bots 37 | Settings['sections'].each do |section| 38 | @bots[section] = init_bot section 39 | end 40 | end 41 | 42 | def init_bot(query) 43 | Gobbler::Bot.new query 44 | end 45 | 46 | def alive 47 | "I'm alive" 48 | end 49 | 50 | def bot_names 51 | @bots.collect do |query, bot| 52 | query 53 | end 54 | end 55 | 56 | def get_updates 57 | results = {} 58 | @bots.each do |query, bot| 59 | results[query] = bot.new_tweets 60 | end 61 | results 62 | end 63 | 64 | def tweets_since(tweet_id, section = nil) 65 | if section 66 | tweets_since_for_section tweet_id, section 67 | else 68 | all_tweets_since tweet_id 69 | end 70 | end 71 | 72 | def all_tweets_since(tweet_id) 73 | @bots.collect do |query, bot| 74 | bot.tweets_since(tweet_id) 75 | end 76 | end 77 | 78 | def tweets_since_for_section(tweet_id, section = nil) 79 | @bots[section].tweets_since tweet_id 80 | end 81 | end 82 | -------------------------------------------------------------------------------- /lib/daemon.rb: -------------------------------------------------------------------------------- 1 | class File 2 | def self.here 3 | expand_path dirname(__FILE__) 4 | end 5 | end 6 | 7 | module Gobbler::Daemon 8 | TMP_DIR = File.here / '..' / 'tmp' 9 | DRB_FILE_NAME = TMP_DIR / 'drb-handle' 10 | SERVER_COMMAND = "#{File.here / '..' / 'bin' / 'twitter-server'} start &" 11 | 12 | def self.running? 13 | if current_drb_handle 14 | connect_to_drb unless server 15 | server.alive 16 | true 17 | else 18 | false 19 | end 20 | rescue DRb::DRbConnError 21 | false 22 | end 23 | 24 | def self.start_drb_if_required 25 | DRb.start_service unless DRb.primary_server 26 | end 27 | 28 | def self.connect_to_drb 29 | start_drb_if_required 30 | @server = DRbObject.new nil, current_drb_handle 31 | end 32 | 33 | def self.server ; @server ; end 34 | 35 | def self.tweets_since(tweet_id, section = nil) 36 | server.tweets_since(tweet_id, section) 37 | end 38 | 39 | def self.write_drb_handle(drb_handle) 40 | FileUtils.mkdir_p TMP_DIR 41 | File.open(DRB_FILE_NAME, 'w') do |f| 42 | puts "Running: #{drb_handle}" 43 | f.write drb_handle 44 | end 45 | end 46 | 47 | def self.current_drb_handle 48 | if File.exists? DRB_FILE_NAME 49 | File.read DRB_FILE_NAME 50 | end 51 | end 52 | 53 | def self.remove_drb_handle 54 | if File.exists? DRB_FILE_NAME 55 | File.delete DRB_FILE_NAME 56 | end 57 | end 58 | 59 | def self.install_at_exit_handler 60 | at_exit { stop } 61 | end 62 | 63 | def self.launch_daemon 64 | server_launched = system SERVER_COMMAND 65 | 66 | sleep 3 67 | 68 | if server_launched 69 | connect_to_drb 70 | install_at_exit_handler 71 | true 72 | else 73 | Gobbler.logger.error "bin/twitter-server binary could not be launched" 74 | end 75 | end 76 | 77 | def self.start 78 | return if running? 79 | 80 | start_drb_if_required 81 | bot_service = Gobbler::Bots.new 82 | bot_service.start 83 | end 84 | 85 | def self.stop 86 | connect_to_drb 87 | server.stop 88 | remove_drb_handle 89 | true 90 | rescue DRb::DRbConnError 91 | puts "Server down" 92 | end 93 | end 94 | -------------------------------------------------------------------------------- /app.rb: -------------------------------------------------------------------------------- 1 | %w(rubygems sinatra mustache/sinatra sass htmlentities json).each do |lib| 2 | begin 3 | require lib 4 | rescue LoadError 5 | puts "Please install #{lib}" 6 | exit 1 7 | end 8 | end 9 | require 'lib/gobbler' 10 | 11 | set :sessions, true 12 | 13 | helpers do 14 | def start_server_if_required 15 | Gobbler::Daemon.launch_daemon unless Gobbler::Daemon.running? 16 | end 17 | 18 | def newest_tweet_id(tweets) 19 | tweets.map(&:id).sort.last 20 | end 21 | 22 | def save_newest_tweet_to_session(tweets) 23 | tweet_id = newest_tweet_id(tweets) 24 | session[:last_tweet_id] = tweet_id if tweet_id 25 | end 26 | 27 | def tweets 28 | tweets = Gobbler::Daemon.tweets_since(session[:last_tweet_id], session[:current_section]) 29 | save_newest_tweet_to_session tweets 30 | tweets.map { |t| { :from_user => t.from_user, :text => t.text } } 31 | end 32 | 33 | def show_sections 34 | Settings['sections'].size != 1 35 | end 36 | 37 | def sections 38 | Settings['sections'].map do |s| 39 | class_name = s == session[:current_section] ? 'selected' : '' 40 | '
  • %s
  • ' % [class_name, s, s] 41 | end.join("\n") 42 | end 43 | end 44 | 45 | get '/' do 46 | session[:last_tweet_id] = nil 47 | session[:current_section] = Settings['sections'].first 48 | mustache :index, :locals => { :sections => sections, :show_sections => show_sections } 49 | end 50 | 51 | get '/section/:section' do 52 | session[:last_tweet_id] = nil 53 | session[:current_section] = params[:section] 54 | mustache :index, :locals => { :sections => sections, :show_sections => show_sections } 55 | end 56 | 57 | get '/updates.json' do 58 | start_server_if_required 59 | tweets.to_json 60 | end 61 | 62 | get '/stylesheets/screen.css' do 63 | headers 'Content-Type' => 'text/css; charset=utf-8' 64 | sass :stylesheet 65 | end 66 | 67 | __END__ 68 | 69 | @@layout 70 | 71 | 72 | 73 | Gobble 74 | 75 | 76 | 77 | 78 | 79 | {{{ yield }}} 80 | 81 | 82 | 83 | @@index 84 | 85 | {{#show_sections}} 86 | 87 | {{/show_sections}} 88 | 89 | @@stylesheet 90 | body 91 | :font-family helvetica, sans-serif 92 | :background-color #fff 93 | :overflow hidden 94 | 95 | a 96 | :color #ffc 97 | 98 | #updates 99 | :position absolute 100 | :bottom 0 101 | :left 0 102 | :background-color #000 103 | :color #ccc 104 | :font-size 28px 105 | :list-style-type none 106 | :margin 0 107 | :padding 0 108 | :width 100% 109 | 110 | #updates li 111 | :overflow hidden 112 | :margin 10px 113 | 114 | #sections 115 | :position absolute 116 | :top 0 117 | :background-color #ffc 118 | :color #333 119 | :margin 10px 120 | :padding 10px 121 | :list-style-type none 122 | :opacity 0.8 123 | 124 | #sections a 125 | :color #333 126 | :width 100% 127 | :display block 128 | :font-size 22px 129 | :text-decoration none 130 | 131 | #sections a:hover 132 | :background #fff 133 | :color #111 134 | 135 | #sections li.selected a 136 | :color #990000 137 | -------------------------------------------------------------------------------- /test/fixtures/twitter/example.json: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Date: Sun, 11 Oct 2009 10:19:42 GMT 3 | Server: hi 4 | Status: 200 OK 5 | X-Served-From: b031 6 | Content-Type: application/json; charset=utf-8 7 | X-Served-By: c088.twitter.com 8 | X-Timeline-Cache-Hit: Hit 9 | Cache-Control: max-age=15, must-revalidate, max-age=300 10 | Expires: Sun, 11 Oct 2009 10:24:42 GMT 11 | Content-Length: 9391 12 | Vary: Accept-Encoding 13 | X-Varnish: 743435818 14 | Age: 0 15 | Via: 1.1 varnish 16 | X-Cache-Svr: c088.twitter.com 17 | X-Cache: MISS 18 | Connection: close 19 | 20 | {"results":[{"profile_image_url":"http://a1.twimg.com/profile_images/371963600/06082009_normal.jpg","created_at":"Sun, 11 Oct 2009 10:18:39 +0000","from_user":"artisbimo","to_user_id":null,"text":"kasihan =pRT @sophisticatedme: Kl nyusul ksni tnpa bw dwit cm dpt cape, for example: ME!RT @riariu: Weekend with assignments :( .Pengen ...","id":4781749270,"from_user_id":49590182,"iso_language_code":"en","source":"<a href="http://m.tweete.net/" rel="nofollow">Mobile Tweete</a>"},{"profile_image_url":"http://a3.twimg.com/profile_images/449281703/babemum_normal.jpg","created_at":"Sun, 11 Oct 2009 10:17:26 +0000","from_user":"ZucchiniBikini","to_user_id":null,"text":"To give just one example - a free french fries voucher for Maccas. A voucher that'll save, what $1.50?","id":4781737136,"from_user_id":8799268,"iso_language_code":"en","source":"<a href="http://twitter.com/">web</a>"},{"profile_image_url":"http://s.twimg.com/a/1255039715/images/default_profile_3_normal.png","created_at":"Sun, 11 Oct 2009 10:15:46 +0000","from_user":"meteoaalten","to_user_id":null,"text":"Example twitter weather data 12:15 13.4?C 93 pct 6.1 km/h SSE #wdisplay","id":4781720405,"from_user_id":28818258,"iso_language_code":"en","source":"<a href="http://apiwiki.twitter.com/" rel="nofollow">API</a>"},{"profile_image_url":"http://a3.twimg.com/profile_images/123259033/Gary_s_picture_normal.jpg","created_at":"Sun, 11 Oct 2009 10:15:32 +0000","from_user":"GaryPriceOmaha","to_user_id":null,"text":"Example twitter weather data 05:15 AM 32.2?F 51 pct 0.0 mph SSE","id":4781718128,"from_user_id":10135302,"iso_language_code":"en","source":"<a href="http://apiwiki.twitter.com/" rel="nofollow">API</a>"},{"profile_image_url":"http://a1.twimg.com/profile_images/453327434/DSCI0811_normal.png","created_at":"Sun, 11 Oct 2009 10:15:26 +0000","from_user":"Guccii06","to_user_id":null,"text":"Niggas stop tellings girls shyt dey wanna hear jus 2 keep dem around! Dat shyt gon backfire example: thin line between love and hate","id":4781716913,"from_user_id":13580385,"iso_language_code":"en","source":"<a href="http://twitter.com/">web</a>"},{"profile_image_url":"http://s.twimg.com/a/1255039715/images/default_profile_5_normal.png","created_at":"Sun, 11 Oct 2009 10:15:13 +0000","from_user":"jmogorunr","to_user_id":null,"text":"Example twitter weather data 06:15 AM 37.6\u00b0F 91 pct 0.0 mph WNW #wdisplay","id":4781714691,"from_user_id":49059695,"iso_language_code":"en","source":"<a href="http://apiwiki.twitter.com/" rel="nofollow">API</a>"},{"profile_image_url":"http://a3.twimg.com/profile_images/443529517/Orchard_fruit_06_048_normal.jpg","created_at":"Sun, 11 Oct 2009 10:15:12 +0000","from_user":"Sappertoo","to_user_id":null,"text":"Example twitter weather data 11:15 13.8\u00b0C 84 pct 0.1 mph NW #wdisplay","id":4781714474,"from_user_id":64594993,"iso_language_code":"en","source":"<a href="http://apiwiki.twitter.com/" rel="nofollow">API</a>"},{"profile_image_url":"http://s.twimg.com/a/1254953317/images/default_profile_4_normal.png","created_at":"Sun, 11 Oct 2009 10:15:07 +0000","from_user":"LU9EV","to_user_id":null,"text":"Example twitter weather data 07:15 AM 10.4?C 79 pct 5.0 km/h N #wdisplay","id":4781713444,"from_user_id":54284038,"iso_language_code":"en","source":"<a href="http://apiwiki.twitter.com/" rel="nofollow">API</a>"},{"profile_image_url":"http://a3.twimg.com/profile_images/94892271/twerminology_normal.PNG","created_at":"Sun, 11 Oct 2009 10:15:04 +0000","from_user":"twerminology","to_user_id":null,"text":"Twerrorism \u2013 Used instead of terrorism when Twitter is under a hack attack, example: Fight twerrorism, change password","id":4781712892,"from_user_id":7036408,"iso_language_code":"en","source":"<a href="http://echofon.com/" rel="nofollow">Echofon</a>"},{"profile_image_url":"http://a1.twimg.com/profile_images/340661572/IMG_0143_normal.JPG","created_at":"Sun, 11 Oct 2009 10:14:39 +0000","from_user":"jallen285","to_user_id":null,"text":"My most favorite person passed. Lead by the best example.","id":4781708954,"from_user_id":605738,"iso_language_code":"en","source":"<a href="http://www.atebits.com/" rel="nofollow">Tweetie</a>"},{"profile_image_url":"http://a3.twimg.com/profile_images/447494747/Sudesh_Profile_photo_normal.jpg","created_at":"Sun, 11 Oct 2009 10:14:28 +0000","from_user":"sudeshjog","to_user_id":null,"text":"Great example of transactional fun driving behaviour here http://bit.ly/bmXEL .. any marketing examples?","id":4781707199,"from_user_id":70089828,"iso_language_code":"en","source":"<a href="http://twitter.com/">web</a>"},{"profile_image_url":"http://a3.twimg.com/profile_images/429367029/Jesper.Twitter.Avatar.4_normal.jpg","created_at":"Sun, 11 Oct 2009 10:13:48 +0000","from_user":"JesperBylund","to_user_id":62312,"text":"@nylander Not really. English, like any language, is a living form of expression and best learned from example, not from rules.","id":4781700979,"from_user_id":68291,"to_user":"nylander","iso_language_code":"en","source":"<a href="http://www.atebits.com/" rel="nofollow">Tweetie</a>"},{"profile_image_url":"http://a1.twimg.com/profile_images/287889766/IMGP4750_normal.JPG","created_at":"Sun, 11 Oct 2009 10:13:22 +0000","from_user":"Mal_Asian","to_user_id":6531720,"text":"@leonacraig I always thought it'd be a great idea to produce a TV show based on expats in Beijing, for example.","id":4781696968,"from_user_id":52285273,"to_user":"leonacraig","iso_language_code":"en","source":"<a href="http://itweet.net/" rel="nofollow">iTweet</a>"},{"profile_image_url":"http://a3.twimg.com/profile_images/460968507/IMG_6659_normal.jpg","created_at":"Sun, 11 Oct 2009 10:10:31 +0000","from_user":"kojobaffoe","to_user_id":null,"text":"RT @DaveDuarte: Just posted on my blog: "Fort Knox: a Stunning Example of South African Artistic Talent" http://bit.ly/39pzL","id":4781670246,"from_user_id":1963014,"iso_language_code":"en","source":"<a href="http://www.tweetdeck.com/" rel="nofollow">TweetDeck</a>"},{"profile_image_url":"http://s.twimg.com/a/1255039715/images/default_profile_5_normal.png","created_at":"Sun, 11 Oct 2009 10:10:11 +0000","from_user":"jmogorunr","to_user_id":null,"text":"Example twitter weather data 06:10 AM 37.5?F 91 pct 0.0 mph WNW #wdisplay","id":4781666943,"from_user_id":49059695,"iso_language_code":"en","source":"<a href="http://apiwiki.twitter.com/" rel="nofollow">API</a>"},{"profile_image_url":"http://a3.twimg.com/profile_images/463248273/bridget_strass_normal.jpg","created_at":"Sun, 11 Oct 2009 10:08:53 +0000","from_user":"funmsdrebirth","to_user_id":null,"text":"My dad just said "you kiss someone u love" as an example in his sermon in church. He looked at me as he was saying it!","id":4781654744,"from_user_id":6459198,"iso_language_code":"en","source":"<a href="http://ubertwitter.com" rel="nofollow">UberTwitter</a>"},{"profile_image_url":"http://a3.twimg.com/profile_images/60391999/daveduarte_normal.jpg","created_at":"Sun, 11 Oct 2009 10:06:49 +0000","from_user":"DaveDuarte","to_user_id":null,"text":"Just posted on my blog: "Fort Knox: a Stunning Example of South African Artistic Talent" http://bit.ly/39pzL","id":4781635910,"from_user_id":157371,"iso_language_code":"en","source":"<a href="http://www.tweetdeck.com/" rel="nofollow">TweetDeck</a>"},{"profile_image_url":"http://s.twimg.com/a/1255039715/images/default_profile_5_normal.png","created_at":"Sun, 11 Oct 2009 10:05:21 +0000","from_user":"jmogorunr","to_user_id":null,"text":"Example twitter weather data 06:05 AM 37.5?F 91 pct 0.0 mph WNW #wdisplay","id":4781621631,"from_user_id":49059695,"iso_language_code":"en","source":"<a href="http://apiwiki.twitter.com/" rel="nofollow">API</a>"},{"profile_image_url":"http://a3.twimg.com/profile_images/339234247/fanchecker-logo_normal.jpg","created_at":"Sun, 11 Oct 2009 10:04:10 +0000","from_user":"FanCheckerAlert","to_user_id":null,"text":"Sorry to disturb you, I was thinking you could be interested to earn money with your FaceBook Page. Here is an example http://bit.ly/ZZ5L7","id":4781609874,"from_user_id":32093559,"iso_language_code":"en","source":"<a href="http://apiwiki.twitter.com/" rel="nofollow">API</a>"},{"profile_image_url":"http://a3.twimg.com/profile_images/321196837/twitterProfilePhoto_normal.jpg","created_at":"Sun, 11 Oct 2009 10:02:25 +0000","from_user":"nicoleschu","to_user_id":null,"text":"Am fascinated by the concept of equifinality - student suggested death as a good example!","id":4781592870,"from_user_id":1831854,"iso_language_code":"en","source":"<a href="http://twitter.com/">web</a>"}],"max_id":4781749270,"since_id":0,"refresh_url":"?since_id=4781749270&q=example","next_page":"?page=2&max_id=4781749270&rpp=20&q=example","results_per_page":20,"page":1,"completed_in":0.022255,"query":"example"} 21 | -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/widgets.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2009 British Broadcasting Corporation 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | .glow170-cssTest{background:url(images/darkpanel/ctr.png);z-index:1234;}.glow170-panel-preload{height:1px;overflow:hidden;position:absolute;top:-10px;width:1px;left:-5px;}.glow170-panel-preload .panel-close{display:none;visibility:hidden;}.glow170-panel-preload .infoPanel-pointerT,.glow170-panel-preload .infoPanel-pointerR,.glow170-panel-preload .infoPanel-pointerB,.glow170-panel-preload .infoPanel-pointerL{display:block;}.glow170-overlay{visibility:hidden;display:none;overflow:hidden;position:absolute;}.glow170-overlay .overlay-focalPoint:focus{outline:none;}.glow170-overlay .overlay-focalPoint{overflow:hidden;width:0;height:0;position:absolute;}.glow170-overlay .panelAccess{position:absolute;overflow:hidden;height:0;width:0;top:-5000px;left:-5000px;}.glow170-panel .c{background:#57585A url(images/darkpanel/bg.gif) repeat-x bottom;color:#fff;margin:0 10px;}.glow170-panel .tr,.glow170-panel .tl,.glow170-panel .br,.glow170-panel .bl{height:14px;overflow:hidden;}.glow170-panel .tr,.glow170-panel .br{float:right;width:14px;}.glow170-panel .tr{background:url(images/darkpanel/ctr.png);}.glow170-panel .tl{background:url(images/darkpanel/ctl.png);}.glow170-panel .bl{background:url(images/darkpanel/cbl.png);}.glow170-panel .br{background:url(images/darkpanel/cbr.png);}.glow170-panel .tl,.glow170-panel .bl{width:14px;float:left;}.glow170-panel .tb,.glow170-panel .bb{border:4px solid #57585A;border-width:0 0 4px 0;overflow:hidden;font-size:0;}.glow170-panel .tb div,.glow170-panel .bb div{height:10px;background:#fff;opacity:.5;font-size:0;}.glow170-panel .bb{border-width:4px 0 0 0;border-color:#424243;}.glow170-panel .tc{overflow:hidden;position:relative;zoom:1;}.glow170-panel .bars{position:absolute;width:100%;padding-left:10px;height:100%;background:#fff;opacity:.5;margin-left:-10px;_height:2000px;*padding-left:0;}html .glow170-gecko .glow170-panel .bars{background:url(images/darkpanel/transbg.png);opacity:1;}.glow170-panel .c{position:relative;min-height:50px;overflow:hidden;}.glow170-panel .panel-hd{border-bottom:1px solid #B0B0B0;padding:5px 10px 10px;font-weight:bold;}.glow170-panel .panel-hd *{margin:0;padding:0;}.glow170-panel .panel-bd,.glow170-panel .panel-ft{margin:0 10px;}.glow170-panel .panel-close{background:url(images/darkpanel/close.png);height:20px;width:20px;float:right;position:relative;margin:5px 10px 0 0;text-indent:-5000px;}.glow170-overlay .panel-noHeader .panel-hd{display:none;}.glow170-basic .glow170-panel .panel-close{text-indent:0;color:#fff;border:1px solid #fff;text-align:center;}.glow170-basic .glow170-panel .tb,.glow170-basic .glow170-panel .bb,.glow170-basic .glow170-panel .bars{visibility:hidden;}.glow170-ie .glow170-panel .bars,.glow170-ie .glow170-panel .tb div,.glow170-ie .glow170-panel .bb div{opacity:1;filter:alpha(opacity=50);}.glow170-ie .glow170-panel .tb,.glow170-ie .glow170-panel .bb{zoom:1;z-index:-1;position:relative;}.glow170-ie .glow170-panel .c{filter:alpha(opacity=100);}.glow170-ielt7 .glow170-panel .tr,.glow170-ielt7 .glow170-panel .br{margin-left:-3px;}.glow170-ielt7 .glow170-panel .tl,.glow170-ielt7 .glow170-panel .bl{margin-right:-3px;}.glow170-ielt7 .glow170-panel .c{height:50px;overflow:visible;}.glow170-ielt7 .glow170-panel .panel-bd{overflow:hidden;}.glow170-overlay .panel-light .c{background:#fff url(images/lightpanel/bg.gif) repeat-x bottom;color:#000;}.glow170-overlay .panel-light .tb{border-color:#fff;}.glow170-overlay .panel-light .bb{border-color:#E7E8E9;}.glow170-overlay .panel-light .bars,.glow170-overlay .panel-light .tb div,.glow170-overlay .panel-light .bb div{background:#000;opacity:.26;}.glow170-overlay .panel-light .tr{background:url(images/lightpanel/ctr.png);}.glow170-overlay .panel-light .tl{background:url(images/lightpanel/ctl.png);}.glow170-overlay .panel-light .bl{background:url(images/lightpanel/cbl.png);}.glow170-overlay .panel-light .br{background:url(images/lightpanel/cbr.png);}html .glow170-overlay .panel-light .infoPanel-pointerT{background:url(images/lightpanel/at.png);}html .glow170-overlay .panel-light .infoPanel-pointerR{background:url(images/lightpanel/ar.png);}html .glow170-overlay .panel-light .infoPanel-pointerB{background:url(images/lightpanel/ab.png);}html .glow170-overlay .panel-light .infoPanel-pointerL{background:url(images/lightpanel/al.png);}.glow170-overlay .panel-light .panel-close{background:url(images/lightpanel/close.png);}.glow170-gecko .glow170-overlay .panel-light .bars{background:url(images/lightpanel/transbg.png);}.glow170-ie .glow170-overlay .panel-light .bars,.glow170-ie .glow170-overlay .panel-light .tb div,.glow170-ie .glow170-overlay .panel-light .bb div{opacity:1;filter:alpha(opacity=26);}.glow170-infoPanel .c{min-height:125px;}.glow170-panel .infoPanel-pointerT,.glow170-panel .infoPanel-pointerB,.glow170-panel .infoPanel-pointerL,.glow170-panel .infoPanel-pointerR{display:none;}.glow170-infoPanel-pointT .defaultSkin .infoPanel-pointerT,.glow170-infoPanel-pointL .defaultSkin .infoPanel-pointerL,.glow170-infoPanel-pointR .defaultSkin .infoPanel-pointerR,.glow170-infoPanel-pointB .defaultSkin .infoPanel-pointerB{width:48px;height:34px;overflow:hidden;position:relative;display:block;}.glow170-infoPanel-pointL .defaultSkin .infoPanel-pointerL,.glow170-infoPanel-pointR .defaultSkin .infoPanel-pointerR{width:34px;height:47px;left:0;z-index:1;}.glow170-infoPanel-pointL .defaultSkin .infoPanel-pointerL{position:absolute;}.glow170-panel .infoPanel-pointerT{margin:0 0 -10px 45px;z-index:1000;background:url(images/darkpanel/at.png);}.glow170-panel .infoPanel-pointerB{margin:-10px 0 0 45px;background:url(images/darkpanel/ab.png);}.glow170-panel .infoPanel-pointerL{margin:54px 0 0 0;background:url(images/darkpanel/al.png);}.glow170-infoPanel-pointL .defaultSkin .pc{margin-left:24px;}.glow170-panel .infoPanel-pointerR{float:right;position:relative;margin:54px 0 0 -34px;background:url(images/darkpanel/ar.png);}.glow170-infoPanel-pointR .defaultSkin .pc{margin-right:24px;}.glow170-ielt7 .glow170-infoPanel .c{height:125px;}.glow170-panel-noHeader .defaultSkin .infoPanel-pointerL,.glow170-panel-noHeader .defaultSkin .infoPanel-pointerR{margin-top:33px;}.glow170-autoSuggest ul{margin:0;padding:0;list-style:none;color:#000;background-color:#FFF;border:1px solid #333;}.glow170-autoSuggest .autosuggest-dark{background-color:#000;color:#fff;}.glow170-autoSuggest li{padding:1px 9px;margin:0;zoom:1;cursor:pointer;}.glow170-autoSuggest li.odd{background-color:#D3D3D3;}.glow170-autoSuggest li.even{background-color:#FFF;}.glow170-autoSuggest li.active{background-color:#A9A9A9;}.glow170-autoSuggest .autosuggest-dark li.odd{background-color:#333;}.glow170-autoSuggest .autosuggest-dark li.even{background-color:#000;}.glow170-autoSuggest .autosuggest-dark li.active{background-color:#999;}.glow170-carousel,.glow170-vCarousel{position:relative;overflow:hidden;zoom:1;}.glow170-carousel .carousel-window,.glow170-vCarousel .carousel-window{position:relative;overflow:hidden;}.glow170-carousel .carousel-content,.glow170-vCarousel .carousel-content{position:relative;list-style-type:none;padding-left:0;margin:0;top:0;left:0;overflow:hidden!important;float:none!important;}.glow170-carousel .carousel-item,.glow170-vCarousel .carousel-item{float:left;display:inline;}.glow170-carousel .carousel-nav,.glow170-vCarousel .carousel-nav{position:relative;display:block;width:30px;height:100%;cursor:pointer;z-index:1;}.glow170-carousel .carousel-nav span,.glow170-vCarousel .carousel-nav span{position:absolute;top:0;left:0;display:block;width:100%;height:100%;}.glow170-carousel .carousel-light .carousel-window{background:#f0f0f0;}.glow170-carousel .carousel-light .carousel-nav span{background-image:url(images/carousel/lighth.png);}.glow170-carousel .carousel-light .carousel-nav{background:#f0f0f0;color:#000;}.glow170-carousel .carousel-dark .carousel-window{background:#282828;}.glow170-carousel .carousel-dark .carousel-nav{background:#282828;color:#fff;}.glow170-carousel .carousel-dark .carousel-nav span{background-image:url(images/carousel/darkh.png);}.glow170-carousel .carousel-window{float:left;}.glow170-carousel .carousel-nav{float:left;overflow:hidden;}.glow170-carousel .carousel-nav span,.glow170-vCarousel .carousel-nav span{background-repeat:no-repeat;text-indent:-5000px;}.glow170-basic .glow170-carousel .carousel-nav span,.glow170-basic .glow170-vCarousel .carousel-nav span{text-indent:0;}.glow170-carousel .carousel-nav .carousel-background{top:0;background-position:-60px 0;background-repeat:repeat-y;}.glow170-carousel .carousel-nav .carousel-top{top:0;background-position:0 0;}.glow170-carousel .carousel-nav .carousel-bottom{bottom:0;background-position:-30px bottom;}.glow170-carousel .carousel-nav .carousel-arrow{width:10px;top:0;left:10px;background-repeat:no-repeat;}.glow170-carousel .carousel-prev .carousel-arrow{background-position:-90px center;}.glow170-carousel .carousel-next .carousel-arrow{background-position:-101px center;}.glow170-carousel .carousel-prev-disabled,.glow170-carousel .carousel-next-disabled,.glow170-vCarousel .carousel-prev-disabled,.glow170-vCarousel .carousel-next-disabled,.glow170-carousel .carousel-prev-disabled a,.glow170-carousel .carousel-next-disabled a,.glow170-vCarousel .carousel-prev-disabled a,.glow170-vCarousel .carousel-next-disabled a{cursor:default;}.glow170-carousel .carousel-prev-disabled .carousel-arrow{background-position:-112px center;}.glow170-carousel .carousel-next-disabled .carousel-arrow{background-position:-123px center;}.glow170-vCarousel .carousel-light .carousel-window{background:#f0f0f0;}.glow170-vCarousel .carousel-light .carousel-nav{background:#f0f0f0;color:#000;height:30px;}.glow170-vCarousel .carousel-light .carousel-nav span{background-image:url(images/carousel/lightv.png);}.glow170-vCarousel .carousel-dark .carousel-window{background:#282828;}.glow170-vCarousel .carousel-dark .carousel-nav{background:#282828;color:#fff;height:30px;}.glow170-vCarousel .carousel-dark .carousel-nav span{background-image:url(images/carousel/darkv.png);}.glow170-vCarousel .carousel-nav span{background-repeat:no-repeat;overflow:hidden;}.glow170-vCarousel .carousel-nav .carousel-background{background-position:0 -60px;background-repeat:repeat-x;}.glow170-vCarousel .carousel-nav .carousel-top{background-position:right 0;}.glow170-vCarousel .carousel-nav .carousel-bottom{background-position:left -30px;}.glow170-vCarousel .carousel-nav .carousel-arrow{top:10px;height:10px;}.glow170-vCarousel .carousel-prev .carousel-arrow{background-position:center -90px;}.glow170-vCarousel .carousel-next .carousel-arrow{background-position:center -101px;}.glow170-vCarousel .carousel-prev-disabled .carousel-arrow{background-position:center -112px;}.glow170-vCarousel .carousel-next-disabled .carousel-arrow{background-position:center -123px;}.glow170-vCarousel .carousel-window.paged{float:left;}.glow170-carousel .pageNav,.glow170-vCarousel .pageNav{display:block;padding:0;height:20px;width:auto;clear:both;margin:0 auto;}.glow170-vCarousel .pageNav{height:auto;float:left;width:20px;clear:none;margin:auto 0;}.glow170-carousel .dotLabel,.glow170-vCarousel .dotLabel{width:20px;height:20px;overflow:hidden;text-indent:-5000px;padding:0;margin:0;display:block;}.glow170-basic .glow170-carousel .dot .dotLabel,.glow170-basic .glow170-vCarousel .dot .dotLabel{overflow:visible;text-indent:0;}.glow170-carousel .pageNav li,.glow170-vCarousel .pageNav li{width:20px;height:20px;padding:0;margin:0;float:left;list-style-type:none;color:#000;background-image:url(images/carousel/lightdots.png);background-repeat:no-repeat;background-position:-20px 0;}.glow170-carousel .pageNav .dot{cursor:pointer;}.glow170-carousel .carousel-dark .pageNav li,.glow170-vCarousel .carousel-dark .pageNav li{color:#fff;background-image:url(images/carousel/darkdots.png);}.glow170-vCarousel .pageNav li{background-image:url(images/carousel/lightdotsv.png);float:none;}.glow170-vCarousel .carousel-dark .pageNav li{background-image:url(images/carousel/darkdotsv.png);}.glow170-carousel .pageNav li.dotActive,.glow170-vCarousel .pageNav li.dotActive{background-position:-20px -20px;}.glow170-basic .glow170-carousel .pageNav li.dotActive,.glow170-basic .glow170-vCarousel .pageNav li.dotActive{text-decoration:underline;}.glow170-carousel .pageNav li#rightarrow,.glow170-vCarousel .pageNav li#rightarrow{background-position:-40px -20px;}.glow170-basic .glow170-carousel .pageNav li#rightarrow .dotLabel{width:0;height:0;border-top:8px solid #fff;border-right:8px solid #fff;border-bottom:8px solid #fff;border-left:8px solid #000;}.glow170-basic .glow170-vCarousel .pageNav li#rightarrow .dotLabel{width:0;height:0;border-top:8px solid #000;border-right:8px solid #fff;border-bottom:8px solid #fff;border-left:8px solid #fff;}.glow170-carousel .pageNav li.carousel-next-disabled#rightarrow,.glow170-vCarousel .pageNav li.carousel-next-disabled#rightarrow{background-position:-40px 0;}.glow170-basic .glow170-carousel .pageNav li.carousel-next-disabled#rightarrow .dotLabel,.glow170-basic .glow170-vCarousel .pageNav li.carousel-next-disabled#rightarrow .dotLabel{width:0;height:0;border-top:8px solid #fff;border-right:8px solid #fff;border-bottom:8px solid #fff;border-left:8px solid #ccc;}.glow170-basic .glow170-vCarousel .pageNav li.carousel-next-disabled#rightarrow .dotLabel{width:0;height:0;border-top:8px solid #ccc;border-right:8px solid #fff;border-bottom:8px solid #fff;border-left:8px solid #fff;}.glow170-carousel .pageNav li#leftarrow,.glow170-vCarousel .pageNav li#leftarrow{background-position:0 -20px;}.glow170-basic .glow170-carousel .pageNav li#leftarrow .dotLabel{width:0;height:0;border-top:8px solid #fff;border-right:8px solid #000;border-bottom:8px solid #fff;border-left:8px solid #fff;}.glow170-basic .glow170-vCarousel .pageNav li#leftarrow .dotLabel{width:0;height:0;border-top:8px solid #fff;border-right:8px solid #fff;border-bottom:8px solid #000;border-left:8px solid #fff;}.glow170-carousel .pageNav li.carousel-prev-disabled#leftarrow,.glow170-vCarousel .pageNav li.carousel-prev-disabled#leftarrow{background-position:0 0;}.glow170-basic .glow170-carousel .pageNav li.carousel-prev-disabled#leftarrow .dotLabel{width:0;height:0;border-top:8px solid #fff;border-right:8px solid #ccc;border-bottom:8px solid #fff;border-left:8px solid #fff;}.glow170-basic .glow170-vCarousel .pageNav li.carousel-prev-disabled#leftarrow .dotLabel{width:0;height:0;border-top:8px solid #fff;border-right:8px solid #fff;border-bottom:8px solid #ccc;border-left:8px solid #fff;}.glow170-slider,.glow170-vSlider{position:relative;zoom:1;}.glow170-slider .slider-container,.glow170-vSlider .slider-container{position:relative;zoom:1;padding:4px 17px 6px 17px;}.glow170-slider:focus,.glow170-vSlider:focus{outline:none;border:none;}.glow170-slider .slider-track,.glow170-vSlider .slider-track{position:relative;font-size:0;zoom:1;}.glow170-slider .slider-trackOff,.glow170-vSlider .slider-trackOff{height:8px;background:url(images/slider/lighth.png) 100% 0;margin-left:2px;font-size:0;}.glow170-slider .slider-trackOn,.glow170-vSlider .slider-trackOn{position:absolute;height:8px;top:0;left:0;background:url(images/slider/lighth.png) -2px -8px;z-index:2;overflow:hidden;}.glow170-slider .slider-handle,.glow170-vSlider .slider-handle{position:absolute;top:-4px;width:17px;height:18px;background:url(images/slider/lighth.png) 0 -16px;z-index:3;cursor:pointer;}.glow170-slider .slider-btn-bk,.glow170-slider .slider-btn-fwd,.glow170-vSlider .slider-btn-bk,.glow170-vSlider .slider-btn-fwd{position:absolute;width:12px;height:12px;top:2px;left:0;background:url(images/slider/lighth.png) 0 -34px;font-size:0;cursor:pointer;}.glow170-slider .slider-btn-fwd{background-position:-12px -34px;left:100%;margin-left:-12px;}.glow170-slider .slider-active .slider-handle{background-position:-17px -16px;}.glow170-slider .slider-disabled .slider-handle{background-position:-34px -16px;}.glow170-slider .slider-disabled .slider-btn-bk{background-position:-24px -34px;}.glow170-slider .slider-disabled .slider-btn-fwd{background-position:-36px -34px;}.glow170-slider .slider-disabled .slider-trackOn{background-position:-2px 0;}.glow170-slider .slider-disabled .slider-btn-bk,.glow170-slider .slider-disabled .slider-btn-fwd,.glow170-slider .slider-disabled .slider-handle,.glow170-vSlider .slider-disabled .slider-btn-bk,.glow170-vSlider .slider-disabled .slider-btn-fwd,.glow170-vSlider .slider-disabled .slider-handle{cursor:auto;}.glow170-slider .slider-noButtons .slider-container{padding-left:0;padding-right:0;}.glow170-slider .slider-noButtons .slider-btn-bk,.glow170-slider .slider-noButtons .slider-btn-fwd,.glow170-vSlider .slider-noButtons .slider-btn-bk,.glow170-vSlider .slider-noButtons .slider-btn-fwd{display:none;}.glow170-slider .slider-labels{margin:10px 8px 0;}.glow170-vSlider .slider-labels{position:absolute;left:22px;top:25px;}.glow170-vSlider .slider-noButtons .slider-labels{top:8px;}.glow170-slider .slider-labels .ruler-tickMajor,.glow170-slider .slider-labels .ruler-tickMinor,.glow170-vSlider .slider-labels .ruler-tickMajor,.glow170-vSlider .slider-labels .ruler-tickMinor{background:#6e6e6e;}.glow170-slider .slider-labels .ruler-label,.glow170-vSlider .slider-labels .ruler-label{color:#6e6e6e;cursor:pointer;}.glow170-vSlider .slider-trackOff,.glow170-vSlider .slider-trackOn,.glow170-vSlider .slider-handle,.glow170-vSlider .slider-btn-bk,.glow170-vSlider .slider-btn-fwd{background-image:url(images/slider/lightv.png);}.glow170-vSlider .slider-container{padding:17px 0;}.glow170-vSlider .slider-track{margin:0;overflow:hidden;zoom:1;width:20px;}.glow170-vSlider .slider-trackOff{width:8px;height:auto;background-position:0 0;position:absolute;margin:0;left:4px;top:0;z-index:2;}.glow170-vSlider .slider-trackOn{width:8px;height:0;position:relative;margin:0 0 0 4px;background-position:-8px 100%;top:2px;left:0;z-index:1;}.glow170-vSlider .slider-handle{top:0;left:0;width:18px;height:17px;background-position:-16px 100%;}.glow170-vSlider .slider-btn-bk,.glow170-vSlider .slider-btn-fwd{top:0;left:2px;background-position:-34px -1976px;}.glow170-vSlider .slider-btn-bk{background-position:-34px 100%;left:2px;top:100%;margin:-12px 0 0 0;}.glow170-vSlider .slider-active .slider-handle{background-position:-16px -1966px;}.glow170-vSlider .slider-disabled .slider-handle{background-position:-16px -1949px;}.glow170-vSlider .slider-disabled .slider-btn-bk{background-position:-34px -1964px;}.glow170-vSlider .slider-disabled .slider-btn-fwd{background-position:-34px -1952px;}.glow170-vSlider .slider-disabled .slider-trackOn{background-position:0 100%;}.glow170-vSlider .slider-noButtons .slider-container{padding-top:0;padding-bottom:0;}.glow170-slider .slider-dark .slider-trackOff,.glow170-slider .slider-dark .slider-trackOn,.glow170-slider .slider-dark .slider-handle,.glow170-slider .slider-dark .slider-btn-bk,.glow170-slider .slider-dark .slider-btn-fwd{background-image:url(images/slider/darkh.png);}.glow170-vSlider .slider-dark .slider-trackOff,.glow170-vSlider .slider-dark .slider-trackOn,.glow170-vSlider .slider-dark .slider-handle,.glow170-vSlider .slider-dark .slider-btn-bk,.glow170-vSlider .slider-dark .slider-btn-fwd{background-image:url(images/slider/darkv.png);}.glow170-slider .slider-dark .slider-labels .ruler-tickMajor,.glow170-slider .slider-dark .slider-labels .ruler-tickMinor,.glow170-vSlider .slider-dark .slider-labels .ruler-tickMajor,.glow170-vSlider .slider-dark .slider-labels .ruler-tickMinor{background:#e2e2e2;}.glow170-slider .slider-dark .slider-labels .ruler-label,.glow170-vSlider .slider-dark .slider-labels .ruler-label{color:#e2e2e2;}.glow170-basic .glow170-slider .slider-handle,.glow170-basic .glow170-vSlider .slider-handle{border-style:solid;border-color:#777 #fff;border-width:18px 8px 0 9px;width:0;height:0;font-size:0;}.glow170-basic .glow170-vSlider .slider-handle{border-width:8px 0 9px 18px;border-color:#fff #777;}.glow170-basic .glow170-slider .slider-trackOff,.glow170-basic .glow170-vSlider .slider-trackOff{background:#d6d6d6;}.glow170-basic .glow170-slider .slider-trackOn,.glow170-basic .glow170-vSlider .slider-trackOn{background:#777;}.glow170-basic .glow170-slider .slider-btn-bk,.glow170-basic .glow170-slider .slider-btn-fwd,.glow170-basic .glow170-vSlider .slider-btn-bk,.glow170-basic .glow170-vSlider .slider-btn-fwd{border-style:solid;border-color:#fff #777;border-width:6px 0 6px 12px;width:0;height:0;}.glow170-basic .glow170-slider .slider-btn-bk{border-width:6px 12px 6px 0;}.glow170-basic .glow170-vSlider .slider-btn-bk{border-color:#666 #fff;border-width:12px 6px 0 6px;}.glow170-basic .glow170-vSlider .slider-btn-fwd{border-color:#666 #fff;border-width:0 6px 12px 6px;}.glow170-basic .glow170-slider .slider-active .slider-handle{border-color:#000 #fff;}.glow170-basic .glow170-vSlider .slider-active .slider-handle{border-color:#fff #000;}.glow170-basic .glow170-slider .slider-disabled .slider-trackOn,.glow170-basic .glow170-vSlider .slider-disabled .slider-trackOn{background:#d6d6d6;}.glow170-basic .glow170-slider .slider-disabled .slider-handle{border-color:#d6d6d6 #fff;}.glow170-basic .glow170-vSlider .slider-disabled .slider-handle{border-color:#fff #d6d6d6;}.glow170-basic .glow170-slider .slider-disabled .slider-btn-bk,.glow170-basic .glow170-slider .slider-disabled .slider-btn-fwd{border-color:#fff #d6d6d6;}.glow170-basic .glow170-vSlider .slider-disabled .slider-btn-bk,.glow170-basic .glow170-vSlider .slider-disabled .slider-btn-fwd{border-color:#d6d6d6 #fff;}.glow170-basic .glow170-slider .slider-dark .slider-handle{border-color:#ccc #000;}.glow170-basic .glow170-vSlider .slider-dark .slider-handle{border-color:#000 #ccc;}.glow170-basic .glow170-slider .slider-dark .slider-trackOff,.glow170-basic .glow170-vSlider .slider-dark .slider-trackOff{background:#555;}.glow170-basic .glow170-slider .slider-dark .slider-trackOn,.glow170-basic .glow170-vSlider .slider-dark .slider-trackOn{background:#ccc;}.glow170-basic .glow170-slider .slider-dark .slider-btn-bk,.glow170-basic .glow170-slider .slider-dark .slider-btn-fwd{border-color:#000 #ccc;}.glow170-basic .glow170-vSlider .slider-dark .slider-btn-bk,.glow170-basic .glow170-vSlider .slider-dark .slider-btn-fwd{border-color:#ccc #000;}.glow170-basic .glow170-slider .slider-dark .slider-active .slider-handle{border-color:#fff #000;}.glow170-basic .glow170-vSlider .slider-dark .slider-active .slider-handle{border-color:#000 #fff;}.glow170-basic .glow170-slider .slider-dark .slider-disabled .slider-trackOn,.glow170-basic .glow170-vSlider .slider-dark .slider-disabled .slider-trackOn{background:#555;}.glow170-basic .glow170-slider .slider-dark .slider-disabled .slider-handle{border-color:#555 #000;}.glow170-basic .glow170-vSlider .slider-dark .slider-disabled .slider-handle{border-color:#000 #555;}.glow170-basic .glow170-slider .slider-dark .slider-disabled .slider-btn-bk,.glow170-basic .glow170-slider .slider-dark .slider-disabled .slider-btn-fwd{border-color:#000 #555;}.glow170-basic .glow170-vSlider .slider-dark .slider-disabled .slider-btn-bk,.glow170-basic .glow170-vSlider .slider-dark .slider-disabled .slider-btn-fwd{border-color:#555 #000;}.glow170-ruler,.glow170-vRuler{position:relative;zoom:1;}.glow170-ruler .ruler-tickMajor,.glow170-ruler .ruler-tickMinor,.glow170-vRuler .ruler-tickMajor,.glow170-vRuler .ruler-tickMinor{position:absolute;background:#000;width:1px;height:1px;top:0;left:0;overflow:hidden;}.glow170-ruler .ruler-tickMajor,.glow170-ruler .ruler-spacer{height:10px;}.glow170-ruler .ruler-tickMinor{height:2px;}.glow170-vRuler .ruler-tickMajor{width:10px;}.glow170-vRuler .ruler-tickMinor{width:2px;}.glow170-ruler .ruler-labels{position:relative;height:1.2em;}.glow170-vRuler .ruler-labels{position:absolute;top:0;left:15px;height:100%;}.glow170-ruler .ruler-label,.glow170-vRuler .ruler-label{position:absolute;top:0;left:0;}.glow170-ruler .ruler-label{text-align:center;}.glow170-ruler .ruler-label span{position:relative;left:-50%;}.glow170-vRuler .ruler-label{margin-top:-0.56em;}.glow170-vTimetable .timetable-container,.glow170-Timetable .timetable-container{overflow:hidden;position:relative;zoom:1;}.glow170-vTimetable .timetable-innerView,.glow170-Timetable .timetable-innerView{background:#fff;overflow:hidden;position:relative;zoom:1;}.glow170-vTimetable .timetable-innerView{float:left;}.glow170-vTimetable .timetable-dragArea,.glow170-vTimetable .timetable-track,.glow170-vTimetable .timetable-item,.glow170-vTimetable .timetable-bandOdd,.glow170-vTimetable .timetable-bandEven,.glow170-vTimetable .timetable-scale,.glow170-vTimetable .timetable-scaleItem,.glow170-Timetable .timetable-dragArea,.glow170-Timetable .timetable-track,.glow170-Timetable .timetable-item,.glow170-Timetable .timetable-bandOdd,.glow170-Timetable .timetable-bandEven,.glow170-Timetable .timetable-scale,.glow170-Timetable .timetable-scaleItem{position:absolute;top:0;left:0;overflow:hidden;width:100%;height:100%;z-index:2;}.glow170-vTimetable .timetable-dragRange,.glow170-Timetable .timetable-dragRange{height:100%;width:100%;}.glow170-vTimetable .timetable-track,.glow170-Timetable .timetable-track{border:1px solid #a0a0a0;border-width:0 1px;margin-right:2px;}.glow170-vTimetable .timetable-track{border-width:0 1px;margin-right:1px;}.glow170-Timetable .timetable-track{border-width:1px 0;margin-bottom:1px;}.glow170-vTimetable .timetable-scale,.glow170-Timetable .timetable-scale{color:#a0a0a0;font-size:x-large;border:1px solid #ccc;}.glow170-vTimetable .timetable-scale{text-align:center;}.glow170-vTimetable .timetable-scalePrimary{border-width:0 0 0 1px;}.glow170-vTimetable .timetable-scaleSecondary{border-width:0 1px 0 0;}.glow170-Timetable .timetable-scalePrimary{border-width:1px 0 0 0;}.glow170-Timetable .timetable-scaleSecondary{border-width:0 0 1px 0;}.glow170-vTimetable .timetable-track-footers{clear:both;}.glow170-vTimetable .timetable-accessibility-navigation,.glow170-Timetable .timetable-accessibility-navigation,.glow170-vTimetable .timetable-accessibility-hidden,.glow170-Timetable .timetable-accessibility-hidden{position:absolute;height:1px;width:1px;overflow:hidden;}.glow170-vTimetable .timetable-track-headers,.glow170-vTimetable .timetable-track-footers,.glow170-Timetable .timetable-track-headers,.glow170-Timetable .timetable-track-footers{position:relative;}.glow170-vTimetable .timetable-header-holder,.glow170-vTimetable .timetable-footer-holder,.glow170-Timetable .timetable-header-holder,.glow170-Timetable .timetable-footer-holder{position:absolute;top:0;left:0;overflow:hidden;color:#fff;background:#424242;text-align:center;}.glow170-Timetable .timetable-track-headers,.glow170-Timetable .timetable-track-footers,.glow170-Timetable .timetable-scrollView{float:left;}.glow170-Timetable .timetable-header-holder,.glow170-Timetable .timetable-footer-holder{width:100px;}.glow170-vTimetable .timetable-track-headers,.glow170-vTimetable .timetable-track-footers,.glow170-Timetable .timetable-track-headers,.glow170-Timetable .timetable-track-footers{background:#fff;border:1px solid #ccc;}.glow170-vTimetable .timetable-track-headers{border-bottom-width:0;}.glow170-vTimetable .timetable-track-footers{border-top-width:0;}.glow170-Timetable .timetable-track-headers{border-right-width:0;}.glow170-Timetable .timetable-track-footers{border-left-width:0;}.glow170-vTimetable .timetable-track-headers div.timetable-header-content,.glow170-vTimetable .timetable-track-footers div.timetable-footer-content,.glow170-Timetable .timetable-track-headers div.timetable-header-content,.glow170-Timetable .timetable-track-footers div.timetable-footer-content{padding:9px 0;}.glow170-Timetable .timetable-track-headers div.timetable-header-content,.glow170-Timetable .timetable-track-footers div.timetable-footer-content{padding:4px 5px;text-align:left;}.glow170-vTimetable .timetable-trackList,.glow170-Timetable .timetable-trackList{margin:0!important;padding:0!important;list-style:none;}.glow170-vTimetable .timetable-item,.glow170-Timetable .timetable-item{border:1px solid #ccc;margin:0!important;padding:0!important;display:block;}.glow170-vTimetable .timetable-item{border-width:1px 0;}.glow170-Timetable .timetable-item{border-width:0 1px;}.glow170-vTimetable .timetable-itemHangingOffStart .timetable-itemContent,.glow170-Timetable .timetable-itemHangingOffStart .timetable-itemContent{opacity:.3;filter:alpha(opacity=30);zoom:1;}.glow170-vTimetable .timetable-itemHangingClipping .timetable-itemContent,.glow170-Timetable .timetable-itemHangingClipping .timetable-itemContent{height:1px;overflow:hidden;}.glow170-vTimetable .timetable-hideitems .timetable-item{display:none;}.glow170-vTimetable .timetable-bandOdd,.glow170-vTimetable .timetable-bandEven,.glow170-Timetable .timetable-bandOdd,.glow170-Timetable .timetable-bandEven{z-index:1;}.glow170-vTimetable .timetable-bandOdd,.glow170-Timetable .timetable-bandOdd{background:#ebebeb;}.glow170-vTimetable .timetable-default-track-header{position:absolute;height:1px;width:1px;overflow:hidden;}.glow170-vTimetable .timetable-scrollbar1,.glow170-vTimetable .timetable-scrollbar2,.glow170-Timetable .timetable-scrollbar1,.glow170-Timetable .timetable-scrollbar2{display:none;}.glow170-vTimetable .timetable-scrollbar1,.glow170-vTimetable .timetable-scrollbar2{float:left;_width:0;}.glow170-vTimetable .timetable-scrollbar .slider-container,.glow170-Timetable .timetable-scrollbar .slider-container{padding:21px 0;border:1px solid #a0a0a0;}.glow170-Timetable .timetable-scrollbar .slider-container{padding:0 21px;}.glow170-vTimetable .timetable-scrollbar2 .slider-container{border-left-width:0;}.glow170-vTimetable .timetable-scrollbar1 .slider-container{border-right-width:0;}.glow170-Timetable .timetable-scrollbar2 .slider-container{border-top-width:0;}.glow170-Timetable .timetable-scrollbar1 .slider-container{border-bottom-width:0;}.glow170-vTimetable .timetable-scrollbar .slider-handle,.glow170-Timetable .timetable-scrollbar .slider-handle{width:100%;height:100%;background:#fff;opacity:0;filter:alpha(opacity=0);top:0;}.glow170-vTimetable .timetable-scrollbar .slider-track,.glow170-Timetable .timetable-scrollbar .slider-track{background:none;}.glow170-vTimetable .timetable-scrollbarLabels,.glow170-Timetable .timetable-scrollbarLabels{position:absolute;width:100%;height:100%;background:#fff;color:#227db7;font-size:small;text-align:center;top:0;left:0;overflow:hidden;}.glow170-vTimetable .slider-labels,.glow170-Timetable .slider-labels{display:none;}.glow170-vTimetable .timetable-scrollbarLabelsHighlight,.glow170-Timetable .timetable-scrollbarLabelsHighlight{background:#424242;color:#fff;z-index:1;overflow:hidden;}.glow170-vTimetable .timetable-scrollbar .slider-trackOn,.glow170-vTimetable .timetable-scrollbar .slider-trackOff,.glow170-Timetable .timetable-scrollbar .slider-trackOn,.glow170-Timetable .timetable-scrollbar .slider-trackOff{background:none;}.glow170-vTimetable .timetable-scrollbarItem,.glow170-Timetable .timetable-scrollbarItem{width:100%;height:100%;position:absolute;top:0;left:0;}.glow170-vTimetable .timetable-scrollbar .slider-btn-bk,.glow170-vTimetable .timetable-scrollbar .slider-btn-fwd,.glow170-Timetable .timetable-scrollbar .slider-btn-bk,.glow170-Timetable .timetable-scrollbar .slider-btn-fwd{background:url(images/timetable/lightv.png) top center;border:1px solid #a0a0a0;}.glow170-vTimetable .timetable-scrollbar .slider-btn-bk,.glow170-vTimetable .timetable-scrollbar .slider-btn-fwd{height:20px;left:0;border-width:0 0 1px 0;}.glow170-Timetable .timetable-scrollbar .slider-btn-bk,.glow170-Timetable .timetable-scrollbar .slider-btn-fwd{background:url(images/timetable/lighth.png) right center;width:20px;top:0;border-width:0 0 0 1px;}.glow170-vTimetable .timetable-scrollbar .slider-btn-bk{background-position:center bottom;border-width:1px 0 0 0;margin:-21px 0 0;}.glow170-Timetable .timetable-scrollbar .slider-btn-bk{background-position:left center;border-width:0 1px 0 0;z-index:1;}.glow170-Timetable .timetable-scrollbar .slider-btn-fwd{margin-left:-21px;}.glow170-vTimetable .timetable-dark .timetable-scrollbarLabels,.glow170-Timetable .timetable-dark .timetable-scrollbarLabels{background-color:#333;}.glow170-vTimetable .timetable-dark .timetable-header-holder,.glow170-vTimetable .timetable-dark .timetable-footer-holder,.glow170-Timetable .timetable-dark .timetable-header-holder,.glow170-Timetable .timetable-dark .timetable-footer-holder,.glow170-vTimetable .timetable-dark .timetable-scrollbarLabelsHighlight,.glow170-Timetable .timetable-dark .timetable-scrollbarLabelsHighlight{background:#121212;}.glow170-vTimetable .timetable-dark .timetable-innerView,.glow170-Timetable .timetable-dark .timetable-innerView{background:#333;color:#ccc;}.glow170-vTimetable .timetable-dark .timetable-scale,.glow170-Timetable .timetable-dark .timetable-scale{color:#ccc;}.glow170-vTimetable .timetable-dark .timetable-item,.glow170-Timetable .timetable-dark .timetable-item,.glow170-vTimetable .timetable-dark .timetable-track,.glow170-Timetable .timetable-dark .timetable-track,.glow170-vTimetable .timetable-dark .timetable-scrollbar .slider-btn-bk,.glow170-vTimetable .timetable-dark .timetable-scrollbar .slider-btn-fwd,.glow170-Timetable .timetable-dark .timetable-scrollbar .slider-btn-bk,.glow170-Timetable .timetable-dark .timetable-scrollbar .slider-btn-fwd,.glow170-vTimetable .timetable-dark .timetable-scrollbar .slider-container,.glow170-Timetable .timetable-dark .timetable-scrollbar .slider-container,.glow170-vTimetable .timetable-dark .timetable-scale,.glow170-Timetable .timetable-dark .timetable-scale{border-color:#141414;}.glow170-vTimetable .timetable-dark .timetable-bandOdd,.glow170-Timetable .timetable-dark .timetable-bandOdd{background-color:#242424;}.glow170-vTimetable .timetable-dark .timetable-scrollbar .slider-btn-bk,.glow170-vTimetable .timetable-dark .timetable-scrollbar .slider-btn-fwd{background-image:url(images/timetable/darkv.png);}.glow170-Timetable .timetable-dark .timetable-scrollbar .slider-btn-bk,.glow170-Timetable .timetable-dark .timetable-scrollbar .slider-btn-fwd{background-image:url(images/timetable/darkh.png);}.glow170-vTimetable .timetable-dark .timetable-track-headers,.glow170-vTimetable .timetable-dark .timetable-track-footers,.glow170-Timetable .timetable-dark .timetable-track-headers,.glow170-Timetable .timetable-dark .timetable-track-footers{border:none;background:#333;}.glow170-editor{border:1px solid #000;font-size:medium;}.glow170-editor .editor-toolbar{border:none;display:block;margin:0;padding:0;background-color:#EFEFEF;}.glow170-editor .editor-toolbar legend{display:none;}.glow170-editor .editor-toolbar-tools h3{display:none;}.glow170-editor ul.editor-toolbar-tools{display:block;margin:0!important;padding:9px!important;overflow:hidden;zoom:1;}.glow170-editor ul.editor-toolbar-tools li{list-style:none;float:left;display:block;margin:0!important;padding:0!important;}.glow170-editor .editor-toolbar-button{display:block;margin:0;padding:0;overflow:hidden;}.glow170-editor .editor-toolbar-button a{outline:none;text-decoration:none;}.glow170-editor .editor-toolbar-button img{border:none;}.glow170-editor .editor-toolbar-icon{display:block;width:26px;height:24px;}.glow170-editor .editor-toolbar-icon span{display:block;height:1px;overflow:hidden;width:1px;}.glow170-editor .editor-toolbar-icon span{display:block;height:1px;overflow:hidden;width:1px;}.glow170-editor .editor-toolbar-item .bold-button{background-image:url(images/editor/button-bold.png);}.glow170-editor .editor-toolbar-item .italics-button{background-image:url(images/editor/button-italics.png);}.glow170-editor .editor-toolbar-item .strike-button{background-image:url(images/editor/button-strike.png);}.glow170-editor .editor-toolbar-item .blockquote-button{background-image:url(images/editor/button-blockquote.png);}.glow170-editor .editor-toolbar-item .unorderedlist-button{background-image:url(images/editor/button-unorderedlist.png);}.glow170-editor .editor-toolbar-item .orderedlist-button{background-image:url(images/editor/button-orderedlist.png);}.glow170-editor .editor-toolbar-item .default .editor-toolbar-icon{background-position:0 0;}.glow170-editor .editor-toolbar-item .disabled .editor-toolbar-icon{background-position:0 -28px;}.glow170-editor .editor-toolbar-item .active .editor-toolbar-icon{background-position:0 -85px;}.glow170-editor .editor-toolbar-item .hover .editor-toolbar-icon{background-position:0 -56px;}.glow170-editor .editor-toolbar-dropdown{display:block;width:84px;margin:0 3px 0 3px;}.glow170-editor .editor-toolbar-dropdown a{color:black;text-decoration:none;font:.75em arial;}.glow170-editor .editor-toolbar-dropdown span span{display:block;padding:1px 16px 1px 4px;border:1px solid #ccc;height:16px;line-height:16px;margin:3px 0 0 2px;background:#fff url(images/editor/menuarrow.png) no-repeat right 8px;overflow:hidden;}.glow170-editor .editor-toolbar-dropdown .disabled span{background:#aaa url(images/editor/menuarrow.png) no-repeat right -10px;}.glow170-editor .editor-toolbar-dropdown .hover span{background:#fff url(images/editor/menuarrow.png) no-repeat right 8px;}.glow170-editor .editor-toolbar-dropdown .active span span{border:1px solid #aaa;}.glow170-editor .editor-toolbar-dropdown .active span{background:#ccc url(images/editor/menuarrow.png) no-repeat right 8px;}.glow170-overlay.overlayMenu{background:#ccc;border:1px solid #b1b1b1;font-family:Arial,Helvetica,sans-serif;font-size:medium;}.glow170-overlay.overlayMenu ul{list-style:none;margin:0;padding:0;}.glow170-overlay.overlayMenu ul li{padding:2px 4px 2px 4px;outline:none;}.glow170-overlay.overlayMenu li.highlighted{background:#999;cursor:pointer;}.glow170-overlay.overlayMenu .heading1{font-size:1.2em;}.glow170-overlay.overlayMenu .heading2{font-size:1.1em;}.glow170-overlay.overlayMenu .heading3{font-size:1.0em;}.glow170-overlay.overlayMenu .normal{font-size:.9em;}.glow170-editor .editor-dark .editor-toolbar-dropdown span span{border:1px solid #666;background:transparent url(images/editor/menuarrow.png) no-repeat scroll right -12px;color:#fff;}.glow170-editor .editor-dark .editor-toolbar-dropdown .hover span span{border:1px solid #ccc;}.glow170-editor .editor-toolbar-dropdown .hover span span{border:1px solid #999;}.glow170-overlay.overlayMenu-dark{background:#333;border:1px solid #ccc;color:#fff;}.glow170-overlay.overlayMenu-dark ul li.highlighted{background:#000;}.glow170-editor .glow170-hidden{position:absolute;left:-2500px;width:1px;}.glow170-basic .glow170-editor .editor-toolbar-icon span{border:none;height:auto;overflow:hidden;width:auto;}.glow170-basic .glow170-editor .editor-toolbar-item .hover span span{border:1px solid #000;}.glow170-editor iframe{border:0;margin:0;padding:0;width:100%;}.glow170-editor .editor-dark .editor-toolbar{background:#333;color:#fff;}.glow170-editor .editor-dark .editor-toolbar-item .bold-button{background-image:url(images/editor/dark-button-bold.png);}.glow170-editor .editor-dark .editor-toolbar-item .italics-button{background-image:url(images/editor/dark-button-italics.png);}.glow170-editor .editor-dark .editor-toolbar-item .strike-button{background-image:url(images/editor/dark-button-strike.png);}.glow170-editor .editor-dark .editor-toolbar-item .blockquote-button{background-image:url(images/editor/dark-button-blockquote.png);}.glow170-editor .editor-dark .editor-toolbar-item .blockquote-button{background-image:url(images/editor/dark-button-blockquote.png);}.glow170-editor .editor-dark .editor-toolbar-item .unorderedlist-button{background-image:url(images/editor/dark-button-unorderedlist.png);}.glow170-editor .editor-dark .editor-toolbar-item .orderedlist-button{background-image:url(images/editor/dark-button-orderedlist.png);} -------------------------------------------------------------------------------- /public/javascripts/glow/widgets/widgets.debug.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2009 British Broadcasting Corporation 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | .glow170-cssTest { 17 | background: url(images/darkpanel/ctr.png); 18 | z-index: 1234; 19 | } 20 | 21 | /* preloader */ 22 | .glow170-panel-preload { 23 | height: 1px; 24 | overflow: hidden; 25 | position: absolute; 26 | top: -10px; 27 | width: 1px; 28 | left: -5px; 29 | } 30 | .glow170-panel-preload .panel-close { 31 | display: none; 32 | visibility: hidden; 33 | } 34 | .glow170-panel-preload .infoPanel-pointerT, 35 | .glow170-panel-preload .infoPanel-pointerR, 36 | .glow170-panel-preload .infoPanel-pointerB, 37 | .glow170-panel-preload .infoPanel-pointerL { 38 | display: block; 39 | } 40 | /*end */ 41 | .glow170-overlay { 42 | visibility: hidden; 43 | display: none; 44 | overflow: hidden; 45 | position: absolute; 46 | } 47 | 48 | /* stop the dotted line around the overlay focal point when it has focus */ 49 | .glow170-overlay .overlay-focalPoint:focus { 50 | outline: none; 51 | } 52 | .glow170-overlay .overlay-focalPoint { 53 | overflow: hidden; 54 | width: 0; 55 | height: 0; 56 | position: absolute; 57 | } 58 | 59 | /*hide stuff offscreen*/ 60 | .glow170-overlay .panelAccess { 61 | position: absolute; 62 | overflow: hidden; 63 | height: 0; 64 | width: 0; 65 | top: -5000px; 66 | left: -5000px; 67 | } 68 | /*PANEL*/ 69 | .glow170-panel .c { 70 | background: #57585A url(images/darkpanel/bg.gif) repeat-x bottom; 71 | color: #fff; 72 | margin: 0 10px; 73 | } 74 | .glow170-panel .tr, .glow170-panel .tl, .glow170-panel .br, .glow170-panel .bl { 75 | height: 14px; 76 | overflow: hidden; 77 | } 78 | .glow170-panel .tr, .glow170-panel .br { 79 | float: right; 80 | width: 14px; 81 | } 82 | /* we couldn't sprite these because of IE being a pain */ 83 | .glow170-panel .tr { background: url(images/darkpanel/ctr.png); } 84 | .glow170-panel .tl { background: url(images/darkpanel/ctl.png); } 85 | .glow170-panel .bl { background: url(images/darkpanel/cbl.png); } 86 | .glow170-panel .br { background: url(images/darkpanel/cbr.png); } 87 | 88 | .glow170-panel .tl, .glow170-panel .bl { 89 | width: 14px; 90 | float: left; 91 | } 92 | .glow170-panel .tb, .glow170-panel .bb { 93 | border: 4px solid #57585A; 94 | border-width: 0 0 4px 0; 95 | overflow: hidden; 96 | font-size: 0; 97 | } 98 | .glow170-panel .tb div, .glow170-panel .bb div { 99 | height: 10px; 100 | background: #fff; 101 | opacity: 0.5; 102 | font-size: 0; 103 | } 104 | .glow170-panel .bb { 105 | border-width: 4px 0 0 0; 106 | border-color: #424243; 107 | } 108 | .glow170-panel .tc { 109 | overflow: hidden; 110 | position: relative; 111 | zoom: 1; 112 | } 113 | .glow170-panel .bars { 114 | position: absolute; 115 | width: 100%; 116 | padding-left: 10px; 117 | height: 100%; 118 | background: #fff; 119 | opacity: 0.5; 120 | margin-left: -10px; 121 | /* the following rule hits IE6 only */ 122 | _height: 2000px; 123 | /* the following rule hits IE6 & IE7 */ 124 | *padding-left: 0; 125 | } 126 | /* 127 | annoying firefox bug - it sometimes doesn't obey the overflow by one px if 128 | the opacity isn't 1. Firefox users get an extra http request. Oh well. -J 129 | */ 130 | html .glow170-gecko .glow170-panel .bars { 131 | background: url(images/darkpanel/transbg.png); 132 | opacity: 1; 133 | } 134 | .glow170-panel .c { 135 | position: relative; 136 | min-height: 50px; 137 | overflow: hidden; 138 | } 139 | 140 | .glow170-panel .panel-hd { 141 | border-bottom: 1px solid #B0B0B0; 142 | padding: 5px 10px 10px; 143 | font-weight: bold; 144 | } 145 | .glow170-panel .panel-hd * { 146 | margin: 0; padding: 0; 147 | } 148 | 149 | .glow170-panel .panel-bd, .glow170-panel .panel-ft { 150 | margin: 0 10px; 151 | } 152 | 153 | .glow170-panel .panel-close { 154 | background: url(images/darkpanel/close.png); 155 | height: 20px; 156 | width: 20px; 157 | float: right; 158 | position: relative; 159 | margin: 5px 10px 0 0; 160 | text-indent: -5000px; 161 | } 162 | 163 | /*without header*/ 164 | .glow170-overlay .panel-noHeader .panel-hd { 165 | display: none; 166 | } 167 | /*end*/ 168 | 169 | 170 | /*without images*/ 171 | .glow170-basic .glow170-panel .panel-close { 172 | text-indent: 0; 173 | color: #fff; 174 | border: 1px solid #fff; 175 | text-align: center; 176 | } 177 | .glow170-basic .glow170-panel .tb, 178 | .glow170-basic .glow170-panel .bb, 179 | .glow170-basic .glow170-panel .bars { 180 | visibility: hidden; 181 | } 182 | /*end*/ 183 | 184 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 185 | This block of CSS rules for IE only has been moved to panel.js to be output directly to 186 | the page. It is there so that the path to the PNGs can be deduced from the location of 187 | the widgets css file. 188 | It is acceptable because this design will not be altered before version 2 of glow, and 189 | at that point it will be modified to avoid the use of PNGs. 190 | * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 191 | 192 | .glow170-ie .glow170-panel .tr { 193 | background:none; 194 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//www.bbc.co.uk/glow/1.1.0/widgets/images/darkpanel/ctr.png', sizingMethod='crop'); 195 | } 196 | .glow170-ie .glow170-panel .tl { 197 | background:none; 198 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//www.bbc.co.uk/glow/1.1.0/widgets/images/darkpanel/ctl.png', sizingMethod='crop'); 199 | } 200 | .glow170-ie .glow170-panel .bl { 201 | background:none; 202 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//www.bbc.co.uk/glow/1.1.0/widgets/images/darkpanel/cbl.png', sizingMethod='crop'); 203 | } 204 | .glow170-ie .glow170-panel .br { 205 | background:none; 206 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//www.bbc.co.uk/glow/1.1.0/widgets/images/darkpanel/cbr.png', sizingMethod='crop'); 207 | } 208 | .glow170-ie .glow170-panel .infoPanel-pointerT { 209 | background:none; 210 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//www.bbc.co.uk/glow/1.1.0/widgets/images/darkpanel/at.png', sizingMethod='crop'); 211 | } 212 | .glow170-ie .glow170-panel .infoPanel-pointerR { 213 | background:none; 214 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//www.bbc.co.uk/glow/1.1.0/widgets/images/darkpanel/ar.png', sizingMethod='crop'); 215 | } 216 | .glow170-ie .glow170-panel .infoPanel-pointerB { 217 | background:none; 218 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//www.bbc.co.uk/glow/1.1.0/widgets/images/darkpanel/ab.png', sizingMethod='crop'); 219 | } 220 | .glow170-ie .glow170-panel .infoPanel-pointerL { 221 | background:none; 222 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//www.bbc.co.uk/glow/1.1.0/widgets/images/darkpanel/al.png', sizingMethod='crop'); 223 | } 224 | 225 | * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 226 | 227 | .glow170-ie .glow170-panel .bars, 228 | .glow170-ie .glow170-panel .tb div, 229 | .glow170-ie .glow170-panel .bb div { 230 | opacity: 1; 231 | filter: alpha(opacity=50); 232 | } 233 | 234 | .glow170-ie .glow170-panel .tb, 235 | .glow170-ie .glow170-panel .bb { 236 | zoom: 1; 237 | z-index: -1; 238 | position: relative; 239 | } 240 | 241 | /* 242 | this solves a weird IE bug where the content vanishes if the panel is given an 243 | opacity value 244 | */ 245 | .glow170-ie .glow170-panel .c { 246 | filter: alpha(opacity=100); 247 | } 248 | 249 | .glow170-ielt7 .glow170-panel .tr, 250 | .glow170-ielt7 .glow170-panel .br { 251 | margin-left: -3px; 252 | } 253 | .glow170-ielt7 .glow170-panel .tl, 254 | .glow170-ielt7 .glow170-panel .bl { 255 | margin-right: -3px; 256 | } 257 | .glow170-ielt7 .glow170-panel .c { 258 | height: 50px; 259 | overflow: visible; 260 | } 261 | .glow170-ielt7 .glow170-panel .panel-bd { 262 | overflow: hidden; 263 | } 264 | /*DARK THEME*/ 265 | /*Dark is the default*/ 266 | /*LIGHT THEME*/ 267 | .glow170-overlay .panel-light .c { 268 | background: #fff url(images/lightpanel/bg.gif) repeat-x bottom; 269 | color: #000; 270 | } 271 | .glow170-overlay .panel-light .tb { 272 | border-color: #fff; 273 | } 274 | .glow170-overlay .panel-light .bb { 275 | border-color: #E7E8E9; 276 | } 277 | .glow170-overlay .panel-light .bars, 278 | .glow170-overlay .panel-light .tb div, 279 | .glow170-overlay .panel-light .bb div { 280 | background: #000; 281 | opacity: 0.26; 282 | } 283 | .glow170-overlay .panel-light .tr { background: url(images/lightpanel/ctr.png); } 284 | .glow170-overlay .panel-light .tl { background: url(images/lightpanel/ctl.png); } 285 | .glow170-overlay .panel-light .bl { background: url(images/lightpanel/cbl.png); } 286 | .glow170-overlay .panel-light .br { background: url(images/lightpanel/cbr.png); } 287 | html .glow170-overlay .panel-light .infoPanel-pointerT { background: url(images/lightpanel/at.png); } 288 | html .glow170-overlay .panel-light .infoPanel-pointerR { background: url(images/lightpanel/ar.png); } 289 | html .glow170-overlay .panel-light .infoPanel-pointerB { background: url(images/lightpanel/ab.png); } 290 | html .glow170-overlay .panel-light .infoPanel-pointerL { background: url(images/lightpanel/al.png); } 291 | 292 | .glow170-overlay .panel-light .panel-close { 293 | background: url(images/lightpanel/close.png); 294 | } 295 | .glow170-gecko .glow170-overlay .panel-light .bars { 296 | background: url(images/lightpanel/transbg.png); 297 | } 298 | 299 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 300 | This block of CSS rules for IE only has been moved to panel.js to be output directly to 301 | the page. It is there so that the path to the PNGs can be deduced from the location of 302 | the widgets css file. 303 | It is acceptable because this design will not be altered before version 2 of glow, and 304 | at that point it will be modified to avoid the use of PNGs. 305 | * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 306 | 307 | .glow170-ie .glow170-overlay .panel-light .tr { 308 | background:none; 309 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//www.bbc.co.uk/glow/1.1.0/widgets/images/lightpanel/ctr.png', sizingMethod='crop'); 310 | } 311 | .glow170-ie .glow170-overlay .panel-light .tl { 312 | background:none; 313 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//www.bbc.co.uk/glow/1.1.0/widgets/images/lightpanel/ctl.png', sizingMethod='crop'); 314 | } 315 | .glow170-ie .glow170-overlay .panel-light .bl { 316 | background:none; 317 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//www.bbc.co.uk/glow/1.1.0/widgets/images/lightpanel/cbl.png', sizingMethod='crop'); 318 | } 319 | .glow170-ie .glow170-overlay .panel-light .br { 320 | background:none; 321 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//www.bbc.co.uk/glow/1.1.0/widgets/images/lightpanel/cbr.png', sizingMethod='crop'); 322 | } 323 | .glow170-ie .glow170-overlay .panel-light .infoPanel-pointerT { 324 | background:none; 325 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//www.bbc.co.uk/glow/1.1.0/widgets/images/lightpanel/at.png', sizingMethod='crop'); 326 | } 327 | .glow170-ie .glow170-overlay .panel-light .infoPanel-pointerR { 328 | background:none; 329 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//www.bbc.co.uk/glow/1.1.0/widgets/images/lightpanel/ar.png', sizingMethod='crop'); 330 | } 331 | .glow170-ie .glow170-overlay .panel-light .infoPanel-pointerB { 332 | background:none; 333 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//www.bbc.co.uk/glow/1.1.0/widgets/images/lightpanel/ab.png', sizingMethod='crop'); 334 | } 335 | .glow170-ie .glow170-overlay .panel-light .infoPanel-pointerL { 336 | background:none; 337 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//www.bbc.co.uk/glow/1.1.0/widgets/images/lightpanel/al.png', sizingMethod='crop'); 338 | } 339 | 340 | * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 341 | 342 | .glow170-ie .glow170-overlay .panel-light .bars, 343 | .glow170-ie .glow170-overlay .panel-light .tb div, 344 | .glow170-ie .glow170-overlay .panel-light .bb div { 345 | opacity: 1; 346 | filter: alpha(opacity=26); 347 | } 348 | /*END*/ 349 | /* info panel */ 350 | .glow170-infoPanel .c { 351 | min-height: 125px 352 | } 353 | 354 | .glow170-panel .infoPanel-pointerT, 355 | .glow170-panel .infoPanel-pointerB, 356 | .glow170-panel .infoPanel-pointerL, 357 | .glow170-panel .infoPanel-pointerR { 358 | display: none; 359 | } 360 | .glow170-infoPanel-pointT .defaultSkin .infoPanel-pointerT, 361 | .glow170-infoPanel-pointL .defaultSkin .infoPanel-pointerL, 362 | .glow170-infoPanel-pointR .defaultSkin .infoPanel-pointerR, 363 | .glow170-infoPanel-pointB .defaultSkin .infoPanel-pointerB { 364 | width: 48px; 365 | height: 34px; 366 | overflow: hidden; 367 | position: relative; 368 | display: block; 369 | } 370 | .glow170-infoPanel-pointL .defaultSkin .infoPanel-pointerL, 371 | .glow170-infoPanel-pointR .defaultSkin .infoPanel-pointerR { 372 | width: 34px; 373 | height: 47px; 374 | left: 0; 375 | z-index: 1; 376 | } 377 | .glow170-infoPanel-pointL .defaultSkin .infoPanel-pointerL { 378 | position: absolute; 379 | } 380 | .glow170-panel .infoPanel-pointerT { 381 | margin: 0 0 -10px 45px; 382 | z-index: 1000; 383 | background: url(images/darkpanel/at.png); 384 | } 385 | .glow170-panel .infoPanel-pointerB { 386 | margin: -10px 0 0 45px; 387 | background: url(images/darkpanel/ab.png); 388 | } 389 | .glow170-panel .infoPanel-pointerL { 390 | margin: 54px 0 0 0; 391 | background: url(images/darkpanel/al.png); 392 | } 393 | .glow170-infoPanel-pointL .defaultSkin .pc { 394 | margin-left: 24px; 395 | } 396 | .glow170-panel .infoPanel-pointerR { 397 | float: right; 398 | position: relative; 399 | margin: 54px 0 0 -34px; 400 | background: url(images/darkpanel/ar.png); 401 | } 402 | .glow170-infoPanel-pointR .defaultSkin .pc { 403 | margin-right: 24px; 404 | } 405 | .glow170-ielt7 .glow170-infoPanel .c { 406 | height: 125px; 407 | } 408 | /*without header*/ 409 | .glow170-panel-noHeader .defaultSkin .infoPanel-pointerL, 410 | .glow170-panel-noHeader .defaultSkin .infoPanel-pointerR { 411 | margin-top: 33px; 412 | } 413 | /*end*/ 414 | /* AutoSuggest */ 415 | .glow170-autoSuggest ul { /*TODO: handle embedded ul */ 416 | margin: 0; 417 | padding: 0; 418 | list-style: none; 419 | color: #000; 420 | background-color: #FFF; 421 | border: 1px solid #333; 422 | } 423 | 424 | .glow170-autoSuggest .autosuggest-dark { 425 | background-color: #000; 426 | color: #fff; 427 | } 428 | 429 | .glow170-autoSuggest li { /*TODO: handle embedded ul */ 430 | padding: 1px 9px; 431 | margin: 0; 432 | zoom: 1; 433 | cursor: pointer; 434 | } 435 | 436 | .glow170-autoSuggest li.odd { 437 | background-color: #D3D3D3; 438 | } 439 | 440 | .glow170-autoSuggest li.even { 441 | background-color: #FFF; 442 | } 443 | 444 | .glow170-autoSuggest li.active { 445 | background-color: #A9A9A9; 446 | } 447 | 448 | .glow170-autoSuggest .autosuggest-dark li.odd { 449 | background-color: #333; 450 | } 451 | 452 | .glow170-autoSuggest .autosuggest-dark li.even { 453 | background-color: #000; 454 | } 455 | 456 | .glow170-autoSuggest .autosuggest-dark li.active { 457 | background-color: #999; 458 | } 459 | 460 | /* Carousel */ 461 | 462 | .glow170-carousel, .glow170-vCarousel { 463 | position:relative; 464 | overflow:hidden; 465 | zoom:1; 466 | } 467 | 468 | .glow170-carousel .carousel-window, .glow170-vCarousel .carousel-window { 469 | position:relative; 470 | overflow:hidden; 471 | } 472 | 473 | .glow170-carousel .carousel-content, .glow170-vCarousel .carousel-content { 474 | position:relative; 475 | list-style-type:none; 476 | padding-left:0; 477 | margin:0; 478 | top:0; 479 | left:0; 480 | overflow: hidden !important; 481 | /* If the inner element is floated it creates positioning issues in IE */ 482 | float: none !important; 483 | } 484 | 485 | .glow170-carousel .carousel-item, .glow170-vCarousel .carousel-item { 486 | float:left; 487 | /*_overflow:hidden;*/ 488 | display: inline; 489 | } 490 | 491 | .glow170-carousel .carousel-nav, .glow170-vCarousel .carousel-nav { 492 | position:relative; 493 | display:block; 494 | width:30px; 495 | height:100%; 496 | cursor:pointer; 497 | z-index:1; 498 | } 499 | 500 | .glow170-carousel .carousel-nav span, .glow170-vCarousel .carousel-nav span { 501 | position:absolute; 502 | top:0; 503 | left:0; 504 | display:block; 505 | width:100%; 506 | height:100%; 507 | } 508 | 509 | /* Light Theme */ 510 | .glow170-carousel .carousel-light .carousel-window { 511 | background:#f0f0f0; 512 | } 513 | 514 | .glow170-carousel .carousel-light .carousel-nav span { 515 | background-image:url(images/carousel/lighth.png); 516 | } 517 | 518 | .glow170-carousel .carousel-light .carousel-nav { 519 | background:#f0f0f0; 520 | color:#000; 521 | } 522 | 523 | /* Dark Theme */ 524 | 525 | .glow170-carousel .carousel-dark .carousel-window { 526 | background:#282828; 527 | } 528 | 529 | .glow170-carousel .carousel-dark .carousel-nav { 530 | background:#282828; 531 | color:#fff; 532 | } 533 | 534 | .glow170-carousel .carousel-dark .carousel-nav span { 535 | background-image:url(images/carousel/darkh.png); 536 | } 537 | 538 | .glow170-carousel .carousel-window { 539 | float:left; 540 | } 541 | 542 | .glow170-carousel .carousel-nav { 543 | float:left; 544 | overflow:hidden; 545 | } 546 | 547 | .glow170-carousel .carousel-nav span, 548 | .glow170-vCarousel .carousel-nav span { 549 | background-repeat:no-repeat; 550 | text-indent: -5000px; /* move text away when images are enabled */ 551 | } 552 | 553 | .glow170-basic .glow170-carousel .carousel-nav span, 554 | .glow170-basic .glow170-vCarousel .carousel-nav span { 555 | text-indent: 0px; /* move text back when images are not enabled */ 556 | } 557 | 558 | .glow170-carousel .carousel-nav .carousel-background { 559 | top:0; 560 | background-position:-60px 0; 561 | background-repeat:repeat-y; 562 | } 563 | 564 | .glow170-carousel .carousel-nav .carousel-top { 565 | top:0; 566 | background-position:0 0; 567 | } 568 | 569 | .glow170-carousel .carousel-nav .carousel-bottom { 570 | bottom:0; 571 | background-position:-30px bottom; 572 | } 573 | 574 | .glow170-carousel .carousel-nav .carousel-arrow { 575 | width:10px; 576 | top:0; 577 | left:10px; 578 | background-repeat:no-repeat; 579 | } 580 | 581 | .glow170-carousel .carousel-prev .carousel-arrow { 582 | background-position:-90px center; 583 | } 584 | 585 | .glow170-carousel .carousel-next .carousel-arrow { 586 | background-position:-101px center; 587 | } 588 | 589 | .glow170-carousel .carousel-prev-disabled, 590 | .glow170-carousel .carousel-next-disabled, 591 | .glow170-vCarousel .carousel-prev-disabled, 592 | .glow170-vCarousel .carousel-next-disabled, 593 | .glow170-carousel .carousel-prev-disabled a, 594 | .glow170-carousel .carousel-next-disabled a, 595 | .glow170-vCarousel .carousel-prev-disabled a, 596 | .glow170-vCarousel .carousel-next-disabled a { 597 | cursor: default; 598 | } 599 | 600 | .glow170-carousel .carousel-prev-disabled .carousel-arrow { 601 | background-position:-112px center; 602 | } 603 | 604 | .glow170-carousel .carousel-next-disabled .carousel-arrow { 605 | background-position:-123px center; 606 | } 607 | 608 | /* Vertical Themes */ 609 | 610 | /* Light Theme - Vertical */ 611 | 612 | .glow170-vCarousel .carousel-light .carousel-window { 613 | background:#f0f0f0; 614 | } 615 | 616 | .glow170-vCarousel .carousel-light .carousel-nav { 617 | background:#f0f0f0; 618 | color:#000; 619 | height:30px; 620 | } 621 | 622 | .glow170-vCarousel .carousel-light .carousel-nav span { 623 | background-image:url(images/carousel/lightv.png); 624 | } 625 | 626 | /* Dark Theme - Vertical */ 627 | .glow170-vCarousel .carousel-dark .carousel-window { 628 | background:#282828; 629 | } 630 | 631 | .glow170-vCarousel .carousel-dark .carousel-nav { 632 | background:#282828; 633 | color:#fff; 634 | height:30px; 635 | } 636 | 637 | .glow170-vCarousel .carousel-dark .carousel-nav span { 638 | background-image:url(images/carousel/darkv.png); 639 | } 640 | 641 | .glow170-vCarousel .carousel-nav span { 642 | background-repeat:no-repeat; 643 | overflow:hidden; 644 | } 645 | 646 | .glow170-vCarousel .carousel-nav .carousel-background { 647 | background-position:0 -60px; 648 | background-repeat:repeat-x; 649 | } 650 | 651 | .glow170-vCarousel .carousel-nav .carousel-top { 652 | background-position:right 0; 653 | } 654 | 655 | .glow170-vCarousel .carousel-nav .carousel-bottom { 656 | background-position:left -30px; 657 | } 658 | 659 | .glow170-vCarousel .carousel-nav .carousel-arrow { 660 | top:10px; 661 | height:10px; 662 | } 663 | 664 | .glow170-vCarousel .carousel-prev .carousel-arrow { 665 | background-position:center -90px; 666 | } 667 | 668 | .glow170-vCarousel .carousel-next .carousel-arrow { 669 | background-position:center -101px; 670 | } 671 | 672 | .glow170-vCarousel .carousel-prev-disabled .carousel-arrow { 673 | background-position:center -112px; 674 | } 675 | 676 | .glow170-vCarousel .carousel-next-disabled .carousel-arrow { 677 | background-position:center -123px; 678 | } 679 | 680 | /* Paged Carousel */ 681 | .glow170-vCarousel .carousel-window.paged { float: left; } 682 | 683 | .glow170-carousel .pageNav, 684 | .glow170-vCarousel .pageNav { 685 | display: block; 686 | padding: 0px; 687 | height: 20px; 688 | width: auto; 689 | clear: both; 690 | margin: 0 auto; 691 | } 692 | 693 | .glow170-vCarousel .pageNav { 694 | height: auto; 695 | float: left; 696 | width: 20px; 697 | clear: none; 698 | margin: auto 0; 699 | } 700 | 701 | .glow170-carousel .dotLabel, 702 | .glow170-vCarousel .dotLabel { 703 | width: 20px; 704 | height: 20px; 705 | overflow: hidden; 706 | text-indent: -5000px; /* move text away when images are enabled */ 707 | padding: 0; 708 | margin: 0; 709 | display: block; 710 | } 711 | 712 | .glow170-basic .glow170-carousel .dot .dotLabel, 713 | .glow170-basic .glow170-vCarousel .dot .dotLabel { 714 | overflow: visible; 715 | text-indent: 0; /* images are disabled, so move text back, but not for arrows */ 716 | } 717 | 718 | .glow170-carousel .pageNav li, 719 | .glow170-vCarousel .pageNav li { 720 | width: 20px; 721 | height: 20px; 722 | padding: 0px; 723 | margin: 0px; 724 | float: left; 725 | list-style-type: none; 726 | color: #000; 727 | background-image: url(images/carousel/lightdots.png); 728 | background-repeat: no-repeat; 729 | background-position: -20px 0; 730 | } 731 | 732 | .glow170-carousel .pageNav .dot { 733 | cursor: pointer; 734 | } 735 | 736 | .glow170-carousel .carousel-dark .pageNav li, 737 | .glow170-vCarousel .carousel-dark .pageNav li { 738 | color: #fff; 739 | background-image: url(images/carousel/darkdots.png); 740 | } 741 | 742 | .glow170-vCarousel .pageNav li { 743 | background-image: url(images/carousel/lightdotsv.png); 744 | float: none; 745 | } 746 | 747 | .glow170-vCarousel .carousel-dark .pageNav li { background-image: url(images/carousel/darkdotsv.png); } 748 | .glow170-carousel .pageNav li.dotActive, 749 | .glow170-vCarousel .pageNav li.dotActive { background-position: -20px -20px; } 750 | .glow170-basic .glow170-carousel .pageNav li.dotActive, 751 | .glow170-basic .glow170-vCarousel .pageNav li.dotActive { text-decoration: underline; } 752 | .glow170-carousel .pageNav li#rightarrow, 753 | .glow170-vCarousel .pageNav li#rightarrow { background-position: -40px -20px; } 754 | 755 | .glow170-basic .glow170-carousel .pageNav li#rightarrow .dotLabel { 756 | width: 0; 757 | height: 0; 758 | border-top: 8px solid #fff; 759 | border-right: 8px solid #fff; 760 | border-bottom: 8px solid #fff; 761 | border-left: 8px solid #000; 762 | } 763 | 764 | .glow170-basic .glow170-vCarousel .pageNav li#rightarrow .dotLabel { 765 | width: 0; 766 | height: 0; 767 | border-top: 8px solid #000; 768 | border-right: 8px solid #fff; 769 | border-bottom: 8px solid #fff; 770 | border-left: 8px solid #fff; 771 | } 772 | 773 | .glow170-carousel .pageNav li.carousel-next-disabled#rightarrow, 774 | .glow170-vCarousel .pageNav li.carousel-next-disabled#rightarrow { background-position: -40px 0; } 775 | 776 | .glow170-basic .glow170-carousel .pageNav li.carousel-next-disabled#rightarrow .dotLabel, 777 | .glow170-basic .glow170-vCarousel .pageNav li.carousel-next-disabled#rightarrow .dotLabel { 778 | width: 0; 779 | height: 0; 780 | border-top: 8px solid #fff; 781 | border-right: 8px solid #fff; 782 | border-bottom: 8px solid #fff; 783 | border-left: 8px solid #ccc; 784 | } 785 | 786 | .glow170-basic .glow170-vCarousel .pageNav li.carousel-next-disabled#rightarrow .dotLabel { 787 | width: 0; 788 | height: 0; 789 | border-top: 8px solid #ccc; 790 | border-right: 8px solid #fff; 791 | border-bottom: 8px solid #fff; 792 | border-left: 8px solid #fff; 793 | } 794 | 795 | .glow170-carousel .pageNav li#leftarrow, 796 | .glow170-vCarousel .pageNav li#leftarrow { background-position: 0 -20px; } 797 | 798 | .glow170-basic .glow170-carousel .pageNav li#leftarrow .dotLabel { 799 | width: 0; 800 | height: 0; 801 | border-top: 8px solid #fff; 802 | border-right: 8px solid #000; 803 | border-bottom: 8px solid #fff; 804 | border-left: 8px solid #fff; 805 | } 806 | 807 | .glow170-basic .glow170-vCarousel .pageNav li#leftarrow .dotLabel { 808 | width: 0; 809 | height: 0; 810 | border-top: 8px solid #fff; 811 | border-right: 8px solid #fff; 812 | border-bottom: 8px solid #000; 813 | border-left: 8px solid #fff; 814 | } 815 | 816 | .glow170-carousel .pageNav li.carousel-prev-disabled#leftarrow, 817 | .glow170-vCarousel .pageNav li.carousel-prev-disabled#leftarrow { background-position: 0 0; } 818 | 819 | .glow170-basic .glow170-carousel .pageNav li.carousel-prev-disabled#leftarrow .dotLabel { 820 | width: 0; 821 | height: 0; 822 | border-top: 8px solid #fff; 823 | border-right: 8px solid #ccc; 824 | border-bottom: 8px solid #fff; 825 | border-left: 8px solid #fff; 826 | } 827 | 828 | .glow170-basic .glow170-vCarousel .pageNav li.carousel-prev-disabled#leftarrow .dotLabel { 829 | width: 0; 830 | height: 0; 831 | border-top: 8px solid #fff; 832 | border-right: 8px solid #fff; 833 | border-bottom: 8px solid #ccc; 834 | border-left: 8px solid #fff; 835 | } 836 | /* SLIDER */ 837 | 838 | .glow170-slider, 839 | .glow170-vSlider { 840 | position: relative; 841 | zoom: 1; 842 | } 843 | 844 | .glow170-slider .slider-container, 845 | .glow170-vSlider .slider-container { 846 | position: relative; 847 | zoom: 1; 848 | padding: 4px 17px 6px 17px; 849 | } 850 | 851 | .glow170-slider:focus, 852 | .glow170-vSlider:focus { 853 | outline: none; 854 | border: none; 855 | } 856 | 857 | /* track */ 858 | .glow170-slider .slider-track, 859 | .glow170-vSlider .slider-track { 860 | position: relative; 861 | /* for IE */ 862 | font-size: 0; 863 | zoom: 1; 864 | } 865 | .glow170-slider .slider-trackOff, 866 | .glow170-vSlider .slider-trackOff { 867 | height: 8px; 868 | background: url(images/slider/lighth.png) 100% 0; 869 | margin-left: 2px; 870 | /* for IE */ 871 | font-size: 0; 872 | } 873 | .glow170-slider .slider-trackOn, 874 | .glow170-vSlider .slider-trackOn { 875 | /* width of this is set via js */ 876 | position: absolute; 877 | height: 8px; 878 | top: 0; left: 0; 879 | background: url(images/slider/lighth.png) -2px -8px; 880 | z-index: 2; 881 | overflow: hidden; 882 | } 883 | 884 | .glow170-slider .slider-handle, 885 | .glow170-vSlider .slider-handle { 886 | /* left position of this is set via js */ 887 | position: absolute; 888 | top: -4px; 889 | width: 17px; height: 18px; 890 | background: url(images/slider/lighth.png) 0px -16px; 891 | z-index: 3; 892 | cursor: pointer; 893 | } 894 | 895 | /* buttons */ 896 | 897 | .glow170-slider .slider-btn-bk, 898 | .glow170-slider .slider-btn-fwd, 899 | .glow170-vSlider .slider-btn-bk, 900 | .glow170-vSlider .slider-btn-fwd { 901 | position: absolute; 902 | width: 12px; height: 12px; 903 | top: 2px; left: 0; 904 | background: url(images/slider/lighth.png) 0px -34px; 905 | font-size: 0; 906 | cursor: pointer; 907 | } 908 | .glow170-slider .slider-btn-fwd { 909 | background-position: -12px -34px; 910 | left: 100%; 911 | margin-left: -12px; 912 | } 913 | 914 | /* active state */ 915 | 916 | .glow170-slider .slider-active .slider-handle { 917 | background-position: -17px -16px; 918 | } 919 | 920 | /* disabled state */ 921 | 922 | .glow170-slider .slider-disabled .slider-handle { 923 | background-position: -34px -16px; 924 | } 925 | .glow170-slider .slider-disabled .slider-btn-bk { 926 | background-position: -24px -34px; 927 | } 928 | .glow170-slider .slider-disabled .slider-btn-fwd { 929 | background-position: -36px -34px; 930 | } 931 | .glow170-slider .slider-disabled .slider-trackOn { 932 | background-position: -2px 0; 933 | } 934 | 935 | .glow170-slider .slider-disabled .slider-btn-bk, 936 | .glow170-slider .slider-disabled .slider-btn-fwd, 937 | .glow170-slider .slider-disabled .slider-handle, 938 | .glow170-vSlider .slider-disabled .slider-btn-bk, 939 | .glow170-vSlider .slider-disabled .slider-btn-fwd, 940 | .glow170-vSlider .slider-disabled .slider-handle { 941 | cursor: auto; 942 | } 943 | 944 | /* no buttons */ 945 | .glow170-slider .slider-noButtons .slider-container { 946 | padding-left: 0; 947 | padding-right: 0; 948 | } 949 | .glow170-slider .slider-noButtons .slider-btn-bk, 950 | .glow170-slider .slider-noButtons .slider-btn-fwd, 951 | .glow170-vSlider .slider-noButtons .slider-btn-bk, 952 | .glow170-vSlider .slider-noButtons .slider-btn-fwd { 953 | display: none; 954 | } 955 | 956 | /* labels */ 957 | .glow170-slider .slider-labels { 958 | margin: 10px 8px 0; 959 | } 960 | .glow170-vSlider .slider-labels { 961 | position: absolute; 962 | left: 22px; top: 25px; 963 | } 964 | 965 | .glow170-vSlider .slider-noButtons .slider-labels { 966 | top: 8px; 967 | } 968 | 969 | .glow170-slider .slider-labels .ruler-tickMajor, 970 | .glow170-slider .slider-labels .ruler-tickMinor, 971 | .glow170-vSlider .slider-labels .ruler-tickMajor, 972 | .glow170-vSlider .slider-labels .ruler-tickMinor { 973 | background: #6e6e6e; 974 | } 975 | .glow170-slider .slider-labels .ruler-label, 976 | .glow170-vSlider .slider-labels .ruler-label { 977 | color: #6e6e6e; 978 | cursor: pointer; 979 | } 980 | 981 | 982 | /* vertical */ 983 | .glow170-vSlider .slider-trackOff, 984 | .glow170-vSlider .slider-trackOn, 985 | .glow170-vSlider .slider-handle, 986 | .glow170-vSlider .slider-btn-bk, 987 | .glow170-vSlider .slider-btn-fwd { 988 | background-image: url(images/slider/lightv.png); 989 | } 990 | 991 | .glow170-vSlider .slider-container { 992 | padding: 17px 0; 993 | } 994 | 995 | .glow170-vSlider .slider-track { 996 | margin: 0; 997 | overflow: hidden; 998 | zoom: 1; 999 | width: 20px; 1000 | } 1001 | 1002 | .glow170-vSlider .slider-trackOff { 1003 | width: 8px; 1004 | height: auto; 1005 | background-position: 0 0; 1006 | position: absolute; 1007 | margin: 0; 1008 | left: 4px; top: 0; 1009 | z-index: 2; 1010 | } 1011 | 1012 | .glow170-vSlider .slider-trackOn { 1013 | width: 8px; 1014 | height: 0; 1015 | position: relative; 1016 | margin: 0 0 0 4px; 1017 | background-position: -8px 100%; 1018 | top: 2px; left: 0; 1019 | z-index: 1; 1020 | } 1021 | 1022 | .glow170-vSlider .slider-handle { 1023 | top: 0; left: 0; 1024 | width: 18px; height: 17px; 1025 | background-position: -16px 100%; 1026 | } 1027 | 1028 | .glow170-vSlider .slider-btn-bk, 1029 | .glow170-vSlider .slider-btn-fwd { 1030 | top: 0; left: 2px; 1031 | background-position: -34px -1976px; 1032 | } 1033 | 1034 | .glow170-vSlider .slider-btn-bk { 1035 | background-position: -34px 100%; 1036 | left: 2px; top: 100%; 1037 | margin: -12px 0 0 0; 1038 | } 1039 | 1040 | .glow170-vSlider .slider-active .slider-handle { 1041 | background-position: -16px -1966px; 1042 | } 1043 | .glow170-vSlider .slider-disabled .slider-handle { 1044 | background-position: -16px -1949px; 1045 | } 1046 | .glow170-vSlider .slider-disabled .slider-btn-bk { 1047 | background-position: -34px -1964px; 1048 | } 1049 | .glow170-vSlider .slider-disabled .slider-btn-fwd { 1050 | background-position: -34px -1952px; 1051 | } 1052 | .glow170-vSlider .slider-disabled .slider-trackOn { 1053 | background-position: 0 100%; 1054 | } 1055 | 1056 | .glow170-vSlider .slider-noButtons .slider-container { 1057 | padding-top: 0; 1058 | padding-bottom: 0; 1059 | } 1060 | 1061 | /* Dark theme */ 1062 | .glow170-slider .slider-dark .slider-trackOff, 1063 | .glow170-slider .slider-dark .slider-trackOn, 1064 | .glow170-slider .slider-dark .slider-handle, 1065 | .glow170-slider .slider-dark .slider-btn-bk, 1066 | .glow170-slider .slider-dark .slider-btn-fwd { 1067 | background-image: url(images/slider/darkh.png); 1068 | } 1069 | 1070 | .glow170-vSlider .slider-dark .slider-trackOff, 1071 | .glow170-vSlider .slider-dark .slider-trackOn, 1072 | .glow170-vSlider .slider-dark .slider-handle, 1073 | .glow170-vSlider .slider-dark .slider-btn-bk, 1074 | .glow170-vSlider .slider-dark .slider-btn-fwd { 1075 | background-image: url(images/slider/darkv.png); 1076 | } 1077 | 1078 | .glow170-slider .slider-dark .slider-labels .ruler-tickMajor, 1079 | .glow170-slider .slider-dark .slider-labels .ruler-tickMinor, 1080 | .glow170-vSlider .slider-dark .slider-labels .ruler-tickMajor, 1081 | .glow170-vSlider .slider-dark .slider-labels .ruler-tickMinor { 1082 | background: #e2e2e2; 1083 | } 1084 | .glow170-slider .slider-dark .slider-labels .ruler-label, 1085 | .glow170-vSlider .slider-dark .slider-labels .ruler-label { 1086 | color: #e2e2e2; 1087 | } 1088 | 1089 | /* Gosh! No Images! */ 1090 | 1091 | .glow170-basic .glow170-slider .slider-handle, 1092 | .glow170-basic .glow170-vSlider .slider-handle { 1093 | border-style: solid; 1094 | border-color: #777 #fff; 1095 | border-width: 18px 8px 0 9px; 1096 | width: 0; 1097 | height: 0; 1098 | font-size: 0; 1099 | } 1100 | 1101 | .glow170-basic .glow170-vSlider .slider-handle { 1102 | border-width: 8px 0 9px 18px; 1103 | border-color: #fff #777; 1104 | } 1105 | 1106 | .glow170-basic .glow170-slider .slider-trackOff, 1107 | .glow170-basic .glow170-vSlider .slider-trackOff { 1108 | background: #d6d6d6; 1109 | } 1110 | .glow170-basic .glow170-slider .slider-trackOn, 1111 | .glow170-basic .glow170-vSlider .slider-trackOn { 1112 | background: #777; 1113 | } 1114 | 1115 | .glow170-basic .glow170-slider .slider-btn-bk, 1116 | .glow170-basic .glow170-slider .slider-btn-fwd, 1117 | .glow170-basic .glow170-vSlider .slider-btn-bk, 1118 | .glow170-basic .glow170-vSlider .slider-btn-fwd { 1119 | border-style: solid; 1120 | border-color: #fff #777; 1121 | border-width: 6px 0 6px 12px; 1122 | width: 0; height: 0; 1123 | } 1124 | 1125 | .glow170-basic .glow170-slider .slider-btn-bk { 1126 | border-width: 6px 12px 6px 0; 1127 | } 1128 | 1129 | .glow170-basic .glow170-vSlider .slider-btn-bk { 1130 | border-color: #666 #fff; 1131 | border-width: 12px 6px 0 6px; 1132 | } 1133 | 1134 | .glow170-basic .glow170-vSlider .slider-btn-fwd { 1135 | border-color: #666 #fff; 1136 | border-width: 0 6px 12px 6px; 1137 | } 1138 | 1139 | /* active */ 1140 | .glow170-basic .glow170-slider .slider-active .slider-handle { 1141 | border-color: #000 #fff; 1142 | } 1143 | .glow170-basic .glow170-vSlider .slider-active .slider-handle { 1144 | border-color: #fff #000; 1145 | } 1146 | 1147 | /* disabled */ 1148 | .glow170-basic .glow170-slider .slider-disabled .slider-trackOn, 1149 | .glow170-basic .glow170-vSlider .slider-disabled .slider-trackOn { 1150 | background: #d6d6d6; 1151 | } 1152 | .glow170-basic .glow170-slider .slider-disabled .slider-handle { 1153 | border-color: #d6d6d6 #fff; 1154 | } 1155 | .glow170-basic .glow170-vSlider .slider-disabled .slider-handle { 1156 | border-color: #fff #d6d6d6; 1157 | } 1158 | .glow170-basic .glow170-slider .slider-disabled .slider-btn-bk, 1159 | .glow170-basic .glow170-slider .slider-disabled .slider-btn-fwd { 1160 | border-color: #fff #d6d6d6; 1161 | } 1162 | .glow170-basic .glow170-vSlider .slider-disabled .slider-btn-bk, 1163 | .glow170-basic .glow170-vSlider .slider-disabled .slider-btn-fwd { 1164 | border-color: #d6d6d6 #fff; 1165 | } 1166 | 1167 | /* no images - dark */ 1168 | .glow170-basic .glow170-slider .slider-dark .slider-handle { 1169 | border-color: #ccc #000; 1170 | } 1171 | 1172 | .glow170-basic .glow170-vSlider .slider-dark .slider-handle { 1173 | border-color: #000 #ccc; 1174 | } 1175 | 1176 | .glow170-basic .glow170-slider .slider-dark .slider-trackOff, 1177 | .glow170-basic .glow170-vSlider .slider-dark .slider-trackOff { 1178 | background: #555; 1179 | } 1180 | .glow170-basic .glow170-slider .slider-dark .slider-trackOn, 1181 | .glow170-basic .glow170-vSlider .slider-dark .slider-trackOn { 1182 | background: #ccc; 1183 | } 1184 | 1185 | .glow170-basic .glow170-slider .slider-dark .slider-btn-bk, 1186 | .glow170-basic .glow170-slider .slider-dark .slider-btn-fwd { 1187 | border-color: #000 #ccc; 1188 | } 1189 | 1190 | .glow170-basic .glow170-vSlider .slider-dark .slider-btn-bk, 1191 | .glow170-basic .glow170-vSlider .slider-dark .slider-btn-fwd { 1192 | border-color: #ccc #000; 1193 | } 1194 | 1195 | /* active */ 1196 | .glow170-basic .glow170-slider .slider-dark .slider-active .slider-handle { 1197 | border-color: #fff #000; 1198 | } 1199 | .glow170-basic .glow170-vSlider .slider-dark .slider-active .slider-handle { 1200 | border-color: #000 #fff; 1201 | } 1202 | 1203 | /* disabled */ 1204 | .glow170-basic .glow170-slider .slider-dark .slider-disabled .slider-trackOn, 1205 | .glow170-basic .glow170-vSlider .slider-dark .slider-disabled .slider-trackOn { 1206 | background: #555; 1207 | } 1208 | .glow170-basic .glow170-slider .slider-dark .slider-disabled .slider-handle { 1209 | border-color: #555 #000; 1210 | } 1211 | .glow170-basic .glow170-vSlider .slider-dark .slider-disabled .slider-handle { 1212 | border-color: #000 #555; 1213 | } 1214 | .glow170-basic .glow170-slider .slider-dark .slider-disabled .slider-btn-bk, 1215 | .glow170-basic .glow170-slider .slider-dark .slider-disabled .slider-btn-fwd { 1216 | border-color: #000 #555; 1217 | } 1218 | .glow170-basic .glow170-vSlider .slider-dark .slider-disabled .slider-btn-bk, 1219 | .glow170-basic .glow170-vSlider .slider-dark .slider-disabled .slider-btn-fwd { 1220 | border-color: #555 #000; 1221 | } 1222 | 1223 | /* RULER */ 1224 | 1225 | .glow170-ruler, 1226 | .glow170-vRuler { 1227 | position: relative; 1228 | zoom: 1; 1229 | } 1230 | 1231 | .glow170-ruler .ruler-tickMajor, 1232 | .glow170-ruler .ruler-tickMinor, 1233 | .glow170-vRuler .ruler-tickMajor, 1234 | .glow170-vRuler .ruler-tickMinor { 1235 | position: absolute; 1236 | background: #000; 1237 | width: 1px; height: 1px; 1238 | top: 0; left: 0; 1239 | overflow: hidden; 1240 | } 1241 | 1242 | .glow170-ruler .ruler-tickMajor, 1243 | .glow170-ruler .ruler-spacer { 1244 | height: 10px; 1245 | } 1246 | .glow170-ruler .ruler-tickMinor { 1247 | height: 2px; 1248 | } 1249 | .glow170-vRuler .ruler-tickMajor { 1250 | width: 10px; 1251 | } 1252 | .glow170-vRuler .ruler-tickMinor { 1253 | width: 2px; 1254 | } 1255 | 1256 | .glow170-ruler .ruler-labels { 1257 | position: relative; 1258 | height: 1.2em; 1259 | } 1260 | .glow170-vRuler .ruler-labels { 1261 | position: absolute; 1262 | top: 0; left: 15px; 1263 | height: 100%; 1264 | } 1265 | 1266 | .glow170-ruler .ruler-label, 1267 | .glow170-vRuler .ruler-label { 1268 | position: absolute; 1269 | top: 0; left: 0; 1270 | } 1271 | .glow170-ruler .ruler-label { 1272 | text-align: center; 1273 | } 1274 | .glow170-ruler .ruler-label span { 1275 | position: relative; 1276 | left: -50%; 1277 | } 1278 | .glow170-vRuler .ruler-label { 1279 | /*line-height: 0;*/ 1280 | margin-top: -0.56em; 1281 | } 1282 | /* TIMETABLE */ 1283 | .glow170-vTimetable .timetable-container, 1284 | .glow170-Timetable .timetable-container { 1285 | overflow: hidden; 1286 | position: relative; 1287 | zoom: 1; 1288 | } 1289 | .glow170-vTimetable .timetable-innerView, 1290 | .glow170-Timetable .timetable-innerView { 1291 | /*border: 2px solid #000;*/ 1292 | background: #fff; 1293 | overflow: hidden; 1294 | position: relative; 1295 | zoom: 1; 1296 | } 1297 | .glow170-vTimetable .timetable-innerView { 1298 | float: left; 1299 | } 1300 | .glow170-vTimetable .timetable-dragArea, 1301 | .glow170-vTimetable .timetable-track, 1302 | .glow170-vTimetable .timetable-item, 1303 | .glow170-vTimetable .timetable-bandOdd, 1304 | .glow170-vTimetable .timetable-bandEven, 1305 | .glow170-vTimetable .timetable-scale, 1306 | .glow170-vTimetable .timetable-scaleItem, 1307 | .glow170-Timetable .timetable-dragArea, 1308 | .glow170-Timetable .timetable-track, 1309 | .glow170-Timetable .timetable-item, 1310 | .glow170-Timetable .timetable-bandOdd, 1311 | .glow170-Timetable .timetable-bandEven, 1312 | .glow170-Timetable .timetable-scale, 1313 | .glow170-Timetable .timetable-scaleItem { 1314 | position: absolute; 1315 | top: 0; left: 0; 1316 | overflow: hidden; 1317 | width: 100%; 1318 | height: 100%; 1319 | z-index: 2; 1320 | } 1321 | 1322 | .glow170-vTimetable .timetable-dragRange, 1323 | .glow170-Timetable .timetable-dragRange { 1324 | height: 100%; 1325 | width: 100%; 1326 | } 1327 | 1328 | 1329 | .glow170-vTimetable .timetable-track, 1330 | .glow170-Timetable .timetable-track { 1331 | border: 1px solid #a0a0a0; 1332 | border-width: 0 1px; 1333 | margin-right: 2px; 1334 | } 1335 | .glow170-vTimetable .timetable-track { 1336 | border-width: 0 1px; 1337 | margin-right: 1px; 1338 | } 1339 | .glow170-Timetable .timetable-track { 1340 | border-width: 1px 0; 1341 | margin-bottom: 1px; 1342 | } 1343 | .glow170-vTimetable .timetable-scale, 1344 | .glow170-Timetable .timetable-scale { 1345 | color: #a0a0a0; 1346 | font-size: x-large; 1347 | border: 1px solid #ccc; 1348 | } 1349 | .glow170-vTimetable .timetable-scale { 1350 | text-align: center; 1351 | } 1352 | 1353 | .glow170-vTimetable .timetable-scalePrimary { 1354 | border-width: 0 0 0 1px; 1355 | } 1356 | .glow170-vTimetable .timetable-scaleSecondary { 1357 | border-width: 0 1px 0 0; 1358 | } 1359 | .glow170-Timetable .timetable-scalePrimary { 1360 | border-width: 1px 0 0 0; 1361 | } 1362 | .glow170-Timetable .timetable-scaleSecondary { 1363 | border-width: 0 0 1px 0; 1364 | } 1365 | 1366 | .glow170-vTimetable .timetable-track-footers { 1367 | clear: both; 1368 | } 1369 | 1370 | /* temporary values to make it visible but out of the way during dev 1371 | .glow170-vTimetable .timetable-accessibility-navigation, 1372 | .glow170-Timetable .timetable-accessibility-navigation { 1373 | position: absolute; 1374 | top: 0; 1375 | right: 0; 1376 | }*/ 1377 | 1378 | .glow170-vTimetable .timetable-accessibility-navigation, 1379 | .glow170-Timetable .timetable-accessibility-navigation, 1380 | .glow170-vTimetable .timetable-accessibility-hidden, 1381 | .glow170-Timetable .timetable-accessibility-hidden { 1382 | position: absolute; 1383 | height: 1px; 1384 | width: 1px; 1385 | overflow: hidden; 1386 | } 1387 | 1388 | .glow170-vTimetable .timetable-track-headers, 1389 | .glow170-vTimetable .timetable-track-footers, 1390 | .glow170-Timetable .timetable-track-headers, 1391 | .glow170-Timetable .timetable-track-footers { 1392 | position: relative; 1393 | } 1394 | 1395 | .glow170-vTimetable .timetable-header-holder, 1396 | .glow170-vTimetable .timetable-footer-holder, 1397 | .glow170-Timetable .timetable-header-holder, 1398 | .glow170-Timetable .timetable-footer-holder { 1399 | position: absolute; 1400 | top: 0; 1401 | left: 0; 1402 | overflow: hidden; 1403 | color: #fff; 1404 | background: #424242; 1405 | text-align: center; 1406 | } 1407 | .glow170-Timetable .timetable-track-headers, 1408 | .glow170-Timetable .timetable-track-footers, 1409 | .glow170-Timetable .timetable-scrollView { 1410 | float: left; 1411 | } 1412 | .glow170-Timetable .timetable-header-holder, 1413 | .glow170-Timetable .timetable-footer-holder { 1414 | width: 100px; 1415 | } 1416 | 1417 | .glow170-vTimetable .timetable-track-headers, 1418 | .glow170-vTimetable .timetable-track-footers, 1419 | .glow170-Timetable .timetable-track-headers, 1420 | .glow170-Timetable .timetable-track-footers { 1421 | background: #fff; 1422 | border: 1px solid #ccc; 1423 | } 1424 | .glow170-vTimetable .timetable-track-headers { 1425 | border-bottom-width: 0 1426 | } 1427 | .glow170-vTimetable .timetable-track-footers { 1428 | border-top-width: 0 1429 | } 1430 | .glow170-Timetable .timetable-track-headers { 1431 | border-right-width: 0 1432 | } 1433 | .glow170-Timetable .timetable-track-footers { 1434 | border-left-width: 0 1435 | } 1436 | 1437 | .glow170-vTimetable .timetable-track-headers div.timetable-header-content, 1438 | .glow170-vTimetable .timetable-track-footers div.timetable-footer-content, 1439 | .glow170-Timetable .timetable-track-headers div.timetable-header-content, 1440 | .glow170-Timetable .timetable-track-footers div.timetable-footer-content { 1441 | padding: 9px 0; 1442 | } 1443 | 1444 | .glow170-Timetable .timetable-track-headers div.timetable-header-content, 1445 | .glow170-Timetable .timetable-track-footers div.timetable-footer-content { 1446 | padding: 4px 5px; 1447 | text-align: left; 1448 | } 1449 | /* we use !important beacuse it's impoartant these items aren't affected by margins or padding */ 1450 | .glow170-vTimetable .timetable-trackList, 1451 | .glow170-Timetable .timetable-trackList { 1452 | margin: 0 !important; 1453 | padding: 0 !important; 1454 | list-style: none; 1455 | } 1456 | .glow170-vTimetable .timetable-item, 1457 | .glow170-Timetable .timetable-item { 1458 | border: 1px solid #ccc; 1459 | margin: 0 !important; 1460 | padding: 0 !important; 1461 | display: block; 1462 | } 1463 | .glow170-vTimetable .timetable-item { 1464 | border-width: 1px 0; 1465 | } 1466 | .glow170-Timetable .timetable-item { 1467 | border-width: 0 1px; 1468 | } 1469 | .glow170-vTimetable .timetable-itemHangingOffStart .timetable-itemContent, 1470 | .glow170-Timetable .timetable-itemHangingOffStart .timetable-itemContent { 1471 | opacity: 0.3; 1472 | filter: alpha(opacity=30); 1473 | zoom: 1; 1474 | } 1475 | .glow170-vTimetable .timetable-itemHangingClipping .timetable-itemContent, 1476 | .glow170-Timetable .timetable-itemHangingClipping .timetable-itemContent { 1477 | height: 1px; 1478 | overflow: hidden; 1479 | } 1480 | .glow170-vTimetable .timetable-hideitems .timetable-item { 1481 | display: none; 1482 | } 1483 | /* banding */ 1484 | .glow170-vTimetable .timetable-bandOdd, 1485 | .glow170-vTimetable .timetable-bandEven, 1486 | .glow170-Timetable .timetable-bandOdd, 1487 | .glow170-Timetable .timetable-bandEven { 1488 | z-index: 1; 1489 | } 1490 | .glow170-vTimetable .timetable-bandOdd, 1491 | .glow170-Timetable .timetable-bandOdd { 1492 | background: #ebebeb; 1493 | } 1494 | /* end banding */ 1495 | 1496 | .glow170-vTimetable .timetable-default-track-header { 1497 | position: absolute; 1498 | height: 1px; 1499 | width: 1px; 1500 | overflow: hidden; 1501 | } 1502 | 1503 | /* scrollbar nav */ 1504 | .glow170-vTimetable .timetable-scrollbar1, 1505 | .glow170-vTimetable .timetable-scrollbar2, 1506 | .glow170-Timetable .timetable-scrollbar1, 1507 | .glow170-Timetable .timetable-scrollbar2 { 1508 | display: none; 1509 | } 1510 | 1511 | .glow170-vTimetable .timetable-scrollbar1, 1512 | .glow170-vTimetable .timetable-scrollbar2 { 1513 | float: left; 1514 | /* this foces IE6 to make the scrollbars shrink to fit */ 1515 | _width: 0; 1516 | } 1517 | 1518 | .glow170-vTimetable .timetable-scrollbar .slider-container, 1519 | .glow170-Timetable .timetable-scrollbar .slider-container { 1520 | padding: 21px 0; 1521 | border: 1px solid #a0a0a0; 1522 | } 1523 | .glow170-Timetable .timetable-scrollbar .slider-container { 1524 | padding: 0 21px; 1525 | } 1526 | .glow170-vTimetable .timetable-scrollbar2 .slider-container { 1527 | border-left-width: 0; 1528 | } 1529 | .glow170-vTimetable .timetable-scrollbar1 .slider-container { 1530 | border-right-width: 0; 1531 | } 1532 | .glow170-Timetable .timetable-scrollbar2 .slider-container { 1533 | border-top-width: 0; 1534 | } 1535 | .glow170-Timetable .timetable-scrollbar1 .slider-container { 1536 | border-bottom-width: 0; 1537 | } 1538 | .glow170-vTimetable .timetable-scrollbar .slider-handle, 1539 | .glow170-Timetable .timetable-scrollbar .slider-handle { 1540 | /* using opacity because IE6 lets you click 'through' elements with a transparent bg */ 1541 | width: 100%; 1542 | height: 100%; 1543 | background: #fff; 1544 | opacity: 0; 1545 | filter: alpha(opacity=0); 1546 | top: 0; 1547 | } 1548 | .glow170-vTimetable .timetable-scrollbar .slider-track, 1549 | .glow170-Timetable .timetable-scrollbar .slider-track { 1550 | background: none; 1551 | } 1552 | .glow170-vTimetable .timetable-scrollbarLabels, 1553 | .glow170-Timetable .timetable-scrollbarLabels { 1554 | position: absolute; 1555 | width: 100%; 1556 | height: 100%; 1557 | background: #fff; 1558 | color: #227db7; 1559 | font-size: small; 1560 | text-align: center; 1561 | top: 0; left: 0; 1562 | overflow: hidden; 1563 | } 1564 | 1565 | .glow170-vTimetable .slider-labels, 1566 | .glow170-Timetable .slider-labels { 1567 | display: none; 1568 | } 1569 | 1570 | .glow170-vTimetable .timetable-scrollbarLabelsHighlight, 1571 | .glow170-Timetable .timetable-scrollbarLabelsHighlight { 1572 | background: #424242; 1573 | color: #fff; 1574 | z-index: 1; 1575 | overflow: hidden; 1576 | } 1577 | 1578 | .glow170-vTimetable .timetable-scrollbar .slider-trackOn, 1579 | .glow170-vTimetable .timetable-scrollbar .slider-trackOff, 1580 | .glow170-Timetable .timetable-scrollbar .slider-trackOn, 1581 | .glow170-Timetable .timetable-scrollbar .slider-trackOff { 1582 | background: none; 1583 | } 1584 | 1585 | .glow170-vTimetable .timetable-scrollbarItem, 1586 | .glow170-Timetable .timetable-scrollbarItem { 1587 | width: 100%; 1588 | height: 100%; 1589 | position: absolute; 1590 | top: 0; left: 0; 1591 | } 1592 | 1593 | .glow170-vTimetable .timetable-scrollbar .slider-btn-bk, 1594 | .glow170-vTimetable .timetable-scrollbar .slider-btn-fwd, 1595 | .glow170-Timetable .timetable-scrollbar .slider-btn-bk, 1596 | .glow170-Timetable .timetable-scrollbar .slider-btn-fwd { 1597 | background: url(images/timetable/lightv.png) top center; 1598 | border: 1px solid #a0a0a0; 1599 | } 1600 | 1601 | .glow170-vTimetable .timetable-scrollbar .slider-btn-bk, 1602 | .glow170-vTimetable .timetable-scrollbar .slider-btn-fwd { 1603 | height: 20px; 1604 | left: 0; 1605 | border-width: 0 0 1px 0; 1606 | } 1607 | .glow170-Timetable .timetable-scrollbar .slider-btn-bk, 1608 | .glow170-Timetable .timetable-scrollbar .slider-btn-fwd { 1609 | background: url(images/timetable/lighth.png) right center; 1610 | width: 20px; 1611 | top: 0; 1612 | border-width: 0 0 0 1px; 1613 | } 1614 | .glow170-vTimetable .timetable-scrollbar .slider-btn-bk { 1615 | background-position: center bottom; 1616 | border-width: 1px 0 0 0; 1617 | margin: -21px 0 0; 1618 | } 1619 | .glow170-Timetable .timetable-scrollbar .slider-btn-bk { 1620 | background-position: left center; 1621 | border-width: 0 1px 0 0; 1622 | z-index: 1; 1623 | } 1624 | .glow170-Timetable .timetable-scrollbar .slider-btn-fwd { 1625 | margin-left: -21px; 1626 | } 1627 | /* scrollbar nav end */ 1628 | 1629 | /* dark theme */ 1630 | .glow170-vTimetable .timetable-dark .timetable-scrollbarLabels, 1631 | .glow170-Timetable .timetable-dark .timetable-scrollbarLabels { 1632 | background-color: #333; 1633 | } 1634 | 1635 | .glow170-vTimetable .timetable-dark .timetable-header-holder, 1636 | .glow170-vTimetable .timetable-dark .timetable-footer-holder, 1637 | .glow170-Timetable .timetable-dark .timetable-header-holder, 1638 | .glow170-Timetable .timetable-dark .timetable-footer-holder, 1639 | .glow170-vTimetable .timetable-dark .timetable-scrollbarLabelsHighlight, 1640 | .glow170-Timetable .timetable-dark .timetable-scrollbarLabelsHighlight { 1641 | background: #121212; 1642 | } 1643 | 1644 | .glow170-vTimetable .timetable-dark .timetable-innerView, 1645 | .glow170-Timetable .timetable-dark .timetable-innerView { 1646 | background: #333333; 1647 | color: #ccc; 1648 | } 1649 | 1650 | .glow170-vTimetable .timetable-dark .timetable-scale, 1651 | .glow170-Timetable .timetable-dark .timetable-scale { 1652 | color: #ccc; 1653 | } 1654 | 1655 | .glow170-vTimetable .timetable-dark .timetable-item, 1656 | .glow170-Timetable .timetable-dark .timetable-item, 1657 | .glow170-vTimetable .timetable-dark .timetable-track, 1658 | .glow170-Timetable .timetable-dark .timetable-track, 1659 | .glow170-vTimetable .timetable-dark .timetable-scrollbar .slider-btn-bk, 1660 | .glow170-vTimetable .timetable-dark .timetable-scrollbar .slider-btn-fwd, 1661 | .glow170-Timetable .timetable-dark .timetable-scrollbar .slider-btn-bk, 1662 | .glow170-Timetable .timetable-dark .timetable-scrollbar .slider-btn-fwd, 1663 | .glow170-vTimetable .timetable-dark .timetable-scrollbar .slider-container, 1664 | .glow170-Timetable .timetable-dark .timetable-scrollbar .slider-container, 1665 | .glow170-vTimetable .timetable-dark .timetable-scale, 1666 | .glow170-Timetable .timetable-dark .timetable-scale { 1667 | border-color: #141414; 1668 | } 1669 | 1670 | .glow170-vTimetable .timetable-dark .timetable-bandOdd, 1671 | .glow170-Timetable .timetable-dark .timetable-bandOdd { 1672 | background-color: #242424; 1673 | } 1674 | 1675 | .glow170-vTimetable .timetable-dark .timetable-scrollbar .slider-btn-bk, 1676 | .glow170-vTimetable .timetable-dark .timetable-scrollbar .slider-btn-fwd { 1677 | background-image: url(images/timetable/darkv.png); 1678 | } 1679 | .glow170-Timetable .timetable-dark .timetable-scrollbar .slider-btn-bk, 1680 | .glow170-Timetable .timetable-dark .timetable-scrollbar .slider-btn-fwd { 1681 | background-image: url(images/timetable/darkh.png); 1682 | } 1683 | .glow170-vTimetable .timetable-dark .timetable-track-headers, 1684 | .glow170-vTimetable .timetable-dark .timetable-track-footers, 1685 | .glow170-Timetable .timetable-dark .timetable-track-headers, 1686 | .glow170-Timetable .timetable-dark .timetable-track-footers { 1687 | border: none; 1688 | background: #333; 1689 | } 1690 | /* dark theme end */ 1691 | /* END TIMETABLE */ 1692 | /* EDITOR */ 1693 | .glow170-editor { 1694 | border: 1px solid #000; 1695 | font-size: medium; 1696 | } 1697 | 1698 | .glow170-editor .editor-toolbar 1699 | { 1700 | border: none; 1701 | display: block; 1702 | margin: 0; 1703 | padding: 0; 1704 | background-color: #EFEFEF; 1705 | } 1706 | 1707 | .glow170-editor .editor-toolbar legend { display: none; } 1708 | .glow170-editor .editor-toolbar-tools h3 { display: none; } 1709 | 1710 | .glow170-editor ul.editor-toolbar-tools 1711 | { 1712 | display: block; 1713 | margin: 0 !important; 1714 | padding: 9px !important; 1715 | overflow: hidden; 1716 | zoom: 1; 1717 | } 1718 | 1719 | .glow170-editor ul.editor-toolbar-tools li 1720 | { 1721 | list-style: none; 1722 | float: left; 1723 | display: block; 1724 | margin: 0 !important; 1725 | padding: 0 !important; 1726 | } 1727 | 1728 | .glow170-editor .editor-toolbar-button 1729 | { 1730 | display: block; 1731 | margin: 0; 1732 | padding: 0; 1733 | overflow: hidden; 1734 | } 1735 | 1736 | .glow170-editor .editor-toolbar-button a { outline: none; text-decoration: none; } 1737 | .glow170-editor .editor-toolbar-button img { border: none; } 1738 | 1739 | /* with images */ 1740 | .glow170-editor .editor-toolbar-icon 1741 | { 1742 | display: block; 1743 | width: 26px; 1744 | height: 24px; 1745 | } 1746 | 1747 | .glow170-editor .editor-toolbar-icon span 1748 | { 1749 | display: block; 1750 | height: 1px; 1751 | overflow: hidden; 1752 | width: 1px; 1753 | } 1754 | 1755 | .glow170-editor .editor-toolbar-icon span { display: block; height: 1px; overflow: hidden; width: 1px; } 1756 | 1757 | .glow170-editor .editor-toolbar-item .bold-button { background-image: url(images/editor/button-bold.png); } 1758 | .glow170-editor .editor-toolbar-item .italics-button { background-image: url(images/editor/button-italics.png); } 1759 | .glow170-editor .editor-toolbar-item .strike-button { background-image: url(images/editor/button-strike.png); } 1760 | .glow170-editor .editor-toolbar-item .blockquote-button { background-image: url(images/editor/button-blockquote.png); } 1761 | .glow170-editor .editor-toolbar-item .unorderedlist-button { background-image: url(images/editor/button-unorderedlist.png); } 1762 | .glow170-editor .editor-toolbar-item .orderedlist-button { background-image: url(images/editor/button-orderedlist.png); } 1763 | 1764 | .glow170-editor .editor-toolbar-item .default .editor-toolbar-icon { background-position: 0px 0px; } 1765 | .glow170-editor .editor-toolbar-item .disabled .editor-toolbar-icon { background-position: 0px -28px; } 1766 | .glow170-editor .editor-toolbar-item .active .editor-toolbar-icon { background-position: 0px -85px; } 1767 | .glow170-editor .editor-toolbar-item .hover .editor-toolbar-icon { background-position: 0px -56px; } 1768 | 1769 | /* DROPDOWN */ 1770 | 1771 | .glow170-editor .editor-toolbar-dropdown { 1772 | display: block; 1773 | width: 84px; 1774 | margin: 0 3px 0 3px; 1775 | } 1776 | 1777 | .glow170-editor .editor-toolbar-dropdown a { 1778 | color: black; 1779 | text-decoration: none; 1780 | font: 0.75em arial; 1781 | } 1782 | .glow170-editor .editor-toolbar-dropdown span span { 1783 | display: block; 1784 | padding: 1px 16px 1px 4px; 1785 | border: 1px solid #ccc; 1786 | height: 16px; 1787 | line-height: 16px; 1788 | margin: 3px 0 0 2px; 1789 | background: #fff url(images/editor/menuarrow.png) no-repeat right 8px; 1790 | 1791 | overflow: hidden; 1792 | } 1793 | .glow170-editor .editor-toolbar-dropdown .disabled span { 1794 | background: #aaa url(images/editor/menuarrow.png) no-repeat right -10px; 1795 | } 1796 | .glow170-editor .editor-toolbar-dropdown .hover span { 1797 | background: #fff url(images/editor/menuarrow.png) no-repeat right 8px; 1798 | } 1799 | .glow170-editor .editor-toolbar-dropdown .active span span { 1800 | border: 1px solid #aaa; 1801 | } 1802 | .glow170-editor .editor-toolbar-dropdown .active span { 1803 | background: #ccc url(images/editor/menuarrow.png) no-repeat right 8px; 1804 | } 1805 | 1806 | .glow170-overlay.overlayMenu { 1807 | background: #ccc; border: 1px solid #b1b1b1; 1808 | font-family: Arial, Helvetica, sans-serif; 1809 | font-size: medium; 1810 | } 1811 | 1812 | .glow170-overlay.overlayMenu ul { 1813 | list-style: none; 1814 | margin: 0; 1815 | padding: 0; 1816 | } 1817 | 1818 | .glow170-overlay.overlayMenu ul li { 1819 | padding: 2px 4px 2px 4px; 1820 | outline: none; 1821 | } 1822 | 1823 | .glow170-overlay.overlayMenu li.highlighted { background: #999; cursor: pointer; } 1824 | .glow170-overlay.overlayMenu .heading1 { font-size: 1.2em; } 1825 | .glow170-overlay.overlayMenu .heading2 { font-size: 1.1em; } 1826 | .glow170-overlay.overlayMenu .heading3 { font-size: 1.0em; } 1827 | .glow170-overlay.overlayMenu .normal { font-size: 0.9em; } 1828 | 1829 | /* DROPDOWN DARK */ 1830 | 1831 | .glow170-editor .editor-dark .editor-toolbar-dropdown span span { 1832 | border: 1px solid #666; 1833 | background: transparent url(images/editor/menuarrow.png) no-repeat scroll right -12px; 1834 | color: #fff; 1835 | } 1836 | 1837 | .glow170-editor .editor-dark .editor-toolbar-dropdown .hover span span { 1838 | border: 1px solid #ccc; 1839 | } 1840 | 1841 | .glow170-editor .editor-toolbar-dropdown .hover span span { 1842 | border: 1px solid #999; 1843 | } 1844 | 1845 | .glow170-overlay.overlayMenu-dark { 1846 | background: #333; border: 1px solid #ccc; 1847 | color: #fff; 1848 | } 1849 | .glow170-overlay.overlayMenu-dark ul li.highlighted { background: #000; } 1850 | 1851 | .glow170-editor .glow170-hidden { position: absolute; left: -2500px; width: 1px; } 1852 | 1853 | /* without images */ 1854 | .glow170-basic .glow170-editor .editor-toolbar-icon span { border: none; height: auto; overflow: hidden; width: auto; } 1855 | .glow170-basic .glow170-editor .editor-toolbar-item .hover span span { border: 1px solid #000; } 1856 | 1857 | .glow170-editor iframe { border: 0; margin: 0; padding: 0; width: 100%; } 1858 | 1859 | /* dark theme */ 1860 | .glow170-editor .editor-dark .editor-toolbar { background: #333; color: #fff; } 1861 | .glow170-editor .editor-dark .editor-toolbar-item .bold-button { background-image: url(images/editor/dark-button-bold.png); } 1862 | .glow170-editor .editor-dark .editor-toolbar-item .italics-button { background-image: url(images/editor/dark-button-italics.png); } 1863 | .glow170-editor .editor-dark .editor-toolbar-item .strike-button { background-image: url(images/editor/dark-button-strike.png); } 1864 | .glow170-editor .editor-dark .editor-toolbar-item .blockquote-button { background-image: url(images/editor/dark-button-blockquote.png); } 1865 | .glow170-editor .editor-dark .editor-toolbar-item .blockquote-button { background-image: url(images/editor/dark-button-blockquote.png); } 1866 | .glow170-editor .editor-dark .editor-toolbar-item .unorderedlist-button { background-image: url(images/editor/dark-button-unorderedlist.png); } 1867 | .glow170-editor .editor-dark .editor-toolbar-item .orderedlist-button { background-image: url(images/editor/dark-button-orderedlist.png); } 1868 | 1869 | /* END EDITOR */ 1870 | --------------------------------------------------------------------------------