gocart 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. data/LICENSE +0 -0
  2. data/README.md +0 -0
  3. data/assets/Gemfile +24 -0
  4. data/assets/Guardfile +37 -0
  5. data/assets/Rakefile +5 -0
  6. data/assets/config.rb +24 -0
  7. data/assets/spec/javascripts/support/jasmine.yml +86 -0
  8. data/assets/spec/javascripts/support/jasmine_config.rb +23 -0
  9. data/assets/spec/javascripts/support/jasmine_runner.rb +32 -0
  10. data/assets/src/server/http_handler.go +136 -0
  11. data/assets/src/server/main.go +31 -0
  12. data/assets/src/server/templates.go +42 -0
  13. data/assets/src/www/app/coffee/adapters/dummy_data.js.coffee +6 -0
  14. data/assets/src/www/app/coffee/adapters/reddit.js.coffee +294 -0
  15. data/assets/src/www/app/coffee/application.js.coffee +23 -0
  16. data/assets/src/www/app/coffee/controllers/app.js.coffee +69 -0
  17. data/assets/src/www/app/coffee/controllers/nav.js.coffee +55 -0
  18. data/assets/src/www/app/coffee/controllers/subreddit_posts.js.coffee +57 -0
  19. data/assets/src/www/app/coffee/helpers/event_manager.js.coffee +3 -0
  20. data/assets/src/www/app/coffee/helpers/properties.js.coffee +19 -0
  21. data/assets/src/www/app/coffee/helpers/storage.js.coffee +14 -0
  22. data/assets/src/www/app/coffee/libs/3rdparty.js.coffee +7 -0
  23. data/assets/src/www/app/coffee/libs/deferred.js.coffee +92 -0
  24. data/assets/src/www/app/coffee/libs/logger.js.coffee +40 -0
  25. data/assets/src/www/app/coffee/libs/mod_loader.js.coffee +44 -0
  26. data/assets/src/www/app/coffee/main.js.coffee +42 -0
  27. data/assets/src/www/app/coffee/models/comment.js.coffee +26 -0
  28. data/assets/src/www/app/coffee/models/post.js.coffee +27 -0
  29. data/assets/src/www/app/coffee/models/sub_reddit.js.coffee +18 -0
  30. data/assets/src/www/app/coffee/widgets/post_detail.js.coffee +2 -0
  31. data/assets/src/www/app/coffee/widgets/posts.js.coffee +45 -0
  32. data/assets/src/www/app/coffee/widgets/subreddit_detail.js.coffee +2 -0
  33. data/assets/src/www/app/coffee/widgets/subreddits.js.coffee +44 -0
  34. data/assets/src/www/app/images/test.png +0 -0
  35. data/assets/src/www/app/partials/index.html +92 -0
  36. data/assets/src/www/app/sass/application.css.scss +136 -0
  37. data/assets/src/www/app/templates/application.gotmpl +2 -0
  38. data/assets/src/www/app/templates/base.gotmpl.erb +27 -0
  39. data/assets/src/www/app/templates/home.gotmpl +9 -0
  40. data/assets/src/www/spec/coffee/deferred-spec.coffee +202 -0
  41. data/assets/src/www/spec/coffee/mocks.coffee +137 -0
  42. data/assets/src/www/spec/coffee/mod_loader-spec.coffee +45 -0
  43. data/assets/src/www/spec/coffee/properties-spec.coffee +21 -0
  44. data/assets/src/www/spec/coffee/reddit_adapter-spec.coffee +143 -0
  45. data/assets/src/www/vendor/css/jq.ui.css +630 -0
  46. data/assets/src/www/vendor/images/ajax-loader.png +0 -0
  47. data/assets/src/www/vendor/images/icons-18-black.png +0 -0
  48. data/assets/src/www/vendor/images/icons-18-white.png +0 -0
  49. data/assets/src/www/vendor/images/icons-36-black.png +0 -0
  50. data/assets/src/www/vendor/images/icons-36-white.png +0 -0
  51. data/assets/src/www/vendor/js/ICanHaz.min.js +10 -0
  52. data/assets/src/www/vendor/js/jq.mobi.min.js +20 -0
  53. data/assets/src/www/vendor/js/jq.ui.min.js +90 -0
  54. data/assets/src/www/vendor/js/jq.web.min.js +58 -0
  55. data/assets/src/www/vendor/js/phonegap-1.1.0.js +4577 -0
  56. data/assets/src/www/vendor/js/touch.js +103 -0
  57. data/assets/tasks/app.rake +34 -0
  58. data/assets/tasks/jasmine.rake +8 -0
  59. data/assets/tasks/server.rake +58 -0
  60. data/assets/tasks/www.rake +163 -0
  61. data/bin/gocart +25 -0
  62. data/lib/gocart.rb +5 -6
  63. data/lib/gocart/base.rb +28 -0
  64. data/lib/gocart/environment.rb +18 -0
  65. data/lib/gocart/version.rb +1 -1
  66. metadata +113 -41
  67. data/.gitignore +0 -4
  68. data/Gemfile +0 -4
  69. data/Rakefile +0 -1
  70. data/gocarg.go +0 -29
  71. data/gocart.gemspec +0 -38
