// список языков (для смены перевода)
var dxsoft_langlist = function(list_id,unused_id)
{
    this.Init(list_id,unused_id);
}

dxsoft_langlist.prototype={    
    Init:function(list_id,unused_id)
    {            
        if(list_id && unused_id)
            this.InitElems(dxsoft_library.GetElement(list_id),dxsoft_library.GetElement(unused_id));
    },
    InitElems:function(list,unused)
    {
    // Интевал для таймера
        this.fading_interval = 10;        
        // картинка с изображением переведенного текста
        this.checked_image_url = "/img/decoration/lang_check.png";
        // картинка с изображением НЕпереведенного текста
        this.fire_image_url = "/img/decoration/lang_fire.png";
        // поле для хранения текущего языка (приходит в hidden поле)
        this.unused_input = unused;
        // table со списком языков
        this.list = list;
        // запоминаем язык по умолчанию
        this.currentlang = this.unused_input.value;
        // сохраняем порядок языков по умолчанию
        var tdlangs = this.list.getElementsByTagName("TD");
        this.alllangs = Array();
        for(var i=0;i<tdlangs.length;++i)
            this.alllangs[i] = tdlangs[i].innerHTML;
        // сразу грузим картинку для переведенного текста
        var pre = new Image();
        pre.src=this.checked_image_url;
        this.listener = null;
        // задаем события для всех линков
        this.Fill();
        dxsoft_library.DoTask(this.list,dxsoft_library.CreateMethod(this,this.OnLangOver),"mouseover");
        dxsoft_library.DoTask(this.list,dxsoft_library.CreateMethod(this,this.OnLangOut),"mouseout"); 
    },
    Clear:function()
    {
        // очищаем все, и возвращаем все в первоначальное состояние
        this.unused_input.value=this.currentlang;
        var tdlangs = this.list.getElementsByTagName("TD");        
        for(var i=0;i<tdlangs.length;++i)
            tdlangs[i].innerHTML=this.alllangs[i];
        this.Fill();
    },
    Fill:function(){
        // задаем события для всех линков
        var alist = this.list.getElementsByTagName("A");
        for(var i=0;i<alist.length;++i)
        {
            alist[i].parent = this;
            dxsoft_library.DoTask(alist[i],dxsoft_library.CreateMethod(alist[i],this.OnChangeLanguage),"click");
        }
    },
    OnChangeLanguage:function()
    {       
        var pn = this.parentNode;
        if(!pn)
            return;            
            
        // получаем данные для текущего выбранного языка
        var old_list = this.parent.unused_input.value.split('$');
        // формируем строку для записи нового выбранного языка
        var new_lang = pn.getElementsByTagName("input")[0].value;
        
         if(this.parent.listener && !this.parent.listener.OnBeforeChangeLanguage(new_lang))
            return;
        
                
        var img = pn.getElementsByTagName("img")[0];
        var tmp_str = (img.src==this.parent.checked_image_url)?"1$":"0$";
        var is_fill=false;
        // выполняем функцию для смены языка
        if(this.parent.listener && this.parent.listener.OnChangeLanguage(old_list[1],new_lang,this.innerHTML))                    
            is_fill = true;
        tmp_str+=new_lang+"$";
        tmp_str+=this.innerHTML;        
        this.parent.unused_input.value=tmp_str;
        // если занесли перевод, то помечаем язык, как заполненный
        if(is_fill==true)
            img.src = this.parent.checked_image_url;
        else
            img.src = this.parent.fire_image_url;
        // меняем прошлый выбранный язык с текущим (прошлый пишем в таблицу, новый - в hidden поле)
        pn.getElementsByTagName("input")[0].value = old_list[1];
        this.innerHTML = old_list[2];
    },
    GetCurrentLanguage:function()
    {
       // получить выбранный язык
       var old_list = this.unused_input.value.split('$');
       return old_list[1]; 
    },
    GetCurrentLanguageName:function()
    {
    // получить название языка (русский)
       var old_list = this.unused_input.value.split('$');
       return old_list[2]; 
    },
    // получить основной язык
    GetMainLanguage:function()
    {
       var old_list = this.currentlang.split('$');
       return old_list[1];        
    },
    // показать форму
    Show:function(parent_elem)
    {                
        // устанавливаем событие для линка, вызвавшего эту форму
        if(this.parent_elem)
               dxsoft_library.ClearTask(this.parent_elem,this.parent_funcref,"mouseout");                  
        this.parent_elem = parent_elem;
        dxsoft_library.DoTask(this.parent_elem,(this.parent_funcref=dxsoft_library.CreateMethod(this,this.OnLangOut)),"mouseout");
        if(this.timer)
        {
            clearTimeout(this.timer);
            this.timer=null;
        }   
        // показываем форму
        this.transparence=100;
        dxsoft_library.SetOpacity(this.list,100);
        parent_elem.appendChild(this.list);
        this.list.style.display = '';       
    },
    OnLangOver:function()
    {               
        if(this.timer)
        {
            clearTimeout(this.timer);
            this.timer = null;
        }
        dxsoft_library.SetOpacity(this.list,100);
    },
    OnLangOut:function(event)
    {        
        if(this.timer)
            clearTimeout(this.timer);         
        if(this.transparence>0)
        {
            this.show_speed = -5;        
            this.timer=setTimeout(dxsoft_library.CreateMethod(this,this.OnFading),this.fading_interval);
        }    
    },
    OnFading:function()
    {
        // затухиваем форму постепенно
        this.transparence+=this.show_speed;
        this.timer = null;        
        if(this.transparence<=0)
        {
            this.transparence = 0;
            this.timer=0;
            dxsoft_library.SetOpacity(this.list,0);
            this.list.style.display = 'none';                         
        }
        else
        {
            dxsoft_library.SetOpacity(this.list,this.transparence);
            this.timer=setTimeout(dxsoft_library.CreateMethod(this,this.OnFading),this.fading_interval);
        }
    },
    // указать, задан язык или нет
    SetLanguage:function(key,is_check)
    {
        var inpts = this.list.getElementsByTagName("input");
        for(var i=0;i<inpts.length;++i)
            if(inpts[i].value==key)
            {
                var img = inpts[i].parentNode.getElementsByTagName("img")[0];
                if(is_check==true)
                    img.src = this.checked_image_url;
                else
                    img.src = this.fire_image_url;
                return;
            }
    },
    // сделать копию объекта
    Clone:function()
    {
        this.Clear();
        var list = this.list.cloneNode(true);
        var unused = this.unused_input.cloneNode(true);
        var elem = new dxsoft_langlist();
        elem.InitElems(list,unused);
        return elem;
    }    
}

