//Задаем целевой фрейм
if (parent.name!='doc') {window.name='doc';}
//Модуль, предназначенный для правильного расположения элементов на экране
//при изменении размера экрана. Возможно 2 случая:
//1 элементы не изменяют размер, только отступ слева меняется
//2 размеры и отступы меняются
//1) нужно исключить размре элемента из большего изменяющегося элемента
// и проводить стандартные операции
//2) нужно умножать на коэффициент как размер, так и отступ
//   еще необходимо учитывать сдвиг вниз при сжатии элементов с текстом
//Все страницы идут с разрешением не меньше 800, поэтому последний размер
// минимальный.
//Определяем необходимые переменные
var wc;
var ws;
var invalid;
var tmp_text=new Array();
var wiwin;

//по окончании загрузки элементы перераспределяются
// в зависимости от заданных параметров
window.onload=res;
window.onresize=res;
document.documentElement.onkeypress=check_open_wi;

//функция изменения отступов и размеров элементов
function res() {
	//определяем контенер элементов и внешний для него соответственно
 	wc=document.getElementById("canvas");
	ws=document.getElementById("system_area");
  ////проверяем, существование элементов + изменяемая страница + разрешено изменять
	if (wc && ws && wc.align=='justify' && !parent.isRes) {
		//определяем текущий размер экрана
		var csize=wc.offsetWidth;
    //временно изменяем размер контенера для определения его необходимого размера
    	wc.style.width='100%';
    ///определяем необходимый размер экрана
		var nsize=ws.offsetWidth;
		//возвращаем размер
			wc.style.width=csize;
		///задаем минимальный размер
		var msize=800;
		//С учетом минимального новый размер будет
		var wsize=(nsize<msize?msize:nsize);
		///
    ///
    ///
		//Цикл перебора всех элементов, содержащихся в контенере
		elems=wc.childNodes;//(массив)
		//массив для элементов, сортированных по уровням (zIndex)
		var elems_lvl=new Array();
		//массив для диапазонов размеров элементов, сортированных по уровням (zIndex)
		var wsize_lvl=new Array();
		///
  	for (var i=0;i<elems.length;i++) {
			el=elems[i];//текущий элемент
			//Исключение:
			//1) основной элемент спрятан в элемент A без размеров
			if (el.tagName=='A' && el.firstChild && !el.style.left) {
				//переходим к основному
				//для этого проходим цикл по внутренним элементам
				for (var j=0;j<el.childNodes.length;j++) {
        	if (el.childNodes[j].nodeType==1) {
        		el=el.childNodes[j];
        		break;
        	}
				}
			}
			//Рассматриваем лишь объекты хтмл, они имеют тип 1
			if (el.nodeType==1) {
				//находим уровень текущего элемента
				var lvl=(el.style.zIndex?el.style.zIndex:0);
				//проверяем, найдены ли ранее для данного уровня элементы
				if (!elems_lvl[lvl]) {
					//если нет, то создаем подмассив
					elems_lvl[lvl]=new Array();
					wsize_lvl[lvl]=new Array(10000,0);
				}
				//добавляем текущий элемент в подмассив на номер его длины
				elems_lvl[lvl][elems_lvl[lvl].length]=el;
				//Устанавливаем диапазон размеров на данном уровне
	      if (el.id && el.id.substr(0,1)=='a') {
					wsize_lvl[lvl][0]=(wsize_lvl[lvl][0]<el.offsetLeft?wsize_lvl[lvl][0]:el.offsetLeft);
					wsize_lvl[lvl][1]=(wsize_lvl[lvl][1]>el.offsetLeft+el.offsetWidth?wsize_lvl[lvl][1]:el.offsetLeft+el.offsetWidth);
				}
				///
			}
		}
		///
		///
		///цикл работает по отсортированному по уровням массиву элементов
		///элементам присваиваются новые размеры
  	for (var i=0;i<elems_lvl.length;i++) {
  		for(var j=0;elems_lvl[i] && j<elems_lvl[i].length;j++) {
  			el=elems_lvl[i][j];
  			ls=wsize_lvl[i][0];
  			rs=wsize_lvl[i][1];
  			////
  			var tmp=el.offsetHeight;
        el.style.height='0';
  			var cheight=el.offsetHeight;
  			var nheight=0;
  			el.style.height=tmp;
				///
  			//Проверяем, есть ли на данном уровне изменяемые элементы
  			//и валидность текущего ида
  			if (rs-ls>0 && el.id) {
        	switch (el.id.substr(0,1)) {
	        	case "b":
            	//Отберем элементы, попадающие в диапазон
	            if (el.offsetLeft>=ls) {
	              if (el.offsetLeft+el.offsetWidth<=rs) {
	                //В этом случае необходимо изменить отступ
	                //исключив из размеров диапазона размер элемента
	                ////
	                //Возможны исключения, когда размер элемента на весь диапазон,
	                //тогда не известно к какому типу привязки принадлежит элемент.
	                // Условимся считать такой элемент центральным
	                ////проведем проверку
	                if ((rs-ls-el.offsetWidth)=='0') {
	                  //отступ слева равен половине изменения диапазона
	                  el.style.left=Math.round((wsize-csize)/2)+ls;
	                } else {
	                  //Рассчитаем коэффициент
	                  var k=(rs-ls-csize+wsize-el.offsetWidth)/(rs-ls-el.offsetWidth);
	                  //Изменяем отступ и округляем до целого
	                  el.style.left=Math.round((el.offsetLeft-ls)*k)+ls;
	                  ///
	                }
	              } else {
	                //Отберем элементы, не попадающие в диапазон и находятся справа
	                el.style.left=el.offsetLeft+wsize-csize;
	              }
	            }
	            break;
        		case "a":
	            //В этом случае необходимо изменить размер и отступ
	            //Рассчитаем коэффициент
	            var k=(rs-ls-csize+wsize)/(rs-ls);
	            //Изменяем отступ и округляем до целого
	            el.style.left=Math.round((el.offsetLeft-ls)*k)+ls;
	            //Изменяем длину и округляем до целого
	            el.style.width=Math.round(el.offsetWidth*k);
	            //Фиксируем новую высоту
	            el.style.height='0';
	            nheight=el.offsetHeight;
	            el.style.height=tmp;
	            ///
	            break;
	        }
        }
        //передвигаем элементы текущего и более низких уровней в случае,
        //если один из элементов изменяется по вертикали
        if (cheight!=nheight && nheight*cheight!=0 && el!=invalid) {
        	//проходим вновь все элементы до текущего уровня вкл.
          for (var k=0;k<=i;k++) {
            for (var l=0;elems_lvl[k] && l<elems_lvl[k].length;l++) {
              hel=elems_lvl[k][l];
              //Сам элемент не двигаем
              if (hel!=el) {
	              //проверяем, соотносится ли элемент с текущим элементом
	              if (hel.offsetTop+hel.offsetHeight>el.offsetTop) {
	                //Возможны 2 варианта
	                //1) элемент начинается до текущего и заканчивается после начала текущего элемента
	                //2) элемент начинается после начала текущего элемента
	                if (hel.offsetTop<el.offsetTop+15) {
	                  //нужно растягивать
	                  nh=hel.offsetHeight+nheight-cheight;
	                  hel.style.height=nh>0?nh:0;
	                } else {
	                  //нужно отодвигать
	                  hel.style.top=hel.offsetTop+nheight-cheight;
	                }
	              }
              }
            }
          }
        el.style.height=nheight;
        }
			}
  	}
  	//задаем контенеру новый размер
	  wc.style.width=wsize;
  }

	//активируем дроп&давн меню
	dxd_load();
	//закрываем все дроп&давн меню
	dxd_close();

  //показываем документ
	document.body.style.visibility='visible';
	if (document.getElementById("a260")) {a260.load_banner();}

}

