function delf_(form,act){
	eval("var formEL = document."+form);
	var elements = formEL.elements['check[]'];
	var ok = 0;
	if(isThisTag(elements,"INPUT")&&elements.checked)ok++;
	for(i=0;i<elements.length;i++)if(elements[i].checked)ok++;
	if(ok)if(confirm("Вы действительно хотите удалить выделенные записи?")){
			formEL.action = act;
			try{formEL.act.value='delete';}catch(e){;}
			formEL.submit();
		}
}

function initMCE(id){
	tinyMCE.init({
		mode : "exact",
		elements: id,
		theme : "advanced",
		theme_advanced_buttons1 : "bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright, justifyfull,bullist,numlist,undo,redo,link,unlink,code",
		theme_advanced_buttons2 : "",
		theme_advanced_buttons3 : "",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		theme_advanced_statusbar_location : "bottom",
		theme_advanced_resizing : true
	});	
}

//если на форме есть выделенные элементы открывает окошко подтверждения
function deleteEx(form,step,param){
	if(deletionExist(form))
	showConfirm(
		'Вы действительно хотите удалить выделенные записи?',
		function(){delf(form,step,param);}
	);
}

function deleteArcDocs(){
	showConfirm(
		'Вы действительно хотите удалить выделенные архивные документы?',
		function(){
			document.mainDataTable.action='doc_archive,delete';
			$('#mainDataTable').ajaxSubmit(function(){showDocHistory();});
		}
	);
}

function delf(form,step,param){
	eval("var formEL = document."+form);
	var elements = formEL.elements['check[]'];
	var ok = 0;
	if(isThisTag(elements,"INPUT")&&elements.checked)ok++;
	for(i=0;i<elements.length;i++)if(elements[i].checked)ok++;
	if(ok){
		formEL.action = 'stepDriver,delete,step='+step;
		if(param)formEL.action += ';param='+param;
		try{formEL.act.value='delete';}catch(e){;}
		$(formEL).ajaxSubmit(function(){changeStep(step);});
	}
}

/*
	ФУНКЦИЯ elsum СУММИРУЕТ ВСЕ ЗНАЧЕНИЯ ГРУППЫ ЭЛЕМЕНТОВ С ИМЕНЕМ
	groupname И ЗАПИСЫВАЕТ ЭТУ СУММУ В ЭЛЕМЕНТ outputname.
	параметры:
		form       - имя формы, где содержатся элементы;
		sid        - номер группы элементов (например: team1 и team_count1, где sid = 1);
		outputname - имя элемента, куда будем записывать сумму;
		groupname  - имя группы элементов, откуда будем брать значения;
	
	26.05.2008
*/
function elsum(form,sid,outputname,groupname){
	var output;
	var sum;
	var elements = document.forms[form].elements;
	eval("output = document.forms[form]."+outputname+sid);
	sum = 0;
	for(i=0;i<elements.length;i++){
		if(('qq'+elements[i].name).search(groupname+sid)>-1)sum += Math.round(elements[i].value);
	}
	output.value = sum;
}

//функция не дает снять выделение с последнего выделенного чекбокса в группе
function checklast(el,form,group){
	var elem = document.forms[form].elements;
	var sum = 0;
	var cnt = 0;
	for (var i = 0; i < elem.length; i++){
		if(('qq'+elem[i].name).search(group)>-1){
			if(elem[i].checked) sum ++;
			cnt ++;
		}
	}
	if(sum == 0)el.checked = "checked";
	//else el.checked = null;
}

//функция выполняет функцию стока то раз через стока то миллисекунд
function execFunc(fname,count,sec){
	if(count != 0){
		eval(fname);
		count --;
		eval ('setTimeout("execFunc('+"'"+fname+"'"+','+count+')",'+sec+')');
	}
}

//функция возвращает координаты объекта по идшнику
function getPosition(obj) {
	var x=0, y=0;
	while(obj) {
		x+=obj.offsetLeft;
		y+=obj.offsetTop;
		obj=obj.offsetParent;
	}
	return {x: x, y:y};
}

/*------------------------------------------------НОВЫЙ ДИЗАЙН------------------------------------------------------------*/

function showProperties(obj, objName){
	var result = "The properties for the " + objName + " object:" + "\n";
	for (var i in obj) {result += "<b>" + i + "</b> = " + obj[i] + "<br>\n";}
	return result;
}
function goTo(url){
	try{noScroll();}catch(e){;}
	try{$('#waitformX').modal();}catch(e){document.getElementById('waitformX').style.display='inline';}
	setTimeout('location.href="'+url+'"', 50);
}
function submitFunc(){
	try{noScroll();}catch(e){;}
	try{$('#waitformX').modal();}catch(e){document.getElementById('waitformX').style.display='inline';}
	document.forms[0].submit();
}

function showProp(element){
	document.getElementById('info').innerHTML = showProperties(element, element);
}

function showProp_(element){
	document.getElementById('info').innerHTML += showProperties(element, element);
}

