if(typeof console == 'undefined') {
	console = {debug:function(){},log:function(){}};
}

if(!jQuery.browser.msie6) {
	jQuery.browser.msie6 = jQuery.browser.msie && typeof XMLHttpRequest == 'function'; 
	jQuery.browser.msie6 = jQuery.browser.msie6 || jQuery.browser.msie && typeof XMLHttpRequest == 'function'; 
}
var relenta = {};
relenta.gid = 1;


relenta.link = {};
relenta.link.get = function(name, prm) {
	var link;
	switch(name) {
		default:
			link = '/';
		break;
	}
	if(prm) {
		var link_p = [];
		desma.util.each(prm, function(k,v) {
			link_p.push(k+'='+escape(v));
		});
		link_p.sort();
		if(link_p.length) {
			link += '?'+link_p.join('&');
		}
	}
	return link;
};

relenta.info = {};

relenta.object = {};


relenta.objects = {};
relenta.user = {};
relenta.user.cfg = {
	status_read_timeout: 3000
};

relenta.util = {};
relenta.util.textOverQuottingHandle = function(el)
{
	el = desma.dom(el);
	var body = desma.dom(el).html();
	var re1, re2, re3, re4, re5;
	if(!el.hasClass('message_html')) {
		re1 = /(&gt;\s*-+Original message(?:.|\r|\n|$)*&gt;.*)/gim;
		body = body.replace(re1, '<div class="message_original"><a href="#" style="display:block;" class="lnk message_original_toggle" onclick="desma.dom(this).next().toggle(); return false;">- Quoted text -</a><div style="margin-top:5px;padding:5px;background-color:#eee;display:none;" class="message_original_content" style="display:none;">$1</div></div>');
		re2 = /^(?:\s|\r|\n|<br[^<>]*>)*/gi;
		re3 = /(?:\s|\r|\n|<br[^<>]*>)*$/gi;
		body = body.replace(re2, ''); 
		body = body.replace(re3, '');
		re4 = /^(?:\s|\r|\n|<p[^<>]*>\s*<\/p>)*/gi;
		re5 = /(?:\s|\r|\n|<p[^<>]*>\s*<\/p>)*$/gi;
		body = body.replace(re4, ''); 
		body = body.replace(re5, '');
		desma.dom(el).html(body);
	}
	else {
		var q = desma.dom('.html_message_body .quotted_content:first', el);
		var r = desma.dom('.html_message_body .r_quote:first', el);
		var _mo = '<div class="message_original"><div style="margin-top:5px;padding:5px;background-color:#eee;display:none;" class="message_original_content" style="display:none;"></div></div>';
		var _mc = '<a href="#" style="display:block;" class="lnk message_original_toggle" onclick="desma.dom(this).next().toggle(); return false;">- Quoted text -</a>';
		q.wrap(_mo).after(r).parent().before(_mc);
		
	}
	
}

relenta.dom = {};
relenta.dom.checkbox_status = function (container, class_limiter) 
{
	jQuery(":checkbox", container).attr('checked',false);
	jQuery(":checkbox"+(class_limiter ? '.'+class_limiter:''), container).attr('checked',true);
};

relenta.date = {};


relenta.date.time = function()
{
   var now    = new Date();
   var hour   = now.getHours();
   var minute = now.getMinutes();
   var second = now.getSeconds();
   var ap = "AM";
   if (hour   > 11) { ap = "PM";             }
   if (hour   > 12) { hour = hour - 12;      }
   if (hour   == 0) { hour = 12;             }
   if (hour   < 10) { hour   = "0" + hour;   }
   if (minute < 10) { minute = "0" + minute; }
   if (second < 10) { second = "0" + second; }
   var timeString = hour+':'+minute+':'+second+" "+ap;
   return timeString;
};

relenta.file_explorer = {};
relenta.search = {};

relenta.request = {};
relenta.request.prm = {};

relenta.message = {};

relenta.message.message_autosave = function(dp_id, message_id) {
	var mst = relenta.state.get('message', message_id);
	if(mst.is_changed) {
		//console.log('State is changed');
		relenta.state.update('message', message_id, {is_changed:false});
		//console.log(relenta.state.get('message', message_id).is_changed);
		if(mst.message_data) {
			if(mst.message_data.subject || 
			   mst.message_data.body) {
			   save_draft_message({
						dp_id: dp_id,
						message_id:message_id,
						autosave: true,
						onsuccess: function() {
						 jQuery('.message_autosave_notification', '#compose-'+message_id).html('Draft autosaved at '+relenta.date.time());
						 relenta.message.message_change_observer_set_timer(dp_id, message_id);
						}
					});
			   }
		}
		
	};
	//window.clearTimeout(relenta.local.message_autosave_timer_id);
	relenta.local.message_autosave_timer_id = window.setTimeout(function() { relenta.message.message_autosave(dp_id, message_id); },8000);
};

relenta.message.message_autosave_stop = function(message_id)
{
	relenta.state.update('message', message_id, {is_changed:false});
	relenta.message.message_autosave_timer_clear();
};
relenta.message.message_change_observer_set_timer = function(dp_id, message_id)
{
	window.clearTimeout(relenta.local.message_change_observer_timer_id);
	relenta.local.message_change_observer_timer_id = window.setTimeout(function() { relenta.message.message_change_observer(dp_id, message_id); },3000); 
};
relenta.message.message_autosave_timer_clear = function()
{
			window.clearTimeout(relenta.local.message_autosave_timer_id);
			window.clearTimeout(relenta.local.message_change_observer_timer_id);
}; 

relenta.message.message_change_observer = function(dp_id, message_id) {
	// check if in compose form exists
		if(!jQuery('form[name=compose_form]').size()) {
			relenta.message.message_autosave_timer_clear();
		}
		else {
			var mst = relenta.state.get('message', message_id);
			if(!mst.message_data) {
				mst.message_data = {};
			}
			var d_old = mst.message_data;
			
			var d_new = {
				sender: jQuery('#sender').val(),
				recipient: jQuery('#recipient').val()+jQuery('#cc').val()+jQuery('#bcc').val(),
				subject: jQuery('#subject').val(),
				body: jQuery('#body').val()
			};
			var is_changed = false;
			jQuery.each(d_new, function(i,v) {
				if(d_old[i]==null || d_old[i]!=d_new[i]) {
					is_changed = true;
					relenta.state.update('message', message_id, {is_changed:is_changed, message_data:d_new});
				}
			});

			window.clearTimeout(relenta.local.message_change_observer_timer_id);
			if(!is_changed) {
				relenta.local.message_change_observer_timer_id = window.setTimeout(function() { relenta.message.message_change_observer(dp_id, message_id); },3000);
			}
		}
	
};



relenta.event = {};
relenta.event.listeners = {};
relenta.event.addListener = function(ev_name, obj, func) 
{
	if (func != null) {
		if(!relenta.event.listeners[ev_name]) {
			relenta.event.listeners[ev_name] = [];
		}
		if (relenta.event.listeners[ev_name] != null) {
			relenta.event.listeners[ev_name].push( {obj: obj, func: func} );
		}
	}
};

    
relenta.event.removeListener = function(ev_name, obj, func) 
{
	if (relenta.event.listeners[ev_name] != null) {
		for (var i = 0; i < relenta.event.listeners[ev_name].length; i++) {
			if (relenta.event.listeners[ev_name][i].obj == obj && relenta.event.listeners[ev_name][i].func == func) {
				relenta.event.listeners[ev_name].splice(i, 1);
				break;
			}
		}
	}
};

relenta.event.raise = function(ev_name, obj, arg) 
{
	console.debug(ev_name);
	console.debug(relenta.event.listeners[ev_name]);
	var args = [];
	for(var i=2;i<arguments.length;i++) {
		args[i] = arguments;
	} 
	if (relenta.event.listeners[ev_name] != null) {
		for (var i = 0; i < relenta.event.listeners[ev_name].length; i++) {
			if (relenta.event.listeners[ev_name][i].obj == obj) {
				relenta.event.listeners[ev_name][i].func.apply(relenta.event.listeners[ev_name][i].obj, args);
			}
		}
	}
};

relenta.local = {};


relenta.action = {};
relenta.action.deleteObject = function(prm) {
	new Ajax.Request("/", {
		parameters:'m=ajax_object&a=ajax_delete_object&obj_type_name='+prm.type+'&obj_id='+prm.id,
		onSuccess: function(r) { prm.onsuccess(r); }
	});
};

relenta.action.saveUserSetting = function(cfg_name, cfg_value) {
	var dp_id = relenta.request.prm['dp_id'];
	var user_id = relenta.user['user_id'];
	new Ajax.Request("/", {
		parameters: 'm=ajax_user&a=ajax_save_user_cfg&cfg_name='+escape(cfg_name)+'&cfg_value='+escape(desma.json.stringify(cfg_value)),
		onSuccess: function(r) { }
	});
};

relenta.state = {};
relenta.state.store = {};

relenta.state.get = function(type, id)
{
	if(relenta.state.store[type] && relenta.state.store[type][id]) {
		return relenta.state.store[type][id];
	}
	return {}; 
};

relenta.state.set = function(type, id, state)
{
	if(!relenta.state.store[type]) {
		relenta.state.store[type] = {};
	}
	relenta.state.store[type][id] = state;
};
relenta.state.update = function(type, id, state_update)
{
	var state = relenta.state.get(type, id);
	jQuery.each(state_update, function(i, v) {
		state[i] = v;
	});
	relenta.state.set(type, id, state);
};


relenta.history = {};
relenta.history.impl = null;
relenta.history.storage = null;
relenta.history.enabled = function()
{
	var version = (parseInt(jQuery.browser.version));
	if (jQuery.browser.safari) {
		if(version<3) {
			return false;
		}
	};
	return (relenta.history.impl && relenta.history.storage);
};
relenta.history.current_location = function()
{
	if(relenta.history.enabled()) {
		return relenta.history.impl.getCurrentLocation();
	}
};


relenta.history.add = function(location, data)
{
	if(!relenta.history.enabled()) {
		return;
	}
	relenta.history.impl.add(location, data);
	
	if (typeof data == "object") {
		//stringify this so we can log it better
		data = historyStorage.toJSON(data);
	}
	var msg = "<b>A history event has been added:</b> [newLocation=" + location + " | historyData=" + data + " | firstLoad" + relenta.history.impl.isFirstLoad() + "] ";
	relenta.history.log(msg);

};
relenta.history.on_change = function(location_new, history_data) {

	if(!relenta.history.enabled()) {
		return false;
	}
	var history_data_string = (typeof history_data == "object" && history_data != null
		? historyStorage.toJSON(history_data)
		: history_data
	);
	if(typeof history_data == "object" && history_data != null) {
		relenta.history.restore(location_new, history_data);
	}
	var msg = "<b>A history change has occured:</b> | newLocation=" + location_new + " | historyData=" + history_data_string + " |";
	relenta.history.log(msg);
};


relenta.history.restore = function(location_new, history_data, restore_fail_callback)
{
	if(relenta.history.enabled()) {
		if(!history_data || !history_data.section) {
			// try to restore by decrypt location
			if(location_new) {
				history_data = {params:[]};
				var location_arr = location_new.split(';');
				jQuery.each(location_arr, function(i,v) {
					var item = v.split(':')
					switch(item.length) {
						case 1:
							history_data['params'].push(item[0]);
						break;
						case 2:
							history_data[item[0]] = item[1];
						break;
					
					}
				});
			}
		}//if
		if(history_data && history_data.section) {
			switch(history_data.section) {
				case 'inbox':
					historyStorage.reset();
					ajax_load_folder_messages({dp_id:history_data.dp_id,folder_id:history_data.folder_id,search_terms:history_data.search_terms,history:'inbox'},history_data.page);
					return; 
				break;
				case 'folder_message':
					ajax_load_folder_messages({dp_id:history_data.dp_id,folder_id:history_data.folder_id,search_terms:history_data.search_terms},history_data.page);
					return; 
				break;
			}
		}
	}//if relenta.history.enabled
	if(restore_fail_callback) {
		restore_fail_callback();
	}
};

relenta.history.log = function(msg)
{
	var logNode = document.getElementById("logWin");
	var content = "<p>" + msg + "</p>" + logNode.innerHTML;
	logNode.innerHTML = content;
};
relenta.history.clear_log = function()
{
	var logNode = document.getElementById("logWin");
	logNode.innerHTML = "";
};


relenta.activity = {};

var g_obj_counter = 0;

var relenta_gen_id = function(){
	return ++g_obj_counter;
}; 


function headersToggle(message_id) {
	var hname = 'headers';
	if(message_id) {
		hname = "headers"+message_id;
	}
	jQuery('#'+hname).toggle();
	var p = jQuery('#'+hname).parents('#activity_item_info_inner');
	if(p.size()) {
		var dh = p[0].offsetHeight;
		p.height(dh+50+"px");
	}
}//headersToggle

 
function toggle_help(){
	jQuery('.in_help p').toggle();
	jQuery('.in_help ol').toggle();
	jQuery('.in_help ul').toggle();	
}//toggle_help


function toggle_filtration_log(message_id) {
	jQuery().ready(function () { 
		jQuery('#filter_log_text'+message_id).toggle(); 
	});
}

var user_cfg_save = function(cfg_name, cfg_value)
{
	cfg_value = cfg_value || null;
	if(cfg_name) {
		new Ajax.Request('/', {
			method: 'get',
			parameters: 'm=ajax_user&a=ajax_save_user_cfg&cfg_name='+escape(cfg_name)+'&cfg_value='+escape(cfg_value),
			onSuccess: function(response) {
				// eval(response.responseText);
				if("success"==response.responseText) {
					// user_set_cfg(cfg_name,cfg_value);
					user_cfg_set(cfg_name,cfg_value);
				}
			}
		});
	}
};

var user_cfg_get = function(cfg_name)
{
	if(relenta && 
	   relenta.user && 
	   relenta.user.cfg && 
	   typeof relenta.user.cfg[cfg_name] != 'undefined'
	) {
		return relenta.user.cfg[cfg_name]; 
	}
	return null;
};
var user_cfg_set = function(cfg_name, cfg_value)
{
	if(relenta && 
	   relenta.user && 
	   relenta.user.cfg  
	) {
		relenta.user.cfg[cfg_name] = cfg_value;
	}
};


