muck-comments 0.1.20 → 0.1.21

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 (59) hide show
  1. data/VERSION +1 -1
  2. data/lib/active_record/acts/muck_comment.rb +5 -28
  3. data/lib/acts_as_commentable_with_threading.rb +2 -31
  4. data/muck-comments.gemspec +37 -4
  5. data/test/rails_root/config/database.yml +15 -18
  6. data/test/rails_root/db/migrate/20100206000906_remove_name_fields.rb +15 -0
  7. data/test/rails_root/public/images/fancybox/blank.gif +0 -0
  8. data/test/rails_root/public/images/fancybox/fancy_close.png +0 -0
  9. data/test/rails_root/public/images/fancybox/fancy_loading.png +0 -0
  10. data/test/rails_root/public/images/fancybox/fancy_nav_left.png +0 -0
  11. data/test/rails_root/public/images/fancybox/fancy_nav_right.png +0 -0
  12. data/test/rails_root/public/images/fancybox/fancy_shadow_e.png +0 -0
  13. data/test/rails_root/public/images/fancybox/fancy_shadow_n.png +0 -0
  14. data/test/rails_root/public/images/fancybox/fancy_shadow_ne.png +0 -0
  15. data/test/rails_root/public/images/fancybox/fancy_shadow_nw.png +0 -0
  16. data/test/rails_root/public/images/fancybox/fancy_shadow_s.png +0 -0
  17. data/test/rails_root/public/images/fancybox/fancy_shadow_se.png +0 -0
  18. data/test/rails_root/public/images/fancybox/fancy_shadow_sw.png +0 -0
  19. data/test/rails_root/public/images/fancybox/fancy_shadow_w.png +0 -0
  20. data/test/rails_root/public/images/fancybox/fancy_title_left.png +0 -0
  21. data/test/rails_root/public/images/fancybox/fancy_title_main.png +0 -0
  22. data/test/rails_root/public/images/fancybox/fancy_title_over.png +0 -0
  23. data/test/rails_root/public/images/fancybox/fancy_title_right.png +0 -0
  24. data/test/rails_root/public/images/fancybox/fancybox-x.png +0 -0
  25. data/test/rails_root/public/images/fancybox/fancybox-y.png +0 -0
  26. data/test/rails_root/public/images/fancybox/fancybox.png +0 -0
  27. data/test/rails_root/public/images/icon_no.gif +0 -0
  28. data/test/rails_root/public/images/icon_success.gif +0 -0
  29. data/test/rails_root/public/javascripts/jquery/fg.menu.js +517 -0
  30. data/test/rails_root/public/javascripts/jquery/jquery-ui.js +862 -123
  31. data/test/rails_root/public/javascripts/jquery/jquery.easing.js +46 -1
  32. data/test/rails_root/public/javascripts/jquery/jquery.fancybox.js +34 -6
  33. data/test/rails_root/public/javascripts/jquery/jquery.form.js +45 -30
  34. data/test/rails_root/public/javascripts/jquery/jquery.js +150 -15
  35. data/test/rails_root/public/javascripts/jquery/jquery.mousewheel.js +13 -0
  36. data/test/rails_root/public/javascripts/jquery/jquery.timers.js +138 -0
  37. data/test/rails_root/public/javascripts/muck-countries.js +1 -1
  38. data/test/rails_root/public/javascripts/muck-src.js +147 -0
  39. data/test/rails_root/public/javascripts/muck-users.js +6 -0
  40. data/test/rails_root/public/javascripts/muck.js +5 -91
  41. data/test/rails_root/public/javascripts/muck_admin.js +13 -0
  42. data/test/rails_root/public/stylesheets/admin.css +22 -0
  43. data/test/rails_root/public/stylesheets/fgmenu/fg.menu.css +114 -0
  44. data/test/rails_root/public/stylesheets/flick/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  45. data/test/rails_root/public/stylesheets/flick/images/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  46. data/test/rails_root/public/stylesheets/flick/images/ui-bg_flat_55_ffffff_40x100.png +0 -0
  47. data/test/rails_root/public/stylesheets/flick/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  48. data/test/rails_root/public/stylesheets/flick/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  49. data/test/rails_root/public/stylesheets/flick/images/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
  50. data/test/rails_root/public/stylesheets/flick/images/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
  51. data/test/rails_root/public/stylesheets/flick/images/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
  52. data/test/rails_root/public/stylesheets/flick/images/ui-icons_0073ea_256x240.png +0 -0
  53. data/test/rails_root/public/stylesheets/flick/images/ui-icons_454545_256x240.png +0 -0
  54. data/test/rails_root/public/stylesheets/flick/images/ui-icons_666666_256x240.png +0 -0
  55. data/test/rails_root/public/stylesheets/flick/images/ui-icons_ff0084_256x240.png +0 -0
  56. data/test/rails_root/public/stylesheets/flick/images/ui-icons_ffffff_256x240.png +0 -0
  57. data/test/rails_root/public/stylesheets/flick/jquery-ui-1.8.1.custom.css +486 -0
  58. data/test/rails_root/public/stylesheets/jquery/jquery.fancybox.css +77 -38
  59. metadata +50 -4
