var myToolBox = new ToolBox();

window.addEvent('domready', function() {
	var myTopScroller = new TopScroller();

	myNoteBox = new NoteBox();
	myMilkBox = new MilkBox();
	myThrobber = new Throbber();
	
	this.enableNews();
	this.enableScreenNav();
	this.enableLangSelect();

	myToolBox.execOnLoadFuncs();

	new Fx.SmoothScroll({duration: 500});
});

var enableNews = function() {
	var newsHeaders = $$("div.newsHome div h3");
	
	if ($defined(newsHeaders) && newsHeaders.length > 0) {
		newsHeaders.addClass("closed");
//		$$("div.newsHome div p").addClass("hidden");

		newsHeaders.each(function(item, index) {
			item.mySlide = new Fx.Slide(item.getParent().getElement("div.newsContent"), {
				duration: 300,
				transition: Fx.Transitions.Sine.easeOut
			});
			
			if (index != 0) {
				item.mySlide.hide();
				item.toggleClass("closed");
			}
		});
		
		newsHeaders.addEvent("click", function(e) {
			if ($defined(e)) {
				e.stop();
			}

			this.toggleClass("closed");
			this.mySlide.toggle();

		});
	}
};

var enableScreenNav = function() {
	var screenJSON = new Request.JSON({
		url: "index.es",
		method: "get",
		link: "cancel",
		onSuccess: function(screenShot) {
			myToolBox.getTimerObject().clearTimer("throbberTimer");
			myThrobber.fade("out");
			var prevURI = new URI($("prevScreen").getElement("a").get("href"));
			var nextURI = new URI($("nextScreen").getElement("a").get("href"));
			var openURI = new URI($("theScreen").getElement("a").get("href"));
			
			prevURI.setData({
				"curScreen": screenShot.screenID
			}, true);
			nextURI.setData({
				"curScreen": screenShot.screenID
			}, true);
			openURI.setData({
				"screenID": screenShot.screenID
			}, true);
			
			$("prevScreen").getElement("a").set("href", prevURI.toString());
			$("nextScreen").getElement("a").set("href", nextURI.toString());
			$("theScreen").getElement("a").set("href", openURI.toString());
			$("theScreen").getElement("img").set("src", "/images/global/screens/" + screenShot.screenThumbfile + "." + screenShot.screenExtension);
		}
	});

	$("prevScreen").getElement("a").addEvent("click", function(e) {
		e.stop();
		var theURI = this.get("href");
		var curScreen = new URI(theURI).getData("curScreen");

		myThrobber.setElement($("theScreen"));
		myToolBox.getTimerObject().addTimer(function(){
			myThrobber.fade("in")
		}.delay(500), "throbberTimer");
			
		screenJSON.send("action=externalScreens&asyncImage=prev&curScreen=" + curScreen);
	});

	$("nextScreen").getElement("a").addEvent("click", function(e) {
		e.stop();
		var theURI = this.get("href");
		var curScreen = new URI(theURI).getData("curScreen");
		myThrobber.setElement($("theScreen"));
		myToolBox.getTimerObject().addTimer(function(){
			myThrobber.fade("in")
		}.delay(500), "throbberTimer");

		screenJSON.send("action=externalScreens&asyncImage=next&curScreen=" + curScreen);
	});
}

var enableLangSelect = function() {
	if (!$("langSelect")) {
		return;
	}

	var langContainer = $("langSelect").getParent();
	var label = langContainer.get("text");
	var languages = $("langSelect").getElements("option");
	var langSelected = $("langSelect").getElement("option[selected]");
	var newSelector = new Element("a", {
		"text": langSelected.get("text"),
		"styles": langSelected.getStyles("background-image", "padding", "color"),
		"href": "/",
		"events": {
			"click": function(e) {
				e.stop();
				this.getParent().fireEvent("click");
			}
		}
	});
	
	newSelector.setStyles({
		textDecoration: "none",
		outline: "none",
		margin: "5px 5px 0 0",
		backgroundColor: "#333",
		padding: "2px 10px 2px 22px",
		display: "block"
	});
	
	var newSelection = new Element("ul", {
		styles: {
			position: "absolute"	
		},
		events: {
			"mouseout": function(e) {
				myToolBox.getTimerObject().clearTimer("langBox");
				myToolBox.getTimerObject().addTimer(function(){
					newSelection.fade("out")
				}.delay(500), "langBox");
			},
			"mouseover": function(e) {
				myToolBox.getTimerObject().clearTimer("langBox");
			}
		}
	});
	
	languages.each(function(item, index) {
		newSelection.grab(new Element("li").grab(new Element("a", {
			"text": item.get("text"),
			"href": "http://" + window.location.host + window.location.pathname + (!(window.location.search == '') ? window.location.search + '&' : '?') + "locale=" + item.get("value"),
			"styles": item.getStyles("background-image")
		})));
	});
	
	$("langSelect").destroy();
	
	langContainer.grab(newSelector);
	langContainer.grab(newSelection);
	
	newSelection.position({
		relativeTo: newSelector,
		position: {x: "center", y: "bottom"},
		edge: {x: "center", y: "top"},
		offset: {x: 0, y: 8}
	});
	
	langContainer.addEvent("click", function(e) {
		newSelection.fade("toggle");
		this.toggleClass("open");
	});
	
	newSelection.fade("hide");
};
