"use strict"
/// CLI
///
/// Arranque da funcionalidade primária do Sapiens no cliente. Concretamente:
/// 	» Inicialização;
/// 	» Definição de variáveis básicas;
/// 	» Referênciação da camada de compatibilidade apropriada para o browser.
/// 	» Definição de funções temporárias, mais tarde substituídas na camada
/// 	  de compatibilidade.
///
var D = document, W = window, DROOT = D.documentElement, DHEAD = DROOT.lastChild, isIE = 0/*@cc_on-1@*/, SSRC, SROOT, SCROOT, NOP = function(){};

(function(){
var goQ, dumQ, s, x, o, i;
///
///
/// IMPLEMENTAÇÕES TEMPORÁRIAS
///
W.go = function () {
	var a = arguments, l = a.length;
	if (!l) {	a = goQ; goQ = 0; return a	}
	if (l === 1) a = a [0];
	goQ ? goQ.push (a) : goQ = [a]
};

W.dum = W.act = function (ev /* , ... */) {
	var a = arguments, l = a.length, el, i, t;
	if (!l) {	a = dumQ; dumQ = 0; return a	}
	// Localizar o parâmetro 'event'.
	for (i = 0; i < l;)
		if ((ev = a [i++]) && ev.initEvent || ev.srcElement) break;
	// Cancelar o evento.
	if (ev.preventDefault) {	ev.preventDefault (); ev.stopPropagation ()	}
	else {	ev.cancelBubble = 1; ev.returnValue = 0	}
	// Registar.
	el = ev.target || ev.srcElement;
	t = ev.type;
	// Registar eventos únicos.
	if (dumQ) {
		for (i = dumQ.length; i;)
			if (dumQ [i -= 3] === el && dumQ [i + 1] === t) return;
		dumQ.push (el, t, a)
	}
	else dumQ = [el, t, a]
};

W.Im = function () {	var a = arguments; go (function () {	Im.apply (W, a)	}, 0)	};
///
///
/// INICIALIZAÇÃO
///
// Localizar a auto-referência.
x = DHEAD.lastChild;
s = x.src;
// Determinar a localização.
i = s.indexOf ("://");
i = s.indexOf ("/", i < 0 ? 0 : i + 3);
if (i >= 0) {
	SSRC = s.slice (0, i + 1);
	SROOT = s.slice (0, s.lastIndexOf ("/") + 1)
}
// Verificar se há indicação de módulos a pré-carregar.
o = x.previousSibling;
if (o && o.nodeType === 8) {
	// 'refer'.
	o = o.nodeValue.split (" ");
	for (i = o.length; i > 0;) {
		x = o [--i];
		if (x.charAt (0) == "*") {
			refer (x.slice (1));
			o.splice (i, 1)
		}
	}
	// 'use'.
	if (o.length) {	o.unshift (0, 0); goQ = [o]	}
}
SCROOT = SROOT + "comps/";
///
///
/// RELATIVIZAÇÃO DE MEDIA
///
for (x = DHEAD.firstChild, i = 0; x && ++i < 3; x = x.nextSibling)
	if (x.tagName == "BASE") {
		x.href = SSRC + Math.ceil (screen.availWidth / 300) + "/";
		break
	}
///
///
/// FUNÇÕES
///
// Regista EL como o primeiro campo a ser focado.
W.initialFocus = function (el) {	return (el && !o) ? o = el : o	}
///
///
/// CARREGAR O RESTO
///
refer (SROOT + "compat/" + (isIE ? "ie" : "w3c") + ".js");

(x = DROOT.classList) ? x.add ("JS") : DROOT.className += " JS";

s = x = o = 0
})();


// Refere o "script" em URI.
function refer (uri) {
	var s = D.createElement ("script");
	s.type = "text/javascript";
	s.src = uri;
	s.async = s.defer = 1;
	DHEAD.appendChild (s)
}

