var xmlHttp;
var localWhereToPut;

var navHistory = new Array();
var navForvard = new Array();

skin = '';

function popLocation(iurl)
{
	return unpackURLparam( getParamValue(iurl,'super_loc'));	
}

function $(n){return document.getElementById(n);}

function domainURL()
{
	var ret =  document.URL.split('/')[0] + '//' + document.URL.split('/')[2].split('?')[0] + '/';
	return ret;
}

function navigateTo(newUrl, locName, nopush, isBack, isForvard) //nopush=true - не переходить на уровень глубже ; 'set' - установить абсолютное положение навигации
{
	if ($('statusbar'))
		$('statusbar').style.display = '';
	
	if (xmlHttp)
	{
		return;
	}
	if (locName)
	{
		newUrl = replaceParam(newUrl,'loc_name', packURLparam(locName));
	}

	if (nopush == 'set')
	{
	}
	else if (newUrl == 're')
	{
		newUrl = document.currentLocation;
	}
	else if (newUrl == 'pop') //выходим на уровень выше
	{
		newUrl = popLocation(document.currentLocation);
		isBack = true;
		navHistory.pop();
	}
	else
	{
		var newSuper_location = '';
		
		if (nopush)
		{
			newSuper_location = getParamValue(document.currentLocation,'super_loc')
		}
		else if(document.currentLocation)
		{
			newSuper_location =  packURLparam(document.currentLocation);
		}
		newUrl = replaceParam(newUrl, 'super_loc', newSuper_location);
	}

	document.title = getParamValue(newUrl,'loc_name');
	document.backupPage = null;

	if (newUrl.substr(0,1) != '_')//не запоминаем системные страницы начинающиеся на _
	{
		var nzp = false;
		
		if (document.currentLocation && (document.currentLocation.indexOf("mailtoadmin.php") != 0))
			nzp = true;
		
		if (nzp)
		{
			
			if (isBack)
			{
			
				if (document.currentLocation.indexOf("create_rec.php") != 0)
				{
					navForvard.push(document.currentLocation);
					if (navForvard.length > 20)
						navForvard.shift();
				}
			}
			else
			{
				if (!isForvard)
				{
					while (navForvard.length)
						navForvard.pop();
				}
				
				if((document.currentLocation.indexOf("create_rec.php") != 0) || (document.currentLocation.indexOf("&create=true") < 0))
				{
					navHistory.push(document.currentLocation);
					
					if (navHistory.length > 20)
						navHistory.shift();
				}
			}
			
		}
		
		document.currentLocation = removeTemporaryParams(newUrl); //отсекаем пароль и пользователя
		
		if (!document.blockadmin)
			setCookie("location",document.currentLocation); 
	}

	var comeUrl = getParamValue(document.currentLocation,'super_loc');
	if (comeUrl != '')
	{
		newUrl = replaceParam(newUrl, 'super_loc', '1');
		newUrl = replaceParam(newUrl, 'loc_name', '');
	}

	//clipboardData.setData("Text", newUrl);
	if (document.blockadmin)
		newUrl = replaceParam(newUrl,'blockadmin',1);

	if ($('debugout'))
		$('debugout').innerHTML = newUrl;
		
	showPage(newUrl,"content_frame");
}

function scrollToBottom()
{
	$('bottom_side').scrollIntoView(true);
}

function getParamValue(iurl,param)
{
	if (!iurl)
	{
		return "";
	}
	
	  var regexS = "[\\?&]"+param+"=([^&#]*)";
	  var regex = new RegExp( regexS );
	  var results = regex.exec( iurl );
	  if( results == null )
	    return "";
	  else
	    return results[1];
}

function showPage(pageToFetch,whereToPut)
{ 
	fade_out(1);

	xmlHttp=GetXmlHttpObject();
	
	if (xmlHttp==null)
		{
			alert ("Sorry you cannot run AJAX Applications.");
			return;
		} 

	if ($(whereToPut))
	{
		localWhereToPut = $(whereToPut);
	}
	else
	{
		localWhereToPut = null;
	}
	
	xmlHttp.onreadystatechange=stateChanged;
	
	
	var urlParts = pageToFetch.split("?");
	
	xmlHttp.open("POST",urlParts[0],true);

	if (urlParts[1])
	{
		xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
		xmlHttp.setRequestHeader("Content-length", urlParts[1].length);
		xmlHttp.send(urlParts[1]);
	}
	else
	{
		xmlHttp.send(null);
	}
}

