/**
* TODO:
* Arrow Keys: implement ctrl key support.
*/

/**
* General Functions
* ------------------------------------------------------------------------------------
* Used by every page, except for calendar. This file contains general functions, like
* 'elementClick' and 'elementOver'. This file contains the following categories:
* 
* - Event: functions when an event is fired.
* - Style: functions which change the look and feel of the page.
* - Keyboard: function which are used when keyboard events are fired.
* - General: functions which cannot be categorized, but are used by every page.
*/
function getSelectedValues(){
   	var tamanho = top.document.selected.length;
    
    var itens = "";
	for(i = 0; i < tamanho; ++i){
		var item = top.document.selected[i];
		itens += "_"+item;
	}
	itens = itens.substring(1);
	document.cookie = 'selected_itens='+itens;
	return itens;
}

function getOpenerSelectedValues(){
    var tamanho = window.opener.top.document.selected.length;
    var itens = "";
	for(i = 0; i < tamanho; ++i){
		var item = window.opener.top.document.selected[i];
		itens += "_"+item;
	}
	itens = itens.substring(1);
	document.cookie = 'selected_itens='+itens;
	return itens;
}

/**
* Function which initialize the page.
* 
* @param frame $ 
* @param pageNumber $ 
* @param component $ 
* @param view $ 
*/
function init(frame, pageNumber, component, view, flag){	
	top.document.selected = new Array();
	
	if (document.getElementById('items'))
		top.document.elementList = document.getElementById('items').rows;
	else if (document.contactList)
		top.document.elementList = document.contactList;
  	
    top.document.firstelement = false;
	top.document.lastSelected = false;  
  	  	
  	selectFirstElement(top.document.elementList, component, view, flag);		
	top.document.component = component;
	top.document.view = view;

	top.document.pagenumber = pageNumber;

			
	if (!frame)
		frame = top.main.document.getElementById("inbox_list");
		
	
	top.currentframe = frame;

	if (!top.currentframe.contentWindow)
		top.currentframe.contentWindow = frame;

	top.document.arrowDistance = 60;
	if (view == 'task' || view == 'stickynote')
		top.document.arrowDistance = 85;
	else if (view == 'contacts_email')
		top.document.arrowDistance = 179;
	
	//focus();
	disableTextSelection();		
} 

function initTop(frame, pageNumber, component, view, flag){		
	parent.parent.top.document.selected = new Array();	
	
	if (parent.parent.main.inbox_list.document.getElementById('items'))
		parent.parent.top.document.elementList = parent.parent.main.inbox_list.document.getElementById('items').rows;
	else if (parent.parent.main.inbox_list.document.contactList)
		parent.parent.top.document.elementList = parent.parent.main.inbox_list.document.contactList;
  	
    parent.parent.top.document.firstelement = false;
	parent.parent.top.document.lastSelected = false;
  
	parent.parent.top.document.component = component;
	parent.parent.top.document.view = view;
	
	parent.parent.top.document.pagenumber = pageNumber;
	parent.parent.top.currentframe = frame;

	if (!top.currentframe.contentWindow)
		top.currentframe.contentWindow = frame;
	
	parent.parent.top.document.arrowDistance = 60;
	if (view == 'task' || view == 'stickynote')
		parent.parent.top.document.arrowDistance = 85;
	else if (view == 'contacts_email')
		parent.parent.top.document.arrowDistance = 179;
} 

/**
* Event
* ------------------------------------------------------------------------------------
*/

/**
* Function which is activated when the mouse pointer is over.
* 
* @param element $ 
*/
function elementOver(element, component){
	if (!element.state || element.state != 'selected'){
		element.className = component + 'over';
	}
	
	if(component == 'contact')
		replaceGroupIcon(element.id, false);
} 

/**
* Function which is activated when the mouse pointer is out.
* 
* @param element $ 
*/
function elementOut(element, component){
	if (!element.state || element.state != 'selected'){
		element.className = component;
		
		if(component == 'contact')
			replaceGroupIcon(element.id, true);
	}else{
		selectElement(element, component);
	}
} 

/**
* Function which is activated when an element is clicked.
* 
* @param element $ 
* @param entryID $ 
* @param storeID $ 
* @param component $ 
*/
function elementClickDistList(event, element, messageNumber, component, view){	
	try{
		closeAllMenus ();
	}catch (e){}	
	
	if (!event){		
		event = window.event;		
	}
	
	if ((event.type == 'mousedown') && (event.button!=2))
		return;		
	
	if (event.button==2){				
		//deselectAllElements(top.document.selected, element, component);
		if (element.state != 'selected'){			
			deselectAllElements(top.document.selected, element, component);
			deselectAllElements(top.document.selected, '', component);
			top.document.selected = new Array(element.id);
			selectElement(element, component);
			top.document.lastSelected = element;
			top.document.firstelement = false;	
		}
	}else if (event.ctrlKey){			
		if (element.state == 'selected'){			
			deselectElement(element, component);
			trimSelected(element.id);
		}else{			
			selectElement(element, component);
			top.document.selected[top.document.selected.length] = element.id;
		} 		
		
	}else if (event.shiftKey){	
		if (!top.document.firstelement)
			top.document.firstelement = top.document.selected[0];

		if (!event.ctrlKey){
			deselectAllElements(top.document.selected, '', component);
			top.document.selected = new Array();
		} 		

		selectRange(top.document.elementList, document.getElementById(top.document.firstelement), element, component);
	}else{
		if (view != 'hierarchy_list'){
			deselectAllElements(top.document.selected, element, component);
			top.document.selected = new Array(element.id);			
			
		}else{		
			deselectAllElements(top.document.hierarchySelected, element, component);
			top.document.hierarchySelected = new Array(element.id);
			//top.document.hierarchyMsgStore = storeID;			
		} 

		selectElement(element, component);
		
		if (top.main && top.main.inbox_msgcontent && !document.togglemessageread){ 
			// if(view != 'mailview')
			// view = '&view=' + view;			
			try{
				markReaded();
			}catch(e){
				alert(e.message);
			}
			loadFrame('msg_reader.jsp?msg='+getSelectedValues(), 'inbox_msgcontent');			
		} 
		top.document.lastSelected = element;
		top.document.firstelement = false;		
	} 
} 

function elementClick(event, element, messageNumber, component, view){		
	try{
		closeAllMenus ();
	}catch (e){}	
	
	if (!event){
		event = top.main.inbox_list.window.event;		
	}	
				
	if ((event.type == 'mousedown') && (event.button!=2))
		return;		
	
		
	if (event.button==2){				
		//deselectAllElements(top.document.selected, element, component);
		if (element.state != 'selected'){			
			deselectAllElements(top.document.selected, element, component);
			deselectAllElements(top.document.selected, '', component);
			top.document.selected = new Array(element.id);
			selectElement(element, component);
			top.document.lastSelected = element;
			top.document.firstelement = false;	
		}
	}else if (event.ctrlKey){			
		if (element.state == 'selected'){			
			deselectElement(element, component);
			trimSelected(element.id);
		}else{			
			selectElement(element, component);
			top.document.selected[top.document.selected.length] = element.id;
		}		
	}else if (event.shiftKey){	
		if (!top.document.firstelement)
			top.document.firstelement = top.document.selected[0];

		if (!event.ctrlKey){
			deselectAllElements(top.document.selected, '', component);
			top.document.selected = new Array();
		}
		selectRange(top.document.elementList, top.main.inbox_list.document.getElementById(top.document.firstelement), element, component);
	}else{	
		if (view != 'hierarchy_list'){		
			deselectAllElements(top.document.selected, element, component);		
			top.document.selected = new Array(element.id);						
			
		}else{		
			deselectAllElements(top.document.hierarchySelected, element, component);
			top.document.hierarchySelected = new Array(element.id);
			//top.document.hierarchyMsgStore = storeID;			
		} 

		selectElement(element, component);
		
		if (top.main && top.main.inbox_msgcontent && !document.togglemessageread){			
		} 

		top.document.lastSelected = element;
		top.document.firstelement = false;		
	} 
	
	if(!dblClick){
		if (view == "email" || view == "search"){
	  		loadFrame('msg_reader.jsp?msg='+element.id, 'inbox_msgcontent');
	  		try{
				markReaded();
			}catch(e){
				alert(e.message);
			}
		}
	}
} 

function elementRigthClick(event, element, messageNumber, component, view){
	if (!event){
		event = window.event;		
	}

	if (event.ctrlKey){		
		if (element.state == 'selected'){
			deselectElement(element, component);
			trimSelected(element.id);
		}else{
			selectElement(element, component);
			top.document.selected[top.document.selected.length] = element.id;
		} 
	}else if (event.shiftKey){		
		if (!top.document.firstelement)
			top.document.firstelement = top.document.selected[0];

		if (!event.ctrlKey){
			deselectAllElements(top.document.selected, '', component);
			top.document.selected = new Array();
		} 

		selectRange(top.document.elementList, document.getElementById(top.document.firstelement), element, component);
	}else{		
		if (view != 'hierarchy_list'){			
			deselectAllElements(top.document.selected, element, component);
			top.document.selected = new Array(element.id);			
		}else{
			deselectAllElements(top.document.hierarchySelected, element, component);
			top.document.hierarchySelected = new Array(element.id);
			//top.document.hierarchyMsgStore = storeID;			
		} 

		selectElement(element, component);

		if (top.main && top.main.inbox_msgcontent && !document.togglemessageread){ 
			// if(view != 'mailview')
			// view = '&view=' + view;
			//loadFrame('msg_reader.jsp?msg='+messageNumber, 'inbox_msgcontent');			
		} 

		top.document.lastSelected = element;
		top.document.firstelement = false;
	} 
} 

/**
* Function which is activated when an element is double clicked.
* 
* @param element $ 
* @param entryID $ 
* @param storeID $ 
* @param component $ 
*/
function elementDblClick(id, view){ 
	try{
		closeAllMenus ();
	}catch (e){	
	}
	
	if(screen.height <= 600){
		top.main.document.getElementById("frameHead").rows="0,*";
	}

	//if(top.document.modifyitems || top.document.readitems){
  	// We don't only want to open items, also new_items.
  	if (view == "email" || view == "search"){  		
  		if(dblClick){  			
  			loadFrame('msg_reader.jsp?msg='+id, 'inbox_msgcontent');
  			try{
				markReaded();
			}catch(e){
				alert(e.message);
			}
  		}
				
		if(!dblClick)
			popUp('popup_msg.jsp?id='+id);
		}
		if (view == "notes"){
	  		popUp('popup_notes.jsp?id='+id);
		}
		if (view == "contact"){
	  		popUp('popup_contact.jsp?id='+id);
		}
		if(view == 'distlist'){
	        popUp('popup_distlist.jsp?id='+id);
	    }
		if(view == 'task'){
	        popUp('popup_task.jsp?id='+id);
	    }
		if(view == 'appointment' || view == 'calendar'){
	        popUp('popup_calendar.jsp?id='+id);
	    }
	//}
} 

/**
* Function which is activated when the right mouse is clicked on an element.
* 
* @param element $ 
* @param entryID $ 
* @param storeID $ 
* @param component $ 
*/
function elementContextMenu(action, event, element, entryID, storeID, component){
	var menu = document.getElementById('contextmenu');
	var posx = 0;
	var posy = 0;

	if (!event)
		event = window.event; 
	// IE 5.0 doesn't know 'undefined', do it with a ! / if
	if (event){
		if (event.pageX || event.pageY){
			posx = event.pageX;
			posy = event.pageY;
		}else if (event.clientX || event.clientY){
			elementToScroll = document.body; 
			// FIX ME: should work for any frame
			if (document.getElementById('scrollbody').scrollTop)
				elementToScroll = document.getElementById('scrollbody');

			posx = event.clientX + elementToScroll.scrollLeft;
			posy = event.clientY + elementToScroll.scrollTop;
		} 
	} 

	if (action == 'show'){
		menu.className = 'contextmenushow';
		menu.style.top = posy;
		menu.style.left = posx;

		if (element != null){
			if (element.state != 'selected'){
				element.className = 'contextrightclick';
				top.document.rightClickSelected = element;
			} 
		} 
	}else{
		menu.className = 'contextmenu';
		menu.style.top = 0;
		menu.style.left = 0;

		if (element != null){
			if (top.document.rightClickSelected){
				element.className = component;
				top.document.rightClickSelected = false;
			} 
		} 
	} 
	return false;
} 

/**
* Style
* ------------------------------------------------------------------------------------
*/

/**
* Function to switch a css class of an element
* @param string element
* @param string className 
* @param boolean setClass
*/
function switchClass(element,className,setClass){
  	classIndex = element.className.indexOf(className);
  	if (setClass && classIndex==-1){
    	element.className += ' '+className;
  	}else if (!setClass && classIndex!=-1){
    	element.className = element.className.replace(className,'');
  	}
}

/**
* Function which changes the style of an element.
* 
* @param element $ 
*/
function selectElement(element, component){ 
	// Save the not-selected className in oldClassName, there is no other way to
	// remember this element's 'normal' state.
	// Especially used with overdue (red) tasks.
	if (component!='appointment'){
  	  	element.oldClassName = component;
	  	element.className = component + 'selected';
  	}else{  // we do appointments on a better way :)
    	switchClass(element,'selected',true); 
    	switchClass(element,'noselect',false); 
  	}
	element.state = 'selected';
	
	//Contact: distribution list. Icon needs to be replaced, to be visible.
	if(component == 'contact')
		replaceGroupIcon(element.id, false);
} 

/**
* Function which changes the style of an element.
* 
* @param element $ 
* @param component $ 
*/
function deselectElement(element, component){ 
  	if (component.substr(0,11)!='appointment'){
    	// Take oldClassName because there is no other way to recover the old state.
    	// (component only gives the newly selected component).
    	// Especially used with overdue (red) tasks.
    	if (element.oldClassName){
      		element.className = element.oldClassName;
    	}else{
      		element.className = component;
    	} 
  	}else{  // we doe appointments on a better way
    	switchClass(element,'selected',false);
    	switchClass(element,'noselect',true);
  	}
	element.state = 'not-selected';
	
	//Contact: distribution list. Icon needs to be replaced, to be visible.
	if(component == 'contactselected')
		replaceGroupIcon(element.id, true);
} 

