var existsMenuSlide = false;
var ns4 = document.layers;
var ns6 = document.getElementById && !document.all;
var ie4 = document.all;
var uid = 0;
var gid = 0;
var elementTemp = null;
var parentTemp = null;
var HTMLArea = null;


function focusInput(element,blur) {
	var arg = arguments;
	if (arg[1]) {
		arg[0].css('backgroundColor', 'white');
	} else {
		arg[0].css('backgroundColor', '#e8e8e8');
	}
}

function createInput(sType, sName, sId, sSize, sClass) {
/** Cria e retorna um novo elemento input.
**/
	var Obj;
	if (sType == "radio" && !window.addEventListener) {
		Obj = document.createElement('<input type="radio" class="'+sClass+'" id="'+sId+'" name="'+sName+'" />');
	}
	else {
		Obj = document.createElement('input');
		Obj.setAttribute('type', sType);
		Obj.setAttribute('name', sName);
		if (sId) {
			Obj.setAttribute('id', sId);
		}
		if (sSize) {
			Obj.setAttribute('size', sSize);
		}
		if (sClass) {
			Obj.setAttribute('class', sClass);
			Obj.setAttribute('className', sClass); // for IE6
		}
	}
	return Obj;
}
function createSpan(sId, sClass){
/** Cria e retorna um novo elemento input.
**/
	var Obj;
	Obj = document.createElement('span');
	if (sId) {
		Obj.setAttribute('id', sId);
	}
	if (sClass) {
		Obj.setAttribute('class', sClass);
	}
	return Obj;
}
function show_props_R (obj, obj_name, equ, delim, depth) {
  var result = ''
  depth--
  for (var i in obj) {
    if (parseInt (navigator.appVersion)==2)
      var typ= 'number'     // Netscape 2.0 doesn't know about typeof
    else
      var typ= typeof (obj[i])
    if (typ=='number' && i=='length') continue
    var del= (typ=='string') ? '"' : ''
    var suf= (typ!='string' && typ!='number' && typ!='object') ?
              ' ('+typ+')' : ''
    result += obj_name+'.'+i+equ+del+obj[i]+del+suf+delim
    if (depth>0)// && typ=='object')
      result += show_props_R (obj[i], obj_name+'.'+i, equ, delim, depth)
  }
  return result;
}

function showObject (object, depth) {
  var str= show_props_R (eval (object), object, '=</TD><TD VALIGN=TOP>',
                         '</TD></TR>\n<TR><TD VALIGN=TOP>', depth)
  document.writeln ('<TABLE>\n<TR><TD>',str,'</TABLE>')
  document.close()
}

function hid(id) {
	var arg = arguments;
	var id = "#" + arg[0];
	$(id).css("display","none");
	$(id).css("visibility","hidden");
	finished();
}

function shw(id) {
	var arg = arguments;
	var id = "#" + arg[0];
	$(id).css("display","");
	$(id).css("visibility","visible");
	if (!arg[1]) finished();
}

function troggle(id) {
	var elementX = document.getElementById(id);
	if (elementX) {
		var today = new Date();
		var zero_date = new Date(0,0,0);
		today.setTime(today.getTime() - zero_date.getTime());
		var cookie_expire_date = new Date(today.getTime() + (8 * 7 * 86400000));
		if (elementX.style.display=="" || elementX.style.visibility=="visible") {			
			fade(id, false, 15, 15);
			Set_Cookie('grpBox'+id,'invisible',cookie_expire_date);
		} else {
			fade(id, true, 15, 15);						
			Set_Cookie('grpBox'+id,'visible',cookie_expire_date);
		}
	}
		
}

function removerElemento(elemento) {
	elemento.css("visibility", "hidden");
	elemento.css("display", "none");
}


function removeElement(id) {
	// função OBSOLETA. PRESERVADA APENAS PARA COMPATIBILIDADE - SERÁ ELIMINADA EM BREVE

	//fade(id, false, 8, 25);
	elementTemp = document.getElementById(id);
	if (elementTemp) {
		parentTemp = elementTemp.parentNode;
		if (parentTemp) {
			window.setTimeout('parentTemp.removeChild(elementTemp)',50);
		}
	}
}

// Show loading....
function wait() {
	$("div#loading").css("visibility", "visible");
	switchDocumentCursor("wait");
}

// Hide loading....
function finished(fromHide) {
	if (!fromHide) {
		$("div#loading").css("visibility", "hidden");	
	}
	switchDocumentCursor("auto");
	
}

