//is_can_click=true;
function Table_tree(div_id) {
        if(ADODB_FETCH_MODE&&ADODB_FETCH_MODE==1){
                this.item_id=0
                this.item_parent=1
                this.is_folder=2
                this.item_open=3
                this.item_name=4;
        }else{
                this.item_id='ITEM_ID';
                this.item_parent='ITEM_PARENT';
                this.is_folder='IS_FOLDER';
                this.item_open='OPEN';
                this.item_name='ITEM_NAME';
        }
        this.isWaitPlease=true;
        this.unique=div_id+'rnd'+div_id;//имя создава
        this.div_id=div_id||false;
        this.max_parent_id=0;
        this.header_tr_id=0;
        this.table=document.createElement('table');
             this.order=new Array();
             this.menu=new Array();
             menu_arr_up=new Array();
             order_arr_up=new Array();
             this.loaded_folder=new Array();
             this.alerting_folder=new Array();
             this.thead=document.createElement('THEAD');
             this.tbody=document.createElement('TBODY');
             this.table.appendChild(this.thead);
             this.table.appendChild(this.tbody);
             this.div=document.getElementById(this.div_id);
             this.div.innerHTML='';
             this.div.appendChild(this.table);


        this.table.className="core_table_horizontal p";
        this.table.style.cursor="default";
        this.div.style.textAlign="center";
        if(!this.div){
             return false;
        }
        this.ishead=false;
        this.createHead=function(){//подменяемый
                var tr=this.thead.insertRow(-1);
                var td=document.createElement('td');
                td.innerHTML='head1';
                tr.appendChild(td);
                var td=document.createElement('td');
                td.innerHTML='head2';
                tr.appendChild(td);
        }
        this.Tinit=function (col_num){
                this.prefix_word=this.prefix_word||'T';//Необходимо для определения разных иерархических списков одновренменно существующих на странице
                this.createHead();
                if(this.thead.rows.length>0){
                        this.ishead=true;
                }else{
                        var col_num=col_num||2;
                        var tr=this.tbody.insertRow(0);
                        for(var i=0; i<col_num;i++){
                                var td=document.createElement('td');
                                tr.appendChild(td);
                        }
                }
                this.first=true;
                this.TClick(this.max_parent_id);
                //core.commonTableInit(info.table);
        }
        this.TClick=function(id_parent){
                if(typeof(id_parent)!='number'&&typeof(id_parent)!='string'){//если в id_parent лежит событие
                        var elem=core.returnEvtObj(id_parent);//вытаскиваем из события объект
                        var id_parent=elem.id.substring(this.unique.length+4);//из идентификатора объекта достаём идентификатор пункта
                }else{
                        if(this.isWaitPlease==true){
                                //core_alerting(this.table);
                                /*face.alert('<p>Построение таблицы может занять некоторое время...</p>');
                                face.img_src='/common_img/loading.gif';*/
                                if(!this.boxWait){
                                  this.boxWait=face.newBox('alert','<p>Построение таблицы может занять некоторое время...</p>');
                                  this.boxWait.img_src='/common_img/loading.gif';
                                }
                                this.boxWait.showWindow();
                        }
                        if(id_parent!=this.max_parent_id){
                                var elem=document.getElementById('ico_'+this.unique+id_parent);
                        }
                }
                if(id_parent!=this.max_parent_id){
                        if(typeof(this.isOpenGroup)=='function'){
                                var result=this.isOpenGroup(punkt);
                                if(result==false){
                                        return;
                                }
                        }
                }
                if(this.loaded_folder[id_parent]){
                        if(this.menu[id_parent][this.item_open]==1){
                                return true;
                        }
                        this.TClickDo(id_parent);
                }else{
                        if(elem){
                                core_alerting(elem);
                        }else{
                                //alert('asdf');
                        }
                        this.loaded_folder[id_parent]=true;
                        var level=(id_parent==this.max_parent_id)?0:this.menu[id_parent].LEVEL;
                        xajax_TClick(id_parent,level);
                }
        }
        this.xajaxTClick=function(id_parent){
                var next_level=(id_parent==this.max_parent_id)?1:this.menu[id_parent].LEVEL+1;
		//alert(menu_arr_up.length);
		//alert(order_arr_up.length);
		ml=0;
		ol=0;
                for (i in menu_arr_up){
			ml++;
                        this.menu[i]=menu_arr_up[i];
                        this.menu[i].LEVEL=next_level;
                }
                for (i in order_arr_up){
		    ol++;
                        this.order[this.order.length]=order_arr_up[i];
                }
		if(ol!=ml)alert('Произошла ошибка');
                this.TClickDo(id_parent);
        }
        this.TClickDo=function(id_parent){
                if(this.isWaitPlease==true){
                        //core_arr_alerting[this.table.id]='undefined';//прикрываем мигание
                        this.boxWait.hideWindow();
                }
                if(id_parent!=this.max_parent_id){
                        var elem=document.getElementById('ico_'+this.unique+id_parent);
                        var el=(elem.parentElement)?elem.parentElement.parentElement:elem.parentNode.parentNode;
                        var index=el.sectionRowIndex+1;
                        core_arr_alerting[elem.id]='undefined';//прикрываем мигание
                }else{
                        if(this.ishead){
                                index=0;
                        }else{
                                index=1;
                        }
                }
                var add_row_arr=this.TpunktOpen(id_parent);
                if(id_parent!=this.max_parent_id){
                        var punkt=this.menu[id_parent];
                        punkt.COUNT=0;
                        punkt[this.item_open]=1;
                }
                if(core){
                        var is_core_table=core.isHaveClass(this.table,'core_table');
                }else{
                        var is_core_table=false;
                }
                var isFirst=true;

                for (i in add_row_arr){
                        if(id_parent!=this.max_parent_id){
                                punkt.COUNT++;
                        }
                        var tr=this.createRowPunkt(add_row_arr[i],index);
                        if(id_parent==this.max_parent_id){
                           index++;
                        }
                        if(is_core_table){
                                if(isFirst==true){
                                        var mytr=tr;
                                }
                                var isFirst=false;
                                core_TablemiddleTr(tr,tr.cells.length);
                        }
                }
                if(is_core_table&&!isFirst){
                        core_TablemiddleBottomTr(mytr,mytr.cells.length,'MayBe');
                        if(id_parent!=this.max_parent_id){
                                core_TablemiddleTr(el,el.cells.length,'allready');
                        }
                }
                this.TsetClicks();
                this.first=false;
                if(typeof(this.openGroup)=='function'){
                       this.openGroup(punkt);
                }

        }
        this.TpunktOpen=function(id_parent,add_row_arr){
                var add_row_arr=add_row_arr||new Array();
                for (i in this.order){
                        var punkt=this.menu[this.order[i]];
			//if(this.item_parent!="ITEM_PARENT"){
			//core.viewObject(punkt);
			//}
			/*var r=false;
			for(j in punkt){
			    if(j==this.item_parent){
				r=true;
			    }
			}
			if(!r){
			    return;
			    //core.viewObject(punkt);
			    //alert('asdf');    
			}*/
                        if(punkt[this.item_parent]==id_parent){
                                if(this.first==true){//this.ishead==true){
                                        add_row_arr.push(punkt[this.item_id]);
                                }else{
                                        add_row_arr.unshift(punkt[this.item_id]);
                                }
                                if(punkt[this.is_folder]==1&&punkt[this.item_open]==1){
                                        if(this.loaded_folder[punkt[this.item_id]]){
                                                var add_row_arr=this.TpunktOpen(punkt[this.item_id],add_row_arr);
                                        }else{
                                                this.TClick(punkt[this.item_id]);
                                        }
                                }
                        }
                }
                return add_row_arr;
        }
        this.TClose=function(id_parent){
                if(typeof(id_parent)!='number'&&typeof(id_parent)!='string'){//если в id_parent лежит событие
                        var span=core.returnEvtObj(id_parent);//вытаскиваем из события объект
                        var id_parent=span.id.substring(this.unique.length+4);//из идентификатора объекта достаём идентификатор пункта
                        var tr=(span.parentElement)?span.parentElement.parentElement:span.parentNode.parentNode;
                        var del_index=tr.sectionRowIndex+1;
                }else{
                        if(id_parent!=this.max_parent_id){
                                var span=document.getElementById('ico_'+this.unique+id_parent);
                        }
                        var tr=(span.parentElement)?span.parentElement.parentElement:span.parentNode.parentNode;
                        var del_index=tr.sectionRowIndex+1;
                }
                if(id_parent==this.max_parent_id){
                        var del_index=-1;
                }
                punkt=this.menu[id_parent];
                if(typeof(this.isCloseGroup)=='function'){
                        if(!this.isCloseGroup(punkt)){
                                return;
                        }
                }
                punkt[this.item_open]=0;
                var row_ctr=this.TpunktClose(id_parent);
                for(var i=0;i<row_ctr;i++){
                        this.tbody.deleteRow(del_index);
                }
                if(typeof(this.CloseGroup)=='function'){
                        this.CloseGroup(punkt);
                }
                this.TsetClicks();
                core_TablemiddleBottomTr(tr,tr.cells.length,'MayBe');
        }
        this.TpunktClose=function(id_parent,row_ctr){//cчитаем сколько строк надо удалить
                row_ctr=row_ctr||0;
                for (i in this.order){
                        var punkt=this.menu[this.order[i]];
                        if(punkt[this.item_parent]==id_parent){
                                row_ctr++;
                                if(punkt[this.is_folder]==1&&punkt[this.item_open]==1){
                                        var row_ctr=this.TpunktClose(punkt[this.item_id],row_ctr);
                                }
                        }
                }
                return row_ctr;
        }

        this.createDriveTd=function(id_punkt,tr){// подменяемый редко
                var td=document.createElement('TD');
                var num=this.menu[id_punkt].LEVEL-1;
                td.style.paddingLeft=num+'em';
                td.style.textAlign='left';
                td.style.whiteSpace='nowrap';
                var ico_span=document.createElement('span');
                ico_span.id="ico_"+this.unique+id_punkt;
                ico_span.style.display="none";
                ico_span.innerHTML=ico_span.id;
                td.appendChild(ico_span);
                td.innerHTML+=this.createFirstName(id_punkt,td,tr);
                return td;
        }
        this.createFirstName=function(id_punkt,td,tr){// подменяемый
                return this.menu[id_punkt][this.item_name];
        }
        this.createRowPunkt=function(id_punkt,index){
                var tr=this.tbody.insertRow(index);
                ftd=this.createDriveTd(id_punkt,tr);
                tr.appendChild(ftd);
                this.createRow(id_punkt,tr);
                return tr;
        }
        this.createRow=function(id_punkt,tr){// подменяемый
                var td=document.createElement('td');
                td.innerHTML=this.menu[id_punkt][this.item_name];
                tr.appendChild(td);
        }
        this.TsetClicks=function(){
                for(id_punkt in this.menu){
                        var punkt=this.menu[id_punkt];
                        var ico=document.getElementById('ico_'+this.unique+id_punkt);
                        if(ico){
                                if(core.is_img===true){
                                        var ico_class=(punkt[this.is_folder]==1)?(punkt[this.item_open]==1)?
                                                ""+this.prefix_word+"_icoOpenPunktImg":""+this.prefix_word+"_icoClosePunktImg":""+this.prefix_word+"_icoPunktImg";
                                        var ico_char='&nbsp&nbsp&nbsp&nbsp';
                                }else{
                                        var ico_class=(punkt[this.is_folder]==1)?(punkt[this.item_open]==1)?
                                                ""+this.prefix_word+"_icoOpenPunkt":""+this.prefix_word+"_icoClosePunkt":''+this.prefix_word+'_icoPunkt';
                                        var ico_char=(punkt[this.is_folder]==1)?(punkt[this.item_open]==1)?
                                                '–':'+':'• ';
                                }
                                ico.innerHTML=ico_char;
                                ico.style.display="";
                                ico.className=ico_class;
                                if(this.menu[id_punkt][this.item_open]==1){
                                        ico.onclick=this.TClose.bind(this);
                                }else{
                                        ico.onclick=this.TClick.bind(this);
                                }
                        }
                }
                face.reloadFace();
                setTimeout('face.reloadFace()',100);
        }
        this.delPunkt=function(punkt_id){
                parent_id=this.menu[punkt_id].ITEM_PARENT;
                if(parent_id==this.max_parent_id){
                   //this.div.innerHTML='';
                   //this.TClick(0);
                  // this.initVar();
                   //this.Tinit();
                }else{
                      var new_order=new Array();
                      var new_menu=new Array();
                      var new_loaded_folder=new Array();
                      this.TClose(parent_id);
                      //this.TClick(parent_id);
                       for(i in this.order){
                               var punkt=this.order[i];
                               if(punkt!=punkt_id){
                                       new_order.push(punkt);
                               }
                       }
                       this.order=new_order;

                       for(j in this.menu){
                               var punkt=j;

                               if(punkt!=punkt_id){
                                       new_menu[punkt]=this.menu[punkt];

                               }else{

                               }
                       }
                       this.menu=new_menu;
                       for(i in this.loaded_folder){
                           var punkt=i;
                           if(punkt!=punkt_id){
                                   new_loaded_folder[i]=this.loaded_folder[i];
                           }
                       }
                       this.loaded_folder=new_loaded_folder;
                      this.TClick(parent_id);
                }
        }
}
var core_arr_alerting=new Array();
var colors_change_time=200;
//var colors=['#2FF','#3FF','#8FF','#BFF','#FFF'];
var colors=['#f2f2fb','#aaaae2','#7575ca','#3b3ba3','#18188b'];
//var colors=['#8282fe','#5959e1','#3d3dc3','#2525a1','#16167e'];


core_alerting=function(el){
        if(typeof(el)=='string'){
                el=document.getElementById(el);
                var elid=el.id;
                if(core_arr_alerting[elid]=='undefined'){
                        el.style.backgroundColor='white';
                        return;
                }
        }else{
                var elid=el.id;
                if(elid==''){
                        var time=Math.random();
                        el.id='rnd'+time;
                        elid=el.id;
                }
        }
        if(!core_arr_alerting[elid]||core_arr_alerting[elid]=='undefined'){
                core_arr_alerting[elid]=new Array();
                core_arr_alerting[elid]['n']=0;
                core_arr_alerting[elid]['k']=-1;
        }
        if(core_arr_alerting[elid]['n']>=colors.length-1||core_arr_alerting[elid]['n']<=0){
                core_arr_alerting[elid]['k']=core_arr_alerting[elid]['k'] * -1;
        }
        el.style.backgroundColor=colors[core_arr_alerting[elid]['n']];
        core_arr_alerting[elid]['n']+=core_arr_alerting[elid]['k'];
        setTimeout('core_alerting("'+elid+'")',colors_change_time);
}