var AllImagesArray=new Array();
var PopUp=null;
function SetSelect(obj, data)
{
    for(var i=0; i<obj.childNodes.length; i++)
    {
        if(obj.childNodes[i].value==data)
        {
            obj.selectedIndex=i;
            break;
        }
    }
}
function initGalery(a , b)
{
    var obj=document.getElementById("slgalery");
    fillSelect(obj, null);
    if((a!=null)&&(b!=null))
    {
        galleryPage=0;
        SetSelect(document.getElementById('slgalery'), a);
        //document.getElementById('slgalery').selectedIndex=a;
        fillSelect(document.getElementById('slsub'), document.getElementById('slgalery').selectedIndex);
        SetSelect(document.getElementById('slsub'), b);
        //document.getElementById('slsub').selectedIndex = b;
        selChange(document.getElementById('slsub'));
    }
    else
    {
        fillAllImages();
    }
}
function remvChild(obj)
{
    var i=obj.childNodes.length-1;
    while(i>=0)
    {
        if(obj.childNodes[i].childNodes.length!=0)
        {
            remvChild(obj.childNodes[i]);
        }
        obj.removeChild(obj.childNodes[i]);
        i--;
    }
}

function fillSelect(obj, indx)
{
    remvChild(obj);
    if(obj.id=="slgalery")
    {
        var addText=document.createTextNode("Выберите галерею");
    }
    else
    {
        var addText=document.createTextNode("Выберите раздел");
    }
    
    var OptElem=document.createElement("option");
    OptElem.appendChild(addText);
    obj.appendChild(OptElem);

    if(obj.id=="slgalery")
    {
        for(var i=0; i<GaleryData.length; i++)
        {
            var addText=document.createTextNode(GaleryData[i].img);
            var OptElem=document.createElement("option");
            OptElem.appendChild(addText);
            obj.appendChild(OptElem);
        }
    }
    else
    {
        for(var i=0; i<GaleryData[indx-1]['child'].length; i++)
        {
            var addText=document.createTextNode(GaleryData[indx-1]['child'][i].img);
            var OptElem=document.createElement("option");
            OptElem.appendChild(addText);
            obj.appendChild(OptElem);
        }
    }
}

function selChange(obj)
{
    if(obj!=null)
    {
        if(obj.id=="slgalery")
        {
            if(obj.selectedIndex==0) return;
            fillSelect(document.getElementById('slsub'), obj.selectedIndex);
        }
        else
        {
            if(obj.selectedIndex==0) return;
            galleryPage=0;
            fillImageBox(document.getElementById('slgalery').selectedIndex, document.getElementById('slsub').selectedIndex);
        }
    }
}

