
var NS4 = (typeof(document.layers) != 'undefined')         ? true : false;
var DOM = (typeof(document.getElementById) != 'undefined') ? true : false;
var IE  = (typeof(document.all) != 'undefined')            ? true : false;
var IE4 = IE && !DOM;

if (!window.console || !console.firebug) {
	window.console = { 
			log: function() { },
			debug: function() { },
			warn: function() { },
			error: function() { },
			info: function() { },
	};
}

function tablelist_invert_selection(name) {
	var elements = document.forms[name].elements;
	for (var i = 0; i < elements.length; i++) {
		if (elements[i].type == 'checkbox' && elements[i].name != 'dummy') {
			elements[i].checked = !(elements[i].checked);
			tablelist_item_click(elements[i]);
		}
	}
}

function tablelist_item_click(check_box) {
	var item = $('item-' + check_box.value);
	item.className = check_box.checked ? 'tablelist-select' : 'tablelist-normal';
}

/** FOR IE only **************************************/

function hideIEObject(tag) {
	if (IE) {
		$A(document.getElementsByTagName(tag)).each(function(obj) {
			Element.addClassName($(obj),'iehidden');
		});
	}
}

function showIEObject(tag) {
	if (IE) {
		$$('.iehidden').each(function(obj) {
			if ($(obj).tagName == tag) Element.removeClassName($(obj),'iehidden');
		});
	}
}

/* Tab in form */

function _formCenter() {
	if (dialogWindow) {
		$('panel-dialog').style.width = '';
		dialogWindow.center();
	}
}

function _formtabHide(tabid, secid) {
	Element.removeClassName(tabid, 'on');
	if (sec = $(secid)) sec.style.display = 'none';
	if (sec = $('div'+secid)) sec.style.display = 'none';
}

function _formtabShow(tabid, secid) {
	Element.addClassName(tabid, 'on');
	if (sec = $(secid)) sec.style.display = 'block';
	if (sec = $('div'+secid)) sec.style.display = 'block';
}

function formtabToggle(preTabName, preSecName, posNum, maxNum) {
	if (!DOM) return;
	for (var i = maxNum; i > 0; i--) {
		_formtabHide(preTabName + i, preSecName + i);
	}
	_formtabShow(preTabName + posNum, preSecName + posNum);
	_formCenter();
}

function addOnLoadEvent(func) {
	var oldOnload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	}
	else {
		window.onload = function() {
			oldOnload();
			func();
		}
	}
}

function parseJson(data) {
	if (data.length == 0) {
		return { status: 1, data: '' };
	}
	if (data.substring(0,1) != '{') {
		return { status: 0, data: data.length ? data : 'Unspecified error' };
	}
	return eval('(' + data + ');');
}

