function Core_table_inc(){
	this.init=function(obj,type){
		this.type=type||'lite';
		/*находим все отмеченные таблицы*/
		if (!document.getElementsByTagName){
			return;
		}
		if(typeof(obj)=='string'){
			obj=document.getElementById(obj);
		}
		obj=obj||document;
		if(obj.tagName=='TABLE'){
			tbls=new Array(obj);
		}else{
			tbls = obj.getElementsByTagName("table");
		}
		
		for (ti=0; ti<tbls.length; ti++){
			var thisTbl = tbls[ti];
			if (((' '+thisTbl.className+' ').indexOf(" core_table_vertical ") != -1)){
				//this.makeTStripe(thisTbl);
				core.addStyle(thisTbl,'p');
				//this.makeTFirstCol(thisTbl);
			}
			if (((' '+thisTbl.className+' ').indexOf(" core_table_horizontal ") != -1)){
				//core.addStyle(thisTbl,'p');
				//this.makeTStripe(thisTbl);
				core_TableInit(thisTbl);
			}
			if (((' '+thisTbl.className+' ').indexOf(" core_table_stripe ") != -1)){
				core.addStyle(thisTbl,'p');
				this.makeTStripe(thisTbl);
			}
			if (((' '+thisTbl.className+' ').indexOf(" core_table_motion ") != -1)){
				this.makeTMotion(thisTbl);
			}
			if (((' '+thisTbl.className+' ').indexOf(" core_table_click ") != -1)){
				this.makeTClick(thisTbl);
			}
		}
	}
	this.makeTClick=function (tbl){
		/*по таблице можно кликать*/
		if (!tbl.getElementsByTagName)	return;
		tbl=tbl['tBodies'][0]||tbl;
		rows = tbl.getElementsByTagName("tr");
		for(var i=0; i<rows.length; i++){
			core.addHandler(rows[i],'click',core_tMouseClickFirst);
		}
	}
	this.makeTMotion=function (tbl){
		if (!tbl.getElementsByTagName)	return;
		tbl=tbl['tBodies'][0]||tbl;
		rows = tbl.getElementsByTagName("tr");
		var k=0;
		for(var i=0; i<rows.length; i++){
			var condition=(i+k)%2;
			if(rows[i].style.display!='none'){
				if (((' '+rows[i].className+' ').indexOf(" core_table_meta_tr_odd ") != -1)){
					//core.removeHandler(rows[i],'mouseover',this.tMouseEvenOver.bind(this));
					//core.removeHandler(rows[i],'mouseout',this.tMouseEvenOut.bind(this));
					core.addHandler(rows[i],'mouseover',this.tMouseOver.bind(this));
					core.addHandler(rows[i],'mouseout',this.tMouseOut.bind(this));
					if(condition!=0){
						k++;
					}
				}else if (((' '+rows[i].className+' ').indexOf(" core_table_meta_tr_even ") != -1)){
					//core.removeHandler(rows[i],'mouseover',this.tMouseOddOver.bind(this));
					//core.removeHandler(rows[i],'mouseout',this.tMouseOddOut.bind(this));
					
					core.addHandler(rows[i],'mouseover',this.tMouseOver.bind(this));
					core.addHandler(rows[i],'mouseout',this.tMouseOut.bind(this));
					if(condition==0){
						k++;
					}
				}else if(condition==0){
					//core.addStyle(rows[i],'core_table_row_odd_m_over','core_table_row_odd_m_out');
					
					core.removeHandler(rows[i],'mouseover',this.tMouseOver);
					core.removeHandler(rows[i],'mouseout',this.tMouseOut);
					
					core.addHandler(rows[i],'mouseover',this.tMouseOver.bind(this));
					core.addHandler(rows[i],'mouseout',this.tMouseOut.bind(this));
				}else{
					//core.addStyle(rows[i],'core_table_row_even_m_out','core_table_row_even_m_over');
					core.removeHandler(rows[i],'mouseover',this.tMouseOver.bind(this));
					core.removeHandler(rows[i],'mouseout',this.tMouseOut.bind(this));
					
					core.addHandler(rows[i],'mouseover',this.tMouseOver.bind(this));
					core.addHandler(rows[i],'mouseout',this.tMouseOut.bind(this));
				}
			}else{
				k++;
			}
		}
	}
	/*this.makeTMotionTd=function (tbl){
		//makeTStripe(tbl);
		if (!tbl.getElementsByTagName)	return;
		tbl=tbl['tBodies'][0]||tbl;
		rows = tbl.getElementsByTagName("tr");
		for(var i=0; i<rows.length; i++){
			if((i%2)==0){
				//core.addStyle(rows[i],'core_table_row_odd_m_over','core_table_row_odd_m_out');
				core.addHandler(rows[i],'mouseover',this.tMouseOddOver.bind(this));
				core.addHandler(rows[i],'mouseout',this.tMouseOddOut.bind(this));
			}else{
				//core.addStyle(rows[i],'core_table_row_even_m_out','core_table_row_even_m_over');
				core.addHandler(rows[i],'mouseover',this.tMouseEvenOver.bind(this));
				core.addHandler(rows[i],'mouseout',this.tMouseEvenOut.bind(this));
			}
		}
	}*/
	this.makeTFirstCol=function(tbl){
		rows = tbl.getElementsByTagName("tr");
		for(var i=0; i<rows.length; i++){
			var tdd=rows[i].childNodes.item(0);
			core.addStyle(tdd,"core_table_first_col");
		}
	}
	this.makeTStripe=function(tbl){
		if (!tbl.getElementsByTagName)	return;
		tbl=tbl['tBodies'][0]||tbl;
		rows = tbl.getElementsByTagName("tr");
		var k=0;//переменая востанавливающая соответсвие чётности если пропускаются скрытые строки
		for(var i=0; i<rows.length; i++){
			var condition=(i+k)%2;
			if(rows[i].style.display!='none'){
				if (((' '+rows[i].className+' ').indexOf(" core_table_meta_tr_odd ") != -1)){
					core.addStyle(rows[i],'core_table_row_odd','core_table_row_even');
					core.addStyle(rows[i],'core_table_flag_odd','core_table_flag_even');
					if(condition!=0){
						k++;
					}
				}else if (((' '+rows[i].className+' ').indexOf(" core_table_meta_tr_even ") != -1)){
					core.addStyle(rows[i],'core_table_row_even','core_table_row_odd');
					core.addStyle(rows[i],'core_table_flag_even','core_table_flag_odd');
					if(condition==0){
						k++;
					}
				}else if(condition==0){
					core.addStyle(rows[i],'core_table_row_odd','core_table_row_even');
					core.addStyle(rows[i],'core_table_flag_odd','core_table_flag_even');
				}else{
					core.addStyle(rows[i],'core_table_row_even','core_table_row_odd');
					core.addStyle(rows[i],'core_table_flag_even','core_table_flag_odd');					
				}
			}else{
				k++;
			}
		}
	}
	this.tgetSelectedLine=function(tbl,tr){///tdкроме
		tr=tr||'asdf';
		/*возвращает масив идентификаторов выбранных строк*/
		if(typeof(tbl)=='string'){
			tbl=document.getElementById(tbl);
		}
		if(tbl.tagName!='TABLE') return;
		
		tbl=tbl['tBodies'][0]||tbl;
		rows = tbl.getElementsByTagName("tr");
		var result=new Array();
		for(var i=0; i<rows.length; i++){
			if (((' '+rows[i].className+' ').indexOf("core_table_row_click1") != -1)){	
				result.push(rows[i]);
			}
		}
		return result;
	}
	this.tMouseOver=function(evt){
		el=core.returnEvtObj(evt);

		if(el.tagName=='TD'){//работаем со строкой, если убрать эту запись будем работать с ячейкой
			el=el.parentNode;
		}
		if(el.tagName!='TR'){
			return;
		}else if(el.tagName=='TR'){
			if (((' '+el.className+' ').indexOf("core_table_flag_even") != -1)){	
				core.addStyle(el,'core_table_row_even_m_over','core_table_row_even');
			}else{
				core.addStyle(el,'core_table_row_odd_m_over','core_table_row_odd');
			}
		}
	}
	this.tMouseOut=function(evt){
		el=core.returnEvtObj(evt);

		if(el.tagName=='TD'){
			el=el.parentNode;
		}
		if(el.tagName!='TR'){
			return;
		}else if(el.tagName=='TR'){
			if (((' '+el.className+' ').indexOf("core_table_flag_even") != -1)){	
				core.addStyle(el,'core_table_row_even','core_table_row_even_m_over');
			}else{
				core.addStyle(el,'core_table_row_odd','core_table_row_odd_m_over');
			}
		}
	}
	
	/*this.tMouseEvenOver=function(evt){
		//alert('Even');
		
		el=core.returnEvtObj(evt);

		if(el.tagName=='TD'){//работаем со строкой, если убрать эту запись будем работать с ячейкой
			el=el.parentNode;
		}
		if(el.tagName!='TR'){
			return;
		}else if(el.tagName=='TR'){
			core.addStyle(el,'core_table_row_even_m_over','core_table_row_even');
		}
	}*/
	/*this.tMouseEvenOut=function(evt){
		el=core.returnEvtObj(evt);

		if(el.tagName=='TD'){
			el=el.parentNode;
		}
		if(el.tagName!='TR'){
			return;
		}else{
			core.addStyle(el,'core_table_row_even','core_table_row_even_m_over');
		}
	}*/
	/*this.tMouseOddOver=function(evt){
		//alert('Odd');
		el=core.returnEvtObj(evt);

		if(el.tagName=='TD'){
			el=el.parentNode;
		}else{
			
		}
		if(el.tagName!='TR'){
			return;
		}else{
			core.addStyle(el,'core_table_row_odd_m_over','core_table_row_odd');
		}
	}*/
	/*this.tMouseOddOut=function(evt){
		el=core.returnEvtObj(evt);

		if(el.tagName=='TD'){
			el=el.parentNode;
		}else{
		
		}
		if(el.tagName!='TR'){
			return;
		}else{
			core.addStyle(el,'core_table_row_odd','core_table_row_odd_m_over');
		}
	}*/
}
function core_tMouseClickFirst(evt){
		el=core.returnEvtObj(evt);
		if(el.tagName=='TD'){//работаем со строкой, если убрать эту запись будем работать с ячейкой
			el=el.parentNode;
		}
		if(el.tagName!='TR'){
			return;
		}else{
			core.removeHandler(el,'click',core_tMouseClickFirst);
			core.addHandler(el,'click',core_tMouseClickSecond);
			core.addStyle(el,'core_table_row_click1','core_table_row_click2');
			if(typeof(tableLineSelected)=='function'){
				var table=el;
				for(var i=0;i<5;i++){
					if(table.tagName!='TABLE'){
						table=table.parentNode;
					}
				}
				tableLineSelected(table,el,evt);
			}else{
				//alert("Не найдена функция tableLineSelected(table,el,evt) хотя бы пустая");
			}
		}
	}