/*--------------------------------------------ФУНКЦИИ ПОИСКА ЭЛЕМЕНТОВ-----------------------------------------------*/
function isThisTag(el,tagType){
	if(el.tagName && el.tagName == tagType)return true;
	else return false;
}
function findElInChilds(el,tagType){
	if(el&&el.childNodes){
		elChildNodes = el.childNodes;
		var ELindex = -1;
		for(var i = 0; i < elChildNodes.length; i++)
			if(isThisTag(elChildNodes[i],tagType)){
				ELindex = i;
				return ELindex;
			}
	}
	else return -1;
}
function returnElFromChilds(el,tagType){
	var ret;
	if(findElInChilds(el,tagType) != -1)ret = el.childNodes[findElInChilds(el,tagType)];
	else ret = false;
	return ret;
}
/*--------------------------------------------END OF ФУНКЦИИ ПОИСКА ЭЛЕМЕНТОВ----------------------------------------*/

//функция добавляет строку с 2 инпутами
function addRestrict(parentname){

	var parent = document.getElementById(parentname);

	var inp1=document.createElement("input");

	inp1.type="text";
	inp1.name="addyearsYear[]";
	inp1.className="textInput";
	inp1.style.width = "100px";
	inp1.onmouseover=function(){highlightTextInput(this,1);};
	inp1.onmouseout=function(){highlightTextInput(this,0);};
	inp1.onfocus=function(){this.style.borderColor = "#65686E";};
	inp1.onblur=function(){this.style.borderColor = "#ADB0B7";};
	inp1.onkeyup=function(){checkIsYear(this);}

	var inp2=document.createElement("input");
	inp2.type="text";
	inp2.name="addyearsValue[]";
	inp2.className="textInput";
	inp2.style.width = "100px";
	inp2.onmouseover=function(){highlightTextInput(this,1);};
	inp2.onmouseout=function(){highlightTextInput(this,0);};
	inp2.onfocus=function(){this.style.borderColor = "#65686E";};
	inp2.onblur=function(){this.style.borderColor = "#ADB0B7";};
	//eval("inp2.onkeyup=function(){"+onKeyUpFunc+"(this);}");
		
	var span=document.createElement("span");
	span.innerHTML = '&nbsp;Значение: ';

	var btn = document.createElement("div");
	btn.className = "redButton";
	btn.innerHTML = "-";
	if($.browser.msie){
		btn.style.margin = "-28px";
		btn.style.left = "395px";
		btn.style.display = "none";
	}
	buildButton(btn,"red");
	
	var table = document.createElement("table");
	var tr = document.createElement("tr");
	var td = document.createElement("td");
	
	td.innerHTML = 'Год: ';
	td.appendChild(inp1);
	td.appendChild(span);
	td.appendChild(inp2);
	tr.appendChild(td);
	
	var td = document.createElement("td");
	td.appendChild(btn);
	tr.appendChild(td);
	
	tr.appendChild(td);
	table.appendChild(tr);

	var div=document.createElement("div");
	div.id = "yy"+Math.round(Math.random()*1000);
	eval("btn.onclick=function(){this.style.display='none';$('#"+div.id+"').slideToggle();}");

	div.style.textAlign="left";
	div.style.display = "none";
	//div.style.border = "1px solid";
	if($.browser.msie)div.style.paddingLeft = "24px";

	if($.browser.msie){
		div.innerHTML = 'Год: ';
		div.appendChild(inp1);
		div.appendChild(span);
		div.appendChild(inp2);
		div.appendChild(btn);
	}
	else div.appendChild(table);
	
	//alert(div.innerHTML);
	
	parent.appendChild(div);
	$("#"+div.id).slideToggle("normal",function(){$("#"+div.id+" .redButton")[0].style.display="block";});
}


//функция добавляет строку в изменении РО на шаге 18
function addEC(parentname){

	var parent = document.getElementById(parentname);
	
	var counterElement = document.getElementById('counter');
	var counter = parseInt(counterElement.value);

	var inp1=document.createElement("input");
	inp1.type="text";
	inp1.name="data[new]["+counter+"][name]";
	inp1.id="ii"+Math.round(Math.random()*1000);
	inp1.className="textInput";
	inp1.style.width = "200px";
	buildTextMenu(inp1);

	var inp2=document.createElement("input");
	inp2.type="text";
	inp2.name="data[new]["+counter+"][count]";
	inp2.className="textInput";
	inp2.style.width = "40px";
	buildTextMenu(inp2);
	inp2.onkeyup=function(){checkIsDigit(this);}
		
	var span=document.createElement("span");
	span.innerHTML = '&nbsp;';

	var btn = document.createElement("div");
	btn.className = "redButton";
	btn.innerHTML = "-";
	if($.browser.msie){
		btn.style.margin = "-28px";
		btn.style.left = "400px";
		btn.style.display = "none";
	}
	buildButton(btn,"red");
	
	var table = document.createElement("table");
	var tr = document.createElement("tr");
	var td = document.createElement("td");
	
	td.style.width = '210px';
	td.appendChild(inp1);
	//td.appendChild(span);
	tr.appendChild(td);
	td = document.createElement("td");
	td.width = 150;
	td.align="left";
	td.appendChild(inp2);
	tr.appendChild(td);
	td = document.createElement("td");
	td.width = 70;
	td.appendChild(btn);
	tr.appendChild(td);

	table.appendChild(tr);

	var div=document.createElement("div");
	div.id = "yy"+Math.round(Math.random()*1000);
	eval("btn.onclick=function(){this.style.display='none';document.getElementById('"+inp1.id+"').disabled='disabled';$('#"+div.id+"').slideToggle();}");

	div.style.textAlign="left";
	div.style.display = "none";
	//div.style.border = "1px solid";
	//if($.browser.msie)div.style.paddingLeft = "24px";

	if($.browser.msie){
		div.innerHTML = '';
		inp1.style.marginLeft = '5px';
		div.appendChild(inp1);
		div.appendChild(span);
		div.appendChild(inp2);
		div.appendChild(btn);
	}
	else div.appendChild(table);

	parent.appendChild(div);
	$("#"+div.id).slideToggle("normal",function(){$("#"+div.id+" .redButton")[0].style.display="block";});
	counterElement.value = counter+1;
}

