$.fn.kategorimeny = function(options) {
	var defaults = {
		imagetype: '',
		shoppath: '',
		urlext: '',
		framename: '',
		hrefclass: ''
	};
	// Extend our default options with those provided.
	var opts = $.extend(defaults, options);

	var imgFoldedUrl = new Image();
	var imgUnfoldedUrl = new Image();
	var imgNoPic = new Image();

	if(opts.imagetype == "custom") {  
		imgFoldedUrl.src = "systemimages/folder_go.png";
		imgUnfoldedUrl.src = "systemimages/folder_go.png";
		imgNoPic.src = "systemimages/folder.png";
	} else if(opts.imagetype == "categorylist") {
		imgFoldedUrl.src = "systemimages/_sys_htmldocument_16x16.png";
		imgUnfoldedUrl.src = "systemimages/_sys_htmldocument_16x16.png";
		imgNoPic.src = "systemimages/_sys_htmldocument_16x16.png";
	} else {
		imgFoldedUrl.src = opts.shoppath + "/images/sys/_sys_cat_folded.gif";
		imgUnfoldedUrl.src = opts.shoppath + "/images/sys/_sys_cat_unfolded.gif";
		imgNoPic.src = opts.shoppath + "/images/sys/_sys_cat_empty.gif";
	}

	// iterate each matched element
	return this.each(function() {
		var $this = $(this);
		paintli($this);
		$this.click(clickhandler);
	});

	// Sätt lämplig bild på kategori-val tillhörande kategori-listan
	function paintli($mainul) {
		if(!$mainul.data('painted')==1) {
			$mainul.children('li').each(function() {
				var $this = $(this);
				var sId = $this.attr('id').toString().slice(2);
				if($aC[sId] == undefined) {
					this.style.listStyleImage="url('"+ imgNoPic.src + "')";
				} else if(!$this.children('ul').length) {
					this.style.listStyleImage="url('"+ imgFoldedUrl.src + "')";
				} else if($('#ul'+sId).css('display')=='none') {
					this.style.listStyleImage="url('"+ imgFoldedUrl.src + "')";
				} else {
					this.style.listStyleImage="url('"+ imgUnfoldedUrl.src + "')";
					$this.children('ul').each(function() { paintli($(this)); })
				}
			});
			$mainul.data('painted', 1);
		}
	}

	// Hanterar klick i kategori-listan
	function clickhandler(event, target) {
		if(!target) {
			$target = $(event.target);
		} else {
			$target = $(target);
		}
		if( $target.is("li") ) {
			$target = $target.children("a");
			event.stopPropagation();
		}
		if( !$target.is("a") ) {
			$target = $target.parent("a");
		}
		if( $target.is("a") ) {
			event.preventDefault();
			var sId = new String($target.attr('id'));
			var $aChildren = $aC[sId.slice(1)];
			var $sUrlExt = opts.urlext;
			var $sClass = opts.hrefclass;
			var $sFrameName = opts.framename;
			var $sULClass = 'cl_'+(parseInt($target.parent().parent().attr('class').toString().slice(3))+1);
			var $ul = $('#ul' + sId.slice(1));

			if($aChildren==undefined) {
				// Finns inga underkategorier
			} else if($ul.length==0) {
				$target.after('<ul id="ul' + sId.slice(1) + '" style="margin:3px;" class="'+$sULClass+'"></ul>');
				$ul = $('#ul' + sId.slice(1));
				for ($i=0;$i<$aChildren.length;$i++) {
					var $aKat = $aK['_' + $aChildren[$i]];
					if($aKat!=undefined) {
						$ul.append('<li id="li_' + $aChildren[$i] + '"><a id="a_' + $aChildren[$i] + '" class="' + $sClass + '" target="' + $sFrameName + '_main" href="show_cat.asp?cat_id=' + $aChildren[$i] + '&head_id=' + $aKat[0] + $sUrlExt + '">' + $aKat[1] + '</a></li>');
					}
				}
				paintli($('#ul' + sId.slice(1)));
				$('#li'+sId.slice(1)).css('list-style-image', "url('"+ imgUnfoldedUrl.src + "')");
			} else if($('#ul'+sId.slice(1)).css('display')=='none') {
				// Underkataloger dolda.
				paintli($('#ul' + sId.slice(1)));
				$('#li'+sId.slice(1)).css('list-style-image', "url('"+ imgUnfoldedUrl.src + "')");
				$('#ul'+sId.slice(1)).css('display', 'block');
			} else if($('#ul'+sId.slice(1)).css('display')=='block') {
				// Underkataloger synliga
				$('#li'+sId.slice(1)).css('list-style-image', "url('"+ imgFoldedUrl.src + "')");
				$('#ul'+sId.slice(1)).css('display', 'none');
			} else {
				//alert('x');
			}
			window.open('show_cat.asp?cat_id='+sId.slice(2)+'&amp;head_id='+$target.parent().parent().attr('id').toString().slice(3), $sFrameName+'_main')
			window.open('body_shoppingcart.asp', $sFrameName + '_cart');
		} else {
			//alert($target.text());
		}
	}
};
