var existsMenuSlide = false;
var ns4 = document.layers;
var ns6 = document.getElementById && !document.all;
var ie4 = document.all;
var uid = 0;
var gid = 0;
var oldElementConf = new Array(10);

function isIEversionLessThanOrEqual6() {
    if(isIE()) {
        temp = navigator.appVersion.split("MSIE");
        version = parseFloat(temp[1]);
        return (version <= 6);
    } else {
        return false;
    }
}
function isIE() { // Private method
  return (navigator.userAgent.indexOf("MSIE") > -1);
}
function isAlien(a) {
   return isObject(a) && typeof a.constructor != 'function';
}

function isArray(a) {
    return isObject(a) && a.constructor == Array;
}

function isBoolean(a) {
    return typeof a == 'boolean';
}

function isEmpty(o) {
    var i, v;
    if (isObject(o)) {
        for (i in o) {
            v = o[i];
            if (isUndefined(v) && isFunction(v)) {
                return false;
            }
        }
    }
    return true;
}

function isFunction(a) {
    return typeof a == 'function';
}

function isNull(a) {
    return typeof a == 'object' && !a;
}

function isNumber(a) {
    return typeof a == 'number' && isFinite(a);
}

function isObject(a) {
    return (a && typeof a == 'object') || isFunction(a);
}

function isString(a) {
    return typeof a == 'string';
}

function isUndefined(a) {
    return typeof a == 'undefined';
} 

function prepareCall() {
	hide('errorBox');
	hide('confirmBox');	
	hide('messageBox');
	wait();
}

function hide(id) {
	var elementX = document.getElementById(id);
	if (elementX) {
		elementX.style.display="none";
		elementX.style.visibility="hidden";
	}
	if (id != 'loading' && id != 'menuuserContainer' && id != 'loginboxContainer')
		finished();
}

function show(id, type) {
	var elementX = document.getElementById(id);
	if (elementX) {				
		elementX.style.visibility="visible";
        if (type) {
                elementX.style.display=type;
        } else {
                elementX.style.display="";
        }
	}
	if (id != 'loading' && id != 'menuuserContainer' && id != 'loginboxContainer') {
		finished();
	}
}

function toggle(id, type) {
	var elementX = document.getElementById(id);
	if (elementX) {				
		if (elementX.style.visibility=="hidden" || elementX.style.display=="none") {
			show(id, type);
		} else {
			hide(id);
		}
	}	
}

function showTableRow(objId) {
   ie4 = document.all;
   obj = document.getElementById(objId);
   if (obj && isIE()) {
      obj.style.display = 'block';
   } else if (obj){
      obj.style.display = 'table-row';
   }
}
function addTableRow(idTable, rowObj) {
   table = document.getElementById(idTable);
   if (table) {
	   if (!rowObj) return;
	   if (isIE()) {
	   	  table = table.firstChild;
	   }
	   table.appendChild(rowObj);
   }
}

function showTableCell(objId) {
   ie4 = document.all;
   obj = document.getElementById(objId);
   if (obj && ie4) {
      obj.style.display = 'block';
   } else if (obj){
      obj.style.display = 'table-cell';
   }
}

function toggleCookie(id, block) {
	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" || elementX.style.display=="none") {			
			if (block) {
				show(id);
			} else {
				fade(id, false, 15, 15);
			}
			Set_Cookie('grpBox'+id,'invisible',cookie_expire_date);
		} else {
			if (block) {
				hide(id);
			} else {
				fade(id, true, 15, 15);						
			}
			Set_Cookie('grpBox'+id,'visible',cookie_expire_date);
		}
	}
}

function removeElement(id) {
	//fade(id, false, 8, 25);
	hide(id);
	var element = document.getElementById(id);
	//alert(element);
	if (element) {
		var parentNodeObj = element.parentNode;
		if (parentNodeObj) {
			parentNodeObj.removeChild(element);
			//window.setTimeout('parentNodeObj.removeChild(element)', 500);
		}
	}
}