function fillPreview(id_gal, id_sub, start, end)
{
    if((id_sub==0)||(id_gal==0)) return;
    if((id_sub==null)&&(id_gal==null))
    {
        var imgCount=end-start;
    }
    else
    {
        var imgCount=GaleryData[id_gal-1]['child'][id_sub-1]['child'].length;
    }
    var pagesCount=Math.ceil(imgCount/20);
    var rowcount=Math.ceil((imgCount-(pagesCount-1)*20) /5);
    if(rowcount>5)
    {
        rowcount=5;
    }
    var obj = document.getElementById("imgpreview");
    if(obj.childNodes.length!=0)
    {
        remvChild(obj);
    }
    var tbl=document.createElement("TABLE");
    obj.appendChild(tbl);
    for(var i=0; i<rowcount; i++)
    {
        var tr=tbl.insertRow(-1);
        if((i+1)*5 < imgCount)
        {
            var cnt=5;
        }
        else
        {
            var cnt=imgCount-i*5;
        }
        if((id_sub==null)&&(id_gal==null))
        {
            for(var j=0; j<cnt; j++)
            {
                 var td=tr.insertCell(-1);
                 td.style.padding=8;
                 var ImgElem=document.createElement("img");
                 var newAttr = document.createAttribute("middle");
                 newAttr.nodeValue = AllImagesArray[start+i*5+j][0].middle;
                 ImgElem.setAttributeNode(newAttr); 
                 var newAttr = document.createAttribute("full");
                 newAttr.nodeValue = AllImagesArray[start+i*5+j][0].full;
                 ImgElem.setAttributeNode(newAttr); 
                 ImgElem.onclick=function(event){return fillMiddleImage(event, this);};
                 ImgElem.src=AllImagesArray[start+i*5+j][0].small;
                 td.appendChild(ImgElem);
                 if((i==0)&&(j==0))
                 {
                    fillMiddleImage(null, ImgElem, null);
                 }
            }
        }
        else
        {
            for(var j=0; j<cnt; j++)
            {
                 var td=tr.insertCell(-1);
                 td.style.padding=8;
                 var ImgElem=document.createElement("img");
                 var newAttr = document.createAttribute("middle");
                 newAttr.nodeValue = galleryPath+'/'+GaleryData[id_gal-1].img+galleryMiddle+'/'+GaleryData[id_gal-1]['child'][id_sub-1].img+'/'+GaleryData[id_gal-1]['child'][id_sub-1]['child'][galleryPage*20+i*5+j].img;
                 ImgElem.setAttributeNode(newAttr); 
                 var newAttr = document.createAttribute("full");
                 newAttr.nodeValue = galleryPath+'/'+GaleryData[id_gal-1].img+'/full/'+GaleryData[id_gal-1]['child'][id_sub-1].img+'/'+GaleryData[id_gal-1]['child'][id_sub-1]['child'][galleryPage*20+i*5+j].img;
                 ImgElem.setAttributeNode(newAttr); 
                 ImgElem.onclick=function(event){return fillMiddleImage(event, this);};
                 ImgElem.src=galleryPath+'/'+GaleryData[id_gal-1].img+gallerySmall+'/'+GaleryData[id_gal-1]['child'][id_sub-1].img+'/'+GaleryData[id_gal-1]['child'][id_sub-1]['child'][galleryPage*20+i*5+j].img;
                 td.appendChild(ImgElem);
                 if((i==0)&&(j==0))
                 {
                    fillMiddleImage(null, ImgElem, null);
                 }
            }
            fillPages(galleryPage, pagesCount);
        }
        
    }
    
}
function ourResize()
{
	var posX = Math.round( ( screen.width - popUpImg.width ) / 2 );
    var posY = Math.round( ( screen.height - popUpImg.height ) / 2 );

    PopUp.resizeTo(popUpImg.width, popUpImg.height)
    PopUp.moveTo(posX, posY);
}

function showPopUpImage(event, obj)
{
    if(PopUp!=null) PopUp.close();
    popUpImg = new Image();  
    popUpImg.src = obj.full;
    popUpImg.onload = function(event){return ourResize();};
//    popUpImg.onload = function(event){return PopUp.resizeTo(popUpImg.width, popUpImg.height);};
    if(popUpImg.width==0)
    {
	    iOptions = 'width=10,height=10,resizable=no,toolbar=no,status=yes';
	}
	else
	{
    	var posX = Math.round( ( screen.width - popUpImg.width ) / 2 );
        var posY = Math.round( ( screen.height - popUpImg.height ) / 2 );
	    iOptions = 'left='+posX+', top='+posY+',width='+popUpImg.width+',height='+popUpImg.height+',resizable=no,toolbar=no,status=yes';
	}
    
    PopUp = window.open('', '_blank', iOptions);;
    PopUp.document.write('<html><head><title>Pistenbully</title></head><body style="background: #fff; margin: 0; padding: 0;">' +
			'<table cellpadding="0" cellspacing="0" border="0" height="100%"><tr><td>' + 
			'<img src="'+obj.full+'" /></td></tr></table></body></html>');
    
}

function fillMiddleImage(event, obj, indx)
{
    var middle = document.getElementById("imgcontent");
    middle.style.padding=10;
    if(middle.childNodes.length!=0)
    {
        remvChild(middle);
    }
    var ImgElem=document.createElement("img");
    ImgElem.onclick =function(event){return showPopUpImage(event, this);}; 
    if(obj!=null)
    {
        ImgElem.src=obj.middle;
        var newAttr = document.createAttribute("full");
        newAttr.nodeValue = obj.full;
        ImgElem.setAttributeNode(newAttr); 
    }
    else
    {
        ImgElem.src=AllImagesArray[indx][0].middle;
        var newAttr = document.createAttribute("full");
        newAttr.nodeValue = AllImagesArray[indx][0].full;
        ImgElem.setAttributeNode(newAttr); 
    }
    middle.appendChild(ImgElem);
}

function fillImageBox(id_gal, id_sub)
{
    fillPreview(id_gal, id_sub, null, null);
}

