//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//      Author  :   Giovanni Gadaleta
//      Company :   BBJ SRL
//      Project :   Gallery JS v0.1
//      Date    :   17/02/2009
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

// SETUP THE ENVIRONMENT VARIABLES

//var pathToXml = "/richieste/reqGalleryXml.aspx?g=3";
var itemPerPage=5;

// IF U WANT, EDIT THIS LINE AS YOU LIKE
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
var linkPrec='<a href="javascript:bbjPrevPage();" title=\"Foto Precedente\"><img src="/img/arrow-left.gif" width="25" height="38" border="0" class="freccia" /></a>';
var linkSucc='<a href="javascript:bbjNextPage();" title=\"Foto Successiva\"><img src="/img/arrow-right.gif" width="25" height="42" border="0" class="freccia" /></a>';

var linkNoPrec='<img src="/img/arrow-left-deselect.gif" width="25" height="38" border="0" class="freccia" />';
var linkNoSucc='<img src="/img/arrow-right-deselect.gif" width="25" height="42" border="0" class="freccia" />';

// DO NOT EDIT THIS LINES.
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
var indexPagination=0;
var indexCurrentImage=0;
var bbjHttpXmlRequest;
var bbjXmlGallery;

var nomeGalleria;
var descrizioneGalleria;
var arrThumb;
var arrMedium;
var arrOriginal;
var arrNome;
var arrDescrizione;
var tempLoad = new Array();
var arrBigImgPreload;
var noDescr;

function initGallery(pathToXml,bDescr) {
	bbjHttpXmlRequest=bbjLoadXMLDoc(pathToXml);
	noDescr = bDescr;
}

function bbjLoadXMLDoc(url)
{
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
}

function processReqChange() 
{
    if (req.readyState == 4) {
        if (req.status == 200) {
            bbjXmlGallery = req.responseXML;
            
            nomeGalleria = bbjParsePath('/galleria/nome',bbjXmlGallery)[0];
            descrizioneGalleria = bbjParsePath('/galleria/descrizione',bbjXmlGallery)[0];

            arrThumb = bbjParsePath('/galleria/immagini/immagine/thumb',bbjXmlGallery);
            arrMedium = bbjParsePath('/galleria/immagini/immagine/medium',bbjXmlGallery);
            arrOriginal = bbjParsePath('/galleria/immagini/immagine/original',bbjXmlGallery);
            arrNome = bbjParsePath('/galleria/immagini/immagine/nome',bbjXmlGallery);
            arrDescrizione = bbjParsePath('/galleria/immagini/immagine/descrizione',bbjXmlGallery);
            tempLoad = new Array();
            arrBigImgPreload = bbjParsePath('/galleria/immagini/immagine/medium',bbjXmlGallery);
            bbjGalInit();
        } else {
            var layerGal=document.getElementById('bbjLayerGallery');
            layerGal.innerHTML = "BBJGAL: Error loading Xml Data:" + req.statusText + " " + req.responseText;
        }
    }
}

function bbjParsePath(path,xml)
{
	var arrItem = new Array();
	// code for IE
	if (window.ActiveXObject)
	{
		var nodes=xml.selectNodes(path);

		for (i=0;i<nodes.length;i++)
		  {
		  arrItem.push(nodes[i].childNodes[0].nodeValue);
		  }
	}
	// code for Mozilla, Firefox, Opera, etc.
	else if (document.implementation && document.implementation.createDocument)
	{
		var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
		var result=nodes.iterateNext();

		while (result)
		  {
		  arrItem.push(result.childNodes[0].nodeValue);
		  result=nodes.iterateNext();
		  }
	}
	return(arrItem);
}

function bbjPreloadImages(arr){
	for (i=0;i<arr.length;i++){
		tempLoad[i] = new Image();
		tempLoad[i].src = arr[i];
	}
}

function bbjPreloadBigImages(arr,start,item){
	for (i=start;i<item;i++){
		if(typeof(arrBigImgPreload[i]) == 'string')
		{
			arrBigImgPreload[i] = new Image();
			arrBigImgPreload[i].src = arr[i];
		}
	}
}