function hideEC(id){
	eval("$('#ecBlock"+id+"').slideToggle();");
	var delEC = document.getElementById("delEC");
	if(delEC){
		var inp=document.createElement("input");
		inp.type="hidden";
		inp.name="to_del["+id+"]";
		inp.value=id;
		delEC.appendChild(inp);
	}
}

function division_resources_submit(){
	showWait(function(){
		$('#mainDataTable').ajaxSubmit(function(){$.modal.close();showMessage('Данные обновлены');});
	});
}

function submitWithMessage(){
	showWait(function(){
		$('#mainDataTable').ajaxSubmit(function(){
			$.modal.close();
			showMessage('Данные обновлены');
		});
	});
}

function submitWithReload(){
	showWait(function(){
		$('#mainDataTable').ajaxSubmit(function(){
			$.modal.close();
			reloadPage();
		});
	});
}

function step_02_other_click(el,sfid){
	updateCheckState(el);
	var readonly = $('input',el)[0].checked ? 0 : 1;
	var textarea = document.getElementById(sfid);
	if(readonly)
		textarea.setAttribute('readOnly','readonly');
	else
		textarea.removeAttribute('readOnly');
}

function step_12_update(param,item,value){
	//showWait();
	var url = "stepDriver,add,step=17;param="+param+";item="+item+';value='+value;
	_execRequest(url,function(){changeStep(17);});
}

function step_12_radio_click(el,type,todo){
	if(todo==0){
		step_12_radio_click_exec(el);
	}
	else if(todo==1)showMessage("Уже выбран ручной ввод");
	else if(todo==2)showMessage("Уже выбрано разделение ресурсов");
}

function step_12_radio_click_exec(el){
	updateRadioState(el,2);
	$.modal.close();
	setTimeout('showWait()',50);
	$('#step_17_typeform').ajaxSubmit(function(){changeStep(17);});
}

function step_13_other_click(el,sfid){
	updateCheckState(el);
	
	var display = $('input',el)[0].checked ? "inline" : "none";
	var height = $('input',el)[0].checked ? "80px" : "auto";
	
	document.getElementById('other'+sfid).style.display = display;
	el.parentNode.style.height = height;
}

function step_16_update(param,year,step){
	var divid = "div_step_25";
	if(!document.getElementById(divid)){
		var div=document.createElement("div");
		div.id=divid;
		div.style.display='none';
		document.body.appendChild(div);
	}
	var url = "stepDriver,updateYear,step="+step+";param="+param+";year="+year;
	$("#"+divid).load(url,function(){changeStep(step);});
}

function set_plan_year(value,stepNum){
	var divid = "div_step_22";
	createServiceDIV(divid);
	var url = "stepDriver,updateYear,step="+stepNum+";year="+value;
	$("#"+divid).load(url,function(){showMessage('Данные обновлены');});
}

function checkPass_n_submit(val1,val2){
	val1 = document.getElementById(val1).value;
	val2 = document.getElementById(val2).value;
	if(val1==val2)document.form.submit();
	else showMessage("Введенные значения нового пароля не совпадают");
}

function delete_user(){
	if($('.unvisibleInput:checked').length)
	if(confirm('Вы действительно хотите удалить выбранных пользователей?')){
		document.mainDataTable.action='users,delete';
		$('#mainDataTable').ajaxSubmit(function(){document.location.reload(true);});
	}
}

function updateYears(el){
	var year = parseInt(el.value);
	document.getElementById('current').innerHTML = year+1;
	document.getElementById('next').innerHTML = year+2;
	document.getElementById('plan1').innerHTML = year+3;
	document.getElementById('plan2').innerHTML = year+4;
}

