var frameCnt = 0;
var deltaX = deltaY = 0;
var isIE = isNS = isFF = isMac = isOpera = false;
var brVer = 0;
GetBrowserCaps();
function GetBrowserCaps() {
	var ua = window.navigator.userAgent.toLowerCase();
	var app = navigator.appName.toLowerCase();
	isOpera = ua.indexOf("opera") > -1;
	if (!isOpera) {
		isIE = ua.indexOf("msie ") > -1;
		if (!isIE) {
			isNS = (app == "netscape");
			isFF = isNS && ua.indexOf("firefox") > -1;
		}
	}
	isMac = (ua.indexOf("macintosh") > -1 || ua.indexOf("mac_powerpc") > -1 || ua.indexOf("mac_ppc") > -1);
	if (isIE) brVer = GetIeVersion();
}
function GetIeVersion() {
	var ua = window.navigator.userAgent.toLowerCase();
	var msie = ua.indexOf ("msie ");
	if (msie > -1) {
		return parseFloat (ua.substring (msie+5,ua.indexOf (".",msie)+2));
	}
	else {
		return 0;
	}
}
function SwapImage(me, img) {
	var el = GetLinkImage(me);
	var src = String(el.src);
	var nsrc = src.substr(0, src.lastIndexOf("/") + 1) + img;
	el.src = nsrc;
}
function GetLinkImage(me) {
	var el = null;
	if (isIE && !isMac) {
		if (me.firstChild)
			el = me.firstChild;
		else
			el = me;
	}
	else {
		el = null;
		for (var i = 0; i < me.childNodes.length; i++) {
			if (me.childNodes[i].tagName == "IMG") {
				el = me.childNodes[i];
				break;
			}
		}
		if (!el)
			el = me;
	}
	return el;
}
function SwapClass(me, cn) {
	me.className = cn;
}
function SwapBackground(me, ev, img) {
	var url = me.style.backgroundImage;
	if (url.indexOf(img) > -1) return true;
	var s2 = url.replace("url", "");
	s2 = s2.replace("(", "");
	s2 = s2.replace(")", "");
	if (isOpera) s2 = s2.replace('"', "");
	s2 = trim(s2);
	var pos = s2.lastIndexOf("/");
	if (pos == -1) s2 = img;
	else s2 = s2.substring(0, pos + 1) + img;
	me.style.backgroundImage = "url(" + s2 + ")";
}
function CheckTop() {
	var dp = WebRoot + "default.aspx";
	if (window == top) {
		window.location = dp;
		return false;
	}
	if (window.location.protocol.toLowerCase() == "https:")
		return false;
	try {
		if (!top.isMainFrame) {
			top.location = dp;
			return false;
		}
	}
	catch (e) {
		top.location = dp;
		return false;
	}
	historyCnt = history.length;
	CheckLI();
	return true;
}
function CheckLI() {
	var s = window.location.search;
	if (s == "")
		return;
	s = s.substr(1);
	var li = GetQSValue(s, "li");
	if (li == "1") {
		parent.RegLI();
	}
}
function GetQSValue(s, key) {
	if (!key || key == "" )
		return "";
	var val = s.split("&");
	var re = new RegExp(key, "i");
	for(var i = 0; i < val.length; i++) {
		var param = Unescape(val[i]);
		var pos = param.indexOf("=");
		if (pos > 0 && param.length > pos && param.substr(0,pos).search(re) != -1) {
			return param.substr(pos + 1);
		}
	}
	return "";
}

