﻿/* CONSTANTS */
IDENTIFIED = 'identified'
ANONYMOUS = 'anonymous'

function toggleDisplay(thread, action)
{
    var elements = getElementsByClass('reply', thread, 'span');
    var length = elements.length;
    for (var i = 0; i < length; i++)
    {
        if (action == 'expand')
            elements[i].style.display = 'block';
        else if (action == 'collapse')
            elements[i].style.display = 'none';
    }
}

function expandOrCollapse(element)
{
    if (element.src.match('plus'))
        expand(element);
    else if (element.src.match('minus'))
        collapse(element);
}

function expand(element)
{
    toggleDisplay(element.parentNode.parentNode, 'expand');
    element.src = 'images/minus.jpg';
}

function collapse(element)
{
    toggleDisplay(element.parentNode.parentNode, 'collapse');
    element.src = 'images/plus.jpg';
}

function expandOrCollapseAll()
{
    var elements = getElementsByClass('plus_minus', document.getElementById('body-content'), 'img');
    var length = elements.length;

    var action;
    for (var i = 0; i < length; i++)
    {
        if (elements[i].src.match('plus')) action = expand;
        else if (elements[i].src.match('minus')) action = collapse;

        action(elements[i]);
    }
}

function ExpandFirstTopics(n)
{
    var elements = getElementsByClass('plus_minus', document.getElementById('body-content'), 'img');
    var length = elements.length;

    if (length < n) n = length;
    for (var i = 0; i < n; i++)
    {
        expand(elements[i]);
    }
}

function validatePost(form)
{
    if (form.posttype.value == 'identified')
    {
        if (form.identifiedemail.value == '' || form.password.value == '')
            return validatePostAlert("Para enviar a mensagem com seu usuário, preencha email e senha!")
    }
    else
    {
        if (form.name.value == '' || form.state.value == '' || form.anonymousemail == '')
            return validatePostAlert("Para enviar a mensagem sem login, preencha nome, estado e email!")
    }
    if (form.title.value == '') return validatePostAlert("Preencha o assunto!");
    if (form.body.value == '') return validatePostAlert("Não é possível enviar mensagens em branco!");

    return true;
}

function validatePostAlert(message)
{
    alert(message);
    return false;
}

/*
 * Retorna todos os elementos de uma mesma classe dentro de um node
 * tag é o nome da tag (div, span, ...)
 * searchClass é uma regexp a ser procurada no nome da classe
 */
function getElementsByClass(searchClass, node, tag) {
	var classElements = new Array();
	if (node == null) node = document;
	if (tag == null) tag = '*';

	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if (pattern.test(els[i].className)) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function changePostTypeTo(node, type)
{
    node.posttype.value = type;
    if (type == ANONYMOUS)
    {
        document.getElementById('anonymous_post').style.display = 'block';
        document.getElementById('identified_post').style.display = 'none';
    }
    else if (type == IDENTIFIED)
    {
        document.getElementById('anonymous_post').style.display = 'none';
        document.getElementById('identified_post').style.display = 'block';
    }
}

var replyFormParentName = 'postform';
function moveReplyFormTo(id)
{
    var reference, newObj;
    // get postform node and clone it to newObj
    reference = document.forms['postform'];
    newObj = reference.cloneNode(true);
    
    // remove postform from old position and append newObj (with postform) to new position
    document.getElementById(replyFormParentName).removeChild(reference);
    replyFormParentName = 'reply' + id;
    document.getElementById(replyFormParentName).appendChild(newObj);

    // set replyto, title and display style of newObj
    newObj.replyto.value = id;
    newObj.title.value = getElementsByClass('title', document.getElementById('message' + id), 'span')[0].innerHTML;
    newObj.style.display = 'inherit';
}