function events(eid,param,val) {
	el=checkid(eid);
	if (el) {
	  switch (param) {
	    case "0":el.style.color=val;break;
	    case "1":el.style.backgroundColor=val;break;
	    case "2":el.style.backgroundImage="url("+val+")";break;
	    case "3":el.style.textDecoration=val;break;
	    case "4":el.src=val;break;
	  }
	}
}

function checkid(eid) {
	As=new Array('a','b');
	var tmp=eid.toString();
	var B=(isNaN(tmp.substr(0,1))?tmp.substr(1):tmp);
	var rez=(document.getElementById(B) || document.getElementById(As[0]+B) || document.getElementById(As[1]+B));
	return rez;
}

function check_open_wi() {
	if (event.keyCode==96 && !parent.isRes) {		dxd_open();
		wiwin=window.open("auth.php?mode=1","wi_win","resizable=yes,status=yes,width=200,height=420,left=200,top=100");
	}
}

var dxd_var=true;

function dxd_load() {
	par=document.getElementById('a2099');
	if (par) {		els=par.childNodes;
		len=par.childNodes.length;
		for(var i=1;i<len;i++) {
			child=els[i];
			if (child.tagName=='TABLE' && child.id && child.id.indexOf('table_second')>-1) {
				if (child.lastChild.tagName=='TBODY' && child.lastChild.childNodes.length==2 && child.lastChild.firstChild.tagName=='TR' && child.lastChild.lastChild.tagName=='TR')
				{
					tr1=child.lastChild.firstChild;
					tr2=child.lastChild.lastChild;

					tr1.firstChild.id='dd'+i;
					tr1.firstChild.style.cursor='pointer';                    tr1.firstChild.onclick=function () {dxd(this.id+'c')}

   					tr2.firstChild.id='dd'+i+'c';
				}

				if (child.childNodes.length==2 && child.firstChild.tagName=='TR' && child.lastChild.tagName=='TR')
				{					tr1=child.firstChild;
					tr2=child.lastChild;

					tr1.firstChild.id='dd'+i;
					tr1.firstChild.style.cursor='pointer';
                    tr1.firstChild.onclick=function () {dxd(this.id+'c')}

   					tr2.firstChild.id='dd'+i+'c';
				}
			}
		}
	}
}

