/**
*简约风格
*/
var plain_tg_plugin;
(function($){
	var plain = plain_tg_plugin = function(){
		this.construct.apply(this, arguments);		
	};
	plain.prototype = new tg_plugin();
	plain.prototype.constructor = tg_plugin;
	plain.prototype.$super = tg_plugin.prototype;
	plain.prototype.$parent = tg_plugin;

	plain.prototype.construct = function(){
		this.addListener( 'click', this.onclick );
		this.addListener( 'over', this.onover );
		this.addListener( 'out', this.onout );
	};

	plain.prototype.start = function(){			
		initialize.call(this);
	};
	/**
	*点击动作
	* @access : public
	*/
	plain.prototype.onclick = function(/*string*/dom_id){
		if( this.owner().selectedItems().length > 0 ){
			if( indexOfSelected.call(this, dom_id) > -1 ){
				var selected_doms = this.owner().data()[ this.owner().selectedItems()[0] ]['path'];
				for(var i=0, length = selected_doms.length; i<length; ++i)
					this.fold( selected_doms[i], (i+1)==length);
				return;
			}
			else{
				var selected_doms = this.owner().data()[ this.owner().selectedItems()[0] ]['path'];
				var index = indexOfParentSelected.call(this, selected_doms, dom_id);
				if(index>-1){					
					for(var i=index, length = selected_doms.length; i<length; ++i)
						this.fold( selected_doms[i], index==i);
					return;
				}
				else if( !this.owner().is_multi_selected() ){	//不允许多选
					for(var i=0, length = selected_doms.length; i<length; ++i)
						this.fold( selected_doms[i]);
				}
			}
		}
		var doms = this.owner().data()[dom_id]['path'];
		for(var i=0, length = doms.length; i<length; ++i)
			this.unfold( doms[i], (i+1)==length );	//展开此节点		
		//alert( this.owner().selectedItems() );
	};	//end function
	/**
	*高亮动作
	* @access : public
	*/
	plain.prototype.onover = function(/*string*/dom_id){
		$('#'+this.owner().id+'_'+dom_id).addClass( this.owner().data()[dom_id]['over'] );

	};	//end function
	/**
	*默认动作
	* @access : public
	*/
	plain.prototype.onout = function(/*string*/dom_id){
		if(indexOfSelected.call(this, dom_id) < 0)
			$('#'+this.owner().id+'_'+dom_id).removeClass( this.owner().data()[dom_id]['over'] );
	};	//end function
	/**
	*展开动作
	*/
	plain.prototype.unfold = function(/*string*/dom_id, /*bool*/is_leaf) {
		if(is_leaf){
			this.onover(dom_id);
			this.owner().selectedItems( dom_id );		
		}
		else{
			var index = indexOfSelected.call(this, dom_id);
			if(index > -1)
				this.owner().selectedItems().splice(index, 1);
			this.onout(dom_id);
		}
		$('#'+this.owner().id+'_'+dom_id+'_child').attr('class', 'unfold');
		/*if(is_leaf)
			$('#'+this.owner().id+'_'+dom_id+'_child').animate({'height':'show'}, 'slow');*/
		
	};	//end function
	/**
	*合并动作
	*/
	plain.prototype.fold = function(/*string*/dom_id, /*bool*/is_leaf) {
		var index = indexOfSelected.call(this, dom_id);
		if(index > -1)
			this.owner().selectedItems().splice(index, 1);
		if(is_leaf)
			this.onover(dom_id);
		else
			this.onout(dom_id);
		/*if(is_leaf)
			$('#'+this.owner().id+'_'+dom_id+'_child').animate({'height':'hide'}, 'slow');*/
		$('#'+this.owner().id+'_'+dom_id+'_child').attr('class', 'fold');
	};	//end function
	/**
	*初始化
	* @access : private
	*/
	function initialize(){
		try{
			var selecteds = this.owner().selectedItems();
			for(var i=0, length=selecteds.length; i<length; ++i){
				var doms = this.owner().data()[ selecteds[i] ]['path'];
				for(var j=0, length = doms.length; j<length; ++j)
					this.unfold( doms[j], (j+1)==length );

			}
		}
		catch(e){}
	}	//end function
	/*
	*处理程序
	* @access : private
	*/
	function indexOfSelected(/*string*/value){
		if( this.owner().selectedItems().indexOf ){
			return this.owner().selectedItems().indexOf(value);
		}
		else{
			var selecteds = this.owner().selectedItems();
			for(var i=0, length=selecteds.length; i<length; ++i){
				if(value==selecteds[i]){
					return i;
				}
			}
			return -1;
		}
	}	//end function	
	/*
	*处理程序
	* @access : private
	*/
	function indexOfParentSelected(/*array*/parent, /*string*/value){
		if( parent.indexOf ){
			return parent.indexOf(value);
		}
		else{
			for(var i=0, length=parent.length; i<length; ++i){
				if(value==parent[i]){
					return i;
				}
			}
			return -1;
		}
	}	//end function	
})(jQuery);
