//****************************************************************************
//Работа со справочниками
//****************************************************************************

function ReturnGo(url)
{
	window.returnValue = "go|"+url;
	window.close();
}

function ReturnOk(uid,name)
{
	window.returnValue = "ok|"+uid+"|"+name;
	window.close();
}

function ReturnNull()
{
	window.returnValue = "null||";
	window.close();
}

function SelectFrm(url)
{
	while(1)
	{
		s = window.showModalDialog(url,null,"dialogWidth:750px; dialogHeight:550px; center:1; help:0; status:0");
		i = String(s).split("|");

		if(i[0] == "go")
		{
			url = i[1];
			continue;
		}
		else
		if(i[0] == "ok")
      return i;

		break;
	}
	return null;
}

function SelectModal(url,uid,name)
{
	ret = SelectFrm(url);

	if( ret != null && ret[0] == "ok" )
	{
		uid.value = ret[1];
		name.value = ret[2];
	}
}

function SelectNull(uid,name)
{
		uid.value = "";
		name.value = "<не выбрано>";
}

//****************************************************************************
// Переход по ссылке /* с корректной передачей HTTP_REFERER */
//****************************************************************************

function ChangeLocation(href)
{
  document.location.href=href;
/*
  var el=document.createElement("A");
  el.style.visibility="hidden";
  el.href=href;
  document.body.appendChild(el);
  el.click();
*/
}

//****************************************************************************
// Преобразование строка=>целое число. В случае, если строка не является
// числом возвращаемое значение NaN
//****************************************************************************

function getInteger(str)
{
  var val=parseInt(str,10);
  if (!isNaN(val) && val==str && String(str).match(/\./)==null)
    return val;
  else
    return Number.NaN;
}

//****************************************************************************
// Поставить/снять галочки на таблице
//****************************************************************************

function checkAllForTable(table,check)
{
  var chk=document.all(table+'[]');
  for(var i=0;i<chk.length;i++)
    chk(i).checked=check;
}


//****************************************************************************
// Функции кодировки UTF8 (для IE<5.5)
//****************************************************************************

function HexStr(i)
{
	if (i>=0 && i<16)
		return '0'+i.toString(16).toUpperCase();
	else if (i>=16 && i<=255)
		return i.toString(16).toUpperCase();
	else
		return '00';
}

function URIEncode(src)
{
	var agent=navigator.userAgent.toLowerCase();
	if (	agent.indexOf("msie 5.5")!=-1 || 
		agent.indexOf("msie 6.")!=-1 ||
		agent.indexOf("gecko")!=-1)
		return encodeURIComponent(src);
	var s=escape(src);
	var d=new String('');
	for(var i=0;i<s.length;i++)
		if (s.charAt(i)=='%' && s.charAt(i+1)=='u')
		{
			var v=parseInt(s.substring(i+2,i+6),16);
			if (v>=0 && v<=127)
				d+='%'+HexStr(v);
			else if (v>=128 && v<=2047)
				d+='%'+HexStr((v&1984)/64+192)+'%'+HexStr((v&63)+128);
			else if (v>=2048 && v<=65535)
				d+='%'+HexStr((v&122880)/8192+224)+'%'+HexStr((v&1984)/64+192)+'%'+HexStr((v&63)+128);
			i+=5;
		}
		else
			d=d+s.charAt(i);
	return d;
}


