/*
 | Filnamn: dialogs.js
 | Beskrivning:	funktioner för att generera dialoger.
 |
 */

/* 
 | Namn: create_dlg_chat
 | Beskrivning: 
 | skapar en chatdialogruta anpassad mot en viss användare
 | och lägger den till DOM. Om en dialog med givet nummer redan finns
 | så skapas ingen ny. När dialogrutan stängs så tas den bort ifrom DOM.
 |
 | Argument: 
 | 'chat_id' id för chatten.
 | 'title' beskriver dialogens titel. 
 | 'uids' is an array with chat members.
 | 'multichat' is true if a multichat is to be created.
 |
 | Returvärde: id för den nya dialogen.

jaan: fixed jsoncallback [26.1.2009] 
 */
function create_dlg_chat(chat_id, title, uids, multichat)
{
	var date = new Date();
	var id_main = "dlg_chat_" + chat_id;
	var id_handle = id_main + "_handle";
	var id_close = id_main + "_close";
	var id_options = id_main + "_options";
	var id_content = id_main + "_content";
	var id_input = id_main + "_input";
	var id_activity = id_main + "_activity";
	var dlg_pos_top = "";
	var dlg_pos_left = "";
	var load_message_history = true;
	var gcTxt = "Group Chat";
	if (multichat == true)
	    {
		gcTxt = "Invite Users";
		//alert(gcTxt);
	    }
	//else
	//  alert(gcTxt);
	// Om det fanns en innan (multi eller singel) så tar vi bort den.
	if(jQuery("#" + id_main).length > 0){
		dlg_pos_top = jQuery("#" + id_main).css("top");
		dlg_pos_left = jQuery("#" + id_main).css("left");
		jQuery("#" + id_main).remove();
		load_message_history = true;
	}

	// 2-PERSON-CHAT

	jQuery("#" + id_main + "_markperson").hide();
	
	if(multichat==false){
		number_of_files[chat_id] = 0;
		var user_marked_text;
		var user_blocked_text;
		if(jQuery.inArray(uids[1],marked_users)!=-1){
		    user_marked_text = "";//"Unmark user";
		} else {
		    user_marked_text = "";//"Mark user";
		}
		if(jQuery.inArray(uids[1],blocked_users)!=-1){
			user_blocked_text = "Unblock user";
		} else {
			user_blocked_text = "Block user";
		}
		
		// HTML-block för två-person-chat
		jQuery('#fix_container').append(
			"<div id=\"" + id_main + "\" class=\"dlg_chat ui-wrapper dlg\">" +
			"<div id=\"" + id_handle + "\" class=\"dlg_handle\"> " +
			"<a id=\"" + id_close + "\" class=\"dlg_close\" href = \"javascript:\">" +
			"<img class=\"ro\" src=" + img("exit.png") + "></a></div><div class=\"dlg_chat_img\"><div id=\"" + id_main + "_img\">" + 
			"<img width=66 height=56 class=\"image\" src=\"" + g_livegrounds_url + "/image.php?uid=" + uids[1] + 
			"&s=sm&t="+date.getTime()+"\"></div><div id=\"" + id_main + "_img_la\">" +
			"<img class=\"image\" src=\"" + g_livegrounds_url + 
			"/image.php?uid=" + uids[1] + "&s=la&t="+date.getTime()+"\">" +
			"</div><span class=\"dlg_chat_blocklabel\"><a href=\"javascript:void(0);\" id=\"" + id_main + "_blockperson\">" + 
			user_blocked_text + "</a></span></div><div id=\"" + id_main + "_info_content\" " +
			"class=\"dlg_chat_info_content\"><div id=\"" + id_main + "_info\" " +
			"class=\"dlg_chat_info\"></div><div id=\"" + id_main + "_status\" " +
			"class=\"dlg_chat_status\"></div><div id=\"" + id_main + "_moreless\" class=\"dlg_chat_morelesstoggle moreless\">" +
			"<a href=\"javascript:void(0);\" id=\"" + id_main + "_moreless_a\">More</a></div><div id=\"" + id_main + "_markperson\">" +
			"<a href=\"javascript:void(0);\" id=\"" + id_main + "_markperson_a\">" + 
			user_marked_text + "</a></div></div><textarea readonly=true id=\"" + id_main + 
			"_textarea\" class=\"dlg_chat_info_text\"></textarea>" +
			 
			"<div id=\"" + id_main + "_options\" class=\"dlg_chat_multichat_invite_expand_2person moreless\">" +
			"<a id=\"" + id_main + "_invite_expand\" href=\"javascript:void(0)\">" + gcTxt +
			"<img src=\"" + g_plugin_url + "/gfx/asc.gif\" /></a> " +
			"<a id=\"" + id_main + "_sendfile_expand\" href=\"javascript:void(0)\"></a></div>" +
			"<div class=\"dlg_chat_activity moreless\" id=\"" + id_activity + "\"></div>" +
			"<span id=\"" + id_content + "\" wrap=\"hard\" class=\"dlg_chat_content moreless\"></span>" +
			"<input id=\"" + id_input + "\" class=\"dlg_chat_input\"></input>" +
			"</div>"
		); //aa added "_2person"
		
		if(true /*g_allow_anonymous_uploads==false && g_login != true*/){
			jQuery("#" + id_main + "_sendfile_expand").hide();
		}
		
		jQuery("#" + id_main + "_img_la").hide();
		jQuery("#" + id_main + "_textarea").hide();
		jQuery("#" + id_main + "_blockperson").hide();
		jQuery("#" + id_main + "_report").hide();
		
		/* Här byter vi ifrån "less"-view till "more"-view och vice-versa.
		   Vi måste ta hänsyn till att användaren kan ha ändrat storleken
		   på dialogen innan vi går från ett mode till ett annat. Absoluta
		   positioneringar ifrån "left" och "top" är dock safe, eftersom
		   dialogen växter åt höger och neråt när användaren resize:ar. 
		   Om det är något som kräver dialogens höjd måste vi alltid ta reda
		   på den on-the-fly. */
		jQuery("#" + id_main + "_moreless_a").click(function(){
			if(jQuery("#" + id_main + "_img_la").is(":visible")){
				// Gå över till "less-mode" där mindre information visas.
				jQuery("#" + id_main).height(jQuery("#" + id_main).height() - 180);
				jQuery("#" + id_main).css("top", element_position("#" + id_main)["top"] + 180);
				
				var dialog_top = jQuery("#dlg_chat_" + chat_id).offset().top;
				jQuery("#dlg_chat_" + chat_id + " .moreless").each(function(){
					var current_top = jQuery(this).offset().top - dialog_top;
					jQuery(this).css("top", current_top - 181);
				});
				
				jQuery("#" + id_main + "_info_content").css("left", 90);
					
				jQuery("#" + id_main + "_report").hide();
				jQuery("#" + id_main + "_blockperson").hide();
				jQuery("#" + id_main + "_img_la").hide();
				jQuery("#" + id_main + "_textarea").hide();
				jQuery("#" + id_main + "_img").show();
				jQuery("#" + id_main + "_moreless_a").html("More");
			} else {
				// Gå över till "more-mode" där mer information visas.
				jQuery("#" + id_main).css("top", element_position("#" + id_main)["top"]-180);				
				jQuery("#" + id_main).height(jQuery("#" + id_main).height() + 180);

				var dialog_top = jQuery("#dlg_chat_" + chat_id).offset().top;
				jQuery("#dlg_chat_" + chat_id + " .moreless").each(function(){
					var current_top = jQuery(this).offset().top - dialog_top - 1;
					jQuery(this).css("top", current_top + 180);
				});
				
				jQuery("#" + id_main + "_info_content").css("left",143);
				
				jQuery("#" + id_main + "_report").show();
				jQuery("#" + id_main + "_blockperson").show();
				jQuery("#" + id_main + "_img").hide();
				jQuery("#" + id_main + "_img_la").show();
				jQuery("#" + id_main + "_textarea").show();
				jQuery("#" + id_main + "_moreless_a").html("Less");
				
				/* Kontrollera så att vi inte flyttat en dialogen
		   		   för högt upp så att den är ovanför webläsarens fönster. */
				if(jQuery("#" + id_main).offset().top < jQuery(document).scrollTop()){
					jQuery("#" + id_main).css('top', 0);
				}
			}
		});
		
		jQuery("#" + id_main + "_markperson").click(function(){
			if(jQuery.inArray(uids[1],marked_users)==-1){
				jQuery("#" + id_main + "_markperson_a").html("Unmark person");
				mark_user(uids[1]);
			} else {
				jQuery("#" + id_main + "_markperson_a").html("Mark person");
				unmark_user(uids[1]);
			}
		});
		
		jQuery("#" + id_main + "_blockperson").click(function(){
			if(jQuery.inArray(uids[1],blocked_users)==-1){
				jQuery("#" + id_main + "_blockperson").html("Unblock person");
				block_user(uids[1]);
			} else {
				jQuery("#" + id_main + "_blockperson").html("Block person");
				unblock_user(uids[1]);
			}
		});

		/* Skapa gemensamt beteende för 2-persons och multichat: .resizable,
		   .draggable, .click, corner(), show/hide beroende på om scenen syns. */
		create_generic_chat_behaviour(chat_id, id_handle);

		// Sätt position på dialogen.
		if(load_message_history && dlg_pos_top!="" && dlg_pos_left!=""){
			jQuery("#" + id_main).css('top', dlg_pos_top);
			jQuery("#" + id_main).css('left', dlg_pos_left);
		}else{
			var headpos = avatar_head_position("#user_" + uids[1]);
			jQuery("#" + id_main).css('top', headpos["top"] - 280);
			jQuery("#" + id_main).css('left', headpos["left"] - 150);
		}

		/* Det är dumt om en dialog skapas för långt upp så man inte kan stänga den. */
		if(jQuery("#" + id_main).offset().top < 0){
			jQuery("#" + id_main).css('top', 0);
		}
		
		/* Vi sätter dialogen i förgrunden och ser till att alla 
		   andra dialoger inte skymmer. */
		jQuery(".dlg").css('z-index', 30);
		jQuery("#" + id_main).css('z-index', 200);
		
		/* Hämta information ifrån databasen och lagra den
		   tills användaren väljer att se mer info. */
		jQuery("#" + id_main + "_info").html("<b>Loading...</b>");
		jQuery.getJSON(g_plugin_url + "/lg_getinfo.php?jsoncallback=?", 
				{"uid":uids[1], "fmt":"long"}, function(data) {
			var birthyear;
			var name = data["name"];
			var n0 = name;
			var l0 = data["location"];
			//log("location: \"" + l0 + "\"");
			if (n0.toLowerCase().indexOf(l0.toLowerCase()) > -1)
			    l0 = "";
			
			
			
			if(data["birthdate"]!="0000-00-00"){
				var p = data["birthdate"].split('-');
				birthyear = p[0];
				var ageX0 = "";
				var ageX1 = "";
				
				var age = parseInt(((date.getFullYear() - p[0]) * 12 + 
								(date.getMonth() + 1 - p[1]) ) / 12);
				//log('p1 = ' + p[1]);
				if (p[1] == 0)
				    {
					ageX0 = "b";
					age = p[0];
				    }
				else
				    {
					ageX1 = "y";
				    }
				//jaan country change
				
				
				jQuery("#" + id_main + "_info").html("<b><div class=\"dlg_chat_top_name\">"+name+"</div></b> <div class=\"dlg_chat_top_age\">(" +  ageX0 + age + ageX1 + ")</div> <div class=\"dlg_chat_top_location\"> " + l0 + "</div>");
			} else {
				birthyear = "Unknown";

				jQuery("#" + id_main + "_info").html("<b><div class=\"dlg_chat_top_name\">"+name+"</div></b><div class=\"dlg_chat_top_location\"> " + l0 + "</div>");
				
			}
			
			var name = jQuery("#user_" + uids[1] + "_sign").html();
			var stat = data["status"].split("\t");
			jQuery("#" + id_main + "_status").html(stat[0]);
			
	
			jQuery("#" + id_main + "_textarea").val(unescape(data["info"]));
		});

		// Ladda eventuell historik (endast om chatten finns sedan tidigare).
		if(load_message_history){
			if(message_history[chat_id] && message_history[chat_id].messages.length>0){
				for(var u=0;u<message_history[chat_id].messages.length;u++){
				    if (message_history[chat_id].sender_name[u].length >0) {//jaan
				    
				    append_text("#" + id_content,
						"<b>" + message_history[chat_id].sender_name[u] + ":</b> " +
						message_history[chat_id].messages[u]);}
				}
			}
		}
		
		jQuery("#" + id_main + "_input").focus(function(){
			for(var i=0;i<user_positions.length;i++){
				if (user_positions[i].name == uids[1]){
					if(user_positions[i].avatar == 0){
						lg_set_avatar(uids[1], 2);
					} else {
					    //lg_set_avatar(uids[1], 4); jaan: keep em gray
					}
				}
			}
			
			jQuery(".dlg input").each(function(){
				if(jQuery(this).attr("id") != id_main + "_input"){
					jQuery(this).blur();
				}
			});
			
			focused_chat = chat_id;
		});
		
		jQuery("#" + id_main + "_input").blur(function(){
			for(var i=0;i<user_positions.length;i++){
				if (user_positions[i].name == uids[1]){
					if(user_positions[i].avatar == 0){
						lg_set_avatar(uids[1], 0);
					} else {
						lg_set_avatar(uids[1], 1);
					}
				}
			}
			
			focused_chat = "?";
		});

		// IE6 hanterar inte z-index på <select> element rött, vi fixar detta.
		if(jQuery.browser.msie&&jQuery.browser.version==6){
			ie6_select_fix(id_main);
		}
	}
	// MULTICHAT
	else {
		// HTML-block för multi-chat
		jQuery('#fix_container').append(
			"<div id=\"" + id_main + "\" class=\"dlg_chat ui-wrapper dlg\">" +
			"<div id=\"" + id_handle + "\" class=\"dlg_handle\"> " +
			"<a id=\"" + id_close + "\" class=\"dlg_close\"" +
			" href=\"javascript:\">" + img0("exit") + "</a></div><div class=\"dlg_multichat_info_content\">" +
			"<div id=\"" + id_main + "_info\" class=\"dlg_multichat_info\"></div>" +
			"<div id=\"" + id_main + "_status\" class=\"dlg_multichat_status\">" +
			"<a id=\"" + id_main + "_terminate\" href=\"javascript:void(0)\">" +
			"</a></div></div><div class=\"dlg_chat_multichat_invite_expand\">" +
			"<a id=\"" + id_main + "_invite_expand\" href=\"javascript:void(0)\">" + gcTxt +
			"<img src=\"" + g_plugin_url + "/gfx/asc.gif\" /></a></div>" +
			"<div class=\"dlg_multichat_userlist_expand\">" +
			"<a id=\"" + id_main + "_userlist_expand\" href=\"javascript:void(0)\">" +
			"<img src=\"" + g_plugin_url + "/gfx/asc.gif\" />User list</a></div>" +
			"<span id=\"" + id_content + "\" wrap=\"hard\" class=\"dlg_chat_content_mc\"></span>" +
			"<input id=\"" + id_input + "\" class=\"dlg_chat_input\"></input>" +
			"</div>"
		); //aa removed (Terminate)
		
		// Dölj terminate om vi inte är ägare.
		if(typeof(owner_of_chat[chat_id])=="undefined" || 
			owner_of_chat[chat_id]==null || owner_of_chat[chat_id]==false){
			jQuery("#" + id_main + "_terminate").hide();
		}

		/* Skapa gemensamt beteende för 2-persons och multichat: .resizable,
		   .draggable, .click, corner(), show/hide beroende på om scenen syns. */
		create_generic_chat_behaviour(chat_id,id_handle);

		jQuery("#" + id_main + "_terminate").click(function(){
			jQuery.getJSON(g_livegrounds_url + "/chat.php?jsoncallback=?",
				{"action":"terminate", "chat_id":chat_id, "bid":g_blog_id, "uid":g_uid}, function(data){
				if(data.error != ""){
					append_text("#" + id_main + "_content", data.error);
				}
			});
		});

		// Sätt position och titel på dialogen.
		if(load_message_history && dlg_pos_top!="" && dlg_pos_left!=""){
			jQuery("#" + id_main).css('top', dlg_pos_top);
			jQuery("#" + id_main).css('left', dlg_pos_left);
		} else {
			var userpos = element_position("#user_" + uids[0]);
			jQuery("#" + id_main).css('top', userpos["top"] - 280);
			jQuery("#" + id_main).css('left', userpos["left"] - 150);
		}
		jQuery("#" + id_main + "_info").append(title);

		// Det är dumt om en dialog skapas för långt upp så man inte kan stänga den.
		if(jQuery("#" + id_main).offset().top < 0){
			jQuery("#" + id_main).css('top', 0);
		}

		// Ladda eventuell historik (endast om chatten finns sedan tidigare).
		if(load_message_history){
			if(message_history[chat_id] && message_history[chat_id].messages.length>0){
				for(var u=0;u<message_history[chat_id].messages.length;u++){
					append_text("#" + id_content,
						"<b>" + message_history[chat_id].sender_name[u] + ":</b> " +
						message_history[chat_id].messages[u]);
				}
			}
		}
		
		// Vi tarbort ev. markering (när en två-part dialog är fokuserad)
		for(var i=0;i<user_positions.length;i++){
			if (user_positions[i].name == uids[1]){
				if(user_positions[i].avatar == 0){
					lg_set_avatar(uids[1], 0);
				} else {
					lg_set_avatar(uids[1], 1);
				}
			}
		}

		/* Vi sätter dialogen i förgrunden och ser till att alla 
		   andra dialoger inte skymmer. */
		jQuery(".dlg").css('z-index', 30);
		jQuery("#" + id_main).css('z-index', 200);
	}
    $(".ro").hover(
		   function () { $(this).attr( 'src', ROnewimage($(this).attr('src')) ); 
		       	$('img[@src$=.png]').ifixpng(); 	
		   },
		   function () { $(this).attr( 'src', ROoldimage($(this).attr('src')) ); 
	$('img[@src$=.png]').ifixpng(); 	
}
      );
    initROs();
	return (id_main);
}

