﻿/**
 * Função que muda a classe de um elemento pelo id
 * 
 * @param {Object} id O nome do elemento a ter a classe alterada.
 * 
 * @param {Object} classname O nome da classe a ser atribuída.
 */
function setclassname(id, classname) {				
	var element;
	if(document.getElementById && (element = document.getElementById(id))) {
		element.className = classname;
	}
}

/**
 * Função para acomodar o "link externo" para webstandard uasndo jQuery
 */
function externalLinks() {
	$("a[rel=external]").addClass("external").
		click(function() {
		window.open($(this).attr("href"));
		return false; }
	);
	$("a[target=_blank]").addClass("external").
		click(function() {
		window.open($(this).attr("href"));
		return false; }
	).removeAttr('target');
}


/**
 * Função que compacta a descrição das notícias do elemento "id".
 * O elemento "id" pode ser um id único (como "#noticias"), uma classe
 * (como ".news"), ou qualquer elemento reconhecido pelo jQuery.
 * O elemento deve conter internamente um item ou parágrafo da classe
 * ".titulo" e a descrição da notícia da classe ".msg";
 * 
 * @param {Object} id
 */
function compactNews(id, title, message){
	//Adiciona às notícias: sublinhado ao hover e a animação ao click.
	$(id)
		.find(message)
		.hide()
		.end()
		.find(title)
		.hover(
			function() {$(this).addClass('fakelink');},  
			function() {$(this).removeClass('fakelink');} 
		)
		.click(
			function() {
				$(id).find(message).not(':hidden').slideUp('slow');
				var answer = $(this).next();
					if (answer.is(':hidden')) {
 					answer.slideDown('slow');
					}
			}
		)
	;
}


/**
 * Realiza a coloração das linhas (tr) do corpo (tbody) de tabelas (table) no
 * modo de zebra (cores alternadas), inserindo a classe 'odd' às linhas ímpares
 * e a classe 'even' às linhas pares. 
 * A regra não se aplica às linhas que contenham cabeçalhos (th).
 * @author Arttie
 * 
 * @param {Object} tableId O identificador (id ou classe) da(s) tabela(s) a
 * ser(em) zebradas.
 */
function stripTable(tableId){
	$(function(){
		var $t = $(tableId + ' tbody');
		$('tr:not([th]):odd', $t).addClass('odd');
		$('tr:not([th]):even', $t).addClass('even');
		$('tr:not([th])', $t).hover(function(){
			$(this).addClass('hover');
		}, function(){
			$(this).removeClass('hover');
		});
	});
}

/**
 * Função que com que várias check boxes acompanhem o status de uma
 * check box de referência (marcar ou desmarcar tudo).  
 * 
 * @param {Object} refBox O ID do elemento check box usado como referência,
 * ou seja, aquele que será clicado para selecionar todos. Ex.: '#mainbox';
 * 
 * @param {Object} childBox A CLASSE dos check boxes que acompanharão o
 * status da check box de referência. Ex.: '.allboxes', '.childboxes';
 */
function matchCheckedBox(refBox, childBox){
	$(function(){
		//Ao clicar no input refBox
		$(refBox).click
			//detecta todos outros inputs (classe childBox) (de)seleciona
			(function(){$(childBox).attr('checked', this.checked);}
		);
	});	
}


/**
 * Função que insere um conteúdo html dentro de um elemento (container).
 * appendIn('th.container', '<p>conteúdo inserido</p>');
 * Ex.: <th class='container'><p>conteúdo inserido</p></th>
 * @param {Object} container
 * @param {Object} content
 */
function appendIn(container, content){
	$(function(){
		$(container).append(content);
	});
}


/**
 * Função que inicializa o editor para a edição de notícias
 * (Muito simples)
 */
function initEditorNews(){
	tinyMCE.init({
		mode : "textareas",
		theme: "advanced",
		plugins : "xhtmlxtras,preview",
		plugin_preview_width : "650",
		plugin_preview_height : "500",
		valid_elements : ""
			+"a[href|id|class|lang|name|rel|style|title|target|type|dir<ltr?rtl],"
			+"abbr[class|id|lang|style|title|dir<ltr?rtl],"
			+"acronym[class|id|lang|style|title|dir<ltr?rtl],"
			+"br[class|id|style|title],"
			+"del[datetime|cite|class|id|lang|style|title|dir<ltr?rtl],"
			+"em/i[class|id|lang|style|title|dir<ltr?rtl],"
			+"ins[class|id|lang|style|title|dir<ltr?rtl],"
			+"p[class|id|lang|style|title|dir<ltr?rtl],"
			+"span[class|id|lang|style|title|dir<ltr?rtl],"
			+"strong/b[class|id|lang|style|title|dir<ltr?rtl],"
			+"sub[class|id|lang|style|title|dir<ltr?rtl],"
			+"sup[class|id|lang|style|title|dir<ltr?rtl],",
		theme_advanced_toolbar_location : "top",
		theme_advanced_buttons1 : "bold,italic,del,ins,sub,sup,abbr,acronym,link,unlink,undo,redo,charmap,code,cleanup,preview,help",
		theme_advanced_buttons2 : "",
		theme_advanced_buttons3 : ""
	});
}
