var totalImages			= 0;

var imageNumber			= 1;
var imageStr			= "01";
var nextId				= 1;

var countHidden			= 0;

var shareActive			= false;
var imagesShown			= 0;
var intervalId			= 0;

var slideShowActive		= false;
var slideShowInterval	= 0;

var EmailResult			= 'success';

var egtLang = ({
	en: {
		"series":" of ",
		"next":"106",
		"previous":"60",
		"share":"SHARE",
		"slideshowOn":"START SLIDESHOW",
		"slideshowOff":"STOP SLIDESHOW",
		"fullscreen":"FULLSCREEN"
	},
	gd: {
		"series":" a-mach à ",
		"next":"An ath dhealbh",
		"previous":"An dealbh mu dheireadh",
		"share":"ROINN",
		"slideshowOn":"TÒISICH SLIDESHOW",
		"slideshowOff":"STAD SLIDESHOW",
		"fullscreen":"LÀN SGRION"
	}
});

var egt = {
	createGallery:function(){
		if(egtOptions.itemsData[0] != null)
		{
			egtOptions.itemsData.unshift(null);
		}

		egt.setDefaults();

		// Only one image on the screen
		// This is only true when the page is first loaded
		// Use this single image to find out the page number
		//if(glow.dom.get(".egt-imgholder").length == 1)
		if(glow.dom.get(".egt-display img").length == 1)
		{
			//var myNumber = glow.lang.replace(glow.dom.get(".egt-imgholder").attr('id'), 'egt-img', '');
			var myNumber = glow.lang.replace(glow.dom.get(".egt-display img").attr('id'), 'egt-img', '');
			if(myNumber.charAt(0) == '0')
			{
				myNumber = myNumber.charAt(1);
			}
			imageNumber = parseInt(myNumber);
			imageStr	= egt.getImageIdAsString(myNumber);


		}

		totalImages	= (egtOptions.itemsData.length - 1);

		egt.setControls();

		egt.registerPrevLink();
		egt.registerNextLink();
		egt.registerThumbLink();
		egt.registerShareLink();
		egt.registerSlideShowLink();
	},
	setDefaults:function(){
		if(egtOptions.language == undefined || egtOptions.language == "")
		{
			egtOptions.language = 'en';
		}

		if(egtOptions.slideshow.delay == undefined || egtOptions.slideshow.delay == "")
		{
			egtOptions.slideshow.delay = 2000;
		}
	},
	registerPrevLink:function(){
		glow.events.addListener(glow.dom.get("a.egt-prev"), 'click', function(e){
			e.preventDefault();
			egt.SlideShow.stop('a.egt-prev');
			egt.closeShareScreen('egt.ChangeImage.init('+(imageNumber-1)+')');
		});
	},
	registerNextLink:function(){
		glow.events.addListener(glow.dom.get("a.egt-next"), 'click', function(e){
			e.preventDefault();
			egt.SlideShow.stop('a.egt-next');
			egt.closeShareScreen('egt.ChangeImage.init('+(imageNumber+1)+')');
		});
	},
	registerThumbLink:function(){
		glow.events.addListener(glow.dom.get(".egt-thumbs a"), 'click', function(e){
			e.preventDefault();

			var tmpStr = glow.lang.replace(glow.dom.get(this).attr("id"), 'egt-thumb', '');
			if(tmpStr.charAt(0) == '0')
			{
				tmpStr = tmpStr.substring(1, (tmpStr.length));
			}
			tmpStr = parseInt(tmpStr);

			egt.SlideShow.stop(".egt-thumbs a");
			egt.closeShareScreen('egt.ChangeImage.init('+parseInt(tmpStr)+')');
			document.location.hash = 'egt';
		});
	},
	registerShareLink:function(){
		glow.events.addListener(glow.dom.get(".egt-share a"), 'click', function(e){
			e.preventDefault();
			egt.SlideShow.stop('a.egt-next');
			glow.dom.get(".egt-share a").addClass("active");

			var posLeft = parseInt(glow.dom.get(".egt-share").offset().left) - parseInt(glow.dom.get(".egt-frame").offset().left);

			if(shareActive == false)
			{
				glow.net.get('/scotland/sitewide/egt/r02/lang/'+egtOptions.language+'/share.sssi?url='+egtOptions.url+imageStr+'/', {
					onLoad: function(response) {
						glow.dom.get(".egt-frame").append(response.text());
						glow.dom.get(".egt-share-options").attr("style", "left:"+posLeft+"px;");

						var fadeIn = glow.anim.css(".egt-share-options", .5, {"opacity" : {from:0,to:1}}).start();
						glow.events.addListener(fadeIn, "complete", function(){
							shareActive = true;
							intervalId =  setInterval("egt.timeoutShareOptions()", 1500);
							egt.registerSendToFriend();
							egt.registerLinkToThis();

						});

//						var myMouseOver = glow.events.addListener(glow.dom.get(".egt-frame .egt-share-options"), 'mouseover', function(e){
//							e.preventDefault();
//							clearInterval(intervalId);
//						});
//
//						var myMouseOut = glow.events.addListener(glow.dom.get(".egt-frame .egt-share-options"), 'mouseout', function(e){
//							e.preventDefault();
//							intervalId =  setInterval("egt.timeoutShareOptions()", 1000);
//						});
						
					},
					onError: function(response) {
					}
				});
			}
			else if(shareActive == true)
			{
				egt.timeoutShareOptions();
			}
		});
	},
	registerSlideShowLink:function(){
		glow.events.addListener(glow.dom.get(".egt-slide a"), 'click', function(e){
			e.preventDefault();
			egt.closeShareScreen('egt.SlideShow.init()');
		});
	},
	registerSendToFriend:function(){
		glow.events.addListener(glow.dom.get("a.egt-sendtoafriend"), 'click', function(e){
			e.preventDefault();
			egt.SendToAFriend.init();
		});
	},
	registerLinkToThis:function(){
		glow.events.addListener(glow.dom.get("a.egt-linktothis"), 'click', function(e){
			e.preventDefault();
			egt.LinkToThis.init();
		});
	},
	registerShareClose:function(){
		glow.events.addListener(glow.dom.get(".egt-share-close a"), 'click', function(e){
			e.preventDefault();

			egt.closeShareScreen(null);
		});
	},
	registerSend:function(){
		glow.events.addListener(glow.dom.get(".egt-share-send a"), 'click', function(e){
			e.preventDefault();
			egt.selectSendButton();
		});
	},
	registerSendAnother:function(){
		glow.events.addListener(glow.dom.get(".egt-share-sendanother a"), 'click', function(e){
			e.preventDefault();
			egt.SendToAFriend.init();
		});
	},




	closeShareScreen:function(callcack){
		if(glow.dom.get(".egt-sharescreen").length > 0)
		{
			// Fadeout the Share Screen
			var fadeOut = glow.anim.css(".egt-sharescreen", .5, {"opacity" : {from:1,to:0}}).start();
			glow.events.addListener(fadeOut, "complete", function(){
				glow.dom.get(".egt-sharescreen").remove();
				egt.expandImage();

				// Show the loader graphic
				glow.dom.get(".egt-loader").show();
				
				if(callcack != null)
				{
					eval(callcack);
				}
			});
		}
		else if(callcack != null)
		{
			eval(callcack);
		}
	},
















	expandImage:function(){
		var target = "#egt-img" + imageStr + "";
		glow.anim.css(target, .5, {"width" : {to:egtOptions.itemsData[imageNumber].width+'px'}}).start();
		glow.anim.css(target, .5, {"height" : {to:egtOptions.itemsData[imageNumber].height+'px'}}).start();

		glow.anim.css(target, .3, {"top" : {to:egtOptions.itemsData[imageNumber].top}}).start();
		glow.anim.css(target, .3, {"left" : {to:egtOptions.itemsData[imageNumber].left}}).start();
	},
	shrinkImage:function(func){
		var availableWidth	= (egtOptions.maxWidth - 450) - 20;
		var resizeRatio		= (availableWidth/egtOptions.itemsData[imageNumber].width);
		
		var imgSmallWidth	= egtOptions.itemsData[imageNumber].width * resizeRatio;
		var imgSmallHeight	= egtOptions.itemsData[imageNumber].height * resizeRatio;

		var target = "#egt-img" + imageStr + "";
		glow.anim.css(target, .5, {"width" : {to:imgSmallWidth+'px'}}).start();
		glow.anim.css(target, .5, {"height" : {to:imgSmallHeight+'px'}}).start();

		glow.anim.css(target, .3, {"top" : {to:10}}).start();
		glow.anim.css(target, .3, {"left" : {to:10}}).start();

		eval(func);
	},






	timeoutShareOptions:function(){
		clearInterval(intervalId);
		egt.closeShareOptions();
	},
	closeShareOptions:function(){
		var fadeOut = glow.anim.css(".egt-share-options", .5, {"opacity" : {from:1,to:0}}).start();
		glow.events.addListener(fadeOut, "complete", function(){
			glow.dom.get(".egt-share-options").remove();
			glow.dom.get(".egt-share a").removeClass("active");
			shareActive = false;
		});
	},
	setControls:function(){
		if(egtOptions.fullscreen.enable == 'true')
		{
			glow.dom.get('.egt-controls').append('<div class="egt-fullscreen"><a href="#" class=""><span>'+egtLang[egtOptions.language].fullscreen+'</span></a></div> ');
		}
		if(egtOptions.slideshow.enable == 'true')
		{
			glow.dom.get('.egt-controls').append('<div class="egt-slide"><a href="#"><span>'+egtLang[egtOptions.language].slideshowOn+'</span></a></div> ');
		}
		if(egtOptions.share.enable == 'true')
		{
			glow.dom.get('.egt-controls').append('<div class="egt-share"><a href="#"><span>'+egtLang[egtOptions.language].share+'</span></a></div> ');
		}
	},

	getImageId:function(myId){
		var tmpId = myId;
		if(myId < 1)
		{
			tmpId = totalImages;
		}
		else if(myId > totalImages)
		{
			tmpId = 1;
		}
		return tmpId;
	},
	getImageIdAsString:function(myId){
		var imgStr = (myId < 10)? ('0'+myId):(''+myId);
		return imgStr;
	},



	selectSendButton:function(){
		// First confirm that all the boxes are filled
		var formIsValid = true;
		var myEmailRecipient = glow.dom.get("input.EmailRecipient");
		var myEmailSender = glow.dom.get("input.EmailSender");
		var myEmailMessage = glow.dom.get("input.EmailMessage");

		if(myEmailRecipient.val() == '')
		{
			myEmailRecipient.css("background", "#F8625D");
			formIsValid = false;
		}
		else
		{
			myEmailRecipient.css("background", "#FFFFFF");
		}

		if(myEmailSender.val() == '')
		{
			myEmailSender.css("background", "#F8625D");
			formIsValid = false;
		}
		else
		{
			myEmailSender.css("background", "#FFFFFF");
		}

		if(myEmailMessage.val() == '')
		{
			myEmailMessage.css("background", "#F8625D");
			formIsValid = false;
		}
		else
		{
			myEmailMessage.css("background", "#FFFFFF");
		}


		if(formIsValid == true)
		{
			// Then submit values
			//egt.SentToAFriend.init();
			var postRef = glow.net.post("/apps/ifl/scotland/sitewide/egt/r02/lang/"+egtOptions.language+"/sendemail",
			{
				SuccessPage:'http://' + window.location.hostname + '/scotland/sitewide/egt/r02/lang/' + egtOptions.language + "/result.sssi?result=success",
				ErrorPage:'http://' + window.location.hostname + '/scotland/sitewide/egt/r02/lang/' + egtOptions.language + "/result.sssi?result=error",
				EmailSender:myEmailSender.val(),
				LinkURL:'http://' + window.location.hostname + egtOptions.url + imageStr + '/',
				EmailMessage:myEmailMessage.val(),
				EmailRecipient:myEmailRecipient.val(),
				EmailSubject:egtOptions.title
			},
			{
				onLoad: function(response){
					EmailResult = response.text();
					egt.SentToAFriend.init();
				},
				onError: function(response) {
					EmailResult = 'error';
					egt.SentToAFriend.init();
				}
			});
		}
	},

	ChangeImage: {

		init:function(myId){
			countHidden = 0;
			nextId = egt.getImageId(myId);

			egt.ChangeImage.load();
			egt.ChangeImage.fadeOutImage();
			egt.ChangeImage.fadeOutThumb();
			egt.ChangeImage.fadeOutSeriesText();
			egt.ChangeImage.fadeOutCaption();
		},

		load:function(){
			var imgStr = egt.getImageIdAsString(nextId);
			if(glow.dom.get("#egt-img"+imgStr).length !== 1)
			{
				var template = '<img src="' + egtOptions.url + '{src}" width="{width}" height="{height}" alt="{alt}" id="egt-img'+imgStr+'" style="top:{top};left:{left};" />';
				var result = glow.lang.interpolate(template, egtOptions.itemsData[nextId]);

				glow.dom.create(result).appendTo('.egt-display');
				
				var img = glow.dom.get("#egt-img"+imgStr);
				img.css('opacity', 0);
				glow.events.addListener(img, "error", function() {

				});
				glow.events.addListener(img, "load", function() {
					egt.ChangeImage.changeImageId();
				});
				img.attr('src', egtOptions.url + egtOptions.itemsData[nextId].src);
			}
			else
			{
				egt.ChangeImage.changeImageId();
			}
		},

		fadeOutImage:function(){
			var fadeOut = glow.anim.css("#egt-img"+imageStr, .5, {"opacity" : {from:1,to:0}}).start();
			glow.events.addListener(fadeOut, "complete", function(){
				egt.ChangeImage.changeImageId();
			});
		},

		fadeOutThumb:function(){
			var tmpId = imageStr;
			glow.dom.get("#egt-thumb"+tmpId).removeClass("active");
		},

		fadeOutSeriesText:function(){
			var fadeOut = glow.anim.css(".egt-progress", .5, {"opacity" : {from:1,to:0}}).start();
			glow.events.addListener(fadeOut, "complete", function(){
				egt.ChangeImage.changeImageId();
			});
		},

		fadeOutCaption:function(){
			var fadeOut = glow.anim.css(".egt-caption", .5, {"opacity" : {from:1,to:0}}).start();
			glow.events.addListener(fadeOut, "complete", function(){
				egt.ChangeImage.changeImageId();
			});
		},

		changeImageId:function(){
			countHidden++;

			if(countHidden == 4)
			{
				if(slideShowActive == true)
				{
					egt.SlideShow.clearDelay();
					egt.SlideShow.startDelay();
				}

				imageNumber	= egt.getImageId(nextId);
				imageStr	= egt.getImageIdAsString(nextId);

				egt.ChangeImage.setPrevLink();
				egt.ChangeImage.setNextLink();

				egt.ChangeImage.setSeriesText();
				egt.ChangeImage.setCaption();

				egt.ChangeImage.fadeInImage();
				egt.ChangeImage.fadeInThumb();
				egt.ChangeImage.fadeInSeriesText();
				egt.ChangeImage.fadeInCaption();
			}
		},

		setPrevLink:function(){
			var prevId = egt.getImageId(imageNumber-1);

			glow.dom.get(".egt-prev").attr('href', '../'+egt.getImageIdAsString(prevId)+'/');
		},

		setNextLink:function(){
			var nextId = egt.getImageId(imageNumber+1);

			glow.dom.get("a.egt-next").attr('href', '../'+egt.getImageIdAsString(nextId)+'/');
		},

		setSeriesText:function(){
			glow.dom.get(".egt-progress").empty().append((imageNumber) + egtLang[egtOptions.language].series + (totalImages));
		},

		setCaption:function(){
			glow.dom.get(".egt-caption").empty().append(egtOptions.itemsData[imageNumber].caption);
		},

		fadeInImage:function(){
			var fadeIn = glow.anim.css("#egt-img"+imageStr, .5, {"opacity" : {from:0,to:1}}).start();
			glow.events.addListener(fadeIn, "complete", function(){
			});
		},

		fadeInThumb:function(){
			glow.dom.get("#egt-thumb"+imageStr).addClass("active");
		},

		fadeInSeriesText:function(){
			var fadeIn = glow.anim.css(".egt-progress", .5, {"opacity" : {from:0,to:1}}).start();
			glow.events.addListener(fadeIn, "complete", function(){
			});
		},

		fadeInCaption:function(){
			var fadeIn = glow.anim.css(".egt-caption", .5, {"opacity" : {from:0,to:1}}).start();
			glow.events.addListener(fadeIn, "complete", function(){
			});
		}
	},

	SlideShow: {
		init:function(){
			if(slideShowInterval != 0)
			{
				egt.SlideShow.stop('init()');
			}
			else
			{
				egt.SlideShow.start();
			}
		},
							
		start:function(){
			egt.SlideShow.startDelay();
			glow.dom.get('.egt-slide a').addClass("active");
			glow.dom.get('.egt-slide a span').empty().append(egtLang[egtOptions.language].slideshowOff);
		},
		startDelay:function(){
			slideShowInterval = setInterval("egt.SlideShow.next()", egtOptions.slideshow.delay);
			slideShowActive = true;
		},
		next:function(){
			imagesShown++;

			if(imagesShown > totalImages)
			{
				egt.SlideShow.stop('imagesShown > totalImages');
			}
			else
			{
				egt.ChangeImage.init(imageNumber+1);
			}
		},
		clearDelay:function(){
			clearInterval(slideShowInterval);
			slideShowInterval = 0;
			slideShowActive = false;
		},
		stop:function(caller){
			egt.SlideShow.clearDelay();
			imagesShown = 0;

			glow.dom.get('.egt-slide a').removeClass("active");
			glow.dom.get('.egt-slide a span').empty().append(egtLang[egtOptions.language].slideshowOn);
		}
	},
	

	SendToAFriend: {
		init:function(){

			if(glow.dom.get(".egt-sharescreen").length > 0)
			{
				egt.SendToAFriend.fadeOut();
			}
			else
			{
				// Hide the loader graphic
				glow.dom.get(".egt-loader").hide();

				egt.shrinkImage('egt.SendToAFriend.load()');
			}
		},

		fadeOut:function(){
			// Fadeout the Send To A Friend Screen
			var fadeOut = glow.anim.css(".egt-sharescreen", .5, {"opacity" : {from:1,to:0}}).start();
			glow.events.addListener(fadeOut, "complete", function(){
				egt.SendToAFriend.remove();
			});
		},

		remove:function(){
			// Remove the Send To A Friend Screen
			glow.dom.get(".egt-sharescreen").remove();
			egt.SendToAFriend.load();
		},

		load:function(){
			// Load the Send To A Friend Screen
			glow.net.get('/scotland/sitewide/egt/r02/lang/'+egtOptions.language+'/sendtoafriend.sssi?url='+egtOptions.url+imageStr+'/', {
				onLoad: function(response) {
					glow.dom.get(".egt-frame").append(response.text());
					egt.SendToAFriend.fadeIn();
				},
				onError: function(response) {
				}
			});
		},

		fadeIn:function(){
			// Fadein the Send To Friend Screen
			var fadeIn = glow.anim.css(".egt-sharescreen", .5, {"opacity" : {from:0,to:1}}).start();
			glow.events.addListener(fadeIn, "complete", function(){
				egt.SendToAFriend.registerButtons();
			});
		},

		registerButtons:function(){
			// Ensure that links within the screen are reistered
			egt.registerSend();
			egt.registerShareClose();
		}
	},

	SentToAFriend: {
		init:function(){
			egt.SentToAFriend.fadeOut();
		},

		fadeOut:function(){
			// Fadeout the Send To A Friend Screen
			var fadeOut = glow.anim.css(".egt-sharescreen", .5, {"opacity" : {from:1,to:0}}).start();
			glow.events.addListener(fadeOut, "complete", function(){
				egt.SentToAFriend.remove();
			});
		},

		remove:function(){
			// Remove the Send To A Friend Screen
			glow.dom.get(".egt-sharescreen").remove();
			egt.SentToAFriend.load();
		},

		load:function(){
			// Load the Sent To A Friend Screen
			glow.net.get('/scotland/sitewide/egt/r02/lang/'+egtOptions.language+'/senttoafriend.sssi?url='+egtOptions.url+imageStr+'/&result='+EmailResult, {
				onLoad: function(response) {
					glow.dom.get(".egt-frame").append(response.text());
					egt.SentToAFriend.fadeIn();
				},
				onError: function(response) {
				}
			});
		},

		fadeIn:function(){
			// Fadein the Sent To Friend Screen
			var fadeIn = glow.anim.css(".egt-sharescreen", .5, {"opacity" : {from:0,to:1}}).start();
			glow.events.addListener(fadeIn, "complete", function(){
				egt.SentToAFriend.registerButtons();
			});
		},

		registerButtons:function(){
			// Ensure that links within the screen are reistered
			egt.registerSendAnother();
			egt.registerShareClose();
		}
	},

	LinkToThis: {
		init:function(){
			if(glow.dom.get(".egt-sharescreen").length > 0)
			{
				egt.LinkToThis.fadeOut();
			}
			else
			{
				// Hide the loader graphic
				glow.dom.get(".egt-loader").hide();

				egt.shrinkImage('egt.LinkToThis.load()');
			}
		},

		fadeOut:function(){
			// Fadeout the Send To A Friend Screen
			var fadeOut = glow.anim.css(".egt-sharescreen", .5, {"opacity" : {from:1,to:0}}).start();
			glow.events.addListener(fadeOut, "complete", function(){
				egt.LinkToThis.remove();
			});
		},

		remove:function(){
			// Remove the Send To A Friend Screen
			glow.dom.get(".egt-sharescreen").remove();
			egt.LinkToThis.load();
		},

		load:function(){
			// Load the Sent To A Friend Screen
			glow.net.get('/scotland/sitewide/egt/r02/lang/'+egtOptions.language+'/linktothis.sssi?url='+egtOptions.url+imageStr+'/&title='+egtOptions.title, {
				onLoad: function(response) {
					glow.dom.get(".egt-frame").append(response.text());
					egt.LinkToThis.fadeIn();
				},
				onError: function(response) {
				}
			});
		},

		fadeIn:function(){
			// Fadein the Sent To Friend Screen
			var fadeIn = glow.anim.css(".egt-sharescreen", .5, {"opacity" : {from:0,to:1}}).start();
			glow.events.addListener(fadeIn, "complete", function(){
				egt.LinkToThis.registerButtons();
			});
		},

		registerButtons:function(){
			// Ensure that links within the screen are reistered
			egt.registerShareClose();
		}
	}
};

// create glow object
var initCount = 0;
var glow;
var egtOptions;

// load an instance of glow
gloader.load(["glow", "1.4", "glow.dom","glow.events","glow.net","glow.anim"], {
// if load successful, set var glowLocal to the current loaded instance
	onLoad: function(myGlow){
		myGlow.ready(function(){
			// now set the current loaded instance to the var "glow"
			glow = myGlow;

			// glow is now ready to use
			egtInit(null);
		});
	}
});

function egtInit(myVars)
{
	initCount++;

	if(myVars != null)
	{
		egtOptions = myVars;
	}

	if(initCount == 2)
	{
		egt.createGallery(egtOptions);
	}
}