function create_generic_chat_behaviour(chat_id, dragHandle)
{
	var id_main = "dlg_chat_" + chat_id;
	jQuery("#" + id_main).keypress(function(e){
		var kC  = (window.event) ?  event.keyCode : e.keyCode;
		var Esc = (window.event) ?   27 : e.DOM_VK_ESCAPE 
		    if(kC==Esc) {
			var answer = confirm("Close this window?");		    
			if (answer)
				jQuery("#" + id_main).remove(); //aa
		    }
			});
	
	jQuery("#" + id_main).resizable({
		minHeight: 200, 
		minWidth: 300,
		maxHeight: 600,
		maxWidth: 800,
		start:	function(){
				jQuery("#" + id_main + "_content").hide();
				jQuery("#" + id_main + "_input").hide();
				jQuery("#" + id_main + "_textarea").hide();
				
				jQuery(".file_transfer").each(function(){
					jQuery(this).hide();
				});
			},
		stop:	function(){
				var extra_height = 0;
				if(typeof(number_of_files[chat_id])!="undefined" && number_of_files[chat_id] != null){
					extra_height = number_of_files[chat_id]*40;
				}
				var min_height = 200 + extra_height;
				var more_mode = false;
				if(jQuery("#" + id_main + "_img_la").is(":visible")){
					more_mode = true;
					min_height += 180;
				}
				
				/* Fixa detta senare med att ändra minHeight on-the-fly för
				   dialogen så att den är olika vid "more"-mode och "less"-mode.
				   sålänge så duger det med att fixa det i efterhand. */
				if(jQuery("#" + id_main).height()<min_height){
					jQuery("#" + id_main).height(min_height);
				}
							
				/* Saker vid ändring av storlek som beror på om vi är i "more"-view eller
				   i "less"-view. */
				if(more_mode){
					jQuery("#" + id_main + "_textarea").show();
					jQuery("#" + id_main + "_content").height(
						jQuery("#" + id_main).height()-335-extra_height); //aa last was 324
				} else {
					jQuery("#" + id_main + "_content").height(
						jQuery("#" + id_main).height()-155-extra_height); //aa last was 144
				}
	
				jQuery(".file_transfer").each(function(){
					jQuery(this).show();
				});
				jQuery("#" + id_main + "_content").show();
				jQuery("#" + id_main + "_input").show();
				jQuery("#" + id_main + "_input").width(jQuery("#" + id_main).width()-38);    
				jQuery("#" + id_main + "_content").width(jQuery("#" + id_main).width()-39);  
				
				jQuery("#" + id_main + "_textarea").width(jQuery("#" + id_main).width()-42); 
				
				/* Vi ser till så att chatt-historiken är scrollad längst ner. */
				var obj = jQuery("#" + id_main + "_content")[0];
				var currentHeight = 0;
				if (obj.scrollHeight > 0)
					currentHeight = obj.scrollHeight;
				else if (obj.offsetHeight > 0)
					currentHeight = obj.offsetHeight;
				obj.scrollTop = currentHeight;

				if(!(jQuery("#" + id_main + "_invite").length > 0)){
					jQuery("#" + id_main + "_input").focus();
				}
			}
	});
	
	jQuery("#" + id_main).corner("5px");

	/* Om dialogen ska synas när vi skapar denne beror på om scenen är
	   synlig eller inte. */
	if(jQuery("#lg_scene").is(":visible")==true){
		jQuery("#" + id_main).show();
	} else {
		jQuery("#" + id_main).hide();
	}

	jQuery("#" + id_main).draggable({
		zIndex: 	200,
		ghosting:	false,
		handle:		'#' + dragHandle,
		stop:		function(){
						/* Kontrollera så att vi inte flyttat en chat-dialog
						   för högt upp så att den är ovanför webläsarens fönster. */
						if(jQuery("#" + id_main).offset().top < jQuery(document).scrollTop()){
							jQuery("#" + id_main).css('top', 0);
						}
					}
	});

	jQuery("#" + id_main).click(function(){
		jQuery(".dlg").css('z-index', 30);

		/* Vi sätter fönstret i förgrunden. */
		jQuery("#" + id_main).css('z-index', 200);

		/* Opera verkar ha problem ibland når input-fältet tappar fokus. */
		// Om man invite-rutan uppe så ska inte meddelande-input:en fokuseras.
		if(!(jQuery("#" + id_main + "_invite").length > 0)){
			jQuery("#" + id_main + "_input").focus();
		}
	});

}


/* 
 | Namn: incoming_filetransfer
 | Beskrivning:
 | Lägger in en inkommande filruta i en chatdialog. Dialogens höjd
 | ändras för att rutan ska få plats. Om ingen chatdialog finns mot
 | given sändare så skapas en först.
 |
 | Argument:
 | 'sender'  - uid på användaren som skickade filen.
 | 'chat_id' - id för chat.
 | 'file_id' - id på filen. används för nedladdningslänken.
 | 'file_name' - Namnet på filen.
 | 'file_size' - Storlek på filen i bytes.
 |
 | Returvärde: (inget)
 */
function incoming_filetransfer(sender, chat_id, file_id, file_name, file_size)
{
	var id_accept = "dlg_chat_" + chat_id + "_incoming_" + file_id + "_accept";
	var id_discard = "dlg_chat_" + chat_id + "_incoming_" + file_id + "_discard";

	/* Kontrollera så att vi har en dialogruta öppen mot
	   användaren med givet chat_id. Om inte så skapar vi en. */
	if(jQuery("#dlg_chat_" + chat_id).length==0){
		lg_add_chat(chat_id, g_uid, sender);
	}
	
	/* Tillverka plats för den nya informationen
	   som ska visas i chatfönstret. */
	jQuery("#dlg_chat_" + chat_id).css("top", element_position("#dlg_chat_" + chat_id)["top"]-40);				
	jQuery("#dlg_chat_" + chat_id).height(jQuery("#dlg_chat_" + chat_id).height() + 40);
	var dialog_top = jQuery("#dlg_chat_" + chat_id).offset().top;
	var content_top = jQuery("#dlg_chat_" + chat_id + "_content").offset().top - dialog_top + 39;
	var options_top = content_top - 15;
	jQuery("#dlg_chat_" + chat_id + "_options").css("top", options_top);
	jQuery("#dlg_chat_" + chat_id + "_content").css("top", content_top);
	jQuery("#dlg_chat_" + chat_id + "_activity").css("top", options_top);
	
	number_of_files[chat_id]++;
	
	/* Lägg till informationen och länkarna. Vi använder file_id för
	   att skapa unika id:n. */
	var sender_name = jQuery("#user_" + sender + "_sign").html();
	
	var file_size_str = get_filesize_string(file_size);
	
	// Kontrollera att längden inte är orimmlig
	if(file_name.length>40){
		file_name = file_name.substr(0,40);
	}
	
	jQuery("#dlg_chat_" + chat_id).append(
		"<div id=\"dlg_chat_" + chat_id + "_incoming_" + file_id + "\" class=\"file_transfer moreless\">" +
		"\"" + file_name + "\" (" + file_size_str + 
		"). <div class=\"incoming_file_options\">[<a id=\"" + id_accept + 
		"\" href=\""+g_livegrounds_url + "/file.php?action=download&fid=" + file_id + "\">Download</a>" +
		" | <a id=\"" + id_discard + "\" href=\"javascript:void(0);" +
		"\" src=\"\">Discard</a>]</div>" + 
		"</div>"
	);
	
	jQuery("#dlg_chat_" + chat_id + "_incoming_" + file_id + "_discard").click(function(){
		discard_filetransfer(chat_id, file_id, false);
	});

	
	/* Sätt positionen på informationen så att den passar in
	   i chat-dialogen. */
	jQuery("#dlg_chat_" + chat_id + "_incoming_" + file_id).css({
		"position":"absolute",
		"top":(options_top - 35),
		"left":20
	});
	
	// Lägg till i chat-loggen.
	var file_size_str = get_filesize_string(file_size);
	append_text("#dlg_chat_" + chat_id + "_content", 
		"<i>You received '" + file_name + 
		"' (" + file_size_str + ") from " + sender_name + "</i>.\n");
}