function switchDocumentCursor(cursor) {
	document.body.style.cursor = cursor;
}

function addEventToElement(event, elem, func, useCapture) {
	if (elem.attachEvent) {
		elem.attachEvent("on"+event, func);
	} else if (elem.addEventListener) {
		elem.addEventListener(event, func, useCapture);
	}
}

function removeEventFromElement(event, elem, func, useCapture) {
	if (elem.detachEvent) {
		elem.detachEvent("on"+event, func);
	} else if (elem.removeEventListener) {
		elem.removeEventListener(event, func, useCapture);
	}
}
function prepareWait() {
	var elements = document.getElementsByTagName('a');
	for (var i=0;i<elements.length;i++) {
		addEventToElement('click',elements[i],wait,true);	
		addEventToElement('click',elements[i],moveConfirm,true);	
	}
	var elements = document.getElementsByTagName('form');
	for (var i=0;i<elements.length;i++) {
		addEventToElement('submit',elements[i],wait,true);	
	}	
	var elements = document.getElementsByName('submit[confirmButton]');
	for (var i=0;i<elements.length;i++) {
		addEventToElement('click',elements[i],moveConfirm,true);	
	}
	if (existsMenuSlide) {
		var elements = getElementsByClassName('userInfoBox');
		for (var i=0;i<elements.length;i++) {
			addEventToElement('mouseover',elements[i],moveMenu,true);	
		}
		var elements = getElementsByClassName('userInfoMove');
		for (var i=0;i<elements.length;i++) {
			addEventToElement('mouseover',elements[i],moveMenu,true);	
		}
		var elements = getElementsByClassName('groupInfoMove');
		for (var i=0;i<elements.length;i++) {
			addEventToElement('mouseover',elements[i],moveMenu,true);	
		}
		var elements = getElementsByClassName('groupInfoItem');
		for (var i=0;i<elements.length;i++) {
			addEventToElement('mouseover',elements[i],moveMenuGroup,true);	
		}
	}
	//addEventToElement('resize',window,correctFooter,true);	
	if (HTMLArea) {
		HTMLArea.init();
	}
	//JSFX_FloatTopDiv('sendScrapForm');
}

function getElementsByClassName (c) {
    var ret = new Array();
    var j = 0;
    var objs = document.all ?
        document.all : document.getElementsByTagName("*");
    for(i = 0;i<objs.length;i++){
        if(objs[i].className == c){
            ret[j] = objs[i];
            j++;
        } // if
    } // for
    return ret;
} // getElementsByClassName