function changeYearDiv(eid,p,pval,type){
	showWait(function(){
		var url = "stepDriver,updateType,step=21;eid="+eid+";p="+p+";pval="+pval+";type="+type;
		_execRequest(url,function(){changeStep('21');});
	});
}

function showJournal(page){
	showWait(function(){
		$('#form').ajaxSubmit(
			function(){
				$('#journal_block').load(
					'journal,only_table,page='+page,
					function(){onLoadFunc();}
				)
			}
		);	
	});
}

function showDocHistory(){
	showWait(function(){
		$('#form').ajaxSubmit(
			function(){
				$('#journal_block').load(
					'doc_archive,only_table',
					function(){onLoadFunc();}
				)
			}
		);	
	});
}

function setCurDate(el){
	var d = new Date();
	var m = d.getMonth()+1;
	if(m.toString().length == 1)m = '0' + m;
	el.value = 	d.getDate() + "." + m + "." + d.getFullYear();
	el.style.backgroundColor='#FFFFFF';
}

function setAllPeriod(el1,el2,date1,date2){
	el1.value=date1;
	el1.style.backgroundColor='#FFFFFF';
	el2.value=date2;
	el2.style.backgroundColor='#FFFFFF';
}

// шаг 22. сохраняет документ
function saveDoc(urlpar){
	showWait(function(){
		$.ajax({
			type: "POST",
			url: urlpar,
			success: function(){
				$.modal.close();
				showMessage('Последняя версия документа сохранена в архив');
			}
		});
	});
}

function estDataReload(){
	showWait(function(){
		var url = 'data,only_data';
		$('#contentBlock').load(
			url,
			function(){
				onLoadFunc();
				showMessage("Данные обновлены");
			}
		);
	});
}

function estAjaxImport(){

	var wait = document.createElement("div");
	wait.id = 'importWait';
	wait.style.background = '#EAEEF8';
	wait.innerHTML = '<div style="padding-top:5px"><img src="templates/default/images/loading.gif"></div><div>Импорт данных.<br />Пожалуйста дождитесь ответа сервера...</div>';
	$('#importform')[0].appendChild(wait);

	$('#importInteract')[0].style.display='none';
	$('#importform').ajaxSubmit(function(){estDataReload();});
}

function check_user(login,undefined_user){
	var answer = '';
	if(login.length&&login!=undefined_user&&login!='0'){
		var req;
		req = getRequest('ajanswer.php?act=check_user_exist','login='+login);
		if(req=='1')answer = 'Такой пользователь уже существует';
		else   answer = 'Такого пользователя еще нет в системе';
	}
	else if(login==undefined_user||login=='0')answer = 'Некорректный логин';
	if(answer.length)alert(answer);
}

function changeess(value){
	var stepnum = '18';
	_execRequest(
			"stepDriver,setess,step="+stepnum+";essid="+value,
			function(){changeStep(stepnum);}
	);
}

function step19_changeService(value){
	var stepnum = '24';
	_execRequest(
			"stepDriver,setess,step="+stepnum+";sid="+value,
			function(){changeStep(stepnum);}
	);
}

function sfPrior(action,sffid){
	_execRequest(
		"stepDriver,add,step=18;action="+action+";sffid="+sffid,
		function(){
			changeStep('18');
		}
	);
}

function setMTYear(value){
	if(value != 1)value = 3;
	_execRequest(
			'stepDriver,edit,step=27;yearcount='+value,
			function(){showMessage('Значение обновлено')}
	);
}

//показывает диаграмму
// dataset - индекс набора данных, индексы можно посмотреть в graph.php
//id параметра берется из выделенных строк
function showRowGraph(dataset,allow_all,uid){
	/*if($.browser.msie){
		showMessage('Функция не поддерживается браузером Internet Explorer.');
		return;
	}*/
	
	var els = $('.unvisibleInput');
	var ret = 0;
	var counter = 0;
	var needel;
	for(var i = 0; i < els.length; i ++){
		if(els[i].checked){
			ret = els[i].value;
			needel = els[i];
			counter++;
		}
	}
	if(counter==0&&!allow_all){
		showMessage('Выделите строку!');
		return;
	}
	else if(counter>1){
		showMessage('Выделено более одной строки!');
		return;
	}
	else{
		if(counter==1){
			var tr = needel.parentNode.parentNode;
			highlightMainTable(tr,2);
			tr.style.background = 'white';
		}
	
		
	switch (dataset){
		case 2:
				type = 'bar';
				param = 'est';
			break;
		case 3:
				type = 'line';
				param = 'est';
			break;
		case 4:
				type = 'pie';
				param = 'est';
			break;
		case 5:
				type = 'pie';
				param = 'ess';
			break;
		case 6:
				type = 'curve';
				param = 'est';
				dataset = 3;
			break;
	}

		var passUrl = 'includes/graphOutput.php?type='+type+'&dataset='+dataset+'&'+ret;
		if(uid)passUrl += '&uid='+uid;
		//alert(passUrl);
		showWindow(passUrl,null,null,function(){execIMG()});
	}
}