function deselectElement2(element, component){ 
  if (component.substr(0,11)!='appointment'){
    // Take oldClassName because there is no other way to recover the old state.
    // (component only gives the newly selected component).
    // Especially used with overdue (red) tasks.
    if (element.oldClassName){
      element.className = element.oldClassName;
    } 
    else
    {
      element.className = component;
    } 
  }else{  // we doe appointments on a better way
    switchClass(element,'selected',false);
    switchClass(element,'noselect',true);

  }
	element.state = 'not-selected';
	
	//Contact: distribution list. Icon needs to be replaced, to be visible.
	if(component == 'contactselected')
		replaceGroupIcon(element.id, true);
}

/**
* Function which deselects all the elements, except one.
* 
* @param element $ 
* @param component $ 
*/
function deselectAllElements(elementList, element, component)
{
	if (elementList)
	{
		try{
			for(var i = 0; i < elementList.length; i++)
			{			
				var objeto;
							
				try{
					objeto = document.getElementById(elementList[i]);
				}catch(e){
					objeto = top.main.inbox_list.document.getElementById(elementList[i]);
				}
				
				if (!objeto)
					objeto = top.main.inbox_list.document.getElementById(elementList[i]);
			
				if (objeto)
				{
					if (objeto != element)
						deselectElement(objeto, objeto.className);
				} 
				else
				{
					elementList = new Array();
				} 
			}
		}catch(e) {
			alert(e.message);
		}
		
	} 
} 

function deselectAllElements2(elementList, element, component)
{
	if (elementList)
	{
		for(var i = 0; i < elementList.length; i++)
		{
			if (self.opener.parent.parent.main.inbox_list.document.getElementById(elementList[i]))
			{				
				if (self.opener.parent.parent.main.inbox_list.document.getElementById(elementList[i]) != element)
					deselectElement2(self.opener.parent.parent.main.inbox_list.document.getElementById(elementList[i]), self.opener.parent.parent.main.inbox_list.document.getElementById(elementList[i]).className);
			} 
			else
			{
				elementList = new Array();
			} 
		} 
	} 
} 

/**
* Keyboard
* ------------------------------------------------------------------------------------
*/

/**
* Keyboard: Load the events
* See this website for keyId's: http://www.js-examples.com/syntax/key_codes.php
*/

if (document.all)
	document.onkeydown = keyPressIE;
else
	document.onkeypress = keyPress;

/**
* Function which handles the keyboard events for FireFox.
* 
* @param e $ 
* @todo Remove execution errors
*/


function disableKeyControl(){
	if (document.all)
		document.onkeydown = disableKeyPress;
	else{
		top.main.inbox_list.document.onkeypress = disableKeyPress;
		document.onkeypress = disableKeyPress;
	}
}

function disableKeyPress(e){	
	return true;
}

function enableKeyControl(){
	if (document.all)
		document.onkeydown = keyPressIE;
	else
		top.main.inbox_list.document.onkeypress = keyPress;
}


function keyPress(e)
{ 	
	var nomeDaTela = "";	
	
	try{
		nomeDaTela = document.frames[1].document.frames[0].document.forms[0].elements[0].value; 		
	}catch (e){
			
	}	

	if (nomeDaTela == ""){
		try{			
			nomeDaTela = document.getElementById("nome_tela").value; 			
		}catch (e){
			
		}
	}
	
	if (nomeDaTela == ""){
		try{
			nomeDaTela = parent.parent.folder.folderview.document.getElementById('nome_tela').value;			
			//nomeDaTela = document.frames[1].document.forms[0].elements[0].value; 			
		}catch (e){
			
		}
	}	

		
	try{
		closeAllMenus();
	}catch (e){
		result = true;		
	}
	
	try{
		if (document.getElementById('focused').value == 'true'){
			return true;
		}
	}catch (e){		
	}		
	
	if (!e)
		e = window.event;
	
	if (!e)
		e = top.main.inbox_list.window.event;
	
	
	// Remember: always return a value!
	var result = true;
	/* Keyboard Key: DEL (46) */
	
	if (e.keyCode == 46)
	{	
		if ((nomeDaTela == "msg_list.jsp") && (!e.shiftKey)){			
			confirmaDelete("Deseja excluir o email selecionado?");
		}else if ((nomeDaTela == "msg_list.jsp") && (e.shiftKey)){			
			confirmaDelete("Deseja excluir o email selecionado?", false);
		}
		
		
		//if (top.document.selectedDayEvents && top.document.selectedDayEvents.length > 0)
		//	top.currentframe.contentWindow.deleteItems(parseVarFromURL(top.main.location.href, 'msgstore'), parseVarFromURL(top.main.location.href, 'entryid'), top.document.selectedDayEvents);
		//else if (top.main && top.document.selected && top.document.selected.length > 0 && top.main.appointment_content)
		//	top.currentframe.contentWindow.deleteAppointment(parseVarFromURL(top.main.location.href, 'msgstore'), parseVarFromURL(top.main.location.href, 'entryid'), top.document.selected);		
		//else if (top.main && top.document.selected && top.document.selected.length > 0 && !document.newtask)
		//	top.currentframe.contentWindow.deleteItems(parseVarFromURL(top.main.location.href, 'msgstore'), parseVarFromURL(top.main.location.href, 'entryid'), top.document.selected);
	} 

	/* Keyboard Key: Return/Enter (13)*/
	else if (e.keyCode == 13)
	{		
		if (top.currentframe && top.currentframe.name != 'appointment_content')
		{
			if (document.newtask == true)
			{
				result = true;
			} 
			else if (!top.currentframe.contentWindow.document.getElementById('startitemplusone') || (parseInt(top.document.pagenumber) + 1 == parseInt(top.currentframe.contentWindow.document.getElementById('startitemplusone').value)))
			{
				top.currentframe.contentWindow.openItems();				
				result = false;
			} 
			else
			{
				result = true;
			} 
		} 
	} 

	/* Keyboard Key: Arrow Up (38) */
	else if (e.keyCode == 38)
	{
		if (top.document.usearrowkeys && top.currentframe && top.currentframe.name != 'appointment_content' && !document.newtask)
		{
			top.currentframe.contentWindow.previousElement(e);
			result = false;
		} 
	} 

	/* Keyboard Key: Arrow Down (40) */
	else if (e.keyCode == 40)
	{
		if (top.document.usearrowkeys && top.currentframe && top.currentframe.name != 'appointment_content' && !document.newtask)
		{
			top.currentframe.contentWindow.nextElement(e);
			result = false;
		} 
	} 
	return result;
} 

/**
* Function which handles the keyboard events for IE.
* 
* @param e $ 
*/
function keyPressIE(e){ 		
	var nomeDaTela = "";
	
	try{
		nomeDaTela = document.frames[1].document.frames[0].document.forms[0].elements[0].value; 		
	}catch (e){
			
	}	

	if (nomeDaTela == ""){
		try{			
			nomeDaTela = document.getElementById("nome_tela").value; 			
		}catch (e){
			
		}
	}
	
	if (nomeDaTela == ""){
		try{
			nomeDaTela = parent.parent.folder.folderview.document.getElementById('nome_tela').value;			
			//nomeDaTela = document.frames[1].document.forms[0].elements[0].value; 			
		}catch (e){
			
		}
	}	
		
	try{
		closeAllMenus ();
	}catch (e){
		result = true;		
	}
	
	try{
		if (document.getElementById('focused').value == 'true'){
			return true;
		}
	}catch (e){		
	}
	
	//if (window.event.keyCode == 13)
	//	return 13;
	// Remember: always return a value!
	result = true;
	
	
	evento = window.event;
		
	if (!evento)
		evento = top.main.inbox_list.window.event;
				
	if (evento.keyCode == 93)
	{
		contextMenu="contextMenu";
		_gm=getMenuByName(contextMenu)
		if(_gm!=null)popup(contextMenu,1)		
	}
	
	/* Keyboard Key: DEL (46) */
	else if (evento.keyCode == 46)
	{		
		try{
		if ((nomeDaTela == "msg_list.jsp") && (!evento.shiftKey)){			
			confirmaDelete("Deseja excluir o email selecionado?");
		}else if ((nomeDaTela == "msg_list.jsp") && (evento.shiftKey)){			
			confirmaDelete("Deseja excluir o email selecionado?", false);
		}
		
		}catch(e){
			alert(e.message);
		}
		//if (top.main && top.document.selectedDayEvents && top.document.selectedDayEvents.length > 0)
		//	top.currentframe.contentWindow.deleteItems(parseVarFromURL(top.main.location.href, 'msgstore'), parseVarFromURL(top.main.location.href, 'entryid'), top.document.selectedDayEvents);
		//else if (top.main && top.document.selected && top.document.selected.length > 0 && top.main.appointment_content)
		//	top.currentframe.contentWindow.deleteAppointment(parseVarFromURL(top.main.location.href, 'msgstore'), parseVarFromURL(top.main.location.href, 'entryid'), top.document.selected);		
		//else if (top.main && top.document.selected && top.document.selected.length > 0 && !document.newtask)
		//	top.currentframe.contentWindow.deleteItems(parseVarFromURL(top.main.location.href, 'msgstore'), parseVarFromURL(top.main.location.href, 'entryid'), top.document.selected);
	} 

	/* Keyboard Key: Return/Enter (13) */
	else if (evento.keyCode == 13)	
	{	
		if (top.currentframe && top.currentframe.name != 'appointment_content')
		{
			if (document.newtask == true)
			{
				result = true;
			} 
			else if (!top.currentframe.contentWindow.document.getElementById('startitemplusone') || (parseInt(top.document.pagenumber) + 1 == parseInt(top.currentframe.contentWindow.document.getElementById('startitemplusone').value)))
			{	
				top.currentframe.contentWindow.openItems();
				result = false;
			} 
			else
			{
				result = true;
			} 
		} 
	} 

	/* Keyboard Key: Arrow Up (38) */
	else if (evento.keyCode == 38)
	{
		if (top.document.usearrowkeys && top.currentframe && top.currentframe.name != 'appointment_content' && !document.newtask)
		{
			top.currentframe.contentWindow.previousElement(evento);
			result = false;
			
		} 
	} 

	/* Keyboard Key: Arrow Down (40) */
	else if (evento.keyCode == 40)
	{		
		if (top.document.usearrowkeys && top.currentframe && top.currentframe.name != 'appointment_content' && !document.newtask)
		{
			top.currentframe.contentWindow.nextElement(evento);
			result = false;
		} 
	} 
		
	return result;
} 

function deleteAposConf(){
	getSelectedValues();	
	deleteMsgAjaxGeneral();	
}

function confirmaDelete(mensagem, askForDelete){
	if(askForDelete == null)
		askForDelete = true;
	
	if (top.document.selected.length == 0) 
		return;
		
	window.setTimeout("closeMenuMenuDataGeneral()", 0);
	
	if(askForDelete == true){
		if(!window.confirm(mensagem)){
			return;
		}
	}		
		//alert(top.main.inbox_list.pagina);
		
		var valoresSelecionados=getSelectedValues();
		var url = "DeletarMensagens";
		var pars = "milisegundos=" + new Date().getTime()+"&items=" + valoresSelecionados + "&folder=" + parent.parent.folder.folderview.document.frmFolder.imapFolder.value;
		
		var myAjax = new Ajax.Request(url, {
			method: "get", 
			parameters: pars,
			asynchronous: true,	 
			evalScripts: true,
			onLoading: function(){	
				//top.main.inbox_list.document.getElementById("cabecalho").innerHTML="<img src='layout/XP/img/loading_small.gif'>&nbsp;&nbsp;<font color='white' size=2>Carregando...</font>";
			},
			onSuccess: function(response){
				var dadosXML = response.responseXML.getElementsByTagName("root");
				try{
					//loadFrame('msg_noselected.jsp', 'inbox_msgcontent');
										
					top.main.inbox_list.elementoDeleteIndex = getObjectIndex();					
					top.main.inbox_list.document.getElementById("cabecalho").innerHTML = top.main.inbox_list.folderName;
					window.setTimeout("top.main.inbox_list.listaMensagensAjax(top.main.inbox_list.pagina, top.main.inbox_list.orderCampo ,false)", 1100);
					var mensagensSelecionadas = valoresSelecionados.split("_");
					var mensagensNaoLidas=0;			
					for (var i=0; i < mensagensSelecionadas.length; i++){	
						if(top.main.inbox_list.document.getElementById("img_" + mensagensSelecionadas[i]).src.indexOf("layout/XP/img/icon_newmail.gif") > 0)
							mensagensNaoLidas++;
					}
					if(mensagensNaoLidas>0)
						window.setTimeout("atualizaFolder(false, 'INBOX.trash', false, -"+mensagensNaoLidas+")", 1700);
					//alert(mensagensNaoLidas);
				}catch(e1){
					try{
						alert(dadosXML[0].getElementsByTagName("erro")[0].firstChild.nodeValue);
					}catch(e2){
						//alert("function confirmaDelete(mensagem): "+e1.message);
					}					
				}
			},					
			onFailure: function(){ 
				//alert("ocorreu um erro na pagina requerida");
				top.main.inbox_list.document.getElementById("cabecalho").innerHTML = top.main.inbox_list.folderName;					
			}
		});					
			
}

/*function processConfirmaDelete(response){
	if(response.readyState == 1){
		// teste		
	}else if(response.readyState == 4){
	}
}*/

function atualizaFolder(popup, pasta, novo, quantidadesMensagem){
	try{	
		var topo=popup?self.opener.top:top;
		var folderAtual=topo.folder.folderview.document.frmFolder.imapFolder.value;
		var folder="";
		if(novo){
			folder=pasta;
		}else{			
			folder=folderAtual;			
			topo.footer.document.getElementById("currentFolder").innerHTML = topo.folder.folderview.document.frmFolder.selectedFolder.value;
		}
						
		var saldoQuantidade=parseInt(quantidadesMensagem);				
		var quantidade=parseInt(topo.folder.folderview.document.getElementById(folder.replace(".", "_")).innerHTML)+saldoQuantidade;		
					
		topo.folder.folderview.document.getElementById(folder.replace(".", "_")).innerHTML=(quantidade>0?quantidade:0);
		if(folder==folderAtual)
			topo.footer.document.getElementById("msgCount2").innerHTML=(quantidade>0?quantidade:0);		
				
		if(pasta!=null){
			if(folder!=pasta){
				var outraPasta=parseInt(topo.folder.folderview.document.getElementById(pasta.replace(".", "_")).innerHTML);	
				topo.folder.folderview.document.getElementById(pasta.replace(".", "_")).innerHTML=outraPasta+(saldoQuantidade*(-1));		
			}
			getMsgCountLista();
		}		
	}catch(e){
		//alert("function atualizaFolder(popup, pasta, novo, quantidadesMensagem): "+e.message);
	}
}