function absolutePosition(el) {
	var sLeft = 0, sTop = 0;
	var isDiv = /^div$/i.test(el.tagName);
	if (isDiv && el.scrollLeft) {
		sLeft = el.scrollLeft;
	}
	if (isDiv && el.scrollTop) {
		sTop = el.scrollTop;
	}
	var r = { x: el.offsetLeft - sLeft, y: el.offsetTop - sTop };
	if (el.offsetParent) {
		var tmp = absolutePosition(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}
	return r;
}

function expandForm(id) {
	obj = $(id+'/img');
	if (obj) {
		if (obj.hasClassName('expand-arrow-right')) {
			Element.removeClassName($(obj),'expand-arrow-right');
			Element.addClassName($(obj),'expand-arrow-down');

			var overlayDimensions = Element.getDimensions('overlay');
			overlayheight = overlayDimensions.height;

			if ($('seccont1')) {
				sections = $$('.seccont');
				if ((sections.length) > 0) {
					sections.each(function(el) {
						if (el.style.display != 'none') {
							dialogDimensions = Element.getDimensions(el);
							if ((dialogDimensions.height + 220) < overlayheight) {
								if (IE) {
									el.style.height = dialogDimensions.height + 120 + 'px';
								} else {
									el.style.height = dialogDimensions.height + 220 + 'px';
								}
								obj.setAttribute('plus', '1');
							}
						}
					});
				}
			}
			_formCenter();
		}
		else if (obj.hasClassName('expand-arrow-down')) {
			Element.removeClassName($(obj), 'expand-arrow-down');
			Element.addClassName($(obj), 'expand-arrow-right');

			if ($('seccont1')) {
				sections = $$('.seccont');
				if ((sections.length) > 0) {
					sections.each(function(el) {
						if (el.style.display != 'none') {
							dialogDimensions = Element.getDimensions(el);
							if (obj.getAttribute('plus')) {
								if (IE) {
									el.style.height = dialogDimensions.height - 220 + 'px';
								}
								else {
									el.style.height = dialogDimensions.height - 220 + 'px';
								}
							}
						}
					});
				}
			}
			_formCenter();
		}
	}
	Element.toggle(id);
}

function openTab(id) {
	var idsplit = (id.split('\/'));
	var type = idsplit[2]; // enable/disable
	if (type == 'enable') {
		tab = Element.getDimensions($('navigator-box'));
		tabmax = tab.width;
		tabact = 0;
		$A($('navigator-tabs').childNodes).each(function(child) {
			tabact += Element.getDimensions(child).width + 2;
		});

		sru(id);
	}
	else {
		sru(id);
	}
}

function sruComplete(req) {
	var ret = parseJson(req.responseText);
	if (typeof ret['status'] == 'undefined' || ret['status'] == 0) {
		console.error('Error!\n' + ret['data']);
		return;
	}
	var uid    = ret['id'];
	var data   = ret['data'];
	var reload = data['reload'];
	var text   = data['text'];
	var div, val;
	for (div in text) {
		val = text[div];
		if ($(div) && val) {
			if (div == 'panel-dialog') hideIEObject('SELECT');
			Element.update(div, val);
			if (div == 'panel-dialog') {
				$('panel-dialog').style.width  = '';
				dialogWindow = new Lightbox.base('panel-dialog', { closeOnOverlayClick : false });
			}
		}
		else {
			console.warn('sruComplete: Not exists div "' + div + '"!');
		}
	}
	if (data['execute']) {
		eval(data['execute']);
	}
	if (data['msg']) {
		if (data['msg'].length == 2) DisplayMessage(data['msg'][0], data['msg'][1]);
	}
	if (reload) {
		for (var i = 0; i < reload.length; i++) {
			if (reload[i]) {
				sru(reload[i]);
			}
		}
	}
}

var sruRequest = {
	req: { time: 0, interval: 1000, uid: '' },
	check: function(uid) {
		var d = new Date();
		var t = d.getTime();
		if (this.req.uid == uid) {
			if (this.req.time + this.req.interval > t) {
				return false;
			}
		}
		this.req.uid  = uid;
		this.req.time = t;
		return true;
	}
}

function sru(uid) {
	var status = 0;
	var error  = '';
	if (!sruRequest.check(uid)) {
		return;
	}
	var req = new Ajax.Request(AppAjaxPath + uid, {
		method: 'post',
		parameters: (arguments.length > 1 ? 'eval=' + arguments[1] : ''),
		onFailure:   function() { console.error('NetTeam Alert!\nError sru.onFailure for uid: ' + uid + '!'); },
		onException: function(re, ex) {
			error = (ex.name == 'NS_ERROR_NOT_AVAILABLE') ? 'Brak połączenia z serwerem!' : 'Nieznany (' + ex.name + ')';
		},
		onSuccess: function(req) {
			status = 1;
			sruComplete(req);
		},
		onComplete: function() {
			if (status == 0) DisplayMessage('Wystąpił błąd: ' + error, 'crit');
		}
	});
}

function sruButton(uid) {
	if ($('panel-dialog').visible()) {
		var childrenpanel = $A($('panel-dialog').childNodes);
		childrenpanel.each(function(child) {
			if (child.tagName == "FORM") {
				formid = child;
			}
		});

		first = formid.getAttribute('first');
		if (first) {
			eval(first);
		}
	}

	sru(uid, '&'+Form.serialize($(uid).form));
}

function sruSelect(uid) {
	$$('.list-selected').each(function(el) { Element.removeClassName(el, 'list-selected'); });
	Element.addClassName(uid, 'list-selected');
	Element.update('page-expand', '');
	sru(uid);
}

function sruList(uid) {
	['page-list','page-expand'].each(Element.toggle);
	sruSelect(uid);
}

function showExpand() {
	$('page-list').hide();
	$('page-expand').show();
	$$('.arrow_on_info').each(function(el) {
		Element.removeClassName(el, 'arrow_on_info');
		Element.addClassName(el, 'arrow_on_desc');
	});
}

function showList() {
	$('page-expand').hide();
	$('page-list').show();
	$$('.arrow_on_info').each(function(el) {
		Element.removeClassName(el, 'arrow_on_desc');
		Element.addClassName(el, 'arrow_on_info');
	});
}

function sruExpand(uid) {
	['page-list','page-expand'].each(Element.toggle);
	if ($('page-expand').visible()) {
		$$('.arrow_on_info').each(function(el) {
			Element.removeClassName(el, 'arrow_on_info');
			Element.addClassName(el, 'arrow_on_desc');
		});
	}
	else {
		$$('.arrow_on_desc').each(function(el) {
			Element.removeClassName(el, 'arrow_on_desc');
			Element.addClassName(el, 'arrow_on_info');
		});
	}
	sru(uid);
}

var clicked = 0;
function sruClick(uid_onclick, uid_ondblclick) {
	if (clicked == 1) {
		clicked = 2;
		sruSelect(uid_ondblclick);
	}
	else {
		clicked = 1;
		setTimeout("sruClickOnce('" + uid_onclick + "')", 250);
	}
}

function sruClickOnce(uid_onclick) {
	if (clicked != 2) {
		clicked = 0;
		sruSelect(uid_onclick);
	}
	clicked = 0;
}

function sruNavi(pre, id) {
	sru(pre + '/info/' + id);
	sru(pre + '/exp/' + id);
}

function sruDesc(uid) {
	['page-info','page-list','page-desc'].each(Element.toggle);
	if (Element.empty('page-desc')) {
		sru(uid);
	}
}

function sruBrowse(uid) {
	Containers.id_moved_element = 'undefined';
	sru(uid);
}

var summTimeout;
function showLoginTime(time) {
	var Hours = Math.floor(time / 3600);
	var Mins  = Math.floor((time - (Hours * 3600)) / 60);
//	var Secs  = Math.floor(time - (Hours * 3600) - (Mins * 60));

	var obj = $('login-time');
	if (obj) {
		obj.innerHTML = padZero(Hours, 2) + ':' + padZero(Mins, 2);
		var interval = 60; // 1 min
		// TODO: zamiast setTimeout -> setInterval
		summTimeout = window.setTimeout("showLoginTime(" + (time + interval) + ")", interval * 1000);
	}
}
function stopLoginTime() {
	if (typeof summTimeout  != 'undefined') {
		clearTimeout(summTimeout);
	}
}

function sruSummary() {
	sru('0/login/summary');
	new PeriodicalExecuter(function(pe) {
		if (typeof summTimeout == 'number') {
			window.clearTimeout(summTimeout);
			delete summTimeout;
		}
		sru('0/login/summary');
	}, 60 * 5); // 5 min
}

var arrSlaves = '';
function changeSlave(value, slave) {
	var items = $A($(slave).childNodes);

	if (arrSlaves == '') arrSlaves = items;

	if (items != arrSlaves) {
		items.each(function(item) {
			Element.remove(item);
		});
		var i = 0;
		arrSlaves.each(function(item) {
			var op = new Option(item.innerHTML, item.value, ((i == 0) ? true : false), false);
			$(slave).options[i] = op;
			$(slave).options[i].setAttribute('parent', item.getAttribute('parent'));
			i++;
		});
	}

	items = $A($(slave).childNodes);
	items.each(function(item) {
		if (item.getAttribute('parent') != null) {
			if ((item.getAttribute('parent') == value) || (item.value == 0)) Element.show(item);
			else {
				Element.remove(item);
			}
		}
	});
	$(slave).value = 0;
}

function changeAvailability(firstElemId, secondElemId) {
	document.getElementById(secondElemId).disabled = (document.getElementById(firstElemId).checked) ? "disabled" : "";
	document.getElementById(secondElemId).checked = "";
}