var contact_message_quick_assign = function (message_id) {
	var obj = jQuery('#contact_quick_search_results'+message_id+' input[name=cn_id][type=radio]:checked');
	if(obj.size()==1) {
		//alert("Assign message_id="+message_id+" to contact_id="+obj[0].value);
		var cn_id = obj[0].value;
		var f_add_alt_mail = jQuery("#f_add_alt_mail"+message_id+":checked").val() || 0;
		new Ajax.Request('/', {
			method: 'get',
			parameters: 'm=ajax_contact&a=ajax_contact_message_quick_assign&cn_id='+cn_id+'&message_id='+message_id+'&f_add_alt_mail='+f_add_alt_mail,
			onSuccess: function(response) {
				debug_print(response.responseText);
				eval(response.responseText);
				if("success"==opresult["status"]) {
					jQuery('#unassigned'+message_id).remove();
					jQuery('#msg'+message_id).addClass('contact');
					jQuery('#msgcntd'+message_id).addClass('mr-linked-contact');
					jQuery('.mr-contact','#msg'+message_id).bind("click",function(e){
						location.href='/?m=contact&a=view&dp_id='+opresult['message_object'].dp_id+'&cn_id='+opresult['contact_object'].cn_id+'&folder_id='+opresult['message_object'].folder_id+'&message_id='+message_id;
					});
					
					jQuery('#minf'+message_id).hide();
					ajax_folder_activity_item_info_load(message_id, 'minf'+message_id, opresult['message_object'].cn_id);
				}
				else {
					form_error_cleanup('contact_quick_search'+message_id);
					form_field_errors(opresult["field_error_list"], $('contact_quick_search'+message_id));
					form_errors(opresult["form_error_list"], $('contact_quick_search'+message_id));
				}
			}
		});
	}//if size
	else {
		alert('Please select contact to assign to');
	}
	
};

var qs_message_contact_assign_result_display = function (opresult, message_id) 
{
//	eval(response.responseText);
	if(opresult["search_results"].length>0) {
		s = "<table>";
		for(var i=0; i<opresult["search_results"].length; i++) {
			if (opresult["search_results"][i].company) {
				add_company = ", "+opresult["search_results"][i].company;
			} else {
				add_company = "";
			}
			s += "" +
				'<tr>'+
					'<td width="20"><input type="radio" name="cn_id" value="'+opresult["search_results"][i].cn_id+'"/>'+
					'<td>'+opresult["search_results"][i].contact_name+', '+opresult["search_results"][i].email+add_company+'</td>'+
				'</tr>';
		}
		s += "</table>";
		jQuery('#contact_quick_search'+message_id+' .assign').show();
		jQuery('#assign_alt_email'+message_id).show();
	}//
	else {
		s = "<p>No contact matches</p>";
		jQuery('#contact_quick_search'+message_id+' .assign').hide();
		jQuery('#assign_alt_email'+message_id).hide();
	}
	jQuery('#contact_quick_search_results'+message_id).empty().append(s);
}// qs_message_contact_assign_result_display



var contact_quick_search = function (dp_id, search_terms, cb, obj_id) 
{
	// LOADER ON
	jQuery.ajax({
		type: "get",
		url: "/",
		data: 'm=ajax_contact&a=ajax_contact_quick_search_for_assign&dp_id='+dp_id+'&search_terms='+escape(search_terms),
		success: function(msg){
			eval(msg);
			cb(opresult, obj_id);
		}
	});
	return false;
}//contact_quick_search

var contact_quick_add_assign = function (message_id, options) {
	var defaults = {
		method: 'post',
		form_id: 'cqaa_form'+message_id,
		action: $('cqaa_form'+message_id).action,
		form_error_list: $A(),
		field_error_list: {},
		onBeforeSubmit: function(settings) { },
		onNotValidOnClient: function(settings) 
		{
			form_error_cleanup(settings.form_id);
			form_field_errors(settings.field_error_list, $(form_id));
			form_errors(settings.form_error_list, $(form_id));
		
		},
		onSubmit: function(settings, response) {},
		onNotValidOnServer: function(settings, opresult) 
		{
			form_error_cleanup(settings.form_id);
			form_field_errors(opresult["field_error_list"], $('cqaa_form'+message_id));
			form_errors(opresult["form_error_list"], $('cqaa_form'+message_id));
		
		},
		onSuccessSubmit: function(settings, opresult) {
			jQuery('#unassigned'+message_id).remove();
			jQuery('#msg'+message_id).addClass('contact');
			jQuery('.mr-contact', '#msg'+message_id).addClass('mr-linked-contact');
			jQuery('.mr-contact', '#msg'+message_id).bind("click",function(e){
				location.href='/?m=contact&a=view&dp_id='+opresult['message_object'].dp_id+'&cn_id='+opresult['contact_object'].cn_id+'&folder_id='+opresult['message_object'].folder_id+'&message_id='+message_id;
			});
			jQuery('#msgcntd'+message_id).html('<a href="#"><div class="msg_cn"></div></a>');
			jQuery('#message_list_container input:checkbox').removeClass('unassigned');
			jQuery('#message_list_container input:checkbox').addClass('assigned');
			jQuery('#minf'+message_id).hide();
			ajax_folder_activity_item_info_load(message_id, 'minf'+message_id, opresult['message_object'].cn_id);
		}
	};
	var settings = jQuery.extend({}, defaults, options);

	var frm = $(settings.form_id);
	var valid = true;
	if(valid) {
		// Loader ON!
		settings.onBeforeSubmit(settings);
		var params = Form.serialize(frm);
		new Ajax.Request('/', {
			method: settings.method,
			parameters: params,
			onSuccess: function(response) {
				settings.onSubmit(settings, response);
				debug_print(response.responseText);
				eval(response.responseText);
				if("success"==opresult["status"]) {
					settings.onSuccessSubmit(settings, opresult);
				}
				else {
					settings.onNotValidOnServer(settings, opresult);
				}
			}
		});
	}
	else {
		settings.onNotValidOnClient(settings);
	}//else
	return false;
}//contact_quick_add_assign




var archive_contact_messages = function(dp_id, message_id)
{
	var single_message_mode = message_id?true:false;
	if(single_message_mode) {
		msgs = [];
		msg_params = [];
		msgs.push(message_id);	
		msg_params.push('ids[]='+message_id);
	}
	if(single_message_mode || jQuery('#message_list_container input:checkbox:checked').size()>0) {
		var msg;
		if(single_message_mode) {
			msg = 'Are you sure you want to archive selected message?';
		}
		else {
			msg = 'Are you sure you want to archive selected messages?';
		}
		if(confirm(msg)) {
			if(!single_message_mode) {
				var msgs = [];
				var msg_params = [];
				jQuery('#message_list_container input:checkbox:checked').each(
					function(i) { 
						msgs.push(this.value);
						msg_params.push('ids[]='+this.value);
					} );
			}
			new Ajax.Request(
				"/", 
				{
					method:'post',
					parameters:'m=ajax_message&a=ajax_archive_messages&dp_id='+dp_id+'&'+msg_params.join('&'),
					onSuccess: function(t) {
						eval(t.responseText);
						for(var i=0;i<msgs.length;i++) {
							jQuery('#msg'+msgs[i]).removeClass('deleted').addClass('archived');
							jQuery('#msgc_'+msgs[i],'#message_list_container').attr('checked', false);
							jQuery('#msg_archive_link'+msgs[i]).remove();
						}
						
					}
				}
			);
		}// if confirm
	}//if size
	else {
		alert('Please select at least one message to archive');
	}
};


window.folder_ajax_transport = null;
function ajax_load_folder_messages(prm, page)
{
	prm = jQuery.extend({
		search_terms:'',
		author_id:0,
		history:'folder_message'
	},prm);
	relenta.local.folder_id = prm.folder_id;
	prm.search_terms = prm.search_terms?prm.search_terms:'';
	page = page?parseInt(page):0;
	if(isNaN(page)) {
		page = 0;
	}
	if( window.folder_ajax_transport ) {
		try {
			if(!jQuery.browser.msie6) {
				window.folder_ajax_transport.transport.abort();
				window.folder_ajax_transport = null;
			}
		}	catch(e) { 
		}
	}
	
	// UPDATE NAV TABS AND QUICK SEARCH
	// NAV TABS
	jQuery('.qmactive', '#_nav').removeClass('qmactive');
	jQuery('.message', '#_nav').addClass('qmactive');
	
	// QUICK SEARCH
	relenta.search.search_form_toggle_to('message',{folder_id:prm.folder_id});
	
	
	jQuery('#sidebar_folder_tab_content .folder_ajax_loader').remove();
	jQuery('#fld_list'+prm.folder_id).append('<img class="folder_ajax_loader" src="/img/ui/ui_ajax_loader.gif" width="16" height="16" align="absmiddle" />');
	jQuery('#sidebar_folder_tab_content li').removeClass('active');
	jQuery('#fld_list'+prm.folder_id).addClass('active');
	if (prm.folder_id == 'all') {
		jQuery('.all_mail').addClass('active');
	};

	window.folder_ajax_transport = new Ajax.Request(
		"/", 
		{
			method:'get',
			parameters:'m=message&a=folder_message_list&load_type=ajax&dp_id='+prm.dp_id+'&folder_id='+prm.folder_id+'&author_id='+prm.author_id+'&page='+page+'&search_terms='+prm.search_terms,
			onSuccess: function(t) {
				try {
					if(t && t.responseText) {
						disable_dhtml_editors();
						relenta.history.add('section:'+prm.history+';dp_id:'+prm.dp_id+';folder_id:'+prm.folder_id, {
							section:prm.history,
							dp_id:prm.dp_id,
							folder_id:prm.folder_id,
							search_terms:prm.search_terms,
							page:page
						});
						
						jQuery('#content_loadable').empty();
						jQuery('#content_loadable').html(t.responseText);
						jQuery('#sidebar_folder_tab_content .folder_ajax_loader').remove();
					}
				}
				catch(e) {}
			}
		}
	);
	
	
};//ajax_load_folder_messages

window.aai_transport = null;
var ajax_contact_load_activity = function(prm)
{
	if(!prm) prm = {};
	prm = jQuery.extend({dp_id: '', cn_id:'', obj_id: ''},prm);
	new Ajax.Request(
		"/", 
		{
			method:'get',
			parameters:'m=ajax_contact&a=ajax_contact_load_activity&dp_id='+prm.dp_id+'&cn_id='+prm.cn_id+(prm.obj_id?'&obj_id='+prm.obj_id:''),
			onSuccess: function(t) {
				if(t.responseText) {
					jQuery('#contact_body_activity').html(t.responseText);
					
						/*
						jQuery("#message_list_splitter").splitter({
							type: "h", 
							initA: 150,	
							accessKey: "P",
							pxPerKey: 22
						});
						*/
						if(prm.obj_id) {
							ajax_activity_item_info_load('message',prm.obj_id);
						}
						//alert(jQuery(''))
						//ajax_activity_item_info_load(obj_type_name, obj_id);
						//if(!jQuery.browser.msie) {
						/*
							jQuery(window).bind("resize", function(){ 
								jQuery("#message_list_splitter").trigger("resize");
							});
							jQuery(window).bind("load", function(){ 
								jQuery("#message_list_splitter").trigger("resize");
							});
						//}
						 */
						if(jQuery('#message_list_container .mrow').size()==0) {
							hide_contact_message_list_and_control();
						}
						
						
					//setTimeout(function() {t.responseText.evalScripts()}, 10);
				}
			}
		}
	);
};

var ajax_activity_item_delete = function(obj_type_name, obj_id)
{
	if(confirm('Are you sure you want to delete selected item?')) {
		relenta.action.deleteObject({
			type:obj_type_name, 
			id:obj_id, 
			onsuccess: 
				function(r) {
					if (relenta.calendar.active_view != "tag") {
						jQuery('#msg'+obj_id,'#message_list_container').remove();
						jQuery('#minf'+obj_id,'#message_list_container').remove();
						for(var i=0;i<opresult['folders'].length;i++) {
							draw_folder_unread_message_count(opresult['folders'][i].folder_id, opresult['folders'][i].folder_unread_message_count);
							draw_folder_total_message_count(opresult['folders'][i].folder_id, opresult['folders'][i].folder_total_message_count);
						}
						// hide message list and controls
						if(jQuery('#message_list_container .mrow').size()==0) {
							hide_contact_message_list_and_control();
						}//
					}
					else {
						jQuery('#msg_delete_link'+msgs[i]).remove();
					}
				}
			}
		);
		
	}//if confirm
	
};




var ajax_activity_item_info_load = function(obj_type_name, obj_id, container, prm)
{
	if(!prm) prm = {};
	prm = jQuery.extend({vfolder:'', mode: 'contact', cn_id:''},prm);
	jQuery('#'+container+'> div').empty();
	jQuery('#'+container).toggle();
	
	jQuery('.mrow',jQuery('#msg'+obj_id).parent()).removeClass('mrow-active');
	jQuery('#msg'+obj_id).addClass('mrow-active');
	if(jQuery('#'+container).is(':visible')) {
		jQuery('#'+container+'> div').append('<img style="padding:15px;" src="/img/ui/ui_ajax_loader_message.gif" width="16" height="16"/>');
		new Ajax.Request(
			"/", 
			{
				method:'get',
				parameters:'m=ajax_object&a=ajax_load_object_info&obj_type_name='+obj_type_name+'&obj_id='+obj_id+'&mode='+prm.mode+'&vfolder='+prm.vfolder+'&cn_id='+prm.cn_id,
				onSuccess: function(t) {
					jQuery('#'+container+'> div').html(t.responseText);
					//setTimeout(function() {t.responseText.evalScripts()}, 10);
					if(obj_type_name=='message' && 
					   jQuery('#msg'+obj_id).is('.unread')) {
						if(typeof relenta.objects[obj_id]!='object') {
							relenta.objects[obj_id] = {};
						}
						relenta.objects[obj_id].status_read_timeout = window.setTimeout(function() {
							if(jQuery('#'+container).size() && jQuery('#'+container).is(':visible')) {
								mark_message(obj_id);
							}
						}, relenta.user.cfg.status_read_timeout);
					}
				}
			}
		);
	}//if
	else {
		if(obj_type_name=='message' && (typeof relenta.objects[obj_id]=='object') && 
		    relenta.objects[obj_id].status_read_timeout) {
			window.clearTimeout(relenta.objects[obj_id].status_read_timeout);
			delete relenta.objects[obj_id].status_read_timeout;
		}
	}
}

var ajax_folder_activity_item_info_load = function(obj_id, container, vfolder)
{
	ajax_activity_item_info_load('message', obj_id, container, {vfolder:vfolder, mode:'folder'});
}

var ajax_tag_activity_item_info_load = function(obj_id, container, vfolder)
{
	ajax_activity_item_info_load('message', obj_id, container, {vfolder:vfolder, mode:'tag'});
}//ajax_tag_activity_item_info_load


var draw_folder_unread_message_count = function(folder_id, unread_count)
{
	var obj = $('fld_list_stat'+folder_id);
	if(obj) {
		if(unread_count>0) {
			obj.innerHTML = "<nobr><strong>("+unread_count+")</strong></nobr>";
		}
		else {
			obj.innerHTML = '';
		}
	}
};
var draw_folder_total_message_count = function(folder_id, total_count)
{
	var obj = $('fld_message_count'+folder_id);
	if(obj) {
		if(total_count>0) {
			obj.innerHTML = "<nobr><strong>"+total_count+"</strong></nobr>";
		}
		else {
			obj.innerHTML = '';
		}
	}
};


