
function initchat(e) {
	if ($('chatplaceholder')) {
		pollForMessages();
	}
}


function doDeferredOnDoorbell(d,bellid) {
	doorbell_def[bellid] = d;
	var cb = createDOM('script',{type:'text/javascript', src:"http://doorbell.verieda.com/"+bellid}); // TODO
	appendChildNodes($('chatplaceholder'),cb);
}

var chatLastMessage = -1;
var target = "";

function chatInputEvents(e) {
	var code = e.key().code;
	if (code == 13) {
		sendChatMessage();
		e.stop();
		
	}
}

function sendChatMessage() {
	var chatInputBox = $('chatinputbox');
	postBody = queryString({message:chatInputBox.value,target:target})
	d = doXHR("/chat/sendmessage", {
		method:'POST', 
		sendContent:postBody,
		mimeType: 'application/javascript',
                headers: [['Content-Type', 'application/x-www-form-urlencoded']]
	});
	chatInputBox.value = ""
}

function buildChatWindow() {
	var outer = createDOM('div', {id:'chatbox'});
	var chatwindow = createDOM('div',{id:'chatwindow'}, "Chat");
	var frm = createDOM('form');
	var input = createDOM('input',{type:'text','id':'chatinputbox'})
	appendChildNodes(outer,chatwindow);
	appendChildNodes(outer,frm);
	appendChildNodes(frm,input);
	connect(input,'onkeydown',chatInputEvents);
	return outer;
}




function pollForMessages() {
	if (chatLastMessage >= 0) {
		var o = {target:target, lastmessage:chatLastMessage};
	} else {
		var o = {target:target}
	}
	d = loadJSONDoc("/chat/messages",o); 
	d.addCallback(function (result) {
			log(result);
			if (result.r == "ok") {
				//alert("poll ok:"+ result.v);
				var chatWindow = $('chatwindow');
				if (! chatWindow) {
					//alert("chatwindowa");
					chatWindow = buildChatWindow();
					appendChildNodes($('chatplaceholder'),chatWindow);
					chatWindow = $('chatwindow');
				} else {
					//alert("chatwindowb");
				}
				var len = result.v.length;
				for (var i=0;i<len;i++) {
					d = createDOM('div');
					t = P({'class':'chattime'},result.v[i][2]);
					appendChildNodes(d,t);
					c = P({'class':'chatmessage'},result.v[i][1]);
					appendChildNodes(d,c);
					if(i==len-1) {
						hideElement(d);
					}
					
					appendChildNodes(chatWindow,d);
					if(i==len-1) {
						blindDown(d,{duration:0.5});
					}
				}
				chatLastMessage = result.v[len-1][0];
				pollForMessages();
			} else {
				//alert("waiting for:"+ result.v);
				var d = new Deferred();
				d.addCallback(function (result) {
						pollForMessages();
				});
				doDeferredOnDoorbell(d,result.v);
			}
	});
}



var doorbell_def = [];

function doorbell(uid) {
	var d = doorbell_def[uid]
	d.callback()
}
