/// <reference path="/Default.aspx" />

var Tree={
  path:'/_scr/menu/'
, selItem: null
, curNodeID:0
, curOpenItem:null
, curPage:0
, modeType:null //if 1 - right menu alphabet
, hasChild:new Array()//массив с index и указанием есть ли дети 
, load: function(callback){
		Tree.curPage=0;
		Tree.modeType=null;
		Tree.switchMode(false,true);
		$('#dvTree').html("<center><img src='/_scr/jquery/bar.gif'><center>");
		$.getJSON('/_scr/menu/menu.ashx?id='+Main.CollectionID, function(T){
			Tree.create(T); 	T=null;
			if(callback) callback();
		});		
	}
, create:function (T){
		var s='';
		var L=T.ID.length-1;
		if (L<0) return $('#dvTree').html('');
		var A=new Array;
		/*****************************/
		//$time.start();
		var LastNode='',lenLastNode=0, HasChild, Node,lenNode;
		var dv,dv2,img,a;
		var i,ID
		for(i=0;i<=L;i++)
			{	Node=T.Node[i], lenNode=Node.length; ID=T.ID[i];
				HasChild=(i<L && T.Node[i+1].substring(0,lenNode)==Node);
				
				Tree.hasChild[i]=HasChild;
/**********************/
//				if (lenNode==1) 
//					{	
//						//вставляем разделитель
//						if( i>0) {dv=document.createElement("DIV");dv.className='l'; A.push(dv);}//s+="<div class=l></div>";
//						dv=document.createElement("DIV"); A.push(dv);
//					}
//				else if(lenNode==lenLastNode)
//					{ dv=dv.parentNode; dv.appendChild(document.createElement("DIV")); dv=dv.lastChild;}
//				else if(lenNode>lenLastNode)
//					{dv.appendChild(document.createElement("DIV")); dv=dv.lastChild;}
//				else //if(lenNode<lenLastNode)
//					{for(var j=lenNode;j<lenLastNode;j++) dv=dv.parentNode.parentNode;
//						dv=dv.parentNode;
//						dv.appendChild(document.createElement("DIV")); dv=dv.lastChild;
//					 }//Node уменьшился закрываем открытые подменю
//						
//				dv.id="tr_v"+ID;
//				if (lenNode>1) dv.className='L2';
//				img=document.createElement("IMG");
//				if (HasChild)
//					{img.src= Tree.path + "t_p.gif"; img.onclick=Tree.close; img.id="tr_i"+ID;}
//				else
//					{img.src= Tree.path + (lenNode>1?'_':'')+ "d.gif"; img.width=11;}
//				dv.appendChild(img);
//				
//				a=document.createElement("A");
//				a.href="/?t=n&nID=" + ID ;
//				a.id='tr_a'+ID;
//				a.isNote = T.isNote[i];
//				a.code=T.Code[i];
//				a.node=Node;
//				a.index=i;
//				a.onclick=Tree.sel//Tree.sel("+ID+",0,event)
//				var name=T.ShortName[i];
//				if(name) 
//					a.title=T.Name[i];
//				else
//					name=T.Name[i];
//				a.innerHTML=T.Code[i]+'. '+name
//				
//				dv.appendChild(a);
//				
//				if (HasChild) 
//				{
//					dv2=document.createElement("DIV"); dv2.className='sub'; dv2.id='tr_s'+ID; dv2.style.display='none';
//					dv.appendChild(dv2);
//					dv=dv2;
//				}

/**********************/
				if (lenNode < lenLastNode) {for(var j=lenNode;j<lenLastNode;j++) s+="</div></div>"; }//Node уменьшился закрываем открытые подменю
				if (lenNode==1 && i>0) s+="<div class=l></div>";
				s+="<div id=tr_v"+ID;
					if (lenNode>1) s+=" class=L2";
				s+=" >";

				s+="<span>"
					if (HasChild)
						s+="<img src='" + Tree.path + "t_p.gif' onclick='Tree.close("+ID+")' id=tr_i"+ID+" />";
					else
						s+="<img src='" + Tree.path + "d.gif' />";
				s+='<sup>'+T.Code[i]+'</sup>';
									
				var name=T.ShortName[i],title='';
				if(name) 
					title=" title=\""+T.Name[i]+"\"";
				else
					name=T.Name[i];
				
				s+="<A href='/?t=n&nID=" + ID + "' id='tr_a" + ID + "' isNote='" + T.isNote[i] + "' code='" + T.Code[i] + "' node='" + Node + "' index='" + i + "' onclick='return Tree.sel("+ID+",0,event)'" + title + ">"
					+name+"</A>";

				s+="</span>";
				if (HasChild) 
					//s+="<div class=sub id=tr_s"+ID+">";
					s+="<div class=sub id=tr_s"+ID+" style='display:none'>";
				else
					s+="</div>";//закрываем текущий
/**********************/
			LastNode = Node; lenLastNode = lenNode;
			}
			Node = '' ; lenNode = 0 ;  
			//закрываем открытые подменю
			//for(var j=lenNode+1;j<lenLastNode;j++) s+="</div></div>"; 
		/*******************************/
		//$time.step();
		$('#dvTree').html(s);

//		var t=document.getElementById('dvTree');
//		t.innerHTML='';
//		var l=A.length;
//			for(i=0;i<l;i++) t.appendChild(A[i]);
//			//t.appendChild(A[0]);
//		A=null;
		//t.innerHTML="<textarea style='width:1000px;height:1000px'>"+t.innerHTML+"</textarea>";
		//$('#dvTree').html("<textarea style='width:1000px;height:1000px'>"+D.innerHTML+"</textarea>");
		//$('#dvTree').html("<textarea style='width:1000px;height:1000px'>"+s+"</textarea>");
		//$time.finish();
		//Tree.open(selID);
		T=null;
		if(Auth.role>=25)	$(CatEdit.init);
	}
, open: function(ID){//раскрыть Node
		if (!ID) return;
		var obj=document.getElementById('tr_s'+ID);
		if(!obj) {
			obj=document.getElementById('tr_v'+ID);
			if(!obj) return;
			}
		while (obj.id!='dvTree'){
			if (obj.className=='sub') {obj.style.display='block';document.getElementById('tr_i'+obj.id.substring(4)).src=Tree.path+'t_m.gif';}
			obj=obj.parentNode;
			}
	}

, close: function(ID){
	if(ID==undefined) ID=this.id.substring(4);
	var t=document.getElementById('tr_s'+ID).style;
	var b=(t.display=='none');
	t.display=(b?'block':'none'); document.getElementById('tr_i'+ID).src=Tree.path+(b?'t_m.gif':'t_p.gif');
}

, sel: function(ID,page,ev,force){//выбор категории
		//page - номер страницы в списке
		//force - true если открыли новую страницу с шифтом
		//Tmp.close();
		BookList.lastSearch=null;
		document.body.focus();
		if(ev!=null && ev.shiftKey) return true;
		page=page || 0;
		Tree.curPage=page;
		var obj=document.getElementById("tr_a"+ID);
		var $obj=$(obj), ind=$obj.attr('index');
		//if (Tree.curNodeID==ID && page==0) {if (Tree.hasChild[ind]==1) Tree.close(ID); return false;}//выбрали тот же Node
//			if(Tree.curNodeID!=undefined){
//			//закрываем старые Nodes
//				var o=$e('tr_a'+Tree.curNodeID);
//				while(o.id!='dvMenu'){
//				//alert(o.className);
//					o=o.parentNode;
//				}}
		Tree.curNodeID=ID;
		if (page==0 || force){
			if(Tree.selItem) Tree.selItem.className='';
			Tree.open(ID);
			obj.className='sel';
			Tree.selItem=obj;
		}	
		var href='/'+$obj.attr('code'); //относительная ссылка на ftp
		var o=$obj.parent().parent().parent().parent();	
		while(o.attr('id')!='tdLeftMenu')
		{
			href='/'+o.find('A').attr('code')+href;
			o=o.parent().parent();	
		}

		Main.curLink='/?t=n&nID='+Tree.curNodeID;//текущая позиция

		$.ajaX({
			target:{obj:'tdBody',img:'#circle'}
			,url:'/BookList.aspx'
			,q:{
				 id:ID//nodeID
				,node:$obj.attr('node')
				,CollID: Main.CollectionID
				,href:href
				,isNote:$obj.attr('isNote')
				}
			,on:Tree.subTreeList
		});
		return false;
	}
//выводим список подкатегорий
,subTreeList: function(){
		var A=Tree.selItem.parentNode.parentNode.getElementsByTagName("A");
		//var code=$(A).attr('code'); 
		if($e('AlphDiv')) Tree.alph.init();

		$E('hCatName').html(Tree.selItem.innerHTML);
		if(A.length==1) return;
		var ind=0;
		var o, name,title, s='';
		var iNL=$(A[0]).attr('node').length+1;
		//if (iNL>2) return;
		for(var i=1;i<A.length;i++)
		{
			var o=$(A[i]); 
			if(o.attr('node').length!=iNL) continue;//детей игнорируем
			
			//code=o.attr('code');
			name="<sup>" +o.attr('code') + "</sup>"+(o.attr('title')  || o.html());
			if(ind==0) s+="<tr>";
			s+="<td onmouseover=\"this.className='over'\" onmouseout=\"this.className=''\" onclick='Tree.sel("+o.attr('id').substr(4)+")'>"+name+"</td>";
			if(++ind==3) {s+="</tr>";ind=0;}
		}
		//завершаем список
		if (ind>0) 
			{
				while(ind++<3) s+="<td style='cursor:default'>&nbsp;</td>";
				s+="</tr>";
			}
		$('#dvSubCatList').html("<table id=subCatList>" + s + "</table>");
	}
,unsel: function(){
		if (Tree.curNodeID==0) return;
		Tree.curNodeID=0;
		Tree.curOpenItem=null;
		Tree.selItem.className='';
		Tree.selItem=null;
		Main.curLink=null;
	}
}

