var _agt = navigator.userAgent.toLowerCase();
var is_ie = ((_agt.indexOf('msie') != -1) && (_agt.indexOf('opera') == -1));
var is_gecko = (_agt.indexOf('gecko') != -1);

function ExaAddOnLoad(fnc)
{
	if (fnc) {
		var _oldOnload = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = (typeof fnc != 'function') ? function() { eval(fnc); } : fnc();
		}
		else {
			window.onload = function() { _oldOnload(); fnc(); }
		}
	}
}

function ExaSetCookie(fieldId, fieldVal, expHours)
{
	var expDate = new Date();
	expDate.setTime(expDate.getTime() + (expHours * 3600 * 1000));
	document.cookie = fieldId + '=' + escape(fieldVal) + ((expHours == null) ? '' : '; expires=' + expDate.toGMTString()) + '; path=/;';
}

function ExaGetCookie(fieldId)
{
	var beg = document.cookie.indexOf(fieldId + '=');
	if (beg == -1) return false;
	var len = beg + fieldId.length + 1;
	var end = document.cookie.indexOf(';', len);
	if (end == -1) {
		end = document.cookie.length;
	}
	return unescape(document.cookie.substring(len, end));
}

var imgOpened = new Image(9,9);
imgOpened.src = '/styles/images/minus.gif';
var imgClosed = new Image(9,9);
imgClosed.src = '/styles/images/plus.gif';

function ExaExpandList(fieldPrefix)
{
    var objElm = document.getElementById(fieldPrefix + 'Child');
    var objImg = document.getElementById(fieldPrefix + 'Img');
    if (objElm && objImg) {
		if (objElm.style.display == 'none') {
			objElm.style.display = 'block';
			objImg.src = imgOpened.src;
		}
    	else {
			objElm.style.display = 'none';
			objImg.src = imgClosed.src;
		}
	}
}

function ExaConfirm(fieldVal)
{
	return confirm(fieldVal);
}

function ExaResize(fieldId, fieldVal)
{
	var obj = document.getElementById(fieldId);
	if (obj) {
		var newheight = 20 * fieldVal;
		newheight += parseInt(obj.style.height, 10);
		if (newheight >= 100 && newheight <= 1000) {
			obj.style.height = newheight + 'px';
			ExaSetCookie('__form_resize__', newheight, 8760);
		}
	}
}

function ExaCheckForm(obj)
{
	ExaInsertSigns('content', -1);
	return true;
}

function ExaHelpline(fieldId, fieldVal)
{
	var obj = document.getElementById(fieldId);
	if (obj && aFormat && aFormat[fieldVal]) {
		obj.innerHTML = aFormat[fieldVal];
	}
}

// Replacement for arrayname.length property
function ExaArraySize(thearray)
{
	for (i = 0; i < thearray.length; i++) {
		if ((thearray[i] == 'undefined') || (thearray[i] == '') || (thearray[i] == null))
			return i;
		}
	return thearray.length;
}

// Appends element to the array
function ExaArrayPush(thearray, val)
{
	thearray[ ExaArraySize(thearray) ] = val;
}

// Removes and returns the last element of an array
function ExaArrayPop(thearray)
{
	thearraysize = ExaArraySize(thearray);
	retval = thearray[thearraysize - 1];
	delete thearray[thearraysize - 1];
	return retval;
}

// Define the Signs tags
var aSignsBuffer = new Array();
var aTags = new Array('[b]', '[/b]', '[i]', '[/i]', '[u]', '[/u]', '[through]', '[/through]', '[quote]', '[/quote]', '[code]', '[/code]', '[img]', '[/img]', '[url]', '[/url]');

