├── README.md ├── css ├── component.css └── default.css ├── fonts ├── fontawesome.eot ├── fontawesome.svg ├── fontawesome.ttf ├── fontawesome.woff ├── icomoon_arrows │ ├── icomoon.dev.svg │ ├── icomoon.eot │ ├── icomoon.svg │ ├── icomoon.ttf │ └── icomoon.woff └── readme.md ├── index.html └── js ├── jquery.cbpNTAccordion.js ├── jquery.cbpNTAccordion.min.js └── modernizr.custom.js /README.md: -------------------------------------------------------------------------------- 1 | Blueprint: Nested Accordion 2 | ========= 3 | 4 | A simple, nestable accordion with some examples of nesting levels and a media query. 5 | 6 | [article on Codrops](http://tympanus.net/codrops/?p=14588) 7 | 8 | [demo](http://tympanus.net/Blueprints/NestedAccordion/) 9 | 10 | The Blueprints are a collection of basic and minimal website concepts, components, plugins and layouts with minimal style for easy adaption and usage, or simply for inspiration. 11 | Check out all of our Blueprints [here](http://tympanus.net/codrops/category/blueprints/) 12 | 13 | [LICENSING & TERMS OF USE](http://tympanus.net/codrops/licensing/) -------------------------------------------------------------------------------- /css/component.css: -------------------------------------------------------------------------------- 1 | /* Icon font for arrow icons */ 2 | @font-face { 3 | font-family: 'icomoon'; 4 | src:url('../fonts/icomoon_arrows/icomoon.eot'); 5 | src:url('../fonts/icomoon_arrows/icomoon.eot?#iefix') format('embedded-opentype'), 6 | url('../fonts/icomoon_arrows/icomoon.woff') format('woff'), 7 | url('../fonts/icomoon_arrows/icomoon.ttf') format('truetype'), 8 | url('../fonts/icomoon_arrows/icomoon.svg#icomoon') format('svg'); 9 | font-weight: normal; 10 | font-style: normal; 11 | } /* Iconfont by Icomoon http://icomoon.io/ */ 12 | 13 | 14 | /* Accordion style */ 15 | .cbp-ntaccordion { 16 | list-style: none; 17 | margin: 0; 18 | padding: 0; 19 | } 20 | 21 | .cbp-ntsubaccordion { 22 | list-style: none; 23 | } 24 | 25 | .cbp-ntaccordion .cbp-nttrigger { 26 | cursor: pointer; 27 | } 28 | 29 | .cbp-ntaccordion h3 { 30 | margin: 0 0 0.3em; 31 | padding: 1em 0 0.5em; 32 | border-bottom: 1px solid #ddd; 33 | font-size: 2.75em; 34 | font-weight: 300; 35 | } 36 | 37 | .cbp-ntaccordion h4 { 38 | font-size: 1.2em; 39 | text-transform: uppercase; 40 | letter-spacing: 0.4em; 41 | padding: 0.5em 0 0.5em; 42 | margin: 0 0 0.5em; 43 | } 44 | 45 | .cbp-ntaccordion h5 { 46 | font-size: 1.2em; 47 | color: #aaa; 48 | padding: 0.5em 0 0.5em; 49 | margin: 0 0 0.5em; 50 | } 51 | 52 | .cbp-ntaccordion .cbp-ntcontent p { 53 | color: #888; 54 | font-size: 1.25em; 55 | font-weight: 300; 56 | line-height: 1.5; 57 | padding: 0.2em 0 1.5em; 58 | margin: 0; 59 | } 60 | 61 | /* Arrow icons */ 62 | .cbp-ntaccordion > li > .cbp-nttrigger:before, 63 | .cbp-ntsubaccordion > li > .cbp-nttrigger:before { 64 | font-family: 'icomoon'; 65 | speak: none; 66 | font-weight: normal; 67 | font-variant: normal; 68 | text-transform: none; 69 | line-height: 1; 70 | color: #ddd; 71 | margin-right: 0.5em; 72 | -webkit-font-smoothing: antialiased; 73 | } 74 | 75 | .cbp-ntaccordion > li > .cbp-nttrigger:before { 76 | font-size: 75%; 77 | } 78 | 79 | .cbp-ntaccordion > li > .cbp-nttrigger:before { 80 | content: "\36"; 81 | } 82 | .cbp-ntaccordion > li > .cbp-nttrigger:hover:before { 83 | content: "\35"; 84 | color: inherit; 85 | } 86 | .cbp-ntaccordion > li.cbp-ntopen > .cbp-nttrigger:before, 87 | .no-js .cbp-ntaccordion > li > .cbp-nttrigger:before { 88 | content: "\34"; 89 | color: inherit; 90 | } 91 | 92 | .cbp-ntsubaccordion > li > .cbp-nttrigger:before { 93 | content: "\32"; 94 | } 95 | .cbp-ntsubaccordion > li > .cbp-nttrigger:hover:before { 96 | content: "\33"; 97 | color: inherit; 98 | } 99 | .cbp-ntsubaccordion > li.cbp-ntopen > .cbp-nttrigger:before, 100 | .no-js .cbp-ntsubaccordion > li > .cbp-nttrigger:before { 101 | content: "\31"; 102 | color: inherit; 103 | } 104 | 105 | /* Initial height is zero */ 106 | .cbp-ntaccordion .cbp-ntcontent { 107 | height: 0; 108 | overflow: hidden; 109 | } 110 | 111 | /* When open, set height to auto */ 112 | .cbp-ntaccordion .cbp-ntopen > .cbp-ntcontent, 113 | .cbp-ntsubaccordion .cbp-ntopen > .cbp-ntcontent, 114 | .no-js .cbp-ntaccordion .cbp-ntcontent { 115 | height: auto; 116 | } 117 | 118 | /* Example for media query */ 119 | @media screen and (max-width: 32em) { 120 | 121 | .cbp-ntaccordion { 122 | font-size: 70%; 123 | } 124 | 125 | } -------------------------------------------------------------------------------- /css/default.css: -------------------------------------------------------------------------------- 1 | /* General Demo Style */ 2 | @import url(http://fonts.googleapis.com/css?family=Lato:300,400,700); 3 | 4 | @font-face { 5 | font-family: 'fontawesome'; 6 | src:url('../fonts/fontawesome.eot'); 7 | src:url('../fonts/fontawesome.eot?#iefix') format('embedded-opentype'), 8 | url('../fonts/fontawesome.svg#fontawesome') format('svg'), 9 | url('../fonts/fontawesome.woff') format('woff'), 10 | url('../fonts/fontawesome.ttf') format('truetype'); 11 | font-weight: normal; 12 | font-style: normal; 13 | } 14 | 15 | body, html { font-size: 100%; padding: 0; margin: 0;} 16 | 17 | /* Reset */ 18 | *, 19 | *:after, 20 | *:before { 21 | -webkit-box-sizing: border-box; 22 | -moz-box-sizing: border-box; 23 | box-sizing: border-box; 24 | } 25 | 26 | /* Clearfix hack by Nicolas Gallagher: http://nicolasgallagher.com/micro-clearfix-hack/ */ 27 | .clearfix:before, 28 | .clearfix:after { 29 | content: " "; 30 | display: table; 31 | } 32 | 33 | .clearfix:after { 34 | clear: both; 35 | } 36 | 37 | body { 38 | font-family: 'Lato', Calibri, Arial, sans-serif; 39 | color: #47a3da; 40 | 41 | } 42 | 43 | a { 44 | color: #f0f0f0; 45 | text-decoration: none; 46 | } 47 | 48 | a:hover { 49 | color: #000; 50 | } 51 | 52 | .main, 53 | .container > header { 54 | width: 90%; 55 | max-width: 70em; 56 | margin: 0 auto; 57 | padding: 0 1.875em 3.125em 1.875em; 58 | } 59 | 60 | .container > header { 61 | padding: 2.875em 1.875em 1.875em; 62 | } 63 | 64 | .container > header h1 { 65 | font-size: 2.125em; 66 | line-height: 1.3; 67 | margin: 0; 68 | float: left; 69 | font-weight: 400; 70 | } 71 | 72 | .container > header span { 73 | display: block; 74 | font-weight: 700; 75 | text-transform: uppercase; 76 | letter-spacing: 0.5em; 77 | padding: 0 0 0.6em 0.1em; 78 | } 79 | 80 | .container > header nav { 81 | float: right; 82 | } 83 | 84 | .container > header nav a { 85 | display: block; 86 | float: left; 87 | position: relative; 88 | width: 2.5em; 89 | height: 2.5em; 90 | background: #fff; 91 | border-radius: 50%; 92 | color: transparent; 93 | margin: 0 0.1em; 94 | border: 4px solid #47a3da; 95 | text-indent: -8000px; 96 | } 97 | 98 | .container > header nav a:after { 99 | content: attr(data-info); 100 | color: #47a3da; 101 | position: absolute; 102 | width: 600%; 103 | top: 120%; 104 | text-align: right; 105 | right: 0; 106 | opacity: 0; 107 | pointer-events: none; 108 | } 109 | 110 | .container > header nav a:hover:after { 111 | opacity: 1; 112 | } 113 | 114 | .container > header nav a:hover { 115 | background: #47a3da; 116 | } 117 | 118 | .icon-drop:before, 119 | .icon-arrow-left:before { 120 | font-family: 'fontawesome'; 121 | position: absolute; 122 | top: 0; 123 | width: 100%; 124 | height: 100%; 125 | speak: none; 126 | font-style: normal; 127 | font-weight: normal; 128 | line-height: 2; 129 | text-align: center; 130 | color: #47a3da; 131 | -webkit-font-smoothing: antialiased; 132 | text-indent: 8000px; 133 | padding-left: 8px; 134 | } 135 | 136 | .container > header nav a:hover:before { 137 | color: #fff; 138 | } 139 | 140 | .icon-drop:before { 141 | content: "\e000"; 142 | } 143 | 144 | .icon-arrow-left:before { 145 | content: "\f060"; 146 | } 147 | 148 | -------------------------------------------------------------------------------- /fonts/fontawesome.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codrops/Blueprint-NestedAccordion/df67d691d38aeae61e9d6cded59e90c33f856954/fonts/fontawesome.eot -------------------------------------------------------------------------------- /fonts/fontawesome.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | This is a custom SVG font generated by IcoMoon. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /fonts/fontawesome.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codrops/Blueprint-NestedAccordion/df67d691d38aeae61e9d6cded59e90c33f856954/fonts/fontawesome.ttf -------------------------------------------------------------------------------- /fonts/fontawesome.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codrops/Blueprint-NestedAccordion/df67d691d38aeae61e9d6cded59e90c33f856954/fonts/fontawesome.woff -------------------------------------------------------------------------------- /fonts/icomoon_arrows/icomoon.dev.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | This is a custom SVG font generated by IcoMoon. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 16 | 19 | 22 | 26 | 30 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /fonts/icomoon_arrows/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codrops/Blueprint-NestedAccordion/df67d691d38aeae61e9d6cded59e90c33f856954/fonts/icomoon_arrows/icomoon.eot -------------------------------------------------------------------------------- /fonts/icomoon_arrows/icomoon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | This is a custom SVG font generated by IcoMoon. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 16 | 19 | 22 | 26 | 30 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /fonts/icomoon_arrows/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codrops/Blueprint-NestedAccordion/df67d691d38aeae61e9d6cded59e90c33f856954/fonts/icomoon_arrows/icomoon.ttf -------------------------------------------------------------------------------- /fonts/icomoon_arrows/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codrops/Blueprint-NestedAccordion/df67d691d38aeae61e9d6cded59e90c33f856954/fonts/icomoon_arrows/icomoon.woff -------------------------------------------------------------------------------- /fonts/readme.md: -------------------------------------------------------------------------------- 1 | Icons made with http://icomoon.io/ 2 | 3 | #Font Awesome 3.0.2 4 | ##the iconic font designed for use with Twitter Bootstrap 5 | 6 | The full suite of pictographic icons, examples, and documentation can be found at: 7 | http://fortawesome.github.com/Font-Awesome/ 8 | 9 | 10 | ##License 11 | - The Font Awesome font is licensed under the SIL Open Font License - http://scripts.sil.org/OFL 12 | - Font Awesome CSS, LESS, and SASS files are licensed under the MIT License - http://opensource.org/licenses/mit-license.html 13 | - The Font Awesome pictograms are licensed under the CC BY 3.0 License - http://creativecommons.org/licenses/by/3.0/ 14 | - Attribution is no longer required in Font Awesome 3.0, but much appreciated: "Font Awesome by Dave Gandy - http://fortawesome.github.com/Font-Awesome" 15 | 16 | ##Contact 17 | - Email: dave@davegandy.com 18 | - Twitter: http://twitter.com/fortaweso_me 19 | - Work: Lead Product Designer @ http://kyru.us 20 | 21 | ##Changelog 22 | - v3.0.0 - all icons redesigned from scratch, optimized for Bootstrap's 14px default 23 | - v3.0.1 - much improved rendering in webkit, various bugfixes 24 | - v3.0.2 - much improved rendering and alignment in IE7 25 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Blueprint: Nested Accordion 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | Blueprint 20 |

Nested Accordion

21 | 25 |
26 |
27 | 179 |
180 |
181 | 182 | 183 | 196 | 197 | 198 | -------------------------------------------------------------------------------- /js/jquery.cbpNTAccordion.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jquery.cbpNTAccordion.js v1.0.0 3 | * http://www.codrops.com 4 | * 5 | * Licensed under the MIT license. 6 | * http://www.opensource.org/licenses/mit-license.php 7 | * 8 | * Copyright 2013, Codrops 9 | * http://www.codrops.com 10 | */ 11 | ;( function( $, window, undefined ) { 12 | 13 | 'use strict'; 14 | 15 | // global 16 | var $body = $( 'html, body' ); 17 | 18 | $.CBPNTAccordion = function( options, element ) { 19 | this.$el = $( element ); 20 | this._init( options ); 21 | }; 22 | 23 | // the options 24 | $.CBPNTAccordion.defaults = {}; 25 | 26 | $.CBPNTAccordion.prototype = { 27 | _init : function( options ) { 28 | // options 29 | this.options = $.extend( true, {}, $.CBPNTAccordion.defaults, options ); 30 | // cache some elements and initialize some variables 31 | this._config(); 32 | // initialize/bind the events 33 | this._initEvents(); 34 | }, 35 | _config : function() { 36 | 37 | // the clickable items 38 | this.$items = this.$el.find( '.cbp-nttrigger' ); 39 | 40 | }, 41 | _initEvents : function() { 42 | 43 | this.$items.on( 'click.cbpNTAccordion', function() { 44 | var $listItem = $( this ).parent(); 45 | if( $listItem.hasClass( 'cbp-ntopen' ) ) { 46 | $listItem.removeClass( 'cbp-ntopen' ); 47 | } 48 | else { 49 | $listItem.addClass( 'cbp-ntopen' ); 50 | $body.scrollTop( $listItem.offset().top ); 51 | } 52 | } ); 53 | 54 | }, 55 | destroy : function() { 56 | this.$items.off( '.cbpNTAccordion' ).parent().removeClass( 'cbp-ntopen' ); 57 | } 58 | }; 59 | 60 | var logError = function( message ) { 61 | if ( window.console ) { 62 | window.console.error( message ); 63 | } 64 | }; 65 | 66 | $.fn.cbpNTAccordion = function( options ) { 67 | if ( typeof options === 'string' ) { 68 | var args = Array.prototype.slice.call( arguments, 1 ); 69 | this.each(function() { 70 | var instance = $.data( this, 'cbpNTAccordion' ); 71 | if ( !instance ) { 72 | logError( "cannot call methods on cbpNTAccordion prior to initialization; " + 73 | "attempted to call method '" + options + "'" ); 74 | return; 75 | } 76 | if ( !$.isFunction( instance[options] ) || options.charAt(0) === "_" ) { 77 | logError( "no such method '" + options + "' for cbpNTAccordion instance" ); 78 | return; 79 | } 80 | instance[ options ].apply( instance, args ); 81 | }); 82 | } 83 | else { 84 | this.each(function() { 85 | var instance = $.data( this, 'cbpNTAccordion' ); 86 | if ( instance ) { 87 | instance._init(); 88 | } 89 | else { 90 | instance = $.data( this, 'cbpNTAccordion', new $.CBPNTAccordion( options, this ) ); 91 | } 92 | }); 93 | } 94 | return this; 95 | }; 96 | 97 | } )( jQuery, window ); -------------------------------------------------------------------------------- /js/jquery.cbpNTAccordion.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jquery.cbpNTAccordion.min.js v1.0.0 3 | * http://www.codrops.com 4 | * 5 | * Licensed under the MIT license. 6 | * http://www.opensource.org/licenses/mit-license.php 7 | * 8 | * Copyright 2013, Codrops 9 | * http://www.codrops.com 10 | */ 11 | (function(d,b,e){var c=d("html, body");d.CBPNTAccordion=function(f,g){this.$el=d(g);this._init(f)};d.CBPNTAccordion.defaults={};d.CBPNTAccordion.prototype={_init:function(f){this.options=d.extend(true,{},d.CBPNTAccordion.defaults,f);this._config();this._initEvents()},_config:function(){this.$items=this.$el.find(".cbp-nttrigger")},_initEvents:function(){this.$items.on("click.cbpNTAccordion",function(){var f=d(this).parent();if(f.hasClass("cbp-ntopen")){f.removeClass("cbp-ntopen")}else{f.addClass("cbp-ntopen");c.scrollTop(f.offset().top)}})},destroy:function(){this.$items.off(".cbpNTAccordion").parent().removeClass("cbp-ntopen")}};var a=function(f){if(b.console){b.console.error(f)}};d.fn.cbpNTAccordion=function(g){if(typeof g==="string"){var f=Array.prototype.slice.call(arguments,1);this.each(function(){var h=d.data(this,"cbpNTAccordion");if(!h){a("cannot call methods on cbpNTAccordion prior to initialization; attempted to call method '"+g+"'");return}if(!d.isFunction(h[g])||g.charAt(0)==="_"){a("no such method '"+g+"' for cbpNTAccordion instance");return}h[g].apply(h,f)})}else{this.each(function(){var h=d.data(this,"cbpNTAccordion");if(h){h._init()}else{h=d.data(this,"cbpNTAccordion",new d.CBPNTAccordion(g,this))}})}return this}})(jQuery,window); -------------------------------------------------------------------------------- /js/modernizr.custom.js: -------------------------------------------------------------------------------- 1 | /* Modernizr 2.6.2 (Custom Build) | MIT & BSD 2 | * Build: http://modernizr.com/download/#-shiv-cssclasses-load 3 | */ 4 | ;window.Modernizr=function(a,b,c){function u(a){j.cssText=a}function v(a,b){return u(prefixes.join(a+";")+(b||""))}function w(a,b){return typeof a===b}function x(a,b){return!!~(""+a).indexOf(b)}function y(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:w(f,"function")?f.bind(d||b):f}return!1}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m={},n={},o={},p=[],q=p.slice,r,s={}.hasOwnProperty,t;!w(s,"undefined")&&!w(s.call,"undefined")?t=function(a,b){return s.call(a,b)}:t=function(a,b){return b in a&&w(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=q.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(q.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(q.call(arguments)))};return e});for(var z in m)t(m,z)&&(r=z.toLowerCase(),e[r]=m[z](),p.push((e[r]?"":"no-")+r));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)t(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},u(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+p.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f