// линк для вызова выбора языка
var dxchlang_selecter = function(langlink_id, langlist)
{
    this.Init(langlink_id, langlist);
}
dxchlang_selecter.prototype = {
    Init:function(langlink_id, langlist){        
        // линк
        this.selecter = dxsoft_library.GetElement(langlink_id);
        // объект класса dxsoft_langlist
        this.lang_list = langlist.Clone();
        this.flag = document.createElement("img");
        this.flag.className = "flag";
        this.selecter.parentNode.insertBefore(this.flag,this.selecter);        
        this.selecter.innerHTML = this.lang_list.GetCurrentLanguageName();        
        this.flag.src="/img/lng/"+this.lang_list.GetCurrentLanguage()+".png";
        this.transparence = 0;
        dxsoft_library.DoTask(this.selecter,dxsoft_library.CreateMethod(this,this.OnLangOver),"mouseover");        
    },    
    OnLangOver:function()
    {                        
        this.lang_list.listener = this;
        // показываем форму        
        this.lang_list.Show(this.selecter.parentNode);        
    },
    // возвращаем текущий язык
    GetCurrentLanguage:function()
    {
        return this.lang_list.GetCurrentLanguage();
    },
    // получить основной язык
    GetMainLanguage:function()
    {
        return this.lang_list.GetMainLanguage();
    },    
    // Указать, задан язык, или нет
    SetLanguage:function(key,is_check)
    {
        this.lang_list.SetLanguage(key,is_check);
    },
    // вызывается перед сменой языка
    OnBeforeChangeLanguage:function(new_lang)
    {
        if(this.listener.OnBeforeChangeLanguage)
            return this.listener.OnBeforeChangeLanguage(new_lang);
        return true;
    },
    // при смене языка
    OnChangeLanguage:function(oldlang,newlang,newlang_name)
    {
        this.selecter.innerHTML = newlang_name;
        this.flag.src="/img/lng/"+newlang+".png";
        return this.listener.OnChangeLanguage(oldlang,newlang);
    },
    // Очищаем языки
    Clear:function()
    {
        this.lang_list.Clear();
        this.selecter.innerHTML = this.lang_list.GetCurrentLanguageName();
        this.flag.src="/img/lng/"+this.lang_list.GetCurrentLanguage()+".png";
    }    
}