@@ -0,0 +1,137 @@
1
+
2
+ modLoader.define 'mocks', (require, exports)->
3
+
4
+ exports.ajax = jasmine.createSpy('AJAX Stub').andCallFake () ->
5
+ return
6
+
7
+ exports.model_subreddit = {
8
+ id:'fake id',
9
+ title:'fake title',
10
+ name:'fake name'
11
+ url: '/r/programming/'
12
+ }
13
+
14
+ exports.rsp_reddits = {
15
+ "kind":"Listing",
16
+ "data":{
17
+ "modhash":"yqpsudqtcv91b6a8e81dcce79d45fcaf82bfc6b147f7fab330",
18
+ "children":[
19
+ {
20
+ "kind":"t5",
21
+ "data":{
22
+ "display_name":"pics",
23
+ "name":"t5_2qh0u",
24
+ "title":"Pictures and Images",
25
+ "url":"/r/pics/",
26
+ "created":1201221069.0,
27
+ "created_utc":1201221069.0,
28
+ "over18":false,
29
+ "subscribers":1098672,
30
+ "id":"2qh0u",
31
+ "description":"A place to share interesting photographs and pictures. Feel free to post your own, but please **read the rules first** (see below), and note that we are *not a catch-all* for general images (of text, comics, etc.)\n\n\n#Announcement#\n*Oct 13th, 2011* - **We have a [new ruleset](http://www.reddit.com/r/pics/comments/lb24q/rpics_ruleset/)**, please read it carefully before submitting anything. \n\n#Rules#\n\n1. **No pictures of text.** *This includes images with superimposed text, such as [image macros](http://en.wikipedia.org/wiki/Image_macro) and comics, as well as screenshots, and (non-historical) handwritten text.*\n\n1. **No gore, porn or anything NSFW.** *This subreddit is strictly SFW, and there are better places for such content.*\n\n1. **No personal information.** *This includes anything hosted on Facebook's servers, as they can be traced to the original account holder. Stalking & harassment will not be tolerated.*\n\n1. **No solicitation of votes or DAE posts.** \n\n1. **No non-author URLs in images.** *We only tolerate URLs in images if they serve to give credit to the original author.*\n\n**Please also read the full version of these rules [here](http://www.reddit.com/r/pics/comments/lb24q/rpics_ruleset/).**\n\n\nIf your submission appears to be banned but meets the above rules, [please send us a message](/message/compose?to=%23pics). Don't delete it as that makes the filter hate you! \n\n\nIf you come across any rule violations, please report the submission or [message the mods](http://www.reddit.com/message/compose?to=%23pics) and one of us will remove it!\n\n#Related subreddits#\n\n* **[misc](/r/misc/)**\n* **[gifs](/r/gifs/)**\n* **[f7u12](/r/fffffffuuuuuuuuuuuu/)**\n* **[Vertical](/r/Vertical)**\n* **[Demotivational](/r/Demotivational)**\n* **[Advice Animals](/r/AdviceAnimals)**\n* **[The SFWPorn Network](http://reddit.com/r/earthporn+villageporn+cityporn+spaceporn+waterporn+abandonedporn+animalporn+humanporn+botanicalporn+adrenalineporn+destructionporn+movieposterporn+albumartporn+machineporn+newsporn+geekporn+bookporn+mapporn+adporn+designporn+roomporn+militaryporn+historyporn+quotesporn+skyporn+fireporn+infrastructureporn)**\n* [Rage Novels](/r/ragenovels/)\n* [Rage Ops](/r/rageops)\n* [Advice Atheists](/r/AdviceAtheists)\n* [a6theism10](/r/aaaaaatheismmmmmmmmmm)\n* [Trolling Animals](/r/TrollingAnimals)\n* [/r/AnythingGoesPics](/r/AnythingGoesPics)\n* [/r/OriginalHub](/r/OriginalHub)\n* [/r/screenshots](/r/screenshots)\n* [/r/tradingfaces](/r/tradingfaces)\n* [/r/nostalgia](/r/nostalgia)\n* [/r/facepalm](/r/facepalm)\n* [/r/gamingpics](/r/gamingpics)\n* [/r/aww](/r/aww)\n* [/r/eCards](/r/eCards)\n* [/r/comics](/r/comics)\n* [/r/webcomics](/r/webcomics)\n* [/r/photography](/r/photography)\n* [/r/PictureChallenge](/r/PictureChallenge)\n* [/r/photocritique](/r/photocritique)\n* [/r/windowshots](/r/windowshots)\n* [/r/wallpaper](/r/wallpaper)\n* [/r/wallpapers](/r/wallpapers)\n* [/r/1000words](/r/1000words)\n* [/r/newreddits](/r/newreddits)\n\nAlso check out http://irc.reddit.com\n\n### [***20/10/11 New Ruleset***: Please report violations using the 'report' button.](http://www.reddit.com/r/pics/comments/lb24q/rpics_ruleset/)###"
32
+ }
33
+ },
34
+ {
35
+ "kind":"t5",
36
+ "data":{
37
+ "display_name":"funny",
38
+ "name":"t5_2qh33",
39
+ "title":"funny",
40
+ "url":"/r/funny/",
41
+ "created":1201242956.0,
42
+ "created_utc":1201242956.0,
43
+ "over18":false,
44
+ "subscribers":1111900,
45
+ "id":"2qh33",
46
+ "description":"***New Rule***: No posts with their sole purpose being to communicate with another redditor. [Example.](http://www.reddit.com/r/funny/comments/lq3uv/a_student_in_a_course_i_teach_is_constantly/) Sorry, you're going to have to use a different form of communication.\n\n---\n\n1. [**New r/Funny Rule**, click here to see.](http://www.reddit.com/r/funny/comments/lqgx7/new_rule_use_your_phone_or_something/)\n\n**Welcome to r/Funny:**\n\nYou may only post if you are funny. \n\nNo rage comics. Go to [/F7U12](http://www.reddit.com/r/fffffffuuuuuuuuuuuu) instead.\n\n**No Memes!** Go to [/AdviceAnimals](/r/adviceanimals) instead.\n\nRehosted webcomics will be removed. Please submit a link to the original comic's site and preferably an imgur link in the comments. [(*)](http://www.reddit.com/r/funny/comments/kqwwx/we_need_to_talk_about_rehosting_wecomics/)\n\nBefore you submit a screenshot of a reddit thread *here*, you might want to check out [r/BestOf](http://www.reddit.com/r/bestof). \n\nNeed more? Check out:\n\n* [humor](http://www.reddit.com/r/humor) for more in-depth stuff\n* [jokes](/r/jokes)\n* [comics](/r/comics)\n* [punny](/r/punny)\n* [Very Punny](/r/verypunny)\n* [lolcats](/r/lolcats)\n* [lol](/r/lol)\n* [TrollingAnimals](/r/TrollingAnimals)\n* [Rage Novels](/r/ragenovels/)\n* [Demotivational](http://www.reddit.com/r/Demotivational)\n* **[misc](/r/misc/)** for anything else\n\nStill need more? See Reddit's [best / worst](http://www.reddit.com/r/AskReddit/comments/8ft5j/tell_me_your_best_worst_joke_reddit/?sort=top) and [offensive](http://www.reddit.com/r/funny/comments/7rxyh/collection_of_totally_offensive_jokes_not_for_the/?sort=top) joke collections (warning: some of those jokes are offensive / nsfw!). \n\n\n------\n\nPlease DO NOT post [personal information](http://www.reddit.com/help/faq#Ispostingpersonalinformationok). This includes anything hosted on Facebook's servers, as they can be traced to the original account holder.\n\n----\n\nIf your submission appears to be banned, please don't just delete it as that makes the filter hate you! Instead please [send us a message](/message/compose?to=%23funny). We'll unban it and it should get better. please allow 10 minutes for the post to appear before messaging moderators\n\n----\n\nCSS - BritishEnglishPolice \u00a92011"
47
+ }
48
+ }
49
+ ],
50
+ "after":"t5_2qq5c",
51
+ "before":null
52
+ }
53
+ }
54
+
55
+ exports.rsp_posts = {
56
+ "kind":"Listing",
57
+ "data":{
58
+ "modhash":"s7069nuzol41d61f1b1ff780c40b025a4848c4b06c6ebaa061",
59
+ "children":[
60
+ {
61
+ "kind":"t3",
62
+ "data":{
63
+ "domain":"perlbuzz.com",
64
+ "media_embed":{
65
+
66
+ },
67
+ "levenshtein":null,
68
+ "subreddit":"programming",
69
+ "selftext_html":null,
70
+ "selftext":"",
71
+ "likes":null,
72
+ "saved":false,
73
+ "id":"ms13h",
74
+ "clicked":false,
75
+ "title":"Finding a lost dog's owner with Perl",
76
+ "media":null,
77
+ "score":426,
78
+ "over_18":false,
79
+ "hidden":false,
80
+ "thumbnail":"",
81
+ "subreddit_id":"t5_2fwo",
82
+ "author_flair_css_class":null,
83
+ "downs":222,
84
+ "is_self":false,
85
+ "permalink":"/r/programming/comments/ms13h/finding_a_lost_dogs_owner_with_perl/",
86
+ "name":"t3_ms13h",
87
+ "created":1322517472.0,
88
+ "url":"http://perlbuzz.com/2011/11/finding-a-lost-dogs-owner-with-perl-and-wwwmechanize.html",
89
+ "author_flair_text":null,
90
+ "author":"mpeters",
91
+ "created_utc":1322492272.0,
92
+ "num_comments":61,
93
+ "ups":648
94
+ }
95
+ },
96
+ {
97
+ "kind":"t3",
98
+ "data":{
99
+ "domain":"elegantcoding.com",
100
+ "media_embed":{
101
+
102
+ },
103
+ "levenshtein":null,
104
+ "subreddit":"programming",
105
+ "selftext_html":null,
106
+ "selftext":"",
107
+ "likes":null,
108
+ "saved":false,
109
+ "id":"msl7x",
110
+ "clicked":false,
111
+ "title":"Eleven equations every Computer Science geeks should know",
112
+ "media":null,
113
+ "score":76,
114
+ "over_18":false,
115
+ "hidden":false,
116
+ "thumbnail":"",
117
+ "subreddit_id":"t5_2fwo",
118
+ "author_flair_css_class":null,
119
+ "downs":41,
120
+ "is_self":false,
121
+ "permalink":"/r/programming/comments/msl7x/eleven_equations_every_computer_science_geeks/",
122
+ "name":"t3_msl7x",
123
+ "created":1322547476.0,
124
+ "url":"http://www.elegantcoding.com/2011/11/eleven-equations-true-computer-science.html",
125
+ "author_flair_text":null,
126
+ "author":"chandershivdasani",
127
+ "created_utc":1322522276.0,
128
+ "num_comments":34,
129
+ "ups":117
130
+ }
131
+ }
132
+ ],
133
+ "after":"t3_mqs0s",
134
+ "before":null
135
+ }
136
+ }
137
+ return
@@ -0,0 +1,45 @@
1
+ describe 'Module Loader Spec', ->
2
+
3
+ beforeEach ->
4
+ modLoader.clearAll()
5
+ return
6
+
7
+ it 'should be defined as a global object', ->
8
+ expect(modLoader).toBeDefined()
9
+ return
10
+
11
+ it 'should be able to define a new module', ->
12
+ modLoader.define 'testmod-1', (require, exports)->
13
+ return
14
+
15
+ expect(modLoader.isDefined('testmod-1')).toBe(true)
16
+ return
17
+
18
+ it 'should be able to define a new module with exports', ->
19
+ modLoader.define 'testmod-1', (require, exports)->
20
+ exports.isLoaded = true
21
+ return
22
+
23
+ exports = modLoader.require 'testmod-1'
24
+ expect(exports).toBeDefined()
25
+ expect(exports.isLoaded).toBe(true)
26
+ return
27
+
28
+ it 'should only load a module once and cache the exports', ->
29
+ numLoaded = 0
30
+ modLoader.define 'testmod-1', (require, exports)->
31
+ numLoaded++
32
+ exports.isLoaded = true
33
+ return
34
+
35
+ exports = modLoader.require 'testmod-1'
36
+ expect(exports).toBeDefined()
37
+ expect(exports.isLoaded).toBe(true)
38
+ expect(numLoaded).toBe(1)
39
+
40
+ exports = modLoader.require 'testmod-1'
41
+ expect(exports).toBeDefined()
42
+ expect(exports.isLoaded).toBe(true)
43
+ expect(numLoaded).toBe(1)
44
+
45
+ return
@@ -0,0 +1,21 @@
1
+ describe 'Properties generator', ->
2
+ Properties = modLoader.require 'helpers/properties'
3
+
4
+ it 'should be able to add properties to a object', ->
5
+ obj = {}
6
+ Properties.add obj,
7
+ val1: {value:'test 1 value',static:true}
8
+ val2: {value: 'test 2 value'}
9
+
10
+ expect(obj.__auto__val1).toBe('test 1 value')
11
+ expect(obj.val1()).toBe('test 1 value')
12
+ expect(obj.__auto__val2).toBe('test 2 value')
13
+ expect(obj.val2()).toBe('test 2 value')
14
+
15
+ obj.val1('failed value')
16
+ expect(obj.val1()).toBe('test 1 value')
17
+
18
+ obj.val2('failed value 2')
19
+ expect(obj.val2()).toBe('failed value 2')
20
+ return
21
+ return
@@ -0,0 +1,143 @@
1
+
2
+ describe 'RedditAdapter Testing', ->
3
+
4
+ RedditAdapter = modLoader.require('adapters/reddit')
5
+ SubReddit = modLoader.require('models/sub_reddit')
6
+ Post = modLoader.require('models/post')
7
+ Comment = modLoader.require('models/comment')
8
+
9
+ logger = modLoader.require('libs/logger').getInstance('RedditAdapter')
10
+ mocks = modLoader.require('mocks')
11
+
12
+ it 'should be able to detect a user is not signed in', ->
13
+ adapter = RedditAdapter.create(mocks.ajax, logger)
14
+ expect(adapter.isLoggedIn()).toBe(false)
15
+ return
16
+
17
+ it 'should be able to sign a user in', ->
18
+ ajaxStub = jasmine.createSpy('AJAX Login Success').andCallFake (request) ->
19
+ expect(request.url).toBe('https://ssl.reddit.com/api/login/user')
20
+ expect(request.dataType).toBe('json')
21
+ expect(request.type).toBe('POST')
22
+ expect(request.data.passwd).toBe('password')
23
+ expect(request.data.user).toBe('user')
24
+ request.success({uh:'valid id'})
25
+ return
26
+
27
+ signedIn = null
28
+ adapter = RedditAdapter.create(ajaxStub, logger)
29
+ adapter.loginUser('user','password')
30
+ .done(
31
+ (response)->
32
+ signedIn = true
33
+ return
34
+ )
35
+
36
+ waitsFor ->
37
+ return signedIn
38
+ ,'log in user', 100
39
+
40
+ runs ->
41
+ expect(adapter.isLoggedIn()).toBe(true)
42
+ return
43
+
44
+ return
45
+
46
+ it 'should be able to get a list of all reddits by type', ->
47
+ ajaxStub = jasmine.createSpy('AJAX List Reddits').andCallFake (request) ->
48
+ expect(request.url).toBe('http://www.reddit.com/reddits/popular/.json')
49
+ expect(request.type).toBe('GET')
50
+ expect(request.data.after).toBe(null)
51
+ request.success(mocks.rsp_reddits)
52
+ return
53
+
54
+ rspData = null
55
+ adapter = RedditAdapter.create(ajaxStub, logger)
56
+ adapter.listAllSubReddits(RedditAdapter.PAGINATE_TYPE.AFTER, null, RedditAdapter.REDDITS_SORT_TYPES.POPULAR)
57
+ .done(
58
+ (response)->
59
+ rspData = response
60
+ return
61
+ )
62
+
63
+ waitsFor ->
64
+ return rspData
65
+ ,'list sub reddits', 100
66
+
67
+ runs ->
68
+ expect(rspData.data.length).toBe(2)
69
+ expect(rspData.data[0].title()).toBe('Pictures and Images')
70
+ expect(rspData.data[1].title()).toBe('funny')
71
+ expect(rspData.before).toBe(null)
72
+ expect(rspData.after).toBe('t5_2qq5c')
73
+ return
74
+
75
+ return
76
+
77
+ it 'should be able to get a list of a users subscribed reddits', ->
78
+ ajaxStub = jasmine.createSpy('AJAX List Subscribed Reddits').andCallFake (request) ->
79
+ expect(request.url).toBe('http://www.reddit.com/reddits/mine/subscriber')
80
+ expect(request.type).toBe('POST')
81
+ expect(request.data.after).toBe(null)
82
+ expect(request.data.uh).toBe('valid user')
83
+ request.success(mocks.rsp_reddits)
84
+ return
85
+
86
+ rspData = null
87
+ adapter = RedditAdapter.create(ajaxStub, logger)
88
+ adapter.userSession('valid user')
89
+ adapter.listUserSubReddits(RedditAdapter.PAGINATE_TYPE.AFTER, null, RedditAdapter.OWN_REDDITS_TYPES.SUB)
90
+ .done(
91
+ (response)->
92
+ rspData = response
93
+ return
94
+ )
95
+
96
+ waitsFor ->
97
+ return rspData
98
+ ,'list sub reddits', 100
99
+
100
+ runs ->
101
+ expect(rspData.data.length).toBe(2)
102
+ expect(rspData.data[0].title()).toBe('Pictures and Images')
103
+ expect(rspData.data[1].title()).toBe('funny')
104
+ expect(rspData.before).toBe(null)
105
+ expect(rspData.after).toBe('t5_2qq5c')
106
+ return
107
+
108
+ return
109
+
110
+ it 'should be able to get a list of posts from a subreddit ', ->
111
+ ajaxStub = jasmine.createSpy('AJAX List sub reddit posts').andCallFake (request) ->
112
+ expect(request.url).toBe('http://www.reddit.com/r/programming/hot/.json')
113
+ expect(request.type).toBe('GET')
114
+ expect(request.data.after).toBe(null)
115
+ request.success(mocks.rsp_posts)
116
+ return
117
+
118
+ rspData = null
119
+ subReddit = SubReddit.create(mocks.model_subreddit)
120
+ adapter = RedditAdapter.create(ajaxStub, logger)
121
+ adapter.listSubRedditPost(RedditAdapter.PAGINATE_TYPE.AFTER, null, subReddit, RedditAdapter.POST_SORT_TYPES.HOT)
122
+ .done(
123
+ (response)->
124
+ rspData = response
125
+ return
126
+ )
127
+
128
+ waitsFor ->
129
+ return rspData
130
+ ,'list sub reddits', 100
131
+
132
+ runs ->
133
+ expect(rspData.data.length).toBe(2)
134
+ expect(rspData.data[0].title()).toBe('Finding a lost dog\'s owner with Perl')
135
+ expect(rspData.data[1].title()).toBe('Eleven equations every Computer Science geeks should know')
136
+ expect(rspData.before).toBe(null)
137
+ expect(rspData.after).toBe('t3_mqs0s')
138
+ return
139
+
140
+ return
141
+
142
+
143
+ return
@@ -0,0 +1,630 @@
1
+ /**********************************************************
2
+ GENERAL UI ELEMENTS
3
+ **********************************************************/
4
+
5
+ * {
6
+ -webkit-user-select:none; /* Prevent copy paste for all elements except text fields */
7
+ -webkit-tap-highlight-color:rgba(255, 255, 255, 0); /* set highlight color for user interaction */
8
+ }
9
+
10
+ input,textarea { -webkit-user-select:text; } /* allow users to select text that appears in input fields */
11
+
12
+ * {
13
+ margin:0;
14
+ padding:0;
15
+ } /* Remove default padding and margins for all elements */
16
+
17
+ img { border:none; } /* Remove default borders for images */
18
+
19
+ body {
20
+ overflow-x:hidden;
21
+ -webkit-text-size-adjust:none;
22
+ font-family:Arial, Helvetica, sans-serif;
23
+ color:#fff;
24
+ font-size:14px;
25
+ background:rgba(19,29,38,1); /* primary background color */
26
+
27
+
28
+ display: -webkit-box;
29
+ /* We want to layout our first container vertically */
30
+ -webkit-box-orient: vertical;
31
+ /* we want our child elements to stretch to fit the container */
32
+ -webkit-box-align:stretch;
33
+
34
+ } /* General styles that apply to elements not contained within other classes and styles */
35
+
36
+ p {
37
+ color:#fff;
38
+ font-family:Arial, Helvetica, sans-serif;
39
+ font-size:14px;
40
+ line-height:18px;
41
+ background:#131d26;
42
+ padding:16px;
43
+ -webkit-box-shadow:rgba(0,0,0,0.5) 0px 0px 24px inset; box-shadow:rgba(0,0,0,0.5) 0px 0px 24px inset; /* Applies an inner shadow to the text area */
44
+ } /* Paragraph class used for text areas. */
45
+
46
+ .modal {
47
+ z-index:9999;
48
+ position:absolute;
49
+ background:inherit;
50
+ overflow:hidden;
51
+ left:0px;
52
+ top:0px;
53
+ height:100%;
54
+ width:100%;
55
+ display:none;
56
+ } /* Sets up styles for modal panels, which appear above all other UI elements */
57
+
58
+ .horzRule {
59
+ position:relative;
60
+ display:block;
61
+ background-image:-webkit-gradient(linear, left top, right top, from(rgba(61,61,61,1)), to(rgba(61,61,61,1)), color-stop(.3,#999), color-stop(.7,#999));
62
+ width:100%; height:1px;
63
+ } /* Horizontal line. */
64
+
65
+ .jqmScrollbar { background:white !important; } /* Sets the color of the scrollbar */
66
+
67
+
68
+
69
+ /**********************************************************
70
+ CUSTOM FONT SETUP
71
+ **********************************************************/
72
+ /* appMobi has licensed Eurostile web font usage. Unless you have purchased a license for Eurostile, you may NOT legally use these font files. */
73
+ /* There are many free use web fonts available from Font Squirrel, Google Web Fonts and other outlets */
74
+
75
+
76
+
77
+
78
+
79
+ /**********************************************************
80
+ header
81
+ **********************************************************/
82
+ body > #header {
83
+ display:block;
84
+ z-index:250;
85
+ -webkit-box-sizing:border-box; box-sizing:border-box;
86
+ height:48px;
87
+ width:100%;
88
+ background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(16,25,33,1)), to(rgba(14,23,32,1)), color-stop(.5, rgba(27,36,46,1)), color-stop(.5, rgba(14,23,32,1)));
89
+ -webkit-box-shadow:0px 0px 24px rgba(0,0,0,0.8); box-shadow:0px 0px 24px rgba(0,0,0,0.8);
90
+ } /* This is masthead bar that appears at the top of the UI */
91
+
92
+ #header > h1 {
93
+ position:absolute;
94
+ overflow:hidden;
95
+ left:45%;
96
+ margin:1px 0px 0px -75px;
97
+ height:48px; width:150px;
98
+ font-family:'Eurostile-Black', Eurostile, Helvetica, Arial, sans-serif;
99
+ font-weight:normal;
100
+ font-size:24px;
101
+ line-height:48px;
102
+ text-shadow:rgba(0,0,0,0.8) 0px -1px 0px 1px;
103
+ text-align:center;
104
+ text-overflow:ellipsis;
105
+ white-space:nowrap;
106
+ color:#fff;
107
+ } /* This is text that appears in the header at the top of the screen */
108
+
109
+ body[orient="landscape"] > #header > h1 {
110
+ margin-left:-125px;
111
+ width:250px;
112
+ } /* Updates the available text area and positioning when the screen is held in landscape orientation. */
113
+
114
+
115
+
116
+ /**********************************************************
117
+ BUTTON STYLES
118
+ **********************************************************/
119
+ #backButton {
120
+ display:block;
121
+ position:absolute;
122
+ left:0px;
123
+ top:0px;
124
+ max-width:50px;
125
+ text-overflow:ellipsis;
126
+ } /* Sets up positioning of the back button which appears in the header */
127
+
128
+ #backButton > div {
129
+ max-width:50px;
130
+ overflow:hidden;
131
+ text-overflow:ellipsis;
132
+ } /* sets up sizing and handling of excess text for the type in the back button */
133
+
134
+ .button {
135
+ color:#333;
136
+ cursor:pointer;
137
+ display:inline-block;
138
+ font-weight:bold;
139
+ font-size:14px;
140
+ line-height:36px;
141
+ position:relative;
142
+ text-decoration:none;
143
+ text-align:center;
144
+ text-shadow:#fff 0 1px 0;
145
+ height:36px; min-width:40px;
146
+ padding:0px 8px;
147
+ margin-top:6px; margin-left:6px;
148
+ text-overflow:ellipsis;
149
+ -webkit-border-radius:6px; border-radius:6px;
150
+ background-image:-webkit-gradient(linear, left top, left bottom, from(#fff), to(#999), color-stop(.5,#fff), color-stop(.5,#ccc)); background-image:linear-gradient(left top, left bottom, from(#fff), to(#999), color-stop(.5,#fff), color-stop(.5,#ccc));
151
+ } /* Styling for CSS-generated buttons, including the back button. These buttons can bue used anywhere in the UI. */
152
+
153
+ .button.pressed {
154
+ color:#fff;
155
+ text-shadow:#2e4987 0 1px 0;
156
+ background-color:#5884d6;
157
+ border-color:#7488b8;
158
+ background-image:-webkit-gradient(linear,left top,left bottom, color-stop(0.01, #eee), color-stop(0.05, #709de7), color-stop(0.70, #5884d6), color-stop(1, #4470ca));
159
+ } /* behavior of button for touch interaction */
160
+
161
+ .modalbutton {
162
+ position:absolute;
163
+ top:0px;
164
+ right:5px;
165
+ height:32px;
166
+ width:58px;
167
+ line-height:32px;
168
+ }
169
+
170
+ a.customBackButton {
171
+ float:right;
172
+ display:block;
173
+ width:44px; height:44px;
174
+ background:url("images/back.png"), -webkit-gradient(linear, left top, left bottom, from(#161F28), to(#1D2730), color-stop(.5,#161F28), color-stop(.5,#1D2730));
175
+ background-position:0px 0px, left top;
176
+ background-repeat:no-repeat;
177
+ border-top-left-radius:6px; border-bottom-left-radius:6px; -webkit-border-top-left-radius:6px; -webkit-border-top-left-radius:6px;
178
+ -webkit-box-shadow:0px 0px 24px rgba(0,0,0,0.8); box-shadow:0px 0px 24px rgba(0,0,0,0.8);
179
+ margin-top:2px;
180
+ } /* This is the custom, graphical button shown in JQMobi by default */
181
+
182
+ a.customBackButton.press {
183
+ float:right;
184
+ display:block;
185
+ width:44px; height:44px;
186
+ background:url("images/back.png"), -webkit-gradient(linear, left top, left bottom, from(rgba(56,65,74,1)), to(rgba(33,38,43,1)), color-stop(.5,rgba(56,65,74,1)), color-stop(.5,rgba(33,38,43,1)));
187
+ background-position:0px -44px, left top;
188
+ background-repeat:no-repeat;
189
+ border-top-left-radius:6px; border-bottom-left-radius:6px; -webkit-border-top-left-radius:6px; -webkit-border-top-left-radius:6px;
190
+ -webkit-box-shadow:0px 0px 24px rgba(0,0,0,0.8); box-shadow:0px 0px 24px rgba(0,0,0,0.8);
191
+ margin-top:2px;
192
+ }
193
+
194
+
195
+
196
+ /**********************************************************
197
+ CONTENT AREA
198
+ **********************************************************/
199
+ #content{
200
+ z-index:180;
201
+ display:block;
202
+ position:relative;
203
+ } /* Accounts for positioning of the content area, which is everything below the header and above the navbar. */
204
+
205
+ .panel {
206
+ z-index:180;
207
+ width:100%;
208
+ height:100%;
209
+ display:none;
210
+ position:absolute; top:0px; left:-100%;
211
+ overflow:hidden;
212
+ background:rgba(19,29,38,1);
213
+ } /* This class is applied to the divs that contain the various "views" or pages of the app. */
214
+
215
+
216
+
217
+ /**********************************************************
218
+ TOOL BAR
219
+ **********************************************************/
220
+ /* Tool bar appears locked to the bottom of the screen. It is the primary navigation. can contain text or graphical navigation */
221
+ #navbar {
222
+ z-index:1000;
223
+ text-align:center;
224
+ width:100%; height:62px; padding:0px 1px;
225
+ background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(16,25,33,1)), to(rgba(14,23,32,1)), color-stop(.5, rgba(27,36,46,1)), color-stop(.5, rgba(14,23,32,1)));
226
+ -webkit-box-shadow:0px 0px 24px rgba(0,0,0,0.8); box-shadow:0px 0px 24px rgba(0,0,0,0.8);
227
+ }
228
+
229
+ #navbar a {
230
+
231
+ height:60px;
232
+ overflow:hidden;
233
+ display:inline-block;
234
+ font-family:Helvetica, Arial, sans-serif;
235
+ font-weight:bold;
236
+ font-size:12px;
237
+ text-decoration:none;
238
+ color:#a7a7a7;
239
+ text-align:center;
240
+ text-shadow:rgba(10,12,20,.9) 0px -1px 1px;
241
+ margin: 0px auto;
242
+ background-image:url('images/nav_icons.png');
243
+ width:62px;
244
+ line-height:100px;
245
+ }
246
+
247
+ #navbar a:active, #navbar a:focus, #navbar a:active:focus, #navbar .selected{
248
+ display:inline-block;
249
+ font-family:Helvetica, Arial, sans-serif;
250
+ font-weight:bold;
251
+ color:#fff !important;
252
+ background-image:url('images/nav_icons.png'), -webkit-gradient(linear, left top, left bottom, from(#000), to(#000), color-stop(.5,#000), color-stop(.5,rgba(15,22,29,1)));
253
+
254
+ }
255
+
256
+
257
+ /* CUSTOM NAVBAR */
258
+ #navbar a:not(:last-of-type):after {
259
+ display: block;
260
+ content: "";
261
+ width: 1px;
262
+ height: 60px;
263
+ background: url('images/vert_divider.png') top right repeat-y;
264
+ float:right;
265
+ }
266
+ .navbar_home {
267
+
268
+ }
269
+ .navbar_js {
270
+ background-position:-62px 0px;
271
+ }
272
+ .navbar_ui {
273
+ background-position:-124px 0px;
274
+ }
275
+ .navbar_plugins {
276
+ background-position:-186px 0px;
277
+ }
278
+
279
+
280
+
281
+ /**********************************************************
282
+ UL > LI
283
+ **********************************************************/
284
+ /* The unordered list/list item classes are the basis of the secondary navigation used in JQ.Mobi: the stacked, listed menu system. */
285
+
286
+ ul {
287
+ margin:0px;
288
+ padding:0px;
289
+ }
290
+
291
+ ul > li {
292
+ display:block;
293
+ width:100%; height:48px;
294
+ list-style:none;
295
+ background:#39424b;
296
+ } /* A plain, non-interactive list item--best suited to a heading. */
297
+
298
+ ul > li > a {
299
+ display:block;
300
+ width:100%; height:48px;
301
+ font-family:'Eurostile-Bold', Eurostile, Helvetica, Arial, sans-serif;
302
+ font-weight:bold;
303
+ font-size:18px;
304
+ line-height:48px;
305
+ text-decoration:none;
306
+ border-bottom:1px solid black;
307
+ color:#fff;
308
+ padding-left:8px;
309
+ padding-right:-80px;
310
+ } /* A touchable, interactive list item. */
311
+
312
+ ul > li > a:after {
313
+ content:">";
314
+ position:absolute;
315
+ right:15px;
316
+ }
317
+
318
+ ul > li > a[selected], ul > li > a:active {
319
+ color:#fff !important;
320
+
321
+ } /* A selected and active states for interactive list items. */
322
+
323
+ ul > li.group {
324
+ position:relative;
325
+ top:-1px;
326
+ margin-bottom:-2px;
327
+ border-top:1px solid #7d7d7d;
328
+ border-bottom:1px solid #999999;
329
+ padding:1px 10px;
330
+ background-image:-webkit-gradient(linear, left bottom, left top, color-stop(0.09, rgb(125,125,125)), color-stop(0.49, rgb(153,153,153)), color-stop(0.81, rgb(153,153,153)));
331
+ font-size:17px;
332
+ font-weight:bold;
333
+ text-shadow:rgba(0, 0, 0, 0.4) 0px 1px 0px;
334
+ color:#fff;
335
+ }
336
+
337
+ ul > li.group:first-child {
338
+ top:0;
339
+ }
340
+
341
+ h2 {
342
+ display:block;
343
+ width:95%; height:34px;
344
+ font-family:'Eurostile-Bold', Eurostile, Helvetica, Arial, sans-serif;
345
+ font-weight:bold;
346
+ font-size:18px;
347
+ line-height:34px;
348
+ padding: 0px 8px 0px 8px;
349
+ color:#fff;
350
+ text-shadow:rgba(0,0,0,.9) 0px -1px 1px;
351
+ background:#39424b;
352
+ } /* Header class used for non-navigable header bars (h1 is reserved for the header) */
353
+
354
+ .collapsed { background:url('images/expand.png') right center no-repeat; }
355
+ .expanded { background:url('images/collapse.png') right center no-repeat; } /* Use these classes in cooperation with LI elements for collapsible content. */
356
+
357
+
358
+
359
+ /**********************************************************
360
+ MASK
361
+ **********************************************************/
362
+
363
+ /**********************************************************
364
+ UI
365
+ **********************************************************/
366
+ .ui-icon {
367
+ background: #666;
368
+ background: rgba(0,0,0,.4);
369
+ background-repeat: no-repeat;
370
+ border-radius: 9px;
371
+ }
372
+
373
+ .ui-loader { display: none; position: absolute; opacity: .85; z-index: 100; left: 50%; width: 200px; margin-left: -130px; margin-top: -35px; padding: 10px 30px; background: #666;background:rgba(0,0,0,.4);border-radius:9px;}
374
+ .ui-loader h1 { font-size: 15px; text-align: center; }
375
+ .ui-loader .ui-icon { position: static; display: block; opacity: .9; margin: 0 auto; width: 35px; height: 35px; background-color: transparent; }
376
+
377
+ .spin {
378
+ -webkit-transform: rotate(360deg);
379
+ -webkit-animation-name: spin;
380
+ -webkit-animation-duration: 1s;
381
+ -webkit-animation-iteration-count: infinite;
382
+ }
383
+ @-webkit-keyframes spin {
384
+ from {-webkit-transform: rotate(0deg);}
385
+ to {-webkit-transform: rotate(360deg);}
386
+ }
387
+
388
+ .ui-icon-loading {
389
+ background-image: url(images/ajax-loader.png);
390
+ width: 40px;
391
+ height: 40px;
392
+ border-radius: 20px;
393
+ background-size: 35px 35px;
394
+ }
395
+
396
+ .ui-corner-all {
397
+ border-radius: .6em;
398
+ }
399
+ #jQui_mask {position:absolute;top:45%;}
400
+
401
+
402
+ /**********************************************************
403
+ FORM ELEMENTS
404
+ **********************************************************/
405
+
406
+ * { -webkit-box-sizing:border-box; box-sizing:border-box; }
407
+
408
+ fieldset h4 {
409
+ text-align:left;
410
+ font-family:'Eurostile-Bold', Eurostile, Helvetica, Arial, sans-serif;
411
+ color:#a8b4bb;
412
+ font-weight:bold;
413
+ font-size:18px;
414
+ line-height:21px;
415
+ margin-bottom:-8px; margin-top:8px;
416
+ text-shadow:1px 1px 3px rgba(0, 0, 0, 0.9);
417
+ } /* Style for subhead for a group of labels/inputs within a fieldset. */
418
+
419
+
420
+ fieldset {
421
+ margin:12px 8px;
422
+ padding:12px 18px 12px 18px;
423
+ -webkit-border-radius:5px;
424
+ border-radius:5px;
425
+ border:1px solid #595d61;
426
+ outline:0;
427
+ width:95%;
428
+ background:url('images/stripe_bg.png') repeat;
429
+ } /* Styles the border line, background image and spacing for fieldsets. */
430
+
431
+ fieldset p {
432
+ display:block;
433
+ position:relative;
434
+ overflow:hidden;
435
+ padding:0px;
436
+ padding-bottom:8px;
437
+ padding-top:8px;
438
+ font-family:Arial, Helvetica, sans-serif;
439
+ font-size:14px;
440
+ line-height:10px;
441
+ background:transparent;
442
+ height:37px !important;
443
+ -webkit-box-shadow:none;
444
+ } /* The paragraph within a fieldset is used as a wrapper to help manage the replacement of native input elements. */
445
+
446
+ legend {
447
+ margin:0;
448
+ font-family:'Eurostile-Bold', Eurostile, Helvetica, Arial, sans-serif;
449
+ font-size:18px;
450
+ font-weight:bold;
451
+ overflow:hidden;
452
+ color:#ccc;
453
+ text-transform:uppercase;
454
+ text-shadow:1px 1px 3px rgba(0, 0, 0, 0.9);
455
+ } /* This is the name that appears at the top left of the fieldset. */
456
+
457
+ textarea.jq-ui-forms {
458
+ display:block;
459
+ margin-top:4px; margin-bottom:18px;
460
+ padding:8px;
461
+ border:solid 1px #999;
462
+ outline:0;
463
+ color:#fff;
464
+ background:#595D61;
465
+ -webkit-border-radius:6px; border-radius:6px;
466
+ -webkit-box-shadow:inset 2px 2px 6px rgba(0,0,0,.5); box-shadow:inset 2px 2px 6px rgba(0,0,0,.5);
467
+ width:266px;
468
+ height:150px;
469
+ line-height:120%;
470
+ } /* These properties determine the look of textarea inputs. */
471
+
472
+
473
+ input.jq-ui-forms {
474
+
475
+ display:inline-block;
476
+ width:200px;
477
+ margin-top:4px; margin-bottom:12px;
478
+ padding:8px;
479
+ border:solid 1px #999;
480
+ outline:0;
481
+ color:#fff;
482
+ background:#595D61;
483
+ -webkit-border-radius:6px; border-radius:6px;
484
+ -webkit-box-shadow:inset 2px 2px 6px rgba(0,0,0,.5); box-shadow:inset 2px 2px 6px rgba(0,0,0,.5);
485
+ } /* These properties combine to create the look of the input fields. */
486
+
487
+
488
+
489
+ input.jq-ui-forms:hover, textarea.jq-ui-forms:hover, input.jq-ui-forms:focus, textarea.jq-ui-forms:focus { border-color:#ccc; } /* Changes the border color of the input field while active. */
490
+
491
+
492
+ input.jq-ui-forms[type=checkbox] ,input.jq-ui-forms[type=radio] {
493
+ position:absolute;
494
+ left:0;
495
+ opacity:0;
496
+ margin-bottom:30px;
497
+ } /* Blocks rendering of the native radio controls. */
498
+
499
+ input.jq-ui-forms[type=checkbox] + label,input.jq-ui-forms[type=radio] + label {
500
+
501
+ float:left;
502
+ font-size:15px;
503
+ font-weight:bold;
504
+ line-height:26px; /* changing this value will change the vertical relationship to the radios & checkboxes. */
505
+ margin-left:10px;
506
+ padding-left:30px;
507
+ background:url('./images/custom_inputs.png') 0 0px no-repeat;
508
+ background-repeat:none;
509
+ height:25px;
510
+
511
+ } /* Styling for the labels. */
512
+
513
+
514
+ /* Following block of paragraph classes sets up the usage of the custom radio and checkbox graphics. */
515
+
516
+
517
+ input.jq-ui-forms[type=radio] + label { background-position:0 -225px; }
518
+ input.jq-ui-forms[type=checkbox] + label { background-position:0 -25px; }
519
+
520
+ /* Styles for "checked." */
521
+ input.jq-ui-forms[type=radio]:checked + label { background-position:0 -300px; }
522
+ input.jq-ui-forms[type=radio]:hover:checked + label,
523
+ input.jq-ui-forms[type=radio]:focus:checked + label,
524
+ input.jq-ui-forms[type=radio]:checked + label:hover,
525
+ input.jq-ui-forms[type=radio]:focus:checked + label { background-position:0 -300px; }
526
+
527
+ input.jq-ui-forms[type=checkbox]:checked + label { background-position:0 -100px; }
528
+ input.jq-ui-forms[type=checkbox]:hover:checked + label,
529
+ input.jq-ui-forms[type=checkbox]:focus:checked + label,
530
+ input.jq-ui-forms[type=checkbox]:checked + label:hover,
531
+ input.jq-ui-forms[type=checkbox]:focus:checked + label { background-position:0 -100px; }
532
+
533
+
534
+ /* Styles for "hover/focus." */
535
+ input.jq-ui-forms[type=checkbox]:hover + label,
536
+ input.jq-ui-forms[type=checkbox]:focus + label,
537
+ input.jq-ui-forms[type=checkbox] + label:hover { background-position:0 -0x; }
538
+
539
+ input.jq-ui-forms[type=radio]:hover + label,
540
+ input.jq-ui-forms[type=radio]:focus + label,
541
+ input.jq-ui-forms[type=radio] + label:hover { background-position:0 -200px; }
542
+
543
+ /* Styles for "active." */
544
+ input.jq-ui-forms[type=checkbox]:active + label,
545
+ input.jq-ui-forms[type=checkbox] + label:hover:active { background-position:0 -0px; }
546
+
547
+ input.jq-ui-forms[type=radio]:active + label,
548
+ input.jq-ui-forms[type=radio] + label:hover:active { background-position:0 -200px; }
549
+
550
+
551
+ input.jq-ui-forms[type=checkbox]:active:checked + label,
552
+ input.jq-ui-forms[type=checkbox]:checked + label:hover:active { background-position:0 -100px; }
553
+
554
+ input.jq-ui-forms[type=radio]:active:checked + label,
555
+ input.jq-ui-forms[type=radio]:checked + label:hover:active { background-position:0 -300px; }
556
+
557
+ /* Styles for "disabled." */
558
+ input.jq-ui-forms[type=checkbox]:disabled + label,
559
+ input.jq-ui-forms[type=checkbox]:hover:disabled + label,
560
+ input.jq-ui-forms[type=checkbox]:focus:disabled + label,
561
+ input.jq-ui-forms[type=checkbox]:disabled + label:hover,
562
+ input.jq-ui-forms[type=checkbox]:disabled + label:hover:active { background-position:0 -175px; opacity:.5 !important; }
563
+
564
+ input.jq-ui-forms[type=radio]:disabled + label,
565
+ input.jq-ui-forms[type=radio]:hover:disabled + label,
566
+ input.jq-ui-forms[type=radio]:focus:disabled + label,
567
+ input.jq-ui-forms[type=radio]:disabled + label:hover,
568
+ input.jq-ui-forms[type=radio]:disabled + label:hover:active { background-position:0 -250px; opacity:.5 !important; }
569
+
570
+ input.jq-ui-forms[type=checkbox]:disabled:checked + label,
571
+ input.jq-ui-forms[type=checkbox]:hover:disabled:checked + label,
572
+ input.jq-ui-forms[type=checkbox]:focus:disabled:checked + label,
573
+ input.jq-ui-forms[type=checkbox]:disabled:checked + label:hover,
574
+ input.jq-ui-forms[type=checkbox]:disabled:checked + label:hover:active { background-position:0 -200px; opacity:.5 !important; }
575
+
576
+ input.jq-ui-forms[type=radio]:disabled:checked + label,
577
+ input.jq-ui-forms[type=radio]:hover:disabled:checked + label,
578
+ input.jq-ui-forms[type=radio]:focus:disabled:checked + label,
579
+ input.jq-ui-forms[type=radio]:disabled:checked + label:hover,
580
+ input.jq-ui-forms[type=radio]:disabled:checked + label:hover:active { background-position:0 -375px; opacity:.5 !important; }
581
+
582
+
583
+
584
+
585
+ /******** slider controls */
586
+ input.jq-ui-slider {
587
+ position:absolute;
588
+ left:0;
589
+ opacity:0;
590
+ } /* Blocks rendering of the native radio controls. */
591
+
592
+
593
+ input.jq-ui-slider + label {
594
+
595
+ float:left;
596
+ font-size:15px;
597
+ font-weight:normal;
598
+ line-height:108%; /* changing this value will change the vertical relationship to the radios & checkboxes. */
599
+ margin-left:10px;
600
+ padding-left:57px;
601
+ color:#fff;
602
+ background:url('images/Off-On_Slider.png') 0 0px no-repeat;
603
+ height:16px;
604
+ width:57px;
605
+ display:inline-block;
606
+ -webkit-transition: all 0.3s ease-in-out;
607
+
608
+ }
609
+ input.jq-ui-forms[type=radio]:active:checked + label,
610
+ input.jq-ui-forms[type=checkbox]:active:checked + label,
611
+ input.jq-ui-forms[type=radio]:active + label,
612
+ input.jq-ui-forms[type=checkbox]:active + label,
613
+ input.jq-ui-slider[type=checkbox]:checked + label ,
614
+ input.jq-ui-slider[type=radio]:checked + label
615
+ { background-position:-28px 0px; }
616
+
617
+ input.jq-ui-slider[type=radio]:disabled:checked + label,
618
+ input.jq-ui-slider[type=radio]:focus:disabled:checked + label,
619
+ input.jq-ui-slider[type=checkbox]:disabled:checked + label,
620
+ input.jq-ui-slider[type=checkbox]:focus:disabled:checked + label
621
+ { background-position:-28px 0px; opacity:.7 !important;}
622
+
623
+ /* Styles for "disabled." */
624
+ input.jq-ui-slider[type=checkbox]:disabled + label,
625
+ input.jq-ui-slider[type=checkbox]:focus:disabled + label,
626
+ input.jq-ui-slider[type=radio]:disabled + label,
627
+ input.jq-ui-slider[type=radio]:focus:disabled + label
628
+ { background-position:0 0; opacity:.7 !important; }
629
+
630
+