romanbsd-tarantula 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. data/CHANGELOG +47 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +162 -0
  4. data/Rakefile +69 -0
  5. data/VERSION.yml +4 -0
  6. data/examples/example_helper.rb +48 -0
  7. data/examples/relevance/core_extensions/ellipsize_example.rb +19 -0
  8. data/examples/relevance/core_extensions/file_example.rb +8 -0
  9. data/examples/relevance/core_extensions/response_example.rb +29 -0
  10. data/examples/relevance/core_extensions/test_case_example.rb +20 -0
  11. data/examples/relevance/tarantula/attack_form_submission_example.rb +79 -0
  12. data/examples/relevance/tarantula/attack_handler_example.rb +29 -0
  13. data/examples/relevance/tarantula/crawler_example.rb +386 -0
  14. data/examples/relevance/tarantula/form_example.rb +50 -0
  15. data/examples/relevance/tarantula/form_submission_example.rb +71 -0
  16. data/examples/relevance/tarantula/html_document_handler_example.rb +43 -0
  17. data/examples/relevance/tarantula/html_report_helper_example.rb +46 -0
  18. data/examples/relevance/tarantula/html_reporter_example.rb +82 -0
  19. data/examples/relevance/tarantula/invalid_html_handler_example.rb +33 -0
  20. data/examples/relevance/tarantula/io_reporter_example.rb +11 -0
  21. data/examples/relevance/tarantula/link_example.rb +67 -0
  22. data/examples/relevance/tarantula/log_grabber_example.rb +26 -0
  23. data/examples/relevance/tarantula/rails_integration_proxy_example.rb +88 -0
  24. data/examples/relevance/tarantula/result_example.rb +85 -0
  25. data/examples/relevance/tarantula/tidy_handler_example.rb +58 -0
  26. data/examples/relevance/tarantula/transform_example.rb +20 -0
  27. data/examples/relevance/tarantula/w3c_validator_example.rb +71 -0
  28. data/examples/relevance/tarantula_example.rb +23 -0
  29. data/laf/images/button_active.png +0 -0
  30. data/laf/images/button_hover.png +0 -0
  31. data/laf/images/button_inactive.png +0 -0
  32. data/laf/images/header_bg.jpg +0 -0
  33. data/laf/images/logo.png +0 -0
  34. data/laf/images/tagline.png +0 -0
  35. data/laf/javascripts/jquery-1.2.3.js +3408 -0
  36. data/laf/javascripts/jquery-ui-tabs.js +890 -0
  37. data/laf/javascripts/jquery.tablesorter.js +861 -0
  38. data/laf/javascripts/niftyLayout.js +11 -0
  39. data/laf/javascripts/niftycube-details.js +298 -0
  40. data/laf/javascripts/niftycube.js +298 -0
  41. data/laf/javascripts/tarantula.js +10 -0
  42. data/laf/stylesheets/tarantula.css +345 -0
  43. data/laf/v2/detail.html +59 -0
  44. data/laf/v2/images/button_active.png +0 -0
  45. data/laf/v2/images/button_hover.png +0 -0
  46. data/laf/v2/images/button_inactive.png +0 -0
  47. data/laf/v2/images/header_bg.jpg +0 -0
  48. data/laf/v2/images/logo.png +0 -0
  49. data/laf/v2/images/tagline.png +0 -0
  50. data/laf/v2/index.html +77 -0
  51. data/laf/v2/stylesheets/tarantula.v2.css +324 -0
  52. data/lib/relevance/core_extensions/ellipsize.rb +34 -0
  53. data/lib/relevance/core_extensions/file.rb +9 -0
  54. data/lib/relevance/core_extensions/metaclass.rb +78 -0
  55. data/lib/relevance/core_extensions/response.rb +9 -0
  56. data/lib/relevance/core_extensions/string_chars_fix.rb +11 -0
  57. data/lib/relevance/core_extensions/test_case.rb +19 -0
  58. data/lib/relevance/tarantula/attack.rb +15 -0
  59. data/lib/relevance/tarantula/attack_form_submission.rb +75 -0
  60. data/lib/relevance/tarantula/attack_handler.rb +37 -0
  61. data/lib/relevance/tarantula/crawler.rb +264 -0
  62. data/lib/relevance/tarantula/detail.html.erb +82 -0
  63. data/lib/relevance/tarantula/form.rb +21 -0
  64. data/lib/relevance/tarantula/form_submission.rb +70 -0
  65. data/lib/relevance/tarantula/html_document_handler.rb +36 -0
  66. data/lib/relevance/tarantula/html_report_helper.rb +39 -0
  67. data/lib/relevance/tarantula/html_reporter.rb +105 -0
  68. data/lib/relevance/tarantula/index.html.erb +37 -0
  69. data/lib/relevance/tarantula/invalid_html_handler.rb +18 -0
  70. data/lib/relevance/tarantula/io_reporter.rb +34 -0
  71. data/lib/relevance/tarantula/link.rb +56 -0
  72. data/lib/relevance/tarantula/log_grabber.rb +16 -0
  73. data/lib/relevance/tarantula/rails_integration_proxy.rb +68 -0
  74. data/lib/relevance/tarantula/recording.rb +12 -0
  75. data/lib/relevance/tarantula/response.rb +13 -0
  76. data/lib/relevance/tarantula/result.rb +66 -0
  77. data/lib/relevance/tarantula/test_report.html.erb +32 -0
  78. data/lib/relevance/tarantula/tidy_handler.rb +32 -0
  79. data/lib/relevance/tarantula/transform.rb +17 -0
  80. data/lib/relevance/tarantula/w3c_validator.rb +33 -0
  81. data/lib/relevance/tarantula.rb +59 -0
  82. data/tasks/tarantula_tasks.rake +36 -0
  83. data/template/tarantula_test.rb +22 -0
  84. data/vendor/w3c_validators/CHANGELOG +14 -0
  85. data/vendor/w3c_validators/LICENSE +60 -0
  86. data/vendor/w3c_validators/README +120 -0
  87. data/vendor/w3c_validators/README.svn +4 -0
  88. data/vendor/w3c_validators/lib/w3c_validators/constants.rb +80 -0
  89. data/vendor/w3c_validators/lib/w3c_validators/css_validator.rb +149 -0
  90. data/vendor/w3c_validators/lib/w3c_validators/exceptions.rb +4 -0
  91. data/vendor/w3c_validators/lib/w3c_validators/feed_validator.rb +110 -0
  92. data/vendor/w3c_validators/lib/w3c_validators/markup_validator.rb +227 -0
  93. data/vendor/w3c_validators/lib/w3c_validators/message.rb +82 -0
  94. data/vendor/w3c_validators/lib/w3c_validators/results.rb +62 -0
  95. data/vendor/w3c_validators/lib/w3c_validators/validator.rb +157 -0
  96. data/vendor/w3c_validators/lib/w3c_validators.rb +5 -0
  97. data/vendor/w3c_validators/rakefile.rb +53 -0
  98. data/vendor/w3c_validators/test/fixtures/invalid_css.css +2 -0
  99. data/vendor/w3c_validators/test/fixtures/invalid_encoding.html +10 -0
  100. data/vendor/w3c_validators/test/fixtures/invalid_feed.xml +19 -0
  101. data/vendor/w3c_validators/test/fixtures/invalid_html5.html +16 -0
  102. data/vendor/w3c_validators/test/fixtures/invalid_markup.html +11 -0
  103. data/vendor/w3c_validators/test/fixtures/valid_css.css +2 -0
  104. data/vendor/w3c_validators/test/fixtures/valid_feed.xml +20 -0
  105. data/vendor/w3c_validators/test/fixtures/valid_html5.html +16 -0
  106. data/vendor/w3c_validators/test/fixtures/valid_markup.html +11 -0
  107. data/vendor/w3c_validators/test/test_css_validator.rb +51 -0
  108. data/vendor/w3c_validators/test/test_exceptions.rb +35 -0
  109. data/vendor/w3c_validators/test/test_feed_validator.rb +61 -0
  110. data/vendor/w3c_validators/test/test_helper.rb +6 -0
  111. data/vendor/w3c_validators/test/test_html5_validator.rb +64 -0
  112. data/vendor/w3c_validators/test/test_markup_validator.rb +94 -0
  113. data/vendor/xss-shield/MIT-LICENSE +20 -0
  114. data/vendor/xss-shield/README +76 -0
  115. data/vendor/xss-shield/init.rb +16 -0
  116. data/vendor/xss-shield/lib/xss_shield/erb_hacks.rb +111 -0
  117. data/vendor/xss-shield/lib/xss_shield/haml_hacks.rb +42 -0
  118. data/vendor/xss-shield/lib/xss_shield/safe_string.rb +47 -0
  119. data/vendor/xss-shield/lib/xss_shield/secure_helpers.rb +40 -0
  120. data/vendor/xss-shield/lib/xss_shield.rb +6 -0
  121. data/vendor/xss-shield/test/test_actionview_integration.rb +40 -0
  122. data/vendor/xss-shield/test/test_erb.rb +44 -0
  123. data/vendor/xss-shield/test/test_haml.rb +43 -0
  124. data/vendor/xss-shield/test/test_helpers.rb +25 -0
  125. data/vendor/xss-shield/test/test_safe_string.rb +55 -0
  126. metadata +218 -0