/*--------------------------------------------ДЕЙСТВИЯ ПО ЗАВЕРШЕНИЮ ЗАГРУЗКИ СТРАНИЦЫ (ИНИЦИАЛИЗАЦИЯ)----------------*/

function getElemText(node){
    return node.text || node.textContent || (function(node){
        var _result = "";
        if (node == null) {
            return _result;
        }
        var childrens = node.childNodes;
        var i = 0;
        while (i < childrens.length) {
            var child = childrens.item(i);
            switch (child.nodeType) {
                case 1: // ELEMENT_NODE
                case 5: // ENTITY_REFERENCE_NODE
                    _result += arguments.callee(child);
                    break;
                case 3: // TEXT_NODE
                case 2: // ATTRIBUTE_NODE
                case 4: // CDATA_SECTION_NODE
                    _result += child.nodeValue;
                    break;
                case 6: // ENTITY_NODE
                case 7: // PROCESSING_INSTRUCTION_NODE
                case 8: // COMMENT_NODE
                case 9: // DOCUMENT_NODE
                case 10: // DOCUMENT_TYPE_NODE
                case 11: // DOCUMENT_FRAGMENT_NODE
                case 12: // NOTATION_NODE
                // skip
                break;
            }
            i++;
        }
        return _result;
    }(node));
}

function yesScroll(){

}

//hides all modal blocks
function closeModals(){
		try{$.modal.close();}catch(e){;}
}

function resizePage(){
	//alert(document.documentElement.scrollHeight+" "+document.body.scrollHeight);
	bg_image_height = Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);
	$("#bgImage img")[0].style.height = bg_image_height + "px";
	
	bg_image_width = Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);
	$("#bgImage img")[0].style.width = bg_image_width + "px";
}

function operawheel(event) {
	if(document.documentElement.scrollTop > 100){
		if (event.preventDefault)  event.preventDefault();
		event.returnValue = false;
		document.documentElement.scrollTop = 100;
	}
}

function addoperanoscroll(){
	addHandler(document, 'mousewheel', operawheel);
	$('html')[0].style.overflow = 'hidden';
}

function removeoperanoscroll(){
	removeHandler(document, 'mousewheel', operawheel);
	$('html')[0].style.overflow = 'auto';
}

function applyScrollTable(){
	
	var tableHeight = 0;
	$('.mainTable').each(function(){
		if(parseInt(this.clientHeight)>parseInt(tableHeight)){
			tableHeight = this.clientHeight + 20;
		}
	});
	var doMinimize = (getElemText(document).search('импорт')!=-1) ? 1 : 0;
	var dbclientWidth = parseInt(document.body.clientWidth) - 130;

	var mainTableWidth = Math.max($('.mainTable')[0].clientWidth,dbclientWidth);
	if(doMinimize)mainTableWidth -= 180;

	if(document.getElementById('mainTableWidth'))
		mainTableWidth = document.getElementById('mainTableWidth').value;

	var mainTableHeight = Math.min(parseInt(document.body.clientHeight) - 300,tableHeight);
	if(document.getElementById('mainTableHeight'))
		mainTableHeight = document.getElementById('mainTableHeight').value;
		
	mainTableWidth = Math.min(mainTableWidth,dbclientWidth);
	if(doMinimize&&mainTableWidth==dbclientWidth)mainTableWidth -= 180;
	
	if(document.getElementById('addToMainTableHeight'))
		mainTableHeight += parseInt(document.getElementById('addToMainTableHeight').value);

	if(document.getElementById('addToMainTableWidth'))
		mainTableWidth += parseInt(document.getElementById('addToMainTableWidth').value);

	var block = $('.mainTableBlock')[0];
	if(block){
		$('.mainTableBlock').each(function(i){
			this.style.height = mainTableHeight+'px';
			//this.style.width = mainTableWidth+'px';
		});
	}
}


function vis(el){
	el = $('.topSubMenuL2',el)[0];
	//showProp(el.style);
	//alert(el.style.display);
	if(el.style.display == "block" || el.style.display == "inline")return true;
	else return false;
}

function mousePageXY(e){
  var x = 0, y = 0;

  if (!e) e = window.event;

  if (e.pageX || e.pageY)
  {
    x = e.pageX;
    y = e.pageY;
  }
  else if (e.clientX || e.clientY)
  {
    x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
    y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
  }

  return {"x":x, "y":y};
}
//var mCur;
//document.onmousemove = function(e){mCur = mousePageXY(e);};

function getElementPosition(elem){
    //var elem = document.getElementById(elemId);
	
    var w = elem.offsetWidth;
    var h = elem.offsetHeight;
	
    var l = 0;
    var t = 0;
	
    while (elem)
    {
        l += elem.offsetLeft;
        t += elem.offsetTop;
        elem = elem.offsetParent;
    }

    return {"left":l, "top":t, "width": w, "height":h};
}