function atualizaFooter(popup){
	try{
		var topo=!popup?top:self.opener.top;
		topo.footer.document.getElementById("currentFolder").innerHTML = topo.folder.folderview.document.frmFolder.selectedFolder.value;
		//getMsgCountAjax(topo.folder.folderview.document.frmFolder.imapFolder.value, topo.footer.document.getElementById("msgCount"));						
		getMsgCountAjax(topo.parent.folder.folderview.document.frmFolder.imapFolder.value, topo.footer.document.getElementById("msgCount2"));					
	}catch(e){
		//alert("function atualizaFooter(popup): "+e.message);
	}
}
	
function getMsgCountLista(){
	try{	
		var url = "Messages";
		var folder = top.folder.folderview.document.frmFolder.selectedFolder.value; 
		var pars = "milisegundos=" + new Date().getTime()+"&pagina="+top.main.inbox_list.document.getElementById("page").innerHTML+"&folder=" + folder;
		
		var myAjax = new Ajax.Request(url, {
			method: "get", 
			parameters: pars, 
			onSuccess: function(response){	 	  
				var dadosXML = response.responseXML.getElementsByTagName("root");            	  
				try{
					top.main.inbox_list.document.getElementById("page").innerHTML = dadosXML[0].getElementsByTagName("page")[0].firstChild.nodeValue;
					top.main.inbox_list.document.getElementById("totalPages").innerHTML = dadosXML[0].getElementsByTagName("total_page")[0].firstChild.nodeValue;
					top.main.inbox_list.document.getElementById("totalMessages").innerHTML = dadosXML[0].getElementsByTagName("total_message")[0].firstChild.nodeValue;					
					//alert("total_message: "+dadosXML[0].getElementsByTagName("total_message")[0].firstChild.nodeValue);	
				}catch(e1){
					try{
						alert(dadosXML[0].getElementsByTagName("erro")[0].firstChild.nodeValue);
					}catch(e2){
						//alert("function getMsgCountLista(): "+e1.message);
					}					
				}	  	  
			}
		});
	}catch(e){
	}		
}
   
function getMsgCountAjax(folder, spanName){
	//alert(folder+"; "+spanName.id);	
	var url = "ServletCountMessages";
	var pars = "milisegundos=" + new Date().getTime()+"&spanName="+spanName.id+"&folder=" + folder;
		
	var myAjax = new Ajax.Request(url, {
		method: "get", 
		parameters: pars, 
		onSuccess: function(response){	
    		var dadosXML = response.responseXML.getElementsByTagName("root");
			try{	    
				var count = dadosXML[0].getElementsByTagName("count")[0].firstChild.nodeValue;												  		    
				var countTotal = dadosXML[0].getElementsByTagName("countTotal")[0].firstChild.nodeValue;												  		    			
				var spanName = dadosXML[0].getElementsByTagName("spanName")[0].firstChild.nodeValue;
				
				top.footer.document.getElementById(spanName).innerHTML=count;
				//top.folder.folderview.document.frmFolder.imapFolder.value=count;					 
			}catch(e1){
				try{
					alert(dadosXML[0].getElementsByTagName("erro")[0].firstChild.nodeValue);
				}catch(e2){
					//alert("function getMsgCountAjax(folder, spanName): "+e1.message);
				}					
			}
		}
	});		
}
 
function markUnreaded(){	
	try{
		closeMenuMenuDataGeneral();	
		var mensagensSelecionadas = getSelectedValues().split("_");
	
		if (mensagensSelecionadas.length > 0){					
			markUnRead(getSelectedValues());
			var mensagensNaoLidas=0;
			
			for (var i=0; i < mensagensSelecionadas.length; i++){	
				if(top.main.inbox_list.document.getElementById("img_" + mensagensSelecionadas[i]).src.indexOf("layout/XP/img/icon_newmail.gif") < 0){
					top.main.inbox_list.document.getElementById("img_" + mensagensSelecionadas[i]).src = "layout/XP/img/icon_newmail.gif";					
					var elementoTr = top.main.inbox_list.document.getElementById(mensagensSelecionadas[i]).getElementsByTagName('td');
					var count = elementoTr.length;
					
					for (i=0; i< count; i++){
						var element = elementoTr[i];						
						element.style.fontWeight = 'bold';
					}
														
					mensagensNaoLidas++;	
				}					
			}
			if(mensagensNaoLidas>0)
				atualizaFolder(false, null, false, mensagensNaoLidas);
			//alert("marca como não lida "+mensagensNaoLidas);
				
		}	
		closeMenuMenuData();
	}catch(e){
		//alert("function markUnreaded(): "+e.message);
	}	
}

function markReaded(){
	try{		
		closeMenuMenuDataGeneral();		
		var mensagensSelecionadas = getSelectedValues().split("_");
	
		if (mensagensSelecionadas.length > 0){
			var mensagensLidas=0;
			for (var i=0;i < mensagensSelecionadas.length;i++){
				if (top.main.inbox_list.document.getElementById("img_" + mensagensSelecionadas[i]).src.indexOf("layout/XP/img/icon_mailread.gif") < 0){					
					top.main.inbox_list.document.getElementById("img_" + mensagensSelecionadas[i]).src = "layout/XP/img/icon_mailread.gif";					
					
					var elementoTr = top.main.inbox_list.document.getElementById(mensagensSelecionadas[i]).getElementsByTagName('td');
					var count = elementoTr.length;
					
					for (i=0; i< count; i++){
						var element = elementoTr[i];						
						element.style.fontWeight = 'normal';
					}
					
					mensagensLidas++;
				}
			}
			if(mensagensLidas>0){
				markRead(getSelectedValues());
				atualizaFolder(false, null, false, -mensagensLidas);
			}
			//alert("marca como lidas "+mensagensLidas);
		
		}
		closeMenuMenuData();
	}catch (e){
		//alert("function markReaded(): "+e.message);
	}
}

function openNewWindow(){
	//elementDblClick(getSelectedValues(), "email");
	var mensagensSelecionadas = getSelectedValues().split("_");
	
	if(getSelectedValues().indexOf("_")>0)
		alert("Somente será aberta a primeira Mensagem Selecionada!");
		
	if (mensagensSelecionadas.length > 1){			
		for (i=0;i < 1;i++){			
			try{
				document.getElementById("img_" + mensagensSelecionadas[i]).src = "layout/XP/img/icon_mailread.gif";				
				markRead(mensagensSelecionadas[i]);										
				document.getElementById(mensagensSelecionadas[i]).style.fontWeight = 0;
			}catch (e){
				//alert(e.message);
			}		
		}		
	}else{	
		try{
			markReaded();
		}catch(e){
			alert(e.message);
		}
	}
	
  	popUp("popup_msg.jsp?id="+getSelectedValues()+"&folder="+top.folder.folderview.document.frmFolder.imapFolder.value);
}


function closeMenuMenuData(){
	try{
		closeAllMenus();
	}catch (e){
	
	}
}

function openPositionMsg(){
	loadFrame("msg_reader.jsp?msg=" + getSelectedValues(), "inbox_msgcontent");
	markReaded();
}




function limpaLista(){
try{
    var tbl = top.main.inbox_list.document.getElementById("items");    
    
    if (!document.getElementsByTagName || !document.createTextNode) return;
   	var rowsTr = top.main.inbox_list.document.getElementById("items").getElementsByTagName("tbody")[0].getElementsByTagName("tr");
    var total = rowsTr.length;
    
	for(i = 0; i < total -1; ++i){
		tbl.deleteRow(1);
	}
	tbl.deleteRow(0);
}catch(e){
}
}


function acertaContador(){	
	try{		
	    var tamanho = top.document.selected.length;
	    var itens = "";
	    var tbl = top.main.inbox_list.document.getElementById("items");    
	    
	    if (!document.getElementsByTagName || !document.createTextNode) return;
	    var rowsTr = top.main.inbox_list.document.getElementById("items").getElementsByTagName("tbody")[0].getElementsByTagName("tr");
	    
		var msgNumber = 0; 
	    var msgIndex = 0;    
	    var msgAtu = new Array(0);
	    var quantidade = 0;
	    
		for (i = 0; i < rowsTr.length -1; i++) {			
			if(top.main.inbox_list.document.getElementById("img_" + rowsTr[i].id).src.indexOf("layout/XP/img/icon_newmail.gif") > 0)		
				quantidade ++;
		}		
		
		var outraPasta=parseInt(topo.folder.folderview.document.getElementById(pasta.replace(".", "_")).innerHTML);	
		topo.folder.folderview.document.getElementById(pasta.replace(".", "_")).innerHTML=outraPasta+(saldoQuantidade*(-1));
		alert(quantidade);						
	}catch(e){	
				
	}
}



function deleteMsgAjaxGeneral(){
try{		
    var tamanho = top.document.selected.length;
    var itens = "";
    var tbl = top.main.inbox_list.document.getElementById("items");    
    
    if (!document.getElementsByTagName || !document.createTextNode) return;
    var rowsTr = top.main.inbox_list.document.getElementById("items").getElementsByTagName("tbody")[0].getElementsByTagName("tr");
    
	var msgNumber = 0; 
    var msgIndex = 0;    
    var msgAtu = new Array(0);	 
       
	if (tamanho > 0){		
		var item = top.document.selected[tamanho - 1];		
		msgAtu[tamanho - 1] = item;	
		msgIndex = top.main.inbox_list.document.getElementById(item).rowIndex;
		msgNumber = item;				
	}
	
	for (i = rowsTr.length -1; i >= 0; i--) {   	
    	if (rowsTr[i].id == msgNumber){    		
	   		break;
    	}    		
       	msgNumberFinal = rowsTr[i].id;
	}		

	for(i = 0; i < tamanho; ++i){		
		var item = top.document.selected[i];
		itens += "_"+item;
		tbl.deleteRow(top.main.inbox_list.document.getElementById(item).rowIndex);
	}	
		
	itens = itens.substring(1);
	top.document.cookie = "selected_itens="+itens;
	deleteMsgAjax("DeletarMensagens", "");		
	listaMensagens("novaPasta");	
	
	top.document.usearrowkeys=true;
	atualizaFolder(false, "INBOX.trash", false, -1);
	//alert("function deleteMsgAjaxGeneral");
	msgNumberFinal = 0;
	
	if (msgIndex > (rowsTr.length - 1))
		msgIndex = (rowsTr.length - 1);
	
	for (i = 0; i < rowsTr.length; i++) {   	
   		if (rowsTr[i].rowIndex == msgIndex){    		
	   		msgNumberFinal = rowsTr[i].id;
    		break;
   		}    		       	
    }
    
    if (msgNumberFinal == 0)
    	msgNumberFinal = 1;		
	
	
	
	try{				
		init(window.frameElement, 0, "tablerow", "email", true);					
	}catch(e){
		//alert(e.message);
		try{
			initTop(top.main.inbox_list.window.frameElement, 0, "tablerow", "email");		
		}catch(e){
			alert(e.message);
		}				
	}	
		
	window.setTimeout("carregaMensagem(msgNumberFinal)",900);
	top.main.inbox_list.document.getElementById("loading").style.visibility="hidden";		
}catch(e){	
	top.main.inbox_list.document.getElementById("loading").style.visibility="hidden";
}
}

function carregaMensagem(msgNumberFinal){	
	try{
		deselectAllElements(top.document.selected, "", "tablerow");
		top.document.selected = new Array(top.main.inbox_list.document.getElementById(msgNumberFinal).id);
		deselectAllElements(top.document.selected, top.main.inbox_list.document.getElementById(msgNumberFinal), "tablerow");
		selectElement(top.main.inbox_list.document.getElementById(msgNumberFinal), "tablerow");	
		//parent.parent.main.inbox_msgcontent.location = "msg_reader.jsp?msg=" + msgNumberFinal;
	}catch(e){
	}
}


function procuraMensagensGeneral(filtro){
try{		
    var tamanho = top.document.selected.length;
    var itens = "";
    var tbl = top.main.inbox_list.document.getElementById("items");    
    
    if (!document.getElementsByTagName || !document.createTextNode) return;
    var rowsTr = top.main.inbox_list.document.getElementById("items").getElementsByTagName("tbody")[0].getElementsByTagName("tr");
    
	var msgNumber = 0; 
    var msgIndex = 0;    
    var msgAtu = new Array(0);	 
       
	if (tamanho > 0){		
		var item = top.document.selected[tamanho - 1];		
		msgAtu[tamanho - 1] = item;	
		msgIndex = top.main.inbox_list.document.getElementById(item).rowIndex;
		msgNumber = item;				
	}
	
	for (i = rowsTr.length -1; i >= 0; i--) {   	
    	if (rowsTr[i].id == msgNumber){    		
	   		break;
    	}    		
       	msgNumberFinal = rowsTr[i].id;
	}		

	for(i = 0; i < tamanho; ++i){		
		var item = top.document.selected[i];
		itens += "_"+item;
		tbl.deleteRow(top.main.inbox_list.document.getElementById(item).rowIndex);
	}	
		
	itens = itens.substring(1);
	top.document.cookie = "selected_itens="+itens;
	deselectAllElements(top.document.selected, "", "tablerow");
	try{
		top.document.selected = new Array(top.main.inbox_list.document.getElementById(msgNumberFinal).id);
	}catch(e){}
	
	limpaLista(); 		
	procuraMensagens(filtro);	
	
	top.document.usearrowkeys=true;
	msgNumberFinal = 0;
	
	if (msgIndex > (rowsTr.length - 1))
		msgIndex = (rowsTr.length - 1);
	
	for (i = 0; i < rowsTr.length; i++) {   	
   		if (rowsTr[i].rowIndex == msgIndex){    		
	   		msgNumberFinal = rowsTr[i].id;
    		break;
   		}    		       	
    }
    
    if (msgNumberFinal == 0)
    	msgNumberFinal = 1;		
	
	
	
	try{				
		init(window.frameElement, 0, "tablerow", "email", true);					
	}catch(e){
		alert(e.message);
		initTop(top.main.inbox_list.window.frameElement, 0, "tablerow", "email");				
	}	
		
	window.setTimeout("carregaMensagem(msgNumberFinal)",100);
	top.main.inbox_list.document.getElementById("loading").style.visibility="hidden";		
}catch(e){	
	top.main.inbox_list.document.getElementById("loading").style.visibility="hidden";
}
}