@@ -0,0 +1,138 @@
1
+ /**
2
+ * jQuery.timers - Timer abstractions for jQuery
3
+ * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
4
+ * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
5
+ * Date: 2009/10/16
6
+ *
7
+ * @author Blair Mitchelmore
8
+ * @version 1.2
9
+ *
10
+ **/
11
+
12
+ jQuery.fn.extend({
13
+ everyTime: function(interval, label, fn, times) {
14
+ return this.each(function() {
15
+ jQuery.timer.add(this, interval, label, fn, times);
16
+ });
17
+ },
18
+ oneTime: function(interval, label, fn) {
19
+ return this.each(function() {
20
+ jQuery.timer.add(this, interval, label, fn, 1);
21
+ });
22
+ },
23
+ stopTime: function(label, fn) {
24
+ return this.each(function() {
25
+ jQuery.timer.remove(this, label, fn);
26
+ });
27
+ }
28
+ });
29
+
30
+ jQuery.extend({
31
+ timer: {
32
+ global: [],
33
+ guid: 1,
34
+ dataKey: "jQuery.timer",
35
+ regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
36
+ powers: {
37
+ // Yeah this is major overkill...
38
+ 'ms': 1,
39
+ 'cs': 10,
40
+ 'ds': 100,
41
+ 's': 1000,
42
+ 'das': 10000,
43
+ 'hs': 100000,
44
+ 'ks': 1000000
45
+ },
46
+ timeParse: function(value) {
47
+ if (value == undefined || value == null)
48
+ return null;
49
+ var result = this.regex.exec(jQuery.trim(value.toString()));
50
+ if (result[2]) {
51
+ var num = parseFloat(result[1]);
52
+ var mult = this.powers[result[2]] || 1;
53
+ return num * mult;
54
+ } else {
55
+ return value;
56
+ }
57
+ },
58
+ add: function(element, interval, label, fn, times) {
59
+ var counter = 0;
60
+
61
+ if (jQuery.isFunction(label)) {
62
+ if (!times)
63
+ times = fn;
64
+ fn = label;
65
+ label = interval;
66
+ }
67
+
68
+ interval = jQuery.timer.timeParse(interval);
69
+
70
+ if (typeof interval != 'number' || isNaN(interval) || interval < 0)
71
+ return;
72
+
73
+ if (typeof times != 'number' || isNaN(times) || times < 0)
74
+ times = 0;
75
+
76
+ times = times || 0;
77
+
78
+ var timers = jQuery.data(element, this.dataKey) || jQuery.data(element, this.dataKey, {});
79
+
80
+ if (!timers[label])
81
+ timers[label] = {};
82
+
83
+ fn.timerID = fn.timerID || this.guid++;
84
+
85
+ var handler = function() {
86
+ if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
87
+ jQuery.timer.remove(element, label, fn);
88
+ };
89
+
90
+ handler.timerID = fn.timerID;
91
+
92
+ if (!timers[label][fn.timerID])
93
+ timers[label][fn.timerID] = window.setInterval(handler,interval);
94
+
95
+ this.global.push( element );
96
+
97
+ },
98
+ remove: function(element, label, fn) {
99
+ var timers = jQuery.data(element, this.dataKey), ret;
100
+
101
+ if ( timers ) {
102
+
103
+ if (!label) {
104
+ for ( label in timers )
105
+ this.remove(element, label, fn);
106
+ } else if ( timers[label] ) {
107
+ if ( fn ) {
108
+ if ( fn.timerID ) {
109
+ window.clearInterval(timers[label][fn.timerID]);
110
+ delete timers[label][fn.timerID];
111
+ }
112
+ } else {
113
+ for ( var fn in timers[label] ) {
114
+ window.clearInterval(timers[label][fn]);
115
+ delete timers[label][fn];
116
+ }
117
+ }
118
+
119
+ for ( ret in timers[label] ) break;
120
+ if ( !ret ) {
121
+ ret = null;
122
+ delete timers[label];
123
+ }
124
+ }
125
+
126
+ for ( ret in timers ) break;
127
+ if ( !ret )
128
+ jQuery.removeData(element, this.dataKey);
129
+ }
130
+ }
131
+ }
132
+ });
133
+
134
+ jQuery(window).bind("unload", function() {
135
+ jQuery.each(jQuery.timer.global, function(index, item) {
136
+ jQuery.timer.remove(item);
137
+ });
138
+ });
@@ -19,7 +19,7 @@ function setup_country(force_load){
19
19
  }