function dxd_open() {
	par=document.getElementById('a2099');
	if (par) {
		els=par.childNodes;
		len=par.childNodes.length;
		for(var i=1;i<len;i++) {
			id='dd'+i+'c';
			conten=document.getElementById(id);
			if (conten && tmp_text[id]) {
				conten.innerHTML=tmp_text[id];
				tmp_text[id]='';
				dxd_res();
			}
		}
	}

}

function dxd_close() {	par=document.getElementById('a2099');
	if (par && dxd_var) {
		els=par.childNodes;
		len=par.childNodes.length;
		for(var i=1;i<len;i++) {			id='dd'+i+'c';
			conten=document.getElementById(id);
			if (conten && !tmp_text[id]) {				tmp_text[id]=conten.innerHTML;
				conten.innerHTML='';
				dxd_res();			}		}	}
}


function dxd(id) {	if (!wiwin || wiwin.closed) {		document.getElementById('a2099').style.height=document.getElementById('a2099').offsetHeight;		if (tmp_text[id]) {
		    conten=document.getElementById(id);
			conten.innerHTML=tmp_text[id];
			tmp_text[id]='';
		} else {
		    conten=document.getElementById(id);
			tmp_text[id]=conten.innerHTML;
			conten.innerHTML='';
		}
		dxd_res();
	}}


function dxd_res() {
	par=document.getElementById('a2099');
	adv=document.getElementById('b4011');
	cs=document.getElementById('canvas');
	cheight=par.offsetHeight;
	par.style.height='auto';
	nheight=par.offsetHeight>adv.offsetHeight?par.offsetHeight:adv.offsetHeight;
	par.style.height=cheight;

	for (var i=0;i<cs.childNodes.length;i++)
	{		el=cs.childNodes[i];

		//Исключение:
		//1) основной элемент спрятан в элемент A без размеров
		if (el.tagName=='A' && el.firstChild && !el.style.left) {
			//переходим к основному
			//для этого проходим цикл по внутренним элементам
			for (var j=0;j<el.childNodes.length;j++) {
		    	if (el.childNodes[j].nodeType==1) {
		    		el=el.childNodes[j];
		    		break;
		    	}
			}
		}

		if (el!=par && el.nodeType==1 && el.style.zIndex<=par.style.zIndex)
		{			if (el.offsetTop+el.offsetHeight>par.offsetTop) {
				//Возможны 2 варианта
				//1) элемент начинается до текущего и заканчивается после начала текущего элемента
				//2) элемент начинается после начала текущего элемента
				if (el.offsetTop<par.offsetTop+15) {
					//нужно растягивать
					nh=el.offsetHeight+nheight-cheight;
					el.style.height=nh>0?nh:0;
				} else {
					//нужно отодвигать
					el.style.top=el.offsetTop+nheight-cheight;
				}
			}
		}	}

	par.style.height=nheight;

}