var Site = {
	init: function() {
	    Site.FastIsi.init();
		
		/* revert fastisi to first tab when mouse leaves */
		var isi = document.id("isi");
		if (isi) isi.addEvent("mouseleave", function() {
			Site.FastIsi.show(Site.FastIsi.clicked);
		});
		
		Site.SynthroidNav = new NavToggler({
			toggleSelector: "#nav li.withSub",
			toggledSelector: "#nav li.withSub ul",
			toggleActiveClass: "selected",
			check: function() {				
				return !!($chk(this.activePage))
			}
		});
        new SmoothScroll({ duration: 500 });
	},
	   
	FastIsi: {
		init: function() {
			this.navs = $$("#fastNav .item");
			this.contents = $$("#fastContent .contentItem");
			
			if (this.navs.length != this.contents.length) return;
			
			this.navs[0].addClass("active");
			this.navs.each(function(el, i) {
				el.getElement("a").set("href", "javascript:void(0);");
				
				el.addEvent("mouseenter", function() {
					this.show(i);
				}.bind(this)).addEvent("click", function() {
					this.clicked = i;
				}.bind(this));
								
			}, this);
			
			var contents = this.contents.slice(1);
			contents.each(function(el, i) {
				el.setStyle("display", "none");
			});
			
			this.pre = 0;
			this.curr = this.clicked = 0;
		},
		
		show: function(index) {			
			if (index == this.curr) return;					
			
			this.navs[this.curr].removeClass("active");
			this.contents[this.curr].setStyle("display", "none");
			
			this.navs[this.pre].removeClass("preActive");
			
			var pre = (index == 0) ? 0 : index - 1;
			
			this.navs[index].addClass("active");
			this.contents[index].setStyle("display", "");
			this.navs[pre].addClass("preActive");
			
			
			this.pre = pre;
			this.curr = index;
		}
	}
};

var NavToggler = new Class({
	Implements: Options,
	options: {
		toggleSelector: "",
		toggledSelector: "",
		toggleActiveClass: "active",
		check: function() {
			return true;
		}
	},
	activePage: null,
	curr: null,
	
	initialize: function(opts) {		
		this.setOptions(opts);
		
		this.toggles = $$(this.options.toggleSelector);
		this.toggled = $$(this.options.toggledSelector);
		
		this.toggles.each(function(tog, index) {
			if (tog.hasClass(this.options.toggleActiveClass)) this.activePage = this.curr = index;
		}, this);		
		
		//if (this.options.check.call(this)) this.attach();
		
	},

	attach: function() {
		this.toggles.each(function(tog, index) {			
			tog.addEvents({
				"mouseenter": function() {					
					$clear(this.revertTimer);
					this.show(index);
				}.bind(this),
				"mouseleave": function() {					
					$clear(this.revertTimer);
					this.revertTimer = this.revert.delay(250, this)				
				}.bind(this)
			});
		}, this);
	},
	
	detach: function() {
		this.toggles.each(function(tog, index) {
			tog.removeEvents("mouseenter").removeEvents("mouseleave");
		}, this)
	},
	
	show: function(index) {		
		if (index === this.curr) return this;
		
		if ($chk(this.curr)) {
			this.toggles[this.curr].removeClass(this.options.toggleActiveClass);
			this.toggled[this.curr].setStyle("display", "none");
		}
		
		this.toggles[index].addClass(this.options.toggleActiveClass);		
		
		this.toggled[index].setStyle("display", "");		
		
		this.curr = index;
	},
	
	revert: function() {
		if (this.activePage === this.curr) return;

		this.toggles[this.curr].removeClass(this.options.toggleActiveClass);
		this.toggled[this.curr].setStyle("display", "none");

		if ($chk(this.activePage)) {
			this.toggles[this.activePage].addClass(this.options.toggleActiveClass);
			this.toggled[this.activePage].setStyle("display", "");	
			
			this.curr = this.activePage;		
		}
		else {
			this.curr = null;
		}
	}
	
});


window.addEvent("domready", function() {
	Site.init();
});

function closePuzzle() {
	Site.Puzzle.hide();
};