/* 
 | Namn: outgoing_filetransfer
 | Beskrivning:
 | Lägger in en ruta i en chatdialog för filuppladdning. Dialogens höjd
 | ändras för att rutan ska få plats. Rutan innehåller en progressbar
 | som visar status för uppladdningen.
 |
 | Argument:
 | 'chat_id' - id för chat.
 | 'file_id' - id på filen, md5-hash ifrån lg-servern.
 | 'file_name' - Namn på filen.
 |
 | Returvärde: (inget)
 */
function outgoing_filetransfer(chat_id, file_id, file_name)
{
	var chat_dlg = "dlg_chat_" + chat_id;
	var chat_upload_id = chat_dlg + "_sendfile";
	var file_upload_id = chat_dlg + "_outgoing_" + file_id
	var id_abort = file_upload_id + "_abort";
	
	if(jQuery("#" + chat_dlg).length==0){
		// Borde inte kunna hända.
		return;
	}
		
	/* Dölj uppladdningsrutan och byt id. På detta sätt så
		kommer en ny ruta att skapas med en ny iframe nästa
		gång vi klickar för att expandera send-file. */
	jQuery("#" + chat_upload_id + "_options").empty();
	jQuery("#" + chat_upload_id).css({"top":"-2000px", "left":"-2000px",
		"width":"1px", "height":"1px"});
	jQuery("#" + chat_upload_id).attr("id", "sendfile_" + file_id);
	
	number_of_files[chat_id]++;
	
	/* Tillverka plats för den nya informationen
	   som ska visas i chatfönstret. */
	jQuery("#" + chat_dlg).css("top", element_position("#" + chat_dlg)["top"]-40);				
	jQuery("#" + chat_dlg).height(jQuery("#" + chat_dlg).height() + 40);
	var dialog_top = jQuery("#" + chat_dlg).offset().top;
	var content_top = jQuery("#" + chat_dlg + "_content").offset().top - dialog_top + 39;
	var options_top = content_top - 15;
	jQuery("#" + chat_dlg + "_options").css("top", options_top);
	jQuery("#" + chat_dlg + "_content").css("top", content_top);
	jQuery("#" + chat_dlg + "_activity").css("top", options_top);
	
	
	/* Lägg till informationen. Vi använder file_id för
	   att skapa unika id:n. */
	jQuery("#dlg_chat_" + chat_id).append(
		"<div id=\"dlg_chat_" + chat_id + "_outgoing_" + file_id + "\" class=\"file_transfer moreless\">" +
		"Sending '" + file_name + "'<span id=\"dlg_chat_" + chat_id + "_outgoing_" + file_id + "_size\">" +
		"</span>: <div class=\"progressbar\" id=\"progressbar_" + file_id + "\"></div>" +
		"<div class=\"outgoing_file_options\">[<a id=\"" + id_abort + 
		"\" href=\"javascript:void(0);\">Abort</a>" +
		"]</div></div>"
	);
	
	jQuery("#" + id_abort).click(function(){
		discard_filetransfer(chat_id, file_id, true);
		
		for(var i=0;i<active_file_transfers.length;i++){
			if(active_file_transfers[i].chat_id == chat_id){
				active_file_transfers.splice(i,1);
			}
		}
		
		jQuery("#sendfile_" + file_id).remove();
	});
	
	/* Sätt positionen på informationen så att den passar in
	   i chat-dialogen. */
	jQuery("#dlg_chat_" + chat_id + "_outgoing_" + file_id).css({
		"position":"absolute",
		"top":(options_top - 35),
		"left":20
	});
	
	jQuery("#progressbar_" + file_id).reportprogress(0);
	
	/* Lägg till transfer_id i array:en med aktiva filöverföringar och
	se till att starta uppdaterings-loopen som underhåller progressbar:en. 
	via ajax-anrop till lg-servern. (Om den inte redan är startad dvs.) */
	var transfer_obj = new Object();
	transfer_obj.file_id = file_id;
	transfer_obj.file_name = file_name;
	transfer_obj.bytes_total = 0;
	transfer_obj.bytes_read = 0;
	transfer_obj.chat_id = chat_id;
	active_file_transfers[active_file_transfers.length] = transfer_obj;
	if(upload_progress_running == false){
		upload_progress_running = true;
		upload_progress();
	}
}

function discard_filetransfer(chat_id, file_id, outgoing)
{
	var fid = "dlg_chat_" + chat_id + 
		(outgoing?"_outgoing_":"_incoming_") + file_id;
	
	var dialog_top = jQuery("#dlg_chat_" + chat_id).offset().top;
	var file_top = jQuery("#" + fid).offset().top - dialog_top;
	jQuery("#" + fid).remove();
	
	/* Om det finns kvarvarande filer i dialogen så flyttas dessa uppåt
	   och sedan krymper vi dialogen. */
	jQuery(".file_transfer").each(function(){
		var this_top = jQuery(this).offset().top - dialog_top - 1;
		if(this_top > file_top){
			jQuery(this).css("top", this_top - 38);
		}
	});
	
	var content_top = jQuery("#dlg_chat_" + chat_id + "_content").offset().top - dialog_top - 39;
	var options_top = content_top - 15;
	jQuery("#dlg_chat_" + chat_id + "_options").css("top", options_top);
	jQuery("#dlg_chat_" + chat_id + "_content").css("top", content_top);
	jQuery("#dlg_chat_" + chat_id + "_activity").css("top", options_top);
	
	jQuery("#dlg_chat_" + chat_id).css("top", element_position("#dlg_chat_" + chat_id)["top"]+38);				
	jQuery("#dlg_chat_" + chat_id).height(jQuery("#dlg_chat_" + chat_id).height() - 38);
	
	number_of_files[chat_id]--;
}

function populate_userlist(id_main)
{
	// If userlist is not open, don't populate it.
	if(!jQuery("#" + id_main + "_userlist").hasClass("dlg_multichat_userlist_open")){
		return false;
	}

	// If old list is present, remove it.
	if(jQuery("#" + id_main + "_userlist").children().length > 1){
		jQuery("#" + id_main + "_userlist").children().
			not("#" + id_main + "_userlist_toggle").remove();
	}

	var chat_id = id_main.substring(9); // Get chat_id as (uid)_(X).
	var uids = [];

	for(var i=0;i<chat_dialogs.length;i++){
		if(chat_dialogs[i].chat_id == chat_id){
			uids = chat_dialogs[i].users;
			break;
		}
	}

	jQuery("#" + id_main + "_userlist").append("<ul></ul>");
	for(var i=0;i<uids.length;i++){
		jQuery("#" + id_main + "_userlist ul:first").append(
			"<li id=\"" + id_main + "_user_" + uids[i] + "\">" +
			jQuery("#user_" + uids[i] + "_sign").html() +
			(/*(g_uid==uids[0]) &&*/ (i!=0))?
			" <a id=\"" + id_main + "_kick\" href=\"javascript:void(0)\">" +
			"(kick)</a></li>":"");
	}
}


function create_dlg_invitation(chat_id, uid)
{
	var id_main = "dlg_invitation_" + chat_id + "_" + uid;
	var user_name = jQuery("#user_" + uid + "_sign").html();
	var id_handle = id_main + "_handle";
	var id_close = id_main + "_close";
	var id_content = id_main + "_content";
	var id_accept = id_main + "_accept";
	var id_deny = id_main + "_deny";
	
	var wsize = get_window_size();

	// Kontrollera om dialog med givet id redan finns. (invite 2ggr?)
	if(jQuery("#" + id_main).length > 0){
		return (id_main);
	}

	jQuery('#fix_container').append(
		"<div id = " + id_main + " class=\"dlg_invitation\">" +
		"<div id=\"" + id_handle + "\" class = \"dlg_handle\">" +
		"<a id = " + id_close + " class = \"dlg_close\" " +
		"href = \"javascript:\">" + img0("exit") +"</a></div>" +		
		"<div id = " + id_content + ">" +
		"<div class=\"dlg_invitation_info\">User <i>" + user_name + "</i>" +
		" would like to invite you to a group chat.</div><br>" +
		"<div class=\"dlg_invitation_form_button_left\">" +
		"<a id=\"" + id_accept + "\"" +
		" href=\"javascript:void(0)\">" + img0("accept") + "</a></div>" +
		"<div class=\"dlg_invitation_form_button_right\">" +
		"<a id=\"" + id_deny + "\"" +
		" href=\"javascript:void(0)\">" + img0("deny") + "</a></div>" +
		"</div></div>");
	
	// Accept invitation.
	jQuery("#" + id_accept).click(function(){
		jQuery.getJSON(g_livegrounds_url + "/chat.php?jsoncallback=?",
			{"action":"enter", "chat_id":chat_id, "bid":g_blog_id, "uid":g_uid}, function(data){
			if(data.error == ""){

			    //alert("going to " + g_livegrounds_url + "/chat.php?jsoncallback=bajs&action=getmembers&chat_id=" + chat_id + "&bid=" + g_blog_id + "&uid=" + g_uid);
			    
			    jQuery.getJSON(g_livegrounds_url + "/chat.php?jsoncallback=?",
					{"action":"getmembers", "chat_id":chat_id, "bid":g_blog_id, "uid":g_uid}, function(data){
					if(data.error == ""){
						var user_uids = [];
						jQuery.each(data, function(k,v){
							if(k != "owner" && k != "error" && k!= "err_code" && k!= "multi"){
								var user_uid = data[k];
								
								// Vi kontrollerar att användaren fortfarande är kvar på scenen.
								if(jQuery("#user_" + user_uid).length>0){
									user_uids.push(user_uid);
								}
							}
						});
						
						if(user_uids.length == 1){
							/* Vi var ensamma. Det som förmodligen hänt är att vi blivit inbjuden
							   men när vi tryckt accept så har redan dom andra försvunnit från scenen. */
							alert("All chat members are gone!\nSeems like you answered a little bit too late.");
						} else {
							var multichat = data.multi; //(user_uids.length > 2)?true:false;
							if(multichat){
								lg_add_multichat(chat_id, user_uids, data["ownerUID"]);
							}else{
								if(user_uids[0] != g_uid){
									var tmp = user_uids[0];
									user_uids[0] = user_uids[1];
									user_uids[1] = tmp;
								}
								lg_add_chat(chat_id, user_uids[0], user_uids[1], data.owner);
							}
						}
					}
				});
			}
		});
		jQuery("#" + id_main).remove();
	});

	// Deny invitation.
	jQuery("#" + id_deny).click(function(){
		jQuery.getJSON(g_livegrounds_url + "/chat.php?jsoncallback=?",
			{"action":"deny", "chat_id":chat_id, "bid":g_blog_id, "uid":g_uid}, function(data){
		});
		jQuery("#" + id_main).remove();
	});

	// Om man stänger fönstret betyder det "deny".
	jQuery("#" + id_close).click(function(){
		jQuery.getJSON(g_livegrounds_url + "/chat.php?jsoncallback=?",
			{"action":"deny", "chat_id":chat_id, "bid":g_blog_id, "uid":g_uid}, function(data){
		});
		jQuery("#" + id_main).remove(); //aa
	});
	
	jQuery("#" + id_main).corner("5px");
	
	
	var headpos = avatar_head_position("#user_" + uid);
	jQuery("#" + id_main).css('top', headpos["top"] - 145);
	jQuery("#" + id_main).css('left', headpos["left"] - 160);
	
	/* Det är dumt om en dialog skapas för långt upp så man inte kan stänga den. */
	if(jQuery("#" + id_main).offset().top < 0){
		jQuery("#" + id_main).css('top', 0);
	}
	
	jQuery("#" + id_main).draggable({
		zIndex: 	200,
		ghosting:	false,
		handle:		'#' + id_main
	});
	jQuery("#" + id_main).show();
	jQuery("#" + id_main).click(function(){
		jQuery(".dlg").css('z-index', 30);
		jQuery("#" + id_main).css('z-index', 200);
	});
	
	jQuery("#" + id_close).click(function(){
		jQuery("#" + id_main).remove(); //aa
	});
	
	/* Vi sätter dialogen i förgrunden och ser till att alla 
	   andra dialoger inte skymmer. */
	jQuery(".dlg").css('z-index', 30);
	jQuery("#" + id_main).css('z-index', 200);
	
	jQuery("#" + id_main).show();
	initROs();
	return id_main;
	
}


/* 
 | Namn: create_dlg_pa
 | Beskrivning:	
 | Skapar en flyttbar dialogruta som används när man klickar
 | på sin egen användare. dialogrutan låter en skriva PA-
 | meddelanden och ändra sin profil. m.m.
 |
 | Argument: 'title' beskriver dialogens titel.
 | Returvärde:(inget)
 */