function bbjSetImg(indexImg)
{
	var item = arrMedium[indexImg];
	if(item != '' && item != undefined)
	{
		var imgElement = document.getElementById('bbjgalMainImage');
		imgElement.style.backgroundImage='url(' + arrMedium[indexImg] + ')';
		
		for (var k in arrThumb)
		{
		    thumbFree = document.getElementById('bbjThumbGal_' + k);
		    if(thumbFree)
                thumbFree.className = "thumb";    
		}
		var thumbSelected = document.getElementById('bbjThumbGal_' + indexImg);
		if(thumbSelected)
		    thumbSelected.className = "selected";
		
		var BigImageLink = document.getElementById('bbjBigImageLink');
		BigImageLink.href="javascript:bbjNextImage(" + (indexImg + 1) + ");";
		
		var descrElement = document.getElementById('bbjDescr');
		if(noDescr == true)
		{
			descrElement.style.display = 'none';
		}
		descrElement.innerHTML = "<strong>" + arrNome[indexImg] + "</strong><br />" + arrDescrizione[indexImg];
	}
}

function bbjCreateThumb(start,last)
{
	var str="";
	if(indexPagination > 0)
	{
		str = linkPrec;
	}
	else
	{
		str = linkNoPrec;
	}
	bbjPreloadBigImages(arrBigImgPreload,start,last);
	for(var counter=start;counter<last;counter++)
	{
		var thumb = arrThumb[counter];
		var nome = arrNome[counter];
		
		if(thumb != '' && thumb != undefined)
		{
			str += "<a href=\"javascript:bbjSetImg(" + counter + ");\" title=\"" + nome + "\"><img id=\"bbjThumbGal_" + counter + "\" src=\"/img/spacer.gif\" width=\"80\" height=\"60\" border=\"0\" style=\"background-image:url(" + thumb + ")\" class=\"thumb\" /></a>";
		}
		else
		{
		    str += "<img src=\"/img/spacer.gif\" width=\"80\" height=\"60\" border=\"0\" />";
		}
	}
	if(counter < arrThumb.length)
	{
		str += linkSucc;
	}
	else
	{
		str += linkNoSucc;
	}
	
	return(str);
}

function bbjNextImage(indexImgNext)
{
	var isInArray = false;
	var nextItem = arrThumb[indexImgNext];
	if(nextItem != '' && nextItem != undefined)
	{
		var startIndex=indexPagination * itemPerPage;
		var stopIndex = startIndex + itemPerPage;
		if((indexImgNext <= startIndex) || (indexImgNext >= stopIndex))
		{
			bbjNextPage();
		}
		//init first image
		bbjSetImg(indexImgNext);
	}
	else
	{
	    indexPagination=0;
	    
	    //prepare links thumb
		var elThumbs = document.getElementById('bbjThumbs');
		elThumbs.innerHTML = bbjCreateThumb(0,itemPerPage);
		
		//init first image
		bbjSetImg(0);
	}
}

function bbjNextPage()
{
	if(arrThumb.length > 0)
	{
		indexPagination++;
		//indexPagination
		var nextIndex=indexPagination * itemPerPage;
		
		var elThumbs = document.getElementById('bbjThumbs');
		elThumbs.innerHTML = bbjCreateThumb(nextIndex,(nextIndex + itemPerPage));
	}
}

function bbjPrevPage()
{
	if(arrThumb.length > 0)
	{
		indexPagination--;
		
		//indexPagination
		var nextIndex=indexPagination * itemPerPage;
		
		var elThumbs = document.getElementById('bbjThumbs');
		elThumbs.innerHTML = bbjCreateThumb(nextIndex,(nextIndex + itemPerPage));
	}
}

//window.onload=function()
function bbjGalInit()
{
	var elNomeGalleria = document.getElementById('bbjNomeGalleria');
	if(noDescr == true)
	{
		elNomeGalleria.style.display = 'none';
	}
	elNomeGalleria.innerHTML = nomeGalleria;
	var elDescrizioneGalleria = document.getElementById('bbjDescrizioneGalleria');
	if(noDescr == true)
	{
		elDescrizioneGalleria.style.display = 'none';
	}
	elDescrizioneGalleria.innerHTML = descrizioneGalleria;
		
	var elThumbs = document.getElementById('bbjThumbs');
	if(arrThumb.length > 0)
	{
		//preload thumb 
		bbjPreloadImages(arrThumb);

		//prepare links thumb
		elThumbs.innerHTML = bbjCreateThumb(0,itemPerPage);
		
		//init first image
		bbjSetImg(0);
	}
}