function WriteCookie(szKey,_gB, permanent) {
	var s = Escape(szKey)+"="+escape(_gB) + ";path=/";
	if (permanent) {
		var expireDate=new Date();
		expireDate.setYear(expireDate.getYear() + 1);
		s += ";expires="+expireDate.toGMTString();
	}
	document.cookie = s;
}
function Escape(str) {
	str = escape(str);
	var re = new RegExp("_", "g");
	str = str.replace(re, "%5F");
	return str;
}
function ReadCookie(key) {
	var s = document.cookie;
	if (!key || key == "" )
		return s;
	var val = s.split(";");
	var re = new RegExp(key, "i");
	for(var i = 0; i < val.length; i++) {
		var param = Unescape(val[i]);
		var pos = param.indexOf("=");
		if (pos > 0 && param.length > pos && param.substr(0,pos).search(re) != -1) {
			return param.substr(pos + 1);
		}
	}
	return "";
}
function Unescape(s) {
	try {
		return unescape(s);
	} catch (e) {}
	return s;
}
function ShowHideAnswer(id) {
	var el = $get(id);
	if (el.style.display == "none") {
		el.style.display = "block";
		try {
			el.scrollIntoView();
			var id2 = "rowH_" + id.substr(4);
			el = $get(id2);
			el.scrollIntoView();
		}
		catch (e) {
		}
	}
	else {
		el.style.display = "none";
	}
}
function CheckEmail(email) {
	var re = /^([a-zA-Z0-9_][a-zA-Z0-9_\x27\-\.]*)*[a-zA-Z0-9_]@[a-zA-Z0-9][a-zA-Z0-9_\x27\-\.]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
	return re.exec(email);
}
function CheckString(s, mode) {
	for (var i = 0; i < s.length; i++) {
		var n = s.charCodeAt(i);
		if (!((n > 32 && n < 127) || ((mode == 1 || mode == 2) && n == 32) || (mode == 2 && (n == 9 || n == 10 || n == 13)) )) {
			var s1 = s.substr(0, i);
			var s2 = s.substr(i + 1);
			var p1 = s1.lastIndexOf(String.fromCharCode(13));
			if (p1 == -1) {
				p1 = 0;
			}
			var p2 = s2.indexOf(String.fromCharCode(13));
			if (p2 == -1) {
				p2 = s2.length;
			}
			var p3 = s1.length - p1;
			var l = "";
			if ((p3 + p2) < 100) {
				l = s1.substr(p1) + "--> " + s.charAt(i) + " <--" + s2.substr(0, p2);
			}
			else {
				if (p3 < 50) {
					l = s1.substr(p1 + 1);
				}
				else {
					l = s1.substr(s1.length - 50);
				}
				l += "--> " + s.charAt(i) + " <--";
				if (p2 < 50) {
					l += s2.substr(0, p2 - 1);
				}
				else {
					l += s2.substr(0, 50);
				}
			}
			msg = "Illegal character at position " + (i + 1) + ":\n\n" + l;
			alert(msg);
			return false;
		}
	}
	return true;
}
function CheckStringW(s, mode) {
	var m = null;
	if (mode == 0 || mode == 100) {
		var re = new RegExp("[^0-9a-z]", "gi");
		m = re.exec(s);
	}
	else if (mode == 1 || mode == 101) {
		var re = new RegExp("\\d|\\{|\\}|\\[|\\]|\\(|\\)|/|\\f|\\n|\\r|\\t|\\u00AC|\\u0060|\\u00A6|=|!|\"|\\u00A3|\\$|%|\\^|\\*|\\+|~|\\?|\\\\|\\||<|>|\\u20AC", "gi");
		m = re.exec(s);
	}
	else if (mode == 2 || mode == 102) {
		var re = new RegExp("\\f|\\n|\\r|\\t|\\u00AC|\\u0060|\\u00A6|=|!|\"|\\u00A3|\\$|%|\\^|\\*|\\+|~|\\?|\\\\|\\||<|>|\\u20AC", "gi");
		m = re.exec(s);
	}
	else if (mode == 3 || mode == 4 || mode == 103 || mode == 104) {
		//do nothing
	}
	if (m) {
		var i = m.index;
		var s1 = s.substr(0, i);
		var s2 = s.substr(i + 1);
		var p1 = s1.lastIndexOf(String.fromCharCode(13));
		if (p1 == -1) {
			p1 = 0;
		}
		var p2 = s2.indexOf(String.fromCharCode(13));
		if (p2 == -1) {
			p2 = s2.length;
		}
		var p3 = s1.length - p1;
		var l = "";
		if ((p3 + p2) < 100) {
			l = s1.substr(p1) + "--> " + s.charAt(i) + " <--" + s2.substr(0, p2);
		}
		else {
			if (p3 < 50) {
				l = s1.substr(p1 + 1);
			}
			else {
				l = s1.substr(s1.length - 50);
			}
			l += "--> " + s.charAt(i) + " <--";
			if (p2 < 50) {
				l += s2.substr(0, p2 - 1);
			}
			else {
				l += s2.substr(0, 50);
			}
		}
		return new SearchResult(false, (i + 1), l);
	}
	if (mode >= 100) {
		return CheckStringW2(s, mode);
	}
	return new SearchResult(true);
}
function CheckStringW2(s, mode) {
	for (var i = 0; i < s.length; i++) {
		var n = s.charCodeAt(i);
		if (!((n > 32 && n < 127) || ((mode == 101 || mode == 102) && n == 32) || (mode == 102 && (n == 9 || n == 10 || n == 13)) )) {
			var s1 = s.substr(0, i);
			var s2 = s.substr(i + 1);
			var p1 = s1.lastIndexOf(String.fromCharCode(13));
			if (p1 == -1) {
				p1 = 0;
			}
			var p2 = s2.indexOf(String.fromCharCode(13));
			if (p2 == -1) {
				p2 = s2.length;
			}
			var p3 = s1.length - p1;
			var l = "";
			if ((p3 + p2) < 100) {
				l = s1.substr(p1) + "--> " + s.charAt(i) + " <--" + s2.substr(0, p2);
			}
			else {
				if (p3 < 50) {
					l = s1.substr(p1 + 1);
				}
				else {
					l = s1.substr(s1.length - 50);
				}
				l += "--> " + s.charAt(i) + " <--";
				if (p2 < 50) {
					l += s2.substr(0, p2 - 1);
				}
				else {
					l += s2.substr(0, 50);
				}
			}
			return new SearchResult(false, (i + 1), l);
		}
	}
	return new SearchResult(true);
}
function SearchResult(isOk, pos, str) {
	this.isOk = isOk;
	this.pos = pos;
	this.str = str;
}
function secureMessage(ev) {
	CancelEvent(ev);
	var s = "http://" + window.location.host + WebRoot + "public/SecurityPopup.aspx";
	var w = window.open(s, "SecurityPopup", "width=200,height=225");
	w.focus();
	return false;
}
function DoGoBack(ev, pos) {
	CancelEvent(ev);
	if (window.location.protocol == "https:") {
		if (pos) {
			try {
				history.go(pos);
			} catch(e) {
				history.back();
			}
		}
		else {
			history.back();
		}
		return false;
	}
	var sa = 0;
	try {
		sa = SpecialBackAction;
	} catch (e) {}
	if (sa == 1) {
		BackAction();
		return false;
	}
	if (!pos) pos = -2 - frameCnt; //due to banner;
	else pos -= frameCnt;
	try {
		history.go(pos);
	}
	catch (e) {
		history.back();
	}
	return false;
}
function sc_GetCSSTagProperties(tag_name, arr) {
	var ss = document.styleSheets;
	if (isMac && !isNS) {
		var tag_name = "*" + tag_name;
	}
	for (var i = 0; i < ss.length; i ++) {
		var f = false;
		if (isNS) {
			for (var j = 0; j < ss[i].cssRules.length; j ++) {
				if (ss[i].cssRules[j].selectorText == tag_name) {
					for (var k = 0; k < arr.length; k++) {
						var s1 = "arr[" + k + "].value = ss[" + i + "].cssRules[" + j + "].style." + arr[k].name + ";";
						eval (s1);
					}
					f = true;
					break;
				}
			}
		}
		else {
			//vk: returns access denied for local css files.
			try {
				for (var j = 0; j < ss[i].rules.length; j ++) {
					if (ss[i].rules.item(j).selectorText == tag_name) {
						for (var k = 0; k < arr.length; k++) {
							var s1 = "arr[" + k + "].value = ss[" + i + "].rules.item(" + j + ").style." + arr[k].name + ";";
							eval(s1);
						}
						f = true;
						break;
					}
				}
			}
			catch (e) {}
		}
		if (f) {
			break;
		}
	}
}
function sc_DictionaryItem(name, value) {
	this.name = name;
	this.value = value;
}
function GetCSSInt(tagVal) {
	if(isNaN(parseInt(tagVal))) return 0;
	else return parseInt(tagVal);
}
function IsPx(s) {
	if (s.length < 3)
		return false;
	var ss = s.substr(s.length - 2);
	if (ss == "px")
		return true;
	else
		return false;
}
function sc_GetNumber(s) {
	var res = "";
	var started = false;
	var ch;
	for (var i = 0; i < s.length; i++) {
		ch = s.charCodeAt(i);
		if (started) {
			if (ch > 47 && ch < 58) {
				res += s.charAt(i);
			}
			else {
				break;
			}
		}
		else {
			if ((ch > 48 && ch < 58) || (i == (s.length - 1) && ch == 48)) {
				res = s.charAt(i);
				started = true;
			}
		}
	}
	return parseInt(res);
}
function ltrim (s) {
	return s.replace( /^\s*/, "" )
}
function rtrim (s) {
	return s.replace( /\s*$/, "" );
}
function trim (s) {
	return rtrim(ltrim(s));
}
function SelectOption(sel, val) {
	for (var i = 0; i < sel.options.length; i++) {
		if(sel.options[i].value == val) {
			sel.selectedIndex = i;
			break;
		}
	}
}
function CancelEvent(ev) {
	if (ev) {
		if (isNS) ev.preventDefault = true
		else ev.returnValue = false;
	}
}
function GetDate(d, format) {
	var s;
	if (format == 1) {
		var re = /^\d{4}-\d{1,2}-\d{1,2}$/;
		if (!re.test(d)) {
			alert(s)
			return null;
		}
		var ss = d.split("-")
		var y = sc_GetNumber(ss[0]);
		var m = sc_GetNumber(ss[1]);
		var d1 = sc_GetNumber(ss[2]);
		var dd = new Date(y, m - 1, d1);
		if (y == dd.getFullYear() && (m - 1) == dd.getMonth() && d1 == dd.getDate()) {
			return dd;
		}
		else {
			return null;
		}
	}
	else if (format == 2 || format == 3) {
		var re1, re2;
		if (format == 2) {
			re1 = /^\d{4}-\d{1,2}-\d{1,2} \d{2}:\d{2}$/;
			re2 = /^\d{4}-\d{1,2}-\d{1,2} \d{2}:\d{2}:\d{2}$/;
		}
		else if (format == 3) {
			re1 = /^\d{4}-\d{1,2}-\d{1,2}T\d{2}:\d{2}$/;
			re2 = /^\d{4}-\d{1,2}-\d{1,2}T\d{2}:\d{2}:\d{2}$/;
		}
		if (!re1.test(d) && !re2.test(d)) {
			return null;
		}
		var s1;
		if (format == 2) {
			s1 = d.split(" ");
		}
		else if (format == 3) {
			s1 = d.split("T");
		}
		var ss = s1[0].split("-")
		var y = sc_GetNumber(ss[0]);
		var m = sc_GetNumber(ss[1]);
		var d1 = sc_GetNumber(ss[2]);
		var dd = new Date(y, m - 1, d1);
		if (y == dd.getFullYear() && (m - 1) == dd.getMonth() && d1 == dd.getDate()) {
			//continue;
		}
		else {
			return null;
		}
		var ss = s1[1].split(":");
		var hour = sc_GetNumber(ss[0]);
		var min = sc_GetNumber(ss[1]);
		var sec = 0;
		if (ss.length > 2) {
			sec = sc_GetNumber(ss[2]);
		}
		var dd = new Date(y, m - 1, d1, hour, min, sec);
		if (hour == dd.getHours() && min == dd.getMinutes()) {
			return dd;
		}
		else {
			return null;
		}
	}
}
function ResizeWindowTo(w, h) {
	var ww, wh;
	if (isNS) {
		wh = top.innerHeight;
		ww = top.innerWidth;
	}
	else {
		if (document.documentElement.clientWidth) {
			wh = document.documentElement.clientHeight;
			ww = document.documentElement.clientWidth;
		}
		else {
			wh = document.body.clientHeight;
			ww = document.body.clientWidth;
		}
	}
	try {
		top.resizeBy(w - ww, h - wh);
	} catch(e) {}
}
function OpenPopupWindow(ev, path, name, param) {
	CancelEvent(ev);
	var w = window.open(path, name, param);
	w.focus();
	return false;
}
function CancelBubble(ev) {
	if (!ev) return;
	if (isNS) {
		ev.stopPropagation();
	}
	else {
		ev.cancelBubble = true;
	}
}
function DoBlur(me) {
	if (me && me.blur) {
		try {me.blur()} catch(e) {}
	}
}
function sc_kp (me, ev) {
	if (!(isIE && isMac)) {
		if (!ev || ev.keyCode != 13) {
		return true;
		}
	}
	var res = false;

	if (me.onclick) {
		res = me.onclick();
	}
	else if (me.onmouseup) {
		res = me.onmouseup();
	}
	else {
		res = true;
	}
	if (!res) {
		CancelEvent(ev);
	}
	return res;
}
function GetAbsolutePosArr(el, arr) {
	if (!arr) {
		arr = new Array();
		arr[0] = 0;
		arr[1] = 0;
	}
	var l = el.offsetLeft;
	var t = el.offsetTop;
	var p = el.offsetParent;
	arr[0] += l;
	arr[1] += t;
	if (p != null && p != el) GetAbsolutePosArr(p, arr);
	return arr;
}

