$(function(){
	var socket = new io.Socket(null, {port: 8000, rememberTransport: false}); 
	
	socket.connect();
	
	socket.on('connect', function(){ 
		var c = Cookies.get('CAKEPHP');
		var a = {"action":"connect","track":c};
		socket.send(JSON.stringify(a));
		//console.log("connected");
		loadpagemessages();
	});

	socket.on('message', function(message){
		console.log("message : " + message);
		try {
			message = JSON.parse(message);
			receive(message);
		} catch(e) {}
	});

	socket.on('disconnect', function(){
		//alert("clientdisconnect");
	});

	function send(d){
		d.track = Cookies.get('CAKEPHP');
		d.name = Cookies.get('name','anon');
		socket.send(JSON.stringify(d));
	}
	
	function receive(message){		
		if (typeof(message) == 'object' && message.length){
			for (itm in message){
				receive(message[itm]);
			}
		}
		if (message.content){			
			var ul = $("#events ul");
			var lbl = "msg";
			var namestr = '';
			if (message.name){
				var namestr = '<span class="';
				if (message.name == 'anon') namestr += "anon";
				else namestr += "name";
				namestr += '">' + message.name + '</span>';
			}
			switch(message.action) {
				case 'admin_message': lbl = 'Admin'; break;
				case 'chat_all': lbl = 'Chat'; break;
				case 'said_name': lbl = 'Announce'; break;
				case 'chat_to_me': lbl = 'Personal from'; break;
				case 'on_page' : lbl = 'On Page'; break;
				case 'view_article' : lbl = 'Off looking at'; break;
				case 'rated_article' : lbl = 'Just rated</span><span class="rateing">' + message.rateing + ' of 10'; break;
			}
			var m = $("<li>"+namestr+"<span class=\"" + message.action + "\">" + lbl + "</span>"+message.content+"</li>");	
			//console.log("adding " + message.content);	
			ul.prepend(m);
		} //else alert("no content");
	}

	var is_anon = (Cookies.get('name', '') == '');

	if (is_anon){
		var s = "<div id=\"chat\"><form><input id=\"inpt\" type=\"text\" rel=\"";
		var lbl = "Don't be anon -> your name?";
		s += lbl;
		s += "\" name=\"t\"/><input id=\"go\" type=\"submit\" value=\"";
		if (is_anon) s += "GO!";
		else  s += "";
		s += "\"/></form></div>";
		$("#events").append(s);
		$("#chat form").submit(function(){
			var v = $("#chat #inpt").val();
			if (v != lbl && v.length > 2){ 
				Cookies.set("name", v);
				$("#chat form").remove();
				send({"action":"said_name"});
			}
			return false;
		});
	
		var i = $("#chat #inpt");
		i.val(i.attr("rel"));
		i.click(function(){
			$this = $(this);
			if ($("#chat #inpt").val() == $this.attr("rel")){
				$this.val("");
			} else {
				$this.val($this.attr("rel"));
			}
		});
	}
	//$("#events").append("<div id=\"chat-form\"><form ><input id=\"chat-input\"type=\"text\" name=\"t\"/><input type=\"submit\" value=\"Send\"/></form></div>")
	
	$("#events").append("<ul></ul>");
	$("#chat").submit(function(){
		var v = $("#chat-input").val();
		if (v != "type a message" && v.length > 2){ 
			send({"message":v});
		}
		$("#message").val("");
	});
	function loadpagemessages(){
		$(".event-viewpage").each(function(){	
			var $this = $(this)
			var m = "";
			if ($this.attr("rel")) m += $this.attr("rel");
			m += $.trim($this.html());
			m = '<a href="' + location.href + '">' + m + '</a>';
			send({"action":"on_page","content": m});
		});
	}
	$(".article-pop").click(function(){	
		var $this = $(this)
		var m = $.trim($this.html());
		m = '<a href="' + location.href + '#' + $this.attr("name") + '">' + m + '</a>';
		send({"action":"view_article","content": m});
	});
	$(".rate a").live("click", function(){
		var $this = $(this);
		var rateing = $this.html();
		var m = $.trim($("h5", $this.parent().parent()).html());
		m = m.replace(/^\"/, "").replace(/\"$/, ""); 
		m = '<a href="' + location.href + '#' + $this.attr("id") + '">' + m + '</a>';
		send({"action":"rated_article","content": m,'rateing':rateing});
		return false;
	});
});


