var dximgviewer = {
    backlayer:null,
    imglayer:null,
    timer:null,
    opacity:0,   
    div:null,  
    picview_obj:null,    
    ShowBack:function()
    {
        if(!dximgviewer.backlayer)
        {
            dximgviewer.backlayer = dxsoft_library.CreateBackLayer("#000",0);
            dximgviewer.imglayer = dxsoft_library.CreateBackLayer("Transparent",100);            
            dximgviewer.imglayer.style.zIndex = 200;
            dximgviewer.imglayer.style.display="none";
        }
        else
        {
            dxsoft_library.SetOpacity(dximgviewer.backlayer,0);
            dximgviewer.backlayer.style.display = "block";
        }
        dximgviewer.backlayer.OnBodyResize();
        dximgviewer.imglayer.OnBodyResize();

        dximgviewer.opacity = 0;
        dximgviewer.timer = setTimeout(dximgviewer.ShowTick,50);
    },
    ShowImg:function(url)
    {                               
        dximgviewer.ShowBack();        
        if(dximgviewer.picview_obj)       
            dximgviewer.picview_obj.Show(url,dximgviewer.imglayer);
        dxsoft_library.DoTask(window,dximgviewer.OnResize,"resize"); 
        dxsoft_library.DoTask(window,dximgviewer.OnResize,"scroll");                      
    },
    ShowDiv:function(div_id)
    {        
        dximgviewer.ShowBack(); 
        dximgviewer.div=dxsoft_library.GetElement(div_id);        
        dxsoft_library.DoTask(window,dximgviewer.OnResize,"resize"); 
        dxsoft_library.DoTask(window,dximgviewer.OnResize,"scroll");         
    },
    HideImg:function()
    {
        if(dximgviewer.timer)
            clearTimeout(dximgviewer.timer);
        dxsoft_library.ClearTask(window,dximgviewer.OnResize,"resize");
        dxsoft_library.ClearTask(window,dximgviewer.OnResize,"scroll");
        dximgviewer.timer=null;
        dximgviewer.backlayer.style.display="none";
        dximgviewer.imglayer.style.display="none";
    },
    ShowTick:function()
    {
        dximgviewer.opacity+=15;
        if(dximgviewer.opacity>70)
            dximgviewer.opacity=70;
        dxsoft_library.SetOpacity(dximgviewer.backlayer,dximgviewer.opacity);
        if(dximgviewer.opacity<70)
            dximgviewer.timer = setTimeout(dximgviewer.ShowTick,50);  
        else
        {
            dximgviewer.timer = null;
            dximgviewer.imglayer.style.display="block";            
            dximgviewer.div.style.display = "block";
            dximgviewer.imglayer.appendChild(dximgviewer.div);
            dxsoft_library.MoveToCenter(dximgviewer.div);            
        }
    },
    OnResize:function()
    {
        dxsoft_library.MoveToCenter(dximgviewer.div);
    }
}

var picviewobject = function(mainpnl_id,btn_prev_id,btn_next_id,img_id,text_id,isshowpager,imglist,textlist)
{    
    this.mainpnl = dxsoft_library.GetElement(mainpnl_id);
    this.imglist = imglist;
    this.textlist = textlist;
    
    this.isshowpager = isshowpager;
        
    for(var i=0;i<this.textlist.length;++i)
        this.textlist[i] = dxsoft_library.DecodeText(this.textlist[i]);
    if(imglist.length>0)
        this.currentimg = imglist[0];
    this.btnnext = dxsoft_library.GetElement(btn_next_id);
    this.btnprev = dxsoft_library.GetElement(btn_prev_id);
    this.img = dxsoft_library.GetElement(img_id);
    this.text = dxsoft_library.GetElement(text_id);
    dximgviewer.div = this.mainpnl;   

    this.preloader = document.createElement("IMG");
    this.preloader.style.cssText = "position:absolute; left:0; top:0; width:37px;height:37px; display:none;";
    this.preloader.src ="/img/decoration/preloader_wh.gif";
    
    
    if(imglist.length<=1)
    {        
        var chs = this.btnnext.parentNode.childNodes;
        for(var i=0;i<chs.length;++i)
            chs[i].style.display="none";
        var chs = this.btnprev.parentNode.childNodes;   
        for(var i=0;i<chs.length;++i)
            chs[i].style.display="none";        
    }else
    {
        var chs = this.btnnext.parentNode.childNodes;
        for(var i=0;i<chs.length;++i)
            chs[i].style.display="";
        var chs = this.btnprev.parentNode.childNodes;   
        for(var i=0;i<chs.length;++i)
            chs[i].style.display=""; 
    }
    
    this.FillPager();
    
    dxsoft_library.DoTask(this.btnnext,dxsoft_library.CreateMethod(this,this.OnNextClick),"click");
    dxsoft_library.DoTask(this.btnprev,dxsoft_library.CreateMethod(this,this.OnPrevClick),"click");
}