function create_dlg_pa(title)
{
    var oName = "";
	var date = new Date();
	var img_update = false;
	var id_main = "dlg_pa";
	var id_handle = id_main + "_handle";
	var id_close = id_main + "_close";

	/* Kontrollera om dialog med givet id redan finns. */
	if(jQuery("#" + id_main).length > 0){
		return (id_main);
	}
	
	/* HTML-blocket för public anouncement som även inkluderar
	   redigering av egen profil. */
	jQuery('#fix_container').append(
		"<div id = \"dlg_pa\" class=\"dlg\"><div id = \"dlg_pa_title\">" +
		"<b>Edit Profile</b></div><div id = \"dlg_pa_handle\" class = " +
		"\"dlg_handle\"><a id = \"dlg_pa_close\" class = \"dlg_close\" " +
		"href = \"javascript:\"><img class=\"ro\" src=" + img("exit.png") + "></a></div><div id=\"dlg_eprofile_img\">" +
		"<img width=115 height=87 class=\"image eprofile\" src=\"" + g_livegrounds_url + 
		"/image.php?uid=" + g_uid + "&s=la&t="+date.getTime()+"\"><div id=" +
		"\"dlg_eprofile_img_change\"><a href=\"javascript:void(0);\">Change " +
		"picture</a></div></div><div id=\"dlg_eprofile_name_title\" class=\"" +
		"eprofile\">Name</div><input id=\"dlg_eprofile_name\" class=\"eprofile\">" +
		"</input><div id=\"dlg_eprofile_gender_title\" class=\"eprofile\">Gender</div>" +
		"<select id=\"dlg_eprofile_gender\" class=\"eprofile\"><option value=\"-\">" +
		"-</option><option value=\"male\">Male</option><option value=\"female\">Female" +
		"</option></select><div id=\"dlg_eprofile_birthdate_title\" class=\"eprofile\">" +
		"Birthdate</div><div id=\"dlg_eprofile_birthdate\" class=\"eprofile\">" +
		"<select id=\"birthdate_year\"></select><select id=\"birthdate_month\"></select>" +
		"<select id=\"birthdate_day\"></select></div><div id=\"dlg_eprofile_location_title\"" +
		" class=\"eprofile\">Location</div><input id=\"dlg_eprofile_location\" " +
		"class=\"eprofile\"></input><div id=\"dlg_eprofile_status_title\" class=\"eprofile\">" +
		"</div><div id=\"dlg_eprofile_status_container\" class=\"eprofile\">" +
		"<div id=\"dlg_eprofile_status_dropdown\"><span id=\"dlg_eprofile_status_edit\">" +
		"<input id=\"dlg_eprofile_status_input\"></input></span>" +
		"<span id=\"dlg_eprofile_status_down\"><a href=\"javascript:void(0);\">" +
		"<img id=\"dlg_eprofile_status_down_img\" src=\"" + g_plugin_url + "/gfx/down.png\"/></a></span>" +
		"</div><div id=\"dlg_eprofile_status_list\"></div></div><div id=\"dlg_eprofile_text_title\" " +
		"class=\"eprofile\">Write something about yourself:</div><textarea id=\"dlg_eprofile_text\" " +
		"class=\"eprofile\"></textarea><div id=\"dlg_eprofile_options\" class=\"eprofile\">" +
		"<span id=\"dlg_eprofile_cancel\" class=\"dlg_button\">" +
		"<a href=\"javascript:void(0);\">" + img0("cancel") + "</a></span><span id=\"dlg_eprofile_getlogin\" " +
		"class=\"dlg_button\"><a href=\"javascript:void(0);\">" + img0('getalogin') + "</a></span>" +
 		"<span id=\"dlg_eprofile_save\" class=\"dlg_button\"><a href=\"javascript:void(0);\">" +
 		(g_login==true?img0("save"):img0("savefornow")) + "</a></span>" + "<span " +
 		"id=\"dlg_eprofile_delete\"><a href=\"javascript:void(0);\">Delete Profile</a></span>" +
		"</div><div id=\"dlg_pa_img\" style=\"float:left;width:50px;height:50px;\"><img width=66 height=56 class=\"image\" src=\"" + g_livegrounds_url + 
		"/image.php?uid=" + g_uid + "&s=sm&t="+date.getTime()+"\">"+
		"</div><div style=\"float:left;width:50px;\" id=\"dlg_pa_info_content\"><div id=\"dlg_pa_info_title\"></div>" +
		"<div id=\"dlg_pa_info\"><a id=\"dlg_pa_info_status\" href='javascript:void(0)'>" + 
		(g_status==""?"Click to set status...":g_status) + 
		"</a><input id=\"dlg_pa_status_edit\" class=\"status_edit\"></input></div>" +		
		"</div><div id=\"dlg_pa_profile\"><a href=\"javascript:void(0);\">Edit profile</a>" +
		"</div><div id=\"dlg_pa_content\"><textarea id = \"dlg_pa_input\" class = \"dlg_input\">" +
		"</textarea></div></div>"
	);
	
	// Lägg till ev. historik.
	for(var i=0;i<g_status_history.length;i++){
		if(g_status_history[i].length>0){
			add_dropdown_item(g_status_history[i]);
		}
	}
	
	// Och några standardfraser.
	add_dropdown_item("is at work");
	add_dropdown_item("is at home");
	add_dropdown_item("is surfing the net");
	add_dropdown_item("is watching tv");
	add_dropdown_item("is contemplating");	


	jQuery("#dlg_eprofile_status_input").click(function(){
		jQuery("#dlg_eprofile_status_list").hide();
		if(jQuery("#dlg_eprofile_status_input").hasClass("eprofile_status_empty")){
			jQuery("#dlg_eprofile_status_input").removeClass("eprofile_status_empty");
			jQuery("#dlg_eprofile_status_input").val("");
		}
		return false;
	});
	
	jQuery("#dlg_eprofile_status_input").focus(function(){
		jQuery("#dlg_eprofile_status_input").click();
	});
	
	jQuery("#dlg_eprofile_status_input").keypress(function(e){
		if(e.which == 13){
			set_status(jQuery("#dlg_eprofile_status_input").val());
			jQuery("#dlg_pa_info > a").html(
					(g_status==""?"Click to set status...":g_status));
			jQuery("#dlg_eprofile_status_input").blur();
		}
	});
	
	// Initialize the status edit/dropdown element
	jQuery("#dlg_eprofile_status_down").click(function(){
		if(jQuery("#dlg_eprofile_status_list").is(":hidden")){
			jQuery(".dlg_eprofile_status_dropdown_item").each(function(){
				jQuery(this).css({"background":"#ffffff"});
			});
			jQuery("#dlg_eprofile_status_list").show();
		} else {
			jQuery("#dlg_eprofile_status_list").hide();
		}
		return false;
	});
	jQuery("#dlg_eprofile_status_list").hide();
	jQuery(".dlg_eprofile_status_dropdown_item").hover(function(){
		jQuery(this).css({"background":"#eeeeee"});
	}, function(){
		jQuery(this).css({"background":"#ffffff"});
	});
	jQuery(".dlg_eprofile_status_dropdown_item").click(function(){
		if(jQuery("#dlg_eprofile_status_input").hasClass("eprofile_status_empty")){
			jQuery("#dlg_eprofile_status_input").removeClass("eprofile_status_empty");
		}
		set_status(jQuery(this).html());
		jQuery("#dlg_pa_info_a").html(
			(g_status==""?"Click to set status...":g_status));
		jQuery("#dlg_eprofile_status_input").val(
			(g_status==""?"Click to set status...":g_status));
		jQuery("#dlg_eprofile_status_list").hide();
		jQuery("#dlg_eprofile_status_input").blur();
	});
	
	// Klick utanför listan gör så att vi gömmer den.
	jQuery("body").click(function(){
		jQuery("#dlg_eprofile_status_list").hide();
	});
	
	
	jQuery("#dlg_eprofile_img").hide();
	jQuery("#dlg_pa_title").hide();
	jQuery(".eprofile").each(function(){
		jQuery(this).hide();
	});
	
	jQuery("#dlg_pa").corner("5px");
	jQuery("#dlg_pa_status_edit").hide();
	
	// Fyll på birthdate-dropdown-listorna med siffror.
	var tags = "<option value=\"0000\"></option>";
	for(var i=date.getFullYear();i>1900;i--){
			tags += "<option value=\"" + i + "\">" + 
			i + "</option>";
	}
	jQuery("#birthdate_year").append(tags);
	var tags = "<option value=\"00\"></option>";
	for(var i=1;i<=12;i++){
			tags += "<option value=\"" + (i<10?"0":"") + 
				i + "\">" + (i<10?"0":"") + i + "</option>";
	}
	jQuery("#birthdate_month").append(tags);
	var tags = "<option value=\"00\"></option>";
	for(var i=1;i<=31;i++){
			tags += "<option value=\"" + (i<10?"0":"") + 
				i + "\">" + (i<10?"0":"") + i + "</option>";
	}
	jQuery("#birthdate_day").append(tags);
	
	jQuery("#dlg_pa_profile").click(function(){
		/* Utöka vyn och låt användaren ändra sin profil
		   i samma dialogruta som public anouncement. */
		jQuery("#dlg_pa").css("top", element_position("#dlg_pa")["top"] - 270);
		jQuery("#dlg_pa").height(430);
		jQuery("#dlg_pa").width(380);
		jQuery("#dlg_pa_input").width(337);
		jQuery("#dlg_pa_profile").hide();
		jQuery("#dlg_pa_img").hide();
		jQuery("#dlg_pa_info_content").hide();
		jQuery("#dlg_eprofile_img").show();
		jQuery("#dlg_pa_title").show();
		jQuery(".eprofile").each(function(){
			jQuery(this).show();
		});
		
		if(g_status==""){
			jQuery("#dlg_eprofile_status_input").addClass("eprofile_status_empty");
			jQuery("#dlg_eprofile_status_input").val("What are you doing right now?");
		} else {
			jQuery("#dlg_eprofile_status_input").val(g_status);
		}
		
		// Hämta information ifrån databasen och visa den
		jQuery.getJSON(g_plugin_url + "/lg_getinfo.php?jsoncallback=?", 
				{"uid":g_uid, "fmt":"long"}, function(data) {
			
			jQuery("#dlg_eprofile_status_title").html(data["name"]);
			jQuery("#dlg_eprofile_name").val(data["name"]);
			jQuery("#dlg_eprofile_location").val(data["location"]);
			jQuery("#dlg_eprofile_text").val(unescape(data["info"]));
			
			var p = data["birthdate"].split('-');
			select_value("birthdate_year", p[0]);
			select_value("birthdate_month", p[1]);
			select_value("birthdate_day", p[2]);
			oName = jQuery("#dlg_eprofile_name").val();
			if(data["gender"]=="-"){
				select_value("dlg_eprofile_gender", "none");
			} else {
				select_value("dlg_eprofile_gender", 
					(data["gender"]=="m"?"Male":"Female"));
			}
		});
		
		if(g_login){
			jQuery("#dlg_eprofile_getlogin").hide();
		}
		
		/* Kontrollera så att vi inte flyttat en dialogen
		   för högt upp så att den är ovanför webläsarens fönster. */
		if(jQuery("#" + id_main).offset().top < jQuery(document).scrollTop()){
			jQuery("#" + id_main).css('top', 0);
		}
				
		return false;
	});
	
	jQuery("#dlg_eprofile_name").blur(function(){
		jQuery("#dlg_eprofile_status_title").html(jQuery("#dlg_eprofile_name").val());
		var name0 = jQuery("#dlg_eprofile_name").val();
		if (oName != name0)
		    {
		log("calling set_name 0");
		//oName = name0;
		if (!set_name(name0))
		    {
			//create_alert(g_uid,"blur User name taken. Please try another one.", "OK");
			$("#dlg_eprofile_name").val(oName);
		    }
		else
		    oName = name0;
		    }

	});
	
	jQuery("#dlg_eprofile_cancel").click(function(){
		/* Byt till det mindre läget där edit-profile 
			funktionalitet är gömd. */
		jQuery("#dlg_pa").height(160);
		jQuery("#dlg_pa").css("top", element_position("#dlg_pa")["top"] + 270);
		jQuery("#dlg_pa").width(300);
		jQuery("#dlg_pa_input").width(256);
		jQuery("#dlg_pa_profile").show();
		jQuery("#dlg_pa_info_content").show();
		jQuery("#dlg_pa_img").show();
		jQuery("#dlg_eprofile_img").hide();
		jQuery("#dlg_pa_title").hide();
		jQuery(".eprofile").each(function(){
			jQuery(this).hide();
		});
	});
	
	jQuery("#dlg_eprofile_delete").click(function(){
		create_dlg_delete_profile();
		return false;
	});
	
	
	jQuery("#dlg_eprofile_save").click(function(){
		/* Kontrollera informationen så att dom är inom 
		   rimliga gränser och uppdatera sedan databasen. */
		var thedate = jQuery("#birthdate_year").val() + "-" +
			jQuery("#birthdate_month").val() + "-" + jQuery("#birthdate_day").val();
			
		/* Vi kontrollerar bara om datumet är riktigt om _hela_ 
		   datumet är angivet. Vi accepterar allså icke-kompletta 
		   datum, men inte felaktiva (t.ex. 1986-02-31) */
		var v = thedate.split("-");
		if(v[2]!="00" && !isValidDate(thedate)){
			alert("Please enter a valid date! [" + thedate + "]");
			return false;
		}
		
		// Om användaren ändrar status utan att trycka enter.
		if(!jQuery("#dlg_eprofile_status_input").hasClass("eprofile_status_empty")){
			set_status(jQuery("#dlg_eprofile_status_input").val());
			jQuery("#dlg_pa_info > a").html(
					(g_status==""?"Click to set status...":g_status));
		}
		
		jQuery.post(g_plugin_url + "/lg_setinfo.php", {
			"birthdate":thedate, "gender":jQuery("#dlg_eprofile_gender").val(), 
			"location":jQuery("#dlg_eprofile_location").val(), 
			"info":escape(jQuery("#dlg_eprofile_text").val())
		}, function(){
		
			/* Om vi är inloggad mot lg_server så ser vi även 
			   till att spara informationen där. */
			if(g_login==true){
				jQuery.getJSON(g_livegrounds_url + "/setinfo.php?jsoncallback=?", {
				"birthdate":thedate, "gender":jQuery("#dlg_eprofile_gender").val(), 
				"location":jQuery("#dlg_eprofile_location").val(),
				"info":escape(jQuery("#dlg_eprofile_text").val())});
			}
			
			/* Vi utnyttjar cancel-funktionaliteten för att dölja
			   edit-profile. */
			jQuery("#dlg_eprofile_cancel").click();
		});
		
		var name = jQuery("#dlg_eprofile_name").val();
		if (oName != name)
		    {
			oName = name;
			log("calling set_name 1");
			var cName = set_name(name);
			if (!cName)
			    {
				create_alert(g_uid,"User name taken. Please try another one.","OK", "alertname_eprofile_notloggedin"); //aa
			    }
			if(cName || img_update){
			    jQuery("#dlg_pa_info_title").html("<div class=\"dlg_pa_top_name\">" + name + "</div><div class=\"dlg_pa_top_you\">(you)</div>");
			    lg_post_message("u", name+"\t" + (img_update?"y":"n") + 
					    "\t"+g_status);
			}
		    }
	});
	
	jQuery("#dlg_eprofile_getlogin").click(function(){
		create_dlg_register();//jQuery("#dlg_eprofile_name").val());
		return false;
	});
	
	jQuery("#dlg_eprofile_img_change").click(function(){
		create_dlg_changepict();
		img_update=true;
		return false;
	});


	/* Om dialogen ska synas när vi skapar denne beror på om scenen är
	   synlig eller inte. */
	if(jQuery("#lg_scene").is(":visible")==true){
		jQuery("#" + id_main).show();
	} else {
		jQuery("#" + id_main).hide();
	}
	
	jQuery("#" + id_main).draggable({
		zIndex: 	200,
		ghosting:	false,
		handle:		'#' + id_main,
		stop:		function(){
						/* Kontrollera så att vi inte flyttat en dialogen
						   för högt upp så att den är ovanför webläsarens fönster. */
						if(jQuery("#" + id_main).offset().top < jQuery(document).scrollTop()){
							jQuery("#" + id_main).css('top', 0);
						}
					}
	});

	jQuery("#" + id_main).click(function(){
		// Vi sätter fönstret i förgrunden.
		jQuery(".dlg").css('z-index', 30);
		jQuery("#" + id_main).css('z-index', 200);
	});
	
	jQuery("#" + id_main + "_input").click(function(){
		/* Opera verkar ha problem ibland när 
		   input-fältet tappar fokus. */
		jQuery(this).val("");
		jQuery(this).focus();
		jQuery(this).removeClass("dlg_pa_input_infotext");
	});
	
	// Sätt position och titel på dialogen.
	var userpos = element_position("#user_" + g_uid);
	jQuery("#" + id_main).css('top', 
		userpos["top"] - 250);
	jQuery("#" + id_main).css('left', 
		userpos["left"] - 140);
	jQuery("#dlg_pa_info_title").append(title);

	jQuery("#" + id_close).click(function(){
		jQuery("#" + id_main).remove(); //aa 
	});
	
	/* Användaren kan byta status-meddelande genom att 
	   klicka på sin status-text. */
	jQuery("#dlg_pa_info").click(function(){
		jQuery("#dlg_pa_status_edit").show();
		jQuery("#dlg_pa_status_edit").val(g_status);
		jQuery("#dlg_pa_status_edit").focus();
		jQuery("#dlg_pa_status_edit").select();
		
		jQuery("#dlg_pa_status_edit").keypress(function(e){
			if(e.which == 13){
				jQuery("#dlg_pa_status_edit").hide();
				set_status(jQuery("#dlg_pa_status_edit").val());
				jQuery("#dlg_pa_info > a").html(
					(g_status==""?"Click to set status...":g_status));
			}
		});
		
		jQuery("#dlg_pa_status_edit").blur(function(){
			if(jQuery("#dlg_pa_status_edit").is(":visible")){
				jQuery("#dlg_pa_status_edit").hide();
				set_status(jQuery("#dlg_pa_status_edit").val());
				jQuery("#dlg_pa_info_status").html(
					(g_status==""?"Click to set status...":g_status));
			}
				
		});
		return false;
	});
	
	/* Det är dumt om en dialog skapas för långt upp så man inte kan stänga den. */
	if(jQuery("#" + id_main).offset().top < 0){
		jQuery("#" + id_main).css('top', 0);
	}

	/* Vi sätter dialogen i förgrunden och ser till att alla 
	   andra dialoger inte skymmer. */
	jQuery(".dlg").css('z-index', 30);
	jQuery("#" + id_main).css('z-index', 200);
	
	/* IE6 hanterar inte z-index på <select> element rätt, vi fixar detta. */
	if(jQuery.browser.msie&&jQuery.browser.version==6){
		ie6_select_fix(id_main);
	}
	
	jQuery("#" + id_main).show();//aa

	initROs();

}

