function Menu(menu_arr,order,div_id,arr_path) {
	var regim=1;
	this.arr_path=arr_path||false;//область расположения пути
	this.srcImg="../img/";//путь до папки с картинками
	this.unique=div_id+'rnd'+div_id;//имя создава
	this.div_id=div_id||false;
	this.order=order||false;
	this.id_div_path="core_path";
	this.menu=menu_arr||false;
	this.regim=regim||1;//1-каждый пункт сам по себе, 2-открывается остальные закрываются
	this.display=false;
	/*******
	
	$this->col_parent="ITEM_PARENT";
	$this->col_id_punkt="ITEM_ID";
	$this->col_order="ITEM_ORDER";
	$this->col_href="ITEM_HREF";
	
	*******/
	this.setMenuData = function(menu_arr,order,div_id,arr_path){
		this.menu=menu_arr||false;
		this.order=order||false;
		this.div_id=div_id||false;
		this.arr_path=arr_path||false;
	}
	this.viewPath=function(){
			div=document.getElementById(this.id_div_path);
			path='<a href="/index.php">Портал</a>';
			for(var i=0;i<this.arr_path.length;i++){
				path+=' &raquo ';	
				path+='<a href="'+this.menu[this.arr_path[i]].ITEM_HREF+'">'+this.menu[this.arr_path[i]].ITEM_NAME+'</a>';
				
			}
			div.innerHTML=path;
	}
	this.init=function (){
		this.display=true;
		html=this.createMenu();
		div=document.getElementById(this.div_id);
		div.innerHTML=html;
		this.setClicks();
		this.viewPath();
	}
	
		
	this.setClicks=function()
	{
		for(id_punkt in this.menu){
			if(this.menu[id_punkt].IS_FOLDER==1){
				var ico=document.getElementById('ico_'+this.unique+id_punkt);
				if(this.regim==1){
					if(this.menu[id_punkt].OPEN==1){
						ico.onclick=this.punktClose.bind(this);
						
					}else{
						ico.onclick=this.punktOpen.bind(this);
					}
				}else{
					ico.onclick=this.clickOne.bind(this);
				}
			}
		}
	}
	this.punktOpen=function(id_punkt)
	{
		/*for(var i=-1;i<this.menu.length;i++){//расписывает все пункт в меню на одной странице
			document.write('<p>');
			for(j in this.menu[i]){
				document.write('this.menu['+i+']['+j+']='+this.menu[i][j]+'<br>');
			}
		}*/
		if(typeof(id_punkt)!='number'&&typeof(id_punkt)!='string'){//если в id_punkt лежит событие
			elem=this.returnEvtObj(id_punkt);//вытаскиваем из события объект
			id_punkt=elem.id.substring(this.unique.length+4);//из идентификатора объекта достаём идентификатор пункта
		}
		
		id=id_punkt;
		for(var i=-1;i<this.menu[id_punkt].LEVEL;i++){
			var div=document.getElementById('div_'+this.unique+id);
			var ico=document.getElementById('ico_'+this.unique+id);
			div.style.display="block";
			if(core.is_img===true){
				ico.className=""+this.prefix_word+"_icoOpenPunktImg";
			}else{
				ico.className=""+this.prefix_word+"_icoOpenPunkt";
				ico.innerHTML='–';
			}
			ico.onclick=(this.regim==1)?this.punktClose.bind(this):this.clickOne.bind(this);
			this.menu[id].OPEN=1;
			id=this.menu[id].ITEM_PARENT;
		}
	}
	this.punktClose=function(id_punkt)
	{
		if(typeof(id_punkt)!='number'&&typeof(id_punkt)!='string'){
			elem=this.returnEvtObj(id_punkt);
			id_punkt=elem.id.substring(this.unique.length+4);
		}
		var div=document.getElementById('div_'+this.unique+id_punkt);
		var ico=document.getElementById('ico_'+this.unique+id_punkt);
		div.style.display="none";
		if(core.is_img===true){
			//ico.src="img/c.gif";
			ico.className=""+this.prefix_word+"_icoClosePunktImg";
		}else{
			ico.className=""+this.prefix_word+"_icoClosePunkt";
			ico.innerHTML='+';
		}
		ico.onclick=(this.regim==1)?this.punktOpen.bind(this):this.clickOne.bind(this);
		this.menu[id_punkt].OPEN=0;
	
	}
	this.closeAll=function()
	{
		for(punkt_id in this.menu){
			if(this.menu[punkt_id].IS_FOLDER==1){
				this.menu[punkt_id].OPEN=0;
			}
		}
	}
	this.clickOne=function(id_punkt)
	{
		if(typeof(id_punkt)!='number'&&typeof(id_punkt)!='string'){
			elem=this.returnEvtObj(id_punkt);
			id_punkt=elem.id.substring(this.unique.length+4);
		}
		var open=this.menu[id_punkt].OPEN;
		this.closeAll();
		this.init();
		if(open==0){
			this.punktOpen(id_punkt);
		}else{
			this.punktOpen(id_punkt);
			this.punktClose(id_punkt);
		}
	}
	this.returnEvtObj=function(evt)
	{
		elem=(evt=='[object Event]'||evt=='[object MouseEvent]')?
			evt.target:(window.event)?
					window.event.srcElement:'null';
		return elem
	}
	this.createMenu = function(id_parent)
		{	
			this.prefix_word=this.prefix_word||'classic_tree';//Необходимо для определения разных иерархических списков одновренменно существующих на странице
			id_parent=id_parent||0;
			var html='';
			for(num in this.order){
				id_punkt=this.order[num];
				if(this.menu[id_punkt].ITEM_PARENT==id_parent){	
					html+=this.createPunkt(this.menu[id_punkt]);
					if(this.menu[id_punkt].IS_FOLDER==1){
						d_class=""+this.prefix_word+"_mainDiv ";
						d_id='div_'+this.unique+id_punkt;
						d_style=(this.menu[id_punkt].OPEN==0)?"display:none":'';
						new_id_punkt=this.menu[id_punkt].ITEM_ID;
						html+="\n<div id='"+d_id+"' class='"+d_class+"' style='"+d_style+"'>";
						html+=this.createMenu(new_id_punkt);
						html+="\n</div>";
					}
				}
			}
				html+='';

			return html;
		}
		this.createPunkt=function(punkt){
			var html='<img src="/core/portal/kernel/img/px.gif"><p>';
			var punkt_class='';
			/*идентификатор иконки рядом с пунктом для обработки кликов по ней*/
			ico_id=(punkt.IS_FOLDER==1)?
					"ico_"+this.unique+punkt.ITEM_ID:'';
			/*/определяется оформление пункта и иконки рядом с ним в зависимости от того- есть вложенные в нём пункты или нет;открыт пункт или закрыт; выбран или нет; включены или выключены картинки*/
			if(core.is_img===true){
				ico_class=(punkt.IS_FOLDER==1)?(punkt.OPEN==1)?
					""+this.prefix_word+"_icoOpenPunktImg":""+this.prefix_word+"_icoClosePunktImg":""+this.prefix_word+"_icoPunktImg";
				html+='<span id="'+ico_id+'" class="'+ico_class+'"></span>';
			}else{
				ico_class=(punkt.IS_FOLDER==1)?(punkt.OPEN==1)?
					""+this.prefix_word+"_icoOpenPunkt":""+this.prefix_word+"_icoClosePunkt":''+this.prefix_word+'_icoPunkt';
				ico=(punkt.IS_FOLDER==1)?(punkt.OPEN==1)?
					'–':'+':'• ';
				html+='<span class="'+ico_class+'" id="'+ico_id+'">'+ico+'</span>';
			}
			punkt_class+=(punkt.SELECTED==1)?' '+this.prefix_word+"_punktSelected ":'';
			/*вывод строчки пункта*/
			html+='<a href="#" class="'+punkt_class+'">'+punkt.ITEM_NAME+' | '+punkt.ITEM_ID+'</a>';
			return html;
		}
			/*
			
			
			Для nаблиц
			
			
			
			*/
		
	this.Tinit=function (){
		this.trs=new Array();
		this.display=true;
		div=document.getElementById(this.div_id);
		div.innerHTML='';
		this.table=document.createElement('table');
		this.table.className="core_table_horizontal";
		this.table.width="100%";
		this.TcreateMenu();
		div.appendChild(this.table);
		core.commonTableInit(div);
		this.TsetClicks();
	}
	this.TcreateMenu = function(id_parent){
		this.prefix_word=this.prefix_word||'classic_tree';//Необходимо для определения разных иерархических списков одновренменно существующих на странице
		id_parent=id_parent||0;
		i=0;
		for(num in this.order){
			id_punkt=this.order[num];
			var punkt_class='';
			if(this.prefix_word='menu_roles'){
				alert(id_punkt);
			}
			if(this.menu[id_punkt].ITEM_PARENT==id_parent){	
				punkt=this.menu[id_punkt];
				var step='';
				for(var j=0;j<punkt.LEVEL;j++){
				 	step+="&nbsp&nbsp&nbsp";
			    }
				tr=this.table.insertRow(num);
				this.trs[id_punkt]=num;
				punkt_class+=(punkt.SELECTED==1)?' '+this.prefix_word+"_punktSelected ":'';
				tr.className=punkt_class;
				
				this.TcreatePunkt(id_punkt);
				/*идентификатор иконки рядом с пунктом для обработки кликов по ней*/
				ico_id=(punkt.IS_FOLDER==1)?
						"ico_"+this.unique+punkt.ITEM_ID:'';
				/*/определяется оформление пункта и иконки рядом с ним в зависимости от того- есть вложенные в нём пункты или нет;открыт пункт или закрыт; выбран или нет; включены или выключены картинки*/
				if(core.is_img===true){
					ico_class=(punkt.IS_FOLDER==1)?(punkt.OPEN==1)?
						""+this.prefix_word+"_icoOpenPunktImg":""+this.prefix_word+"_icoClosePunktImg":""+this.prefix_word+"_icoPunktImg";
					/**/html_ico=step+'<span id="'+ico_id+'" class="'+ico_class+'">&nbsp&nbsp&nbsp&nbsp</span>';
				}else{
					ico_class=(punkt.IS_FOLDER==1)?(punkt.OPEN==1)?
						""+this.prefix_word+"_icoOpenPunkt":""+this.prefix_word+"_icoClosePunkt":''+this.prefix_word+'_icoPunkt';
					ico=(punkt.IS_FOLDER==1)?(punkt.OPEN==1)?
						'–':'+':'• ';
					/**/html_ico=step+'<span class="'+ico_class+'" id="'+ico_id+'">'+ico+'</span>';
				}
				td=tr.insertCell(0);
				td.innerHTML=html_ico+this.menu[id_punkt].ITEM_NAME;
				if(this.menu[id_punkt].IS_FOLDER==1&&this.menu[id_punkt].OPEN==1){
					this.TcreateMenu(id_punkt);
				}	
			i++;
			}
		}
	}
	this.TcreatePunkt=function(id_punkt){
		var pattern=/^L{1}\d+$/;			
		for(j in this.menu[id_punkt]){
			if(pattern.test(j)){
				td=tr.insertCell(0);
				td.innerHTML=this.menu[id_punkt][j];
			}
		}   	
		//td=tr.insertCell(0);
		//td.innerHTML=this.menu[id_punkt].ITEM_NAME;
		//td=tr.insertCell(0);
		//td.innerHTML=this.menu[id_punkt].ITEM_ID;
		//td=tr.insertCell(0);
		//td.innerHTML=this.menu[id_punkt].ITEM_PARENT;
		//td=tr.insertCell(0);
		//td.innerHTML=this.menu[id_punkt].LEVEL;
	}
	this.TpunktOpen=function(id_punkt){
		if(typeof(id_punkt)!='number'&&typeof(id_punkt)!='string'){//если в id_punkt лежит событие
			elem=this.returnEvtObj(id_punkt);//вытаскиваем из события объект
			id_punkt=elem.id.substring(this.unique.length+4);//из идентификатора объекта достаём идентификатор пункта
		}
		this.menu[id_punkt].OPEN=1;
		this.Tinit();
	}
	this.TpunktClose=function(id_punkt){
		if(typeof(id_punkt)!='number'&&typeof(id_punkt)!='string'){//если в id_punkt лежит событие
			elem=this.returnEvtObj(id_punkt);//вытаскиваем из события объект
			id_punkt=elem.id.substring(this.unique.length+4);//из идентификатора объекта достаём идентификатор пункта
		}
		this.menu[id_punkt].OPEN=0;
		this.Tinit();
	}
	this.TsetClicks=function()
	{
		for(id_punkt in this.menu){
			if(this.menu[id_punkt].IS_FOLDER==1){
				var ico=document.getElementById('ico_'+this.unique+id_punkt);
				if(ico){
					if(this.menu[id_punkt].OPEN==1){
						ico.onclick=this.TpunktClose.bind(this);
					}else{
						ico.onclick=this.TpunktOpen.bind(this);
					}
				}
			}
		}
	}
			
}