var message_info_success_compose = function() 
{
	jQuery('#compose_message_container').show();
	jQuery('#folder_message_list').hide();
};

var activate_subscription = function(cn_group_id)
{
	new Ajax.Request(
		"/", 
		{
			method:'get',
			parameters:'m=ajax_contact_group&a=ajax_activate_subscription&cn_group_id='+cn_group_id,
			onSuccess: function(t) {
				eval(t.responseText);
				if("success"==opresult["status"]) {
					jQuery('#cgact'+cn_group_id).html('<a class="subscr_status" href="#" onClick="deactivate_subscription('+cn_group_id+'); return false;">Stop</a>');
					jQuery('#cg'+cn_group_id).removeClass('subscr_inactive');
					jQuery('#cg'+cn_group_id).addClass('subscr_active');
					jQuery('#cgstat'+cn_group_id).html('active');
					//showMessage("subscription", opresult["message"],"info-message", 0);
				} else {
					//showMessage("subscription", opresult["message"],"error-message", 1);
				}
			}
		}
	);
}

var deactivate_subscription = function(cn_group_id)
{
	new Ajax.Request(
		"/", 
		{
			method:'get',
			parameters:'m=ajax_contact_group&a=ajax_deactivate_subscription&cn_group_id='+cn_group_id,
			onSuccess: function(t) {
				eval(t.responseText);
				if("success"==opresult["status"]) {
					jQuery('#cgact'+cn_group_id).html('<a class="subscr_status" href="#" onClick="activate_subscription('+cn_group_id+'); return false;">Start</a>');
					jQuery('#cg'+cn_group_id).addClass('subscr_inactive');
					jQuery('#cg'+cn_group_id).removeClass('subscr_active');
					jQuery('#cgstat'+cn_group_id).html('paused');
					//showMessage("subscription", opresult["message"],"info-message", 0);
				} else {
					//showMessage("subscription", opresult["message"],"error-message", 1);
				}
			}
		}
	);
}

var show_contact_group_campaign_info = function(cn_group_id, container)
{
	jQuery('#'+container).toggle();
	if($(container).style.display=='none') {
		jQuery('#cg'+cn_group_id+' .msg_i').removeClass('msg_i_active');
	}
	else {
		jQuery('#cg'+cn_group_id+' .msg_i').addClass('msg_i_active');
		jQuery('#'+container).append('<img style="padding:15px;" src="/img/ui/ui_ajax_loader_message.gif" width="16" height="16"/>');
		new Ajax.Request(
			"/", 
			{
				method:'get',
				parameters:'m=ajax_contact_group&a=ajax_show_contact_group_campaign_info&mode=message_info&cn_group_id='+cn_group_id,
				onSuccess: function(t) {
					$(container).innerHTML = t.responseText;
					setTimeout(function() {t.responseText.evalScripts()}, 10);
				}
			}
		);
	}
}//show_contact_group_campaign_info

var remove_template = function(dp_id, tmpl_id, cn_group_id)
{
	if (confirm("Are you sure? (Please note that campaign will be deactivated)")) {
		new Ajax.Request(
			"/", 
			{
				method:'get',
				parameters:'m=ajax_contact_group&a=ajax_remove_template&dp_id='+dp_id+'&tmpl_id='+tmpl_id+'&cn_group_id='+cn_group_id,
				onSuccess: function(t) {
					eval(t.responseText);
					if (opresult['status'] == "success") {
						// opresult['message']
						jQuery('#cginf'+cn_group_id).toggle();
						show_contact_group_campaign_info(cn_group_id, 'cginf'+cn_group_id);
					};
				}
			}
		);
	};
}// remove_template

var save_contact_group_public_name = function(cn_group_id)
{
	jQuery('#cgpnbtn'+cn_group_id).val('<img style="padding:15px;" src="/img/ui/ui_ajax_loader_message.gif" width="16" height="16"/>');
	new Ajax.Request(
		"/", 
		{
			method:'get',
			parameters:'m=ajax_contact_group&a=ajax_save_contact_group_public_name&public_name='+escape(jQuery("#cgpn"+cn_group_id).val())+'&cn_group_id='+cn_group_id,
			onSuccess: function(t) {
				eval(t.responseText);
				if (opresult['status'] == "success") {
					showMessage("campaign"+cn_group_id, opresult["message"],"info-message", 0);
				} else {
					showMessage("campaign"+cn_group_id, opresult["message"],"error-message", 1);
				}
				jQuery('#cgpnbtn'+cn_group_id).html('<a href="#" class="btn" onClick="save_contact_group_public_name('+cn_group_id+');return false;">Save</a>');
			}
		}
	);
}// save_contact_group_public_name


var hide_contact_message_list_and_control = function()
{
	jQuery('#message_list_container').hide();
	jQuery('#btn_reply').hide();
	jQuery('#btn_forward').hide();
	jQuery('#btn_replytoall').hide();
	jQuery('#btn_edit').hide();
	jQuery('#btn_del').hide();
	jQuery('#btn_archive').hide();
}

var show_contact_message_list_and_control = function()
{
	jQuery('#message_list_container').show();
	jQuery('#btn_reply').show();
	jQuery('#btn_forward').show();
	jQuery('#btn_replytoall').show();
	jQuery('#btn_edit').show();
	jQuery('#btn_del').show();
	jQuery('#btn_archive').show();
}

var delete_contact_messages = function(dp_id)
{
	if(jQuery('#message_list_container input.msgc:checkbox:checked').size()>0) {
		if(confirm('Are you sure you want to delete selected messages?')) {
			var msg_params = new Array();
			var msgs = new Array();
			jQuery('#message_list_container input.msgc:checkbox:checked').each(
				function(i) { 
					msg_params.push('ids[]='+this.value);
					msgs.push(this.value);
				} );
			new Ajax.Request(
				"/", 
				{
					method:'post',
					parameters:'m=ajax_message&a=ajax_delete_messages&dp_id='+dp_id+'&'+msg_params.join('&'),
					onSuccess: function(t) {
						eval(t.responseText);
						for(var i=0;i<msgs.length;i++) {
							jQuery('#msg'+msgs[i],'#message_list_container').remove();
						}
						for(var i=0;i<opresult['folders'].length;i++) {
							draw_folder_unread_message_count(opresult['folders'][i].folder_id, opresult['folders'][i].folder_unread_message_count);
							draw_folder_total_message_count(opresult['folders'][i].folder_id, opresult['folders'][i].folder_total_message_count);
						}
						// hide message list and controls
						if(jQuery('#message_list_container input.msgc:checkbox').size()==0) {
							hide_contact_message_list_and_control();
						}//
						
					}
				}
				
			);
			
		}//if confirm
	}//if size
	else {
		alert('Please select at least one message to delete');
	}

};


var resend_folder_messages = function(folder_id)
{
	var msg;
	var type;
	if(jQuery('#message_list_container input:checkbox:checked').size()>0) {
		type = 'selected';
		msg = 'Are you sure you want to resend selected messages?';
	}
	else {
		type = 'all';
		msg = 'You are about to resend all unsent messages!';
	}
	if(confirm(msg)) {
		if(type=='selected') {
			var msg_params = new Array();
			var msgs = new Array();
			jQuery('#message_list_container input:checkbox:checked').each(
				function(i) { 
					msg_params.push('ids[]='+this.value);
					msgs.push(this.value);
				} );
		//alert(msgs.join('&'));
		}
		new Ajax.Request(
			"/", 
			{
				method:'post',
				parameters:'m=ajax_message&a=ajax_resend_folder_messages&folder_id='+folder_id+(type=='all'?'&type=all':'&'+msg_params.join('&')),
				onSuccess: function(t) {
					eval(t.responseText);
					if(opresult['status']=='success') {
						jQuery('#fld_list'+folder_id).addClass('outbox').removeClass('outbox_error');
						//draw_folder_unread_message_count(opresult['folder'].folder_id, opresult['folder'].folder_unread_message_count);
						//draw_folder_total_message_count(opresult['folder'].folder_id, opresult['folder'].folder_total_message_count);
						var page = 0;
						if (jQuery("input[name=folder_id]", "#messages").val()==opresult['folder'].folder_id) {
							page = jQuery("input[name=page]", "#messages").val();
						};
						ajax_load_folder_messages({dp_id:opresult['folder'].dp_id, folder_id:opresult['folder'].folder_id}, page);
					}
					else {
						// show error message
					}
				}
			}
		);
	}//if confirm

};

var move_folder_messages = function(from_folder_id, to_folder_id)
{
	var msg;
	var type;
	if(!from_folder_id) {
		alert('Please select source folder');
		return false;
	}
	if(!to_folder_id) {
		alert('Please select target folder');
		return false;
	}
	if(jQuery('#message_list_container input:checkbox:checked').size()>0) {
		type = 'selected';
		if (!confirm('Are you sure you want to move selected messages from this folder?')) {
			return false;
		};
	}
	else {
		type = 'all';
		var answer = prompt('You are about to move all messages from this folder.\nType YES to proceed:','');
		if (!answer || answer.toLowerCase() != "yes") {
			return false;
		};
	}
	if(type=='selected') {
		var msg_params = [];
		var msgs = [];
		jQuery('#message_list_container input:checkbox:checked').each(
			function(i) { 
				msg_params.push('ids[]='+this.value);
				msgs.push(this.value);
			} );
		//alert(msgs.join('&'));
	}
	new Ajax.Request(
		"/", 
		{
			method:'post',
			parameters:'m=ajax_message&a=ajax_move_folder_messages&from_folder_id='+from_folder_id+'&to_folder_id='+to_folder_id+(type=='all'?'&type=all':'&'+msg_params.join('&')),
			onSuccess: function(t) {
				eval(t.responseText);
				if (from_folder_id != "all") {
					if(type=='all') {
						jQuery('#message_list_container').remove();
					}
					else {
						for(var i=0;i<msgs.length;i++) {
							jQuery('#msg'+msgs[i],'#message_list_container').next().remove();
							jQuery('#msg'+msgs[i],'#message_list_container').remove();
						}
					}
					draw_folder_unread_message_count(opresult['to_folder'].folder_id, opresult['to_folder'].folder_unread_message_count);
					draw_folder_total_message_count(opresult['to_folder'].folder_id, opresult['to_folder'].folder_total_message_count);
					var page = 0;
					if (jQuery("input[name=folder_id]", "#messages").val()==opresult['from_folder'].folder_id) {
						page = jQuery("input[name=page]", "#messages").val();
					};
					ajax_load_folder_messages({dp_id:opresult['from_folder'].dp_id, folder_id:opresult['from_folder'].folder_id}, page);
				}
				else {
					ajax_load_folder_messages({dp_id:opresult['to_folder'].dp_id, folder_id:'all'}, page);
				}
			}
		}
	);
}

var archive_folder_messages = function(dp_id, folder_id, message_id, vfolder)
{
	// Check for unassigned messages in selected array
	// if (jQuery('#message_list_container input:checkbox:checked[class=unassigned]').size()>0) {
	// 	alert("Messages that are not associated with contacts can not be archived.");
	// 	return;
	// };
	vfolder = vfolder?vfolder:'';
	
	var single_message_mode = message_id?true:false;
	if(single_message_mode) {
		msgs = [];
		msg_params = [];
		msgs.push(message_id);	
		msg_params.push('ids[]='+message_id);
	}
	if(single_message_mode || jQuery('#message_list_container input:checkbox:checked').size()>0) {
		var msg;
		if(single_message_mode) {
			msg = 'Are you sure you want to archive selected message?';
		}
		else {
			msg = 'Are you sure you want to archive selected messages?';
		}
		if(confirm(msg)) {
			if(!single_message_mode) {
				var msgs = [];
				var msg_params = [];
				jQuery('#message_list_container input:checkbox:checked').each(
					function(i) { 
						msgs.push(this.value);
						msg_params.push('ids[]='+this.value);
					} );
				//alert(msgs.join('&'));
			}
			new Ajax.Request(
				"/", 
				{
					method:'post',
					parameters:'m=ajax_message&a=ajax_archive_messages&dp_id='+dp_id+'&folder_id='+folder_id+'&'+msg_params.join('&'),
					onSuccess: function(t) {
						eval(t.responseText);
						for(var i=0;i<msgs.length;i++) {
							jQuery('#msg_archive_link'+msgs[i]).remove();
						}
						if(vfolder=='all') {
							for(var i=0;i<msgs.length;i++) {
								jQuery('#msg'+msgs[i]).removeClass('deleted').addClass('archived');
								//jQuery('#msgtype'+msgs[i],'#message_list_container').html('<img src="/img/ui/icn/icn_16x16_archived_email.gif" border="0" alt="Archived message" />');
								jQuery('#msgc_'+msgs[i],'#message_list_container').attr('checked', false);
							}
						}
						else {
							for(var i=0;i<msgs.length;i++) {
								jQuery('#msg'+msgs[i],'#message_list_container').next().remove();
								jQuery('#msg'+msgs[i],'#message_list_container').remove();
							}
							//draw_folder_unread_message_count(opresult['folder'].folder_id, opresult['folder'].folder_unread_message_count);
							//draw_folder_total_message_count(opresult['folder'].folder_id, opresult['folder'].folder_total_message_count);
							var page = 0;
							if (jQuery("input[name=folder_id]", "#messages").val()==folder_id) {
								page = jQuery("input[name=page]", "#messages").val();
							};
							ajax_load_folder_messages({dp_id:opresult.dp_id, folder_id:folder_id}, page);
						}//else
						
						
					}
				}
			);
		}// if confirm
	}//if size
	else {
		alert('Please select at least one message to archive');
	}
};