function reSortRows() {
	/* Obs: Esta função não está funcionando como deveria. Ela apenas atualiza o
	 *		número de membros da lista, mas não as classes das linhas.
	 *		Verificar depois.
	 **/
	 
	/* Ordem dos parâmetros:
	 * ID_Tabela, htmlZero, SwitchA, SwitchB, [opcional]SwitchC, [opcional]SwitchD, [opcional]... 
	 * 
	 * Descrição:
	 *   Essa função troca as classes de todas as linhas com atributo Class="Sortable"
	 * em uma tabela. Os Switches A e B são obrigatórios, pois é a partir deles que
	 * a função estabelece um padrão para troca: ele procura pela primeira ocorrência
	 * da classe especificada como SwitchA e a troca pelo SwitchB nas linhas ímpares,
	 * e o contrário (B->A) nas linhas pares.
	 *   As switches subsequentes (C, D, E, F, ...) são opcionais, e devem ser
	 * especificadas apenas se houver classes adicionais a substituir nas outras
	 * colunas. Se switches adicionais forem especificadas, devem estar sempre
	 * em pares de troca.
	 *   A sintaxe de todos os parâmetros é verificada, de modo que os parâmetros
	 * fornecidos sejam do tipo: (ID, classe, classe, classe, classe, ...). Caso
	 * seja necessário ignorar tal verificação, inicie a switch com um caractére "/"
	 * (ex: "/span.titulo" será tratado como "span.titulo", enquanto "span.titulo"
	 *      será tratado como ".span.titulo").
	 *   Após substituir as classes, a função também atualiza o texto no final da
	 * tabela, usando a função replace().
	 *   Em seguida, a função re-escreve o conteúdo da linha, substituindo o caractére 
	 * "%" pelo número de linhas com class="sortable", contada no passo anterior.
	 *   O segundo parâmetro (htmlZero) é um código html que substitui toda a tabela
	 * no caso da contagem de linhas ser zero.
	 *
	 * Exemplo de Uso:
	 ** variavel = "<tbody><tr><td>Nenhum registro encontrado</td></tr>></tbody>";
	 ** reSortRows("grouptable", variavel, "grouptablestatus01", "grouptablestatus02", "grouptableinfo01", "grouptableinfo02", "grouptableshortcuts01", "grouptableshortcuts02");
	 *   Procura na tabela com ID "grouptable" todas as referências às classes 
	 * "grouptablestatus01", "grouptableinfo01" e "grouptableshortcuts01", e as
	 * substitui, respectivamente, por "grouptablestatus02", "grouptableinfo02" e 
	 * "grouptableshortcuts02" nas linhas ímpares, fazendo o processo inverso nas
	 * linhas pares. Caso não haja nenhuma linha na tabela, substitua seu conteúdo
	 * pelo especificado na string "variavel".
	 *  
	 *														[Pre-requisito: JQUERY]
	 **/

	/* Preparar variáveis
	 **/
	var arg = arguments;
	var addChar = function(sArg, cChr) {
		if (sArg.charAt(1) != "/") {
			if (sArg.charAt(1) != cChr) {
				sArg = cChr + sArg;
			} 
		}
		return sArg;
	}
	arg[0] = addChar(arg[0], '#');					// ID da tabela
	var ob = arg[0] + " tr.sortable";				// Linhas com os usuários
	var ll = arg[0] + " tr td.grouptablefooter"; 	// Última linha da tabela
	var qt = $(ob).size();							// Contagem de usuários
	
	var linhas = $(ob).each(function() { return this.rowIndex; });	// Capturar Objetos TableRow em Array
	var cla = "", clb = "", i = 0, x = 0, y = 0, z = arg.length;	// Variáveis

	/* Trocar classes das linhas
	 **/	
	while (x < qt) {
		var atLinha = $(linhas[x]).children(":first-child").attr("class");
		y = 2;
		if (i==0) {
			if (atLinha == arg[3]) {
				while (y < z) {
					cla = addChar(arg[y], '.');
					clb = addChar(arg[y+1], '.');
					$(linhas[x]).children(clb).addClass(cla);
					$(linhas[x]).children(clb).removeClass(clb);
					y++;y++;
				}
			}
		}
		else {
			if (atLinha == arg[2]) {
				while (y < z) {
					cla = addChar(arg[y], '.');
					clb = addChar(arg[y+1], '.');
					$(linhas[x]).children(cla).addClass(clb);
					$(linhas[x]).children(cla).removeClass(cla);
					y++;y++;
				}
			}
		}
		(i==0)?(i=1):(i=0);
		x++;
	}
	
	/* Atualizar contagem no fim da tabela.
	 **/
	var frase = $(ll).html();
	var qtd = parseInt(frase.match(/[0-9]+/));
	var nqtd = qtd - 1;
	//alert("frase: \"" + frase + "\"\nqtd: " + qtd + "\nnqtd: " + nqtd);
	if (nqtd == 0) {
		$(arg[0]).html(arg[1]);
	}
	else {
		$(ll).html(frase.replace(/[0-9]+/, nqtd));
	}
	/* Fim
	 **/
}

