
function GetCookie(dc, name) {
	if (dc == null || name == null) return null;
	var p = dc.indexOf(name + "=");
	if (p == -1) return null;
	p = p + name.length + 1;
	var p2 = dc.indexOf(";", p);
	p2 = (p2 == -1)? dc.length - p: p2 - p;
	return dc.substr(p, p2);
}

function sessionExpired() {
	top.appSair=true;
	var msg="A sua sessão expirou.";
	if (typeof(dialogArguments)!= "undefined") {
		alert(msg);
		top.close();
	} else {
		if (typeof(appUrl) != "undefined" && appUrl != null) {
			top.location.replace((appUrl + "/login.aspx").replace(/\/\//g, "/") + "?msg="+msg);
		} else {
			alert(msg);
			top.location.replace("about:blank");
		}
	}
}

var _scc = GetCookie(document.cookie, "scc");
var _set = setInterval(function(){if(_scc!=GetCookie(document.cookie, "scc")){clearInterval(_set);sessionExpired()}},500);

/*************************************************
	generic selection functions
*************************************************/

function GenericSelectText(obj, start, length)
{
	if (start == null)
		start = 0;

	if (length == null)
		length = obj.value.length;

	if (obj.createTextRange) {

		var tr = obj.createTextRange();
		tr.collapse();
		tr.moveStart("character", start);
		tr.moveEnd("character", length);
		tr.select();

	} else {

		obj.selectionStart = start;
		obj.selectionEnd = start + length;

	}

}

function GenericMoveSelectionStart(obj, length)
{
	if (obj.createTextRange) {
		var sr = obj.ownerDocument.selection.createRange();
		sr.moveStart("character", length);
		sr.select();
	} else {
		obj.selectionStart += length;
	}
}

function GenericMoveSelectionEnd(obj, length)
{
	if (obj.createTextRange) {
		var sr = obj.ownerDocument.selection.createRange();
		sr.moveEnd("character", length);
		sr.select();
	} else {
		obj.selectionEnd += length;
	}
}

function GenericGetSelectedText(obj, part)
{
	if (obj.createTextRange) {
		var sr = obj.ownerDocument.selection.createRange();
		switch(part) {
			case 0:
				if (obj.isMultiLine) {
					var st = sr.text;
					sr.text = "\x01";
					var ss = obj.value;
					sr.moveStart("character", -1);
					sr.text = st;
					return ss.substr(0, ss.indexOf("\x01"));
				} else {
					sr.collapse();
					sr.moveStart("character", -obj.value.length);
				}
			break;
			case 2:
				if (obj.isMultiLine) {
					var st = sr.text;
					sr.text = "\x01";
					var ss = obj.value;
					sr.moveStart("character", -1);
					sr.text = st;
					return ss.substr(ss.indexOf("\x01") + 1);
				} else {
					sr.collapse(false);
					sr.moveEnd("character", obj.value.length);
				}
			break;
		}
		return sr.text;
	} else {
		switch(part) {
			case 0: return obj.value.substring(0, obj.selectionStart);
			case 2: return obj.value.substring(obj.selectionEnd);
			default: return obj.value.substring(obj.selectionStart, obj.selectionEnd);
		}
	}
}

function GenericGetSelectionStartLength(obj)
{
	var rv = {start: 0, length: 0}

	if (obj.createTextRange) {
		var sr = obj.ownerDocument.selection.createRange();
		rv.length = sr.text.length;
		sr.moveStart("character", -obj.value.length);
		rv.start = sr.text.length - rv.length;
	} else {
		rv.start = obj.selectionStart;
		rv.length = obj.selectionEnd - obj.selectionStart;
	}

	return rv;
}

function GenericSetSelectedText(obj, text, selectpos)
{
	text = text + "";

	if (obj.createTextRange) {

		var tr = obj.ownerDocument.selection.createRange()
		tr.text = text;
		switch(selectpos) {
			case 0:
				tr.moveStart("character", -text.length);
				tr.moveEnd("character", -text.length);
			break;
			case 1:
				tr.moveStart("character", -text.length);
			break;
		}
		tr.select();
	} else {
		var selectStart = obj.selectionStart;
		obj.value = obj.value.substring(0, selectStart) + text + obj.value.substring(obj.selectionEnd);

		switch(selectpos) {
			case 0:
				top.GenericSelectText(obj, selectStart, 0);
			break;
			case 1:
				top.GenericSelectText(obj, selectStart, text.length);
			break;
			default:
				top.GenericSelectText(obj, selectStart + text.length, 0);
		}

	}

}

function GenericOverwriteText(ev)
{
	var kc = ev.which || ev.keyCode;
	if (kc != 32 && (kc <= 40 || kc == 45 || kc == 46 || kc == 91 || kc == 144 || kc == 145 || (kc >=112 && kc <= 123)))
		return true;

	var obj = ev.srcElement || ev.target;

	if (obj.createTextRange) {

		var tr = obj.ownerDocument.selection.createRange();
		if (tr.text.length == 0) {
			tr.moveEnd("character", 1);
			tr.select();
		}

	} else {

		if (obj.selectionStart == obj.selectionEnd)
		obj.selectionEnd += 1;

	}
}
