slashport 0.15.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. data/Rakefile +35 -0
  2. data/app/controllers/application.rb +2 -0
  3. data/app/controllers/cfg.rb +8 -0
  4. data/app/controllers/exceptions.rb +13 -0
  5. data/app/controllers/var.rb +27 -0
  6. data/app/controllers/vardoc.rb +7 -0
  7. data/app/helpers/cfg_helper.rb +5 -0
  8. data/app/helpers/global_helpers.rb +5 -0
  9. data/app/helpers/var_helper.rb +5 -0
  10. data/app/helpers/vardoc_helper.rb +5 -0
  11. data/app/models/base/attribute.rb +13 -0
  12. data/app/models/base/component.rb +206 -0
  13. data/app/models/base/exec.rb +40 -0
  14. data/app/models/base/registry.rb +4 -0
  15. data/app/models/base/tuple.rb +31 -0
  16. data/app/models/components/linuxhost.rb +125 -0
  17. data/app/models/components/linuxprocess.rb +55 -0
  18. data/app/models/components/mysql.rb +110 -0
  19. data/app/models/components/puppet.rb +20 -0
  20. data/app/views/cfg/index.html.erb +1 -0
  21. data/app/views/exceptions/not_acceptable.html.erb +63 -0
  22. data/app/views/exceptions/not_found.html.erb +47 -0
  23. data/app/views/layout/application.html.erb +12 -0
  24. data/app/views/var/index.json.erb +1 -0
  25. data/app/views/var/index.pp.erb +10 -0
  26. data/app/views/var/index.text.erb +18 -0
  27. data/app/views/vardoc/index.html.erb +1 -0
  28. data/autotest/discover.rb +1 -0
  29. data/autotest/merb.rb +149 -0
  30. data/autotest/merb_rspec.rb +165 -0
  31. data/bin/slashport +130 -0
  32. data/bin/slashportfetch +103 -0
  33. data/config/environments/development.rb +15 -0
  34. data/config/environments/production.rb +10 -0
  35. data/config/environments/rake.rb +11 -0
  36. data/config/environments/staging.rb +10 -0
  37. data/config/environments/test.rb +12 -0
  38. data/config/init.rb +26 -0
  39. data/config/rack.rb +11 -0
  40. data/config/router.rb +41 -0
  41. data/config/test.conf +2 -0
  42. data/doc/rdoc/generators/merb_generator.rb +1362 -0
  43. data/doc/rdoc/generators/template/merb/api_grease.js +640 -0
  44. data/doc/rdoc/generators/template/merb/index.html.erb +37 -0
  45. data/doc/rdoc/generators/template/merb/merb.css +252 -0
  46. data/doc/rdoc/generators/template/merb/merb.rb +351 -0
  47. data/doc/rdoc/generators/template/merb/merb_doc_styles.css +492 -0
  48. data/doc/rdoc/generators/template/merb/prototype.js +2515 -0
  49. data/lib/slashport.rb +93 -0
  50. data/public/favicon.ico +0 -0
  51. data/public/images/merb.jpg +0 -0
  52. data/public/javascripts/application.js +1 -0
  53. data/public/merb.fcgi +22 -0
  54. data/public/robots.txt +5 -0
  55. data/public/stylesheets/master.css +119 -0
  56. data/spec/requests/cfg_spec.rb +7 -0
  57. data/spec/requests/config_spec.rb +7 -0
  58. data/spec/requests/configdoc_spec.rb +7 -0
  59. data/spec/requests/var_spec.rb +7 -0
  60. data/spec/requests/vardoc_spec.rb +7 -0
  61. data/spec/spec.opts +0 -0
  62. data/spec/spec_helper.rb +20 -0
  63. metadata +156 -0