function AllImageCount(obj, level)
{
    var allcnt=0;
    for(var i=0; i<obj.length; i++)
    {
        if(obj[i].child!="null")
        {
            level.push(obj[i].img);
            allcnt+=AllImageCount(obj[i].child, level);
        }
        else
        {
            allcnt++;
            var imData=new Array();
            imData['small']=galleryPath+'/'+level[0]+gallerySmall+'/'+level[1]+'/'+obj[i].img;
            imData['middle']=galleryPath+'/'+level[0]+galleryMiddle+'/'+level[1]+'/'+obj[i].img;
            imData['full']=galleryPath+'/'+level[0]+galleryFull+'/'+level[1]+'/'+obj[i].img;
            AllImagesArray.push(new Array(imData));
        }
        
    }
    level.pop();
    return allcnt;
}

function fillAllImages()
{
    var level=new Array();
    var allcnt=AllImageCount(GaleryData, level);
    var pageCount = Math.ceil(allcnt/20);
    if((galleryPage+1)*20 < allcnt)
    {
        var cnt=20;
    }
    else
    {
       var cnt=allcnt-galleryPage*20;
    }
    fillPreview(null, null, galleryPage*20, galleryPage*20+cnt);
    fillPages(galleryPage, pageCount);
//    fillMiddleImage(event, null, galleryPage*20);
}

function fillPages(curPage, pagecount)
{
    var obj=document.getElementById("imgpages");
    remvChild(obj);
    obj.style.padding=10;

    var tbl=document.createElement("TABLE");
    obj.appendChild(tbl);
    var tr=tbl.insertRow(-1);
    var td=tr.insertCell(-1);
     
    if(curPage!=0)
    {
        var newImg = document.createElement('IMG');
        newImg.src='/lib/design/pb/block-prev.png';
        newImg.onclick=function(event){return showPrevPage(event, this);};
        var td=tr.insertCell(-1);
        td.appendChild(newImg);
        td.style.padding=10;
    }
    var addText=document.createTextNode("страница");
    var td=tr.insertCell(-1);
    td.appendChild(addText);
    td.style.padding=5;
  
    for(var i=0; i < pagecount; i++)
    {
        var newFont = document.createElement('font'); 
        newFont.color="#CC)0000"; 
        if(i!=curPage)
        {
            var td=tr.insertCell(-1);
            var newAttr = document.createAttribute("page");
            newAttr.nodeValue = i;
            td.setAttributeNode(newAttr); 
            td.onclick=function(event){return showNewPage(event, this);};
            td.onmouseover=function(event){return document.body.style.cursor="hand";};
            td.onmouseout=function(event){return document.body.style.cursor="";};            
            var addText=document.createTextNode((i+1));
            newFont.appendChild(addText);
            td.appendChild(newFont);
            td.style.padding=3;
        }

        else
        {
            var td=tr.insertCell(-1);
            var newB = document.createElement('b'); 
            var newAttr = document.createAttribute("page");
            newAttr.nodeValue = i;
            td.setAttributeNode(newAttr); 
            td.onclick=function(event){return showNewPage(event, this);};
            td.onclick=function(event){return showNewPage(event, this);};
            td.onmouseover=function(event){return document.body.style.cursor="hand";};
            td.onmouseout=function(event){return document.body.style.cursor="";};            
            var addText=document.createTextNode((i+1));
            newB.appendChild(addText);
            newFont.appendChild(newB);
            td.appendChild(newFont);
            td.style.padding=3;
        }
    }
    if(curPage!=(pagecount-1))
    {
        var td=tr.insertCell(-1);
        var newImg = document.createElement('IMG');
        newImg.src='/lib/design/pb/block-next.png';
        newImg.onclick=function(event){return showNextPage(event, this);};
        td.appendChild(newImg);
        td.style.padding=10;
    }
    
}

function showNewPage(event, obj)
{

    if(obj!=null)
    {
        galleryPage=obj.page;
    }
    if((document.getElementById('slgalery').selectedIndex==0)&&(document.getElementById('slsub').selectedIndex==0))
    {
        fillAllImages();
    }
    else
    {
        fillImageBox(document.getElementById('slgalery').selectedIndex, document.getElementById('slsub').selectedIndex);    
    }
}

function showNextPage(event, obj)
{
    galleryPage++;
    showNewPage(event, null);
}

function showPrevPage(event, obj)
{
    galleryPage--;
    showNewPage(event, null);
}