var HAS_TRANSITIONS = false;

var HEAD = document.childNodes[1].firstChild;
HEAD.hasFile = function(file) {
	var bln = false;
	for (i = 1; i < HEAD.childElementCount; i++) {
		if (HEAD.children[i].src && HEAD.children[i].src.search(file) > 0) { bln = true; break; }
	}
	return bln;
}

ADMIN = false;
CNLT = {};

WY = {
	init: function() {
		N.init();
		wtp = $('TornPaper').getStyle("-webkit-transition-property")+$('TornPaper').getStyle("-moz-transition-property");
		if (wtp.toString().match(/opacity/)) {
			HAS_TRANSITIONS = true;
		}
		else { $('TornPaper').hide(); }
		
		T.init();
		TP.init();
	}
}

N = {
	init: function() {
		N.hide();
		$('Menu-mapTop').observe('mouseover', N.show);
		$('Menu-mapBottom').observe('mouseover', N.show);
		$('Menu').observe('mouseover', N.show);
		$('Menu-mapTop').observe('mouseout', N.hide);
		$('Menu-mapBottom').observe('mouseout', N.hide);
		$('Menu').observe('mouseout', N.hide);
		
		As = $$("div.GNM");
		Alen = As.length;
		for (i=0; i<Alen; i++) {
			id = As[i].id.substring(3);
			N.A[id] = {
				self: As[i],
				bgpos: As[i].getAttribute('data-bgpos'),
				tabname: id
			}
			N.A[id].self.observe('mouseover', N.select.bind(N.A[id]));
			N.A[id].self.observe('mouseout', N.deselect);
			N.A[id].self.observe('click', T.load.bind(N.A[id]));
		}
	},
	show: function() {
		$('Links').show();
		$('LinksBackground').show();
	},
	hide: function() {
		$('Links').hide();
		$('LinksBackground').hide();
	},
	select: function() { 
		$('Links').style.backgroundPosition = this.bgpos;
	},
	deselect: function() {
		$('Links').style.backgroundPosition = "295px 3px";
	},
	A: {}
}

TP = {
	self: null,
	content: null,
	loaded: false,
	width: 0,
	height: 0,
	sL: 0,
	sT: 0,
	init: function() {
		TP.self = $('TornPaper');
		TP.content = $('TornContent');
		$('closeButton').observe('click', TP.close);
		TP.width = TP.self.getWidth();
		TP.height = TP.self.getHeight();
		TP.self.hide();
		TP.self.fire("tp:inited");
		TP.loaded = true;
	},
	open: function(sq, src) {
		TP.self.show();
		sqp = sq.positionedOffset();
		sqd = sq.getDimensions();
		sqpp = $('Content').positionedOffset();
		TP.sL = Math.round(sqpp.left + sqp.left + sqd.width/2 - TP.width/2);
		TP.sT = Math.round(sqpp.top + sqp.top + sqd.height/2 - TP.height/2);
		vP = document.body.viewportOffset();
		TP.self.show();
		TP.self.style.left = TP.sL+"px";
		TP.self.style.top = TP.sT+"px";
		$('blackOut').show();
		$('blackOut').style.height = $('BodyShape').clientHeight + 'px';
		if (HAS_TRANSITIONS) {
			TP.self.style.opacity = $('blackOut').style.opacity = 1;
			TP.self.style.webkitTransform = "translate("+(100-TP.sL)+"px,"+(vP.top*(-1)+56-TP.sT)+"px) scale(1)";
			TP.self.style.MozTransform = "translate("+(100-TP.sL)+"px,"+(vP.top*(-1)+56-TP.sT)+"px) scale(1)";
		}
		else {
			TP.self.show();
			new Effect.Fade(TP.self, { from: 0, to: 1 });
			new Effect.Scale(TP.self, 100, {
				scaleMode: { originalHeight: TP.height, originalWidth: TP.width },
				scaleFrom: 1,
				scaleContent: false,
				duration: 1
			});
			new Effect.Move(TP.self, { x: 100-TP.sL, y: vP.top*(-1)+56-TP.sT, mode: 'relative', duration: 1 });
		}
		TP.content.update(src);
	},
	close: function() {
		if (HAS_TRANSITIONS) {
			TP.self.style.opacity = $('blackOut').style.opacity = 0;
			TP.self.style.webkitTransform = "translate(0px, 0px) scale(0.01)";
			TP.self.style.MozTransform = "translate(0px, 0px) scale(0.01)";
			TP.self.observe('webkitTransitionEnd', function(e) {
				TP.content.update();
				TP.self.hide();
				TP.self.stopObserving('webkitTransitionEnd');
				$('blackOut').hide();
			});
			TP.self.observe('transitionend', function(e) {
				TP.content.update();
				TP.self.hide();
				TP.self.stopObserving('transitionend');
				$('blackOut').hide();
			});
		}
		else {
			new Effect.Scale(TP.self, 1, {
				scaleMode: { originalHeight: TP.height, originalWidth: TP.width },
				scaleFrom: 100,
				scaleContent: false,
				duration: 1
			});
			new Effect.Move(TP.self, { x: TP.sL, y: TP.sT, mode: 'relative', duration: 1 });
			new Effect.Fade(TP.self);
			Element.hide.delay(1, TP.self);
			Element.hide.delay(1, $('blackOut'));
		}
	}
}

T = {
	tn: null,
	init: function() {
		T.checkfiles();
	},
	loadjs: function(file) {
		if (!HEAD.hasFile(file)) {
			tabjs = document.createElement('script');
			tabjs.setAttribute('language', 'Javascript');
			tabjs.type = 'text/javascript';
			tabjs.src = file;
			HEAD.appendChild(tabjs);
			return tabjs;
		}
		else { return false; }
	},
	loadcss: function(file) {
		if (!HEAD.hasFile(file)) {
			tabcss = document.createElement('link');
			tabcss.rel = 'stylesheet';
			tabcss.type = 'text/css';
			tabcss.href = file;
			HEAD.appendChild(tabcss);
			return tabcss;
		}
		else { return false; }
	},
	load: function(e) {
		T.tn = this.tabname;
		if (T.files[T.tn]) {
			if (T.pages[T.tn]) {
				//if (T.pages[T.tn].loaded) { T.pages[T.tn].load(); }
				T.pages[T.tn].load(e); 
			}
			if (T.files[T.tn].tab_css) { T.loadcss('tabs/'+T.tn+'/tab.css'); }
			if (T.files[T.tn].tab_js) { T.loadjs('tabs/'+T.tn+'/tab.js'); }
		}
		else { T.pages[T.tn].load(e); }
	},
	checkfiles: function() {
		new Ajax.Request("includes/tfs.php", {
			onSuccess: function(transport) {
				T.files = transport.responseText.evalJSON(true);
				H.init();
			}
		});
	},
	files: {},
	pages: {},
	flip: function(sh) {
		$$('.wyContent').each(function(s, index) {
			if (s != sh) {
				if (HAS_TRANSITIONS) {
					s.observe('webkitTransitionEnd', function() {
						s.hide();
						s.stopObserving('webkitTransitionEnd');
					});
					s.observe('mozTransitionEnd', function() {
						s.hide();
						s.stopObserving('mozTransitionEnd');
					});
					s.style.opacity = 0;
				}
				else {
					new Effect.Fade(s);
					Element.hide.delay(1, s);
				}
			}
		});
		sh.show();
		sh.style.opacity = 1;
		return sh;
	}
}

H = {
	t: window.location.hash.match(/#.*/),
	p: {},
	page: {},
	init: function() {
		if (H.t) {
			H.t = H.t.toString().substring(1);
			HEnd = H.t.search(/&/);
			if (HEnd > 0) {
				Hp = H.t.split("&");
				H.t = Hp.shift().substring(0, HEnd);
				HpL = Hp.length;
				for (i=0; i<HpL; i++) {
					p = Hp[i].split("=");
					H.p[p[0]] = p[1];
				}
			}
			if (H.t == "admin") {// || ADMIN) {
				if (!HEAD.hasFile('cnlt.admin.js')) {
					adminjs = document.createElement('script');
					adminjs.type = "text/javascript";
					adminjs.src = "js/cnlt.admin.js";
					HEAD.appendChild(adminjs);
				}
				else { CNLT.Admin.init(); }
			}
			if (H.t != "admin") { T.load.bind(N.A[H.t])(); }
		}
	},
	setl: function() {
		h = H.page.name;
		for (x in H.p) { h += "&"+x+"="+H.p[x]; }
		window.location.hash = h;
	}
}

I = {
	pl: function(src) {
		pli = Builder.node('img', { src: src });
		if (arguments[1]['onLoad']) {
			pli.observe('load', arguments[1]['onLoad']);
		}
		return pli;
	}
}

document.observe('dom:loaded', WY.init);

var login = function() {
	H.t = 'admin';
	if (!HEAD.hasFile('cnlt.admin.js')) {
		adminjs = document.createElement('script');
		adminjs.type = "text/javascript";
		adminjs.src = "js/cnlt.admin.js";
		HEAD.appendChild(adminjs);
	}
	else { CNLT.Admin.init(); }
}
	