function add_dropdown_item(str)
{
	var item = jQuery.trim(str);
	item = strip_tags(item);
	
	// Vi lägger inte till något som redan finns.
	var exist = false;
	jQuery(".dlg_eprofile_status_dropdown_item").each(function(){
		if(jQuery(this).html()==item){
			exist = true;
		}
	});
	
	if(!exist){
		jQuery("#dlg_eprofile_status_list").append(
			"<div class=\"dlg_eprofile_status_dropdown_item\">" + item + "</div>");
	}
}

/* 
 | Namn: break_words(str, word_length)
 | Beskrivning:	
 | Ser till så att inget ord i en text är över en viss längd.
 | Isåfall så bryts ordet med <br> ända tills att ingen
 | sammanhängande serie med tecken (utan blanksteg) är längre
 | än en viss längd.
 | Argument: 'str' Är strängen att kontrollera.
 |           'word_length' är maximal längd för ord.
 | Returvärde: str där ord längre än word_length har brutits
 |             med <br> efter var "word_length":te tecken.
 */
function break_words(str, word_length){
	var fixed_str = "";
	var words = str.split(" ");
	for(var i=0;i<words.length;i++){
		if(words[i].length > word_length){
			var new_word = "";
			var n = word_length;
			while(words[i].length > n){
				new_word += words[i].substr(n-word_length,word_length);
				new_word += "<br>";
				n+= word_length;
			}

			var r = words[i].length-(n-word_length);
			if(r>0){
				new_word += words[i].substr(words[i].length-r,r);
			}
			
			words[i] = new_word;
		}
			
		fixed_str += words[i] + (i<words.length-1?" ":"");
	}
	return fixed_str;
}

/* 
 | Namn: create_win_pa
 | Beskrivning:	
 | Skapar ett pa fönster med ett meddelande och placerar
 | det i närheten av en given användare.
 |
 | Argument: 
 | 'uid' är användaren pa:t kommer ifrån, 
 | 'message' är meddelande att visa.
 |
 | Returvärde:	(inget)
 */
function create_win_pa(msg, uid)
{
	var id_main = uid + "_pa";
	
	// Vi bryter automatiskt för långa ord.
	var message = break_words(msg, 20);
	
	jQuery('#fix_container').append(
		"<div id = \"" + id_main + "\" class=\"pa_message\">" +
		message + "</div>");
	
	jQuery("#" + id_main).corner("5px");
		
	var userpos = element_position("#user_" + uid);
	jQuery("#" + id_main).css('top', 
		userpos["top"] - jQuery("#" + id_main).height() - 20);
	jQuery("#" + id_main).css('left', 
		userpos["left"] - jQuery("#" + id_main).width()/2 + 15);
		
	jQuery("#" + id_main).show();

	//check for <br> in links (from breakwords) jaan
	//    $(".a").attr("href",): 
	try {
	$("a[href]").each(function()
   { 
       this.href = this.href.replace("<br>","");//this could be more magic with regexp, but wtf
   });

	} catch (ex) {
	    
	}
	
	
}

/* 
 | Namn: create_win_mo
 | Beskrivning:	
 | Skapar ett mouseover fönster med namn, status etc. ovanför en användare.
 |
 | Argument: 	
 | 'info' är översta raden och bör innehålla namn, kön, ålder etc. 
 | 'status' är användrens status-text
 | 'uid' är vilken användare som fönstret ska placeras över.
 |
 | Returvärde:	(inget)
 */
function create_win_mo(info, status, uid)
{
	var id_main = uid + "_mo";
	if(uid==g_uid){
		jQuery('#fix_container').append(
				"<div id = \"" + id_main + "\" class=\"mo_window\">" +
				"<div id = \"" + id_main + "_info\" class=\"mo_info\">" + info + 
				"</div><div id = \"" + id_main + "_status\" class=\"mo_status\">" +	
				"<a id=\"" + id_main + "_status_a\" href='javascript:void(0)'>" + 
				(g_status==""?"Click to set status...":g_status) + 
				"</a><input id=\"dlg_mo_status_edit\" class=\"status_edit\"></input>" +
				"</div></div>");
				
				jQuery("#dlg_mo_status_edit").hide();
				
				// Användaren kan byta status-meddelande genom att klicka på sin status-text.
				jQuery("#" + id_main + "_status").click(function(){
					jQuery("#dlg_mo_status_edit").show();
					jQuery("#dlg_mo_status_edit").val(g_status);
					jQuery("#dlg_mo_status_edit").focus();
					jQuery("#dlg_mo_status_edit").select();
					
					jQuery("#dlg_mo_status_edit").keypress(function(e){
						if(e.which == 13){
							jQuery("#dlg_mo_status_edit").hide();
							set_status(jQuery("#dlg_mo_status_edit").val());
							jQuery("#" + id_main + "_status_a").html(
								(g_status==""?"Click to set status...":g_status));
						}
					});
					
					jQuery("#dlg_mo_status_edit").blur(function(){
							if(jQuery("#dlg_mo_status_edit").is(":visible")){
								jQuery("#dlg_mo_status_edit").hide();
								set_status(jQuery("#dlg_mo_status_edit").val());
								jQuery("#" + id_main + "_status_a").html(
									(g_status==""?"Click to set status...":g_status));
							}
					});
					return false;
				});
	} else {
		jQuery('#fix_container').append(
			"<div id = \"" + id_main + "\" class=\"mo_window\">" +
			"<div id = \"" + id_main + "_info\" class=\"mo_info\">" + info + 
			"</div><div id = \"" + id_main + "_status\" class=\"mo_status\">" +
			status + "</div></div>");
	}
		
	var userpos = element_position("#user_" + uid);
	jQuery("#" + id_main).css('top', 
		userpos["top"] - jQuery("#" + id_main).height() - 20);
	jQuery("#" + id_main).css('left', 
		userpos["left"] - 70);
		
	jQuery("#" + id_main).show();
}

/* 
 | Namn: create_dlg_signin
 | Beskrivning:
 | Skapar en flyttbar dialogruta som används när man klickar "sign in". dialogrutan 
 | låter en logga in mot lg-servern. Den positioneras i nedre högra hörnet av fönstret.
 |
 | Argument: (inga)
 | Returvärde: id för den nya dialogen.
 */
function create_dlg_signin()
{
	var id_main = "dlg_signin";
	var id_handle = id_main + "_handle";
	var id_close = id_main + "_close";
	var id_content = id_main + "_content";
	var id_email = id_main + "_email";
	var id_password = id_main + "_password";
	var id_submit = id_main + "_submit";
	
	var wsize = get_window_size();

	/* Kontrollera om dialog med givet id redan finns. */
	if(jQuery("#" + id_main).length > 0){
		return (id_main);
	}

	jQuery('#fix_container').append(
		"<div id = \"" + id_main + "\" class=\"dlg\">" +
		"<div id = " + id_handle + "> " +
		"<a id = " + id_close + " class = \"dlg_close\" " +
		"href = \"javascript:\">" + img0("exit")  + "</a></div>" +		
		"<div id = " + id_content + ">" +
			"<div class = \"dlg_signin_label\">E-mail address</div>" +
			"<input id = " + id_email + " class = \"dlg_signin_input\">" +
			"</input><div class = \"dlg_signin_label\">Password</div>" +
			"<input id = " + id_password + " type=\"password\"class = " +
			"\"dlg_signin_input\"></input><span id=\"" + id_main + 
			"_forgotpassword\"style=\"margin-left: 5px\">" +
			"<a href=\"javascript:void(0);\">Forgot password?</a></span>" +
			"<div id=\""+ id_main + "_error\"></div>" +
			"<div id=\"dlg_signin_getlogin\"><a href=\"javascript:void(0);\">" +
		"Get a login</a></div><div id = " + id_submit + 
			" class = \"dlg_signin_label\">" +
		"<a href=\"javascript:void(0);\">" + img0("submit") + "</a></div></div></div>"
	);
	
	jQuery("#" + id_main + "_error").hide();
	
	jQuery("#" + id_main + "_getlogin").click(function(){
		create_dlg_register();
		return false;
	});
	
	jQuery("#" + id_main + "_forgotpassword").click(function(){
		create_dlg_forgotpassword();
		return false;
	});
	
	jQuery("#" + id_main).corner("5px");
	
	jQuery("#" + id_main).css('top', wsize["height"]-224); //aa
	jQuery("#" + id_main).css('left', wsize["width"]-319);

	//jQuery("#" + id_main).show();

	jQuery("#" + id_close).click(function(){
		jQuery("#" + id_main).remove(); //aa
	});
	
	/* Vi sätter dialogen i förgrunden och ser till att alla 
	   andra dialoger inte skymmer. */
	jQuery(".dlg").css('z-index', 30);
	jQuery("#" + id_main).css('z-index', 200);
	
	/* IE6 hanterar inte z-index på <select> element rätt, vi fixar detta. */
	jQuery("#" + id_main).css('display', 'none');



	if(jQuery.browser.msie&&jQuery.browser.version==6){
		ie6_select_fix(id_main);
	}
	jQuery("#" + id_main).show();//aa in da house
	initROs();//jaan
	return id_main;
}