function closeMenuMenuDataGeneral(){
	try{
		closeAllMenus();
	}catch (e){
	
	}
}


function initTableGeneral(objId, frame)
{	
	var frameDocument = frame.document;
	var obj = frameDocument.getElementById(objId);
	var frameHeight = (frame.innerHeight?frame.innerHeight:
                      (frame.frameElement?frame.frameElement.height:frame.height));
	var table = obj.getElementsByTagName("TABLE")[0];

	if(frameHeight > (obj.offsetTop + 10))
	{
      
    obj.style.height = (frameHeight - obj.offsetTop - (document.all?4:0)) + "px";
    
    if(document.all)
      table.style.width = (frameDocument.body.clientWidth - (obj.scrollWidth - obj.clientWidth)) + "px";
      
    if(!frameDocument.getElementById("scroll"))
    {
      var columns = frameDocument.getElementById("columns");
      var rows = columns.getElementsByTagName("TR");
      for(var i = 0; i < rows.length; i++){
        var cell = rows[i].insertCell(-1);
        cell.id = "scroll";
        cell.className = rows[i].cells[0].className;
        cell.innerHTML = "&nbsp;";
        cell.style.width = "17px";
      }
    }
    if((table.clientHeight<=(frameHeight-obj.offsetTop)) && frameDocument.getElementById("scroll"))
		{
			obj.style.height = table.clientHeight + "px";
			frameDocument.getElementById("columns").rows[0].removeChild(frameDocument.getElementById("scroll"));
		}
    
	}
}



function moveMsgAjaxGeneral(novaPasta){		
    var tamanho = self.opener.top.document.selected.length;    
    var itens = "";
    var tbl = self.opener.parent.parent.main.inbox_list.document.getElementById("items");    
    
    if (!document.getElementsByTagName || !document.createTextNode) return;
    var rowsTr = self.opener.parent.parent.main.inbox_list.document.getElementById("items").getElementsByTagName("tbody")[0].getElementsByTagName("tr");
    
    var msgNumber = 0; 
    var msgIndex = 0;    
    var msgAtu = new Array(0);
    
	for(i = 0; i < tamanho; ++i){		
		var item = self.opener.top.document.selected[i];		
		msgAtu[i] = item;
		
		if (msgIndex == 0){
			msgIndex = self.opener.parent.parent.main.inbox_list.document.getElementById(item).rowIndex;
			msgNumber = item;
		}
		else if (msgIndex > self.opener.parent.parent.main.inbox_list.document.getElementById(item).rowIndex){
			msgIndex = self.opener.parent.parent.main.inbox_list.document.getElementById(item).rowIndex;
			msgNumber = item;			
		}
	}		   
	
	if (msgIndex ==0){		
		for(i = 0; i < tamanho; ++i){		
			var item = self.opener.top.document.selected[i];
			msgAtu[i] = item;
	
			if (msgIndex == 0){
				msgIndex = self.opener.parent.parent.main.inbox_list.document.getElementById(item).rowIndex;
				msgNumber = item;
			}
			else if (msgIndex < self.opener.parent.parent.main.inbox_list.document.getElementById(item).rowIndex){
				msgIndex = self.opener.parent.parent.main.inbox_list.document.getElementById(item).rowIndex;
				msgNumber = item;			
			}
		}		   
	
		for (i = rowsTr.length -1; i >= 0; i--) {   	
    		if (rowsTr[i].id == msgNumber){    		
	    		break;
    		}    		
        	msgNumberFinal = rowsTr[i].id;
	    }	
	}else{    
	    for (i = 0; i < rowsTr.length; i++) {   	
    		if (rowsTr[i].id == msgNumber){    		
    			break;
	    	}    		
    	    msgNumberFinal = rowsTr[i].id;
	    }
	}
	
    for(i = 0; i < tamanho; ++i){		
		var item = self.opener.top.document.selected[i];
		itens += "_"+item;		
		var tableRow = self.opener.parent.parent.main.inbox_list.document.getElementById(item);
		tbl.deleteRow(self.opener.parent.parent.main.inbox_list.document.getElementById(item).rowIndex);
	}		
	
	itens = itens.substring(1);
	document.cookie = "selected_itens="+itens;    	
	
	moveMsgProt(novaPasta);
    itens = "";    
        
    //organiza array
    msgAtu.sort(comparar);        
    var arrTrId = new Array(0);      
    
    var rowsTr = self.opener.parent.parent.main.inbox_list.document.getElementById("items").getElementsByTagName("tbody")[0].getElementsByTagName("tr");
    for (i = 0;i<rowsTr.length; ++i){		    	    	
		arrTrId[i] = rowsTr[i].id; 
		rowsTr[i].id = rowsTr[i].id + "tmp";
    }   
   
   	arrTrId.sort(comparar);
    for(y = 0; y < (rowsTr.length + tamanho); ++y){    	    	
	    for (i = 0;i<(rowsTr.length); ++i){		    
	    	if (rowsTr[i].id.substring(0, rowsTr[i].id.indexOf("tmp")) == arrTrId[i]){
    			rowsTr[y].id = (y + 1);    			    			
    		}    		
	    }	
	}	
	
	self.opener.top.document.selected = new Array();	
	deselectAllElements(self.opener.top.document.selected, "", "tablerow");
	
		
	// if(view != "mailview")
	// view = "&view=" + view;
	
	//self.opener.parent.parent.main.inbox_msgcontent.location = "msg_reader.jsp";			
	
	//self.opener.top.document.selected = new Array(self.opener.parent.parent.main.inbox_list.document.getElementById(msgNumberFinal).id);	
	
	
	//if (msgIndex == 0)
		//self.opener.top.document.firstelement = true;	
//	else 
	//	self.opener.top.document.firstelement = false;		
	
//	selectElement(self.opener.parent.parent.main.inbox_list.document.getElementById(msgNumberFinal), "tablerow");	
}


function deleteMsgAjax(urlXml, msgNumber)
	{	
		var url = urlXml;
		var pars = "milisegundos=" + new Date().getTime()+"&msg=" + msgNumber + "&folder=" + parent.parent.folder.folderview.document.frmFolder.imapFolder.value;
		
		var myAjax = new Ajax.Request(
			url, 
			{
				method: "get", 
				parameters: pars, 
				onSuccess: processDeleteMsgs
			});
		
	}

   
 function processDeleteMsgs(response){
 
 }
 
 
 	function procuraMensagens(filtro)
	{	
		var url = 'ServletSearchMsg';
		var folder = top.folder.folderview.document.frmFolder.imapFolder.value;
		var pars = 'milisegundos=' + new Date().getTime()+'&acao=move&selectedFolder='+folder+'&filtro='+filtro+'&field=' + parent.parent.main.inbox_list.document.getElementById('sortField').value + '&order=' + parent.parent.main.inbox_list.document.getElementById('order').value + '&pagina=' + parent.parent.main.inbox_list.document.getElementById('pagina').value;
		
		var myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 
				onSuccess: processXMLProcuraMensagens
			});
		
	}
	
	function processXMLProcuraMensagens(response){
   	  //alert(response.responseText);
      var dadosXML = response.responseXML.getElementsByTagName('root');            
	  //total de elementos contidos na tag cidade	  	     
  	  //alert(response.responseText);
  	  
	  if(dadosXML.length > 0) {
	     //percorre o arquivo XML paara extrair os dados
	     try{	     	     
	     for(var i = 0 ; i < dadosXML.length; i++) {                  
            var item = dadosXML[i];
			//cont?udo dos campos no arquivo XML			
			//var html = item.getElementsByTagName('html')[0].firstChild.nodeValue;
			  	  // creates a <table> element and a <tbody> element
       		var header = top.main.inbox_list.document.getElementById("mensagens_webaccess");		       

        	// creating all cells        
        	var row = top.main.inbox_list.document.createElement("tr");


			var nomeDaClasse = "padd";
        	
        	if (item.getElementsByTagName('icon')[0].firstChild.nodeValue != 'layout/XP/img/icon_mailread.gif') 
        		nomeDaClasse = "paddbold";
        
    	    // Create a <td> element and a text node, make the text
	        // node the contents of the <td>, and put the <td> at
        	// the end of the table row
        	var cell = top.main.inbox_list.document.createElement("td");
        	cell.style.width = '15px';
        	
        	cell.innerHTML = "&nbsp;";
        	cell.className = nomeDaClasse;        	
        	row.appendChild(cell);
        	
        	var cell = top.main.inbox_list.document.createElement("td");        	
        	var imagem = top.main.inbox_list.document.createElement('img');        	
        	imagem.setAttribute("src", item.getElementsByTagName('icon')[0].firstChild.nodeValue);        	       	
        	imagem.setAttribute("id", "img_" + item.getElementsByTagName('id')[0].firstChild.nodeValue);
        	cell.appendChild(imagem);
        	cell.className = nomeDaClasse;        	
        	cell.setAttribute("align", "center");
        	cell.style.width = '28px';
        	row.appendChild(cell);
        	
        	var cell = top.main.inbox_list.document.createElement("td");        	        	
        	var imagem = top.main.inbox_list.document.createElement('img');        	
        	if (item.getElementsByTagName('attach')[0].firstChild.nodeValue == 'true'){
        		imagem.setAttribute("src", 'layout/XP/img/icon_attachment.gif');
        		cell.appendChild(imagem);        		
        	}else
        		cell.innerHTML = "&nbsp;";
        	cell.style.width = '14px';	        		
        	cell.className = nomeDaClasse;
        	row.appendChild(cell);
        	
        	var cell = top.main.inbox_list.document.createElement("td");
        	var cellText = top.main.inbox_list.document.createTextNode(item.getElementsByTagName('from')[0].firstChild.nodeValue);
        	cell.style.width = '190px';
        	cell.appendChild(cellText);
        	cell.className = nomeDaClasse;
        	row.appendChild(cell);
        	
        	var cell = top.main.inbox_list.document.createElement("td");
        	var cellText = top.main.inbox_list.document.createTextNode(item.getElementsByTagName('subject')[0].firstChild.nodeValue);
        	
        	cell.appendChild(cellText);
        	cell.className = nomeDaClasse;
        	row.appendChild(cell);
        	
        	var cell = top.main.inbox_list.document.createElement("td");
        	var cellText = top.main.inbox_list.document.createTextNode(item.getElementsByTagName('received')[0].firstChild.nodeValue);
        	cell.style.width = '100px';
        	cell.appendChild(cellText);
        	cell.className = nomeDaClasse;
        	row.appendChild(cell);
        	
        	var cell = top.main.inbox_list.document.createElement("td");
        	var cellText = top.main.inbox_list.document.createTextNode(item.getElementsByTagName('size')[0].firstChild.nodeValue);
        	cell.style.width = '64px';
        	cell.appendChild(cellText);
        	var cellText = top.main.inbox_list.document.createTextNode(" kB");
        	cell.appendChild(cellText);        	
        	cell.className = nomeDaClasse;
        	cell.setAttribute("align", "left");
        	row.appendChild(cell);
        	        	        	
        	var cell = top.main.inbox_list.document.createElement("td");        	
        	cell.innerHTML = "&nbsp;";
        	cell.style.width = '40px';        	
        	cell.className = nomeDaClasse;
        	row.appendChild(cell);
        	        	
        	row.className = 'tablerow';
        	row.id = item.getElementsByTagName('id')[0].firstChild.nodeValue;
        	row.setAttribute("title", "Abrir e-mail");
        	
        	//eventos
        	row.onmouseover=mouseGoesOver;
        	row.onmouseout=mouseGoesOut;
        	row.onmousedown=mouseGoesClick;
        	row.onclick=mouseGoesClick;
        	row.ondblclick=mouseGoesDblClick;
        	row.setAttribute("id", item.getElementsByTagName('id')[0].firstChild.nodeValue);        	
        	row.setAttribute("name", item.getElementsByTagName('id')[0].firstChild.nodeValue);
        	
        	// add the row to the end of the table body
        	header.appendChild(row);        						
		 }
		 
		 //parent.parent.main.inbox_list.document.getElementById('table').innerHTML = html;
		 }catch(e){
		 	alert(e.message);
		 }			 
	  }	  
	  else {
	    //caso o XML volte vazio, printa a mensagem abaixo
		//idOpcao.innerHTML = "--Primeiro selecione a empresa--";		
	  }	  
   }
	


	function listaMensagens(novaPasta)
	{	
		var url = 'ServletMsgList';
		var pars = 'milisegundos=' + new Date().getTime()+'&acao=move&new_folder=' + novaPasta + '&field=' + parent.parent.main.inbox_list.document.getElementById('sortField').value + '&order=' + parent.parent.main.inbox_list.document.getElementById('order').value + '&pagina=' + parent.parent.main.inbox_list.document.getElementById('pagina').value;
		
		var myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 
				onSuccess: processXMLListaMensagens
			});
		
	}
   
   function processXMLListaMensagens(response){
   	  //alert(response.responseText);
      var dadosXML = response.responseXML.getElementsByTagName('root');            
	  //total de elementos contidos na tag cidade	  	     
  	  //alert(response.responseText);
  	  
	  if(dadosXML.length > 0) {
	     //percorre o arquivo XML paara extrair os dados
	     try{	     	     
	     for(var i = 0 ; i < dadosXML.length; i++) {                  
            var item = dadosXML[i];
			var newMsg = true;	                        
			
            var rowsTr = top.main.inbox_list.document.getElementById('items').getElementsByTagName('tbody')[0].getElementsByTagName('tr');
			for (y = 0; y < rowsTr.length; y++){   	
 				if (rowsTr[y].id == item.getElementsByTagName('id')[0].firstChild.nodeValue){
 					newMsg = false;		
    				break;
   				}    		       	
    		}            
            
            if (newMsg == false){
            	continue;
            }            
            
			//cont?udo dos campos no arquivo XML			
			//var html = item.getElementsByTagName('html')[0].firstChild.nodeValue;
			  	  // creates a <table> element and a <tbody> element
       		var header = top.main.inbox_list.document.getElementById("mensagens_webaccess");		       

        	// creating all cells        
        	var row = top.main.inbox_list.document.createElement("tr");


			var nomeDaClasse = "padd";
        	
        	if (item.getElementsByTagName('icon')[0].firstChild.nodeValue != 'layout/XP/img/icon_mailread.gif') 
        		nomeDaClasse = "paddbold";
        
    	    // Create a <td> element and a text node, make the text
	        // node the contents of the <td>, and put the <td> at
        	// the end of the table row
        	var cell = top.main.inbox_list.document.createElement("td");
        	cell.setAttribute("width", 12);
        	
        	cell.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
        	cell.className = nomeDaClasse;        	
        	row.appendChild(cell);
        	
        	var cell = top.main.inbox_list.document.createElement("td");        	
        	var imagem = top.main.inbox_list.document.createElement('img');        	
        	imagem.setAttribute("src", item.getElementsByTagName('icon')[0].firstChild.nodeValue);        	       	
        	cell.appendChild(imagem);
        	cell.className = nomeDaClasse;        	
        	cell.setAttribute("align", "center");
        	row.appendChild(cell);
        	
        	var cell = top.main.inbox_list.document.createElement("td");        	        	
        	var imagem = top.main.inbox_list.document.createElement('img');        	
        	if (item.getElementsByTagName('attach')[0].firstChild.nodeValue == 'true'){
        		imagem.setAttribute("src", 'layout/XP/img/icon_attachment.gif');
        		cell.appendChild(imagem);        		
        	}
        	cell.className = nomeDaClasse;
        	row.appendChild(cell);
        	
        	var cell = top.main.inbox_list.document.createElement("td");
        	var cellText = top.main.inbox_list.document.createTextNode(item.getElementsByTagName('from')[0].firstChild.nodeValue);
        	cell.appendChild(cellText);
        	cell.className = nomeDaClasse;
        	row.appendChild(cell);
        	
        	var cell = top.main.inbox_list.document.createElement("td");
        	var cellText = top.main.inbox_list.document.createTextNode(item.getElementsByTagName('subject')[0].firstChild.nodeValue);
        	cell.appendChild(cellText);
        	cell.className = nomeDaClasse;
        	row.appendChild(cell);
        	
        	var cell = top.main.inbox_list.document.createElement("td");
        	var cellText = top.main.inbox_list.document.createTextNode(item.getElementsByTagName('received')[0].firstChild.nodeValue);
        	cell.appendChild(cellText);
        	cell.className = nomeDaClasse;
        	row.appendChild(cell);
        	
        	var cell = top.main.inbox_list.document.createElement("td");
        	var cellText = top.main.inbox_list.document.createTextNode(item.getElementsByTagName('size')[0].firstChild.nodeValue);
        	cell.appendChild(cellText);
        	var cellText = top.main.inbox_list.document.createTextNode(" kB");
        	cell.appendChild(cellText);        	
        	cell.className = nomeDaClasse;
        	row.appendChild(cell);
        	        	        	
        	var cell = top.main.inbox_list.document.createElement("td");
        	var cellText = top.main.inbox_list.document.createTextNode("");
        	cell.appendChild(cellText);
        	cell.className = nomeDaClasse;
        	row.appendChild(cell);
        	        	
        	row.className = 'tablerow';
        	row.id = item.getElementsByTagName('id')[0].firstChild.nodeValue;
        	row.setAttribute("title", "Abrir e-mail");
        	
        	//eventos
        	row.onmouseover=mouseGoesOver;
        	row.onmouseout=mouseGoesOut;
        	row.onmousedown=mouseGoesClick;
        	row.onclick=mouseGoesClick;
        	row.ondblclick=mouseGoesDblClick;
        	row.setAttribute("id", item.getElementsByTagName('id')[0].firstChild.nodeValue);        	
        	row.setAttribute("name", item.getElementsByTagName('id')[0].firstChild.nodeValue);
        	
        	// add the row to the end of the table body
        	header.appendChild(row);        						
		 }
		 
		 //parent.parent.main.inbox_list.document.getElementById('table').innerHTML = html;
		 }catch(e){
		 	alert(e.message);
		 }			 
	  }	  
	  else {
	    //caso o XML volte vazio, printa a mensagem abaixo
		//idOpcao.innerHTML = "--Primeiro selecione a empresa--";		
	  }
   }  
 
function addEvent(objeto, evento, funcao){
	try{objeto.addEventListener(evento, funcao, false);}catch(e){}
	try{objeto.attachEvent(evento, funcao);}catch(e){}
}
 
  
function mouseGoesDblClick(){
	elementDblClick(this.id, 'email');
} 
  
function mouseGoesClick(e){	
	if( typeof( e ) == "undefined" && typeof( window.event ) != "undefined" )
    e = top.main.inbox_list.window.event;
	elementClick(e, this, this.id, 'tablerow', 'email');
}

function mouseGoesOver() { 
	elementOver(this, 'tablerow'); 
} 

function mouseGoesOut() { 
	elementOut(this, 'tablerow'); 
}   

function mouseGoesDown(e){
	if( typeof( e ) == "undefined" && typeof( window.event ) != "undefined" )
    e = window.event;
	elementClick(e, this, this.id, 'tablerow', 'email');
}
   
function listMsgProt(novaPasta)
	{
		var url = 'ServletMsgList';
		var pars = 'acao=move&new_folder=' + novaPasta + '&field=' + parent.parent.main.inbox_list.document.getElementById('sortField').value + '&order=' + parent.parent.main.inbox_list.document.getElementById('order').value + '&pagina=' + parent.parent.main.inbox_list.document.getElementById('pagina').value;
		var myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 
				onSuccess: processListMsgProt
			});
		
	}

	function processListMsgProt(response){
	  var dadosXML   = response.responseXML.getElementsByTagName('root');            
	  //total de elementos contidos na tag cidade	  	     
  	  //alert(response.responseText);
  	  
	  if(dadosXML.length > 0) {
	     //percorre o arquivo XML paara extrair os dados	     	     
	     for(var i = 0 ; i < dadosXML.length; i++) {                  
            var item = dadosXML[i];            
			//cont?udo dos campos no arquivo XML			
			var html = item.getElementsByTagName('html')[0].firstChild.nodeValue;												
		 }		     
		 parent.parent.main.inbox_list.document.getElementById('table').innerHTML = html;			 
	  }
	  else {
	    //caso o XML volte vazio, printa a mensagem abaixo
		//idOpcao.innerHTML = "--Primeiro selecione a empresa--";		
	  }		  
			
	}

function deleteMsgProt()
{
		var url = "DeletarMensagens";				
		var pars = '';
		
		var myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 
				onSuccess: processDeleteMsgProt
			});
		
}
	
	
	function moveMsgProt(novaPasta)
	{
		var url = 'ServletMoveMsg';
		var pars = 'acao=move&new_folder=' + novaPasta + '&field=' + parent.parent.main.inbox_list.document.getElementById('sortField').value + '&order=' + parent.parent.main.inbox_list.document.getElementById('order').value + '&pagina=' + parent.parent.main.inbox_list.document.getElementById('pagina').value;
		var myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 
				onSuccess: processDeleteMsgProt
			});
		
	}

	function processDeleteMsgProt(response)
	{		
		var dadosXML   = response.responseXML.getElementsByTagName('root');            
	  //total de elementos contidos na tag cidade	  	     
  	  //alert(reponse.responseText);
  	  
	  if(dadosXML.length > 0) {
	     //percorre o arquivo XML paara extrair os dados	     	     
	     for(var i = 0 ; i < dadosXML.length; i++) {                  
            var item = dadosXML[i];            
			//cont?udo dos campos no arquivo XML			
			var status = item.getElementsByTagName('status')[0].firstChild.nodeValue;												
		 }		     
		alert(status);		 
	  }
	  else {
	    //caso o XML volte vazio, printa a mensagem abaixo
		//idOpcao.innerHTML = "--Primeiro selecione a empresa--";		
	  }	
	}
	
	


function comparar(a, b){
     return a - b;
}

var msgAnt = 0;
   
    function trim (str) {
        str = this != window? this : str;
        return str.replace(/^s+/, '').replace(/s+$/, '');
    }
    
/**
* Function which is activated when the arrow down key on the keyboard is pressed.
* 
* @param event $ 
*/
function nextElement(event)
{	
	var nextElementIndex = getElementIndex(top.main.inbox_list.document.getElementById(top.document.selected[(top.document.selected.length - 1)])) + 1;
	var nextElement = getElement(nextElementIndex);
	
	if( typeof( event ) == "undefined" && typeof( window.event ) != "undefined" )
		event = top.main.inbox_list.window.event;
	

	if (nextElementIndex < top.document.elementList.length && nextElementIndex > 0)
	{
		
		if (!event.shiftKey)
		{
			
			deselectAllElements(top.document.selected, null);
			top.document.selected = new Array(nextElement.id);
		} 
		else
		{
			
			if (nextElement.state == 'selected')
				top.document.selected.pop();
			else
			{
				top.document.selected[top.document.selected.length] = nextElement.id;
			} 
		} 
		
		

		if (nextElement.state == 'selected')		
			deselectElement(getElement(nextElementIndex - 1), getElement(nextElementIndex - 1).className);
		else
			selectElement(nextElement, nextElement.className);
			
				

		if (top.document.view != 'contact')
		{
				
			scrollTop =  top.main.inbox_list.document.getElementById('table').scrollTop;						
			
			if ((nextElement.offsetTop - scrollTop) >= top.currentframe.contentWindow.document.body.clientHeight - top.document.arrowDistance)
				top.main.inbox_list.document.getElementById('table').scrollTop += nextElement.clientHeight;
			else if ((nextElement.offsetTop - scrollTop) < 0)
				top.main.inbox_list.document.getElementById('table').scrollTop = nextElement.offsetTop;
	
			if (!event.shiftKey && top.document.view == 'mailview'){
				loadFrame('index1.php?task=item&msgstore=' + parseVarFromURL(top.main.location.href, 'msgstore') + '&entryID=' + nextElement.id, 'inbox_msgcontent');
			}
		}
		else if (top.document.view == 'contact')
		{				
			scrollLeft = document.getElementById('contacts_content').scrollLeft;

			offsetLeft = document.getElementById(nextElement.id + "_table").parentNode.parentNode.parentNode.parentNode.offsetLeft + nextElement.clientWidth;
			if (document.all)
				offsetLeft = document.getElementById(nextElement.id + "_table").parentNode.parentNode.parentNode.parentNode.parentNode.offsetLeft + nextElement.clientWidth;

			if (offsetLeft - scrollLeft >= top.currentframe.contentWindow.document.body.clientWidth)
				document.getElementById('contacts_content').scrollLeft += nextElement.clientWidth;
		}
			 
	} 
	
	if (!dblClick) {
		var e = event;
		if( typeof( e ) == "undefined" && typeof( window.event ) != "undefined" )
	   		e = top.main.inbox_list.window.event;
		
		elementClick(e, nextElement, nextElement.id, 'tablerow', 'email');
	}
	
} 


function getObject(nextElementIndex){	
	return getElement(nextElementIndex);
} 

function getObjectIndex(){
	return getElementIndex(top.main.inbox_list.document.getElementById(top.document.selected[(top.document.selected.length - 1)]));	
}


function selectObject(nextElementIndex, nextElement){	
	deselectAllElements(top.document.selected, null);	
	try{
		top.document.selected = new Array(nextElement.id);
	}catch(e){
		if(nextElementIndex != null){
			nextElementIndex = top.document.elementList.length - 1;
			nextElement = getObject(nextElementIndex);
			top.document.selected = new Array(nextElement.id);
		}else{
			nextElementIndex = 0;
			nextElement = getObject(nextElementIndex);
			top.document.selected = new Array(nextElement.id);
		}
	}	
	
	if (nextElement.state == 'selected')		
		deselectElement(getElement(nextElementIndex - 1), getElement(nextElementIndex - 1).className);
	else
		selectElement(nextElement, nextElement.className);	
}

/**
* Function which is activated when the arrow up key on the keyboard is pressed.
* 
* @param event $ 
*/
function previousElement(event)
{	
	var previousElementIndex = getElementIndex(top.main.inbox_list.document.getElementById(top.document.selected[(top.document.selected.length - 1)])) - 1;
	var previousElement = getElement(previousElementIndex);
	
	if (previousElementIndex >= 0 && previousElementIndex < top.document.elementList.length)
	{
		if (!event.shiftKey)
		{			
			deselectAllElements(top.document.selected, null);
			top.document.selected = new Array(previousElement.id);
			
		} 
		else
		{			
			if (previousElement.state == 'selected')
				top.document.selected.pop();
			else
				top.document.selected[top.document.selected.length] = previousElement.id;
		} 

		if (previousElement.state == 'selected')
			deselectElement(getElement(previousElementIndex + 1), getElement(previousElementIndex + 1).className);
		else
			selectElement(previousElement, previousElement.className);

		if (top.document.view != 'contact')
		{			
			scrollTop = top.main.inbox_list.document.getElementById('table').scrollTop;
	
			if ((previousElement.offsetTop - scrollTop) < 0)
				top.main.inbox_list.document.getElementById('table').scrollTop = previousElement.offsetTop;
			else if ((previousElement.offsetTop - scrollTop) > top.currentframe.contentWindow.document.body.clientHeight)
				top.main.inbox_list.document.getElementById('table').scrollTop = previousElement.offsetTop - top.currentframe.contentWindow.document.body.clientHeight + previousElement.clientHeight;
	
			if (!event.shiftKey && top.document.view == 'mailview')
			loadFrame('index2.php?task=item&msgstore=' + parseVarFromURL(top.main.location.href, 'msgstore') + '&entryID=' + previousElement.id, 'inbox_msgcontent');
		}
		else if (top.document.view == 'contact')
		{
			
			scrollLeft = document.getElementById('contacts_content').scrollLeft;

			offsetLeft = document.getElementById(previousElement.id + "_table").parentNode.parentNode.parentNode.parentNode.offsetLeft;
			if (document.all)
				offsetLeft = document.getElementById(previousElement.id + "_table").parentNode.parentNode.parentNode.parentNode.parentNode.offsetLeft;

			if (offsetLeft - scrollLeft < 0)
				document.getElementById('contacts_content').scrollLeft = offsetLeft - previousElement.clientWidth;
		} 
	} 
	
	
	if (!dblClick) {		
		var e = event;
		if( typeof( e ) == "undefined" && typeof( window.event ) != "undefined" )
	   		e = top.main.inbox_list.window.event;
		
		elementClick(e, previousElement, previousElement.id, 'tablerow', 'email');
	}
	
} 

/**
* General
* ------------------------------------------------------------------------------------
*/

/**
* Function which returns the index of an element in the elementList.
* 
* @param element $ 
*/
function getElementIndex(element)
{
	var index = 0;

	for(i = 0; i < top.document.elementList.length; i++)
	{
		if (element == top.document.elementList[i])
			index = i;
	} 

	return index;
} 

/**
* Function which returns the an element in the elementList.
* 
* @param elementIndex $ 
*/
function getElement(elementIndex)
{
	if (elementIndex >= 0 && elementIndex < top.document.elementList.length)
		return top.document.elementList[elementIndex];
	else
		return null;
} 

/**
* Function which returns a string with entry Id's.
* 
* @param entryIDs $ 
*/
function getEntryIDs(entryIDs)
{
	if (!document.all)
	{
		var items = '';

		for(i = 0; i < entryIDs.length; i++)
		{
			items += '&entryIDs[]=' + entryIDs[i];
		} 

		return items;
	} 
	else
	{
		form = document.createElement("form");

		for(i = 0; i < entryIDs.length; i++)
		{
			input = document.createElement("input");
			input.type = "hidden";
			input.name = "entryIDs[]";
			input.value = entryIDs[i];

			form.appendChild(input);
		} 

		document.appendChild(form);

		return form;
	} 
} 

/**
* Function which selects the first element.
*/
function selectFirstElement(elementList, component, view, flag)
{
	
	if (elementList[0])
	{
		top.document.selected = new Array(elementList[0].id);
		top.document.lastSelected = elementList[0];

		try{		
			if (flag != true)
				selectElement(elementList[0], elementList[0].className);
		}catch(e){
			selectElement(elementList[0], elementList[0].className);
		}

		if (top.main && top.main.inbox_msgcontent)
		{
			//elementList[0].style.fontWeight = 0;
			entryID = elementList[0].id; 
			//markread(entryID);						
			//markReaded();
			
		}
		
		
		if(view == 'email'){
           top.main.inbox_msgcontent.location='msg_reader.jsp';
		}		
	} 
} 

/**
* Function which selects the 'Inbox' folder in the hieracrhy list by first loading the
* hieracrhy list.
*/
function selectInboxFolder()
{
	var element = null;
	try{
		entryID = parseVarFromURL(top.main.location.href, 'entryid');
		element = document.getElementById(entryID);
	}catch(e){}

	if(element) {
		top.document.hierarchySelected = new Array(element.id);
		selectElement(element, 'hierarchy_list');
	}
} 

/**
* Function which opens one or more items.
*/
function openItems()
{	
	//if(top.document.modifyitems || top.document.readitems)
	//{	
  	for(i = 0; i < top.document.selected.length; i++)
  	{
  		element = top.main.inbox_list.document.getElementById(top.document.selected[i]);
  		element.ondblclick();
  	}
	//}
	//else
	//{
	//	alert(getMessage("error_open"));
	//}	
} 

function openRecurringItem(entryID, base_day, base_month, base_year)
{
	var windowOpener;
	
	if(document.all)
	{
		windowOpener = window.dialogArguments;
		appointment = window.dialogArguments;
	}
	else
	{
		windowOpener = window.opener;
		appointment = window.opener.top.main.appointment_content;
	}

	if(document.getElementById('occurrence').checked)
		windowOpener.popUp('index.php?task=item&msgstore=' + windowOpener.parseVarFromURL(windowOpener.location.href, 'msgstore') + '&view=appointment&entryID=' + entryID + '&exception=1&base_day=' + base_day + '&base_month=' + base_month + '&base_year=' + base_year);
	else if(document.getElementById('range').checked)
		windowOpener.popUp('index.php?task=item&msgstore=' + windowOpener.parseVarFromURL(windowOpener.location.href, 'msgstore') + '&view=appointment&entryID=' + entryID);

	window.close();
}

/**
* Function which deletes one or more items.
* 
* @param storeID $ 
* @param folderID $ 
* @param entryIDs $ 
*/
function deleteItems(storeID, folderID, entryIDs)
{
	if(top.document.deleteitems)
	{
  	var execute = false;
  	if (top.document.delete_folder || top.document.public_folder)
  	{
  		if (confirm(getMessage('confirm_delete')))
  		{
  			execute = true;
  		} 
  	} 
  	else
  	{
  		execute = true;
  	} 
  
  	if (!document.all)
  	{
  		var items = getEntryIDs(entryIDs);
  		document.reload = true;
  
  		if (execute)
  		{
  			executeHttpRequest('index.php?task=delete_items&msgstore=' + storeID + '&entryID=' + folderID + '&' + items, top.currentframe);
  			
				if (top.main && top.main.inbox_msgcontent)
					top.main.inbox_msgcontent.location = "index.php?task=html";
  		}
  	} 
  	else
  	{
  		var form = getEntryIDs(entryIDs);
  		if (execute)
  		{
  			executeHttpPostRequest('index.php?task=delete_items&msgstore=' + storeID + '&entryID=' + folderID, form, top.currentframe, top.currentframe);
  			
  			if (top.main && top.main.inbox_msgcontent)
					top.main.inbox_msgcontent.location = "index.php?task=html";
  		}
  	} 
  }
  else
  {
  	alert(getMessage("error_delete"));
  }
} 

/**
* Function which deletes one or more appointments. Needs special method, because of recurring items.
* 
* @param storeID $ 
* @param folderID $ 
* @param entryIDs $ 
*/
function deleteAppointment(storeID, folderID, entryIDs)
{
	if(top.document.deleteitems)
	{
		selectedElements = new Array();
		basedates = new Array();
		recurring = false;
		
		for(var i = 0; i < top.document.selected.length; i++)
		{
			var element = top.main.appointment_content.document.getElementById(top.document.selected[i]);
			
			var itemId = element.id.substring(element.id.indexOf("_") + 1);
			var item = top.main.appointment_content.calendar.getDayById(element.getAttribute("parentID")).getItemById(itemId);
			
			if(item["recurring"] || item["exception"])
			{
				recurring = true;
				basedates[basedates.length] = '&base_day=' + item["base_day"] + '&base_month=' + item["base_month"] + '&base_year=' + item["base_year"];
			}
			
			selectedElements[selectedElements.length] = itemId;
		}
  
  	if(recurring && selectedElements.length > 0)
  	{
  		for(i = 0; i < selectedElements.length; i++)
  		{
  			basedate = false;
  			if(basedates[i])
  				basedate = basedates[i];
  				
  			if(basedate)
  				modalDialog('?task=table&view=appointmentrecurrence_confirm&entryid=' + selectedElements[i] + basedate, 330, (document.all?250:200));
  		}
  	}
  	else if(selectedElements.length > 0)
  	{
  		deleteItems(storeID, folderID, selectedElements);
  	}
	}
	else
	{
		alert(getMessage("error_delete"));
	}
}

function deleteRecurrence(entryID, base_day, base_month, base_year)
{
	var windowOpener;
	
	if(document.all)
	{
		windowOpener = window.dialogArguments;
		appointment = window.dialogArguments;
	}
	else
	{
		windowOpener = window.opener;
		appointment = window.opener.top.main.appointment_content;
	}

	windowOpener.document.reload=true;

	if(document.getElementById('occurrence').checked)
		windowOpener.executeHttpRequest('index.php?task=update_item&action=appointment&entryid=' + entryID + '&base_day=' + base_day + '&base_month=' + base_month + '&base_year=' + base_year + '&delete=1', appointment);
	else if(document.getElementById('range').checked)
		windowOpener.executeHttpRequest('index.php?task=delete_items&msgstore=' + windowOpener.parseVarFromURL(windowOpener.location.href, 'msgstore') + '&entryID=' + windowOpener.parseVarFromURL(windowOpener.location.href, 'entryid') + '&entryIDs[]=' + entryID, appointment);
	
	window.close();
}

function deleteSearchItems()
{
	var formElement = document.getElementById("form");
	
	var inputElement = document.createElement("input");
	inputElement.type = "hidden";
	inputElement.name = "deletesearchitems";
	inputElement.value = "1";
	formElement.appendChild(inputElement);
	
	for(var i = 0; i < top.document.selected.length; i++)
	{
		var element = document.getElementById(top.document.selected[i]);

		var inputElement = document.createElement("input");
		inputElement.type = "hidden";
		inputElement.name = "searchEntryIDs[" + element.getAttribute("parentid") + "][]";
		inputElement.value = top.document.selected[i];

		formElement.appendChild(inputElement);
	}
	
	formElement.submit();
}

/**
* Function which copies one or more items.
* 
* @param storeID $ 
* @param sourceFolderID $ 
* @param destinationFolderID $ 
* @param entryIDs $ 
*/
function copyItems(storeID, sourceFolderID, destinationFolderID, entryIDs)
{
	if(top.document.modifyitems)
	{
  	if (!document.all)
  	{
  		var items = getEntryIDs(entryIDs);
  		document.location.href = 'index.php?task=copy_items&msgstore=' + storeID + '&sourceFolder=' + sourceFolderID + '&entryID=' + destinationFolderID + '&closeFrame=yes&' + items;
  	} 
  	else
  	{
  		var form = getEntryIDs(entryIDs);
  		form.action = 'index.php?task=copy_items&msgstore=' + storeID + '&sourceFolder=' + sourceFolderID + '&entryID=' + destinationFolderID + '&closeFrame=yes';
  		form.method = 'POST';
  		form.submit();
  	}
	}
	else
	{
		alert(getMessage("error_copymove"));
	} 
} 

/**
* Function which moves one or more items.
* 
* @param storeID $ 
* @param sourceFolderID $ 
* @param destinationFolderID $ 
* @param entryIDs $ 
*/
function moveItems(storeID, sourceFolderID, destinationFolderID, entryIDs)
{
	if(top.document.modifyitems)
	{
  	if (!document.all)
  	{
  		var items = getEntryIDs(entryIDs);
  		document.location.href = 'index.php?task=copy_items&msgstore=' + storeID + '&sourceFolder=' + sourceFolderID + '&entryID=' + destinationFolderID + '&action=move&closeFrame=yes&' + items;
  	} 
  	else
  	{
  		var form = getEntryIDs(entryIDs);
  		form.action = 'index.php?task=copy_items&msgstore=' + storeID + '&sourceFolder=' + sourceFolderID + '&entryID=' + destinationFolderID + '&action=move&closeFrame=yes';
  		form.method = 'POST';
  		form.submit();
  	} 
	}
	else
	{
		alert(getMessage("error_copymove"));
	}
} 

function newItem(url)
{
	if(top.document.create_contents)
		popUp(url);
	else
		alert(getMessage("error_create"));
}

/**
* Function which opens a new window.
* 
* @param url $ 
*/
function popUp(url, width, height, resizable, uWindow)
{
	if (!width)
		width = 780;

	if (!height)
		height = 560;

	if (!resizable && resizable != 0)
		resizable = 1;
	
	
		var id = new Date();
		return window.open(url, id.getTime(), 'toolbar=0,scrollbars=1,location=0,status=1,menubar=0,resizable=' + resizable + ',width=' + width + ',height=' + height + ',top=' + ((screen.height / 2) - (height / 2)) + ',left=' + ((screen.width / 2) - (width / 2)));
	
} 

/**
* Function which reloads a frame.
* 
* @param url $ ;
* @param frame $ ;
*/
function loadFrame(url, frame)
{
	if (parent.frames && parent.frames[frame])
		parent.frames[frame].location = url;
	else if (top.frames && top.frames[frame])
		top.frames[frame].location = url;
	else if (top.frames && top.frames['main'] && top.frames.main[frame]){
		top.frames.main[frame].location = url;
	}
} 

/**
* Function which selects a range in the view when "SHIFT"-key is used.
* 
* @param elementList $ 
* @param startElement $ 
* @param endElement $ 
* @param component $ 
*/
function selectRange(elementList, startElement, endElement, component)
{
	var betweenElement = false;

	if (startElement != endElement)
	{
		for(var i = 0; i < elementList.length; i++)
		{
			if ((startElement == elementList[i] || endElement == elementList[i]) || betweenElement == true)
			{
				selectElement(elementList[i], elementList[i].className);
				top.document.selected[top.document.selected.length] = elementList[i].id;

				if ((startElement == elementList[i] || endElement == elementList[i]) && betweenElement == true)
					betweenElement = false;
				else
					betweenElement = true;
			} 
		} 

		endElement.onmouseout();
	} 
} 

/**
* Function which trims the selected array.
* 
* @param elementID $ 
*/
function trimSelected(elementID)
{
	var selected = top.document.selected;
	top.document.selected = new Array();

	for(var i = 0; i < selected.length; i++)
	{
		if (selected[i] != elementID)
			top.document.selected[top.document.selected.length] = selected[i];
	} 
} 

/**
* Function which replaces the menu and the footer of the webmail.
* 
* @param component $ 
* @param storeid $ 
* @param parententryiD $ 
*/
function reloadMenuFooter(component, storeid, parententryid)
{
	var url = 'index.php?task=top&menu=' + component + '&msgstore=' + storeid;
	
	if (parententryid)
		url += '&parententryid=' + parententryid;

    top.document.current_menu_url = url;

	executeHttpRequest(url, top.topframe); 
	// Only load footer if id is different
	if (parseVarFromURL(top.frames['footer'].location.href, 'entryID') != parententryid)
	{
		top.frames['footer'].location.href = 'index.php?task=footer&view=info&menu=' + component + '&msgstore=' + storeid + '&entryID=' + parententryid;
	} 
} 

function reloadTop(tipo)
{
	var url = 'top.jsp?tipo='+tipo;

    top.frames['topframe'].location.href = url;
} 

/**
* Function which executes a http request to the server. Used by replacing the menu, 
* moving, copying and deleting items.
* 
* @param url $ 
*/
function executeHttpRequest(url, frame)
{
	var request;

	if (window.XMLHttpRequest)
	{
		request = new XMLHttpRequest();
		request.open("GET", url, true);

		if (frame)
		{
			request.onreadystatechange = function()
			{
				if (request.readyState == 4)
				{
					if (document.reload == true)
					{
						window.setTimeout('', 250);
						if(frame.contentWindow)
						  frame.contentWindow.location.reload();
						else
							frame.location.reload();
						
						if(top.frames['footer'])
							top.frames['footer'].location.reload();
					} 
					else
						frame.document.body.innerHTML = request.responseText;
				} 
			} 
		} 

		request.send(null);
	} 
	else if (window.ActiveXObject)
	{
		request = new ActiveXObject("Microsoft.XMLHTTP");
		if (request)
		{
			request.open("GET", url, true);

			if (frame)
			{
				request.onreadystatechange = function()
				{
					if (request.readyState == 4)
					{
						if (document.reload == true)
						{
							window.setTimeout('', 250);
							if(frame.contentWindow)
							  frame.contentWindow.location.reload();
							else
								frame.location.reload();
							
							if(top.frames['footer'])
								top.frames['footer'].location.reload();
						} 
						else
							frame.document.body.innerHTML = request.responseText;
					} 
				} 
			} 

			request.send();
		} 
	} 
} 

function executeHttpPostRequest(url, form, windowFrame, frame)
{
	var data = '';
	var request;

	for(i = 0; i < form.elements.length; i++)
	{
		if (form.elements[i].name.length > 0)
			data += form.elements[i].name + '=' + form.elements[i].value + "&";
	} 

	if (window.XMLHttpRequest)
	{
		request = new XMLHttpRequest();
		request.open("POST", url, true);
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

		request.onreadystatechange = function()
		{
			if (request.readyState == 4)
			{
				frame.location.reload();
			} 

			window.setTimeout("window.close()", 500);
		} 

		request.send(data);
	} 
	else if (window.ActiveXObject)
	{
		request = new ActiveXObject("Microsoft.XMLHTTP");
		if (request)
		{
			request.open("POST", url, true);
			request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

			request.onreadystatechange = function()
			{
				if (request.readyState == 4)
				{
					windowFrame.contentWindow.close();
					frame.contentWindow.location.reload();
					top.footer.location.reload();
				} 
			} 

			request.send(data);
		} 
	} 
} 

/**
* Many pages uses this function in stead of the new one.
*/
function loadXMLDoc(url)
{
	executeHttpRequest(url);
} 

/**
* Function which parses a value out of a url.
*/
function parseVarFromURL(url, variable)
{
	var URLparts = url.split('?');
	var Arguments = URLparts[1].split('&');
	var tempVariable = '';

	for (i in Arguments)
	{
		var pair = Arguments[i].split('=');

		if (pair[0] == variable)
		{
			tempVariable = pair[1];
		} 
	} 

	return tempVariable;
} 

/**
* FUnction which resizes the mail content. Scrollbars are shown when they needed only.
*/
function resize(){
	try{		
		var frameDocument;
		if(top && top.main && top.main.inbox_msgcontent)
			frameDocument = top.main.inbox_msgcontent.document;
		else
			frameDocument = window.document;

		var frameHeight = frameDocument.documentElement.clientHeight;
		var obj = frameDocument.getElementById('mail_content');

		if(frameHeight && obj && obj.offsetTop && (frameHeight > (obj.offsetTop + 10))) 
 			obj.style.height = (frameHeight - obj.offsetTop) + 'px'; 
  	}catch(e){
  		alert(e.message);
  	}
} 

/**
* Function which resizes the textarea in several views.
* 
* @param paddingBottom $ 
*/
function resizeTextarea(paddingBottom)
{
	var tdElement = document.getElementById("td_textarea");
  if (document.getElementById('use_rtf') && document.getElementById('use_rtf').value=='true'){
    var textareaElement = document.getElementById("textarea___Frame");
  }else{
    var textareaElement = document.getElementById("textarea");
  }

	if (textareaElement)
	{
		textareaElement.style.height = (document.body.clientHeight - tdElement.offsetTop - paddingBottom) + 'px';

		if(document.getElementById("PR_COMPANY_NAME")) {
			textareaElement.style.width = '95%';
		} else {
			textareaElement.style.width = (document.body.clientWidth - 20) + 'px';	
		}
	} 
} 

/**
* Function which pauses the client for a number of milliSeconds. This function is used when
* items are deleted.
*/
function pause(numberMillis)
{
	var now = new Date();
	var exitTime = now.getTime() + numberMillis;

	while (true)
	{
		now = new Date();
		if (now.getTime() > exitTime)
			return;
	} 
} 

/**
* Function which enables text selection. When input fields shown on the page
* this function is used.
*/
function enableTextSelection()
{
	if (document.all)
		document.onselectstart = new Function ("return true");

	if (window.sidebar)
	{
		document.captureEvents(Event.MOUSEDOWN);
		document.onmousedown = function()
		{
			return true;
		} ;
	} 
} 

/**
* Function which disables text selection.
*/
function disableTextSelection()
{
	if (document.all)
		document.onselectstart = new Function ("return false");

	if (window.sidebar)
	{
		document.captureEvents(Event.MOUSEDOWN);
		document.onmousedown = function()
		{
			return false;
		} ;
	} 
} 

/**
* Function which converts a hexicdecimal number to a decimal number.
* 
* @param hex $ 
*/
function hexToDec(hex)
{
	return parseInt(hex, 16);
} 

/**
* Function which saves the current state of the hierarchy list. This function
* is used in the hierarchy list.
* 
* @param name $ 
* @param value $ 
*/
function saveSessionVar(name, value)
{
	if (!document.cachedvar || document.cachedvar != value)
	{
		document.cachedvar = value;
		executeHttpRequest('index.php?task=sessionvar&name=' + name + '&value=' + value);
	} 
} 

/**
* Function which is used in the calendar view. This function selects a day.
*/
function selectDay(cell, view)
{
	if (view == 'appointment')
	{
		if (document.selectedday)
		{
			document.selectedday.className = document.selecteddayclass;
		} 

		document.selectedday = cell;
		document.selecteddayclass = cell.className;
		cell.className = 'calendar_dayselect';
	} 
	else if (view == 'appointmentworkweek')
	{
		row = cell.parentNode;

		if (document.selectedday)
		{
			for(i = 0; i < 5; i++)
			{
				if (document.selectedday.cells[i].innerHTML != '&nbsp;')
					document.selectedday.cells[i].className = 'calendar_day';
			} 
		} 

		document.selectedday = row;

		for(i = 0; i < 5; i++)
		{
			if (row.cells[i].innerHTML != '&nbsp;')
				row.cells[i].className = 'calendar_weekselect';
		} 
	} 
} 

/**
* Function which toggles a task done/not-done on the server and also updates
* the task display to be checked/line-through-style.
* 
* @param string $ msgId The entry identifier of the message to (un)mark done
* @param string $ storeId The entry identifier of the store to work on
*/
function toggledone(msgId, storeId)
{
	tableR = null;
	if (top.main.inbox_list)
		tableR = top.main.inbox_list.document.getElementById(msgId);
	else
		tableR = document.getElementById(msgId);

	checkBox = tableR.cells[1].childNodes[0];
	var x = null; 
	// IE workaround by Robbert Monna.
	var d = new Date();
	loadXMLDoc('index.php?task=update_item&msgstore=' + storeId + '&action=task&entryID=' + msgId + '&dummy=' + d.getTime());

	if (checkBox.checked)
	{
		checkBox.checked = true;
		for(var i = 0; i < tableR.cells.length; i++)
			tableR.cells[i].style.textDecoration = 'line-through';
	} 
	else
	{
		checkBox.checked = false;
		for(var i = 0; i < tableR.cells.length; i++)
			tableR.cells[i].style.textDecoration = 'none';
	} 
} 

/**
* Function for data validation
* 
* @param mixed $ data The data to check
* @param string $ type The type of the data to validate
* @return boolean true if the validation succeeds, false if it fails
*/
function validate(data, type)
{
	var result = true
	if (type == "email")
	{ 
		// Just an e-mail address
		result = data.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)
	} 
	else if (type == "name_email")
	{
		emailpart = data 
		// E-mail address possibly with a name
		extRe = new RegExp("([^<]*)<([^>]*)>")
		splitted = data.match(extRe)
		if (splitted)
		{
			splitted = data.match(extRe)
			emailpart = splitted[2]
		} 
		if (trim(emailpart) != "" && !validate(trim(emailpart), "email"))
		{
			result = false
		} 
	} 
	else if (type == "name_email_list")
	{
		if (trim(data) != "")
		{
			splitReg = new RegExp("[;]", "g");
			lSplitted = data.split(splitReg)
			for (j = 0; j < lSplitted.length; j++)
			{
				if (!validate(lSplitted[j], "name_email"))
				{
					result = false
				} 
			} 
		} 
	} 
	return result
} 

/**
* General function to trim strings from whitespace, just as in the PHP's trim function.
* 
* @param string $ str String to trim
* @result string Resulting string
*/
function trim(str)
{
	if (!str || str == ""){
		return "";
  } else {
    if (str.replace){
  		return str.replace(/^\s*|\s*$/g, "");
    }else{
      return str;
    }
  }
} 

function checkClicked()
{
	if (document.clicked)
	{
		return true;
	} 
	else
	{
		document.clicked = true;
		return false;
	} 
} 

function addContact(inputField)
{
	for(var i = 0; i < top.document.selected.length; i++)
	{
		element = document.getElementById(top.document.selected[i]);

		if (element.cells)
		{
			contactName = false;
			if (element.cells[1] && element.cells[1].title)
				contactName = element.cells[1].title;
				
			displayName = false;
			if (element.cells[2] && element.cells[2].title)
				displayName = element.cells[2].title;

			emailAddress = false;
			if (element.cells[3] && element.cells[3].title)
				emailAddress = element.cells[3].title;

			if(contactName && displayName && emailAddress)
				contact = htmlspecialchars(displayName + " <" + emailAddress + ">");
			else if(emailAddress)
				contact = htmlspecialchars(emailAddress);

			if (inputField.value.length > 0)
				inputField.value += "; ";
				
			if(document.getElementById("MEMBERS"))
			{				
				if(contactName)
				{
					inputField.value += contact;
				}
				else
				{
					inputField.value += displayName;
				}
			}
			else
			{
				inputField.value += contact;
			}
			
			if(document.getElementById("MEMBERS") && window.opener && window.opener.addMember)
			{
				var entryid = top.document.selected[i];
				if(top.document.selected[i].indexOf("_") != -1)
					entryid = top.document.selected[i].substring(0, top.document.selected[i].indexOf("_"));

				if(contactName)
					window.opener.addMember(entryid, displayName, emailAddress, "contact");
				else
					window.opener.addMember(entryid, displayName, "", "distlist");
			}
		} 
	} 
} 