@@ -0,0 +1,11 @@
1
+ /*nifty corners layout*/
2
+
3
+ window.onload=function(){
4
+ Nifty("div#menu a","small transparent top");
5
+ Nifty("ul#intro li","same-height");
6
+ Nifty("div.date");
7
+ Nifty("div#content,div#side","same-height");
8
+ Nifty("div.comments div");
9
+ Nifty("div#footer");
10
+ Nifty("div#container","bottom");
11
+ }
@@ -0,0 +1,298 @@
1
+ /* Nifty Corners Cube - rounded corners with CSS and Javascript
2
+ Copyright 2006 Alessandro Fulciniti (a.fulciniti@html.it)
3
+
4
+ This program is free software; you can redistribute it and/or modify
5
+ it under the terms of the GNU General Public License as published by
6
+ the Free Software Foundation; either version 2 of the License, or
7
+ (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License
15
+ along with this program; if not, write to the Free Software
16
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
+ */
18
+
19
+ var niftyOk=(document.getElementById && document.createElement && Array.prototype.push);
20
+ var niftyCss=false;
21
+
22
+ String.prototype.find=function(what){
23
+ return(this.indexOf(what)>=0 ? true : false);
24
+ }
25
+
26
+ var oldonload=window.onload;
27
+ if(typeof(NiftyLoad)!='function') NiftyLoad=function(){};
28
+ if(typeof(oldonload)=='function')
29
+ window.onload=function(){oldonload();AddCss();NiftyLoad()};
30
+ else window.onload=function(){AddCss();NiftyLoad()};
31
+
32
+ function AddCss(){
33
+ niftyCss=true;
34
+ var l=CreateEl("link");
35
+ l.setAttribute("type","text/css");
36
+ l.setAttribute("rel","stylesheet");
37
+ l.setAttribute("href","../stylesheets/niftyCorners.css");
38
+ l.setAttribute("media","screen");
39
+ document.getElementsByTagName("head")[0].appendChild(l);
40
+ }
41
+
42
+ function Nifty(selector,options){
43
+ if(niftyOk==false) return;
44
+ if(niftyCss==false) AddCss();
45
+ var i,v=selector.split(","),h=0;
46
+ if(options==null) options="";
47
+ if(options.find("fixed-height"))
48
+ h=getElementsBySelector(v[0])[0].offsetHeight;
49
+ for(i=0;i<v.length;i++)
50
+ Rounded(v[i],options);
51
+ if(options.find("height")) SameHeight(selector,h);
52
+ }
53
+
54
+ function Rounded(selector,options){
55
+ var i,top="",bottom="",v=new Array();
56
+ if(options!=""){
57
+ options=options.replace("left","tl bl");
58
+ options=options.replace("right","tr br");
59
+ options=options.replace("top","tr tl");
60
+ options=options.replace("bottom","br bl");
61
+ options=options.replace("transparent","alias");
62
+ if(options.find("tl")){
63
+ top="both";
64
+ if(!options.find("tr")) top="left";
65
+ }
66
+ else if(options.find("tr")) top="right";
67
+ if(options.find("bl")){
68
+ bottom="both";
69
+ if(!options.find("br")) bottom="left";
70
+ }
71
+ else if(options.find("br")) bottom="right";
72
+ }
73
+ if(top=="" && bottom=="" && !options.find("none")){top="both";bottom="both";}
74
+ v=getElementsBySelector(selector);
75
+ for(i=0;i<v.length;i++){
76
+ FixIE(v[i]);
77
+ if(top!="") AddTop(v[i],top,options);
78
+ if(bottom!="") AddBottom(v[i],bottom,options);
79
+ }
80
+ }
81
+
82
+ function AddTop(el,side,options){
83
+ var d=CreateEl("b"),lim=4,border="",p,i,btype="r",bk,color;
84
+ d.style.marginLeft="-"+getPadding(el,"Left")+"px";
85
+ d.style.marginRight="-"+getPadding(el,"Right")+"px";
86
+ if(options.find("alias") || (color=getBk(el))=="transparent"){
87
+ color="transparent";bk="transparent"; border=getParentBk(el);btype="t";
88
+ }
89
+ else{
90
+ bk=getParentBk(el); border=Mix(color,bk);
91
+ }
92
+ d.style.background=bk;
93
+ d.className="niftycorners";
94
+ p=getPadding(el,"Top");
95
+ if(options.find("small")){
96
+ d.style.marginBottom=(p-2)+"px";
97
+ btype+="s"; lim=2;
98
+ }
99
+ else if(options.find("big")){
100
+ d.style.marginBottom=(p-10)+"px";
101
+ btype+="b"; lim=8;
102
+ }
103
+ else d.style.marginBottom=(p-5)+"px";
104
+ for(i=1;i<=lim;i++)
105
+ d.appendChild(CreateStrip(i,side,color,border,btype));
106
+ el.style.paddingTop="0";
107
+ el.insertBefore(d,el.firstChild);
108
+ }
109
+
110
+ function AddBottom(el,side,options){
111
+ var d=CreateEl("b"),lim=4,border="",p,i,btype="r",bk,color;
112
+ d.style.marginLeft="-"+getPadding(el,"Left")+"px";
113
+ d.style.marginRight="-"+getPadding(el,"Right")+"px";
114
+ if(options.find("alias") || (color=getBk(el))=="transparent"){
115
+ color="transparent";bk="transparent"; border=getParentBk(el);btype="t";
116
+ }
117
+ else{
118
+ bk=getParentBk(el); border=Mix(color,bk);
119
+ }
120
+ d.style.background=bk;
121
+ d.className="niftycorners";
122
+ p=getPadding(el,"Bottom");
123
+ if(options.find("small")){
124
+ d.style.marginTop=(p-2)+"px";
125
+ btype+="s"; lim=2;
126
+ }
127
+ else if(options.find("big")){
128
+ d.style.marginTop=(p-10)+"px";
129
+ btype+="b"; lim=8;
130
+ }
131
+ else d.style.marginTop=(p-5)+"px";
132
+ for(i=lim;i>0;i--)
133
+ d.appendChild(CreateStrip(i,side,color,border,btype));
134
+ el.style.paddingBottom=0;
135
+ el.appendChild(d);
136
+ }
137
+
138
+ function CreateStrip(index,side,color,border,btype){
139
+ var x=CreateEl("b");
140
+ x.className=btype+index;
141
+ x.style.backgroundColor=color;
142
+ x.style.borderColor=border;
143
+ if(side=="left"){
144
+ x.style.borderRightWidth="0";
145
+ x.style.marginRight="0";
146
+ }
147
+ else if(side=="right"){
148
+ x.style.borderLeftWidth="0";
149
+ x.style.marginLeft="0";
150
+ }
151
+ return(x);
152
+ }
153
+
154
+ function CreateEl(x){
155
+ return(document.createElement(x));
156
+ }
157
+
158
+ function FixIE(el){
159
+ if(el.currentStyle!=null && el.currentStyle.hasLayout!=null && el.currentStyle.hasLayout==false)
160
+ el.style.display="inline-block";
161
+ }
162
+
163
+ function SameHeight(selector,maxh){
164
+ var i,v=selector.split(","),t,j,els=[],gap;
165
+ for(i=0;i<v.length;i++){
166
+ t=getElementsBySelector(v[i]);
167
+ els=els.concat(t);
168
+ }
169
+ for(i=0;i<els.length;i++){
170
+ if(els[i].offsetHeight>maxh) maxh=els[i].offsetHeight;
171
+ els[i].style.height="auto";
172
+ }
173
+ for(i=0;i<els.length;i++){
174
+ gap=maxh-els[i].offsetHeight;
175
+ if(gap>0){
176
+ t=CreateEl("b");t.className="niftyfill";t.style.height=gap+"px";
177
+ nc=els[i].lastChild;
178
+ if(nc.className=="niftycorners")
179
+ els[i].insertBefore(t,nc);
180
+ else els[i].appendChild(t);
181
+ }
182
+ }
183
+ }
184
+
185
+ function getElementsBySelector(selector){
186
+ var i,j,selid="",selclass="",tag=selector,tag2="",v2,k,f,a,s=[],objlist=[],c;
187
+ if(selector.find("#")){ //id selector like "tag#id"
188
+ if(selector.find(" ")){ //descendant selector like "tag#id tag"
189
+ s=selector.split(" ");
190
+ var fs=s[0].split("#");
191
+ if(fs.length==1) return(objlist);
192
+ f=document.getElementById(fs[1]);
193
+ if(f){
194
+ v=f.getElementsByTagName(s[1]);
195
+ for(i=0;i<v.length;i++) objlist.push(v[i]);
196
+ }
197
+ return(objlist);
198
+ }
199
+ else{
200
+ s=selector.split("#");
201
+ tag=s[0];
202
+ selid=s[1];
203
+ if(selid!=""){
204
+ f=document.getElementById(selid);
205
+ if(f) objlist.push(f);
206
+ return(objlist);
207
+ }
208
+ }
209
+ }
210
+ if(selector.find(".")){ //class selector like "tag.class"
211
+ s=selector.split(".");
212
+ tag=s[0];
213
+ selclass=s[1];
214
+ if(selclass.find(" ")){ //descendant selector like tag1.classname tag2
215
+ s=selclass.split(" ");
216
+ selclass=s[0];
217
+ tag2=s[1];
218
+ }
219
+ }
220
+ var v=document.getElementsByTagName(tag); // tag selector like "tag"
221
+ if(selclass==""){
222
+ for(i=0;i<v.length;i++) objlist.push(v[i]);
223
+ return(objlist);
224
+ }
225
+ for(i=0;i<v.length;i++){
226
+ c=v[i].className.split(" ");
227
+ for(j=0;j<c.length;j++){
228
+ if(c[j]==selclass){
229
+ if(tag2=="") objlist.push(v[i]);
230
+ else{
231
+ v2=v[i].getElementsByTagName(tag2);
232
+ for(k=0;k<v2.length;k++) objlist.push(v2[k]);
233
+ }
234
+ }
235
+ }
236
+ }
237
+ return(objlist);
238
+ }
239
+
240
+ function getParentBk(x){
241
+ var el=x.parentNode,c;
242
+ while(el.tagName.toUpperCase()!="HTML" && (c=getBk(el))=="transparent")
243
+ el=el.parentNode;
244
+ if(c=="transparent") c="#FFFFFF";
245
+ return(c);
246
+ }
247
+
248
+ function getBk(x){
249
+ var c=getStyleProp(x,"backgroundColor");
250
+ if(c==null || c=="transparent" || c.find("rgba(0, 0, 0, 0)"))
251
+ return("transparent");
252
+ if(c.find("rgb")) c=rgb2hex(c);
253
+ return(c);
254
+ }
255
+
256
+ function getPadding(x,side){
257
+ var p=getStyleProp(x,"padding"+side);
258
+ if(p==null || !p.find("px")) return(0);
259
+ return(parseInt(p));
260
+ }
261
+
262
+ function getStyleProp(x,prop){
263
+ if(x.currentStyle)
264
+ return(x.currentStyle[prop]);
265
+ if(document.defaultView.getComputedStyle)
266
+ return(document.defaultView.getComputedStyle(x,'')[prop]);
267
+ return(null);
268
+ }
269
+
270
+ function rgb2hex(value){
271
+ var hex="",v,h,i;
272
+ var regexp=/([0-9]+)[, ]+([0-9]+)[, ]+([0-9]+)/;
273
+ var h=regexp.exec(value);
274
+ for(i=1;i<4;i++){
275
+ v=parseInt(h[i]).toString(16);
276
+ if(v.length==1) hex+="0"+v;
277
+ else hex+=v;
278
+ }
279
+ return("#"+hex);
280
+ }
281
+
282
+ function Mix(c1,c2){
283
+ var i,step1,step2,x,y,r=new Array(3);
284
+ if(c1.length==4)step1=1;
285
+ else step1=2;
286
+ if(c2.length==4) step2=1;
287
+ else step2=2;
288
+ for(i=0;i<3;i++){
289
+ x=parseInt(c1.substr(1+step1*i,step1),16);
290
+ if(step1==1) x=16*x+x;
291
+ y=parseInt(c2.substr(1+step2*i,step2),16);
292
+ if(step2==1) y=16*y+y;
293
+ r[i]=Math.floor((x*50+y*50)/100);
294
+ r[i]=r[i].toString(16);
295
+ if(r[i].length==1) r[i]="0"+r[i];
296
+ }
297
+ return("#"+r[0]+r[1]+r[2]);
298
+ }
@@ -0,0 +1,298 @@
1
+ /* Nifty Corners Cube - rounded corners with CSS and Javascript
2
+ Copyright 2006 Alessandro Fulciniti (a.fulciniti@html.it)
3
+
4
+ This program is free software; you can redistribute it and/or modify
5
+ it under the terms of the GNU General Public License as published by
6
+ the Free Software Foundation; either version 2 of the License, or
7
+ (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License
15
+ along with this program; if not, write to the Free Software
16
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
+ */
18
+
19
+ var niftyOk=(document.getElementById && document.createElement && Array.prototype.push);
20
+ var niftyCss=false;
21
+
22
+ String.prototype.find=function(what){
23
+ return(this.indexOf(what)>=0 ? true : false);
24
+ }
25
+
26
+ var oldonload=window.onload;
27
+ if(typeof(NiftyLoad)!='function') NiftyLoad=function(){};
28
+ if(typeof(oldonload)=='function')
29
+ window.onload=function(){oldonload();AddCss();NiftyLoad()};
30
+ else window.onload=function(){AddCss();NiftyLoad()};
31
+
32
+ function AddCss(){
33
+ niftyCss=true;
34
+ var l=CreateEl("link");
35
+ l.setAttribute("type","text/css");
36
+ l.setAttribute("rel","stylesheet");
37
+ l.setAttribute("href","stylesheets/niftyCorners.css");
38
+ l.setAttribute("media","screen");
39
+ document.getElementsByTagName("head")[0].appendChild(l);
40
+ }
41
+
42
+ function Nifty(selector,options){
43
+ if(niftyOk==false) return;
44
+ if(niftyCss==false) AddCss();
45
+ var i,v=selector.split(","),h=0;
46
+ if(options==null) options="";
47
+ if(options.find("fixed-height"))
48
+ h=getElementsBySelector(v[0])[0].offsetHeight;
49
+ for(i=0;i<v.length;i++)
50
+ Rounded(v[i],options);
51
+ if(options.find("height")) SameHeight(selector,h);
52
+ }
53
+
54
+ function Rounded(selector,options){
55
+ var i,top="",bottom="",v=new Array();
56
+ if(options!=""){
57
+ options=options.replace("left","tl bl");
58
+ options=options.replace("right","tr br");
59
+ options=options.replace("top","tr tl");
60
+ options=options.replace("bottom","br bl");
61
+ options=options.replace("transparent","alias");
62
+ if(options.find("tl")){
63
+ top="both";
64
+ if(!options.find("tr")) top="left";
65
+ }
66
+ else if(options.find("tr")) top="right";
67
+ if(options.find("bl")){
68
+ bottom="both";
69
+ if(!options.find("br")) bottom="left";
70
+ }
71
+ else if(options.find("br")) bottom="right";
72
+ }
73
+ if(top=="" && bottom=="" && !options.find("none")){top="both";bottom="both";}
74
+ v=getElementsBySelector(selector);
75
+ for(i=0;i<v.length;i++){
76
+ FixIE(v[i]);
77
+ if(top!="") AddTop(v[i],top,options);
78
+ if(bottom!="") AddBottom(v[i],bottom,options);
79
+ }
80
+ }
81
+
82
+ function AddTop(el,side,options){
83
+ var d=CreateEl("b"),lim=4,border="",p,i,btype="r",bk,color;
84
+ d.style.marginLeft="-"+getPadding(el,"Left")+"px";
85
+ d.style.marginRight="-"+getPadding(el,"Right")+"px";
86
+ if(options.find("alias") || (color=getBk(el))=="transparent"){
87
+ color="transparent";bk="transparent"; border=getParentBk(el);btype="t";
88
+ }
89
+ else{
90
+ bk=getParentBk(el); border=Mix(color,bk);
91
+ }
92
+ d.style.background=bk;
93
+ d.className="niftycorners";
94
+ p=getPadding(el,"Top");
95
+ if(options.find("small")){
96
+ d.style.marginBottom=(p-2)+"px";
97
+ btype+="s"; lim=2;
98
+ }
99
+ else if(options.find("big")){
100
+ d.style.marginBottom=(p-10)+"px";
101
+ btype+="b"; lim=8;
102
+ }
103
+ else d.style.marginBottom=(p-5)+"px";
104
+ for(i=1;i<=lim;i++)
105
+ d.appendChild(CreateStrip(i,side,color,border,btype));
106
+ el.style.paddingTop="0";
107
+ el.insertBefore(d,el.firstChild);
108
+ }
109
+
110
+ function AddBottom(el,side,options){
111
+ var d=CreateEl("b"),lim=4,border="",p,i,btype="r",bk,color;
112
+ d.style.marginLeft="-"+getPadding(el,"Left")+"px";
113
+ d.style.marginRight="-"+getPadding(el,"Right")+"px";
114
+ if(options.find("alias") || (color=getBk(el))=="transparent"){
115
+ color="transparent";bk="transparent"; border=getParentBk(el);btype="t";
116
+ }
117
+ else{
118
+ bk=getParentBk(el); border=Mix(color,bk);
119
+ }
120
+ d.style.background=bk;
121
+ d.className="niftycorners";
122
+ p=getPadding(el,"Bottom");
123
+ if(options.find("small")){
124
+ d.style.marginTop=(p-2)+"px";
125
+ btype+="s"; lim=2;
126
+ }
127
+ else if(options.find("big")){
128
+ d.style.marginTop=(p-10)+"px";
129
+ btype+="b"; lim=8;
130
+ }
131
+ else d.style.marginTop=(p-5)+"px";
132
+ for(i=lim;i>0;i--)
133
+ d.appendChild(CreateStrip(i,side,color,border,btype));
134
+ el.style.paddingBottom=0;
135
+ el.appendChild(d);
136
+ }
137
+
138
+ function CreateStrip(index,side,color,border,btype){
139
+ var x=CreateEl("b");
140
+ x.className=btype+index;
141
+ x.style.backgroundColor=color;
142
+ x.style.borderColor=border;
143
+ if(side=="left"){
144
+ x.style.borderRightWidth="0";
145
+ x.style.marginRight="0";
146
+ }
147
+ else if(side=="right"){
148
+ x.style.borderLeftWidth="0";
149
+ x.style.marginLeft="0";
150
+ }
151
+ return(x);
152
+ }
153
+
154
+ function CreateEl(x){
155
+ return(document.createElement(x));
156
+ }
157
+
158
+ function FixIE(el){
159
+ if(el.currentStyle!=null && el.currentStyle.hasLayout!=null && el.currentStyle.hasLayout==false)
160
+ el.style.display="inline-block";
161
+ }
162
+
163
+ function SameHeight(selector,maxh){
164
+ var i,v=selector.split(","),t,j,els=[],gap;
165
+ for(i=0;i<v.length;i++){
166
+ t=getElementsBySelector(v[i]);
167
+ els=els.concat(t);
168
+ }
169
+ for(i=0;i<els.length;i++){
170
+ if(els[i].offsetHeight>maxh) maxh=els[i].offsetHeight;
171
+ els[i].style.height="auto";
172
+ }
173
+ for(i=0;i<els.length;i++){
174
+ gap=maxh-els[i].offsetHeight;
175
+ if(gap>0){
176
+ t=CreateEl("b");t.className="niftyfill";t.style.height=gap+"px";
177
+ nc=els[i].lastChild;
178
+ if(nc.className=="niftycorners")
179
+ els[i].insertBefore(t,nc);
180
+ else els[i].appendChild(t);
181
+ }
182
+ }
183
+ }
184
+
185
+ function getElementsBySelector(selector){
186
+ var i,j,selid="",selclass="",tag=selector,tag2="",v2,k,f,a,s=[],objlist=[],c;
187
+ if(selector.find("#")){ //id selector like "tag#id"
188
+ if(selector.find(" ")){ //descendant selector like "tag#id tag"
189
+ s=selector.split(" ");
190
+ var fs=s[0].split("#");
191
+ if(fs.length==1) return(objlist);
192
+ f=document.getElementById(fs[1]);
193
+ if(f){
194
+ v=f.getElementsByTagName(s[1]);
195
+ for(i=0;i<v.length;i++) objlist.push(v[i]);
196
+ }
197
+ return(objlist);
198
+ }
199
+ else{
200
+ s=selector.split("#");
201
+ tag=s[0];
202
+ selid=s[1];
203
+ if(selid!=""){
204
+ f=document.getElementById(selid);
205
+ if(f) objlist.push(f);
206
+ return(objlist);
207
+ }
208
+ }
209
+ }
210
+ if(selector.find(".")){ //class selector like "tag.class"
211
+ s=selector.split(".");
212
+ tag=s[0];
213
+ selclass=s[1];
214
+ if(selclass.find(" ")){ //descendant selector like tag1.classname tag2
215
+ s=selclass.split(" ");
216
+ selclass=s[0];
217
+ tag2=s[1];
218
+ }
219
+ }
220
+ var v=document.getElementsByTagName(tag); // tag selector like "tag"
221
+ if(selclass==""){
222
+ for(i=0;i<v.length;i++) objlist.push(v[i]);
223
+ return(objlist);
224
+ }
225
+ for(i=0;i<v.length;i++){
226
+ c=v[i].className.split(" ");
227
+ for(j=0;j<c.length;j++){
228
+ if(c[j]==selclass){
229
+ if(tag2=="") objlist.push(v[i]);
230
+ else{
231
+ v2=v[i].getElementsByTagName(tag2);
232
+ for(k=0;k<v2.length;k++) objlist.push(v2[k]);
233
+ }
234
+ }
235
+ }
236
+ }
237
+ return(objlist);
238
+ }
239
+
240
+ function getParentBk(x){
241
+ var el=x.parentNode,c;
242
+ while(el.tagName.toUpperCase()!="HTML" && (c=getBk(el))=="transparent")
243
+ el=el.parentNode;
244
+ if(c=="transparent") c="#FFFFFF";
245
+ return(c);
246
+ }
247
+
248
+ function getBk(x){
249
+ var c=getStyleProp(x,"backgroundColor");
250
+ if(c==null || c=="transparent" || c.find("rgba(0, 0, 0, 0)"))
251
+ return("transparent");
252
+ if(c.find("rgb")) c=rgb2hex(c);
253
+ return(c);
254
+ }
255
+
256
+ function getPadding(x,side){
257
+ var p=getStyleProp(x,"padding"+side);
258
+ if(p==null || !p.find("px")) return(0);
259
+ return(parseInt(p));
260
+ }
261
+
262
+ function getStyleProp(x,prop){
263
+ if(x.currentStyle)
264
+ return(x.currentStyle[prop]);
265
+ if(document.defaultView.getComputedStyle)
266
+ return(document.defaultView.getComputedStyle(x,'')[prop]);
267
+ return(null);
268
+ }
269
+
270
+ function rgb2hex(value){
271
+ var hex="",v,h,i;
272
+ var regexp=/([0-9]+)[, ]+([0-9]+)[, ]+([0-9]+)/;
273
+ var h=regexp.exec(value);
274
+ for(i=1;i<4;i++){
275
+ v=parseInt(h[i]).toString(16);
276
+ if(v.length==1) hex+="0"+v;
277
+ else hex+=v;
278
+ }
279
+ return("#"+hex);
280
+ }
281
+
282
+ function Mix(c1,c2){
283
+ var i,step1,step2,x,y,r=new Array(3);
284
+ if(c1.length==4)step1=1;
285
+ else step1=2;
286
+ if(c2.length==4) step2=1;
287
+ else step2=2;
288
+ for(i=0;i<3;i++){
289
+ x=parseInt(c1.substr(1+step1*i,step1),16);
290
+ if(step1==1) x=16*x+x;
291
+ y=parseInt(c2.substr(1+step2*i,step2),16);
292
+ if(step2==1) y=16*y+y;
293
+ r[i]=Math.floor((x*50+y*50)/100);
294
+ r[i]=r[i].toString(16);
295
+ if(r[i].length==1) r[i]="0"+r[i];
296
+ }
297
+ return("#"+r[0]+r[1]+r[2]);
298
+ }
@@ -0,0 +1,10 @@
1
+ $(document).ready(function() {
2
+ $(".tablesorter").tablesorter({
3
+ sortColumn: 'name', // Integer or String of the name of the column to sort by.
4
+ cssAsc: 'sort asc', // class name for ascending sorting action to header
5
+ cssDesc: 'sort desc', // class name for descending sorting action to header
6
+ headerClass: 'header' // class name for headers (th's)
7
+ });
8
+ $('#tabs-container > ul').tabs();
9
+ });
10
+