/* 
 | Namn: create_dlg_feedback
 | Beskrivning:
 | Skapar en flyttbar dialogruta som används när man klickar "sign in". dialogrutan 
 | låter en logga in mot lg-servern. Den positioneras i nedre högra hörnet av fönstret.
 |
 | Argument: (inga)
 | Returvärde: id för den nya dialogen.
 */
function create_dlg_feedback()
{
	var id_main = "dlg_feedback";
	var id_handle = id_main + "_handle";
	var id_close = id_main + "_close";
	var id_content = id_main + "_content";
	var id_email = id_main + "_email";
	var id_text = id_main + "_text";
	var id_password = id_main + "_password";
	var id_submit = id_main + "_submit";
	
	var wsize = get_window_size();

	/* Kontrollera om dialog med givet id redan finns. */
	if(jQuery("#" + id_main).length > 0){
		return (id_main);
	}

	jQuery('#fix_container').append(
		"<div id = \"" + id_main + "\" class=\"dlg\">" +
		"<div id = " + id_handle + "> " +
		"<a id = " + id_close + " class = \"dlg_close\" " +
		"href = \"javascript:\">" + img0("exit") + "</a></div>" +		
		"<div id = " + id_content + ">" +
			"<div id=\"dlg_feedback_email_label\" class = \"dlg_signin_label\">E-mail address (optional)</div>" +
			"<input id = " + id_email + " class = \"dlg_signin_input\">" +
			"</input><div id=\"dlg_feedback_text_label\" class = \"dlg_signin_label\">Say whatever you like about LiveGrounds.</div>" +
			"<input id = " + id_password + " type=\"password\"class = " +
			"\"dlg_signin_input\"></input><textarea id=\"" + id_text + "\" ></textarea><span id=\"" + id_main + 
			"_forgotpassword\">" +
			"<a href=\"javascript:void(0);\">Forgot password?</a></span>" +
			"<div id=\""+ id_main + "_error\"></div>" +
			"<div id = " + id_submit + 
			" class = \"dlg_signin_label\">" +
		"<a href=\"javascript:void(0);\">" + img0("submit") + "</a></div></div></div>"
	);
	$("#" + id_password).hide();
	jQuery("#" + id_main + "_error").hide();
	
	jQuery("#" + id_main + "_getlogin").click(function(){
		create_dlg_register();
		return false;
	});
	jQuery("#" + id_main + "_forgotpassword").hide();
	jQuery("#" + id_main + "_forgotpassword").click(function(){
		create_dlg_forgotpassword();
		return false;
	});
	
	jQuery("#" + id_main).corner("5px");
	
	jQuery("#" + id_main).css('top', wsize["height"]-292);
	jQuery("#" + id_main).css('left', wsize["width"]-516);

	//jQuery("#" + id_main).show();

	jQuery("#" + id_close).click(function(){
		jQuery("#" + id_main).remove();  //aa
	});
	
	/* Vi sätter dialogen i förgrunden och ser till att alla 
	   andra dialoger inte skymmer. */
	jQuery(".dlg").css('z-index', 30);
	jQuery("#" + id_main).css('z-index', 200);
	
	/* IE6 hanterar inte z-index på <select> element rätt, vi fixar detta. */
	jQuery("#" + id_main).css('display', 'none');



	if(jQuery.browser.msie&&jQuery.browser.version==6){
		ie6_select_fix(id_main);
	}
	jQuery("#" + id_main).show();//aa in da house
	initROs();
	return id_main;
}




/* 
 | Namn: create_dlg_forgotpassword
 | Beskrivning:
 | Skapar en flyttbar dialogruta som används när man klickar "Forgot password". dialogrutan 
 | låter en användare ange sin email adress och därefter få sitt lösenord skickat.
 |
 | Argument: (inga)
 | Returvärde: id för den nya dialogen.
 */
function create_dlg_forgotpassword()
{
	var id_main = "dlg_forgotpassword";
	var id_handle = id_main + "_handle";
	var id_close = id_main + "_close";
	var id_info = id_main + "_info";
	var id_email = id_main + "_email";
	var id_buttons = id_main + "_buttonbox";
	var id_cancel = id_main + "_cancel";
	var id_send = id_main + "_submit";
	var id_ok = id_main + "_ok";
	var id_error = id_main + "_error";
	
	var wsize = get_window_size();

	/* Kontrollera om dialog med givet id redan finns. */
	if(jQuery("#" + id_main).length > 0){
		return (id_main);
	}

	jQuery('#fix_container').append(
		"<div id = " + id_main + " class=\"dlg\">" +
		"<div id = " + id_handle + " class=\"dlg_handle\"> " +
		"<a id = \"" + id_close + "\" class = \"dlg_close\" " +
		"href = \"javascript:void(0);\">" +  img0("exit") + "</a></div>" +		
		"<div id = " + id_info + ">" +
		"Enter your email address below, click Send and you will receive " +
		"an e-mail with more details within moments." +
		"</div><div id=\"" + id_error + "\">Invalid e-mail address!</div>" +
		"<input id = " + id_email + " class = \"dlg_signin_input\">" +
		"</input><div id=\"" + id_buttons + "\">" +
		"<span id=\"" + id_cancel + "\" class = \"dlg_forgotpassword_buttons\">" +
		"<a href=\"javascript:void(0);\">" + img0("cancel")+ "</a></span>" +
		"<span id=\"" + id_send + "\" class = \"dlg_forgotpassword_buttons\">" +
		"<a href=\"javascript:void(0);\">" + img0("send")+ "</a></span>" +
		"<span id=\"" + id_ok + "\" class = \"dlg_forgotpassword_buttons\">" +
		"<a href=\"javascript:void(0);\">" + img0("ok")+ "</a></span>" +  //aa added btn for ok
		"</div></div>"
	);
	
	jQuery("#" + id_error).hide();
	jQuery("#" + id_ok).hide();
	jQuery("#" + id_main).corner("5px");
	
	jQuery("#" + id_send).click(function(){
		var email = jQuery("#" + id_email).val();
		if(echeck(email)==false){
			jQuery("#" + id_error).show();
			setTimeout(function(){jQuery("#" + id_error).hide();}, 3000);
			return false;
		} else {
			jQuery("#" + id_cancel).hide();
			jQuery("#" + id_send).hide();
			jQuery("#" + id_email).hide();
			jQuery("#" + id_main).height(100);
			jQuery("#" + id_info).html("Sending password...");
			/*jQuery.post(g_livegrounds_url + "/forgotpassword.php", 
			{"email":email}, function(data){
				jQuery("#" + id_ok).show();
				jQuery("#" + id_info).html(data);
				});*/

			jQuery.getJSON(g_livegrounds_url + "/forgotpassword.php?jsoncallback=?",{"email":email}, function(data) {
				jQuery("#" + id_ok).show();
				jQuery("#" + id_info).html(data["resp"]);
			    });
		}
	});
	
	// Sätt position på dialogen.
	jQuery("#" + id_main).css('top', 
		wsize["height"]/2 - jQuery("#" + id_main).height()/2);
	jQuery("#" + id_main).css('left', 
		wsize["width"]/2 - jQuery("#" + id_main).width()/2);
	
	jQuery("#" + id_main).draggable({
		zIndex: 	200,
		ghosting:	false,
		handle:		'#' + id_main
	});
	jQuery("#" + id_main).show();
	
	jQuery("#" + id_cancel).click(function(){
		jQuery("#" + id_main).remove();
	});
	jQuery("#" + id_ok).click(function(){
		jQuery("#" + id_main).remove();
	});
	jQuery("#" + id_close).click(function(){
		jQuery("#" + id_main).remove(); //aa
	});
	
	// Det är dumt om en dialog skapas för långt upp så man inte kan stänga den.
	if(jQuery("#" + id_main).offset().top < 0){
		jQuery("#" + id_main).css('top', 0);
	}
	
	/* Vi sätter dialogen i förgrunden och ser till att alla 
	   andra dialoger inte skymmer. */
	jQuery(".dlg").css('z-index', 30);
	jQuery("#" + id_main).css('z-index', 200);
	initROs();
	return id_main;
}


/* 
 | Namn: create_dlg_siteowner
 | Beskrivning:
 | Skapar en flyttbar dialogruta som används när ett login ifrån site owner
 | detekteras. Dialogen låter användaren autentisera sig mot blogservern för
 | att få tillgång till speciell avatar.
 |
 | Argument: (inga)
 | Returvärde: (inget)
 */
function create_dlg_siteowner()
{
	var id_main = "dlg_siteowner";
	var id_handle = id_main + "_handle";
	var id_close = id_main + "_close";
	var id_info = id_main + "_info";
	var id_pass = id_main + "_pass";
	var id_buttons = id_main + "_buttonbox";
	var id_cancel = id_main + "_cancel";
	var id_login = id_main + "_login";
	var id_error = id_main + "_error";
	
	var wsize = get_window_size();

	/* Kontrollera om dialog med givet id redan finns. */
	if(jQuery("#" + id_main).length > 0){
		return (id_main);
	}

	jQuery('#fix_container').append(
		"<div id = " + id_main + " class=\"dlg\">" +
		"<div id = " + id_handle + " class=\"dlg_handle\"> " +
		"<a id = \"" + id_close + "\" class = \"dlg_close\" " +
		"href = \"javascript:void(0);\">" + img0("exit") + "</a></div>" +		
		"<div id = " + id_info + ">" +
		"<b>Welcome site owner!</b><br>" +
		"Enter your password from the Livegrounds option panel to unlock " +
		"your special avatar, or press skip for a normal avatar." +
		"</div><div id=\"" + id_error + "\">Wrong password!</div>" +
		"<input type=\"password\" id = " + id_pass + " class = \"dlg_signin_input\">" +
		"</input><div id=\"" + id_buttons + "\">" +
		"<span id=\"" + id_cancel + "\" class = \"dlg_siteowner_buttons\">" +
		"<a href=\"javascript:void(0);\">" + img0("skip") + "</a></span>" +
		"<span id=\"" + id_login + "\" class = \"dlg_siteowner_buttons\">" +
		"<a href=\"javascript:void(0);\">" + img0("login") + "</a></span>" +
		"</div></div>"
	);
	
	jQuery("#" + id_error).hide();
	jQuery("#" + id_main).corner("5px");

	// Enter == klick på 'login'.
	jQuery("#" + id_pass).keypress(function(e){
		if(e.which == 13){jQuery("#" + id_login).click();}
	});
	
	jQuery("#" + id_login).click(function(){
		var ok = false;
		var pass = jQuery("#" + id_pass).val();

		// Logga in mot blogg-servern.
		jQuery.post(g_plugin_url + "/lg_siteowner.php", 
				{"pass":pass}, function(data) {
				if(data == "yes"){
				    siteowner = true;
				    lg_set_own_avatar(0);
				    jQuery("#dlg_siteowner").remove();
				    $("#lg_logLink").show().css("visibility","visible");
				    //show info on new version if available
					if (new_version) {
					    $("#lg_updateAA").fadeIn();
					    
					    //show that it's available
					    //jQuery("#lg_scene_icon").append("<div id=crap style='color:red'>Update available</div>");
					    //$("#crap").click(function(){
					    //    alert("Craptastic, dude");
						    //jQuery("#" + id_main).remove();
					    //});

					}
					else {
					    //jQuery("#lg_scene_icon").append("You have the latest version");
					}
					    
					

					
				} else {
					jQuery("#dlg_siteowner_pass").val("");
					jQuery("#dlg_siteowner_error").show();
					setTimeout(function(){jQuery("#dlg_siteowner_error").hide();}, 3000);
					siteowner = false;
					lg_set_own_avatar(0);
				}
		});
	});
	
	/* Sätt position på dialogen. */
	jQuery("#" + id_main).css('top', 
		wsize["height"]/2 - jQuery("#" + id_main).height()/2);
	jQuery("#" + id_main).css('left', 
		wsize["width"]/2 - jQuery("#" + id_main).width()/2);
	
	jQuery("#" + id_main).draggable({
		zIndex: 	200,
		ghosting:	false,
		handle:		'#' + id_main
	});
	jQuery("#" + id_main).show();
	
	jQuery("#" + id_cancel).click(function(){
		jQuery("#" + id_main).remove();
	});
	jQuery("#" + id_close).click(function(){
		jQuery("#" + id_main).remove(); //aa
	});
	
	/* Det är dumt om en dialog skapas för långt upp så man inte kan stänga den. */
	if(jQuery("#" + id_main).offset().top < 0){
		jQuery("#" + id_main).css('top', 0);
	}
	
	/* Vi sätter dialogen i förgrunden och ser till att alla 
	   andra dialoger inte skymmer. */
	jQuery(".dlg").css('z-index', 30);
	jQuery("#" + id_main).css('z-index', 200);
	
	jQuery("#" + id_pass).focus();
	initROs();
}