function ExaInsertSigns(fieldId, fieldVal)
{
	// Close all open sign tags
	if (fieldVal == -1) {
		var j = 0;
		while (aSignsBuffer[0]) {
			iNumber = ExaArrayPop(aSignsBuffer) - 1;
			ExaInsertContent(fieldId, aTags[iNumber + 1]);
			var obj = document.getElementById('addsigns_' + iNumber);
			if (obj) {
				iText = obj.value;
				obj.value = iText.substr(0, (iText.length - 1));
			}
			if (j++ > 10) return;
		}
		return;
	}
	var iLast = false;
	// Find last occurance of an open tag the same as the one just clicked
	for (i = 0; i < aSignsBuffer.length; i++) {
		if (aSignsBuffer[i] == fieldVal + 1) {
			iLast = i;
		}
	}
	// Detect Selection
	var bSelection = false;
	// IE
	if (is_ie) {
		bSelection = (document.selection.createRange().text) ? true : false;
	}
	// Gecko
	else if (is_gecko) {
		var obj = document.getElementById(fieldId);
		bSelection = (obj.selectionStart != obj.selectionEnd) ? true : false;
	}
	if (bSelection) {
		ExaInsertContent(fieldId, aTags[fieldVal], aTags[fieldVal + 1]);
	}
	else {
		// Open
		if (iLast === false) {
			ExaInsertContent(fieldId, aTags[fieldVal]);
			ExaArrayPush(aSignsBuffer, fieldVal + 1);
			var obj2 = document.getElementById('addsigns_' + fieldVal);
			if (obj2) {
				obj2.value += '*';
			}
		}
		// Close - already opened
		else {
			iNumber = ExaArrayPop(aSignsBuffer) - 1;
			ExaInsertContent(fieldId, aTags[iNumber + 1]);
			var obj2 = document.getElementById('addsigns_' + iNumber);
			if (obj2) {
				iText = obj2.value;
				obj2.value = iText.substr(0, (iText.length - 1));
			}
		}
	}
	return;
}

function ExaInsertContent(fieldId, fieldVal, fieldVal2)
{
	var obj = document.getElementById(fieldId);
	if (obj) {
		// IE
		if (is_ie) {
			obj.focus();
			var sel = document.selection.createRange();
			var theSelection = sel.text;
			if (theSelection) {
				sel.text = fieldVal + theSelection;
				if (fieldVal2) sel.text += fieldVal2;
				theSelection = '';
			}
			else {
				sel.text = fieldVal;
				sel.moveStart('character', -fieldVal.length);
			}
			if (obj.createTextRange) obj.caretPos = document.selection.createRange().duplicate();		
			return;
		}
		// Gecko
		else if (is_gecko) {
			var selLength = obj.textLength;
			var selStart = obj.selectionStart;
			var selEnd = obj.selectionEnd;
			var s1 = (obj.value).substring(0, selStart);
			var s2 = (obj.value).substring(selStart, selEnd);
			var s3 = (obj.value).substring(selEnd, selLength);
			if (!fieldVal2) {
				fieldVal = (selStart == 0 || (obj.value).charAt(selStart - 1) == ' ' ? '' : ' ') + fieldVal;
				fieldVal2 = (selEnd == ((obj.value).length - 1) || (obj.value).charAt(selEnd) == ' ' ? '' : ' ');
			}
			else {
				fieldVal = (selStart == 0 || (obj.value).charAt(selStart - 1) == ' ' ? '' : ' ') + fieldVal;
				fieldVal2 = fieldVal2 + (selEnd == selLength || (obj.value).charAt(selEnd) == ' ' ? '' : ' ');
			}
			obj.value = s1 + fieldVal + s2 + fieldVal2 + s3;
			obj.focus();
			obj.selectionStart = selStart + obj.value.length;
			obj.selectionEnd = selEnd + obj.value.length;
		}
		// Another else ...
		else {
			
			obj.value += ' ' + fieldVal + ' ';
			if (fieldVal2) {
				obj.value += fieldVal2 + ' ';
			}
			obj.focus();
		}
	}
	return;
}

function ExaPutDate(fieldId, fieldVal)
{
	var obj = document.getElementById(fieldId);
	if (obj) {
		if (fieldVal == 0) {
			var out = '01.01.2010 00:00';
		}
		else {
			var now = new Date();
			var newDate = new Date(now.getTime() + (fieldVal * 24 * 60 * 60 * 1000));
			var out = newDate.getDate() + '.' + (newDate.getMonth() + 1) + '.' + newDate.getFullYear() + ' ' + newDate.getHours() + ':' + newDate.getMinutes();
		}
		obj.value = out;
		var obj2 = document.getElementById('blocked_note');
		if (obj2 && obj2.value == '') obj2.value = 'Registrácia podlieha zrušeniu.';
	}
}