function showDialogModal_YesNo() {
	/* Ordem dos argumentos: 
	 * ID, DIV0, [DIV1|false], functionOnYes, outro_arg1, outro_arg2, ...
	 * 
	 * A função foi feita de modo a aceitar argumentos ilimitados, para maior
	 * flexibilidade. Todos os argumentos são repassados como parâmetros da função
	 * especificada no argumento "functionOnYes" (arg[3]), na mesma ordem.
	 * 
	 * A função se comporta de formas diferentes, dependendo do valor passado
	 * em DIV1.
	 *
	 *														[Pre-requisito: JQUERY]
	 **/
	var arg = arguments;
	// IDs das DIVs
	var div = new Array();
	div[0] = arg[1] + arg[0]; // Para divs múltiplas, a combinação é (String) DIV0 + ID
	if (arg[2])		// Se for fornecido um arg[2], existe uma div[0] por usuário
		div[1] = arg[2];
	else			// Se false for fornecido como arg[2], div[0] é uma div única
		div[0] = arg[1];
	// Contadores de loop

	var x = 0;
	var y = arg.length;
	var argumentos = "";
	
	/* Prepara todos os argumentos da função para repassar como
	 * como parâmetros da função especificada em arg[3] (functionOnYes)
	 **/
	while (x < y) {
		argumentos += "\"" + arg[x] + "\"";
		if (x < (y-1)) argumentos += ", ";
		x++;
	}
	
	/* Botões do diálogo modal e suas funções.
	 * Obs: por algum motivo, os rótulos não podem ser definidos por variáveis.
	 **/
	botoes = {
	"Não": function() {
		$(div[0]).css("visibility", "hidden");
		$(this).dialog("destroy");
		},		
	"Sim": function() {
		eval(arg[3] + "(" + argumentos + ")");
		$(div[0]).css("visibility", "hidden");
		$(this).dialog("destroy");
		}
	};
	finished();
	$(div[0]).css("visibility", "visible");
	$(function(){ 
		$(div[0]).dialog({ 
			bgiframe: true, 
			resizable: false, 
			height:140, 
			modal: true, 
			overlay: { 
				backgroundColor: "#000", 
				opacity: 0.5 
			}, 
			buttons: botoes
		});
	});
}
/*
function questionConfirm(question,idElement,func) {
	if (func) {
		displayConfirmBox(func);
	}
	var element = document.getElementById('questionInfo');	
	element.innerHTML = question;
	var id = document.getElementById('actionConfirmId');	
	id.value = idElement;
	
	var confirm = document.getElementById("confirmbox");
	confirm.style.display = 'block';
	confirm.style.visibility = 'visible';
	
		
	if (ns6) {
		fade("confirmbox",true,8,50);
	} else {
		$("div#confirmbox").css('visibility', 'visible');
		window.setTimeout('finished()',50);
	}
	
}
function questionConfirmClose() {
	if (ns6) {
		fade("confirmbox", false, 8, 50); 
	} else {
		$("div#confirmbox").css("visibility", "visible");
		window.setTimeout('finished()',50);
	}
}
*/

function moveConfirm (e) {
	if(ns4||ns6)
	{
		x = e.pageX;
		y = e.pageY;
	}
	else
	{
		x = event.x + document.body.scrollLeft;
		y = event.y + document.body.scrollTop;
	}	
	newX = x + offsetX;
	newY = y + offsetY;
	var confirmBox = document.getElementById("confirmbox");
	if (confirmBox) {
		confirmBox.style.left = (newX - 170) + 'px';
		confirmBox.style.top = (newY - 360) + 'px'; 		
	}
	return true;
}


function moveMenu (e, type) {
	if(ns4||ns6)
	{
		x = e.pageX;
		y = e.pageY;
		obj = e.target;
	}
	else
	{
		x = event.x + document.body.scrollLeft;
		y = event.y + document.body.scrollTop;
		obj = e.srcElement;
	}	
		
	if (type == null)
		type = 'user';
	idA = obj.id.split("\_");
	if (idA[1] && idA[2]) {		
		if (x > (document.body.clientWidth - 300)) {
			var menuB = document.getElementById(type+idA[1]+'_'+idA[2]);
			if (menuB) {
				diff = document.body.clientWidth - x;
				newPos = 215 - diff;			
				if (newPos > 135)
					newPos = 135;
				if (newPos > 0)
					menuB.style.left = '-'+newPos+'px';
				//menuB.style.top = (newY - 150) + 'px'; 		
			}			
		}
	}
	return true;
}
function moveMenuGroup(e) {
	moveMenu(e,'group');
}

function showError(result) {
	if (result['errors']) {
		var nErrors = result['errors'].length;
		for (x=0;x<nErrors;x++) {
			var error = result['errors'][x];
			writeError(error['class'],error['message'],error['description']);
		}
	}
}

function showResult(result) {
	var nParts = result.length;
	if (nParts) {
		alert('Partes XML: ' + nParts);			
	} else {
		writeResult(result);
	}
}

function showMessage(result) {
	if (result) {
		messages = result['messages'];
		if (messages) {
			var nMessages = messages.length;
			for (x=0;x<nMessages;x++) {
				var message = result['messages'][x];
				//alert(message['class']+'-'+message['message']+':'+message['description']);	
				writeMessage(message['class'],message['message'],message['description']);
			}
		}
	}
}

function Get_Cookie(name) {
    var start = document.cookie.indexOf(name+"=");
    var len = start+name.length+1;
    if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
    if (start == -1) return null;
    var end = document.cookie.indexOf(";",len);
    if (end == -1) end = document.cookie.length;
    return unescape(document.cookie.substring(len,end));
}