function core_tMouseClickSecond(evt){
		el=core.returnEvtObj(evt);
		if(el.tagName=='TD'){//работаем со строкой, если убрать эту запись будем работать с ячейкой
			el=el.parentNode;
		}
		if(el.tagName!='TR'){
			return;
		}else{
			if(typeof(tableLineUnSelected)=='function'){
				var table=el;
				for(var i=0;i<5;i++){
					if(table.tagName!='TABLE'){
						table=table.parentNode;
					}
				}
				
				tableLineUnSelected(table,el);
			}else{
				//alert("Не найдена функция tableLineUnSelected(table,el) хотя бы пустая");
			}
			core.removeHandler(el,'click',core_tMouseClickSecond);
			core.addHandler(el,'click',core_tMouseClickFirst);
			core.addStyle(el,'core_table_row_click2','core_table_row_click1');
		}
	}
function tClearSelectedLine(tbl,tr){
		if(typeof(tbl)=='string'){
			tbl=document.getElementById(tbl);
		}
		if(tbl.tagName!='TABLE') return false;
		
		var tbl=tbl['tBodies'][0]||tbl;
		var rows = tbl.getElementsByTagName("tr");
		for(var i=0; i<rows.length; i++){
			var el=rows[i];
			if (((' '+el.className+' ').indexOf("core_table_row_click1") != -1)&&el!=tr){	
				core.removeHandler(el,'click',core_tMouseClickSecond);
				core.addHandler(el,'click',core_tMouseClickFirst);
				core.addStyle(el,'core_table_row_click2','core_table_row_click1');
			}
		}
		return true;
	}
	