function onLoadFunc(){
	
	// opera + IE8
	if(typeof window.clasppaneltofoot == 'function')clasppaneltofoot();

	fixTableHead();
	
	// по эскейпу закрываем модальное окно, ежели оно открыто
	document.onkeydown = listenKey;

	$('.topMenuTR').each(function(){
		this.onmouseover=function(){highlightTopMenu(this,1);}
		this.onmouseout=function(){highlightTopMenu(this,0);}
	});
	
	$('.mainTable').each(function(){buildMainTable(this);});
	
	buildElements();
	
	$('.dialog').each(function(){buildDialog(this);});

	$('.radioElement').each(function(){if(!this.onclick)this.onclick=function(){updateRadioState(this,2);};});

	try{$(document).pngFix();}catch(e){;}
	closeModals();

	resizePage();

}
/*--------------------------------------------END OF ДЕЙСТВИЯ ПО ЗАВЕРШЕНИЮ ЗАГРУЗКИ СТРАНИЦЫ-------------------------*/

function reportAction(action,_form,param){
	var form = _form ? _form : document.mainDataTable;
	if(action == 'save'){
		if(getRequest('report,checknamemodel,name='+$('#newmodelname')[0].value.toString().replace(/ /g,'%20')) == '0'){
			$(form).append('<input type="hidden" name="reportSaveModel" value="1" />');
			form.action = 'report';
			form.submit();
		}
		else alert('Модель с таким именем существует, измените значение.');
	}
	else if(action == 'update'){
		$(form).append('<input type="hidden" name="reportSaveModel" value="1" />');
		form.action = 'report';
		form.submit();
	}
	else if(action == 'clearmodel'){
		var url = 'report,clearmodel,mid='+param;
		var onsave = function(){showMessage('Все отчеты указанной модели удалены');}
		$('#reportcount_'+param).load(url,onsave);
	}
	else if(action == 'savefilter'){
		$(form).ajaxSubmit(function(){$.modal.close();showMessage('Данные сохранены');});
	}
	else if(action == 'savereport'){
		var url = 'report,savereport,mid='+param;
		var tmp = $('#reportcount_'+param)[0].innerHTML;
		var onsave = function(){
			var message = $('#reportcount_'+param)[0].innerHTML != tmp ?
				'Отчет сохранен' : 'Последний сформированный отчет уже сохранен или еще не было сформировано ни одного отчета по данной модели.';
			showMessage(message);
		}
		$('#reportcount_'+param).load(url,onsave);
	}
	else if(action == 'addNode'){
		_execRequest('report,addnode,nodename='+param,function(){
			var DOM;
			if(DOM = $('#filter_'+param)[0])
				DOM.style.display = "inline";
		});
	}
	else if(action == 'removeNode'){
		var DOM;
		if(DOM = $('#filter_'+param)[0])
			DOM.style.display = "none";
	}
	else if(action == 'test'){
		location.href = "report,reportbuild";
	}
	else{
		var actioninput = $('#paramsaction')[0];
		actioninput.value = action;
		var url = getLocalURL();
		form.action = url.indexOf('recreate') > 0 ? 'report,recreatemodelajax' : 'report,createmodelajax';
		_ajaxSubmit();
	}
}

function cloneUser(){
	
	var execF = function(){
		$.modal.close();
		showWait(function(){
			createServiceDIV('thisisservicediv');
			var answerDIV = $('#thisisservicediv')[0];
			_ajaxSubmit(
				'cloneUserForm',
				answerDIV,
				function(){
					$.modal.close();
					if(answerDIV.innerHTML != 'false'){
						$('#userlist')[0].innerHTML = answerDIV.innerHTML;
						showMessage('Операция успешно завершена');
					}
					else showMessage('Возникли ошибки. Операция копирования завершена не полностью.');
				}
			);
		});
	}
	if(getRequest('clone_user,checkname,name='+$('#newname')[0].value.toString().replace(/ /g,'%20')) == '1'){
		showConfirm(
			"Пользователь с таким именем существует! \n Если Вы ответите положительно, существующий пользователь с таким именем будет удален, при этом будут удалены все данные, связанные с ним, и будет создан новый пользователь. \n Продолжить?",
			execF
		);
	}
	else execF();
}

function tryUser(){
	checkIsLogin($('#login')[0]);
	checkIsPass($('#pass')[0]);
	if(isCorrectData()){
		if(getRequest('users,checkvalid,name='+$('#login')[0].value.toString().replace(/ /g,'%20')+';type='+$('#type')[0].value+';group='+$('#group')[0].value) == '0'){
			$('#form').ajaxSubmit(function(){reloadPage();});
		}
		else alert("Ошибка! Возможные причины: \n1. Такой логин уже существует в системе. \n2. Выбран тип пользователей, которые могут находиться только в группе и не выбрана группа.");
	}
	else alert('Введены некорректные данные');
}

function tryUpdateUser(uid){
	checkIsLogin($('#login')[0]);
	checkIsPass($('#pass')[0]);
	if(isCorrectData()){
		if(getRequest('users,checkvalid,name='+$('#login')[0].value.toString().replace(/ /g,'%20')+';uid='+uid) == '0'){
			$('#form').ajaxSubmit(function(){reloadPage();});
		}
		else alert("Ошибка! Возможные причины: \n1. Такой логин уже существует в системе. \n2. Выбран тип пользователей, которые могут находиться только в группе и не выбрана группа.");
	}
	else alert('Введены некорректные данные');
}