function Set_Cookie(name,value,expires,path,domain,secure) {
    document.cookie = name + "=" +escape(value) +
        ( (expires) ? ";expires=" + expires.toGMTString() : "") +
        ( (path) ? ";path=" + path : "") + 
        ( (domain) ? ";domain=" + domain : "") +
        ( (secure) ? ";secure" : "");
}

function Delete_Cookie(name,path,domain) {
    if (Get_Cookie(name)) document.cookie = name + "=" +
       ( (path) ? ";path=" + path : "") +
       ( (domain) ? ";domain=" + domain : "") +
       ";expires=Thu, 01-Jan-70 00:00:01 GMT";
}

function getValue(id,select) {
	var element = document.getElementById(id);
	if (element) {
		if (select) 
			return element[element.selectedIndex].value
		else
			return element.value;	
	}	
}

function setValue(id, value, select) {
	var element = document.getElementById(id);
	if (element) {
		if (select) 
			element.selectedIndex = value;
		else
			element.value = value;
	}	
}

//// FRIEND FUNCTIONS  /////
function addFriendCallback(result, isError, callInfo) {
	if (isError) {
		showError(result);
	} else {
		showMessage(result);		
	}		
	fade('addFriendForm',false,8,25)	
}
function addFriend(login, relationshipId) {
	var argArr = new Array(1);
	argArr['friendGroupId'] = relationshipId;	
	callFunction('friend/'+login+'/','invite',addFriendCallback,argArr);
}
function acceptFriendCallback(result, isError, callInfo) {
	if (isError) {
		showError(result);
	}
	var login = callInfo['parameters']['loginFriend'];	
	fade('invite'+login,false,8,25)	
}
function acceptFriend(login, relationshipId) {
	var argArr = new Array(2);
	argArr['friendGroupId'] = relationshipId;	
	argArr['loginFriend'] =login;
	callFunction('friend/'+login+'/','accept',acceptFriendCallback,argArr);
}
function rejectFriendCallback(result, isError, callInfo) {
	if (isError) {
		showError(result);
	}
	var login = callInfo['parameters']['loginFriend'];	
	fade('invite'+login,false,8,25)	
}
function rejectFriend(login) {
	var argArr = new Array(1);
	argArr['loginFriend'] =login;
	callFunction('friend/'+login+'/','reject',rejectFriendCallback, argArr);
}

//// SCRAP FUNCTIONS  /////
function sendScrapCallback(result, isError, callInfo) {	
	if (isError) {
		showError(result);
	} else {
		showMessage(result);
	}
	fade('friendSendForm',false,8,25)	
	fade('sendScrapForm',false,8,25)	
}
function sendScrap(login, message) {
	var argArr = new Array(1);
	argArr['msg'] = message;
	callFunction('account/'+login+'/Scrap.html','index',sendScrapCallback,argArr);
}

//// GROUP FUNCTIONS  /////

function deleteMemberCallback(result, isError, callInfo) {	
	fade("confirmbox",false,8,25)
	if (isError) {
		showError(result);
		return;
	}
	if (callInfo['parameters']['redirect']) {
		window.location.href='/account/MySpace.html';
	} else {
		$("member"+callInfo['parameters']['userId']).remove();
	}
	showMessage(result);
}

function deleteMember(login, redirect) {
alert("Opa, vai apagar!\n\nlogin="+login+"\nredir="+redirect);
/*
 	var id = document.getElementById('actionConfirmId');	
	var argArr = new Array(2);
	argArr['userId'] = id.value;	
	argArr['redirect'] = redirect;	
	callFunction('group/'+login+'/Members.html','deleteMember',deleteMemberCallback,argArr);
*/
}

function  inviteGroupCallback(result, isError, callInfo) {	
	if (isError) {
		showError(result);
	} else {		
	}	
	var login = callInfo['parameters']['loginGroup'];	
	fade('invite'+login,false,8,25)	
	showMessage(result);
}
function acceptGroup(login, email, code, who) {
	var argArr = new Array(1);
	argArr['code'] = code;	
	argArr['userId'] = who;	
	argArr['email'] = email;	
	argArr['loginGroup'] =login;
	callFunction('group/'+login+'/','confirmInvite', inviteGroupCallback,argArr);
}

function rejectGroup(login) {
	var argArr = new Array(1);
	argArr['loginGroup'] = login;
	callFunction('group/'+login+'/','reject', inviteGroupCallback, argArr);
}

