﻿var galPointer = 0;
var galData = new Object();
var galOuterDiv;
var galSelectorDiv;
var galNumbers;
var galPageRef;
var galTitle;
var galSiteRoot;

function doGallery(obj,urlBase,src){
	galPageRef=obj.innerHTML;
	galSiteRoot = urlBase + '/';
	galleryInit(galPageRef,src);
}

function galleryInit(galPageRef,src){
	//galleryAlert("init");
	galOuterDiv = document.getElementById("graphical-header");
	galSelectorDiv = document.getElementById("gallery-selector");
	//galPrevDiv = document.getElementById("gallery-prev");
	//galNextDiv = document.getElementById("gallery-next");
	if (src != 'central' && src != 'local') src = 'local';
	new Ajax.Request('interactivePanelHandler.axd',{
		method:'post',
		parameters: {p: galPageRef, sd: src},
		onSuccess: function(transport){
			var json = transport.responseText.evalJSON();
			galData = json.gallery;
			for(var i=0; i<galData.length; i++){
				galData[i].imageurl = galData[i].imageurl.replace(/\(/, '%28');
				galData[i].imageurl = galData[i].imageurl.replace(/\)/, '%29');
				galData[i].imageurl = galData[i].imageurl.replace(/"/, '%22');
				galData[i].imageurl = galData[i].imageurl.replace(/'/, '%27');
			}
			galleryDraw(galPointer);
		}
	});
}

function galleryDraw(which){
	// Check whether there are any gallery images to display
	if (galData.length > 0) {
		galleryPlaceImage(which);
		if(galData.length > 1){
		    galleryDrawPrev(which);
		    galleryDrawSelector(which);
		    galleryDrawNext(which);
		}
		galleryDrawTitle(which); // NB. Moved below selector block for Fanhams
		galleryDrawClear();
		//galleryHideDefaultImage();
		galSelectorDiv.style.display = 'block';
		// START Fanhams specific
		ftnGetObject('gallery-on').style.display = 'block';
		// START Fanhams specific
	}
	return false;
}

function galleryPlaceImage(which){
	var gallImg = galData[which].imageurl;
	//galleryAlert(gallImg);
	galOuterDiv.style.backgroundImage = "url(" + galSiteRoot + gallImg + ")";
	//image.style.backgroundRepeat = "no-repeat";
}

function galleryDrawTitle(which){
	var para = document.createElement("p");
	galSelectorDiv.appendChild(para);
	para.className = "title";
	para.setAttribute("id", "galTitle");
	var title = document.createTextNode(galData[which].subjecttitle);
	galTitle = galData[which].subjecttitle;
	para.appendChild(title);
}

function galleryChangeTitle(whichTitle){
	var ref = whichTitle.getAttribute("href");
	var index = ref.substring(1);
	var newTitle = galData[index].subjecttitle;
	var titleElement = document.getElementById("galTitle");
	titleElement.innerHTML = newTitle;
}

function galleryReverseTitle(){
	var titleElement = document.getElementById("galTitle");
	titleElement.innerHTML = galTitle;
}

function galleryDrawSelector(which){
	galNumbers = document.createElement("div");
	galNumbers.setAttribute("id", "numbers");
	galSelectorDiv.appendChild(galNumbers);
	for(var i=0;i<galData.length;i++){
		var imageurl = galData[i].imageurl;
		var div = document.createElement("div");
		galNumbers.appendChild(div);
		div.className = "imgnum";
		var num = document.createTextNode(i+1);
		if(i != galPointer){
			var anch = document.createElement("a");
			div.appendChild(anch);
			anch.setAttribute("href", ("#" + i));
			anch.appendChild(num);
		}else{
			div.appendChild(num);
		}
	}
	var links = galNumbers.getElementsByTagName("a");
	for(var x=0;x<links.length;x++){
		links[x].onclick = function(){
			return galleryShowPic(this);
		}
		links[x].onmouseover = function(){
			return galleryChangeTitle(this);
		}
		links[x].onmouseout = function(){
			return galleryReverseTitle();
		}
	}
}

function galleryDrawPrev(which){
	var prevImg = Number(which) - 1;
	var imageurl = galData[which].imageurl;
	var div = document.createElement("div");
	div.setAttribute("id", "galPrev");
	galSelectorDiv.appendChild(div);
	div.className = "imgnum";
	var prevText = document.createTextNode("<");
	
	if(which>0){
		var anch = document.createElement("a");
		div.appendChild(anch);
		anch.setAttribute("href", ("#" + prevImg));
		anch.appendChild(prevText);
		anch.onclick = function(){
			return galleryShowPic(this);
		}
		anch.onmouseover = function(){
			return galleryChangeTitle(this);
		}
		anch.onmouseout = function(){
			return galleryReverseTitle();
		}
	}else{
		div.appendChild(prevText);
	}
}

function galleryDrawNext(which){
	var nextImg = Number(which) + 1;
	var imageurl = galData[which].imageurl;
	var div = document.createElement("div");
	div.setAttribute("id", "galNext");
	galSelectorDiv.appendChild(div);
	div.className = "imgnum";
	var nextText = document.createTextNode(">");
	
	if(which<(galData.length-1)){
		var anch = document.createElement("a");
		div.appendChild(anch);
		anch.setAttribute("href", ("#" + nextImg));
		anch.appendChild(nextText);
		anch.onclick = function(){
			return galleryShowPic(this);
		}
		anch.onmouseover = function(){
			return galleryChangeTitle(this);
		}
		anch.onmouseout = function(){
			return galleryReverseTitle();
		}
	}else{
		div.appendChild(nextText);
	}
}

function galleryDrawClear(){
	var div = document.createElement("div");
	div.className = "clear";
	galSelectorDiv.appendChild(div);
}

function galleryIndexSelector(oldIndex, newIndex){
	var oldNumber = Number(oldIndex) + 1;
	var newNumber = Number(newIndex) + 1;
	var links = galNumbers.getElementsByTagName("a");
	for(var i=0;i<links.length;i++){
		
		var test = links[i].getAttribute("href").substring(1);
		if(test == newIndex){
			links[i].parentNode.innerHTML = newNumber;
		}
	}
	//Activate the old index
	var elementToActivate = galNumbers.getElementsByTagName("div")[oldIndex];
	elementToActivate.innerHTML = "";
	var newLink = document.createElement("a");
	elementToActivate.appendChild(newLink);
	newLink.setAttribute("href", "#" + oldIndex);
	var text = document.createTextNode(oldNumber);
	newLink.appendChild(text);
	newLink.onclick = function(){
		return galleryShowPic(this);
	}
	newLink.onmouseover = function(){
		return galleryChangeTitle(this);
	}
	newLink.onmouseout = function(){
		return galleryReverseTitle();
	}
	//Sort the prev and next
	//prev first
	var prevDiv = document.getElementById("galPrev");
	var prevText = document.createTextNode("<");
	var prevImg = Number(newIndex) - 1;
	prevDiv.innerHTML = "";
	if(newIndex>0){
		var anch = document.createElement("a");
		prevDiv.appendChild(anch);
		anch.setAttribute("href", ("#" + prevImg));
		anch.appendChild(prevText);
		anch.onclick = function(){
			return galleryShowPic(this);
		}
		anch.onmouseover = function(){
			return galleryChangeTitle(this);
		}
		anch.onmouseout = function(){
			return galleryReverseTitle();
		}
	}else{
		prevDiv.appendChild(prevText);
	}
	//next last
	var nextDiv = document.getElementById("galNext");
	var nextText = document.createTextNode(">");
	var nextImg = Number(newIndex) + 1;
	nextDiv.innerHTML = "";
	if(newIndex<(galData.length-1)){
		var anch = document.createElement("a");
		nextDiv.appendChild(anch);
		anch.setAttribute("href", ("#" + nextImg));
		anch.appendChild(nextText);
		anch.onclick = function(){
			return galleryShowPic(this);
		}
		anch.onmouseover = function(){
			return galleryChangeTitle(this);
		}
		anch.onmouseout = function(){
			return galleryReverseTitle();
		}
	}else{
		nextDiv.appendChild(nextText);
	}
}

function galleryShowPic(whichPic){
	
	var ref = whichPic.getAttribute("href");
	var index = ref.substring(1);
	var img = galData[index].imageurl;
	var newTitle = galData[index].subjecttitle;
	var oldIndex = galPointer;
	galTitle = newTitle;
	galPointer = index;
	galOuterDiv.style.backgroundImage = "url(" + galSiteRoot + img + ")";
	galleryIndexSelector(oldIndex, galPointer);
	var titleElement = document.getElementById("galTitle");
	titleElement.innerHTML = newTitle;
	return false;
}

function galleryHideDefaultImage(){
	var dImage = ftnGetObject('gallery-default');
	var container = dImage.parentNode;
	container.removeChild(dImage);
}


	
function galleryAlert(string){
	alert("GALLERY SAYS: " + string);
}

//
// Fanhams specific functions
//
function ftnToggleGallery(blnState){
	if (blnState){
		ftnGetObject('graphical-header').style.display = 'block';
	} else {
		ftnGetObject('graphical-header').style.display = '';
	}
	// Stop the link going anywhere
	return false;
}