/* 
 | Namn: create_dlg_livegrounds
 | Beskrivning:
 | Skapar en flyttbar dialogruta som används när man klickar på livegrounds
 | logotypen nere i vänstra hörnet på scenen. Denna dialogruta kan användas
 | för att visa credits, faq eller annan vettig information för besökarna.
 |
 | Argument: (inga)
 | Returvärde: id för den nya dialogen.
 */
function create_dlg_livegrounds()
{
	var date = new Date();
	var wsize = get_window_size();
	var id_main = "dlg_livegrounds";
	var id_handle = id_main + "_handle";
	var id_close = id_main + "_close";
	var img_update = false;

	/* Kontrollera om dialog med givet id redan finns. */
	if(jQuery("#" + id_main).length > 0){
		return (id_main);
	}
	
	jQuery('#fix_container').append(
		"<div id = \"" + id_main + "\" class=\"dlg_livegrounds dlg\">" +
		"<div id = \"" + id_handle + "\" class = \"dlg_handle\"> " +
		"<a id = \"" + id_close + "\" class = \"dlg_close\" " +
		"href = \"javascript:\">" + img0("exit") + "</a></div>" +
			"<div id = \"" + id_main + "_content\">" +
			"<b>Livegrounds</b> version " + g_version + "<br><br>" +
			"To find out more about livegrounds you can visit our " +
			"website <a href=\"http://www.livegrounds.com\" target=\"_blank\">" +
			"http://www.livegrounds.com</a>." +
			"</div>"+
		"</div>"
	);
	
	jQuery("#" + id_main).corner("5px");
	jQuery("#" + id_main).draggable({
		zIndex: 	200,
		ghosting:	false,
		handle:		'#' + id_main
	});

	jQuery("#" + id_main).click(function(){
		jQuery(".dlg").css('z-index', 30);
		jQuery("#" + id_main).css('z-index', 200);
	});
	
	/* Sätt position och titel på dialogen. */
	jQuery("#" + id_main).css('top', 
		wsize["height"]/2 - jQuery("#" + id_main).height()/2);
	jQuery("#" + id_main).css('left', 
		wsize["width"]/2 - jQuery("#" + id_main).width()/2);

	jQuery("#" + id_close).click(function(){
		jQuery("#" + id_main).remove();
	});
	
	/* Det är dumt om en dialog skapas för långt upp så man inte kan stänga den. */
	if(jQuery("#" + id_main).offset().top < 0){
		jQuery("#" + id_main).css('top', 0);
	}
	
	/* Vi sätter dialogen i förgrunden och ser till att alla 
	   andra dialoger inte skymmer. */
	jQuery(".dlg").css('z-index', 30);
	jQuery("#" + id_main).css('z-index', 200);
	initROs();
	return id_main;
}


function create_dlg_generic(stuff)
{
	var date = new Date();
	var wsize = get_window_size();
	var id_main = "dlg_generic";
	var id_handle = id_main + "_handle";
	var id_close = id_main + "_close";
	var img_update = false;
	//alert(stuff);
	stuff = stuff.replace(/&lt;/g,"<");
	stuff = stuff.replace(/&gt;/g,">");
	//alert(stuff);
	/* Kontrollera om dialog med givet id redan finns. */
	if(jQuery("#" + id_main).length > 0){
		return (id_main);
	}
	
	jQuery('#fix_container').append(
		"<div id = \"" + id_main + "\" class=\"dlg_livegrounds dlg\">" +
		"<div id = \"" + id_handle + "\" class = \"dlg_handle\"> " +
		"<a id = \"" + id_close + "\" class = \"dlg_close\" " +
		"href = \"javascript:\">" + img0("exit") + "</a></div>" +
			"<div id = \"" + id_main + "_content\">" +
			stuff +
			"</div>"+
		"</div>"
	);
	
	//jQuery("#" + id_main).corner("5px");
	/*jQuery("#" + id_main).draggable({
		zIndex: 	200,
		ghosting:	false,
		handle:		'#' + id_main
	});*/

	jQuery("#" + id_main).click(function(){
		jQuery(".dlg").css('z-index', 30);
		jQuery("#" + id_main).css('z-index', 200);
	});
	
	/* Sätt position och titel på dialogen. */
	jQuery("#" + id_main).css('top', 
		wsize["height"]/2 - jQuery("#" + id_main).height()/2);
	jQuery("#" + id_main).css('left', 
		wsize["width"]/2 - jQuery("#" + id_main).width()/2);

	jQuery("#" + id_close).click(function(){
		jQuery("#" + id_main).remove(); //aa
	});
	
	/* Det är dumt om en dialog skapas för långt upp så man inte kan stänga den. */
	if(jQuery("#" + id_main).offset().top < 0){
		jQuery("#" + id_main).css('top', 0);
	}
	
	/* Vi sätter dialogen i förgrunden och ser till att alla 
	   andra dialoger inte skymmer. */
	jQuery(".dlg").css('z-index', 30);
	jQuery("#" + id_main).css('z-index', 200);
	initROs();
	return id_main;
}


/* 
 | Namn: isValidDate
 | Beskrivning:
 | Fin funktion för att verifiera att ett datum på formen yyyy-mm-dd 
 | är korrekt från http://paulschreiber.com/blog/
 |
 | Argument: 'date' är datumsträngen som ska verifieras.
 | Returvärde: (boolean) 'true' om datum är korrekt, annars 'false'.
 */
function isValidDate(date) {
	var IsoDateRe = new RegExp("^([0-9]{4})-([0-9]{2})-([0-9]{2})$");
	var matches = IsoDateRe.exec(date);
	if (!matches) return false;
	var composedDate = new Date(matches[1], (matches[2] - 1), matches[3]);
	return ((composedDate.getMonth() == (matches[2] - 1)) &&
		(composedDate.getDate() == matches[3]) &&
		(composedDate.getFullYear() == matches[1]));
}

/* 
 | Namn: create_dlg_register
 | Beskrivning:
 | Skapar en flyttbar dialogruta som används när man klickar "Get a login". 
 |
 | Argument: (inga)
 | Returvärde: id för den nya dialogen.
 */
function create_dlg_register()
{
    
	var id_main = "dlg_register";
	var id_handle = id_main + "_handle";
	var id_close = id_main + "_close";
	var id_name = id_main + "_name";
	var id_content = id_main + "_content";
	var id_email = id_main + "_email";
	var id_password = id_main + "_password";
	var id_submit = id_main + "_submit";
	
	var wsize = get_window_size();

	// Kontrollera om dialog med givet id redan finns.
	if(jQuery("#" + id_main).length > 0){
		return (id_main);
	}

	jQuery('#fix_container').append(
		"<div id = " + id_main + " class=\"dlg\">" +
		"<div id=\"" + id_handle + "\" class = \"dlg_handle\">" +
		"<a id = " + id_close + " class = \"dlg_close\" " +
		"href = \"javascript:\">" + img0("exit")+ "</a></div>" +		
		"<div id = " + id_content + ">" +
			"<div id=\"dlg_register_info\">Submit name and login information to get a permanent profile.</div>" +
			"<div id=\"dlg_register_form\">" +
		"<div class = \"dlg_signin_label\">Name</div>" +
			"<input id = " + id_name + " class = \"dlg_signin_input\" value=\"" + g_name + "\">" +
			"</input><div class = \"dlg_signin_label\">Email</div>" +
			"<input id = " + id_email + " class = \"dlg_signin_input\">" +
			"</input><div class = \"dlg_signin_label\">Password</div>" +
			"<input id = " + id_password + " type=\"password\"class = " +
			"\"dlg_signin_input\"></input><div class = \"dlg_signin_label\">Re-type password</div>" +
			"<input id=\"" + id_password + "2\" type=\"password\"class = " +
			"\"dlg_signin_input\"></input><div id=\"dlg_register_error\"></div></div>" +
			"<div id = \"dlg_register_cancel\" class = \"dlg_button\">" +
		"<a href=\"javascript:void(0);\">" + img0("cancel")+ "</a></div>" +
			"<div id = " + id_submit + " class = \"dlg_button\">" +
		"<a href=\"javascript:void(0);\">" + img0("submit") + "</a></div></div></div>"
	);
	
	jQuery("#" + id_main).corner("5px");
	
	jQuery("#" + id_main).css('top', 
		wsize["height"]/2 - jQuery("#" + id_main).height()/2);
	jQuery("#" + id_main).css('left',
		wsize["width"]/2 - jQuery("#" + id_main).width()/2);
	
	jQuery("#" + id_main).draggable({
		zIndex: 	200,
		ghosting:	false,
		handle:		'#' + id_main
	});
	jQuery("#" + id_main).show();
	
	jQuery("#" + id_main).click(function(){
		jQuery(".dlg").css('z-index', 30);
		jQuery("#" + id_main).css('z-index', 200);
	});

	jQuery("#" + id_close).click(function(){
		jQuery("#" + id_main).remove(); //aa
	});
	
	jQuery("#dlg_register_cancel").click(function(){
		jQuery("#" + id_main).remove();
	});
	
	jQuery("#dlg_register_submit").click(function(){
		// kontrollera fält.
		var email = jQuery("#dlg_register_email").val();
		var uN = $("#" + id_name).val();
		var pass = jQuery("#dlg_register_password").val();
		var pass2 = jQuery("#dlg_register_password2").val();
		jQuery("#dlg_register_error").html("");
		
		if(echeck(email)==false){
			jQuery("#dlg_register_error").html("Email is not valid!");
			jQuery("#dlg_register_email").focus();
			return false;
		}
		
		if(pass!=pass2){
			jQuery("#dlg_register_error").html("Passwords don't match!");
			return false;
		}
		//alert("here we go");
		// Vi provar att registrera användaren.
		jQuery.getJSON(g_livegrounds_url + "/register.php?jsoncallback=?", 
			{"email":email,"password":pass,"name":uN}, function(data){
			if(data["result"] == "yes"){
				jQuery("#" + id_main).remove();
				jQuery("#lg_scene_login").hide();
				jQuery("#lg_scene_logout").show();
				jQuery("#dlg_eprofile_getlogin").hide();
				jQuery("#dlg_eprofile_save > a").html(img0("save"));
				initROs();
				if(jQuery("#dlg_signin").is(":visible")){
					jQuery("#dlg_signin").hide();
				}
				
				g_email = email;
				g_login = true;
				//jQuery("#lg_scene_logout").prepend(g_email);
				
				/* Lagra nuvarande namn på LG-servern så att om användaren
				   stänger edit-profile utan att spara någon info så blir inte
				   namnet "" om användaren reload:ar sidan. */
				//var uname = jQuery("#user_" + g_uid + "_sign").html();
				jQuery("#user_" + g_uid + "_sign").html(uN);

				jQuery.getJSON(g_livegrounds_url + "/setinfo.php?jsoncallback=?", {"name":uN});
				jQuery.post(g_plugin_url + "/lg_setinfo.php", {"name":uN,"login":1});
				
					
			} else if(data["result"] == "no"){
				jQuery("#dlg_register_error").html("Email already exists!");
				jQuery("#dlg_register_email").val("");
				jQuery("#dlg_register_email").focus();
			}

			else if(data["result"] == "maybe"){
				jQuery("#dlg_register_error").html("User name taken!");
				//jQuery("#dlg_register_email").val("");
				jQuery("#dlg_register_name").focus();
			}
		});
	
		return false;
	});

	
	/* Vi sätter dialogen i förgrunden och ser till att alla 
	   andra dialoger inte skymmer. */
	jQuery(".dlg").css('z-index', 30);
	jQuery("#" + id_main).css('z-index', 200);
	
	/* IE6 hanterar inte z-index på <select> element rätt, vi fixar detta. */
	if(jQuery.browser.msie&&jQuery.browser.version==6){
		ie6_select_fix(id_main);
	}
	initROs();//jaan
	return id_main;
}


/* 
 | Namn: create_dlg_delete_profile
 | Beskrivning:
 | Skapar en flyttbar dialogruta som används när man
 | klickar på "Delete profile". Dialogen låter användaren
 | tabort sin profil, efter att ha gett en varning.
 |
 | Argument: (inga)
 | Returvärde: (inget)
 */