core_Tables=new Array();
core_Tables_trs=new Array();
function core_TableInit(t){
	for(var i=0;i<core_Tables.length; i++){
		if(core_Tables[i]==t){		
			return;
		}
	}
	core_Tables.push(t);
	//core.addStyle(t,'','core_table_horizontal');
	t.className+=" core_table";
	//t.border=0;
	//t.cellPadding=0;
	t.cellSpacing=0;
	if(t.tBodies.length==0){
		var tbody=document.createElement('tbody');
		t.appendChild(tbody);
	}else{
		var tbody=t.tBodies[0];
	}
	if(t.tHead!=null&&t.tHead.rows.length!=0){
		var thead=t.tHead;
		var count_content_td=thead.rows[0].cells.length;
		for(var l=0;l<thead.rows[0].cells.length;l++){
			count_content_td+=thead.rows[0].cells[l].colSpan-1;
		}
	}else if(tbody.rows.length!=0){
		var count_content_td=tbody.rows[0].cells.length;
		for(var l=0;l<tbody.rows[0].cells.length;l++){
			count_content_td+=tbody.rows[0].cells[l].colSpan-1;
		}
	}else{
		count_content_td=1;
	}
	//alert(count_content_td);
	var tr=tbody.insertRow(0);
	core_TablefirstTr(t,tr,count_content_td);
	for(var i=1;i<tbody.rows.length;i++){
		core_TablemiddleTr(tbody.rows[i],count_content_td);
	}
	core_TablemiddleBottomTr(tbody.rows[tbody.rows.length-1],count_content_td);
	tr=tbody.insertRow(-1);
	core_TablelastTr(tr,count_content_td);
	for(var i=1;i<t.rows.length;i++){
		if(t.rows[i].cells.length==0){
			t.deleteRow(i);
		}
	}
	
}
function core_TablefirstTr(t,tr,count_content_td){
	if(t.tHead!=null&&t.tHead.rows.length!=0){
		tr=t.tHead.rows[0];
		i=count_content_td;
		for(;i>0;i--){
			if(tr.cells[i-1]){
				tr.cells[i-1].className+=' core_table_12';
			}
		}
		td=tr.insertCell(0);
		td.className+=' core_table_11';
		td=tr.insertCell(-1);
		td.className+=' core_table_13';
		for(var l=1;l<t.tHead.rows.length;l++){
			core_TablemiddleTr(t.tHead.rows[l],count_content_td);
		}
	}else{
		i=count_content_td;
		td=document.createElement('td');
		tr.appendChild(td);
		td.className+=' core_table_11';
		for(;i>0;i--){
			td=document.createElement('td');
			tr.appendChild(td);
			td.innerHTML='<img height="1" width="1">';
			td.className+=' core_table_12';
		}
		td=document.createElement('td');
		tr.appendChild(td);
		td.className+=' core_table_13';
	}
}
function core_TablelastTr(tr,count_content_td){
	var i=count_content_td;
	td=document.createElement('td');
	tr.appendChild(td);
	td.className+=' core_table_31';
	for(;i>0;i--){
		td=document.createElement('td');
		tr.appendChild(td);
		td.innerHTML='<img height="1" width="1">';
		td.className+=' core_table_32';
	}
	td=document.createElement('td');
	tr.appendChild(td);
	td.className+=' core_table_33';
	return (tr);
}
var core_TableIsRowSpan=false;
function core_TablemiddleTr(tr,count_content_td,is){
	if(is=='allready'){
		for(var i=0;i<count_content_td;i++){
			if(tr.cells[i]){
				var td=tr.cells[i];
				core.addStyle(td,'','core_table_32');
				core.addStyle(td,'','core_table_2bottom');
			}
		}
	}
	for(var i=0;i<core_Tables_trs.length; i++){
		if(core_Tables_trs[i]==tr){		
			return;
		}
	}
	core_Tables_trs.push(tr);
	var numColSpan=0;
	for(var i=0;i<count_content_td;i++){
		if(tr.cells[i]){
			var td=tr.cells[i];
			if(i==0){
				tr.cells[i].className+=' core_table_22left';
			}else{
				tr.cells[i].className+=' core_table_22';
			}
			if(tr.cells[i].innerHTML==''){
				tr.cells[i].innerHTML='<img height=1 width=1>';
			}
			numColSpan=numColSpan+tr.cells[i].colSpan-1;
		}else{
			if(numColSpan==0&&!core_TableIsRowSpan){
				var td=document.createElement('td');
				td.innerHTML='<img height=1 width=1>';
				tr.appendChild(td);
			}
			numColSpan--;
		}		
	}
	td=tr.insertCell(0);
	td.className+=' core_table_21';	
	td.innerHTML='<img height="1" width="1">';
	
	td=tr.insertCell(-1);
	td.className+=' core_table_23';
	td.innerHTML='<img height="1" width="1">';
	
	return (tr);
}

function core_TablemiddleBottomTr(tr,count_content_td,is){
	if(is=='MayBe'){
		var t=(tr.parentElement)?tr.parentElement:tr.parentNode;
		if(tr.sectionRowIndex+2!=t.rows.length){
			return;
		}
	}
	var i=count_content_td+2;
	for(;i>0;i--){
		if(tr.cells[i-1]){
			tr.cells[i-1].className+=' core_table_2bottom';
		}
	}
}