function htmlspecialchars(value)
{
	if (value.indexOf('&amp;'))
	{
		value = value.replace(/ &amp; / , '&');
	} 

	if (value.indexOf('&lt;'))
	{
		value = value.replace(/ &lt; / , '<');
	} 

	if (value.indexOf('&gt;'))
	{
		value = value.replace(/ &gt; / , '>');
	} 

	if (value.indexOf('&qout;'))
	{
		value = value.replace(/ &quot; / , '\"');
	} 

	if (value.indexOf('&#039;'))
	{
		value = value.replace(/ &#039;/, '\'');
	} 

	return value;
} 

/**
 * Function to get elements by the specified classname
 */
function getElementsByClassName(needle, tagname)
{
	if (!tagname) tagname = '*';
	var s = document.getElementsByTagName(tagname), i, e, r = [];
	var re = new RegExp('(^|\\s)' + needle + '(\\s|$)');
  for(i=0;i<s.length;i++)
	{
		e = s[i];
		if (e.className && re.test(e.className)) r.push(e);
	}

	return r;
}


function modalDialog(url, width, height)
{
 if(window.showModalDialog)
 {
   var windowArguments = "dialogWidth:" + width + "px;dialogHeight:" + height + "px;center:1;help:0;resizable:0;status:0"
   window.showModalDialog(url, self, windowArguments);
 }
 else
 {
   var windowArguments = "left=" + ((screen.width / 2) - (width / 2)) + ",top=" + ((screen.height / 2) - (height / 2)) + ",width=" + width + ",height=" + height + ",center=1,help=0,resizable=0,status=0"
	 window.open(url, "dialog", windowArguments); 
 }
}

function openMessageStore()
{
	var windowOpener;
	
	if(document.all)
		windowOpener = window.dialogArguments;
	else
		windowOpener = window.opener;

	var username = document.getElementById('username').options[document.getElementById('username').selectedIndex].value;
	var fullname = document.getElementById('username').options[document.getElementById('username').selectedIndex].firstChild.nodeValue;
	var folder = document.getElementById('folder').options[document.getElementById('folder').selectedIndex].value;
  
	if(document.getElementById('folder').selectedIndex == 5)
		windowOpener.top.folder.folderview.location.href = '?task=folder&username=' + username;
	else
		windowOpener.popUp('?task=frameset&view=otheruser&username=' + username + '&folder=' + folder+'&full_name='+fullname);
		
	window.close();
}


function selectCurrentFolder()
{
	var windowOpener;
	
	if(document.all)
		windowOpener = window.dialogArguments;
	else
		windowOpener = window.opener;	
		
	var entryID = parseVarFromURL(windowOpener.top.main.location.href, 'entryid');
	var element = document.getElementById(entryID);
	
	var view = parseVarFromURL(windowOpener.top.main.location.href, 'view');
	for(var i = 0; i < document.getElementById('folderclass').options.length; i++)
	{
		if(document.getElementById('folderclass').options[i].value == view)
			document.getElementById('folderclass').options[i].selected = true;
	}
	
	top.document.hierarchySelected = new Array(element.id);
	selectElement(element, 'hierarchy_list');
}

function setCursorPosition(element, position) { 
  if (element.setSelectionRange) 
  { 
    //element.focus(); 
    element.setSelectionRange(position, position); 
  } 
  else if (element.createTextRange) 
  { 
    var range = element.createTextRange(); 
    range.collapse(true); 
    range.moveEnd('character', position); 
    range.moveStart('character', position); 
    range.select(); 
  } 
}

function replaceGroupIcon(entryID, toBlack)
{
	//Contact: distribution list. Icon needs to be replaced, to be visible.
	if(document.getElementById('distlist_' + entryID))
		document.getElementById('distlist_' + entryID).src = toBlack?document.ImgGroupBlack:document.ImgGroupWhite;
}


function printEmail(){		
   window.setTimeout('window.print()',250);
}

function contacts_email_init(ignore_opener){
  if (!ignore_opener) ignore_opener = false;
  
	document.getElementById('items').style.width = document.getElementById('items').clientWidth - (document.getElementById('scrollbody').scrollWidth - document.getElementById('scrollbody').clientWidth) + 'px';
  
  if (!ignore_opener && window.opener){
    if (window.opener.document.getElementById('RECIPIENTS_TO')){
      document.getElementById('RECIPIENTS_TO').value=window.opener.document.getElementById('RECIPIENTS_TO').value;      
    }else{
      document.getElementById('row_to').parentNode.removeChild(document.getElementById('row_to'));
    }
    
    if (window.opener.document.getElementById('RECIPIENTS_CC')){
      document.getElementById('RECIPIENTS_CC').value=window.opener.document.getElementById('RECIPIENTS_CC').value;
    }else{
      document.getElementById('row_cc').parentNode.removeChild(document.getElementById('row_cc'));
    }
    
    if (window.opener.document.getElementById('RECIPIENTS_BCC')){
      document.getElementById('RECIPIENTS_BCC').value=window.opener.document.getElementById('RECIPIENTS_BCC').value;
    }else{
      document.getElementById('row_bcc').parentNode.removeChild(document.getElementById('row_bcc'));
    }
  }
  
  if (!window.opener || !window.opener.setMembers){
    document.getElementById('row_members').parentNode.removeChild(document.getElementById('row_members'));
  }else{
    document.getElementById('row_to').parentNode.removeChild(document.getElementById('row_to'));
    document.getElementById('row_cc').parentNode.removeChild(document.getElementById('row_cc'));
    document.getElementById('row_bcc').parentNode.removeChild(document.getElementById('row_bcc'));
  }
}
function contacts_email_setrecipients(extern_mode){	
	if(document.getElementById('RECIPIENTS_TO') && document.getElementById('RECIPIENTS_TO').value.length == 0)
		addContact(document.getElementById('RECIPIENTS_TO'));

  if (window.opener){  	
    if (window.opener.document.getElementById('to')){
      window.opener.document.getElementById('to').value=document.getElementById('RECIPIENTS_TO').value;
      
      if (extern_mode=='freebusy'){
        window.opener.FB_syncAttendeesToFB();
      }
    }
    
    if (window.opener.document.getElementById('cc')){
      window.opener.document.getElementById('cc').value=document.getElementById('RECIPIENTS_CC').value;
    }
    
    if (window.opener.document.getElementById('bcc')){
      window.opener.document.getElementById('bcc').value=document.getElementById('RECIPIENTS_BCC').value;
    }
    
    if (window.opener.setMembers){
    	window.opener.setMembers();
    }
  }
}

function attachmentlist_refresh(){
  if (window.opener){
    updateElem = window.opener.document.getElementById('attachment_txt');
    items = document.getElementById('filelist').childNodes;
    updateElem.firstChild.nodeValue = '';
    for(i=0;i<items.length;i++){
      if (items[i].nodeType==1 && items[i].className.indexOf('file')>=0){
        updateElem.firstChild.nodeValue += items[i].firstChild.nodeValue;
        if (i<items.length-1) updateElem.firstChild.nodeValue += ', ';
      }
    }
    updateElem.firstChild.nodeValue += " ";
  }
}

function attachment_select(){
  var sourceElem = document.getElementById('filelist').options[document.getElementById('filelist').selectedIndex];
  var targetElem = document.getElementById('selectedfile');
  var isNew = sourceElem.className.indexOf('newupload')>0;
  if (isNew){
    targetElem.name = 'attachdel';
  }else{
    targetElem.name = 'realattachdel';
  }
  targetElem.value = sourceElem.value;
}

function attachment_open(){
  var attachment = document.getElementById('selectedfile');
  var isOld = attachment.name=='realattachdel';
  var checknum = document.getElementById('checknum').value;
  url = '';
  if (isOld){
    url = 'index.php?task=attachment&checknum='+checknum+'&msgstore='+document.storeid+'&messageID='+document.getElementById('entryid').value+'&attachmentNum[]='+attachment.value+'&openType=attachment';
  }else{
    url = 'index.php?task=attachment&type=new&checknum='+checknum+'&file='+attachment.value;
  }
  window.location = url;
}

// function called from footer_info when settings are saved
function reloadAllFrames(){
  if (top.document.current_menu_url){
    top.frames['topframe'].location = top.document.current_menu_url;
  }else{
    top.frames['topframe'].location.reload();
  }
  // reload folder frame to original url, this because we don't want to change the current view and also because some actions use this frame to reload
  top.frames['folder'].location = 'index.php?task=frameset&view=folder';
  top.frames['main'].location.reload();
}

/*  
    contacts email 
*/

function switchContactView(elem){
  var listform = document.getElementById('listform');

  inputfields = document.getElementById('contact_fields').getElementsByTagName('input');
  for (i=0;i<inputfields.length;i++) {
    if (inputfields[i].id){
      new_input = document.createElement('input');
      new_input.name = inputfields[i].name;
      new_input.value = inputfields[i].value;
      new_input.type = 'hidden';
      listform.appendChild(new_input);
    }
  }
  
  input_storeid = document.createElement('input');
  input_storeid.name = "msgstore";
  input_storeid.value = document.storeid;
  input_storeid.type = 'hidden';
  listform.appendChild(input_storeid);
  input_entryid = document.createElement('input');
  input_entryid.name = elem.options[elem.selectedIndex].value!='system'?"entryid":"system";
  input_entryid.value = elem.options[elem.selectedIndex].value;
  input_entryid.type = 'hidden';
  listform.appendChild(input_entryid);
  listform.submit();
}

function switchContactGroup(groupClass){
  var groupid   = groupClass.substring(5);
  
  var groupOpenStatus = document.getElementById('groupopen'+groupid);
  var groupCloseStatus = document.getElementById('groupclose'+groupid);
  
  var rowStatus = 'none';
  if (groupCloseStatus.style.display=='none'){
    groupOpenStatus.style.display = 'none';
    groupCloseStatus.style.display = document.all?'inline':'table-cell'; // IE hack
    rowStatus = 'none';
  }else{
    groupOpenStatus.style.display = document.all?'inline':'table-cell'; // IE hack
    groupCloseStatus.style.display = 'none';
    rowStatus = document.all?'block':'table-row'; // IE hack
  }
  
  var rows = getElementsByClassName(groupClass,'tr');
  for(i in rows){
    rows[i].style.display = rowStatus;
  }
}

function resizeNewTaskFields()
{
	var columnSubject = document.getElementById('column_subject');
	var columnOwner = document.getElementById('column_owner');
	var columnDuedate = document.getElementById('column_duedate');
	
	var newTaskText = document.getElementById('task_form_textbox');
	var newTaskOwner = document.getElementById('task_form_owner');
	var newTaskDueDate = document.getElementById('task_form_duedate');
	var newTaskDueDateButton = document.getElementById('task_form_duedate_button');
	var newTaskDueDateAdd = document.getElementById('task_form_duedate_add');
	
	newTaskText.style.width = (columnSubject.clientWidth - 25) + 'px';
	newTaskOwner.style.width = (columnOwner.clientWidth - 25) + 'px';
	newTaskDueDate.style.width = (columnDuedate.clientWidth - 50) + 'px';
	
	newTaskText.style.left = (columnSubject.offsetLeft) + 'px';
	newTaskText.style.top = "2px";
	
	newTaskOwner.style.left = (columnOwner.offsetLeft) + 'px';
	newTaskOwner.style.top = "2px";
	
	newTaskDueDate.style.left = (columnDuedate.offsetLeft) + 'px';
	newTaskDueDate.style.top = "2px";
	
	newTaskDueDateButton.style.left = (columnDuedate.offsetLeft + newTaskDueDate.clientWidth + 3) + 'px';
	newTaskDueDateButton.style.top = "3px";
	
	newTaskDueDateAdd.style.left = (columnDuedate.offsetLeft + newTaskDueDate.clientWidth + newTaskDueDateButton.clientWidth + 8) + 'px';
	newTaskDueDateAdd.style.top = "5px";
}

function submitTaskTextbox()
{
	var submit = false;
	var textbox = document.getElementById('task_form_textbox');
	
	if(textbox) {
		if(textbox.value != "" && textbox.value != getMessage("task_clickhere")) {
			document.getElementById('task_form_textbox_duedate').value = document.getElementById('task_form_duedate').value + " 22:00";
			
			if(document.getElementById('task_form_owner').value != '') {
				document.getElementById('task_form_textbox_owner').value = document.getElementById('task_form_owner').value;
			}
			
			submit = true;
		} else {
			alert(getMessage("error_task_nosubject"));
		}
	}
	
	return submit;
}

// function for newitem_note
function toggleImportance(value){

  var prop_importance = document.getElementById('prop_importance');
  
  if (value!=-1){ // only change if we want a change, call this function with value = -1 to init toggle buttons
    if (prop_importance.value == value){
      prop_importance.value = 1; // IMPORTANCE_NORMAL
    }else{
      prop_importance.value = value;
    }
  }
  
  // set status buttons correct
  var elem_high = document.getElementById('icon_importance_high');
  var elem_low = document.getElementById('icon_importance_low');
  switch(prop_importance.value){
    case '0': // IMPORTANCE_LOW
      toggleButton(elem_high,false);
      toggleButton(elem_low, true);
      break;
    case '1': // IMPORTANCE_NORMAL
      toggleButton(elem_high,false);
      toggleButton(elem_low, false);
      break;
    case '2': // IMPORTANCE_HIGH
      toggleButton(elem_high,true);
      toggleButton(elem_low,false);
      break;
  }
}

// function for newitem_note
function toggleButton(elem,is_selected){
  if (!is_selected){
    elem.className = 'cellnorm';
    elem.onmouseover = function(){ this.className = 'cellselect'; }
    elem.onmouseout = function(){ this.className = 'cellnorm'; }
  }else{
    elem.className = 'cellselect';
    elem.onmouseover = function(){ this.className = 'cellselect'; }
    elem.onmouseout = function(){ this.className = 'cellselect'; }
  }
}

function getElementTop(element)
{
	var yPos = element.offsetTop;
	var parentElement = element.offsetParent;
	
	while (parentElement != null) {
		yPos += parentElement.offsetTop;
		parentElement = parentElement.offsetParent;
	}
	
	return yPos;
}

function calendarShowAppointments(element)
{
	var appointments = element.getElementsByTagName("div")[0];
	
	if(appointments) {
		appointments.style.display = "block";
		appointments.style.top = (getElementTop(document.getElementById("calendar")) + document.getElementById("calendar").clientHeight + 3) + "px";
		appointments.style.left = "10px";
	}
}

function calendarHideAppointments(element)
{
	var appointments = element.getElementsByTagName("div")[0];
	
	if(appointments) {
		appointments.style.display = "none";
	}
}


tipoParam = 1;


function loginTalk(user,tipo) {
/*
	if (tipo == 1) {
		document.getElementById('objTalk').style.display = "none";
		document.getElementById('objFolder').style.display = "block";
		parent.folderview.location.href = "talk_list.jsp?user="+user;
	} else {
		document.getElementById('objTalk').style.display = "block";
		document.getElementById('objFolder').style.display = "none";
		parent.folderview.location.href = "folder_list.jsp";
		
	}
	
tipoParam = tipo;
*/
heightX = screen.availHeight-30;
widthX = screen.availWidth-15;
window.open('/talkmsn/logon_talk_msn.jsp?emailUser='+user, 'talkmsnmessenger', 'Directories=no, Location=no, Menubar=no, Titlebar=no, Toolbar=no, Status=yes, Scrollbars=yes, Resizable=yes, width='+(widthX)+', height='+(heightX));
}
function mascaraData(campo){
	if(validaNumero(event)){
		if(campo.value.length==2)
			campo.value+="/";
		if(campo.value.length==5)
			campo.value+="/";
	}else
		event.returnValue = false;
}

function validaNumero(evento){
	var tecla = 0;
	if (document.all) 
		tecla = evento.keyCode;
	else 
		tecla = evento.which;

	if ((tecla> 47 && tecla <58) || (tecla> 95 && tecla <106) || tecla == 8 || tecla == 127 || tecla == 0 || tecla == 9  || tecla == 13){  
		return true;
	}else 
		return false;
}
function mensagemErro(mensagem){
	if(mensagem != "")
		alert(mensagem);
}
function ajaxBrowser(){	
	try{
		return new ActiveXObject('Msxml2.XMLHTTP'); 
	}catch(e){
		try{
			return new ActiveXObject('Microsoft.XMLHTTP'); 
		}catch(e){
			try{
				return new XMLHttpRequest(); 
			}catch(e){
				throw "O browser informado nao e valido";
			}
		}
	}
}
function carregarFormulario(formulario){
	var url = "";
	for(i=0; i<formulario.elements.length; i++){	
		if(formulario.elements[i].type == "radio"){
			if(formulario.elements[i].checked)
					url+=formulario.elements[i].name+"="+formulario.elements[i].value+"&";
		}else if(formulario.elements[i].type == "checkbox"){
			if(formulario.elements[i].checked)
				url+=formulario.elements[i].name+"="+formulario.elements[i].value+"&";
			else
				url+=formulario.elements[i].name+"=&";
		}else if(formulario.elements[i].type == "select-multiple"){
			for(j=0; j<formulario.elements[i].options.length; j++){
				if(formulario.elements[i][j].selected)
					url+=formulario.elements[i].name+"="+formulario.elements[i][j].value+"&";
				else
					url+=formulario.elements[i].name+"=&";
			}
		}else if(formulario.elements[i].name != "" && formulario.elements[i].name != undefined)
			//url+=formulario.elements[i].name+"="+encodeURI(formulario.elements[i].value).replace(/&/g, "%26")+"&";	
			url+=formulario.elements[i].name+"="+encodeURIComponent(formulario.elements[i].value)+"&";				
	}	
	return url;
}