// Show loading....
function wait() {
	//alert('loading');
	show('loading');
	//window.setTimeout('finished()', 10000);
	floatDiv('loading', 'fromtop', 1);
	switchDocumentCursor('wait');
}

// Hide loading....
function finished() {
	//alert('finished');
	hide('loading');
	switchDocumentCursor('auto');
}

function switchDocumentCursor(cursor) {
	document.body.style.cursor = cursor;
	parent.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() {
//	window.unload = wait();
//  var elements = document.getElementsByTagName('a');
//  for (var i=0;i<elements.length;i++) {
//     if (elements[i].className != 'linkTab') {
//       addEventToElement('click',elements[i],wait,true);	
//      }
//		addEventToElement('click',elements[i],moveConfirm,true);	
	//}
//	var elements = document.getElementsByTagName('img');
//	for (var i=0;i<elements.length;i++) {
//		addEventToElement('click',elements[i],moveConfirm,true);	
//	}	
//	var elements = document.getElementsByTagName('input');
//	for (var i=0;i<elements.length;i++) {
//		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);	
//	}

}

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 moveMenu (e, type) {
	if(ns4||ns6)
	{
		x = e.pageX;
		y = e.pageY;
		obj = e.target;
	}
	else
	{
		x = event.clientX + document.body.scrollLeft;
		y = event.clientY + 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)) {
			//ypSlideOutMenu.moveMenu('userMenu'+idA[1]+'_'+idA[2],newX,newY);
			var menuB = document.getElementById(type+idA[1]+'_'+idA[2]);
			if (menuB) {
				diff = document.body.clientWidth - x;
				newPos = 250 - diff;			
				if (newPos > 70)
					newPos = 70;
				if (newPos > 0)
					menuB.style.left = '-'+newPos+'px';
				//menuB.style.top = (newY - 150) + 'px'; 		
			}			
		}
	}
	return true;
}
function moveElement (id, e, x, y) {
	var obj = document.getElementById(id);
	var xx;
	var xy;
	if (obj) {
		if(ns4||ns6) {
			if (e) {
				xx = e.pageX;
				xy = e.pageY;
			} else {
				xx = x;
				xy = y;
			}
		}
		else {
			//alert(event.clientX);
			if (event && !x && !y) {
				xx = event.clientX + document.body.scrollLeft;
				xy = event.clientY + document.body.scrollTop;
			} else {
				xx = x + document.body.scrollLeft;
				xy = y + document.body.scrollTop;
			}
		}	
		obj.style.left = xx +'px';
		obj.style.top = xy +'px';					
	}
	return true;
}

function moveMenuGroup(e) {
	moveMenu(e,'community');
}
function questionConfirm(question,idElement,func,event) {
	if (func) {
		displayConfirmBox(func);
	}
	var element = document.getElementById('questionInfo');	
	element.innerHTML = question;
	var id = document.getElementById('actionConfirmId');	
	id.value = idElement;	
	if (ns6) {
		fade('confirmBox',true,8,50);
		show('confirmBox');	
	} else {
		show('confirmBox');		
		//window.setTimeout('finished()',50);
	}
	moveConfirm(event);
}

function questionConfirmClose() {
	if (ns6) {
		fade('confirmBox', false,8,50); 
	} else {
		hide('confirmBox');		
//		window.setTimeout('finished()',50);
	}
	
	
}

function moveConfirm (e) {
	var xx = 0;
	var xy = 0;
	if(ns4||ns6) {
		xx = e.pageX;
		xy = e.pageY;
	} else {
		if (event) {
			//http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_event.asp
			// event.x = Sets or retrieves the x-coordinate, in pixels, of the mouse pointer's position relative to a relatively positioned parent element.
			xx = event.clientX + document.body.scrollLeft;
			xy = event.clientY + document.body.scrollTop;
		}
	}
	var newX = xx + offsetX;
	var newY = xy + offsetY;
	var confirmBox = document.getElementById('confirmBox');
	if (confirmBox) {
		confirmBox.style.left = (newX+100) + 'px';
		confirmBox.style.top = (newY - 150) + 'px'; 		
	}	
	return true;
}

function showContextHelp(module, functionality, event) {
    callFunctionFrame('help/Index.html', 'contextHelp', 'helpBox', 'module='+module+'&amp;functionality='+functionality);
	helpBoxObj = document.getElementById('helpBox');
	//moveHelpBox(helpBoxObj, event);
	show('helpBox');

    if(isIEversionLessThanOrEqual6()) {
        iframeObj = document.getElementById("iframeHideControls");
        if(!iframeObj) {
            iframeObj = document.createElement('iframe');
            iframeObj.setAttribute('id', 'iframeHideControls');
            iframeObj.setAttribute('src', 'javascript:""');
            iframeObj.setAttribute('scrolling', 'no');
            iframeObj.setAttribute('frameborder', '0');
            iframeObj.setAttribute('style', 'display: none;');
            iframeObj.style.position = 'absolute';
            iframeObj.style.top = '0px';
            iframeObj.style.left = '0px';
            document.body.appendChild(iframeObj);
        }
        helpBoxObj.style.zIndex = 2;
        iframeObj.style.width = helpBoxObj.offsetWidth + "px";
        iframeObj.style.height = helpBoxObj.offsetHeight + "px";
        iframeObj.style.top = helpBoxObj.offsetTop + "px";
        iframeObj.style.left = helpBoxObj.offsetLeft + "px";
        iframeObj.style.zIndex = helpBoxObj.style.zIndex - 1;
        show(iframeObj.id);
    }

	return false;
}

function hideHelpBox() {
	hide('helpBox');
    if(isIEversionLessThanOrEqual6()) {
        hide("iframeHideControls");
    }
}

function moveHelpBox(obj, e) {
	var xx = 0;
	var xy = 0;
	if(ns4||ns6)
	{
		xx = e.pageX;
		xy = e.pageY;
	}
	else
	{
		if (event) {
			xx = event.clientX + document.body.scrollLeft;
			xy = event.clientY + document.body.scrollTop;
	}	}
	//var newX = xx + offsetX;
	//var newY = xy + offsetY;
	var newX = 115;
	var newY = xy;
	if (obj) {
		obj.style.left = (newX+100) + 'px';
		obj.style.top = (newY - 150) + 'px'; 		
	}	
	return true;
}

function showError(result) {
	if (result && 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'],error['redirect']);
		}
	}
	if (result && result['systemErrors']) {
		var nErrors = result['systemErrors'].length;
		for (x=0;x<nErrors;x++) {
			var error = result['systemErrors'][x];
			writeSystemError(error['class'], error['message'], error['description'], error['trace']);
		}
	}
	finished();
}

function showMessage(result) {
	if (result && result['messages']) {
		var nMessages = result['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'],message['redirect']);
		}
	}
	finished();
}

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";
}

/*
*  Especificar o valor de um campo, e se ele ? readonly.
*  @param id  string - id do elemento
*  @param value string - valor do elemento
*  @param readonly boolean
*
*  @return object refer?ncia para o campo que foi requisitado
*/
function setValue(id, value, select) {
	try {
		var element = document.getElementById(id);
		if (element) {
			if (select) 
				element.selectedIndex = value
			else
				element.value = value;	
		}
	} catch(e) {
		alert(e);
		return null;
	}
}

function getValue(id,select) {
	var element = document.getElementById(id);
	if (element) {
		if (select)
			return element[element.selectedIndex].value
		else
			return element.value;	
	}	
}

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 if (isIE()) {
		Obj = document.createElement('<input type="'+sType+'" class="'+sClass+'" size="'+sSize+'" 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);
		}
	}
	return Obj;
}

//// SCRAP FUNCTIONS  /////
function sendScrapCallback(result, isError, callInfo) {	
	if (isError) {
		showError(result);
	}
	if (callInfo['parameters']['redirect']) {
		window.location.href=window.location.href;
	}
	else {
		showMessage(result);
		fade('sendScrapForm', false, 8, 25);
		finished();
	}
}

function sendScrap(urlType, login, message, redirect) {
	var argArr = new Array(2);
	argArr['msg'] = escape(message);
	if (redirect) {
		argArr['redirect'] = 1;	
	}
	callFunction(urlType+'/'+login+'/Scrapbook.html', 'save', sendScrapCallback, argArr);
}

//// COMMUNITY FUNCTIONS  /////
function deleteMemberCallback(result, isError, callInfo) {
	fade('confirmBox', false, 8, 25);
	if (isError) {
		finished();
		showError(result);
		return;
	}
	if (callInfo['parameters']['redirect']) {
		window.location.href= urlhome+'account/MySpace.html';
	} else {
		showMessage(result);
		removeElement('member_'+callInfo['parameters']['userId']);
	}
	finished();
}

function deleteMember(login, redirect) {
	var id = document.getElementById('actionConfirmId');	
	var argArr = new Array(1);
	argArr['userId'] = id.value;	
	argArr['redirect'] = redirect;	
	callFunction('community/'+login+'/Members.html', 'deleteMember', deleteMemberCallback, argArr);
}

function inviteCommunityCallback(result, isError, callInfo) {	
	if (isError) {
		showError(result);
	}
	finished();
	var login = callInfo['parameters']['loginCommunity'];	
	fade('invite'+login, false, 8, 25)	
}

function acceptCommunity(login, email, code, who) {
	var argArr = new Array(1);
	argArr['code'] = code;	
	argArr['userId'] = who;	
	argArr['email'] = email;	
	argArr['loginCommunity'] =login;
	callFunction('community/'+login+'/', 'confirmInvite', inviteCommunityCallback, argArr);
}

function rejectCommunity(login) {
	var argArr = new Array(1);
	argArr['loginCommunity'] = login;
	callFunction('community/'+login+'/', 'reject', inviteCommunityCallback, argArr);
}

function popUp (url, width, height, name, center, scroll) {
	if (name == '')   name = 'janela';
	if (center == '') center = false;
	var args = "width="+width+",height="+height;
	if (center && screen && screen.availWidth) { // Centralizar
		var l = (screen.availWidth-10 - width) / 2;
		var t = (screen.availHeight-20 - height) / 2;
		args += ",left="+l+",top="+t+",screenX="+l+",screenY="+t;
	}
	if (scroll) {
		args += ",scrollbars=yes";
	} else {
		args += ",scrollbars=no";
	}
	args += ",resizable=yes,location=no";
	args += ",menubar=no,toolbar=no,status=yes,titlebar=no,directories=no";
	window.open(url, name, args);
	finished();
}

/*
 *  Seleciona todos os checkboxes de nome "objName" do documento atual
 *  @param obj(deprecated) object - refer?ncia para o elemento que seleciona todos
 *  @param objName string - nome dos checkboxes que ser?o selecionados.
*/
function selectAll(obj, objName) {
   elem = document.getElementsByTagName("input");
   for (i=0; i<elem.length; i++) {
      input = elem[i];
      if (input.type == "checkbox" && input.name==objName) {
            input.checked = obj.checked;
      }
   }
}

// Lista todos os checkboxes que est?o selecionados.
function getSelected() {
	selected = new Array();
	elem = document.getElementsByTagName("input");
	for (i=0; i<elem.length; i++) {
		input = elem[i];
		if (input.type != "checkbox" || input.id == 'selAll' || input.id == 'allMsgWrap') continue;
		isSelected = input.checked;
		if (isSelected) selected.push(input.id);
	}	
	return selected;
}

function selectListFromSearch(separator){
	selectFromSearch('', separator);
}

function selectFromSearch(valor, separator) {
	// Valor: string '<id>@<name>@<uid>'
	var formSel = document.getElementById('selall');
	if (window.opener) winparent = window.opener;
	else winparent = parent;
	if (valor || formSel) {
		var formId = document.getElementById('search_id');
		var formUid = document.getElementById('search_uid');
		var formName = document.getElementById('search_name');
		var elemento = winparent.document.getElementById(formId.value);
		var elementoUid = null;
		if (formUid.value) elementoUid = winparent.document.getElementById(formUid.value);	

		if (!elemento && !elementoUid)
			return;

		// Se puder selecionar mais de um elemento, elemento "id" deve ser um array "id[]"
		if (formSel && !valor) {
			var sel = getSelected();
			var size = sel.length;
			var retorno = Array();
			var retornoName = Array();
			var retornoUid = Array();
			i = 0;
	    	for (i = 0; i < size; i++) {
    	    	valor = document.getElementById(sel[i]).value.split("@");
				retorno[i] = valor[0];
				// Pode se informar um id de um elemento para mostrar o nome do item pesquisado
				if (formName.value != '') {
					retornoName[i] = valor[1];
				}					
				if (formUid.value != '') {
					retornoUid[i] = valor[2];
				}	
			}
			if (separator) {
				 if (elemento.value)
					elemento.value += separator+replaceAll(retorno.toString(), ',', separator);
				else
					elemento.value = replaceAll(retorno.toString(), ',', separator);
			} else
				elemento.value = retorno;
			// Pode se informar um id de um elemento para mostrar o nome do item pesquisado
			if (formName.value != '') {
				elementoName = winparent.document.getElementById(formName.value);
				if (separator) {
					if (elementoName.value)
						elementoName.value += separator+replaceAll(retornoName.toString(), ',', separator);
					else
						elementoName.value = replaceAll(retornoName.toString(), ',', separator);
				} else
					elementoName.value = retornoName;
			}
			// Pode se informar um id de um elemento para mostrar o uid do item pesquisado
			if (formUid.value != '') {
				if (separator) {
					if (elementoUid.value)
						elementoUid.value += separator+replaceAll(retornoUid.toString(), ',', separator);
					else
						elementoUid.value = replaceAll(retornoUid.toString(), ',', separator);
				} else
					elementoUid.value = retornoUid;
			}
		}
		// Somente um elemento
		else {
		  	valor = valor.split("@"); // <id>@<name>@<uid>
			// Pode se informar um id de um elemento para mostrar o id do item pesquisado
			if (formId.value != '') {
				if (separator && elemento.value)
					elemento.value += separator+valor[0];				
				else
					elemento.value = valor[0];
			}
			// Pode se informar um id de um elemento para mostrar o nome do item pesquisado
			if (formName.value != '') {
				elementoName = winparent.document.getElementById(formName.value);
				if (separator && elementoName.value)
					elementoName.value += separator+valor[1];				
				else elementoName.value = valor[1];
			}
			// Pode se informar um id de um elemento para mostrar o uid do item pesquisado
			if (formUid.value != '') {				
				if (separator && elementoUid.value)
					elementoUid.value += separator+valor[2];				
				else elementoUid.value = valor[2];
			}
		}
		// Executa as funcoes, se existirem, incluir mais funcoes, se necessario
		if (elemento) { 
			if (elemento.fireEvent) { // Soh para o IE
				elemento.fireEvent("onchange");
				elemento.fireEvent("onfocus");
			} 
			else { // Mozilla e outros?
				if (elemento.onchange)  elemento.onchange();
				if (elemento.onfocus)   elemento.onfocus();			
			}
		}
		// Executa as funcoes, se existirem, incluir mais funcoes, se necessario
		if (elementoUid) {
			if (elementoUid.fireEvent) { // Soh para o IE
				elementoUid.fireEvent("onchange");
				elementoUid.fireEvent("onfocus");
			} 
			else { // Mozilla e outros?
				if (elementoUid.onchange)  elementoUid.onchange();
				if (elementoUid.onfocus)   elementoUid.onfocus();			
			}
		}
		if (window.opener) window.close();
		else hide('search');
	}
}
function focusInput(element,blur) {
	if (blur) {
		element.style.backgroundColor='white';
	} else {
		element.style.backgroundColor='#f7f7f7';
	}
}

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()
}