var delete_folder_messages = function(dp_id, folder_id)
{

	var msg;
	var type;
	if(jQuery('#message_list_container input:checkbox:checked').size()>0) {
		type = 'selected';
		if (!confirm('Are you sure you want to delete selected messages in this folder?')) {
			return false;
		};
	}
	else {
		type = 'all';
		var answer = prompt('You are about to delete all messages in this folder.\nType YES to proceed:','');
		if (!answer || answer.toLowerCase() != "yes") {
			return false;
		};
	}

	//if(jQuery('#message_list_container input:checkbox:checked').size()>0) {
		// if(confirm(msg)) {
		
			if(type=='selected') {
				var msg_params = new Array();
				var msgs = new Array();
				jQuery('#message_list_container input:checkbox:checked').each(
					function(i) { 
						msg_params.push('ids[]='+this.value);
						msgs.push(this.value);
					} );
			//alert(msgs.join('&'));
			}
			new Ajax.Request(
				"/", 
				{
					method:'post',
					parameters:'m=ajax_message&a=ajax_delete_messages&dp_id='+dp_id+'&folder_id='+folder_id+(type=='all'?'&type=all':'&'+msg_params.join('&')),
					onSuccess: function(t) {
						eval(t.responseText);
						if(type=='all') {
							jQuery('#message_list_container').remove();
						}
						else {
							for(var i=0;i<msgs.length;i++) {
								jQuery('#msg'+msgs[i],'#message_list_container').next().remove();
								jQuery('#msg'+msgs[i],'#message_list_container').remove();
							}
						}
						for(var i=0;i<opresult['folders'].length;i++) {
							draw_folder_unread_message_count(opresult['folders'][i].folder_id, opresult['folders'][i].folder_unread_message_count);
							draw_folder_total_message_count(opresult['folders'][i].folder_id, opresult['folders'][i].folder_total_message_count);
						}
						var page = 0;
						if (jQuery("input[name=folder_id]", "#messages").val()==folder_id) {
							page = jQuery("input[name=page]", "#messages").val();
						};
						ajax_load_folder_messages({dp_id:opresult.dp_id, folder_id:folder_id}, page);
					}
				}
			);
		// }//if confirm
	//}//if size
	//else {
		//alert('Please select at least one message to delete');
	//}

};



var purge_folder_messages = function(dp_id, folder_id)
{
	var msg;
	var type;
	if(jQuery('#message_list_container input:checkbox:checked').size()>0) {
		type = 'selected';
		msg = 'Are you sure you want to purge selected messages?';
	}
	else {
		type = 'all';
		msg = 'WARNING! This will permanently erase ALL messages from this folder!';
	}
		if(confirm(msg)) {
			if(type=='selected') {
				var msg_params = new Array();
				var msgs = new Array();
				jQuery('#message_list_container input:checkbox:checked').each(
					function(i) { 
						msg_params.push('ids[]='+this.value);
						msgs.push(this.value);
					} );
			//alert(msgs.join('&'));
			}
			new Ajax.Request(
				"/", 
				{
					method:'post',
					parameters:'m=ajax_message&a=ajax_purge_folder_messages&dp_id='+dp_id+'&folder_id='+folder_id+(type=='all'?'&type=all':'&'+msg_params.join('&')),
					onSuccess: function(t) {
						eval(t.responseText);
						if(type=='all') {
							jQuery('#message_list_container').remove();
						}
						else {
							for(var i=0;i<msgs.length;i++) {
								jQuery('#msg'+msgs[i],'#message_list_container').next().remove();
								jQuery('#msg'+msgs[i],'#message_list_container').remove();
							}
						}
						draw_folder_unread_message_count(opresult['folder'].folder_id, opresult['folder'].folder_unread_message_count);
						draw_folder_total_message_count(opresult['folder'].folder_id, opresult['folder'].folder_total_message_count);
						var page = 0;
						if (jQuery("input[name=folder_id]", "#messages").val()==opresult['folder'].folder_id) {
							page = jQuery("input[name=page]", "#messages").val();
						};
						ajax_load_folder_messages({dp_id:opresult['folder'].dp_id, folder_id:opresult['folder'].folder_id}, page);
					}
				}
			);
		}//if confirm

}; // purge_folder_messages


var delete_contacts = function(dp_id, cn_group_id)
{
	var msg;
	var type;
	var str;
	if(jQuery('#contact_list_container input:checkbox:checked').size()>0) {
		type = 'selected';
		if (!confirm('Are you sure you want to delete selected contacts?')) {
			return false;
		};
	}
	else if(cn_group_id){
		type = 'cn_group';
		str = prompt('You are about to delete ALL contacts in this contact group.\nType YES to proceed:','');
		if (!str || str.toLowerCase() != "yes") {
			return false;
		};
	}
	else {
		type = 'all';
		str = prompt('You are about to delete ALL contacts in this department.\nType DELETE ALL CONTACTS to proceed:',''); 
		if (!str || str.toLowerCase() != "delete all contacts") {
			return false;
		};
	}
	var msg_params = new Array();
	var msgs = new Array();
	if(type=='selected') {
		jQuery('#contact_list_container input:checkbox:checked').each(
			function(i) { 
				msg_params.push('ids[]='+this.value);
				msgs.push(this.value);
			} );
	//alert(msgs.join('&'));
	}
		new Ajax.Request(
			"/", 
			{
				method:'post',
				parameters:'m=ajax_contact&a=ajax_contact_batch_delete&dp_id='+dp_id+'&cn_group_id='+cn_group_id+'&type='+type+(type=='selected'?'&'+msg_params.join('&'):''),
				onSuccess: function(t) {
					eval(t.responseText);
					if(opresult['status']=='success') {
						document.location.href = opresult['process_url'];
					}
					else {
						alert(opresult['message']);
					}
				}
			}
		);

}; // delete_contacts

var filter_folder_messages = function ( filter_id , folder_id ) 
{
	var msg;
	var type;
	if(jQuery('#message_list_container input:checkbox:checked').size()>0) {
		type = 'selected';
		msg = 'Are you sure you want to apply filter to selected messages?';
	}
	else if (folder_id == "all") {
		alert("You can't apply filters to all messages in 'All mail' folder");
		return false;
	}
	else {
		type = 'all';
		msg = 'WARNING! This will apply selected filter to ALL messages in this folder!';
	}
		if(confirm(msg)) {
			if(type=='selected') {
				var msg_params = [];
				var msgs = [];
				jQuery('#message_list_container input:checkbox:checked').each(
					function(i) { 
						msg_params.push('ids[]='+this.value);
						msgs.push(this.value);
					} );
			}
			new Ajax.Request(
				"/", 
				{
					method:'post',
					parameters:'m=ajax_message&a=ajax_filter_folder_messages&folder_id='+folder_id+'&filter_id='+filter_id+(type=='all'?'&type=all':'&'+msg_params.join('&')),
					onSuccess: function(t) {
						eval(t.responseText);
						if (opresult['status'] == "success") {
							draw_folder_unread_message_count(opresult['folder'].folder_id, opresult['folder'].folder_unread_message_count);
							draw_folder_total_message_count(opresult['folder'].folder_id, opresult['folder'].folder_total_message_count);
							var page = 0;
							if (jQuery("input[name=folder_id]", "#messages").val()==opresult['folder'].folder_id) {
								page = jQuery("input[name=page]", "#messages").val();
							};
							ajax_load_folder_messages({dp_id:opresult['folder'].dp_id, folder_id:opresult['folder'].folder_id}, page);
							showMessage('filter', opresult['message'], 'info-message', 0);
						}
						else {
							showMessage('filter', opresult['message'], 'error-message', 1);
						}
					}
				}
			);
		}//if confirm
} // filter_folder_messages


var mark_message = function(message_id)
{
	var mark_type = 'read';
	if(jQuery('#msg'+message_id).is('.read')) {
		mark_type = 'unread';
	}
	jQuery('#msg'+message_id+' .msg_st').addClass('msg_st_inprogress');
	new Ajax.Request(
		"/", 
		{
			method:'get',
			parameters:'m=ajax_message&a=ajax_mark_message&mark_type='+mark_type+'&message_id='+message_id,
			onSuccess: function(t) {
				eval(t.responseText);
				if(jQuery('#msg'+message_id).is('.read')) {
					jQuery('#msg'+message_id).removeClass('read').addClass('unread');
				}
				else if(jQuery('#msg'+message_id).is('.unread')) {
					jQuery('#msg'+message_id).removeClass('unread').addClass('read');
				}
				
				//jQuery('#msg'+message_id).removeClass(mark_type)
				draw_folder_unread_message_count(opresult['folder'].folder_id, opresult['folder'].folder_unread_message_count);
				jQuery('#msg'+message_id+' .msg_st').removeClass('msg_st_inprogress');
			}
		}
	);
}//mark_message

var mark_folder_messages = function(folder_id)
{
	var mark_type = 'read';
	if(Element.hasClassName($('fld_msg_list'+folder_id),'read')) {
		mark_type = 'unread';
	}
	//Element.addClassName($('fld_msg_list'+folder_id),'inprogress');
	jQuery('#fld_msg_list'+folder_id+' .msg_st').addClass('msg_st_inprogress');
//	jQuery('#fld_msg_list'+folder_id+' .msg_st').addClass('inprogress');
	//jQuery('#fld_msg_list'+folder_id+' .msg_st').append('aaa');
//	alert(jQuery('#fld_msg_list'+folder_id+' .msg_st')[0]);
	
	new Ajax.Request(
		"/", 
		{
			method:'get',
			parameters:'m=ajax_message&a=ajax_mark_folder_messages&mark_type='+mark_type+'&folder_id='+folder_id,
			onSuccess: function(t) {
				eval(t.responseText);
				if(Element.hasClassName($('fld_msg_list'+folder_id),'read')) {
					Element.removeClassName($('fld_msg_list'+folder_id),'read');
				}
				else if(Element.hasClassName($('fld_msg_list'+folder_id),'unread')) {
					Element.removeClassName($('fld_msg_list'+folder_id),'unread');
				} 
				Element.addClassName($('fld_msg_list'+folder_id),mark_type);
				var mrows = document.getElementsByClassName('mrow');
				for(var i=0;i<mrows.length;i++) {
					Element.removeClassName(mrows[i],'read');
					Element.removeClassName(mrows[i],'unread');
					Element.addClassName(mrows[i],mark_type);
				}
				draw_folder_unread_message_count(opresult['folder'].folder_id, opresult['folder'].folder_unread_message_count);
				jQuery('#fld_msg_list'+folder_id+' .msg_st').removeClass('msg_st_inprogress');
			}
		}
	);
}//mark_folder_messages


function form_error_cleanup(container)
{
	jQuery('#'+container+' .error_field').removeClass('error_field');
	jQuery('#'+container+' .error_message').remove();
	
}//form_error_cleanup

function form_errors(form_error_list)
{
        // TODO
}

function form_field_errors(field_error_list, form_object)
{
	desma.util.each(field_error_list, function(key, item)
                {
                        jQuery('[name='+key+'][type=textarea]', form_object).before('<div class="error_message">'+item.text+'</div>');
                        jQuery('[name='+key+'][type!=textarea]', form_object).after('<div class="error_message">'+item.text+'</div>');
                        jQuery(jQuery('[name='+key+']', form_object).parents('tr')[0]).addClass('error_field');
                }
        );
	/*
	field_error_list.each(
		function(item)
		{
			jQuery('[name='+item.key+'][type=textarea]', form_object).before('<div class="error_message">'+item.value["text"]+'</div>');
			jQuery('[name='+item.key+'][type!=textarea]', form_object).after('<div class="error_message">'+item.value["text"]+'</div>');
			jQuery(jQuery('[name='+item.key+']', form_object).parents('tr')[0]).addClass('error_field');
		}
	);
	*/

}


var FormValidatorHelper = {
	validateEmail: function(v)
	{
		var regex =  /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#$\%\&'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#$\%\&'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/;
		return regex.test(v);
	}
};

function debug_print(text)
{
	if((typeof $('debug') != 'undefined') && (typeof $('debug').innerHTML != 'undefined')) {
		//$('debug').innerHTML = $('debug').innerHTML+'<pre>'+text+'</pre>';
	}
};


function edit_message_template(dp_id, template_id, cn_group_id, container, success_edit)
{

	new Ajax.Request(
		"/", 
		{
			method:'get',
			parameters:'m=ajax_message&a=ajax_message_template_edit_prepare&dp_id='+dp_id+'&template_id='+template_id+'&cn_group_id='+cn_group_id,
			onSuccess: function(t) {
				debug_print(t.responseText);
				eval(t.responseText);
				if(opresult["status"]=="success") {
					new Ajax.Request(
						"/", 
						{
							method:'get',
							parameters:opresult["loading_url_param"],
							onSuccess: function(t) {
								$(container).innerHTML = t.responseText;
								setTimeout(function() {t.responseText.evalScripts()}, 10);
								success_edit();
							}
						}
					);
				}
				else {
					alert(opresult["message"]);
					return false;
				}
			}
		}
	);
};

function edit_message(message_id, dp_id, cn_id, container, success_edit)
{
//
	new Ajax.Request(
		"/", 
		{
			method:'get',
			parameters:'m=message&a=edit&dp_id='+dp_id+'&cn_id='+cn_id+'&message_id='+message_id,
			onSuccess: function(t) {
				jQuery('#'+container).html(t.responseText);
				success_edit();
			}
		}
	);
	return;
	
}//edit_message

function create_message(create_type, dp_id, cn_id, message_id, container, success_create, prm)
{
	prm = jQuery.extend({recipient:''},prm);
	new Ajax.Request(
		"/", 
		{
			method:'get',
			parameters:'m=message&a='+create_type+'&dp_id='+dp_id+'&cn_id='+cn_id+'&message_id='+message_id+'&recipient='+prm.recipient,
			onSuccess: function(t) {
				jQuery('#'+container).empty();
				jQuery('#'+container).html(t.responseText);
				//setTimeout(function() {t.responseText.evalScripts()}, 10);
				success_create();
			}
		}
	);
}





function compose_message_to_group(dp_id, cn_group_id, container, success_create)
{
	container = container ? container : 'compose_message_container';
	new Ajax.Request(
		"/", 
		{
			method:'get',
			parameters:'m=ajax_message&a=ajax_message_template_to_group_edit_prepare&dp_id='+dp_id+'&cn_group_id='+cn_group_id,
			onSuccess: function(t) {
				debug_print(t.responseText);
				eval(t.responseText);
				if(opresult["status"]=="success") {
					new Ajax.Request(
						"/", 
						{
							method:'get',
							parameters:opresult["loading_url_param"],
							onSuccess: function(t) {
								jQuery('#'+container).html(t.responseText);
								success_create();
							}
						}
					);
				}
				else {
					alert(opresult["message"]);
					return false;
				}
			}
		}
	);
}


var save_message_to_group = function()
{
	jQuery.extend(jQuery.blockUI.defaults.overlayCSS, { backgroundColor: '#eee' });
	jQuery.extend(jQuery.blockUI.defaults.pageMessageCSS, { width:'200px', margin:'-30px 0 0 -100px', color:'#333', border: '2px solid #ccc' });

	var options = {
		onBeforeSubmit: function(settings)
		{
			if(jQuery('input[name=f_html]','#compose_form').val()) {
				var inst = tinyMCE.get('body');
				if(inst && jQuery('[type=textarea][name=body]','#'+settings.compose_form_id).size()) {
					jQuery('[type=textarea][name=body]','#'+settings.compose_form_id).attr('value', inst.getContent());
					//tinyMCE.removeMCEControl(tinyMCE.getEditorId('body'));
				}
			}
			jQuery.blockUI('<div style="font-size:11px;padding: 20px 5px;font-weight:bold;"><img src="/img/ui/ui_ajax_loader_message.gif" align="absmiddle" /> Sending message...</div>');
		},
		onSubmit: function(settings, opresult)
		{
			jQuery.unblockUI();
		},
		onSuccessSubmit: function(settings, opresult)
		{
			jQuery('#compose_form_container').hide();
			disable_dhtml_editors();
			jQuery('#'+settings.compose_form_id).empty();
			jQuery('#contact_list_container').show();
			tabs_top.hideTab('message_create');
			tabs_top.changeTab("list");
		}
	};
	save_message(options);
};