20
20
 
21
21
  if(force_load || state_id == '' || state_id == null || state_id == -1) {
22
- jQuery.getJSON("/helper/load_states_for_country/" + country_id + ".js", function(data){
22
+ jQuery.getJSON("/load_states_for_country/" + country_id + ".json", function(data){
23
23
  var options = '';
24
24
  jQuery("#counties-container").hide();
25
25
  jQuery('#states-container label').html(data.label);
@@ -0,0 +1,147 @@
1
+ // compress with http://closure-compiler.appspot.com/home
2
+ //jQuery.noConflict();
3
+ jQuery(document).ajaxSend(function(event, request, settings) {
4
+ add_headers(request);
5
+ if (settings.type.toUpperCase() == 'GET' || typeof(AUTH_TOKEN) == "undefined") return; // for details see: http://www.justinball.com/2009/07/08/jquery-ajax-get-in-firefox-post-in-internet-explorer/
6
+ // settings.data is a serialized string like "foo=bar&baz=boink" (or null)
7
+ settings.data = settings.data || "";
8
+ if (typeof(AUTH_TOKEN) != "undefined")
9
+ settings.data += (settings.data ? "&" : "") + "authenticity_token=" + encodeURIComponent(AUTH_TOKEN);
10
+ });
11
+
12
+ function apply_ajax_forms() {
13
+ jQuery('form.ajax').ajaxForm({
14
+ dataType: 'script',
15
+ beforeSend: add_headers
16
+ });
17
+ jQuery('form.ajax').append('<input type="hidden" name="format" value="js" />');
18
+ }
19
+
20
+ function add_headers(xhr){
21
+ xhr.setRequestHeader("Accept", "text/javascript");
22
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
23
+ }
24
+
25
+ jQuery(document).ready(function() {
26
+
27
+ jQuery('a.ajax-delete').live('click', function() {
28
+ var title = jQuery(this).attr('title');
29
+ var do_delete = true;
30
+ if(title.length > 0){
31
+ do_delete = confirm(title);
32
+ }
33
+ if (do_delete){
34
+ jQuery.post(this.href, { _method: 'delete', format: 'js' }, null, "script");
35
+ }
36
+ return false;
37
+ });
38
+
39
+ jQuery('a.ajax-update').live('click', function() {
40
+ jQuery.post(this.href, { _method: 'put', format: 'js' }, null, "script");
41
+ return false;
42
+ });
43
+
44
+ jQuery(".submit-form").click(function() {
45
+ jQuery(this).parent('form').submit();
46
+ });
47
+
48
+ apply_ajax_forms();
49
+
50
+ jQuery('a.dialog-pop').live('click', function() {
51
+ var d = jQuery('<div class="dialog"></div>').appendTo("body");
52
+ d.dialog({ modal: true, autoOpen: false, width: 'auto', title: jQuery(this).attr('title') });
53
+ d.load(jQuery(this).attr('href'), '', function(){
54
+ d.dialog("open");
55
+ apply_ajax_forms();
56
+ });
57
+ return false;
58
+ });
59
+
60
+ jQuery(".submit-delete").live('click', function() {
61
+ jQuery(this).parents('.delete-container').fadeOut();
62
+ var form = jQuery(this).parents('form');
63
+ jQuery.post(form.attr('action') + '.json', form.serialize(),
64
+ function(data){
65
+ var json = eval('(' + data + ')');
66
+ if(!json.success){
67
+ jQuery.jGrowl.info(json.message);
68
+ }
69
+ });
70
+ return false;
71
+ });
72
+
73
+ jQuery(".submit-delete-js").live('click', function() {
74
+ jQuery(this).parents('.delete-container').fadeOut();
75
+ var form = jQuery(this).parents('form');
76
+ jQuery.post(form.attr('action') + '.js', form.serialize(),
77
+ function(data){
78
+ });
79
+ return false;
80
+ });
81
+
82
+ jQuery(document).ready(function() {
83
+ jQuery('.waiting').hide();
84
+ jQuery(".wait-button").live('click', function() {
85
+ jQuery(this).siblings('.waiting').show();
86
+ jQuery(this).hide();
87
+ });
88
+ });
89
+
90
+ });
91
+
92
+ // String list methods. These are handy for dealing with comma delimited lists
93
+ // in text boxes such as a list of emails or tags.
94
+ // Given a comma delimited string add a new item if it isn't in the string
95
+ function add_to_list(items_string, new_item){
96
+ var items = split_list(items_string);
97
+ var add = true;
98
+ for(i=0;i<items.length;i++){
99
+ if(items[i] == new_item){ add = false; }
100
+ }
101
+ if(add){
102
+ items.push(new_item);
103
+ }
104
+ return items.join(', ');
105
+ }
106
+
107
+ // Given a comma delimited list remove an item from the string
108
+ function remove_from_list(items_string, remove_item){
109
+ var items = split_list(items_string);
110
+ var cleaned = [];
111
+ for(i=0;i<items.length;i++){
112
+ if(items[i] != remove_item){
113
+ cleaned.push(items[i]);
114
+ }
115
+ }
116
+ return cleaned.join(', ');
117
+ }
118
+
119
+ // Split a string on commas
120
+ function split_list(items_string){
121
+ if(undefined != items_string && items_string.length > 0){
122
+ var items = items_string.split(',');
123
+ } else {
124
+ var items = [];
125
+ }
126
+ var cleaned = [];
127
+ for(i=0;i<items.length;i++){
128
+ var cleaned_item = jQuery.trim(items[i]);
129
+ if(cleaned_item.length > 0){
130
+ cleaned.push(cleaned_item);
131
+ }
132
+ }
133
+ return cleaned;
134
+ }
135
+
136
+ function isEncodedHtml(str) {
137
+ if(str.search(/&amp;/g) != -1 || str.search(/&lt;/g) != -1 || str.search(/&gt;/g) != -1)
138
+ return true;
139
+ else
140
+ return false;
141
+ };
142
+
143
+ function decodeHtml(str){
144
+ if(isEncodedHtml(str))
145
+ return str.replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>');
146
+ return str;
147
+ }
@@ -15,4 +15,10 @@ jQuery(document).ready(function() {
15
15
  jQuery("#user_email").keydown(function() {
16
16
  jQuery("#email-availibility").html('');
17
17
  });
18
+ jQuery(".login-search").autocomplete('/users/login_search.js', {
19
+ minChars: 1,
20
+ delay: 200,
21
+ autoFill: true,
22
+ mustMatch: false
23
+ });
18
24
  });
@@ -1,91 +1,5 @@
1
- //jQuery.noConflict();
2
- jQuery(document).ajaxSend(function(event, request, settings) {
3
- add_headers(request);
4
- if (settings.type.toUpperCase() == 'GET' || typeof(AUTH_TOKEN) == "undefined") return; // for details see: http://www.justinball.com/2009/07/08/jquery-ajax-get-in-firefox-post-in-internet-explorer/
5
- // settings.data is a serialized string like "foo=bar&baz=boink" (or null)
6
- settings.data = settings.data || "";
7
- if (typeof(AUTH_TOKEN) != "undefined")
8
- settings.data += (settings.data ? "&" : "") + "authenticity_token=" + encodeURIComponent(AUTH_TOKEN);
9
- });
10
-
11
- function apply_ajax_forms() {
12
- jQuery('form.ajax').ajaxForm({
13
- dataType: 'script',
14
- beforeSend: add_headers
15
- });
16
- jQuery('form.ajax').append('<input type="hidden" name="format" value="js" />');
17
- }
18
-
19
- function add_headers(xhr){
20
- xhr.setRequestHeader("Accept", "text/javascript");
21
- xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
22
- }
23
-
24
- jQuery(document).ready(function() {
25
-
26
- jQuery('a.ajax-delete').live('click', function() {
27
- var title = jQuery(this).attr('title');
28
- var do_delete = true;
29
- if(title.length > 0){
30
- do_delete = confirm(title);
31
- }
32
- if (do_delete){
33
- jQuery.post(this.href, { _method: 'delete', format: 'js' }, null, "script");
34
- }
35
- return false;
36
- });
37
-
38
- jQuery('a.ajax-update').live('click', function() {
39
- jQuery.post(this.href, { _method: 'put', format: 'js' }, null, "script");
40
- return false;
41
- });
42
-
43
- jQuery(".submit-form").click(function() {
44
- jQuery(this).parent('form').submit();
45
- });
46
-
47
- apply_ajax_forms();
48
-
49
- jQuery('a.fancy-pop').fancybox({'hideOnContentClick':false, 'overlayShow':true, 'frameWidth':600, 'frameHeight':500 });
50
-
51
- jQuery('a.dialog-pop').live('click', function() {
52
- var d = jQuery('<div class="dialog"></div>').appendTo("body");
53
- d.dialog({ modal: true, autoOpen: false, width: 'auto', title: jQuery(this).attr('title') });
54
- d.load(jQuery(this).attr('href'), '', function(){
55
- d.dialog("open");
56
- apply_ajax_forms();
57
- });
58
- return false;
59
- });
60
-
61
- jQuery(".submit-delete").live('click', function() {
62
- jQuery(this).parents('.delete-container').fadeOut();
63
- var form = jQuery(this).parents('form');
64
- jQuery.post(form.attr('action') + '.json', form.serialize(),
65
- function(data){
66
- var json = eval('(' + data + ')');
67
- if(!json.success){
68
- jQuery.jGrowl.info(json.message);
69
- }
70
- });
71
- return false;
72
- });
73
-
74
- jQuery(".submit-delete-js").live('click', function() {
75
- jQuery(this).parents('.delete-container').fadeOut();
76
- var form = jQuery(this).parents('form');
77
- jQuery.post(form.attr('action') + '.js', form.serialize(),
78
- function(data){
79
- });
80
- return false;
81
- });
82
-
83
- jQuery(document).ready(function() {
84
- jQuery('.waiting').hide();
85
- jQuery(".wait-button").click(function() {
86
- jQuery('.waiting').show();
87
- jQuery(this).hide();
88
- });
89
- });
90
-
91
- });
1
+ jQuery(document).ajaxSend(function(a,b,c){add_headers(b);if(!(c.type.toUpperCase()=="GET"||typeof AUTH_TOKEN=="undefined")){c.data=c.data||"";if(typeof AUTH_TOKEN!="undefined")c.data+=(c.data?"&":"")+"authenticity_token="+encodeURIComponent(AUTH_TOKEN)}});function apply_ajax_forms(){jQuery("form.ajax").ajaxForm({dataType:"script",beforeSend:add_headers});jQuery("form.ajax").append('<input type="hidden" name="format" value="js" />')}
2
+ function add_headers(a){a.setRequestHeader("Accept","text/javascript");a.setRequestHeader("X-Requested-With","XMLHttpRequest")}
3
+ jQuery(document).ready(function(){jQuery("a.ajax-delete").live("click",function(){var a=jQuery(this).attr("title"),b=true;if(a.length>0)b=confirm(a);b&&jQuery.post(this.href,{_method:"delete",format:"js"},null,"script");return false});jQuery("a.ajax-update").live("click",function(){jQuery.post(this.href,{_method:"put",format:"js"},null,"script");return false});jQuery(".submit-form").click(function(){jQuery(this).parent("form").submit()});apply_ajax_forms();jQuery("a.dialog-pop").live("click",function(){var a=
4
+ jQuery('<div class="dialog"></div>').appendTo("body");a.dialog({modal:true,autoOpen:false,width:"auto",title:jQuery(this).attr("title")});a.load(jQuery(this).attr("href"),"",function(){a.dialog("open");apply_ajax_forms()});return false});jQuery(".submit-delete").live("click",function(){jQuery(this).parents(".delete-container").fadeOut();var a=jQuery(this).parents("form");jQuery.post(a.attr("action")+".json",a.serialize(),function(b){b=eval("("+b+")");b.success||jQuery.jGrowl.info(b.message)});return false});
5
+ jQuery(".submit-delete-js").live("click",function(){jQuery(this).parents(".delete-container").fadeOut();var a=jQuery(this).parents("form");jQuery.post(a.attr("action")+".js",a.serialize(),function(){});return false});jQuery(document).ready(function(){jQuery(".waiting").hide();jQuery(".wait-button").click(function(){jQuery(".waiting").show();jQuery(this).hide()})})});
@@ -0,0 +1,13 @@
1
+ jQuery(function(){
2
+ // BUTTONS
3
+ jQuery('.fg-button').hover(
4
+ function(){ jQuery(this).removeClass('ui-state-default').addClass('ui-state-focus'); },
5
+ function(){ jQuery(this).removeClass('ui-state-focus').addClass('ui-state-default'); }
6
+ );
7
+ jQuery('.flat').each(function() {
8
+ jQuery(this).menu({
9
+ content: jQuery(this).next().html(), // grab content from this page
10
+ showSpeed: 200
11
+ });
12
+ });
13
+ });
@@ -31,6 +31,8 @@ ul.admin-list li a{font-size:1.2em;}
31
31
  #admin-messages{display:none;}
32
32
  /* ui elements */
33
33
  #ui-datepicker-div{z-index:2005;}
34
+ /* jquery-ui theme overrides */
35
+ .ui-widget {font-size:.8em;}
34
36
  /* tables */
35
37
  .adminTable{margin:5px 0 0 0;padding:0 0 40px 0px;width:980px;}
36
38
  .adminTable a{color:#000;text-decoration:none;font-weight:bold;}
@@ -38,3 +40,23 @@ ul.admin-list li a{font-size:1.2em;}
38
40
  .adminTable tr{background-color:#fff;}
39
41
  .adminTable table{border:2px solid #c4ad63;}
40
42
  .adminTable tr td{font-size:1.1em;font-weight:bold;padding:5px;border-bottom:1px solid #eee;}
43
+ /* menu styles*/
44
+ .hidden { position:absolute; top:0; left:-9999px; width:1px; height:1px; overflow:hidden; }
45
+ .fg-button { font-size:11px; clear:left; padding: .4em 1em; text-decoration:none !important; cursor:pointer; position: relative; text-align: center; zoom: 1; }
46
+ .fg-button .ui-icon { position: absolute; top: 50%; margin-top: -8px; left: 50%; margin-left: -8px; }
47
+ a.fg-button { float:left; }
48
+ button.fg-button { width:auto; overflow:visible; } /* removes extra button width in IE */
49
+ .fg-button-icon-left { padding-left: 2.1em; }
50
+ .fg-button-icon-right { padding-right: 2.1em; }
51
+ .fg-button-icon-left .ui-icon { right: auto; left: .2em; margin-left: 0; }
52
+ .fg-button-icon-right .ui-icon { left: auto; right: .2em; margin-left: 0; }
53
+ .fg-button-icon-solo { display:block; width:8px; text-indent: -9999px; } /* solo icon buttons must have block properties for the text-indent to work */
54
+ .fg-button.ui-state-loading .ui-icon { background: url(spinner_bar.gif) no-repeat 0 0;}
55
+ /*tabs*/
56
+ .tabs{font-size:1.2em;border-bottom:solid 2px #000;position:relative;}
57
+ .tabs ul{list-style-type:none;}
58
+ .tabs ul li{float:left;display:inline;margin-right:20px;}
59
+ .tabs ul li a{color:#000;text-decoration:none;}
60
+ .tabs ul li a:hover{color:#333;}
61
+ .tabs ul li a.active{background-position:0 bottom;color:#fff;}
62
+ .tabs ul li a.active span{background-position:right bottom;}
@@ -0,0 +1,114 @@
1
+ /* Styles for jQuery menu widget
2
+ Author: Maggie Wachs, maggie@filamentgroup.com
3
+ Date: September 2008
4
+ */
5
+
6
+
7
+ /* REQUIRED STYLES - the menus will only render correctly with these rules */
8
+ .fg-button:hover { color:#FFFFFF; }
9
+ .fg-menu-container { position: absolute; top:0; left:-999px; padding: .4em; overflow: hidden; }
10
+ .fg-menu-container.fg-menu-flyout { overflow: visible; }
11
+
12
+ .fg-menu, .fg-menu ul { list-style-type:none; padding: 0; margin:0; }
13
+
14
+ .fg-menu { position:relative; }
15
+ .fg-menu-flyout .fg-menu { position:static; }
16
+
17
+ .fg-menu ul { position:absolute; top:0; }
18
+ .fg-menu ul ul { top:-1px; }
19
+
20
+ .fg-menu-container.fg-menu-ipod .fg-menu-content,
21
+ .fg-menu-container.fg-menu-ipod .fg-menu-content ul { background: none !important; }
22
+
23
+ .fg-menu.fg-menu-scroll,
24
+ .fg-menu ul.fg-menu-scroll { overflow: scroll; overflow-x: hidden; }
25
+
26
+ .fg-menu li { clear:both; float:left; width:100%; margin: 0; padding:0; border: 0; }
27
+ .fg-menu li li { font-size:1em; } /* inner li font size must be reset so that they don't blow up */
28
+
29
+ .fg-menu-flyout ul ul { padding: .4em; }
30
+ .fg-menu-flyout li { position:relative; }
31
+
32
+ .fg-menu-scroll { overflow: scroll; overflow-x: hidden; }
33
+
34
+ .fg-menu-breadcrumb { margin: 0; padding: 0; }
35
+
36
+ .fg-menu-footer { margin-top: .4em; padding: .4em; }
37
+ .fg-menu-header { margin-bottom: .4em; padding: .4em; }
38
+
39
+ .fg-menu-breadcrumb li { float: left; list-style: none; margin: 0; padding: 0 .2em; font-size: .9em; opacity: .7; }
40
+ .fg-menu-breadcrumb li.fg-menu-prev-list,
41
+ .fg-menu-breadcrumb li.fg-menu-current-crumb { clear: left; float: none; opacity: 1; }
42
+ .fg-menu-breadcrumb li.fg-menu-current-crumb { padding-top: .2em; }
43
+
44
+ .fg-menu-breadcrumb a,
45
+ .fg-menu-breadcrumb span { float: left; }
46
+
47
+ .fg-menu-footer a:link,
48
+ .fg-menu-footer a:visited { float:left; width:100%; text-decoration: none; }
49
+ .fg-menu-footer a:hover,
50
+ .fg-menu-footer a:active { }
51
+
52
+ .fg-menu-footer a span { float:left; cursor: pointer; }
53
+
54
+ .fg-menu-breadcrumb .fg-menu-prev-list a:link,
55
+ .fg-menu-breadcrumb .fg-menu-prev-list a:visited,
56
+ .fg-menu-breadcrumb .fg-menu-prev-list a:hover,
57
+ .fg-menu-breadcrumb .fg-menu-prev-list a:active { background-image: none; text-decoration:none; }
58
+
59
+ .fg-menu-breadcrumb .fg-menu-prev-list a { float: left; padding-right: .4em; }
60
+ .fg-menu-breadcrumb .fg-menu-prev-list a .ui-icon { float: left; }
61
+
62
+ .fg-menu-breadcrumb .fg-menu-current-crumb a:link,
63
+ .fg-menu-breadcrumb .fg-menu-current-crumb a:visited,
64
+ .fg-menu-breadcrumb .fg-menu-current-crumb a:hover,
65
+ .fg-menu-breadcrumb .fg-menu-current-crumb a:active { display:block; background-image:none; font-size:1.3em; text-decoration:none; }
66
+
67
+
68
+
69
+ /* REQUIRED LINK STYLES: links are "display:block" by default; if the menu options are split into
70
+ selectable node links and 'next' links, the script floats the node links left and floats the 'next' links to the right */
71
+
72
+ .fg-menu a:link,
73
+ .fg-menu a:visited,
74
+ .fg-menu a:hover,
75
+ .fg-menu a:active { float:left; width:92%; padding:.3em 3%; text-decoration:none; outline: 0 !important; }
76
+
77
+ .fg-menu a { border: 1px dashed transparent; }
78
+
79
+ .fg-menu a.ui-state-default:link,
80
+ .fg-menu a.ui-state-default:visited,
81
+ .fg-menu a.ui-state-default:hover,
82
+ .fg-menu a.ui-state-default:active,
83
+ .fg-menu a.ui-state-hover:link,
84
+ .fg-menu a.ui-state-hover:visited,
85
+ .fg-menu a.ui-state-hover:hover,
86
+ .fg-menu a.ui-state-hover:active,
87
+ .fg-menu a.ui-state-active:link,
88
+ .fg-menu a.ui-state-active:visited,
89
+ .fg-menu a.ui-state-active:hover,
90
+ .fg-menu a.ui-state-active:active { border-style: solid; font-weight: normal; }
91
+
92
+ .fg-menu a span { display:block; cursor:pointer; }
93
+
94
+
95
+ /* SUGGESTED STYLES - for use with jQuery UI Themeroller CSS */
96
+
97
+ .fg-menu-indicator span { float:left; }
98
+ .fg-menu-indicator span.ui-icon { float:right; }
99
+
100
+ .fg-menu-content.ui-widget-content,
101
+ .fg-menu-content ul.ui-widget-content { border:0; }
102
+
103
+
104
+ /* ICONS AND DIVIDERS */
105
+
106
+ .fg-menu.fg-menu-has-icons a:link,
107
+ .fg-menu.fg-menu-has-icons a:visited,
108
+ .fg-menu.fg-menu-has-icons a:hover,
109
+ .fg-menu.fg-menu-has-icons a:active { padding-left:20px; }
110
+
111
+ .fg-menu .horizontal-divider hr, .fg-menu .horizontal-divider span { padding:0; margin:5px .6em; }
112
+ .fg-menu .horizontal-divider hr { border:0; height:1px; }
113
+ .fg-menu .horizontal-divider span { font-size:.9em; text-transform: uppercase; padding-left:.2em; }
114
+