// прелоадер для разных действий
var dxpreloader = function()
{
    this.preloader = document.createElement("DIV"); 
    this.preloader.style.cssText="position:absolute; left:0; top:0; display:none; background:#fff;";
    this.preloader.innerHTML = "<img src=\"/img/decoration/preloader_wh.gif\" style=\"margin:0;padding:0;width:37px; height:37px;\" />";
    dxsoft_library.SetOpacity(this.preloader,80);
}

dxpreloader.prototype = {
    Show:function(parent){
        parent.appendChild(this.preloader);
        this.preloader.style.width = parent.offsetWidth+"px";
        this.preloader.style.height = parent.offsetHeight+"px";        
        // кутящийся индикатор размером 37 на 37
        // делаем его по центру
        var mt=(parent.offsetHeight-37)/2;
        var ml=(parent.offsetWidth-37)/2;
        // размеры прелоадера не могут быть меньше картинки
        if(mt<0)
        {
            mt=0;
            this.preloader.style.height="37px";    
        }
        if(ml<0)
        {
            ml=0;
            this.preloader.style.width="37px";    
        }

        var img = this.preloader.getElementsByTagName("IMG")[0];
        img.style.marginTop = mt+"px";
        img.style.marginLeft = ml+"px";
        this.preloader.style.display="block";
    },
    Hide:function()
    {
        this.preloader.style.display="none";
    }
}

// диалог для вывода ошибок
var dxerror_baloon = 
{
    // контрол с языком
    baloon_elem:null,
    // текст
    baloon_text:null,
    // время показывания
    show_speed:5,
    // время погашивания
    hide_speed:-10,
    // как долго ошибка будет показываться
    wait_time:1500,
    Create:function(baloon_id)
    {
        dxerror_baloon.baloon_elem = dxsoft_library.GetElement(baloon_id);
        dxerror_baloon.baloon_text = dxerror_baloon.baloon_elem.getElementsByTagName("SPAN")[0];
    },
    Hide:function()
    {
       dxerror_baloon.baloon_elem.opacity_level=0;
       dxerror_baloon.baloon_elem.style.display = "none";
       dxerror_baloon.baloon_elem.timer = null;
    },
    // показать ошибку на Parent с соотв. координатами
    ShowError:function(error_text,parent,x,y)
    {    
        dxsoft_library.SetOpacity(dxerror_baloon.baloon_elem,0);
        parent.appendChild(dxerror_baloon.baloon_elem);        
        dxerror_baloon.baloon_elem.style.top = y;
        dxerror_baloon.baloon_elem.style.left = x;
        dxerror_baloon.baloon_text.innerHTML = error_text;
        dxerror_baloon.baloon_elem.style.display = "block";
        dxerror_baloon.baloon_elem.opacity_level = 0;
        dxerror_baloon.baloon_elem.speed = dxerror_baloon.show_speed;
        if(dxerror_baloon.baloon_elem.timer)
            clearTimeout(dxerror_baloon.baloon_elem.timer);
        dxerror_baloon.baloon_elem.timer = setTimeout(dxerror_baloon.OnShow,10);
    },
    // функция, которая постепенно показывае ошибку, и затем постепенно ее убирает
    OnShow:function()
    {
        dxerror_baloon.baloon_elem.opacity_level+=dxerror_baloon.baloon_elem.speed;
        if(dxerror_baloon.baloon_elem.opacity_level>=100)
        {
            dxerror_baloon.baloon_elem.opacity_level=100;
            dxerror_baloon.baloon_elem.speed=dxerror_baloon.hide_speed;
            dxerror_baloon.baloon_elem.timer = setTimeout(dxerror_baloon.OnShow,dxerror_baloon.wait_time);
        }
        else
        if(dxerror_baloon.baloon_elem.opacity_level<=0)
        {
            dxerror_baloon.baloon_elem.opacity_level=0;
            dxerror_baloon.baloon_elem.style.display = "none";
            dxerror_baloon.baloon_elem.timer = null;
        }
        else
        {
            dxsoft_library.SetOpacity(dxerror_baloon.baloon_elem,dxerror_baloon.baloon_elem.opacity_level);
            dxerror_baloon.baloon_elem.timer = setTimeout(dxerror_baloon.OnShow,10);
        }
    }
}