Tree.switchMode=function(isAlph,skipSel){
	/// <summary>switch Alphabet to Tree</summary>
	if(Tree.modeType==undefined) Tree.modeType=0;
	if(Tree.modeType==isAlph && !skipSel) return;
	Tree.modeType=isAlph;
	$html('dvAlph','');
	var cn = $e('spCreateRoot'); if (cn) $show(cn, isAlph == 0)

	if (isAlph) $html('dvAlph', '');

	$show('dvTree', isAlph == 0);
	$show('dvAlph', isAlph == 1);
	Tree.alph.lastTD=null;

	if(isAlph==0){
		$e('tabCatTypeC').className='sel';
		$e('tabCatTypeA').className='';
		if(!skipSel)
		{
			if (Tree.curNodeID == 0) $html('tdBody', ''); //Main.newsList(); 
			else Tree.sel(Tree.curNodeID);
		}
		return;
	}
	$html('tdBody','');
	$e('tabCatTypeC').className = '';
	$e('tabCatTypeA').className = 'sel';
	$.ajaX({
		url: "/alphabet.ashx?id=" + Main.CollectionID
		, target: 'dvAlph'
		,on:Tree.alph.init
	})	
}

Tree.alph={
 lastTD:null
, init: function(){
	Tree.alph.lastTD=null;
	var t=$e('tblAlphName');	if(!t) return;
	t=t.getElementsByTagName("TD");
	for(var i=t.length-1;i>=0;i--) $(t[i]).hover(Tree.alph.on,Tree.alph.out).click(Tree.alph.click);

	var t = $e('tblAlphAuthor'); if (!t) return;
	t = t.getElementsByTagName("TD");
	for (var i = t.length - 1; i >= 0; i--) $(t[i]).hover(Tree.alph.on, Tree.alph.out).click(Tree.alph.click);

 }
, on: function(){
		$(this).addClass("over");
	}
, out: function(){
		$(this).removeClass("over");
	}
, click: function(o){
		if(Tree.alph.lastTD) $(Tree.alph.lastTD).removeClass("sel");
		Tree.alph.lastTD=this;
		$(this).addClass("sel");
		var t=this.parentNode;
		while (t.tagName!='TABLE') t=t.parentNode;
		BookList.search(
			$(this).text()
			,t.id=='tblAlphAuthor'?'alphA':'alphN'
			,null
			,Tree.modeType?null:Tree.selItem.getAttribute('node') //Node если вызвано из персоналии
		);
	}
}