function tryUserGroup(){
	if(getRequest('user_groups,checkname,name='+$('#name')[0].value.toString().replace(/ /g,'%20')) == '0'){
		$('#form').ajaxSubmit(function(){reloadPage()});
	}
	else alert('Такая группа уже существует, измените наименование.');
}

function userSetFilter(param,value){
	_execRequest('users,setfilter,param='+param+';value='+value,function(){reloadPage();});
}

function updateNPAList(value){
	$('#ecidlist').html(getRequest('ajanswer.php?act=npalist&sid='+value));
	var is_auto = !$('#manSelector input').is(':checked');
	if(typeof window.changeEODList == 'function' && is_auto)
		changeEODList($('#ecidlist option:first')[0]);
}

function printBlock(blockname){
	var reqstr = blockname ? '&block='+blockname : '';
	var url = 'ajanswer.php?act=print_content'+reqstr;
	window.open(
		url,
		'Печать',
		'location,width=50,height=50,top=200,left=200,scrollbars=1'
	);
}

var editID = 'editID';

// функция для Ш21. обновляет еще и строку со значениями за целый год.
// используется при изменении значения yd
function getRow_yd(index){
	
	var url = 'stepDriver,row,step='+index;

	$.getJSON(url,function(data){
		
		var this_row = $('#'+editID);// строка, которую нажали
		var row;// строка обычная
		var ydrow;// строка разделения ресурсов
		var ydrows = [];// строки разделения ресурсов
		var esttotalrow;// строка с суммарными значениями по поставщикам
		var have_update_one_ydrow = 0;// переключатель, 1 - если нажали по yd
		var yd_index = -1;// индекс строки разделения ресурсов
		var tmp_el;// временный элемент, нужен в некоторых выборках
		
		function doRow(row,data){
			
			var cells = [];
			var cells_all = $("td",row);
			var cnt_all = cells_all.length - data.start;
			
			var counter = 0;
			for(var i = cnt_all - data.count; i < cnt_all; i++)cells[counter++] = cells_all[i];
			counter = 0;
			$.each(data.data, function(i,item){
				if(data.have_description && counter == 5){
					counter ++;
					item = data.description_text;
				}
				var DOM = cells[counter++];
				if(item == '0.00' || item == '0')item = '<font color="#777777">'+item+'</font>';
				DOM.innerHTML = item;
			});
		}
		
		if($('td:first',this_row).attr('colspan')){
			tmp_el = this_row;
			while($('td:first',tmp_el).attr('colspan')){
				tmp_el = tmp_el.prev();
				yd_index++;
			}
			row = tmp_el;
			have_update_one_ydrow = 1;
			ydrow = this_row;
		}
		else row = this_row;
		
		if(data.yd){
			tmp_el = row.next();
			var counter = 0;
			while($('td:first',tmp_el).attr('colspan')){
				ydrows[counter++] = tmp_el;
				tmp_el = tmp_el.next();
			}
		}
		var have_esttotal = 0;
		var esttotal_id = 0;
		for(var i in data)if(i.indexOf('total')>=0){have_esttotal = 1;esttotal_id = i}
		if(have_esttotal)esttotalrow = $('#'+esttotal_id);
		
		doRow(row,data.editID);
		if(have_esttotal)doRow(esttotalrow[0],data[esttotal_id]);
		if(have_update_one_ydrow)doRow(ydrow,data.yd[yd_index]);
		else if(data.yd){
			counter = 0;
			var yd;
			$.each(data.yd,function(unusedindex,yd){
				doRow(ydrows[counter++],yd);
			})
		}
		
	});
	
	try{$.modal.close();}catch(e){;}
}

//текст у чекбокса обновляем, текстовое описание требований
function getSFF(step){
	var txt = getRequest('stepDriver,row,step='+step);
	$("#"+editID+" input + span").html(txt);
	try{$.modal.close();}catch(e){;}
}

function getTextDescriptionBlock(step,block_id){
	var txt = getRequest('stepDriver,row,step='+step);
	
	$("#"+block_id).attr('id','tdb');
	$("#tdb").before(txt);
	$("#tdb").remove();
	if($("#"+block_id).is(":has(.mainTable)"))
		$("#"+block_id+' .mainTable').each(function(){buildMainTable(this);});
	try{$.modal.close();}catch(e){;}
}