// диалог с вопросом о удалении чего-либо
var delete_baloon = {
    baloon:null,
    delfunr_ref:null,
    Create:function(baloon_id)
    {
       delete_baloon.baloon = dxsoft_library.GetElement(baloon_id);     
    },
    Show:function(parent_elem,delfunr_ref)
    {
        if(delete_baloon.baloon)
        {
            delete_baloon.delfunr_ref = delfunr_ref;
            parent_elem.appendChild(delete_baloon.baloon);
            delete_baloon.baloon.style.display="block";
        }
    },
    OnCancel:function()
    {
        delete_baloon.baloon.style.display="none";
    },
    OnDelete:function()
    {
        delete_baloon.delfunr_ref();
        delete_baloon.baloon.style.display="none";
    }
}

// удаление года
var dxyear_delete = {
    baloon:null,
    dellink:null,
    Create:function(del_baloon_id)
    {
        dxyear_delete.baloon = dxsoft_library.GetElement(del_baloon_id);
    },
    Show:function(dellink)
    {
        dxyear_delete.dellink = dellink;
        dxyear_delete.baloon.style.display = "block";
        var p = dxsoft_library.GetAbsolutePos(dellink,dellink.parentNode.parentNode);
        dxyear_delete.baloon.style.left=(p.x+dellink.offsetWidth-15)+"px";
        dxyear_delete.baloon.style.top=p.y+"px";
        return false;
    },
    OnCancel:function()
    {
        dxyear_delete.baloon.style.display = "none";
    },
    OnDelete:function()
    {
        window.location = dxyear_delete.dellink.href;            
    }
}


var dxpager = function(pager_id,pages_count,current_page,url)
{
    this.Init(pager_id,pages_count,current_page,url);
}

dxpager.prototype = {
    Init:function(pager_id,pages_count,current_page,url)
    {        
        this.nums_per_page = 9;
        this.url = url;
        this.pager = dxsoft_library.GetElement(pager_id);
        this.SetParams(pages_count,current_page);
    },
    SetParams:function(pages_count,current_page)
    {
        this.pages_count = pages_count;
        this.current_page = current_page;
        if(pages_count<=1)
            this.pager.style.display="none";
        else
        {            
            this.pager.style.display="";
            this.pager.innerHTML="";
            var middle = Math.ceil(this.nums_per_page/2);
            var start = current_page-middle+1;
            if(start<1) start=1;        
            var end = start+this.nums_per_page;
            if(end>(pages_count+1))
            {
                start-=(end-pages_count+1);
                if(start<1) start=1;
                end=pages_count+1;        
            }                
            if(start>1)
                this.CreateLink("...",start-1); 
            for(var i=start;i<end;++i)
                if(i!=current_page)
                    this.CreateLink(i,i);
                else
                    this.CreateSpan(i);
            if(end<pages_count)
                this.CreateLink("...",end); 
        }
    },
    CreateLink:function(num,link)
    {
        var a = document.createElement("A");
        a.innerHTML = num;
        a.href = this.url+link;
        this.pager.appendChild(a);
    },
    CreateSpan:function(num)
    {
        var span = document.createElement("span");
        span.innerHTML = num;        
        this.pager.appendChild(span);
    }
}

