// ERPNext - web based ERP (http://erpnext.com)
// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
// 
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see .
wn.provide('erpnext.messages');
wn.pages.messages.onload = function(wrapper) {
	erpnext.messages.show_active_users();
	erpnext.messages.make_list();
	update_messages('reset'); //Resets notification icons
	
	// post message
	$('#message-post').click(function() {
		var txt = $('#message-post-text').val();
		if(txt) {
			wn.call({
				module:'utilities',
				page:'messages',
				method:'post',
				args: {
					txt: txt,
					contact: erpnext.messages.contact
				},
				callback:function(r,rt) {
					$('#message-post-text').val('')
					erpnext.messages.list.run();
				},
				btn: this
			});
		}
	});
	
	// enable, disable button
	$('#message-post-text').keyup(function() {
		if($(this).val()) {
			$('#message-post').attr('disabled', false);
		} else {
			$('#message-post').attr('disabled', true);
		}
	})
}
wn.pages.messages.onshow = function(wrapper) {
	erpnext.messages.show();
	setTimeout(erpnext.messages.refresh, 5000);
	$('#message-post-text').focus();
}
erpnext.messages = {
	show: function() {
		var contact = erpnext.messages.get_contact();
		// can't send message to self
		$(wn.pages.messages).find('.well').toggle(contact==user ? false : true);
		$(wn.pages.messages).find('h1:first').html('Messages: ' 
			+ (user==contact ? 'From everyone' : wn.user_info(contact).fullname));
		erpnext.messages.contact = contact;
		erpnext.messages.list.opts.args.contact = contact;
		erpnext.messages.list.run();
		
	},
	// check for updates every 5 seconds if page is active
	refresh: function() {
		setTimeout(erpnext.messages.refresh, 10000);
		if(page_body.cur_page_label != 'messages') return;
		erpnext.messages.show();
	},
	get_contact: function() {
		var route = location.hash;
		if(route.indexOf('/')!=-1) {
			var name = decodeURIComponent(route.split('/')[1]);
			if(name.indexOf('__at__')!=-1) {
				name = name.replace('__at__', '@');
			}
			return name;
		}
		return user;	
	},
	make_list: function() {
		erpnext.messages.list = new wn.widgets.Listing({
			parent: $('#message-list').get(0),
			method: 'utilities.page.messages.messages.get_list',
			args: {
				contact: null
			},
			render_row: function(wrapper, data) {
				data.creation = dateutil.comment_when(data.creation);
				data.comment_by_fullname = wn.user_info(data.owner).fullname;
				data.reply_html = '';
				if(data.owner==user) {
					data.cls = 'message-self';
					data.comment_by_fullname = 'You';	
					data.delete_html = repl('×', data);
				} else {
					data.cls = 'message-other';
					data.delete_html = '';
					if(erpnext.messages.contact==user) {
						data.reply_html = repl('\
							 Reply', data)
					}
				}
				wrapper.innerHTML = repl('
%(delete_html)s\
						
%(comment)s\
						
by %(comment_by_fullname)s, %(creation)s
\
						%(reply_html)s