picviewobject.prototype = {
    Show:function(imgurl,parentdiv)
    {        
        this.img.parentNode.appendChild(this.preloader);
        
        var ml=(parseInt(this.img.style.width)-37)/2;
        var mt=(parseInt(this.img.style.height)-37)/2;        

        this.preloader.style.left = ml+"px";
        this.preloader.style.top = mt+"px";
        
        this.preloader.style.display="block";
        
        if(this.textlist && this.textlist.length>0 )
            for(var i=0;i<this.imglist.length;++i)
                if(this.imglist[i]==imgurl)
                {
                    this.text.innerHTML = this.textlist[i];                                                                
                    break;             
                } 
       if(this.isshowpager)
       {
            var alnk = this.text.getElementsByTagName("A");
            for(var i=0;i<this.imglist.length;++i)
                if(this.imglist[i]==imgurl)
                {
                    for(var j=0;j<alnk.length;++j)
                        if(alnk[j].innerHTML==(i+1))
                        {                            
                            this.span.innerHTML = (i+1);
                            this.text.insertBefore(this.span,alnk[j]);
                            this.currentLink.style.display="";
                            this.currentLink = alnk[j];
                            this.currentLink.style.display="none";
                            break;
                        }                    
                    break;             
                } 
       }
       
       this.currentimg = imgurl;            
       this.img.style.visibility="hidden";  
       dxsoft_library.DoTask(this.img,function(){dximgviewer.HideImg()},"click");
       if(this.onloadfunc)
       {
            dxsoft_library.ClearTask(this.imgprel,this.onloadfunc,"load");
            dxsoft_library.ClearTask(this.imgprel,this.onerrfunc,"error");
       }
       this.imgprel = new Image();       
       dxsoft_library.DoTask(this.imgprel,this.onloadfunc = dxsoft_library.CreateMethod(this,this.OnCurImgLoad),"load"); 
       dxsoft_library.DoTask(this.imgprel,this.onerrfunc = dxsoft_library.CreateMethod(this,this.OnCurImgError),"error"); 
       this.imgprel.src = imgurl; 
       this.parentdiv = parentdiv;       
    },
    OnCurImgLoad:function()
    {        
        this.preloader.style.display="none";
        if(this.imgprel.width>parseInt(this.img.style.width))        
            this.step = 20;
        else
            this.step = -20;                
        this.img.src = this.currentimg;
        this.AlWidth();    
    },
    AlWidth:function()
    {
        var width = parseInt(this.img.style.width)+this.step;        
        if(this.step>0 && width>this.imgprel.width)
            width = this.imgprel.width;                    
        else
        if(this.step<0 && width<this.imgprel.width)        
            width = this.imgprel.width;        
        this.img.style.width = width+"px";
        dxsoft_library.MoveToCenter(dximgviewer.div);
        if(width==this.imgprel.width)
        {
            if(this.imgprel.height>parseInt(this.img.style.height))        
                this.step = 20;
            else
                this.step = -20;
            this.AlHeight();
        }
        else
            setTimeout(dxsoft_library.CreateMethod(this,this.AlWidth),10);
    },
    AlHeight:function()
    {
        var height = parseInt(this.img.style.height)+this.step;        
        if(this.step>0 && height>this.imgprel.height)
            height = this.imgprel.height;
        else
        if(this.step<0 && height<this.imgprel.height)
            height = this.imgprel.height;
        this.img.style.height = height+"px";
        dxsoft_library.MoveToCenter(dximgviewer.div);
        if(height==this.imgprel.height)
        {            
            this.img.style.visibility="visible";
        }
        else
            setTimeout(dxsoft_library.CreateMethod(this,this.AlHeight),10); 
    },
    OnCurImgError:function()
    {      
        this.preloader.style.display="none";  
    },
    OnNextClick:function(){
        for(var i=0;i<this.imglist.length;++i)
        {
            if(this.imglist[i]==this.currentimg)
            {
                if(i==(this.imglist.length-1))
                    this.Show(this.imglist[0]);
                else
                    this.Show(this.imglist[i+1]);
                return;
            }
        }  
    },
    OnPrevClick:function(){
        for(var i=0;i<this.imglist.length;++i)
        {
            if(this.imglist[i]==this.currentimg)
            {
                if(i==0)
                    this.Show(this.imglist[this.imglist.length-1]);
                else
                    this.Show(this.imglist[i-1]);
                return;
            }
        }
    },
    FillPager:function()
    {
        if(this.isshowpager)
        {
            if(this.imglist.length>1)
            {
                this.text.innerHTML="";
                this.span = document.createElement("SPAN");
                this.span.innerHTML="1";
                this.text.appendChild(this.span);
                for(var i=0;i<this.imglist.length;++i)
                {
                    var a = document.createElement("A");
                    a.href="javascript:;";
                    a.innerHTML = i+1;
                    a.picurl = this.imglist[i];
                    a.ctrl = this;
                    dxsoft_library.DoTask(a,dxsoft_library.CreateMethod(a,function(){this.ctrl.Show(this.picurl,this.ctrl.parentdiv);}),"click");
                    if(i==0)
                    {
                        this.currentLink = a;
                        a.style.display = "none";
                    }
                    this.text.appendChild(a);
                }   
            }
            else            
                this.text.innerHTML="";            
        }
    },
    SetPictures:function(imglist)
    {
        this.imglist=imglist;
        this.FillPager();
    }
}