/* 
 * Kattingatható faszerkezet json kódból.
 * csak a kinyitott ágakat hozza létre.
 *
 */

(function(jQuery) {
jQuery.fn.keywordTree = function(settings) {

    var settings = jQuery.extend({
		varname: 'kw',
		startpath:'',
		tree:null,
        /* ezek itten nem működnek egyenlőre :-))
        */
        onExpand: null,
        onCollapse: null,
        onCheck: null,
        onUnCheck: null,
        onLabelHoverOver: null,
        onLabelHoverOut: null
    }, settings);



	var tree = this;
	cloneme = jQuery('<li><input type="checkbox" name="'+settings.varname+'"><label></label></li>');

	var open = function(){
	
		var separator = '-';

		var branch = settings.tree;
		var key = '';
		var $apa = jQuery(this).parent();

		//ha már van neki ága akkor csak megjelenítés/rejtés
		if ($apa.children().is('ul')) {
			$apa.find('ul').toggle();
			return true;
		}

		var path = $apa.attr('class').split(separator);

		// az kulcsszó-fán melyik ágon vagyunk?
		for ( ix in  path ) {
			key += (key?separator:'') + path[ix];
			if (key) branch = branch[key];
		}
		
		if (!branch) return true;
	
		$subul = $apa.append("<ul></ul>").find('ul');
		jQuery.each(branch, function(i,v) {
			title = settings.data[i] + (v ? '+':'');
			$subul.append(
				cloneme.clone(true)
				.attr('class',i)
				.find('input')
					.attr("value",i)
					.attr("class",i)
				.end()
					.find('label').append(title)
				.end()
			);
		});
	};

	cloneme.find('label').click(open); 

	// Alapszint létrehozása (legfelső)
	$level0 = tree.prepend('<div />').children()
	$level0.addClass(settings.startpath);
	$level0.start = open;
	$level0.start();
	return tree;
};
})(jQuery);

