<!--

// Получить смещение видимой части страницы
// Получить смещение видимой части страницы по горизонтали
function jscGetScreenOffsetX()
{
 var objElm=document.documentElement;
 
 return(self.pageXOffset
     || (objElm && objElm.scrollLeft)
     || document.body.scrollLeft);
} // eof jscGetScreenOffsetX();


// Получить смещение видимой части страницы по вертикали
function jscGetScreenOffsetY()
{
 var objElm=document.documentElement;
 
 return(self.pageYOffset
     || (objElm && objElm.scrollTop)
     || document.body.scrollTop);
} // eof jscGetScreenOffsetY();


// Получить абсолютные координаты объекта
// Получить абсолютную координату объекта по горизонтали
function jscGetPageOffsetX(obj)
{
 return(obj.offsetParent
         ? obj.offsetLeft+jscGetPageOffsetX(obj.offsetParent)
         : obj.offsetLeft);   
} // eof jscGetPageOffsetX()


// Получить абсолютную координату объекта по вертикали
function jscGetPageOffsetY(obj)
{
 return(obj.offsetParent
         ? obj.offsetTop+jscGetPageOffsetY(obj.offsetParent)
         : obj.offsetTop);   
} // eof jscGetPageOffsetY()


// Задание координат объекта в рамках его системы позиционирования
// Задать координату левого верхнего угла объекта по горизонтали
function jscSetPosX(obj,x)
{
 obj.style.left=x+"px";
} // eof jscSetPosX()


// Задать координату левого верхнего угла объекта по вертикали
function jscSetPosY(obj,y)
{
 obj.style.top=y+"px";
} // eof jscSetPosY()


// Получить размеры клиентской части окна
// Получить ширину клиентской части окна
function jscGetWindowWidth()
{
 var objElm=document.documentElement;
 
 return (self.innerWidth
     ||  (objElm && objElm.clientWidth)
     ||  document.body.clientWidth);
} // eof jscGetWindowWidth()


// Получить высоту клиентской части окна
function jscGetWindowHeight()
{
 var objElm=document.documentElement;
 
 return (self.innerHeight
     ||  (objElm && objElm.clientHeight)
     ||  document.body.clientHeight);
} // eof jscGetWindowHeight()


// Получить ширину страницы
function jscGetPageWidth()
{
 if(window.innerWidth 
 && window.scrollMaxX)
   return(window.innerWidth + window.scrollMaxX);
  else
 if(document.body.scrollWidth>document.body.offsetWidth)
   return(document.body.scrollWidth);
  else
   return(document.body.offsetWidth + document.body.offsetLeft);
} // eof jscGetPageWidth()


// Получить ширину страницы
function jscGetPageHeight()
{
 if(window.innerHeight 
 && window.scrollMaxY)
   return(window.innerHeight + window.scrollMaxY);
  else
 if(document.body.scrollHeight>document.body.offsetHeight)
   return(document.body.scrollHeight);
  else
   return(document.body.offsetHeight + document.body.offsetTop);
 return document.body.scrollHeight;
} // eof jscGetPageHeight()


// Получить вычесленное значение стиля
function jscGetStyle(obj,name)
{
 if(obj.style[name])
  return(obj.style[name]);

 if(obj.currentStyle)
  return(obj.currentStyle[name]);

 if(document.defaultView
 && document.defaultView.getComputedStyle)
  {
   name=name.replace(/([A-Z])/g,"-$1");
   name=name.toLowerCase();

   var st=document.defaultView.getComputedStyle(obj,"");
   return(st && st.getPropertyValue(name));
  }

 return(null);
}


// Отмена всплытия события
function jscCancelBubbling(evt)
{
 evt=evt || window.event;
 evt.cancelBubble=true;

 if(evt.stopPropagation)
  evt.stopPropagation();
} // eof jscCancelBubbling()


// Отключение действий по умолчанию
function jscDisableDefault(evt)
{
 evt=evt || window.event;

 evt.returnValue=false;
 if(evt.preventDefault)
  evt.preventDefault();
}


// Задание прозрачности
function jscSetOpacity(obj,level)
{
 if(level<0)
  level=0;

 if(level>100)
  level=100;

 if(obj.filters)
   obj.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity="+level+")";
  else
   obj.style.opacity=level/100;                  
} // eof jscSetOpacity()


// Проявление объекта
function jscShowOpacityInt()
{
 jscShowOpacityInt.curOpacity+=jscShowOpacityInt.stepOpacity;

 jscSetOpacity(jscShowOpacityInt.curObj,jscShowOpacityInt.curOpacity);

 jscShowOpacityInt.curCall++;
 if(jscShowOpacityInt.curCall>=jscShowOpacityInt.maxCall)
  return;

 setTimeout(jscShowOpacityInt,jscShowOpacityInt.curTm);  
} // eof jscShowOpacityInt()


function jscShowOpacity(obj,op_max,show_time,show_cnt)
{
 if(!obj)
  return;

 if(show_time<=0)
  show_time=1000;

 if(show_cnt<1)
  show_cnt=1;

 var tm=show_time/show_cnt;
 if(tm<1)
  tm=1;

 jscShowOpacityInt.curObj=obj;
 jscShowOpacityInt.curOpacity=0;
 jscShowOpacityInt.stepOpacity=op_max/show_cnt;
 jscShowOpacityInt.curCall=0;
 jscShowOpacityInt.maxCall=show_cnt;
 jscShowOpacityInt.curTm=tm;

 jscSetOpacity(obj,0);
 obj.style.display="block";

 setTimeout(jscShowOpacityInt,tm);
} // eof jscShowOpacity()