function fixTableHead(){

	if($.browser.opera)$('.mainTableBlock').css('border','1px solid white');
	max_available_width = screen.width - 150;

	$('.mainTable:not(.nofixhead)').each(function(){

		if($(this).height() <= $(this).parent().height())return;
		
		// блок, куда поместится новая шапка
		var headdiv = $(document.createElement('div'));
		// таблица (новая шапка)
		var headtable = $(document.createElement('table'));
		// thead основной таблицы (старая шапка)
		var thead = $('thead',this);
		
		// инициализируем новую шапку
		headtable.html(thead.clone());
		headtable.addClass('mainTable');

		// если необходимо чтобы у таблицы не было горизонтальной прокрутки
		if($(this).is(".mtcollapse")){
			$(this).parent().width(max_available_width);
			headdiv.width(max_available_width);
		}
		
		// создаем массив с ширинами шапки
		var widths = [];
		var counterTR = 0;
		var counterTD = 0;
		var i;
		$('tr',thead).each(function(){
			widths[counterTR] = [];
			for(i = 0; i < this.cells.length; i++){
				widths[counterTR][counterTD++] = $(this.cells[i]).width();
			}
			counterTR++;
		});

		// создаем массив с ширинами контента основной таблицы
		var widths_body = [];
		counterTD = 0;
		var trs = $('tbody tr',this);
		var tr = trs[0];
		if(tr.cells.length == 1)tr = trs[1];
		if(tr.cells.length == 1)tr = trs[2];
		$('td',tr).each(function(){
			widths_body[counterTD++] = $(this).width();
		});
		
		// добавляем на страницу новую шапку
		headdiv.append(headtable);
		//$('table th',headdiv).css('border','1px solid red');
		//$('td',this).css('border','1px solid red');
		$(this).parent().before(headdiv);
		
		// если таблица широкая, всю табицу и чего сгенерили выше помещаем в еще 1 блок (div)
		// ширина которого зависит от ширины экрана и overflow: auto
		if($(this).width() > max_available_width){
			var tablewidth = $(this).width();
			gdiv = $(document.createElement('div'));
			gdiv.width(max_available_width);
			gdiv.css('overflow','auto');
			
			headdiv.before(gdiv);
			gdiv.append(headdiv);
			gdiv.append($(this).parent());

			//$(this).width(tablewidth-20);
			$(this).parent().width(tablewidth);
			$(this).css('width','100%');
			//headdiv.css('width','100%');
			headdiv.width(tablewidth);
			
			// browsers from hell!!
			if($.browser.msie && $.browser.version == 6){
				gdiv.height(gdiv.height() + 20);
			}
			if($.browser.msie &&$.browser.version == 7){
				gdiv.height(gdiv.height() + 33);
			}
		}

		// глобальная ширина, она почему то сбивается
		// после восстановления ширин колонок (код ниже)
		var tmp = $(this).width();
		
		// восстанавливаем нужные ширины колонок в новой шапке
		counterTR = 0;
		counterTD = 0;
		$('tr',headtable).each(function(){
			for(i = 0; i < this.cells.length; i++){
				$(this.cells[i]).width(widths[counterTR][counterTD++]);
			}
			counterTR++;
		});
		
		// восстанавливаем глобальную ширину
		$(this).parent().width(tmp+25);
		headdiv.width(tmp+25);
		
		// удаляем старую шапку
		thead.remove();
		
		// восстанавливаем нужные ширины колонок в основной таблице, так как они сбились
		// после удаления старой шапки
		counterTD = 0;
		$('td',tr).each(function(){
			$(this).width(widths_body[counterTD++]);
		});
		
		// эти 2 строчки чтоб справа новая шапка не была короче основной таблицы
		$('thead tr',headtable).append('<th></th>');
		headtable.width('100%');
		
		// every web-programmer hates these browsers
		if($.browser.msie && $.browser.version == 6)
			$(this).parent().width($(this).width() + 6);
		if($.browser.msie && ($.browser.version == 6 || $.browser.version == 7))
			$(this).width($(this).width() - 20);

	});
}


// для диаграмм
function _execIMG(){
	$('#waitBlock').css('display','none');
	var graphicBlock = $('#graphicBlock');
	graphicBlock.css('display','block');

	var width_win = $(window).width();
	var width_max = width_win - 150;
	var width_GB = graphicBlock.width();
	var height_win = $(window).height();
	var height_max = height_win - 200;
	var height_GB = graphicBlock.height();

	if(width_GB > width_max || height_GB > height_max){
		var totalBlock = $('#waitBlock').parent();
		totalBlock.css('overflow','auto');
	}
	
	if(width_GB > width_max){
		width_GB = width_max;
		totalBlock.width(width_max);
	}
	
	if(height_GB > height_max){
		height_GB = height_max;
		totalBlock.height(height_max);
	}

	var dialogWindow = $('#messageBox');
	var dialogLeft = (width_win - width_GB) / 2 - 20;
	var dialogTop = (height_win - height_GB) / 2 - 80;
	if($.browser.msie && $.browser.version == 6){
		dialogLeft = -80;
		dialogTop = -80;
	}
	dialogWindow.css('left',dialogLeft+'px');
	dialogWindow.css('top',dialogTop+'px');
}
function execIMG(){$(document).ready(function(){setTimeout('_execIMG()',4000);});}




/*------------------------------------------------END OF НОВЫЙ ДИЗАЙН-----------------------------------------------------*/

