Skip to content

Instantly share code, notes, and snippets.

@code-of-kpp
Created September 22, 2013 22:23
Show Gist options
  • Save code-of-kpp/6664446 to your computer and use it in GitHub Desktop.
Save code-of-kpp/6664446 to your computer and use it in GitHub Desktop.
pravo.gov.ru/proxy/ips/?script.js
//в 6м кодексе нет возможности работать с кукисами,
//все хранится в базе
function DoSearch() {
// без этого костыля поиск по сборникам в клиенте не работает
if (null != window.getSearchFormLength) {
var len = window.getSearchFormLength();
if (len > 400) {
alert('Для выполнения поиска, пожалуйста, конкретизируйте запрос путем уменьшения поисковых условий.');
return false;
}
}
//window.clearSearchFormLabels();
document.forms[0].submit();
return true;
}
function el(p) {
if('string' == typeof p) {
return document.getElementById(p);
}
return p;
}
function getCookies()
{
var result = document.cookie;
if ('' == result && null != window.biscuit) {
result = window.biscuit;
}
return result;
}
function cutSecInfoFromURL() {
var url = window.location.href;
//alert(url);
}
function iePrint() {
cutSecInfoFromURL();
if (navigator.appName.indexOf('Internet Explorer') >= 0) {
try {
var timeId = setTimeout('document.parentWindow.close()', 1000);
var obj = document.createElement('div');
obj.innerHTML += '<OBJECT ID="webBrowser" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
document.body.appendChild(obj);
document.getElementById("webBrowser").ExecWB(7,1);
obj.innerHTML = "";
} catch(e) {
clearTimeout(timeId);
window.print();
}
} else {
if ( window.print )
window.print();
}
}
function winPathSlice(win) {
this.result = win;
this.nextStep = function(step) {
if (step == '') return new docPathSlice(this.document);
if (step == '..') return new winPathSlice(this.result.parent);
if (step.charAt(0) == '*') return new collPathSlice(this.result.document.getElementsByTagName(step.substring(1)));
return new elemPathSlice(this.result.document.getElementById(step));
}
}
function docPathSlice(doc) {
this.result = doc;
this.nextStep = function(step) {
if (step.charAt(0) == '*') return new collPathSlice(this.result.getElementsByTagName(step.substring(1)));
return new elemPathSlice(this.result.getElementById(step));
}
}
function elemPathSlice(elem) {
this.result = elem;
this.nextStep = function(step) {
if (step == '') return new elemPathSlice(this.result.contentWindow.document);
if (step == '.') return new winPathSlice(this.result.contentWindow);
if (step.charAt(0) == '*') return new collPathSlice(this.result.getElementsByTagName(step.substring(1)));
return new elemPathSlice(this.result.contentWindow.document.getElementById(step));
}
}
function collPathSlice(coll){
this.result = coll;
this.nextStep = function(step) {
return new elemPathSlice(this.result[step]);
}
}
function framePath(path, start){
var pathElems = path.split("/");
var currentElem;
if (pathElems[0] == '') {
currentElem = new winPathSlice(top);
pathElems.splice(0,1);
} else if (start != null) {
if (start.document && start.location) currentElem = new docPathSlice(start.document);
else if (start.location) currentElem = new docPathSlice(start);
else currentElem = new elemPathSlice(start);
} else {
currentElem = new winPathSlice(window);
}
for (var i = 0; i < pathElems.length; i++) {
if (currentElem.result == null) break;
currentElem = currentElem.nextStep(pathElems[i]);
}
return currentElem.result;
}
function pair(x,y){return function(f){return f(x,y)}}
function fst(p){return p(function(x,y){return x})}
function snd(p){return p(function(x,y){return y})}
Array.prototype.concat = Array.prototype.concat || function (arr) {
for (var i = 0; i < arr.length; i++) this.push(arr[i]);
return this;
}
Array.prototype.indexOf = Array.prototype.indexOf || function (elem) {
for (var i = 0; i < this.length; i++) if (this[i] == elem) return i;
return -1;
}
Array.prototype.map = function (callback){return this.zipWithIndices(function(i,v){return callback(v);});}
Array.prototype.zipWithIndices = function (callback){
var list = new Array();
for (var i = 0; i < this.length; i++) list[i] = callback(i,this[i]);
return list;
}
Array.prototype.filter = function (predicate){
var list = new Array();
for (var i = 0; i < this.length; i++) if (predicate(this[i])) list.push(this[i]);
return list;
}
Array.prototype.foldr = function (callback,init){
var value = init;
for (var i = this.length - 1; i >= 0; i--) value = callback(this[i],value);
return value;
}
Array.prototype.foldlM = function (init,callback){
var list = new Array();
var result = init;
for (var i = 0; i < this.length; i++){
result = callback(result,this[i])(function(lst,res){list.concat(lst); return res});
}
return pair(list,result);
}
function toArray(arg) {
//jack_smith пытаемся создать массивы на основе object, в которых есть [0], [1] и т.д.
var length = arg.length;
if (null == length) {
length = 0;
while (null != arg[length]) {
length++;
}
}
var result = new Array();
for (var i = 0; i < length; i++) {
result.push(arg[i]);
}
return result;
}
function htmlZipper(lastTableNode){
this.lastTableNode = lastTableNode;
this.count = 0;
}
function toHtml(zipper,obj){
switch(typeof(obj)){
case "string":
case "number":
return document.createTextNode(obj);
case "object":
if (obj instanceof Array) return obj.map(function(element){return toHtml(zipper,element)})
else {
var tagName = obj.tagName;
var element;
var newZipper = zipper;
switch(tagName.toUpperCase()){
case "TR":
element = zipper.lastTableNode.insertRow(zipper.count);
zipper.count++;
newZipper = new htmlZipper(element);
break;
case "TD":
element = zipper.lastTableNode.insertCell(zipper.count);
zipper.count++;
break;
case "TABLE":
element = document.createElement(tagName);
newZipper = new htmlZipper(element);
break;
default:
element = document.createElement(tagName);
}
for (var i in obj) switch(i){
case "tagName": break;
case "childNodes":
appendElements(element,toHtml(newZipper,obj[i]));
break;
default: appendAttrib(element,i,obj[i]);
}
return element;
}
break;
default: return null;
}
}
function appendAttrib(element,name,value){
switch(typeof(value)){
case "string":
case "number":
case "function":
element[name] = value;
break;
case "object":
if (value instanceof Array){
if (element[name] == null) element[name] = [];
for (var i = 0; i < value.length; i++) appendAttrib(element[name],i,value[i]);
} else {
if (element[name] == null) element[name] = {};
for (var i in value) appendAttrib(element[name],i,value[i]);
}
break;
}
}
function appendElements(element,objs){
if (objs instanceof Array) for (var i = 0; i < objs.length; i++) appendElements(element,objs[i])
else if (objs.tagName == null) element.appendChild(objs)
else switch(objs.tagName.toUpperCase()){
case "TD":
case "TR":
break;
default: element.appendChild(objs);
}
}
function appendJS(element,objs){
var zipper = null;
switch (element.tagName){
case "TABLE":
zipper = new htmlZipper(element);
zipper.count = element.rows.length;
break;
case "TR":
zipper = new htmlZipper(element);
zipper.count = element.cells.length;
break;
default:
}
appendElements(element,toHtml(zipper,objs));
}
function partialDate(str){
var pD = new partialDateObject();
str.split("").filter(function (chr) {return (chr == "." || isFinite(parseInt(chr)))}).map(function (digit){pD.step(digit)});
return pD;
}
function partialDateObject(){
this.day = "";
this.month = "";
this.year = "";
this.dot = 0;
this.step = function(digit){
if (digit == "."){
switch(this.dot){
case 1:
var monthDaysCount = [31,31,29,31,30,31,30,31,31,30,31,30,31][parseInt(this.month)];
if (parseInt(this.day,10) > monthDaysCount) this.day = monthDaysCount.toString();
case 0:
this.dot += 1;
}
return;
}
var value = this[["day","month","year"][this.dot]];
if ((value.length == 2 && this.dot < 2)){
this.step(".");
this.step(digit);
return;
}
value += digit;
if (this.dot < 2 && parseInt(value,10) > [31,12][this.dot]){
this.step(".");
this.step(digit);
return;
}
this[["day","month","year"][this.dot]] = value;
}
this.lastStep = function(){
if (this.day.length == 0) return "";
switch(this.year.length){
case 1: this.year = "200" + this.year;
break;
case 2: this.year = "19" + this.year;
break;
}
var day = parseInt(this.day,10);
var month = parseInt(this.month,10);
var year = parseInt(this.year,10);
if (day == 0 || isNaN(day)) day = 1;
if (month == 0 || isNaN(month)) month = 1;
if (year == 0 || isNaN(year)) year = 1900;
year = year % 10000;
if ((year % 4 != 0 || year % 400 == 0) && month == 2 && day == 29) day = 28;
var day_str = day.toString();
var month_str = month.toString();
var year_str = year.toString();
if(day_str.length == 1) day_str = "0" + day_str;
if(month_str.length == 1) month_str = "0" + month_str;
return day_str + "." + month_str + "." + year_str;
}
this.toString = function(){
return this.day + (this.dot > 0 ? "." : "") + this.month + (this.dot > 1 ? "." : "") + this.year;
}
}
function hideBlock(bid) {
var block = framePath(bid);
if (block == null) return;
if (block.className == 'vis')
block.className='inv';
else block.style.visibility = 'hidden';
}
function viewBlock(bid) {
var block = framePath(bid);
if (null == block) return;
if (block.className == 'inv')
block.className='vis';
else block.style.visibility = 'visible';
}
function killBlock(bid) {
if(bid == 'dd_dbs_link' && document.getElementById("a7type") != null){
document.getElementById("a7type").disabled = false;
}
var block = framePath(bid);
if ( block )
block.style.display='none';
}
function showBlock(bid, doc) {
if(bid == 'dd_dbs_link' && document.getElementById("a7type") != null){
document.getElementById("a7type").disabled = true;
}
framePath(bid, doc || document).style.display='block';
}
function switchBlockView(bid){
var elemStyle = framePath(bid).style;
if (elemStyle.display == 'none') elemStyle.display = 'block';
else elemStyle.display = 'none';
}
function softkillBlock(bid, doc) {
framePath(bid, doc || document).style.display='none';
}
function softshowBlock(bid, doc) {
framePath(bid, doc || document).style.display='';
}
var pCookies = new Array();
function parseCookies(){
var aCookies = document.cookie.split("; ");
for (var i=0;i<aCookies.length;i++){
aaCookies = aCookies[i].split("=");
pCookies[aaCookies[0]] = aaCookies[1];
}
}
parseCookies();
function changeQuery(){
framePath("changeQueryForm").submit();
}
function filterQuery() {
var prefs = new cookiePrefs();
var size = prefs.wFilterSize;
if (size == null) size = {'width':600,'height':513};
top.filter = true;
var prop = "width=" + size.width + ",height=" + size.height + ",toolbar=no,resizable=yes,scrollbars=yes";
win = window.open(top.location.href.replace('?searchres=','?window_filter='),
"window_filter",
prop);
// "width=" + size.width + ",height=" + size.height + ",toolbar=no,resizable=yes");
}
function filterQueryLink(){
var prefs = new cookiePrefs();
var size = prefs.wFilterLSize;
if (size == null) size = {'width':680,'height':300};
var selexist = '';
var boxes = top.boxes || new Array();
if ( boxes.length > 0 )
selexist = '&selexist=1';
win = window.open(document.pPath + 'listselcombo.html' + selexist,
"window_filter",
"width=" + size.width + ",height=" + size.height + ",toolbar=no,resizable=yes");
}
function findTextWindow(url){
size = {'width':540,'height':270};
win = window.open(url,
"window_find",
"width=" + size.width + ",height=" + size.height + ",toolbar=no,resizable=yes");
}
function calculateDimDiff(){
var prefs = new cookiePrefs();
var size = prefs.wFilterSize;
if (size == null) size = {'width':534,'height':513};
var innerSize = {};
if (navigator.appName.indexOf('Internet Explorer') >= 0) {
innerSize.width = document.body.clientWidth;
innerSize.height = document.body.clientHeight;
} else {
innerSize.width = window.innerWidth;
innerSize.height = window.innerHeight;
}
window.diffX = size.width - innerSize.width;
window.diffY = size.height - innerSize.height;
if (window.diffX < 0) window.diffX = 0;
if (window.diffY < 0) window.diffY = 0;
}
function saveDimensions(){
var prefs = new cookiePrefs;
var size = {};
if (navigator.appName.indexOf('Internet Explorer') >= 0) {
size.width = document.body.clientWidth;
size.height = document.body.clientHeight;
} else {
size.width = window.innerWidth;
size.height = window.innerHeight;
}
if (window.diffX != null) size.width += window.diffX;
if (window.diffY != null) size.height += window.diffY;
prefs.wFilterSize = size;
prefs.save();
}
function clearField(attr,type){
switch(type){
case "1":
framePath('a' + attr + 'type').value = "1";
framePath('a' + attr + 'type').onchange();
framePath('a' + attr + 'from').value = "";
framePath('a' + attr + 'to').value = "";
framePath('a' + attr + 'date').value = "";
break;
case "2":
framePath('a' + attr).value = "";
break;
case "3":
framePath('a' + attr).value = "";
break;
case "5":
framePath('a' + attr).value = "";
framePath('a' + attr + 'type').value = "";
framePath('a' + attr + 'label').value = "";
break;
}
}
function editField(attr){
var field = framePath("a" + attr + "label");
if (field.value == "") clearField(attr,5)
else showPopupClassif(attr,
'bpa=' + pCookies['bpas'] +'&a' + attr + 'type=' + framePath('a' + attr +'type').value,
document.pPath);
}
function clearQuery(){
var rows = framePath('searchfields/*TR');
for (var k = 0; k < rows.length; k++){
var clName = rows[k].className;
if (clName != null){
var typeinfo = rows[k].className.split('_');
clearField(typeinfo[2],typeinfo[1]);
}
}
}
function reloadClear() {
window.location.href = document.pPath + "start_search" + document.fattrib;
}
function printlist() {
window.open(window.location.href.replace("?searchlist", "?find") + "&print=1");
}
function MarkSelectedDocuments() {
var cls = top.CurrentListSelection;
if (null == cls)
return;
var listFrame = top.document.all["topmenu"].contentWindow.document.all["list"].contentWindow.document;
var cBoxes = listFrame.getElementsByTagName("input");
for (var i = 0; i < cBoxes.length; i++){
var input = cBoxes[i];
var oidStr = input.name.replace('check_', '');
var oid = parseInt(oidStr);
input.checked = cls.isSelected(oid);
}
}
function firstLoad(){
var firstA = framePath('list_results/*A/0');
if (null != firstA) {
var content = framePath("/contents/.");
if (null == content) return;
content.location.replace(firstA.href);
setBorder(firstA, "cur");
}
checkFrame();
}
function lastLoad(){
var links = framePath('list_results/*A');
//var lastA = links[links.length-3]; 24.02.11 Nina: исправлено
var lastA = links[links.length-5];
top.contents.location.replace(lastA.href);
setBorder(lastA,"cur");
checkFrame();
}
function maximizeFrame() {
framePath('/*FRAMESET/0').cols='*,0';
killBlock('/topmenu/res_pic_frame_maximize');
showBlock('/topmenu/res_pic_frame_minimize');
}
function restoreFrame() {
if (null == framePath('/*FRAMESET/0')) return;
if (framePath('/*FRAMESET/0').cols == '*,0') framePath('/*FRAMESET/0').cols='36%,*';
killBlock('/topmenu/res_pic_frame_minimize');
showBlock('/topmenu/res_pic_frame_maximize');
}
function checkFrame() {
var fs = framePath('/*FRAMESET/0');
if(fs != null){
if(fs.cols == "*,0")
maximizeFrame();
if(fs.cols == "0,*")
maximizeDocFrame();
}
}
function maximizeDocFrame(align) {
var dir = (align == "top" || align == "bottom") ? "rows":"cols";
var val = (align == "left" || align == "top") ? "*,0" : "0,*";
framePath('/*FRAMESET/0')[dir] = val;
killBlock('doc_pic_frame_maximize');
showBlock('doc_pic_frame_minimize');
}
function restoreDocFrame(align) {
var dir = (align == "top" || align == "bottom") ? "rows":"cols";
var val = (align == "") ? "36%,*" : "50%,*";
framePath('/*FRAMESET/0')[dir]=val;
killBlock('doc_pic_frame_minimize');
showBlock('doc_pic_frame_maximize');
}
function parentNodeTag(item,tag){
var upper=item.parentNode;
while(upper.tagName.toUpperCase()!=tag){upper=upper.parentNode}
return upper;
}
function setBorder(item,style){
if(null == top.topmenu)
return;
if(top.topmenu.selctdItem!=undefined && style=="cur"){setBorder(top.topmenu.selctdItem,top.topmenu.selctdClass);}
top.topmenu.selctdItem=item;
var divcell=parentNodeTag(parentNodeTag(item,"TABLE"),"TABLE");
top.topmenu.selctdClass=divcell.className.split(' ')[1];
divcell.className="list_elem " + style;
if (style == "cur") moveToVisible(divcell,item);
}
function chrdk(r, params) {
var rr = eval("new Array(" + r + ")");
window.location.href = "?docbody=&nd=" + rr[1] + "&rdk=" + rr[0] + (params || "");
return true;
}
function ChangeSelRDK(owner, last_select, params)
{
if(chrdk(owner.value, params))
{
last_select.value = owner.value ;
}else {
owner.value = last_select.value ;
}
}
function chrdk(r, params) {
if (r != 'n') {
var rr = eval("new Array(" + r + ")");
window.location.href = "?docbody=&nd=" + rr[1] + "&rdk=" + rr[0] + (params || "");
return true ;
} else {
alert("Выбранная редакция не готова");
return false ;
}
}
function changeDocStyle(style){
killBlock('dd_style');
if (null == framePath('list/').body.className || "" == framePath('list/').body.className) {
alert("Для данного документа изменение стилей невозможно");
return;
}
framePath('list/').body.className = style;
var today = new Date();
today.setDate(today.getDate() + 7);
document.cookie = 'theme-document=' + style + "; expires=" + today.toGMTString();
}
function changeDocFont(fontstyle){
var menu = framePath('dd_font/*DIV');
if (null == menu) return;
for (var i = 0; i < menu.length; i++)
if (menu[i].className == 'font_cur') {menu[i].className = 'font';}
try {
if (navigator.appName.indexOf('Internet Explorer') >= 0) {
framePath('list').contentWindow.fixDocDimensions(fontstyle);
} else {
framePath('list/doc_content').className = fontstyle;
}
}
catch(e)
{
//!!! Если документ не HTML, то здесь будет ошибка
alert("Для данного документа изменение стилей невозможно");
return;
}
framePath('font_menu_'+fontstyle).className = 'font_cur';
var today = new Date();
today.setDate(today.getDate() + 7);
document.cookie = 'font-size-document=' + fontstyle + "; expires=" + today.toGMTString();
killBlock('dd_font');
}
function changeListStyle(style){
framePath('list/list_results').className = style;
var today = new Date();
today.setDate(today.getDate() + 7);
document.cookie = 'theme-contents=' + style + "; expires=" + today.toGMTString();
}
function changeListFont(fontstyle){
var menu = framePath('dd_sets1/*DIV');
for (var i = 0; i < menu.length; i++)
if (menu[i].className == 'font_cur')
menu[i].className = 'font';
framePath('font_menu_'+fontstyle).className = 'font_cur';
framePath('list/list_results_4fontsize').className = fontstyle;
var today = new Date();
today.setDate(today.getDate() + 7);
document.cookie = 'font-size-contents=' + fontstyle + "; expires=" + today.toGMTString();
}
function SetURLParam(url, name, value) {
var arr = (url + "").split("&");
var found = false;
for (var i in arr) {
var paramStr = arr[i] + "";
var param = paramStr.split("=");
found = (name == param[0]);
if (found) {
arr[i] = name + "=" + value;
break;
}
}
if ( !found ) {
arr[arr.length] = name + "=" + value;
}
var result = arr.join("&");
return result;
}
function changeListSize(size){
var url = SetURLParam(window.location, "lstsize", size);
url = SetURLParam(url, "start", 0)
window.location.replace(url);
}
function dateSwitch(identTwo,identOne,attr,event){
var index = framePath("a" + attr + "type").options.selectedIndex;
var showTwo = index >= 3;
var divOne = framePath(identOne);
var divTwo = framePath(identTwo);
var divToShow = showTwo ? divTwo : divOne;
var divToHide = showTwo ? divOne : divTwo;
divToShow.style.display = 'inline';
divToHide.style.display = 'none';
var dateInput = framePath("a" + attr + "date");
var fromInput = framePath("a" + attr + "from");
var toInput = framePath("a" + attr + "to");
var sourceInput = index == 1 ? toInput : fromInput;
if (sourceInput.value == '') sourceInput = index == 1 ? fromInput : toInput;
if (sourceInput.value == '') sourceInput = dateInput;
var targetInput = showTwo ? top.dateSwitchIndex == 1 ? toInput : fromInput : dateInput;
targetInput.value = sourceInput.value;
var inputs = framePath('*INPUT',divToHide);
for (var i = 0; i < inputs.length; i++){
inputs[i].value = '';
}
top.dateSwitchIndex = index;
if (index > 3){
var readonly = "readOnly";
framePath("a" + attr + "from").readOnly = true;
framePath("a" + attr + "to").readOnly = true;
framePath("img_" + attr + "_from").style.display = 'none';
framePath("img_" + attr + "_to").style.display = 'none';
var today = new Date();
var month = today.getMonth();
var granularity = [12,6,3,1][index-4];
month = granularity * Math.floor(month / granularity);
framePath("a" + attr + "from").value = "1." + (month + 1) + "." + today.getFullYear();
today.setMonth(month + granularity);
today.setDate(0);
framePath("a" + attr + "to").value = today.getDate() + "." + (month + granularity) + "." + today.getFullYear();
} else {
framePath("a" + attr + "from").readOnly = false;
framePath("a" + attr + "to").readOnly = false;
framePath("img_" + attr + "_from").style.display = 'inline';
framePath("img_" + attr + "_to").style.display = 'inline';
}
}
function changeSortOrder(oldSort,newSort){
window.location.replace(window.location.href.replace('&sort='+oldSort,'&sort='+newSort));
}
function showExAttribForm(elname, basePath, instring)
{
var url = basePath + 'exattribform&instring=' + escape(instring);
var w = 610;
var h = 480;
if (window.showModalDialog){
var res = window.showModalDialog(url, document,
'dialogWidth:' + w + 'px;' + 'dialogHeight:' + h + 'px;' +
'status:no;resizable:on;scroll:no;help:no');
doAttribForm(res, elname);
} else {
//todo jack_smith это не работает
winModalWindow =
window.open(url + "&elname=" + elname, "ModalChild",
"dependent=yes,status=no," +
"width=" + w + "," +
"height=" + h + "," +
"screenX=" + (screen.width - w) / 2 + "," +
"screenY=" + (screen.height - h) / 2);
winModalWindow.focus();
}
return false;
}
function doAttribForm(res, elname)
{
if (res!=null && res!=undefined) {
document.getElementById(elname).value = res;
}
}
function showPopupClassif(attr, param, basePath)
{
//==== Козарь 26.06.2007 используем списки из клиента
//==== Miguel 05.07.2007 не используем списки из клиента
//==== Kulch 07.08.07 все проще - если показываем "Отрасли зак-ва" или "Ключ. слова", то
// используем списки из клиента (атрибуты соотв. 24 и 23)
if(attr == 23 || attr == 24 || attr == 17){
var base_url = 'select_classif';
if (attr == 17)
base_url = 'select_puplic';
var aname = 'a' + attr;
if(document.getElementById(aname) != null){
var vSelected = document.getElementById(aname).value;
var url = basePath + base_url + '&access=1&mclassif=' + attr + '&' + param +
'&' + aname + '=' + vSelected + '&' + aname + 'area=110';
}else{
var url = basePath + 'mclassif&nclassif=' + attr + '&' + param;
}
} else {
var url = basePath + 'mclassif&nclassif=' + attr + '&' + param;
}
var w = 700;
var h = 650;
//==== Козарь 26.06.2007 списки из клиента подглючивают в showModalDialog
//==== Miguel 05.07.2007 можно подумать, они хоть где-то хоть как-то не подглючивают
if (window.showModalDialog){
window.showModalDialog(url,
document,
'dialogWidth:' + w + 'px;' + 'dialogHeight:' + h + 'px;' + 'status:no;resizable:on;scroll:no;help:no'
);
} else {
winModalWindow =
window.open(url, "ModalChild",
"dependent=yes,status=no,resizable=on," +
"width=" + w + "," +
"height=" + h + "," +
"screenX=" + (screen.width - w) / 2 + "," +
"screenY=" + (screen.height - h) / 2);
if ( winModalWindow )
winModalWindow.focus();
}
return false;
}
function clickAndGo(element,event){
if (getEventTarget(event).tagName == "INPUT") return;
var a = framePath('*A/0',element);
a.onclick();
if(framePath('/contents') != null)
framePath('/contents').src = a.href;
}
function clickAndGoVKart(element){
var a = framePath('*A/0',element);
unSelectText();
a.onclick();
framePath('/contents').src = a.href + '&vkart=card';
}
function unSelectText(){
if (document.selection) if (document.selection.empty) document.selection.empty();
if (window.getSelection){
var sel = window.getSelection();
if (sel.removeAllRanges) sel.removeAllRanges();
}
}
function goToPrevDoc(){
if (document.isBodyLoaded != true) return;
var link = framePath('/topmenu/list/link_' + (document.link_id - 1));
if (link){
top.contents.location.replace(link.href);
setBorder(link,"cur");
checkFrame();
} else {
goToPrevPage();
}
}
function goToNextDoc(){
if (document.isBodyLoaded != true) return;
var link = framePath('/topmenu/list/link_' + (document.link_id + 1));
if (link){
top.contents.location.replace(link.href);
setBorder(link,"cur");
checkFrame();
} else {
goToNextPage();
}
}
function goToPrevPage(){
var menuwin = framePath('/topmenu/.');
var prevPageLink = framePath('prevPage',menuwin);
if (prevPageLink) {menuwin.location.href = prevPageLink.href + '&llast=1'}
}
function goToNextPage(){
var menuwin = framePath('/topmenu/.');
var nextPageLink = framePath('nextPage',menuwin);
if (nextPageLink) {menuwin.location.href = nextPageLink.href}
}
function printChecked(action, bpaList, empire, collection) {
var cls = top.CurrentListSelection;
var noneSelected = !cls.isAllSelected();
if (noneSelected) {
var included = cls.getIncludedArray();
noneSelected = (0 == included.length);
}
if (noneSelected) {
alert("Для выполнения операции, пожалуйста, отметьте нужные документы");
return;
}
var orderSelection = "";
if(included != null)
orderSelection = included.toJSONString();
if ("txt" == action) {
var title = "Экспорт списка документов в TXT";
} else if ("rtf" == action) {
var title = "Экспорт списка документов в RTF";
} else {
var title = "Печать списка документов";
}
if (null == action)
action = '';
else{
action = '&action=' + action;
}
var json = cls.getAsString();
var url = pPath() + 'docsexportdlg.html' + action + "&setname=" + top.setname + "&selection=" + json +
"&title=" + escape(title) + "&bpalist=" + escape(bpaList) + "&order=" + escape(orderSelection) +
"&" + empire + "&" + collection;
var win = window.open(url, 'window_print',
"width=" + 620 + ",height=" + 370 + ",toolbar=no,resizable=yes");
}
function setHiddenFields(doc){
if (doc == null) doc = document;
var hidden = doc.getElementById('print_form_hidden');
var len = hidden.childNodes.length;
var top = window.opener.top;
top.boxes = top.boxes || new Array();
if (top.inversed == null) top.inversed = false;
for (var k = 0; k < len; k++){
hidden.removeChild(hidden.childNodes[0]);
}
for (var k = 0; k < top.plen; k++)
appendJS(hidden,{
'tagName':"INPUT",
'type':"hidden",
'name':top.pname[k],
'value':top.pvalue[k]
});
if (top.boxes.length == 0 && !top.inversed){
doc.getElementById('print_checked').disabled='disabled';
doc.getElementById('print_not_checked').disabled='disabled';
doc.getElementById('print_all').checked='checked';
return;
}
doc.getElementById('print_checked').disabled='';
doc.getElementById('print_checked').checked='checked';
doc.getElementById('print_checked').value = top.inversed ? 'not_checked' : 'checked';
doc.getElementById('print_not_checked').value = top.inversed ? 'checked' : 'not_checked';
doc.getElementById('print_not_checked').disabled='';
var docsfield = '' + top.boxes[0];
for (i = 1; i < top.boxes.length; i++){
docsfield += ';' + top.boxes[i];
}
appendJS(hidden,{
'tagName':"INPUT",
'type':"hidden",
'name':"docs",
'value':docsfield
});
}
function showCalendar(id,input,event){
if (document.body.onclick != null)
closeCalendar();
fillCal(id);
showBlock(id);
top.calOpened = id;
top.calInput = input;
document.body.onclick = closeCalendar;
stopPropg(event);
}
top.curDate = new Date();
function setCurMonth(month){
top.curDate.setMonth(month);
}
function adjustCurYear(adj){
top.curDate.setFullYear(top.curDate.getFullYear() + adj);
}
function adjustCurMonth(adj){
top.curDate.setMonth(top.curDate.getMonth() + adj);
}
function fillCal(id){
var Months = ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"];
var dateNowVal = new Date();
var dateNowDay = dateNowVal.getDate();
var dateNowMonth = dateNowVal.getMonth();
var dateNowYear = dateNowVal.getFullYear();
var dateNow = document.createTextNode(dateNowVal.getDate() + '.' + (dateNowVal.getMonth()+1).toString() + '.' + dateNowVal.getFullYear());
var dateNowSpan = framePath(id + 'cal_date');
dateNowSpan.removeChild(dateNowSpan.childNodes[0]);
dateNowSpan.appendChild(dateNow);
var curMonth = top.curDate.getMonth();
var curYear = top.curDate.getFullYear();
var calRows = framePath(id + 'calendar_days/*TR');
var loopDate = new Date();
loopDate.setTime(top.curDate.getTime());
loopDate.setDate(1);
var loopDay = loopDate.getDay();
if (loopDay < 2) loopDay += 7;
loopDate.setDate(loopDate.getDate() - loopDay);
for (var j = 1; j < 7; j++) for (var i = 0; i < 7; i++){
loopDate.setDate(loopDate.getDate() + 1);
var cell = framePath('*TD/' + i, calRows[j]);
cell.removeChild(cell.childNodes[0]);
var span = document.createElement('SPAN');
span.appendChild(document.createTextNode(loopDate.getDate()));
if (loopDate.getMonth() != curMonth){
span.className = 'alien';
cell.onclick = null;
} else {
cell.day = loopDate.getDate();
cell.month = loopDate.getMonth();
cell.year = loopDate.getFullYear();
cell.onclick = setCurDate;
}
if (loopDate.getDate() == dateNowDay && loopDate.getMonth() == dateNowMonth && loopDate.getFullYear() == dateNowYear)
cell.className = 'cur';
else cell.className = '';
cell.appendChild(span);
}
framePath(id + 'month_choice').selectedIndex = curMonth;
var select = framePath(id + 'year_choice');
if (select.childNodes.length != 101){
while(select.childNodes.length > 0) select.removeChild(select.childNodes[0]);
for (var i = curYear - 50; i <= curYear + 50; i++){
var opt = document.createElement('OPTION');
opt.appendChild(document.createTextNode(i));
opt.value = i;
select.appendChild(opt);
}
select.selectedIndex = 50;
} else {
var j = 0;
for (var i = curYear - 50; i <= curYear + 50; i++){
var opt = select.childNodes[j];
opt.value = i;
opt.childNodes[0].nodeValue = i;
if (j == 50) select.selectedIndex = 50;
j++;
}
}
}
function fillYear(select, selValue){
if(selValue == ""){
return;
}
var value = parseInt(selValue, 10);
var curYear = (new Date()).getFullYear();
var lastYear = value + 30;
var firstYear = value - 30;
if(lastYear > curYear){
lastYear = curYear;
firstYear = curYear - 60;
}
if (select.childNodes.length != 62){
while(select.childNodes.length > 0) select.removeChild(select.childNodes[0]);
var j = 0;
for (var i = firstYear; i <= lastYear; i++){
var opt = document.createElement('OPTION');
opt.appendChild(document.createTextNode(i));
opt.value = i;
select.appendChild(opt);
if (i == value) select.selectedIndex = j;
j++;
}
var opt = document.createElement('OPTION');
opt.appendChild(document.createTextNode("..."));
opt.value = "";
select.appendChild(opt);
}else{
var j = 0;
for (var i = firstYear; i <= lastYear; i++){
var opt = select.childNodes[j];
opt.value = i;
opt.childNodes[0].nodeValue = i;
if (i == value) select.selectedIndex = j;
j++;
}
}
}
function setCurDate(){
top.curDate.setDate(this.day);
top.curDate.setMonth(this.month);
top.curDate.setFullYear(this.year);
var strday = this.day.toString();
if (this.day <= 9)
strday = "0" + this.day.toString();
var strmonth = (this.month+1).toString();
if ((this.month + 1) <= 9)
strmonth = "0" + (this.month+1).toString();
framePath(top.calInput).value = strday + '.' + strmonth + '.' + this.year;
closeCalendar();
}
function closeCalendar(){
var win = window;
while (framePath(top.calOpened,win) == null) win = win.parent;
win.killBlock(top.calOpened);
win.document.body.onclick = null;
}
function stopPropg(event){
event = event || window.event;
if (event.stopPropagation != null){
event.stopPropagation();
} else {
event.cancelBubble = true;
}
}
function doNothing(){
}
function checkFilter(name){
var inputs = framePath(name + '/*INPUT');
for (var i = 0; i < inputs.length; i++){
var inp = inputs[i];
if (inp.type == 'text' && inp.value != '') return true;
}
window.alert('Нет данных для выполнения запроса');
return false;
}
function changeState(num,event){
var state = getEventTarget(event).checked;
top.boxes = top.boxes || new Array();
top.inversed = top.inversed || false;
if (top.inversed) state = !state;
if (state){
top.boxes.push(num);
} else {
top.boxes.splice(top.boxes.indexOf(num),1);
}
}
function showBookmarks(bpas,intelsearch,showCreation){
closeOtherPopups('window_bookmarks');
window.open(pPath() + 'window_bookmarks' + (showCreation ? '&action=create' : ''),'window_bookmarks',
"width=" + 534 + ",height=" + 513 + ",toolbar=no,resizable=yes");
}
function getContents(){
var cont = framePath('/contents');
if (null == cont)
return window;
return framePath('/contents/list/.');
}
function showSets(action, oid){
closeOtherPopups('window_sets');
window.open(pPath() + 'window_sets&action=' + action + '&oid=' + oid, 'window_bookmarks',
"width=" + 534 + ",height=" + 513 + ",toolbar=no,resizable=yes");
}
function parseCookieVar(name){
var prefs = new cookiePrefs();
var val = prefs[name];
if (val == null) {
return new Array();
}
return val;
}
function saveCookieVar(name,value){
var prefs = new cookiePrefs();
prefs[name] = value;
prefs.save();
}
function saveQuery(name,value){
window.open(pPath() + 'window_queries&action=create&name=' + name + '&value=' + escape(value),'window_bookmarks',
"width=" + 534 + ",height=" + 513 + ",toolbar=no,resizable=yes");
}
function addQuery(valueQuery){
var today = new Date();
var newBookmark = {
value: valueQuery,
time: today.getTime()
};
var obj, name;
if ( (obj=framePath('P_name')) )
{
name = obj.value;
newBookmark['name'] = name;
}
var sets = top.P_info;
for (var i = 0; i < sets.length; i++) if (sets[i].name == name) {
window.alert('Запрос с таким именем уже существует');
return;
}
if ( (obj=framePath('P_comment')) )
newBookmark['comment'] = obj.value || obj.innerHTML;
addToPersistentArray('queries',newBookmark, function(){
/*
window.alert('Запрос сохранен');
var qFrame = framePath("/window_queries");
if (qFrame) qFrame.contentWindow.location.reload();
*/
window.location.replace(pPath() + 'window_queries');
});
}
function saveQueryFromAttrs(){
ifr = framePath("/temp_iframe");
form = framePath("filterform");
appendJS(form,{
'tagName':"INPUT",
'type':"hidden",
'name':"tosave",
'id':"tosave",
'value':"yes"
});
postFormTo(form,ifr.contentWindow);
form.removeChild(framePath('tosave'));
return false;
}
function addBookmark(id) //,name,comment)
{
var win = window.opener.getContents();
var today = new Date();
var selStart = 0, selEnd = 0;
if ( win.getSelEnd ) {
selStart = win.getSelStart();
selEnd = win.getSelEnd();
} else {
alert("В данном документе создание закладки невозможно");
return;
}
var newBookmark = {
id : id,
pos : {
endPos : selEnd,
startPos : selStart
},
time: today.getTime()
};
var aFld = ['name', 'comment'];
var obj;
if ( (obj=framePath('P_name')) )
newBookmark['name'] = obj.value;
if ( (obj=framePath('P_comment')) )
newBookmark['comment'] = obj.value || obj.innerHTML;
win.setDocSelection(newBookmark.pos.startPos,newBookmark.pos.endPos);
addToPersistentArray('bookmarks',newBookmark,function(){
window.location.replace(pPath() + 'window_bookmarks');
});
}
function addSet(name,action, oid){
if ('' == name) {
window.alert('Пожалуйста, задайте имя подборки');
return;
}
var sets = top.P_info;
for (var i = 0; i < sets.length; ++i) {
if (sets[i].name == name) {
window.alert('Подборка с таким именем уже существует, пожалуйста выберите другое имя');
return;
}
}
var today = new Date();
newSet = {
name : name,
docs : [],
count : 0,
time : today.getTime()
};
var obj;
if ( (obj=framePath('P_comment')) )
newSet['comment'] = obj.value || obj.innerHTML;
addToPersistentArray('sets', newSet,function(){
if (''==action) window.close();
else window.location.href = pPath() + "window_sets&action=" + action + "&oid=" + oid;
});
}
function findSet(namePart){
var setslist = framePath('sets/items/*LI');
if (0 == setslist.length)
return;
var currentSet = 0;
while (setslist[currentSet].className != 'current') currentSet++;
for (var i = 0; i < setslist.length; i++){
currentSet = (currentSet+1) % (setslist.length);
if (setslist[currentSet].childNodes[0].nodeValue.indexOf(namePart) >= 0){
framePath('sets/').selectedItem.className = '';
setslist[currentSet].className = 'current';
framePath('sets/').selectedItem = setslist[currentSet];
setInfo(setslist[currentSet]);
return;
}
}
window.alert('Такой подборки нет');
}
function setInfo(item){
if (null == item)
return;
var sets = top.P_info;
var setNum = item.ind;
if (null == setNum)
setNum = 0;
var allInfo = ['name', 'time', 'count', 'comment'];
for(var i = 0; i < allInfo.length; i++) {
var curSet = sets[setNum];
var val = curSet[allInfo[i]];
if (null != val) {
if ('time' == allInfo[i]) {
var date = new Date(parseInt(val));
val = date.toLocaleString();
}
framePath('/set_' + allInfo[i]).childNodes[0].nodeValue = val;
}
}
}
function removeSet(){
var seltd = framePath('sets/').selectedItem;
if (null == seltd)
return;
removeFromPersistentArray('sets', seltd.num,
function () {
top.location.reload();
}
);
}
function clearSet(){
var seltd = framePath('sets/').selectedItem;
if (null == seltd)
return;
if (!authorized()) {
var sets = top.P_info;
sets[seltd.num].docs = [];
sets[seltd.num].count = 0;
saveCookieVar('sets',sets);
framePath('sets/.').location.reload();
} else {
window.callback = function(){
framePath('sets/.').location.reload();
}
framePath('temp_iframe/.').location.href = pPath() + "persistent=&clearset=" + seltd.num;
}
}
function showQueries(){
window.open(pPath() + 'window_queries','window_queries',
"width=" + 534 + ",height=" + 513 + ",toolbar=no,resizable=yes");
}
function showBPAs(){
closeOtherPopups('window_dbs');
if (top.loaded != null) {
viewBlock('window_dbs');
return;
}
top.loaded = true;
top.callBack = function (){
viewBlock('window_dbs');
top.callBack = null;
}
var _frame = framePath('window_dbs/.');
if (null == _frame) return;
var loc = _frame.location;
loc.replace(loc.href);
}
function removeQuery(){
if(window.confirm("Удалить этот запрос?")){
removeFromPersistentArray('queries',framePath('queries/').selectedItem.num,function(){
framePath('queries/.').location.reload(true);
});
}
}
function itemsClick(event, callBack){
var target = getEventTarget(event);
if ("LI" != target.tagName)
return;
document.selectedItem.className = '';
target.className = 'current';
document.selectedItem = target;
if (null != callBack)
callBack(target);
}
function clearBookmarks(){
// saveCookieVar('bookmarks',[]);
clearPersistentArray('bookmarks',function(){window.alert('OK')});
}
function prepareAjaxResultForCheckDeletedDoc(result, togo, posSt, posEnd){
if(result == 'true'){
if(confirm("Данный документ удалён из информационного фонда.\nУдалить его из закладок?"))
removeCurrent();
return;
}
window.open(pPath() + "searchres=&set=" + togo + "&posSt=" + posSt + "&posEnd=" + posEnd + "&sort=1");
window.close();
}
function goToBookmark(event){
parseCookies();
var seltd = framePath('bookmarks/').selectedItem;
if (seltd == null) return;
var params = seltd.togo + ", " + seltd.togoPos.startPos + ", " + seltd.togoPos.endPos;
PassAjaxResponseToFunction(pPath() + 'checkdeleteddoc' +
'&oid=' + seltd.togo,
'prepareAjaxResultForCheckDeletedDoc', params);
}
function removeCurrent(){
// var bookmarks = parseCookieVar('bookmarks');
var seltd = framePath('bookmarks/').selectedItem;
if (seltd == null) return;
// bookmarks.splice(seltd.num,1);
// saveCookieVar('bookmarks',bookmarks);
removeFromPersistentArray('bookmarks',seltd.num,function(){framePath('/bookmarks/.').location.reload()});
}
function ownerDoc(elem){
if (elem.ownerDocument) return elem.ownerDocument;
return elem.document;
}
function selectAllBPAs(){
var cboxes = framePath('/bpa_root/*INPUT');
for (var i = 0; i < cboxes.length; i++) cboxes[i].checked="checked";
}
function selectNoBPAs(){
var cboxes = framePath('/bpa_root/*INPUT');
for (var i = 0; i < cboxes.length; i++) cboxes[i].checked="";
}
function getCheckedOIDs(topWindow) {
if (null == topWindow)
var wndTop = top
else
var wndTop = topWindow;
if (null == wndTop.boxes)
wndTop.boxes = new Array();
return wndTop.boxes;
}
function addDocToSet(oid) {
var MAX_DOCS_COUNT = 100;
var selItem = framePath('sets/').selectedItem;
if (null == selItem)
return;
var setNum = selItem.num;
var workOID = parseInt(oid);
if (authorized()) {
window.callback = function (msg) {
if ("" != msg)
alert(msg);
else
window.close();
}
framePath('temp_iframe/.').location.href = pPath() + "persistent=&addtoset=" + setNum + "&oid=" + workOID;
} else {
var sets = parseCookieVar('sets');
if (0 == sets[setNum].count)
sets[setNum].docs = new Array();
var index = sets[setNum].docs.indexOf(workOID);
if (index < 0)
index = sets[setNum].docs.indexOf(workOID + "");
if (index > -1) {
alert("Текущий документ уже содержится в данной подборке,\n" +
"пожалуйста, выберите другую или создайте новую подборку");
return false;
}
var limitMsg = "Максимально возможное количество документов в одной подборке: " + MAX_DOCS_COUNT;
if (sets[setNum].docs.length == MAX_DOCS_COUNT) {
alert(limitMsg + ",\nдля данной подборки этот лимит исчерпан");
return false;
}
sets[setNum].docs.push(workOID);
sets[setNum].count = sets[setNum].docs.length;
saveCookieVar('sets', sets);
window.close();
}
}
function removeDocFromSet(setId, excepted){
var mode = null;
if(excepted == 'all'){
mode = "all";
}else if (excepted != null){
mode = "excepted";
}else{
var cls = top.CurrentListSelection;
var excepted = cls.getExceptedArray();
var included = cls.getIncludedArray();
if (0 != excepted.length)
// удалить все кроме выбранных
mode = "excepted";
else if (0 != included.length)
// удалить выбранные
mode = "selected";
else if (cls.isAllSelected())
// удалить все
mode = "all";
else {
alert("Пожалуйста, отметьте документы на удаление");
return;
}
if ( !confirm("Вы действительно хотите удалить выбранные\nдокументы из текущей подборки?") )
return;
}
if (authorized()) {
// авторизованный пользователь
window.callback = function (empty) {
if ("True" == empty)
top.close();
else
top.location.reload();
};
if ("all" == mode) {
var urlQuery = "clearset=" + setId;
} else if ("selected" == mode) {
var urlQuery = "dropfromset=" + setId + "&oids=" + included.join(";");
} else if ("excepted" == mode) {
var urlQuery = "keepinset=" + setId + "&oids=" + excepted.join(";");
}
framePath('temp_iframe/.').location.href = pPath() + "persistent=&" + urlQuery;
} else {
// неавторизованный пользователь
var sets = parseCookieVar('sets');
var workSet = null;
for (var i = 0; i < sets.length; i++) {
if (sets[i].time == setId) {
workSet = sets[i];
break;
}
}
if (null == workSet) {
alert('Текущая подборка уже удалена');
return;
}
if ("all" == mode) {
// удалим все документы из подборки
workSet.docs = new Array();
} else if ("selected" == mode) {
// удалим отмеченные документы из подборки
var docs = workSet.docs;
for (var i = 0; i < included.length; i++) {
var oid = included[i];
var index = docs.indexOf(oid);
if (index < 0)
index = docs.indexOf(oid + "");
if (index < 0)
continue;
docs[index] = docs[docs.length - 1];
delete docs[docs.length - 1];
docs.length--;
}
} else if ("excepted" == mode) {
// удалим все документы из подборки, кроме отмеченных
// ====
// здесь возникает проблема:
// при попытке написать
// workSet.docs = excepted;
// и последующим workSet.toJSONString().parseJSON()
// workSet.docs вместо массива превратится в объект с набором свойств (IE6)
// ибо excepted instanceof Array = false;
// ====
// сделаем финт ушами:
var hint = new Array();
for (var i = 0; i < excepted.length; i++) {
hint.push(excepted[i]);
}
workSet.docs = hint;
}
workSet.count = workSet.docs.length;
saveCookieVar('sets', sets);
if (0 == workSet.docs.length) {
top.close();
return;
}
top.location.assign(pPath() + "searchres=&set=" + workSet.docs.join("/") + "&setid=" + setId + "&sort=1" + "&setname=" + workSet.name);
return workSet.docs.join("/");
}
}
function prepareAjaxResultForCheckDeletedDocs(result, docset, setid, setName){
if(result == "0"){
if (authorized())
url = pPath() + "searchres=&set=" + setid + "&sort=1" + setName
else
url = pPath() + "searchres=&set=" + docset + "&setid=" + setid + "&sort=1" + setName;
}else{
if(confirm("В подборке присутствуют документы, удалённые из информационного фонда.\nУдалить их из подборки?")){
var excepted = result.split("/");
var docset = removeDocFromSet(setid, excepted);
}
if (authorized())
url = pPath() + "searchres=&set=" + setid + "&sort=1" + setName
else
url = pPath() + "searchres=&set=" + docset + "&setid=" + setid + "&sort=1" + setName;
}
window.open(url);
window.close();
}
function showSet(){
var selItem = framePath('sets/').selectedItem;
if (selItem == null)
return;
var setNum = selItem.num;
var setName = "&setname=" + selItem.innerHTML;
var url;
if (authorized()) {
if (0 == top.P_info[selItem.ind].count)
return;
//url = pPath() + "searchres=&set=" + setNum + "&sort=1" + setName;
var params = "'', '" + setNum + "', '" + setName+ "'";
PassAjaxResponseToFunction(pPath() + 'checkdeleteddocs' +
'&set=' + setNum,
'prepareAjaxResultForCheckDeletedDocs', params);
} else {
var sets = top.P_info;
var docs = sets[setNum].docs;
if (0 == docs.length)
return;
var params = "'" + docs.join("/") + "', '" + sets[setNum].time + "', '" + setName+ "'";
PassAjaxResponseToFunction(pPath() + 'checkdeleteddocs' +
'&oids=' + docs.join("/"),
'prepareAjaxResultForCheckDeletedDocs', params);
}
}
function pPath(){
var loc = window.location.href;
var i = loc.indexOf('?');
return loc.substring(0,i+1);
}
function openClassifKey(attr,event){
parseCookies();
event = event || window.event;
if (event.ctrlKey || event.altKey || event.metaKey) return true;
var code = event.charCode || event.keyCode;
if (code == 0) return true;
var chr = String.fromCharCode(code);
if ('абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ ,;.'.indexOf(chr) < 0) return false;
showPopupClassif(attr, 'bpa=' + pCookies['bpas'] + '&a' + attr + 'type=' + framePath('a' + attr +'type').value + '&incrsearch=' + escape(chr), '?');
return false;
}
function getTop(o) {
var fixBrowserQuirks = true;
var top = 0;
var parentNode = null;
var offsetParent = null;
offsetParent = o.offsetParent;
var originalObject = o;
var el = o;
while (el.parentNode!=null) {
el = el.parentNode;
if (el.offsetParent != null) {
var considerScroll = true;
if (fixBrowserQuirks && window.opera) {
if (el==originalObject.parentNode || el.nodeName=="TR") considerScroll = false;
}
if (considerScroll) {
if (el.scrollTop && el.scrollTop>0) top -= el.scrollTop;
}
}
if (el == offsetParent) {
top += o.offsetTop;
if (el.clientTop && el.nodeName!="TABLE") top += el.clientTop;
o = el;
if (o.offsetParent==null) {
if (o.offsetTop) top += o.offsetTop;
}
offsetParent = o.offsetParent;
}
}
return top;
}
function moveToVisible(elem,subelem){
subelem = subelem || elem;
var doc = elem.ownerDocument || elem.document;
var win = doc.defaultView || doc.parentWindow;
var scrolled = win.document.body.scrollTop;
var hgt = win.innerHeight || win.document.body.clientHeight;
var elTop = getTop(subelem);
if (elTop + subelem.scrollHeight > scrolled + hgt || elTop < scrolled) win.scrollTo(0,getTop(elem));
}
var timer = null;
function divOutML() { timer = window.setTimeout('hideBlock("months_list")', 50); }
function divOutYE() { timer = window.setTimeout('hideBlock("year_edit")', 50); }
function divOver() { window.clearTimeout(timer); }
function execAndContinue(){
if (top.jscode == null) return;
eval(top.jscode);
setTimeout('execAndContinue()',200);
}
function mouseRepeat(code){
top.jscode = code;
execAndContinue();
}
function cancelMouseRepeat(){
top.jscode = null;
}
function setBpaAndGo(bpa) {
if (bpa.length == 0){
window.alert('Выберите хотя бы один БПА');
return;
}
saveCookieVar('bpas',bpa);
location.reload();
var elem = document.getElementById("a7type");
if(elem != null)
elem.disabled = false;
}
function scrollToPosition(topId,pos){
var node = framePath(topId);
for (var i = 0; i < pos.length - 1; i++) node = node.childNodes[pos[i]];
var rang = document.createRange();
rang.setStart(node,pos[pos.length-1]);
var sp = document.createElement("SP");
rang.insertNode(sp);
sp.scrollIntoView();
sp.parentNode.removeChild(sp);
}
function nodeIndex(node,parent){
for (var i = 0; i < parent.childNodes.length; i++)
if (parent.childNodes[i] == node) return i;
return -1;
}
function gotoTopPos(){
return;
if (top.pos == null) return;
scrollToPosition('doc_content',top.pos);
top.pos = null;
}
function checkMultipleBPAs(cb){
var div = parentNodeTag(cb,'DIV');
if (div == null) return;
if (div.className == "div_minus") div = div.nextSibling;
var subHeaders = div.getElementsByTagName("INPUT");
for (var i = 0; i < subHeaders.length; i++){
var cbox = subHeaders[i];
if (cbox.type == 'checkbox'){
cbox.checked = cb.checked;
}
}
var up = div.previousSibling;
}
function restoreBPAs() {
var bpas = parseCookieVar('bpas');
if ('Array' == bpas.constructor) {
bpas = cooks.join('/');
}
var cbs = framePath('bpa_root/*INPUT');
for (var i = 0; i < cbs.length; i++){
var cb = cbs[i];
if (cb.type != 'checkbox' || cb.className.indexOf('emptyCb') < 0) continue;
cb.checked = bpas.indexOf(cb.id.substring(3)) >= 0;
}
recordMultipleBPAs();
}
function recordMultipleBPAs(){
var next = 0;
var list = [];
var items = framePath('bpa_root/*INPUT');
if ( items.length == 0 )
return;
do {
var nextItem = makeHierachy(items,next);
next = nextItem.next;
list.push(nextItem.result);
} while (nextItem.result.item.className.indexOf('lastCb') < 0);
for (var i = 0; i < list.length; i++)
checkIfNeeded(list[i]);
}
function checkIfNeeded(item){
if (item.subItems.length == 0) return;
for (var i = 0; i < item.subItems.length; i++)
checkIfNeeded(item.subItems[i]);
item.item.checked = true;
for (var i = 0; i < item.subItems.length; i++)
if (!item.subItems[i].item.checked) item.item.checked = false;
var up = parentNodeTag(item.item,'DIV').previousSibling;
if ( up.getElementsByTagName )
up.getElementsByTagName('INPUT')[0].checked = item.item.checked;
}
function processCheckBpa(oSpan){
var up = parentNodeTag(oSpan,'TR');
var oCheck = up.getElementsByTagName('INPUT')[0];
oCheck.checked = !oCheck.checked;
if ( !oCheck.id )
checkMultipleBPAs(oCheck);
recordMultipleBPAs();
return false;
}
function makeHierachy(inputs,start){
var headInput = inputs[start];
var next = start + 1;
if (headInput.className.indexOf('emptyCb') >= 0)
return {next : next, result : {item : headInput, subItems : []}};
var list = [];
do {
var nextItem = makeHierachy(inputs,next);
next = nextItem.next;
list.push(nextItem.result);
} while (nextItem.result.item.className.indexOf('lastCb') < 0);
return {next : next, result : {item : headInput, subItems : list}};
}
function setCheckedBPAs(){
var itemFunction = function (item) {
return item.checked && item.id != null && item.id != "";
};
var idFunction = function (item) {
return item.id.substring(3)
};
var bpaArray = toArray(framePath('/bpa_root/*INPUT'));
var bpaFilteredArray = bpaArray.filter(itemFunction);
var bpaList = bpaFilteredArray.map(idFunction).join('/');
setBpaAndGo(bpaList);
}
var textNodeType = 3;
function setBoundary(callBackObject,callBackFunc,node,offset){
if (node.nodeType == textNodeType){
var diff = offset - node.nodeValue.length;
if (diff > 0) return diff;
callBackObject[callBackFunc](node,offset);
return 0;
} else {
var cNodes = node.childNodes;
for (var i = 0; i < cNodes.length; i++){
offset = setBoundary(callBackObject,callBackFunc,cNodes[i],offset);
if (offset == 0) return 0;
}
return offset;
}
}
function setDocSelection(start,end, subQuery){
if (start == end) return;
if (navigator.appName.indexOf('Internet Explorer') >= 0) return window.setDocSelectionIE(start,end);
var rng = document.createRange();
var i = setBoundary(rng,"setStart",document.body,start);
if (i != 0) return;
i = setBoundary(rng,"setEnd",document.body,end);
if (i != 0) return;
if(!subQuery) {
var span = document.createElement("SPAN");
rng.insertNode(span);
span.scrollIntoView();
span.parentNode.removeChild(span);
setBoundary(rng,"setStart",document.body,start);
setBoundary(rng,"setEnd",document.body,end);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(rng);
} else {
var selectFont = document.createElement('font');
selectFont.className = "subquery";
selectFont.id = "subquery";
rng.surroundContents(selectFont);
selectFont.scrollIntoView(false);
setBoundary(rng,"setStart",document.body,start);
setBoundary(rng,"setEnd",document.body,end);
top.searchEnd = end;
}
}
function setDocSelectionIE(start,end){
var rng = document.body.createTextRange();
rng.collapse(true);
rng.moveEnd("character",end);
rng.moveStart("character",start);
rng.select();
}
function getStartBoundary(rng){
var span = document.createElement("SPAN");
span.style.display = "none";
rng.insertNode(span);
span.appendChild(document.createTextNode("o_O"));
var pos = document.body.textContent.indexOf("o_O");
span.parentNode.removeChild(span);
return pos;
}
function getSelStart(){ // note - destroys selection!
if (navigator.appName.indexOf('Internet Explorer') >= 0) {
return (top.selStart || 0);
}
var sel = window.getSelection();
if (sel.rangeCount == 0) return 0;
var rng = sel.getRangeAt(0);
var pos = getStartBoundary(rng);
return pos;
}
function getSelStartIE(){
var rng = document.selection.createRange();
return Math.abs(rng.moveStart("character",-1000000000));
}
function getSelEnd(){ // doesn't destroy selection
if (navigator.appName.indexOf('Internet Explorer') >= 0) return (top.selEnd || 0);
var sel = window.getSelection();
if (sel.rangeCount == 0) return 0;
var rng = sel.getRangeAt(0);
var rng2 = rng.cloneRange();
rng2.setStart(rng.endContainer,rng.endOffset);
var pos = getStartBoundary(rng2);
sel.removeAllRanges();
sel.addRange(rng);
return pos;
}
function getSelEndIE(){
var rng = document.selection.createRange();
rng.moveStart("character",-1000000000)
return Math.abs(rng.moveEnd("character",-1000000000));
}
function getThisParamIE(rng){
return Math.abs(rng.moveStart("character",-1000000000));
}
function goToSelection()
{
if (top.pname == undefined)
return;
var selStInd = top.pname.indexOf("posSt");
var selEndInd = top.pname.indexOf("posEnd");
if (selStInd < 0 || selEndInd < 0) return;
setDocSelection(parseInt(top.pvalue[selStInd]),parseInt(top.pvalue[selEndInd]));
}
function setselchange(){
document.onselectionchange = IERecordSel;
}
function IERecordSel(){
if (navigator.appName.indexOf('Internet Explorer') < 0) return;
if (document.selection.type == 'None'){
top.selEnd = 0;
top.selStart = 0;
return;
}
top.selEnd = getSelEndIE();
top.selStart = getSelStartIE();
}
function findParentText(win, subQuery) {
if (subQuery == null)
subQuery = false;
var textToFind = win.framePath('find_str').value;
if(subQuery)
var findStart = parseInt(win.framePath('find_from').value);
else
var findStart = win.framePath('find_from').selectedIndex;
var findDir = win.framePath('find_to').selectedIndex;
var findExact = win.framePath('find_exact').checked;
var findCaps = win.framePath('find_consider_caps').checked;
if (navigator.appName.indexOf('Internet Explorer') < 0)
var func = "findText";
else
var func = "findTextIE";
var fFind = framePath('list/.')[func];
if (null != fFind) {
return fFind(textToFind, findStart, findDir, findExact, findCaps, subQuery);
} else {
alert("К сожалению в данном документе поиск невозможен");
win.close();
}
}
function trim(str, chars) {
return ltrim(rtrim(str, chars), chars);
}
function ltrim(str, chars) {
chars = chars || "\\s";
return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
function rtrim(str, chars) {
chars = chars || "\\s";
return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
function insertClass(rng) {
var removeMark = rng.getBookmark();
if(top.searchEnd) {
subqueryRemove();
}
rng.moveToBookmark(removeMark);
window.parent.isSmthFound = true;
rng.pasteHTML('<font class="subquery">' + rng.text + '</font>');
rng.scrollIntoView(false);
}
function getSearchParams(rng) {
var cloneMark = rng.getBookmark();
rng.move("word", -1);
top.searchStart = getThisParamIE(rng);
rng.moveToBookmark(cloneMark);
top.searchEnd = getThisParamIE(rng);
}
function subqueryRemove() {
subFont = document.body.getElementsByTagName('font');
subFontCount = subFont.length;
for(var i = 0; i < subFontCount; i++) {
if(subFont[i].className == 'subquery') {
subFont[i].outerHTML = subFont[i].innerHTML;
subFontCount--;
}
}
}
function confirmRange(dir, browser) {
var message = (dir == 1)?("Это первое вхождение. Перейти на последнее?"):("Это последнее вхождение. Перейти на первое?");
if ( !confirm(message) ) {
return null;
} else {
if(top.searchEnd){
if(browser == 'IE') {
subqueryRemove();
} else {
subFont = document.getElementById("subquery");
if(subFont)
setOuterHTML("subquery", subFont.innerHTML);
}
}
return true;
}
}
function findTextIE(textToFind, findStart, findDir, findExact, findCaps, subQuery){
var range = document.body.createTextRange();
range.collapse(true);
var textEnd = range.moveEnd("character", 1000000000);
var prefix = "";
var startPoint = null;
switch (findStart) {
case 0:
if (0 == findDir)
startPoint = top.searchEnd;
else
startPoint = top.searchStart;
break;
case 1:
startPoint = 0;
break;
case 2:
startPoint = textEnd;
break;
}
range.moveStart("character", startPoint);
range.collapse(true);
var flags = 0;
if (1 == findDir)
flags += 1;
if (findExact)
flags += 2;
if (findCaps)
flags += 4;
// ничего не делаем, если текст пустой
if (trim(textToFind).length == 0)
return null;
var found = range.findText(textToFind,findDir == 0 ? 1000000000 : -1000000000, flags);
if(subQuery) {
var checkRange = document.body.createTextRange();
var oRegExp = new RegExp(textToFind, "ig");
if (found) {
insertClass(range);
getSearchParams(range);
} else if (checkRange.text.search(oRegExp) > -1) {
var isConfirm = confirmRange(findDir, 'IE');
return isConfirm;
} else {
if(top.searchEnd)
subqueryRemove();
return notFoundMessage();
}
} else {
if (found) {
window.parent.isSmthFound = true;
try {
range.select();
} catch (e) {
return "internal error";
}
top.selEnd = getSelEndIE();
top.searchEnd = top.selEnd;
top.selStart = getSelStartIE();
top.searchStart = top.selStart;
} else
return notFoundMessage();
}
return null;
}
function setOuterHTML(ElementID, txt)
{
var someElement = document.getElementById(ElementID);
var rng = document.createRange();
rng.setStartBefore(someElement);
var docFrag = rng.createContextualFragment(txt);
someElement.parentNode.replaceChild(docFrag, someElement);
}
function findText(textToFind,findStart,findDir,findExact,findCaps, subQuery){
var textStart = new Object();
var textEnd = new Object();
var currPos;
var range = document.createRange();
range.selectNodeContents(document.body);
textStart.container = range.startContainer;
textStart.offset = range.startOffset;
textEnd.container = range.endContainer;
textEnd.offset = range.endOffset;
var sel = window.getSelection();
var prefix = "";
var wordBoundary = "";
if (findExact)
wordBoundary = "\\b";
if(subQuery){
var subQue = document.getElementById('subquery');
if(subQue){
currPos = new Object();
currPos.container = subQue;
currPos.offset = top.searchEnd;
}
} else {
if (sel.rangeCount == 0)
currPos = textStart;
else {
currPos = new Object();
var rng = sel.getRangeAt(0);
currPos.container = rng.startContainer;
currPos.offset = rng.startOffset;
var r = new RegExp("^" + textToFind + "$", findCaps ? "" : "i");
var test = r.test(rng.cloneContents().textContent);
if (test && 0 == findStart && 0 == findDir)
prefix = ".";
}
}
var startPoint;
switch (findStart) {
case 0:
startPoint = currPos;
break;
case 1:
startPoint = textStart;
break;
case 2:
startPoint = textEnd;
break;
}
if (0 == findDir)
var setSE = "setStart";
else
var setSE = "setEnd";
if(!subQuery)
range[setSE](startPoint.container, startPoint.offset);
else {
if(0 == findStart) {
if(subQue) {
if(0 == findDir)
range.setStartAfter(document.getElementById("subquery"));
else
range.setEndBefore(document.getElementById("subquery"));
} else {
if(startPoint)
range[setSE](startPoint.container, startPoint.offset);
}
} else {
if(startPoint)
range[setSE](startPoint.container, startPoint.offset);
}
}
var searchReg = prefix + wordBoundary + textToFind + wordBoundary;
if (findCaps)
var caps = "";
else
var caps = "i";
var re = new RegExp(searchReg, caps);
if (0 == findDir)
var offset = range.cloneContents().textContent.search(re);
else
var offset = findLastOccurence(range.cloneContents().textContent, re);
if(!subQuery) {
if (offset < 0)
return notFoundMessage();
window.parent.isSmthFound = true;
offset += getStartBoundary(range) + prefix.length;
setDocSelection(offset, offset + textToFind.length, false);
return null;
} else {
var checkRange = document.createRange();
checkRange.selectNodeContents(document.body);
var oRegExp = new RegExp(textToFind, "ig");
if (offset > -1) {
window.parent.isSmthFound = true;
offset += getStartBoundary(range) + prefix.length;
if(top.searchEnd) {
subFont = document.getElementById("subquery");
if(subFont)
setOuterHTML("subquery", subFont.innerHTML);
}
setDocSelection(offset, offset + textToFind.length, subQuery);
} else if (checkRange.toString().search(oRegExp) > -1) {
var isConfirm = confirmRange(findDir, 'FF');
return isConfirm;
} else {
if(top.searchEnd) {
subFont = document.getElementById("subquery");
setOuterHTML("subquery", subFont.innerHTML);
}
return notFoundMessage();
}
return null;
}
}
function notFoundMessage(){
return (window.parent.isSmthFound ? "Достигнут конец поиска" : "Ничего не найдено");
}
function findLastOccurence(str,reg){
var offset = str.search(reg);
if (offset == -1) return -1;
var temp = findLastOccurence(str.substring(offset+1),reg);
if (temp == -1) return offset;
return temp+offset+1;
}
function closeOtherPopups(winname){
return;
if (null != top.closeOthers)
top.closeOthers();
if (null == window.parent)
return null;
if (null == window.parent.getContents)
return;
var doc = window.parent.getContents();
if (null == doc)
return;
if ( !doc.framePath )
return;
top.closeOthers = function () {
if (null == winname)
return;
if (null != doc && null != doc.framePath) {
if (null == doc.framePath(winname))
return;
}
if ("IFRAME" == doc.framePath(winname).tagName){
if (null != doc.hideBlock)
doc.hideBlock(winname);
} else {
if (null != doc.killBlock)
doc.killBlock(winname);
}
}
}
function setExpandedPanel(flag){
var today = new Date();
today.setDate(today.getDate() + 7);
document.cookie="expandedPanel" + "=" + (flag ? "" : "no; expires=" + today.toGMTString());
}
function postFormTo(form,win){
var formCopy = win.document.createElement('FORM');
formCopy.method = form.method;
formCopy.action = form.action;
formCopy.style.display = 'none';
formCopy.acceptCharset = "windows-1251";
var inputs = framePath('*INPUT',form);
for (var i=0; i<inputs.length; i++){
var input = inputs[i];
var inputCopy = win.document.createElement('INPUT');
inputCopy.type = input.type;
inputCopy.name = input.name;
inputCopy.value = input.value;
formCopy.appendChild(inputCopy);
}
inputs = framePath('*TEXTAREA',form);
for (var i=0; i<inputs.length; i++){
var input = inputs[i];
var inputCopy = win.document.createElement('TEXTAREA');
inputCopy.name = input.name;
inputCopy.value = input.value;
formCopy.appendChild(inputCopy);
}
inputs = framePath('*SELECT',form);
for (var i=0; i<inputs.length; i++){
var input = inputs[i];
if (input.className == "dontcopy") continue;
var inputCopy = win.document.createElement('INPUT');
inputCopy.type = 'hidden';
inputCopy.name = input.name;
inputCopy.value = input.getElementsByTagName('OPTION')[input.selectedIndex].value;
formCopy.appendChild(inputCopy);
}
win.document.body.appendChild(formCopy);
formCopy.submit();
win.focus();
}
function getEventTarget(event){
event = event || window.event;
return event.target || event.srcElement;
}
function hideCreationElems(){
var doc = framePath('/contents/');
killBlock("/contents/bookmark_props");
killBlock("/contents/creation_header",doc);
doc.getElementById("bookmarks_list").style.height = 295;
softkillBlock("bookmark_add_bt",doc);
}
function showCreationElems(){
var doc = framePath('/contents/');
showBlock("bookmark_props",doc);
showBlock("creation_header",doc);
doc.getElementById("bookmarks_list").style.height = 160;
softshowBlock("bookmark_add_bt",doc);
}
function editionsListChange(anotherSelect, thisSelect){
var selct = framePath(thisSelect);
var index = selct.options.selectedIndex;
var another = framePath(anotherSelect);
if (index == 0){
another.style.display = 'none';
return;
}
var coords = selct.options[index].value.split('/');
var editionObject = window.editions[coords[0]];
var vols = editionObject.Years[coords[1]].Vols;
if (0 == vols.length) {
//сформировать список доступных каталогов
PassAjaxResponseToFunction(top.pPath + 'geteditionsinfo' +
'&oid=' + editionObject.OID +
'&year=' + editionObject.Years[coords[1]].Year +
'&editionindex=' + coords[0] +
'&yearindex=' + coords[1] +
'&anotherselect=' + anotherSelect +
'&thisselect=' + thisSelect,
'prepareAjaxResultForEditionSelection');
} else {
viewEditionsCatalogue(anotherSelect, thisSelect);
}
}
function prepareAjaxResultForEditionSelection(status) {
var parameters = status.split(';');
//1 - заполнить window.editions
//формат name,oid,date/name,oid,date
if (5 > parameters.length) return;
var catalogues = parameters[4].split('/');
var vols = new Array();
for (var i = 0; i < catalogues.length; ++i) {
var o = new Object();
var catalog = catalogues[i].split(',');
if ('' == catalog) break;
o.Name = catalog[0];
o.OID = catalog[1];
o.Date = catalog[2];
vols[vols.length] = o;
}
window.editions[parameters[2]].Years[parameters[3]].Vols = vols;
//2 - вызвать функцию формирования списка
viewEditionsCatalogue(parameters[0], parameters[1]);
}
function viewEditionsCatalogue(anotherSelect, thisSelect) {
var another = framePath('' + anotherSelect);
var selct = framePath('' + thisSelect);
var index = selct.options.selectedIndex;
var coords = selct.options[index].value.split('/');
var editionObject = window.editions[coords[0]];
var vols = editionObject.Years[coords[1]].Vols;
while(another.childNodes.length > 0) another.removeChild(another.childNodes[0]);
var newVol = document.createElement('OPTION');
newVol.appendChild(document.createTextNode('КАТАЛОГ'));
newVol.value = "";
another.appendChild(newVol);
for (var i = 0; i < vols.length; i++){
newVol = document.createElement('OPTION');
newVol.appendChild(document.createTextNode('Сборник ' + vols[i].Name + ' от ' + vols[i].Date));
newVol.value = coords.join('/') + '/' + i.toString();
another.appendChild(newVol);
}
another.style.display = 'inline';
}
function editionsGoTo(anotherSelect, thisSelect, additionalParams){
var another = framePath(thisSelect);
var anotherIndex = another.options.selectedIndex;
if (anotherIndex == 0){
window.location.href = top.pPath + "divisions&edition=" + window.editions[another.options[0].value].OID + additionalParams;
return;
}
var selct = framePath(anotherSelect);
var index = selct.options.selectedIndex;
if (index == 0){
var coords = another.options[anotherIndex].value.split('/');
window.location.href = top.pPath + "divisions&edition=" + window.editions[coords[0]].OID + "&year=" +
another.options[anotherIndex].text + additionalParams;
return;
}
var coords = selct.options[index].value.split('/');
window.location.href = top.pPath + "divisions&edition=" + window.editions[coords[0]].OID + "&volume=" +
window.editions[coords[0]].Years[coords[1]].Vols[coords[2]].OID + additionalParams;
return false;
}
function printSelected(prefix){
// var win = framePath('list').contentWindow;
/* var postfix = '';
var sel = win.document.selection;
alert(null == win.document.selection);
alert(false == win.document.selection);
alert(!win.document.selection);
var frag = (null != && false != sel && "None" != sel.type);
alert(frag);
if (frag)*/
/*var postfix = 'selStart=' + win.getSelStart() + '&selEnd=' + win.getSelEnd();
window.open(prefix + postfix);*/
window.open(prefix);
}
function clearExcept(n,m){
if (navigator.appName.indexOf('Internet Explorer') >= 0) return clearExceptIE(n,m);
if (n == 0) n = 1;
setDocSelection(n,m);
var cont = window.getSelection().getRangeAt(0).extractContents();
var body = document.body;
while(body.childNodes.length > 0) body.removeChild(body.childNodes[0]);
body.appendChild(cont);
}
function clearExceptIE(n,m){
setDocSelection(n,m);
document.body.innerHTML = document.selection.createRange().htmlText;
}
function cookiePrefs(){
var prefix = "kpref=";
var sideValues = ["bpas","theme-contents","font-size-contents","theme-document","font-size-document","authorized","auth_ok","workspaceState"];
var sessionValues = ["authorized", "auth_ok"];
this.save = function(object){
var copy = {};
for (var i = 0; i < sideValues.length; i++) {
sideValue = sideValues[i];
copy[sideValue] = this[sideValue];
this[sideValue] = undefined;
}
if (!object) object = this;
var date = new Date();
date.setDate(date.getDate() + 7);
//jack_smith в 6ке нет кукей
var cookie = new Array(new String());
cookie[0] = prefix + escape(object.toJSONString()) + "; expires=" + date.toGMTString();
for (var i = 0; i < sideValues.length; i++) {
sideValue = sideValues[i];
if (copy[sideValue] != null) {
cookie[cookie.length] = sideValue + "=" + copy[sideValue] + (sessionValues.indexOf(sideValue) < 0 ? "; expires=" + date.toGMTString() : "");
} else {
cookie[cookie.length] = sideValue + "=; expires=" + (sessionValues.indexOf(sideValue) < 0 ? "; expires=" + date.toGMTString() : "");
}
}
for (var i = 0; i < sideValues.length; i++) {
sideValue = sideValues[i];
this[sideValue] = copy[sideValue];
}
//теперь сохраним cookie
if (null != window.biscuit) {
window.biscuitArray = cookie;
window.biscuit = cookie.join('; ');
framePath('temp_iframe/.').location.href = pPath() + "persistent=&savecookie=" + escape(window.biscuit);
} else {
var len = 0;
for (var i=0; i < cookie.length; ++i)
len += cookie[i].length;
if(len > 3900){
alert("Слишком много сохраненных запросов. Новый запрос не создан.");
return;
}
for (var i=0; i<cookie.length; ++i) {
document.cookie = cookie[i];
}
}
}
this.saveValues = function(form,elems,frameName){
var copyToSave = {};
for (var i = 0; i < elems.length; i++) copyToSave[elems[i]] = this[elems[i]];
exportJSON(form,copyToSave,frameName);
}
this.loadValues = function(hash){
for (var i in hash){
var hi = hash[i];
if (this[i] instanceof Array) {
this[i] = this[i].concat(hi);
} else {
this[i] = hi;
}
}
}
cookie = getCookies();
for (var i = 0; i < sideValues.length; i++) {
sideValue = sideValues[i];
var index = ("; " + cookie).indexOf("; " + sideValue);
if (index >= 0){
var endIndex = (cookie + ";").indexOf(";", index);
if (endIndex < 0) endIndex = cookie.length;
this[sideValue] = cookie.substring(index + sideValue.length + 1, endIndex);
}
}
var index = cookie.indexOf(prefix);
if (index < 0) {
this.save(new Object());
} else {
var endIndex = cookie.indexOf(";", index + 6);
if (endIndex < 0) endIndex = cookie.length;
var data = (unescape(cookie.substring(index + 6, endIndex))).parseJSON();
for (var i in data) if (this[i] == null) this[i] = data[i];
}
this.clear = function(elems){
for (var i = 0; i < elems.length; i++) this[elems[i]] = undefined;
this.save();
}
this.push = function(key, value) {
var index=-1;
if (null!=this[key]) {
while (null!=this[key][++index]);
}
this[key][index]=value;
}
this.splice = function (key, from, count) {
if (null!=this[key]) {
var current=from-1;
while (null!=this[key][++current]) {
var shiftedElement = this[key][current+count];
if (null!=shiftedElement) {
this[key][current] = shiftedElement;
} else {
delete this[key][current];
}
}
}
}
}
function relogin() {
var c = getCookies();
if (c.indexOf('auth_ok=1') != -1) {
alert("Вы уже авторизовались на данном рабочем месте.");
} else {
saveCookieVar('authorized','1');
saveCookieVar('auth_ok',null);
}
window.location.reload();
}
function exportJSON(form,obj,frameName){
frameName = frameName || "/topmenu/temp_iframe"
if (framePath("save_settings") == null){
appendJS(document.body,{'tagName':"form",
'id':"save_settings",
'style':{'visibility':"hidden",'position':"absolute",'top':"-500px",'left':"-500px"},
'method':"POST",
'action':top.pPath() + form,
'target':"save_settings_iframe",
'acceptCharset':"windows-1251",
'childNodes':[{'tagName':"input",'type':"hidden",'name':form,'value':""},
{'tagName':"textarea",'name':"tosave",'value':obj.toJSONString()}]});
}
ifr = framePath(frameName);
if (ifr == null) ifr = framePath("temp_iframe");
postFormTo(framePath("save_settings"),ifr.contentWindow);
}
function authorized(){
return (new cookiePrefs()).auth_ok == 1;
}
function makeURLParts(arr,pref,obj){
for (var i in obj){
var val = obj[i];
switch (typeof(val)){
case 'object':
if (val instanceof Array) break;
makeURLParts(arr,pref + i + '_',val);
break;
case 'function':
break;
default:
arr.push(pref + i + '=' + escape(val));
}
}
return arr;
}
function addToPersistentArray(arrName,element,callback){
if (!authorized()){
var prefs = new cookiePrefs();
if (null==prefs[arrName]) prefs[arrName] = [];
//prefs[arrName].push(element);
//jack_smith 19.10.07 просто другая схема ведения куков
prefs.push(arrName, element);
prefs.save();
return callback();
}
window.callback = callback;
framePath('temp_iframe/.').location.href = pPath() + "persistent=&save=" + arrName + "&" + makeURLParts([],'',element).join('&');
}
function removeFromPersistentArray(arrName,eltId,callback){
if (!authorized()){
var prefs = new cookiePrefs();
//prefs[arrName].splice(eltId,1);
//jack_smith новая схема работы
prefs.splice(arrName, eltId, 1);
prefs.save();
return callback();
}
window.callback = callback;
framePath('temp_iframe/.').location.href = pPath() + "persistent=&remove=" + arrName + "&nd=" + eltId;
}
function getPersistentArray(arrName, callback){
if ( !authorized() ) {
var prefs = new cookiePrefs();
if (null == prefs[arrName])
prefs[arrName] = new Array();
var result = callback(prefs[arrName]);
return result;
}
window.callback = callback;
framePath('temp_iframe/.').location.href = pPath() + "persistent=&get=" + arrName;
}
function clearPersistentArray(arrName,callback){
if (!authorized()){
var prefs = new cookiePrefs();
prefs[arrName] = [];
prefs.save();
return callback();
}
window.callback = callback;
framePath('temp_iframe/.').location.href = pPath() + "persistent=&clear=" + arrName;
}
function exportPersistentArray(arrName,form,frameName,callback){
getPersistentArray(arrName,function(arr){
var obj = {};
obj[arrName] = arr;
exportJSON(form,obj,frameName);
callback();
});
}
function changeCheckbox(id){
var cb = framePath(id);
cb.checked = !cb.checked;
}
function dateFieldSwitch(name){
var index = framePath(name + "type").options.selectedIndex;
var showTwo = index >= 3;
var divOne = framePath("filter_" + name + "_exact");
var divTwo = framePath("filter_" + name + "_period");
var divToShow = showTwo ? divTwo : divOne;
var divToHide = showTwo ? divOne : divTwo;
divToShow.style.display = 'inline';
divToHide.style.display = 'none';
var dateInput = framePath(name + "date");
var fromInput = framePath(name + "from");
var toInput = framePath(name + "to");
var sourceInput = index == 1 ? toInput : fromInput;
if (sourceInput.value == '') sourceInput = index == 1 ? fromInput : toInput;
if (sourceInput.value == '') sourceInput = dateInput;
var targetInput = showTwo ? top.dateSwitchIndex == 1 ? toInput : fromInput : dateInput;
targetInput.value = sourceInput.value;
var inputs = framePath('*INPUT',divToHide);
for (var i = 0; i < inputs.length; i++){
inputs[i].value = '';
}
top.dateSwitchIndex = index;
if (index > 3){
var readonly = "readOnly";
framePath(name + "from").readOnly = true;
framePath(name + "to").readOnly = true;
framePath("img_" + name + "_from").style.display = 'none';
framePath("img_" + name + "_to").style.display = 'none';
var today = new Date();
var month = today.getMonth();
var year = today.getYear();
var granularity = [12,6,3,1][index-4];
month = granularity * Math.floor(month / granularity);
var monthCountDay = new Array( 31, (((year%4) == 0 ) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30 ,31 );
framePath(name + "from").value = "1." + (month + 1) + "." + today.getFullYear();
framePath(name + "to").value = monthCountDay[month + granularity - 1] + "." + (month + granularity) + "." + today.getFullYear();
} else {
framePath(name + "from").readOnly = false;
framePath(name + "to").readOnly = false;
framePath("img_" + name + "_from").style.display = 'inline';
framePath("img_" + name + "_to").style.display = 'inline';
}
}
function dateField(name){
this.name = name;
this.clearField = function(){
framePath(this.name + 'type').options.selectedIndex = 0;
dateFieldSwitch(this.name);
framePath(this.name + 'from').value = "";
framePath(this.name + 'to').value = "";
framePath(this.name + 'date').value = "";
};
this.prepareSubmit = function(){
if (framePath(this.name + 'type').value == 4){
var f = framePath(this.name + 'from');
f.value = partialDate(f.value).lastStep();
f = framePath(this.name + 'to');
f.value = partialDate(f.value).lastStep();
} else {
var f = framePath(this.name + 'date');
f.value = partialDate(f.value).lastStep();
}
}
}
function stringField(name){
this.name = name;
this.clearField = function(){
framePath(this.name).value = "";
}
}
function stringExField(name){
this.name = name;
this.clearField = function(){
framePath(this.name).value = "";
}
}
function stringNumField(name){
this.name = name;
this.clearField = function(){
framePath(this.name).value = "";
}
}
function stringYearField(name){
this.name = name;
this.clearField = function(){
framePath(this.name).options.selectedIndex = framePath(this.name).length - 1;
}
}
function numberField(name){
this.name = name;
this.clearField = function(){
framePath(this.name).value = "";
framePath(this.name + 'type').options.selectedIndex = 1;
}
}
function classifierField(name){
this.name = name;
this.clearField = function(){
framePath(this.name).value = "";
framePath(this.name + 'type').value = "";
framePath(this.name + 'label').value = "";
}
/* this.disable = function(){
framePath(this.name + 'label').disabled = true;
}*/
}
function classifierFieldEx(name){
this.name = name;
this.clearField = function(){
framePath(this.name).value = "";
framePath(this.name + 'type').value = "";
framePath(this.name + 'label').value = "";
}
}
function certSNField(name){
this.name = name;
this.clearField = function(){
framePath(this.name).value = "";
//framePath(this.name + 'type').options.selectedIndex = 1;
}
/* this.disable = function(){
framePath(this.name + 'label').disabled = true;
}*/
}
function textPresenseField(name){
this.name = name;
this.clearField = function(){
framePath(this.name).options.selectedIndex = 0;
}
}
function sortField(name){
this.name = name;
this.clearField = function(){
framePath(this.name).options.selectedIndex = 1;
}
}
function intellectField(name){
this.name = name;
this.clearField = function(){
}
}
function appendField(form,initializer,name){
form[name] = new initializer(name);
}
function sortMultiple(){
/*
viewBlock('/contents/list/window_sort');
sortFields = top.pvalue[top.pname.indexOf('sort')].split('/');
var table = framePath('/contents/list/window_sort/sorting');
var win = framePath('/contents/list/window_sort').contentWindow;
while(table.childNodes.length > 0) table.removeChild(table.childNodes[0]);
for (var i = 0; i < sortFields.length; i++){
win.appendRow(table,sortFields[i]);
*/
size = {'width':540,'height':400};
win = window.open("?window_sort",
"window_sort",
"width=" + size.width + ",height=" + size.height + ",toolbar=no,resizable=yes");
win.openWin = top;
// win.init();
//Перенести в onLoad
}
function appendOption(select,selected,title,value){
var option = document.createElement('option');
select.appendChild(option);
option.appendChild(document.createTextNode(title));
option.value = value;
if (value == selected) option.selected = "selected";
}
function appendRow(table,field){
var options = [
{'title':"По наименованию",'value':1},
{'title':"По убыванию даты",'value':7},
{'title':"По возрастанию даты",'value':-7},
{'title':"По номеру документа",'value':8},
{'title':"По виду документа",'value':3}
];
if ( !openWin )
openWin = top;
if (openWin.pname.indexOf('intelsearch') >= 0)
options.splice(0,0,{'title':"По весу",'value':-1});
appendJS(table,{
'tagName':"tr",
'childNodes':[{
'tagName':"td",
'childNodes':"сортировать:"
},{
'tagName':"td",
'style':{'padding':"0 5px"},
'childNodes':{
'tagName':"select",
'childNodes':options.map(function(option){
var result = {
'tagName':"option",
'value':option.value,
'childNodes':option.title
}
if (option.value == field) result.selected = 'selected';
return result;
})
}
},{
'tagName':"td",
'childNodes':{
'tagName':"img",
'src':openWin.pPath() + "pic_sort_delete.gif",
'className':"pic",
'alt':"Удалить условие",
'title':"Удалить условие",
'onclick':function(event){removeRow(parentNodeTag(getEventTarget(event),'TR'));}
}
}]
});
}
function removeRow(row){
parentNodeTag(row,'TABLE').deleteRow(row.rowIndex);
}
function postSortConditions(){
// var selects = framePath('/contents/list/window_sort/sorting/*SELECT');
if ( !openWin )
openWin = top;
var selects = framePath('/sorting/*SELECT');
var values = [];
for (var i = 0; i < selects.length; i++) values[i] = selects[i].value;
openWin.framePath('/topmenu').contentWindow.changeSortOrder(openWin.pvalue[openWin.pname.indexOf('sort')],values.join('/'));
window.close();
}
function compareRed(nd){
//var checked = toArray(framePath('c_editions/*INPUT')).filter(function(inp){return inp.checked;}).map(function(inp){return inp.value;});
var red1 = document.getElementById('red1').value;
var red2 = document.getElementById('red2').value;
if (red1 == red2) {
alert("Для сравнения нужны две различные редакции");
return;
}
window.open(top.pPath() + "compare_vert&nd=" + nd + "&rdkleft=" + red1 + "&rdkright=" + red2);
}
function fixDocDimensions(className){
var coeff = 1;
switch(className){
case 't_small':
coeff = 0.67;
break;
case 't_normal':
coeff = 0.84;
break;
case 't_standart':
coeff = 1;
break;
case 't_large':
coeff = 1.17;
break;
case 't_huge':
coeff = 1.34;
break;
case 't_monster':
coeff = 1.67;
break;
}
//fixDimensions(coeff);
document.body.style.zoom = coeff;
}
function getHTMLSelectionForHyperlink(){
var textrange = document.selection.createRange();
if (is_space(textrange.text.substring(0, 1))){
for (;;){
if (textrange.moveStart('character', 1) == 0)
break;
if (!is_space(textrange.text.substring(0, 1)))
break;
}
}else{
for (;;){
var tr = textrange.duplicate();
if (tr.moveStart('character', -1) == 0)
break;
if (is_space(tr.text.substring(0, 1)))
break;
var htmlText = textrange.htmlText;
htmlText = htmlText.replace(/[\r\n]/g, '');
var trText = tr.htmlText.replace(/[\r\r]/g, '');
if (trText.indexOf(htmlText.substring(0, 3)) > 1)
break;
textrange = tr;
}
}
if (is_space(textrange.text.substring(textrange.text.length - 1))){
for (;;){
if (textrange.moveEnd('character', -1) == 0)
break;
if (!is_space(textrange.text.substring(textrange.text.length - 1)))
break;
}
}else{
for (;;){
var tr = textrange.duplicate();
if (tr.moveEnd('character', 1) == 0)
break;
if (is_space(tr.text.substring(tr.text.length - 1)))
break;
var htmlText = textrange.htmlText;
htmlText = htmlText.replace(/[\r\n]/g, '').substring(htmlText.length - 3);
var trText = tr.htmlText.replace(/[\r\r]/g, '');
if (trText.lastIndexOf(htmlText) < tr.htmlText.length - htmlText.length - 1)
break;
textrange = tr;
}
}
var name = textrange.text;
var arr = name.split(/[ \t\n\r\.\,:;\'\"\[\]\(\)]+(-+[ \t\n\r\.\,:;\'\"\[\]\(\)]+)?/);
words = arr.length;
sel = textrange.duplicate();
textrange.collapse();
textrange.moveEnd("word", 32);
var fav_param = new Object();
fav_param.marker = textrange.text;
if (words > 0){
name = name.replace(/\r?\n/g, ' ').replace(/ +/g, ' ');
if (name.length > 256){
name = name.substring(0, 253);
var pos = name.lastIndexOf(' ');
if (pos > 50)
name = name.substring(0, pos);
name += '...';
}
fav_param.name = name;
}
return fav_param;
}
function is_space(s){
return (s == ' ') || (s == '\r') || (s == '\n') || (s == '\t');
}
function checkDataKey(event){
event = event || window.event;
var c = event.keyCode;
return ((c >= 48) && (c <= 57)) || ([190,8,9,13].indexOf(c) >= 0);
}
function saveWorkspaceState(listOnly){
var value = 0;
if (true == listOnly)
value = 1;
saveCookieVar('workspaceState', value);
}
function fixnull(value,obj){
return obj == null ? value : obj;
}
function showWspaceState(){
framePath(fixnull("workspace_default",["workspace_default","workspace_list"][fixnull("0",(new cookiePrefs()).workspaceState)])).checked = true;
}
function goToContext(n){
var sp = framePath('sp_' + n);
if (sp == null) return;
sp.scrollIntoView();
}
function killBlockInh(bid) {
document.getElementById(bid).style.display='none';
}
function showBlockInh(bid) {
document.getElementById(bid).style.display='block';
}
function setDateBlock() {
elem = document.getElementById('date_type');
div1 = document.getElementById('search_date_period');
div2 = document.getElementById('search_date_exact');
if(elem.options[elem.selectedIndex].value == 'period')
{
div1.style.display = 'inline';
div2.style.display = 'none';
}
else
{
div1.style.display = 'none';
div2.style.display = 'inline';
}
}
function createImplicitLink(anchorEl, docOid, fragmentId, text) {
// anchorEl может быть идентификатором
anchorEl = el(anchorEl);
// Спросим ссылки
var target = window.external.setImplicitRefsForFragment(docOid, fragmentId, text);
if(target) {
// Обновим вид нашей ссылки.
if(anchorEl) {
anchorEl.className = 'il_set';
if(target.oids) {
anchorEl.title = 'После сохранения это будет ссылка на ' +
target.oids.length + ' документов';
}
}
// Find next suspected IL.
var spans = document.getElementsByTagName('SPAN'), nextUnsetFragId = -1;
for(var i in spans) {
var span = spans[i];
if('il_unset' == span.className && span.id) {
var spanFragId = span.id.replace('il_id_', '');
if(spanFragId != span.id) {
spanFragId = parseInt(spanFragId, 10);
if(spanFragId > fragmentId) {
if(-1 == nextUnsetFragId ||
spanFragId < nextUnsetFragId) {
nextUnsetFragId = spanFragId;
}
}
}
}
}
// Jump to it.
if(nextUnsetFragId != -1) {
// alert(nextUnsetFragId);
location.href = '#il_id_' + nextUnsetFragId;
}
}
}
var enableBtn = (function() {
var originals = [], nop = function() {};
var getRec = function(btn, create) {
for(var i = 0; i < originals.length; i++) {
var rec = originals[i];
if(btn == rec.btn) {
return rec;
}
}
if(create) {
var rec = {
btn: btn,
className: btn.className,
onclick: btn.onclick };
originals.push(rec);
return rec;
}
};
return function(btn, enable) {
if(enable === undefined)
enable = true;
btn = el(btn);
var rec = getRec(btn, !enable);
if(enable) {
if(rec) {
btn.className = rec.className;
btn.onclick = rec.onclick;
}
} else {
btn.className += ' disabled';
btn.onclick = nop;
}
btn.disabled = !enable;
};
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment