
NGCMSLoader = new Object();

NGCMSLoader.init = function (vid, start) {
	NGCMSLoader._vid = vid;
	setTimeout((start ? NGCMSLoader.start : NGCMSLoader.showMarker), 0);
}

NGCMSLoader.start = function () {
	NGCMSLoader.incJS(['/js/ngcore.js', '/js/ngdom.js', '/ngcms/ngcms.js', '/ngcms/fckeditor/fckeditor.js'], NGCMSLoader._start);
}

NGCMSLoader._start = function () {
	if (NGCMS) NGCMS.open(NGCMSLoader._vid);
	NGCMSLoader.hideMarker();
}

NGCMSLoader.incJS = function (url, cB) {
	if (typeof url == 'object' && String(url.constructor) == String(Array)) {
		if (url.length == 0) { cB(); return true; }
		var t = url.splice(0,1)[0];
		return NGCMSLoader.incJS(t, function () { NGCMSLoader.incJS(url, cB); });
	}
	if (NGCMSLoader.hasJS(url)) { cB(); return true; }
	var h = document.getElementsByTagName('head');
	if (h.length == 0) h[0] = document.body.parentNode.appendChild(document.createElement('head'));
	var n = document.createElement('script');
	n.type = 'text/javascript';
	n.src = url;
	if (cB) {
		if (n.addEventListener) n.addEventListener('load', cB, false);
		else if (n.attachEvent) n.attachEvent('onreadystatechange', function () { if (n.readyState == 'complete' || n.readyState == 'loaded') cB(); });
	}
	h[0].appendChild(n);
	return true;
}

NGCMSLoader.hasJS = function (url) {
	var s = document.getElementsByTagName('script');
	for (var i = 0; i < s.length; i++) {
		if (s[i].getAttribute('type') == 'text/javascript' && s[i].getAttribute('src') == url) return true;
	}
	return false;
}

NGCMSLoader.showMarker = function () {
	var d = document.createElement('div');
	d.innerHTML = '<div class="ngmcs-marker" style="position:absolute; width:50px; height:50px; top:2px; right:17px; background:transparent url(/ngcms/img/marker.png) no-repeat top right; z-index:1000; cursor:pointer;" onclick="NGCMSLoader.start();" title="Edit this page" alt="Edit this page"></div>';
	document.body.appendChild(NGCMSLoader._marker = d.firstChild);
}

NGCMSLoader.hideMarker = function () {
	if (NGCMSLoader._marker && NGCMSLoader._marker.parentNode) NGCMSLoader._marker.parentNode.removeChild(NGCMSLoader._marker);
	delete NGCMSLoader._marker;
}

NGCMSGA = new Object();
NGCMSGA._profiles = new Object();
NGCMSGA._GA = null;
NGCMSGA._varcookiekey = '__utmv';
NGCMSGA._varcookie = null;
NGCMSGA._vartimers = new Object();

NGCMSGA.getGA = function () { return NGCMSGA._GA }

NGCMSGA.includeGA = function (cB) {
	if (NGCMSGA._GA === null) {
		var cBw = function () {
			NGCMSGA._GA = (typeof _gat != 'undefined' ? _gat : false);
			if (NGCMSGA._GA) cB();
		}
		if (/(\(|;) *MSIE 6\.0 *(;|\))/.exec(navigator.userAgent)) {
			NGCMSLoader.incJS('/js/ga.js.php', cBw);
		} else {
			NGCMSLoader.incJS((('https:' == document.location.protocol) ? 'https://ssl.' : 'http://www.')+'google-analytics.com/ga.js', cBw);
		}
	}
	return NGCMSGA._GA;
}

NGCMSGA.getProfile = function (id) {
	if (typeof NGCMSGA._profiles[id] == 'undefined') {
		NGCMSGA._profiles[id] = false;
		var ga = NGCMSGA.getGA();
		if (ga) {
			try { NGCMSGA._profiles[id] = ga._getTracker(id); } catch (e) {}
		}
	}
	return NGCMSGA._profiles[id];
}

NGCMSGA.trackPageView = function (pid) {
	for (var p,i = 0; i < arguments.length; i++) {
		if (p = NGCMSGA.getProfile(arguments[i])) { try { p._trackPageview(); } catch (e) {} }
	}
}

NGCMSGA.trackPageViewURL = function (url) {
	for (var p,i = 1; i < arguments.length; i++) {
		if (p = NGCMSGA.getProfile(arguments[i])) { try { p._trackPageview(url); } catch (e) {} }
	}
}

NGCMSGA.getCookie = function (key) {
	var m,re = new RegExp('(^|;)'+escape(key)+'=([^;]*)(;|$)');
	if (m = re.exec(document.cookie+'')) return unescape(m[2]);
	return '';
}

NGCMSGA.getVars = function () {
	if (NGCMSGA._varcookie === null) NGCMSGA._varcookie = NGCMSGA.getCookie(NGCMSGA._varcookiekey);
	var v = new Object();
	var a = NGCMSGA._varcookie.split('&');
	for (var p,i = 0; i < a.length; i++) {
		p = a[i].split('=');
		if (p.length == 2) v[unescape(p[0])] = unescape(p[1]);
	}
	return v;
}

NGCMSGA.setVar = function (pid, key, val) {
	var p = NGCMSGA.getProfile(pid);
	if (p) {
		var v = NGCMSGA.getVars();
		if (typeof v[key] != 'undefined' && v[key] == val) return v[key];
		if (val === null) delete v[key];
		else v[key] = val;
		var a = [];
		for (var i in v) {
			if (typeof v[i] == 'string' || typeof v[i] == 'number') a[a.length] = escape(i)+'='+escape(v[i]);
		}
		if (NGCMSGA._varcookie != a.join('&')) {
			NGCMSGA._varcookie = a.join('&');
			p._setVar(NGCMSGA._varcookie);
		}
	}
}

NGCMSGA.setVarAfter = function (pid, key, val, secs) {
	setTimeout(function () { NGCMSGA.setVar(pid, key, val); }, secs*1000);
}