var dxupdownctrl = function(ctrl_id,page_num,full_pages,save_url,nextpage_url)
{
    this.Init(ctrl_id);
    this.save_url = save_url;
    this.page_num = page_num;    
    this.full_pages = full_pages;
    this.nextpage_url = nextpage_url;
}
dxupdownctrl.prototype = 
{
    Init:function(ctrl_id)
    {
        this.updownctrl = dxsoft_library.GetElement(ctrl_id);
        
        var lnks = this.updownctrl.getElementsByTagName("a");                
        
        dxsoft_library.DoTask(lnks[0],dxsoft_library.CreateMethod(this,this.Up10),"click");
        dxsoft_library.DoTask(lnks[1],dxsoft_library.CreateMethod(this,this.Down10),"click");
        dxsoft_library.DoTask(lnks[2],dxsoft_library.CreateMethod(this,this.Up1),"click");
        dxsoft_library.DoTask(lnks[3],dxsoft_library.CreateMethod(this,this.Down1),"click");
    },
    Show:function(parentctrl)
    {                
        if(this.parentctrl != parentctrl)
        {
            this.parentctrl = parentctrl;        
            this.updownctrl.style.display="none";
            parentctrl.appendChild(this.updownctrl);        
            this.updownctrl.style.display="";        
        }
    },
    Hide:function()
    {
        this.updownctrl.style.display="none";
    },
    GetParent:function()
    {
        return this.updownctrl.parentNode;
    },
    Up10:function(){this.Move(10);return true;},
    Down10:function(){this.Move(-10);return true;},
    Up1:function(){this.Move(1);return true;},
    Down1:function(){this.Move(-1);return true;},
    Move:function(num)
    {
        var i=0;
        var q = this.parentctrl; 
        var is_send = true;
        if(num<0)
        {                       
            while(i>num)
            {
                q = q.nextSibling;
                if(!q)
                    break;                   
                if(q.ctrl)
                    --i;                 
            }
                        
            if(q && q.nextSibling)
                this.parentctrl.parentNode.insertBefore(this.parentctrl,q.nextSibling);        
            else
                if(!q && this.page_num>1)
                {
                    is_send = false;
                    return dxsoft_library.DoPostBack("on_reposition",this.parentctrl.ctrl.elemid+"$"+num+"$"+this.page_num);                    
                    //document.location.href=this.nextpage_url+(this.page_num-1)+"/?id="+this.parentctrl.elemid+"&pos="+num;
                    //return;
                }
                else
                    this.parentctrl.parentNode.appendChild(this.parentctrl);
        }else
        {
            while(i<num)
            {
                q = q.previousSibling;
                if(!q)
                    break;
                if(q.ctrl)
                    ++i;                    
            }
            if(q)
                this.parentctrl.parentNode.insertBefore(this.parentctrl,q);
            else
            if(this.page_num<this.full_pages)
            {
              //  document.location.href=this.nextpage_url+(this.page_num+1)+"/?id="+this.parentctrl.elemid+"&pos="+num;                
                is_send = false;
                return dxsoft_library.DoPostBack("on_reposition",this.parentctrl.ctrl.elemid+"$"+num+"$"+this.page_num);                
            }
            else
               this.parentctrl.parentNode.insertBefore(this.parentctrl,this.parentctrl.parentNode.firstChild);
        }
        
        if(is_send)
        {
            this.xml_request=dxsoft_library.CreateXMLRequest();                
            this.xml_request.open("POST",this.save_url+"&id="+this.parentctrl.ctrl.elemid+"&pos="+num,true);        
            this.xml_request.send('');
        }
    }    
}

var news_container=null;

var dxnews_container = function(contpanel_id,container_id,pager,updownctrl,max_elems,savepos_url,containerupdate_url)
{
    this.Init(contpanel_id,container_id,pager,updownctrl,max_elems,savepos_url,containerupdate_url);
}

