//------------------------------------------------
// LNLab-HP Systemライブラリ
// LunarNight Lab.
// http://www.ln-lab.net/
//------------------------------------------------

var PageState = Class.create({
	opened : new Object(),
	
	isOpened : function(path){
		return(this.opened[path]);
	},
	open : function(path){
		this.opened[path] = true;
	},
	close: function(path){
		for(var i in this.opened){
			if (i.indexOf(path) == 0){ 
				this.opened[i] = false;
			}
		}
	}
	
});

var LNLab = Class.create({
	ajaxCall : null,
	opened   : new PageState(),
	
	init : function(url,path){
		this.ajaxConn = new AjaxConnection(url);
		this.ajaxCall = this.ajaxConn.createCallback(this.callback,this);
		
		if (path){
			var s = path.split("/");
			var p = '';
			for(var i in s){
				p += s[i]+'/';
				this.opened.open(p);
			}
		}
	},
	menuOpen : function(path,id){
		if (this.opened.isOpened(path)){
			this.opened.close(path);
			
			if (path != '/'){
				var elm = document.getElementById(id);
				elm.innerHTML = '';
				setStyle(elm,'display','none');
				this.menuBody(path);
				
				return;
			}
		}
		var data = new DataHash();
		data['path'] = path;
		data['id'  ] = id;
		this.ajaxCall.sendCommand('menuOpen',data);
	},
	menuBody : function(path){
		var data = new DataHash();
		data['path'] = path;
		this.ajaxCall.sendCommand('menuBody',data);
	},
	changeAnalyze: function(path){
		var month = document.getElementById('month').value;
		
		var data = new DataHash();
		data['path' ] = path+month;
		data['month'] = month
		this.ajaxCall.sendCommand('menuBody',data);
	},
	callback : function(rcCommand,dataObj){
		
		if (rcCommand == 'menuOpen'){
			var id       = dataObj['id'  ];
			var tree     = dataObj['tree'];
			var body     = dataObj['body'];
			var path     = dataObj['path'];
			var headInfo = dataObj['headInfo'];
			
			if (tree != ""){
				var elm = document.getElementById(id);
				elm.innerHTML = tree;
				setStyle(elm,'display','block');
			}
			
			document.getElementById('menu-body').innerHTML = body;
			document.getElementById('headInfo').innerHTML = headInfo;

			this.opened.open(path);
		}else if(rcCommand == 'menuBody'){
			var body = dataObj['body'];
			var headInfo = dataObj['headInfo'];
			document.getElementById('menu-body').innerHTML = body;
			document.getElementById('headInfo').innerHTML = headInfo;
		}
		
	}
	
});

var lnLab;

function init(url,opened){
	lnLab = new LNLab(url,opened);
}