function create_dlg_delete_profile()
{
	var wsize = get_window_size();
	var id_main = "dlg_delete_profile";
	var id_handle = id_main + "_handle";
	var id_close = id_main + "_close";

	/* Kontrollera om dialog med givet id redan finns. */
	if(jQuery("#" + id_main).length > 0){
		return;
	}
	
	jQuery('#fix_container').append(
		"<div id = \"" + id_main + "\" class=\"dlg\">" +
		"<div id = \"" + id_handle + "\" class = \"dlg_handle\"> " +
		"<a id = \"" + id_close + "\" class = \"dlg_close\" " +
		"href = \"javascript:\">" + img0("exit") + "</a></div>" +
			"<div id = \"" + id_main + "_content\">" +
			"<b>Are you sure you want to delete all your " +
			"profile data and deactivate your account?</b>" +
			"</div><br>"+
			"<div id=\"" + id_main + "_options\"><span id=\"" + 
		id_main + "_cancel\"><a href=\"javascript:void(0);\">" + img0("cancel") +
			"</a></span><span id=\"" + id_main + 
			"_delete\"><a href=\"javascript:void(0);\">" +
		img0("deleteprofile") + "</a></span><span id=\"" + id_main + "_status\">" +
			"<b>Removing profile...</b></span></div>" +
		"</div>"
	);
	jQuery("#" + id_main + "_status").hide();
	jQuery("#" + id_main).corner("5px");
	jQuery("#" + id_main).draggable({
		zIndex: 	200,
		ghosting:	false,
		handle:		'#' + id_main
	});

	jQuery("#" + id_main).click(function(){
		jQuery(".dlg").css('z-index', 30);
		jQuery("#" + id_main).css('z-index', 200);
	});
	
	jQuery("#" + id_main + "_delete").click(function(){
		//log("hiding " + id_main + "_content");
		jQuery("#" + id_main + "_delete").hide();
		jQuery("#" + id_main + "_cancel").hide();
		//jQuery("#" + id_main + "_options").hide();
		jQuery("#" + id_main + "_status").show();
		jQuery("#" + id_main + "_content").hide();
		
		/* Same action as logout except that we also delete
		   the profile from the LG-server. */
		jQuery.getJSON(g_livegrounds_url + "/delete.php?jsoncallback=?", 
			{"email":g_email}, function(data){
			lg_logout();
			jQuery("#" + id_main).remove();
			jQuery("#dlg_pa").remove();
		});
	});
	
	jQuery("#" + id_main + "_cancel").click(function(){
		jQuery("#" + id_main).remove();
	});
	
	/* Sätt position på dialogen. */
	jQuery("#" + id_main).css('top', 
		wsize["height"]/2 - jQuery("#" + id_main).height()/2);
	jQuery("#" + id_main).css('left', 
		wsize["width"]/2 - jQuery("#" + id_main).width()/2);

	jQuery("#" + id_close).click(function(){
		jQuery("#" + id_main).remove(); //aa
	});
	
	/* Det är dumt om en dialog skapas för långt upp så man inte kan stänga den. */
	if(jQuery("#" + id_main).offset().top < 0){
		jQuery("#" + id_main).css('top', 0);
	}
	
	/* Vi sätter dialogen i förgrunden och ser till att alla 
	   andra dialoger inte skymmer. */
	jQuery(".dlg").css('z-index', 30);
	jQuery("#" + id_main).css('z-index', 200);
	initROs();
}


/* 
 | Namn: create_dlg_changepict
 | Beskrivning:
 | Skapar en flyttbar dialogruta som används när man klickar "Change picture".
 |
 | Argument: (inga)
 | Returvärde: id för den nya dialogen.
 */
function create_dlg_changepict()
{
	var date = new Date();
	var id_main = "dlg_changepict";
	var id_handle = id_main + "_handle";
	var id_close = id_main + "_close";
	var id_content = id_main + "_content";
	var id_path = id_main + "_path";
	var id_submit = id_main + "_submit";
	
	var wsize = get_window_size();

	/* Kontrollera om dialog med givet id redan finns. */
	if(jQuery("#" + id_main).length > 0){
		return (id_main);
	}
	//style=\"top:50px;height: 500px;width:1000px;\"
	jQuery('#fix_container').append(
		"<div  id = " + id_main + " class=\"dlg\">" +
		"<div id=\"" + id_handle + "\" class = \"dlg_handle\">" +
		"<a id = " + id_close + " class = \"dlg_close\" " +
		"href = \"javascript:\">" + img0("exit") + "</a></div>" +		
		"<div id = " + id_content + ">" +
		"<div id=\"dlg_changepict_info\">Upload a picture from your " +
		"computer and use it in your profile.</div>" +
		"<iframe  id=\"dlg_changepict_form\" scrolling=\"no\" " +
		"frameborder=\"0\" hidefocus=\"true\" src=\"" + 
		g_livegrounds_url + "/upload.php?type=image&glu=" + g_livegrounds_url + "\"></iframe>" +
		"</div>"
	);
	
	jQuery("#" + id_main).corner("5px");
	
	jQuery("#" + id_main).css('top', 
		wsize["height"]/2 - jQuery("#" + id_main).height()/2);
	jQuery("#" + id_main).css('left',
		wsize["width"]/2 - jQuery("#" + id_main).width()/2);
	
	jQuery("#" + id_main).draggable({
		zIndex: 	200,
		ghosting:	false,
		handle:		'#' + id_main
	});
	jQuery("#" + id_main).show();
	jQuery("#" + id_main).click(function(){
		jQuery(".dlg").css('z-index', 30);
		jQuery("#" + id_main).css('z-index', 200);
	});

	jQuery("#" + id_close).click(function(){
		jQuery("#" + id_main).remove(); //aa
		
		// Refresh:a egna bilder. PA och Edit profile.
		var imgsm = "<img width=66 height=56 class=\"image\" src=\"" + g_livegrounds_url + 
			"/image.php?uid=" + g_uid + "&s=sm&t="+date.getTime() + "\">";
		var imgla = "<img width=115 height=87 class=\"image\" src=\"" + g_livegrounds_url + 
			"/image.php?uid=" + g_uid + "&s=la&t="+date.getTime() + "\">";
		
		jQuery("#dlg_pa_img img").replaceWith(imgsm);
		jQuery("#dlg_eprofile_img img").replaceWith(imgla);	
	});
	
	jQuery("#dlg_register_cancel").click(function(){
		jQuery("#" + id_main).remove();
	});
	
	/* Vi sätter dialogen i förgrunden och ser till att alla 
	   andra dialoger inte skymmer. */
	jQuery(".dlg").css('z-index', 30);
	jQuery("#" + id_main).css('z-index', 200);
	
	/* IE6 hanterar inte z-index på <select> element rätt, vi fixar detta. */
	if(jQuery.browser.msie&&jQuery.browser.version==6){
		ie6_select_fix(id_main);
	}
	
	jQuery("#" + id_main).show();
	initROs();
	return id_main;
}




/* 
 | Namn: create_alert
 |
 | Argument: 'title' beskriver dialogens titel.
 | Returvärde:(inget)
 */

function create_alert(uid,msg) {
    return create_alert(uid,msg,"Unblock","alertblock");
}

function create_alert(uid,msg,btn,classname)
{
    
	if (typeof(btn) == "undefined") 
	btn = "Unblock";
    if (btn == "Unblock")
	btn = img0("unblock");
    btn = img0(btn.toLowerCase());
	var id_main = "dlg_alert_" + uid;
	var user_name = jQuery("#user_" + uid + "_sign").html();
	var id_handle = id_main + "_handle";
	var id_close = id_main + "_close";
	var id_content = id_main + "_content";
	var id_accept = id_main + "_accept";
	var id_deny = id_main + "_deny";
	var wsize = get_window_size();

	// Kontrollera om dialog med givet id redan finns. (invite 2ggr?)
	if(jQuery("#" + id_main).length > 0){
		return (id_main);
	}
	var myStuff = "<div id = " + id_main + " class=\"" + classname + "\">" +
		"<div id=\"" + id_handle + "\" class = \"dlg_handle\">" +
		"<a id = " + id_close + " class = \"dlg_close\" " +
		"href = \"javascript:\">" + img0("exit") +"</a></div>" + "<div id = " + id_content + ">" +
		"<div class=\"dlg_alert_info\">" + msg + "</div>" +
		"<a id=\"" + id_deny + "\" class = \"alert_deny\" " +
		" href=\"javascript:void(0)\">" + btn + "</a></div>" +
		"</div>"; //aa added classname
	log("Creating: " + myStuff);
	
	jQuery('#fix_container').append(myStuff);
	
	if (!$('#' + id_main).length>0) {
	    //fucking ie won't create the div
	    log("not created");
	    //jQuery('#fix_container').appendChild(myStuff);
	}
	// Accept invitation.

	// Deny invitation.
	jQuery("#" + id_deny).click(function(){
		unblock_user(uid);
		jQuery("#" + id_main).remove();
	});

	jQuery("#" + id_main).corner("5px");
	
	/* Andreas test...
	
	if (classname == "alertname_aboveavatar") {
		//Set correct size
		$("#" + id_main).width(157);
		$("#"  + id_main).height(85);
		//position alert above avatar
		var hPStr = "#user_" + uid;
		log("sending avatar req for " + hPStr);
		var headpos = avatar_head_position(hPStr);
		log("head pos");
		log(headpos["top"]);
		log(headpos["left"]);
		var tP = (headpos["top"] - 120);
		var tL = (headpos["left"] - 93);
		log("I want " + tP + ", " + tL);
		jQuery("#" + id_main).css('top', tP);
		jQuery("#" + id_main).css('left', tL );
		jQuery("#" + id_main).show();
		hPStr = "#" + id_main;
		log("getting offset of " + hPStr);
	} else if (classname == "alertblock") {
		//Set correct size
		$("#" + id_main).width(157);
		$("#"  + id_main).height(85);
		//position alert above avatar
		var hPStr = "#user_" + uid;
		log("sending avatar req for " + hPStr);
		var headpos = avatar_head_position(hPStr);
		log("head pos");
		log(headpos["top"]);
		log(headpos["left"]);
		var tP = (headpos["top"] - 120);
		var tL = (headpos["left"] - 78);
		log("I want " + tP + ", " + tL);
		jQuery("#" + id_main).css('top', tP);
		jQuery("#" + id_main).css('left', tL );
		jQuery("#" + id_main).show();
		hPStr = "#" + id_main;
		log("getting offset of " + hPStr);
	} else if (classname == "alertcookies") {
		//Set correct size
		$("#" + id_main).width(448);
		$("#"  + id_main).height(347);
		//position alert center stage
		$("#" + id_main).css('left', wsize["width"]/2-224);
		$("#" + id_main).css('top', wsize["height"]/2-173);
	} else if (classname == "alertname_eprofile_notloggedin" || classname == "alertname_eprofile_loggedin") {
		//Set correct size
		$("#" + id_main).width(157);
		$("#"  + id_main).height(85);
		//position alert at the center of eprofile dlg (center stage for now...)
		$("#" + id_main).css('left', wsize["width"]/2-78);
		$("#" + id_main).css('top', wsize["height"]/2-42);
	} 
	
	 Andreas test slut... */
	

	
	//Position the alert above avatar
	var hPStr = "#user_" + uid;
	log("sending avatar req for " + hPStr);
	var headpos = avatar_head_position(hPStr);
	log("head pos");
	log(headpos["top"]);
	log(headpos["left"]);
	var tP = (headpos["top"] - 145);
	var tL = (headpos["left"] - 30);
	log("I want " + tP + ", " + tL);
	jQuery("#" + id_main).css('top', tP);
	jQuery("#" + id_main).css('left', tL );
	jQuery("#" + id_main).show();
	hPStr = "#" + id_main;
	log("getting offset of " + hPStr);

	if (classname == "alertcookies") {
		$("#" + id_main).css('left', wsize["width"]/2-220);
		$("#" + id_main).css('top', wsize["height"]/2-168);
	} //aa
	
	//Make sure it's not outside the screen
	var tmp = $(hPStr).offset();
	if (!(tmp == null || typeof(tmp)=="undefined"))
	    {
		if(jQuery("#" + id_main).offset().top < 0){
		    jQuery("#" + id_main).css('top', 0);
		}
		
	    }
	else
	    log("that's null, dude");
	log("left: " + $("#" + id_main).css("left"));
	log("top: " + $("#" + id_main).css("top"));
	/*	jQuery("#" + id_main).draggable({
	zIndex: 	200,
		ghosting:	false,
		handle:		'#' + id_main
	});*/

	//Show in front of other things on click
	jQuery("#" + id_main).click(function(){
		jQuery(".dlg").css('z-index', 30);
		jQuery("#" + id_main).css('z-index', 200);
	});
	
	//When the user clicks exit
	jQuery("#" + id_close).click(function(){
		jQuery("#" + id_main).remove(); //aa
	});
	
	//Show in front of other things right now
	jQuery(".dlg").css('z-index', 30);
	jQuery("#" + id_main).css('z-index', 200);
	
	//aa Removed in favor of separate sizes for the 5 classes
	//$("#" + id_main).width(420);
	//$("#"  + id_main).height(430);

	//Show the alert
	$("#" + id_main).show();
	log("Left before: " + ($("#" + id_main).css("left")));
	

	
	log("Left after: " + ($("#" + id_main).css("left")));
	initROs();
	return id_main;

}
