function addEvent(object, eventType, eventListener){
	try {
		if (object.addEventListener){
			object.addEventListener(eventType, eventListener, false);
			return true;
		} else if (object.attachEvent){
			var result = object.attachEvent('on' + eventType, eventListener);
			return result;
		} else {
			return false;
		}
	} catch(e) {
		return false;
	}
}

function preventDefault(event) {
	if(window.event)
		window.event.returnValue = false;
	if(event && event.preventDefault)
		event.preventDefault();
}

function findTarget(event) {
	var target;
	if (!event)
		var event = window.event;
	if (event.target)
		target = event.target;
	else if (event.srcElement)
		target = event.srcElement;
	if (target.nodeType == 3) // defeat Safari bug
		target = target.parentNode;
	return target;
}

function findParentByTagName(element, tagName) {
	var result = element;
	while(result.nodeName.toLowerCase() != tagName.toLowerCase()) {
		if(result.nodeName.toLowerCase() == 'body')
			return null;
		result = result.parentNode;
	}
	return result;
}

function hasClass(element, className) {
	var elementClass = ' ' + element.getAttribute('class') + ' ';
	return elementClass.indexOf(' ' + className + ' ') > -1;
}

function clearElement(element) {
	while(element.childNodes.length > 0)
		element.removeChild(element.firstChild);
}

function appendText(element, text) {
	element.appendChild(document.createTextNode(text));
}

function addClickListener(element, func) {
	addEvent(element, 'click', func, false);
}

function getElementsByClass(root, tagname, classname) {
//	alert('getElementsByClass()\nroot: ' + root + '\ntagname: ' + tagname + '\nclassname: ' + classname);
	var elements = root.getElementsByTagName(tagname);
	var result = new Array();
	for(var i = 0; i < elements.length; i++)
		if(hasClass(elements[i], classname))
			result.push(elements[i]);
	return result;
}

function getElementsByClasses(root, tagname, classnames) {
	var elements = root.getElementsByTagName(tagname);
	var result = new Array();
	for(var i = 0; i < elements.length; i++) {
		var added = false;
		var j = 0;
		while(j < classnames.length && added == false) {
			if(hasClass(elements[i], classnames[j])) {
				result.push(elements[i]);
				added = true;
			} else {
				j++;
			}
		}
	}
	return result;
}

function explode(string, explodeChar) {
	if(explodeChar == undefined)
		explodeChar = '|';
	var result = new Array();
	var substring = '';
	var escapeNextChar = false;
	for(var i = 0; i < string.length; i++) {
		var currentChar = string.charAt(i);
		if(escapeNextChar) {
			substring += currentChar;
			escapeNextChar = false;
		} else if(currentChar == '\\') {
			escapeNextChar = true;
		} else if(currentChar == explodeChar) {
			result.push(substring);
			substring = '';
		} else {
			substring += currentChar;
		}
	}
	if(substring != '')
		result.push(substring);

	return result;
}

function implode(array, implodeString) {
	if(implodeString == undefined)
		implodeString = '|';
	var result = '';

	for(var i = 0; i < array.length; i++)
		array[i] = escapeString(array[i]);

	result = array.join(implodeString);

	return result;
}

function escapeString(string) {
	string = '' + string;
	var result = '';
	for(var i = 0; i < string.length; i++) {
		var currentChar = string.charAt(i);
		if(currentChar == '|')
			result += '\\|';
		else if(currentChar == '\\')
			result += '\\\\';
		else
			result += currentChar;
	}
	return result;
}

function hideElement(element) {
	element.style.display = 'none';
}

function showElement(element, display) {
	element.style.display = display || '';
}

function stopLoading() {
  var loadingScreen = document.getElementById('loadingScreen');
  loadingScreen.parentNode.removeChild(loadingScreen);
  loadingScreen = null;
}

function trim(string) {
	return string.replace(/^\s+|\s+$/g, '');
}

function addClass(element, className) {
	var newClass = element.getAttribute('class') + ' ' + className;
	element.setAttribute('class', trim(newClass));
}

function removeClass(element, className) {
	var oldClass = ' ' + element.getAttribute('class') + ' ';
	element.setAttribute('class', trim(oldClass.replace(' ' + className + ' ', '')));
}

function getElementTop(element){
	var top = element.offsetTop;
	while(element.offsetParent != null){
		var parent = element.offsetParent;
		top += parent.offsetTop;
		element = parent;
	}
	return top;
}

function getElementLeft(element) {
	var left = element.offsetLeft;
	while(element.offsetParent != null) {
		var parent = element.offsetParent;
		left += parent.offsetLeft
		element = parent;
	}
	return left;
}

function clickElement(element) {
	var clickEvent = document.createEvent('MouseEvents');
	clickEvent.initEvent('click', true, true);
	element.dispatchEvent(clickEvent);
}

function getKeyCode(event) {
	if(window.event)
		return window.event.keyCode;
	else
		return event.which;
}

function checkUncheckAll(theElement) {
	var theForm = theElement.form;
	var i = 0;
	for(i=0; i<theForm.length;i++){
		if(theForm[i].type == 'checkbox' && theForm[i].name != 'checkall')
			theForm[i].checked = theElement.checked;
	}
}
var caretPos = false;
var focusSet = false;
function storeCaret() {
	var textEl = document.form.message;
	if (textEl.createTextRange) caretPos = document.selection.createRange().duplicate();
}
function insert(code) {
	var textEl = document.form.message;
	if (caretPos)
		caretPos.text = ' ' + code + ' ';
	else
		textEl.value = textEl.value + ' ' + code + ' ';
	textEl.focus();
	document.form.html_checklist__emoticons.checked = true;
}
function redirect(url) {
	setTimeout('top.location.replace("' + url + '")', 500);
}
function page_initialize() {
	if (!focusSet) {
		var form = $('nw_form');
		if(form)
			form.focusFirstElement();
	}
}
function focusElement(elem) {
	//var element = elem;
	//document.body.onload = function(event) {
	var elements = document.getElementsByName(elem);
	if (elements.length == 0) {
		return;
	} else {
		focusSet = true;
		$(elements[0]).focus();
	}
//		var form = $('nw_form');
//		var elements = form.getElements();
//		var element = elements[elem];
//		element = element;
	//};
}

function initialize_unread_posts_count(event) {
	if($('unread_posts_count')) {
		new PeriodicalExecuter(function(pe) {
			new Ajax.Request('forum/posts/ajax_unread_posts.php', {
				onSuccess: function(response) {
					var unreadPostsCount = parseInt(response.responseText);
					if (!isNaN(unreadPostsCount)){
						$('unread_posts_count').update(unreadPostsCount);
						if (unreadPostsCount == 0) {
							$('unread_posts_icon').src = '/images/icons/f_standard.gif';
							$('unread_posts_link').hide();
						} else {
							$('unread_posts_icon').src = '/images/icons/f_new.gif';
							$('unread_posts_link').show();
						}
					}
				}
			});
		}, 15);
	}

}

addEvent(window, 'load', initialize_unread_posts_count);


function initialize_unread_pm_count(event) {

	if($('unread_pm_count')) {
		new Ajax.PeriodicalUpdater('unread_pm_count', 'forum/messaging/ajax_unread_pm.php', {
				method: 'get', frequency: 120, decay: 1
		});

	}

}

addEvent(window, 'load', initialize_unread_pm_count);