var save_message_template = function()
{
	jQuery.extend(jQuery.blockUI.defaults.overlayCSS, { backgroundColor: '#eee' });
	jQuery.extend(jQuery.blockUI.defaults.pageMessageCSS, { width:'200px', margin:'-30px 0 0 -100px', color:'#333', border: '2px solid #ccc' });

	var options = {
		onBeforeSubmit: function(settings)
		{
			if(jQuery('input[name=f_html]','#compose_form').val()) {
				var inst = tinyMCE.get('body');
				/*
					if(typeof editor_status['body'] != 'undefined' && editor_status['body']=='enabled') {
					editor_status['body'] = 'disabled';
					jQuery('input[name=f_html]','#compose_form').attr('value','0');
				}*/
				if(inst && jQuery('[type=textarea][name=body]','#'+settings.compose_form_id).size()) {
					jQuery('[type=textarea][name=body]','#'+settings.compose_form_id).attr('value', inst.getContent());
					//tinyMCE.removeMCEControl(tinyMCE.getEditorId('body'));
				}
			}
			jQuery.blockUI('<div style="font-size:11px;padding: 20px 5px;font-weight:bold;"><img src="/img/ui/ui_ajax_loader_message.gif" align="absmiddle" /> Sending message...</div>');
		},
		onSubmit: function(settings, opresult)
		{
			jQuery.unblockUI();
		},
		onSuccessSubmit: function(settings, opresult)
		{
			jQuery('#compose_form_container').hide();
			disable_dhtml_editors();
			jQuery('#'+settings.compose_form_id).empty();
			document.location.href = opresult["process_url"];
		}
	};
	save_message(options);
};


var contact_view_save_message = function(prm)
{
	if(!prm) prm = {};
	prm = jQuery.extend({dp_id: ''},prm);
	var options = {
		onBeforeSubmit: function(settings)
		{
			if(jQuery('input[name=f_html]','#compose_form').val()) {
				var inst = tinyMCE.get('body');
				/*
					if(typeof editor_status['body'] != 'undefined' && editor_status['body']=='enabled') {
					editor_status['body'] = 'disabled';
					jQuery('input[name=f_html]','#compose_form').attr('value','0');
				}*/
				if(inst && jQuery('[type=textarea][name=body]','#'+settings.compose_form_id).size()) {
					jQuery('[type=textarea][name=body]','#'+settings.compose_form_id).attr('value', inst.getContent());
					//tinyMCE.removeMCEControl(tinyMCE.getEditorId('body'));
				}
			}
			if(prm.autosave) {
				relenta.state.update('message', prm.message_id, {autosaved:true});
			}
			else {
				relenta.message.message_autosave_stop(prm.message_id);
				if($('f_draft').value==1) {
					jQuery.blockUI('<div style="font-size:11px;padding: 20px 5px;font-weight:bold;"><img src="/img/ui/ui_ajax_loader_message.gif" align="absmiddle" /> Saving message...</div>');
				}
				else {
					jQuery.blockUI('<div style="font-size:11px;padding: 20px 5px;font-weight:bold;"><img src="/img/ui/ui_ajax_loader_message.gif" align="absmiddle" /> Sending message...</div>');
				}
			}
			
		},
		onSubmit: function(settings, opresult)
		{
			jQuery.unblockUI();
		},
		onSuccessSubmit: function(settings, opresult)
		{
			if(prm.autosave && typeof prm.onsuccess == 'function') {
				prm.onsuccess();
			}
			else {
				ajax_contact_load_activity({'dp_id':prm.dp_id, 'cn_id':opresult['contact_object'].cn_id, 'obj_id':opresult['message_object'].id});
				tabs_top.changeTab("activity");
				// hide compose tab
				tabs_top.hideTab("message_create");
				disable_dhtml_editors();
				jQuery('#'+settings.compose_form_id).empty();
				if(relenta.local.message_autosave_timer_id) {
					window.clearTimeout(relenta.local.message_autosave_timer_id);
				}
			}
			
		}
	};
	save_message(options);
};


var contact_list_save_message = function(prm)
{
	if(!prm) prm = {};
	prm = jQuery.extend({dp_id: ''},prm);
	var options = {
		onBeforeSubmit: function(settings)
		{
			if(jQuery('input[name=f_html]','#compose_form').val()) {
				var inst = tinyMCE.get('body');
				if(inst && jQuery('[type=textarea][name=body]','#'+settings.compose_form_id).size()) {
					jQuery('[type=textarea][name=body]','#'+settings.compose_form_id).attr('value', inst.getContent());
				}
			}
			if(prm.autosave) {
				relenta.state.update('message', prm.message_id, {autosaved:true});
			}
			else {
				if($('f_draft').value==1) {
					jQuery.blockUI('<div style="font-size:11px;padding: 20px 5px;font-weight:bold;"><img src="/img/ui/ui_ajax_loader_message.gif" align="absmiddle" /> Saving message...</div>');
				}
				else {
					jQuery.blockUI('<div style="font-size:11px;padding: 20px 5px;font-weight:bold;"><img src="/img/ui/ui_ajax_loader_message.gif" align="absmiddle" /> Sending message...</div>');
				}
			}
		},
		onSubmit: function(settings, opresult)
		{
			jQuery.unblockUI();
		},
		onSuccessSubmit: function(settings, opresult)
		{
			if(prm.autosave && typeof prm.onsuccess == 'function') {
				prm.onsuccess();
			}
			else {
				disable_dhtml_editors();
				jQuery('#'+settings.compose_form_id).empty();
				jQuery('#compose_message_container').hide();
				jQuery('#contact_list_container').show();
				tabs_top.hideTab('message_create');
				tabs_top.changeTab("list");
			}
		}
	};
	save_message(options);
};

var folder_message_list_save_message = function(prm)
{
	jQuery.extend(jQuery.blockUI.defaults.overlayCSS, { backgroundColor: '#eee' });
	jQuery.extend(jQuery.blockUI.defaults.pageMessageCSS, { width:'200px', margin:'-30px 0 0 -100px', color:'#333', border: '2px solid #ccc' });

	var r_mark = "";
	var options = {
		onBeforeSubmit: function(settings)
		{
			if(jQuery('input[name=f_html]','#compose_form').val()) {
				var inst = tinyMCE.get('body');
				/*
					if(typeof editor_status['body'] != 'undefined' && editor_status['body']=='enabled') {
					editor_status['body'] = 'disabled';
					jQuery('input[name=f_html]','#compose_form').attr('value','0');
				}*/
				if(inst && jQuery('[type=textarea][name=body]','#'+settings.compose_form_id).size()) {
					jQuery('[type=textarea][name=body]','#'+settings.compose_form_id).attr('value', inst.getContent());
					//tinyMCE.removeMCEControl(tinyMCE.getEditorId('body'));
				}
			}
			
			if(prm.autosave) {
				relenta.state.update('message', prm.message_id, {autosaved:true});
			}
			else {
				relenta.message.message_autosave_stop(prm.message_id);
				if($('f_draft').value==1) {
					jQuery.blockUI('<div style="font-size:11px;padding: 20px 5px;font-weight:bold;"><img src="/img/ui/ui_ajax_loader_message.gif" align="absmiddle" /> Saving message...</div>');
				}
				else {
					jQuery.blockUI('<div style="font-size:11px;padding: 20px 5px;font-weight:bold;"><img src="/img/ui/ui_ajax_loader_message.gif" align="absmiddle" /> Sending message...</div>');
				}
				
			}
			
		},
		onSubmit: function(settings, opresult)
		{
			jQuery.unblockUI();
		},
		onSuccessSubmit: function(settings, opresult)
		{
			if(prm.autosave && typeof prm.onsuccess == 'function') {
				prm.onsuccess();
			}
			else {
				jQuery('#compose_form_container').hide();
				jQuery('#folder_message_list').show();
				disable_dhtml_editors();
				jQuery('#'+settings.compose_form_id).empty();
				
				if(opresult["message_object"].src_message_id != null) 
				{
					if ( 
								opresult["message_object"].is_reply == true &&
								!jQuery("#msg"+opresult["message_object"].src_message_id).hasClass(opresult["message_object"].src_message_type+"_forwarded")
						) {
						r_mark = opresult["message_object"].src_message_type+"_replied";
					}
					else if ( 
								opresult["message_object"].is_forward == true &&
								!jQuery("#msg"+opresult["message_object"].src_message_id).hasClass(opresult["message_object"].src_message_type+"_replied") 
							) {
						r_mark = opresult["message_object"].src_message_type+"_forwarded";
					}
					else {
						jQuery("#msg"+opresult["message_object"].src_message_id).removeClass(opresult["message_object"].src_message_type+"_forwarded");
						jQuery("#msg"+opresult["message_object"].src_message_id).removeClass(opresult["message_object"].src_message_type+"_replied");
						r_mark = opresult["message_object"].src_message_type+"_replied_forwarded";
					}
					jQuery("#msg"+opresult["message_object"].src_message_id).addClass(r_mark);
				}
				if(opresult["message_object"].folder_id==relenta.local.folder_id) {
					var page = 0;
					if (jQuery("input[name=folder_id]", "#messages").val()==opresult['message_object'].folder_id) {
						page = jQuery("input[name=page]", "#messages").val();
					};
					ajax_load_folder_messages({dp_id:opresult["message_object"].dp_id,folder_id:opresult["message_object"].folder_id}, page);
				}
			}//else
		}
	};
	save_message(options);
};

var save_message = function (options) {
	var defaults = {
		method: 'post',
		compose_form_id: 'compose_form',
		action: $('compose_form').action,
		form_error_list: $A(),
		field_error_list: {},
		onBeforeSubmit: function(settings) {},
		onNotValidOnClient: function(settings) 
		{
			form_error_cleanup(settings.compose_form_id);
			form_field_errors(settings.field_error_list, $('compose_form'));
			form_errors(settings.form_error_list, $('compose_form'));
		
		},
		onSubmit: function(settings, response) {},
		onNotValidOnServer: function(settings, opresult) 
		{
			form_error_cleanup(settings.compose_form_id);
			form_field_errors(opresult["field_error_list"], $('compose_form'));
			form_errors(opresult["form_error_list"], $('compose_form'));
		
		},
		onSuccessSubmit: function(settings, opresult) {}
	};
	var settings = jQuery.extend({}, defaults, options);

	var frm = $(settings.compose_form_id);
	var valid = true;
	
	if(valid) {
		// Loader ON!
		settings.onBeforeSubmit(settings);
		var params = Form.serialize(frm);
		var mst = relenta.state.get('message',0);
		if(mst.state=='saving' && mst.xtransport) {
			if(!jQuery.browser.msie6) {
				mst.xtransport.transport.abort();
				mst.xtransport = null;
			}
			relenta.state.update('message',0, {xtransport:null});
		}
		
		relenta.state.update('message',0, {state:"saving"});
		var transport = new Ajax.Request(settings.action+'?t='+Math.random(), {
			method: settings.method,
			parameters: params,
			onSuccess: function(response) {
				relenta.state.update('message',0, {state:"idle"});
				debug_print(response.responseText);
				settings.onSubmit(settings, response);
				eval(response.responseText);
				if("success"==opresult["status"]) {
					settings.onSuccessSubmit(settings, opresult);
					
				}
				else {
					settings.onNotValidOnServer(settings, opresult);
				}
			}
		});
		relenta.state.update('message',0, {xtransport:transport});
	}
	else {
		settings.onNotValidOnClient(settings);
	}//else
	return false;
}//save_message