// Проверка загрузки DOM-структуры и выполнение всех функций, ожидающих эту загрузку
function jscIsDomReady()
{
 if(jscWaitDomReady.is_done)
  return false;

 if(document
 && document.getElementById
 && document.getElementsByTagName
 && document.body
 && document.getElementById("id_jsc_end_label"))
  {
   if(jscWaitDomReady.id_timer)
    {
     clearInterval(jscWaitDomReady.id_timer);
     jscWaitDomReady.id_timer=0;
    }

   for(var i=0;
       i<jscWaitDomReady.arr_f.length;
       i++)
    jscWaitDomReady.arr_f[i]();

   jscWaitDomReady.arr_f=[];
   jscWaitDomReady.is_done=1;
  }
} // eof jscIsDomReady()


// Выполнение функций после загрузки DOM-структуры
function jscWaitDomReady(f)
{ 
 if(jscWaitDomReady.is_done)
  return f();

 if(jscWaitDomReady.id_timer)
  {
   jscWaitDomReady.arr_f[jscWaitDomReady.arr_f.length]=f;
  }
  else
  {
   jscWaitDomReady.arr_f=[];
   jscWaitDomReady.arr_f[0]=f;
   jscWaitDomReady.id_timer=setInterval(jscIsDomReady,15);
  }
} // eof jscWaitDomReady()


// Раскрытие/закрытие блока со сменой класса у управляющего элемента
function jscShowCtrl()
{
 var i,cnt,id_data,str_class="",str;
 var objData;
 var arrItems;

 if(!jscSetShowCtrl.arr_ctrl)
  return;

 cnt=this.getAttribute("jsc_show_ctrl_index");
 id_data=this.getAttribute("jsc_show_ctrl_data");

 if(cnt>=jscSetShowCtrl.arr_ctrl.length)
  return;

 if(id_data)
  {
   objData=document.getElementById(id_data);
   if(objData)
    {
     if(jscIsClass(objData,"show_off"))
       jscClassRemove(objData,"show_off");
      else
       jscClassAdd(objData,"show_off");
    }
  }

 arrItems=this.className.split(" ");
 for(i=0;i<arrItems.length;i++)
  {
   str=arrItems[i];
   if(str==jscSetShowCtrl.arr_ctrl[cnt][1])
     str=jscSetShowCtrl.arr_ctrl[cnt][2];
    else
   if(str==jscSetShowCtrl.arr_ctrl[cnt][2])
     str=jscSetShowCtrl.arr_ctrl[cnt][1];

   if(i>0)
    str_class+=" ";

   str_class+=str;
  }

 this.className=str_class;
}


// Привязка к управляющим элементам с последовательным перечнем ID для раскрытия/закрытия блоков
function jscSetShowCtrl(id_ico_trg,id_data_trg,class_close,class_open)
{
 var i,cnt;
 var objElem;

 for(i=1;;i++)
  {
   objElem=document.getElementById(id_ico_trg+"_"+i);
   if(!objElem)
    break;

   if(!jscSetShowCtrl.arr_ctrl)
    jscSetShowCtrl.arr_ctrl=[];

   for(cnt=0;
       cnt<jscSetShowCtrl.arr_ctrl.length 
    && jscSetShowCtrl.arr_ctrl[cnt][0]!=id_ico_trg;
       cnt++);

   jscSetShowCtrl.arr_ctrl[cnt]=[id_ico_trg,class_close,class_open];

   objElem.setAttribute("jsc_show_ctrl_index",cnt);
   objElem.setAttribute("jsc_show_ctrl_data",id_data_trg+"_"+i);

   objElem.onclick=jscShowCtrl;
  }
}


// Активация/деактивация выпадающих списков в престарелых браузерах
function jscHideSelect(is_hide)
{
 var objCols,objSel,i,value;

 objCols=document.getElementsByTagName("SELECT");

 for(i=0;i<objCols.length;i++)
  {
   objFld=objCols[i];

   if(is_hide)
    {
     objFld.setAttribute("jsc_save_visibility",objFld.style.visibility);
     objFld.style.visibility="hidden";
    }
    else
    {
     value=objFld.getAttribute("jsc_save_visibility");
     if(!value)
      value="visible";
     objFld.style.visibility=value;
    }
  } 
}


// Работа с составными классами
// Переключатель классов
function jscClassSelector(obj,cl_a,cl_b)
{
 if(!obj)
  return;

 var arrItems=obj.className.split(" ");
 var i,str,res="";

 for(i=0;i<arrItems.length;i++)
  {
   str=arrItems[i];
   if(str==cl_a)
     str=cl_b;
    else
   if(str==cl_b)
     str=cl_a;

   if(i>0)
    res+=" ";

   res+=str;
  }

 obj.className=res;
} // eof jscClassSelector()


// Добавить класс
function jscClassAdd(obj,cl)
{
 if(!obj)
  return;

 var arrItems=obj.className.split(" ");
 var i;
 
 for(i=0;i<arrItems.length;i++)
  if(arrItems[i]==cl)
   return;

 obj.className+=" "+cl;
} // eof jscClassAdd()


// Удалить класс
function jscClassRemove(obj,cl)
{
 if(!obj)
  return;

 var arrItems=obj.className.split(" ");
 var i;
 var cl_new="";
 
 for(i=0;i<arrItems.length;i++)
  {
   if(arrItems[i]==cl)
    continue;

   cl_new+=" "+arrItems[i];
  }

 obj.className=cl_new.substr(1);
} // eof jscClassRemove()


// Проверка наличия класса
function jscIsClass(obj,cl)
{
 if(!obj)
  return(0);

 var arrItems=obj.className.split(" ");
 var i;

 for(i=0;i<arrItems.length;i++)
  if(arrItems[i]==cl)
   return(1);

 return(0);
} // eof jscIsClass()
// -->