dxnews_container.prototype = {
    Init:function(contpanel_id,container_id,pager,updownctrl,max_elems,savepos_url,containerupdate_url)
    {
        news_container = this;
        this.contpanel = dxsoft_library.GetElement(contpanel_id);
        this.savepos_url = savepos_url;
        this.container = dxsoft_library.GetElement(container_id);
        updownctrl.onpagemove = dxsoft_library.CreateMethod(this,this.OnCtrlMove);
        this.updownctrl = updownctrl;
        this.pager = pager;
        this.max_elems = max_elems;
        this.containerupdate_url = containerupdate_url;
        
        this.preloader = new dxpreloader();        
        this.hide_elems = Array();        
    },
    InsertPreload:function(ctrl)
    {
        var chn = this.container.childNodes;
        if(chn.length>0)        
            this.container.insertBefore(ctrl,this.container.firstChild);                  
        else
            this.container.appendChild(ctrl);  
    },
    RemovePreload:function(ctrl)
    {
        this.container.removeChild(ctrl);
    },           
    InsertFirst:function(html)
    {        
        dxsoft_library.InsertInnerText(html,this.container,this.container.firstChild);
        var chn = this.container.childNodes;
        var cnt = 0;
        var last_div = null;
        for(var i=0;i<chn.length;++i)
            if(chn[i].tagName=="DIV")
            {       
                ++cnt;            
                last_div = chn[i];
            }
        if(this.max_elems<=cnt && last_div)       
        {
            this.hide_elems[this.hide_elems.length]=last_div; 
            this.container.removeChild(last_div);        
        }
    },
    Remove:function(ctrl,append_func)
    {
        this.container.removeChild(ctrl);
        if(this.hide_elems.length>0)
        {
            this.container.appendChild(this.hide_elems[this.hide_elems.length-1]);            
            this.hide_elems.length = this.hide_elems.length-1;
        }else
        if(append_func)        
            append_func(this);        
    },    
    OnCtrlMove:function(num)
    {
        var node = this.updownctrl.GetParent();
        var p;
        var i=0;
        var newpos;
        var lastDiv;
        if(num>0)
        {
            p = node.previousSibling;            
            while(p)
            {
                if(p.tagName=="DIV")
                {
                    lastDiv = p;
                    ++i;
                }
                if(i==num)
                    break;
                p = p.previousSibling;                
            }
            if(p)
            {
                this.container.insertBefore(node,p);
                newpos = p.ctrl.position;
            }
            else
            if(this.pager.current_page>1)
                this.PostPage(node.ctrl.id,this.pager.current_page-1,i-num);
            else
             if(node!=lastDiv)
             {
                this.container.insertBefore(node,lastDiv);
                newpos = lastDiv.ctrl.position;
             }
        }
        else
        {
            p = node.nextSibling;
            while(p)
            {
                if(p.tagName=="DIV")
                {
                    lastDiv = p;
                    --i;
                }
                if(i==num)
                    break;
                p = p.nextSibling;
            }
            if(p)
            {              
              p=p.nextSibling;
              while(p && p.tagName!="DIV")
                p = p.nextSibling;
              if(p)
              {
                  this.container.insertBefore(node,p);
                  newpos = p.ctrl.position;
              }
              else
              {
                  this.container.appendChild(node);
                  newpos=lastDiv.ctrl.position+1;
              }
            }
            else
            if(this.pager.current_page<this.pager.pages_count)
                this.PostPage(node.ctrl.id,this.pager.current_page+1,i-num);
            else
            if(node!=lastDiv)
            {
                this.container.appendChild(node);
                newpos = lastDiv.ctrl.position;                
            }
        }
        if(newpos)
            this.SavePosition(node,newpos);
    },
    ShowUpDown:function(ctrl)
    {
        this.updownctrl.Show(ctrl);        
    },
    HideUpDown:function()
    {
        this.updownctrl.Hide();
    },
    SavePosition:function(node,newpos)
    {
        var chs = this.container.childNodes;
        for(var i=0;i<chs.length;++i)
            if(chs.tagName=="DIV" && chs.ctrl.position>=newpos)
                chs.ctrl.position++;
        node.ctrl.position = newpos;
        this.xml_request=dxsoft_library.CreateXMLRequest();                
        this.xml_request.open("POST",this.savepos_url+"&id="+node.ctrl.id+"&pos="+newpos,true);        
        this.xml_request.send('');        
    },
    PostPage:function(id,pagenum,nextpagepos)
    {        
        this.preloader.Show(this.container);
        
        this.xml_request=dxsoft_library.CreateXMLRequest();                
        this.xml_request.onreadystatechange = dxsoft_library.CreateMethod(this,this.OnLoadComplete); 
        this.xml_request.open("POST",this.containerupdate_url+"&id="+id+"&pos="+nextpagepos+"&page="+pagenum,true);        
        this.xml_request.send('');
       //dxsoft_library.DoPostBack("pagechange",id+"_"+nextpagepos+"_"+num);
    },
    OnLoadComplete:function()
    {
        if(this.xml_request.readyState == 4)
        {                             
            if(this.xml_request.status == 200 && this.xml_request.responseText!="" && this.xml_request.responseText!="error")
            { 
                while(this.container.firstChild)
                    this.container.removeChild(this.container.firstChild);
                this.container.innerHTML="";
                var result = this.xml_request.responseText;
                var pos = result.indexOf("_");   
                var pagecount = result.substr(0,pos++);
                var p1 = result.indexOf("_",pos);
                var page = result.substr(pos,p1-pos);
                pos=p1+1;
                result = result.substr(p1+1,result.length-p1-1);
                this.pager.SetParams(parseInt(pagecount),parseInt(page));
                dxsoft_library.AppendInnerText(result,this.container);
            }
            this.preloader.Hide();
        }
    }
}

