Blame view

frontend/web/js/external/jquery.supertoc.js 1.65 KB
559be889   Alexander Karnovsky   Init test-9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
  /**

   *	Super TOC! v1.0 - Table Of Content jQuery plugin

   *  http://www.kyrielles.net/

   *  

   *  Copyright (c) 2010-2011 Alan Frog

   *  Licensed under the GNU General Public License

   *  See <license.txt> or <http://www.gnu.org/licenses/>

   *  

   *  Requires: jQuery <http://jquery.com/>

   */

  (function($){

  	$.fn.superToc = function( options ){

  

  		// Default settings

  		var settings = {

  			headings:"h1,h2,h3"

  		};

  		

  		var clean = function(s){

  			var r=s.toLowerCase();

  			r = r.replace(/\s/g,"");

  			r = r.replace(/[àáâãäå]/g,"a");

  			r = r.replace(/æ/g,"ae");

  			r = r.replace(/ç/g,"c");

  			r = r.replace(/[èéêë]/g,"e");

  			r = r.replace(/[ìíîï]/g,"i");

  			r = r.replace(/ñ/g,"n");                

  			r = r.replace(/[òóôõö]/g,"o");

  			r = r.replace(/œ/g,"oe");

  			r = r.replace(/[ùúûü]/g,"u");

  			r = r.replace(/[ýÿ]/g,"y");

  			r = r.replace(/\W/g,"");

  			r = r.replace(/\W/g,"");

  			return r;

  		};

  			

  		// Applying plugin

  		return this.each( function() {

  		

  			// Client settings

  			if ( options ) { 

  				$.extend( settings, options );

  			}

  

  			//var self = this;

  			var domObj = $( this );

  			var toc = "";

  			

  			$( settings.headings, domObj ).each(function(){

  				var curtag = $( this );

  				var tagId = curtag.attr( "id" );

  				var tagText = curtag.text();				

  				var tagType = curtag.get(0).tagName.toLowerCase();												

  				

  				if( !tagId ){

  					tagId = "TOC"+ clean(tagText);

  					curtag.attr( "id", tagId );

  				}

  				

  				toc += '<li class="toc-'+tagType+'"><a href="#'+tagId+'">'+tagText+'</a></li>';

  			});

  			

  			domObj.prepend('<div class="supertoc"><ul>'+toc+'</ul></div>');

  

  		});

  	};

  })( jQuery );