// Popup para compor mensagem no webmail 
function createNewMessage(action, folder, id, to) {	
	// Tamanho janela
	var width = 640;
	var height = 550;
	
	var args = "scrollbars=no,resizable=yes,location=0";
	args += ",width="+width+",height="+height;
	args += ",menubars=no,toolbar=0,status=0,titlebar=no";

	// Centralizar
	if (screen && screen.availWidth) {
		var l = (screen.availWidth-10 - width) / 2;
	    var t = (screen.availHeight-20 - height) / 2;
	    args += ",left="+l+",top="+t+",screenX="+l+",screenY="+t;	    
	}
	to = encodeURIComponent(to); // codifica o +
	href = urlhome + "old/component/webmail/novamsg.php?action="+action+"&folder="+folder+"&idMsg="+id+"&to="+to;
	window.open(href, 'newMessage', args);
}

function filterChars(e, chars) {
	var key, keychar;
	if (!e) e = window.event;
	if (e.keyCode) key = e.keyCode;
	else if (e.which) key = e.which;

	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
	chars = chars.toLowerCase();

	// Verificando...
	if (chars.indexOf(keychar) != -1)
		return true;
	
	// Control keys
	if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
	   return true;
	return false;
}

function goToPage(e, page, limit, url, last, curreg, target) {
	if (!e) e = window.event;
	if (e.keyCode) key = e.keyCode;
	else if (e.which) key = e.which;

	page = parseInt(page);
	if (!isNaN(page) && !isNaN(limit) && key == 13) {
		if (key == 13) {
			if (page > last) page = last;
			else if (page < 1) page = 1;
			register = (page*limit) - limit;
			if (register < 0) register = 0;
			url = url.replace('register='+curreg, 'register='+register);
			if (target == 'fAction') {
				prepareCall();
				document.getElementById('fAction').src = url;
			}
			else {
				window.location.href = url;
			}
		}
	}
}