function set_cookie( name, value, expires, path, domain, secure ) 
{
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	
	/*
	if the expires variable is set, make the correct 
	expires time, the current script below will set 
	it for x number of days, to make it for hours, 
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires )
	{
	expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	
	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
	( ( path ) ? ";path=" + path : "" ) + 
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
}


function get_cookie(name)
{
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) &&
	( name != document.cookie.substring( 0, name.length ) ) )
	{
	return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

function _read_site_pref()
{
	str_cookie = get_cookie('site_prefs');
	if(str_cookie) {
		tmp = str_cookie.split('|||');
		prefs = {};
		for(i=0; i<tmp.length; i++) {
			var ttmp = tmp[i].split('=');
			prefs[ttmp[0]] = ttmp[1];
		}//for
		return prefs;
	}
	else {
		return false;
	}
}//_read_site_pref

function _write_site_prefs(prefs)
{
	var _a = [];
	desma.util.each(prefs, function(k,v) {
		_a.push(k+'='+v);
	});
	str_cookie = _a.join('|||');
	//str_cookie = prefs.collect(function(v) { return v.key+'='+v.value;}).join('|||');
	set_cookie('site_prefs', str_cookie, 500);
}//_write_site_prefs

function set_site_pref(name,value)
{
	prefs = _read_site_pref();
	if( typeof prefs !='object') {
		prefs = {};
	}
	prefs[name] = value;
	_write_site_prefs(prefs);
}


function get_site_pref(name)
{
	if( !(prefs = _read_site_pref()) ) return false;
	return prefs[name];
}//GetSitePref



function popup(nam,lnk,add, w, h, al, sb)
{
	var ih = (screen.height/2)-h/2;
	var iw = (screen.width/2)-w/2;
	if( !sb ) sb = "no";
	wnd = window.open(lnk+add, nam , "top="+ih+", left="+iw+", height="+h+", width="+w+", scrollbars="+sb+", status=no, toolbar=no, menubar=no, location=no");wnd.focus();
}

function all_checkbox_toggle (id) {
	jQuery('#'+id+' input:checkbox').each(
		function () {
			if (jQuery(this).attr('checked') == true) {
				jQuery(this).attr('checked',false);
			}
			else {
				jQuery(this).attr('checked', true);
			}
		}
	);
	if (jQuery("#all").attr('checked') == true) {
		jQuery("#all").attr('checked',false);
	}
	else {
		jQuery("#all").attr('checked', true);
	}
}


// class Tabs
var Tabs = Class.create();

Tabs.prototype = {
	initialize: function(tabs_ids, current_tab_name, default_tab_name, act, inact, tab_prefix, tab_prefix_body)
	{
		this.tab_prefix = tab_prefix; // number of tabs
		this.tabs_ids = tabs_ids; // number of tabs
		this.tabs = {};
		this.class_active_tab = act?act:'active';
		this.class_inactive_tab = inact?inact:'inactive';
	//	this.class_active_base = act?act+'_base':'active_base';
	//	this.class_inactive_base = inact?inact+'_base':'inactive_base';
		this.tab_prefix_body = tab_prefix_body ? tab_prefix_body : this.tab_prefix;
		this.current_tab_name = current_tab_name; // 
		this.default_tab_name = default_tab_name; // 
		for(i = 0; i<this.tabs_ids.length; i++) {
			this.tabs[this.tabs_ids[i]] = {};
			this.tabs[this.tabs_ids[i]]["position"] = this.tabs_ids[i];
			this.tabs[this.tabs_ids[i]]["caption"] = $(this.tab_prefix+'_caption_'+this.tabs_ids[i]);
			this.tabs[this.tabs_ids[i]]["body"] = $(this.tab_prefix_body+'_body_'+this.tabs_ids[i]);
			this.deactivate(this.tabs_ids[i]);
		}
		if(!this.activate(this.current_tab_name)) {
			this.activate(this.default_tab_name);
		}

		
	},
	
	tabExists:function(name)
	{
		for(i = 0; i<this.tabs_ids.length; i++) {
			if(this.tabs_ids[i]==name) return true;
		}
		return false;
	},
	changeTab:function(name, f) {
		if(this.tabExists(name)) {
			this.deactivate(this.current_tab_name);
			this.activate(name);
			if(!f) {
				this.onChange();
			}
		}
	},
	setCaption:function(name, tab_caption) {
		if(this.tabExists(name)) {
			if(tab_caption) {
				jQuery(this.tabs[name]["caption"]).html(tab_caption);
			}
		}
	
	},
	showTab:function(name) {
		if(this.tabExists(name)) {
			jQuery(this.tabs[name]["caption"]).show();
		}
	},
	hideTab:function(name) {
		if(this.tabExists(name)) {
			jQuery(this.tabs[name]["caption"]).hide();
		}
	},
	
	deactivate:function(name) {
		if(this.tabExists(name)) {
			this.tabs[name]["caption"].className = this.class_inactive_tab;
	//		this.tabs[name]["base"].className = this.class_inactive_base;
			jQuery(this.tabs[name]["body"]).hide();
		}
	},
	activate:function(name) {
		if(this.tabExists(name)) {
			Element.show(this.tabs[name]["caption"]);
			this.tabs[name]["caption"].className = this.class_active_tab;
	//		this.tabs[name]["base"].className = this.class_active_base;
			Element.show(this.tabs[name]["body"]);
			this.current_tab_name = name;
			return true;
		}
		return false;
	},
	onChange:function(){}
}


function popup(nam,lnk,add,h,w,sb)
{
	if (isNaN(parseInt(h)) || parseInt(h) <= 0)
	{
		h = screen.height - 80;
	}
	if (isNaN(parseInt(w)) || parseInt(w) <= 0)
	{
		w = screen.width - 50;
	}
	var ih = 1;
	var iw = 1;
	if( !sb ) sb = "no";
	//sb = 1;
	wnd = window.open(lnk+add, nam , "top="+ih+", left="+iw+", height="+h+", width="+w+", scrollbars="+sb+", status=1, toolbar=no, menubar=no, location=no");
	if(wnd&&wnd.focus) wnd.focus();
}


function mod10(number) {
	var total = 0;
	var flag = 0;
	for (var i=(number.length - 1);i>=0; i--) {
		if (flag == 1) {
			if(number.charAt(i)>="0" && number.charAt(i)<="9") {
				var digits = number.charAt(i) * 2;
				if (digits > 9) digits -= 9;
				total += digits;
				flag = 0;
			}
		} else {
			if(number.charAt(i)>="0" && number.charAt(i)<="9") {
				total = total + parseInt(number.charAt(i));
				flag = 1;
			}
		}
	}

	if (total>0 && (total%10) == 0) {
		return true;
	} else {
		return false;
	}
}

function showMessage(name, message, type, error, reload) 
{
	if(window.message_hide_to) { // If timeout was already set - clear it
		clearTimeout(window.message_hide_to);
	}
	if (error == 1) 
	{
		id = name+"_error";
	}
	else
	{
		jQuery("#"+name+"_error:visible").hide();
		id = name+"_status";
	}
	jQuery("#"+id).html(message);
	jQuery("#"+id).addClass(type);
	jQuery("#"+id).show();
	if (error == 0) 
	{ 
		if ( reload == 1 ) 
		{
			setTimeout("window.location.reload()", 5000);
		}
		else
		{
			window.message_hide_to = setTimeout("hideMessage(id)", 5000);
		}
	}
}// showMessage


function hideMessage(id) 
{
	jQuery("#"+id).hide();
}// hideMessage

function array_unique(arr)
{
	var vic = new Object();
	for(i=0; i < arr.length; i++)
		vic[arr[i]] = "";
	arr = new Array();
	for(i in vic)
		arr[arr.length] = i;
	return arr;
}// array_unique

var show_pictures = function (id) 
{
	i = 0;
	jQuery("#body_"+id+" .mod_img").each(
		function () 
		{
			//this.src = jQuery("input[name=image_source_"+i+"]").val();
			//this.className = "";
			desma.dom(this).attr('src', desma.dom(this).attr('data-src')).removeClass('mod_img');
			
			//i++;
		}
	);
	
	jQuery("#show_pictures_div_"+id).remove();
	return;
}// show_pictures
// 

// form_object
var check_relenta_net_username = function ( username , post_process )
{
	new Ajax.Request(
		"/", 
		{
			method:'get',
			parameters:'m=mail_account&a=ajax_check_relenta_net_username&username='+username,
			onSuccess: function(response) {
				eval(response.responseText);
				if (opresult['status'] == "exist") {
					jQuery("#mailbox_name").before("<div class='error_message'>This mailbox is already exist.</div>");
					jQuery(jQuery('#mailbox_name').parents('tr')[0]).addClass('error_field');
				} else {
					post_process(opresult);
				}
			}
		}
	);
}// check_relenta_net_username

var show_contact_info = function(cn_id, container)
{
	jQuery('#'+container).toggle();
	if($(container).style.display!='none') {
		new Ajax.Request(
			"/",
			{
				method:'get',
				parameters:'m=ajax_contact&a=ajax_show_contact_info&cn_id='+cn_id,
				onSuccess: function(t) {
					$(container).innerHTML = t.responseText;
					setTimeout(function() {t.responseText.evalScripts()}, 10);
				}
			}
		);
	}
}// show_contact_info

var unlink_contact = function (message_id, cn_id, folder_name, mode)
{
	if (confirm("Click OK to unlink this email from contact.\nNote: this email is located in "+folder_name+" folder.") == true) {
		new Ajax.Request(
			"/",
			{
				method:'get',
				parameters:'m=ajax_message&a=ajax_unlink_contact&message_id='+message_id+'&cn_id='+cn_id,
				onSuccess: function(response) {
					eval(response.responseText);
					jQuery("#unlink_status").remove();
					jQuery("#unlink_error").remove();
					if(opresult["status"]=="success") {
						if (mode == "contact") {
							//contact view
							jQuery("#msg"+message_id).remove();
							jQuery("#minf"+message_id).remove();
						}
						else {
							// info
							if(opresult["message_is_linked_to_contact"]) {
								
							}
							else {
								jQuery("#msg"+message_id).removeClass("contact");
								jQuery("#msgcntd"+message_id).removeClass('mr-linked-contact');
							}
							jQuery("#minf"+message_id+' > div').empty();
							ajax_folder_activity_item_info_load(message_id, 'minf'+message_id);
							
						}
						jQuery("#content_loadable").prepend("<div id='unlink_status'></div>");
						showMessage("unlink", opresult["message"],"info-message", 0);
					}
					else {
						jQuery("#content_loadable").prepend("<div id='unlink_error'></div>");
						showMessage("unlink", opresult["message"],"error-message", 1);
					}
				}
			}
		);
	};
}// unlink_contact

var confirmation = function (url, message) 
{
	if (confirm(message)) {
		document.location.href = url;
	}
}// confirmation



/* HTML/RICH TEXT EDITOR AND HELPER FUNCTIONS */
var editor_status = new Array();


function editor_setup_content(editor_id, body, doc) 
{
	if(jQuery('input[name=f_html]',jQuery('#'+editor_id).parents('form')).attr('value')==1) {
		body.innerHTML = jQuery('#'+editor_id,jQuery('#'+editor_id).parents('form')).val();
	}
	else {
		jQuery('input[name=f_html]',jQuery('#'+editor_id).parents('form')).attr('value','1');
		body.innerHTML = jQuery('#'+editor_id,jQuery('#'+editor_id).parents('form')).val().replace(/$/img,"<br/>\n");
	}
}

var stripTags_TinyMCE = function(editor_id) { //strips html tags leaving plain text
	//content=tinyMCE.getContent(tinyMCE.getEditorId(txtfield));
	
	//var content = tinyMCE.get(editor_id).getContent({format:'text'}).replace(/(\r|\n)/gim,'').replace(/<br[^<>]*>(?:\r|\n|\s)*$/gim, '').replace(/<br[^<>]*>/gi,'');
	var content = tinyMCE.get(editor_id).getContent({format:'text'}).replace(/(\r|\n)/gim,'').replace(/<\/(?:div|h1|h2|h3|h4|h5|blockquote|table|tr|td)>/gim,'<br/>').replace(/<br[^<>]*>/gi,'\n').stripScripts().stripTags();
	return content;
	
	var content=tinyMCE.get(editor_id).getContent();
	//alert(content);
	//var re = /(<[^>]+>)/g ; //strip all tags
	//content = "h1<head>\r\nsdasda<head>";
	//this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
	var plaintext = content.replace(new RegExp('<head[^>]*>.*?<\/head>', 'img'), '');
	plaintext = plaintext.replace(/<p[^<>]*>(?:\s|\r|\n)*/img,"#ppp#");
	plaintext = plaintext.replace(/<\/p[^<>]*>(?:\s|\r|\n)*/img,"#rrr#");
	// alert(plaintext);
	plaintext = plaintext.replace(/<br[^<>]*>(?:\s|\r|\n)*/img,"#brb#");
	//alert(plaintext);
	
	plaintext = plaintext.stripScripts().stripTags();
	
	plaintext = plaintext.replace(/\s+/," ");
	plaintext = plaintext.replace(/^\s+/img,"\n");
	plaintext = plaintext.replace(/\s+$/img,"\n");
	plaintext = plaintext.replace(/\n+/img,"\n");
	plaintext = plaintext.strip();
	plaintext = plaintext.replace(/#ppp#\s*/img,"");
	plaintext = plaintext.replace(/#rrr#\s*/img,"\n");
	plaintext = plaintext.replace(/#brb#\s*/img,"\n");
	// alert(plaintext);
	plaintext = plaintext.unescapeHTML();
	return plaintext;
}

var disable_dhtml_editors = function()
{
	disable_editor('body');
};

var disable_editor = function(editor_id)
{
	if(is_editor_enabled(editor_id)) {
		// FIXME
		if(desma.dom('#compose_form input[name=from_identity_id]').size()) {
			relenta.identity.signatureHtmlToTextPlaceholder(editor_id);
		}
		var plaintext = stripTags_TinyMCE(editor_id);
		tinyMCE.execCommand('mceRemoveControl', false, editor_id);
		jQuery('input[name=f_html]',jQuery('#'+editor_id).parents('form')).attr('value','0');
		editor_status[editor_id] = 'disabled';
		jQuery('#'+editor_id).val(plaintext);
		jQuery('#'+editor_id).show();
		jQuery('#link_html_edit').text("Rich text");
		relenta.identity.insertSignature(desma.dom('#compose_form input[name=from_identity_id]').val(), editor_id);
	}
	
}

var enable_editor = function(editor_id)
{
	// FIXME
	if(desma.dom('#compose_form input[name=from_identity_id]').size()) {
		relenta.identity.signatureTextToHtml(desma.dom('#compose_form input[name=from_identity_id]').val(), editor_id);
	}
	tinyMCE.init({
		title : "",
		theme : "advanced",
		editor_selector : "mce-full-page",
		mode : "none",
		auto_reset_designmode : true,
		//elements : "body",
		content_css : "/css/tinymce.css?aruba",
		//editor_css : "/myeditor.css",
		plugins : "inlinepopups,style,safari",
		setupcontent_callback: "editor_setup_content",
		theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,forecolor,backcolor,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,image,separator,link,unlink,separator",
		theme_advanced_buttons1_add : "fontselect,fontsizeselect,separator,code,separator", //,spellchecker",
		//spellchecker_languages : "+English=en",
		theme_advanced_buttons2 : "",	
		theme_advanced_disable : "help, styleselect,hr,removeformat,sub,sup",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		theme_advanced_path_location : "bottom",
	    theme_advanced_resize_horizontal : false,
		theme_advanced_resizing : true,
		apply_source_formatting : true,
		force_br_newlines : true,
		forced_root_block : '',
		//force_p_newlines : false,
	    //convert_newlines_to_brs : true,
	    remove_trailing_nbsp : true,
		theme_advanced_path : false,
		//fullpage_default_font_size : "12px",
		//fullpage_default_title: "a",
		
		//cleanup_on_startup : false,
		//cleanup : false,
		//verify_html : false,
		//apply_source_formatting : false,
		
			
		// valid_elements: "*[*]",
		valid_elements : "@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|"
		+ "onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|"
		+ "onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|"
		+ "name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,"
		+ "#p[align],-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|"
		+ "src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,"
		+ "-blockquote,-table[border=0|cellspacing|cellpadding|width|frame|rules|"
		+ "height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|"
		+ "height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,"
		+ "#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor"
		+ "|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,"
		+ "-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face"
		+ "|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],"
		+ "object[classid|width|height|codebase|*],param[name|value|_value],embed[type|width"
		+ "|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,"
		+ "button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|"
		+ "valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],"
		+ "input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value],"
		+ "kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],"
		+ "q[cite],samp,select[disabled|multiple|name|size],small,"
		+ "textarea[cols|rows|disabled|name|readonly],tt,var,big,"
		+ "style[*]",
		//invalid_elements: "object,applet,iframe",
		width:"100%",
		height:"300px",
	    
		setup : function(ed) {
			ed.onChange.add(function(ed, l) {
				jQuery('#'+ed.editorId).val(l.content).trigger('keyup');
			});
		}
	});
	
	
	switch(editor_id) {
		case 'canned_response_message':
		break;
		default:
			
		break;
	}
	tinyMCE.idCounter=0;
	//tinyMCE.execCommand('mceResetDesignMode');
	tinyMCE.execCommand('mceAddControl', false, editor_id);
	editor_status[editor_id] = 'enabled';
	jQuery('#link_html_edit').text("Plain text");
}



var is_editor_enabled = function(editor_id)
{
	return (typeof editor_status[editor_id] != 'undefined' && editor_status[editor_id]=='enabled');
}

var toggle_editor = function(editor_id)
{
	try {
		if(is_editor_enabled(editor_id)) {
			if(confirm('This will change your message into plain text. All formatting will be lost. Continue?')) {
				disable_editor(editor_id);
			}
		}
		else {
			enable_editor(editor_id);
		}
	}
	catch(e) {
		alert('Error: cannot toggle editor '+editor_id);
	}
	
};


/* FFU. form file upload */

var form_file_upload = function(prm)
{
	prm = jQuery.extend({
		file_prefix:'file'
		}, 
		prm);
	var jcontainer = jQuery(prm.container);
	var ub = jQuery('.form_file_upload_block',jcontainer);
	ub.show();
	var file_input_id = 'finp'+relenta_gen_id();
	var ublist = jQuery('.form_file_input_list',ub);
	ublist.append('<div id="c_'+file_input_id+'"><input id="'+file_input_id+'" class="file_item" type="file" style="width:150px" name="'+prm.file_prefix+'_'+file_input_id+'"/></div>');
	if(jQuery('input[type=file]',ublist).size()) {
		jQuery('.upload_link_control', jcontainer).html('Upload another file');
	}
	jQuery('#'+file_input_id).bind('change',function() {
		form_file_upload_start(this, prm);
	});
	return false;
}


var form_file_upload_start = function(file_input, prm)
{
	var fid = jQuery(file_input).attr('id')
	var jcontainer= jQuery(prm.container);
	
	jQuery(document.body).append('<iframe name="ifrhidden_'+fid+'" id="ifrhidden_'+fid+'" style="display:block;height:150px;width:800px;" frameborder="0">&nbsp;</iframe>');
	// store
	var module = jQuery('input[name=m]',jcontainer).val();
	var action = jQuery('input[name=a]',jcontainer).val();
	
	if(!jQuery('input[name=file_input_id]',jcontainer).size()) {
		jcontainer.append('<input type="hidden" name="file_input_id"/>');
	}
	jQuery('input[name=file_input_id]',jcontainer).val(fid);
	jQuery('input[name=m]',jcontainer).val('ajax_file');
	jQuery('input[name=a]',jcontainer).val('ajax_file_upload');
	if(prm.file_prefix) {
		if(!jQuery('input[name=file_prefix]',jcontainer).size()) {
			jQuery(jcontainer).append('<input type="hidden" name="file_prefix" value=""/>');
		}
		jQuery('input[name=file_prefix]',jcontainer).val(prm.file_prefix);
	}
	// submit
	// IE hack
	jcontainer.attr('action','/').attr('target','ifrhidden_'+fid);
	jcontainer_dom = jcontainer[0];
	jcontainer_dom.target="ifrhidden_"+fid;
	jcontainer_dom.submit();
	
	// disable 	
	
	var container_id = 'c_'+fid;
	var user_file_name = jQuery(file_input).val();
	jQuery(file_input).attr('disabled','disabled').remove();
	jQuery('#'+container_id).remove();
	
	form_file_upload_list_item_add(
		jQuery(jcontainer),
		{
			fid:fid, 
			human_name:user_file_name, 
			status:'uploading',
			remove:function() {
				form_file_upload_cancel(jcontainer, fid);
			} 
		}
	);
	
	// restore
	jQuery('input[name=m]',jcontainer).val(module);
	jQuery('input[name=a]',jcontainer).val(action);
	
};

var form_file_upload_list_item_add = function(container, item)
{
	jQuery('.form_file_uploaded_container',container).show();
	var upload_list_c = jQuery('.form_file_upload_list',container);
	if(!jQuery('#ufi_'+item.fid, upload_list_c).size()) {
		var delim = '<span class="file_item_delim" style="display:none;">, </span>';
		if(jQuery('.file_item_in_list',upload_list_c).size()) {
			delim = '<span class="file_item_delim">, </span>';
		}
		var human_name = item.human_name.split(/\\|\//);
		human_name = human_name[human_name.length-1];
		var file_ext = human_name.replace(/^.*\./, '');
		
		if(item.status=='uploading') {
			upload_list_c.append('<span class="file_item_cdlm">'+delim+'<div id="ufi_'+item.fid+'" class="file_item_in_list uploading file ext_'+file_ext+'">'+human_name+' (<a class="lnk" id="rl_'+item.fid+'" href="#">cancel</a>)</div></span>');
		}
		else {
			upload_list_c.append('<span class="file_item_cdlm">'+delim+'<div id="ufi_'+item.fid+'" class="file_item_in_list file ext_'+file_ext+'">'+human_name+' (<a class="lnk" id="rl_'+item.fid+'" href="#">remove</a>)</div></span>');
		}
		jQuery('#rl_'+item.fid).bind('click', function() { item.remove(); return false;});
	}
};

var form_file_upload_cancel = function(frm, fid)
{
	jQuery('#rl_'+fid).parents('.file_item_cdlm').remove();
	jQuery('input.file_'+fid,frm).remove();
	var upload_list_c = jQuery('.form_file_upload_list',frm);
	var first_file_item_cdlm = jQuery('.file_item_cdlm:first',upload_list_c);
	if(first_file_item_cdlm.size()) {
		jQuery('.file_item_delim',first_file_item_cdlm).hide();
	}
	else {
		jQuery('.form_file_uploaded_container',frm).hide();
	}
	jQuery('#ifrhidden_'+fid).attr('src','').remove();
	
	return false;
};
var form_file_upload_remove = function(fid, file_prefix)
{
	file_prefix = file_prefix || 'file';
	var frm = jQuery('#rl_'+fid).parents('form');
	jQuery('input.'+file_prefix+'_'+fid, frm).remove();
	jQuery('#rl_'+fid).parents('.file_item_cdlm').remove();
	
	var upload_list_c = jQuery('.form_file_upload_list',frm);
	var first_file_item_cdlm = jQuery('.file_item_cdlm:first',upload_list_c);
	if(first_file_item_cdlm.size()) {
		jQuery('.file_item_delim',first_file_item_cdlm).hide();
	}
	else {
		jQuery('.form_file_uploaded_container',frm).hide();
	}
	jQuery('#ifrhidden_'+fid).attr('src','').remove();
	
	return false;
};


var form_file_upload_finished = function(fid, file_id, file_prefix)
{
	file_prefix = file_prefix || 'file'; 
	var frm = jQuery('#rl_'+fid).parents('form');
	jQuery('#ufi_'+fid).removeClass('uploading');
	jQuery('#rl_'+fid)
		.html('remove')
		.unbind('click')
		.click(function() {
			form_file_upload_remove(fid, file_prefix);
			return false;
		});
	if(!jQuery('input[value='+file_id+']',frm).size()) {
		jQuery(frm).append('<input type="hidden" name="'+file_prefix+'s[]" class="'+file_prefix+'_'+fid+'" value="'+file_id+'"/>');
	}
	jQuery('#ifrhidden_'+fid).attr('src','').remove();
	return false;
};


var form_file_upload_error = function(msg)
{
	alert(msg);
};





relenta.activity.filter_item_list = function(select, container)
{
	var select_val_arr = jQuery(select).val().split('@');
	var object_type_val =  select_val_arr[0];
	var object_type_filter = null;
	if(select_val_arr.length>1) {
		object_type_filter = select_val_arr[1];
	}

	var v = object_type_val.split('-');
	var object_full_type = object_type_val;
	var object_type = v[0];
	var object_subtype = null;
	if(v.length>1) {
		object_subtype = v[1];
	}
	
	if(object_full_type=='all') {
		jQuery('.mrow','#'+container).filter('.deleted').hide();
		jQuery('.mrow','#'+container).not('.deleted').show();
	}
	else {
		jQuery('.mrow','#'+container).hide();
		jQuery('.activity-item-info','#'+container).hide();
		if(object_type_filter) {
			jQuery('.'+object_full_type,'#'+container).hide();
			if(object_type_filter=='deleted') {
				jQuery('.'+object_full_type,'#'+container).filter('.'+object_type_filter).show();
			}
			else {
				jQuery('.'+object_full_type,'#'+container).filter('.'+object_type_filter).not('.deleted').show();
			}
		}
		else {
			jQuery('.'+object_full_type,'#'+container).not('.deleted').show();
		}
		
	}
	
	if(!jQuery('.mrow:visible','#'+container).size()) {
		//alert('No activity');
	}
	return false;
};

var toggle_contact_info_details = function (element)
{
	var container = desma.dom(element).closest('.r_contact');
	desma.dom('.contact-info-more',container).toggle();
	if (desma.dom(".contact-info-more",container).is(":visible")) {
		desma.dom(".ci-less",container).show();
		desma.dom(".contact-view-control a",container).html("Less is more");
		
	} else {
		desma.dom(".ci-less",container).hide();
		desma.dom(".contact-view-control a",container).html("More");
	}
	desma.event.trigger('after.contact_info_toggle.contact_page', {element:element});
	return false;
};


relenta.tag = {};

relenta.tag.object_tag_set = function(container_id, dp_id, obj_type_name, obj_id) 
{

	var tags = jQuery('#tag-input-'+container_id).val();
	jQuery('#tag-input-'+container_id).val('');
	relenta.tag.object_tag_add_form_toggle(container_id, obj_type_name, obj_id);
	new Ajax.Request('/', {
		method: 'get',
		parameters: 'm=ajax_tag&a=ajax_object_tag_set&dp_id='+dp_id+'&obj_type_name='+obj_type_name+'&obj_id='+obj_id+'&tags='+escape(tags),
			onSuccess: function(response) {
				debug_print(response.responseText);
				eval(response.responseText);
				if("success"==opresult["status"]) {
					jQuery('span.tag','#obj-tags-'+container_id).remove();
					jQuery.each(opresult.object_tags, function(i,tag_obj_link) {
						jQuery('.obj-tag-form','#obj-tags-'+container_id).before('<span class="tag'+(tag_obj_link.is_private?' tag-private':'')+'"'+(tag_obj_link.tag_color?' style="color:'+tag_obj_link.tag_color+';"':'')+' id="tag'+tag_obj_link.tag_id+'"><a href="/?m=tag&dp_id='+dp_id+'&tag_id='+tag_obj_link.tag_id+'">'+tag_obj_link.tag_label+'</a><a href="#" onclick="relenta.tag.object_tag_unlink(\''+container_id+'\','+dp_id+',\''+obj_type_name+'\', '+obj_id+', '+tag_obj_link.tag_id+'); return false;" class="tag-unlink bullet-delete">&nbsp;</a></span>');
					});
				}
			}
		});
};

relenta.tag.object_tag_unlink = function(container_id, dp_id, obj_type_name, obj_id, tag_id)
{
	new Ajax.Request('/', {
		method: 'get',
		parameters: 'm=ajax_tag&a=ajax_object_tag_unlink&dp_id='+dp_id+'&obj_type_name='+obj_type_name+'&obj_id='+obj_id+'&tag_id='+tag_id,
			onSuccess: function(response) {
				debug_print(response.responseText);
				eval(response.responseText);
				if("success"==opresult["status"]) {
					jQuery('#tag'+tag_id,'#obj-tags-'+container_id).remove();
				}
			}
		});
};

relenta.tag.object_tag_add_form_toggle = function(container_id, obj_type, obj_id)
{
	// Hack... jQuery messes with toggle statuses...
	if (desma.dom("#obj-tag-add-"+container_id).is(":visible")) {
		desma.dom("#obj-tag-add-"+container_id).hide();
	}
	else {
		desma.dom("#obj-tag-add-"+container_id).show();
	}
	// jQuery('#obj-tag-add-'+container_id).toggle();
	jQuery('#obj-tag-add-link-'+container_id).toggle();
};

relenta.mini_panel_toggle = function(panel_name, obj_type, obj_id, panels_container)
{
	jQuery('.mini-panel', panels_container).not('.'+panel_name).hide();
	jQuery('.'+panel_name, panels_container).toggle();

};

relenta.mini_panel_hide = function(panel_name, obj_type, obj_id, panels_container)
{
	jQuery('.mini-panel', panels_container).hide();
};



// FILE_EXLPLORER

relenta.file_explorer.container_default = '#file_explorer_container';

relenta.file_explorer.file_tree = function(container, dp_id)
{
	jQuery('.file_explorer_tree',container).fileTree({
			root:'',
			multiFolder:false,
			script:'/?m=file&a=file_tree&dp_id='+dp_id,
			container: container,
			dp_id: dp_id
		}, 
		function(node_path, elm, opts) {
			if(jQuery(elm).parent().is('.directory')) {
				jQuery('a', container).removeClass('item-active');
				jQuery('li.expanded > a', container).addClass('item-active');
				if(jQuery(elm).parent().hasClass('collapsed')) {
					// get parent
					var parent_file_folder_id = parseInt(jQuery(elm).attr('parent_file_folder_id'));
					if(parent_file_folder_id) {
						var parent_elm = jQuery('a[rel='+parent_file_folder_id+'/]',container);
						elm = parent_elm;
						node_path = jQuery(parent_elm).attr('rel');
					}
				}
				
				if(parent_file_folder_id==0) {
					jQuery('.file-explorer-top-folder-add',container).show();
					jQuery('.file-explorer-sub-folder-add',container).hide();
					jQuery('.file-explorer-top-folder-upload',container).show();
					jQuery('.file-explorer-sub-folder-upload',container).hide();
					jQuery('input[name=parent_file_folder_id]',container).val(0);
				}
				else {
					jQuery('.file-explorer-top-folder-add',container).hide();
					var html_template = jQuery('.file-explorer-sub-folder-add-template',container).html();
					html_template = html_template.replace(/%folder_name%/,jQuery(elm).html());
					jQuery('.file-explorer-sub-folder-add',container).html(html_template);
					jQuery('.file-explorer-sub-folder-add',container).show();
					
					jQuery('.file-explorer-top-folder-upload',container).hide();
					var html_template = jQuery('.file-explorer-sub-folder-upload-template',container).html();
					html_template = html_template.replace(/%folder_name%/,jQuery(elm).html());
					jQuery('.file-explorer-sub-folder-upload',container).html(html_template);
					jQuery('.file-explorer-sub-folder-upload',container).show();
					
					jQuery('input[name=parent_file_folder_id]',container).val(node_path);
					
					relenta.file_explorer.info(container, opts.dp_id, node_path, 'file_folder', node_path);
				}
				
				
				
				
			}
			else {
				jQuery('input[name=parent_file_folder_id]',container).val(jQuery(elm).attr('parent_file_folder_id'));
				relenta.file_explorer.info(container, opts.dp_id, jQuery(elm).attr('parent_file_folder_id'), 'file', node_path);
			}
			
			
		}
	);
};

relenta.file_explorer.file_tree_refresh = function(container, dp_id, parent_file_folder_id)
{
	
	if(parent_file_folder_id && jQuery('a[rel='+parent_file_folder_id+']', container).size()) {
		jQuery('a[rel='+parent_file_folder_id+']', container).trigger('click').trigger('click');
	}
	else {
		relenta.file_explorer.file_tree(container,dp_id);
	}
};


relenta.file_explorer.file_folder_delete = function(container, dp_id, parent_file_folder_id, file_folder_id)
{
	if(confirm('Are you sure you want to delete "'+jQuery('.item-title',container).html()+'" folder and all its content?')) {
		new Ajax.Request('/', {
			method: 'get',
			parameters: 'm=ajax_file&a=ajax_file_folder_delete&dp_id='+dp_id+'&parent_file_folder_id='+parent_file_folder_id+'&file_folder_id='+file_folder_id,
			onSuccess: function(response) {
				debug_print(response.responseText);
				//eval(response.responseText);
				jQuery(container).remove();
				relenta.file_explorer.file_tree_refresh(
					relenta.file_explorer.container_default,
					dp_id,
					parent_file_folder_id
				);
			}
		});
	
	}
	return false;
}

relenta.file_explorer.file_delete = function(container, dp_id, parent_file_folder_id, file_id)
{
	if(confirm('Are you sure you want to delete "'+jQuery('.item-title',container).html()+'" file?')) {
		new Ajax.Request('/', {
			method: 'get',
			parameters: 'm=ajax_file&a=ajax_file_folder_unlink&dp_id='+dp_id+'&parent_file_folder_id='+parent_file_folder_id+'&file_id='+file_id,
			onSuccess: function(response) {
				debug_print(response.responseText);
				//eval(response.responseText);
				jQuery(container).remove();
				relenta.file_explorer.file_tree_refresh(
					relenta.file_explorer.container_default,
					dp_id,
					parent_file_folder_id
				);
			}
		});
	}
	return false;
};

relenta.file_explorer.ui_item_edit_form = function(link)
{
	jQuery('.item-form', jQuery(link).parents('.file-explorer-item-info')).toggle();
	return false; 
};

relenta.file_explorer.file_folder_rename = function(container, dp_id, parent_file_folder_id, file_folder_id, file_folder_name)
{
	new Ajax.Request('/', {
		method: 'get',
		parameters: 'm=ajax_file&a=ajax_file_folder_rename&dp_id='+dp_id+'&parent_file_folder_id='+parent_file_folder_id+'&file_folder_id='+file_folder_id+'&file_folder_name='+escape(file_folder_name),
		onSuccess: function(response) {
			debug_print(response.responseText);
			eval(response.responseText);
			jQuery('.item-title', container).html(opresult.item.human_name);
			jQuery('.ff-'+file_folder_id).html(opresult.item.human_name);
			relenta.file_explorer.file_tree_refresh(
				relenta.file_explorer.container_default,
				dp_id,
				parent_file_folder_id);
		}
	});
	return false;
};



relenta.file_explorer.file_rename = function(container, dp_id, parent_file_folder_id, file_id, file_name)
{
	new Ajax.Request('/', {
		method: 'get',
		parameters: 'm=ajax_file&a=ajax_file_rename&dp_id='+dp_id+'&parent_file_folder_id='+parent_file_folder_id+'&file_id='+file_id+'&file_name='+escape(file_name),
		onSuccess: function(response) {
			debug_print(response.responseText);
			eval(response.responseText);
			jQuery('.item-form', container).hide();
			jQuery('.item-title', container).html(opresult.item.human_name);
			jQuery('.ff-'+parent_file_folder_id+'-'+file_id)
				.removeClass('.ff-'+parent_file_folder_id+'-'+file_id)
				.addClass('.ff-'+parent_file_folder_id+'-'+opresult.item.file_id)
				.attr('rel',opresult.item.file_id)
				.html(opresult.item.human_name);
		}
	});
	return false;
};


relenta.file_explorer.ui_file_download = function(container, dp_id, parent_file_folder_id, file_id)
{
	document.location.href="/?m=file&a=file_download&file_prefix=file&dp_id="+dp_id+"&file_id="+file_id;
	return false;
};

relenta.file_explorer.info = function(container, dp_id, parent_file_folder_id, type, id)
{
	switch(type) {
		case 'file_folder':
			new Ajax.Request('/', {
				method: 'get',
				parameters: 'm=ajax_file&a=ajax_file_folder_info&dp_id='+dp_id+'&file_folder_id='+id,
				onSuccess: function(response) {
					debug_print(response.responseText);
					eval(response.responseText);
					if('success'==opresult.status) {
						++relenta.gid;
						var elm_id = 'elm-'+relenta.gid;
						jQuery('.file-explorer-item-info', container).html(
							''
							+'<div class="item-info" id="'+elm_id+'">'
								+'<div class="item-title">'+opresult.item.human_name+'</div>'
								+'<div class="item-control">'
									+'<a href="#" class="lnk" onclick="return relenta.file_explorer.ui_item_edit_form(this); return false;">Rename</a>'
									+'<a href="#" class="lnk" onclick="return relenta.file_explorer.file_folder_delete(\'#'+elm_id+'\','+dp_id+',\''+opresult.item.parent_id+'\','+opresult.item.file_folder_id+'); return false;">Delete</a>'
								+'</div>'
								+'<div class="item-form" style="display:none;">'
									+'<form name="form_rename">'
										+'<input type="text" style="width:80%;" name="item_name" value="'+opresult.item.human_name+'"/>&nbsp;'
										+'<input type="button" value="Save" onclick="return relenta.file_explorer.file_folder_rename(\'#'+elm_id+'\','+dp_id+',\''+parent_file_folder_id+'\','+opresult.item.file_folder_id+',jQuery(\'input[name=item_name]\',\'#'+elm_id+'\').val());" name="Save"/>'
									+'</form>'
								+'</div>'
							+'</div>'
							
						);
					}
					else {
						jQuery('.item-info', container).empty();
					}
				}
			});
			
		break;
		case 'file':
			new Ajax.Request('/', {
				method: 'get',
				parameters: 'm=ajax_file&a=ajax_file_info&dp_id='+dp_id+'&file_id='+id,
				onSuccess: function(response) {
					debug_print(response.responseText);
					eval(response.responseText);
					if('success'==opresult.status) {
						++relenta.gid;
						var elm_id = 'elm-'+relenta.gid;
						jQuery('.file-explorer-item-info', container).html(
							''
							+'<div class="item-info" id="'+elm_id+'">'
								+'<div class="item-title">'+opresult.item.human_name+'</div>'
								+'<div class="item-meta-info">'
									+'<ul>'
										+'<li>Created: '+opresult.item.human_dt_created+'</li>'
										+'<li>Size: '+opresult.item.human_size+'</li>'
									+'</ul>'
								+'</div>'
								+'<div class="item-control">'
									+'<a href="#" class="lnk" onclick="return relenta.file_explorer.ui_file_download(\'#'+elm_id+'\','+dp_id+',\''+parent_file_folder_id+'\','+opresult.item.file_id+'); return false;">Download</a>'
									+'<a href="#" class="lnk" onclick="return relenta.file_explorer.ui_item_edit_form(this); return false;">Rename</a>'
									+'<a href="#" class="lnk" onclick="return relenta.file_explorer.file_delete(\'#'+elm_id+'\','+dp_id+',\''+parent_file_folder_id+'\','+opresult.item.file_id+'); return false;">Delete</a>'
								+'</div>'
								+'<div class="item-form" style="display:none;">'
									+'<form name="form_rename">'
										+'<input type="text" style="width:80%;" name="item_name" value="'+opresult.item.human_name+'"/>&nbsp;'
										+'<input type="button" value="Save" onclick="return relenta.file_explorer.file_rename(\'#'+elm_id+'\','+dp_id+',\''+parent_file_folder_id+'\','+opresult.item.file_id+',jQuery(\'input[name=item_name]\',\'#'+elm_id+'\').val());" name="Save"/>'
									+'</form>'
								+'</div>'
							+'</div>'
							
						);
					}
					else {
						jQuery('.item-info', container).empty();
					}
				}
			});
		break;
	
		
	} 
	
};

relenta.file_explorer.file_folder_create = function(container, dp_id, parent_file_folder_id, file_folder_name)
{

	parent_file_folder_id = parent_file_folder_id || 0;
	new Ajax.Request('/', {
		method: 'get',
		parameters: 'm=ajax_file&a=ajax_file_folder_create&dp_id='+dp_id+'&parent_file_folder_id='+parent_file_folder_id+'&file_folder_name='+escape(file_folder_name),
		onSuccess: function(response) {
			debug_print(response.responseText);
			//eval(response.responseText);
			jQuery('#ctrl_set_mkdir', container).hide();
			jQuery('input[name=file_folder_name]','#ctrl_set_mkdir').val('');
			relenta.file_explorer.file_tree_refresh(container, dp_id, parent_file_folder_id);
			
		}
	});

};



relenta.file_explorer.get_current_file_folder = function()
{
	return jQuery('[name=parent_file_folder_id]', relenta.file_explorer.container_default).val();
};


relenta.file_explorer.form_file_upload_finished = function (fid, file_id) 
{
	var dp_id = relenta.request.dp_id;
	var parent_file_folder_id = relenta.file_explorer.get_current_file_folder();
	new Ajax.Request('/', {
		method: 'get',
		parameters: 'm=ajax_file&a=ajax_file_folder_link&file_id='+file_id+'&parent_file_folder_id='+parent_file_folder_id,
		onSuccess: function(response) {
			debug_print(response.responseText);
			relenta.file_explorer.file_tree_refresh(relenta.file_explorer.container_default, dp_id, parent_file_folder_id);
			jQuery('#ctrl_set_file_upload').hide();
			jQuery('input[type=file]','#ctrl_set_file_upload').val('');
			
		}
	});
	return;
};

relenta.file_explorer.form_file_upload_error = function(msg)
{
	alert(msg);
};

relenta.file_explorer.file_explorer_widget = function(container, dp_id)
{
	jQuery('.file_tree', container).fileTree(
		{
			root:'',
			script:'/?m=file&a=file_tree&dp_id='+dp_id,
			dp_id:dp_id
		}, 
		function(node_path, elm, opts) { 
			if(!jQuery(elm).parent().hasClass('directory')) {
				var file_id = parseInt(jQuery(elm).attr('rel'));
				form_file_upload_list_item_add(
					jQuery(container),
					{
						fid:file_id, 
						human_name:jQuery(elm).html(), 
						remove:function() { form_file_upload_remove(file_id);} 
					}
				);
				if(!jQuery('input[value='+file_id+']',container).size()) {
					jQuery(container).append('<input type="hidden" name="files[]" class="file_'+file_id+'" value="'+file_id+'"/>');
				}
				
			}
		}
	);
}

// BASE64

relenta.base64 = {

    // private property
    _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

    // public method for encoding
    encode : function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;

        input = relenta.base64._utf8_encode(input);

        while (i < input.length) {

            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);

            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;

            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }

            output = output +
            this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
            this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

        }

        return output;
    },

    // public method for decoding
    decode : function (input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;

        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

        while (i < input.length) {

            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._keyStr.indexOf(input.charAt(i++));

            chr1 = (enc1 << 2) | (enc2 >> 4);
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
            chr3 = ((enc3 & 3) << 6) | enc4;

            output = output + String.fromCharCode(chr1);

            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }

        }

        output = relenta.base64._utf8_decode(output);

        return output;

    },

    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

};

var ajax_folder_activity_from_message = function (prm)
{
	prm = jQuery.extend({dp_id:0,message_id:0,cn_id:0,container:null,act_body:""}, prm);
	relenta.calendar.activity_compose_show({dp_id:prm.dp_id, activity_id:0, container:prm.container, 
		success_create:function() { 
			jQuery(".activity_body","#"+prm.container).val(prm.act_body);
		},
		cancel_callback:function() {alert('Cancel form please');},
		mode: 'folder',
		cn_id:prm.cn_id, 
		message_id:prm.message_id
		}
	);
} // ajax_folder_activity_from_message


relenta.search.search_form_toggle_to = function(mode, prm)
{
	jQuery('#quick_search_form_header a').removeClass('active');
	switch(mode) {
		case 'message':
			jQuery('#quick_search_form_header a.message').addClass('active');
			jQuery('input[name=m]', '#search_form').attr('value','message');
			jQuery('input[name=a]', '#search_form').attr('value','folder_message_list');
			if(prm && prm.folder_id) {
				jQuery('input[name=folder_id]', '#search_form').attr('value',prm.folder_id);
			}
		break;
		case 'contact':
			jQuery('#quick_search_form_header a.contact').addClass('active');
			jQuery('input[name=m]', '#search_form').attr('value','contact');
			jQuery('input[name=a]', '#search_form').attr('value','l');
		break;
	}
};

var getParent = function(element, depth) 
{
	var p = jQuery(element).parent().get(0);
	if (depth == 0) {
		return p;
	};
	depth--;
	return getParent(p, depth);
}; // getParent



relenta.external_service = {};

relenta.external_service.command = function(command,prm) 
{
	switch(command) {
		case 'importContacts':
		case 'importInvoices':
		
			desma.informer.instance().inform({
				subject:'FreshBooks',
				updater:function(informer, slot) {
					informer.progress(slot, 10, 'importing...');
					new Ajax.Request('/', {
						method: 'get',
						parameters: 'm=external_service&a=command&command='+command+'&dp_id='+prm.dp_id+'&service_key='+prm.service_key,
						onSuccess: function(r) {
							informer.progress(slot, 100, 'import complete');
						}
					});
				}
			});
		break;
		
		case 'syncObject':
		
			desma.informer.instance().inform({
				subject:'FreshBooks',
				updater:function(informer, slot) {
					if(prm.obj_type==relenta.object.OBJECT_TYPE_CONTACT) {
						informer.progress(slot, 10, 'syncing contact...');
					}
					else {
						informer.progress(slot, 10, 'syncing invoice...');
					}
					new Ajax.Request('/', {
						method: 'get',
						parameters: 'm=external_service&a=command&command='+command+'&dp_id='+prm.dp_id+'&obj_id='+prm.obj_id+'&obj_type='+prm.obj_type+'&service_key='+prm.service_key,
						onSuccess: function(r) {
							informer.progress(slot, 100, 'synchronization complete');
							if(prm.obj_type==relenta.object.OBJECT_TYPE_CONTACT) {
								ajax_contact_load_activity({dp_id:prm.dp_id, cn_id:prm.obj_id});
							}
							else if(prm.cn_id) {
								ajax_contact_load_activity({dp_id:prm.dp_id, cn_id:prm.cn_id, obj_id:prm.obj_id});
							}
							else {
								relenta.calendar.agenda_summary_reload({dp_id:prm.dp_id});
							}
						}
					});
				}
			});
		break;
	}
	
};
