var arrFlickrThumbs = Array();
var arrFlickrUrls = Array();
var arrFlickrTitles = Array();
var FlickrCurrentLoc = 0;
var FlickrMaxLoc = null;
var FlickrInitialLoad = false;
var FlickrTimerID = null;
var FlickrBuilding = false;
var FlickrAutoPlay = false;
var TimeDelay = 5;
var FlickrMainDiv = "Flickr";
var FlickrAnchor = new Element("a", {
	"href" : "javascript:;"
});
var FlickrPlayButton = new Element("img", {
	"src" : "/_img/FlickrPlay.gif"
});
var FlickrPauseButton = new Element("img", {
	"src" : "/_img/FlickrPause.gif"
});
var FlickrNextButton = new Element("img", {
	"src" : "/_img/FlickrNext.gif"
});
var FlickrPreviousButton = new Element("img", {
	"src" : "/_img/FlickrPrevious.gif"
});
var FlickrControlsDiv = new Element("div", {
	"id" : "FlickrControls"
});
var FlickrPreviousDiv = new Element("div", {
	"id" : "Previous",
	"class" : "FloatLeft"
});
var FlickrNextDiv = new Element("div", {
	"id" : "Next",
	"class" : "FloatLeft"
});
var FlickrPauseDiv = new Element("div", {
	"id" : "FlickrPause",
	"class" : "FloatLeft"
});
var FlickrClearDiv = new Element("div", {
	"class": "clear"
});
var FlickrAddressDiv = new Element("div", {
	"class" : "FloatLeft"
});
var TempAnchor = FlickrAnchor.clone();
FlickrPreviousButton.inject(TempAnchor);
TempAnchor.inject(FlickrPreviousDiv);
var TempAnchor = FlickrAnchor.clone();
FlickrNextButton.inject(TempAnchor);
TempAnchor.inject(FlickrNextDiv);
var TempAnchor = FlickrAnchor.clone();
if(FlickrAutoPlay) {
	FlickrPauseButton.inject(TempAnchor);
} else {
	FlickrPlayButton.inject(TempAnchor);
}
TempAnchor.inject(FlickrPauseDiv);
FlickrPreviousDiv.inject(FlickrControlsDiv);
FlickrNextDiv.inject(FlickrControlsDiv);
FlickrPauseDiv.inject(FlickrControlsDiv);
//FlickrControlsDiv.setStyles({opacity: .65});
var MainDivWidth;
var MainDivHeight;



function FlickrInit(inDiv, inID, inTags,inTimeDelay) {
	TimeDelay = parseFloat(inTimeDelay);
	FlickrMainDiv = $(inDiv);
	FlickrMainDiv.setStyles({
		overflow: 'hidden',
		display: 'block',
		margin: 0,
		padding : 0
	});
	var FlickrLoader = new Element("div", {
		"id" : "FlickrLoader",
		"class" : "ThumbHolder"
	});
	var coords = FlickrMainDiv.getCoordinates();
	MainDivWidth = coords.width;
	MainDivHeight = coords.height;

	var arrOffsets = this.GetCenter(MainDivWidth, MainDivHeight,66,66);
	var LoaderMargin = arrOffsets[1] + "px 0 0 " + arrOffsets[0] + "px";
	var LoaderImg = new Element("img", {
		"src" : "/_img/FlickrLoad.gif",
		"styles" : {
			"margin" : LoaderMargin
		}
	});
	LoaderImg.inject(FlickrLoader);
	FlickrLoader.inject(FlickrMainDiv);
	var CorrectMargin = (MainDivHeight - 20) + "px 0 0 0";
	FlickrControlsDiv.setStyles({"margin": CorrectMargin,"width": MainDivWidth});

	var jsonURL = "/flickr.php?Tags=" + escape(inTags) + "&ID=" + escape(inID);
	var request = new Request.JSON({
		url: jsonURL,
		onComplete: function(jsonObj) {
			FlickrProcess(jsonObj.items);
		}
	}).send();

}


var FlickrProcess = function(items) {
	FlickrControlsDiv.inject(FlickrMainDiv);
	var loc = 0;
	items.each(function(item) {
		arrFlickrThumbs[loc] = item.media.m;
		arrFlickrUrls[loc] = item.link;
		arrFlickrTitles[loc] = item.title;
		loc++;
	});
	FlickrMaxLoc = arrFlickrThumbs.length - 1;
	FlickrBuildThumb(0,"next");
	FlickrNextDiv.addEvent("click", function() {
		FlickrNextImage();
	});
	FlickrPreviousDiv.addEvent("click", function() {
		FlickrPreviousImage();
	});
	FlickrPauseDiv.addEvent("click", function() {
		FlickrPause();
	});
}; // FlickrProcess

