/*
*	modello框架
**
*	author 贺博
*	date 2007-2-27
*/
//Env.require("/javascript/FCatalogTree/com.duxiu.js.AbsoluteTreeEvent.js");
//Env.require("/javascript/com.duxiu.js.JSManager.js");
//Env.require("/javascript/com.duxiu.js.ComponentFactory.js");
//Env.require("/javascript/com.duxiu.js.UtilTool.js");

FCatalogTree = Class.create(JSManager,AbsoluteTreeEvent);
FCatalogTree.register("com.duxiu.js.FCatalogTree");

FCatalogTree.construct = function($self, $class){
	
	var _flashObj;
	
	var _beforeCataId = -1;
	
	var dialog;	
	var nav;
	this.initialize = function(_flash_id){	
		_flashObj = document[_flash_id];
		
		if(!_flashObj){
			throw new Error("[com.duxiu.js.FCatalogTree] :'"+_flash_id+"' can't in document.");	
		}
		
		nav = new Component('nl_li');
	}
	
	//设置Js执行者
	this.setJsManager = function(_str){
		_flashObj.setJsManager(_str);
	}
	
	//设置显示的XML
	this.setXMLData = function(_xml){
		_flashObj.setXMLData(_xml);		
	}
	
	//设置选择的节点
	this.setSelectNode = function(_index){
		_flashObj.setSelectNode(_index);		
	}
	
	//选中节点处 添加新的标签
	this.addCatalog = function(_label , _data){
		_flashObj.addCatalog(_label , _data);
	}
	
	//在指定父节点处新加节点
	this.addChildCatalog = function(_groupid , _label , _data){
		_flashObj.addChildCatalog(_groupid , _label , _data);
	}	
	
	//设置选择的目录
	this.setSelectCatalog = function(_cataid){
		nav.setDisplay(false);
		_flashObj.setSelectCatalog(_cataid);
	}
	
	//获得XML文档
	this.getNodeXML = function(cataid){
		return 	_flashObj.getNodeXML(cataid);
	}
	
	//获得选择节点XMl文档
	this.getSelectNodeXML = function(){		
		return _flashObj.getSelectNodeXML();
	}
	
	//获得子分类xml对象
	this.getNodeChildsXML = function(cataid){
		return 	_flashObj.getNodeChildsXML(cataid);
	}
	
	//选中下一节点
	this.nextNode = function(){
		_flashObj.nextNode();
	}
	
	//选中上一节点
	this.previousNode = function(){
		_flashObj.previousNode();
	}
	
	this.setNavDisplay = function(b){
		nav.setDisplay(b);
	}
	
	//检测同级同名标签 0 -不存在，1存在
	var checkSameNode = function(cataname){
		return _flashObj.checkSameNode(cataname);	
	}	
	
	this.showAddDialog = function(linkName){	
		showDialog("新建["+linkName+"]子目录<br/>" , function(inputvalue){
														 
			var cataname = inputvalue;
			if(!cataname || cataname=="") return ;			
			_flashObj.checkToAddCatalog(cataname);	
		});	
		dialog.getElementsByTagName("input")[0].focus();
	}
	
	this.showAddTDialog = function(){
		showDialog("新建一级目录<br/>" , function(inputvalue){									 
			var cataname = inputvalue;
			if(!cataname || cataname=="") return ;			
			_flashObj.checkToAddTCatalog(cataname);	
		});		
		dialog.getElementsByTagName("input")[0].focus();
	}	
	
	this.showRenameDialog = function(linkName){
		showDialog("重命名["+linkName+"]目录<br/>" , function(inputvalue){
														 
			var cataname = inputvalue;
			if(!cataname || cataname=="") return ;	

			if(checkSameNode(cataname)==1) alert("同级目录下 已经有 "+cataname + " 目录");
			
			_flashObj.checkToRenameCatalog(cataname);
		});
		dialog.getElementsByTagName("input")[0].focus();
	}
	
	
	this.clickChilds = function(cataid , obj){
		var pos = UtilTool.getDomOffset(obj);		
		nav.setInnerHTML(_catalogXHTML.getCatalogChilds(this.getNodeChildsXML(cataid)));
		nav.setLocation(pos.y +30-getPageScrollHeigth(), pos.x-getPageScrollWidth());		
		nav.setDisplay(true);
		
		var count = _catalogXHTML.getNavChildsCount();

		if(count>10){
			nav.setHeight(200);
			nav.setOverflowY("scroll");
			nav.setOverflowX("hidden");
		}
		else{
			nav.setHeight("auto");
			nav.setOverflowY("hidden");
		}
	}	
	
	var showDialog = function(html_note ,  action){		
		var dialog = createDialog(html_note);		
		var inputs = dialog.getElementsByTagName("input");//input , ok_btn , canel_btn 
		inputEvent(inputs[0] ,inputs[1]  , inputs[2],action);
		_screenMap.wait(dialog ,false);
	}	
	
	var inputEvent = function(input , ok_btn , canel_btn , action){/* action :  Function(  inputValue:String  )*/
		ok_btn.onclick = function(){
			action(input.value);		
		}
		canel_btn.onclick = function(){
			_screenMap.notify();			
		}		
		
		UtilTool.OnEnterKey(input , function(){
			ok_btn.onclick();									
		});		
	}
	
	var createDialog = function(html_note){
		dialog = ComponentFactory.create("div");
		dialog.id = "edit_dialog_note";
		
		dialog.innerHTML = html_note
			+"<input type='text' size=30/><br/><input type='button' value=' 确定 '/><input type='button' value=' 取消 '/>"
		
		return dialog;
	}
	
	
	/**
	*	AbsoluteTreeEvent接口实现 
	*	flash自动调用
	*/	
	this.onOpen = function(_label,_data){}
	
	this.onClose = function(_label,_data){}
	
	//To fixed...
	this.onSelect = function(_label,_data){}
}