var dxcontainer = {
    lastzi:10000,
    Next:function()
    {
        return dxcontainer.lastzi--;
    },
    Set:function(ctrl,newind)
    {
        var chl = ctrl.parentNode.childNodes;
        for(var i=0;i<chl.length;++i)
            if(chl[i].style && chl[i].style.zIndex && chl[i].style.zIndex<=newind)
                chl[i].style.zIndex--;
        ctrl.style.zIndex = newind;
    }
}

// диалог вывода инфы
var dxinfobaloon = function(ctrl_id)
{
    this.Init(ctrl_id);
}

dxinfobaloon.prototype = {
    Init:function(ctrl_id)
    {
        // сам контрол
        this.ctrl = dxsoft_library.GetElement(ctrl_id);
        // контрол с текстом
        this.textctrl = this.ctrl.getElementsByTagName("span")[0];
    },
    // показать контрол
    Show:function(parent)
    {
        this.parent = parent;
        parent.appendChild(this.ctrl);
        this.ctrl.style.left = this.parent.offsetWidth+"px";
        this.ctrl.style.top = "-20px";        
        this.ctrl.style.display="";
    },
    // спрятать
    Hide:function()
    {
        this.ctrl.style.display="none";
    },
    //задать текст
    SetText:function(text)
    {
        this.textctrl.innerHTML = text;
    }    
}


var dxcheckboxex = function(pnl_id)
{
    this.pnl = dxsoft_library.GetElement(pnl_id);
    this.input = this.pnl.getElementsByTagName("INPUT")[0];
    this.img = this.pnl.getElementsByTagName("IMG")[0];    
    this.pnl.ctrl = this;
    this.pnl.checked = (this.input.value=="0")?false:true;
    
    dxsoft_library.DoTask(this.pnl,dxsoft_library.CreateMethod(this,this.OnClick),"click");
}

dxcheckboxex.prototype={
    OnClick:function()
    {
        if(this.input.value=="0")
        {
            this.input.value="1";
            this.img.style.visibility="visible";
            this.pnl.checked = true;
        }
        else
        {
            this.input.value="0";
            this.img.style.visibility="hidden";
            this.pnl.checked = false;
        }
    },
    SetCheck:function(is_check)
    {
        this.pnl.checked = is_check;
        if(is_check)
        {
            this.input.value="1";
            this.img.style.visibility="visible";
        }else
        {
            this.input.value="0";
            this.img.style.visibility="hidden";            
        }    
    }
}