var FlickrNextImage = function() {
	if (!FlickrBuilding) {
		FlickrStopSlideTimer();
		loc = FlickrCurrentLoc;
		loc++;
		if (loc > FlickrMaxLoc) {
			loc = 0;
		}
		FlickrBuildThumb(loc,"next");
	}
}; // FlickrNextImage

var FlickrPreviousImage = function() {
	if (!FlickrBuilding) {
		FlickrStopSlideTimer();
		loc = FlickrCurrentLoc;
		loc--;
		if (loc < 0) {
			loc = FlickrMaxLoc;
		}
		FlickrBuildThumb(loc,"previous");
	}
}; // FlickrPreviousImage

var FlickrPause = function() {
	FlickrPauseDiv.empty();
	if (FlickrAutoPlay) {
		FlickrStopSlideTimer();
		FlickrAutoPlay = false;
		FlickrPlayButton.clone().inject(FlickrPauseDiv);
	} else {
		FlickrAutoPlay = true;
		FlickrStartSlideTimer();
		FlickrPauseButton.clone().inject(FlickrPauseDiv);
	}
}; //FlickrPause

var FlickrBuildThumb = function(loc,direction) {
	FlickrBuilding = true;
	var ThumbDiv = new Element("div", {
		"class" : "ThumbHolder",
		"id" : "td" + loc,
		"styles": {
			"width": MainDivWidth,
			"height": MainDivHeight
		}
	});
	if (direction == "next") {
		var Thumb = new Element("div", {
			"id" : "thumb" + loc,
			"styles" : {
				"height": MainDivHeight,
				"margin-left": MainDivWidth
			}
		});
	} else {
		var Thumb = new Element("div", {
			"id" : "thumb" + loc,
			"styles" : {
				"height": MainDivHeight,
				"margin-left": (MainDivWidth * -1)
			}
		});
	}
	var LargeImage = arrFlickrThumbs[loc].replace(/_m/,"");
	var ImageAnchor = new Element("a", {
		"href" : LargeImage,
		"rel" : "milkbox[" + loc + "]",
		"title" : arrFlickrTitles[loc]
	});

	ImageAnchor.inject(Thumb);
	Thumb.inject(ThumbDiv);
	ThumbDiv.inject(FlickrControlsDiv,"before");
	var myImage = new Asset.image(arrFlickrThumbs[loc], {
		onload: function() {
			myImage.inject(ImageAnchor);
			if (!FlickrInitialLoad) {
				var fx1 = new Fx.Tween($("FlickrLoader"));
				fx1.start("opacity", 0).chain(function(){
					$("FlickrLoader").dispose();
				});
				FlickrInitialLoad = true;
				FlickrCurrentLoc = loc;
			} else {
				if(direction == "next") {
					CorrectMargin = MainDivWidth * -1;
				} else {
					CorrectMargin = MainDivWidth;
				}
				var fx1 = new Fx.Tween($("thumb" + FlickrCurrentLoc));
				fx1.start("margin-left", CorrectMargin).chain(function(){
					$("td" + FlickrCurrentLoc).dispose();
					FlickrCurrentLoc = loc;
				});
			}
			coords = myImage.getCoordinates();
			var CorrectWidth = coords.width;
			var CorrectHeight = coords.height;
			if (coords.height > 136) {
				CorrectHeight = 136;
				CorrectWidth = Math.round((136/coords.height) * coords.width);
				myImage.setStyles({
					"height" : CorrectHeight,
					"width" : CorrectWidth
				});
			}
			var CorrectX = Math.round((MainDivWidth - CorrectWidth) / 2);
			var CorrectY = Math.round((136 - CorrectHeight) / 2);
			Thumb.setStyles({"margin-top" : CorrectY});
			var fx2 = new Fx.Tween(Thumb);
			fx2.start("margin-left", CorrectX).chain(function() {
				FlickrStartSlideTimer();
				FlickrBuilding = false;
				var myMilkbox = new Milkbox();
			});
		}
	});
}; //FlickrBuildThumb

var FlickrStartSlideTimer = function() {
	if (FlickrAutoPlay) {
		var td = 1000 * TimeDelay;
		FlickrTimerID = setTimeout("FlickrNextImage()", td);
	}
}; //FlickrStartSlideTimer

var FlickrStopSlideTimer = function() {
	clearTimeout(FlickrTimerID);
}; // FlickrStopSlideTimer

var GetCenter = function(cWidth, cHeight, oWidth, oHeight) {
	xOffset = Math.round((cWidth/2) - (oWidth/2));
	yOffset = Math.round((cHeight/2) - (oHeight/2));
	return Array(xOffset, yOffset);
}