function GetXmlHttpObject()
{ 
	var objXMLHttp=null;
	if (window.XMLHttpRequest)
		{
			objXMLHttp=new XMLHttpRequest();
		}
	else if (window.ActiveXObject)
		{
			objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	return objXMLHttp;
}

function emailToAdmin(s,b,manual)
{
	if ((document.currentLocation.indexOf('mailtoadmin.php') == 0) && (!manual))
	{
		return false;	
	}
	var manualSend = '';
	if (manual)
	{
		manualSend = '&manual=1';
	}
	navigateTo('mailtoadmin.php?subj=' + packURLparam(s) + '&body=' + packURLparam("Location: " + document.currentLocation + "\r\n\r\n\r\n" +b) + manualSend, 'Отчет об ошибке', true );
	return true;
}

function putResToTarget(target, res, locUI)
{
	if (target)
	{
		if (target.value)
			target.value = res;
		else
			target.innerHTML  = locUI + res;
	}
}


function stateChanged() //загружены новые данные страницы
{ 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{ 
		if (xmlHttp.status != 200)
		{
			
			putResToTarget(localWhereToPut, errorOut("Страница не обнаружена!") + '<br><input id="close_subarea_btn" type="button" class="ret_button" onClick="navigateTo(\'pop\');" value="Назад" >');
			fade_out(2);
			xmlHttp = null;
			return;
		}
		
		var newHTML = '';
		var javaForEval = '';
		
		var list = xmlHttp.responseText.split('<script type="text/javascript">');
		for (var i = 0; i < list.length; i++)
		{
			var lst2 = list[i].split('</script>');
			
			if (lst2.length == 1)
			{
				newHTML += lst2[0];
			}
			else
			{
				newHTML += lst2[1];
				try
				{
					javaForEval += lst2[0];
				}
				catch(err)
				{
					alert ('JS: error.');
 				 	newHTML += errorOut("Ошибка выполнения java-script: " + lst2[0]);
  				}
			}
		}
		var locUI = makeNavigationUI(document.currentLocation);
		putResToTarget(localWhereToPut, newHTML, locUI);
		document.evalAfter = false;
		

		/*if (userHaveRole(0))
		{*/
			eval (javaForEval);
		/*}
		else
		{
			try
			{
				eval (javaForEval);
			}
			catch(err)
			{
				if (emailToAdmin( "Ошибка <javaForEval> name: "+err.name, "desc: " + err.description  + "<br>message: " + err.message  + "<br>" + javaForEval ))
				{
					xmlHttp = null;
					return;
				}
			}
		}*/
		
		fade_out(2);
		localWhereToPut = "";
		
		var buttonArray = document.getElementsByTagName("input");

		for(var a=0;a<buttonArray.length;a++)
		{
			if (buttonArray[a].type == 'button')
			{
				buttonArray[a].style.borderColor = '#FFF';
				
				buttonArray[a].onmouseover=function ()
				{
					document.saveBordCol = this.style.borderColor;
					this.style.borderColor = '#3060a0';
				}
				buttonArray[a].onmouseout=function ()
				{
					if(document.saveBordCol == undefined)
						document.saveBordCol = '#FFF'
						
					this.style.borderColor = document.saveBordCol;
				}
			}
		}

		xmlHttp = null;
		
		if (document.evalAfter)
			eval(document.evalAfter);
					
	} 

} 

function addStaticParameters(iurl) //добавляет к URL текущие параметры которые должны сохраняться при переходах
{
	var curSuper_location = getParamValue(document.currentLocation,'super_loc')
	if (curSuper_location != '')
	{
		iurl = replaceParam (iurl, 'super_loc', curSuper_location);
	}
	
	var loc_name = getParamValue(document.currentLocation,'loc_name') 
	if (loc_name != '')
	{
		iurl = replaceParam (iurl, 'loc_name', loc_name);
	}
	return iurl;
}

function clearParamsAndRenav(paramArray)
{
	var newUrl = document.currentLocation;
	for (var i = 0; i < paramArray.length; i++)
	{
 		newUrl = replaceParam(newUrl, paramArray[i], '');
	}
	navigateTo(newUrl,'',true);
}

function setSuperLocationAsLastVisited()
{
	setCookie("location",unpackURLparam(getParamValue(document.currentLocation, 'super_loc' )));
}

function errorOut( message )
{
	return "<br><span class='redstar'><img src='images/error.png' width='32' height='32'>Ошибка: " + message + "</span>";
}

function setButtonDisable(id, val)
{
	var btn = $(id)
	if (btn)
	{
		if (val)
			btn.disabled = 'disabled';
		else
			btn.disabled = '';
	}

}


function makeNavigationUI(curLoc)
{
	if (document.blockadmin)
		return '';
		
		
	if (navHistory.length)	
	{
		setButtonDisable('back_button', false);	
	}
	else
	{
		setButtonDisable('back_button', true);	
	}
	
	if (navForvard.length)	
	{
		setButtonDisable('forvard_button', false);
	}
	else
	{
		setButtonDisable('forvard_button', true);
	}
		
	var ret = '';
	var first = 1;

	
	while (curLoc != '')
	{
		var clname = getParamValue(curLoc,'loc_name');
	
		var curContr = '';
		
		if (first == 1)
		{
			curContr += clname
			first = 2;
		}
		else if (first == 2)
		{
			curContr += '<input type="button" class="button" id="node_button" style="width:auto; margin-bottom:0" value="'+clname+'" onClick="navigateTo(\'pop\');">' +
			' <img style="vertical-align: text-top;" src="skin' + skin + '/next.png">';
			first = 0;
		}
		else
		{
			curContr += '<input type="button" class="button" id="node_button" style="width:auto; margin-bottom:0" value="'+clname+'" onClick="navigateTo(\''+curLoc+'\',\'\',\'set\');">'+
			' <img style="vertical-align: text-top;" src="skin' + skin + '/next.png">';
		}
		
		ret = (curContr + ret);
			
		curLoc = unpackURLparam( getParamValue(curLoc,'super_loc'));
	}
	ret += '<img style="vertical-align: text-top;" src="skin' + skin + '/this.png"><p><img src="skin' + skin + '/spicebar.jpg" width="100%" height="1"></p>';
	
	return ret;
}


function setCookie (name, value)
{

	var days = 20;

	name += document.userid;
	var date = new Date();
	date.setTime(date.getTime()+(days*24*60*60*1000));
	var expires = "; expires="+date.toGMTString();

	document.cookie = name+"="+Base64.encode(value)+expires+"; path=/";

}

function getCookie(name) {
	var cookie = " " + document.cookie;
	var search = ' username=';
	var setStr = null;
	var offset = 0;
	var end = 0;
	name += document.userid;

	if (cookie.length > 0) 
	{
		search = " " + name + "=";
		
		offset = cookie.indexOf(search);
		if (offset != -1) 
		{
			offset += search.length;
			end = cookie.indexOf(";", offset)
			if (end == -1) 
			{
				end = cookie.length;
			}
			setStr = unescape(cookie.substring(offset, end));
		}
	}
	var value = Base64.decode(setStr);

	return(value);
}

//создание новой записи
function createRecord(crtRecID, values) //переход к созданию записи
{ 
	var newUrl = "create_rec.php?nodeid=" + crtRecID;

	if (values)
	{
		newUrl += values;
	}
	
	var crtP = getParamValue(document.currentLocation, 'creat_vals');
	
	if (crtP != '')
	{
		newUrl += unpackURLparam(crtP);
	}
	
	
	navigateTo (newUrl,'Новая запись');
}

function is_valid_inn(i)
{
	if(!i)
		return true;
		
    if ( i.match(/\D/) ) return false;
    
    var inn = i.match(/(\d)/g);
    
    if ( inn.length == 10 )
    {
        return inn[9] == String(((
            2*inn[0] + 4*inn[1] + 10*inn[2] + 
            3*inn[3] + 5*inn[4] +  9*inn[5] + 
            4*inn[6] + 6*inn[7] +  8*inn[8]
        ) % 11) % 10);
    }
    else if ( inn.length == 12 )
    {
        return inn[10] == String(((
             7*inn[0] + 2*inn[1] + 4*inn[2] +
            10*inn[3] + 3*inn[4] + 5*inn[5] +
             9*inn[6] + 4*inn[7] + 6*inn[8] +
             8*inn[9]
        ) % 11) % 10) && inn[11] == String(((
            3*inn[0] +  7*inn[1] + 2*inn[2] +
            4*inn[3] + 10*inn[4] + 3*inn[5] +
            5*inn[6] +  9*inn[7] + 4*inn[8] +
            6*inn[9] +  8*inn[10]
        ) % 11) % 10);
    }
    
    return false;
}


function checkdate(input)
{
	if (!/\d\d.\d\d.\d\d\d\d/.test(input))
	{
		alert("Дата заполнена неверно. Необходимый формат: ДД.ММ.ГГГГ");
		return false;
	}
	
	var dayfield=input.split(".")[0]
	var monthfield=input.split(".")[1]
	var yearfield=input.split(".")[2]
	var dayobj = new Date(yearfield, monthfield-1, dayfield)
	if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
	{
		alert("Неверное значение дня, месяца, или года.");
		return false;
	}
	
	return true;
}


//Обновление записи
function updateRecord(crtRecID, rec_id) //переход к созданию записи
{ 
	var newUrl = "create_rec.php?nodeid=" + crtRecID + "&recid=" +rec_id;
	navigateTo (newUrl,'Редактирование',false);
}





function removeTemporaryParams(url)
{
	url = replaceParam(url,'password','');
	url = replaceParam(url,'login','');
	url = replaceParam(url,'movflddown','');
	url = replaceParam(url,'movfldup','');
	url = replaceParam(url,'movnodeup','');
	url = replaceParam(url,'movnodedown','');

 	return url;
}


function nodeButton_onClick(id,locname,isdoc,filters)
{
	if (isdoc == 1)
	{
		var newUrl = 'list_docs.php?nodeid='+id;

		if (filters)
		{
			newUrl += filters;
		}
		navigateTo (newUrl, locname);
	}
	else
		navigateTo('node_nav.php?nodeid='+id, locname);
}

function replaceParam(url,param,value)
{
	var pos = url.indexOf ('?' + param +'=');
	if (pos < 0)	
	{
		pos = url.indexOf ('&' + param +'=');
	}
	
	if (pos > 0)
	{
		var end = url.indexOf('&',pos+1);
		if (end < 0)
		{
			end = url.length;
		}
		
		var rep = url.substring(pos,end);
		if (value != '')
		{
			rep = url.replace(rep,rep.substr(0,1)+param+'='+value);
		}
		else
		{
			rep = url.replace(rep,'');
		}

		if ((rep.indexOf('&',0) > 0) && (rep.indexOf('?',0) < 0))
		{
			rep = rep.replace('&','?');
		}
		return rep;
	}
	
	if (value != '')
	{
	  if (url.indexOf('?') > 0)
	  {
		  url += '&';
	  }
	  else
	  {
		  (url += '?');
	  }
	  return url + param + '=' + value;
	}
	return url;
}

function recOpen(nodid,id,noPush)
{
	navigateTo('view_rec.php?nodeid='+nodid+'&recid=' + id, 'Запись № ' + id,noPush);	
}

function changeUrlParam(param,val,reNav)
{

	if (reNav != false)
		reNav = true;
	
	var newPageUrl = replaceParam (document.currentLocation, param,val);
	if (reNav)
		navigateTo(newPageUrl,'',true);
	else
		document.currentLocation = newPageUrl;
}

function NodeHolder(id,sn,isd)
{
	this.ID=id;
	this.sivglename=sn;
	this.isdoc=isd;
}


function DocField(fn,lbl,desc,ft,ml,req,uni,lkdoc,fS) {

	this.fieldname = fn;
	this.label = lbl;
	this.description = desc;
	this.fieldType = ft;
	this.maxLen = ml;
	this.requirement =req ;
	this.unique = uni;
	this.selectfieldname =lkdoc;
	this.forSign = fS;
	
	this.getControll = function()
	{
		return $('c_' + this.fieldname);
	}
	
	this.getValue = function(readable)
	{
		if (this.fieldType == 5)
		{
			if (readable)
			{
				var spl = this.description.split('/');
				if (this.getControll().checked)
				{
					if (spl[1])
					{
						return spl[0];
					}
					else
					{
						return 'Да';
					}
				}
				else
				{
					if (spl[1])
					{
						return spl[1];
					}
					else
					{
						return 'Нет';
					}
				}
			}
			else
			{
				var ret = this.getControll().checked;
				if (ret)
				{ return '1';}
				 else
				 { return '0';};
			}
		}
		else if (this.fieldType == 6)
		{
			if (readable)
			{
				return this.getControll().options[this.getControll().selectedIndex].text;
			}
			else
				return this.getControll().value;
		}
		else if (this.fieldType == 8)
		{
			return $('ar_' + this.fieldname).innerHTML.replace(/<BR>/g,"\r\n");
		}
		else if (readable && (this.fieldType == 7))
		{
			return $('lkpname_' + this.fieldname).value;
		}
		else
		{
			return this.getControll().value;
		}
	}
	
	this.setValue = function(val)
	{
		if (this.fieldType == 5)
		{
			if (val == 1)
			{
				this.getControll().checked = true;
			}
			else
			{
				this.getControll().checked = false;
			}
			 
		}
		else if (this.fieldType == 8)
		{
			
		}
		else
		{
			this.getControll().value = val;
		}
	}

}


//замена
String.prototype.replaceAll = function(pcFrom, pcTo)
{

	var list = this.split(pcFrom);
	
	var ret = list[0];
	for (var i = 1; i < list.length; i++)
	{
		ret += pcTo+list[i];
	}
	return ret;
}



function TrimString(sInString){
sInString = sInString.replace(/ /g,' ');
return sInString.replace(/(^\s+)|(\s+$)/g, '');
}

function makeBase64param(i)
{
	return 'base64param='+ packURLparam( Base64.encode(i));
}


function popupWinEx(url)
{
	var a = url.split('?');
	var params = '';
	if(a[1])
	{
		url = a[0] + '?' + makeBase64param(a[1]);
	}

	popupWin(url);
}

function popupWin(url)
{
	var leftVal = (screen.width-750) / 2;
	var topVal = (screen.height-880) / 2;
	return window.open(url,'','width=750,height=880,resizable=yes,scrollbars=yes,status=yes,menubar=no,toolbar=no,left='+leftVal+',top='+topVal);
}

var Base64 = {
 
	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
 
	// public method for encoding
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = Base64._utf8_encode(input);
 
		while (i < input.length) {
 
			chr1 = input[i++];
			chr2 = input[i++];
			chr3 = input[i++];
 
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
 
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
 
			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
 
		}
 
		return output;
	},
 
	decode : function (input) {
		
		if(!input)
			return '';
			
		var output = new Array();
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
 
		while (i < input.length) {
 
			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));
 
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
 
			output.push(chr1);
 
			if (enc3 != 64) {
				output.push(chr2);
			}
			if (enc4 != 64) {
				output.push(chr3);
			}
 
		}
 
		output = Base64._utf8_decode(output);
 
		return output;
 
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string)
	{
		string = string.replace(/\r\n/g,"\n");
		var utftext = new Array();
 
		for (var n = 0; n < string.length; n++)
		{
 
			var c = string.charCodeAt(n);
 
			if (c < 128)
			{
				utftext.push(c);
			}
			else if((c > 127) && (c < 2048))
			{
				utftext.push((c >> 6) | 192);
				utftext.push((c & 63) | 128);
			}
			else
			{
				utftext.push((c >> 12) | 224);
				utftext.push(((c >> 6) & 63) | 128);
				utftext.push((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
	

	_utf8_decode : function (utftext)
	{
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length )
		{
 
			c = utftext[i];
 
			if (c < 128)
			{
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224))
			{
				c2 = utftext[i+1];
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else
			{
				c2 = utftext[i+1];
				c3 = utftext[i+2];
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
 
 
}



function isEmpty (str)
{
	if(!str){ return true;}
	return (TrimString(str) == '');	
}

function attachCapicom(silent)
{
	if ( (document.capicomInited != "yes") && (document.location.protocol.indexOf("https") == 0)) //аттачим к документу CIPICOM если еще не приаттачен.
	{
		try
		{
			if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
			{
				var head = document.getElementsByTagName('head')[0];
				
				var object = document.createElement('object');
				object.id = "oCAPICOM";
				object.classid = "clsid:A996E48C-D3DC-4244-89F7-AFA33EC60679";
				object.codebase="capicom/capicom.cab#version=2,0,0,0";
				
				head.appendChild(object);
				
				var script = document.createElement('script');
				script.src = 'capicom/sign.js';
				script.type = 'text/javascript';
				head.appendChild(script);
		
				document.capicomInited = "yes";
			}
			else if (!silent)
			{
				alert ('Данная функция работатет только в Internet Explorer 6.0 или выше.');
			}
		}
		catch (e)
		{
			if (!silent)
			{
				window.location.href = 'capicom_troubles.php';
			}
		}
		
	}
}

attachCapicom(true);


function changeStatusBar(txt, mode)
{
	if ($('statusbar'))
	{
		txt ='<b>' + txt + '</b> ';
		
		if (mode == 'guest')
		{
			txt += '<div style="display:none"><form id="hiden_login_form" action="javascript:sb_login();"><input type="password" name="Login" onchange="alert(this.value); $(\'sb_login\').value = this.value;"><input name="Password" onchange="alert(this.value); $(\'sb_pass\').value = this.value;"></form></div>';
			
			txt += 'Логин: <input name="Login" id="sb_login" style="width:80px;"> Пароль: <input name="Password" type="password" id="sb_pass" style="width:80px;"> ';
			
			
			txt += '<a href="1" onclick="navigateTo(\'_remindacc.php\',false); return false;">забыли пароль?</a> '
			
			txt += '<input type="button" class="button" value="Вход" style="width:auto; margin-bottom:0px" onClick="sb_login();"> ';
			txt += '<input type="button" class="button" value="Регистрация" style="width:auto; margin-bottom:0px" onClick="navigateTo(\'create_rec.php?nodeid=5\',\'Регистрация\');">';
		}
		else
		{
			txt += '<input type="button" class="button" value="Выход"  style="width:auto; margin-bottom:0px" onClick="navigateTo(\'_logoff.php\',\'Выход\',\'set\');">';
		}

		if (document.certDays && document.certSerial)
		{
			txt = "<strong>Срок действия вашего сертификата в днях: " +document.certDays(document.certSerial) + ";</strong><br/> " + txt ;

		}
		
		$('statusbar').innerHTML = txt;
	}
}

function sb_login()
{
	var l = $('sb_login').value;
	var p = $('sb_pass').value;
	if (l && p)
	{
		if ($('hiden_login_form').children[0].value == '')
		{
			$('hiden_login_form').children[0].value = l;
			$('hiden_login_form').children[1].value = p;
			$('hiden_login_form').submit();
		}
		setCookie("lastlogin", l);
		navigateTo('_login.php?login='+l+'&password='+p,'Вход в систему');
	}
}


function packURLparam(input_url)
{
	if (!input_url)
	{
		return '';	
	}
	return input_url.replaceAll("^","^t").replaceAll("+","^p").replaceAll("&quot;","").replaceAll("\"","^q").replaceAll("'","^a").replaceAll("&","^n").replaceAll("\r\n","^l").replaceAll("\n","^l").replaceAll("?","^v").replaceAll(";","^d").replaceAll("=","^e");
}

function unpackURLparam(input_url)
{
	if (!input_url)
	{
		return '';	
	}
	return input_url.replaceAll("^p","+").replaceAll("^q","\"").replaceAll("^n","&").replaceAll("^l","\r\n").replaceAll("^v","?").replaceAll(";","^d").replaceAll("^e","=").replaceAll("^t","^").replaceAll("^a","'");
}
//============================================================
//==  функции для использования в событиях полей и форм  =====
//============================================================

function fldArea(fn) //возвращает область поля документа по имени
{
	return $('ar_'+fn);
}

function hideArea(fn)
{
	var ar = fldArea(fn);
	if (ar)
		ar.style.display = "none";
}

function clearField(fn)
{
	var ar = fldCtr(fn);
	if (ar)
		ar.value = '';
}

function showArea(fn)
{
	var ar = fldArea(fn);
	if (ar)
		ar.style.display = "";
}

function fldCtr(fn) //возвращает контролл поля документа по имени
{
	return $('c_'+fn);
}

function keyDownInt(e)
{
	var keynum = 0;
	if(window.event)
	{
		keynum = e.keyCode
	}
	else if(e.which)
	{
		keynum = e.which
	}
	
	return (((keynum <= 57)&&(keynum >= 48)&& !e.shiftKey) || (keynum < 32) || ((keynum <= 105)&&(keynum >= 96)));
}


function fldSetValue(fn,val)
{
	var ctrl = fldCtr(fn);
	if (ctrl)
	{
		if ((ctrl.type == 'radio') || (ctrl.type == "checkbox"))
		{
			if (!(ctrl.checked === undefined))
				ctrl.checked = val;
			else
				ctrl.value = val
		}
		else if(ctrl.type == 'select-one')
		{
			ctrl.selectedIndex = val;
		}
		else
		{
			ctrl.value = val;
		}
	}
}

function fieldNode(fn)
{
	for (var i = 0; i < fields.length; i++)
	{
		if (fields[i].fieldname == fn)
		{
			return fields[i];	
		}
	}
	return false;
}


function fldSetLabel(fn,val)
{
	var ctrl = $('label_'+fn);
	var needStar = '';
	
	
	var nd =fieldNode(fn);
	if (nd)
	{
		if (nd.requirement==1)
		{
			needStar = '<span class="redstar">*</span>';
		}
	}
	

	if (ctrl)
	{
		ctrl.innerHTML = val + needStar+':';
	}
}

function fieldValue(fn)
{
	var ctrl = fldCtr(fn);
	if (!ctrl)
	{
		return '';
	}
	
	if ((ctrl.type == 'radio') || (ctrl.type == 'checkbox'))
	{
		return ctrl.checked;
	}
	else if (ctrl.value)
	{
		return ctrl.value;
	}
	else if (ctrl.innerHTML)
	{
		return ctrl.innerHTML;
	}	
	return '';
}

function fieldReadableValue(fn)
{
	var ctrl = $('lkpname_'+fn);
	if (ctrl)
	{
		if (ctrl.type == 'select')
		{
			return ctrl.value;
		}
	}
	return ctrl.value;
}

function fieldChanged(fn) //вызов события onChange для данного поля
{
	var ctrl = fldCtr(fn);
	
	switch (ctrl.type)
	{
		case 'radio':
		case 'checkbos':
		case 'checkbox':
			ctrl.onclick();
			break;
		case 'text':
		case 'select-one':
			ctrl.onchange();
			break;
	}	
}



function enableAllFields()
{
	for (var i=0; i<fields.length;i++)
	{
		setButtonDisable('c_'+fields[i].fieldname, false);
		setButtonDisable('c_'+fields[i].fieldname+"_off", false);
	}
}
function disableAllFields()
{
	for (var i=0; i<fields.length;i++)
	{
		setButtonDisable('c_'+fields[i].fieldname, true);
		setButtonDisable('c_'+fields[i].fieldname+"_off", true);
	}
}
function userHaveRole(role)
{
	return (document.userRoles && (document.userRoles.indexOf('|'+role+'|') >= 0));
}