@@ -0,0 +1,640 @@
1
+
2
+ function setupPage(){
3
+ hookUpActiveSearch();
4
+ hookUpTabs();
5
+ suppressPostbacks();
6
+ var url_params = getUrlParams();
7
+ if (url_params != null){
8
+ loadUrlParams(url_params);
9
+ }else{
10
+ loadDefaults();
11
+ }
12
+ resizeDivs();
13
+ window.onresize = function(){ resizeDivs(); };
14
+ }
15
+
16
+ function getUrlParams(){
17
+ var window_location = window.location.href
18
+ var param_pos = window_location.search(/\?/)
19
+ if (param_pos > 0){
20
+ return(window_location.slice(param_pos, window_location.length));
21
+ }else{
22
+ return(null);
23
+ }
24
+ }
25
+
26
+ function loadUrlParams(url_param){
27
+ //get the tabs
28
+ var t = getTabs();
29
+ // now find our variables
30
+ var s_params = /(\?)(a=.+?)(&)(name=.*)/;
31
+ var results = url_param.match(s_params);
32
+ url_anchor = results[2].replace(/a=/,'');
33
+
34
+ if (url_anchor.match(/M.+/)){//load the methods tab and scroller content
35
+ setActiveTabAndLoadContent(t[0]);
36
+ }else{
37
+ if(url_anchor.match(/C.+/)){ //load the classes tab and scroller content
38
+ setActiveTabAndLoadContent(t[1]);
39
+ }else{
40
+ if (url_anchor.match(/F.+/)){//load the files tab
41
+ setActiveTabAndLoadContent(t[2]);
42
+ }else{
43
+ // default to loading the methods
44
+ setActiveTabAndLoadContent(t[0]);
45
+ }
46
+ }
47
+ }
48
+ paramLoadOfContentAnchor(url_anchor + "_link");
49
+ }
50
+
51
+ function updateUrlParams(anchor_id, name){
52
+ //Also setting the page title
53
+ //window.document.title = name + " method - MerbBrain.com ";
54
+
55
+ //updating the window location
56
+ var current_href = window.location.href;
57
+ //var m_name = name.replace("?","?");
58
+ var rep_str = ".html?a=" + anchor_id + "&name=" + name;
59
+ var new_href = current_href.replace(/\.html.*/, rep_str);
60
+ if (new_href != current_href){
61
+ window.location.href = new_href;
62
+ }
63
+ }
64
+
65
+ //does as it says...
66
+ function hookUpActiveSearch(){
67
+
68
+ var s_field = $('searchForm').getInputs('text')[0];
69
+ //var s_field = document.forms[0].searchText;
70
+ Event.observe(s_field, 'keydown', function(event) {
71
+ var el = Event.element(event);
72
+ var key = event.which || event.keyCode;
73
+
74
+ switch (key) {
75
+ case Event.KEY_RETURN:
76
+ forceLoadOfContentAnchor(getCurrentAnchor());
77
+ Event.stop(event);
78
+ break;
79
+
80
+ case Event.KEY_UP:
81
+ scrollListToElementOffset(getCurrentAnchor(),-1);
82
+ break;
83
+
84
+ case Event.KEY_DOWN:
85
+ scrollListToElementOffset(getCurrentAnchor(),1);
86
+ break;
87
+
88
+ default:
89
+ break;
90
+ }
91
+
92
+ });
93
+
94
+ Event.observe(s_field, 'keyup', function(event) {
95
+ var el = Event.element(event);
96
+ var key = event.which || event.keyCode;
97
+ switch (key) {
98
+ case Event.KEY_RETURN:
99
+ Event.stop(event);
100
+ break;
101
+
102
+ case Event.KEY_UP:
103
+ break;
104
+
105
+ case Event.KEY_DOWN:
106
+ break;
107
+
108
+ default:
109
+ scrollToName(el.value);
110
+ setSavedSearch(getCurrentTab(), el.value);
111
+ break;
112
+ }
113
+
114
+ });
115
+
116
+ Event.observe(s_field, 'keypress', function(event){
117
+ var el = Event.element(event);
118
+ var key = event.which || event.keyCode;
119
+ switch (key) {
120
+ case Event.KEY_RETURN:
121
+ Event.stop(event);
122
+ break;
123
+
124
+ default:
125
+ break;
126
+ }
127
+
128
+ });
129
+
130
+ //Event.observe(document, 'keypress', function(event){
131
+ // var key = event.which || event.keyCode;
132
+ // if (key == Event.KEY_TAB){
133
+ // cycleNextTab();
134
+ // Event.stop(event);
135
+ // }
136
+ //});
137
+ }
138
+
139
+ function hookUpTabs(){
140
+
141
+ var tabs = getTabs();
142
+ for(x=0; x < tabs.length; x++)
143
+ {
144
+ Event.observe(tabs[x], 'click', function(event){
145
+ var el = Event.element(event);
146
+ setActiveTabAndLoadContent(el);
147
+ });
148
+ //tabs[x].onclick = function (){ return setActiveTabAndLoadContent(this);}; //the prototype guys say this is bad..
149
+ }
150
+
151
+ }
152
+
153
+ function suppressPostbacks(){
154
+ Event.observe('searchForm', 'submit', function(event){
155
+ Event.stop(event);
156
+ });
157
+ }
158
+
159
+ function loadDefaults(){
160
+ var t = getTabs();
161
+ setActiveTabAndLoadContent(t[0]); //default loading of the first tab
162
+ }
163
+
164
+ function resizeDivs(){
165
+ var inner_height = 700;
166
+ if (window.innerHeight){
167
+ inner_height = window.innerHeight; //all browsers except IE use this to determine the space available inside a window. Thank you Microsoft!!
168
+ }else{
169
+ if(document.documentElement.clientHeight > 0){ //IE uses this in 'strict' mode
170
+ inner_height = document.documentElement.clientHeight;
171
+ }else{
172
+ inner_height = document.body.clientHeight; //IE uses this in 'quirks' mode
173
+ }
174
+ }
175
+ $('rdocContent').style.height = (inner_height - 92) + "px";//Thankfully all browsers can agree on how to set the height of a div
176
+ $('listScroller').style.height = (inner_height - 88) + "px";
177
+ }
178
+
179
+ //The main function for handling clicks on the tabs
180
+ function setActiveTabAndLoadContent(current_tab){
181
+ changeLoadingStatus("on");
182
+ var tab_string = String(current_tab.innerHTML).strip(); //thank you ProtoType!
183
+ switch (tab_string){
184
+ case "classes":
185
+ setCurrentTab("classes");
186
+ loadScrollerContent('fr_class_index.html');
187
+ setSearchFieldValue(getSavedSearch("classes"));
188
+ scrollToName(getSavedSearch("classes"));
189
+ setSearchFocus();
190
+ break;
191
+
192
+ case "files":
193
+ setCurrentTab("files");
194
+ loadScrollerContent('fr_file_index.html');
195
+ setSearchFieldValue(getSavedSearch("files"));
196
+ scrollToName(getSavedSearch("files"));
197
+ setSearchFocus();
198
+ break;
199
+
200
+ case "methods":
201
+ setCurrentTab("methods");
202
+ loadScrollerContent('fr_method_index.html');
203
+ setSearchFieldValue(getSavedSearch("methods"));
204
+ scrollToName(getSavedSearch("methods"));
205
+ setSearchFocus();
206
+ break;
207
+
208
+ default:
209
+ break;
210
+ }
211
+ changeLoadingStatus("off");
212
+ }
213
+
214
+ function cycleNextTab(){
215
+ var currentT = getCurrentTab();
216
+ var tabs = getTabs();
217
+ if (currentT == "methods"){
218
+ setActiveTabAndLoadContent(tabs[1]);
219
+ setSearchFocus();
220
+ }else{
221
+ if (currentT == "classes"){
222
+ setActiveTabAndLoadContent(tabs[2]);
223
+ setSearchFocus();
224
+ }else{
225
+ if (currentT == "files"){
226
+ setActiveTabAndLoadContent(tabs[0]);
227
+ setSearchFocus();
228
+ }
229
+ }
230
+ }
231
+ }
232
+
233
+ function getTabs(){
234
+ return($('groupType').getElementsByTagName('li'));
235
+ }
236
+
237
+ var Active_Tab = "";
238
+ function getCurrentTab(){
239
+ return Active_Tab;
240
+ }
241
+
242
+ function setCurrentTab(tab_name){
243
+ var tabs = getTabs();
244
+ for(x=0; x < tabs.length; x++)
245
+ {
246
+ if(tabs[x].innerHTML.strip() == tab_name) //W00t!!! String.prototype.strip!
247
+ {
248
+ tabs[x].className = "activeLi";
249
+ Active_Tab = tab_name;
250
+ }
251
+ else
252
+ {
253
+ tabs[x].className = "";
254
+ }
255
+ }
256
+ }
257
+
258
+ //These globals should not be used globally (hence the getters and setters)
259
+ var File_Search = "";
260
+ var Method_Search = "";
261
+ var Class_Search = "";
262
+ function setSavedSearch(tab_name, s_val){
263
+ switch(tab_name){
264
+ case "methods":
265
+ Method_Search = s_val;
266
+ break;
267
+ case "files":
268
+ File_Search = s_val;
269
+ break;
270
+ case "classes":
271
+ Class_Search = s_val;
272
+ break;
273
+ }
274
+ }
275
+
276
+ function getSavedSearch(tab_name){
277
+ switch(tab_name){
278
+ case "methods":
279
+ return (Method_Search);
280
+ break;
281
+ case "files":
282
+ return (File_Search);
283
+ break;
284
+ case "classes":
285
+ return (Class_Search);
286
+ break;
287
+ }
288
+ }
289
+
290
+ //These globals handle the history stack
291
+
292
+
293
+ function setListScrollerContent(s){
294
+
295
+ $('listScroller').innerHTML = s;
296
+ }
297
+
298
+ function setMainContent(s){
299
+
300
+ $('rdocContent').innerHTML = s;
301
+ }
302
+
303
+ function setSearchFieldValue(s){
304
+
305
+ document.forms[0].searchText.value = s;
306
+ }
307
+
308
+ function getSearchFieldValue(){
309
+
310
+ return Form.Element.getValue('searchText');
311
+ }
312
+
313
+ function setSearchFocus(){
314
+
315
+ document.forms[0].searchText.focus();
316
+ }
317
+
318
+ var Anchor_ID_Of_Current = null; // holds the last highlighted anchor tag in the scroll lsit
319
+ function getCurrentAnchor(){
320
+ return(Anchor_ID_Of_Current);
321
+ }
322
+
323
+ function setCurrentAnchor(a_id){
324
+ Anchor_ID_Of_Current = a_id;
325
+ }
326
+
327
+ //var Index_Of_Current = 0; //holds the last highlighted index
328
+ //function getCurrentIndex(){
329
+ // return (Index_Of_Current);
330
+ //}
331
+
332
+ //function setCurrentIndex(new_i){
333
+ // Index_Of_Current = new_i;
334
+ //}
335
+
336
+ function loadScrollerContent(url){
337
+
338
+ var scrollerHtml = new Ajax.Request(url, {
339
+ asynchronous: false,
340
+ method: 'get',
341
+ onComplete: function(method_data) {
342
+ setListScrollerContent(method_data.responseText);
343
+ }
344
+ });
345
+
346
+ }
347
+
348
+ //called primarily from the links inside the scroller list
349
+ //loads the main page div then jumps to the anchor/element with id
350
+ function loadContent(url, anchor_id){
351
+
352
+ var mainHtml = new Ajax.Request(url, {
353
+ method: 'get',
354
+ onLoading: changeLoadingStatus("on"),
355
+ onSuccess: function(method_data) {
356
+ setMainContent(method_data.responseText);},
357
+ onComplete: function(request) {
358
+ changeLoadingStatus("off");
359
+ new jumpToAnchor(anchor_id);
360
+ }
361
+ });
362
+ }
363
+
364
+ //An alternative function that also will stuff the index history for methods, files, classes
365
+ function loadIndexContent(url, anchor_id, name, scope)
366
+ {
367
+ if (From_URL_Param == true){
368
+ var mainHtml = new Ajax.Request(url, {
369
+ method: 'get',
370
+ onLoading: changeLoadingStatus("on"),
371
+ onSuccess: function(method_data) {
372
+ setMainContent(method_data.responseText);},
373
+ onComplete: function(request) {
374
+ changeLoadingStatus("off");
375
+ updateBrowserBar(name, anchor_id, scope);
376
+ new jumpToAnchor(anchor_id);}
377
+ });
378
+ From_URL_Param = false;
379
+ }else{
380
+ updateUrlParams(anchor_id, name);
381
+ }
382
+
383
+ }
384
+
385
+ function updateBrowserBar(name, anchor_id, scope){
386
+ if (getCurrentTab() == "methods"){
387
+ $('browserBarInfo').update("<small>class/module:</small>&nbsp;<a href=\"#\" onclick=\"jumpToTop();\">" + scope + "</a>&nbsp;&nbsp;<small>method:</small>&nbsp;<strong><a href=\"#\" onclick=\"jumpToAnchor('"+ anchor_id +"')\">" + name + "</a></strong> ");
388
+ }else{ if(getCurrentTab() == "classes"){
389
+ $('browserBarInfo').update("<small>class/module:</small>&nbsp;<a href=\"#\" onclick=\"jumpToTop();\">" + scope + "::" + name + "</strong> ");
390
+ }else{
391
+ $('browserBarInfo').update("<small>file:</small>&nbsp;<a href=\"#\" onclick=\"jumpToTop();\">" + scope + "/" + name + "</strong> ");
392
+ }
393
+ }
394
+ }
395
+
396
+
397
+ // Force loads the contents of the index of the current scroller list. It does this by
398
+ // pulling the onclick method out and executing it manually.
399
+ function forceLoadOfContent(index_to_load){
400
+ var scroller = $('listScroller');
401
+ var a_array = scroller.getElementsByTagName('a');
402
+ if ((index_to_load >= 0) && (index_to_load < a_array.length)){
403
+ var load_element = a_array[index_to_load];
404
+ var el_text = load_element.innerHTML.strip();
405
+ setSearchFieldValue(el_text);
406
+ setSavedSearch(getCurrentTab(), el_text);
407
+ eval("new " + load_element.onclick);
408
+ }
409
+ }
410
+
411
+ function forceLoadOfContentAnchor(anchor_id){
412
+
413
+ var load_element = $(anchor_id);
414
+ if (load_element != null){
415
+ var el_text = load_element.innerHTML.strip();
416
+ setSearchFieldValue(el_text);
417
+ scrollToAnchor(anchor_id);
418
+ setSavedSearch(getCurrentTab(), el_text);
419
+ eval("new " + load_element.onclick);
420
+ }
421
+ }
422
+
423
+ var From_URL_Param = false;
424
+ function paramLoadOfContentAnchor(anchor_id){
425
+ From_URL_Param = true;
426
+ forceLoadOfContentAnchor(anchor_id);
427
+ }
428
+
429
+ //this handles the up/down keystrokes to move the selection of items in the list
430
+ function scrollListToElementOffset(anchor_id, offset){
431
+ var scroller = $('listScroller');
432
+ var a_array = scroller.getElementsByTagName('a');
433
+ var current_index = findIndexOfAnchor(a_array, anchor_id);
434
+ if ((current_index >= 0) && (current_index < a_array.length)){
435
+ scrollListToAnchor(a_array[current_index + offset].id);
436
+ setListActiveAnchor(a_array[current_index + offset].id);
437
+ }
438
+ }
439
+
440
+ function findIndexOfAnchor(a_array, anchor_id){
441
+ var found=false;
442
+ var counter = 0;
443
+ while(!found && counter < a_array.length){
444
+ if (a_array[counter].id == anchor_id){
445
+ found = true;
446
+ }else{
447
+ counter +=1;
448
+ }
449
+ }
450
+ return(counter);
451
+ }
452
+
453
+ function scrollToName(searcher_name){
454
+
455
+ var scroller = $('listScroller');
456
+ var a_array = scroller.getElementsByTagName('a');
457
+
458
+ if (!searcher_name.match(new RegExp(/\s+/))){ //if searcher name is blank
459
+
460
+ var searcher_pattern = new RegExp("^"+searcher_name, "i"); //the "i" is for case INsensitive
461
+ var found_index = -1;
462
+
463
+ var found = false;
464
+ var x = 0;
465
+ while(!found && x < a_array.length){
466
+ if(a_array[x].innerHTML.match(searcher_pattern)){
467
+ found = true;
468
+ found_index = x;
469
+ }
470
+ else{
471
+ x++;
472
+ }
473
+ }
474
+
475
+ // // an attempt at binary searching... have not given up on this yet...
476
+ //found_index = binSearcher(searcher_pattern, a_array, 0, a_array.length);
477
+
478
+ if ((found_index >= 0) && (found_index < a_array.length)){
479
+
480
+ scrollListToAnchor(a_array[found_index].id);//scroll to the item
481
+ setListActiveAnchor(a_array[found_index].id);//highlight the item
482
+ }
483
+ }else{ //since searcher name is blank
484
+ //scrollListToIndex(a_array, 0);//scroll to the item
485
+ //setListActiveItem(a_array, 0);//highlight the item
486
+ }
487
+ }
488
+
489
+ function scrollToAnchor(anchor_id){
490
+ var scroller = $('listScroller');
491
+ if ($(anchor_id) != null){
492
+ scrollListToAnchor(anchor_id);
493
+ setListActiveAnchor(anchor_id);
494
+ }
495
+ }
496
+
497
+ function getY(element){
498
+
499
+ var y = 0;
500
+ for( var e = element; e; e = e.offsetParent)//iterate the offset Parents
501
+ {
502
+ y += e.offsetTop; //add up the offsetTop values
503
+ }
504
+ //for( e = element.parentNode; e && e != document.body; e = e.parentNode)
505
+ // if (e.scrollTop) y -= e.scrollTop; //subtract scrollbar values
506
+ return y;
507
+ }
508
+
509
+ //function setListActiveItem(item_array, active_index){
510
+ //
511
+ // item_array[getCurrentIndex()].className = "";
512
+ // setCurrentIndex(active_index);
513
+ // item_array[getCurrentIndex()].className = "activeA"; //setting the active class name
514
+ //}
515
+
516
+ function setListActiveAnchor(active_anchor){
517
+ if ((getCurrentAnchor() != null) && ($(getCurrentAnchor()) != null)){
518
+ $(getCurrentAnchor()).className = "";
519
+ }
520
+ setCurrentAnchor(active_anchor);
521
+ $(getCurrentAnchor()).className = "activeA";
522
+
523
+ }
524
+
525
+ //handles the scrolling of the list and setting of the current index
526
+ //function scrollListToIndex(a_array, scroll_index){
527
+ // if (scroll_index > 0){
528
+ // var scroller = $('listScroller');
529
+ // scroller.scrollTop = getY(a_array[scroll_index]) - 120; //the -120 is what keeps it from going to the top...
530
+ // }
531
+ //}
532
+
533
+ function scrollListToAnchor(scroll2_anchor){
534
+ var scroller = $('listScroller');
535
+ scroller.scrollTop = getY($(scroll2_anchor)) - 120;
536
+ }
537
+
538
+ function jumpToAnchor(anchor_id){
539
+
540
+ var contentScroller = $('rdocContent');
541
+ var a_div = $(anchor_id);
542
+ contentScroller.scrollTop = getY(a_div) - 80; //80 is the offset to adjust scroll point
543
+ var a_title = $(anchor_id + "_title");
544
+ a_title.style.backgroundColor = "#222";
545
+ a_title.style.color = "#FFF";
546
+ a_title.style.padding = "3px";
547
+ // a_title.style.borderBottom = "2px solid #ccc";
548
+
549
+ //other attempts
550
+ //a_div.className = "activeMethod"; //setting the active class name
551
+ //a_div.style.backgroundColor = "#ffc";
552
+ //var titles = a_div.getElementsByClassName("title");
553
+ //titles[0].className = "activeTitle";
554
+
555
+ }
556
+
557
+ function jumpToTop(){
558
+ $('rdocContent').scrollTop = 0;
559
+ }
560
+
561
+ function changeLoadingStatus(status){
562
+ if (status == "on"){
563
+ $('loadingStatus').show();
564
+ }
565
+ else{
566
+ $('loadingStatus').hide();
567
+ }
568
+ }
569
+
570
+ //************* Misc functions (mostly from the old rdocs) ***********************
571
+ //snagged code from the old templating system
572
+ function toggleSource( id ){
573
+
574
+ var elem
575
+ var link
576
+
577
+ if( document.getElementById )
578
+ {
579
+ elem = document.getElementById( id )
580
+ link = document.getElementById( "l_" + id )
581
+ }
582
+ else if ( document.all )
583
+ {
584
+ elem = eval( "document.all." + id )
585
+ link = eval( "document.all.l_" + id )
586
+ }
587
+ else
588
+ return false;
589
+
590
+ if( elem.style.display == "block" )
591
+ {
592
+ elem.style.display = "none"
593
+ link.innerHTML = "show source"
594
+ }
595
+ else
596
+ {
597
+ elem.style.display = "block"
598
+ link.innerHTML = "hide source"
599
+ }
600
+ }
601
+
602
+ function openCode( url ){
603
+ window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
604
+ }
605
+
606
+ //this function handles the ajax calling and afterits loaded the jumping to the anchor...
607
+ function jsHref(url){
608
+ //alert(url);
609
+ var mainHtml = new Ajax.Request(url, {
610
+ method: 'get',
611
+ onSuccess: function(method_data) {
612
+ setMainContent(method_data.responseText);}
613
+ });
614
+ }
615
+
616
+ //function comparePatterns(string, regexp){
617
+ // var direction = 0;
618
+ //
619
+ //
620
+ // return (direction)
621
+ //}
622
+
623
+ ////returns the index of the element
624
+ //function binSearcher(regexp_pattern, list, start_index, stop_index){
625
+ // //divide the list in half
626
+ // var split_point = 0;
627
+ // split_point = parseInt((stop_index - start_index)/2);
628
+ // direction = comparePatterns(list[split_point].innerHTML, regexp_pattern);
629
+ // if(direction < 0)
630
+ // return (binSearcher(regexp_pattern, list, start_index, split_point));
631
+ // else
632
+ // if(direction > 0)
633
+ // return (binSearcher(regexp_pattern, list, split_point, stop_index));
634
+ // else
635
+ // return(split_point);
636
+ //
637
+ //}
638
+
639
+
640
+