if (!Function.prototype.apply) {
	Function.prototype.apply = function (obj, args) {
		if (!obj) return null;
		obj.___fn = this;
		var str = "";
		if (args) {
			for (var i = 0; i < args.length; i++) {
				str += (i != 0 ? "," : "") + "args[" + i + "]";
			}
		}
		var result = null;
		s1 = "result = obj.___fn(" + str + ");"
		eval(s1);
		obj.___fn = null;
		return result;
	};
}
function $get(id) {
	return document.getElementById(id);
}
function GetStringFromResource(s, arr) {
	var r = FindStringResource();
	if (r) return r.getString(s, arr);
	else return s;
}
function FindStringResource(w) {
	var r = null;
	if (!w) {
		w = window;
	}
	if (w.document.getElementById("scriptStringRes")) {
		if (w._stringRes) {
			return w._stringRes;
		}
		try {
			r = w.InitializeStringResource();
			w._stringRes = r;
		} catch (e) {alert("err 1: " + e.description)}
		return r;
	}
	if (w.parent != w.self) {
		try {
			return FindStringResource(w.parent);
		} catch (e) {}
	}
}
function InitializeStringResource() {
	var res = IniStringRes();
	res.getString = function (s, arr) {
		if (this[s]) {
			if (!arr) return this[s];
			var s2 = this[s];
			for (var i = 0; i < arr.length; i++) {
				var re = new RegExp("\\{" + i + "\\}", "gi");
				s2 = s2.replace(re, arr[i]);
			}
			return s2;
		}
		else return s;
	};
	return res;
}
function GetInvalidString(res) {
	return GetStringFromResource('ERROR_INVALID_CHARACTER', [res.pos, res.str, "\n"]);
}
function GetQsArray(s) {
	var arr = new Array();
	var pos = s.indexOf("?");
	if (pos == -1) return arr;
	var s = s.substring(pos + 1);
	var ss = s.split("&");
	for (var i = 0; i < ss.length; i++) {
		var pos1 = ss[i].indexOf("=");
		var item = null;
		if (pos1 == -1) {
			item = new sc_DictionaryItem(ss[i], "");
		}
		else {
			item = new sc_DictionaryItem(ss[i].substring(0, pos1), ss[i].substring(pos1 + 1));
		}
		arr[arr.length] = item;
	}
	return arr;
}
function InsertQsParam(path, name, val) {
	var pos = path.indexOf("?");
	if (pos == -1) {
		return path + "?" + name + "=" + val;
	}
	else {
		var s = path.substring(pos);
		var pv = GetQSValue(s, name);
		if ((pv == null || pv == "")) {
			return path + "&" + name + "=" + val;
		}
	}
	var arr = GetQsArray(path);
	var s = path.substring(0, pos + 1);
	s += name + "=" + val;
	for (var i = 0; i < arr.length; i++) {
		if (arr[i].name != name) {
			s += "&" + arr[i].name + "=" + arr[i].value;
		}
	}
	return s
}