function  moderatedMessageCallback(result, isError, callInfo) {	
	if (isError) {
		showError(result);
	}
	if (callInfo['parameters']['redirect']) {
		window.location.href = 'Messages.html?action=moderated';
	} else {			
		showMessage(result);
		var login = callInfo['parameters']['loginGroup'];	
		var id = callInfo['parameters']['id'];	
		fade('moderated'+id,false,8,25)	
	}
}
function acceptMessage(login, id, redirect) {
	var argArr = new Array(3);
	argArr['id'] = id;	
	argArr['loginGroup'] =login;
	argArr['redirect'] = redirect;
	callFunction('group/'+login+'/Messages.html?action=moderated','accept', moderatedMessageCallback,argArr);
}

function rejectMessage(login, id, redirect) {
	var argArr = new Array(3);
	argArr['id'] = id;	
	argArr['loginGroup'] =login;
	argArr['redirect'] = redirect;
	callFunction('group/'+login+'/Messages.html?action=moderated','reject', moderatedMessageCallback, argArr);
}


function bannerExpand()
{
	var banner = document.getElementById('banner2');
//	show('banner2');
	if (banner) {
		banner.style.visibility = 'visible';
	}
	banner = document.getElementById('banner1');
	if (banner) {
		banner.style.visibility = 'hidden';
	}
//	hide('banner1');
}

function bannerFull()
{
//	hide('banner2');
	var banner = document.getElementById('banner2');
	if (banner) {	
		banner.style.visibility = 'hidden';
	}
	banner = document.getElementById('banner1');
	if (banner) {
		banner.style.visibility = 'visible';
	}
}


/**
 * Adiciona um evento ao objeto
 * @param object Objeto que recebe o novo evento
 * @param string evType Nome do evento (sem o 'on')
 * @param function fn Nome da função a ser usada no evento
 */ 
function addEvent( obj , evType , fn ){
	if ( ! obj ) {
		return false;
	}
    if ( obj.addEventListener )
        obj.addEventListener(evType, fn, true)
    if ( obj.attachEvent )
        obj.attachEvent("on"+evType, fn)
}


/**
 * Conta os caracteres de uma textarea, limita e mostra a quantidade restante
 * @param textarea	field	Objeto textarea 
 * @param int		limit	Quantidade de caracteres possíveis
 * @param object	counter	Objeto de elemento html para receber o valor restante
 */
function maxlengthCount( field , limit , counter ) {
	if ( field.value.length > limit ) {
		field.value = field.value.substr( 0 , limit );
	}
	counter.innerHTML = limit - field.value.length;
}

//Transforma Strings XML em Arrays JS
function xml2Js(xmldoc, node) {
	var result;
	
	if (!xmldoc) return null;
	
	if (!node) {
		node = xmldoc.documentElement;
		if(!node) return null;
	}

	var vartype = node.getAttribute("type");
	if (vartype == "object") {
		result = new Object();
		var length = node.childNodes.length;
		for (var x=0; x<length; x++) {
			if (node.childNodes.item(x).nodeType == 3) { continue; }
			
			var curnode = node.childNodes.item(x);
			var tagname = curnode.nodeName;
			var r = xml2Js(xmldoc, curnode);
			tagname = tagname.replace("-", "_");
			eval("result."+tagname+" = r");
		}
	}
	else if (vartype == "array") {
		var arrayLen = parseInt(node.getAttribute("length"));
		result = new Array(arrayLen);
		var items = node.getElementsByTagName("item");
		for (var i = 0; i < items.length; i++) {
			if (items.item(i).parentNode != node) {continue;} 
			if (items.item(i).nodeType == 3) { continue; }
			
			var item = items.item(i);
			var key = item.getAttribute("key");
			result[key] = xml2Js(xmldoc, item);
		}
	}
	else {
		if (node.firstChild) {
			result = node.firstChild.nodeValue;	
		} else {
			result = node.nodeValue;
		}
		if (vartype == "integer") {
			if (!result) result = 0;
			else  result = parseInt(result);
		}
		else if (vartype == "boolean") result = (result)?true:false;
	}
	return result;
}
// Pegar parâmetros da URL via JavaScript
function getparams() {
  /** Exemplo: http://www.grupos.com.br/group/teste-rafael/Messages.html?action=index&register=20
    * getparams('action') --- Retorna "index"
    * getparams('register') --- Retorna "20"
    **/
  var arg = arguments;
  arg[0] = arg[0].replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+arg[0]+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}
