
function collapsible(p){
	var collapsible = this;
	//Defaults
	var def={
		panel_id: '#collapsible',
		button_class: 'collapsible-button',
		use_cookie: false,
		cookie_id:'default_default_collapsed',//Only needed if use_cookie = true
		active_class:'collapsible-active',
		fade_speed:'100', //Milliseconds
		button_open_caption:'Åpne',
		button_close_caption:'Lukk',
		open_by_default: true,
		find_close_buttons:false
	};
	//Apply defaults
	if (!p) {
	    p=def;
	}
	else {
		for (var key in def){
		    if (def.hasOwnProperty(key)) {
		        if (undefined === p[key]) {
		            p[key]=def[key];
		        }
		    }
		}
	}
	//Locate/create button
	var a;
	p.button_id='.' + p.button_class;
	//Find button(s)
	if(p.find_close_buttons){
		a=jQuery(p.button_id);
	}
	//Insert button
	else{
		a=jQuery("<a>"+p.button_open_caption+"</a>").attr('href', '#').addClass(p.button_class).addClass('collapsible_button');
		jQuery(p.panel_id).before(a);
	}
	//Handle clicks on button
	this.open = function(){
		a.text(p.button_close_caption);
		a.addClass(p.active_class).addClass('active');
		jQuery(p.panel_id).slideDown(p.fade_speed);
		//alert("opening");
		if(p.use_cookie)jQuery.cookie(p.cookie_id, 'false', {"path": "/"}); // HACK temp fix of cookie path
		collapsible.onOpen();
		return false;
	};
	
	this.close = function(){
		jQuery(p.panel_id).hide();//slideUp(p.fade_speed);
		a.text(p.button_open_caption);
		a.removeClass(p.active_class).removeClass('active');
		//alert("closing");
		if(p.use_cookie)jQuery.cookie(p.cookie_id, 'true', {"path": "/"}); // HACK temp fix of cookie path
		collapsible.onClose();
		return false;
	};
	
	this.onOpen = function(){};
	this.onClose = function(){};
	
	this.isHidden = function(){
		return ('none'==jQuery(p.panel_id).css('display')); //(jQuery(p.panel_id).is(":hidden"));
	};
	
	jQuery(p.button_id).click( function() {
		var h=collapsible.isHidden();
		//alert("Click: is hidden="+h);
		return h ? collapsible.open() : collapsible.close();
	});
	//Set initial status
	var openNow=p.open_by_default;
	//Let cookie override initial status
	if(p.use_cookie){
		if('true' == jQuery.cookie(p.cookie_id))openNow=false;
		else if('false' == jQuery.cookie(p.cookie_id))openNow=true;
	}
	//Set to open initially
	if(true == openNow){
		a.addClass(p.active_class).addClass('active');
		a.text(p.button_close_caption);
		//alert("open initially");
		jQuery(p.panel_id).show();
	}
	//Set to closed initially
	else{
		a.removeClass(p.active_class).removeClass('active');
		a.text(p.button_open_caption);
		//alert("closed initially");
		jQuery(p.panel_id).hide();
	}
	//alert("hidden? "+isHidden(p.panel_id));
	
	return collapsible;
}

