jQuery.fn.accordion = function(options) {
    // options
    var SLIDE_DOWN_SPEED = 'slow';
    var SLIDE_UP_SPEED = 'fast';
    var startClosed = options && options.start && options.start == 'closed';
    var opened = options && options.opened ? options.opened : "";
    var on = options && options.on && (typeof options.on == 'number' && options.on > 0) ? options.on - 1 : 0;
    return this.each(function() {
        jQuery(this).addClass('Accordion'); // use to activate styling
        jQuery(this).find('dd').hide();
        jQuery(this).find('dt').click(function() {
            var current = jQuery(this.parentNode).find('dd:visible');
            var next = jQuery(this).find('+dd');
//			close current open layer if any
//            if (current[0] != next[0]) {
//                current.slideUp(SLIDE_UP_SPEED);
//            }
            if (next.is(':visible')) {
              next.slideUp(SLIDE_UP_SPEED);
							jQuery(this).removeClass("selected");
            } else {
              next.slideDown(SLIDE_DOWN_SPEED);
							jQuery(this).addClass("selected");
            }
        });
        if (!startClosed) {
          jQuery(this).find('dd:eq(' + on + ')').slideDown(SLIDE_UP_SPEED);
		  jQuery(this).find('dt:eq(' + on + ')').addClass("selected");
        } else {
		// open at the start time some specifyed layers.
		// Example - { start: "closed", opened: ".1.5.6." } - if layers 1,5,6 should be opened at the start time.
            if (opened != "") {
			    var dds = document.getElementsByTagName("dd");
			    if (dds != null) {
                    for ( var i = 0; i < dds.length; i++ ) {
                        if (opened.indexOf("." + i + ".") != -1) {
						    jQuery(this).find('dd:eq(' + i + ')').slideDown("fast");
                            jQuery(this).find('dt:eq(' + i + ')').addClass("selected");
						}
                    }
                }
		    }
		}
    });

};