function replaceAll(str,text,by) {
// Replaces text with by in string
	var ret;
	text = text.replace(/\//g, "\\/");
	eval('ret = str.replace(/'+text+'/g, by);');
	return ret;
/*
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replaceAll(string.substring(i+txtLength,strLength),text,by);

    return newstr;*/
}

/* Funcao trim para strings
   Exemplo: var texto  = ' abc ';
            textotrimmed = texto.trim(); // 'abc'
*/
 String.prototype.trim = function() {
  var x=this;
  x=x.replace(/^\s*(.*)/, "$1");
  x=x.replace(/(.*?)\s*$/, "$1");
  return x;
}

function hideV(id) {
	var elementX = document.getElementById(id);
	if (elementX) {
		elementX.style.visibility="hidden";
	}
}
function showV(id) {
	var elementX = document.getElementById(id);
	if (elementX) {
		elementX.style.visibility="visible";
	}
}

function getWindowSize() {
	/** Retorna o tamanho (largura, altura) maior da janela
		@return Array(width, height)
	**/
	var width=0, height=0;
    if (window.clientHeight) {
		width = window.clientWidth;
		height = window.clientHeight;
	}
	if (document.body)	{
		width2 = document.body.clientWidth;
		height2 = document.body.clientHeight;
		if (width2 > width) width = width2;
		if (height2 > height) height = height2;			
	}
	if (document.documentElement && document.documentElement.clientWidth) {
		width3 = document.documentElement.clientWidth;
		height3 = document.documentElement.clientHeight;
		if (width3 > width) width = width3;
		if (height3 > height) height = height3;			
	}
	return Array(width, height);
}

function blockScreen() {
	/** Mostra div bloqueando todos elementos menos a mensagem de erro de sistema.
	**/
	var layer = document.getElementById("blockLayer");
	if (layer) {
	    size = getWindowSize();
	    width = size[0];
	    height = size[1];	    
	    layer.style.backgroundColor = 'gray';	    
		layer.style.opacity = '.3';
		layer.style.filter = 'alpha(opacity=30)';
	    layer.style.zIndex = 149;
	    if (height && width) {
			layer.style.width = width+'px';
			layer.style.height = height+'px';
		}
		else {
			layer.style.width = '100%';
			layer.style.height = '100%';
		}
	}
}
function unblockScreen() {
	var layer = document.getElementById("blockLayer");
	if (layer) {
		layer.style.opacity = '';
		layer.style.filter = '';
	    layer.style.filter = '';
	    layer.style.zIndex = -1;
	    layer.style.backgroundColor = 'transparent';
		layer.style.width = '0px';
		layer.style.height = '0px';
	}
}

function checkCharsLimit(e, idElement, nl2br) {
	/** Verifica se chegou ao limite de caracteres de um elemento.
		@param nl2br: se verdadeiro, troca new lines por <br/>
	**/
	var taObj = document.getElementById(idElement);
	if (!taObj.maxLength) taObj.maxLength = 255;

	var checkstr = taObj.value;
	if (nl2br) {
		checkstr = replaceAll(checkstr, "\\r\\n", "<br/>");	
		checkstr = replaceAll(checkstr, "\\n", "<br/>");
	}
	var length = checkstr.length;

	var key;
	if (!e) e = window.event;
	if (e) {
		if (e.keyCode) key = e.keyCode;
		else if (e.which) key = e.which;

		if (nl2br && key == 13) {
			if (isIE()) length = length + 1
			else length = length + 3;
		}

		if (key==null || key==0 || key==37 || key==38 || key==39 || key==40 ||  key==8 || key==9 || key==27 || key==46) return true;
	}
	if (length >= taObj.maxLength*1) return false;
	else return true;
}

function countChars(e, idElement, idCounter, nl2br) { 
	/** Verifica se chegou ao limite de caracteres de um elemento.
		Se existe idCounter, coloca valor de caracteres restantes nesse id.
		@param nl2br: se verdadeiro, troca new lines por <br/>
	**/
	var taObj = document.getElementById(idElement);
	if (!taObj.maxLength) taObj.maxLength = 255;

	var str = taObj.value;
	if (!checkCharsLimit(e, idElement, nl2br)) {
		if (nl2br) var reducedstr = replaceAll(str, '<br/>', "\\n");
		else var reducedstr = str;
		taObj.value = reducedstr.substring(0, taObj.maxLength*1);
	}

	var str = taObj.value;
	if (nl2br) {
		str = replaceAll(str, "\\r\\n", "<br/>");
		str = replaceAll(str, "\\n", "<br/>");
	}
	if (idCounter) {
		var visCnt = document.getElementById(idCounter);		
		if (visCnt) {
			var count = taObj.maxLength-str.length;
			if (count < 0) count = 0;
			visCnt.innerHTML = count;
		}
	}
}
function maximize(id, ext) {
	var element = document.getElementById(id);
	oldElementConf[id] = new Array(2);
	oldElementConf[id]['w'] = element.style.width;
	oldElementConf[id]['h'] = element.style.height;
	element.style.position = 'absolute';
	element.style.width = '100%';
	element.style.height = '100%';
	element.style.left = '0px';
	element.style.top = '0px'
	element.style.zIndex = '140';
	if (ext) {
		var elementExt = document.getElementById(ext);
		oldElementConf[ext] = new Array(2);
		oldElementConf[ext]['w'] = elementExt.style.width;
		oldElementConf[ext]['h'] = elementExt.style.height;			
	}
}
function minimize(id, ext) {
	if (oldElementConf[id]) {
		var element = document.getElementById(id);
		element.style.position = 'relative';
		element.style.width = oldElementConf[id]['w'];
		element.style.height = oldElementConf[id]['h'];
		if (ext) {
			var elementExt = document.getElementById(ext);
			elementExt.style.width = oldElementConf[ext]['w'] ;
			elementExt.style.height = oldElementConf[ext]['h'];			
		}

	}
}

function loginFocus () {
	var loginEle = document.getElementById('login');
	if (loginEle) 
		loginEle.focus();
}
