changeset 21000:89c7be36fd61

propagate from branch 'im.pidgin.pidgin.2.2.2' (head 0adab134b7a42e144aee3ac60d825db1f28a42a4) to branch 'im.pidgin.pidgin' (head 4e59fcb1e2baf2eb63083224381e0af9fe1331cc)
author Richard Laager <rlaager@wiktel.com>
date Tue, 23 Oct 2007 17:27:12 +0000
parents 535de68c9d09 (current diff) c4802e8288c1 (diff)
children be41d3e89795
files COPYRIGHT ChangeLog ChangeLog.win32 configure.ac finch/gntconv.c libpurple/notify.c libpurple/plugins/log_reader.c libpurple/protocols/jabber/jabber.c libpurple/protocols/msn/directconn.c libpurple/protocols/msn/msn-utils.c libpurple/protocols/msn/msn-utils.h libpurple/protocols/msn/msn.c libpurple/protocols/msn/servconn.c libpurple/protocols/msn/session.c libpurple/protocols/myspace/markup.c libpurple/protocols/myspace/myspace.c libpurple/protocols/myspace/user.c libpurple/protocols/myspace/zap.c libpurple/protocols/oscar/oscar.c libpurple/protocols/simple/simple.c libpurple/util.c pidgin/gtkblist.c pidgin/gtkconv.c pidgin/gtkdocklet.c pidgin/gtkimhtml.c pidgin/plugins/gestures/stroke-draw.c pidgin/plugins/history.c po/ChangeLog po/de.po
diffstat 226 files changed, 18943 insertions(+), 11691 deletions(-) [+]
line wrap: on
line diff
--- a/COPYRIGHT	Tue Oct 23 17:05:12 2007 +0000
+++ b/COPYRIGHT	Tue Oct 23 17:27:12 2007 +0000
@@ -247,6 +247,7 @@
 Kevin Miller
 Paul Miller
 Arkadiusz Miskiewicz
+David Mohr
 Andrew Molloy
 Michael Monreal
 Benjamin Moody
@@ -279,6 +280,7 @@
 Eduardo Pérez
 Matt Perry
 Nathan Peterson
+Sebastián E. Peyrott
 Celso Pinto
 Joao Luís Marques Pinto
 Aleksander Piotrowski
--- a/ChangeLog	Tue Oct 23 17:05:12 2007 +0000
+++ b/ChangeLog	Tue Oct 23 17:27:12 2007 +0000
@@ -1,7 +1,40 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
-version 2.2.2 (10/23/2007):
+version 2.2.2:
 	http://developer.pidgin.im/query?status=closed&milestone=2.2.2
+		NOTE: Due to 2.2.1 being a security fix release, some bugs
+		      marked fixed in 2.2.1 may not have been fixed until
+		      this release (2.2.2).
+
+	libpurple:
+	* Real usernames are now shown in the system log.
+
+	Pidgin:
+	* If you alias a buddy to an alias that is already present within
+	  a particular group, we now offer to merge the buddies into the
+	  same contact.
+	* A music emblem is now displayed in the buddy list for a buddy if we
+	  know she is listening to some soothing music.
+	* Added a 'Move to' menu in buddy list context menu for moving buddies
+	  to other groups as an alternative to dragging.
+	* Group headings are now marked via an underline instead of a
+	  different color background.
+	* It is now possible to mark a chat on your buddy list as "Persistent"
+	  so you do not leave the chat when the window or tab is closed.
+	* The auto-join option for chats is now listed in the "Add Chat"
+	  dialog along with the new persistence option.
+	* Closing an IM no longer immediately closes your conversation.  It
+	  will now remain active for a short time so that if the conversation
+	  resumes, the history will be retained.  A preference has been added
+	  to toggle this behavior.
+	* The "Smiley" menu has been moved to the top-level of the toolbar.
+	* Pidgin's display is now saved with the command line for session
+	  restoration.  (David Mohr)
+	* ICQ Birthday notifications are shown as buddy list emblems.
+	* Plugin actions are now available from the docklet context menu
+	  in addition to the Tool menu of the buddy list.
+
+version 2.2.2 (10/23/2007): 
 		NOTE: Due to the backporting that has happened for the actual
 			  release, it is possible that bugs marked as fixed in
 			  2.2.1 or 2.2.2 will not be fixed until the next release
@@ -39,7 +72,7 @@
 	* New protocol plugin: MySpaceIM (Jeff Connelly, Google Summer of
 	  Code)
 	* XMPP enhancements. See
-	  http://www.adiumx.com/blog/2007/07/soc-xmpp-update.php (Andreas 
+ 	  http://www.adiumx.com/blog/2007/07/soc-xmpp-update.php (Andreas 
 	  Monitzer, Google Summer of Code for Adium)
 	* Certificate management. Libpurple will validate certificates on
 	  SSL-encrypted protocols (William Ehlhardt, Google Summer of Code)
@@ -2273,6 +2306,6 @@
 	* Add/Remove buddy from conversation window
 	* Scroll-Wheel Mice work in Conversation Window
 	* Fixed WindowMaker Appicon
-	* version Number in About Box
+	* Version Number in About Box
 	* Gaim Slogan in about box :)
 	* Created Changelog File :)
--- a/ChangeLog.API	Tue Oct 23 17:05:12 2007 +0000
+++ b/ChangeLog.API	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,17 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
-Version 2.2.0 (09/13/2007):
+version 2.2.2 (??/??/????):
+	libpurple:
+		Changed:
+		* The size parameter of purple_util_write_data_to_file_absolute
+		  has been changed to gssize instead of a size_t to correctly
+		  indicate that -1 can be used for a nul-delimited string.
+		* The documentation for purple_savedstatuses_get_popular used to
+		  incorrectly claim that the active status is excluded from the
+		  returned list. The documentation has been corrected. Also, the
+		  function now returns a correct list when called with a value of 0.
+
+version 2.2.0 (09/13/2007):
 	libpurple:
 		Added:
 		* PURPLE_MESSAGE_INVISIBLE flag, which can be used by
@@ -57,7 +68,7 @@
 		* gnt_util_parse_xhtml_to_textview to parse XHTML strings in a
 		  GntTextView (this works only if libxml2 is available)
 
-Version 2.1.1 (08/20/2007):
+version 2.1.1 (08/20/2007):
 	libpurple:
 		Changed:
 		* PurpleAccountUiOps.request_authorize's authorize_cb and
@@ -89,9 +100,6 @@
 		* purple_timeout_add_seconds
 		    Callers should prefer this to purple_timeout_add for timers
 		    longer than 1 second away.  Be aware of the rounding, though.
-		* purple_timeout_add_seconds
-		    Callers should prefer this to purple_timeout_add for timers
-		    longer than 1 second away.  Be aware of the rounding, though.
 		* purple_xfer_get_remote_user
 		* purple_pounces_get_all_for_ui
 		* purple_prefs_get_children_names
--- a/ChangeLog.win32	Tue Oct 23 17:05:12 2007 +0000
+++ b/ChangeLog.win32	Tue Oct 23 17:27:12 2007 +0000
@@ -126,7 +126,7 @@
 
 version 0.82 (08/26/2004):
 	* Selecting away messages using the system tray icon works
-	  (Thanks Fran?ois Gagn?)
+	  (Thanks Franois Gagn)
 	* Transparency plugin will save your settings again (Kevin Stange)
 	* Updated gtk-wimp to 0.6.2
 	* Updated libpng to 1.2.6 (major security update)
--- a/Doxyfile.in	Tue Oct 23 17:05:12 2007 +0000
+++ b/Doxyfile.in	Tue Oct 23 17:27:12 2007 +0000
@@ -169,7 +169,8 @@
                          "endsignalproto=@endcode" \
                          "signaldesc=@par Description:" \
                          "signals=@b Signals:" \
-                         "endsignals="
+                         "endsignals=" \
+                         "constreturn=@note The return value of this function must not be modified or freed. @return"
 
 # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources 
 # only. Doxygen will then generate output that is more tailored for C. 
@@ -457,7 +458,8 @@
 # excluded from the INPUT source files. This way you can easily exclude a 
 # subdirectory from a directory tree whose root is specified with the INPUT tag.
 
-EXCLUDE                = 
+EXCLUDE                = libpurple/purple-client.h \
+                         libpurple/purple-client-bindings.h
 
 # The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories 
 # that are symbolic links (a Unix filesystem feature) are excluded from the input.
@@ -857,7 +859,7 @@
 # feature is still experimental and incomplete at the 
 # moment.
 
-GENERATE_XML           = NO
+GENERATE_XML           = YES
 
 # The XML_OUTPUT tag is used to specify where the XML pages will be put. 
 # If a relative path is entered the value of OUTPUT_DIRECTORY will be 
@@ -1160,7 +1162,7 @@
 # not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). 
 # If 0 is used for the depth value (the default), the graph is not depth-constrained.
 
-MAX_DOT_GRAPH_DEPTH    = 0
+MAX_DOT_GRAPH_DEPTH    = 2
 
 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
 # background. This is disabled by default, which results in a white background. 
--- a/INSTALL	Tue Oct 23 17:05:12 2007 +0000
+++ b/INSTALL	Tue Oct 23 17:27:12 2007 +0000
@@ -32,15 +32,19 @@
      `configure' itself.
 
      Running `configure' takes awhile.  While running, it prints some
-     messages telling which features it is checking for.
+     messages telling which features it is checking for.  If it finishes
+	 successfully, it will print out of a summary of the build options.
+	 This summary will also appear in the help->about dialog.
 
-  2. Type `make' to compile the package.
+  2. Type `make' to compile the package.  On some systems, you may need
+     to use `gmake' instead. 
 
   3. Optionally, type `make check' to run any self-tests that come with
      the package.
 
   4. Type `make install' to install the programs and any data files and
-     documentation.
+     documentation.  You must have write access to the prefix you are
+	 installing to.  See below for more details on the prefix.
 
   5. You can remove the program binaries and object files from the
      source code directory by typing `make clean'.  To also remove the
@@ -50,6 +54,9 @@
      for the package's developers.  If you use it, you may have to get
      all sorts of other programs in order to regenerate files that came
      with the distribution.
+	 
+  6. If you have *not* run make distclean, you can use the target
+     `make uninstall` to remove the files installed by `make install`.
 
 Compilers and Options
 =====================
@@ -119,6 +126,40 @@
 you can use the `configure' options `--x-includes=DIR' and
 `--x-libraries=DIR' to specify their locations.
 
+	By default both the GTK+ UI (Pidgin) and the ncurses UI (Finch) will be
+built, assuming that configure finds the necessary libraries and headers for
+each.  You can disable the GTK+ UI with `--disable-gtkui' and the ncurses UI
+with `--disable-consoleui'.
+
+	`--disable-screensaver' will build libpurple without support for detecting
+when it should mark accounts idle based on mouse or keyboard usage.
+
+	`--disable-sm' will build without support for the X session management.
+Doing so will remove the ability to have pidgin start up with your window
+manager.
+
+	`--disable-gtkspell' will remove the ability to highlight misspelled words.
+
+	`--disable-gevolution' will cause the evolution integration plugin not to
+compile.
+
+	`--disable-gstreamer' will build without sound support.  This applies to
+*both* Pidgin and Finch.
+
+	`--enable-gnutls=yes,no' will enable or disable the use of gnutls for ssl support.  Disabling both gnutls and nss will mean you cannot use either MSN or Google Talk.  There is no static option for gnutls at this time.
+
+	`--enable-nss=yes,no,static'  will enable or disable the use of nss for ssl support.  This is the only option for ssl support if you are attempting to compile a static version of Pidgin or Finch.  
+
+Optional Packages:
+
+	`--with-silc-includes=DIR' 	and `--with-silc-libs=DIR' can be used if your silc libraries are installed to a location not in your path. 
+
+	`--with-static-prpls' takes a list of comma separated protocols to build in statically (rather than as plugins).  Use this with care.
+
+	`--with-dynamic-prpls' takes a list of comma separated protocols also.  If used only those listed will be built.  If no protocols are listed with either `--with-static-prpls' or with `--with-dynamic-prpls' then Pidgin and Finch will be effectively useless.
+
+	If configure does not find python, it will build without DBUS support.  Thiswill disable scripts such as purple-remote and purple-uri-handler, effectively disabling integration with the browser.  You can tell configure where your python binary is located with `--with-python=PATH'
+
 Specifying the System Type
 ==========================
 
@@ -179,4 +220,4 @@
      Print the version of Autoconf used to generate the `configure'
      script, and exit.
 
-`configure' also accepts some other, not widely useful, options.
+`configure' also accepts some other, not widely useful, options.  Many of these are related to having various optional libaries installed to locations outside of your path.  
--- a/Makefile.am	Tue Oct 23 17:05:12 2007 +0000
+++ b/Makefile.am	Tue Oct 23 17:27:12 2007 +0000
@@ -48,6 +48,13 @@
 if HAVE_DOXYGEN
 	@echo "Running doxygen..."
 	@doxygen
+if HAVE_XSLTPROC
+	@echo "Generating devhelp index..."
+	@xsltproc doxy2devhelp.xsl doc/xml/index.xml > doc/html/pidgin.devhelp
+	@echo "(Symlink doc/html to ~/.local/share/gtk-doc/html/pidgin to make devhelp see the documentation)"
+else
+	@echo "Not generating devhelp index: xsltproc was not found by configure"
+endif
 else
 	@echo "doxygen was not found during configure.  Aborting."
 	@echo;
--- a/Makefile.mingw	Tue Oct 23 17:05:12 2007 +0000
+++ b/Makefile.mingw	Tue Oct 23 17:27:12 2007 +0000
@@ -65,12 +65,16 @@
 all: $(PIDGIN_CONFIG_H)
 	$(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE)
 	$(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE)
+ifndef DISABLE_NLS
 	$(MAKE) -C $(PURPLE_PO_TOP) -f $(MINGW_MAKEFILE)
+endif
 
 install: all $(PIDGIN_INSTALL_DIR)
 	$(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE) install
 	$(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) install
+ifndef DISABLE_NLS
 	$(MAKE) -C $(PURPLE_PO_TOP) -f $(MINGW_MAKEFILE) install
+endif
 	$(MAKE) -C share -f $(MINGW_MAKEFILE) install
 
 create_release_install_dir: install
--- a/configure.ac	Tue Oct 23 17:05:12 2007 +0000
+++ b/configure.ac	Tue Oct 23 17:27:12 2007 +0000
@@ -46,7 +46,7 @@
 m4_define([purple_lt_current], [2])
 m4_define([purple_major_version], [2])
 m4_define([purple_minor_version], [2])
-m4_define([purple_micro_version], [1])
+m4_define([purple_micro_version], [2])
 m4_define([purple_version_suffix], [])
 m4_define([purple_version],
           [purple_major_version.purple_minor_version.purple_micro_version])
@@ -55,7 +55,7 @@
 m4_define([gnt_lt_current], [2])
 m4_define([gnt_major_version], [2])
 m4_define([gnt_minor_version], [2])
-m4_define([gnt_micro_version], [1])
+m4_define([gnt_micro_version], [2])
 m4_define([gnt_version_suffix], [])
 m4_define([gnt_version],
           [gnt_major_version.gnt_minor_version.gnt_micro_version])
@@ -2101,6 +2101,10 @@
 	[AC_HELP_STRING([--enable-dot],
 		[enable graphs in doxygen via 'dot'])],
 	enable_dot="$enableval", enable_dot="yes")
+AC_ARG_ENABLE(devhelp,
+	[AC_HELP_STRING([--enable-devhelp],
+		[enable building index for devhelp documentation browser])],
+	enable_devhelp="$enableval", enable_devhelp="yes")
 
 if test "x$enable_doxygen" = xyes; then
 	AC_CHECK_PROG(DOXYGEN, doxygen, true, false)
@@ -2120,14 +2124,28 @@
 				AC_DEFINE_UNQUOTED(HAVE_DOT, 1, [whether or not we have dot])
 			fi
 		fi
+
+		if test "x$enable_devhelp" = "xyes"; then
+			AC_CHECK_PROG(XSLTPROC, xsltproc, true, false)
+
+			if test $XSLTPROC = false; then
+				enable_devhelp="no";
+				AC_MSG_WARN([*** xsltproc not found; devhelp index will not be created])
+			else
+				AC_DEFINE_UNQUOTED(HAVE_XSLTPROC, 1, [whether or not we have xsltproc for devhelp index])
+			fi
+		fi
 	fi
 else
 	enable_dot="no"
+	enable_devhelp="no"
 fi
 
 AC_SUBST(enable_doxygen)
 AC_SUBST(enable_dot)
+AC_SUBST(enable_devhelp)
 AM_CONDITIONAL(HAVE_DOXYGEN, test "x$enable_doxygen" = "xyes")
+AM_CONDITIONAL(HAVE_XSLTPROC, test "x$enable_devhelp" = "xyes")
 
 AC_ARG_ENABLE(debug, [AC_HELP_STRING([--enable-debug],
 	[compile with debugging support])], , enable_debug=no)
--- a/doc/C-HOWTO.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/C-HOWTO.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -269,3 +269,4 @@
   you may have guessed, this also gets read when libpurple is probing your
   plugin.  If this is missing, the plugin will not load.
  */
+// vim: syntax=c.doxygen
--- a/doc/account-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/account-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -11,6 +11,8 @@
   @signal account-status-changed
  @endsignals
 
+ @see account.h
+
  <hr>
 
  @signaldef account-added
@@ -101,4 +103,4 @@
  @endsignaldef
 
  */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/blist-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/blist-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -13,6 +13,8 @@
   @signal blist-node-aliased
  @endsignals
 
+ @see blist.h
+
  <hr>
 
  @signaldef buddy-status-changed
@@ -105,4 +107,4 @@
   @endsignaldef
 
  */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/certificate-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/certificate-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -5,6 +5,8 @@
   @signal certificate-deleted
  @endsignals
 
+ @see certificate.h
+
  <hr>
 
  @signaldef certificate-stored
@@ -28,4 +30,4 @@
  @endsignaldef
 
  */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/cipher-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/cipher-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -5,6 +5,8 @@
   @signal cipher-removed
  @endsignals
 
+ @see cipher.h
+
  <hr>
 
  @signaldef cipher-added
@@ -26,4 +28,4 @@
  @endsignaldef
 
  */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/connection-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/connection-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -7,6 +7,8 @@
   @signal signed-off
  @endsignals
 
+ @see connection.h
+
  <hr>
 
  @signaldef signing-on
@@ -46,4 +48,4 @@
  @endsignaldef
 
  */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/conversation-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/conversation-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -32,6 +32,8 @@
   @signal conversation-extended-menu
  @endsignals
 
+ @see conversation.h
+
  @signaldef writing-im-msg
   @signalproto
 gboolean (*writing_im_msg)(PurpleAccount *account, const char *who,
@@ -427,6 +429,7 @@
    conversation.
   @param conv   The conversation.
   @param list   A pointer to the list of actions.
+  @since 2.1.0
  @endsignaldef
 */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/core-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/core-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -4,6 +4,8 @@
   @signal quitting
  @endsignals
 
+ @see core.h
+
  <hr>
 
  @signaldef quitting
@@ -15,4 +17,4 @@
  @endsignaldef
 
  */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/dbus-server-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/dbus-server-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -5,6 +5,8 @@
   @signal dbus-introspect
  @endsignals
 
+ @see dbus-server.h
+
  <hr>
 
  @signaldef dbus-method-called
@@ -29,4 +31,4 @@
  @endsignaldef
 
  */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/funniest_home_convos.txt	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/funniest_home_convos.txt	Tue Oct 23 17:27:12 2007 +0000
@@ -487,3 +487,21 @@
             established that
 19:03 <user> its functioning just fine
 
+--
+
+17:12 <a_user> I think I foundage a bug
+17:13 <a_user> I don't think blocking works correctly for the AIM protocol
+17:13 <a_user> because a girl attempted to block me in pidgin and I can still
+               talk to her
+17:14 <a_user> [screen name expunged]: I already told you yesterday. You don't
+               need me to ease your mind, you want me to change MY mind. Well,
+               you're out of luck. I don't know how you're still messaging me,
+               because I already blocked you, but I demand you stop immediately.
+               For now on, I will save every message that you send me as
+               evidence for the next time I decide to call the police. I did
+               call them yesterday, but I didn't have evidence. The more you
+               message me now, the more you're digging you're own grave, so I
+               advice you to stop.
+17:14 <a_user> see?
+17:16 <sadrul> I think blocking in pidgin not working is not your biggest
+               problem here.
--- a/doc/gtkaccount-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/gtkaccount-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -4,6 +4,8 @@
   @signal account-modified
  @endsignals
 
+ @see gtkaccount.h
+
  <hr>
 
  @signaldef account-modified
@@ -15,4 +17,4 @@
   @param account The account that has been modified.
  @endsignaldef
 */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/gtkblist-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/gtkblist-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -7,6 +7,8 @@
   @signal drawing-tooltip
  @endsignals
 
+ @see gtkblist.h
+
  <hr>
 
  @signaldef gtkblist-hiding
@@ -52,4 +54,4 @@
               a compact tooltip for a non-priority buddy.
  @endsignaldef
 */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/gtkconv-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/gtkconv-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -12,6 +12,8 @@
   @signal conversation-displayed
  @endsignals
 
+ @see gtkconv.h
+
  <hr>
 
  @signaldef conversation-dragging
@@ -125,6 +127,7 @@
   @signaldesc
    Emitted immediately before an existing conversation is hidden.
   @param gtkconv  The PidginConversation
+  @since 2.2.0
  @endsignaldef
 
  @signaldef conversation-displayed
@@ -132,9 +135,10 @@
 void (*conversation_displayed)(PidginConversation *gtkconv);
   @endsignalproto
   @signaldesc
-   Emitted right after the Pidgin UI is reattached to a conversation.
+   Emitted right after the Pidgin UI is attached to a new or a hidden conversation.
   @param gtkconv  The PidginConversation
+  @since 2.2.0
  @endsignaldef
 
 */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/gtkimhtml-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/gtkimhtml-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -8,6 +8,8 @@
   @signal format_function_update
  @endsignals
 
+ @see gtkimhtml.h
+
  <hr>
 
  @signaldef url_clicked
@@ -57,4 +59,4 @@
   @param data   User defined data.
  @endsignaldef
 */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/gtklog-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/gtklog-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -4,6 +4,8 @@
   @signal log-displaying
  @endsignals
 
+ @see gtklog.h
+
  <hr>
 
  @signaldef log-displaying
@@ -17,4 +19,4 @@
  @endsignaldef
 
 */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/imgstore-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/imgstore-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -4,6 +4,8 @@
   @signal image-deleting
  @endsignals
 
+ @see imgstore.h
+
  <hr>
 
  @signaldef image-deleting
@@ -11,7 +13,7 @@
 char *(*image_deleting)(const PurpleStoredImage *img);
   @endsignalproto
   @signaldesc
-   Emitted when a PurpleStoredImage is about to be destroyed.  This allows
+   Emitted when a #PurpleStoredImage is about to be destroyed.  This allows
    for what amounts to weak references.  Code can hold onto a pointer to
    the PurpleStoredImage without actually "holding" a reference.  They can
    then use a signal handler to let them know when their img is about to
@@ -21,4 +23,4 @@
  @endsignaldef
 
 */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/log-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/log-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -4,6 +4,8 @@
   @signal log-timestamp
  @endsignals
 
+ @see log.h
+
  <hr>
 
  @signaldef log-timestamp
@@ -21,4 +23,4 @@
  @endsignaldef
 
 */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/notify-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/notify-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -6,6 +6,8 @@
   @signal displaying-emails-notification
  @endsignals
 
+ @see notify.h
+
  @signaldef displaying-userinfo
   @signalproto
 void (*displaying_userinfo)(PurpleAccount *account, const char *who, PurpleNotifyUserInfo *user_info);
@@ -33,6 +35,7 @@
   @param from      Who the email is from.
   @param to        Who the email is to.
   @param url       A url to view the email.
+  @since 2.1.0
  @endsignaldef
 
  @signaldef displaying-emails-notification
@@ -50,7 +53,8 @@
   @param tos        Who the emails are to.
   @param urls       The urls to view the emails.
   @param count      Number of emails being notified of.
+  @since 2.1.0
  @endsignaldef
 
 */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/plugin-ids.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/plugin-ids.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -2,10 +2,10 @@
 
  @section Introduction
   Every plugin contains a unique identifier to prevent duplicate plugin
-  loading and conflicts. This, which will be called a plugin ID from here
-  on, must follow a specific format. This format categorizes a plugin and
-  makes duplicate IDs unlikely.
-
+  loading and conflicts. Third-party plugins (that is, plugins written by
+  anyone who is not a libpurple, Pidgin, or Finch developer) are expected
+  to use a plugin ID that follows a specific format. This format
+  categorizes plugins and makes duplicate IDs highly unlikely.
 
  @section Format
   The basic format of a plugin ID is as follows:
@@ -15,27 +15,79 @@
   The @em type indicator specifies the type of plugin. This must be one
   of the following:
 
-    - core      - Core plugin, capable of being loaded in any program using
-                  libpurple. It must not use any UI-specific code.
-    - prpl      - Protocol plugin, providing additional protocols to
-                  connect to.
-    - lopl      - Loader plugin, which loads scripts as plugins (like Perl
-                  or TCL).
-    - gtk       - GTK+ 2.x plugin. It may use GTK+ code, but cannot use any
-                  window toolkit code (such as X11 or Win32).
-    - gtk-x11   - GTK+ 2.x plugin using X11 code.
-    - gtk-win32 - GTK+ 2.x plugin using Win32 code.
-    - qpe       - Gaim for Qtopia plugin.
+    - core      - A core libpurple plugin, capable of being loaded in any
+                  program using libpurple. Core plugins may not contain any
+                  UI-specific code.
+    - prpl      - A protocol plugin. This is a special type of core plugin,
+                  which provides libpurple the ability to connect to
+                  another IM or chat network.
+    - lopl      - A loader plugin, which loads scripts as plugins. Perl and
+                  Tcl plugins are made possible by loader plugins.
+    - gtk       - A GTK+ 2.x (a.k.a. Pidgin) plugin. These plugins may use
+                  GTK+ code, but may not use window toolkit code, such as
+                  X11, Win32, Cocoa, or Carbon.
+    - gtk-x11   - A GTK+ 2.x plugin that uses X11 code. These plugins may
+                  use both GTK+ code and X11 code, allowing to hook into
+                  features specific to X11.
+    - gtk-win32 - A GTK+ plugin that uses Win32 code. These plugins may use
+                  both GTK+ code and Win32 code, allowing to hook into
+                  features available on Windows.
+    - gnt       - A GNT (a.k.a. Finch) plugin. These plugins may use GNT code.
+    - qpe       - A plugin for the (now-abandoned) Qutopia user interface.
+
+  The @em username must be a unique identifier for you. It
+  @em should be your http://developer.pidgin.im Trac user ID. Failing that, you
+  could use your SourceForge user ID or your Freenode IRC nickname, if you
+  have either. The http://developer.pidgin.im Trac user ID is preferred.
+  Do @em not leave this field blank!
+
+  The @em pluginname is the name of your plugin. It is usually all
+  lowercase letters and matches the static plugin ID (the first argument to
+  the PURPLE_INIT_PLUGIN() macro call), although it can be anything you
+  like. Do @em not include version information in the plugin ID--the
+  #PurplePluginInfo structure already has a field for this.
+
+ @section nospaces One Last Rule for Plugin IDs
+
+  The last rule of plugin IDs is the most important of all. Plugin IDs may
+  @em NOT contain spaces. If you need a space, use another hyphen (-).
 
-  The @em username must be a unique identifier for that person. It
-  @em should be your SourceForge ID. Do @em not leave this field
-  blank.
+ @section exceptions Exceptions to the Rule
+
+  As with any rule there are exceptions. If you browse through the source
+  tree you will see that the plugins we distribute with the Pidgin source
+  do not contain a username field. This is because while one developer may
+  have written each specific plugin, the plugins are maintained
+  collectively by the entire development team. This lack of a username
+  field is also an indicator that the plugin is one of our plugins and not
+  a third-party plugin.
+
+  Another exception to the rule is the <a
+  href="http://plugins.guifications.org/trac/wiki/PluginPack">Purple Plugin
+  Pack</a>. All plugins whose lives started in the Purple Plugin Pack use
+  <tt>"plugin_pack"</tt> for the username field to indicate origination in
+  the Purple Plugin Pack.
 
-  The @em pluginname is the name of your plugin. It can be whatever you like,
-  though it's common to keep it all lowercase. Do not use spaces! If you
-  want a space, use a '-'. Please do not put a version indicator in the ID.
-  The PurplePlugin structure already has a field for this.
+  These two exceptions are mentioned here for completeness. We don't
+  encourage breaking the conventions set forth by the rules outlined above.
+
+ @section examples Examples of Well-Chosen Plugin IDs
+
+  The following is a list of well-chosen Plugin IDs listing a few good examples.
 
+    - <tt>"gtk-amc_grim-guifications"</tt> - This is the plugin ID for the
+                                             Guifications 2.x plugin.
+    - <tt>"gtk-rlaager-album"</tt> - This is the plugin ID for the Album
+                                     plugin, which is now part of the
+                                     Purple Plugin Pack. Its ID follows the
+                                     rules because its life started prior
+                                     to its inclusion in the Plugin Pack.
+    - <tt>"core-rlaager-irchelper"</tt> - This is the plugin ID for the IRC
+                                          Helper plugin, which is now part
+                                          of the Purple Plugin Pack. Its ID
+                                          follows the rules because its
+                                          life started prior to its
+                                          inclusion in the Plugin Pack.
 
  @section plugin-db Plugin Database
   Although it doesn't exist yet, in time there will be a plugin database
@@ -45,4 +97,4 @@
 
  */
 
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/plugin-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/plugin-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -5,6 +5,8 @@
   @signal plugin-unload
  @endsignals
 
+ @see plugin.h
+
  <hr>
 
  @signaldef plugin-load
@@ -26,4 +28,4 @@
  @endsignaldef
 
  */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/savedstatus-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/savedstatus-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -4,6 +4,8 @@
   @signal savedstatus-changed
  @endsignals
 
+ @see savedstatus.h
+
  <hr>
 
  @signaldef savedstatus-changed
@@ -15,4 +17,4 @@
  @endsignaldef
 
  */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/sound-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/sound-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -4,6 +4,8 @@
   @signal playing-sound-event
  @endsignals
 
+ @see sound.h
+
  <hr>
 
  @signaldef playing-sound-event
@@ -18,4 +20,4 @@
  @endsignaldef
 
  */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- a/doc/xfer-signals.dox	Tue Oct 23 17:05:12 2007 +0000
+++ b/doc/xfer-signals.dox	Tue Oct 23 17:27:12 2007 +0000
@@ -12,6 +12,8 @@
   @signal file-send-complete
  @endsignals
 
+ @see ft.h
+
  <hr>
 
  @signaldef file-recv-accept
@@ -109,4 +111,4 @@
  @endsignaldef
 
  */
-// vim: syntax=c tw=75 et
+// vim: syntax=c.doxygen tw=75 et
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doxy2devhelp.xsl	Tue Oct 23 17:27:12 2007 +0000
@@ -0,0 +1,98 @@
+<xsl:stylesheet
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:fo="http://www.w3.org/1999/XSL/Format"
+    version="1.0">
+
+<!-- Based on http://bur.st/~eleusis/devhelp/doxy2devhelp.xsl
+             (http://bur.st/~eleusis/devhelp/README)
+     which is based on http://bugzilla.gnome.org/show_bug.cgi?id=122450
+-->
+
+<xsl:output method="xml" version="1.0" indent="yes"/>
+
+<xsl:param name="reference_prefix"></xsl:param>
+
+<xsl:template match="/">
+  <book title="Pidgin Documentation"
+        name="pidgin"
+        link="{$reference_prefix}main.html">
+  <chapters>
+    <sub name="Modules" link="{$reference_prefix}modules.html">
+      <xsl:apply-templates select="doxygenindex/compound[@kind='group']">
+        <xsl:sort select="."/>
+      </xsl:apply-templates>
+    </sub>
+    <!-- annotated.html has the short descriptions beside each struct.  is
+         that more useful than being grouped alphabetically?
+      -->
+    <sub name="Structs" link="{$reference_prefix}classes.html">
+      <xsl:apply-templates select="doxygenindex/compound[@kind='struct']">
+        <xsl:sort select="."/>
+      </xsl:apply-templates>
+    </sub>
+    <!-- This is redundant given Modules -->
+    <!--
+    <sub name="Directories" link="{$reference_prefix}dirs.html">
+      <xsl:apply-templates select="doxygenindex/compound[@kind='dir']">
+        <xsl:sort select="."/>
+      </xsl:apply-templates>
+    </sub>
+    -->
+    <!-- FIXME: Some files show up here but are broken links; mostly
+                files that are under pages...
+      -->
+    <sub name="Files" link="{$reference_prefix}files.html">
+      <xsl:apply-templates select="doxygenindex/compound[@kind='file']">
+        <xsl:sort select="."/>
+      </xsl:apply-templates>
+    </sub>
+    <sub name="Signals, HOWTOs, Other" link="{$reference_prefix}pages.html">
+      <xsl:apply-templates select="doxygenindex/compound[@kind='page']">
+        <xsl:sort select="."/>
+      </xsl:apply-templates>
+    </sub>
+  </chapters>
+
+  <functions>
+    <!-- @todo: maybe select only the real functions, ie those with kind=="function"? -->
+    <xsl:apply-templates select="doxygenindex/compound/member" mode="as-function"/>
+  </functions>
+  </book>
+</xsl:template>
+
+<xsl:template match="compound">
+  <xsl:param name="name"><xsl:value-of select="name"/></xsl:param>
+  <xsl:param name="link"><xsl:value-of select="@refid"/>.html</xsl:param>
+  <sub name="{$name}" link="{$reference_prefix}{$link}">
+  <xsl:apply-templates select="member" mode="as-sub">
+    <xsl:sort select="."/>
+  </xsl:apply-templates>
+  </sub>
+</xsl:template>
+
+<xsl:template match="member" mode="as-function">
+  <!--
+  <function name="atk_set_value" link="atk-atkvalue.html#ATK-SET-VALUE"/>
+  -->
+  <xsl:param name="name"><xsl:value-of select="name"/></xsl:param>
+  <!-- Link is refid attribute of parent element + "#" + diff between refid of parent and own refid -->
+  <xsl:param name="refid_parent"><xsl:value-of select="parent::node()/@refid"/></xsl:param>
+  <xsl:param name="own_refid"><xsl:value-of select="@refid"/></xsl:param>
+  <xsl:param name="offset"><xsl:value-of select="string-length($refid_parent) + 3"/></xsl:param>
+  <xsl:param name="ref_diff"><xsl:value-of select="substring($own_refid, $offset, 33)"/></xsl:param>
+  <xsl:param name="link"><xsl:value-of select="$refid_parent"/>.html#<xsl:value-of select="$ref_diff"/></xsl:param>
+  <function name="{$name}" link="{$reference_prefix}{$link}"/>
+</xsl:template>
+
+<xsl:template match="member" mode="as-sub">
+  <xsl:param name="name"><xsl:value-of select="name"/></xsl:param>
+  <!-- Link is refid attribute of parent element + "#" + diff between refid of parent and own refid -->
+  <xsl:param name="refid_parent"><xsl:value-of select="parent::node()/@refid"/></xsl:param>
+  <xsl:param name="own_refid"><xsl:value-of select="@refid"/></xsl:param>
+  <xsl:param name="offset"><xsl:value-of select="string-length($refid_parent) + 3"/></xsl:param>
+  <xsl:param name="ref_diff"><xsl:value-of select="substring($own_refid, $offset, 33)"/></xsl:param>
+  <xsl:param name="link"><xsl:value-of select="$refid_parent"/>.html#<xsl:value-of select="$ref_diff"/></xsl:param>
+  <sub name="{$name}" link="{$reference_prefix}{$link}"/>
+</xsl:template>
+
+</xsl:stylesheet>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/finch/finch.pc.in	Tue Oct 23 17:27:12 2007 +0000
@@ -0,0 +1,13 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+datadir=@datadir@
+sysconfdir=@sysconfdir@
+
+Name: Finch
+Description: Finch is an instant messenger application that uses libpurple for protocol support and ncurses (libgnt) for the UI.
+Version: @VERSION@
+Requires: gnt purple
+Cflags: -I${includedir}/finch
+
--- a/finch/gntaccount.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/gntaccount.h	Tue Oct 23 17:27:12 2007 +0000
@@ -59,6 +59,8 @@
  * Show the edit dialog for an account.
  *
  * @param account  The account to edit, or @c NULL to create a new account.
+ *
+ * @since 2.2.0
  */
 void finch_account_dialog_show(PurpleAccount *account);
 
--- a/finch/gntblist.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/gntblist.c	Tue Oct 23 17:27:12 2007 +0000
@@ -1510,6 +1510,8 @@
 	} else if (strcmp(text, GNT_KEY_CTRL_O) == 0) {
 		purple_prefs_set_bool(PREF_ROOT "/showoffline",
 				!purple_prefs_get_bool(PREF_ROOT "/showoffline"));
+	} else if (strcmp(text, GNT_KEY_INS) == 0) {
+		purple_blist_request_add_buddy(NULL, NULL, NULL, NULL);
 	} else if (!gnt_tree_is_searching(GNT_TREE(ggblist->tree))) {
 		if (strcmp(text, "t") == 0) {
 			finch_blist_toggle_tag_buddy(gnt_tree_get_selection_data(GNT_TREE(ggblist->tree)));
@@ -2200,12 +2202,12 @@
 	group = purple_request_field_group_new(NULL);
 	purple_request_fields_add_group(fields, group);
 
-	field = purple_request_field_string_new("screenname", _("_Name"), NULL, FALSE);
+	field = purple_request_field_string_new("screenname", _("Name"), NULL, FALSE);
 	purple_request_field_set_type_hint(field, "screenname");
 	purple_request_field_set_required(field, TRUE);
 	purple_request_field_group_add_field(group, field);
 
-	field = purple_request_field_account_new("account", _("_Account"), NULL);
+	field = purple_request_field_account_new("account", _("Account"), NULL);
 	purple_request_field_set_type_hint(field, "account");
 	purple_request_field_set_visible(field,
 		(purple_connections_get_all() != NULL &&
@@ -2225,9 +2227,90 @@
 }
 
 static void
+join_chat_select_cb(gpointer data, PurpleRequestFields *fields)
+{
+	PurpleAccount *account;
+	const char *name;
+	PurpleConnection *gc;
+	PurpleChat *chat;
+	GHashTable *hash = NULL;
+
+	account = purple_request_fields_get_account(fields, "account");
+	name = purple_request_fields_get_string(fields,  "chat");
+
+	if (!purple_account_is_connected(account))
+		return;
+
+	gc = purple_account_get_connection(account);	
+	purple_conversation_new(PURPLE_CONV_TYPE_CHAT, account, name);
+	chat = purple_blist_find_chat(account, name);
+	if (chat == NULL) {
+		if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL)
+			hash = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, name);
+	} else {
+		hash = chat->components;
+	}
+	serv_join_chat(gc, hash);
+	if (chat == NULL && hash != NULL)
+		g_hash_table_destroy(hash);
+}
+
+static void
+join_chat_select(GntMenuItem *item, gpointer n)
+{
+	PurpleRequestFields *fields;
+	PurpleRequestFieldGroup *group;
+	PurpleRequestField *field;
+
+	fields = purple_request_fields_new();
+
+	group = purple_request_field_group_new(NULL);
+	purple_request_fields_add_group(fields, group);
+
+	field = purple_request_field_string_new("chat", _("Channel"), NULL, FALSE);
+	purple_request_field_set_required(field, TRUE);
+	purple_request_field_group_add_field(group, field);
+
+	field = purple_request_field_account_new("account", _("Account"), NULL);
+	purple_request_field_set_type_hint(field, "account");
+	purple_request_field_set_visible(field,
+		(purple_connections_get_all() != NULL &&
+		 purple_connections_get_all()->next != NULL));
+	purple_request_field_set_required(field, TRUE);
+	purple_request_field_group_add_field(group, field);
+
+	purple_request_fields(purple_get_blist(), _("Join a Chat"),
+						NULL,
+						_("Please enter the name of the chat you want to join."),
+						fields,
+						_("Join"), G_CALLBACK(join_chat_select_cb),
+						_("Cancel"), NULL,
+						NULL, NULL, NULL,
+						NULL);
+}
+
+static void
+menu_add_buddy_cb(GntMenuItem *item, gpointer null)
+{
+	purple_blist_request_add_buddy(NULL, NULL, NULL, NULL);
+}
+
+static void
+menu_add_chat_cb(GntMenuItem *item, gpointer null)
+{
+	purple_blist_request_add_chat(NULL, NULL, NULL, NULL);
+}
+
+static void
+menu_add_group_cb(GntMenuItem *item, gpointer null)
+{
+	purple_blist_request_add_group();
+}
+
+static void
 create_menu()
 {
-	GntWidget *menu, *sub;
+	GntWidget *menu, *sub, *subsub;
 	GntMenuItem *item;
 	GntWindow *window;
 
@@ -2248,29 +2331,61 @@
 	gnt_menu_add_item(GNT_MENU(sub), item);
 	gnt_menuitem_set_callback(GNT_MENU_ITEM(item), send_im_select, NULL);
 
-	item = gnt_menuitem_check_new(_("Show empty groups"));
+	item = gnt_menuitem_new(_("Join Chat..."));
+	gnt_menu_add_item(GNT_MENU(sub), item);
+	gnt_menuitem_set_callback(GNT_MENU_ITEM(item), join_chat_select, NULL);
+
+	item = gnt_menuitem_new(_("Show"));
+	gnt_menu_add_item(GNT_MENU(sub), item);
+	subsub = gnt_menu_new(GNT_MENU_POPUP);
+	gnt_menuitem_set_submenu(item, GNT_MENU(subsub));
+
+	item = gnt_menuitem_check_new(_("Empty groups"));
 	gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item),
 				purple_prefs_get_bool(PREF_ROOT "/emptygroups"));
-	gnt_menu_add_item(GNT_MENU(sub), item);
+	gnt_menu_add_item(GNT_MENU(subsub), item);
 	gnt_menuitem_set_callback(GNT_MENU_ITEM(item), toggle_pref_cb, PREF_ROOT "/emptygroups");
 	
-	item = gnt_menuitem_check_new(_("Show offline buddies"));
+	item = gnt_menuitem_check_new(_("Offline buddies"));
 	gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item),
 				purple_prefs_get_bool(PREF_ROOT "/showoffline"));
-	gnt_menu_add_item(GNT_MENU(sub), item);
+	gnt_menu_add_item(GNT_MENU(subsub), item);
 	gnt_menuitem_set_callback(GNT_MENU_ITEM(item), toggle_pref_cb, PREF_ROOT "/showoffline");
 
-	item = gnt_menuitem_new(_("Sort by status"));
+	item = gnt_menuitem_new(_("Sort"));
 	gnt_menu_add_item(GNT_MENU(sub), item);
+	subsub = gnt_menu_new(GNT_MENU_POPUP);
+	gnt_menuitem_set_submenu(item, GNT_MENU(subsub));
+
+	item = gnt_menuitem_new(_("By Status"));
+	gnt_menu_add_item(GNT_MENU(subsub), item);
 	gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "status");
 
-	item = gnt_menuitem_new(_("Sort alphabetically"));
-	gnt_menu_add_item(GNT_MENU(sub), item);
+	item = gnt_menuitem_new(_("Alphabetically"));
+	gnt_menu_add_item(GNT_MENU(subsub), item);
 	gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "text");
 
-	item = gnt_menuitem_new(_("Sort by log size"));
+	item = gnt_menuitem_new(_("By Log Size"));
+	gnt_menu_add_item(GNT_MENU(subsub), item);
+	gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "log");
+
+	item = gnt_menuitem_new(_("Add"));
 	gnt_menu_add_item(GNT_MENU(sub), item);
-	gnt_menuitem_set_callback(GNT_MENU_ITEM(item), sort_blist_change_cb, "log");
+
+	subsub = gnt_menu_new(GNT_MENU_POPUP);
+	gnt_menuitem_set_submenu(item, GNT_MENU(subsub));
+
+	item = gnt_menuitem_new("Buddy");
+	gnt_menu_add_item(GNT_MENU(subsub), item);
+	gnt_menuitem_set_callback(item, menu_add_buddy_cb, NULL);
+
+	item = gnt_menuitem_new("Chat");
+	gnt_menu_add_item(GNT_MENU(subsub), item);
+	gnt_menuitem_set_callback(item, menu_add_chat_cb, NULL);
+
+	item = gnt_menuitem_new("Group");
+	gnt_menu_add_item(GNT_MENU(subsub), item);
+	gnt_menuitem_set_callback(item, menu_add_group_cb, NULL);
 
 	reconstruct_accounts_menu();
 	gnt_menu_add_item(GNT_MENU(menu), ggblist->accounts);
--- a/finch/gntblist.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/gntblist.h	Tue Oct 23 17:27:12 2007 +0000
@@ -98,6 +98,8 @@
  * @param name   The user to get information about.
  *
  * @return  Returns the ui-handle for the userinfo notification.
+ *
+ * @since 2.1.0
  */
 gpointer finch_retrieve_user_info(PurpleConnection *conn, const char *name);
 
--- a/finch/gntconn.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/gntconn.c	Tue Oct 23 17:27:12 2007 +0000
@@ -105,10 +105,11 @@
 {
 	FinchAutoRecon *info;
 	PurpleAccount *account = purple_connection_get_account(gc);
-
-	info = g_hash_table_lookup(hash, account);
+	GList *list;
 
 	if (!gc->wants_to_die) {
+		info = g_hash_table_lookup(hash, account);
+
 		if (info == NULL) {
 			info = g_new0(FinchAutoRecon, 1);
 			g_hash_table_insert(hash, account, info);
@@ -141,6 +142,17 @@
 		g_free(secondary);
 		purple_account_set_enabled(account, FINCH_UI, FALSE);
 	}
+
+	/* If we have any open chats, we probably want to rejoin when we get back online. */
+	list = purple_get_chats();
+	while (list) {
+		PurpleConversation *conv = list->data;
+		list = list->next;
+		if (conv->account != account ||
+				purple_conv_chat_has_left(PURPLE_CONV_CHAT(conv)))
+			continue;
+		purple_conversation_set_data(conv, "want-to-rejoin", GINT_TO_POINTER(TRUE));
+	}
 }
 
 static void
--- a/finch/gntconv.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/gntconv.c	Tue Oct 23 17:27:12 2007 +0000
@@ -311,13 +311,40 @@
 static void
 account_signed_on_off(PurpleConnection *gc, gpointer null)
 {
-	GList *ims = purple_get_ims();
-	while (ims) {
-		PurpleConversation *conv = ims->data;
+	GList *list = purple_get_ims();
+	while (list) {
+		PurpleConversation *conv = list->data;
 		PurpleConversation *cc = find_conv_with_contact(conv->account, conv->name);
 		if (cc)
 			generate_send_to_menu(cc->ui_data);
-		ims = ims->next;
+		list = list->next;
+	}
+
+	if (PURPLE_CONNECTION_IS_CONNECTED(gc)) {
+		/* We just signed on. Let's see if there's any chat that we have open,
+		 * and hadn't left before the disconnect. */
+		list = purple_get_chats();
+		while (list) {
+			PurpleConversation *conv = list->data;
+			PurpleChat *chat;
+			GHashTable *comps = NULL;
+
+			list = list->next;
+			if (conv->account != gc->account ||
+					!purple_conversation_get_data(conv, "want-to-rejoin"))
+				continue;
+
+			chat = purple_blist_find_chat(conv->account, conv->name);
+			if (chat == NULL) {
+				if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL)
+					comps = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, conv->name);
+			} else {
+				comps = chat->components;
+			}
+			serv_join_chat(gc, comps);
+			if (chat == NULL && comps != NULL)
+				g_hash_table_destroy(comps);
+		}
 	}
 }
 
@@ -738,7 +765,8 @@
 		gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv),
 					_("<AUTO-REPLY> "), GNT_TEXT_FLAG_BOLD);
 
-	if (who && *who && (flags & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV)))
+	if (who && *who && (flags & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV)) &&
+			!(flags & PURPLE_MESSAGE_NOTIFY))
 	{
 		char * name = NULL;
 
--- a/finch/gntdebug.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/gntdebug.c	Tue Oct 23 17:27:12 2007 +0000
@@ -28,12 +28,14 @@
 #include <gntbutton.h>
 #include <gntcheckbox.h>
 #include <gntentry.h>
+#include <gntfilesel.h>
 #include <gntlabel.h>
 #include <gntline.h>
 #include <gnttextview.h>
 
 #include "gntdebug.h"
 #include "finch.h"
+#include "notify.h"
 #include "util.h"
 
 #include <stdio.h>
@@ -220,9 +222,43 @@
 					(GDestroyNotify)g_source_remove);
 }
 
+static void
+file_save(GntFileSel *fs, const char *path, const char *file, GntTextView *tv)
+{
+	FILE *fp;
+
+	if ((fp = g_fopen(path, "w+")) == NULL) {
+		purple_notify_error(NULL, NULL, _("Unable to open file."), NULL);
+		return;
+	}
+
+	fprintf(fp, "Finch Debug Log : %s\n", purple_date_format_full(NULL));
+	fprintf(fp, tv->string->str);
+	fclose(fp);
+	gnt_widget_destroy(GNT_WIDGET(fs));
+}
+
+static void
+file_cancel(GntWidget *w, GntFileSel *fs)
+{
+	gnt_widget_destroy(GNT_WIDGET(fs));
+}
+
+static void
+save_debug_win(GntWidget *w, GntTextView *tv)
+{
+	GntWidget *window = gnt_file_sel_new();
+	GntFileSel *sel = GNT_FILE_SEL(window);
+	gnt_file_sel_set_current_location(sel, purple_home_dir());
+	gnt_file_sel_set_suggested_filename(sel, "debug.txt");
+	g_signal_connect(G_OBJECT(sel), "file_selected", G_CALLBACK(file_save), tv);
+	g_signal_connect(G_OBJECT(sel->cancel), "activate", G_CALLBACK(file_cancel), sel);
+	gnt_widget_show(window);
+}
+
 void finch_debug_window_show()
 {
-	GntWidget *wid, *box;
+	GntWidget *wid, *box, *label;
 
 	debug.paused = FALSE;
 	if (debug.window) {
@@ -258,8 +294,15 @@
 	GNT_WIDGET_SET_FLAGS(wid, GNT_WIDGET_GROW_Y);
 	gnt_box_add_widget(GNT_BOX(box), wid);
 
+	wid = gnt_button_new(_("Save"));
+	g_signal_connect(G_OBJECT(wid), "activate", G_CALLBACK(save_debug_win), debug.tview);
+	GNT_WIDGET_SET_FLAGS(wid, GNT_WIDGET_GROW_Y);
+	gnt_box_add_widget(GNT_BOX(box), wid);
+
 	debug.search = gnt_entry_new(purple_prefs_get_string(PREF_ROOT "/filter"));
-	gnt_box_add_widget(GNT_BOX(box), gnt_label_new(_("Filter: ")));
+	label = gnt_label_new(_("Filter:"));
+	GNT_WIDGET_UNSET_FLAGS(label, GNT_WIDGET_GROW_X);
+	gnt_box_add_widget(GNT_BOX(box), label);
 	gnt_box_add_widget(GNT_BOX(box), debug.search);
 	g_signal_connect(G_OBJECT(debug.search), "text_changed", G_CALLBACK(update_filter_string), NULL);
 
--- a/finch/gntnotify.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/gntnotify.c	Tue Oct 23 17:27:12 2007 +0000
@@ -84,8 +84,8 @@
 		if (type == PURPLE_NOTIFY_FORMATTED) {
 			int width = -1, height = -1;
 			msg = gnt_text_view_new();
+			gnt_text_view_set_flag(GNT_TEXT_VIEW(msg), GNT_TEXT_VIEW_TOP_ALIGN);
 			gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(msg), secondary, sf);
-			gnt_text_view_scroll(GNT_TEXT_VIEW(msg), 0);
 			gnt_text_view_attach_scroll_widget(GNT_TEXT_VIEW(msg), button);
 			gnt_util_get_text_bound(secondary, &width, &height);
 			gnt_widget_set_size(msg, width + 3, height + 1);
@@ -194,6 +194,7 @@
 	PurpleAccount *account = purple_connection_get_account(gc);
 	GString *message = g_string_new(NULL);
 	void *ret;
+	static int key = 0;
 
 	if (!detailed)
 	{
@@ -212,7 +213,7 @@
 
 		to = g_strdup_printf("%s (%s)", tos ? *tos : purple_account_get_username(account),
 					purple_account_get_protocol_name(account));
-		gnt_tree_add_row_after(GNT_TREE(emaildialog.tree), GINT_TO_POINTER(time(NULL)),
+		gnt_tree_add_row_after(GNT_TREE(emaildialog.tree), GINT_TO_POINTER(++key),
 				gnt_tree_create_row(GNT_TREE(emaildialog.tree), to,
 					froms ? *froms : "[Unknown sender]",
 					*subjects),
@@ -352,14 +353,18 @@
 		gnt_box_add_widget(GNT_BOX(window),
 			gnt_label_new_with_format(secondary, GNT_TEXT_FLAG_NORMAL));
 
-	columns = purple_notify_searchresults_get_columns_count(results);
+	columns = g_list_length(results->columns);
 	tree = gnt_tree_new_with_columns(columns);
 	gnt_tree_set_show_title(GNT_TREE(tree), TRUE);
 	gnt_box_add_widget(GNT_BOX(window), tree);
 
-	for (i = 0; i < columns; i++)
-		gnt_tree_set_column_title(GNT_TREE(tree), i, 
-				purple_notify_searchresults_column_get_title(results, i));
+	i = 0;
+	for (iter = results->columns; iter; iter = iter->next)
+	{
+		PurpleNotifySearchColumn *column = iter->data;
+		gnt_tree_set_column_title(GNT_TREE(tree), i, column->title);
+		i++;
+	}
 
 	box = gnt_hbox_new(TRUE);
 
--- a/finch/gntplugin.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/gntplugin.c	Tue Oct 23 17:27:12 2007 +0000
@@ -32,6 +32,7 @@
 
 #include "finch.h"
 
+#include "debug.h"
 #include "notify.h"
 #include "request.h"
 
@@ -127,8 +128,8 @@
 	/* XXX: Use formatting and stuff */
 	gnt_text_view_clear(GNT_TEXT_VIEW(plugins.aboot));
 	text = g_strdup_printf(_("Name: %s\nVersion: %s\nDescription: %s\nAuthor: %s\nWebsite: %s\nFilename: %s\n"),
-			SAFE(plugin->info->name), SAFE(plugin->info->version), SAFE(plugin->info->description),
-			SAFE(plugin->info->author), SAFE(plugin->info->homepage), SAFE(plugin->path));
+			SAFE(_(plugin->info->name)), SAFE(_(plugin->info->version)), SAFE(_(plugin->info->description)),
+			SAFE(_(plugin->info->author)), SAFE(_(plugin->info->homepage)), SAFE(plugin->path));
 	gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(plugins.aboot),
 			text, GNT_TEXT_FLAG_NORMAL);
 	gnt_text_view_scroll(GNT_TEXT_VIEW(plugins.aboot), 0);
@@ -237,6 +238,93 @@
 	}
 }
 
+static void
+install_selected_file_cb(gpointer handle, const char *filename)
+{
+	/* Try to init the selected file.
+	 * If it succeeds, try to make a copy of the file in $USERDIR/plugins/.
+	 * If the copy succeeds, unload and destroy the plugin in the original
+	 *  location and init+load the new one.
+	 * Select the plugin in the plugin list.
+	 */
+	char *path;
+	PurplePlugin *plugin;
+
+	g_return_if_fail(plugins.window);
+	
+	plugin = purple_plugin_probe(filename);
+	if (!plugin) {
+		purple_notify_error(handle, _("Error loading plugin"),
+				_("The selected file is not a valid plugin."),
+				_("Please open the debug window and try again to see the exact error message."));
+		return;
+	}
+	if (g_list_find(gnt_tree_get_rows(GNT_TREE(plugins.tree)), plugin)) {
+		purple_plugin_load(plugin);
+		gnt_tree_set_choice(GNT_TREE(plugins.tree), plugin, purple_plugin_is_loaded(plugin));
+		gnt_tree_set_selected(GNT_TREE(plugins.tree), plugin);
+		return;
+	}
+
+	path = g_build_filename(purple_user_dir(), "plugins", NULL);
+	if (purple_build_dir(path, S_IRUSR | S_IWUSR | S_IXUSR) == 0) {
+		char *content = NULL;
+		gsize length = 0;
+
+		if (g_file_get_contents(filename, &content, &length, NULL)) {
+			char *file = g_path_get_basename(filename);
+			g_free(path);
+			path = g_build_filename(purple_user_dir(), "plugins", file, NULL);
+			if (purple_util_write_data_to_file_absolute(path, content, length)) {
+				purple_plugin_destroy(plugin);
+				plugin = purple_plugin_probe(path);
+				if (!plugin) {
+					purple_debug_warning("gntplugin", "This is really strange. %s can be loaded, but %s can't!\n",
+							filename, path);
+					g_unlink(path);
+					plugin = purple_plugin_probe(filename);
+				}
+			} else {
+			}
+		}
+		g_free(content);
+	}
+	g_free(path);
+
+	purple_plugin_load(plugin);
+
+	if (plugin->info->type == PURPLE_PLUGIN_LOADER) {
+		GList *cur;
+		for (cur = PURPLE_PLUGIN_LOADER_INFO(plugin)->exts; cur != NULL;
+				cur = cur->next)
+			purple_plugins_probe(cur->data);
+		return;
+	}
+
+	if (plugin->info->type != PURPLE_PLUGIN_STANDARD ||
+			(plugin->info->flags & PURPLE_PLUGIN_FLAG_INVISIBLE) ||
+			plugin->error)
+		return;
+
+	gnt_tree_add_choice(GNT_TREE(plugins.tree), plugin,
+			gnt_tree_create_row(GNT_TREE(plugins.tree), plugin->info->name), NULL, NULL);
+	gnt_tree_set_choice(GNT_TREE(plugins.tree), plugin, purple_plugin_is_loaded(plugin));
+	gnt_tree_set_row_flags(GNT_TREE(plugins.tree), plugin, GNT_TEXT_FLAG_BOLD);
+	gnt_tree_set_selected(GNT_TREE(plugins.tree), plugin);
+}
+
+static void
+install_plugin_cb(GntWidget *w, gpointer null)
+{
+	static int handle;
+
+	purple_request_close_with_handle(&handle);
+	purple_request_file(&handle, _("Select plugin to install"), NULL,
+			FALSE, G_CALLBACK(install_selected_file_cb), NULL,
+			NULL, NULL, NULL, &handle);
+	g_signal_connect_swapped(G_OBJECT(w), "destroy", G_CALLBACK(purple_request_close_with_handle), &handle);
+}
+
 void finch_plugins_show_all()
 {
 	GntWidget *window, *tree, *box, *aboot, *button;
@@ -272,6 +360,7 @@
 	gnt_box_add_widget(GNT_BOX(box), gnt_vline_new());
 
 	plugins.aboot = aboot = gnt_text_view_new();
+	gnt_text_view_set_flag(GNT_TEXT_VIEW(aboot), GNT_TEXT_VIEW_TOP_ALIGN);
 	gnt_widget_set_size(aboot, 40, 20);
 	gnt_box_add_widget(GNT_BOX(box), aboot);
 
@@ -307,6 +396,10 @@
 	box = gnt_hbox_new(FALSE);
 	gnt_box_add_widget(GNT_BOX(window), box);
 
+	button = gnt_button_new(_("Install Plugin..."));
+	gnt_box_add_widget(GNT_BOX(box), button);
+	g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(install_plugin_cb), NULL);
+
 	button = gnt_button_new(_("Close"));
 	gnt_box_add_widget(GNT_BOX(box), button);
 	g_signal_connect_swapped(G_OBJECT(button), "activate",
--- a/finch/gntrequest.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/gntrequest.c	Tue Oct 23 17:27:12 2007 +0000
@@ -76,6 +76,8 @@
 static void
 setup_default_callback(GntWidget *window, gpointer default_cb, gpointer data)
 {
+	if (default_cb == NULL)
+		return;
 	g_object_set_data(G_OBJECT(window), "default-callback", default_cb);
 	g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(default_cb), data);
 }
--- a/finch/gntsound.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/gntsound.h	Tue Oct 23 17:27:12 2007 +0000
@@ -37,6 +37,8 @@
  * Get the name of the active sound profile.
  *
  * @return The name of the profile
+ *
+ * @since 2.1.0
  */
 const char *finch_sound_get_active_profile(void);
 
@@ -44,6 +46,8 @@
  * Set the active profile.  If the profile doesn't exist, nothing is changed.
  * 
  * @param name  The name of the profile
+ *
+ * @since 2.1.0
  */
 void finch_sound_set_active_profile(const char *name);
 
@@ -52,6 +56,8 @@
  *
  * @return A list of strings denoting sound profile names.
  *         Caller must free the list (but not the data).
+ *
+ * @since 2.1.0
  */
 GList *finch_sound_get_profiles(void);
 
@@ -60,6 +66,8 @@
  *
  * @return Returns FALSE if preference is set to 'No sound', or if volume is
  *         set to zero.
+ *
+ * @since 2.2.0
  */
 gboolean finch_sound_is_enabled(void);
 
@@ -67,11 +75,15 @@
  * Gets GNT sound UI ops.
  *
  * @return The UI operations structure.
+ *
+ * @since 2.1.0
  */
 PurpleSoundUiOps *finch_sound_get_ui_ops(void);
 
 /**
  * Show the sound settings dialog.
+ *
+ * @since 2.1.0
  */
 void finch_sounds_show_all(void);
 
--- a/finch/libgnt/gnt.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/libgnt/gnt.h	Tue Oct 23 17:27:12 2007 +0000
@@ -62,6 +62,14 @@
  */
 gboolean gnt_ascii_only(void);
 
+/**
+ * Present a window. If the event was triggered because of user interaction,
+ * the window is moved to the foreground. Otherwise, the Urgent hint is set.
+ *
+ * @param window   The window the present.
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
+ */
 void gnt_window_present(GntWidget *window);
 /**
  * 
--- a/finch/libgnt/gntentry.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/libgnt/gntentry.c	Tue Oct 23 17:27:12 2007 +0000
@@ -100,6 +100,15 @@
 	return changed;
 }
 
+static int
+max_common_prefix(const char *s, const char *t)
+{
+	const char *f = s;
+	while (*f && *t && *f == *t++)
+		f++;
+	return f - s;
+}
+
 static gboolean
 show_suggest_dropdown(GntEntry *entry)
 {
@@ -110,6 +119,7 @@
 	GList *iter;
 	const char *text = NULL;
 	const char *sgst = NULL;
+	int max = -1;
 
 	if (entry->word)
 	{
@@ -121,14 +131,13 @@
 	else
 		suggest = g_strdup(entry->start);
 	len = strlen(suggest);  /* Don't need to use the utf8-function here */
-	
+
 	if (entry->ddown == NULL)
 	{
 		GntWidget *box = gnt_vbox_new(FALSE);
 		entry->ddown = gnt_tree_new();
 		gnt_tree_set_compare_func(GNT_TREE(entry->ddown), (GCompareFunc)g_utf8_collate);
 		gnt_box_add_widget(GNT_BOX(box), entry->ddown);
-		/* XXX: Connect to the "activate" signal for the dropdown tree */
 
 		GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_TRANSIENT);
 
@@ -151,6 +160,10 @@
 					gnt_tree_create_row(GNT_TREE(entry->ddown), text),
 					NULL, NULL);
 			count++;
+			if (max == -1)
+				max = strlen(text) - len;
+			else if (max)
+				max = MIN(max, max_common_prefix(sgst + len, text + len));
 			sgst = text;
 		}
 	}
@@ -163,6 +176,17 @@
 		destroy_suggest(entry);
 		return complete_suggest(entry, sgst);
 	} else {
+		if (max > 0) {
+			GntWidget *ddown = entry->ddown;
+			char *match = g_strndup(sgst + len, max);
+			entry->ddown = NULL;
+			gnt_entry_key_pressed(GNT_WIDGET(entry), match);
+			g_free(match);
+			if (entry->ddown)
+				gnt_widget_destroy(ddown);
+			else
+				entry->ddown = ddown;
+		}
 		gnt_widget_draw(entry->ddown->parent);
 	}
 
--- a/finch/libgnt/gntslider.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/libgnt/gntslider.h	Tue Oct 23 17:27:12 2007 +0000
@@ -75,6 +75,8 @@
 
 /**
  * @return The GType for GntSlider
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 GType gnt_slider_get_gtype(void);
 
@@ -89,6 +91,8 @@
  * @param min    The minimum value for the slider
  *
  * @return  The newly created slider
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 GntWidget * gnt_slider_new(gboolean orient, int max, int min);
 
@@ -98,6 +102,8 @@
  * @param slider  The slider
  * @param max     The maximum value
  * @param min     The minimum value
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 void gnt_slider_set_range(GntSlider *slider, int max, int min);
 
@@ -106,6 +112,8 @@
  * 
  * @param slider  The slider
  * @param step    The amount for each step
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 void gnt_slider_set_step(GntSlider *slider, int step);
 
@@ -114,6 +122,8 @@
  * 
  * @param slider  The slider
  * @param step    The amount for a small step (for the slider)
+ *
+ * @since 2.2.0
  */
 void gnt_slider_set_small_step(GntSlider *slider, int step);
 
@@ -122,6 +132,8 @@
  * 
  * @param slider  The slider
  * @param step    The amount for a large step (for the slider)
+ *
+ * @since 2.2.0
  */
 void gnt_slider_set_large_step(GntSlider *slider, int step);
 
@@ -133,6 +145,8 @@
  *                 forward, negative to change backward
  *
  * @return   The value of the slider after the change
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 int gnt_slider_advance_step(GntSlider *slider, int steps);
 
@@ -141,6 +155,8 @@
  *
  * @param slider  The slider
  * @param value   The current value
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 void gnt_slider_set_value(GntSlider *slider, int value);
 
@@ -149,6 +165,8 @@
  *
  * @param slider The slider
  *
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 int gnt_slider_get_value(GntSlider *slider);
 
@@ -157,6 +175,8 @@
  *
  * @param slider   The slider
  * @param label    The label to update
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 void gnt_slider_reflect_label(GntSlider *slider, GntLabel *label);
 
--- a/finch/libgnt/gntstyle.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/libgnt/gntstyle.h	Tue Oct 23 17:27:12 2007 +0000
@@ -53,6 +53,8 @@
  * @param key     The key
  *
  * @return  The value of the setting as a string, or @c NULL
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 char *gnt_style_get_from_name(const char *group, const char *key);
 
@@ -62,6 +64,8 @@
  *
  * @param value   The value of the boolean setting as a string
  * @return    The boolean value
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 gboolean gnt_style_parse_bool(const char *value);
 
--- a/finch/libgnt/gnttextview.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/libgnt/gnttextview.h	Tue Oct 23 17:27:12 2007 +0000
@@ -204,6 +204,8 @@
  *
  * @param view  The textview widget
  * @param flag  The flag to set
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 void gnt_text_view_set_flag(GntTextView *view, GntTextViewFlag flag);
 
--- a/finch/libgnt/gnttree.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/libgnt/gnttree.h	Tue Oct 23 17:27:12 2007 +0000
@@ -383,6 +383,8 @@
  *
  * @see gnt_tree_set_column_titles
  * @see gnt_tree_set_show_title
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 void gnt_tree_set_column_title(GntTree *tree, int index, const char *title);
 
@@ -486,6 +488,8 @@
  *
  * @see gnt_tree_set_col_width
  * @see gnt_tree_set_column_width_ratio
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 void gnt_tree_set_column_resizable(GntTree *tree, int col, gboolean res);
 
@@ -505,6 +509,8 @@
  * @param tree  The tree
  * @param col   The index of the column
  * @param right @c TRUE if the text in the column should be right aligned
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 void gnt_tree_set_column_is_right_aligned(GntTree *tree, int col, gboolean right);
 
@@ -519,6 +525,8 @@
  *
  * @see gnt_tree_set_col_width
  * @see gnt_tree_set_column_resizable
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 void gnt_tree_set_column_width_ratio(GntTree *tree, int cols[]);
 
@@ -527,6 +535,8 @@
  *
  * @param tree   The tree
  * @param col    The index of the column
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 void gnt_tree_set_search_column(GntTree *tree, int col);
 
@@ -535,6 +545,8 @@
  *
  * @param tree   The tree
  * @return  @c TRUE if the user is searching, @c FALSE otherwise.
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 gboolean gnt_tree_is_searching(GntTree *tree);
 
@@ -547,6 +559,8 @@
  *              string and the content of row in the search column.
  *              If the function returns @c TRUE, the row is dislayed,
  *              otherwise it's not.
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 void gnt_tree_set_search_function(GntTree *tree,
 		gboolean (*func)(GntTree *tree, gpointer key, const char *search, const char *current));
--- a/finch/libgnt/gntutils.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/libgnt/gntutils.h	Tue Oct 23 17:27:12 2007 +0000
@@ -139,6 +139,8 @@
  * @param string   The XHTML string
  * @param tv       The GntTextView
  * @return  @c TRUE if the string was added to the textview properly, @c FALSE otherwise.
+ *
+ * @since 2.2.0
  */
 gboolean gnt_util_parse_xhtml_to_textview(const char *string, GntTextView *tv);
 
@@ -148,6 +150,8 @@
  * @param widget  The widget
  * @param key     The key to trigger the button
  * @param button  The button to trigger
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
  */
 void gnt_util_set_trigger_widget(GntWidget *wid, const char *text, GntWidget *button);
 
--- a/finch/libgnt/gntws.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/libgnt/gntws.h	Tue Oct 23 17:27:12 2007 +0000
@@ -69,18 +69,112 @@
 
 G_BEGIN_DECLS
 
+/**
+ * @return The GType for GntWS.
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
+ */
 GType gnt_ws_get_gtype(void);
 
+/**
+ * Create a new workspace with the specified name.
+ *
+ * @param name  The desired name of the workspace, or @c NULL.
+ *
+ * @return The newly created workspace.
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
+ */
 GntWS *gnt_ws_new(const char *name);
+
+/**
+ * Set the name of a workspace.
+ *
+ * @param ws    The workspace to rename.
+ * @param name  The new name of the workspace.
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
+ */
 void gnt_ws_set_name(GntWS *ws, const gchar *name);
+
+/**
+ * Add a widget to a workspace.
+ *
+ * @param ws     The workspace.
+ * @param widget The widget to add.
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
+ */
 void gnt_ws_add_widget(GntWS *ws, GntWidget *widget);
+
+/**
+ * Remove a widget from a workspace.
+ *
+ * @param ws      The workspace
+ * @param widget  The widget to remove from the workspace.
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
+ */
 void gnt_ws_remove_widget(GntWS *ws, GntWidget *widget);
+
+/**
+ * Hide a widget in a workspace.
+ *
+ * @param widget  The widget to hide.
+ * @param nodes   A hashtable containing information about the widgets.
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
+ */
 void gnt_ws_widget_hide(GntWidget *widget, GHashTable *nodes);
+
+/**
+ * Show a widget in a workspace.
+ *
+ * @param widget   The widget to show.
+ * @param nodes   A hashtable containing information about the widgets.
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
+ */
 void gnt_ws_widget_show(GntWidget *widget, GHashTable *nodes);
+
+/**
+ * Draw the taskbar in a workspace.
+ *
+ * @param ws         The workspace.
+ * @param reposition Whether the workspace should reposition the taskbar.
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
+ */
 void gnt_ws_draw_taskbar(GntWS *ws, gboolean reposition);
+
+/**
+ * Hide a workspace.
+ *
+ * @param ws      The workspace to hide.
+ * @param table   A hashtable containing information about the widgets.
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
+ */
 void gnt_ws_hide(GntWS *ws, GHashTable *table);
+
+/**
+ * Show a workspace.
+ *
+ * @param ws      The workspace to hide.
+ * @param table   A hashtable containing information about the widgets.
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
+ */
 void gnt_ws_show(GntWS *ws, GHashTable *table);
 
+/**
+ * Get the name of a workspace.
+ *
+ * @param ws   The workspace.
+ * @return  The name of the workspace (can be @c NULL).
+ *
+ * @since 2.0.0 (gnt), 2.1.0 (pidgin)
+ */
 const char * gnt_ws_get_name(GntWS *ws);
 
 #endif
--- a/finch/libgnt/pygnt/gntmodule.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/libgnt/pygnt/gntmodule.c	Tue Oct 23 17:27:12 2007 +0000
@@ -1,7 +1,74 @@
 #include <pygobject.h>
+#include "gnt.h"
  
 void gnt_register_classes (PyObject *d); 
 extern PyMethodDef gnt_functions[];
+
+static void
+gnt_add_string_constants(PyObject *module)
+{
+#define define_key(x) if (GNT_KEY_##x && *(GNT_KEY_##x))  PyModule_AddStringConstant(module, "KEY_" #x, GNT_KEY_##x)
+
+	define_key(POPUP);
+
+	define_key(LEFT);
+	define_key(RIGHT);
+	define_key(UP);
+	define_key(DOWN);
+
+	define_key(CTRL_UP);
+	define_key(CTRL_DOWN);
+	define_key(CTRL_RIGHT);
+	define_key(CTRL_LEFT);
+
+	define_key(PGUP);
+	define_key(PGDOWN);
+	define_key(HOME);
+	define_key(END);
+
+	define_key(ENTER);
+
+	define_key(BACKSPACE);
+	define_key(DEL);
+	define_key(INS);
+	define_key(BACK_TAB);
+
+	define_key(CTRL_A);
+	define_key(CTRL_B);
+	define_key(CTRL_D);
+	define_key(CTRL_E);
+	define_key(CTRL_F);
+	define_key(CTRL_G);
+	define_key(CTRL_H);
+	define_key(CTRL_I);
+	define_key(CTRL_J);
+	define_key(CTRL_K);
+	define_key(CTRL_L);
+	define_key(CTRL_M);
+	define_key(CTRL_N);
+	define_key(CTRL_O);
+	define_key(CTRL_P);
+	define_key(CTRL_R);
+	define_key(CTRL_T);
+	define_key(CTRL_U);
+	define_key(CTRL_V);
+	define_key(CTRL_W);
+	define_key(CTRL_X);
+	define_key(CTRL_Y);
+
+	define_key(F1);
+	define_key(F2);
+	define_key(F3);
+	define_key(F4);
+	define_key(F5);
+	define_key(F6);
+	define_key(F7);
+	define_key(F8);
+	define_key(F9);
+	define_key(F10);
+	define_key(F11);
+	define_key(F12);
+}
  
 DL_EXPORT(void)
 initgnt(void)
@@ -19,5 +86,8 @@
     if (PyErr_Occurred ()) {
         Py_FatalError ("can't initialise module sad");
     }
+
+	gnt_init();
+	gnt_add_string_constants(m);
 }
 
--- a/finch/libgnt/pygnt/gnttree.override	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/libgnt/pygnt/gnttree.override	Tue Oct 23 17:27:12 2007 +0000
@@ -62,13 +62,14 @@
 {
 	static char *kwlist[] = {"key", "row", "parent", "bigbro", NULL};
 	PyObject *py_list;
-	gpointer key, parent, bigbro;
+	gpointer key, parent, bigbro = NULL;
 	int len, i;
 	GList *list = NULL;
 	GntTreeRow *row;
+	gboolean insert_last = FALSE;
 
 	if (!PyArg_ParseTuple(args,
-				"OOOO:GntTree.add_row_after",
+				"OOO|O:GntTree.add_row_after",
 				&key,
 				&py_list,
 				&parent,
@@ -92,13 +93,20 @@
 		parent = NULL;
 	if (bigbro == Py_None)
 		bigbro = NULL;
+	else if (bigbro == NULL)
+		insert_last = TRUE;
+
+	Py_INCREF((PyObject*)key);
 
 	list = g_list_reverse(list);
 	row = gnt_tree_create_row_from_list(GNT_TREE(self->obj), list);
-	gnt_tree_add_row_after(GNT_TREE(self->obj),
-			key,
-			row,
-			parent, bigbro);
+	if (insert_last)
+		gnt_tree_add_row_last(GNT_TREE(self->obj),
+				key, row, parent);
+	else
+		gnt_tree_add_row_after(GNT_TREE(self->obj),
+				key, row,
+				parent, bigbro);
 	g_list_free(list);
 
 	Py_INCREF(Py_None);
@@ -179,4 +187,27 @@
 	Py_INCREF(Py_None);
 	return Py_None;
 }
+%%
+override gnt_tree_set_compare_func
+static PyObject *
+_wrap_gnt_tree_set_compare_func(PyGObject *self, PyObject *args)
+{
+	static char *kwlist[] = {"compare_func", NULL};
+	PyGObject *compare;
 
+	if (!PyArg_ParseTuple(args, "O:GntTree.set_compare_func", &compare)) {
+		return NULL;
+	}
+
+	if (!PyCallable_Check(compare)) {
+		PyErr_SetString(PyExc_TypeError, "the callback must be callable ... doh!");
+		return NULL;
+	}
+
+	Py_INCREF(compare);
+	gnt_tree_set_compare_func(GNT_TREE(self->obj), (GCompareFunc)compare->obj);
+
+	Py_INCREF(Py_None);
+	return Py_None;
+}
+
--- a/finch/libgnt/test/Makefile	Tue Oct 23 17:05:12 2007 +0000
+++ b/finch/libgnt/test/Makefile	Tue Oct 23 17:27:12 2007 +0000
@@ -1,5 +1,5 @@
 CC=gcc
-CFLAGS=`pkg-config --cflags gobject-2.0 gmodule-2.0` -g -I../ -DSTANDALONE
+CFLAGS=`pkg-config --cflags gobject-2.0 gmodule-2.0` -g -I../ -DSTANDALONE -I/usr/inclue/ncursesw/
 LDFLAGS=`pkg-config --libs gobject-2.0 gmodule-2.0 gnt` -pg
 
 EXAMPLES=combo focus tv multiwin keys menu parse
--- a/libpurple/account.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/account.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file account.h Account API
  * @ingroup core
+ * @see @ref account-signals
  */
 
 /* purple
@@ -22,8 +23,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- * @see @ref account-signals
  */
 #ifndef _PURPLE_ACCOUNT_H_
 #define _PURPLE_ACCOUNT_H_
--- a/libpurple/blist.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/blist.c	Tue Oct 23 17:27:12 2007 +0000
@@ -632,12 +632,13 @@
 			continue;
 
 		buddy = (PurpleBuddy*)bnode;
-
-		if (!purple_account_is_connected(buddy->account))
+		if (new_priority == NULL)
+		{
+			new_priority = buddy;
 			continue;
-		if (new_priority == NULL)
-			new_priority = buddy;
-		else
+		}
+
+		if (purple_account_is_connected(buddy->account))
 		{
 			int cmp;
 
@@ -1442,29 +1443,7 @@
 
 void purple_contact_set_alias(PurpleContact *contact, const char *alias)
 {
-	PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
-	char *old_alias;
-
-	g_return_if_fail(contact != NULL);
-
-	if (!purple_strings_are_different(contact->alias, alias))
-		return;
-
-	old_alias = contact->alias;
-
-	if ((alias != NULL) && (*alias != '\0'))
-		contact->alias = g_strdup(alias);
-	else
-		contact->alias = NULL;
-
-	purple_blist_schedule_save();
-
-	if (ops && ops->update)
-		ops->update(purplebuddylist, (PurpleBlistNode*)contact);
-
-	purple_signal_emit(purple_blist_get_handle(), "blist-node-aliased",
-					 contact, old_alias);
-	g_free(old_alias);
+	purple_blist_alias_contact(contact,alias);
 }
 
 const char *purple_contact_get_alias(PurpleContact* contact)
--- a/libpurple/blist.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/blist.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file blist.h Buddy List API
  * @ingroup core
+ * @see @ref blist-signals
  */
 
 /* purple
@@ -22,8 +23,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- * @see @ref blist-signals
  */
 #ifndef _PURPLE_BLIST_H_
 #define _PURPLE_BLIST_H_
@@ -65,11 +64,11 @@
 
 typedef enum
 {
-	PURPLE_BLIST_NODE_FLAG_NO_SAVE = 1 /**< node should not be saved with the buddy list */
+	PURPLE_BLIST_NODE_FLAG_NO_SAVE      = 1 << 0, /**< node should not be saved with the buddy list */
 
 } PurpleBlistNodeFlags;
 
-#define PURPLE_BLIST_NODE_HAS_FLAG(b, f) ((b)->flags & (f))
+#define PURPLE_BLIST_NODE_HAS_FLAG(b, f) (((PurpleBlistNode*)(b))->flags & (f))
 #define PURPLE_BLIST_NODE_SHOULD_SAVE(b) (! PURPLE_BLIST_NODE_HAS_FLAG(b, PURPLE_BLIST_NODE_FLAG_NO_SAVE))
 
 #define PURPLE_BLIST_NODE_NAME(n) ((n)->type == PURPLE_BLIST_CHAT_NODE  ? purple_chat_get_name((PurpleChat*)n) :        \
@@ -488,6 +487,8 @@
  *
  * @param contact  The contact
  * @param alias    The alias to set, or NULL to unset
+ *
+ * @deprecated Use purple_blist_alias_contact() instead.
  */
 void purple_contact_set_alias(PurpleContact *contact, const char *alias);
 
--- a/libpurple/certificate.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/certificate.c	Tue Oct 23 17:27:12 2007 +0000
@@ -88,6 +88,19 @@
 
 	g_return_if_fail(vrq);
 
+	if (st == PURPLE_CERTIFICATE_VALID) {
+		purple_debug_info("certificate",
+				  "Successfully verified certificate for %s\n",
+				  vrq->subject_name);
+	} else {
+		purple_debug_info("certificate",
+				  "Failed to verify certificate for %s\n",
+				  vrq->subject_name);
+	}
+		
+		
+		
+	
 	/* Pass the results on to the request's callback */
 	(vrq->cb)(st, vrq->cb_data);
 
@@ -1372,7 +1385,8 @@
 	purple_debug_info("certificate/x509/tls_cached",
 			  "Checking for a CA with DN=%s\n",
 			  ca_id);
-	if ( !purple_certificate_pool_contains(ca, ca_id) ) {
+	ca_crt = purple_certificate_pool_retrieve(ca, ca_id);
+	if ( NULL == ca_crt ) {
 		purple_debug_info("certificate/x509/tls_cached",
 				  "Certificate Authority with DN='%s' not "
 				  "found. I'll prompt the user, I guess.\n",
@@ -1385,16 +1399,7 @@
 		return;
 	}
 
-	ca_crt = purple_certificate_pool_retrieve(ca, ca_id);
 	g_free(ca_id);
-	if (!ca_crt) {
-		purple_debug_error("certificate/x509/tls_cached",
-				   "Certificate authority disappeared out "
-				   "underneath me!\n");
-		purple_certificate_verify_complete(vrq,
-						   PURPLE_CERTIFICATE_INVALID);
-		return;
-	}
 	
 	/* Check the signature */
 	if ( !purple_certificate_signed_by(end_crt, ca_crt) ) {
--- a/libpurple/certificate.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/certificate.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,8 @@
 /**
  * @file certificate.h Public-Key Certificate API
  * @ingroup core
+ * @see @ref certificate-signals
+ * @since 2.2.0
  */
 
 /*
@@ -433,7 +435,7 @@
  *
  * @return TRUE if 'crt' has a valid signature made by 'issuer',
  *         otherwise FALSE
- * @TODO Find a way to give the reason (bad signature, not the issuer, etc.) 
+ * @todo Find a way to give the reason (bad signature, not the issuer, etc.) 
  */
 gboolean
 purple_certificate_signed_by(PurpleCertificate *crt, PurpleCertificate *issuer);
@@ -448,7 +450,7 @@
  * @param chain      List of PurpleCertificate instances comprising the chain,
  *                   in the order certificate, issuer, issuer's issuer, etc.
  * @return TRUE if the chain is valid. See description.
- * @TODO Specify which certificate in the chain caused a failure
+ * @todo Specify which certificate in the chain caused a failure
  */
 gboolean
 purple_certificate_check_signature_chain(GList *chain);
@@ -779,7 +781,7 @@
  * Displays a window showing X.509 certificate information
  *
  * @param crt    Certificate under an "x509" Scheme
- * @TODO Will break on CA certs, as they have no Common Name
+ * @todo Will break on CA certs, as they have no Common Name
  */
 void
 purple_certificate_display_x509(PurpleCertificate *crt);
--- a/libpurple/cipher.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/cipher.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file cipher.h Purple Cipher API
  * @ingroup core
+ * @see @ref cipher-signals
  */
 
 /* purple
@@ -22,8 +23,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- * @see @ref cipher-signals
  */
 #ifndef PURPLE_CIPHER_H
 #define PURPLE_CIPHER_H
--- a/libpurple/cmds.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/cmds.h	Tue Oct 23 17:27:12 2007 +0000
@@ -67,10 +67,20 @@
 	PURPLE_CMD_P_VERY_HIGH =  6000,
 };
 
+/** Flags used to set various properties of commands.  Every command should
+ *  have at least one of #PURPLE_CMD_FLAG_IM and #PURPLE_CMD_FLAG_CHAT set in
+ *  order to be even slighly useful.
+ *
+ *  @see purple_cmd_register
+ */
 enum _PurpleCmdFlag {
+	/** Command is usable in IMs. */
 	PURPLE_CMD_FLAG_IM               = 0x01,
+	/** Command is usable in multi-user chats. */
 	PURPLE_CMD_FLAG_CHAT             = 0x02,
+	/** Command is usable only for a particular prpl. */
 	PURPLE_CMD_FLAG_PRPL_ONLY        = 0x04,
+	/** Incorrect arguments to this command should be accepted anyway. */
 	PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS = 0x08,
 };
 
@@ -92,36 +102,49 @@
  * The command will only happen if commands are enabled,
  * which is a UI pref. UIs don't have to support commands at all.
  *
- * @param cmd The command. This should be a UTF8 (or ASCII) string, with no spaces
+ * @param cmd The command. This should be a UTF-8 (or ASCII) string, with no spaces
  *            or other white space.
- * @param args This tells Purple how to parse the arguments to the command for you.
- *             If what the user types doesn't match, Purple will keep looking for another
- *             command, unless the flag @c PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS is passed in f.
- *             This string contains no whitespace, and uses a single character for each argument.
- *             The recognized characters are:
- *               'w' Matches a single word.
- *               'W' Matches a single word, with formatting.
- *               's' Matches the rest of the arguments after this point, as a single string.
- *               'S' Same as 's' but with formatting.
+ * @param args A string of characters describing to libpurple how to parse this
+ *             command's arguments.  If what the user types doesn't match this
+ *             pattern, libpurple will keep looking for another command, unless
+ *             the flag #PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS is passed in @a f.
+ *             This string should contain no whitespace, and use a single
+ *             character for each argument.  The recognized characters are:
+ *             <ul>
+ *               <li><tt>'w'</tt>: Matches a single word.</li>
+ *               <li><tt>'W'</tt>: Matches a single word, with formatting.</li>
+ *               <li><tt>'s'</tt>: Matches the rest of the arguments after this
+ *                                 point, as a single string.</li>
+ *               <li><tt>'S'</tt>: Same as <tt>'s'</tt> but with formatting.</li>
+ *             </ul>
  *             If args is the empty string, then the command accepts no arguments.
- *             The args passed to callback func will be a @c NULL terminated array of null
- *             terminated strings, and will always match the number of arguments asked for,
- *             unless PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS is passed.
- * @param p This is the priority. Higher priority commands will be run first, and usually the
- *          first command will stop any others from being called.
- * @param f These are the flags. You need to at least pass one of PURPLE_CMD_FLAG_IM or
- *          PURPLE_CMD_FLAG_CHAT (can may pass both) in order for the command to ever actually
- *          be called.
- * @param prpl_id This is the prpl's id string. This is only meaningful if the proper flag is set.
+ *             The args passed to the callback @a func will be a @c NULL
+ *             terminated array of @c NULL terminated strings, and will always
+ *             match the number of arguments asked for, unless
+ *             #PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS is passed.
+ * @param p This is the priority. Higher priority commands will be run first,
+ *          and usually the first command will stop any others from being
+ *          called.
+ * @param f Flags specifying various options about this command, combined with
+ *          <tt>|</tt> (bitwise OR). You need to at least pass one of
+ *          #PURPLE_CMD_FLAG_IM or #PURPLE_CMD_FLAG_CHAT (you may pass both) in
+ *          order for the command to ever actually be called.
+ * @param prpl_id If the #PURPLE_CMD_FLAG_PRPL_ONLY flag is set, this is the id
+ *                of the prpl to which the command applies (such as
+ *                <tt>"prpl-msn"</tt>). If the flag is not set, this parameter
+ *                is ignored; pass @c NULL (or a humourous string of your
+ *                choice!).
  * @param func This is the function to call when someone enters this command.
- * @param helpstr This is a whitespace sensitive, UTF-8, HTML string describing how to use the command.
- *                The preferred format of this string shall be the commands name, followed by a space
- *                and any arguments it accepts (if it takes any arguments, otherwise no space), followed
- *                by a colon, two spaces, and a description of the command in sentence form. No slash
- *                before the command name.
- * @param data User defined data to pass to the PurpleCmdFunc
- * @return A PurpleCmdId. This is only used for calling purple_cmd_unregister.
- *         Returns 0 on failure.
+ * @param helpstr a whitespace sensitive, UTF-8, HTML string describing how to
+ *                use the command.  The preferred format of this string is the
+ *                command's name, followed by a space and any arguments it
+ *                accepts (if it takes any arguments, otherwise no space),
+ *                followed by a colon, two spaces, and a description of the
+ *                command in sentence form.  Do not include a slash before the
+ *                command name.
+ * @param data User defined data to pass to the #PurpleCmdFunc @a f.
+ * @return A #PurpleCmdId, which is only used for calling
+ *         #purple_cmd_unregister, or @a 0 on failure.
  */
 PurpleCmdId purple_cmd_register(const gchar *cmd, const gchar *args, PurpleCmdPriority p, PurpleCmdFlag f,
                              const gchar *prpl_id, PurpleCmdFunc func, const gchar *helpstr, void *data);
@@ -133,7 +156,7 @@
  * or something else that might go away. Normally this is called when the plugin
  * unloads itself.
  *
- * @param id The PurpleCmdId to unregister.
+ * @param id The #PurpleCmdId to unregister, as returned by #purple_cmd_register.
  */
 void purple_cmd_unregister(PurpleCmdId id);
 
@@ -153,7 +176,7 @@
  *               include both the default formatting and any extra manual formatting.
  * @param errormsg If the command failed errormsg is filled in with the appropriate error
  *                 message. It must be freed by the caller with g_free().
- * @return A PurpleCmdStatus indicated if the command succeeded or failed.
+ * @return A #PurpleCmdStatus indicated if the command succeeded or failed.
  */
 PurpleCmdStatus purple_cmd_do_command(PurpleConversation *conv, const gchar *cmdline,
                                   const gchar *markup, gchar **errormsg);
@@ -161,13 +184,15 @@
 /**
  * List registered commands.
  *
- * Returns a GList (which must be freed by the caller) of all commands
- * that are valid in the context of conv, or all commands, if conv is
- * @c NULL. Don't keep this list around past the main loop, or anything else
- * that might unregister a command, as the char*'s used get freed then.
+ * Returns a <tt>GList</tt> (which must be freed by the caller) of all commands
+ * that are valid in the context of @a conv, or all commands, if @a conv is @c
+ * NULL.  Don't keep this list around past the main loop, or anything else that
+ * might unregister a command, as the <tt>const char *</tt>'s used get freed
+ * then.
  *
  * @param conv The conversation, or @c NULL.
- * @return A GList of const char*, which must be freed with g_list_free().
+ * @return A @c GList of <tt>const char *</tt>, which must be freed with
+ *         <tt>g_list_free()</tt>.
  */
 GList *purple_cmd_list(PurpleConversation *conv);
 
@@ -180,7 +205,7 @@
  * @param conv The conversation, or @c NULL for no context.
  * @param cmd The command. No wildcards accepted, but returns help for all
  *            commands if @c NULL.
- * @return A GList of const char*s, which is the help string
+ * @return A <tt>GList</tt> of <tt>const char *</tt>s, which is the help string
  *         for that command.
  */
 GList *purple_cmd_help(PurpleConversation *conv, const gchar *cmd);
--- a/libpurple/connection.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/connection.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file connection.h Connection API
  * @ingroup core
+ * @see @ref connection-signals
  */
 
 /* purple
@@ -22,8 +23,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- * @see @ref connection-signals
  */
 #ifndef _PURPLE_CONNECTION_H_
 #define _PURPLE_CONNECTION_H_
--- a/libpurple/conversation.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/conversation.c	Tue Oct 23 17:27:12 2007 +0000
@@ -2348,7 +2348,7 @@
 
 	purple_signal_register(handle, "chat-invited",
 						 purple_marshal_INT__POINTER_POINTER_POINTER_POINTER_POINTER,
-						 NULL, 5,
+						 purple_value_new(PURPLE_TYPE_INT), 5,
 						 purple_value_new(PURPLE_TYPE_SUBTYPE,
 										PURPLE_SUBTYPE_ACCOUNT),
 						 purple_value_new(PURPLE_TYPE_STRING),
--- a/libpurple/conversation.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/conversation.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file conversation.h Conversation API
  * @ingroup core
+ * @see @ref conversation-signals
  */
 
 /* purple
@@ -22,8 +23,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- * @see @ref conversation-signals
  */
 #ifndef _PURPLE_CONVERSATION_H_
 #define _PURPLE_CONVERSATION_H_
@@ -286,6 +285,8 @@
 
 /**
  * Description of a conversation message
+ *
+ * @since 2.2.0
  */
 struct _PurpleConvMessage
 {
@@ -671,6 +672,8 @@
  * @return  A GList of PurpleConvMessage's. The must not modify the list or the data within.
  *          The list contains the newest message at the beginning, and the oldest message at
  *          the end.
+ *
+ * @since 2.2.0
  */
 GList *purple_conversation_get_message_history(PurpleConversation *conv);
 
@@ -678,6 +681,8 @@
  * Clear the message history of a conversation.
  *
  * @param conv  The conversation
+ *
+ * @since 2.2.0
  */
 void purple_conversation_clear_message_history(PurpleConversation *conv);
 
@@ -687,6 +692,8 @@
  * @param msg   A PurpleConvMessage
  *
  * @return   The name of the sender of the message
+ *
+ * @since 2.2.0
  */
 const char *purple_conversation_message_get_sender(PurpleConvMessage *msg);
 
@@ -696,6 +703,8 @@
  * @param msg   A PurpleConvMessage
  *
  * @return   The name of the sender of the message
+ *
+ * @since 2.2.0
  */
 const char *purple_conversation_message_get_message(PurpleConvMessage *msg);
 
@@ -705,6 +714,8 @@
  * @param msg   A PurpleConvMessage
  *
  * @return   The name of the sender of the message
+ *
+ * @since 2.2.0
  */
 PurpleMessageFlags purple_conversation_message_get_flags(PurpleConvMessage *msg);
 
@@ -714,6 +725,8 @@
  * @param msg   A PurpleConvMessage
  *
  * @return   The name of the sender of the message
+ *
+ * @since 2.2.0
  */
 time_t purple_conversation_message_get_timestamp(PurpleConvMessage *msg);
 
@@ -1029,7 +1042,7 @@
  *
  * @param chat The chat.
  *
- * @return The list of ignored users.
+ * @constreturn The list of ignored users.
  */
 GList *purple_conv_chat_get_ignored(const PurpleConvChat *chat);
 
@@ -1319,6 +1332,8 @@
  * @return  A list of PurpleMenuAction items, harvested by the
  *          chat-extended-menu signal. The list and the menuaction
  *          items should be freed by the caller.
+ *
+ * @since 2.1.0
  */
 GList * purple_conversation_get_extended_menu(PurpleConversation *conv);
 
@@ -1332,6 +1347,8 @@
  *                message, if not @c NULL. It must be freed by the caller with g_free().
  *
  * @return  @c TRUE if the command was executed successfully, @c FALSE otherwise.
+ *
+ * @since 2.1.0
  */
 gboolean purple_conversation_do_command(PurpleConversation *conv, const gchar *cmdline, const gchar *markup, gchar **error);
 
--- a/libpurple/core.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/core.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,5 +1,6 @@
 /**
  * @defgroup core libpurple
+ * @see @ref core-signals
  */
 
 /* purple
@@ -21,8 +22,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- * @see @ref core-signals
  */
 #ifndef _PURPLE_CORE_H_
 #define _PURPLE_CORE_H_
--- a/libpurple/dbus-server.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/dbus-server.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file dbus-server.h Purple DBUS Server
  * @ingroup core
+ * @see @ref dbus-server-signals
  */
 
 /* purple
@@ -22,8 +23,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- * @see @ref dbus-server-signals
  */
 
 #ifndef _PURPLE_DBUS_SERVER_H_
--- a/libpurple/dnsquery.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/dnsquery.h	Tue Oct 23 17:27:12 2007 +0000
@@ -59,7 +59,7 @@
 	                         PurpleDnsQueryFailedCallback failed_cb);
 
 	/** Called just before @a query_data is freed; this should cancel any
-	 *  further use of @q query_data the UI would make. Unneeded if
+	 *  further use of @a query_data the UI would make. Unneeded if
 	 *  #resolve_host is not implemented.
 	 */
 	void (*destroy)(PurpleDnsQueryData *query_data);
--- a/libpurple/eventloop.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/eventloop.h	Tue Oct 23 17:27:12 2007 +0000
@@ -138,6 +138,8 @@
  * @param data		data to pass to @a function.
  * @return A handle to the timer which can be passed to 
  *         purple_timeout_remove to remove the timer.
+ *
+ * @since 2.1.0
  */
 guint purple_timeout_add_seconds(guint interval, GSourceFunc function, gpointer data);
 
--- a/libpurple/ft.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/ft.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file ft.h File Transfer API
  * @ingroup core
+ * @see @ref xfer-signals
  */
 
 /* purple
@@ -22,8 +23,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- * @see @ref xfer-signals
  */
 #ifndef _PURPLE_FT_H_
 #define _PURPLE_FT_H_
@@ -243,6 +242,8 @@
  * @param xfer The file transfer.
  *
  * @return The name of the remote user.
+ *
+ * @since 2.1.0
  */
 const char *purple_xfer_get_remote_user(const PurpleXfer *xfer);
 
--- a/libpurple/gaim-compat.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/gaim-compat.h	Tue Oct 23 17:27:12 2007 +0000
@@ -22,8 +22,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- * @see @ref account-signals
  */
 #ifndef _GAIM_COMPAT_H_
 #define _GAIM_COMPAT_H_
--- a/libpurple/imgstore.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/imgstore.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file imgstore.h IM Image Store API
  * @ingroup core
+ * @see @ref imgstore-signals
  */
 
 /* purple
@@ -22,8 +23,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- * @see @ref imgstore-signals
  */
 #ifndef _PURPLE_IMGSTORE_H_
 #define _PURPLE_IMGSTORE_H_
--- a/libpurple/internal.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/internal.h	Tue Oct 23 17:27:12 2007 +0000
@@ -80,6 +80,7 @@
 #ifndef _WIN32
 #include <sys/time.h>
 #include <sys/wait.h>
+#include <sys/time.h>
 #endif
 #include <ctype.h>
 #include <errno.h>
--- a/libpurple/log.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/log.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file log.h Logging API
  * @ingroup core
+ * @see @ref log-signals
  */
 
 /* purple
@@ -22,8 +23,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- * @see @ref log-signals
  */
 #ifndef _PURPLE_LOG_H_
 #define _PURPLE_LOG_H_
--- a/libpurple/notify.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/notify.c	Tue Oct 23 17:27:12 2007 +0000
@@ -688,8 +688,11 @@
 void
 purple_notify_user_info_remove_last_item(PurpleNotifyUserInfo *user_info)
 {
-	user_info->user_info_entries = g_list_remove(user_info->user_info_entries,
-												 g_list_last(user_info->user_info_entries)->data);
+	GList *last = g_list_last(user_info->user_info_entries);
+	if (last) {
+		purple_notify_user_info_entry_destroy(last->data);
+		user_info->user_info_entries = g_list_delete_link(user_info->user_info_entries, last);
+	}
 }
 
 void *
--- a/libpurple/notify.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/notify.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file notify.h Notification API
  * @ingroup core
+ * @see @ref notify-signals
  */
 
 /* purple
@@ -22,8 +23,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- * @see @ref notify-signals
  */
 #ifndef _PURPLE_NOTIFY_H_
 #define _PURPLE_NOTIFY_H_
@@ -293,7 +292,17 @@
 
 /**
  * Returns a number of the rows in the search results object.
- * 
+ *
+ * @deprecated This function will be removed in Pidgin 3.0.0 unless
+ *             there is sufficient demand to keep it.  Using this
+ *             function encourages looping through the results
+ *             inefficiently.  Instead of using this function you
+ *             should iterate through the results using a loop
+ *             similar to this:
+ *                for (l = results->rows; l != NULL; l = l->next)
+ *             If you really need to get the number of rows you
+ *             can use g_list_length(results->rows).
+ *
  * @param results The search results object.
  *
  * @return Number of the result rows.
@@ -303,6 +312,16 @@
 /**
  * Returns a number of the columns in the search results object.
  *
+ * @deprecated This function will be removed in Pidgin 3.0.0 unless
+ *             there is sufficient demand to keep it.  Using this
+ *             function encourages looping through the columns
+ *             inefficiently.  Instead of using this function you
+ *             should iterate through the columns using a loop
+ *             similar to this:
+ *                for (l = results->columns; l != NULL; l = l->next)
+ *             If you really need to get the number of columns you
+ *             can use g_list_length(results->columns).
+ *
  * @param results The search results object.
  *
  * @return Number of the columns.
@@ -312,6 +331,16 @@
 /**
  * Returns a row of the results from the search results object.
  *
+ * @deprecated This function will be removed in Pidgin 3.0.0 unless
+ *             there is sufficient demand to keep it.  Using this
+ *             function encourages looping through the results
+ *             inefficiently.  Instead of using this function you
+ *             should iterate through the results using a loop
+ *             similar to this:
+ *                for (l = results->rows; l != NULL; l = l->next)
+ *             If you really need to get the data for a particular
+ *             row you can use g_list_nth_data(results->rows, row_id).
+ *
  * @param results The search results object.
  * @param row_id  Index of the row to be returned.
  *
@@ -322,7 +351,15 @@
 
 /**
  * Returns a title of the search results object's column.
- * 
+ *
+ * @deprecated This function will be removed in Pidgin 3.0.0 unless
+ *             there is sufficient demand to keep it.  Using this
+ *             function encourages looping through the columns
+ *             inefficiently.  Instead of using this function you
+ *             should iterate through the name of a particular
+ *             column you can use
+ *             g_list_nth_data(results->columns, row_id).
+ *
  * @param results   The search results object.
  * @param column_id Index of the column.
  *
@@ -502,7 +539,7 @@
 void purple_notify_user_info_prepend_pair(PurpleNotifyUserInfo *user_info, const char *label, const char *value);
 
 /**
- * Remove a PurpleNotifyUserInfoEntry from a PurpleNotifyUserInfo object
+ * Remove a PurpleNotifyUserInfoEntry from a PurpleNotifyUserInfo object without freeing the entry.
  *
  * @param user_info          The PurpleNotifyUserInfo
  * @param user_info_entry    The PurpleNotifyUserInfoEntry
--- a/libpurple/plugin.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/plugin.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,9 @@
 /**
  * @file plugin.h Plugin API
  * @ingroup core
+ * @see @ref plugin-signals
+ * @see @ref plugin-ids
+ * @see @ref plugin-i18n
  */
 
 /* purple
@@ -22,10 +25,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- * @see @ref plugin-signals
- * @see @ref plugin-ids
- * @see @ref plugin-i18n
  */
 #ifndef _PURPLE_PLUGIN_H_
 #define _PURPLE_PLUGIN_H_
@@ -613,7 +612,7 @@
 /**
  * Returns a list of all loaded plugins.
  *
- * @return A list of all loaded plugins.
+ * @constreturn A list of all loaded plugins.
  */
 GList *purple_plugins_get_loaded(void);
 
@@ -623,14 +622,14 @@
  * to the PURPLE_INIT_PLUGIN() macro, or if it was compiled
  * against an incompatable API version.
  *
- * @return A list of all protocol plugins.
+ * @constreturn A list of all protocol plugins.
  */
 GList *purple_plugins_get_protocols(void);
 
 /**
  * Returns a list of all plugins, whether loaded or not.
  *
- * @return A list of all plugins.
+ * @constreturn A list of all plugins.
  */
 GList *purple_plugins_get_all(void);
 
--- a/libpurple/pluginpref.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/pluginpref.h	Tue Oct 23 17:27:12 2007 +0000
@@ -35,16 +35,16 @@
  */
 typedef enum
 {
-	PURPLE_STRING_FORMAT_TYPE_NONE      = 0,
-	PURPLE_STRING_FORMAT_TYPE_MULTILINE = 1 << 0,
-	PURPLE_STRING_FORMAT_TYPE_HTML      = 1 << 1
+	PURPLE_STRING_FORMAT_TYPE_NONE      = 0,          /**< The string is plain text. */
+	PURPLE_STRING_FORMAT_TYPE_MULTILINE = 1 << 0,     /**< The string can have newlines. */
+	PURPLE_STRING_FORMAT_TYPE_HTML      = 1 << 1      /**< The string can be in HTML. */
 } PurpleStringFormatType;
 
 typedef enum {
 	PURPLE_PLUGIN_PREF_NONE,
 	PURPLE_PLUGIN_PREF_CHOICE,
-	PURPLE_PLUGIN_PREF_INFO,   /**< no-value label */
-	PURPLE_PLUGIN_PREF_STRING_FORMAT
+	PURPLE_PLUGIN_PREF_INFO,              /**< no-value label */
+	PURPLE_PLUGIN_PREF_STRING_FORMAT      /**< The preference has a string value. */
 } PurplePluginPrefType;
 
 #include <glib.h>
@@ -85,7 +85,7 @@
  * Get the plugin preferences from a plugin preference frame
  *
  * @param frame The plugin frame to get the plugin preferences from
- * @return a GList of plugin preferences
+ * @constreturn a GList of plugin preferences
  */
 GList *purple_plugin_pref_frame_get_prefs(PurplePluginPrefFrame *frame);
 
@@ -207,7 +207,7 @@
  * Get the choices for a choices plugin pref
  *
  * @param pref The plugin pref
- * @return GList of the choices 
+ * @constreturn GList of the choices
  */
 GList *purple_plugin_pref_get_choices(PurplePluginPref *pref);
 
--- a/libpurple/plugins/log_reader.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/plugins/log_reader.c	Tue Oct 23 17:27:12 2007 +0000
@@ -28,6 +28,19 @@
 	NAME_GUESS_THEM
 };
 
+/* Some common functions. */
+static int get_month(const char *month)
+{
+	int iter;
+	const char *months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
+		"Jul", "Aug", "Sep", "Oct", "Nov", "Dec", NULL};
+	for (iter = 0; months[iter]; iter++) {
+		if (strcmp(month, months[iter]) == 0)
+			break;
+	}
+	return iter;
+}
+
 
 /*****************************************************************************
  * Adium Logger                                                              *
@@ -1348,36 +1361,7 @@
 						 * daylight savings time.
 						 */
 						tm.tm_isdst = -1;
-
-						/* Ugly hack, in case current locale
-						 * is not English. This code is taken
-						 * from log.c.
-						 */
-						if (strcmp(month, "Jan") == 0) {
-							tm.tm_mon= 0;
-						} else if (strcmp(month, "Feb") == 0) {
-							tm.tm_mon = 1;
-						} else if (strcmp(month, "Mar") == 0) {
-							tm.tm_mon = 2;
-						} else if (strcmp(month, "Apr") == 0) {
-							tm.tm_mon = 3;
-						} else if (strcmp(month, "May") == 0) {
-							tm.tm_mon = 4;
-						} else if (strcmp(month, "Jun") == 0) {
-							tm.tm_mon = 5;
-						} else if (strcmp(month, "Jul") == 0) {
-							tm.tm_mon = 6;
-						} else if (strcmp(month, "Aug") == 0) {
-							tm.tm_mon = 7;
-						} else if (strcmp(month, "Sep") == 0) {
-							tm.tm_mon = 8;
-						} else if (strcmp(month, "Oct") == 0) {
-							tm.tm_mon = 9;
-						} else if (strcmp(month, "Nov") == 0) {
-							tm.tm_mon = 10;
-						} else if (strcmp(month, "Dec") == 0) {
-							tm.tm_mon = 11;
-						}
+						tm.tm_mon = get_month(month);
 
 						data = g_new0(
 							struct trillian_logger_data, 1);
@@ -2111,168 +2095,54 @@
 #define AMSN_LOG_CONV_END "|\"LRED[You have closed the window on "
 #define AMSN_LOG_CONV_EXTRA "01 Aug 2001 00:00:00]"
 
-/* `log_dir`/username@hotmail.com/logs/buddyname@hotmail.com.log */
-/* `log_dir`/username@hotmail.com/logs/Month Year/buddyname@hotmail.com.log */
-static GList *amsn_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
+static GList *amsn_logger_parse_file(char *filename, const char *sn, PurpleAccount *account)
 {
 	GList *list = NULL;
-	struct amsn_logger_data *data;
-	const char *logdir;
-	char *username;
-	char *log_path;
-	char *buddy_log;
-	char *filename;
-	GDir *dir;
-	const char *name;
 	GError *error;
 	char *contents;
+	struct amsn_logger_data *data;
 	PurpleLog *log;
-	GList *files = NULL;
-	GList *f;
-
-	logdir = purple_prefs_get_string("/plugins/core/log_reader/amsn/log_directory");
-
-	/* By clearing the log directory path, this logger can be (effectively) disabled. */
-	if (!logdir || !*logdir)
-		return NULL;
-
-	/* aMSN only works with MSN/WLM */
-	if (strcmp(account->protocol_id, "prpl-msn"))
-		return NULL;
-
-	username = g_strdup(purple_normalize(account, account->username));
-	buddy_log = g_strdup_printf("%s.log", purple_normalize(account, sn));
-	log_path = g_build_filename(logdir, username, "logs", NULL);
-
-	/* First check in the top-level */
-	filename = g_build_filename(log_path, buddy_log, NULL);
-	if (g_file_test(filename, G_FILE_TEST_EXISTS))
-		files = g_list_prepend(files, filename);
-	else
-		g_free(filename);
-
-	/* Check in previous months */
-	dir = g_dir_open(log_path, 0, NULL);
-	if (dir) {
-		while ((name = g_dir_read_name(dir)) != NULL) {
-			filename = g_build_filename(log_path, name, buddy_log, NULL);
-			if (g_file_test(filename, G_FILE_TEST_EXISTS))
-				files = g_list_prepend(files, filename);
-			else
-				g_free(filename);
-		}
-		g_dir_close(dir);
-	}
-
-	g_free(log_path);
-
-	/* New versions use 'friendlier' directory names */
-	purple_util_chrreplace(username, '@', '_');
-	purple_util_chrreplace(username, '.', '_');
-
-	log_path = g_build_filename(logdir, username, "logs", NULL);
-
-	/* First check in the top-level */
-	filename = g_build_filename(log_path, buddy_log, NULL);
-	if (g_file_test(filename, G_FILE_TEST_EXISTS))
-		files = g_list_prepend(files, filename);
-	else
-		g_free(filename);
-
-	/* Check in previous months */
-	dir = g_dir_open(log_path, 0, NULL);
-	if (dir) {
-		while ((name = g_dir_read_name(dir)) != NULL) {
-			filename = g_build_filename(log_path, name, buddy_log, NULL);
-			if (g_file_test(filename, G_FILE_TEST_EXISTS))
-				files = g_list_prepend(files, filename);
-			else
-				g_free(filename);
-		}
-		g_dir_close(dir);
-	}
-
-	g_free(log_path);
-	g_free(username);
-	g_free(buddy_log);
-
-	/* Loop through files looking for logs */
-	for(f = g_list_first(files); f; f = g_list_next(f)) {
-		filename = f->data;
-		purple_debug_info("aMSN logger", "Reading %s\n", filename);
-		error = NULL;
-		if (!g_file_get_contents(filename, &contents, NULL, &error)) {
-			purple_debug_error("aMSN logger",
-			                   "Couldn't read file %s: %s \n", filename,
-			                   (error && error->message) ?
-			                    error->message : "Unknown error");
-			if (error)
-				g_error_free(error);
-		} else {
-			char *c = contents;
-			gboolean found_start = FALSE;
-			char *start_log = c;
-			int offset = 0;
-			struct tm tm;
-			while (c && *c) {
-				if (purple_str_has_prefix(c, AMSN_LOG_CONV_START)) {
-					char month[4];
-					if (sscanf(c + strlen(AMSN_LOG_CONV_START),
-					           "%u %3s %u %u:%u:%u",
-					           &tm.tm_mday, (char*)&month, &tm.tm_year,
-					           &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) {
-						found_start = FALSE;
-						purple_debug_error("aMSN logger",
-						                   "Error parsing start date for %s\n",
-						                   filename);
-					} else {
-						const char *months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
-								"Jul", "Aug", "Sep", "Oct", "Nov", "Dec", NULL};
-						tm.tm_year -= 1900;
-
-						/* Let the C library deal with
-						 * daylight savings time.
-						 */
-						tm.tm_isdst = -1;
-
-						/* Ugly hack, in case current locale
-						 * is not English. This code is taken
-						 * from log.c.
-						 */
-						for (tm.tm_mon = 0; months[tm.tm_mon]; tm.tm_mon++) {
-							if (strcmp(month, months[tm.tm_mon]) == 0)
-								break;
-						}
-						found_start = TRUE;
-						offset = c - contents;
-						start_log = c;
-					}
-				} else if (purple_str_has_prefix(c, AMSN_LOG_CONV_END) && found_start) {
-					data = g_new0(struct amsn_logger_data, 1);
-					data->path = g_strdup(filename);
-					data->offset = offset;
-					data->length = c - start_log
-					             + strlen(AMSN_LOG_CONV_END)
-					             + strlen(AMSN_LOG_CONV_EXTRA);
-					log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, mktime(&tm), NULL);
-					log->logger = amsn_logger;
-					log->logger_data = data;
-					list = g_list_prepend(list, log);
+
+	purple_debug_info("aMSN logger", "Reading %s\n", filename);
+	error = NULL;
+	if (!g_file_get_contents(filename, &contents, NULL, &error)) {
+		purple_debug_error("aMSN logger",
+		                   "Couldn't read file %s: %s \n", filename,
+		                   (error && error->message) ?
+		                    error->message : "Unknown error");
+		if (error)
+			g_error_free(error);
+	} else {
+		char *c = contents;
+		gboolean found_start = FALSE;
+		char *start_log = c;
+		int offset = 0;
+		struct tm tm;
+		while (c && *c) {
+			if (purple_str_has_prefix(c, AMSN_LOG_CONV_START)) {
+				char month[4];
+				if (sscanf(c + strlen(AMSN_LOG_CONV_START),
+				           "%u %3s %u %u:%u:%u",
+				           &tm.tm_mday, (char*)&month, &tm.tm_year,
+				           &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) {
 					found_start = FALSE;
-
-					purple_debug_info("aMSN logger",
-					                  "Found log for %s:"
-					                  " path = (%s),"
-					                  " offset = (%d),"
-					                  " length = (%d)\n",
-					                  sn, data->path, data->offset, data->length);
+					purple_debug_error("aMSN logger",
+					                   "Error parsing start date for %s\n",
+					                   filename);
+				} else {
+					tm.tm_year -= 1900;
+
+					/* Let the C library deal with
+					 * daylight savings time.
+					 */
+					tm.tm_isdst = -1;
+					tm.tm_mon = get_month(month);
+
+					found_start = TRUE;
+					offset = c - contents;
+					start_log = c;
 				}
-				c = strstr(c, "\n");
-				c++;
-			}
-
-			/* I've seen the file end without the AMSN_LOG_CONV_END bit */
-			if (found_start) {
+			} else if (purple_str_has_prefix(c, AMSN_LOG_CONV_END) && found_start) {
 				data = g_new0(struct amsn_logger_data, 1);
 				data->path = g_strdup(filename);
 				data->offset = offset;
@@ -2292,12 +2162,112 @@
 				                  " length = (%d)\n",
 				                  sn, data->path, data->offset, data->length);
 			}
-			g_free(contents);
+			c = strstr(c, "\n");
+			c++;
+		}
+
+		/* I've seen the file end without the AMSN_LOG_CONV_END bit */
+		if (found_start) {
+			data = g_new0(struct amsn_logger_data, 1);
+			data->path = g_strdup(filename);
+			data->offset = offset;
+			data->length = c - start_log
+				             + strlen(AMSN_LOG_CONV_END)
+				             + strlen(AMSN_LOG_CONV_EXTRA);
+			log = purple_log_new(PURPLE_LOG_IM, sn, account, NULL, mktime(&tm), NULL);
+			log->logger = amsn_logger;
+			log->logger_data = data;
+			list = g_list_prepend(list, log);
+			found_start = FALSE;
+
+			purple_debug_info("aMSN logger",
+			                  "Found log for %s:"
+			                  " path = (%s),"
+			                  " offset = (%d),"
+			                  " length = (%d)\n",
+			                  sn, data->path, data->offset, data->length);
 		}
+		g_free(contents);
+	}
+
+	return list;
+}
+
+/* `log_dir`/username@hotmail.com/logs/buddyname@hotmail.com.log */
+/* `log_dir`/username@hotmail.com/logs/Month Year/buddyname@hotmail.com.log */
+static GList *amsn_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
+{
+	GList *list = NULL;
+	const char *logdir;
+	char *username;
+	char *log_path;
+	char *buddy_log;
+	char *filename;
+	GDir *dir;
+	const char *name;
+
+	logdir = purple_prefs_get_string("/plugins/core/log_reader/amsn/log_directory");
+
+	/* By clearing the log directory path, this logger can be (effectively) disabled. */
+	if (!logdir || !*logdir)
+		return NULL;
+
+	/* aMSN only works with MSN/WLM */
+	if (strcmp(account->protocol_id, "prpl-msn"))
+		return NULL;
+
+	username = g_strdup(purple_normalize(account, account->username));
+	buddy_log = g_strdup_printf("%s.log", purple_normalize(account, sn));
+	log_path = g_build_filename(logdir, username, "logs", NULL);
+
+	/* First check in the top-level */
+	filename = g_build_filename(log_path, buddy_log, NULL);
+	if (g_file_test(filename, G_FILE_TEST_EXISTS))
+		list = amsn_logger_parse_file(filename, sn, account);
+	else
 		g_free(filename);
+
+	/* Check in previous months */
+	dir = g_dir_open(log_path, 0, NULL);
+	if (dir) {
+		while ((name = g_dir_read_name(dir)) != NULL) {
+			filename = g_build_filename(log_path, name, buddy_log, NULL);
+			if (g_file_test(filename, G_FILE_TEST_EXISTS))
+				list = g_list_concat(list, amsn_logger_parse_file(filename, sn, account));
+			g_free(filename);
+		}
+		g_dir_close(dir);
 	}
 
-	g_list_free(files);
+	g_free(log_path);
+
+	/* New versions use 'friendlier' directory names */
+	purple_util_chrreplace(username, '@', '_');
+	purple_util_chrreplace(username, '.', '_');
+
+	log_path = g_build_filename(logdir, username, "logs", NULL);
+
+	/* First check in the top-level */
+	filename = g_build_filename(log_path, buddy_log, NULL);
+	if (g_file_test(filename, G_FILE_TEST_EXISTS))
+		list = g_list_concat(list, amsn_logger_parse_file(filename, sn, account));
+	g_free(filename);
+
+	/* Check in previous months */
+	dir = g_dir_open(log_path, 0, NULL);
+	if (dir) {
+		while ((name = g_dir_read_name(dir)) != NULL) {
+			filename = g_build_filename(log_path, name, buddy_log, NULL);
+			if (g_file_test(filename, G_FILE_TEST_EXISTS))
+				list = g_list_concat(list, amsn_logger_parse_file(filename, sn, account));
+			g_free(filename);
+		}
+		g_dir_close(dir);
+	}
+
+	g_free(log_path);
+	g_free(username);
+	g_free(buddy_log);
 
 	return list;
 }
--- a/libpurple/plugins/tcl/tcl.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/plugins/tcl/tcl.c	Tue Oct 23 17:27:12 2007 +0000
@@ -60,6 +60,7 @@
 PurpleStringref *PurpleTclRefStatusAttr;
 PurpleStringref *PurpleTclRefStatusType;
 PurpleStringref *PurpleTclRefXfer;
+PurpleStringref *PurpleTclRefHandle;
 
 static GHashTable *tcl_plugins = NULL;
 
@@ -363,6 +364,7 @@
 	PurpleTclRefStatusAttr = purple_stringref_new("StatusAttr");
 	PurpleTclRefStatusType = purple_stringref_new("StatusType");
 	PurpleTclRefXfer = purple_stringref_new("Xfer");
+	PurpleTclRefHandle = purple_stringref_new("Handle");
 
 	tcl_plugins = g_hash_table_new(g_direct_hash, g_direct_equal);
 
--- a/libpurple/plugins/tcl/tcl_cmds.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/plugins/tcl/tcl_cmds.c	Tue Oct 23 17:27:12 2007 +0000
@@ -55,7 +55,7 @@
 			return account;
 	}
 	if (interp != NULL)
-		Tcl_SetStringObj(Tcl_GetObjResult(interp), "invalid account", -1);
+		Tcl_SetObjResult(interp, Tcl_NewStringObj("invalid account", -1));
 	return NULL;
 }
 
@@ -74,7 +74,7 @@
 			return convo;
 	}
 	if (interp != NULL)
-		Tcl_SetStringObj(Tcl_GetObjResult(interp), "invalid conversation", -1);
+		Tcl_SetObjResult(interp, Tcl_NewStringObj("invalid conversation", -1));
 	return NULL;
 }
 
@@ -97,7 +97,7 @@
 
 int tcl_cmd_account(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
 {
-	Tcl_Obj *result = Tcl_GetObjResult(interp), *list, *elem;
+	Tcl_Obj *result, *list, *elem;
 	const char *cmds[] = { "alias", "connect", "connection", "disconnect",
 	                       "enabled", "find", "handle", "isconnected",
 	                       "list", "presence", "protocol", "status",
@@ -139,7 +139,7 @@
 		if ((account = tcl_validate_account(objv[2], interp)) == NULL)
 			return TCL_ERROR;
 		alias = purple_account_get_alias(account);
-		Tcl_SetStringObj(result, alias ? (char *)alias : "", -1);
+		Tcl_SetObjResult(interp, Tcl_NewStringObj(alias ? (char *)alias : "", -1));
 		break;
 	case CMD_ACCOUNT_CONNECT:
 		if (objc != 3) {
@@ -164,7 +164,7 @@
 			return TCL_ERROR;
 		Tcl_SetObjResult(interp,
 		                 purple_tcl_ref_new(PurpleTclRefConnection,
-		                                  purple_account_get_connection(account)));
+						    purple_account_get_connection(account)));
 		break;
 	case CMD_ACCOUNT_DISCONNECT:
 		if (objc != 3) {
@@ -183,9 +183,10 @@
 		if ((account = tcl_validate_account(objv[2], interp)) == NULL)
 			return TCL_ERROR;
 		if (objc == 3) {
-			Tcl_SetBooleanObj(result,
-					  purple_account_get_enabled(account,
-								   purple_core_get_ui()));
+			Tcl_SetObjResult(interp, 
+					 Tcl_NewBooleanObj(
+						 purple_account_get_enabled(account,
+									    purple_core_get_ui())));
 		} else {
 			if ((error = Tcl_GetBooleanFromObj(interp, objv[3], &b)) != TCL_OK)
 				return TCL_ERROR;
@@ -207,7 +208,9 @@
 			Tcl_WrongNumArgs(interp, 2, objv, "");
 			return TCL_ERROR;
 		}
-		Tcl_SetIntObj(result, (int)purple_accounts_get_handle());
+		Tcl_SetObjResult(interp, 
+				 purple_tcl_ref_new(PurpleTclRefHandle,
+						    purple_accounts_get_handle()));
 		break;
 	case CMD_ACCOUNT_ISCONNECTED:
 		if (objc != 3) {
@@ -216,7 +219,9 @@
 		}
 		if ((account = tcl_validate_account(objv[2], interp)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetBooleanObj(result, purple_account_is_connected(account));
+		Tcl_SetObjResult(interp,
+				 Tcl_NewBooleanObj(
+					 purple_account_is_connected(account)));
 		break;
 	case CMD_ACCOUNT_LIST:
 		listopt = CMD_ACCOUNTLIST_ALL;
@@ -255,7 +260,7 @@
 		}
 		if ((account = tcl_validate_account(objv[2], interp)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetStringObj(result, (char *)purple_account_get_protocol_id(account), -1);
+		Tcl_SetObjResult(interp, Tcl_NewStringObj((char *)purple_account_get_protocol_id(account), -1));
 		break;
 	case CMD_ACCOUNT_STATUS:
 		if (objc < 3) {
@@ -271,19 +276,19 @@
 		} else {
 			GList *l = NULL;
 			if (objc % 2) {
-				Tcl_SetStringObj(result, "name without value setting status", -1);
+				Tcl_SetObjResult(interp, Tcl_NewStringObj("name without value setting status", -1));
 				return TCL_ERROR;
 			}
 			status = purple_account_get_status(account, Tcl_GetString(objv[3]));
 			if (status == NULL) {
-				Tcl_SetStringObj(result, "invalid status for account", -1);
+				Tcl_SetObjResult(interp, Tcl_NewStringObj("invalid status for account", -1));
 				return TCL_ERROR;
 			}
 			for (i = 4; i < objc; i += 2) {
 				attr_id = Tcl_GetString(objv[i]);
 				value = purple_status_get_attr_value(status, attr_id);
 				if (value == NULL) {
-					Tcl_SetStringObj(result, "invalid attribute for account", -1);
+					Tcl_SetObjResult(interp, Tcl_NewStringObj("invalid attribute for account", -1));
 					return TCL_ERROR;
 				}
 				switch (purple_value_get_type(value)) {
@@ -306,7 +311,7 @@
 					l = g_list_append(l, Tcl_GetString(objv[i + 1]));
 					break;
 				default:
-					Tcl_SetStringObj(result, "unknown PurpleValue type", -1);
+					Tcl_SetObjResult(interp, Tcl_NewStringObj("unknown PurpleValue type", -1));
 					return TCL_ERROR;
 				}
 			}
@@ -327,10 +332,10 @@
 		} else {
 			PurpleStatusPrimitive primitive;
 			if (strcmp(Tcl_GetString(objv[3]), "-primitive")) {
-				Tcl_SetStringObj(result, "bad option \"", -1);
+				result = Tcl_NewStringObj("bad option \"", -1);
 				Tcl_AppendObjToObj(result, objv[3]);
-				Tcl_AppendToObj(result,
-						"\": should be -primitive", -1);
+				Tcl_AppendToObj(result, "\": should be -primitive", -1);
+				Tcl_SetObjResult(interp,result);
 				return TCL_ERROR;
 			}
 			primitive = purple_primitive_get_type_from_id(Tcl_GetString(objv[4]));
@@ -338,7 +343,7 @@
 										  primitive);
 		}
 		if (status_type == NULL) {
-			Tcl_SetStringObj(result, "status type not found", -1);
+			Tcl_SetObjResult(interp, Tcl_NewStringObj("status type not found", -1));
 			return TCL_ERROR;
 		}
 		Tcl_SetObjResult(interp,
@@ -368,7 +373,8 @@
 		}
 		if ((account = tcl_validate_account(objv[2], interp)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetStringObj(result, (char *)purple_account_get_username(account), -1);
+		Tcl_SetObjResult(interp, 
+				 Tcl_NewStringObj((char *)purple_account_get_username(account), -1));
 		break;
 	}
 
@@ -383,7 +389,8 @@
 	char *type;
 
 	if (count < 3) {
-		Tcl_SetStringObj(Tcl_GetObjResult(interp), "list too short", -1);
+		Tcl_SetObjResult(interp,
+                                 Tcl_NewStringObj("list too short", -1));
 		return NULL;
 	}
 
@@ -420,8 +427,6 @@
 	if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
 		return error;
 
-	result = Tcl_GetObjResult(interp);
-
 	switch (cmd) {
 	case CMD_BUDDY_ALIAS:
 		if (objc != 3) {
@@ -433,9 +438,11 @@
 		if ((node = tcl_list_to_buddy(interp, count, elems)) == NULL)
 			return TCL_ERROR;
 		if (node->type == PURPLE_BLIST_CHAT_NODE)
-			Tcl_SetStringObj(result, ((PurpleChat *)node)->alias, -1);
+			Tcl_SetObjResult(interp,
+					 Tcl_NewStringObj(((PurpleChat *)node)->alias, -1));
 		else if (node->type == PURPLE_BLIST_BUDDY_NODE)
-			Tcl_SetStringObj(result, (char *)purple_buddy_get_alias((PurpleBuddy *)node), -1);
+			Tcl_SetObjResult(interp,
+                                         Tcl_NewStringObj((char *)purple_buddy_get_alias((PurpleBuddy *)node), -1));
 		return TCL_OK;
 		break;
 	case CMD_BUDDY_HANDLE:
@@ -443,7 +450,9 @@
 			Tcl_WrongNumArgs(interp, 2, objv, "");
 			return TCL_ERROR;
 		}
-		Tcl_SetIntObj(result, (int)purple_blist_get_handle());
+		Tcl_SetObjResult(interp,
+				 purple_tcl_ref_new(PurpleTclRefHandle,
+						    purple_blist_get_handle()));
 		break;
 	case CMD_BUDDY_INFO:
 		if (objc != 3 && objc != 4) {
@@ -454,11 +463,13 @@
 			if ((error = Tcl_ListObjGetElements(interp, objv[2], &count, &elems)) != TCL_OK)
 				return error;
 			if (count < 3) {
-				Tcl_SetStringObj(result, "buddy too short", -1);
+				Tcl_SetObjResult(interp,
+						 Tcl_NewStringObj("buddy too short", -1));
 				return TCL_ERROR;
 			}
 			if (strcmp("buddy", Tcl_GetString(elems[0]))) {
-				Tcl_SetStringObj(result, "invalid buddy", -1);
+				Tcl_SetObjResult(interp,
+						 Tcl_NewStringObj("invalid buddy", -1));
 				return TCL_ERROR;
 			}
 			if ((account = tcl_validate_account(elems[2], interp)) == NULL)
@@ -475,8 +486,9 @@
 			if (!strcmp("-all", Tcl_GetString(objv[2]))) {
 				all = 1;
 			} else {
-				Tcl_SetStringObj(result, "", -1);
+				result = Tcl_NewStringObj("",-1);
 				Tcl_AppendStringsToObj(result, "unknown option: ", Tcl_GetString(objv[2]), NULL);
+				Tcl_SetObjResult(interp,result);
 				return TCL_ERROR;
 			}
 		}
@@ -547,7 +559,7 @@
 	const char *cmds[] = { "do", "help", "list", "register", "unregister", NULL };
 	enum { CMD_CMD_DO, CMD_CMD_HELP, CMD_CMD_LIST, CMD_CMD_REGISTER, CMD_CMD_UNREGISTER } cmd;
 	struct tcl_cmd_handler *handler;
-	Tcl_Obj *list, *elem, *result = Tcl_GetObjResult(interp);
+	Tcl_Obj *list, *elem;
 	PurpleConversation *convo;
 	PurpleCmdId id;
 	PurpleCmdStatus status;
@@ -575,7 +587,8 @@
 		status = purple_cmd_do_command(convo, Tcl_GetString(objv[3]),
 				escaped, &errstr);
 		g_free(escaped);
-		Tcl_SetStringObj(result, errstr ? (char *)errstr : "", -1);
+		Tcl_SetObjResult(interp,
+				 Tcl_NewStringObj(errstr ? (char *)errstr : "", -1));
 		g_free(errstr);
 		if (status != PURPLE_CMD_STATUS_OK) {
 			return TCL_ERROR;
@@ -640,10 +653,10 @@
 		handler->interp = interp;
 		if ((id = tcl_cmd_register(handler)) == 0) {
 			tcl_cmd_handler_free(handler);
-			Tcl_SetIntObj(result, 0);
+			Tcl_SetObjResult(interp, Tcl_NewIntObj(0));
 		} else {
 			handler->id = id;
-			Tcl_SetIntObj(result, id);
+			Tcl_SetObjResult(interp, Tcl_NewIntObj(id));
 		}
 		break;
 	case CMD_CMD_UNREGISTER:
@@ -663,7 +676,7 @@
 
 int tcl_cmd_connection(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
 {
-	Tcl_Obj *result = Tcl_GetObjResult(interp), *list, *elem;
+	Tcl_Obj *list, *elem;
 	const char *cmds[] = { "account", "displayname", "handle", "list", NULL };
 	enum { CMD_CONN_ACCOUNT, CMD_CONN_DISPLAYNAME, CMD_CONN_HANDLE, CMD_CONN_LIST } cmd;
 	int error;
@@ -697,14 +710,16 @@
 		}
 		if ((gc = tcl_validate_gc(objv[2], interp)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetStringObj(result, (char *)purple_connection_get_display_name(gc), -1);
+		Tcl_SetObjResult(interp,
+                                 Tcl_NewStringObj(purple_connection_get_display_name(gc), -1));
 		break;
 	case CMD_CONN_HANDLE:
 		if (objc != 2) {
 			Tcl_WrongNumArgs(interp, 2, objv, "");
 			return TCL_ERROR;
 		}
-		Tcl_SetIntObj(result, (int)purple_connections_get_handle());
+		Tcl_SetObjResult(interp, purple_tcl_ref_new(PurpleTclRefHandle,
+							    purple_connections_get_handle()));
 		break;
 	case CMD_CONN_LIST:
 		if (objc != 2) {
@@ -725,7 +740,7 @@
 
 int tcl_cmd_conversation(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
 {
-	Tcl_Obj *list, *elem, *result = Tcl_GetObjResult(interp);
+	Tcl_Obj *list, *elem;
 	const char *cmds[] = { "find", "handle", "list", "new", "write", "name", "title", "send", NULL };
 	enum { CMD_CONV_FIND, CMD_CONV_HANDLE, CMD_CONV_LIST, CMD_CONV_NEW, CMD_CONV_WRITE , CMD_CONV_NAME, CMD_CONV_TITLE, CMD_CONV_SEND } cmd;
 	const char *styles[] = { "send", "recv", "system", NULL };
@@ -766,7 +781,9 @@
 			Tcl_WrongNumArgs(interp, 2, objv, "");
 			return TCL_ERROR;
 		}
-		Tcl_SetIntObj(result, (int)purple_conversations_get_handle());
+		Tcl_SetObjResult(interp,
+		                 purple_tcl_ref_new(PurpleTclRefHandle,
+						    purple_conversations_get_handle()));
 		break;
 	case CMD_CONV_LIST:
 		list = Tcl_NewListObj(0, NULL);
@@ -847,7 +864,8 @@
 
 		if ((convo = tcl_validate_conversation(objv[2], interp)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetStringObj(result, (char *)purple_conversation_get_name(convo), -1);
+		Tcl_SetObjResult(interp,
+				 Tcl_NewStringObj((char *)purple_conversation_get_name(convo), -1));
 		break;
 	case CMD_CONV_TITLE:
 		if (objc != 3) {
@@ -857,7 +875,8 @@
 
 		if ((convo = tcl_validate_conversation(objv[2], interp)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetStringObj(result, (char *)purple_conversation_get_title(convo), -1);
+		Tcl_SetObjResult(interp,
+                                 Tcl_NewStringObj((char *)purple_conversation_get_title(convo), -1));
 		break;
 	case CMD_CONV_SEND:
 		if (objc != 4) {
@@ -879,7 +898,6 @@
 
 int tcl_cmd_core(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
 {
-	Tcl_Obj *result = Tcl_GetObjResult(interp);
 	const char *cmds[] = { "handle", "quit", NULL };
 	enum { CMD_CORE_HANDLE, CMD_CORE_QUIT } cmd;
 	int error;
@@ -898,7 +916,9 @@
 			Tcl_WrongNumArgs(interp, 2, objv, "");
 			return TCL_ERROR;
 		}
-		Tcl_SetIntObj(result, (int)purple_get_core());
+		Tcl_SetObjResult(interp,
+                                 purple_tcl_ref_new(PurpleTclRefHandle,
+						    purple_get_core()));
 		break;
 	case CMD_CORE_QUIT:
 		if (objc != 2) {
@@ -970,7 +990,6 @@
 
 int tcl_cmd_plugins(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
 {
-	Tcl_Obj *result = Tcl_GetObjResult(interp);
 	const char *cmds[] = { "handle", NULL };
 	enum { CMD_PLUGINS_HANDLE } cmd;
 	int error;
@@ -989,7 +1008,9 @@
 			Tcl_WrongNumArgs(interp, 2, objv, "");
 			return TCL_ERROR;
 		}
-		Tcl_SetIntObj(result, (int)purple_plugins_get_handle());
+		Tcl_SetObjResult(interp,
+				purple_tcl_ref_new(PurpleTclRefHandle,
+						   purple_plugins_get_handle()));
 		break;
 	}
 
@@ -998,7 +1019,7 @@
 
 int tcl_cmd_prefs(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
 {
-	Tcl_Obj *result, *list, *elem, **elems;
+	Tcl_Obj *list, *elem, **elems;
 	const char *cmds[] = { "get", "set", "type", NULL };
 	enum { CMD_PREFS_GET, CMD_PREFS_SET, CMD_PREFS_TYPE } cmd;
 	/* char *types[] = { "none", "boolean", "int", "string", "stringlist", NULL }; */
@@ -1015,7 +1036,6 @@
 	if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
 		return error;
 
-	result = Tcl_GetObjResult(interp);
 	switch (cmd) {
 	case CMD_PREFS_GET:
 		if (objc != 3) {
@@ -1025,17 +1045,21 @@
 		preftype = purple_prefs_get_type(Tcl_GetString(objv[2]));
 		switch (preftype) {
 		case PURPLE_PREF_NONE:
-			Tcl_SetStringObj(result, "pref type none", -1);
+			Tcl_SetObjResult(interp,
+					 Tcl_NewStringObj("pref type none", -1));
 			return TCL_ERROR;
 			break;
 		case PURPLE_PREF_BOOLEAN:
-			Tcl_SetBooleanObj(result, purple_prefs_get_bool(Tcl_GetString(objv[2])));
+			Tcl_SetObjResult(interp,
+					 Tcl_NewBooleanObj(
+						 purple_prefs_get_bool(Tcl_GetString(objv[2]))));
 			break;
 		case PURPLE_PREF_INT:
-			Tcl_SetIntObj(result, purple_prefs_get_int(Tcl_GetString(objv[2])));
+			Tcl_SetObjResult(interp, Tcl_NewIntObj(purple_prefs_get_int(Tcl_GetString(objv[2]))));
 			break;
 		case PURPLE_PREF_STRING:
-			Tcl_SetStringObj(result, (char *)purple_prefs_get_string(Tcl_GetString(objv[2])), -1);
+			Tcl_SetObjResult(interp,
+					 Tcl_NewStringObj((char *)purple_prefs_get_string(Tcl_GetString(objv[2])), -1));
 			break;
 		case PURPLE_PREF_STRING_LIST:
 			cur = purple_prefs_get_string_list(Tcl_GetString(objv[2]));
@@ -1049,7 +1073,8 @@
 			break;
 		default:
 			purple_debug(PURPLE_DEBUG_ERROR, "tcl", "tcl does not know about pref type %d\n", preftype);
-			Tcl_SetStringObj(result, "unknown pref type", -1);
+			Tcl_SetObjResult(interp,
+					 Tcl_NewStringObj("unknown pref type", -1));
 			return TCL_ERROR;
 		}
 		break;
@@ -1061,7 +1086,8 @@
 		preftype = purple_prefs_get_type(Tcl_GetString(objv[2]));
 		switch (preftype) {
 		case PURPLE_PREF_NONE:
-			Tcl_SetStringObj(result, "bad path or pref type none", -1);
+			Tcl_SetObjResult(interp,
+					 Tcl_NewStringObj("bad path or pref type none", -1));
 			return TCL_ERROR;
 			break;
 		case PURPLE_PREF_BOOLEAN:
@@ -1100,23 +1126,23 @@
 		preftype = purple_prefs_get_type(Tcl_GetString(objv[2]));
 		switch (preftype) {
 		case PURPLE_PREF_NONE:
-			Tcl_SetStringObj(result, "none", -1);
+			Tcl_SetObjResult(interp, Tcl_NewStringObj("none", -1));
 			break;
 		case PURPLE_PREF_BOOLEAN:
-			Tcl_SetStringObj(result, "boolean", -1);
+			Tcl_SetObjResult(interp, Tcl_NewStringObj("boolean", -1));
 			break;
 		case PURPLE_PREF_INT:
-			Tcl_SetStringObj(result, "int", -1);
+			Tcl_SetObjResult(interp, Tcl_NewStringObj("int", -1));
 			break;
 		case PURPLE_PREF_STRING:
-			Tcl_SetStringObj(result, "string", -1);
+			Tcl_SetObjResult(interp, Tcl_NewStringObj("string", -1));
 			break;
 		case PURPLE_PREF_STRING_LIST:
-			Tcl_SetStringObj(result, "stringlist", -1);
+			Tcl_SetObjResult(interp, Tcl_NewStringObj("stringlist", -1));
 			break;
 		default:
 			purple_debug(PURPLE_DEBUG_ERROR, "tcl", "tcl does not know about pref type %d\n", preftype);
-			Tcl_SetStringObj(result, "unknown", -1);
+			Tcl_SetObjResult(interp, Tcl_NewStringObj("unknown", -1));
 		}
 		break;
 	}
@@ -1134,7 +1160,7 @@
 	       CMD_PRESENCE_CONTEXT, CMD_PRESENCE_CONVERSATION,
 	       CMD_PRESENCE_IDLE, CMD_PRESENCE_LOGIN, CMD_PRESENCE_ONLINE,
 	       CMD_PRESENCE_STATUS, CMD_PRESENCE_STATUSES } cmd;
-	Tcl_Obj *result = Tcl_GetObjResult(interp);
+	Tcl_Obj *result;
 	Tcl_Obj *list, *elem;
 	PurplePresence *presence;
 	GList *cur;
@@ -1171,25 +1197,30 @@
 					 purple_tcl_ref_new(PurpleTclRefStatus,
 							  purple_presence_get_active_status(presence)));
 		} else if (objc == 4) {
-			Tcl_SetBooleanObj(result,
-					  purple_presence_is_status_active(presence,
-									 Tcl_GetString(objv[3])));
+			Tcl_SetObjResult(interp,
+                                         Tcl_NewBooleanObj(
+						 purple_presence_is_status_active(presence,
+										  Tcl_GetString(objv[3]))));
 		} else {
 			PurpleStatusPrimitive primitive;
 			if (strcmp(Tcl_GetString(objv[3]), "-primitive")) {
-				Tcl_SetStringObj(result, "bad option \"", -1);
+				result = Tcl_NewStringObj("bad option \"", -1);
 				Tcl_AppendObjToObj(result, objv[3]);
 				Tcl_AppendToObj(result,
 						"\": should be -primitive", -1);
+				Tcl_SetObjResult(interp,result);
 				return TCL_ERROR;
 			}
 			primitive = purple_primitive_get_type_from_id(Tcl_GetString(objv[4]));
 			if (primitive == PURPLE_STATUS_UNSET) {
-				Tcl_SetStringObj(result, "invalid primitive ", -1);
+				result = Tcl_NewStringObj("invalid primitive ", -1);
 				Tcl_AppendObjToObj(result, objv[4]);
+				Tcl_SetObjResult(interp,result);
 				return TCL_ERROR;
 			}
-			Tcl_SetBooleanObj(result, purple_presence_is_status_primitive_active(presence, primitive));
+			Tcl_SetObjResult(interp,
+                                         Tcl_NewBooleanObj(
+						 purple_presence_is_status_primitive_active(presence, primitive)));
 			break;
 		}
 		break;
@@ -1200,7 +1231,8 @@
 		}
 		if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetBooleanObj(result, purple_presence_is_available(presence));
+		Tcl_SetObjResult(interp,
+				 Tcl_NewBooleanObj(purple_presence_is_available(presence)));
 		break;
 	case CMD_PRESENCE_CHAT_USER:
 		if (objc != 3) {
@@ -1209,7 +1241,8 @@
 		}
 		if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetStringObj(result, purple_presence_get_chat_user(presence), -1);
+		Tcl_SetObjResult(interp,
+				 Tcl_NewStringObj(purple_presence_get_chat_user(presence), -1));
 		break;
 	case CMD_PRESENCE_CONTEXT:
 		if (objc != 3) {
@@ -1220,16 +1253,16 @@
 			return TCL_ERROR;
 		switch (purple_presence_get_context(presence)) {
 		case PURPLE_PRESENCE_CONTEXT_UNSET:
-			Tcl_SetStringObj(result, "unset", -1);
+			Tcl_SetObjResult(interp, Tcl_NewStringObj("unset", -1));
 			break;
 		case PURPLE_PRESENCE_CONTEXT_ACCOUNT:
-			Tcl_SetStringObj(result, "account", -1);
+			Tcl_SetObjResult(interp, Tcl_NewStringObj("account", -1));
 			break;
 		case PURPLE_PRESENCE_CONTEXT_CONV:
-			Tcl_SetStringObj(result, "conversation", -1);
+			Tcl_SetObjResult(interp, Tcl_NewStringObj("conversation", -1));
 			break;
 		case PURPLE_PRESENCE_CONTEXT_BUDDY:
-			Tcl_SetStringObj(result, "buddy", -1);
+			Tcl_SetObjResult(interp, Tcl_NewStringObj("buddy", -1));
 			break;
 		}
 		break;
@@ -1253,7 +1286,7 @@
 		if (objc == 3) {
 			if (purple_presence_is_idle(presence)) {
 				idle_time = purple_presence_get_idle_time (presence);
-				Tcl_SetIntObj(result, idle_time);
+				Tcl_SetObjResult(interp, Tcl_NewIntObj(idle_time));
 			} else {
 				result = Tcl_NewListObj(0, NULL);
 				Tcl_SetObjResult(interp, result);
@@ -1280,7 +1313,7 @@
 		if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
 			return TCL_ERROR;
 		if (objc == 3) {
-			Tcl_SetIntObj(result, purple_presence_get_login_time(presence));
+			Tcl_SetObjResult(interp, Tcl_NewIntObj(purple_presence_get_login_time(presence)));
 		} else {
 			if ((error == Tcl_GetIntFromObj(interp,
 			                                objv[3],
@@ -1296,7 +1329,9 @@
 		}
 		if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetBooleanObj(result, purple_presence_is_online(presence));
+		Tcl_SetObjResult(interp,
+				 Tcl_NewBooleanObj(
+					 purple_presence_is_online(presence)));
 		break;
 	case CMD_PRESENCE_STATUS:
 		if (objc != 4) {
@@ -1332,7 +1367,7 @@
 
 int tcl_cmd_savedstatus(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
 {
-	Tcl_Obj *result = Tcl_GetObjResult(interp);
+	Tcl_Obj *result;
 	const char *cmds[] = { "current", "handle", NULL };
 	enum { CMD_SAVEDSTATUS_CURRENT, CMD_SAVEDSTATUS_HANDLE } cmd;
 	int error;
@@ -1354,16 +1389,20 @@
 		}
 		if ((saved_status = purple_savedstatus_get_current()) == NULL)
 			return TCL_ERROR;
+		result = Tcl_NewListObj(0, NULL);
 		Tcl_ListObjAppendElement(interp, result, Tcl_NewStringObj(purple_savedstatus_get_title(saved_status), -1));
 		Tcl_ListObjAppendElement(interp, result, Tcl_NewIntObj(purple_savedstatus_get_type(saved_status)));
 		Tcl_ListObjAppendElement(interp, result, Tcl_NewStringObj(purple_savedstatus_get_message(saved_status), -1));
+		Tcl_SetObjResult(interp,result);
 		break;
 	case CMD_SAVEDSTATUS_HANDLE:
 		if (objc != 2) {
 			Tcl_WrongNumArgs(interp, 2, objv, "");
 			return TCL_ERROR;
 		}
-		Tcl_SetIntObj(result, (int)purple_savedstatuses_get_handle());
+		Tcl_SetObjResult(interp, 
+				 purple_tcl_ref_new(PurpleTclRefHandle,
+						    purple_savedstatuses_get_handle()));
 		break;
 	}
 
@@ -1396,7 +1435,6 @@
 	const char *cmds[] = { "connect", "disconnect", NULL };
 	enum { CMD_SIGNAL_CONNECT, CMD_SIGNAL_DISCONNECT } cmd;
 	struct tcl_signal_handler *handler;
-	Tcl_Obj *result = Tcl_GetObjResult(interp);
 	void *instance;
 	int error;
 
@@ -1415,7 +1453,7 @@
 			return TCL_ERROR;
 		}
 		handler = g_new0(struct tcl_signal_handler, 1);
-		if ((error = Tcl_GetIntFromObj(interp, objv[2], (int *)&handler->instance)) != TCL_OK) {
+		if ((handler->instance = purple_tcl_ref_get(interp, objv[2],PurpleTclRefHandle)) == NULL) {
 			g_free(handler);
 			return error;
 		}
@@ -1426,9 +1464,9 @@
 		handler->interp = interp;
 		if (!tcl_signal_connect(handler)) {
 			tcl_signal_handler_free(handler);
-			Tcl_SetIntObj(result, 1);
+			Tcl_SetObjResult(interp, Tcl_NewIntObj(1));
 		} else {
-			Tcl_SetIntObj(result, 0);
+			Tcl_SetObjResult(interp, Tcl_NewIntObj(0));
 		}
 		break;
 	case CMD_SIGNAL_DISCONNECT:
@@ -1436,7 +1474,7 @@
 			Tcl_WrongNumArgs(interp, 2, objv, "instance signal");
 			return TCL_ERROR;
 		}
-		if ((error = Tcl_GetIntFromObj(interp, objv[2], (int *)&instance)) != TCL_OK)
+		if ((instance = purple_tcl_ref_get(interp, objv[2],PurpleTclRefHandle)) == NULL)
 			return error;
 		tcl_signal_disconnect(instance, Tcl_GetString(objv[3]), interp);
 		break;
@@ -1449,7 +1487,6 @@
 {
 	const char *cmds[] = { "attr", "type", NULL };
 	enum { CMD_STATUS_ATTR, CMD_STATUS_TYPE } cmd;
-	Tcl_Obj *result = Tcl_GetObjResult(interp);
 	PurpleStatus *status;
 	PurpleStatusType *status_type;
 	PurpleValue *value;
@@ -1475,13 +1512,15 @@
 		attr = Tcl_GetString(objv[3]);
 		value = purple_status_get_attr_value(status, attr);
 		if (value == NULL) {
-			Tcl_SetStringObj(result, "no such attribute", -1);
+			Tcl_SetObjResult(interp,
+					 Tcl_NewStringObj("no such attribute", -1));
 			return TCL_ERROR;
 		}
 		switch (purple_value_get_type(value)) {
 		case PURPLE_TYPE_BOOLEAN:
 			if (objc == 4) {
-				Tcl_SetBooleanObj(result, purple_value_get_boolean(value));
+				Tcl_SetObjResult(interp,
+						 Tcl_NewBooleanObj(purple_value_get_boolean(value)));
 			} else {
 				if ((error = Tcl_GetBooleanFromObj(interp, objv[4], &v)) != TCL_OK)
 					return error;
@@ -1490,7 +1529,7 @@
 			break;
 		case PURPLE_TYPE_INT:
 			if (objc == 4) {
-				Tcl_SetIntObj(result, purple_value_get_int(value));
+				Tcl_SetObjResult(interp, Tcl_NewIntObj(purple_value_get_int(value)));
 			} else {
 				if ((error = Tcl_GetIntFromObj(interp, objv[4], &v)) != TCL_OK)
 					return error;
@@ -1499,12 +1538,14 @@
 			break;
 		case PURPLE_TYPE_STRING:
 			if (objc == 4)
-				Tcl_SetStringObj(result, purple_value_get_string(value), -1);
+				Tcl_SetObjResult(interp,
+						 Tcl_NewStringObj(purple_value_get_string(value), -1));
 			else
 				purple_status_set_attr_string(status, attr, Tcl_GetString(objv[4]));
 			break;
 		default:
-			Tcl_SetStringObj(result, "attribute has unknown type", -1);
+			Tcl_SetObjResult(interp,
+                                         Tcl_NewStringObj("attribute has unknown type", -1));
 			return TCL_ERROR;
 		}
 		break;
@@ -1528,7 +1569,6 @@
 {
 	const char *cmds[] = { "id", "name", NULL };
 	enum { CMD_STATUS_ATTR_ID, CMD_STATUS_ATTR_NAME } cmd;
-	Tcl_Obj *result = Tcl_GetObjResult(interp);
 	PurpleStatusAttr *attr;
 	int error;
 
@@ -1548,7 +1588,8 @@
 		}
 		if ((attr = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusAttr)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetStringObj(result, purple_status_attr_get_id(attr), -1);
+		Tcl_SetObjResult(interp,
+				 Tcl_NewStringObj(purple_status_attr_get_id(attr), -1));
 		break;
 	case CMD_STATUS_ATTR_NAME:
 		if (objc != 3) {
@@ -1557,7 +1598,8 @@
 		}
 		if ((attr = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusAttr)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetStringObj(result, purple_status_attr_get_name(attr), -1);
+		Tcl_SetObjResult(interp,
+				 Tcl_NewStringObj(purple_status_attr_get_name(attr), -1));
 		break;
 	}
 
@@ -1576,7 +1618,6 @@
 	       CMD_STATUS_TYPE_NAME, CMD_STATUS_TYPE_PRIMARY_ATTR,
 	       CMD_STATUS_TYPE_PRIMITIVE, CMD_STATUS_TYPE_SAVEABLE,
 	       CMD_STATUS_TYPE_USER_SETTABLE } cmd;
-	Tcl_Obj *result = Tcl_GetObjResult(interp);
 	PurpleStatusType *status_type;
 	Tcl_Obj *list, *elem;
 	GList *cur;
@@ -1598,7 +1639,8 @@
 		}
 		if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetBooleanObj(result, purple_status_type_is_available(status_type));
+		Tcl_SetObjResult(interp,
+				 Tcl_NewBooleanObj(purple_status_type_is_available(status_type)));
 		break;
 	case CMD_STATUS_TYPE_ATTR:
 		if (objc != 4) {
@@ -1634,7 +1676,8 @@
 		}
 		if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetBooleanObj(result, purple_status_type_is_exclusive(status_type));
+		Tcl_SetObjResult(interp,
+				 Tcl_NewBooleanObj(purple_status_type_is_exclusive(status_type)));
 		break;
 	case CMD_STATUS_TYPE_ID:
 		if (objc != 3) {
@@ -1643,7 +1686,8 @@
 		}
 		if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetStringObj(result, purple_status_type_get_id(status_type), -1);
+		Tcl_SetObjResult(interp,
+				 Tcl_NewStringObj(purple_status_type_get_id(status_type), -1));
 		break;
 	case CMD_STATUS_TYPE_INDEPENDENT:
 		if (objc != 3) {
@@ -1652,7 +1696,8 @@
 		}
 		if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetBooleanObj(result, purple_status_type_is_independent(status_type));
+		Tcl_SetObjResult(interp,
+				 Tcl_NewBooleanObj(purple_status_type_is_independent(status_type)));
 		break;
 	case CMD_STATUS_TYPE_NAME:
 		if (objc != 3) {
@@ -1661,7 +1706,8 @@
 		}
 		if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetStringObj(result, purple_status_type_get_name(status_type), -1);
+		Tcl_SetObjResult(interp,
+				 Tcl_NewStringObj(purple_status_type_get_name(status_type), -1));
 		break;
 	case CMD_STATUS_TYPE_PRIMITIVE:
 		if (objc != 3) {
@@ -1670,7 +1716,9 @@
 		}
 		if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetStringObj(result, purple_primitive_get_id_from_type(purple_status_type_get_primitive(status_type)), -1);
+		Tcl_SetObjResult(interp,
+				 Tcl_NewStringObj(purple_primitive_get_id_from_type
+						  (purple_status_type_get_primitive(status_type)), -1));
 		break;
 	case CMD_STATUS_TYPE_PRIMARY_ATTR:
 		if (objc != 3) {
@@ -1679,7 +1727,8 @@
 		}
 		if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetStringObj(result, purple_status_type_get_primary_attr(status_type), -1);
+		Tcl_SetObjResult(interp,
+				 Tcl_NewStringObj(purple_status_type_get_primary_attr(status_type), -1));
 		break;
 	case CMD_STATUS_TYPE_SAVEABLE:
 		if (objc != 3) {
@@ -1688,7 +1737,9 @@
 		}
 		if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetBooleanObj(result, purple_status_type_is_saveable(status_type));
+		Tcl_SetObjResult(interp,
+				 Tcl_NewBooleanObj(
+					 purple_status_type_is_saveable(status_type)));
 		break;
 	case CMD_STATUS_TYPE_USER_SETTABLE:
 		if (objc != 3) {
@@ -1697,7 +1748,9 @@
 		}
 		if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
 			return TCL_ERROR;
-		Tcl_SetBooleanObj(result, purple_status_type_is_user_settable(status_type));
+		Tcl_SetObjResult(interp,
+				 Tcl_NewBooleanObj(
+					 purple_status_type_is_user_settable(status_type)));
 		break;
 	}
 
--- a/libpurple/plugins/tcl/tcl_purple.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/plugins/tcl/tcl_purple.h	Tue Oct 23 17:27:12 2007 +0000
@@ -76,6 +76,7 @@
 extern PurpleStringref *PurpleTclRefStatusAttr;
 extern PurpleStringref *PurpleTclRefStatusType;
 extern PurpleStringref *PurpleTclRefXfer;
+extern PurpleStringref *PurpleTclRefHandle;
 
 PurplePlugin *tcl_interp_get_plugin(Tcl_Interp *interp);
 
--- a/libpurple/pounce.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/pounce.h	Tue Oct 23 17:27:12 2007 +0000
@@ -339,7 +339,7 @@
 /**
  * Returns a list of all registered buddy pounces.
  *
- * @return The list of buddy pounces.
+ * @constreturn The list of buddy pounces.
  */
 GList *purple_pounces_get_all(void);
 
--- a/libpurple/prefs.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/prefs.h	Tue Oct 23 17:27:12 2007 +0000
@@ -115,6 +115,9 @@
  *
  * @param name  The name of the pref
  * @param value The initial value to set
+ * @note This function takes a copy of the strings in the value list. The list
+ *       itself and original copies of the strings are up to the caller to
+ *       free.
  */
 void purple_prefs_add_string_list(const char *name, GList *value);
 
@@ -131,6 +134,9 @@
  *
  * @param name  The name of the pref
  * @param value The initial value to set
+ * @note This function takes a copy of the strings in the value list. The list
+ *       itself and original copies of the strings are up to the caller to
+ *       free.
  */
 void purple_prefs_add_path_list(const char *name, GList *value);
 
@@ -291,6 +297,8 @@
  * @return A list of newly allocated strings denoting the names of the children.
  *         Returns @c NULL if there are no children or if pref doesn't exist.
  *         The caller must free all the strings and the list.
+ *
+ * @since 2.1.0
  */
 GList *purple_prefs_get_children_names(const char *name);
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/protocols/bonjour/dns_sd_proxy.c	Tue Oct 23 17:27:12 2007 +0000
@@ -0,0 +1,181 @@
+/*
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301, USA.
+ */
+
+#include "win32dep.h"
+#include "dns_sd_proxy.h"
+
+#ifndef LINK_DNS_SD_DIRECTLY
+static DNSServiceErrorType (DNSSD_API* _DNSServiceAddRecord)(DNSServiceRef sdRef, DNSRecordRef *RecordRef, DNSServiceFlags flags,
+		uint16_t rrtype, uint16_t rdlen, const void *rdata, uint32_t ttl);
+static DNSServiceErrorType (DNSSD_API* _DNSServiceBrowse)(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex,
+	const char *regtype, const char *domain, DNSServiceBrowseReply callBack, void *context);
+static int (DNSSD_API* _DNSServiceConstructFullName)(char *fullName, const char *service, const char *regtype, const char *domain);
+static DNSServiceErrorType (DNSSD_API* _DNSServiceProcessResult)(DNSServiceRef sdRef);
+static DNSServiceErrorType (DNSSD_API* _DNSServiceQueryRecord)(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex,
+	const char *fullname, uint16_t rrtype, uint16_t rrclass, DNSServiceQueryRecordReply callBack, void *context);
+static void (DNSSD_API* _DNSServiceRefDeallocate)(DNSServiceRef sdRef);
+static int (DNSSD_API* _DNSServiceRefSockFD)(DNSServiceRef sdRef);
+static DNSServiceErrorType (DNSSD_API* _DNSServiceRegister)(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex,
+	const char *name, const char *regtype, const char *domain, const char *host, uint16_t port, uint16_t txtLen,
+	const void *txtRecord, DNSServiceRegisterReply callBack, void *context);
+static DNSServiceErrorType (DNSSD_API* _DNSServiceResolve)(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, const char *name,
+	const char *regtype, const char *domain, DNSServiceResolveReply callBack, void *context);
+static DNSServiceErrorType (DNSSD_API* _DNSServiceRemoveRecord)(DNSServiceRef sdRef, DNSRecordRef RecordRef, DNSServiceFlags flags);
+static DNSServiceErrorType (DNSSD_API* _DNSServiceUpdateRecord)(DNSServiceRef sdRef, DNSRecordRef RecordRef, DNSServiceFlags flags,
+	uint16_t rdlen, const void *rdata, uint32_t ttl);
+static void (DNSSD_API* _TXTRecordCreate)(TXTRecordRef *txtRecord, uint16_t bufferLen, void *buffer);
+static void (DNSSD_API* _TXTRecordDeallocate)(TXTRecordRef *txtRecord);
+static const void * (DNSSD_API* _TXTRecordGetBytesPtr)(const TXTRecordRef *txtRecord);
+static int16_t (DNSSD_API* _TXTRecordGetLength)(const TXTRecordRef *txtRecord);
+static const void * (DNSSD_API* _TXTRecordGetValuePtr)(uint16_t txtLen, const void *txtRecord, const char *key, uint8_t *valueLen);
+static DNSServiceErrorType (DNSSD_API* _TXTRecordSetValue)(TXTRecordRef *txtRecord, const char *key, uint8_t valueSize, const void *value);
+#endif
+
+gboolean dns_sd_available(void) {
+#ifndef LINK_DNS_SD_DIRECTLY
+	static gboolean initialized = FALSE;
+	static gboolean loaded = FALSE;
+
+	if (!initialized) {
+		initialized = TRUE;
+		if ((_DNSServiceAddRecord = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceAddRecord"))
+				&& (_DNSServiceBrowse = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceBrowse"))
+				&& (_DNSServiceConstructFullName = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceConstructFullName"))
+				&& (_DNSServiceProcessResult = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceProcessResult"))
+				&& (_DNSServiceQueryRecord = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceQueryRecord"))
+				&& (_DNSServiceRefDeallocate = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceRefDeallocate"))
+				&& (_DNSServiceRefSockFD = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceRefSockFD"))
+				&& (_DNSServiceRegister = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceRegister"))
+				&& (_DNSServiceResolve = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceResolve"))
+				&& (_DNSServiceRemoveRecord = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceRemoveRecord"))
+				&& (_DNSServiceUpdateRecord = (void *) wpurple_find_and_loadproc("dnssd.dll", "DNSServiceUpdateRecord"))
+				&& (_TXTRecordCreate = (void *) wpurple_find_and_loadproc("dnssd.dll", "TXTRecordCreate"))
+				&& (_TXTRecordDeallocate = (void *) wpurple_find_and_loadproc("dnssd.dll", "TXTRecordDeallocate"))
+				&& (_TXTRecordGetBytesPtr = (void *) wpurple_find_and_loadproc("dnssd.dll", "TXTRecordGetBytesPtr"))
+				&& (_TXTRecordGetLength = (void *) wpurple_find_and_loadproc("dnssd.dll", "TXTRecordGetLength"))
+				&& (_TXTRecordGetValuePtr = (void *) wpurple_find_and_loadproc("dnssd.dll", "TXTRecordGetValuePtr"))
+				&& (_TXTRecordSetValue = (void *) wpurple_find_and_loadproc("dnssd.dll", "TXTRecordSetValue"))) {
+			loaded = TRUE;
+		}
+	}
+	return loaded;
+#else
+	return TRUE;
+#endif
+}
+
+#ifndef LINK_DNS_SD_DIRECTLY
+
+DNSServiceErrorType _wpurple_DNSServiceAddRecord(DNSServiceRef sdRef, DNSRecordRef *RecordRef, DNSServiceFlags flags,
+		uint16_t rrtype, uint16_t rdlen, const void *rdata, uint32_t ttl) {
+	g_return_val_if_fail(_DNSServiceAddRecord != NULL, kDNSServiceErr_Unknown);
+	return (_DNSServiceAddRecord)(sdRef, RecordRef, flags, rrtype, rdlen, rdata, ttl);
+}
+
+DNSServiceErrorType _wpurple_DNSServiceBrowse(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex,
+		const char *regtype, const char *domain, DNSServiceBrowseReply callBack, void *context) {
+	g_return_val_if_fail(_DNSServiceBrowse != NULL, kDNSServiceErr_Unknown);
+	return (_DNSServiceBrowse)(sdRef, flags, interfaceIndex, regtype, domain, callBack, context);
+}
+
+int _wpurple_DNSServiceConstructFullName(char *fullName, const char *service, const char *regtype, const char *domain) {
+	g_return_val_if_fail(_DNSServiceConstructFullName != NULL, 0);
+	return (_DNSServiceConstructFullName)(fullName, service, regtype, domain);
+}
+
+DNSServiceErrorType _wpurple_DNSServiceProcessResult(DNSServiceRef sdRef) {
+	g_return_val_if_fail(_DNSServiceProcessResult != NULL, kDNSServiceErr_Unknown);
+	return (_DNSServiceProcessResult)(sdRef);
+}
+
+
+DNSServiceErrorType _wpurple_DNSServiceQueryRecord(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex,
+		const char *fullname, uint16_t rrtype, uint16_t rrclass, DNSServiceQueryRecordReply callBack, void *context) {
+	g_return_val_if_fail(_DNSServiceQueryRecord != NULL, kDNSServiceErr_Unknown);
+	return (_DNSServiceQueryRecord)(sdRef, flags, interfaceIndex, fullname, rrtype, rrclass, callBack, context);
+}
+
+void _wpurple_DNSServiceRefDeallocate(DNSServiceRef sdRef) {
+	g_return_if_fail(_DNSServiceRefDeallocate != NULL);
+	(_DNSServiceRefDeallocate)(sdRef);
+}
+
+int _wpurple_DNSServiceRefSockFD(DNSServiceRef sdRef) {
+	g_return_val_if_fail(_DNSServiceRefSockFD != NULL, -1);
+	return (_DNSServiceRefSockFD)(sdRef);
+}
+
+DNSServiceErrorType _wpurple_DNSServiceRegister(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex,
+		const char *name, const char *regtype, const char *domain, const char *host, uint16_t port, uint16_t txtLen,
+		const void *txtRecord, DNSServiceRegisterReply callBack, void *context) {
+	g_return_val_if_fail(_DNSServiceRegister != NULL, kDNSServiceErr_Unknown);
+	return (_DNSServiceRegister)(sdRef, flags, interfaceIndex, name, regtype, domain, host, port, txtLen, txtRecord, callBack, context);
+}
+
+DNSServiceErrorType _wpurple_DNSServiceResolve(DNSServiceRef *sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, const char *name,
+		const char *regtype, const char *domain, DNSServiceResolveReply callBack, void *context) {
+	g_return_val_if_fail(_DNSServiceResolve != NULL, kDNSServiceErr_Unknown);
+	return (_DNSServiceResolve)(sdRef, flags, interfaceIndex, name, regtype, domain, callBack, context);
+}
+
+DNSServiceErrorType _wpurple_DNSServiceRemoveRecord(DNSServiceRef sdRef, DNSRecordRef RecordRef, DNSServiceFlags flags) {
+	g_return_val_if_fail(_DNSServiceRemoveRecord != NULL, kDNSServiceErr_Unknown);
+	return (_DNSServiceRemoveRecord)(sdRef, RecordRef, flags);
+}
+
+DNSServiceErrorType _wpurple_DNSServiceUpdateRecord(DNSServiceRef sdRef, DNSRecordRef RecordRef, DNSServiceFlags flags,
+		uint16_t rdlen, const void *rdata, uint32_t ttl) {
+	g_return_val_if_fail(_DNSServiceUpdateRecord != NULL, kDNSServiceErr_Unknown);
+	return (_DNSServiceUpdateRecord)(sdRef, RecordRef, flags, rdlen, rdata, ttl);
+}
+
+void _wpurple_TXTRecordCreate(TXTRecordRef *txtRecord, uint16_t bufferLen, void *buffer) {
+	g_return_if_fail(_TXTRecordCreate != NULL);
+	(_TXTRecordCreate)(txtRecord, bufferLen, buffer);
+}
+
+void _wpurple_TXTRecordDeallocate(TXTRecordRef *txtRecord) {
+	g_return_if_fail(_TXTRecordDeallocate != NULL);
+	(_TXTRecordDeallocate)(txtRecord);
+}
+
+const void * _wpurple_TXTRecordGetBytesPtr(const TXTRecordRef *txtRecord) {
+	g_return_val_if_fail(_TXTRecordGetBytesPtr != NULL, NULL);
+	return (_TXTRecordGetBytesPtr)(txtRecord);
+}
+
+uint16_t _wpurple_TXTRecordGetLength(const TXTRecordRef *txtRecord) {
+	g_return_val_if_fail(_TXTRecordGetLength != NULL, 0);
+	return (_TXTRecordGetLength)(txtRecord);
+}
+
+const void * _wpurple_TXTRecordGetValuePtr(uint16_t txtLen, const void *txtRecord, const char *key, uint8_t *valueLen) {
+	g_return_val_if_fail(_TXTRecordGetValuePtr != NULL, NULL);
+	return (_TXTRecordGetValuePtr)(txtLen, txtRecord, key, valueLen);
+}
+
+DNSServiceErrorType _wpurple_TXTRecordSetValue(TXTRecordRef *txtRecord, const char *key, uint8_t valueSize, const void *value) {
+	g_return_val_if_fail(_TXTRecordSetValue != NULL, kDNSServiceErr_Unknown);
+	return (_TXTRecordSetValue)(txtRecord, key, valueSize, value);
+}
+
+#endif /*LINK_DNS_SD_DIRECTLY*/
+
--- a/libpurple/protocols/bonjour/dns_sd_proxy.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/bonjour/dns_sd_proxy.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,3 +1,23 @@
+/*
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301, USA.
+ */
 #ifndef _DNS_SD_PROXY
 #define _DNS_SD_PROXY
 
--- a/libpurple/protocols/bonjour/mdns_win32.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/bonjour/mdns_win32.c	Tue Oct 23 17:27:12 2007 +0000
@@ -1,4 +1,4 @@
-/**
+/*
  *
  * Purple is the legal property of its developers, whose names are too numerous
  * to list here.  Please refer to the COPYRIGHT file distributed with this
--- a/libpurple/protocols/jabber/jabber.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/jabber/jabber.c	Tue Oct 23 17:27:12 2007 +0000
@@ -2189,57 +2189,100 @@
 	return PURPLE_CMD_RET_OK;
 }
 
+static gboolean _jabber_send_buzz(JabberStream *js, const char *username, char **error) {
+
+	JabberBuddy *jb;
+	JabberBuddyResource *jbr;
+	GList *iter;
+
+	if(!username)
+		return FALSE;
+
+	jb = jabber_buddy_find(js, username, FALSE);
+	if(!jb) {
+		*error = g_strdup_printf(_("Unable to buzz, because there is nothing known about user %s."), username);
+		return FALSE;
+	}
+
+	jbr = jabber_buddy_find_resource(jb, NULL);
+	if(!jbr) {
+		*error = g_strdup_printf(_("Unable to buzz, because user %s might be offline."), username);
+		return FALSE;
+	}
+
+	if(!jbr->caps) {
+		*error = g_strdup_printf(_("Unable to buzz, because there is nothing known about user %s."), username);
+		return FALSE;
+	}
+
+	for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) {
+		if(!strcmp(iter->data, "http://www.xmpp.org/extensions/xep-0224.html#ns")) {
+			xmlnode *buzz, *msg = xmlnode_new("message");
+			gchar *to;
+
+			to = g_strdup_printf("%s/%s", username, jbr->name);
+			xmlnode_set_attrib(msg, "to", to);
+			g_free(to);
+
+			/* avoid offline storage */
+			xmlnode_set_attrib(msg, "type", "headline");
+
+			buzz = xmlnode_new_child(msg, "attention");
+			xmlnode_set_namespace(buzz, "http://www.xmpp.org/extensions/xep-0224.html#ns");
+
+			jabber_send(js, msg);
+			xmlnode_free(msg);
+
+			return TRUE;
+		}
+	}
+
+	*error = g_strdup_printf(_("Unable to buzz, because the user %s does not support it."), username);
+	return FALSE;
+}
+
 static PurpleCmdRet jabber_cmd_buzz(PurpleConversation *conv,
 		const char *cmd, char **args, char **error, void *data)
 {
 	JabberStream *js = conv->account->gc->proto_data;
-	xmlnode *msg, *buzz;
-	JabberBuddy *jb;
-	JabberBuddyResource *jbr;
-	char *to;
-	GList *iter;
 
 	if(!args || !args[0])
 		return PURPLE_CMD_RET_FAILED;
-	
-	jb = jabber_buddy_find(js, args[0], FALSE);
-	if(!jb) {
-		*error = g_strdup_printf(_("Unable to buzz, because there is nothing known about user %s."), args[0]);
-		return PURPLE_CMD_RET_FAILED;
-	}
-	
-	jbr = jabber_buddy_find_resource(jb, NULL);
-	if(!jbr) {
-		*error = g_strdup_printf(_("Unable to buzz, because user %s might be offline."), args[0]);
-		return PURPLE_CMD_RET_FAILED;
-	}
-	if(!jbr->caps) {
-		*error = g_strdup_printf(_("Unable to buzz, because there is nothing known about user %s."), args[0]);
-		return PURPLE_CMD_RET_FAILED;
+
+	return _jabber_send_buzz(js, args[0], error)  ? PURPLE_CMD_RET_OK : PURPLE_CMD_RET_FAILED;
+}
+
+GList *jabber_attention_types(PurpleAccount *account)
+{
+	static GList *types = NULL;
+	PurpleAttentionType *attn;
+
+	if (!types) {
+		attn = g_new0(PurpleAttentionType, 1);
+		attn->name = _("Buzz");
+		attn->incoming_description = _("%s has buzzed you!");
+		attn->outgoing_description = _("Buzzing %s...");
+		types = g_list_append(types, attn);
 	}
-	for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) {
-		if(!strcmp(iter->data, "http://www.xmpp.org/extensions/xep-0224.html#ns")) {
-			msg = xmlnode_new("message");
-			to = g_strdup_printf("%s/%s", args[0], jbr->name);
-			xmlnode_set_attrib(msg,"to",to);
-			g_free(to);
-			
-			/* avoid offline storage */
-			xmlnode_set_attrib(msg,"type","headline");
-			
-			buzz = xmlnode_new_child(msg,"attention");
-			xmlnode_set_namespace(buzz,"http://www.xmpp.org/extensions/xep-0224.html#ns");
-			
-			jabber_send(js,msg);
-			xmlnode_free(msg);
-			
-			return PURPLE_CMD_RET_OK;
-		}
+
+	return types;
+}
+
+gboolean jabber_send_attention(PurpleConnection *gc, const char *username, guint code)
+{
+	JabberStream *js = gc->proto_data;
+	gchar *error = NULL;
+
+	if (!_jabber_send_buzz(js, username, &error)) {
+		purple_debug_error("jabber", "jabber_send_attention: jabber_cmd_buzz failed with error: %s\n", error ? error : "(NULL)");
+		g_free(error);
+		return FALSE;
 	}
-	*error = g_strdup_printf(_("Unable to buzz, because the user %s does not support it."), args[0]);
-	return PURPLE_CMD_RET_FAILED;
+
+	return TRUE;
 }
 
+
 gboolean jabber_offline_message(const PurpleBuddy *buddy)
 {
 	return TRUE;
--- a/libpurple/protocols/jabber/jabber.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/jabber/jabber.h	Tue Oct 23 17:27:12 2007 +0000
@@ -66,6 +66,9 @@
 
 #define CAPS0115_NODE "http://pidgin.im/caps"
 
+/* Index into attention_types list */
+#define JABBER_BUZZ 0
+
 typedef enum {
 	JABBER_STREAM_OFFLINE,
 	JABBER_STREAM_CONNECTING,
@@ -231,6 +234,8 @@
 void jabber_register_gateway(JabberStream *js, const char *gateway);
 void jabber_register_account(PurpleAccount *account);
 void jabber_unregister_account(PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data);
+gboolean jabber_send_attention(PurpleConnection *gc, const char *username, guint code);
+GList *jabber_attention_types(PurpleAccount *account);
 void jabber_convo_closed(PurpleConnection *gc, const char *who);
 PurpleChat *jabber_find_blist_chat(PurpleAccount *account, const char *name);
 gboolean jabber_offline_message(const PurpleBuddy *buddy);
--- a/libpurple/protocols/jabber/libxmpp.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/jabber/libxmpp.c	Tue Oct 23 17:27:12 2007 +0000
@@ -113,10 +113,10 @@
 	jabber_prpl_send_raw,			/* send_raw */
 	jabber_roomlist_room_serialize, /* roomlist_room_serialize */
 	jabber_unregister_account,		/* unregister_user */
+	jabber_send_attention,			/* send_attention */
+	jabber_attention_types,			/* attention_types */
 
 	/* padding */
-	NULL,
-	NULL,
 	NULL
 };
 
--- a/libpurple/protocols/msn/Makefile.am	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/Makefile.am	Tue Oct 23 17:27:12 2007 +0000
@@ -1,4 +1,6 @@
 EXTRA_DIST = \
+		directconn.c \
+		directconn.h \
 		Makefile.mingw
 
 pkgdir = $(libdir)/purple-$(PURPLE_MAJOR_VERSION)
@@ -8,10 +10,10 @@
 	cmdproc.h \
 	command.c \
 	command.h \
+	contact.c\
+	contact.h\
 	dialog.c \
 	dialog.h \
-	directconn.c \
-	directconn.h \
 	error.c \
 	error.h \
 	group.c \
@@ -30,6 +32,8 @@
 	notification.h \
 	object.c \
 	object.h \
+	oim.c\
+	oim.h\
 	page.c \
 	page.h \
 	servconn.c \
@@ -46,6 +50,8 @@
 	slpmsg.h \
 	slpsession.c \
 	slpsession.h \
+	soap.c\
+	soap.h\
 	state.c \
 	state.h \
 	switchboard.c \
@@ -60,8 +66,8 @@
 	user.h \
 	userlist.c \
 	userlist.h \
-	msn-utils.c \
-	msn-utils.h
+	msnutils.c \
+	msnutils.h
 
 AM_CFLAGS = $(st)
 
--- a/libpurple/protocols/msn/Makefile.mingw	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/Makefile.mingw	Tue Oct 23 17:27:12 2007 +0000
@@ -39,6 +39,7 @@
 ##
 C_SRC =			cmdproc.c \
 			command.c \
+			contact.c\
 			dialog.c \
 			directconn.c \
 			error.c \
@@ -50,6 +51,7 @@
 			nexus.c \
 			notification.c \
 			object.c \
+			oim.c\
 			page.c \
 			servconn.c \
 			session.c \
@@ -58,6 +60,7 @@
 			slplink.c \
 			slpmsg.c \
 			slpsession.c \
+			soap.c\
 			state.c \
 			switchboard.c \
 			sync.c \
@@ -65,7 +68,7 @@
 			transaction.c \
 			user.c \
 			userlist.c \
-			msn-utils.c
+			msnutils.c
 
 OBJECTS = $(C_SRC:%.c=%.o)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/protocols/msn/README	Tue Oct 23 17:27:12 2007 +0000
@@ -0,0 +1,55 @@
+MSNP14 Implementation
+by Ma Yuan<mayuan2006@gmail.com>
+
+1. Introduction
+-------------
+
+MSNP14 Protocol, proposed by Windows Live Messenger, is new, and there is no available implementation except the official one on Windows Platform.
+
+It has introduced many new features attractable to many users, such as:
+* Offline Instant Message
+	You can send the offline Message to the offline User,
+	The message will be posted to that user the next time when he is online.
+
+* Communicate with Yahoo User
+	U can chat with the Yahoo User in MSN, That's Fantastic! Till now ,
+	you can send text/Nudge to Yahoo User.
+
+* Windows Live ID authentition
+	WLM use the Window Live ID Authentication process,Known as Passport 3.0,
+	The procedure is totally different to the previous Passport 2.0
+
+* Video/Audio Conversation
+	U can communicate with other's via Video/Audio.
+(Though very interesting, not implemented in this version)
+
+2.New Features Added
+-----------------
+
+Till now, This project has implemented the following Feature:
+* Windows Live ID authentication.
+
+* Offline Instant Message
+Now can send and receive the Offline Instant Message to MSN user and Yahoo User.
+
+*contact management
+Can add/delete Contact
+Can add/delete Group
+
+* Communicate with Yahoo User
+Can send/receive Message/Nudge to Yahoo User.
+
+*. Changes to made to fit MSNP14 Protocol
+
+3. Reference
+-------------
+
+The very useful sites of MSN Protocol:
+MSNpiki site:
+reverse engineer of MSN Protocol.up to dated.
+http://msnpiki.msnfanatic.com/index.php/MSN_Protocol_Version_13
+
+hypothetic site:
+old MSN Protocol Introduction,but very useful for basic idea of MSN protocol
+http://www.hypothetic.org/docs/msn/index.php
+
--- a/libpurple/protocols/msn/cmdproc.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/cmdproc.c	Tue Oct 23 17:27:12 2007 +0000
@@ -258,8 +258,10 @@
 		trans = msn_history_find(cmdproc->history, cmd->trId);
 
 	if (trans != NULL)
-		if (trans->timer)
+		if (trans->timer) {
 			purple_timeout_remove(trans->timer);
+			trans->timer = 0;
+		}
 
 	if (g_ascii_isdigit(cmd->command[0]))
 	{
--- a/libpurple/protocols/msn/command.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/command.c	Tue Oct 23 17:27:12 2007 +0000
@@ -25,9 +25,9 @@
 #include "command.h"
 
 static gboolean
-is_num(char *str)
+is_num(const char *str)
 {
-	char *c;
+	const char *c;
 	for (c = str; *c; c++) {
 		if (!(g_ascii_isdigit(*c)))
 			return FALSE;
@@ -36,20 +36,63 @@
 	return TRUE;
 }
 
+/*
+ * check the command is the command with payload content
+ *  if it is	return TRUE
+ *  else 		return FALSE
+ */
+static gboolean
+msn_check_payload_cmd(const char *str)
+{
+	g_return_val_if_fail(str != NULL, FALSE);
+
+	if((!strcmp(str,"ADL")) ||
+		(!strcmp(str,"GCF")) ||
+		(!strcmp(str,"SG")) ||
+		(!strcmp(str,"MSG")) ||
+		(!strcmp(str,"RML")) ||
+		(!strcmp(str,"UBX")) ||
+		(!strcmp(str,"UBN")) ||
+		(!strcmp(str,"UUM")) ||
+		(!strcmp(str,"UBM")) ||
+		(!strcmp(str,"FQY")) ||
+		(!strcmp(str,"UUN")) ||
+		(!strcmp(str,"UUX")) ||
+		(is_num(str))){
+			return TRUE;
+		}
+
+	return FALSE;
+}
+
+/*
+ * set command Payload length
+ */
+static void
+msn_set_payload_len(MsnCommand *cmd)
+{
+	char *param;
+	int len = 0;
+
+	if (msn_check_payload_cmd(cmd->command) && (cmd->param_count > 0)){
+		param = cmd->params[cmd->param_count - 1];
+		len = is_num(param) ? atoi(param) : 0;
+	}
+
+	cmd->payload_len = len;
+}
+
 MsnCommand *
 msn_command_from_string(const char *string)
 {
 	MsnCommand *cmd;
-	char *tmp;
 	char *param_start;
 
 	g_return_val_if_fail(string != NULL, NULL);
 
-	tmp = g_strdup(string);
-	param_start = strchr(tmp, ' ');
-
 	cmd = g_new0(MsnCommand, 1);
-	cmd->command = tmp;
+	cmd->command = g_strdup(string);
+	param_start = strchr(cmd->command, ' ');
 
 	if (param_start)
 	{
@@ -70,7 +113,13 @@
 		cmd->trId = is_num(param) ? atoi(param) : 0;
 	}
 	else
+	{
 		cmd->trId = 0;
+	}
+
+	/*add payload Length checking*/
+	msn_set_payload_len(cmd);
+	purple_debug_info("MSNP14","get payload len:%d\n",cmd->payload_len);
 
 	msn_command_ref(cmd);
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/protocols/msn/contact.c	Tue Oct 23 17:27:12 2007 +0000
@@ -0,0 +1,1875 @@
+/**
+ * @file contact.c 
+ * 	get MSN contacts via SOAP request
+ *	created by MaYuan<mayuan2006@gmail.com>
+ *
+ * purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "msn.h"
+#include "contact.h"
+#include "xmlnode.h"
+#include "group.h"
+
+const char *MsnSoapPartnerScenarioText[] =
+{
+	"Initial",
+	"ContactSave",
+	"MessengerPendingList",
+	"ContactMsgrAPI",
+	"BlockUnblock"
+};
+
+const char *MsnMemberRole[] =
+{
+	"Forward",
+	"Allow",
+	"Block",
+	"Reverse",
+	"Pending"
+};
+
+/* new a contact */
+MsnContact *
+msn_contact_new(MsnSession *session)
+{
+	MsnContact *contact;
+
+	contact = g_new0(MsnContact, 1);
+	contact->session = session;
+	contact->soapconn = msn_soap_new(session,contact,1);
+
+	return contact;
+}
+
+/* destroy the contact */
+void
+msn_contact_destroy(MsnContact *contact)
+{
+	msn_soap_destroy(contact->soapconn);
+	g_free(contact);
+}
+
+MsnCallbackState *
+msn_callback_state_new(void)
+{
+	return g_new0(MsnCallbackState, 1);
+}
+
+void
+msn_callback_state_free(MsnCallbackState *state)
+{
+	if (state == NULL)
+		return;
+
+	g_free(state->who);
+	g_free(state->uid);
+	g_free(state->old_group_name);
+	g_free(state->new_group_name);
+	g_free(state->guid);
+
+	g_free(state);
+}
+
+void
+msn_callback_state_set_who(MsnCallbackState *state, const gchar *who)
+{
+	g_return_if_fail(state != NULL);
+
+	g_free(state->who);
+	state->who = g_strdup(who);
+}
+
+void
+msn_callback_state_set_uid(MsnCallbackState *state, const gchar *uid)
+{
+	g_return_if_fail(state != NULL);
+
+	g_free(state->uid);
+	state->uid = g_strdup(uid);
+}
+
+void
+msn_callback_state_set_old_group_name(MsnCallbackState *state, const gchar *old_group_name)
+{
+	g_return_if_fail(state != NULL);
+
+	g_free(state->old_group_name);
+	state->old_group_name = g_strdup(old_group_name);
+}
+
+void
+msn_callback_state_set_new_group_name(MsnCallbackState *state, const gchar *new_group_name)
+{
+	g_return_if_fail(state != NULL);
+
+	g_free(state->new_group_name);
+	state->new_group_name = g_strdup(new_group_name);
+}
+
+void
+msn_callback_state_set_guid(MsnCallbackState *state, const gchar *guid)
+{
+	g_return_if_fail(state != NULL);
+
+	g_free(state->guid);
+	state->guid = g_strdup(guid);
+}
+
+
+void
+msn_callback_state_set_list_id(MsnCallbackState *state, MsnListId list_id)
+{
+	g_return_if_fail(state != NULL);
+
+	state->list_id = list_id;
+}
+
+void
+msn_callback_state_set_action(MsnCallbackState *state, MsnCallbackAction action)
+{
+	g_return_if_fail(state != NULL);
+
+	state->action |= action;
+}
+
+/*contact SOAP server login error*/
+static void
+msn_contact_login_error_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc, PurpleSslErrorType error)
+{
+	MsnSession *session;
+
+	session = soapconn->session;
+	g_return_if_fail(session != NULL);
+
+	msn_session_set_error(session, MSN_ERROR_SERV_DOWN, _("Unable to connect to contact server"));
+}
+
+/*msn contact SOAP server connect process*/
+static gboolean
+msn_contact_login_connect_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc)
+{
+	MsnSession * session;
+	MsnContact *contact;
+
+	contact = soapconn->parent;
+	g_return_val_if_fail(contact != NULL, TRUE);
+
+	session = contact->session;
+	g_return_val_if_fail(session != NULL, FALSE);
+
+	/*login ok!We can retrieve the contact list*/
+//	msn_get_contact_list(contact, MSN_PS_INITIAL, NULL);
+	return TRUE;
+}
+
+/*get MSN member role utility*/
+static MsnListId
+msn_get_memberrole(const char *role)
+{
+	g_return_val_if_fail(role != NULL, 0);
+
+	if (!strcmp(role,"Allow")) {
+		return MSN_LIST_AL;
+	} else if (!strcmp(role,"Block")) {
+		return MSN_LIST_BL;
+	} else if (!strcmp(role,"Reverse")) {
+		return MSN_LIST_RL;
+	} else if (!strcmp(role,"Pending")) {
+		return MSN_LIST_PL;
+	}
+	return 0;
+}
+
+/*get User Type*/
+static int
+msn_get_user_type(char *type)
+{
+	g_return_val_if_fail(type != NULL, 0);
+
+	if (!strcmp(type,"Regular")) {
+		return MSN_USER_TYPE_PASSPORT;
+	}
+	if (!strcmp(type,"Live")) {
+		return MSN_USER_TYPE_PASSPORT;
+	}
+	if (!strcmp(type,"LivePending")) {
+		return MSN_USER_TYPE_PASSPORT;
+	}
+
+	return MSN_USER_TYPE_UNKNOWN;
+}
+
+/* Create the AddressBook in the server, if we don't have one */
+static gboolean
+msn_create_address_cb(MsnSoapConn *soapconn)
+{
+	MsnContact *contact;
+
+	if (soapconn->body == NULL)
+		return TRUE;
+
+	contact = soapconn->parent;
+	g_return_val_if_fail(contact != NULL, TRUE);
+
+	purple_debug_info("MSN AddressBook", "Address Book successfully created!\n");
+	msn_get_address_book(contact, MSN_PS_INITIAL, NULL, NULL);
+
+//	msn_soap_free_read_buf(soapconn);
+	return TRUE;
+}
+
+static void
+msn_create_address_written_cb(MsnSoapConn *soapconn)
+{
+	purple_debug_info("MSN AddressBook","AddressBookAdd written\n");
+	soapconn->read_cb = msn_create_address_cb;
+
+	return;
+}
+
+static void
+msn_create_address_book(MsnContact * contact)
+{
+	MsnSoapReq *soap_request;
+	gchar *body;
+
+	g_return_if_fail(contact != NULL);
+	g_return_if_fail(contact->session != NULL);
+	g_return_if_fail(contact->session->user != NULL);
+	g_return_if_fail(contact->session->user->passport != NULL);
+	
+	purple_debug_info("MSN AddressBook","Creating an Address Book.\n");
+
+	body = g_strdup_printf(MSN_ADD_ADDRESSBOOK_TEMPLATE, contact->session->user->passport);
+
+	soap_request = msn_soap_request_new(MSN_CONTACT_SERVER,
+					MSN_ADDRESS_BOOK_POST_URL,MSN_ADD_ADDRESSBOOK_SOAP_ACTION,
+					body,
+					NULL,
+					msn_create_address_cb,
+					msn_create_address_written_cb,
+					msn_contact_connect_init);
+	msn_soap_post(contact->soapconn, soap_request);
+
+	g_free(body);
+	
+	return;
+}
+
+/*parse contact list*/
+static void
+msn_parse_contact_list(MsnContact * contact)
+{
+	MsnSession * session;
+	MsnListOp list_op = 0;
+	MsnListId list;
+	char * passport, *typedata;
+	xmlnode *fault, *faultstringnode, *faultdetail, *errorcode;
+	xmlnode *node, *body, *response, *result, *services;
+	xmlnode *service, *memberships, *info, *handle, *handletype;
+	xmlnode *membershipnode, *members, *member, *passportNode;
+
+	session = contact->session;
+	node = xmlnode_from_str(contact->soapconn->body, contact->soapconn->body_len);
+
+	if (node == NULL) {
+		purple_debug_error("MSNCL","Unable to parse SOAP data!\n");
+		return;
+	}
+
+	purple_debug_misc("MSNCL","Parsing contact list with size %d\n", contact->soapconn->body_len);
+
+	purple_debug_misc("MSNCL","Root node @ %p: Name: '%s', child: '%s', lastchild: '%s'\n", node,
+		node->name ? node->name : "(null)",
+		(node->child && node->child->name) ? node->child->name : "(null)",
+		(node->lastchild && node->lastchild->name) ? node->lastchild->name : "(null)");
+
+	body = xmlnode_get_child(node, "Body");
+
+	if (body == NULL) {
+		purple_debug_warning("MSNCL", "Failed to parse contact list Body node\n");
+		xmlnode_free(node);
+		return;
+	}
+	purple_debug_info("MSNCL","Body @ %p:  Name: '%s'\n",body,body->name);
+
+	/* Did we receive a <Fault> ? */
+	if ( (fault = xmlnode_get_child(body, "Fault")) != NULL) {
+	        purple_debug_info("MSNCL","Fault received from SOAP server!\n");
+
+		if ( (faultstringnode = xmlnode_get_child(fault, "faultstring")) != NULL ) {
+			gchar * faultstring = xmlnode_get_data(faultstringnode);
+			purple_debug_info("MSNCL", "Faultstring: %s\n", faultstring ? faultstring : "(null)");
+			g_free(faultstring);
+		}
+		if ( (faultdetail = xmlnode_get_child(fault, "detail")) != NULL ) {
+			purple_debug_info("MSNCL","detail @ %p, name: %s\n",faultdetail, faultdetail->name);
+
+			if ( (errorcode = xmlnode_get_child(faultdetail, "errorcode")) != NULL ) {
+				purple_debug_info("MSNCL","errorcode @ %p, name: %s\n", errorcode, errorcode->name);
+
+				if (errorcode->child != NULL) {
+					gchar *errorcodestring = xmlnode_get_data(errorcode);
+					purple_debug_info("MSNCL", "Error Code: %s\n", errorcodestring ? errorcodestring : "(null)");
+
+					if (errorcodestring && !strncmp(errorcodestring, "ABDoesNotExist", 14) ) {
+						xmlnode_free(node);
+						g_free(errorcodestring);
+						msn_create_address_book(contact);
+						return;
+					}
+					g_free(errorcodestring);
+				}
+			}
+		}
+		xmlnode_free(node);
+		msn_get_contact_list(contact, MSN_PS_INITIAL, NULL);
+		return;
+	}
+
+	response = xmlnode_get_child(body,"FindMembershipResponse");
+
+	if (response == NULL) {
+		/* we may get a response if our cache data is too old:
+		 *
+		 * <faultstring>Need to do full sync. Can't sync deltas Client
+		 * has too old a copy for us to do a delta sync</faultstring>
+		 */
+		xmlnode_free(node);
+		msn_get_contact_list(contact, MSN_PS_INITIAL, NULL);
+		return;
+	}
+	purple_debug_info("MSNCL","FindMembershipResponse @ %p: Name: '%s'\n",response,response->name);
+
+	result = xmlnode_get_child(response,"FindMembershipResult");
+	if (result == NULL) {
+		purple_debug_warning("MSNCL","Received No Update!\n");
+		xmlnode_free(node);
+		return;
+	}
+	purple_debug_info("MSNCL","Result @ %p: Name: '%s'\n", result, result->name);
+
+	if ( (services = xmlnode_get_child(result,"Services")) == NULL) {
+		purple_debug_misc("MSNCL","No <Services> received.\n");
+		xmlnode_free(node);
+		return;
+	}
+
+	purple_debug_info("MSNCL","Services @ %p\n",services);
+	
+	for (service = xmlnode_get_child(services, "Service"); service;
+	                                service = xmlnode_get_next_twin(service)) {
+		purple_debug_info("MSNCL","Service @ %p\n",service);
+
+		if ( (info = xmlnode_get_child(service,"Info")) == NULL ) {
+			purple_debug_error("MSNCL","Error getting 'Info' child node\n");
+			continue;
+		}
+		if ( (handle = xmlnode_get_child(info,"Handle")) == NULL ) {
+			purple_debug_error("MSNCL","Error getting 'Handle' child node\n");
+			continue;
+		}
+		if ( (handletype = xmlnode_get_child(handle,"Type")) == NULL ) {
+			purple_debug_error("MSNCL","Error getting 'Type' child node\n");
+			continue;
+		}
+
+		if ( (typedata = xmlnode_get_data(handletype)) == NULL) {
+			purple_debug_error("MSNCL","Error retrieving data from 'Type' child node\n");
+			continue;
+		}
+
+		purple_debug_info("MSNCL","processing '%s' Service\n", typedata);
+
+		if ( !g_strcasecmp(typedata, "Profile") ) {
+			/* Process Windows Live 'Messenger Roaming Identity' */
+			g_free(typedata);
+			continue;
+		}
+
+		if ( !g_strcasecmp(typedata, "Messenger") ) {
+			char *LastChangeStr = NULL;
+			xmlnode *LastChangeNode;
+
+			/*Last Change Node*/
+			if ((LastChangeNode = xmlnode_get_child(service, "LastChange")))
+				LastChangeStr = xmlnode_get_data(LastChangeNode);
+			purple_debug_info("MSNCL","LastChangeNode: '%s'\n",LastChangeStr ? LastChangeStr : "(null)");
+			purple_account_set_string(session->account, "CLLastChange", LastChangeStr);
+			g_free(LastChangeStr);
+
+			memberships = xmlnode_get_child(service,"Memberships");
+			if (memberships == NULL) {
+				purple_debug_warning("MSNCL","Memberships = NULL, cleaning up and returning.\n");
+				g_free(typedata);
+				xmlnode_free(node);
+				return;
+			}
+			purple_debug_info("MSNCL","Memberships @ %p: Name: '%s'\n",memberships,memberships->name);
+			for (membershipnode = xmlnode_get_child(memberships, "Membership"); membershipnode;
+							membershipnode = xmlnode_get_next_twin(membershipnode)){
+				xmlnode *roleNode;
+				char *role = NULL;
+				list = 0;
+
+				if ((roleNode = xmlnode_get_child(membershipnode,"MemberRole"))) {
+					role = xmlnode_get_data(roleNode);
+					list = msn_get_memberrole(role);
+				}
+				list_op = 1 << list;
+
+				purple_debug_info("MSNCL","MemberRole role: %s, list_op: %d\n", role ? role : "(null)", list_op);
+
+				g_free(role);
+
+				members = xmlnode_get_child(membershipnode, "Members");
+				for (member = xmlnode_get_child(members, "Member"); member;
+						member = xmlnode_get_next_twin(member)){
+					MsnUser *user = NULL;
+					xmlnode *typeNode, *membershipIdNode = NULL;
+					gchar *type, *membershipId = NULL;
+					const char *member_type = xmlnode_get_attrib(member, "type");
+
+					if (!member_type) {
+						purple_debug_error("msn", "No Member Type specified for Member.\n");
+						continue;
+					}
+
+					if(!g_strcasecmp(member_type, "PassportMember") ) {
+						passport = type = NULL;
+						if ((passportNode = xmlnode_get_child(member, "PassportName")))
+							passport = xmlnode_get_data(passportNode);
+						if ((typeNode = xmlnode_get_child(member, "Type")))
+							type = xmlnode_get_data(typeNode);
+						purple_debug_info("MSNCL","Passport name: '%s', Type: %s\n", passport ? passport : "(null)", type ? type : "(null)");
+						/* Why do we even bother parsing it just to free it??? */
+						g_free(type);
+
+						user = msn_userlist_find_add_user(session->userlist,passport,NULL);
+						g_free(passport);
+
+						membershipIdNode = xmlnode_get_child(member,"MembershipId");
+						if (membershipIdNode != NULL) {
+							membershipId = xmlnode_get_data(membershipIdNode);
+							if (membershipId != NULL) {
+								user->membership_id[list] = atoi(membershipId);
+								g_free(membershipId);
+							}
+						}
+
+						msn_got_lst_user(session, user, list_op, NULL);
+					}
+					else if (!g_strcasecmp(member_type, "PhoneMember")) {
+						purple_debug_info("msn", "Recieved Phone Member; ignoring.\n");
+					}
+					else if (!g_strcasecmp(member_type, "EmailMember")) {
+						xmlnode *emailNode;
+						passport = NULL;
+
+						if ((emailNode = xmlnode_get_child(member, "Email")))
+							passport = xmlnode_get_data(emailNode);
+						purple_debug_info("MSNCL","Email Member: Name: '%s', list_op: %d\n", passport ? passport : "(null)", list_op);
+
+						user = msn_userlist_find_add_user(session->userlist, passport, NULL);
+						g_free(passport);
+
+						membershipIdNode = xmlnode_get_child(member,"MembershipId");
+						if (membershipIdNode != NULL) {
+							membershipId = xmlnode_get_data(membershipIdNode);
+							if (membershipId != NULL) {
+								user->membership_id[list] = atoi(membershipId);
+								g_free(membershipId);
+							}
+						}
+
+						msn_got_lst_user(session, user, list_op, NULL);
+					} else {
+						purple_debug_info("msn", "Unknown Member type: %s\n", member_type);
+					}
+				}
+			}
+		}
+		g_free(typedata);
+	}
+
+	xmlnode_free(node);	/* Free the whole XML tree */
+}
+
+static gboolean
+msn_get_contact_list_cb(MsnSoapConn *soapconn)
+{
+	MsnContact *contact;
+	MsnSession *session;
+	const char *abLastChange;
+	const char *dynamicItemLastChange;
+	gchar *partner_scenario;
+
+	if (soapconn->body == NULL)
+		return TRUE;
+
+	purple_debug_misc("MSNCL","Got the contact list!\n");
+
+	contact = soapconn->parent;
+	g_return_val_if_fail(contact != NULL, TRUE);
+	session = soapconn->session;
+	g_return_val_if_fail(session != NULL, FALSE);
+	g_return_val_if_fail(soapconn->data_cb != NULL, TRUE);
+
+	partner_scenario = soapconn->data_cb;
+
+	msn_parse_contact_list(contact);
+	/*free the read buffer*/
+	msn_soap_free_read_buf(soapconn);
+
+	abLastChange = purple_account_get_string(session->account, "ablastChange", NULL);
+	dynamicItemLastChange = purple_account_get_string(session->account, "dynamicItemLastChange", NULL);
+
+	if (!strcmp(partner_scenario, MsnSoapPartnerScenarioText[MSN_PS_INITIAL])) {
+
+#ifdef MSN_PARTIAL_LISTS
+		/* XXX: this should be enabled when we can correctly do partial
+	 	  syncs with the server. Currently we need to retrieve the whole
+	 	  list to detect sync issues */
+		msn_get_address_book(contact, MSN_PS_INITIAL, abLastChange, dynamicItemLastChange);
+#else
+		msn_get_address_book(contact, MSN_PS_INITIAL, NULL, NULL);
+#endif
+	} else {
+		msn_soap_free_read_buf(soapconn);
+	}
+
+	return TRUE;
+}
+
+static void
+msn_get_contact_written_cb(MsnSoapConn *soapconn)
+{
+	purple_debug_misc("MSNCL","Sent SOAP request for the contact list.\n");
+	soapconn->read_cb = msn_get_contact_list_cb;
+}
+
+/* SOAP  get contact list*/
+void
+msn_get_contact_list(MsnContact * contact, const MsnSoapPartnerScenario partner_scenario, const char *update_time)
+{
+	MsnSoapReq *soap_request;
+	gchar *body;
+	gchar *update_str = NULL;
+	const gchar *partner_scenario_str = MsnSoapPartnerScenarioText[partner_scenario];
+
+	purple_debug_misc("MSNCL","Getting Contact List.\n");
+
+	if ( update_time != NULL ) {
+		purple_debug_info("MSNCL","Last update time: %s\n",update_time);
+		update_str = g_strdup_printf(MSN_GET_CONTACT_UPDATE_XML,update_time);
+	}
+
+	body = g_strdup_printf(MSN_GET_CONTACT_TEMPLATE, partner_scenario_str, update_str ? update_str : "");
+	g_free(update_str);
+
+	soap_request = msn_soap_request_new(MSN_CONTACT_SERVER,
+					MSN_GET_CONTACT_POST_URL,
+					MSN_GET_CONTACT_SOAP_ACTION,
+					body,
+					(gpointer) partner_scenario_str,
+					msn_get_contact_list_cb,
+					msn_get_contact_written_cb,
+					msn_contact_connect_init);
+	msn_soap_post(contact->soapconn,soap_request);
+	g_free(body);
+}
+
+static void
+msn_parse_addressbook_groups(MsnContact *contact, xmlnode *node)
+{
+	MsnSession *session = contact->session;
+	xmlnode *group;
+
+	purple_debug_info("MsnAb","msn_parse_addressbook_groups()\n");
+
+	for(group = xmlnode_get_child(node, "Group"); group;
+					group = xmlnode_get_next_twin(group)){
+		xmlnode *groupId, *groupInfo, *groupname;
+		char *group_id = NULL, *group_name = NULL;
+
+		if ((groupId = xmlnode_get_child(group, "groupId")))
+			group_id = xmlnode_get_data(groupId);
+		if ((groupInfo = xmlnode_get_child(group, "groupInfo")) && (groupname = xmlnode_get_child(groupInfo, "name")))
+			group_name = xmlnode_get_data(groupname);
+
+		msn_group_new(session->userlist, group_id, group_name);
+
+		if (group_id == NULL){
+			/* Group of ungroupped buddies */
+			g_free(group_name);
+			continue;
+		}
+
+		purple_debug_info("MsnAB","group_id: %s, name: %s\n", group_id, group_name ? group_name : "(null)");
+		if ((purple_find_group(group_name)) == NULL){
+			PurpleGroup *g = purple_group_new(group_name);
+			purple_blist_add_group(g, NULL);
+		}
+		g_free(group_id);
+		g_free(group_name);
+	}
+}
+
+static void
+msn_parse_addressbook_contacts(MsnContact *contact, xmlnode *node)
+{
+	MsnSession *session = contact->session;
+	xmlnode *contactNode;
+	char *passport = NULL, *Name = NULL, *uid = NULL, *type = NULL;
+
+	for(contactNode = xmlnode_get_child(node, "Contact"); contactNode;
+				contactNode = xmlnode_get_next_twin(contactNode)) {
+		xmlnode *contactId, *contactInfo, *contactType, *passportName, *displayName, *guid, *groupIds;
+		MsnUser *user;
+		MsnUserType usertype;
+
+		if (!(contactId = xmlnode_get_child(contactNode,"contactId"))
+				|| !(contactInfo = xmlnode_get_child(contactNode, "contactInfo"))
+				|| !(contactType = xmlnode_get_child(contactInfo, "contactType")))
+			continue;
+
+		g_free(passport);
+		g_free(Name);
+		g_free(uid);
+		g_free(type);
+		passport = Name = uid = type = NULL;
+
+		uid = xmlnode_get_data(contactId);
+		type = xmlnode_get_data(contactType);
+
+		/*setup the Display Name*/
+		if (type && !strcmp(type, "Me")){
+			char *friendly = NULL;
+			if ((displayName = xmlnode_get_child(contactInfo, "displayName")))
+				friendly = xmlnode_get_data(displayName);
+			purple_connection_set_display_name(session->account->gc, friendly ? purple_url_decode(friendly) : NULL);
+			g_free(friendly);
+			continue; /* Not adding own account as buddy to buddylist */
+		}
+
+		usertype = msn_get_user_type(type);
+		passportName = xmlnode_get_child(contactInfo, "passportName");
+		if (passportName == NULL) {
+			xmlnode *emailsNode, *contactEmailNode, *emailNode;
+			xmlnode *messengerEnabledNode;
+			char *msnEnabled;
+
+			/*TODO: add it to the none-instant Messenger group and recognize as email Membership*/
+			/*Yahoo User?*/
+			emailsNode = xmlnode_get_child(contactInfo, "emails");
+			if (emailsNode == NULL) {
+				/*TODO:  need to support the Mobile type*/
+				continue;
+			}
+			for(contactEmailNode = xmlnode_get_child(emailsNode, "ContactEmail"); contactEmailNode;
+					contactEmailNode = xmlnode_get_next_twin(contactEmailNode) ){
+				if (!(messengerEnabledNode = xmlnode_get_child(contactEmailNode, "isMessengerEnabled"))) {
+					/* XXX: Should this be a continue instead of a break? It seems like it'd cause unpredictable results otherwise. */
+					break;
+				}
+
+				msnEnabled = xmlnode_get_data(messengerEnabledNode);
+
+				if ((emailNode = xmlnode_get_child(contactEmailNode, "email"))) {
+					g_free(passport);
+					passport = xmlnode_get_data(emailNode);
+				}
+
+				if(msnEnabled && !strcmp(msnEnabled, "true")) {
+					/*Messenger enabled, Get the Passport*/
+					purple_debug_info("MsnAB", "Yahoo User %s\n", passport ? passport : "(null)");
+					usertype = MSN_USER_TYPE_YAHOO;
+					g_free(msnEnabled);
+					break;
+				} else {
+					/*TODO maybe we can just ignore it in Purple?*/
+					purple_debug_info("MSNAB", "Other type user\n");
+				}
+
+				g_free(msnEnabled);
+			}
+		} else {
+			passport = xmlnode_get_data(passportName);
+		}
+
+		if (passport == NULL)
+			continue;
+
+		if ((displayName = xmlnode_get_child(contactInfo, "displayName")))
+			Name = xmlnode_get_data(displayName);
+		else
+			Name = g_strdup(passport);
+
+		purple_debug_misc("MsnAB","passport:{%s} uid:{%s} display:{%s}\n",
+						passport, uid ? uid : "(null)", Name ? Name : "(null)");
+
+		user = msn_userlist_find_add_user(session->userlist, passport, Name);
+		msn_user_set_uid(user, uid);
+		msn_user_set_type(user, usertype);
+
+		groupIds = xmlnode_get_child(contactInfo, "groupIds");
+		if (groupIds) {
+			for (guid = xmlnode_get_child(groupIds, "guid"); guid;
+							guid = xmlnode_get_next_twin(guid)){
+				char *group_id = xmlnode_get_data(guid);
+				msn_user_add_group_id(user, group_id);
+				purple_debug_misc("MsnAB", "guid:%s\n", group_id ? group_id : "(null)");
+				g_free(group_id);
+			}
+		} else {
+			purple_debug_info("msn", "User not in any groups, adding to default group.\n");
+			/*not in any group,Then set default group*/
+			msn_user_add_group_id(user, MSN_INDIVIDUALS_GROUP_ID);
+		}
+
+		msn_got_lst_user(session, user, MSN_LIST_FL_OP, NULL);
+	}
+
+	g_free(passport);
+	g_free(Name);
+	g_free(uid);
+	g_free(type);
+}
+
+static gboolean
+msn_parse_addressbook(MsnContact * contact)
+{
+	MsnSession *session;
+	xmlnode * node,*body,*response,*result;
+	xmlnode *groups;
+	xmlnode *contacts;
+	xmlnode *abNode;
+	xmlnode *fault, *faultstringnode, *faultdetail, *errorcode;
+
+	session = contact->session;
+
+	node = xmlnode_from_str(contact->soapconn->body, contact->soapconn->body_len);
+	if ( node == NULL ) {
+		purple_debug_error("MSN AddressBook","Error parsing Address Book with size %d\n", contact->soapconn->body_len);
+		return FALSE;
+	}
+
+	purple_debug_misc("MSN AddressBook", "Parsing Address Book with size %d\n", contact->soapconn->body_len);
+
+	purple_debug_misc("MSN AddressBook","node{%p},name:%s,child:%s,last:%s\n", node,
+		node->name ? node->name : "(null)",
+		(node->child && node->child->name) ? node->child->name : "(null)",
+		(node->lastchild && node->lastchild->name) ? node->lastchild->name : "(null)");
+
+	body = xmlnode_get_child(node,"Body");
+	purple_debug_misc("MSN AddressBook","body{%p},name:%s\n",body,body->name);
+
+	/* TODO: This appears to be used in a number of places and should be de-duplicated */
+	if ( (fault = xmlnode_get_child(body, "Fault")) != NULL) {
+		purple_debug_info("MSN AddressBook","Fault received from SOAP server!\n");
+		
+		if ( (faultstringnode = xmlnode_get_child(fault, "faultstring")) != NULL ) {
+			gchar *faultstring = xmlnode_get_data(faultstringnode);
+			purple_debug_info("MSN AddressBook","Faultstring: %s\n", faultstring ? faultstring : "(null)");
+			g_free(faultstring);
+		}
+		if ( (faultdetail = xmlnode_get_child(fault, "detail")) != NULL ) {
+			purple_debug_info("MSN AddressBook","detail @ %p, name: %s\n",faultdetail, faultdetail->name);
+
+			if ( (errorcode = xmlnode_get_child(faultdetail, "errorcode")) != NULL ) {
+				gchar *errorcodestring;
+				purple_debug_info("MSN AddressBook","errorcode @ %p, name: %s\n",errorcode, errorcode->name);
+
+				errorcodestring = xmlnode_get_data(errorcode);
+				purple_debug_info("MSN AddressBook", "Error Code: %s\n", errorcodestring ? errorcodestring : "(null)");
+						
+				if (errorcodestring && !strncmp(errorcodestring, "ABDoesNotExist", 14) ) {
+					g_free(errorcodestring);
+					xmlnode_free(node);
+					return TRUE;
+				}
+				g_free(errorcodestring);
+			}
+		}
+		xmlnode_free(node);
+		return FALSE;
+	}
+
+
+	response = xmlnode_get_child(body,"ABFindAllResponse");
+
+	if (response == NULL) {
+		xmlnode_free(node);
+		return FALSE;
+	}
+
+	purple_debug_misc("MSN SOAP","response{%p},name:%s\n",response,response->name);
+	result = xmlnode_get_child(response,"ABFindAllResult");
+	if(result == NULL){
+		purple_debug_misc("MSNAB","receive no address book update\n");
+		xmlnode_free(node);
+		return TRUE;
+	}
+	purple_debug_info("MSN SOAP","result{%p},name:%s\n",result,result->name);
+
+	/*Process Group List*/
+	groups = xmlnode_get_child(result,"groups");
+	if (groups != NULL) {
+		msn_parse_addressbook_groups(contact, groups);
+	}
+
+	/*add a default No group to set up the no group Membership*/
+	msn_group_new(session->userlist, MSN_INDIVIDUALS_GROUP_ID,
+				  MSN_INDIVIDUALS_GROUP_NAME);
+	purple_debug_misc("MsnAB","group_id:%s name:%s\n",
+					  MSN_INDIVIDUALS_GROUP_ID, MSN_INDIVIDUALS_GROUP_NAME);
+	if ((purple_find_group(MSN_INDIVIDUALS_GROUP_NAME)) == NULL){
+		PurpleGroup *g = purple_group_new(MSN_INDIVIDUALS_GROUP_NAME);
+		purple_blist_add_group(g, NULL);
+	}
+
+	/*add a default No group to set up the no group Membership*/
+	msn_group_new(session->userlist, MSN_NON_IM_GROUP_ID, MSN_NON_IM_GROUP_NAME);
+	purple_debug_misc("MsnAB","group_id:%s name:%s\n", MSN_NON_IM_GROUP_ID, MSN_NON_IM_GROUP_NAME);
+	if ((purple_find_group(MSN_NON_IM_GROUP_NAME)) == NULL){
+		PurpleGroup *g = purple_group_new(MSN_NON_IM_GROUP_NAME);
+		purple_blist_add_group(g, NULL);
+	}
+
+	/*Process contact List*/
+	purple_debug_info("MSNAB","process contact list...\n");
+	contacts =xmlnode_get_child(result,"contacts");
+	if (contacts != NULL) {
+		msn_parse_addressbook_contacts(contact, contacts);
+	}
+
+	abNode =xmlnode_get_child(result,"ab");
+	if(abNode != NULL){
+		xmlnode *node2;
+		char *tmp = NULL;
+
+		if ((node2 = xmlnode_get_child(abNode, "lastChange")))
+			tmp = xmlnode_get_data(node2);
+		purple_debug_info("MsnAB"," lastchanged Time:{%s}\n", tmp ? tmp : "(null)");
+		purple_account_set_string(session->account, "ablastChange", tmp);
+
+		g_free(tmp); tmp = NULL;
+		if ((node2 = xmlnode_get_child(abNode, "DynamicItemLastChanged")))
+			tmp = xmlnode_get_data(node2);
+		purple_debug_info("MsnAB"," DynamicItemLastChanged :{%s}\n", tmp ? tmp : "(null)");
+		purple_account_set_string(session->account, "DynamicItemLastChanged", tmp);
+		g_free(tmp);
+	}
+
+	xmlnode_free(node);
+	msn_soap_free_read_buf(contact->soapconn);
+	return TRUE;
+}
+
+static gboolean
+msn_get_address_cb(MsnSoapConn *soapconn)
+{
+	MsnContact *contact;
+	MsnSession *session;
+
+	if (soapconn->body == NULL)
+		return TRUE;
+
+	contact = soapconn->parent;
+	g_return_val_if_fail(contact != NULL, TRUE);
+	session = soapconn->session;
+	g_return_val_if_fail(session != NULL, FALSE);
+
+	purple_debug_misc("MSN AddressBook", "Got the Address Book!\n");
+
+	if ( msn_parse_addressbook(contact) ) {
+		//msn_soap_free_read_buf(soapconn);
+
+		if (!session->logged_in) {
+			msn_send_privacy(session->account->gc);
+			msn_notification_dump_contact(session);
+		}
+
+		/*free the read buffer*/
+		msn_soap_free_read_buf(soapconn);
+		return TRUE;
+	} else {
+		/* This is making us loop infinitely when we fail to parse the address book,
+		  disable for now (we should re-enable when we send timestamps)
+		*/
+		/*
+		msn_get_address_book(contact, NULL, NULL);
+		*/
+		msn_session_disconnect(session);
+		purple_connection_error(session->account->gc, _("Unable to retrieve MSN Address Book"));
+		return FALSE;
+	}
+}
+
+/**/
+static void
+msn_address_written_cb(MsnSoapConn *soapconn)
+{
+	purple_debug_misc("MSN AddressBook","Sent SOAP request for the Address Book.\n");
+	soapconn->read_cb = msn_get_address_cb;
+}
+
+/*get the address book*/
+void
+msn_get_address_book(MsnContact *contact, const MsnSoapPartnerScenario partner_scenario, const char *LastChanged, const char *dynamicItemLastChange)
+{
+	MsnSoapReq *soap_request;
+	char *body;
+	char *update_str = NULL;
+
+	purple_debug_misc("MSN AddressBook","Getting Address Book\n");
+
+	/*build SOAP and POST it*/
+	if (dynamicItemLastChange != NULL)
+		update_str = g_strdup_printf(MSN_GET_ADDRESS_UPDATE_XML, dynamicItemLastChange);
+	else if (LastChanged != NULL)
+		update_str = g_strdup_printf(MSN_GET_ADDRESS_UPDATE_XML, LastChanged);
+
+
+	body = g_strdup_printf(MSN_GET_ADDRESS_TEMPLATE, MsnSoapPartnerScenarioText[partner_scenario], update_str ? update_str : "");
+	g_free(update_str);
+
+	soap_request = msn_soap_request_new(MSN_CONTACT_SERVER,
+					MSN_ADDRESS_BOOK_POST_URL,MSN_GET_ADDRESS_SOAP_ACTION,
+					body,
+					NULL,
+					msn_get_address_cb,
+					msn_address_written_cb,
+					msn_contact_connect_init);
+	msn_soap_post(contact->soapconn,soap_request);
+	g_free(body);
+}
+
+static gboolean
+msn_add_contact_read_cb(MsnSoapConn *soapconn)
+{
+	MsnCallbackState *state = NULL;
+	MsnUserList *userlist;
+	MsnUser *user;
+	
+	g_return_val_if_fail(soapconn->data_cb != NULL, TRUE);
+	g_return_val_if_fail(soapconn->session != NULL, FALSE);
+	g_return_val_if_fail(soapconn->session->userlist != NULL, TRUE);
+
+	state = (MsnCallbackState *) soapconn->data_cb;
+
+	if (soapconn->body == NULL) {
+		msn_callback_state_free(state);
+		return TRUE;
+	}
+	
+	userlist = soapconn->session->userlist;
+	
+	purple_debug_info("MSNCL","Contact added successfully\n");
+
+	// the code this block is replacing didn't send ADL for yahoo contacts,
+	// but i haven't confirmed this is WLM's behaviour wrt yahoo contacts
+
+	if ( !msn_user_is_yahoo(soapconn->session->account, state->who) ) {
+		
+		msn_userlist_add_buddy_to_list(userlist, state->who, MSN_LIST_AL);
+		msn_userlist_add_buddy_to_list(userlist, state->who, MSN_LIST_FL);
+	}
+	msn_notification_send_fqy(soapconn->session, state->who);
+
+	user = msn_userlist_find_add_user(userlist, state->who, state->who);
+	msn_user_add_group_id(user, state->guid);
+
+	msn_soap_free_read_buf(soapconn);
+	msn_callback_state_free(state);
+
+	return TRUE;
+}
+
+static void
+msn_add_contact_written_cb(MsnSoapConn *soapconn)
+{
+	purple_debug_info("MSNCL","Add contact request written\n");
+	soapconn->read_cb = msn_add_contact_read_cb;
+}
+
+/* add a Contact in MSN_INDIVIDUALS_GROUP */
+void
+msn_add_contact(MsnContact *contact, MsnCallbackState *state, const char *passport)
+{
+	MsnSoapReq *soap_request;
+	gchar *body = NULL;
+	gchar *contact_xml = NULL;
+
+	g_return_if_fail(passport != NULL);
+/*	gchar *escaped_displayname;
+
+
+	 if (displayname != NULL) {
+		escaped_displayname = g_markup_decode_text(displayname, -1);
+	 } else {
+		escaped_displayname = passport;
+	 }
+	contact_xml = g_strdup_printf(MSN_XML_ADD_CONTACT, escaped_displayname, passport);
+*/
+	purple_debug_info("MSNCL","Adding contact %s to contact list\n", passport);
+
+//	if ( !strcmp(state->guid, MSN_INDIVIDUALS_GROUP_ID) ) {
+		contact_xml = g_strdup_printf(MSN_CONTACT_XML, passport);
+//	}
+	body = g_strdup_printf(MSN_ADD_CONTACT_TEMPLATE, contact_xml);
+
+	g_free(contact_xml);
+
+	/*build SOAP and POST it*/
+
+	soap_request = msn_soap_request_new(MSN_CONTACT_SERVER,
+					MSN_ADDRESS_BOOK_POST_URL,
+					MSN_CONTACT_ADD_SOAP_ACTION,
+					body,
+					state,
+					msn_add_contact_read_cb,
+					msn_add_contact_written_cb,
+					msn_contact_connect_init);
+	msn_soap_post(contact->soapconn,soap_request);
+
+	g_free(body);
+}
+
+static gboolean
+msn_add_contact_to_group_read_cb(MsnSoapConn *soapconn)
+{
+	MsnCallbackState *state; 
+	MsnUserList *userlist;
+
+	g_return_val_if_fail(soapconn->data_cb != NULL, TRUE);
+	g_return_val_if_fail(soapconn->session != NULL, FALSE);
+	g_return_val_if_fail(soapconn->session->userlist != NULL, TRUE);
+
+	userlist = soapconn->session->userlist;
+
+	state = (MsnCallbackState *) soapconn->data_cb;
+
+	if (soapconn->body == NULL) {
+		msn_callback_state_free(state);
+		return TRUE;
+	}
+	
+	if (msn_userlist_add_buddy_to_group(userlist, state->who, state->new_group_name) == TRUE) {
+		purple_debug_info("MSNCL", "Contact %s added to group %s successfully!\n", state->who, state->new_group_name);
+	} else {
+		purple_debug_info("MSNCL","Contact %s added to group %s successfully on server, but failed in the local list\n", state->who, state->new_group_name);
+	}
+
+	if (state->action & MSN_ADD_BUDDY) {
+
+        	if ( !msn_user_is_yahoo(soapconn->session->account, state->who) ) {
+
+		                msn_userlist_add_buddy_to_list(userlist, state->who, MSN_LIST_AL);
+		                msn_userlist_add_buddy_to_list(userlist, state->who, MSN_LIST_FL);
+	        }
+	        msn_notification_send_fqy(soapconn->session, state->who);
+	}
+
+	if (state->action & MSN_MOVE_BUDDY) {
+		msn_del_contact_from_group(soapconn->session->contact, state->who, state->old_group_name);
+	} else {
+		msn_callback_state_free(state);
+		msn_soap_free_read_buf(soapconn);
+	}
+	return TRUE;
+}
+
+static void
+msn_add_contact_to_group_written_cb(MsnSoapConn *soapconn)
+{
+	purple_debug_info("MSNCL","Add contact to group request sent!\n");
+	soapconn->read_cb = msn_add_contact_to_group_read_cb;
+}
+
+void
+msn_add_contact_to_group(MsnContact *contact, MsnCallbackState *state, 
+			 const char *passport, const char *groupId)
+{
+	MsnSoapReq *soap_request;
+	MsnUserList *userlist;
+	MsnUser *user;
+	gchar *body = NULL, *contact_xml;
+
+	g_return_if_fail(passport != NULL);
+	g_return_if_fail(groupId != NULL);
+
+	g_return_if_fail(contact != NULL);
+	g_return_if_fail(contact->session != NULL);
+	g_return_if_fail(contact->session->userlist != NULL);
+	
+	userlist = contact->session->userlist;
+
+	if (!strcmp(groupId, MSN_INDIVIDUALS_GROUP_ID) || !strcmp(groupId, MSN_NON_IM_GROUP_ID)) {
+		
+		user = msn_userlist_find_add_user(userlist, passport, passport);
+
+		if (state->action & MSN_ADD_BUDDY) {
+			msn_add_contact(contact, state, passport);
+			return;
+		}
+
+		if (state->action & MSN_MOVE_BUDDY) {
+			msn_user_add_group_id(user, groupId);
+			msn_del_contact_from_group(contact, passport, state->old_group_name);
+		} else {
+			msn_callback_state_free(state);
+		}
+
+		return;
+	}
+
+
+	purple_debug_info("MSNCL", "Adding user %s to group %s\n", passport, 
+			  msn_userlist_find_group_name(userlist, groupId));
+
+	user = msn_userlist_find_user(userlist, passport);
+	if (user == NULL) {
+		purple_debug_warning("MSN CL", "Unable to retrieve user %s from the userlist!\n", passport);
+	}
+
+	if (user != NULL && user->uid != NULL) {
+		contact_xml = g_strdup_printf(MSN_CONTACT_ID_XML, user->uid);
+	} else {
+		contact_xml = g_strdup_printf(MSN_CONTACT_XML, passport);
+	}
+
+	body = g_strdup_printf(MSN_ADD_CONTACT_GROUP_TEMPLATE, groupId, contact_xml);
+	g_free(contact_xml);
+
+	/*build SOAP and POST it*/
+
+	soap_request = msn_soap_request_new(MSN_CONTACT_SERVER,
+					MSN_ADDRESS_BOOK_POST_URL,
+					MSN_ADD_CONTACT_GROUP_SOAP_ACTION,
+					body,
+					state,
+					msn_add_contact_to_group_read_cb,
+					msn_add_contact_to_group_written_cb,
+					msn_contact_connect_init);
+	msn_soap_post(contact->soapconn,soap_request);
+
+	g_free(body);
+}
+
+
+
+static gboolean
+msn_delete_contact_read_cb(MsnSoapConn *soapconn)
+{
+	MsnUser *user;
+	MsnCallbackState *state = (MsnCallbackState *) soapconn->data_cb;
+	MsnUserList *userlist; 
+
+	g_return_val_if_fail(soapconn->session != NULL, FALSE);
+	g_return_val_if_fail(soapconn->session->userlist != NULL, TRUE);
+
+	userlist = soapconn->session->userlist;
+
+        if (soapconn->body == NULL) {
+                msn_callback_state_free(state);
+                return TRUE;
+        }
+
+	purple_debug_info("MSNCL","Delete contact successful\n");
+
+	user = msn_userlist_find_user_with_id(userlist, state->uid);
+	if (user != NULL) {
+		msn_userlist_remove_user(userlist, user);
+	}
+
+	msn_callback_state_free(state);
+	msn_soap_free_read_buf(soapconn);
+
+	return TRUE;
+}
+
+static void
+msn_delete_contact_written_cb(MsnSoapConn *soapconn)
+{
+	purple_debug_info("MSNCL","Delete contact request written\n");
+	soapconn->read_cb = msn_delete_contact_read_cb;
+}
+
+/*delete a Contact*/
+void
+msn_delete_contact(MsnContact *contact, const char *contactId)
+{	
+	gchar *body = NULL;
+	gchar *contact_id_xml = NULL ;
+	MsnSoapReq *soap_request;
+	MsnCallbackState *state;
+
+	g_return_if_fail(contactId != NULL);
+	contact_id_xml = g_strdup_printf(MSN_CONTACT_ID_XML, contactId);
+
+	state = msn_callback_state_new();
+	msn_callback_state_set_uid(state, contactId);
+
+	/* build SOAP request */
+	purple_debug_info("MSNCL","Deleting contact with contactId: %s\n", contactId);
+	body = g_strdup_printf(MSN_DEL_CONTACT_TEMPLATE, contact_id_xml);
+	soap_request = msn_soap_request_new(MSN_CONTACT_SERVER,
+					MSN_ADDRESS_BOOK_POST_URL,
+					MSN_CONTACT_DEL_SOAP_ACTION,
+					body,
+					state,
+					msn_delete_contact_read_cb,
+					msn_delete_contact_written_cb,
+					msn_contact_connect_init);
+
+	g_free(contact_id_xml);
+
+	/* POST the SOAP request */
+	msn_soap_post(contact->soapconn, soap_request);
+
+	g_free(body);
+}
+
+static gboolean
+msn_del_contact_from_group_read_cb(MsnSoapConn *soapconn)
+{
+	MsnCallbackState *state = (MsnCallbackState *) soapconn->data_cb;
+
+	if (soapconn->body == NULL) {
+		msn_callback_state_free(state);
+		return TRUE;
+	}
+	
+	if (msn_userlist_rem_buddy_from_group(soapconn->session->userlist, state->who, state->old_group_name)) {
+		purple_debug_info("MSN CL", "Contact %s deleted successfully from group %s\n", state->who, state->old_group_name);
+	} else {
+		purple_debug_info("MSN CL", "Contact %s deleted successfully from group %s in the server, but failed in the local list\n", state->who, state->old_group_name);
+	}
+	
+	msn_callback_state_free(state);
+	msn_soap_free_read_buf(soapconn);
+
+	return TRUE;
+}
+
+static void
+msn_del_contact_from_group_written_cb(MsnSoapConn *soapconn)
+{
+	purple_debug_info("MSN CL","Del contact from group request sent!\n");
+	soapconn->read_cb = msn_del_contact_from_group_read_cb;
+}
+
+void
+msn_del_contact_from_group(MsnContact *contact, const char *passport, const char *group_name)
+{
+	MsnSoapReq *soap_request;
+	MsnUserList * userlist;
+	MsnUser *user;
+	MsnCallbackState *state;
+	gchar *body = NULL, *contact_id_xml;
+	const gchar *groupId;
+	
+	g_return_if_fail(passport != NULL);
+	g_return_if_fail(group_name != NULL);
+	g_return_if_fail(contact != NULL);
+	g_return_if_fail(contact->session != NULL);
+	g_return_if_fail(contact->session->userlist != NULL);
+	
+	userlist = contact->session->userlist;
+	
+	groupId = msn_userlist_find_group_id(userlist, group_name);
+	if (groupId != NULL) {
+		purple_debug_info("MSN CL", "Deleting user %s from group %s\n", passport, group_name);
+	} else {
+		purple_debug_warning("MSN CL", "Unable to retrieve group id from group %s !\n", group_name);
+		return;
+	}
+	
+	user = msn_userlist_find_user(userlist, passport);
+	
+	if (user == NULL) {
+		purple_debug_warning("MSN CL", "Unable to retrieve user from passport %s!\n", passport);
+		return;
+	}
+
+	if ( !strcmp(groupId, MSN_INDIVIDUALS_GROUP_ID) || !strcmp(groupId, MSN_NON_IM_GROUP_ID)) {
+		msn_user_remove_group_id(user, groupId);
+		return;
+	}
+
+	state = msn_callback_state_new();
+	msn_callback_state_set_who(state, passport);
+	msn_callback_state_set_guid(state, groupId);
+	msn_callback_state_set_old_group_name(state, group_name);
+
+	contact_id_xml = g_strdup_printf(MSN_CONTACT_ID_XML, user->uid);
+	body = g_strdup_printf(MSN_CONTACT_DEL_GROUP_TEMPLATE, contact_id_xml, groupId);
+	g_free(contact_id_xml);
+
+	/*build SOAP and POST it*/
+	soap_request = msn_soap_request_new(MSN_CONTACT_SERVER,
+					    MSN_ADDRESS_BOOK_POST_URL,
+					    MSN_CONTACT_DEL_GROUP_SOAP_ACTION,
+					    body,
+					    state,
+					    msn_del_contact_from_group_read_cb,
+					    msn_del_contact_from_group_written_cb,
+					    msn_contact_connect_init);
+	msn_soap_post(contact->soapconn,soap_request);
+
+	g_free(body);
+}
+
+
+static gboolean
+msn_update_contact_read_cb(MsnSoapConn *soapconn)
+{
+	if (soapconn->body == NULL)
+		return TRUE;
+
+	purple_debug_info("MSN CL","Contact updated successfully\n");
+
+	return TRUE;
+}
+
+static void
+msn_update_contact_written_cb(MsnSoapConn *soapconn)
+{
+	purple_debug_info("MSN CL","Update contact information request sent\n");
+	soapconn->read_cb = msn_update_contact_read_cb;
+}
+
+/* Update a contact's nickname */
+
+void
+msn_update_contact(MsnContact *contact, const char* nickname)
+{
+	MsnSoapReq *soap_request;
+	gchar *body, *escaped_nickname;
+
+	/* I'm not sure this is right, but if it isn't, the rest of this function will need to be fixed */
+	g_return_if_fail(nickname != NULL);
+
+	purple_debug_info("MSN CL","Update contact information with new friendly name: %s\n", nickname);
+
+	escaped_nickname = g_markup_escape_text(nickname, -1);
+
+	body = g_strdup_printf(MSN_CONTACT_UPDATE_TEMPLATE, escaped_nickname);
+
+	g_free(escaped_nickname);
+	/*build SOAP and POST it*/
+	soap_request = msn_soap_request_new(MSN_CONTACT_SERVER,
+					MSN_ADDRESS_BOOK_POST_URL,
+					MSN_CONTACT_UPDATE_SOAP_ACTION,
+					body,
+					NULL,
+					msn_update_contact_read_cb,
+					msn_update_contact_written_cb,
+					msn_contact_connect_init);
+	msn_soap_post(contact->soapconn, soap_request);
+
+	g_free(body);
+}
+
+
+static gboolean
+msn_del_contact_from_list_read_cb(MsnSoapConn *soapconn)
+{
+	MsnCallbackState *state = NULL;
+
+	g_return_val_if_fail(soapconn->data_cb != NULL, TRUE);
+	g_return_val_if_fail(soapconn->session != NULL, FALSE);
+	g_return_val_if_fail(soapconn->session->contact != NULL, FALSE);
+	g_return_val_if_fail(soapconn->session->userlist != NULL, FALSE);
+
+	state = (MsnCallbackState *) soapconn->data_cb;
+
+	if (soapconn->body == NULL) {
+		msn_callback_state_free(state);
+		return TRUE;
+	}
+	
+	purple_debug_info("MSN CL", "Contact %s deleted successfully from %s list on server!\n", state->who, MsnMemberRole[state->list_id]);
+
+	if (state->list_id == MSN_LIST_PL) {
+		MsnUser *user = msn_userlist_find_user(soapconn->session->userlist, state->who);
+		
+		if (user != NULL)
+			msn_user_unset_op(user, MSN_LIST_PL_OP);
+
+		msn_add_contact_to_list(soapconn->session->contact, state, state->who, MSN_LIST_RL);
+		return TRUE;
+	}
+
+	if (state->list_id == MSN_LIST_AL) {
+		purple_privacy_permit_remove(soapconn->session->account, state->who, TRUE);
+		msn_add_contact_to_list(soapconn->session->contact, NULL, state->who, MSN_LIST_BL);
+		msn_callback_state_free(state);
+		return TRUE;
+	}
+
+	if (state->list_id == MSN_LIST_BL) {
+		purple_privacy_deny_remove(soapconn->session->account, state->who, TRUE);
+		msn_add_contact_to_list(soapconn->session->contact, NULL, state->who, MSN_LIST_AL);
+		msn_callback_state_free(state);
+		return TRUE;
+	}
+
+	msn_callback_state_free(state);
+	msn_soap_free_read_buf(soapconn);
+
+	return TRUE;
+}
+
+static void
+msn_del_contact_from_list_written_cb(MsnSoapConn *soapconn)
+{
+	purple_debug_info("MSN CL","Delete contact from list SOAP request sent!\n");
+	soapconn->read_cb = msn_del_contact_from_list_read_cb;
+}
+
+void
+msn_del_contact_from_list(MsnContact *contact, MsnCallbackState *state,
+			  const gchar *passport, const MsnListId list)
+{
+	MsnSoapReq *soap_request;
+	gchar *body = NULL, *member = NULL;
+	MsnSoapPartnerScenario partner_scenario;
+	MsnUser *user;
+
+	g_return_if_fail(contact != NULL);
+	g_return_if_fail(passport != NULL);
+	g_return_if_fail(list < 5);
+
+	purple_debug_info("MSN CL", "Deleting contact %s from %s list\n", passport, MsnMemberRole[list]);
+
+	if (state == NULL) {
+		state = msn_callback_state_new();
+	}
+	msn_callback_state_set_list_id(state, list);
+	msn_callback_state_set_who(state, passport);
+
+	if (list == MSN_LIST_PL) {
+		g_return_if_fail(contact->session != NULL);
+		g_return_if_fail(contact->session->userlist != NULL);
+
+		user = msn_userlist_find_user(contact->session->userlist, passport);
+
+		partner_scenario = MSN_PS_CONTACT_API;
+		member = g_strdup_printf(MSN_MEMBER_MEMBERSHIPID_XML, user->membership_id[MSN_LIST_PL]);
+	} else {
+		/* list == MSN_LIST_AL || list == MSN_LIST_BL */
+		partner_scenario = MSN_PS_BLOCK_UNBLOCK;
+		
+		member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML, passport);
+	}
+
+	body = g_strdup_printf( MSN_CONTACT_DELECT_FROM_LIST_TEMPLATE,
+			        MsnSoapPartnerScenarioText[partner_scenario],
+			        MsnMemberRole[list],
+			        member);
+	g_free(member);
+
+	soap_request = msn_soap_request_new( MSN_CONTACT_SERVER,
+					     MSN_SHARE_POST_URL,
+					     MSN_DELETE_MEMBER_FROM_LIST_SOAP_ACTION,
+					     body,
+					     state,
+					     msn_del_contact_from_list_read_cb,
+					     msn_del_contact_from_list_written_cb,
+					     msn_contact_connect_init);
+
+	msn_soap_post(contact->soapconn,soap_request);
+	
+	g_free(body);
+}
+
+static gboolean
+msn_add_contact_to_list_read_cb(MsnSoapConn *soapconn)
+{
+	MsnCallbackState *state = NULL;
+
+	g_return_val_if_fail(soapconn->data_cb != NULL, TRUE);
+	g_return_val_if_fail(soapconn->session != NULL, FALSE);
+	g_return_val_if_fail(soapconn->session->userlist != NULL, FALSE);
+
+	state = (MsnCallbackState *) soapconn->data_cb;
+	
+	if (soapconn->body == NULL) {
+		msn_callback_state_free(state);
+		return TRUE;
+	}
+	
+	purple_debug_info("MSN CL", "Contact %s added successfully to %s list on server!\n", state->who, MsnMemberRole[state->list_id]);
+
+	if (state->list_id == MSN_LIST_RL) {
+		MsnUser *user = msn_userlist_find_user(soapconn->session->userlist, state->who);
+		
+		if (user != NULL) {
+			msn_user_set_op(user, MSN_LIST_RL_OP);
+		}
+
+		if (state->action & MSN_DENIED_BUDDY) {
+			g_return_val_if_fail(soapconn->session->contact != NULL, FALSE);
+
+			msn_add_contact_to_list(soapconn->session->contact, NULL, state->who, MSN_LIST_BL);
+			return TRUE;
+		}
+	}
+
+	if (state->list_id == MSN_LIST_AL) {
+		purple_privacy_permit_add(soapconn->session->account, state->who, TRUE);
+	} else if (state->list_id == MSN_LIST_BL) {
+		purple_privacy_deny_add(soapconn->session->account, state->who, TRUE);
+	}
+
+	msn_callback_state_free(state);
+	msn_soap_free_read_buf(soapconn);
+	return TRUE;
+}
+
+
+static void
+msn_add_contact_to_list_written_cb(MsnSoapConn *soapconn)
+{
+	purple_debug_info("MSN CL","Add contact to list SOAP request sent!\n");
+	soapconn->read_cb = msn_add_contact_to_list_read_cb;
+}
+
+void
+msn_add_contact_to_list(MsnContact *contact, MsnCallbackState *state,
+			const gchar *passport, const MsnListId list)
+{
+	MsnSoapReq *soap_request;
+	gchar *body = NULL, *member = NULL;
+	MsnSoapPartnerScenario partner_scenario;
+
+	g_return_if_fail(contact != NULL);
+	g_return_if_fail(passport != NULL);
+	g_return_if_fail(list < 5);
+
+	purple_debug_info("MSN CL", "Adding contact %s to %s list\n", passport, MsnMemberRole[list]);
+
+	if (state == NULL) {
+		state = msn_callback_state_new();
+	}
+	msn_callback_state_set_list_id(state, list);
+	msn_callback_state_set_who(state, passport);
+
+	partner_scenario = (list == MSN_LIST_RL) ? MSN_PS_CONTACT_API : MSN_PS_BLOCK_UNBLOCK;
+
+	member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML, passport);
+
+	body = g_strdup_printf(MSN_CONTACT_ADD_TO_LIST_TEMPLATE, 
+			       MsnSoapPartnerScenarioText[partner_scenario],
+			       MsnMemberRole[list], 
+			       member);
+
+	g_free(member);
+
+	soap_request = msn_soap_request_new( MSN_CONTACT_SERVER,
+					     MSN_SHARE_POST_URL,
+					     MSN_ADD_MEMBER_TO_LIST_SOAP_ACTION,
+					     body,
+					     state,
+					     msn_add_contact_to_list_read_cb,
+					     msn_add_contact_to_list_written_cb,
+					     msn_contact_connect_init);
+
+	msn_soap_post(contact->soapconn, soap_request);
+
+	g_free(body);
+}
+
+
+#if 0
+static gboolean
+msn_gleams_read_cb(MsnSoapConn * soapconn)
+{
+	purple_debug_info("MSN CL","Gleams read done\n");
+	return TRUE;
+}
+
+static void
+msn_gleams_written_cb(MsnSoapConn * soapconn)
+{
+	purple_debug_info("MSNP14","finish Group written\n");
+	soapconn->read_cb = msn_gleams_read_cb;
+//	msn_soap_read_cb(data,source,cond);
+}
+
+/*get the gleams info*/
+void
+msn_get_gleams(MsnContact *contact)
+{
+	MsnSoapReq *soap_request;
+
+	purple_debug_info("MSNP14","msn get gleams info...\n");
+	/*build SOAP and POST it*/
+	soap_request = msn_soap_request_new(MSN_CONTACT_SERVER,
+					MSN_ADDRESS_BOOK_POST_URL,
+					MSN_GET_GLEAMS_SOAP_ACTION,
+					MSN_GLEAMS_TEMPLATE,
+					NULL,
+					msn_gleams_read_cb,
+					msn_gleams_written_cb,
+					msn_contact_connect_init);
+	msn_soap_post(contact->soapconn,soap_request);
+}
+#endif
+
+
+/***************************************************************
+ * Group Operations
+ ***************************************************************/
+
+static gboolean
+msn_group_read_cb(MsnSoapConn *soapconn)
+{
+	MsnUserList *userlist;
+	MsnCallbackState *state = NULL;
+	
+	purple_debug_info("MSN CL", "Group request successful.\n");
+	
+	g_return_val_if_fail(soapconn->session != NULL, FALSE);
+	g_return_val_if_fail(soapconn->session->userlist != NULL, TRUE);
+	g_return_val_if_fail(soapconn->session->contact != NULL, FALSE);
+
+	state = (MsnCallbackState *) soapconn->data_cb;
+	
+	if (soapconn->body == NULL) {
+		msn_callback_state_free(state);
+		return TRUE;
+	}
+	
+	if (state) {
+		userlist = soapconn->session->userlist;
+		
+		if (state->action & MSN_RENAME_GROUP) {
+			msn_userlist_rename_group_id(soapconn->session->userlist,
+						     state->guid,
+						     state->new_group_name);
+		}
+		
+		if (state->action & MSN_ADD_GROUP) {
+			gchar *guid, *endguid;
+			
+			guid = g_strstr_len(soapconn->read_buf, soapconn->read_len, "<guid>");
+			guid += 6;
+			endguid = g_strstr_len(soapconn->read_buf, soapconn->read_len, "</guid>");
+			*endguid = '\0';
+			/* create and add the new group to the userlist */
+			purple_debug_info("MSN CL", "Adding group %s with guid = %s to the userlist\n", state->new_group_name, guid);
+			msn_group_new(soapconn->session->userlist, guid, state->new_group_name);
+
+			if (state->action & MSN_ADD_BUDDY) {
+				msn_userlist_add_buddy(soapconn->session->userlist,
+						       state->who,
+						       state->new_group_name);
+				msn_callback_state_free(state);
+				return TRUE;
+			}
+			
+			if (state->action & MSN_MOVE_BUDDY) {
+				msn_add_contact_to_group(soapconn->session->contact, state, state->who, guid); 
+				return TRUE;
+			}
+		}
+		
+		if (state->action & MSN_DEL_GROUP) {
+			GList *l;
+			
+			msn_userlist_remove_group_id(soapconn->session->userlist, state->guid);
+			for (l = userlist->users; l != NULL; l = l->next) {
+				msn_user_remove_group_id( (MsnUser *)l->data, state->guid);
+			}
+			
+		}
+			
+		msn_callback_state_free(state);
+	}
+	
+	msn_soap_free_read_buf(soapconn);
+	return TRUE;
+}
+
+static void
+msn_group_written_cb(MsnSoapConn *soapconn)
+{
+	purple_debug_info("MSN CL","Sent group request.\n");
+	soapconn->read_cb = msn_group_read_cb;
+}
+
+/* add group */
+void
+msn_add_group(MsnSession *session, MsnCallbackState *state, const char* group_name)
+{
+	MsnSoapReq *soap_request;
+	MsnContact *contact;
+	char *body = NULL;
+	gchar *escaped_group_name;
+
+	g_return_if_fail(session != NULL);
+	g_return_if_fail(group_name != NULL);
+	
+	contact = session->contact;
+	purple_debug_info("MSN CL","Adding group %s to contact list.\n", group_name);
+
+	if (state == NULL) {
+		state = msn_callback_state_new();
+	}
+
+	msn_callback_state_set_action(state, MSN_ADD_GROUP);
+	msn_callback_state_set_new_group_name(state, group_name);
+
+	/* escape group name's html special chars so it can safely be sent
+	* in a XML SOAP request
+	*/
+	escaped_group_name = g_markup_escape_text(group_name, -1);
+	body = g_strdup_printf(MSN_GROUP_ADD_TEMPLATE, escaped_group_name);
+	g_free(escaped_group_name);
+
+	/*build SOAP and POST it*/
+	soap_request = msn_soap_request_new(MSN_CONTACT_SERVER,
+					MSN_ADDRESS_BOOK_POST_URL,
+					MSN_GROUP_ADD_SOAP_ACTION,
+					body,
+					state,
+					msn_group_read_cb,
+					msn_group_written_cb,
+					msn_contact_connect_init);
+	msn_soap_post(contact->soapconn,soap_request);
+	
+	g_free(body);
+}
+
+/* delete group */
+void
+msn_del_group(MsnSession *session, const gchar *group_name)
+{
+	MsnSoapReq *soap_request;
+	MsnContact *contact;
+	MsnCallbackState *state;
+	char *body = NULL;
+	const gchar *guid;
+
+	g_return_if_fail(session != NULL);
+	
+	g_return_if_fail(group_name != NULL);
+	contact = session->contact;
+	purple_debug_info("MSN CL","Deleting group %s from contact list\n", group_name);
+	
+	guid = msn_userlist_find_group_id(session->userlist, group_name);
+	
+	/* if group uid we need to del is NULL, 
+	*  we need to delete nothing
+	*/
+	if (guid == NULL) {
+		purple_debug_info("MSN CL", "Group %s guid not found, returning.\n", group_name);
+		return;
+	}
+
+	if ( !strcmp(guid, MSN_INDIVIDUALS_GROUP_ID) || !strcmp(guid, MSN_NON_IM_GROUP_ID) ) {
+		// XXX add back PurpleGroup since it isn't really removed in the server?
+		return;
+	}
+
+	state = msn_callback_state_new();
+	msn_callback_state_set_action(state, MSN_DEL_GROUP);
+	msn_callback_state_set_guid(state, guid);
+	
+	body = g_strdup_printf(MSN_GROUP_DEL_TEMPLATE, guid);
+	/*build SOAP and POST it*/
+	soap_request = msn_soap_request_new(MSN_CONTACT_SERVER,
+					    MSN_ADDRESS_BOOK_POST_URL,
+					    MSN_GROUP_DEL_SOAP_ACTION,
+					    body,
+					    state,
+					    msn_group_read_cb,
+					    msn_group_written_cb,
+					    msn_contact_connect_init);
+	msn_soap_post(contact->soapconn, soap_request);
+
+	g_free(body);
+}
+
+/* rename group */
+void
+msn_contact_rename_group(MsnSession *session, const char *old_group_name, const char *new_group_name)
+{
+	MsnSoapReq *soap_request;
+	MsnContact *contact;
+	gchar * escaped_group_name, *body = NULL;
+	const gchar * guid;
+	MsnCallbackState *state = msn_callback_state_new();
+	
+	g_return_if_fail(session != NULL);
+	g_return_if_fail(session->userlist != NULL);
+	g_return_if_fail(old_group_name != NULL);
+	g_return_if_fail(new_group_name != NULL);
+	
+	contact = session->contact;
+	purple_debug_info("MSN CL", "Renaming group %s to %s.\n", old_group_name, new_group_name);
+	
+	guid = msn_userlist_find_group_id(session->userlist, old_group_name);
+	if (guid == NULL)
+		return;
+
+	msn_callback_state_set_guid(state, guid);
+	msn_callback_state_set_new_group_name(state, new_group_name);
+
+	if ( !strcmp(guid, MSN_INDIVIDUALS_GROUP_ID) || !strcmp(guid, MSN_NON_IM_GROUP_ID) ) {
+		msn_add_group(session, state, new_group_name);
+		// XXX move every buddy there (we probably need to fix concurrent SOAP reqs first)
+	}
+
+	msn_callback_state_set_action(state, MSN_RENAME_GROUP);
+	
+	/* escape group name's html special chars so it can safely be sent
+	 * in a XML SOAP request
+	*/
+	escaped_group_name = g_markup_escape_text(new_group_name, -1);
+	
+	body = g_strdup_printf(MSN_GROUP_RENAME_TEMPLATE, guid, escaped_group_name);
+	
+	soap_request = msn_soap_request_new(MSN_CONTACT_SERVER,
+					    MSN_ADDRESS_BOOK_POST_URL,
+					    MSN_GROUP_RENAME_SOAP_ACTION,
+					    body,
+					    state,
+					    msn_group_read_cb,
+					    msn_group_written_cb,
+					    msn_contact_connect_init);
+	msn_soap_post(contact->soapconn, soap_request);
+	
+	g_free(escaped_group_name);
+	g_free(body);
+}
+
+void
+msn_contact_connect_init(MsnSoapConn *soapconn)
+{
+	msn_soap_init(soapconn, MSN_CONTACT_SERVER, TRUE,
+		      msn_contact_login_connect_cb,
+		      msn_contact_login_error_cb);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/protocols/msn/contact.h	Tue Oct 23 17:27:12 2007 +0000
@@ -0,0 +1,448 @@
+/**
+ * @file contact.h			Header file for contact.c
+ *	Author
+ * 		MaYuan<mayuan2006@gmail.com>
+ * purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+#ifndef _MSN_CONTACT_H_
+#define _MSN_CONTACT_H_
+
+#define MSN_CONTACT_SERVER	"contacts.msn.com"
+
+/* Get Contact List */
+
+#define MSN_GET_CONTACT_POST_URL	"/abservice/SharingService.asmx"
+#define MSN_GET_CONTACT_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/FindMembership"
+#define MSN_GET_CONTACT_UPDATE_XML "<View>Full</View>"\
+	"<deltasOnly>true</deltasOnly>"\
+	"<lastChange>%s</lastChange>"
+#define MSN_GET_CONTACT_TEMPLATE	"<?xml version='1.0' encoding='utf-8'?>"\
+"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"\
+	"<soap:Header xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"\
+		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<ApplicationId xmlns=\"http://www.msn.com/webservices/AddressBook\">09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId>"\
+			"<IsMigration xmlns=\"http://www.msn.com/webservices/AddressBook\">false</IsMigration>"\
+			"<PartnerScenario xmlns=\"http://www.msn.com/webservices/AddressBook\">%s</PartnerScenario>"\
+		 "</ABApplicationHeader>"\
+		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<ManagedGroupRequest xmlns=\"http://www.msn.com/webservices/AddressBook\">false</ManagedGroupRequest>"\
+		"</ABAuthHeader>"\
+	"</soap:Header>"\
+	"<soap:Body xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"\
+		"<FindMembership xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<serviceFilter xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+				"<Types xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+					"<ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Messenger</ServiceType>"\
+					"<ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Invitation</ServiceType>"\
+					"<ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">SocialNetwork</ServiceType>"\
+					"<ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Space</ServiceType>"\
+					"<ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Profile</ServiceType>"\
+				"</Types>"\
+			"</serviceFilter>"\
+			"%s"\
+		"</FindMembership>"\
+	"</soap:Body>"\
+"</soap:Envelope>"
+
+/************************************************
+ * Address Book SOAP
+ * *********************************************/
+
+#define MSN_ADDRESS_BOOK_POST_URL	"/abservice/abservice.asmx"
+
+/* Create AddressBook template */
+#define MSN_ADD_ADDRESSBOOK_SOAP_ACTION     "http://www.msn.com/webservices/AddressBook/ABAdd"
+
+#define MSN_ADD_ADDRESSBOOK_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
+"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
+	"<soap:Header>"\
+		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<ApplicationId>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId>"\
+			"<IsMigration>false</IsMigration>"\
+			"<PartnerScenario>Initial</PartnerScenario>"\
+		"</ABApplicationHeader>"\
+		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
+		"</ABAuthHeader>"\
+	"</soap:Header>"\
+	"<soap:Body>"\
+		"<ABAdd xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<abInfo>"\
+				"<name/>"\
+				"<ownerPuid>0</ownerPuid>"\
+				"<ownerEmail>%s</ownerEmail>"\
+				"<fDefault>true</fDefault>"\
+			"</abInfo>"\
+		"</ABAdd>"\
+	"</soap:Body>"\
+"</soap:Envelope>"
+
+/* Get AddressBook */
+#define MSN_GET_ADDRESS_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABFindAll"
+#define MSN_GET_ADDRESS_FULL_TIME	"0001-01-01T00:00:00.0000000-08:00"
+#define MSN_GET_ADDRESS_UPDATE_XML "<deltasOnly>true</deltasOnly>"\
+	"<lastChange>%s</lastChange>"
+
+#define MSN_GET_GLEAM_UPDATE_XML \
+	"%s"\
+	"<dynamicItemView>Gleam</dynamicItemView>"\
+	"<dynamicItemLastChange>%s</dynamicItemLastChange>"
+
+#define MSN_GET_ADDRESS_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
+"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
+	"<soap:Header>"\
+		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<ApplicationId>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId>"\
+			"<IsMigration>false</IsMigration>"\
+			"<PartnerScenario>%s</PartnerScenario>"\
+		"</ABApplicationHeader>"\
+		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
+		"</ABAuthHeader>"\
+	"</soap:Header>"\
+	"<soap:Body>"\
+		"<ABFindAll xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<abId>00000000-0000-0000-0000-000000000000</abId>"\
+			"<abView>Full</abView>"\
+			"%s"\
+		"</ABFindAll>"\
+	"</soap:Body>"\
+"</soap:Envelope>"
+
+
+/*Gleams SOAP request template*/
+#define MSN_GET_GLEAMS_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/ABFindAll"
+#define MSN_GLEAMS_TEMPLATE "<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
+"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
+	"<soap:Header>"\
+		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<ApplicationId>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId>"\
+			"<IsMigration>false</IsMigration>"\
+			"<PartnerScenario>Initial</PartnerScenario>"\
+		"</ABApplicationHeader>"\
+		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
+		"</ABAuthHeader>"\
+	"</soap:Header>"\
+	"<soap:Body>"\
+		"<ABFindAll xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<abId>00000000-0000-0000-0000-000000000000</abId>"\
+			"<abView>Full</abView>"\
+			"<dynamicItemView>Gleam</dynamicItemView>"\
+			"<dynamicItemLastChange>0001-01-01T00:00:00.0000000-08:00</dynamicItemLastChange>"\
+		"</ABFindAll>"\
+	"</soap:Body>"\
+"</soap:Envelope>"
+
+
+/*******************************************************
+ * Contact Management SOAP actions
+ *******************************************************/
+
+/* Add a new contact t*/
+#define MSN_CONTACT_ADD_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABContactAdd"
+#define MSN_CONTACT_LIVE_PENDING_XML	"<Contact xmlns=\"http://www.msn.com/webservices/AddressBook\"><contactInfo><contactType>LivePending</contactType><passportName>%s</passportName><isMessengerUser>true</isMessengerUser></contactInfo></Contact>"
+
+#define MSN_CONTACT_XML	"<Contact xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+				"<contactInfo>"\
+					"<passportName>%s</passportName>"\
+					"<isSmtp>false</isSmtp>"\
+					"<isMessengerUser>true</isMessengerUser>"\
+				"</contactInfo>"\
+			"</Contact>"
+
+#define MSN_CONTACT_DISPLAYNAME_XML	"<Contact xmlns=\"http://www.msn.com/webservices/AddressBook\"><contactInfo><displayName>%s</displayName><passportName>%s</passportName><isMessengerUser>true</isMessengerUser></contactInfo></Contact>"
+
+#define MSN_ADD_CONTACT_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"><soap:Header><ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ApplicationId>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId><IsMigration>false</IsMigration><PartnerScenario>ContactSave</PartnerScenario></ABApplicationHeader><ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ManagedGroupRequest>false</ManagedGroupRequest></ABAuthHeader></soap:Header><soap:Body><ABContactAdd xmlns=\"http://www.msn.com/webservices/AddressBook\"><abId>00000000-0000-0000-0000-000000000000</abId><contacts>%s</contacts><options><EnableAllowListManagement>true</EnableAllowListManagement></options></ABContactAdd></soap:Body></soap:Envelope>"
+
+/* Add a contact to a group */
+#define MSN_ADD_CONTACT_GROUP_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABGroupContactAdd"
+#define MSN_ADD_CONTACT_GROUP_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
+"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
+	"<soap:Header>"\
+		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<ApplicationId>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId>"\
+			"<IsMigration>false</IsMigration>"\
+			"<PartnerScenario>ContactSave</PartnerScenario>"\
+		"</ABApplicationHeader>"\
+		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
+		"</ABAuthHeader>"\
+	"</soap:Header>"\
+	"<soap:Body>"\
+		"<ABGroupContactAdd xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<abId>00000000-0000-0000-0000-000000000000</abId>"\
+			"<groupFilter>"\
+				"<groupIds>"\
+					"<guid>%s</guid>"\
+				"</groupIds>"\
+			"</groupFilter>"\
+			"<contacts>%s</contacts>"\
+			"<groupContactAddOptions>"\
+				"<fGenerateMissingQuickName>true</fGenerateMissingQuickName>"\
+				"<EnableAllowListManagement>true</EnableAllowListManagement>"\
+			"</groupContactAddOptions>"\
+		"</ABGroupContactAdd>"\
+	"</soap:Body>"\
+"</soap:Envelope>"
+
+/* Delete a contact from the Contact List */
+#define MSN_CONTACT_DEL_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABContactDelete"
+#define MSN_CONTACT_ID_XML		"<Contact><contactId>%s</contactId></Contact>"
+#define MSN_DEL_CONTACT_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"><soap:Header><ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ApplicationId>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId><IsMigration>false</IsMigration><PartnerScenario>Timer</PartnerScenario></ABApplicationHeader><ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ManagedGroupRequest>false</ManagedGroupRequest></ABAuthHeader></soap:Header><soap:Body><ABContactDelete xmlns=\"http://www.msn.com/webservices/AddressBook\"><abId>00000000-0000-0000-0000-000000000000</abId><contacts>%s</contacts></ABContactDelete></soap:Body></soap:Envelope>"
+
+/* Remove a contact from a group */
+#define MSN_CONTACT_DEL_GROUP_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABGroupContactDelete"
+#define MSN_CONTACT_DEL_GROUP_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"><soap:Header><ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ApplicationId>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId><IsMigration>false</IsMigration><PartnerScenario>Timer</PartnerScenario></ABApplicationHeader><ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ManagedGroupRequest>false</ManagedGroupRequest></ABAuthHeader></soap:Header><soap:Body><ABGroupContactDelete xmlns=\"http://www.msn.com/webservices/AddressBook\"><abId>00000000-0000-0000-0000-000000000000</abId><contacts>%s</contacts><groupFilter><groupIds><guid>%s</guid></groupIds></groupFilter></ABGroupContactDelete></soap:Body></soap:Envelope>"
+
+
+/* Update Contact Nickname */
+#define MSN_CONTACT_UPDATE_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABContactUpdate"
+#define MSN_CONTACT_UPDATE_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
+"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
+	"<soap:Header>"\
+		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<ApplicationId>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId>"\
+			"<IsMigration>false</IsMigration>"\
+			"<PartnerScenario>Timer</PartnerScenario>"\
+		"</ABApplicationHeader>"\
+		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
+		"</ABAuthHeader>"\
+	"</soap:Header>"\
+	"<soap:Body>"\
+		"<ABContactUpdate xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<abId>00000000-0000-0000-0000-000000000000</abId>"\
+			"<contacts>"\
+				"<Contact xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+					"<contactInfo>"\
+						"<contactType>Me</contactType>"\
+						"<displayName>%s</displayName>"\
+					"</contactInfo>"\
+					"<propertiesChanged>DisplayName</propertiesChanged>"\
+				"</Contact>"\
+			"</contacts>"\
+		"</ABContactUpdate>"\
+	"</soap:Body>"\
+"</soap:Envelope>"
+
+
+/*******************************************************
+ * Add/Delete contact from lists SOAP actions
+ *******************************************************/
+
+/* block means delete from allow list and add contact to block list */
+#define MSN_SHARE_POST_URL		"/abservice/SharingService.asmx"
+
+#define MSN_ADD_MEMBER_TO_LIST_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/AddMember"
+#define MSN_DELETE_MEMBER_FROM_LIST_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/DeleteMember"
+
+#define MSN_MEMBER_PASSPORT_XML	"<Member xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"PassportMember\">"\
+					"<Type>Passport</Type>"\
+					"<State>Accepted</State>"\
+					"<PassportName>%s</PassportName>"\
+				"</Member>"
+
+#define MSN_MEMBER_MEMBERSHIPID_XML	"<Member xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"PassportMember\">"\
+						"<Type>Passport</Type>"\
+						"<MembershipId>%u</MembershipId>"\
+						"<State>Accepted</State>"\
+					"</Member>"
+
+/* first delete contact from allow list */
+
+#define MSN_CONTACT_DELECT_FROM_LIST_TEMPLATE "<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
+"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
+	"<soap:Header>"\
+		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<ApplicationId>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId>"\
+			"<IsMigration>false</IsMigration>"\
+			"<PartnerScenario>%s</PartnerScenario>"\
+		"</ABApplicationHeader>"\
+		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
+		"</ABAuthHeader>"\
+	"</soap:Header>"\
+	"<soap:Body>"\
+		"<DeleteMember xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<serviceHandle>"\
+				"<Id>0</Id>"\
+				"<Type>Messenger</Type>"\
+				"<ForeignId></ForeignId>"\
+			"</serviceHandle>"\
+			"<memberships>"\
+				"<Membership>"\
+					"<MemberRole>%s</MemberRole>"\
+					"<Members>"\
+						"%s"\
+					"</Members>"\
+				"</Membership>"\
+			"</memberships>"\
+		"</DeleteMember>"\
+	"</soap:Body>"\
+"</soap:Envelope>"
+
+#define MSN_CONTACT_ADD_TO_LIST_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
+"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
+	"<soap:Header>"\
+		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<ApplicationId>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId>"\
+			"<IsMigration>false</IsMigration>"\
+			"<PartnerScenario>%s</PartnerScenario>"\
+		"</ABApplicationHeader>"\
+		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
+		"</ABAuthHeader>"\
+	"</soap:Header>"\
+	"<soap:Body>"\
+		"<AddMember xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
+			"<serviceHandle>"\
+				"<Id>0</Id>"\
+				"<Type>Messenger</Type>"\
+				"<ForeignId></ForeignId>"\
+			"</serviceHandle>"\
+			"<memberships>"\
+				"<Membership>"\
+					"<MemberRole>%s</MemberRole>"\
+					"<Members>"\
+						"%s"\
+					"</Members>"\
+				"</Membership>"\
+			"</memberships>"\
+		"</AddMember>"\
+	"</soap:Body>"\
+"</soap:Envelope>"
+
+
+
+/*******************************************************
+ * Group management SOAP actions
+ *******************************************************/
+
+/* add a group */
+#define MSN_GROUP_ADD_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABGroupAdd"
+#define MSN_GROUP_ADD_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"><soap:Header><ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ApplicationId>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId><IsMigration>false</IsMigration><PartnerScenario>GroupSave</PartnerScenario></ABApplicationHeader><ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ManagedGroupRequest>false</ManagedGroupRequest></ABAuthHeader></soap:Header><soap:Body><ABGroupAdd xmlns=\"http://www.msn.com/webservices/AddressBook\"><abId>00000000-0000-0000-0000-000000000000</abId><groupAddOptions><fRenameOnMsgrConflict>false</fRenameOnMsgrConflict></groupAddOptions><groupInfo><GroupInfo><name>%s</name><groupType>C8529CE2-6EAD-434d-881F-341E17DB3FF8</groupType><fMessenger>false</fMessenger><annotations><Annotation><Name>MSN.IM.Display</Name><Value>1</Value></Annotation></annotations></GroupInfo></groupInfo></ABGroupAdd></soap:Body></soap:Envelope>"
+
+/* delete a group */
+#define MSN_GROUP_DEL_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABGroupDelete"
+#define MSN_GROUP_DEL_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"><soap:Header><ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ApplicationId>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId><IsMigration>false</IsMigration><PartnerScenario>Timer</PartnerScenario></ABApplicationHeader><ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ManagedGroupRequest>false</ManagedGroupRequest></ABAuthHeader></soap:Header><soap:Body><ABGroupDelete xmlns=\"http://www.msn.com/webservices/AddressBook\"><abId>00000000-0000-0000-0000-000000000000</abId><groupFilter><groupIds><guid>%s</guid></groupIds></groupFilter></ABGroupDelete></soap:Body></soap:Envelope>"
+
+/* change a group's name */
+#define MSN_GROUP_RENAME_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABGroupUpdate"
+#define MSN_GROUP_RENAME_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"><soap:Header><ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ApplicationId>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId><IsMigration>false</IsMigration><PartnerScenario>Timer</PartnerScenario></ABApplicationHeader><ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ManagedGroupRequest>false</ManagedGroupRequest></ABAuthHeader></soap:Header><soap:Body><ABGroupUpdate xmlns=\"http://www.msn.com/webservices/AddressBook\"><abId>00000000-0000-0000-0000-000000000000</abId><groups><Group><groupId>%s</groupId><groupInfo><name>%s</name></groupInfo><propertiesChanged>GroupName </propertiesChanged></Group></groups></ABGroupUpdate></soap:Body></soap:Envelope>"
+
+typedef enum 
+{
+	MSN_ADD_BUDDY			= 0x01,
+	MSN_MOVE_BUDDY			= 0x02,
+	MSN_ACCEPTED_BUDDY		= 0x04,
+	MSN_DENIED_BUDDY		= 0x08,
+	MSN_ADD_GROUP			= 0x10,
+	MSN_DEL_GROUP			= 0x20,
+	MSN_RENAME_GROUP		= 0x40,
+} MsnCallbackAction;
+
+typedef struct _MsnContact MsnContact;
+
+struct _MsnContact
+{
+	MsnSession *session;
+
+	MsnSoapConn *soapconn;
+};
+
+typedef struct _MsnCallbackState MsnCallbackState;
+
+struct _MsnCallbackState
+{
+	gchar * who;
+	gchar * uid;
+	gchar * old_group_name;
+	gchar * new_group_name;
+	gchar * guid;
+	MsnListId list_id;
+	MsnCallbackAction action;
+};
+
+typedef enum 
+{
+	MSN_PS_INITIAL,
+	MSN_PS_SAVE_CONTACT,
+	MSN_PS_PENDING_LIST,
+	MSN_PS_CONTACT_API,
+	MSN_PS_BLOCK_UNBLOCK
+} MsnSoapPartnerScenario;
+
+/************************************************
+ * function prototype
+ ************************************************/
+MsnContact * msn_contact_new(MsnSession *session);
+void msn_contact_destroy(MsnContact *contact);
+
+MsnCallbackState * msn_callback_state_new(void);
+void msn_callback_state_free(MsnCallbackState *state);
+void msn_callback_state_set_who(MsnCallbackState *state, const gchar *who);
+void msn_callback_state_set_uid(MsnCallbackState *state, const gchar *uid);
+void msn_callback_state_set_old_group_name(MsnCallbackState *state,
+					   const gchar *old_group_name);
+void msn_callback_state_set_new_group_name(MsnCallbackState *state, 
+					   const gchar *new_group_name);
+void msn_callback_state_set_guid(MsnCallbackState *state, const gchar *guid);
+void msn_callback_state_set_list_id(MsnCallbackState *state, MsnListId list_id);
+void msn_callback_state_set_action(MsnCallbackState *state, 
+				   MsnCallbackAction action);
+
+void msn_contact_connect(MsnContact *contact);
+void msn_get_contact_list(MsnContact * contact, 
+			  const MsnSoapPartnerScenario partner_scenario,
+			  const char *update);
+void msn_get_address_book(MsnContact *contact, 
+			  const MsnSoapPartnerScenario partner_scenario,
+			  const char * update, const char * gupdate);
+
+/* contact SOAP operations */
+void msn_update_contact(MsnContact *contact, const char* nickname);
+
+void msn_add_contact(MsnContact *contact, MsnCallbackState *state, 
+		     const char *passport);
+void msn_delete_contact(MsnContact *contact, const char *contactId);
+
+void msn_add_contact_to_group(MsnContact *contact, MsnCallbackState *state, 
+			      const char *passport, const char *groupId);
+void msn_del_contact_from_group(MsnContact *contact, const char *passport, 
+				const char *group_name);
+/* group operations */
+void msn_add_group(MsnSession *session, MsnCallbackState *state, 
+					const char* group_name);
+void msn_del_group(MsnSession *session, const gchar *group_name);
+void msn_contact_rename_group(MsnSession *session, const char *old_group_name,
+						   const char *new_group_name);
+
+/* lists operations */
+void msn_add_contact_to_list(MsnContact *contact, MsnCallbackState *state,
+			     const gchar *passport, const MsnListId list);
+void msn_del_contact_from_list(MsnContact *contact, MsnCallbackState *state,
+			       const gchar *passport, const MsnListId list);
+
+void msn_contact_connect_init(MsnSoapConn *soapconn);
+
+#endif /* _MSN_CONTACT_H_ */
+
--- a/libpurple/protocols/msn/dialog.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/dialog.c	Tue Oct 23 17:27:12 2007 +0000
@@ -36,6 +36,7 @@
 
 /* Remove the buddy referenced by the MsnAddRemData before the serverside list is changed.
  * If the buddy will be added, he'll be added back; if he will be removed, he won't be. */
+/* Actually with our MSNP14 code that isn't true yet, he won't be added back :( */
 static void
 msn_complete_sync_issue(MsnAddRemData *data)
 {
@@ -44,28 +45,32 @@
 
 	if (data->group != NULL)
 		group = purple_find_group(data->group);
-	
+
 	if (group != NULL)
 		buddy = purple_find_buddy_in_group(purple_connection_get_account(data->gc), data->who, group);
 	else
 		buddy = purple_find_buddy(purple_connection_get_account(data->gc), data->who);
-	
+
 	if (buddy != NULL)
 		purple_blist_remove_buddy(buddy);
 }
 
+
 static void
 msn_add_cb(MsnAddRemData *data)
 {
-	MsnSession *session;
-	MsnUserList *userlist;
-
+#if 0
+	/* this *should* be necessary !! */
 	msn_complete_sync_issue(data);
+#endif
 
-	session = data->gc->proto_data;
-	userlist = session->userlist;
+	if (g_list_find(purple_connections_get_all(), data->gc) != NULL)
+	{
+		MsnSession *session = data->gc->proto_data;
+		MsnUserList *userlist = session->userlist;
 
-	msn_userlist_add_buddy(userlist, data->who, MSN_LIST_FL, data->group);
+		msn_userlist_add_buddy(userlist, data->who, data->group);
+	}
 
 	g_free(data->group);
 	g_free(data->who);
@@ -75,17 +80,20 @@
 static void
 msn_rem_cb(MsnAddRemData *data)
 {
-	MsnSession *session;
-	MsnUserList *userlist;
-
 	msn_complete_sync_issue(data);
 
-	session = data->gc->proto_data;
-	userlist = session->userlist;
+	if (g_list_find(purple_connections_get_all(), data->gc) != NULL)
+	{
+		MsnSession *session = data->gc->proto_data;
+		MsnUserList *userlist = session->userlist;
 
-	msn_userlist_rem_buddy(userlist, data->who, MSN_LIST_FL, data->group);
+		if (data->group == NULL) {
+			msn_userlist_rem_buddy_from_list(userlist, data->who, MSN_LIST_FL);
+		} else {
+			g_free(data->group);
+		}
+	}
 
-	g_free(data->group);
 	g_free(data->who);
 	g_free(data);
 }
@@ -104,7 +112,7 @@
 
 	data        = g_new0(MsnAddRemData, 1);
 	data->who   = g_strdup(passport);
-	data->group = g_strdup(group_name);
+	data->group = group_name != NULL ? g_strdup(group_name) : NULL;
 	data->gc    = gc;
 
 	msg = g_strdup_printf(_("Buddy list synchronization issue in %s (%s)"),
--- a/libpurple/protocols/msn/directconn.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/directconn.c	Tue Oct 23 17:27:12 2007 +0000
@@ -76,7 +76,6 @@
  * Connection Functions
  **************************************************************************/
 
-#if 0
 static int
 create_listener(int port)
 {
@@ -162,7 +161,6 @@
 
 	return fd;
 }
-#endif
 
 static size_t
 msn_directconn_write(MsnDirectConn *directconn,
@@ -290,6 +288,11 @@
 		/* ERROR */
 		purple_debug_error("msn", "error reading\n");
 
+		if (directconn->inpa)
+			purple_input_remove(directconn->inpa);
+
+		close(directconn->fd);
+
 		msn_directconn_destroy(directconn);
 
 		return;
@@ -304,6 +307,11 @@
 		/* ERROR */
 		purple_debug_error("msn", "error reading\n");
 
+		if (directconn->inpa)
+			purple_input_remove(directconn->inpa);
+
+		close(directconn->fd);
+
 		msn_directconn_destroy(directconn);
 
 		return;
@@ -350,17 +358,22 @@
 		/* ERROR */
 		purple_debug_error("msn", "error reading\n");
 
+		if (directconn->inpa)
+			purple_input_remove(directconn->inpa);
+
+		close(directconn->fd);
+
 		msn_directconn_destroy(directconn);
 	}
 }
 
 static void
-connect_cb(gpointer data, gint source, const gchar *error_message)
+connect_cb(gpointer data, gint source, PurpleInputCondition cond)
 {
 	MsnDirectConn* directconn;
 	int fd;
 
-	purple_debug_misc("msn", "directconn: connect_cb: %d\n", source);
+	purple_debug_misc("msn", "directconn: connect_cb: %d, %d.\n", source, cond);
 
 	directconn = data;
 	directconn->connect_data = NULL;
@@ -440,7 +453,6 @@
 	return (directconn->connect_data != NULL);
 }
 
-#if 0
 void
 msn_directconn_listen(MsnDirectConn *directconn)
 {
@@ -460,7 +472,6 @@
 	directconn->port = port;
 	directconn->c = 0;
 }
-#endif
 
 MsnDirectConn*
 msn_directconn_new(MsnSlpLink *slplink)
--- a/libpurple/protocols/msn/directconn.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/directconn.h	Tue Oct 23 17:27:12 2007 +0000
@@ -52,9 +52,7 @@
 MsnDirectConn *msn_directconn_new(MsnSlpLink *slplink);
 gboolean msn_directconn_connect(MsnDirectConn *directconn,
 								const char *host, int port);
-#if 0
 void msn_directconn_listen(MsnDirectConn *directconn);
-#endif
 void msn_directconn_send_msg(MsnDirectConn *directconn, MsnMessage *msg);
 void msn_directconn_parse_nonce(MsnDirectConn *directconn, const char *nonce);
 void msn_directconn_destroy(MsnDirectConn *directconn);
--- a/libpurple/protocols/msn/group.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/group.c	Tue Oct 23 17:27:12 2007 +0000
@@ -25,18 +25,18 @@
 #include "group.h"
 
 MsnGroup *
-msn_group_new(MsnUserList *userlist, int id, const char *name)
+msn_group_new(MsnUserList *userlist, const char *id, const char *name)
 {
 	MsnGroup *group;
 
-	g_return_val_if_fail(id >= 0,      NULL);
+	g_return_val_if_fail(id != NULL,      NULL);
 	g_return_val_if_fail(name != NULL, NULL);
 
 	group = g_new0(MsnGroup, 1);
 
 	msn_userlist_add_group(userlist, group);
 
-	group->id      = id;
+	group->id      = g_strdup(id);
 	group->name    = g_strdup(name);
 
 	return group;
@@ -47,17 +47,19 @@
 {
 	g_return_if_fail(group != NULL);
 
+	g_free(group->id);
 	g_free(group->name);
 	g_free(group);
 }
 
 void
-msn_group_set_id(MsnGroup *group, int id)
+msn_group_set_id(MsnGroup *group, const char *id)
 {
 	g_return_if_fail(group != NULL);
-	g_return_if_fail(id >= 0);
+	g_return_if_fail(id != NULL);
 
-	group->id = id;
+	g_free(group->id);
+	group->id = g_strdup(id);
 }
 
 void
@@ -66,16 +68,14 @@
 	g_return_if_fail(group != NULL);
 	g_return_if_fail(name  != NULL);
 
-	if (group->name != NULL)
-		g_free(group->name);
-
+	g_free(group->name);
 	group->name = g_strdup(name);
 }
 
-int
+char*
 msn_group_get_id(const MsnGroup *group)
 {
-	g_return_val_if_fail(group != NULL, -1);
+	g_return_val_if_fail(group != NULL, NULL);
 
 	return group->id;
 }
--- a/libpurple/protocols/msn/group.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/group.h	Tue Oct 23 17:27:12 2007 +0000
@@ -30,8 +30,21 @@
 
 #include "session.h"
 #include "user.h"
+#include "soap.h"
+#include "userlist.h"
 
-#include "userlist.h"
+#define MSN_ADD_GROUPS	"<GroupInfo><name>test111</name><groupType>C8529CE2-6EAD-434d-881F-341E17DB3FF8</groupType><fMessenger>false</fMessenger><annotations><Annotation><Name>MSN.IM.Display</Name><Value>1</Value></Annotation></annotations></GroupInfo>"
+
+#define MSN_ADD_GROUP_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"><soap:Header><ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ApplicationId>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId><IsMigration>false</IsMigration><PartnerScenario>GroupSave</PartnerScenario></ABApplicationHeader><ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ManagedGroupRequest>false</ManagedGroupRequest></ABAuthHeader></soap:Header><soap:Body><ABGroupAdd xmlns=\"http://www.msn.com/webservices/AddressBook\"><abId>00000000-0000-0000-0000-000000000000</abId><groupAddOptions><fRenameOnMsgrConflict>false</fRenameOnMsgrConflict></groupAddOptions><groupInfo>%s</groupInfo></ABGroupAdd></soap:Body></soap:Envelope>"
+
+#define MSN_GROUP_IDS	"<guid>9e57e654-59f0-44d1-aedc-0a7500b7e51f</guid>"
+#define MSN_DELETE_GROUP_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"><soap:Header><ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ApplicationId>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId><IsMigration>false</IsMigration><PartnerScenario>Timer</PartnerScenario></ABApplicationHeader><ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ManagedGroupRequest>false</ManagedGroupRequest></ABAuthHeader></soap:Header><soap:Body><ABGroupDelete xmlns=\"http://www.msn.com/webservices/AddressBook\"><abId>00000000-0000-0000-0000-000000000000</abId><groupFilter><groupIds>%s</groupIds></groupFilter></ABGroupDelete></soap:Body></soap:Envelope>"
+
+#define MSN_INDIVIDUALS_GROUP_ID	"1983"
+#define MSN_INDIVIDUALS_GROUP_NAME	"Other Contacts"
+
+#define MSN_NON_IM_GROUP_ID		"email"
+#define MSN_NON_IM_GROUP_NAME	"Non-IM Contacts"
 
 /**
  * A group.
@@ -39,8 +52,9 @@
 struct _MsnGroup
 {
 	MsnSession *session;    /**< The MSN session.           */
+	MsnSoapConn *soapconn;
 
-	int id;                 /**< The group ID.              */
+	char *id;                 /**< The group ID.              */
 	char *name;             /**< The name of the group.     */
 };
 
@@ -58,7 +72,7 @@
  *
  * @return A new group structure.
  */
-MsnGroup *msn_group_new(MsnUserList *userlist, int id, const char *name);
+MsnGroup *msn_group_new(MsnUserList *userlist, const char *id, const char *name);
 
 /**
  * Destroys a group structure.
@@ -73,7 +87,7 @@
  * @param group The group.
  * @param id    The ID.
  */
-void msn_group_set_id(MsnGroup *group, int id);
+void msn_group_set_id(MsnGroup *group, const char *id);
 
 /**
  * Sets the name for a group.
@@ -90,7 +104,7 @@
  *
  * @return The ID.
  */
-int msn_group_get_id(const MsnGroup *group);
+char* msn_group_get_id(const MsnGroup *group);
 
 /**
  * Returns the name for a group.
--- a/libpurple/protocols/msn/history.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/history.c	Tue Oct 23 17:27:12 2007 +0000
@@ -84,3 +84,4 @@
 		msn_transaction_destroy(trans);
 	}
 }
+
--- a/libpurple/protocols/msn/httpconn.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/httpconn.c	Tue Oct 23 17:27:12 2007 +0000
@@ -169,7 +169,7 @@
 	/* Now we should be able to process the data. */
 	if ((s = purple_strcasestr(header, "X-MSN-Messenger: ")) != NULL)
 	{
-		char *full_session_id, *gw_ip, *session_action;
+		gchar *full_session_id = NULL, *gw_ip = NULL, *session_action = NULL;
 		char *t, *session_id;
 		char **elems, **cur, **tokens;
 
@@ -196,13 +196,16 @@
 		{
 			tokens = g_strsplit(*cur, "=", 2);
 
-			if (strcmp(tokens[0], "SessionID") == 0)
+			if (strcmp(tokens[0], "SessionID") == 0) {
+				g_free(full_session_id);
 				full_session_id = tokens[1];
-			else if (strcmp(tokens[0], "GW-IP") == 0)
+			} else if (strcmp(tokens[0], "GW-IP") == 0) {
+				g_free(gw_ip);
 				gw_ip = tokens[1];
-			else if (strcmp(tokens[0], "Session") == 0)
+			} else if (strcmp(tokens[0], "Session") == 0) {
+				g_free(session_action);
 				session_action = tokens[1];
-			else
+			} else
 				g_free(tokens[1]);
 
 			g_free(tokens[0]);
@@ -684,6 +687,17 @@
 
 	g_free(httpconn->host);
 
+	while (httpconn->queue != NULL) {
+		MsnHttpQueueData *queue_data;
+
+		queue_data = (MsnHttpQueueData *) httpconn->queue->data;
+
+		httpconn->queue = g_list_delete_link(httpconn->queue, httpconn->queue);
+
+		g_free(queue_data->body);
+		g_free(queue_data);
+	}
+
 	purple_circ_buffer_destroy(httpconn->tx_buf);
 	if (httpconn->tx_handler > 0)
 		purple_input_remove(httpconn->tx_handler);
--- a/libpurple/protocols/msn/msg.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/msg.c	Tue Oct 23 17:27:12 2007 +0000
@@ -60,17 +60,10 @@
 	purple_debug_info("msn", "message destroy (%p)\n", msg);
 #endif
 
-	if (msg->remote_user != NULL)
-		g_free(msg->remote_user);
-
-	if (msg->body != NULL)
-		g_free(msg->body);
-
-	if (msg->content_type != NULL)
-		g_free(msg->content_type);
-
-	if (msg->charset != NULL)
-		g_free(msg->charset);
+	g_free(msg->remote_user);
+	g_free(msg->body);
+	g_free(msg->content_type);
+	g_free(msg->charset);
 
 	g_hash_table_destroy(msg->attr_table);
 	g_list_free(msg->attr_list);
@@ -126,7 +119,7 @@
 	msn_message_set_charset(msg, "UTF-8");
 	msn_message_set_flag(msg, 'A');
 	msn_message_set_attr(msg, "X-MMS-IM-Format",
-						 "FN=MS%20Sans%20Serif; EF=; CO=0; PF=0");
+						 "FN=MS%20Sans%20Serif; EF=; CO=0; CS=86;PF=0");
 
 	message_cr = purple_str_add_cr(message);
 	msn_message_set_bin_data(msg, message_cr, strlen(message_cr));
@@ -206,7 +199,8 @@
 
 void
 msn_message_parse_payload(MsnMessage *msg,
-						  const char *payload, size_t payload_len)
+						  const char *payload, size_t payload_len,
+						  const char *line_dem,const char *body_dem)
 {
 	char *tmp_base, *tmp;
 	const char *content_type;
@@ -214,12 +208,11 @@
 	char **elems, **cur, **tokens;
 
 	g_return_if_fail(payload != NULL);
-
 	tmp_base = tmp = g_malloc0(payload_len + 1);
 	memcpy(tmp_base, payload, payload_len);
 
 	/* Parse the attributes. */
-	end = strstr(tmp, "\r\n\r\n");
+	end = strstr(tmp, body_dem);
 	/* TODO? some clients use \r delimiters instead of \r\n, the official client
 	 * doesn't send such messages, but does handle receiving them. We'll just
 	 * avoid crashing for now */
@@ -229,7 +222,7 @@
 	}
 	*end = '\0';
 
-	elems = g_strsplit(tmp, "\r\n", 0);
+	elems = g_strsplit(tmp, line_dem, 0);
 
 	for (cur = elems; *cur != NULL; cur++)
 	{
@@ -240,6 +233,7 @@
 		key = tokens[0];
 		value = tokens[1];
 
+		/*if not MIME content ,then return*/
 		if (!strcmp(key, "MIME-Version"))
 		{
 			g_strfreev(tokens);
@@ -274,7 +268,7 @@
 	g_strfreev(elems);
 
 	/* Proceed to the end of the "\r\n\r\n" */
-	tmp = end + 4;
+	tmp = end + strlen(body_dem);
 
 	/* Now we *should* be at the body. */
 	content_type = msn_message_get_content_type(msg);
@@ -312,6 +306,7 @@
 		/* Import the body. */
 		if (body_len > 0) {
 			msg->body_len = body_len;
+			g_free(msg->body);
 			msg->body = g_malloc0(msg->body_len + 1);
 			memcpy(msg->body, tmp, msg->body_len);
 			tmp += body_len;
@@ -328,6 +323,7 @@
 	{
 		if (payload_len - (tmp - tmp_base) > 0) {
 			msg->body_len = payload_len - (tmp - tmp_base);
+			g_free(msg->body);
 			msg->body = g_malloc0(msg->body_len + 1);
 			memcpy(msg->body, tmp, msg->body_len);
 		}
@@ -480,6 +476,7 @@
 		{
 			memcpy(n, body, body_len);
 			n += body_len;
+			*n = '\0';
 		}
 	}
 
@@ -552,10 +549,8 @@
 {
 	g_return_if_fail(msg != NULL);
 
-	if (msg->content_type != NULL)
-		g_free(msg->content_type);
-
-	msg->content_type = (type != NULL) ? g_strdup(type) : NULL;
+	g_free(msg->content_type);
+	msg->content_type = g_strdup(type);
 }
 
 const char *
@@ -571,10 +566,8 @@
 {
 	g_return_if_fail(msg != NULL);
 
-	if (msg->charset != NULL)
-		g_free(msg->charset);
-
-	msg->charset = (charset != NULL) ? g_strdup(charset) : NULL;
+	g_free(msg->charset);
+	msg->charset = g_strdup(charset);
 }
 
 const char *
@@ -662,10 +655,11 @@
 
 		tokens = g_strsplit(*cur, ": ", 2);
 
-		if (tokens[0] != NULL && tokens[1] != NULL)
+		if (tokens[0] != NULL && tokens[1] != NULL) {
 			g_hash_table_insert(table, tokens[0], tokens[1]);
-
-		g_free(tokens);
+			g_free(tokens);
+		} else
+			g_strfreev(tokens);
 	}
 
 	g_strfreev(elems);
--- a/libpurple/protocols/msn/msg.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/msg.h	Tue Oct 23 17:27:12 2007 +0000
@@ -34,6 +34,12 @@
 
 typedef void (*MsnMsgCb)(MsnMessage *, void *data);
 
+#define MSG_BODY_DEM	"\r\n\r\n"
+#define MSG_LINE_DEM	"\r\n"
+
+#define MSG_OIM_BODY_DEM	"\n\n"
+#define MSG_OIM_LINE_DEM	"\n"
+
 /*
 typedef enum
 {
@@ -180,7 +186,8 @@
  * @param payload_len The length of the payload.
  */
 void msn_message_parse_payload(MsnMessage *msg, const char *payload,
-							   size_t payload_len);
+							   size_t payload_len,
+						  const char *line_dem,const char *body_dem);
 
 /**
  * Destroys a message.
--- a/libpurple/protocols/msn/msn-utils.c	Tue Oct 23 17:05:12 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,439 +0,0 @@
-/**
- * @file msn-utils.c Utility functions
- *
- * purple
- *
- * Purple is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- */
-#include "msn.h"
-#include "msn-utils.h"
-
-void
-msn_parse_format(const char *mime, char **pre_ret, char **post_ret)
-{
-	char *cur;
-	GString *pre  = g_string_new(NULL);
-	GString *post = g_string_new(NULL);
-	unsigned int colors[3];
-
-	if (pre_ret  != NULL) *pre_ret  = NULL;
-	if (post_ret != NULL) *post_ret = NULL;
-
-	cur = strstr(mime, "FN=");
-
-	if (cur && (*(cur = cur + 3) != ';'))
-	{
-		pre = g_string_append(pre, "<FONT FACE=\"");
-
-		while (*cur && *cur != ';')
-		{
-			pre = g_string_append_c(pre, *cur);
-			cur++;
-		}
-
-		pre = g_string_append(pre, "\">");
-		post = g_string_prepend(post, "</FONT>");
-	}
-
-	cur = strstr(mime, "EF=");
-
-	if (cur && (*(cur = cur + 3) != ';'))
-	{
-		while (*cur && *cur != ';')
-		{
-			pre = g_string_append_c(pre, '<');
-			pre = g_string_append_c(pre, *cur);
-			pre = g_string_append_c(pre, '>');
-			post = g_string_prepend_c(post, '>');
-			post = g_string_prepend_c(post, *cur);
-			post = g_string_prepend_c(post, '/');
-			post = g_string_prepend_c(post, '<');
-			cur++;
-		}
-	}
-
-	cur = strstr(mime, "CO=");
-
-	if (cur && (*(cur = cur + 3) != ';'))
-	{
-		int i;
-
-		i = sscanf(cur, "%02x%02x%02x;", &colors[0], &colors[1], &colors[2]);
-
-		if (i > 0)
-		{
-			char tag[64];
-
-			if (i == 1)
-			{
-				colors[1] = 0;
-				colors[2] = 0;
-			}
-			else if (i == 2)
-			{
-				unsigned int temp = colors[0];
-
-				colors[0] = colors[1];
-				colors[1] = temp;
-				colors[2] = 0;
-			}
-			else if (i == 3)
-			{
-				unsigned int temp = colors[2];
-
-				colors[2] = colors[0];
-				colors[0] = temp;
-			}
-
-			g_snprintf(tag, sizeof(tag),
-					   "<FONT COLOR=\"#%02hhx%02hhx%02hhx\">",
-					   colors[0], colors[1], colors[2]);
-
-			pre = g_string_append(pre, tag);
-			post = g_string_prepend(post, "</FONT>");
-		}
-	}
-
-	cur = strstr(mime, "RL=");
-
-	if (cur && (*(cur = cur + 3) != ';'))
-	{
-		if (*cur == '1')
-		{
-			/* RTL text was received */
-			pre = g_string_append(pre, "<SPAN style=\"direction:rtl;text-align:right;\">");
-			post = g_string_prepend(post, "</SPAN>");
-		}
-	}
-
-	cur = g_strdup(purple_url_decode(pre->str));
-	g_string_free(pre, TRUE);
-
-	if (pre_ret != NULL)
-		*pre_ret = cur;
-	else
-		g_free(cur);
-
-	cur = g_strdup(purple_url_decode(post->str));
-	g_string_free(post, TRUE);
-
-	if (post_ret != NULL)
-		*post_ret = cur;
-	else
-		g_free(cur);
-}
-
-/*
- * We need this because we're only supposed to encode spaces in the font
- * names. purple_url_encode() isn't acceptable.
- */
-static const char *
-encode_spaces(const char *str)
-{
-	static char buf[BUF_LEN];
-	const char *c;
-	char *d;
-
-	g_return_val_if_fail(str != NULL, NULL);
-
-	for (c = str, d = buf; *c != '\0'; c++)
-	{
-		if (*c == ' ')
-		{
-			*d++ = '%';
-			*d++ = '2';
-			*d++ = '0';
-		}
-		else
-			*d++ = *c;
-	}
-
-	return buf;
-}
-
-/*
- * Taken from the zephyr plugin.
- * This parses HTML formatting (put out by one of the gtkimhtml widgets
- * and converts it to msn formatting. It doesn't deal with the tag closing,
- * but gtkimhtml widgets give valid html.
- * It currently deals properly with <b>, <u>, <i>, <font face=...>,
- * <font color=...>, <span dir=...>, <span style="direction: ...">.
- * It ignores <font back=...> and <font size=...>
- */
-void
-msn_import_html(const char *html, char **attributes, char **message)
-{
-	int len, retcount = 0;
-	const char *c;
-	char *msg;
-	char *fontface = NULL;
-	char fonteffect[4];
-	char fontcolor[7];
-	char direction = '0';
-
-	gboolean has_bold = FALSE;
-	gboolean has_italic = FALSE;
-	gboolean has_underline = FALSE;
-	gboolean has_strikethrough = FALSE;
-
-	g_return_if_fail(html       != NULL);
-	g_return_if_fail(attributes != NULL);
-	g_return_if_fail(message    != NULL);
-
-	len = strlen(html);
-	msg = g_malloc0(len + 1);
-
-	memset(fontcolor, 0, sizeof(fontcolor));
-	strcat(fontcolor, "0");
-	memset(fonteffect, 0, sizeof(fonteffect));
-
-	for (c = html; *c != '\0';)
-	{
-		if (*c == '<')
-		{
-			if (!g_ascii_strncasecmp(c + 1, "br>", 3))
-			{
-				msg[retcount++] = '\r';
-				msg[retcount++] = '\n';
-				c += 4;
-			}
-			else if (!g_ascii_strncasecmp(c + 1, "i>", 2))
-			{
-				if (!has_italic)
-				{
-					strcat(fonteffect, "I");
-					has_italic = TRUE;
-				}
-				c += 3;
-			}
-			else if (!g_ascii_strncasecmp(c + 1, "b>", 2))
-			{
-				if (!has_bold)
-				{
-					strcat(fonteffect, "B");
-					has_bold = TRUE;
-				}
-				c += 3;
-			}
-			else if (!g_ascii_strncasecmp(c + 1, "u>", 2))
-			{
-				if (!has_underline)
-				{
-					strcat(fonteffect, "U");
-					has_underline = TRUE;
-				}
-				c += 3;
-			}
-			else if (!g_ascii_strncasecmp(c + 1, "s>", 2))
-			{
-				if (!has_strikethrough)
-				{
-					strcat(fonteffect, "S");
-					has_strikethrough = TRUE;
-				}
-				c += 3;
-			}
-			else if (!g_ascii_strncasecmp(c + 1, "a href=\"", 8))
-			{
-				c += 9;
-
-				if (!g_ascii_strncasecmp(c, "mailto:", 7))
-					c += 7;
-
-				while ((*c != '\0') && g_ascii_strncasecmp(c, "\">", 2))
-					msg[retcount++] = *c++;
-
-				if (*c != '\0')
-					c += 2;
-
-				/* ignore descriptive string */
-				while ((*c != '\0') && g_ascii_strncasecmp(c, "</a>", 4))
-					c++;
-
-				if (*c != '\0')
-					c += 4;
-			}
-			else if (!g_ascii_strncasecmp(c + 1, "span", 4))
-			{
-				/* Bi-directional text support using CSS properties in span tags */
-				c += 5;
-
-				while (*c != '\0' && *c != '>')
-				{
-					while (*c == ' ')
-						c++;
-					if (!g_ascii_strncasecmp(c, "dir=\"rtl\"", 9))
-					{
-						c += 9;
-						direction = '1';
-					}
-					else if (!g_ascii_strncasecmp(c, "style=\"", 7))
-					{
-						/* Parse inline CSS attributes */
-						char *attributes;
-						int attr_len = 0;
-						c += 7;
-						while (*(c + attr_len) != '\0' && *(c + attr_len) != '"')
-							attr_len++;
-						if (*(c + attr_len) == '"')
-						{
-							char *attr_dir;
-							attributes = g_strndup(c, attr_len);
-							attr_dir = purple_markup_get_css_property(attributes, "direction");
-							if (attr_dir && (!g_ascii_strncasecmp(attr_dir, "RTL", 3)))
-								direction = '1';
-							g_free(attr_dir);
-							g_free(attributes);
-						}
-
-					}
-					else
-					{
-						c++;
-					}
-				}
-				if (*c == '>')
-					c++;
-			}
-			else if (!g_ascii_strncasecmp(c + 1, "font", 4))
-			{
-				c += 5;
-
-				while ((*c != '\0') && !g_ascii_strncasecmp(c, " ", 1))
-					c++;
-
-				if (!g_ascii_strncasecmp(c, "color=\"#", 7))
-				{
-					c += 8;
-
-					fontcolor[0] = *(c + 4);
-					fontcolor[1] = *(c + 5);
-					fontcolor[2] = *(c + 2);
-					fontcolor[3] = *(c + 3);
-					fontcolor[4] = *c;
-					fontcolor[5] = *(c + 1);
-
-					c += 8;
-				}
-				else if (!g_ascii_strncasecmp(c, "face=\"", 6))
-				{
-					const char *end = NULL;
-					const char *comma = NULL;
-					unsigned int namelen = 0;
-
-					c += 6;
-					end = strchr(c, '\"');
-					comma = strchr(c, ',');
-
-					if (comma == NULL || comma > end)
-						namelen = (unsigned int)(end - c);
-					else
-						namelen = (unsigned int)(comma - c);
-
-					fontface = g_strndup(c, namelen);
-					c = end + 2;
-				}
-				else
-				{
-					/* Drop all unrecognized/misparsed font tags */
-					while ((*c != '\0') && g_ascii_strncasecmp(c, "\">", 2))
-						c++;
-
-					if (*c != '\0')
-						c += 2;
-				}
-			}
-			else
-			{
-				while ((*c != '\0') && (*c != '>'))
-					c++;
-				if (*c != '\0')
-					c++;
-			}
-		}
-		else if (*c == '&')
-		{
-			if (!g_ascii_strncasecmp(c, "&lt;", 4))
-			{
-				msg[retcount++] = '<';
-				c += 4;
-			}
-			else if (!g_ascii_strncasecmp(c, "&gt;", 4))
-			{
-				msg[retcount++] = '>';
-				c += 4;
-			}
-			else if (!g_ascii_strncasecmp(c, "&nbsp;", 6))
-			{
-				msg[retcount++] = ' ';
-				c += 6;
-			}
-			else if (!g_ascii_strncasecmp(c, "&quot;", 6))
-			{
-				msg[retcount++] = '"';
-				c += 6;
-			}
-			else if (!g_ascii_strncasecmp(c, "&amp;", 5))
-			{
-				msg[retcount++] = '&';
-				c += 5;
-			}
-			else if (!g_ascii_strncasecmp(c, "&apos;", 6))
-			{
-				msg[retcount++] = '\'';
-				c += 6;
-			}
-			else
-				msg[retcount++] = *c++;
-		}
-		else
-			msg[retcount++] = *c++;
-	}
-
-	if (fontface == NULL)
-		fontface = g_strdup("MS Sans Serif");
-
-	*attributes = g_strdup_printf("FN=%s; EF=%s; CO=%s; PF=0; RL=%c",
-								  encode_spaces(fontface),
-								  fonteffect, fontcolor, direction);
-	*message = msg;
-
-	g_free(fontface);
-}
-
-void
-msn_parse_socket(const char *str, char **ret_host, int *ret_port)
-{
-	char *host;
-	char *c;
-	int port;
-
-	host = g_strdup(str);
-
-	if ((c = strchr(host, ':')) != NULL)
-	{
-		*c = '\0';
-		port = atoi(c + 1);
-	}
-	else
-		port = 1863;
-
-	*ret_host = host;
-	*ret_port = port;
-}
--- a/libpurple/protocols/msn/msn-utils.h	Tue Oct 23 17:05:12 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/**
- * @file msn-utils.h Utility functions
- *
- * purple
- *
- * Purple is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- */
-#ifndef _MSN_UTILS_H_
-#define _MSN_UTILS_H_
-
-/**
- * Parses the MSN message formatting into a format compatible with Purple.
- *
- * @param mime     The mime header with the formatting.
- * @param pre_ret  The returned prefix string.
- * @param post_ret The returned postfix string.
- *
- * @return The new message.
- */
-void msn_parse_format(const char *mime, char **pre_ret, char **post_ret);
-
-/**
- * Parses the Purple message formatting (html) into the MSN format.
- *
- * @param html			The html message to format.
- * @param attributes	The returned attributes string.
- * @param message		The returned message string.
- *
- * @return The new message.
- */
-void msn_import_html(const char *html, char **attributes, char **message);
-
-void msn_parse_socket(const char *str, char **ret_host, int *ret_port);
-
-#endif /* _MSN_UTILS_H_ */
--- a/libpurple/protocols/msn/msn.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/msn.c	Tue Oct 23 17:27:12 2007 +0000
@@ -37,7 +37,7 @@
 #include "cmds.h"
 #include "core.h"
 #include "prpl.h"
-#include "msn-utils.h"
+#include "msnutils.h"
 #include "version.h"
 
 #include "switchboard.h"
@@ -151,7 +151,7 @@
 	return PURPLE_CMD_RET_OK;
 }
 
-static void
+void
 msn_act_id(PurpleConnection *gc, const char *entry)
 {
 	MsnCmdProc *cmdproc;
@@ -175,9 +175,12 @@
 		return;
 	}
 
-	msn_cmdproc_send(cmdproc, "REA", "%s %s",
-					 purple_account_get_username(account),
-					 alias);
+	if (*alias == '\0') {
+		alias = purple_url_encode(purple_account_get_username(account));
+	}
+
+	msn_cmdproc_send(cmdproc, "PRP", "MFN %s", alias);
+
 }
 
 static void
@@ -251,6 +254,7 @@
 	trans = msn_transaction_new(cmdproc, "PGD", "%s 1 %d", who, payload_len);
 
 	msn_transaction_set_payload(trans, payload, payload_len);
+	g_free(payload);
 
 	msn_page_destroy(page);
 
@@ -414,6 +418,28 @@
 	return user && user->mobile;
 }
 
+void
+msn_send_privacy(PurpleConnection *gc)
+{
+       PurpleAccount *account;
+        MsnSession *session;
+        MsnCmdProc *cmdproc;
+
+        account = purple_connection_get_account(gc);
+        session = gc->proto_data;
+        cmdproc = session->notification->cmdproc;
+
+        if (account->perm_deny == PURPLE_PRIVACY_ALLOW_ALL ||
+                account->perm_deny == PURPLE_PRIVACY_DENY_USERS)
+        {
+                msn_cmdproc_send(cmdproc, "BLP", "%s", "AL");
+        }
+        else
+        {
+                msn_cmdproc_send(cmdproc, "BLP", "%s", "BL");
+        }
+}
+
 static void
 initiate_chat_cb(PurpleBlistNode *node, gpointer data)
 {
@@ -460,6 +486,7 @@
 	session = gc->proto_data;
 
 	xfer = purple_xfer_new(gc->account, PURPLE_XFER_SEND, who);
+
 	if (xfer)
 	{
 		slplink = msn_session_get_slplink(session, who);
@@ -511,20 +538,27 @@
 	return "msn";
 }
 
+/*
+ * Set the User status text
+ * Add the PSM String Using "Name - PSM String" format
+ */
 static char *
 msn_status_text(PurpleBuddy *buddy)
 {
 	PurplePresence *presence;
 	PurpleStatus *status;
+	const char *msg, *cmedia;
 
 	presence = purple_buddy_get_presence(buddy);
 	status = purple_presence_get_active_status(presence);
 
-	if (!purple_presence_is_available(presence) && !purple_presence_is_idle(presence))
-	{
-		return g_strdup(purple_status_get_name(status));
-	}
+	msg = purple_status_get_attr_string(status, "message");
+	cmedia = purple_status_get_attr_string(status, PURPLE_TUNE_FULL);
 
+	if (cmedia)
+		return g_markup_escape_text(cmedia, -1);
+	else if (msg)
+		return g_markup_escape_text(msg, -1);
 	return NULL;
 }
 
@@ -540,14 +574,43 @@
 
 	if (purple_presence_is_online(presence))
 	{
-		purple_notify_user_info_add_pair(user_info, _("Status"),
-									   (purple_presence_is_idle(presence) ? _("Idle") : purple_status_get_name(status)));
-	}
+		const char *psm, *currentmedia, *name;
+		char *tmp;
+
+		psm = purple_status_get_attr_string(status, "message");
+		currentmedia = purple_status_get_attr_string(status, PURPLE_TUNE_FULL);
+
+		if (!purple_presence_is_available(presence)) {
+			name = purple_status_get_name(status);
+		} else {
+			name = NULL;
+		}
+
+		if (name != NULL && *name) {
+			char *tmp2 = g_markup_escape_text(name, -1);
 
-	if (full && user)
-	{
-		purple_notify_user_info_add_pair(user_info, _("Has you"),
-									   ((user->list_op & (1 << MSN_LIST_RL)) ? _("Yes") : _("No")));
+			if (psm != NULL && *psm) {
+				tmp = g_markup_escape_text(psm, -1);
+				purple_notify_user_info_add_pair(user_info, tmp2, tmp);
+				g_free(tmp);
+			} else {
+				purple_notify_user_info_add_pair(user_info, _("Status"), tmp2);
+			}
+
+			g_free(tmp2);
+		} else {
+			if (psm != NULL && *psm) {
+				tmp = g_markup_escape_text(psm, -1);
+				purple_notify_user_info_add_pair(user_info, _("Status"), tmp);
+				g_free(tmp);
+			}
+		}
+
+		if (currentmedia) {
+			tmp = g_markup_escape_text(currentmedia, -1);
+			purple_notify_user_info_add_pair(user_info, _("Current media"), tmp);
+			g_free(tmp);
+		}
 	}
 
 	/* XXX: This is being shown in non-full tooltips because the
@@ -567,28 +630,44 @@
 	PurpleStatusType *status;
 	GList *types = NULL;
 
-	status = purple_status_type_new_full(PURPLE_STATUS_AVAILABLE,
-			NULL, NULL, FALSE, TRUE, FALSE);
+	status = purple_status_type_new_with_attrs(
+				PURPLE_STATUS_AVAILABLE, NULL, NULL, TRUE, TRUE, FALSE,
+				"message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+				PURPLE_TUNE_FULL, _("Current media"), purple_value_new(PURPLE_TYPE_STRING),
+				NULL);
 	types = g_list_append(types, status);
 
-	status = purple_status_type_new_full(PURPLE_STATUS_AWAY,
-			NULL, NULL, FALSE, TRUE, FALSE);
+	status = purple_status_type_new_with_attrs(
+			PURPLE_STATUS_AWAY, NULL, NULL, TRUE, TRUE, FALSE,
+			"message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+			PURPLE_TUNE_FULL, _("Current media"), purple_value_new(PURPLE_TYPE_STRING),
+			NULL);
 	types = g_list_append(types, status);
 
-	status = purple_status_type_new_full(PURPLE_STATUS_AWAY,
-			"brb", _("Be Right Back"), FALSE, TRUE, FALSE);
+	status = purple_status_type_new_with_attrs(
+			PURPLE_STATUS_AWAY, "brb", _("Be Right Back"), TRUE, TRUE, FALSE,
+			"message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+			PURPLE_TUNE_FULL, _("Current media"), purple_value_new(PURPLE_TYPE_STRING),
+			NULL);
 	types = g_list_append(types, status);
 
-	status = purple_status_type_new_full(PURPLE_STATUS_UNAVAILABLE,
-			"busy", _("Busy"), FALSE, TRUE, FALSE);
+	status = purple_status_type_new_with_attrs(
+			PURPLE_STATUS_UNAVAILABLE, "busy", _("Busy"), TRUE, TRUE, FALSE,
+			"message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+			PURPLE_TUNE_FULL, _("Current media"), purple_value_new(PURPLE_TYPE_STRING),
+			NULL);
 	types = g_list_append(types, status);
-
-	status = purple_status_type_new_full(PURPLE_STATUS_UNAVAILABLE,
-			"phone", _("On the Phone"), FALSE, TRUE, FALSE);
+	status = purple_status_type_new_with_attrs(
+			PURPLE_STATUS_UNAVAILABLE, "phone", _("On the Phone"), TRUE, TRUE, FALSE,
+			"message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+			PURPLE_TUNE_FULL, _("Current media"), purple_value_new(PURPLE_TYPE_STRING),
+			NULL);
 	types = g_list_append(types, status);
-
-	status = purple_status_type_new_full(PURPLE_STATUS_AWAY,
-			"lunch", _("Out to Lunch"), FALSE, TRUE, FALSE);
+	status = purple_status_type_new_with_attrs(
+			PURPLE_STATUS_AWAY, "lunch", _("Out to Lunch"), TRUE, TRUE, FALSE,
+			"message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+			PURPLE_TUNE_FULL, _("Current media"), purple_value_new(PURPLE_TYPE_STRING),
+			NULL);
 	types = g_list_append(types, status);
 
 	status = purple_status_type_new_full(PURPLE_STATUS_INVISIBLE,
@@ -788,6 +867,7 @@
 	char *msgformat;
 	char *msgtext;
 
+	purple_debug_info("MSNP14","send IM {%s} to %s\n",message,who);
 	account = purple_connection_get_account(gc);
 
 	if (buddy) {
@@ -801,62 +881,92 @@
 	}
 
 	msn_import_html(message, &msgformat, &msgtext);
+	if(msn_user_is_online(account, who)||
+		msn_user_is_yahoo(account, who)){
+		/*User online,then send Online Instant Message*/
 
-	if (strlen(msgtext) + strlen(msgformat) + strlen(VERSION) > 1564)
-	{
+		if (strlen(msgtext) + strlen(msgformat) + strlen(VERSION) > 1564)
+		{
+			g_free(msgformat);
+			g_free(msgtext);
+
+			return -E2BIG;
+		}
+
+		msg = msn_message_new_plain(msgtext);
+		msg->remote_user = g_strdup(who);
+		msn_message_set_attr(msg, "X-MMS-IM-Format", msgformat);
+
 		g_free(msgformat);
 		g_free(msgtext);
 
-		return -E2BIG;
-	}
+		purple_debug_info("MSNP14","prepare to send online Message\n");
+		if (g_ascii_strcasecmp(who, purple_account_get_username(account)))
+		{
+			MsnSession *session;
+			MsnSwitchBoard *swboard;
 
-	msg = msn_message_new_plain(msgtext);
-	msn_message_set_attr(msg, "X-MMS-IM-Format", msgformat);
-
-	g_free(msgformat);
-	g_free(msgtext);
+			session = gc->proto_data;
+			if(msn_user_is_yahoo(account,who)){
+				/*we send the online and offline Message to Yahoo User via UBM*/
+				purple_debug_info("MSNP14","send to Yahoo User\n");
+				uum_send_msg(session,msg);
+			}else{
+				purple_debug_info("MSNP14","send via switchboard\n");
+				swboard = msn_session_get_swboard(session, who, MSN_SB_FLAG_IM);
+				msn_switchboard_send_msg(swboard, msg, TRUE);
+			}
+		}
+		else
+		{
+			char *body_str, *body_enc, *pre, *post;
+			const char *format;
+			MsnIMData *imdata = g_new0(MsnIMData, 1);
+			/*
+			 * In MSN, you can't send messages to yourself, so
+			 * we'll fake like we received it ;)
+			 */
+			body_str = msn_message_to_string(msg);
+			body_enc = g_markup_escape_text(body_str, -1);
+			g_free(body_str);
 
-	if (g_ascii_strcasecmp(who, purple_account_get_username(account)))
-	{
-		MsnSession *session;
-		MsnSwitchBoard *swboard;
+			format = msn_message_get_attr(msg, "X-MMS-IM-Format");
+			msn_parse_format(format, &pre, &post);
+			body_str = g_strdup_printf("%s%s%s", pre ? pre :  "",
+									   body_enc ? body_enc : "", post ? post : "");
+			g_free(body_enc);
+			g_free(pre);
+			g_free(post);
+
+			serv_got_typing_stopped(gc, who);
+			imdata->gc = gc;
+			imdata->who = who;
+			imdata->msg = body_str;
+			imdata->flags = flags;
+			imdata->when = time(NULL);
+			purple_timeout_add(0, msn_send_me_im, imdata);
+		}
 
+		msn_message_destroy(msg);
+	}else	{
+		/*send Offline Instant Message,only to MSN Passport User*/
+		MsnSession *session;
+		MsnOim *oim;
+		char *friendname;
+
+		purple_debug_info("MSNP14","prepare to send offline Message\n");
 		session = gc->proto_data;
-		swboard = msn_session_get_swboard(session, who, MSN_SB_FLAG_IM);
+		/* XXX/khc: hack */
+		if (!session->oim)
+			session->oim = msn_oim_new(session);
 
-		msn_switchboard_send_msg(swboard, msg, TRUE);
+		oim = session->oim;
+		friendname = msn_encode_mime(account->username);
+		msn_oim_prep_send_msg_info(oim, purple_account_get_username(account),
+								   friendname, who,	message);
+		g_free(friendname);
+		msn_oim_send_msg(oim);
 	}
-	else
-	{
-		char *body_str, *body_enc, *pre, *post;
-		const char *format;
-		MsnIMData *imdata = g_new0(MsnIMData, 1);
-		/*
-		 * In MSN, you can't send messages to yourself, so
-		 * we'll fake like we received it ;)
-		 */
-		body_str = msn_message_to_string(msg);
-		body_enc = g_markup_escape_text(body_str, -1);
-		g_free(body_str);
-
-		format = msn_message_get_attr(msg, "X-MMS-IM-Format");
-		msn_parse_format(format, &pre, &post);
-		body_str = g_strdup_printf("%s%s%s", pre ? pre :  "",
-								   body_enc ? body_enc : "", post ? post : "");
-		g_free(body_enc);
-		g_free(pre);
-		g_free(post);
-
-		serv_got_typing_stopped(gc, who);
-		imdata->gc = gc;
-		imdata->who = who;
-		imdata->msg = body_str;
-		imdata->flags = flags;
-		imdata->when = time(NULL);
-		g_idle_add(msn_send_me_im, imdata);
-	}
-
-	msn_message_destroy(msg);
 
 	return 1;
 }
@@ -995,6 +1105,7 @@
 	userlist = session->userlist;
 	who = msn_normalize(gc->account, buddy->name);
 
+	purple_debug_info("MSN","Add user:%s to group:%s\n", who, (group && group->name) ? group->name : "(null)");
 	if (!session->logged_in)
 	{
 #if 0
@@ -1028,8 +1139,7 @@
 	/* XXX - Would group ever be NULL here?  I don't think so...
 	 * shx: Yes it should; MSN handles non-grouped buddies, and this is only
 	 * internal. */
-	msn_userlist_add_buddy(userlist, who, MSN_LIST_FL,
-						   group ? group->name : NULL);
+	msn_userlist_add_buddy(userlist, who, group ? group->name : NULL);
 }
 
 static void
@@ -1045,7 +1155,7 @@
 		return;
 
 	/* XXX - Does buddy->name need to be msn_normalize'd here?  --KingAnt */
-	msn_userlist_rem_buddy(userlist, buddy->name, MSN_LIST_FL, group->name);
+	msn_userlist_rem_buddy(userlist, buddy->name);
 }
 
 static void
@@ -1062,10 +1172,18 @@
 	if (!session->logged_in)
 		return;
 
-	if (user != NULL && user->list_op & MSN_LIST_BL_OP)
-		msn_userlist_rem_buddy(userlist, who, MSN_LIST_BL, NULL);
+	if (user != NULL && user->list_op & MSN_LIST_BL_OP) {
+		msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_BL);
 
-	msn_userlist_add_buddy(userlist, who, MSN_LIST_AL, NULL);
+		/* delete contact from Block list and add it to Allow in the callback */
+		msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_BL);
+	} else {
+		/* just add the contact to Allow list */
+		msn_add_contact_to_list(session->contact, NULL, who, MSN_LIST_AL);
+	}
+
+
+	msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_AL);
 }
 
 static void
@@ -1082,10 +1200,17 @@
 	if (!session->logged_in)
 		return;
 
-	if (user != NULL && user->list_op & MSN_LIST_AL_OP)
-		msn_userlist_rem_buddy(userlist, who, MSN_LIST_AL, NULL);
+	if (user != NULL && user->list_op & MSN_LIST_AL_OP) {
+		msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_AL);
 
-	msn_userlist_add_buddy(userlist, who, MSN_LIST_BL, NULL);
+		/* delete contact from Allow list and add it to Block in the callback */
+		msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_AL);
+	} else {
+		/* just add the contact to Block list */
+		msn_add_contact_to_list(session->contact, NULL, who, MSN_LIST_BL);
+	}
+
+	msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_BL);
 }
 
 static void
@@ -1103,10 +1228,12 @@
 
 	user = msn_userlist_find_user(userlist, who);
 
-	msn_userlist_rem_buddy(userlist, who, MSN_LIST_AL, NULL);
+	msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_AL);
+
+	msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_AL);
 
 	if (user != NULL && user->list_op & MSN_LIST_RL_OP)
-		msn_userlist_add_buddy(userlist, who, MSN_LIST_BL, NULL);
+		msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_BL);
 }
 
 static void
@@ -1124,32 +1251,18 @@
 
 	user = msn_userlist_find_user(userlist, who);
 
-	msn_userlist_rem_buddy(userlist, who, MSN_LIST_BL, NULL);
+	msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_BL);
+
+	msn_del_contact_from_list(session->contact, NULL, who, MSN_LIST_BL);
 
 	if (user != NULL && user->list_op & MSN_LIST_RL_OP)
-		msn_userlist_add_buddy(userlist, who, MSN_LIST_AL, NULL);
+		msn_userlist_add_buddy_to_list(userlist, who, MSN_LIST_AL);
 }
 
 static void
 msn_set_permit_deny(PurpleConnection *gc)
 {
-	PurpleAccount *account;
-	MsnSession *session;
-	MsnCmdProc *cmdproc;
-
-	account = purple_connection_get_account(gc);
-	session = gc->proto_data;
-	cmdproc = session->notification->cmdproc;
-
-	if (account->perm_deny == PURPLE_PRIVACY_ALLOW_ALL ||
-		account->perm_deny == PURPLE_PRIVACY_DENY_USERS)
-	{
-		msn_cmdproc_send(cmdproc, "BLP", "%s", "AL");
-	}
-	else
-	{
-		msn_cmdproc_send(cmdproc, "BLP", "%s", "BL");
-	}
+	msn_send_privacy(gc);
 }
 
 static void
@@ -1286,24 +1399,20 @@
 				 PurpleGroup *group, GList *moved_buddies)
 {
 	MsnSession *session;
-	MsnCmdProc *cmdproc;
-	int old_gid;
-	const char *enc_new_group_name;
 
 	session = gc->proto_data;
-	cmdproc = session->notification->cmdproc;
-	enc_new_group_name = purple_url_encode(group->name);
-
-	old_gid = msn_userlist_find_group_id(session->userlist, old_name);
-
-	if (old_gid >= 0)
+	
+	g_return_if_fail(session != NULL);
+	g_return_if_fail(session->userlist != NULL);
+	
+	if (msn_userlist_find_group_with_name(session->userlist, old_name) != NULL)
 	{
-		msn_cmdproc_send(cmdproc, "REG", "%d %s 0", old_gid,
-						 enc_new_group_name);
+		msn_contact_rename_group(session, old_name, group->name);
 	}
 	else
 	{
-		msn_cmdproc_send(cmdproc, "ADG", "%s 0", enc_new_group_name);
+		/* not found */
+		msn_add_group(session, NULL, group->name);
 	}
 }
 
@@ -1363,15 +1472,20 @@
 {
 	MsnSession *session;
 	MsnCmdProc *cmdproc;
-	int group_id;
 
 	session = gc->proto_data;
 	cmdproc = session->notification->cmdproc;
 
-	if ((group_id = msn_userlist_find_group_id(session->userlist, group->name)) >= 0)
+	purple_debug_info("MSN", "Remove group %s\n", group->name);
+	/*we can't delete the default group*/
+	if(!strcmp(group->name, MSN_INDIVIDUALS_GROUP_NAME)||
+		!strcmp(group->name, MSN_NON_IM_GROUP_NAME))
 	{
-		msn_cmdproc_send(cmdproc, "RMG", "%d", group_id);
+		purple_debug_info("MSN", "This group can't be removed, returning.\n");
+		return ;
 	}
+	
+	msn_del_group(session, group->name);
 }
 
 /**
@@ -1421,12 +1535,11 @@
 {
 	char *p, *q;
 
-	if ((p = strstr(url_text, " contactparams:photopreauthurl=\"")) != NULL)
+	if ((p = strstr(url_text, PHOTO_URL)) != NULL)
 	{
-		p += strlen(" contactparams:photopreauthurl=\"");
+		p += strlen(PHOTO_URL);
 	}
-
-	if (p && (strncmp(p, "http://", 8) == 0) && ((q = strchr(p, '"')) != NULL))
+	if (p && (strncmp(p, "http://",strlen("http://")) == 0) && ((q = strchr(p, '"')) != NULL))
 			return g_strndup(p, q - p);
 
 	return NULL;
@@ -1464,8 +1577,7 @@
 msn_info_strip_search_link(const char *field, size_t len)
 {
 	const char *c;
-	if ((c = strstr(field, " (http://spaces.live.com/default.aspx?page=searchresults")) == NULL &&
-		(c = strstr(field, " (http://spaces.msn.com/default.aspx?page=searchresults")) == NULL)
+	if ((c = strstr(field, " (http://")) == NULL)
 		return g_strndup(field, len);
 	return g_strndup(field, c - field);
 }
@@ -1490,7 +1602,7 @@
 	MsnGetInfoStepTwoData *info2_data = NULL;
 #endif
 
-	purple_debug_info("msn", "In msn_got_info\n");
+	purple_debug_info("msn", "In msn_got_info,url_text:{%s}\n",url_text);
 
 	/* Make sure the connection is still valid */
 	if (g_list_find(purple_connections_get_all(), info_data->gc) == NULL)
@@ -1869,9 +1981,10 @@
 #if PHOTO_SUPPORT
 	/* Find the URL to the photo; must be before the marshalling [Bug 994207] */
 	photo_url_text = msn_get_photo_url(url_text);
+	purple_debug_info("MSNP14","photo url:{%s}\n", photo_url_text ? photo_url_text : "(null)");
 
 	/* Marshall the existing state */
-	info2_data = g_malloc0(sizeof(MsnGetInfoStepTwoData));
+	info2_data = g_new0(MsnGetInfoStepTwoData, 1);
 	info2_data->info_data = info_data;
 	info2_data->stripped = stripped;
 	info2_data->url_buffer = url_buffer;
@@ -2093,7 +2206,7 @@
 	msn_add_deny,			/* add_deny */
 	msn_rem_permit,			/* rem_permit */
 	msn_rem_deny,			/* rem_deny */
-	msn_set_permit_deny,		/* set_permit_deny */
+	msn_set_permit_deny,	/* set_permit_deny */
 	NULL,					/* join_chat */
 	NULL,					/* reject chat invite */
 	NULL,					/* get_chat_name */
@@ -2149,10 +2262,11 @@
 	"MSN",                                            /**< name           */
 	VERSION,                                          /**< version        */
 	                                                  /**  summary        */
-	N_("MSN Protocol Plugin"),
+	N_("Windows Live Messenger Protocol Plugin"),
 	                                                  /**  description    */
-	N_("MSN Protocol Plugin"),
-	"Christian Hammond <chipx86@gnupdate.org>",       /**< author         */
+	N_("Windows Live Messenger Protocol Plugin"),
+	"Christian Hammond <chipx86@gnupdate.org>, "
+	"MaYuan <mayuan2006@gmail.com>",				  /**< author         */
 	PURPLE_WEBSITE,                                     /**< homepage       */
 
 	msn_load,                                         /**< load           */
@@ -2177,11 +2291,11 @@
 	PurpleAccountOption *option;
 
 	option = purple_account_option_string_new(_("Server"), "server",
-											MSN_SERVER);
+											WLM_SERVER);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
 											   option);
 
-	option = purple_account_option_int_new(_("Port"), "port", 1863);
+	option = purple_account_option_int_new(_("Port"), "port", WLM_PORT);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
 											   option);
 
--- a/libpurple/protocols/msn/msn.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/msn.h	Tue Oct 23 17:27:12 2007 +0000
@@ -63,12 +63,23 @@
 #define USEROPT_MSNPORT 4
 #define MSN_PORT 1863
 
+/* Windows Live Messenger Server*/
+#define WLM_SERVER			"muser.messenger.hotmail.com"
+#define WLM_PORT			1863
+#define WLM_PROT_VER		13
+/*This MSNP14 Support chat with Yahoo Messenger*/
+#define WLM_YAHOO_PROT_VER	14
+
+#define WLM_MAX_PROTOCOL	14
+#define WLM_MIN_PROTOCOL	13
+
 #define MSN_TYPING_RECV_TIMEOUT 6
 #define MSN_TYPING_SEND_TIMEOUT	4
 
-#define HOTMAIL_URL "http://www.hotmail.com/cgi-bin/folders"
+#define HOTMAIL_URL "http://www.hotmail.com/cgi-bin/folders"w3
 #define PASSPORT_URL "http://lc1.law13.hotmail.passport.com/cgi-bin/dologin?login="
 #define PROFILE_URL "http://spaces.live.com/profile.aspx?mem="
+#define PHOTO_URL	" contactparams:photopreauthurl=\""
 
 #define USEROPT_HOTMAIL 0
 
@@ -88,9 +99,11 @@
 	MSN_LIST_FL_OP = 0x01,
 	MSN_LIST_AL_OP = 0x02,
 	MSN_LIST_BL_OP = 0x04,
-	MSN_LIST_RL_OP = 0x08
+	MSN_LIST_RL_OP = 0x08,
+	MSN_LIST_PL_OP = 0x10
 
 } MsnListOp;
+#define MSN_LIST_OP_MASK	0x07
 
 typedef enum
 {
@@ -131,4 +144,7 @@
 	 (MSN_CLIENT_ID_RESERVED_2 <<  8) | \
 	 (MSN_CLIENT_ID_CAPABILITIES))
 
+void msn_act_id(PurpleConnection *gc, const char *entry);
+void msn_send_privacy(PurpleConnection *gc);
+
 #endif /* _MSN_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/protocols/msn/msnutils.c	Tue Oct 23 17:27:12 2007 +0000
@@ -0,0 +1,595 @@
+/**
+ * @file msnutils.c Utility functions
+ *
+ * purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+ */
+#include "msn.h"
+#include "msnutils.h"
+#include "time.h"
+//#include <openssl/md5.h>
+
+char *rand_guid(void);
+
+/**************************************************************************
+ * Util
+ **************************************************************************/
+char *
+rand_guid()
+{
+	return g_strdup_printf("%4X%4X-%4X-%4X-%4X-%4X%4X%4X",
+			rand() % 0xAAFF + 0x1111,
+			rand() % 0xAAFF + 0x1111,
+			rand() % 0xAAFF + 0x1111,
+			rand() % 0xAAFF + 0x1111,
+			rand() % 0xAAFF + 0x1111,
+			rand() % 0xAAFF + 0x1111,
+			rand() % 0xAAFF + 0x1111,
+			rand() % 0xAAFF + 0x1111);
+}
+
+void
+msn_parse_format(const char *mime, char **pre_ret, char **post_ret)
+{
+	char *cur;
+	GString *pre  = g_string_new(NULL);
+	GString *post = g_string_new(NULL);
+	unsigned int colors[3];
+
+	if (pre_ret  != NULL) *pre_ret  = NULL;
+	if (post_ret != NULL) *post_ret = NULL;
+
+	cur = strstr(mime, "FN=");
+
+	if (cur && (*(cur = cur + 3) != ';'))
+	{
+		pre = g_string_append(pre, "<FONT FACE=\"");
+
+		while (*cur && *cur != ';')
+		{
+			pre = g_string_append_c(pre, *cur);
+			cur++;
+		}
+
+		pre = g_string_append(pre, "\">");
+		post = g_string_prepend(post, "</FONT>");
+	}
+
+	cur = strstr(mime, "EF=");
+
+	if (cur && (*(cur = cur + 3) != ';'))
+	{
+		while (*cur && *cur != ';')
+		{
+			pre = g_string_append_c(pre, '<');
+			pre = g_string_append_c(pre, *cur);
+			pre = g_string_append_c(pre, '>');
+			post = g_string_prepend_c(post, '>');
+			post = g_string_prepend_c(post, *cur);
+			post = g_string_prepend_c(post, '/');
+			post = g_string_prepend_c(post, '<');
+			cur++;
+		}
+	}
+
+	cur = strstr(mime, "CO=");
+
+	if (cur && (*(cur = cur + 3) != ';'))
+	{
+		int i;
+
+		i = sscanf(cur, "%02x%02x%02x;", &colors[0], &colors[1], &colors[2]);
+
+		if (i > 0)
+		{
+			char tag[64];
+
+			if (i == 1)
+			{
+				colors[1] = 0;
+				colors[2] = 0;
+			}
+			else if (i == 2)
+			{
+				unsigned int temp = colors[0];
+
+				colors[0] = colors[1];
+				colors[1] = temp;
+				colors[2] = 0;
+			}
+			else if (i == 3)
+			{
+				unsigned int temp = colors[2];
+
+				colors[2] = colors[0];
+				colors[0] = temp;
+			}
+
+			g_snprintf(tag, sizeof(tag),
+					   "<FONT COLOR=\"#%02hhx%02hhx%02hhx\">",
+					   colors[0], colors[1], colors[2]);
+
+			pre = g_string_append(pre, tag);
+			post = g_string_prepend(post, "</FONT>");
+		}
+	}
+
+	cur = strstr(mime, "RL=");
+
+	if (cur && (*(cur = cur + 3) != ';'))
+	{
+		if (*cur == '1')
+		{
+			/* RTL text was received */
+			pre = g_string_append(pre, "<SPAN style=\"direction:rtl;text-align:right;\">");
+			post = g_string_prepend(post, "</SPAN>");
+		}
+	}
+
+	cur = g_strdup(purple_url_decode(pre->str));
+	g_string_free(pre, TRUE);
+
+	if (pre_ret != NULL)
+		*pre_ret = cur;
+	else
+		g_free(cur);
+
+	cur = g_strdup(purple_url_decode(post->str));
+	g_string_free(post, TRUE);
+
+	if (post_ret != NULL)
+		*post_ret = cur;
+	else
+		g_free(cur);
+}
+
+/*encode the str to RFC2047 style
+ * Currently only support the UTF-8 and base64 encode
+ */
+char *
+msn_encode_mime(const char *str)
+{
+	gchar *base64, *retval;
+
+	g_return_val_if_fail(str != NULL, NULL);
+	
+	base64 = purple_base64_encode((guchar *)str, strlen(str));
+	retval = g_strdup_printf("=?utf-8?B?%s?=", base64);
+	g_free(base64);
+
+	return retval;
+}
+
+/*
+ * We need this because we're only supposed to encode spaces in the font
+ * names. purple_url_encode() isn't acceptable.
+ */
+static const char *
+encode_spaces(const char *str)
+{
+	static char buf[BUF_LEN];
+	const char *c;
+	char *d;
+
+	g_return_val_if_fail(str != NULL, NULL);
+
+	for (c = str, d = buf; *c != '\0'; c++)
+	{
+		if (*c == ' ')
+		{
+			*d++ = '%';
+			*d++ = '2';
+			*d++ = '0';
+		}
+		else
+			*d++ = *c;
+	}
+
+	return buf;
+}
+
+/*
+ * Taken from the zephyr plugin.
+ * This parses HTML formatting (put out by one of the gtkimhtml widgets
+ * and converts it to msn formatting. It doesn't deal with the tag closing,
+ * but gtkimhtml widgets give valid html.
+ * It currently deals properly with <b>, <u>, <i>, <font face=...>,
+ * <font color=...>, <span dir=...>, <span style="direction: ...">.
+ * It ignores <font back=...> and <font size=...>
+ */
+void
+msn_import_html(const char *html, char **attributes, char **message)
+{
+	int len, retcount = 0;
+	const char *c;
+	char *msg;
+	char *fontface = NULL;
+	char fonteffect[4];
+	char fontcolor[7];
+	char direction = '0';
+
+	gboolean has_bold = FALSE;
+	gboolean has_italic = FALSE;
+	gboolean has_underline = FALSE;
+	gboolean has_strikethrough = FALSE;
+
+	g_return_if_fail(html       != NULL);
+	g_return_if_fail(attributes != NULL);
+	g_return_if_fail(message    != NULL);
+
+	len = strlen(html);
+	msg = g_malloc0(len + 1);
+
+	memset(fontcolor, 0, sizeof(fontcolor));
+	strcat(fontcolor, "0");
+	memset(fonteffect, 0, sizeof(fonteffect));
+
+	for (c = html; *c != '\0';)
+	{
+		if (*c == '<')
+		{
+			if (!g_ascii_strncasecmp(c + 1, "br>", 3))
+			{
+				msg[retcount++] = '\r';
+				msg[retcount++] = '\n';
+				c += 4;
+			}
+			else if (!g_ascii_strncasecmp(c + 1, "i>", 2))
+			{
+				if (!has_italic)
+				{
+					strcat(fonteffect, "I");
+					has_italic = TRUE;
+				}
+				c += 3;
+			}
+			else if (!g_ascii_strncasecmp(c + 1, "b>", 2))
+			{
+				if (!has_bold)
+				{
+					strcat(fonteffect, "B");
+					has_bold = TRUE;
+				}
+				c += 3;
+			}
+			else if (!g_ascii_strncasecmp(c + 1, "u>", 2))
+			{
+				if (!has_underline)
+				{
+					strcat(fonteffect, "U");
+					has_underline = TRUE;
+				}
+				c += 3;
+			}
+			else if (!g_ascii_strncasecmp(c + 1, "s>", 2))
+			{
+				if (!has_strikethrough)
+				{
+					strcat(fonteffect, "S");
+					has_strikethrough = TRUE;
+				}
+				c += 3;
+			}
+			else if (!g_ascii_strncasecmp(c + 1, "a href=\"", 8))
+			{
+				c += 9;
+
+				if (!g_ascii_strncasecmp(c, "mailto:", 7))
+					c += 7;
+
+				while ((*c != '\0') && g_ascii_strncasecmp(c, "\">", 2))
+					msg[retcount++] = *c++;
+
+				if (*c != '\0')
+					c += 2;
+
+				/* ignore descriptive string */
+				while ((*c != '\0') && g_ascii_strncasecmp(c, "</a>", 4))
+					c++;
+
+				if (*c != '\0')
+					c += 4;
+			}
+			else if (!g_ascii_strncasecmp(c + 1, "span", 4))
+			{
+				/* Bi-directional text support using CSS properties in span tags */
+				c += 5;
+
+				while (*c != '\0' && *c != '>')
+				{
+					while (*c == ' ')
+						c++;
+					if (!g_ascii_strncasecmp(c, "dir=\"rtl\"", 9))
+					{
+						c += 9;
+						direction = '1';
+					}
+					else if (!g_ascii_strncasecmp(c, "style=\"", 7))
+					{
+						/* Parse inline CSS attributes */
+						char *attributes;
+						int attr_len = 0;
+						c += 7;
+						while (*(c + attr_len) != '\0' && *(c + attr_len) != '"')
+							attr_len++;
+						if (*(c + attr_len) == '"')
+						{
+							char *attr_dir;
+							attributes = g_strndup(c, attr_len);
+							attr_dir = purple_markup_get_css_property(attributes, "direction");
+							if (attr_dir && (!g_ascii_strncasecmp(attr_dir, "RTL", 3)))
+								direction = '1';
+							g_free(attr_dir);
+							g_free(attributes);
+						}
+
+					}
+					else
+					{
+						c++;
+					}
+				}
+				if (*c == '>')
+					c++;
+			}
+			else if (!g_ascii_strncasecmp(c + 1, "font", 4))
+			{
+				c += 5;
+
+				while ((*c != '\0') && !g_ascii_strncasecmp(c, " ", 1))
+					c++;
+
+				if (!g_ascii_strncasecmp(c, "color=\"#", 7))
+				{
+					c += 8;
+
+					fontcolor[0] = *(c + 4);
+					fontcolor[1] = *(c + 5);
+					fontcolor[2] = *(c + 2);
+					fontcolor[3] = *(c + 3);
+					fontcolor[4] = *c;
+					fontcolor[5] = *(c + 1);
+
+					c += 8;
+				}
+				else if (!g_ascii_strncasecmp(c, "face=\"", 6))
+				{
+					const char *end = NULL;
+					const char *comma = NULL;
+					unsigned int namelen = 0;
+
+					c += 6;
+					end = strchr(c, '\"');
+					comma = strchr(c, ',');
+
+					if (comma == NULL || comma > end)
+						namelen = (unsigned int)(end - c);
+					else
+						namelen = (unsigned int)(comma - c);
+
+					fontface = g_strndup(c, namelen);
+					c = end + 2;
+				}
+				else
+				{
+					/* Drop all unrecognized/misparsed font tags */
+					while ((*c != '\0') && g_ascii_strncasecmp(c, "\">", 2))
+						c++;
+
+					if (*c != '\0')
+						c += 2;
+				}
+			}
+			else
+			{
+				while ((*c != '\0') && (*c != '>'))
+					c++;
+				if (*c != '\0')
+					c++;
+			}
+		}
+		else if (*c == '&')
+		{
+			if (!g_ascii_strncasecmp(c, "&lt;", 4))
+			{
+				msg[retcount++] = '<';
+				c += 4;
+			}
+			else if (!g_ascii_strncasecmp(c, "&gt;", 4))
+			{
+				msg[retcount++] = '>';
+				c += 4;
+			}
+			else if (!g_ascii_strncasecmp(c, "&nbsp;", 6))
+			{
+				msg[retcount++] = ' ';
+				c += 6;
+			}
+			else if (!g_ascii_strncasecmp(c, "&quot;", 6))
+			{
+				msg[retcount++] = '"';
+				c += 6;
+			}
+			else if (!g_ascii_strncasecmp(c, "&amp;", 5))
+			{
+				msg[retcount++] = '&';
+				c += 5;
+			}
+			else if (!g_ascii_strncasecmp(c, "&apos;", 6))
+			{
+				msg[retcount++] = '\'';
+				c += 6;
+			}
+			else
+				msg[retcount++] = *c++;
+		}
+		else
+			msg[retcount++] = *c++;
+	}
+
+	if (fontface == NULL)
+		fontface = g_strdup("MS Sans Serif");
+
+	*attributes = g_strdup_printf("FN=%s; EF=%s; CO=%s; PF=0; RL=%c",
+								  encode_spaces(fontface),
+								  fonteffect, fontcolor, direction);
+	*message = msg;
+
+	g_free(fontface);
+}
+
+void
+msn_parse_socket(const char *str, char **ret_host, int *ret_port)
+{
+	char *host;
+	char *c;
+	int port;
+
+	host = g_strdup(str);
+
+	if ((c = strchr(host, ':')) != NULL){
+		*c = '\0';
+		port = atoi(c + 1);
+	}else{
+		port = 1863;
+	}
+
+	*ret_host = host;
+	*ret_port = port;
+}
+/***************************************************************************
+ * MSN Time Related Funciton
+ ***************************************************************************/
+#if 0
+int
+msn_convert_iso8601(const char *timestr,struct tm tm_time)
+{
+	char temp[64];
+	struct tm ctime;
+	time_t ts;
+
+	purple_debug_info("MSNP14","convert string is{%s}\n",timestr);
+	tzset();
+	/*copy string first*/
+	memset(temp, 0, sizeof(temp));
+	strncpy(temp, timestr, strlen(timestr));
+
+	/*convert via strptime()*/
+	memset(&ctime, 0, sizeof(struct tm));
+	strptime(temp, "%d %b %Y %T %Z", &ctime);
+	ts = mktime(&ctime) - timezone;
+	localtime_r(&ts, tm_time);
+}
+#endif
+
+/***************************************************************************
+ * MSN Challenge Computing Function
+ ***************************************************************************/
+
+/*
+ * Handle MSN Chanllege computation
+ *This algorithm reference with http://msnpiki.msnfanatic.com/index.php/MSNP11:Challenges
+ */
+#define BUFSIZE	256
+void 
+msn_handle_chl(char *input, char *output)
+{
+		PurpleCipher *cipher;
+		PurpleCipherContext *context;
+		char *productKey = MSNP13_WLM_PRODUCT_KEY,
+			 *productID  = MSNP13_WLM_PRODUCT_ID,
+			 *hexChars   = "0123456789abcdef",
+			 buf[BUFSIZE];
+		unsigned char md5Hash[16], *newHash;
+		unsigned int *md5Parts, *chlStringParts, newHashParts[5];
+
+		long long nHigh=0, nLow=0;
+
+		int i;
+
+		/* Create the MD5 hash by using Purple MD5 algorithm*/
+		cipher = purple_ciphers_find_cipher("md5");
+		context = purple_cipher_context_new(cipher, NULL);
+
+		purple_cipher_context_append(context, (const guchar *)input,
+						strlen(input));
+		purple_cipher_context_append(context, (const guchar *)productKey,
+						strlen(productKey));
+		purple_cipher_context_digest(context, sizeof(md5Hash), md5Hash, NULL);
+		purple_cipher_context_destroy(context);
+
+		/* Split it into four integers */
+		md5Parts = (unsigned int *)md5Hash;
+		for(i=0; i<4; i++){  
+				/* adjust endianess */
+				md5Parts[i] = GUINT_TO_LE(md5Parts[i]);
+
+				/* & each integer with 0x7FFFFFFF          */
+				/* and save one unmodified array for later */
+				newHashParts[i] = md5Parts[i];
+				md5Parts[i] &= 0x7FFFFFFF;
+		}
+
+		/* make a new string and pad with '0' */
+		snprintf(buf, BUFSIZE-5, "%s%s", input, productID);
+		i = strlen(buf);
+		memset(&buf[i], '0', 8 - (i % 8));
+		buf[i + (8 - (i % 8))]='\0';
+
+		/* split into integers */
+		chlStringParts = (unsigned int *)buf;
+
+		/* this is magic */
+		for (i=0; i<(strlen(buf)/4)-1; i+=2){
+				long long temp;
+
+				chlStringParts[i]   = GUINT_TO_LE(chlStringParts[i]);
+				chlStringParts[i+1] = GUINT_TO_LE(chlStringParts[i+1]);
+
+				temp=(md5Parts[0] * (((0x0E79A9C1 * (long long)chlStringParts[i]) % 0x7FFFFFFF)+nHigh) + md5Parts[1])%0x7FFFFFFF;
+				nHigh=(md5Parts[2] * (((long long)chlStringParts[i+1]+temp) % 0x7FFFFFFF) + md5Parts[3]) % 0x7FFFFFFF;
+				nLow=nLow + nHigh + temp;
+		}
+		nHigh=(nHigh+md5Parts[1]) % 0x7FFFFFFF;
+		nLow=(nLow+md5Parts[3]) % 0x7FFFFFFF;
+
+		newHashParts[0]^=nHigh;
+		newHashParts[1]^=nLow;
+		newHashParts[2]^=nHigh;
+		newHashParts[3]^=nLow;
+
+		/* adjust endianness */
+		for(i=0; i<4; i++)
+				newHashParts[i] = GUINT_TO_LE(newHashParts[i]); 
+
+		/* make a string of the parts */
+		newHash = (unsigned char *)newHashParts;
+
+		/* convert to hexadecimal */
+		for (i=0; i<16; i++)
+		{
+				output[i*2]=hexChars[(newHash[i]>>4)&0xF];
+				output[(i*2)+1]=hexChars[newHash[i]&0xF];
+		}
+
+		output[32]='\0';
+
+//		purple_debug_info("MSNP14","chl output{%s}\n",output);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/protocols/msn/msnutils.h	Tue Oct 23 17:27:12 2007 +0000
@@ -0,0 +1,60 @@
+/**
+ * @file msnutils.h Utility functions
+ *
+ * purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+ */
+#ifndef _MSN_UTILS_H_
+#define _MSN_UTILS_H_
+
+/*encode the str to RFC2047 style*/
+char * msn_encode_mime(const char *str);
+
+/**
+ * Generate the Random GUID
+ */
+char * rand_guid(void);
+
+/**
+ * Parses the MSN message formatting into a format compatible with Purple.
+ *
+ * @param mime     The mime header with the formatting.
+ * @param pre_ret  The returned prefix string.
+ * @param post_ret The returned postfix string.
+ *
+ * @return The new message.
+ */
+void msn_parse_format(const char *mime, char **pre_ret, char **post_ret);
+
+/**
+ * Parses the Purple message formatting (html) into the MSN format.
+ *
+ * @param html			The html message to format.
+ * @param attributes	The returned attributes string.
+ * @param message		The returned message string.
+ *
+ * @return The new message.
+ */
+void msn_import_html(const char *html, char **attributes, char **message);
+
+void msn_parse_socket(const char *str, char **ret_host, int *ret_port);
+void msn_handle_chl(char *input, char *output);
+
+#endif /* _MSN_UTILS_H_ */
--- a/libpurple/protocols/msn/nexus.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/nexus.c	Tue Oct 23 17:27:12 2007 +0000
@@ -22,9 +22,15 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 #include "msn.h"
+#include "soap.h"
 #include "nexus.h"
 #include "notification.h"
 
+#undef NEXUS_LOGIN_TWN
+
+/*Local Function Prototype*/
+static gboolean nexus_login_connect_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc);
+
 /**************************************************************************
  * Main
  **************************************************************************/
@@ -36,6 +42,9 @@
 
 	nexus = g_new0(MsnNexus, 1);
 	nexus->session = session;
+	/*we must use SSL connection to do Windows Live ID authentication*/
+	nexus->soapconn = msn_soap_new(session,nexus,1);
+
 	nexus->challenge_data = g_hash_table_new_full(g_str_hash,
 		g_str_equal, g_free, g_free);
 
@@ -45,24 +54,14 @@
 void
 msn_nexus_destroy(MsnNexus *nexus)
 {
-	if (nexus->gsc)
-		purple_ssl_close(nexus->gsc);
-
-	g_free(nexus->login_host);
-
-	g_free(nexus->login_path);
-
 	if (nexus->challenge_data != NULL)
 		g_hash_table_destroy(nexus->challenge_data);
 
-	if (nexus->input_handler > 0)
-		purple_input_remove(nexus->input_handler);
-	g_free(nexus->write_buf);
-	g_free(nexus->read_buf);
-
+	msn_soap_destroy(nexus->soapconn);
 	g_free(nexus);
 }
 
+#if 0 /* khc */
 /**************************************************************************
  * Util
  **************************************************************************/
@@ -121,285 +120,233 @@
 	nexus->written_cb(nexus, source, 0);
 }
 
+#endif
 /**************************************************************************
  * Login
  **************************************************************************/
-
 static void
-login_connect_cb(gpointer data, PurpleSslConnection *gsc,
-				 PurpleInputCondition cond);
-
-static void
-login_error_cb(PurpleSslConnection *gsc, PurpleSslErrorType error, void *data)
+nexus_login_error_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc, PurpleSslErrorType error)
 {
-	MsnNexus *nexus;
 	MsnSession *session;
 
-	nexus = data;
-	g_return_if_fail(nexus != NULL);
-
-	nexus->gsc = NULL;
-
-	session = nexus->session;
+	session = soapconn->session;
 	g_return_if_fail(session != NULL);
 
-	msn_session_set_error(session, MSN_ERROR_AUTH, _("Unable to connect"));
+	soapconn->gsc = NULL;
+
+	msn_session_set_error(session, MSN_ERROR_AUTH, _("Windows Live ID authentication:Unable to connect"));
 	/* the above line will result in nexus being destroyed, so we don't want
 	 * to destroy it here, or we'd crash */
 }
 
-static void
-nexus_login_written_cb(gpointer data, gint source, PurpleInputCondition cond)
-{
-	MsnNexus *nexus = data;
-	MsnSession *session;
-	int len;
-
-	session = nexus->session;
-	g_return_if_fail(session != NULL);
-
-	if (nexus->input_handler == 0)
-		/* TODO: Use purple_ssl_input_add()? */
-		nexus->input_handler = purple_input_add(nexus->gsc->fd,
-			PURPLE_INPUT_READ, nexus_login_written_cb, nexus);
-
-
-	len = msn_ssl_read(nexus);
-
-	if (len < 0 && errno == EAGAIN)
-		return;
-	else if (len < 0) {
-		purple_input_remove(nexus->input_handler);
-		nexus->input_handler = 0;
-		g_free(nexus->read_buf);
-		nexus->read_buf = NULL;
-		nexus->read_len = 0;
-		/* TODO: error handling */
-		return;
-	}
-
-	if (g_strstr_len(nexus->read_buf, nexus->read_len,
-			"\r\n\r\n") == NULL)
-		return;
-
-	purple_input_remove(nexus->input_handler);
-	nexus->input_handler = 0;
-
-	purple_ssl_close(nexus->gsc);
-	nexus->gsc = NULL;
-
-	purple_debug_misc("msn", "ssl buffer: {%s}\n", nexus->read_buf);
-
-	if (strstr(nexus->read_buf, "HTTP/1.1 302") != NULL)
-	{
-		/* Redirect. */
-		char *location, *c;
-
-		location = strstr(nexus->read_buf, "Location: ");
-		if (location == NULL)
-		{
-			g_free(nexus->read_buf);
-			nexus->read_buf = NULL;
-			nexus->read_len = 0;
-
-			return;
-		}
-		location = strchr(location, ' ') + 1;
-
-		if ((c = strchr(location, '\r')) != NULL)
-			*c = '\0';
-
-		/* Skip the http:// */
-		if ((c = strchr(location, '/')) != NULL)
-			location = c + 2;
-
-		if ((c = strchr(location, '/')) != NULL)
-		{
-			g_free(nexus->login_path);
-			nexus->login_path = g_strdup(c);
-
-			*c = '\0';
-		}
-
-		g_free(nexus->login_host);
-		nexus->login_host = g_strdup(location);
-
-		nexus->gsc = purple_ssl_connect(session->account,
-				nexus->login_host, PURPLE_SSL_DEFAULT_PORT,
-				login_connect_cb, login_error_cb, nexus);
-	}
-	else if (strstr(nexus->read_buf, "HTTP/1.1 401 Unauthorized") != NULL)
-	{
-		const char *error;
-
-		if ((error = strstr(nexus->read_buf, "WWW-Authenticate")) != NULL)
-		{
-			if ((error = strstr(error, "cbtxt=")) != NULL)
-			{
-				const char *c;
-				char *temp;
-
-				error += strlen("cbtxt=");
-
-				if ((c = strchr(error, '\n')) == NULL)
-					c = error + strlen(error);
-
-				temp = g_strndup(error, c - error);
-				error = purple_url_decode(temp);
-				g_free(temp);
-				if ((temp = strstr(error, " Do one of the following or try again:")) != NULL)
-					*temp = '\0';
-			}
-		}
-
-		msn_session_set_error(session, MSN_ERROR_AUTH, error);
-	}
-	else if (strstr(nexus->read_buf, "HTTP/1.1 503 Service Unavailable"))
-	{
-		msn_session_set_error(session, MSN_ERROR_SERV_UNAVAILABLE, NULL);
-	}
-	else if (strstr(nexus->read_buf, "HTTP/1.1 200 OK"))
-	{
-		char *base, *c;
-		char *login_params;
-
-#if 0
-		/* All your base are belong to us. */
-		base = buffer;
-
-		/* For great cookie! */
-		while ((base = strstr(base, "Set-Cookie: ")) != NULL)
-		{
-			base += strlen("Set-Cookie: ");
-
-			c = strchr(base, ';');
-
-			session->login_cookies =
-				g_list_append(session->login_cookies,
-							  g_strndup(base, c - base));
-		}
-#endif
-
-		base  = strstr(nexus->read_buf, "Authentication-Info: ");
-
-		g_return_if_fail(base != NULL);
-
-		base  = strstr(base, "from-PP='");
-		base += strlen("from-PP='");
-		c     = strchr(base, '\'');
-
-		login_params = g_strndup(base, c - base);
-
-		msn_got_login_params(session, login_params);
-
-		g_free(login_params);
-
-		msn_nexus_destroy(nexus);
-		session->nexus = NULL;
-		return;
-	}
-
-	g_free(nexus->read_buf);
-	nexus->read_buf = NULL;
-	nexus->read_len = 0;
-
-}
-
-/* this guards against missing hash entries */
-static char *
-nexus_challenge_data_lookup(GHashTable *challenge_data, const char *key)
-{
-	char *entry;
-
-	return (entry = (char *)g_hash_table_lookup(challenge_data, key)) ?
-		entry : "(null)";
-}
-
-void
-login_connect_cb(gpointer data, PurpleSslConnection *gsc,
-				 PurpleInputCondition cond)
+/*process the SOAP reply, get the Authentication Info*/
+static gboolean
+nexus_login_read_cb(MsnSoapConn *soapconn)
 {
 	MsnNexus *nexus;
 	MsnSession *session;
-	char *username, *password;
-	char *request_str, *head, *tail;
-	char *buffer = NULL;
-	guint32 ctint;
+
+	char *base, *c;
+	char *msn_twn_t,*msn_twn_p;
+	char *login_params;
+	char **elems, **cur, **tokens;
+	char * cert_str;
+
+	nexus = soapconn->parent;
+	g_return_val_if_fail(nexus != NULL, TRUE);
+	session = nexus->session;
+	g_return_val_if_fail(session != NULL, FALSE);
+
+	/*reply OK, we should process the SOAP body*/
+	purple_debug_info("MSN Nexus","TWN Server Windows Live ID Reply OK!\n");
+
+	//TODO: we should parse it using XML
+#ifdef NEXUS_LOGIN_TWN
+	base  = g_strstr_len(soapconn->read_buf, soapconn->read_len, TWN_START_TOKEN);
+	base += strlen(TWN_START_TOKEN);
+	c     = g_strstr_len(soapconn->read_buf, soapconn->read_len, TWN_END_TOKEN);
+#else
+	base  = g_strstr_len(soapconn->read_buf, soapconn->read_len, TWN_LIVE_START_TOKEN);
+	base += strlen(TWN_LIVE_START_TOKEN);
+	c     = g_strstr_len(soapconn->read_buf, soapconn->read_len, TWN_LIVE_END_TOKEN);
+#endif
+	login_params = g_strndup(base, c - base);
+
+	//		purple_debug_info("msn", "TWN Cert: {%s}\n", login_params);
+
+	/* Parse the challenge data. */
+	elems = g_strsplit(login_params, "&amp;", 0);
+
+	for (cur = elems; *cur != NULL; cur++){
+			tokens = g_strsplit(*cur, "=", 2);
+			g_hash_table_insert(nexus->challenge_data, tokens[0], tokens[1]);
+			/* Don't free each of the tokens, only the array. */
+			g_free(tokens);
+	}
+
+	g_strfreev(elems);
+
+	msn_twn_t = (char *)g_hash_table_lookup(nexus->challenge_data, "t");
+	msn_twn_p = (char *)g_hash_table_lookup(nexus->challenge_data, "p");
+
+	/*setup the t and p parameter for session*/
+	g_free(session->passport_info.t);
+	session->passport_info.t = g_strdup(msn_twn_t);
 
-	nexus = data;
-	g_return_if_fail(nexus != NULL);
+	g_free(session->passport_info.p);
+	session->passport_info.p = g_strdup(msn_twn_p);
+
+	cert_str = g_strdup_printf("t=%s&p=%s",msn_twn_t,msn_twn_p);
+	msn_got_login_params(session, cert_str);
+
+	purple_debug_info("MSN Nexus","Close nexus connection!\n");
+	g_free(cert_str);
+	g_free(login_params);
+	msn_nexus_destroy(nexus);
+	session->nexus = NULL;
+
+	return FALSE;
+}
+
+static void
+nexus_login_written_cb(MsnSoapConn *soapconn)
+{
+	soapconn->read_cb = nexus_login_read_cb;
+//	msn_soap_read_cb(data,source,cond);
+}
+
 
-	session = nexus->session;
-	g_return_if_fail(session != NULL);
+/*when connect, do the SOAP Style windows Live ID authentication */
+gboolean
+nexus_login_connect_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc)
+{
+	MsnNexus * nexus;
+	MsnSession *session;
+	char *ru,*lc,*id,*tw,*ct,*kpp,*kv,*ver,*rn,*tpf;
+	char *fs0,*fs;
+	char *username, *password;
+	char *request_str, *tail;
+#ifdef NEXUS_LOGIN_TWN
+	char *challenge_str;
+#else
+	char *rst1_str,*rst2_str,*rst3_str;
+#endif
+	
+	purple_debug_info("MSN Nexus","Starting Windows Live ID authentication\n");
+
+	g_return_val_if_fail(soapconn != NULL, FALSE);
+
+	nexus = soapconn->parent;
+	g_return_val_if_fail(nexus != NULL, TRUE);
+
+	session = soapconn->session;
+	g_return_val_if_fail(session != NULL, FALSE);
+
+	msn_soap_set_process_step(soapconn, MSN_SOAP_PROCESSING);
 
 	msn_session_set_login_step(session, MSN_LOGIN_STEP_GET_COOKIE);
 
-	username =
-		g_strdup(purple_url_encode(purple_account_get_username(session->account)));
+	/*prepare the Windows Live ID authentication token*/
+	username = g_strdup(purple_account_get_username(session->account));
+	password = g_strdup(purple_connection_get_password(session->account->gc));
 
-	password =
-		g_strdup(purple_url_encode(purple_connection_get_password(session->account->gc)));
+	lc =	(char *)g_hash_table_lookup(nexus->challenge_data, "lc");
+	id =	(char *)g_hash_table_lookup(nexus->challenge_data, "id");
+	tw =	(char *)g_hash_table_lookup(nexus->challenge_data, "tw");
+	fs0=	(char *)g_hash_table_lookup(nexus->challenge_data, "fs");
+	ru =	(char *)g_hash_table_lookup(nexus->challenge_data, "ru");
+	ct =	(char *)g_hash_table_lookup(nexus->challenge_data, "ct");
+	kpp=	(char *)g_hash_table_lookup(nexus->challenge_data, "kpp");
+	kv =	(char *)g_hash_table_lookup(nexus->challenge_data, "kv");
+	ver=	(char *)g_hash_table_lookup(nexus->challenge_data, "ver");
+	rn =	(char *)g_hash_table_lookup(nexus->challenge_data, "rn");
+	tpf=	(char *)g_hash_table_lookup(nexus->challenge_data, "tpf");
 
-	ctint = strtoul((char *)g_hash_table_lookup(nexus->challenge_data, "ct"), NULL, 10) + 200;
+	/*
+	 * add some fail-safe code to avoid windows Purple Crash bug #1540454
+	 * If any of these string is NULL, will return Authentication Fail!
+	 * for when windows g_strdup_printf() implementation get NULL point,It crashed!
+	 */
+	if(!(lc && id && tw && ru && ct && kpp && kv && ver && tpf)){
+		purple_debug_error("MSN Nexus","WLM Authenticate Key Error!\n");
+		msn_session_set_error(session, MSN_ERROR_AUTH, _("Windows Live ID authentication Failed"));
+		g_free(username);
+		g_free(password);
+		purple_ssl_close(gsc);
+		msn_nexus_destroy(nexus);
+		session->nexus = NULL;
+		return FALSE;
+	}
 
-	head = g_strdup_printf(
-		"GET %s HTTP/1.1\r\n"
-		"Authorization: Passport1.4 OrgVerb=GET,OrgURL=%s,sign-in=%s",
-		nexus->login_path,
-		(char *)g_hash_table_lookup(nexus->challenge_data, "ru"),
-		username);
+	/*
+	 * in old MSN NS server's "USR TWN S" return,didn't include fs string
+	 * so we use a default "1" for fs.
+	 */
+	if(fs0){
+		fs = g_strdup(fs0);
+	}else{
+		fs = g_strdup("1");
+	}
 
-	tail = g_strdup_printf(
-		"lc=%s,id=%s,tw=%s,fs=%s,ru=%s,ct=%" G_GUINT32_FORMAT ",kpp=%s,kv=%s,ver=%s,tpf=%s\r\n"
-		"User-Agent: MSMSGS\r\n"
-		"Host: %s\r\n"
-		"Connection: Keep-Alive\r\n"
-		"Cache-Control: no-cache\r\n",
-		nexus_challenge_data_lookup(nexus->challenge_data, "lc"),
-		nexus_challenge_data_lookup(nexus->challenge_data, "id"),
-		nexus_challenge_data_lookup(nexus->challenge_data, "tw"),
-		nexus_challenge_data_lookup(nexus->challenge_data, "fs"),
-		nexus_challenge_data_lookup(nexus->challenge_data, "ru"),
-		ctint,
-		nexus_challenge_data_lookup(nexus->challenge_data, "kpp"),
-		nexus_challenge_data_lookup(nexus->challenge_data, "kv"),
-		nexus_challenge_data_lookup(nexus->challenge_data, "ver"),
-		nexus_challenge_data_lookup(nexus->challenge_data, "tpf"),
-		nexus->login_host);
+#ifdef NEXUS_LOGIN_TWN
+	challenge_str = g_strdup_printf(
+		"lc=%s&amp;id=%s&amp;tw=%s&amp;fs=%s&amp;ru=%s&amp;ct=%s&amp;kpp=%s&amp;kv=%s&amp;ver=%s&amp;rn=%s&amp;tpf=%s\r\n",
+		lc,id,tw,fs,ru,ct,kpp,kv,ver,rn,tpf
+		);
 
-	buffer = g_strdup_printf("%s,pwd=XXXXXXXX,%s\r\n", head, tail);
-	request_str = g_strdup_printf("%s,pwd=%s,%s\r\n", head, password, tail);
+	/*build the SOAP windows Live ID XML body */
+	tail = g_strdup_printf(TWN_ENVELOP_TEMPLATE,username,password,challenge_str	);
+	g_free(challenge_str);
+#else
+	rst1_str = g_strdup_printf(
+		"id=%s&amp;tw=%s&amp;fs=%s&amp;kpp=%s&amp;kv=%s&amp;ver=%s&amp;rn=%s",
+		id,tw,fs,kpp,kv,ver,rn
+		);
+	rst2_str = g_strdup_printf(
+		"fs=%s&amp;id=%s&amp;kv=%s&amp;rn=%s&amp;tw=%s&amp;ver=%s",
+		fs,id,kv,rn,tw,ver
+		);
+	rst3_str = g_strdup_printf("id=%s",id);
+	tail = g_strdup_printf(TWN_LIVE_ENVELOP_TEMPLATE,username,password,rst1_str,rst2_str,rst3_str);
+	g_free(rst1_str);
+	g_free(rst2_str);
+	g_free(rst3_str);
+#endif
+	g_free(fs);
 
-	purple_debug_misc("msn", "Sending: {%s}\n", buffer);
+	soapconn->login_path = g_strdup(TWN_POST_URL);
+	request_str = g_strdup_printf(
+					"POST %s HTTP/1.1\r\n"
+					"Accept: text/*\r\n"
+					"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n"
+					"Host: %s\r\n"
+					"Content-Length: %" G_GSIZE_FORMAT "\r\n"
+					"Connection: Keep-Alive\r\n"
+					"Cache-Control: no-cache\r\n\r\n"
+					"%s",
+					soapconn->login_path, soapconn->login_host, strlen(tail),
+					tail);
 
-	g_free(buffer);
-	g_free(head);
+#ifdef MSN_SOAP_DEBUG	
+	purple_debug_misc("MSN Nexus", "TWN Sending:\n%s\n", request_str);
+#endif
 	g_free(tail);
 	g_free(username);
 	g_free(password);
 
-	nexus->write_buf = request_str;
-	nexus->written_len = 0;
-
-	nexus->read_len = 0;
-
-	nexus->written_cb = nexus_login_written_cb;
+	/*prepare to send the SOAP request*/
+	msn_soap_write(soapconn, request_str, nexus_login_written_cb);
 
-	nexus->input_handler = purple_input_add(gsc->fd, PURPLE_INPUT_WRITE,
-		nexus_write_cb, nexus);
-
-	nexus_write_cb(nexus, gsc->fd, PURPLE_INPUT_WRITE);
-
-	return;
-
-
+	return TRUE;
 }
 
+#if 0 /* khc */
 static void
 nexus_connect_written_cb(gpointer data, gint source, PurpleInputCondition cond)
 {
 	MsnNexus *nexus = data;
 	int len;
+
 	char *da_login;
 	char *base, *c;
 
@@ -408,6 +355,7 @@
 		nexus->input_handler = purple_input_add(nexus->gsc->fd,
 			PURPLE_INPUT_READ, nexus_connect_written_cb, nexus);
 
+
 	/* Get the PassportURLs line. */
 	len = msn_ssl_read(nexus);
 
@@ -470,10 +418,13 @@
 }
 
 
+#endif
+
 /**************************************************************************
  * Connect
  **************************************************************************/
 
+#if 0 /* khc */
 static void
 nexus_connect_cb(gpointer data, PurpleSslConnection *gsc,
 				 PurpleInputCondition cond)
@@ -502,10 +453,12 @@
 	nexus_write_cb(nexus, gsc->fd, PURPLE_INPUT_WRITE);
 }
 
+#endif
+
 void
 msn_nexus_connect(MsnNexus *nexus)
 {
-	nexus->gsc = purple_ssl_connect(nexus->session->account,
-			"nexus.passport.com", PURPLE_SSL_DEFAULT_PORT,
-			nexus_connect_cb, login_error_cb, nexus);
+	/*  Authenticate via Windows Live ID. */
+	msn_soap_init(nexus->soapconn, MSN_TWN_SERVER, TRUE, nexus_login_connect_cb, nexus_login_error_cb);
+	msn_soap_connect(nexus->soapconn);
 }
--- a/libpurple/protocols/msn/nexus.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/nexus.h	Tue Oct 23 17:27:12 2007 +0000
@@ -24,25 +24,124 @@
 #ifndef _MSN_NEXUS_H_
 #define _MSN_NEXUS_H_
 
+#include "soap.h"
+
+/*#define MSN_TWN_SERVER	"loginnet.passport.com"*/
+#define MSN_TWN_SERVER	"login.live.com"
+
+#define TWN_START_TOKEN		"<wsse:BinarySecurityToken Id=\"PPToken1\">"
+#define TWN_END_TOKEN		"</wsse:BinarySecurityToken>"
+
+#define TWN_POST_URL			"/RST.srf"
+#define TWN_ENVELOP_TEMPLATE 	"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"\
+						"<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2003/06/secext\" xmlns:saml=\"urn:oasis:names:tc:SAML:1.0:assertion\" xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2002/12/policy\" xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\" xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/03/addressing\" xmlns:wssc=\"http://schemas.xmlsoap.org/ws/2004/04/sc\" xmlns:wst=\"http://schemas.xmlsoap.org/ws/2004/04/trust\">"\
+						"<Header>"\
+						"<ps:AuthInfo xmlns:ps=\"http://schemas.microsoft.com/Passport/SoapServices/PPCRL\" Id=\"PPAuthInfo\">"\
+						"<ps:HostingApp>{3:B}</ps:HostingApp>"\
+						"<ps:BinaryVersion>4</ps:BinaryVersion>"\
+						"<ps:UIVersion>1</ps:UIVersion>"\
+						"<ps:Cookies></ps:Cookies>"\
+						"<ps:RequestParams>AQAAAAIAAABsYwQAAAAzMDg0</ps:RequestParams>"\
+						"</ps:AuthInfo>"\
+						"<wsse:Security>"\
+						"<wsse:UsernameToken Id=\"user\">"\
+						"<wsse:Username>%s</wsse:Username>"\
+						"<wsse:Password>%s</wsse:Password>"\
+						"</wsse:UsernameToken>"\
+						"</wsse:Security>"\
+						"</Header>"\
+						"<Body>"\
+						"<ps:RequestMultipleSecurityTokens xmlns:ps=\"http://schemas.microsoft.com/Passport/SoapServices/PPCRL\" Id=\"RSTS\">"\
+						"<wst:RequestSecurityToken Id=\"RST0\">"\
+						"<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>"\
+						"<wsp:AppliesTo>"\
+						"<wsa:EndpointReference>"\
+						"<wsa:Address>http://Passport.NET/tb</wsa:Address>"\
+						"</wsa:EndpointReference>"\
+						"</wsp:AppliesTo>"\
+						"</wst:RequestSecurityToken>"\
+						"<wst:RequestSecurityToken Id=\"RST1\">"\
+						"<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>"\
+						"<wsp:AppliesTo>"\
+						"<wsa:EndpointReference>"\
+						"<wsa:Address>messenger.msn.com</wsa:Address>"\
+						"</wsa:EndpointReference>"\
+						"</wsp:AppliesTo>"\
+						"<wsse:PolicyReference URI=\"?%s\">"\
+						"</wsse:PolicyReference>"\
+						"</wst:RequestSecurityToken>"\
+						"</ps:RequestMultipleSecurityTokens>"\
+						"</Body>"\
+						"</Envelope>"
+
+#define TWN_LIVE_START_TOKEN	"<wsse:BinarySecurityToken Id=\"PPToken1\">"
+#define TWN_LIVE_END_TOKEN	"</wsse:BinarySecurityToken>"
+#define TWN_LIVE_ENVELOP_TEMPLATE	"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"\
+"<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2003/06/secext\" xmlns:saml=\"urn:oasis:names:tc:SAML:1.0:assertion\" xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2002/12/policy\" xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\" xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/03/addressing\" xmlns:wssc=\"http://schemas.xmlsoap.org/ws/2004/04/sc\" xmlns:wst=\"http://schemas.xmlsoap.org/ws/2004/04/trust\">"\
+  "<Header>"\
+    "<ps:AuthInfo xmlns:ps=\"http://schemas.microsoft.com/Passport/SoapServices/PPCRL\" Id=\"PPAuthInfo\">"\
+      "<ps:HostingApp>{7108E71A-9926-4FCB-BCC9-9A9D3F32E423}</ps:HostingApp>"\
+      "<ps:BinaryVersion>4</ps:BinaryVersion>"\
+      "<ps:UIVersion>1</ps:UIVersion>"\
+      "<ps:Cookies></ps:Cookies>"\
+      "<ps:RequestParams>AQAAAAIAAABsYwQAAAAyMDUy</ps:RequestParams>"\
+    "</ps:AuthInfo>"\
+    "<wsse:Security>"\
+      "<wsse:UsernameToken Id=\"user\">"\
+        "<wsse:Username>%s</wsse:Username>"\
+        "<wsse:Password>%s</wsse:Password>"\
+      "</wsse:UsernameToken>"\
+    "</wsse:Security>"\
+  "</Header>"\
+  "<Body>"\
+    "<ps:RequestMultipleSecurityTokens xmlns:ps=\"http://schemas.microsoft.com/Passport/SoapServices/PPCRL\" Id=\"RSTS\">"\
+      "<wst:RequestSecurityToken Id=\"RST0\">"\
+        "<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>"\
+        "<wsp:AppliesTo>"\
+          "<wsa:EndpointReference>"\
+            "<wsa:Address>http://Passport.NET/tb</wsa:Address>"\
+          "</wsa:EndpointReference>"\
+        "</wsp:AppliesTo>"\
+      "</wst:RequestSecurityToken>"\
+      "<wst:RequestSecurityToken Id=\"RST1\">"\
+        "<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>"\
+        "<wsp:AppliesTo>"\
+          "<wsa:EndpointReference>"\
+            "<wsa:Address>messenger.msn.com</wsa:Address>"\
+          "</wsa:EndpointReference>"\
+        "</wsp:AppliesTo>"\
+        "<wsse:PolicyReference URI=\"?%s\"></wsse:PolicyReference>"\
+      "</wst:RequestSecurityToken>"\
+      "<wst:RequestSecurityToken Id=\"RST2\">"\
+        "<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>"\
+        "<wsp:AppliesTo>"\
+          "<wsa:EndpointReference>"\
+            "<wsa:Address>contacts.msn.com</wsa:Address>"\
+         "</wsa:EndpointReference>"\
+        "</wsp:AppliesTo>"\
+       "<wsse:PolicyReference URI=\"?%s\"></wsse:PolicyReference>"\
+     " </wst:RequestSecurityToken>"\
+      "<wst:RequestSecurityToken Id=\"RST3\">"\
+        "<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>"\
+        "<wsp:AppliesTo>"\
+          "<wsa:EndpointReference>"\
+            "<wsa:Address>voice.messenger.msn.com</wsa:Address>"\
+          "</wsa:EndpointReference>"\
+       " </wsp:AppliesTo>"\
+        "<wsse:PolicyReference URI=\"?%s\"></wsse:PolicyReference>"\
+      "</wst:RequestSecurityToken>"\
+    "</ps:RequestMultipleSecurityTokens>"\
+  "</Body>"\
+"</Envelope>"
+
 typedef struct _MsnNexus MsnNexus;
 
 struct _MsnNexus
 {
 	MsnSession *session;
-
-	char *login_host;
-	char *login_path;
+	MsnSoapConn *soapconn;
+	char * challenge_data_str;
 	GHashTable *challenge_data;
-	PurpleSslConnection *gsc;
-
-	guint input_handler;
-
-	char *write_buf;
-	gsize written_len;
-	PurpleInputFunction written_cb;
-
-	char *read_buf;
-	gsize read_len;
 };
 
 void msn_nexus_connect(MsnNexus *nexus);
--- a/libpurple/protocols/msn/notification.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/notification.c	Tue Oct 23 17:27:12 2007 +0000
@@ -25,7 +25,7 @@
 #include "notification.h"
 #include "state.h"
 #include "error.h"
-#include "msn-utils.h"
+#include "msnutils.h"
 #include "page.h"
 
 #include "userlist.h"
@@ -34,6 +34,15 @@
 
 static MsnTable *cbs_table;
 
+/****************************************************************************
+ * 	Local Function Prototype
+ ****************************************************************************/
+
+static void msn_notification_post_adl(MsnCmdProc *cmdproc, const char *payload, int payload_len);
+static void
+msn_add_contact_xml(MsnSession *session, xmlnode *mlNode,const char *passport,
+					 MsnListOp list_op, MsnUserType type);
+
 /**************************************************************************
  * Main
  **************************************************************************/
@@ -92,7 +101,8 @@
 	MsnCmdProc *cmdproc;
 	MsnSession *session;
 	PurpleAccount *account;
-	char **a, **c, *vers;
+	GString *vers;
+	const char *ver_str;
 	int i;
 
 	g_return_if_fail(servconn != NULL);
@@ -101,25 +111,24 @@
 	session = servconn->session;
 	account = session->account;
 
-	/* Allocate an array for CVR0, NULL, and all the versions */
-	a = c = g_new0(char *, session->protocol_ver - 8 + 3);
+	vers = g_string_new("");
 
-	for (i = session->protocol_ver; i >= 8; i--)
-		*c++ = g_strdup_printf("MSNP%d", i);
+/*	for (i = session->protocol_ver; i >= WLM_MIN_PROTOCOL; i--) */
+	for (i = WLM_MAX_PROTOCOL; i >= WLM_MIN_PROTOCOL; i--)
+		g_string_append_printf(vers, " MSNP%d", i);
 
-	*c++ = g_strdup("CVR0");
-
-	vers = g_strjoinv(" ", a);
+	g_string_append(vers, " CVR0");
 
 	if (session->login_step == MSN_LOGIN_STEP_START)
 		msn_session_set_login_step(session, MSN_LOGIN_STEP_HANDSHAKE);
 	else
 		msn_session_set_login_step(session, MSN_LOGIN_STEP_HANDSHAKE2);
 
-	msn_cmdproc_send(cmdproc, "VER", "%s", vers);
+	/* Skip the initial space */
+	ver_str = (vers->str + 1);
+	msn_cmdproc_send(cmdproc, "VER", "%s", ver_str);
 
-	g_strfreev(a);
-	g_free(vers);
+	g_string_free(vers, TRUE);
 }
 
 gboolean
@@ -153,7 +162,7 @@
  **************************************************************************/
 
 static void
-group_error_helper(MsnSession *session, const char *msg, int group_id, int error)
+group_error_helper(MsnSession *session, const char *msg, const char *group_id, int error)
 {
 	PurpleAccount *account;
 	PurpleConnection *gc;
@@ -172,11 +181,9 @@
 		else
 		{
 			const char *group_name;
-			group_name =
-				msn_userlist_find_group_name(session->userlist,
-											 group_id);
+			group_name = msn_userlist_find_group_name(session->userlist,group_id);
 			reason = g_strdup_printf(_("%s is not a valid group."),
-									 group_name);
+									 group_name ? group_name : "");
 		}
 	}
 	else
@@ -214,7 +221,6 @@
 	PurpleAccount *account;
 
 	account = cmdproc->session->account;
-
 	msn_cmdproc_send(cmdproc, "USR", "TWN I %s",
 					 purple_account_get_username(account));
 }
@@ -224,22 +230,23 @@
 {
 	MsnSession *session;
 	PurpleAccount *account;
-	PurpleConnection *gc;
 
 	session = cmdproc->session;
 	account = session->account;
-	gc = purple_account_get_connection(account);
 
 	if (!g_ascii_strcasecmp(cmd->params[1], "OK"))
 	{
-		/* OK */
+		/* authenticate OK */
+		/* friendly name part no longer true in msnp11 */
+#if 0
 		const char *friendly = purple_url_decode(cmd->params[3]);
 
 		purple_connection_set_display_name(gc, friendly);
-
+#endif
 		msn_session_set_login_step(session, MSN_LOGIN_STEP_SYN);
 
-		msn_cmdproc_send(cmdproc, "SYN", "%s", "0");
+//		msn_cmdproc_send(cmdproc, "SYN", "%s", "0");
+		//TODO we should use SOAP contact to fetch contact list
 	}
 	else if (!g_ascii_strcasecmp(cmd->params[1], "TWN"))
 	{
@@ -249,15 +256,21 @@
 		session->nexus = msn_nexus_new(session);
 
 		/* Parse the challenge data. */
-
+		session->nexus->challenge_data_str = g_strdup(cmd->params[3]);
 		elems = g_strsplit(cmd->params[3], ",", 0);
 
 		for (cur = elems; *cur != NULL; cur++)
 		{
-				tokens = g_strsplit(*cur, "=", 2);
+			tokens = g_strsplit(*cur, "=", 2);
+			if(tokens[0] && tokens[1])
+			{
+				purple_debug_info("MSNP14","challenge %p,key:%s,value:%s\n",
+									session->nexus->challenge_data,tokens[0],tokens[1]);
 				g_hash_table_insert(session->nexus->challenge_data, tokens[0], tokens[1]);
 				/* Don't free each of the tokens, only the array. */
 				g_free(tokens);
+			} else
+				g_strfreev(tokens);
 		}
 
 		g_strfreev(elems);
@@ -322,8 +335,15 @@
 		return;
 	}
 
+	/*
+	 * Windows Live Messenger 8.0 
+	 * Notice :CVR String discriminate!
+	 * reference of http://www.microsoft.com/globaldev/reference/oslocversion.mspx
+	 * to see the Local ID
+	 */
 	msn_cmdproc_send(cmdproc, "CVR",
-					 "0x0409 winnt 5.1 i386 MSNMSGR 6.0.0602 MSMSGS %s",
+//					 "0x0409 winnt 5.1 i386 MSG80BETA 8.0.0689 msmsgs %s",
+					"0x0804 winnt 5.1 i386 MSNMSGR 8.0.0792 msmsgs %s",
 					 purple_account_get_username(account));
 }
 
@@ -366,7 +386,7 @@
 
 	msg = msn_message_new_from_cmd(cmdproc->session, cmd);
 
-	msn_message_parse_payload(msg, payload, len);
+	msn_message_parse_payload(msg, payload, len,MSG_LINE_DEM,MSG_BODY_DEM);
 #ifdef MSN_DEBUG_NS
 	msn_message_show_readable(msg, "Notification", TRUE);
 #endif
@@ -379,9 +399,12 @@
 static void
 msg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
 {
+	purple_debug_info("MSNP14","Processing MSG... \n");
+	if(cmd->payload_len == 0){
+		return;
+	}
 	/* NOTE: cmd is not always cmdproc->last_cmd, sometimes cmd is a queued
 	 * command and we are processing it */
-
 	if (cmd->payload == NULL)
 	{
 		cmdproc->last_cmd->payload_cb  = msg_cmd_post;
@@ -391,32 +414,143 @@
 	{
 		g_return_if_fail(cmd->payload_cb != NULL);
 
+		purple_debug_info("MSNP14","MSG payload:{%.*s}\n",cmd->payload_len, cmd->payload);
 		cmd->payload_cb(cmdproc, cmd, cmd->payload, cmd->payload_len);
 	}
 }
 
+/*send Message to Yahoo Messenger*/
+void
+uum_send_msg(MsnSession *session,MsnMessage *msg)
+{
+	MsnCmdProc *cmdproc;
+	MsnTransaction *trans;
+	char *payload;
+	gsize payload_len;
+	int type;
+	
+	cmdproc = session->notification->cmdproc;
+	g_return_if_fail(msg     != NULL);
+	payload = msn_message_gen_payload(msg, &payload_len);
+	purple_debug_info("MSNP14","send UUM,payload{%s},strlen:%d,len:%d\n",
+		payload,strlen(payload),payload_len);
+	type = msg->type;
+	trans = msn_transaction_new(cmdproc, "UUM","%s 32 %d %d",msg->remote_user,type,payload_len);
+	msn_transaction_set_payload(trans, payload, strlen(payload));
+	msn_cmdproc_send_trans(cmdproc, trans);
+}
+
+static void
+ubm_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
+			 size_t len)
+{
+	MsnMessage *msg;
+	PurpleConnection *gc;
+	const char *passport;
+	const char *content_type;
+
+	purple_debug_info("MSNP14","Process UBM payload:%.*s\n", len, payload);
+	msg = msn_message_new_from_cmd(cmdproc->session, cmd);
+
+	msn_message_parse_payload(msg, payload, len,MSG_LINE_DEM,MSG_BODY_DEM);
+#ifdef MSN_DEBUG_NS
+	msn_message_show_readable(msg, "Notification", TRUE);
+#endif
+
+	gc = cmdproc->session->account->gc;
+	passport = msg->remote_user;
+
+	content_type = msn_message_get_content_type(msg);
+	purple_debug_info("MSNP14","type:%d\n",content_type);
+	if(!strcmp(content_type,"text/plain")){
+		const char *value;
+		const char *body;
+		char *body_enc;
+		char *body_final = NULL;
+		size_t body_len;
+
+		body = msn_message_get_bin_data(msg, &body_len);
+		body_enc = g_markup_escape_text(body, body_len);
+
+		if ((value = msn_message_get_attr(msg, "X-MMS-IM-Format")) != NULL)	{
+			char *pre, *post;
+
+			msn_parse_format(value, &pre, &post);
+			body_final = g_strdup_printf("%s%s%s", pre ? pre : "",
+							body_enc ? body_enc : "", post ? post : "");
+			g_free(pre);
+			g_free(post);
+		}
+		g_free(body_enc);
+		serv_got_im(gc, passport, body_final, 0, time(NULL));
+		g_free(body_final);
+	}
+	if(!strcmp(content_type,"text/x-msmsgscontrol")){
+		if(msn_message_get_attr(msg, "TypingUser") != NULL){
+			serv_got_typing(gc, passport, MSN_TYPING_RECV_TIMEOUT,
+						PURPLE_TYPING);
+		}
+	}
+	if(!strcmp(content_type,"text/x-msnmsgr-datacast")){
+		char *username, *str;
+		PurpleAccount *account;
+		PurpleBuddy *buddy;
+		const char *user;
+
+		account = cmdproc->session->account;
+		user = msg->remote_user;
+
+		if ((buddy = purple_find_buddy(account, user)) != NULL){
+			username = g_markup_escape_text(purple_buddy_get_alias(buddy), -1);
+		}else{
+			username = g_markup_escape_text(user, -1);
+		}
+
+		str = g_strdup_printf(_("%s just sent you a Nudge!"), username);
+		g_free(username);
+		msn_session_report_user(cmdproc->session,user,str,PURPLE_MESSAGE_SYSTEM);
+		g_free(str);
+	}
+	msn_message_destroy(msg);
+}
+
+/*Yahoo msg process*/
+static void
+ubm_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
+{
+	purple_debug_info("MSNP14","Processing UBM... \n");
+	if(cmd->payload_len == 0){
+		return;
+	}
+	/* NOTE: cmd is not always cmdproc->last_cmd, sometimes cmd is a queued
+	 * command and we are processing it */
+	if (cmd->payload == NULL){
+		cmdproc->last_cmd->payload_cb  = ubm_cmd_post;
+		cmdproc->servconn->payload_len = atoi(cmd->params[2]);
+	}else{
+		g_return_if_fail(cmd->payload_cb != NULL);
+
+		purple_debug_info("MSNP14","UBM payload:{%.*s}\n", cmd->payload_len, cmd->payload);
+		ubm_cmd_post(cmdproc, cmd, cmd->payload, cmd->payload_len);
+	}
+}
+
 /**************************************************************************
  * Challenges
+ *  we use MD5 to caculate the Challenges
  **************************************************************************/
-
 static void
 chl_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
 {
 	MsnTransaction *trans;
 	char buf[33];
-	const char *challenge_resp;
-	PurpleCipher *cipher;
-	PurpleCipherContext *context;
-	guchar digest[16];
-	int i;
 
+#if 0
 	cipher = purple_ciphers_find_cipher("md5");
 	context = purple_cipher_context_new(cipher, NULL);
-
 	purple_cipher_context_append(context, (const guchar *)cmd->params[1],
 							   strlen(cmd->params[1]));
-
-	challenge_resp = "VT6PX?UQTM4WM%YR";
+	challenge_resp = MSNP13_WLM_PRODUCT_KEY;
 
 	purple_cipher_context_append(context, (const guchar *)challenge_resp,
 							   strlen(challenge_resp));
@@ -424,9 +558,14 @@
 	purple_cipher_context_destroy(context);
 
 	for (i = 0; i < 16; i++)
+	{
 		g_snprintf(buf + (i*2), 3, "%02x", digest[i]);
-
-	trans = msn_transaction_new(cmdproc, "QRY", "%s 32", "PROD0038W!61ZTF9");
+	}
+#else
+	msn_handle_chl(cmd->params[1], buf);
+#endif
+//	purple_debug_info("MSNP14","<<challenge:{%s}:{%s}\n",cmd->params[1],buf);
+	trans = msn_transaction_new(cmdproc, "QRY", "%s 32", MSNP13_WLM_PRODUCT_ID);
 
 	msn_transaction_set_payload(trans, buf, 32);
 
@@ -436,43 +575,303 @@
 /**************************************************************************
  * Buddy Lists
  **************************************************************************/
+/* add contact to xmlnode */
+static void
+msn_add_contact_xml(MsnSession *session, xmlnode *mlNode,const char *passport, MsnListOp list_op, MsnUserType type)
+{
+	xmlnode *d_node,*c_node;
+	char **tokens;
+	const char *email,*domain;
+	char fmt_str[3];
+
+	g_return_if_fail(passport != NULL);
+
+	purple_debug_info("MSNP14","Passport: %s, type: %d\n", passport, type);
+	tokens = g_strsplit(passport, "@", 2);
+	email = tokens[0];
+	domain = tokens[1];
+
+	if (email == NULL || domain == NULL) {
+		purple_debug_error("msn", "Invalid passport (%s) specified to add to contact xml.\n", passport);
+		g_strfreev(tokens);
+		g_return_if_reached();
+	}
+
+	/*find a domain Node*/
+	for(d_node = xmlnode_get_child(mlNode,"d"); d_node; d_node = xmlnode_get_next_twin(d_node))
+	{
+		const char *attr = xmlnode_get_attrib(d_node,"n");
+		if (attr == NULL)
+			continue;
+		if (!strcmp(attr,domain))
+			break;
+	}
+
+	if(d_node == NULL)
+	{
+		/*domain not found, create a new domain Node*/
+		purple_debug_info("msn", "Didn't find existing domain node, adding one.\n");
+		d_node = xmlnode_new("d");
+		xmlnode_set_attrib(d_node, "n", domain);
+		xmlnode_insert_child(mlNode, d_node);
+	}
+
+	/*create contact node*/
+	c_node = xmlnode_new("c");
+	xmlnode_set_attrib(c_node, "n", email);
+
+	purple_debug_info("MSNP14", "list_op: %d\n", list_op);
+	g_snprintf(fmt_str, sizeof(fmt_str), "%d", list_op);
+	xmlnode_set_attrib(c_node, "l", fmt_str);
+
+	if (type != MSN_USER_TYPE_UNKNOWN)
+		g_snprintf(fmt_str, sizeof(fmt_str), "%d", type);
+	else if (msn_user_is_yahoo(session->account, passport))
+		g_snprintf(fmt_str, sizeof(fmt_str), "%d", MSN_USER_TYPE_YAHOO);
+	else
+		g_snprintf(fmt_str, sizeof(fmt_str), "%d", MSN_USER_TYPE_PASSPORT);
+
+	/*mobile*/
+	//type_str = g_strdup_printf("4");
+	xmlnode_set_attrib(c_node, "t", fmt_str);
+
+	xmlnode_insert_child(d_node, c_node);
+
+	g_strfreev(tokens);
+}
 
 static void
-add_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
+msn_notification_post_adl(MsnCmdProc *cmdproc, const char *payload, int payload_len)
+{
+	MsnTransaction *trans;
+	purple_debug_info("MSN Notification","Sending ADL with payload: %s\n", payload);
+	trans = msn_transaction_new(cmdproc, "ADL","%d", strlen(payload));
+	msn_transaction_set_payload(trans, payload, strlen(payload));
+	msn_cmdproc_send_trans(cmdproc, trans);
+}
+
+/*dump contact info to NS*/
+void
+msn_notification_dump_contact(MsnSession *session)
+{
+	MsnUser *user;
+	GList *l;
+	xmlnode *adl_node;
+	char *payload;
+	int payload_len;
+	int adl_count = 0;
+	const char *display_name;
+
+	adl_node = xmlnode_new("ml");
+	adl_node->child = NULL;
+	xmlnode_set_attrib(adl_node, "l", "1");
+
+	/*get the userlist*/
+	for (l = session->userlist->users; l != NULL; l = l->next){
+		user = l->data;
+
+		/* skip RL & PL during initial dump */
+		if (!(user->list_op & MSN_LIST_OP_MASK))
+			continue;
+
+		msn_add_contact_xml(session, adl_node, user->passport,
+			user->list_op & MSN_LIST_OP_MASK, user->type);
+
+		/* each ADL command may contain up to 150 contacts */
+		if (++adl_count % 150 == 0 || l->next == NULL) {
+			payload = xmlnode_to_str(adl_node,&payload_len);
+
+			msn_notification_post_adl(session->notification->cmdproc,
+				payload, payload_len);
+
+			g_free(payload);
+			xmlnode_free(adl_node);
+
+			if (l->next) {
+				adl_node = xmlnode_new("ml");
+				adl_node->child = NULL;
+				xmlnode_set_attrib(adl_node, "l", "1");
+			}
+		}
+	}
+
+	if (adl_count == 0) {
+		payload = xmlnode_to_str(adl_node,&payload_len);
+
+		msn_notification_post_adl(session->notification->cmdproc, payload, payload_len);
+
+		g_free(payload);
+		xmlnode_free(adl_node);
+	}
+
+	display_name = purple_connection_get_display_name(session->account->gc);
+	if (display_name 
+	    && strcmp(display_name, 
+		      purple_account_get_username(session->account))) {
+		msn_act_id(session->account->gc, display_name);
+	}
+
+}
+
+/*Post FQY to NS,Inform add a Yahoo User*/
+void
+msn_notification_send_fqy(MsnSession *session, const char *passport)
+{
+	MsnTransaction *trans;
+	MsnCmdProc *cmdproc;
+	char* email,*domain,*payload;
+	char **tokens;
+
+	cmdproc = session->notification->cmdproc;
+
+	tokens = g_strsplit(passport, "@", 2);
+	email = tokens[0];
+	domain = tokens[1];
+
+	payload = g_strdup_printf("<ml><d n=\"%s\"><c n=\"%s\"/></d></ml>", domain, email);
+	trans = msn_transaction_new(cmdproc, "FQY","%d", strlen(payload));
+	msn_transaction_set_payload(trans, payload, strlen(payload));
+	msn_cmdproc_send_trans(cmdproc, trans);
+
+	g_free(payload);
+	g_strfreev(tokens);
+}
+
+static void
+blp_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
+{
+}
+
+static void
+adl_cmd_parse(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
+		                         size_t len)
+{
+	xmlnode *root, *domain_node;
+
+	purple_debug_misc("MSN Notification", "Parsing received ADL XML data\n");
+
+	g_return_if_fail(payload != NULL);
+	
+	root = xmlnode_from_str(payload, (gssize) len);
+	
+	if (root == NULL) {
+		purple_debug_info("MSN Notification", "Invalid XML!\n");
+		return;
+	}
+	for (domain_node = xmlnode_get_child(root, "d"); domain_node; domain_node = xmlnode_get_next_twin(domain_node)) {
+		const gchar * domain = NULL; 
+		xmlnode *contact_node = NULL;
+
+		domain = xmlnode_get_attrib(domain_node, "n");
+
+		for (contact_node = xmlnode_get_child(domain_node, "c"); contact_node; contact_node = xmlnode_get_next_twin(contact_node)) {
+//			gchar *name = NULL, *friendlyname = NULL, *passport= NULL;
+			const gchar *list;
+			gint list_op = 0;
+
+//			name = xmlnode_get_attrib(contact_node, "n");
+			list = xmlnode_get_attrib(contact_node, "l");
+			if (list != NULL) {
+				list_op = atoi(list);
+			}
+//			friendlyname = xmlnode_get_attrib(contact_node, "f");
+
+//			passport = g_strdup_printf("%s@%s", name, domain);
+
+//			if (friendlyname != NULL) {
+//				decoded_friendlyname = g_strdup(purple_url_decode(friendlyname));
+//			} else {
+//				decoded_friendlyname = g_strdup(passport);
+//			}
+
+			if (list_op & MSN_LIST_RL_OP) {
+				/* someone is adding us */
+//				got_new_entry(cmdproc->session->account->gc, passport, decoded_friendly_name);
+				msn_get_contact_list(cmdproc->session->contact, MSN_PS_PENDING_LIST, NULL);
+			}
+
+//			g_free(decoded_friendly_name);
+//			g_free(passport);
+		}
+	}
+
+	xmlnode_free(root);
+}
+
+static void
+adl_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
 {
 	MsnSession *session;
-	MsnUser *user;
-	const char *list;
-	const char *passport;
-	const char *friendly;
-	MsnListId list_id;
-	int group_id;
 
-	list     = cmd->params[1];
-	passport = cmd->params[3];
-	friendly = purple_url_decode(cmd->params[4]);
+	g_return_if_fail(cmdproc != NULL);
+	g_return_if_fail(cmdproc->session != NULL);
+	g_return_if_fail(cmdproc->last_cmd != NULL);
+	g_return_if_fail(cmd != NULL);
 
 	session = cmdproc->session;
 
-	user = msn_userlist_find_user(session->userlist, passport);
+	if ( !strcmp(cmd->params[1], "OK")) {
+		/* ADL ack */
+		msn_session_finish_login(session);
+	} else {
+		cmdproc->last_cmd->payload_cb = adl_cmd_parse;
+	}
+
+	return;
+}
 
-	if (user == NULL)
-	{
-		user = msn_user_new(session->userlist, passport, friendly);
-		msn_userlist_add_user(session->userlist, user);
-	}
-	else
-		msn_user_set_friendly_name(user, friendly);
+static void
+adl_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error)
+{
+	MsnSession *session;
+	PurpleAccount *account;
+	PurpleConnection *gc;
+	char *reason = NULL;
+
+	session = cmdproc->session;
+	account = session->account;
+	gc = purple_account_get_connection(account);
+
+	purple_debug_error("msn","ADL error\n");
+	reason = g_strdup_printf(_("Unknown error (%d)"), error);
+	purple_notify_error(gc, NULL, _("Unable to add user"), reason);
+	g_free(reason);
+}
 
-	list_id = msn_get_list_id(list);
+static void
+fqy_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
+			 size_t len)
+{
+	purple_debug_info("MSN Notification","FQY payload:\n%s\n", payload);
+	g_return_if_fail(cmdproc->session != NULL);
+	g_return_if_fail(cmdproc->session->contact != NULL);
+//	msn_notification_post_adl(cmdproc, payload, len);
+//	msn_get_address_book(cmdproc->session->contact, MSN_AB_SAVE_CONTACT, NULL, NULL);
+}
 
-	if (cmd->param_count >= 6)
-		group_id = atoi(cmd->params[5]);
-	else
-		group_id = -1;
+static void
+fqy_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
+{
+	purple_debug_info("MSNP14","Process FQY\n");
+	cmdproc->last_cmd->payload_cb = fqy_cmd_post;
+}
 
-	msn_got_add_user(session, user, list_id, group_id);
-	msn_user_update(user);
+static void
+rml_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
+{
+#if 0
+	MsnTransaction *trans;
+	char * payload;
+#endif
+
+	purple_debug_info("MSNP14","Process RML\n");
+#if 0
+	trans = msn_transaction_new(cmdproc, "RML","");
+
+	msn_transaction_set_payload(trans, payload, strlen(payload));
+
+	msn_cmdproc_send_trans(cmdproc, trans);
+#endif
 }
 
 static void
@@ -567,24 +966,22 @@
 
 	group_name = purple_url_decode(cmd->params[2]);
 
-	msn_group_new(session->userlist, group_id, group_name);
+	msn_group_new(session->userlist, cmd->params[3], group_name);
 
-	/* There is a user that must me moved to this group */
+	/* There is a user that must be moved to this group */
 	if (cmd->trans->data)
 	{
 		/* msn_userlist_move_buddy(); */
 		MsnUserList *userlist = cmdproc->session->userlist;
-		MsnMoveBuddy *data = cmd->trans->data;
+		MsnCallbackState *data = cmd->trans->data;
 
 		if (data->old_group_name != NULL)
 		{
-			msn_userlist_rem_buddy(userlist, data->who, MSN_LIST_FL, data->old_group_name);
+			msn_userlist_move_buddy(userlist, data->who, data->old_group_name, group_name);
 			g_free(data->old_group_name);
+		} else {
+			// msn_add_contact_to_group(userlist, data, data->who, group_name);
 		}
-
-		msn_userlist_add_buddy(userlist, data->who, MSN_LIST_FL, group_name);
-		g_free(data->who);
-
 	}
 }
 
@@ -642,6 +1039,7 @@
 	PurpleConnection *gc;
 	MsnUser *user;
 	MsnObject *msnobj;
+	int wlmclient;
 	const char *state, *passport, *friendly;
 
 	session = cmdproc->session;
@@ -650,7 +1048,9 @@
 
 	state    = cmd->params[1];
 	passport = cmd->params[2];
-	friendly = purple_url_decode(cmd->params[3]);
+	/*if a contact is actually on the WLM part or the yahoo part*/
+	wlmclient = atoi(cmd->params[3]);
+	friendly = purple_url_decode(cmd->params[4]);
 
 	user = msn_userlist_find_user(session->userlist, passport);
 
@@ -658,9 +1058,9 @@
 
 	msn_user_set_friendly_name(user, friendly);
 
-	if (session->protocol_ver >= 9 && cmd->param_count == 6)
+	if (session->protocol_ver >= 9 && cmd->param_count == 8)
 	{
-		msnobj = msn_object_new_from_string(purple_url_decode(cmd->params[5]));
+		msnobj = msn_object_new_from_string(purple_url_decode(cmd->params[6]));
 		msn_user_set_object(user, msnobj);
 	}
 
@@ -692,6 +1092,7 @@
 	MsnUser *user;
 	MsnObject *msnobj;
 	int clientid;
+	int wlmclient;
 	const char *state, *passport, *friendly, *old_friendly;
 
 	session = cmdproc->session;
@@ -700,7 +1101,8 @@
 
 	state    = cmd->params[0];
 	passport = cmd->params[1];
-	friendly = purple_url_decode(cmd->params[2]);
+	wlmclient = atoi(cmd->params[2]);
+	friendly = purple_url_decode(cmd->params[3]);
 
 	user = msn_userlist_find_user(session->userlist, passport);
 
@@ -713,10 +1115,9 @@
 
 	if (session->protocol_ver >= 9)
 	{
-		if (cmd->param_count == 5)
+		if (cmd->param_count == 7)
 		{
-			msnobj =
-				msn_object_new_from_string(purple_url_decode(cmd->params[4]));
+			msnobj = msn_object_new_from_string(purple_url_decode(cmd->params[5]));
 			msn_user_set_object(user, msnobj);
 		}
 		else
@@ -725,7 +1126,7 @@
 		}
 	}
 
-	clientid = atoi(cmd->params[3]);
+	clientid = atoi(cmd->params[4]);
 	user->mobile = (clientid & MSN_CLIENT_CAP_MSNMOBILE);
 
 	msn_user_set_state(user, state);
@@ -797,7 +1198,7 @@
 prp_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
 {
 	MsnSession *session = cmdproc->session;
-	const char *type, *value;
+	const char *type, *value, *friendlyname;
 
 	g_return_if_fail(cmd->param_count >= 3);
 
@@ -821,6 +1222,18 @@
 			msn_user_set_work_phone(session->user, NULL);
 		else if (!strcmp(type, "PHM"))
 			msn_user_set_mobile_phone(session->user, NULL);
+		else {
+			type = cmd->params[1];
+			if (!strcmp(type, "MFN")) {
+				friendlyname = purple_url_decode(cmd->params[2]);
+				
+				msn_update_contact(session->contact, friendlyname);
+
+				purple_connection_set_display_name(
+					purple_account_get_connection(session->account),
+					friendlyname);
+			}
+		}
 	}
 }
 
@@ -828,11 +1241,10 @@
 reg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
 {
 	MsnSession *session;
-	int group_id;
-	const char *group_name;
+	const char *group_id, *group_name;
 
 	session = cmdproc->session;
-	group_id = atoi(cmd->params[2]);
+	group_id = cmd->params[2];
 	group_name = purple_url_decode(cmd->params[3]);
 
 	msn_userlist_rename_group_id(session->userlist, group_id, group_name);
@@ -841,27 +1253,26 @@
 static void
 reg_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error)
 {
-	int group_id;
+	const char * group_id;
 	char **params;
 
 	params = g_strsplit(trans->params, " ", 0);
 
-	group_id = atoi(params[0]);
+	group_id = params[0];
 
 	group_error_helper(cmdproc->session, _("Unable to rename group"), group_id, error);
 
 	g_strfreev(params);
 }
 
+#if 0
 static void
 rem_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
 {
 	MsnSession *session;
 	MsnUser *user;
-	const char *list;
-	const char *passport;
+	const char *group_id, *list, *passport;
 	MsnListId list_id;
-	int group_id;
 
 	session = cmdproc->session;
 	list = cmd->params[1];
@@ -873,22 +1284,23 @@
 	list_id = msn_get_list_id(list);
 
 	if (cmd->param_count == 5)
-		group_id = atoi(cmd->params[4]);
+		group_id = cmd->params[4];
 	else
-		group_id = -1;
+		group_id = NULL;
 
 	msn_got_rem_user(session, user, list_id, group_id);
 	msn_user_update(user);
 }
+#endif
 
 static void
 rmg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
 {
 	MsnSession *session;
-	int group_id;
+	const char *group_id;
 
 	session = cmdproc->session;
-	group_id = atoi(cmd->params[2]);
+	group_id = cmd->params[2];
 
 	msn_userlist_remove_group_id(session->userlist, group_id);
 }
@@ -896,18 +1308,19 @@
 static void
 rmg_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error)
 {
-	int group_id;
+	const char *group_id;
 	char **params;
 
 	params = g_strsplit(trans->params, " ", 0);
 
-	group_id = atoi(params[0]);
+	group_id = params[0];
 
 	group_error_helper(cmdproc->session, _("Unable to delete group"), group_id, error);
 
 	g_strfreev(params);
 }
 
+#if 0
 static void
 syn_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
 {
@@ -938,6 +1351,7 @@
 	session->sync = sync;
 	cmdproc->cbs_table = sync->cbs_table;
 }
+#endif
 
 /**************************************************************************
  * Misc commands
@@ -1146,6 +1560,101 @@
 	g_free(host);
 }
 
+static void
+gcf_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
+			 size_t len)
+{
+	xmlnode * root;
+	gchar * buf;
+
+	g_return_if_fail(cmd->payload != NULL);
+
+	if ( (root = xmlnode_from_str(cmd->payload, cmd->payload_len)) == NULL)
+	{
+		purple_debug_error("MSN","Unable to parse GCF payload into a XML tree");
+		return;
+	}
+	
+	buf = xmlnode_to_formatted_str(root, NULL);
+
+	/* get the payload content */
+	purple_debug_info("MSNP14","GCF command payload:\n%s\n",buf);
+	
+	g_free(buf);
+	xmlnode_free(root);
+}
+
+static void
+gcf_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
+{
+	purple_debug_info("MSNP14","Processing GCF command\n");
+	cmdproc->last_cmd->payload_cb  = gcf_cmd_post;
+	return;
+}
+
+static void
+sbs_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
+{
+	purple_debug_info("MSNP14","Processing SBS... \n");
+	if(cmd->payload_len == 0){
+		return;
+	}
+	/*get the payload content*/
+}
+
+/*
+ * Get the UBX's PSM info
+ * Post it to the User status
+ * Thanks for Chris <ukdrizzle@yahoo.co.uk>'s code
+ */
+static void
+ubx_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
+			 size_t len)
+{
+	MsnSession *session;
+	PurpleAccount *account;
+	MsnUser *user;
+	const char *passport;
+	char *psm_str, *currentmedia_str, *str;
+
+	/*get the payload content*/
+//	purple_debug_info("MSNP14","UBX {%s} payload{%s}\n",cmd->params[0], cmd->payload);
+
+	session = cmdproc->session;
+	account = session->account;
+
+	passport = cmd->params[0];
+	user = msn_userlist_find_user(session->userlist, passport);
+	
+	psm_str = msn_get_psm(cmd->payload,len);
+	currentmedia_str = msn_parse_currentmedia(
+	                                 str = msn_get_currentmedia(cmd->payload, len));
+	g_free(str);
+
+	msn_user_set_statusline(user, psm_str);
+	msn_user_set_currentmedia(user, currentmedia_str);
+	msn_user_update(user);
+
+	g_free(psm_str);
+	g_free(currentmedia_str);
+}
+
+static void
+ubx_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
+{
+	purple_debug_misc("MSNP14","UBX received.\n");
+	if(cmd->payload_len == 0){
+		return;
+	}
+	cmdproc->last_cmd->payload_cb  = ubx_cmd_post;
+}
+
+static void
+uux_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
+{
+	purple_debug_misc("MSNP14","UUX received.\n");
+}
+
 /**************************************************************************
  * Message Types
  **************************************************************************/
@@ -1155,6 +1664,7 @@
 {
 	MsnSession *session;
 	const char *value;
+	const char *clLastChange;
 
 	session = cmdproc->session;
 
@@ -1187,10 +1697,27 @@
 	}
 
 	if ((value = msn_message_get_attr(msg, "ClientPort")) != NULL)
+	{
 		session->passport_info.client_port = ntohs(atoi(value));
+	}
 
 	if ((value = msn_message_get_attr(msg, "LoginTime")) != NULL)
 		session->passport_info.sl = atol(value);
+
+	/*starting retrieve the contact list*/
+	clLastChange = purple_account_get_string(session->account, "CLLastChange", NULL);
+	session->contact = msn_contact_new(session);
+#ifdef MSN_PARTIAL_LISTS
+	/* msn_userlist_load defeats all attempts at trying to detect blist sync issues */
+	msn_userlist_load(session);
+	msn_get_contact_list(session->contact, MSN_PS_INITIAL, clLastChange);
+#else
+	/* always get the full list? */
+	msn_get_contact_list(session->contact, MSN_PS_INITIAL, NULL);
+#endif
+#if 0
+	msn_contact_connect(session->contact);
+#endif
 }
 
 static void
@@ -1246,6 +1773,88 @@
 	g_hash_table_destroy(table);
 }
 
+/*offline Message notification process*/
+static void
+initial_mdata_msg(MsnCmdProc *cmdproc, MsnMessage *msg)
+{
+	MsnSession *session;
+	PurpleConnection *gc;
+	GHashTable *table;
+	const char *mdata, *unread;
+
+	session = cmdproc->session;
+	gc = session->account->gc;
+
+	if (strcmp(msg->remote_user, "Hotmail"))
+		/* This isn't an official message. */
+		return;
+
+	/*new a oim session*/
+	/* There are several things that call this */
+	if (session->oim == NULL)
+		session->oim = msn_oim_new(session);
+//	msn_oim_connect(session->oim);
+
+	table = msn_message_get_hashtable_from_body(msg);
+
+	mdata = g_hash_table_lookup(table, "Mail-Data");
+
+	if (mdata != NULL)
+		msn_parse_oim_msg(session->oim, mdata);
+
+	if (g_hash_table_lookup(table, "Inbox-URL") == NULL)
+	{
+		g_hash_table_destroy(table);
+		return;
+	}
+
+	if (session->passport_info.file == NULL)
+	{
+		MsnTransaction *trans;
+		trans = msn_transaction_new(cmdproc, "URL", "%s", "INBOX");
+		msn_transaction_queue_cmd(trans, msg->cmd);
+
+		msn_cmdproc_send_trans(cmdproc, trans);
+
+		g_hash_table_destroy(table);
+		return;
+	}
+
+	if (!purple_account_get_check_mail(session->account))
+	{
+		g_hash_table_destroy(table);
+		return;
+	}
+
+	unread = g_hash_table_lookup(table, "Inbox-Unread");
+
+	if (unread != NULL)
+	{
+		int count = atoi(unread);
+
+		if (count > 0)
+		{
+			const char *passport;
+			const char *url;
+
+			passport = msn_user_get_passport(session->user);
+			url = session->passport_info.file;
+
+			purple_notify_emails(gc, atoi(unread), FALSE, NULL, NULL,
+							   &passport, &url, NULL, NULL);
+		}
+	}
+
+	g_hash_table_destroy(table);
+}
+
+/*offline Message Notification*/
+static void
+delete_oim_msg(MsnCmdProc *cmdproc, MsnMessage *msg)
+{
+	purple_debug_misc("MSN Notification","Delete OIM message.\n");
+}
+
 static void
 email_msg(MsnCmdProc *cmdproc, MsnMessage *msg)
 {
@@ -1347,48 +1956,62 @@
 }
 
 void
-msn_notification_add_buddy(MsnNotification *notification, const char *list,
-						   const char *who, const char *store_name,
-						   int group_id)
+msn_notification_add_buddy_to_list(MsnNotification *notification, MsnListId list_id,
+						   	  const char *who)
 {
 	MsnCmdProc *cmdproc;
+	MsnListOp list_op = 1 << list_id;
+	xmlnode *adl_node;
+	char *payload;
+	int payload_len;
+
 	cmdproc = notification->servconn->cmdproc;
 
-	if (group_id < 0 && !strcmp(list, "FL"))
-		group_id = 0;
+	adl_node = xmlnode_new("ml");
+	adl_node->child = NULL;
+
+	msn_add_contact_xml(notification->session, adl_node, who, list_op, 
+						MSN_USER_TYPE_PASSPORT);
 
-	if (group_id >= 0)
-	{
-		msn_cmdproc_send(cmdproc, "ADD", "%s %s %s %d",
-						 list, who, store_name, group_id);
-	}
-	else
-	{
-		msn_cmdproc_send(cmdproc, "ADD", "%s %s %s", list, who, store_name);
-	}
+	payload = xmlnode_to_str(adl_node,&payload_len);
+	xmlnode_free(adl_node);
+	
+	msn_notification_post_adl(notification->servconn->cmdproc,
+						payload,payload_len);
+	g_free(payload);
 }
 
 void
-msn_notification_rem_buddy(MsnNotification *notification, const char *list,
-						   const char *who, int group_id)
+msn_notification_rem_buddy_from_list(MsnNotification *notification, MsnListId list_id,
+						   const char *who)
 {
 	MsnCmdProc *cmdproc;
+	MsnTransaction *trans;
+	MsnListOp list_op = 1 << list_id;
+	xmlnode *rml_node;
+	char *payload;
+	int payload_len;
+
 	cmdproc = notification->servconn->cmdproc;
 
-	if (group_id >= 0)
-	{
-		msn_cmdproc_send(cmdproc, "REM", "%s %s %d", list, who, group_id);
-	}
-	else
-	{
-		msn_cmdproc_send(cmdproc, "REM", "%s %s", list, who);
-	}
+	rml_node = xmlnode_new("ml");
+	rml_node->child = NULL;
+
+	msn_add_contact_xml(notification->session, rml_node, who, list_op, MSN_USER_TYPE_PASSPORT);
+
+	payload = xmlnode_to_str(rml_node, &payload_len);
+	xmlnode_free(rml_node);
+
+	purple_debug_info("MSN Notification","Send RML with payload:\n%s\n", payload);
+	trans = msn_transaction_new(cmdproc, "RML","%d", strlen(payload));
+	msn_transaction_set_payload(trans, payload, strlen(payload));
+	msn_cmdproc_send_trans(cmdproc, trans);
+	g_free(payload);
 }
 
 /**************************************************************************
  * Init
  **************************************************************************/
-
 void
 msn_notification_init(void)
 {
@@ -1399,18 +2022,18 @@
 	/* Synchronous */
 	msn_table_add_cmd(cbs_table, "CHG", "CHG", NULL);
 	msn_table_add_cmd(cbs_table, "CHG", "ILN", iln_cmd);
-	msn_table_add_cmd(cbs_table, "ADD", "ADD", add_cmd);
-	msn_table_add_cmd(cbs_table, "ADD", "ILN", iln_cmd);
-	msn_table_add_cmd(cbs_table, "REM", "REM", rem_cmd);
+	msn_table_add_cmd(cbs_table, "ADL", "ILN", iln_cmd);
+//	msn_table_add_cmd(cbs_table, "REM", "REM", rem_cmd);	/* Removed as of MSNP13 */
 	msn_table_add_cmd(cbs_table, "USR", "USR", usr_cmd);
 	msn_table_add_cmd(cbs_table, "USR", "XFR", xfr_cmd);
-	msn_table_add_cmd(cbs_table, "SYN", "SYN", syn_cmd);
+	msn_table_add_cmd(cbs_table, "USR", "GCF", gcf_cmd);
+//	msn_table_add_cmd(cbs_table, "SYN", "SYN", syn_cmd);	/* Removed as of MSNP13 */
 	msn_table_add_cmd(cbs_table, "CVR", "CVR", cvr_cmd);
 	msn_table_add_cmd(cbs_table, "VER", "VER", ver_cmd);
 	msn_table_add_cmd(cbs_table, "REA", "REA", rea_cmd);
 	msn_table_add_cmd(cbs_table, "PRP", "PRP", prp_cmd);
-	/* msn_table_add_cmd(cbs_table, "BLP", "BLP", blp_cmd); */
-	msn_table_add_cmd(cbs_table, "BLP", "BLP", NULL);
+	msn_table_add_cmd(cbs_table, "BLP", "BLP", blp_cmd);
+//	msn_table_add_cmd(cbs_table, "BLP", "BLP", NULL);
 	msn_table_add_cmd(cbs_table, "REG", "REG", reg_cmd);
 	msn_table_add_cmd(cbs_table, "ADG", "ADG", adg_cmd);
 	msn_table_add_cmd(cbs_table, "RMG", "RMG", rmg_cmd);
@@ -1419,11 +2042,15 @@
 	/* Asynchronous */
 	msn_table_add_cmd(cbs_table, NULL, "IPG", ipg_cmd);
 	msn_table_add_cmd(cbs_table, NULL, "MSG", msg_cmd);
+	msn_table_add_cmd(cbs_table, NULL, "UBM", ubm_cmd);
+	msn_table_add_cmd(cbs_table, NULL, "GCF", gcf_cmd);
+	msn_table_add_cmd(cbs_table, NULL, "SBS", sbs_cmd);
 	msn_table_add_cmd(cbs_table, NULL, "NOT", not_cmd);
 
 	msn_table_add_cmd(cbs_table, NULL, "CHL", chl_cmd);
-	msn_table_add_cmd(cbs_table, NULL, "REM", rem_cmd);
-	msn_table_add_cmd(cbs_table, NULL, "ADD", add_cmd);
+	msn_table_add_cmd(cbs_table, NULL, "RML", rml_cmd);
+	msn_table_add_cmd(cbs_table, NULL, "ADL", adl_cmd);
+	msn_table_add_cmd(cbs_table, NULL, "FQY", fqy_cmd);
 
 	msn_table_add_cmd(cbs_table, NULL, "QRY", NULL);
 	msn_table_add_cmd(cbs_table, NULL, "QNG", qng_cmd);
@@ -1433,11 +2060,15 @@
 	msn_table_add_cmd(cbs_table, NULL, "OUT", out_cmd);
 	msn_table_add_cmd(cbs_table, NULL, "RNG", rng_cmd);
 
+	msn_table_add_cmd(cbs_table, NULL, "UBX", ubx_cmd);
+	msn_table_add_cmd(cbs_table, NULL, "UUX", uux_cmd);
+
 	msn_table_add_cmd(cbs_table, NULL, "URL", url_cmd);
 
 	msn_table_add_cmd(cbs_table, "fallback", "XFR", xfr_cmd);
 
 	msn_table_add_error(cbs_table, "ADD", add_error);
+	msn_table_add_error(cbs_table, "ADL", adl_error);
 	msn_table_add_error(cbs_table, "REG", reg_error);
 	msn_table_add_error(cbs_table, "RMG", rmg_error);
 	/* msn_table_add_error(cbs_table, "REA", rea_error); */
@@ -1446,12 +2077,24 @@
 	msn_table_add_msg_type(cbs_table,
 						   "text/x-msmsgsprofile",
 						   profile_msg);
+	/*initial OIM notification*/
+	msn_table_add_msg_type(cbs_table,
+							"text/x-msmsgsinitialmdatanotification",
+							initial_mdata_msg);	
+	/*OIM notification when user online*/
+	msn_table_add_msg_type(cbs_table,
+							"text/x-msmsgsoimnotification",
+							initial_mdata_msg);	
 	msn_table_add_msg_type(cbs_table,
 						   "text/x-msmsgsinitialemailnotification",
 						   initial_email_msg);
 	msn_table_add_msg_type(cbs_table,
 						   "text/x-msmsgsemailnotification",
 						   email_msg);
+	/*delete an offline Message notification*/
+	msn_table_add_msg_type(cbs_table,
+							"text/x-msmsgsactivemailnotification",
+						   delete_oim_msg);
 	msn_table_add_msg_type(cbs_table,
 						   "application/x-msmsgssystemmessage",
 						   system_msg);
@@ -1462,3 +2105,4 @@
 {
 	msn_table_destroy(cbs_table);
 }
+
--- a/libpurple/protocols/msn/notification.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/notification.h	Tue Oct 23 17:27:12 2007 +0000
@@ -24,6 +24,14 @@
 #ifndef _MSN_NOTIFICATION_H_
 #define _MSN_NOTIFICATION_H_
 
+/*MSN protocol challenge info*/
+/*MSNP13 challenge*/
+#define MSNP13_WLM_PRODUCT_KEY	"O4BG@C7BWLYQX?5G"
+#define MSNP13_WLM_PRODUCT_ID	"PROD01065C%ZFN6F"
+
+#define MSNP10_PRODUCT_KEY		"VT6PX?UQTM4WM%YR"
+#define MSNP10_PRODUCT_ID		"PROD0038W!61ZTF9" 
+
 typedef struct _MsnNotification MsnNotification;
 
 #include "session.h"
@@ -40,21 +48,24 @@
 };
 
 #include "state.h"
+void uum_send_msg(MsnSession *session,MsnMessage *msg);
 
 void msn_notification_end(void);
 void msn_notification_init(void);
 
-void msn_notification_add_buddy(MsnNotification *notification,
-								const char *list, const char *who,
-								const char *store_name, int group_id);
-void msn_notification_rem_buddy(MsnNotification *notification,
-								const char *list, const char *who,
-								int group_id);
+void msn_notification_add_buddy_to_list(MsnNotification *notification,
+					MsnListId list_id, const char *who);
+void msn_notification_rem_buddy_from_list(MsnNotification *notification,
+					  MsnListId list_id, const char *who);
+
+void msn_notification_send_fqy(MsnSession *session, const char *passport);
+
 MsnNotification *msn_notification_new(MsnSession *session);
 void msn_notification_destroy(MsnNotification *notification);
 gboolean msn_notification_connect(MsnNotification *notification,
-							  const char *host, int port);
+				  const char *host, int port);
 void msn_notification_disconnect(MsnNotification *notification);
+void msn_notification_dump_contact(MsnSession *session);
 
 /**
  * Closes a notification.
--- a/libpurple/protocols/msn/object.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/object.c	Tue Oct 23 17:27:12 2007 +0000
@@ -154,10 +154,8 @@
 {
 	g_return_if_fail(obj != NULL);
 
-	if (obj->creator != NULL)
-		g_free(obj->creator);
-
-	obj->creator = (creator == NULL ? NULL : g_strdup(creator));
+	g_free(obj->creator);
+	obj->creator = g_strdup(creator);
 }
 
 void
@@ -181,10 +179,8 @@
 {
 	g_return_if_fail(obj != NULL);
 
-	if (obj->location != NULL)
-		g_free(obj->location);
-
-	obj->location = (location == NULL ? NULL : g_strdup(location));
+	g_free(obj->location);
+	obj->location = g_strdup(location);
 }
 
 void
@@ -192,10 +188,8 @@
 {
 	g_return_if_fail(obj != NULL);
 
-	if (obj->friendly != NULL)
-		g_free(obj->friendly);
-
-	obj->friendly = (friendly == NULL ? NULL : g_strdup(friendly));
+	g_free(obj->friendly);
+	obj->friendly = g_strdup(friendly);
 }
 
 void
@@ -203,10 +197,8 @@
 {
 	g_return_if_fail(obj != NULL);
 
-	if (obj->sha1d != NULL)
-		g_free(obj->sha1d);
-
-	obj->sha1d = (sha1d == NULL ? NULL : g_strdup(sha1d));
+	g_free(obj->sha1d);
+	obj->sha1d = g_strdup(sha1d);
 }
 
 void
@@ -214,10 +206,8 @@
 {
 	g_return_if_fail(obj != NULL);
 
-	if (obj->sha1c != NULL)
-		g_free(obj->sha1c);
-
-	obj->sha1c = (sha1c == NULL ? NULL : g_strdup(sha1c));
+	g_free(obj->sha1c);
+	obj->sha1c = g_strdup(sha1c);
 }
 
 const char *
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/protocols/msn/oim.c	Tue Oct 23 17:27:12 2007 +0000
@@ -0,0 +1,719 @@
+/**
+ * @file oim.c 
+ * 	get and send MSN offline Instant Message via SOAP request
+ *	Author
+ * 		MaYuan<mayuan2006@gmail.com>
+ * purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+#include "msn.h"
+#include "soap.h"
+#include "oim.h"
+#include "msnutils.h"
+
+/*Local Function Prototype*/
+static void msn_oim_post_single_get_msg(MsnOim *oim,const char *msgid);
+static MsnOimSendReq *msn_oim_new_send_req(const char *from_member,
+					   const char *friendname,
+					   const char* to_member,
+					   gint send_seq,
+					   const char *msg);
+static void msn_oim_retrieve_connect_init(MsnSoapConn *soapconn);
+static void msn_oim_send_connect_init(MsnSoapConn *soapconn);
+static void msn_oim_free_send_req(MsnOimSendReq *req);
+static void msn_oim_report_to_user(MsnOim *oim, const char *msg_str);
+static void msn_oim_get_process(MsnOim *oim, const char *oim_msg);
+static gchar *msn_oim_msg_to_str(MsnOim *oim, const char *body);
+static void msn_oim_send_process(MsnOim *oim, const char *body, int len);
+
+/*new a OIM object*/
+MsnOim *
+msn_oim_new(MsnSession *session)
+{
+	MsnOim *oim;
+
+	oim = g_new0(MsnOim, 1);
+	oim->session = session;
+	oim->retrieveconn = msn_soap_new(session, oim, TRUE);
+	
+	oim->oim_list = NULL;
+	oim->sendconn = msn_soap_new(session, oim, TRUE);
+	oim->run_id = rand_guid();
+	oim->challenge = NULL;
+	oim->send_queue = g_queue_new();
+	oim->send_seq = 1;
+	return oim;
+}
+
+/*destroy the oim object*/
+void
+msn_oim_destroy(MsnOim *oim)
+{
+	MsnOimSendReq *request;
+	
+	purple_debug_info("OIM","destroy the OIM \n");
+	msn_soap_destroy(oim->retrieveconn);
+	msn_soap_destroy(oim->sendconn);
+	g_free(oim->run_id);
+	g_free(oim->challenge);
+	
+	while((request = g_queue_pop_head(oim->send_queue)) != NULL){
+		msn_oim_free_send_req(request);
+	}
+	g_queue_free(oim->send_queue);
+	
+	g_free(oim);
+}
+
+static MsnOimSendReq *
+msn_oim_new_send_req(const char *from_member, const char*friendname,
+					 const char* to_member, gint send_seq,
+					 const char *msg)
+{
+	MsnOimSendReq *request;
+	
+	request = g_new0(MsnOimSendReq, 1);
+	request->from_member	=g_strdup(from_member);
+	request->friendname		= g_strdup(friendname);
+	request->to_member		= g_strdup(to_member);
+	request->send_seq		= send_seq;
+	request->oim_msg		= g_strdup(msg);
+	return request;
+}
+
+static void
+msn_oim_free_send_req(MsnOimSendReq *req)
+{
+	g_return_if_fail(req != NULL);
+
+	g_free(req->from_member);
+	g_free(req->friendname);
+	g_free(req->to_member);
+	g_free(req->oim_msg);
+	
+	g_free(req);
+}
+
+/****************************************
+ * OIM send SOAP request
+ * **************************************/
+/*encode the message to OIM Message Format*/
+static gchar *
+msn_oim_msg_to_str(MsnOim *oim, const char *body)
+{
+	char *oim_body,*oim_base64;
+	
+	purple_debug_info("MSN OIM","encode OIM Message...\n");	
+	oim_base64 = purple_base64_encode((const guchar *)body, strlen(body));
+	purple_debug_info("MSN OIM","encoded base64 body:{%s}\n",oim_base64);	
+	oim_body = g_strdup_printf(MSN_OIM_MSG_TEMPLATE,
+				oim->run_id,oim->send_seq,oim_base64);
+	g_free(oim_base64);
+
+	return oim_body;
+}
+
+/*oim SOAP server login error*/
+static void
+msn_oim_send_error_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc, PurpleSslErrorType error)
+{
+	MsnSession *session;
+
+	session = soapconn->session;
+	g_return_if_fail(session != NULL);
+
+	msn_session_set_error(session, MSN_ERROR_SERV_DOWN, _("Unable to connect to OIM server"));
+}
+
+/*msn oim SOAP server connect process*/
+static gboolean
+msn_oim_send_connect_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc)
+{
+	MsnSession * session;
+	MsnOim *oim;
+
+	oim = soapconn->parent;
+	g_return_val_if_fail(oim != NULL, TRUE);
+
+	session = oim->session;
+	g_return_val_if_fail(session != NULL, FALSE);
+
+	return TRUE;
+}
+
+/*
+ * Process the send return SOAP string
+ * If got SOAP Fault,get the lock key,and resend it.
+ */
+static void
+msn_oim_send_process(MsnOim *oim, const char *body, int len)
+{
+	xmlnode *responseNode, *bodyNode;
+	xmlnode *faultNode = NULL, *faultCodeNode, *faultstringNode;
+	xmlnode *detailNode, *challengeNode;
+	char *fault_code, *fault_text;
+
+	responseNode = xmlnode_from_str(body,len);
+
+	g_return_if_fail(responseNode != NULL);
+
+	if ((bodyNode = xmlnode_get_child(responseNode, "Body")))
+		faultNode = xmlnode_get_child(bodyNode, "Fault");
+
+	if (faultNode == NULL) {
+		/*Send OK! return*/
+		MsnOimSendReq *request;
+
+		xmlnode_free(responseNode);
+		request = g_queue_pop_head(oim->send_queue);
+		msn_oim_free_send_req(request);
+		/*send next buffered Offline Message*/
+		msn_soap_post(oim->sendconn, NULL);
+
+		return;
+	}
+
+	/*get the challenge,and repost it*/
+	if (faultNode)
+		faultCodeNode = xmlnode_get_child(faultNode, "faultcode");
+
+	if(faultCodeNode == NULL){
+		purple_debug_info("MSN OIM", "No faultcode for failed Offline Message.\n");
+		xmlnode_free(responseNode);
+		return;
+	}
+
+	fault_code = xmlnode_get_data(faultCodeNode);
+#if 0
+	if(!strcmp(fault_code,"q0:AuthenticationFailed")){
+		/*other Fault Reason?*/
+		goto oim_send_process_fail;
+	}
+#endif
+
+	faultstringNode = xmlnode_get_child(faultNode, "faultstring");
+	fault_text = xmlnode_get_data(faultstringNode);
+	purple_debug_info("MSN OIM", "Error sending Offline Message: %s (%s)\n",
+		fault_text ? fault_text : "(null)", fault_code ? fault_code : "(null)");
+
+	/* lock key fault reason,
+	 * compute the challenge and resend it
+	 */
+	if ((detailNode = xmlnode_get_child(faultNode, "detail"))
+			&& (challengeNode = xmlnode_get_child(detailNode, "LockKeyChallenge"))) {
+		g_free(oim->challenge);
+		oim->challenge = xmlnode_get_data(challengeNode);
+
+		purple_debug_info("MSN OIM", "Retrying Offline IM with lockkey:{%s}\n",
+			oim->challenge ? oim->challenge : "(null)");
+
+		/*repost the send*/
+		msn_oim_send_msg(oim);
+
+		/* XXX: This needs to give up eventually (1 retry, maybe?) */
+	}
+
+	g_free(fault_text);
+	g_free(fault_code);
+	xmlnode_free(responseNode);
+}
+
+static gboolean
+msn_oim_send_read_cb(MsnSoapConn *soapconn)
+{
+	MsnSession *session = soapconn->session;
+	MsnOim * oim;
+
+	if (soapconn->body == NULL)
+		return TRUE;
+
+	g_return_val_if_fail(session != NULL, FALSE);
+	oim = soapconn->session->oim;
+	g_return_val_if_fail(oim != NULL, TRUE);
+
+	purple_debug_info("MSN OIM","read buffer:{%s}\n", soapconn->body);
+	msn_oim_send_process(oim,soapconn->body,soapconn->body_len);
+
+	return TRUE;
+}
+
+static void
+msn_oim_send_written_cb(MsnSoapConn *soapconn)
+{
+	soapconn->read_cb = msn_oim_send_read_cb;
+//	msn_soap_read_cb(data,source,cond);
+}
+
+void
+msn_oim_prep_send_msg_info(MsnOim *oim, const char *membername,
+						   const char* friendname, const char *tomember,
+						   const char * msg)
+{
+	MsnOimSendReq *request;
+
+	g_return_if_fail(oim != NULL);
+
+	request = msn_oim_new_send_req(membername,friendname,tomember,oim->send_seq,msg);
+	g_queue_push_tail(oim->send_queue,request);
+}
+
+/*post send single message request to oim server*/
+void 
+msn_oim_send_msg(MsnOim *oim)
+{
+	MsnSoapReq *soap_request;
+	MsnOimSendReq *oim_request;
+	char *soap_body,*mspauth;
+	gchar *msg_body;
+	char buf[33];
+
+	g_return_if_fail(oim != NULL);
+	oim_request = g_queue_pop_head(oim->send_queue);
+	g_return_if_fail(oim_request != NULL);
+
+	purple_debug_info("MSN OIM","send single OIM Message\n");
+	mspauth = g_strdup_printf("t=%s&amp;p=%s",
+		oim->session->passport_info.t,
+		oim->session->passport_info.p
+		);
+	g_queue_push_head(oim->send_queue,oim_request);
+
+	/* if we got the challenge lock key, we compute it
+	 * else we go for the SOAP fault and resend it.
+	 */
+	if(oim->challenge != NULL){
+		msn_handle_chl(oim->challenge, buf);
+	}else{
+		purple_debug_info("MSN OIM","no lock key challenge,wait for SOAP Fault and Resend\n");
+		buf[0]='\0';
+	}
+	purple_debug_info("MSN OIM","get the lock key challenge {%s}\n",buf);
+
+	msg_body = msn_oim_msg_to_str(oim, oim_request->oim_msg);
+	soap_body = g_strdup_printf(MSN_OIM_SEND_TEMPLATE,
+					oim_request->from_member,
+					oim_request->friendname,
+					oim_request->to_member,
+					mspauth,
+					MSNP13_WLM_PRODUCT_ID,
+					buf,
+					oim_request->send_seq,
+					msg_body);
+
+	soap_request = msn_soap_request_new(MSN_OIM_SEND_HOST,
+					MSN_OIM_SEND_URL,
+					MSN_OIM_SEND_SOAP_ACTION,
+					soap_body,
+					NULL,
+					msn_oim_send_read_cb,
+					msn_oim_send_written_cb,
+					msn_oim_send_connect_init);
+	g_free(mspauth);
+	g_free(msg_body);
+	g_free(soap_body);
+
+	/*increase the offline Sequence control*/
+	if(oim->challenge != NULL){
+		oim->send_seq++;
+	}
+	msn_soap_post(oim->sendconn,soap_request);
+}
+
+/****************************************
+ * OIM delete SOAP request
+ * **************************************/
+static gboolean
+msn_oim_delete_read_cb(MsnSoapConn *soapconn)
+{
+	if (soapconn->body == NULL)
+		return TRUE;
+	purple_debug_info("MSN OIM","OIM delete read buffer:{%s}\n",soapconn->body);
+
+	msn_soap_free_read_buf(soapconn);
+	/*get next single Offline Message*/
+//	msn_soap_post(soapconn,NULL);	/* we already do this in soap.c */
+	return TRUE;
+}
+
+static void
+msn_oim_delete_written_cb(MsnSoapConn *soapconn)
+{
+	soapconn->read_cb = msn_oim_delete_read_cb;
+}
+
+/*Post to get the Offline Instant Message*/
+static void
+msn_oim_post_delete_msg(MsnOim *oim,const char *msgid)
+{
+	MsnSoapReq *soap_request;
+	gchar *soap_body;
+	const char *t,*p;
+
+	g_return_if_fail(oim != NULL);
+	g_return_if_fail(msgid != NULL);
+
+	purple_debug_info("MSN OIM","Delete single OIM Message {%s}\n",msgid);
+	t = oim->session->passport_info.t;
+	p = oim->session->passport_info.p;
+
+	soap_body = g_strdup_printf(MSN_OIM_DEL_TEMPLATE,
+					t,
+					p,
+					msgid
+					);
+	soap_request = msn_soap_request_new(MSN_OIM_RETRIEVE_HOST,
+					MSN_OIM_RETRIEVE_URL,
+					MSN_OIM_DEL_SOAP_ACTION,
+					soap_body,
+					NULL,
+					msn_oim_delete_read_cb,
+					msn_oim_delete_written_cb,
+					msn_oim_retrieve_connect_init);
+	g_free(soap_body);
+	msn_soap_post(oim->retrieveconn,soap_request);
+}
+
+/****************************************
+ * OIM get SOAP request
+ * **************************************/
+/*oim SOAP server login error*/
+static void
+msn_oim_get_error_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc, PurpleSslErrorType error)
+{
+	MsnSession *session;
+
+	session = soapconn->session;
+	g_return_if_fail(session != NULL);
+	msn_soap_clean_unhandled_requests(soapconn);
+
+//	msn_session_set_error(session, MSN_ERROR_SERV_DOWN, _("Unable to connect to OIM server"));
+}
+
+/*msn oim SOAP server connect process*/
+static gboolean
+msn_oim_get_connect_cb(MsnSoapConn *soapconn, PurpleSslConnection *gsc)
+{
+	MsnSession * session;
+	MsnOim *oim;
+
+	oim = soapconn->parent;
+	g_return_val_if_fail(oim != NULL, TRUE);
+
+	session = oim->session;
+	g_return_val_if_fail(session != NULL, FALSE);
+
+	purple_debug_info("MSN OIM","Connected and ready to get OIM!\n");
+
+	return TRUE;
+}
+
+/* like purple_str_to_time, but different. The format of the timestamp
+ * is like this: 5 Sep 2007 21:42:12 -0700 */
+static time_t
+msn_oim_parse_timestamp(const char *timestamp)
+{
+	char month_str[4], tz_str[6];
+	char *tz_ptr = tz_str;
+	static const char *months[] = {
+		"Jan", "Feb", "Mar", "Apr", "May", "Jun",
+		"Jul", "Aug", "Sep", "Oct", "Nov", "Dec", NULL
+	};
+	struct tm t;
+	memset(&t, 0, sizeof(t));
+
+	if (sscanf(timestamp, "%02d %03s %04d %02d:%02d:%02d %05s",
+					&t.tm_mday, month_str, &t.tm_year,
+					&t.tm_hour, &t.tm_min, &t.tm_sec, tz_str) == 7) {
+		gboolean offset_positive = TRUE;
+		int tzhrs;
+		int tzmins;
+		
+		for (t.tm_mon = 0;
+			 months[t.tm_mon] != NULL &&
+				 strcmp(months[t.tm_mon], month_str) != 0; t.tm_mon++);
+		if (months[t.tm_mon] != NULL) {
+			if (*tz_str == '-') {
+				offset_positive = FALSE;
+				tz_ptr++;
+			} else if (*tz_str == '+') {
+				tz_ptr++;
+			}
+
+			if (sscanf(tz_ptr, "%02d%02d", &tzhrs, &tzmins) == 2) {
+				time_t tzoff = tzhrs * 60 * 60 + tzmins * 60;
+#ifdef _WIN32
+				long sys_tzoff;
+#endif
+
+				if (!offset_positive)
+					tzoff *= -1;
+
+				t.tm_year -= 1900;
+				t.tm_isdst = 0;
+
+#ifdef _WIN32
+				if ((sys_tzoff = wpurple_get_tz_offset()) != -1)
+					tzoff += sys_tzoff;
+#else
+#ifdef HAVE_TM_GMTOFF
+				tzoff += t.tm_gmtoff;
+#else
+#	ifdef HAVE_TIMEZONE
+				tzset();    /* making sure */
+				tzoff -= timezone;
+#	endif
+#endif
+#endif /* _WIN32 */
+
+				return mktime(&t) + tzoff;
+			}
+		}
+	}
+
+	purple_debug_info("MSN OIM:OIM", "Can't parse timestamp %s\n", timestamp);
+	return time(NULL);
+}
+
+/*Post the Offline Instant Message to User Conversation*/
+static void
+msn_oim_report_to_user(MsnOim *oim, const char *msg_str)
+{
+	MsnMessage *message;
+	char *date,*from,*decode_msg;
+	gsize body_len;
+	char **tokens;
+	char *start,*end;
+	int has_nick = 0;
+	char *passport_str, *passport;
+	char *msg_id;
+	time_t stamp;
+
+	message = msn_message_new(MSN_MSG_UNKNOWN);
+
+	msn_message_parse_payload(message, msg_str, strlen(msg_str),
+							  MSG_OIM_LINE_DEM, MSG_OIM_BODY_DEM);
+	purple_debug_info("MSN OIM","oim body:{%s}\n",message->body);
+	decode_msg = (char *)purple_base64_decode(message->body,&body_len);
+	date =	(char *)g_hash_table_lookup(message->attr_table, "Date");
+	from =	(char *)g_hash_table_lookup(message->attr_table, "From");
+	if(strstr(from," ")){
+		has_nick = 1;
+	}
+	if(has_nick){
+		tokens = g_strsplit(from , " " , 2);
+		passport_str = g_strdup(tokens[1]);
+		purple_debug_info("MSN OIM","oim Date:{%s},nickname:{%s},tokens[1]:{%s} passport{%s}\n",
+							date,tokens[0],tokens[1],passport_str);
+		g_strfreev(tokens);
+	}else{
+		passport_str = g_strdup(from);
+		purple_debug_info("MSN OIM","oim Date:{%s},passport{%s}\n",
+					date,passport_str);
+	}
+	start = strstr(passport_str,"<");
+	start += 1;
+	end = strstr(passport_str,">");
+	passport = g_strndup(start,end - start);
+	g_free(passport_str);
+	purple_debug_info("MSN OIM","oim Date:{%s},passport{%s}\n",date,passport);
+
+	stamp = msn_oim_parse_timestamp(date);
+
+	serv_got_im(oim->session->account->gc, passport, decode_msg, 0, stamp);
+
+	/*Now get the oim message ID from the oim_list.
+	 * and append to read list to prepare for deleting the Offline Message when sign out
+	 */
+	if(oim->oim_list != NULL){
+		msg_id = oim->oim_list->data;
+		msn_oim_post_delete_msg(oim,msg_id);
+		oim->oim_list = g_list_remove(oim->oim_list, oim->oim_list->data);
+		g_free(msg_id);
+	}
+
+	g_free(passport);
+}
+
+/* Parse the XML data,
+ * prepare to report the OIM to user
+ */
+static void
+msn_oim_get_process(MsnOim *oim, const char *oim_msg)
+{
+	xmlnode *oim_node,*bodyNode,*responseNode,*msgNode;
+	char *msg_str;
+
+	oim_node = xmlnode_from_str(oim_msg, strlen(oim_msg));
+	bodyNode = xmlnode_get_child(oim_node,"Body");
+	responseNode = xmlnode_get_child(bodyNode,"GetMessageResponse");
+	msgNode = xmlnode_get_child(responseNode,"GetMessageResult");
+	msg_str = xmlnode_get_data(msgNode);
+	purple_debug_info("OIM","msg:{%s}\n",msg_str);
+	msn_oim_report_to_user(oim,msg_str);
+
+	g_free(msg_str);
+	xmlnode_free(oim_node);
+}
+
+static gboolean
+msn_oim_get_read_cb(MsnSoapConn *soapconn)
+{
+	MsnOim * oim = soapconn->session->oim;
+
+	if (soapconn->body == NULL)
+		return TRUE;
+
+	purple_debug_info("MSN OIM","OIM get read buffer:{%s}\n",soapconn->body);
+
+	/*we need to process the read message!*/
+	msn_oim_get_process(oim,soapconn->body);
+	msn_soap_free_read_buf(soapconn);
+
+	/*get next single Offline Message*/
+//	msn_soap_post(soapconn,NULL); /* we already do this in soap.c */
+	return TRUE;
+}
+
+static void
+msn_oim_get_written_cb(MsnSoapConn *soapconn)
+{
+	soapconn->read_cb = msn_oim_get_read_cb;
+//	msn_soap_read_cb(data,source,cond);
+}
+
+/* parse the oim XML data 
+ * and post it to the soap server to get the Offline Message
+ * */
+void
+msn_parse_oim_msg(MsnOim *oim,const char *xmlmsg)
+{
+	xmlnode *node, *mNode,*ENode,*INode,*rtNode,*nNode;
+	char *passport,*msgid,*nickname, *unread, *rTime = NULL;
+	MsnSession *session = oim->session;
+
+	purple_debug_info("MSN OIM:OIM", "%s", xmlmsg);
+
+	node = xmlnode_from_str(xmlmsg, strlen(xmlmsg));
+	if (!node || !node->name || strcmp(node->name, "MD") != 0) {
+		if (node)
+			xmlnode_free(node);
+		return;
+	}
+
+	ENode = xmlnode_get_child(node, "E");
+	INode = xmlnode_get_child(ENode, "IU");
+	unread = xmlnode_get_data(INode);
+
+	if (unread != NULL && purple_account_get_check_mail(session->account))
+	{
+		int count = atoi(unread);
+
+		if (count > 0)
+		{
+			const char *passport;
+			const char *url;
+
+			passport = msn_user_get_passport(session->user);
+			url = session->passport_info.file;
+
+			purple_notify_emails(session->account->gc, atoi(unread), FALSE, NULL, NULL,
+					&passport, &url, NULL, NULL);
+		}
+	}
+
+	for(mNode = xmlnode_get_child(node, "M"); mNode;
+					mNode = xmlnode_get_next_twin(mNode)){
+		/*email Node*/
+		ENode = xmlnode_get_child(mNode,"E");
+		passport = xmlnode_get_data(ENode);
+		/*Index */
+		INode = xmlnode_get_child(mNode,"I");
+		msgid = xmlnode_get_data(INode);
+		/*Nickname*/
+		nNode = xmlnode_get_child(mNode,"N");
+		nickname = xmlnode_get_data(nNode);
+		/*receive time*/
+		rtNode = xmlnode_get_child(mNode,"RT");
+		if(rtNode != NULL)
+			rTime = xmlnode_get_data(rtNode);
+/*		purple_debug_info("MSN OIM","E:{%s},I:{%s},rTime:{%s}\n",passport,msgid,rTime); */
+
+		oim->oim_list = g_list_append(oim->oim_list,strdup(msgid));
+		msn_oim_post_single_get_msg(oim,msgid);
+		g_free(passport);
+		g_free(msgid);
+		g_free(rTime);
+		rTime = NULL;
+		g_free(nickname);
+	}
+	g_free(unread);
+	xmlnode_free(node);
+}
+
+/*Post to get the Offline Instant Message*/
+static void
+msn_oim_post_single_get_msg(MsnOim *oim,const char *msgid)
+{
+	MsnSoapReq *soap_request;
+	gchar *soap_body;
+	const char *t,*p;
+
+	purple_debug_info("MSN OIM","Get single OIM Message\n");
+	t = oim->session->passport_info.t;
+	p = oim->session->passport_info.p;
+
+	soap_body = g_strdup_printf(MSN_OIM_GET_TEMPLATE,
+					t,
+					p,
+					msgid
+					);
+	soap_request = msn_soap_request_new(MSN_OIM_RETRIEVE_HOST,
+					MSN_OIM_RETRIEVE_URL,
+					MSN_OIM_GET_SOAP_ACTION,
+					soap_body,
+					NULL,
+					msn_oim_get_read_cb,
+					msn_oim_get_written_cb,
+					msn_oim_retrieve_connect_init);
+	g_free(soap_body);
+	msn_soap_post(oim->retrieveconn,soap_request);
+}
+
+/*msn oim retrieve server connect init */
+static void
+msn_oim_retrieve_connect_init(MsnSoapConn *soapconn)
+{
+	purple_debug_info("MSN OIM","Initializing OIM retrieve connection\n");
+	msn_soap_init(soapconn, MSN_OIM_RETRIEVE_HOST, TRUE,
+		      msn_oim_get_connect_cb,
+		      msn_oim_get_error_cb);
+}
+
+/*Msn OIM Send Server Connect Init Function*/
+static void
+msn_oim_send_connect_init(MsnSoapConn *sendconn)
+{
+	purple_debug_info("MSN OIM","Initializing OIM send connection\n");
+	msn_soap_init(sendconn, MSN_OIM_SEND_HOST, TRUE,
+		      msn_oim_send_connect_cb,
+		      msn_oim_send_error_cb);
+}
+
+/* EOF oim.c*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/protocols/msn/oim.h	Tue Oct 23 17:27:12 2007 +0000
@@ -0,0 +1,148 @@
+/**
+ * @file oim.h			Header file for oim.c
+ *	Author
+ * 		MaYuan<mayuan2006@gmail.com>
+ * purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+#ifndef _MSN_OIM_H_
+#define _MSN_OIM_H_
+
+/*OIM Retrieve SOAP Template*/
+#define MSN_OIM_RETRIEVE_HOST	"rsi.hotmail.com"
+#define MSN_OIM_RETRIEVE_URL	"/rsi/rsi.asmx"
+#define MSN_OIM_GET_SOAP_ACTION	"http://www.hotmail.msn.com/ws/2004/09/oim/rsi/GetMessage"
+
+#define MSN_OIM_GET_TEMPLATE "<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
+"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"\
+	"<soap:Header>"\
+		"<PassportCookie xmlns=\"http://www.hotmail.msn.com/ws/2004/09/oim/rsi\">"\
+			"<t>%s</t>"\
+			"<p>%s</p>"\
+		"</PassportCookie>"\
+	"</soap:Header>"\
+	"<soap:Body>"\
+		"<GetMessage xmlns=\"http://www.hotmail.msn.com/ws/2004/09/oim/rsi\">"\
+			"<messageId>%s</messageId>"\
+			"<alsoMarkAsRead>false</alsoMarkAsRead>"\
+		"</GetMessage>"\
+	"</soap:Body>"\
+"</soap:Envelope>"
+
+/*OIM Delete SOAP Template*/
+#define MSN_OIM_DEL_SOAP_ACTION	"http://www.hotmail.msn.com/ws/2004/09/oim/rsi/DeleteMessages"
+
+#define MSN_OIM_DEL_TEMPLATE "<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
+"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"\
+	"<soap:Header>"\
+		"<PassportCookie xmlns=\"http://www.hotmail.msn.com/ws/2004/09/oim/rsi\">"\
+			"<t>%s</t>"\
+			" <p>%s</p>"\
+		"</PassportCookie>"\
+	"</soap:Header>"\
+	"<soap:Body>"\
+		"<DeleteMessages xmlns=\"http://www.hotmail.msn.com/ws/2004/09/oim/rsi\">"\
+			"<messageIds>"\
+				"<messageId>%s</messageId>"\
+			"</messageIds>"\
+		"</DeleteMessages>"\
+	"</soap:Body>"\
+"</soap:Envelope>"
+
+/*OIM Send SOAP Template*/
+#define MSN_OIM_MSG_TEMPLATE "MIME-Version: 1.0\n"\
+	"Content-Type: text/plain; charset=UTF-8\n"\
+	"Content-Transfer-Encoding: base64\n"\
+	"X-OIM-Message-Type: OfflineMessage\n"\
+	"X-OIM-Run-Id: {%s}\n"\
+	"X-OIM-Sequence-Num: %d\n\n"\
+	"%s"
+
+#define MSN_OIM_SEND_HOST	"ows.messenger.msn.com"
+#define MSN_OIM_SEND_URL	"/OimWS/oim.asmx"
+#define MSN_OIM_SEND_SOAP_ACTION	"http://messenger.msn.com/ws/2004/09/oim/Store"
+#define MSN_OIM_SEND_TEMPLATE "<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
+"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"\
+	"<soap:Header>"\
+		"<From memberName=\"%s\" friendlyName=\"%s\" xml:lang=\"en-US\" proxy=\"MSNMSGR\" xmlns=\"http://messenger.msn.com/ws/2004/09/oim/\" msnpVer=\"MSNP14\" buildVer=\"8.0.0792\"/>"\
+		"<To memberName=\"%s\" xmlns=\"http://messenger.msn.com/ws/2004/09/oim/\"/>"\
+		"<Ticket passport=\"%s\" appid=\"%s\" lockkey=\"%s\" xmlns=\"http://messenger.msn.com/ws/2004/09/oim/\"/>"\
+		"<Sequence xmlns=\"http://schemas.xmlsoap.org/ws/2003/03/rm\">"\
+			"<Identifier xmlns=\"http://schemas.xmlsoap.org/ws/2002/07/utility\">http://messenger.msn.com</Identifier>"\
+			"<MessageNumber>%d</MessageNumber>"\
+		"</Sequence>"\
+	"</soap:Header>"\
+	"<soap:Body>"\
+		"<MessageType xmlns=\"http://messenger.msn.com/ws/2004/09/oim/\">text</MessageType>"\
+		"<Content xmlns=\"http://messenger.msn.com/ws/2004/09/oim/\">%s</Content>"\
+	"</soap:Body>"\
+"</soap:Envelope>"
+
+typedef struct _MsnOimSendReq MsnOimSendReq;
+
+struct _MsnOimSendReq
+{
+	char *from_member;
+	char *friendname;
+	char *to_member;
+	char *oim_msg;
+	gint send_seq;
+};
+
+typedef struct _MsnOim MsnOim;
+
+struct _MsnOim
+{
+	MsnSession *session;
+
+	MsnSoapConn *retrieveconn;
+	GList * oim_list;
+
+	MsnSoapConn *sendconn;
+	char *challenge;
+	char *run_id;
+	gint send_seq;
+	GQueue *send_queue;
+};
+
+/****************************************************
+ * function prototype
+ * **************************************************/
+MsnOim * msn_oim_new(MsnSession *session);
+void msn_oim_destroy(MsnOim *oim);
+void msn_oim_connect(MsnOim *oim);
+
+void msn_parse_oim_msg(MsnOim *oim,const char *xmlmsg);
+
+/*Send OIM Message*/
+void msn_oim_prep_send_msg_info(MsnOim *oim, const char *membername,
+								const char *friendname, const char *tomember,
+								const char * msg);
+
+void msn_oim_send_msg(MsnOim *oim);
+
+/*get the OIM message*/
+void msn_oim_get_msg(MsnOim *oim);
+
+/*report the oim message to the conversation*/
+void msn_oim_report_user(MsnOim *oim,const char *passport,char *msg);
+
+#endif/* _MSN_OIM_H_*/
+/*endof oim.h*/
--- a/libpurple/protocols/msn/page.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/page.c	Tue Oct 23 17:27:12 2007 +0000
@@ -74,9 +74,7 @@
 	g_return_if_fail(page != NULL);
 	g_return_if_fail(body != NULL);
 
-	if (page->body != NULL)
-		g_free(page->body);
-
+	g_free(page->body);
 	page->body = g_strdup(body);
 }
 
--- a/libpurple/protocols/msn/servconn.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/servconn.c	Tue Oct 23 17:27:12 2007 +0000
@@ -168,7 +168,7 @@
  **************************************************************************/
 
 static void
-connect_cb(gpointer data, gint source, const gchar *error_message)
+connect_cb(gpointer data, gint source, const char *error_message)
 {
 	MsnServConn *servconn;
 
@@ -245,7 +245,9 @@
 		return TRUE;
 	}
 	else
+	{
 		return FALSE;
+	}
 }
 
 void
@@ -390,14 +392,21 @@
 
 	len = read(servconn->fd, buf, sizeof(buf) - 1);
 
-	if (len < 0 && errno == EAGAIN)
-		return;
-	else if (len <= 0)
-	{
-		purple_debug_error("msn", "servconn read error, len: %d error: %s\n", len, strerror(errno));
-		msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ);
+	if (len <= 0) {
+		switch (errno) {
+
+			case 0:	
 
-		return;
+			case EBADF:
+			case EAGAIN: return;
+	
+			default: purple_debug_error("msn", "servconn read error,"
+						"len: %d, errno: %d, error: %s\n",
+						len, errno, strerror(errno));
+				 msn_servconn_got_error(servconn, 
+						 MSN_SERVCONN_ERROR_READ);
+				 return;
+		}
 	}
 
 	buf[len] = '\0';
@@ -446,6 +455,7 @@
 		else
 		{
 			msn_cmdproc_process_cmd_text(servconn->cmdproc, cur);
+			servconn->payload_len = servconn->cmdproc->last_cmd->payload_len;
 		}
 	} while (servconn->connected && !servconn->wasted && servconn->rx_len > 0);
 
--- a/libpurple/protocols/msn/session.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/session.c	Tue Oct 23 17:27:12 2007 +0000
@@ -43,7 +43,9 @@
 	session->user = msn_user_new(session->userlist,
 								 purple_account_get_username(account), NULL);
 
-	session->protocol_ver = 9;
+	/*if you want to chat with Yahoo Messenger*/
+	//session->protocol_ver = WLM_YAHOO_PROT_VER;
+	session->protocol_ver = WLM_PROT_VER;
 	session->conv_seq = 1;
 
 	return session;
@@ -70,6 +72,8 @@
 
 	msn_userlist_destroy(session->userlist);
 
+	g_free(session->passport_info.t);
+	g_free(session->passport_info.p);
 	g_free(session->passport_info.kv);
 	g_free(session->passport_info.sid);
 	g_free(session->passport_info.mspauth);
@@ -87,6 +91,11 @@
 	if (session->nexus != NULL)
 		msn_nexus_destroy(session->nexus);
 
+	if (session->contact != NULL)
+		msn_contact_destroy(session->contact);
+	if (session->oim != NULL)
+		msn_oim_destroy(session->oim);
+
 	if (session->user != NULL)
 		msn_user_destroy(session->user);
 
@@ -121,7 +130,9 @@
 msn_session_disconnect(MsnSession *session)
 {
 	g_return_if_fail(session != NULL);
-	g_return_if_fail(session->connected);
+
+	if (!session->connected)
+		return;
 
 	session->connected = FALSE;
 
@@ -154,6 +165,37 @@
 	return NULL;
 }
 
+static PurpleConversation *
+msn_session_get_conv(MsnSession *session,const char *passport)
+{
+	PurpleAccount *account;
+	PurpleConversation * conv;
+
+	g_return_val_if_fail(session != NULL, NULL);
+	account = session->account;
+
+	conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
+									passport, account);
+	if(conv == NULL){
+		conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, passport);
+	}
+	return conv;
+}
+
+/* put Message to User Conversation
+ *
+ * 	passport - the one want to talk to you
+ */
+void
+msn_session_report_user(MsnSession *session,const char *passport,char *msg,PurpleMessageFlags flags)
+{
+	PurpleConversation * conv;
+
+	if ((conv = msn_session_get_conv(session,passport)) != NULL){
+		purple_conversation_write(conv, NULL, msg, flags, time(NULL));
+	}
+}
+
 MsnSwitchBoard *
 msn_session_find_swboard_with_conv(MsnSession *session, PurpleConversation *conv)
 {
@@ -229,13 +271,14 @@
 
 	/* The core used to use msn_add_buddy to add all buddies before
 	 * being logged in. This no longer happens, so we manually iterate
-	 * over the whole buddy list to identify sync issues. */
-
-	for (gnode = purple_blist_get_root(); gnode; gnode = gnode->next) {
+	 * over the whole buddy list to identify sync issues.
+	 */
+	for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
 		PurpleGroup *group = (PurpleGroup *)gnode;
-		const char *group_name = group->name;
+		const char *group_name;
 		if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
 			continue;
+		group_name = group->name;
 		for(cnode = gnode->child; cnode; cnode = cnode->next) {
 			if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 				continue;
@@ -252,21 +295,17 @@
 
 					if ((remote_user != NULL) && (remote_user->list_op & MSN_LIST_FL_OP))
 					{
-						int group_id;
 						GList *l;
 
-						group_id = msn_userlist_find_group_id(remote_user->userlist,
-								group_name);
-
 						for (l = remote_user->group_ids; l != NULL; l = l->next)
 						{
-							if (group_id == GPOINTER_TO_INT(l->data))
+							const char *name = msn_userlist_find_group_name(remote_user->userlist, l->data);
+							if (name && !g_strcasecmp(group_name, name))
 							{
 								found = TRUE;
 								break;
 							}
 						}
-
 					}
 
 					if (!found)
@@ -305,6 +344,8 @@
 		case MSN_ERROR_SIGN_OTHER:
 			gc->wants_to_die = TRUE;
 			msg = g_strdup(_("You have signed on from another location."));
+			if (!purple_account_get_remember_password(session->account))
+				purple_account_set_password(session->account, NULL);
 			break;
 		case MSN_ERROR_SERV_UNAVAILABLE:
 			msg = g_strdup(_("The MSN servers are temporarily "
@@ -419,3 +460,4 @@
 		msn_cmdproc_send(session->notification->cmdproc, "URL", "%s", "INBOX");
 	}
 }
+
--- a/libpurple/protocols/msn/session.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/session.h	Tue Oct 23 17:27:12 2007 +0000
@@ -38,6 +38,8 @@
 #include "cmdproc.h"
 #include "nexus.h"
 #include "httpconn.h"
+#include "contact.h"
+#include "oim.h"
 
 #include "userlist.h"
 #include "sync.h"
@@ -94,6 +96,8 @@
 
 	MsnNotification *notification;
 	MsnNexus *nexus;
+	MsnContact *contact;
+	MsnOim		*oim;
 	MsnSync *sync;
 
 	MsnUserList *userlist;
@@ -105,8 +109,15 @@
 
 	int conv_seq; /**< The current conversation sequence number. */
 
+	/*psm info*/
+	char *psm;
+
 	struct
 	{
+		/*t and p, get via USR TWN*/
+		char *t;
+		char *p;
+
 		char *kv;
 		char *sid;
 		char *mspauth;
@@ -114,7 +125,6 @@
 		char *file;
 		char *client_ip;
 		int client_port;
-
 	} passport_info;
 };
 
@@ -224,4 +234,8 @@
  */
 void msn_session_finish_login(MsnSession *session);
 
+/*post message to User*/
+void msn_session_report_user(MsnSession *session,const char *passport,
+							char *msg,PurpleMessageFlags flags);
+
 #endif /* _MSN_SESSION_H_ */
--- a/libpurple/protocols/msn/slp.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/slp.c	Tue Oct 23 17:27:12 2007 +0000
@@ -33,6 +33,8 @@
 
 /* ms to delay between sending buddy icon requests to the server. */
 #define BUDDY_ICON_DELAY 20000
+/*debug SLP*/
+#define MSN_DEBUG_UD
 
 static void send_ok(MsnSlpCall *slpcall, const char *branch,
 					const char *type, const char *content);
@@ -503,6 +505,9 @@
 		int port;
 
 		nonce = get_token(content, "Nonce: {", "}\r\n");
+		if (ip_addrs == NULL)
+			return;
+
 		ip_addrs = get_token(content, "IPv4Internal-Addrs: ", "\r\n");
 
 		temp = get_token(content, "IPv4Internal-Port: ", "\r\n");
@@ -512,9 +517,6 @@
 			port = -1;
 		g_free(temp);
 
-		if (ip_addrs == NULL)
-			return;
-
 		if (port > 0)
 			got_transresp(slpcall, nonce, ip_addrs, port);
 
@@ -596,6 +598,9 @@
 		int port;
 
 		nonce = get_token(content, "Nonce: {", "}\r\n");
+		if (ip_addrs == NULL)
+			return;
+
 		ip_addrs = get_token(content, "IPv4Internal-Addrs: ", "\r\n");
 
 		temp = get_token(content, "IPv4Internal-Port: ", "\r\n");
@@ -605,9 +610,6 @@
 			port = -1;
 		g_free(temp);
 
-		if (ip_addrs == NULL)
-			return;
-
 		if (port > 0)
 			got_transresp(slpcall, nonce, ip_addrs, port);
 
@@ -777,11 +779,11 @@
 	if ((conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, who, gc->account))) {
 
 		/* FIXME: it would be better if we wrote the data as we received it
-		          instead of all at once, calling write multiple times and
-		          close once at the very end
-		*/
+		   instead of all at once, calling write multiple times and
+		   close once at the very end
+		 */
 		purple_conv_custom_smiley_write(conv, slpcall->data_info, data, size);
-		purple_conv_custom_smiley_close(conv, slpcall->data_info);
+		purple_conv_custom_smiley_close(conv, slpcall->data_info );
 	}
 #ifdef MSN_DEBUG_UD
 	purple_debug_info("msn", "Got smiley: %s\n", slpcall->data_info);
--- a/libpurple/protocols/msn/slpcall.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/slpcall.c	Tue Oct 23 17:27:12 2007 +0000
@@ -22,6 +22,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 #include "msn.h"
+#include "msnutils.h"
 #include "slpcall.h"
 #include "slpsession.h"
 
@@ -30,24 +31,6 @@
 /* #define MSN_DEBUG_SLPCALL */
 
 /**************************************************************************
- * Util
- **************************************************************************/
-
-static char *
-rand_guid()
-{
-	return g_strdup_printf("%4X%4X-%4X-%4X-%4X-%4X%4X%4X",
-			rand() % 0xAAFF + 0x1111,
-			rand() % 0xAAFF + 0x1111,
-			rand() % 0xAAFF + 0x1111,
-			rand() % 0xAAFF + 0x1111,
-			rand() % 0xAAFF + 0x1111,
-			rand() % 0xAAFF + 0x1111,
-			rand() % 0xAAFF + 0x1111,
-			rand() % 0xAAFF + 0x1111);
-}
-
-/**************************************************************************
  * Main
  **************************************************************************/
 
--- a/libpurple/protocols/msn/slplink.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/slplink.c	Tue Oct 23 17:27:12 2007 +0000
@@ -112,12 +112,16 @@
 	if (slplink->remote_user != NULL)
 		g_free(slplink->remote_user);
 
+#if 0
 	if (slplink->directconn != NULL)
 		msn_directconn_destroy(slplink->directconn);
+#endif
 
 	while (slplink->slp_calls != NULL)
 		msn_slp_call_destroy(slplink->slp_calls->data);
 
+	g_queue_free(slplink->slp_msg_queue);
+
 	session->slplinks =
 		g_list_remove(session->slplinks, slplink);
 
@@ -244,11 +248,13 @@
 void
 msn_slplink_send_msg(MsnSlpLink *slplink, MsnMessage *msg)
 {
+#if 0
 	if (slplink->directconn != NULL)
 	{
 		msn_directconn_send_msg(slplink->directconn, msg);
 	}
 	else
+#endif
 	{
 		if (slplink->swboard == NULL)
 		{
@@ -634,9 +640,10 @@
 			MsnDirectConn *directconn;
 
 			directconn = slplink->directconn;
-
+#if 0
 			if (!directconn->acked)
 				msn_directconn_send_handshake(directconn);
+#endif
 		}
 		else if (slpmsg->flags == 0x0 || slpmsg->flags == 0x20 ||
 				 slpmsg->flags == 0x1000030)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/protocols/msn/soap.c	Tue Oct 23 17:27:12 2007 +0000
@@ -0,0 +1,874 @@
+/**
+ * @file soap.c 
+ * 	SOAP connection related process
+ *	Author
+ * 		MaYuan<mayuan2006@gmail.com>
+ * purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+#include "msn.h"
+#include "soap.h"
+
+#define MSN_SOAP_DEBUG
+/*local function prototype*/
+void msn_soap_set_process_step(MsnSoapConn *soapconn, MsnSoapStep step);
+
+/*setup the soap process step*/
+void
+msn_soap_set_process_step(MsnSoapConn *soapconn, MsnSoapStep step)
+{
+#ifdef MSN_SOAP_DEBUG
+	const char *MsnSoapStepText[] =
+	{
+		"Unconnected",
+		"Connecting",
+		"Connected",
+		"Processing",
+		"Connected Idle"
+	};
+
+	purple_debug_info("MSN SOAP", "Setting SOAP process step to %s\n", MsnSoapStepText[step]);
+#endif
+	soapconn->step = step;
+}
+
+/*new a soap connection*/
+MsnSoapConn *
+msn_soap_new(MsnSession *session,gpointer data, gboolean ssl)
+{
+	MsnSoapConn *soapconn;
+
+	soapconn = g_new0(MsnSoapConn, 1);
+	soapconn->session = session;
+	soapconn->parent = data;
+	soapconn->ssl_conn = ssl;
+
+	soapconn->gsc = NULL;
+	soapconn->input_handler = 0;
+	soapconn->output_handler = 0;
+
+	msn_soap_set_process_step(soapconn, MSN_SOAP_UNCONNECTED);
+	soapconn->soap_queue = g_queue_new();
+
+	return soapconn;
+}
+
+/*ssl soap connect callback*/
+void
+msn_soap_connect_cb(gpointer data, PurpleSslConnection *gsc,
+				 PurpleInputCondition cond)
+{
+	MsnSoapConn * soapconn;
+	MsnSession *session;
+	gboolean soapconn_is_valid = FALSE;
+
+	purple_debug_misc("MSN SOAP","SOAP server connection established!\n");
+
+	soapconn = data;
+	g_return_if_fail(soapconn != NULL);
+
+	session = soapconn->session;
+	g_return_if_fail(session != NULL);
+
+	soapconn->gsc = gsc;
+
+	msn_soap_set_process_step(soapconn, MSN_SOAP_CONNECTED);
+
+	/*connection callback*/
+	if (soapconn->connect_cb != NULL) {
+		soapconn_is_valid = soapconn->connect_cb(soapconn, gsc);
+	}
+
+	if (!soapconn_is_valid) {
+		return;
+	}
+
+	/*we do the SOAP request here*/
+	msn_soap_post_head_request(soapconn);
+}
+
+/*ssl soap error callback*/
+static void
+msn_soap_error_cb(PurpleSslConnection *gsc, PurpleSslErrorType error, void *data)
+{	
+	MsnSoapConn * soapconn = data;
+
+	g_return_if_fail(data != NULL);
+
+	purple_debug_warning("MSN SOAP","Soap connection error!\n");
+
+	msn_soap_set_process_step(soapconn, MSN_SOAP_UNCONNECTED);
+
+	/*error callback*/
+	if (soapconn->error_cb != NULL) {
+		soapconn->error_cb(soapconn, gsc, error);
+	} else {
+		msn_soap_post(soapconn, NULL);
+	}
+}
+
+/*init the soap connection*/
+void
+msn_soap_init(MsnSoapConn *soapconn,char * host, gboolean ssl,
+				MsnSoapSslConnectCbFunction connect_cb,
+				MsnSoapSslErrorCbFunction error_cb)
+{
+	purple_debug_misc("MSN SOAP","Initializing SOAP connection\n");
+	g_free(soapconn->login_host);
+	soapconn->login_host = g_strdup(host);
+	soapconn->ssl_conn = ssl;
+	soapconn->connect_cb = connect_cb;
+	soapconn->error_cb = error_cb;
+}
+
+/*connect the soap connection*/
+void
+msn_soap_connect(MsnSoapConn *soapconn)
+{
+	if (soapconn->ssl_conn) {
+		purple_ssl_connect(soapconn->session->account, soapconn->login_host,
+				PURPLE_SSL_DEFAULT_PORT, msn_soap_connect_cb, msn_soap_error_cb,
+				soapconn);
+	} else {
+	}
+
+	msn_soap_set_process_step(soapconn, MSN_SOAP_CONNECTING);
+}
+
+
+static void
+msn_soap_close_handler(guint *handler)
+{
+	if (*handler > 0) {
+		purple_input_remove(*handler);
+		*handler = 0;
+	} 
+#ifdef MSN_SOAP_DEBUG
+	else {
+		purple_debug_misc("MSN SOAP", "Handler inactive, not removing\n");
+	}
+#endif
+
+}
+
+
+/*close the soap connection*/
+void
+msn_soap_close(MsnSoapConn *soapconn)
+{
+	if (soapconn->ssl_conn) {
+		if (soapconn->gsc != NULL) {
+			purple_ssl_close(soapconn->gsc);
+			soapconn->gsc = NULL;
+		}
+	} else {
+	}
+	msn_soap_set_process_step(soapconn, MSN_SOAP_UNCONNECTED);
+}
+
+/*clean the unhandled SOAP request*/
+void
+msn_soap_clean_unhandled_requests(MsnSoapConn *soapconn)
+{
+	MsnSoapReq *request;
+
+	g_return_if_fail(soapconn != NULL);
+
+	soapconn->body = NULL;
+
+	while ((request = g_queue_pop_head(soapconn->soap_queue)) != NULL){
+		if (soapconn->read_cb) {
+			soapconn->read_cb(soapconn);
+		}
+		msn_soap_request_free(request);
+	}
+}
+
+/*destroy the soap connection*/
+void
+msn_soap_destroy(MsnSoapConn *soapconn)
+{
+	g_free(soapconn->login_host);
+
+	g_free(soapconn->login_path);
+
+	/*remove the write handler*/
+	if (soapconn->output_handler > 0){
+		purple_input_remove(soapconn->output_handler);
+		soapconn->output_handler = 0;
+	}
+	/*remove the read handler*/
+	if (soapconn->input_handler > 0){
+		purple_input_remove(soapconn->input_handler);
+		soapconn->input_handler = 0;
+	}
+	msn_soap_free_read_buf(soapconn);
+	msn_soap_free_write_buf(soapconn);
+
+	/*close ssl connection*/
+	msn_soap_close(soapconn);
+
+	/*process the unhandled soap request*/
+	msn_soap_clean_unhandled_requests(soapconn);
+
+	g_queue_free(soapconn->soap_queue);
+	g_free(soapconn);
+}
+
+/*check the soap is connected?
+ * if connected return 1
+ */
+int
+msn_soap_connected(MsnSoapConn *soapconn)
+{
+	if (soapconn->ssl_conn) {
+		return (soapconn->gsc == NULL ? 0 : 1);
+	}
+	return (soapconn->fd > 0 ? 1 : 0);
+}
+
+/*read and append the content to the buffer*/
+static gssize
+msn_soap_read(MsnSoapConn *soapconn)
+{
+	gssize len, requested_len;
+	char temp_buf[MSN_SOAP_READ_BUFF_SIZE];
+	
+	if ( soapconn->need_to_read == 0 || soapconn->need_to_read > MSN_SOAP_READ_BUFF_SIZE) {
+		requested_len = MSN_SOAP_READ_BUFF_SIZE;
+	}
+	else {
+		requested_len = soapconn->need_to_read;
+	}
+
+	if ( soapconn->ssl_conn ) {
+		len = purple_ssl_read(soapconn->gsc, temp_buf, requested_len);
+	} else {
+		len = read(soapconn->fd, temp_buf, requested_len);
+	}
+
+	
+	if ( len <= 0 ) {
+		switch (errno) {
+
+			case 0:
+			case EBADF: /* we are sometimes getting this in Windows */
+			case EAGAIN: return len;
+
+			default : purple_debug_error("MSN SOAP", "Read error!"
+						"read len: %d, error = %s\n",
+						len, strerror(errno));
+				  purple_input_remove(soapconn->input_handler);
+				  //soapconn->input_handler = 0;
+				  g_free(soapconn->read_buf);
+				  soapconn->read_buf = NULL;
+				  soapconn->read_len = 0;
+				  /* TODO: error handling */
+				  return len;
+		}
+	}
+	else {
+		soapconn->read_buf = g_realloc(soapconn->read_buf,
+						soapconn->read_len + len + 1);
+		if ( soapconn->read_buf != NULL ) {
+			memcpy(soapconn->read_buf + soapconn->read_len, temp_buf, len);
+			soapconn->read_len += len;
+			soapconn->read_buf[soapconn->read_len] = '\0';
+		}
+		else {
+			purple_debug_error("MSN SOAP", "Failure re-allocating %d bytes of memory!\n", soapconn->read_len + len + 1);
+			exit(EXIT_FAILURE);
+		}
+			
+	}
+
+#if defined(MSN_SOAP_DEBUG)
+	if (len > 0)
+		purple_debug_info("MSN SOAP","Read %d bytes from SOAP server:\n%s\n", len, soapconn->read_buf + soapconn->read_len - len);
+#endif
+
+	return len;
+}
+
+/*read the whole SOAP server response*/
+void 
+msn_soap_read_cb(gpointer data, gint source, PurpleInputCondition cond)
+{
+	MsnSoapConn *soapconn = data;
+	MsnSession *session;
+	int len;
+	char * body_start,*body_len;
+	char *length_start,*length_end;
+#ifdef MSN_SOAP_DEBUG
+#if !defined(_WIN32)
+	gchar * formattedxml = NULL;
+	gchar * http_headers = NULL;
+	xmlnode * node = NULL;
+#endif
+	purple_debug_misc("MSN SOAP", "msn_soap_read_cb()\n");
+#endif
+	session = soapconn->session;
+	g_return_if_fail(session != NULL);
+
+	
+	/*read the request header*/
+	len = msn_soap_read(soapconn);
+	
+	if ( len < 0 )
+		return;
+
+	if (soapconn->read_buf == NULL) {
+		return;
+	}
+
+	if ( (strstr(soapconn->read_buf, "HTTP/1.1 302") != NULL) 
+		|| ( strstr(soapconn->read_buf, "HTTP/1.1 301") != NULL ) )
+	{
+		/* Redirect. */
+		char *location, *c;
+
+		purple_debug_info("MSN SOAP", "HTTP Redirect\n");
+		location = strstr(soapconn->read_buf, "Location: ");
+		if (location == NULL)
+		{
+			c = (char *) g_strstr_len(soapconn->read_buf, soapconn->read_len,"\r\n\r\n");
+			if (c != NULL) {
+				/* we have read the whole HTTP headers and found no Location: */
+				msn_soap_free_read_buf(soapconn);
+				msn_soap_post(soapconn, NULL);
+			}
+
+			return;
+		}
+		location = strchr(location, ' ') + 1;
+
+		if ((c = strchr(location, '\r')) != NULL)
+			*c = '\0';
+		else
+			return;
+
+		/* Skip the http:// */
+		if ((c = strchr(location, '/')) != NULL)
+			location = c + 2;
+
+		if ((c = strchr(location, '/')) != NULL)
+		{
+			g_free(soapconn->login_path);
+			soapconn->login_path = g_strdup(c);
+
+			*c = '\0';
+		}
+
+		g_free(soapconn->login_host);
+		soapconn->login_host = g_strdup(location);
+		
+		msn_soap_close_handler( &(soapconn->input_handler) );
+		msn_soap_close(soapconn);
+
+		if (purple_ssl_connect(session->account, soapconn->login_host,
+			PURPLE_SSL_DEFAULT_PORT, msn_soap_connect_cb,
+			msn_soap_error_cb, soapconn) == NULL) {
+		
+			purple_debug_error("MSN SOAP", "Unable to connect to %s !\n", soapconn->login_host);
+			// dispatch next request
+			msn_soap_post(soapconn, NULL);
+		}
+	}
+	/* Another case of redirection, active on May, 2007
+	   See http://msnpiki.msnfanatic.com/index.php/MSNP13:SOAPTweener#Redirect
+	 */
+	else if (strstr(soapconn->read_buf,
+                    "<faultcode>psf:Redirect</faultcode>") != NULL)
+	{
+		char *location, *c;
+
+		if ( (location = strstr(soapconn->read_buf, "<psf:redirectUrl>") ) == NULL)
+			return;
+
+		/* Omit the tag preceding the URL */
+		location += strlen("<psf:redirectUrl>");
+		if (location > soapconn->read_buf + soapconn->read_len)
+			return;
+		if ( (location = strstr(location, "://")) == NULL)
+			return;
+
+		location += strlen("://"); /* Skip http:// or https:// */
+
+		if ( (c = strstr(location, "</psf:redirectUrl>")) != NULL )
+			*c = '\0';
+		else
+			return;
+
+		if ( (c = strstr(location, "/")) != NULL )
+		{
+			g_free(soapconn->login_path);
+			soapconn->login_path = g_strdup(c);
+			*c = '\0';
+		}
+
+		g_free(soapconn->login_host);
+		soapconn->login_host = g_strdup(location);
+		
+		msn_soap_close_handler( &(soapconn->input_handler) );
+		msn_soap_close(soapconn);
+
+		if (purple_ssl_connect(session->account, soapconn->login_host,
+				PURPLE_SSL_DEFAULT_PORT, msn_soap_connect_cb,
+				msn_soap_error_cb, soapconn) == NULL) {
+
+			purple_debug_error("MSN SOAP", "Unable to connect to %s !\n", soapconn->login_host);
+			// dispatch next request
+			msn_soap_post(soapconn, NULL);
+		}
+	}
+	else if (strstr(soapconn->read_buf, "HTTP/1.1 401 Unauthorized") != NULL)
+	{
+		const char *error;
+
+		purple_debug_error("MSN SOAP", "Received HTTP error 401 Unauthorized\n");
+		if ((error = strstr(soapconn->read_buf, "WWW-Authenticate")) != NULL)
+		{
+			if ((error = strstr(error, "cbtxt=")) != NULL)
+			{
+				const char *c;
+				char *temp;
+
+				error += strlen("cbtxt=");
+
+				if ((c = strchr(error, '\n')) == NULL)
+					c = error + strlen(error);
+
+				temp = g_strndup(error, c - error);
+				error = purple_url_decode(temp);
+				g_free(temp);
+			}
+		}
+
+		msn_session_set_error(session, MSN_ERROR_AUTH, error);
+	}
+	/* Handle Passport 3.0 authentication failures.
+	 * Further info: http://msnpiki.msnfanatic.com/index.php/MSNP13:SOAPTweener
+	 */
+	else if (strstr(soapconn->read_buf,
+				"<faultcode>wsse:FailedAuthentication</faultcode>") != NULL)
+	{
+		gchar *faultstring;
+
+		faultstring = strstr(soapconn->read_buf, "<faultstring>");
+
+		if (faultstring != NULL)
+		{
+			gchar *c;
+			faultstring += strlen("<faultstring>");
+			if (faultstring < soapconn->read_buf + soapconn->read_len) {
+				c = strstr(soapconn->read_buf, "</faultstring>");
+				if (c != NULL) {
+					*c = '\0';
+					msn_session_set_error(session, MSN_ERROR_AUTH, faultstring);
+				}
+			}
+		}
+		
+	}
+	else if (strstr(soapconn->read_buf, "HTTP/1.1 503 Service Unavailable"))
+	{
+		msn_session_set_error(session, MSN_ERROR_SERV_UNAVAILABLE, NULL);
+	}
+	else if ((strstr(soapconn->read_buf, "HTTP/1.1 200 OK"))
+		||(strstr(soapconn->read_buf, "HTTP/1.1 500")))
+	{
+		gboolean soapconn_is_valid = FALSE;
+
+		/*OK! process the SOAP body*/
+		body_start = (char *)g_strstr_len(soapconn->read_buf, soapconn->read_len,"\r\n\r\n");
+		if (!body_start) {
+			return;
+		}
+		body_start += 4;
+
+		if (body_start > soapconn->read_buf + soapconn->read_len)
+			return;
+
+		/* we read the content-length*/
+		if ( (length_start = g_strstr_len(soapconn->read_buf, soapconn->read_len, "Content-Length: ")) != NULL)
+			length_start += strlen("Content-Length: ");
+
+		if (length_start > soapconn->read_buf + soapconn->read_len)
+			return;
+
+		if ( (length_end = strstr(length_start, "\r\n")) == NULL )
+			return;
+
+		body_len = g_strndup(length_start, length_end - length_start);
+
+		/*setup the conn body */
+		soapconn->body		= body_start;
+		soapconn->body_len	= atoi(body_len);
+		g_free(body_len);
+#ifdef MSN_SOAP_DEBUG
+		purple_debug_misc("MSN SOAP","SOAP bytes read so far: %d, Content-Length: %d\n", soapconn->read_len, soapconn->body_len);
+#endif
+		soapconn->need_to_read = (body_start - soapconn->read_buf + soapconn->body_len) - soapconn->read_len;
+		if ( soapconn->need_to_read > 0 ) {
+			return;
+		}
+
+#if defined(MSN_SOAP_DEBUG) && !defined(_WIN32)
+
+		node = xmlnode_from_str(soapconn->body, soapconn->body_len);
+	
+		if (node != NULL) {
+			formattedxml = xmlnode_to_formatted_str(node, NULL);
+			http_headers = g_strndup(soapconn->read_buf, soapconn->body - soapconn->read_buf);
+				
+			purple_debug_info("MSN SOAP","Data with XML payload received from the SOAP server:\n%s%s\n", http_headers, formattedxml);
+			g_free(http_headers);
+			g_free(formattedxml);
+			xmlnode_free(node);
+		}
+		else
+			purple_debug_info("MSN SOAP","Data received from the SOAP server:\n%s\n", soapconn->read_buf);
+#endif
+
+		/*remove the read handler*/
+		msn_soap_close_handler( &(soapconn->input_handler) );
+//		purple_input_remove(soapconn->input_handler);
+//		soapconn->input_handler = 0;
+		/*
+		 * close the soap connection,if more soap request came,
+		 * Just reconnect to do it,
+		 *
+		 * To solve the problem described below:
+		 * When I post the soap request in one socket one after the other,
+		 * The first read is ok, But the second soap read always got 0 bytes,
+		 * Weird!
+		 * */
+		msn_soap_close(soapconn);
+
+		/*call the read callback*/
+		if ( soapconn->read_cb != NULL ) {
+			soapconn_is_valid = soapconn->read_cb(soapconn);
+		}
+		
+		if (!soapconn_is_valid) {
+			return;
+		}
+
+		/* dispatch next request in queue */
+		msn_soap_post(soapconn, NULL);
+	}	
+	return;
+}
+
+void 
+msn_soap_free_read_buf(MsnSoapConn *soapconn)
+{
+	g_return_if_fail(soapconn != NULL);
+	
+	if (soapconn->read_buf) {
+		g_free(soapconn->read_buf);
+	}
+	soapconn->read_buf = NULL;
+	soapconn->read_len = 0;
+	soapconn->need_to_read = 0;
+}
+
+void
+msn_soap_free_write_buf(MsnSoapConn *soapconn)
+{
+	g_return_if_fail(soapconn != NULL);
+
+	if (soapconn->write_buf) {
+		g_free(soapconn->write_buf);
+	}
+	soapconn->write_buf = NULL;
+	soapconn->written_len = 0;
+}
+
+/*Soap write process func*/
+static void
+msn_soap_write_cb(gpointer data, gint source, PurpleInputCondition cond)
+{
+	MsnSoapConn *soapconn = data;
+	int len, total_len;
+
+	g_return_if_fail(soapconn != NULL);
+	if ( soapconn->write_buf == NULL ) {
+		purple_debug_error("MSN SOAP","SOAP write buffer is NULL\n");
+	//	msn_soap_check_conn_errors(soapconn);
+	//	purple_input_remove(soapconn->output_handler);
+	//	soapconn->output_handler = 0;
+		msn_soap_close_handler( &(soapconn->output_handler) );
+		return;
+	}
+	total_len = strlen(soapconn->write_buf);
+
+	/* 
+	 * write the content to SSL server,
+	 */
+	len = purple_ssl_write(soapconn->gsc,
+		soapconn->write_buf + soapconn->written_len,
+		total_len - soapconn->written_len);
+
+	if (len < 0 && errno == EAGAIN)
+		return;
+	else if (len <= 0){
+		/*SSL write error!*/
+//		msn_soap_check_conn_errors(soapconn);
+
+		msn_soap_close_handler( &(soapconn->output_handler) );
+//		purple_input_remove(soapconn->output_handler);
+//		soapconn->output_handler = 0;
+
+		msn_soap_close(soapconn);
+
+		/* TODO: notify of the error */
+		purple_debug_error("MSN SOAP", "Error writing to SSL connection!\n");
+		msn_soap_post(soapconn, NULL);
+		return;
+	}
+	soapconn->written_len += len;
+
+	if (soapconn->written_len < total_len)
+		return;
+
+	msn_soap_close_handler( &(soapconn->output_handler) );
+//	purple_input_remove(soapconn->output_handler);
+//	soapconn->output_handler = 0;
+
+	/*clear the write buff*/
+	msn_soap_free_write_buf(soapconn);
+
+	/* Write finish!
+	 * callback for write done
+	 */
+	if(soapconn->written_cb != NULL){
+		soapconn->written_cb(soapconn);
+	}
+	/*maybe we need to read the input?*/
+	if ( soapconn->input_handler == 0 ) {
+		soapconn->input_handler = purple_input_add(soapconn->gsc->fd,
+			PURPLE_INPUT_READ, msn_soap_read_cb, soapconn);
+	}
+}
+
+/*write the buffer to SOAP connection*/
+void
+msn_soap_write(MsnSoapConn * soapconn, char *write_buf, MsnSoapWrittenCbFunction written_cb)
+{
+	if (soapconn == NULL) {
+		return;
+	}
+
+	msn_soap_set_process_step(soapconn, MSN_SOAP_PROCESSING);
+
+	/* Ideally this wouldn't ever be necessary, but i believe that it is leaking the previous value */
+	g_free(soapconn->write_buf);
+	soapconn->write_buf = write_buf;
+	soapconn->written_len = 0;
+	soapconn->written_cb = written_cb;
+	
+	msn_soap_free_read_buf(soapconn);
+
+	/*clear the read buffer first*/
+	/*start the write*/
+	soapconn->output_handler = purple_input_add(soapconn->gsc->fd, PURPLE_INPUT_WRITE,
+						    msn_soap_write_cb, soapconn);
+	msn_soap_write_cb(soapconn, soapconn->gsc->fd, PURPLE_INPUT_WRITE);
+}
+
+/* New a soap request*/
+MsnSoapReq *
+msn_soap_request_new(const char *host,const char *post_url,const char *soap_action,
+				const char *body, const gpointer data_cb,
+				MsnSoapReadCbFunction read_cb,
+				MsnSoapWrittenCbFunction written_cb,
+				MsnSoapConnectInitFunction connect_init)
+{
+	MsnSoapReq *request;
+
+	request = g_new0(MsnSoapReq, 1);
+	request->id = 0;
+
+	request->login_host = g_strdup(host);
+	request->login_path = g_strdup(post_url);
+	request->soap_action		= g_strdup(soap_action);
+	request->body		= g_strdup(body);
+	request->data_cb 	= data_cb;
+	request->read_cb	= read_cb;
+	request->written_cb	= written_cb;
+	request->connect_init	= connect_init;
+
+	return request;
+}
+
+/*free a soap request*/
+void
+msn_soap_request_free(MsnSoapReq *request)
+{
+	g_return_if_fail(request != NULL);
+
+	g_free(request->login_host);
+	g_free(request->login_path);
+	g_free(request->soap_action);
+	g_free(request->body);
+	request->read_cb	= NULL;
+	request->written_cb	= NULL;
+	request->connect_init	= NULL;
+
+	g_free(request);
+}
+
+/*post the soap request queue's head request*/
+void
+msn_soap_post_head_request(MsnSoapConn *soapconn)
+{
+	g_return_if_fail(soapconn != NULL);
+	g_return_if_fail(soapconn->soap_queue != NULL);
+	
+	if (soapconn->step == MSN_SOAP_CONNECTED ||
+	    soapconn->step == MSN_SOAP_CONNECTED_IDLE) {
+
+		purple_debug_info("MSN SOAP", "Posting new request from head of the queue\n");
+
+		if ( !g_queue_is_empty(soapconn->soap_queue) ) {
+			MsnSoapReq *request;
+
+			if ( (request = g_queue_pop_head(soapconn->soap_queue)) != NULL ) {
+				msn_soap_post_request(soapconn,request);
+			}
+		} else {
+			purple_debug_info("MSN SOAP", "No requests to process found.\n");
+			msn_soap_set_process_step(soapconn, MSN_SOAP_CONNECTED_IDLE);
+		}
+	}
+}
+
+/*post the soap request ,
+ * if not connected, Connected first.
+ */
+void
+msn_soap_post(MsnSoapConn *soapconn, MsnSoapReq *request)
+{
+	MsnSoapReq *head_request;
+
+	if (soapconn == NULL)
+		return;
+
+	if (request != NULL) {
+#ifdef MSN_SOAP_DEBUG
+		purple_debug_misc("MSN SOAP", "Request added to the queue\n");
+#endif
+		g_queue_push_tail(soapconn->soap_queue, request);
+	}
+
+	if ( !g_queue_is_empty(soapconn->soap_queue)) {
+
+		/* we may have to reinitialize the soap connection, so avoid
+		 * reusing the connection for now */
+
+		if (soapconn->step == MSN_SOAP_CONNECTED_IDLE) {
+			purple_debug_misc("MSN SOAP","Already connected to SOAP server, re-initializing\n");
+			msn_soap_close_handler( &(soapconn->input_handler) );
+			msn_soap_close_handler( &(soapconn->output_handler) );
+			msn_soap_close(soapconn);
+		}
+
+		if (!msn_soap_connected(soapconn) && (soapconn->step == MSN_SOAP_UNCONNECTED)) {
+
+			/*not connected?and we have something to process connect it first*/
+			purple_debug_misc("MSN SOAP","No connection to SOAP server. Connecting...\n");
+			head_request = g_queue_peek_head(soapconn->soap_queue);
+
+			if (head_request == NULL) {
+				purple_debug_error("MSN SOAP", "Queue is not empty, but failed to peek the head request!\n");
+				return;
+			}
+
+			if (head_request->connect_init != NULL) {
+				head_request->connect_init(soapconn);
+			}
+			msn_soap_connect(soapconn);
+			return;
+		}
+
+#ifdef MSN_SOAP_DEBUG
+		purple_debug_info("MSN SOAP", "Currently processing another SOAP request\n");
+	} else {
+		purple_debug_info("MSN SOAP", "No requests left to dispatch\n");
+	}
+#else
+      }
+#endif
+
+}
+
+/*Post the soap request action*/
+void
+msn_soap_post_request(MsnSoapConn *soapconn, MsnSoapReq *request)
+{
+	char * request_str = NULL;
+#ifdef MSN_SOAP_DEBUG
+#if !defined(_WIN32)
+	xmlnode * node;
+#endif
+	purple_debug_misc("MSN SOAP","msn_soap_post_request()\n");
+#endif
+
+	msn_soap_set_process_step(soapconn, MSN_SOAP_PROCESSING);
+	request_str = g_strdup_printf(
+					"POST %s HTTP/1.1\r\n"
+					"SOAPAction: %s\r\n"
+					"Content-Type:text/xml; charset=utf-8\r\n"
+					"Cookie: MSPAuth=%s\r\n"
+					"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n"
+					"Accept: */*\r\n"
+					"Host: %s\r\n"
+					"Content-Length: %" G_GSIZE_FORMAT "\r\n"
+					"Connection: Keep-Alive\r\n"
+					"Cache-Control: no-cache\r\n\r\n"
+					"%s",
+					request->login_path,
+					request->soap_action,
+					soapconn->session->passport_info.mspauth,
+					request->login_host,
+					strlen(request->body),
+					request->body
+					);
+
+#if defined(MSN_SOAP_DEBUG) && !defined(_WIN32)
+	node = xmlnode_from_str(request->body, -1);
+	if (node != NULL) {
+		char *formattedstr = xmlnode_to_formatted_str(node, NULL);
+		purple_debug_info("MSN SOAP","Posting request to SOAP server:\n%s%s\n",request_str, formattedstr);
+		g_free(formattedstr);
+		xmlnode_free(node);
+	}
+	else
+		purple_debug_info("MSN SOAP","Failed to parse SOAP request being sent:\n%s\n", request_str);
+#endif
+	
+	/*free read buffer*/
+	// msn_soap_free_read_buf(soapconn);
+	/*post it to server*/
+	soapconn->data_cb = request->data_cb;
+	msn_soap_write(soapconn, request_str, request->written_cb);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/protocols/msn/soap.h	Tue Oct 23 17:27:12 2007 +0000
@@ -0,0 +1,167 @@
+/**
+ * @file soap.h
+ * 	header file for SOAP connection related process
+ *	Author
+ * 		MaYuan<mayuan2006@gmail.com>
+ * purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+#ifndef _MSN_SOAP_H_
+#define _MSN_SOAP_H_
+
+#define MSN_SOAP_READ_BUFF_SIZE		8192
+
+/* define this to debug the communications with the SOAP server */
+/* #define MSN_SOAP_DEBUG */
+
+#define MSN_SOAP_READ 1
+#define MSN_SOAP_WRITE 2
+
+typedef enum
+{
+	MSN_SOAP_UNCONNECTED,
+	MSN_SOAP_CONNECTING,
+	MSN_SOAP_CONNECTED,
+	MSN_SOAP_PROCESSING,
+	MSN_SOAP_CONNECTED_IDLE
+}MsnSoapStep;
+
+/* MSN SoapRequest structure*/
+typedef struct _MsnSoapReq MsnSoapReq;
+
+/* MSN Https connection structure*/
+typedef struct _MsnSoapConn MsnSoapConn;
+
+typedef void (*MsnSoapConnectInitFunction)(MsnSoapConn *);
+typedef gboolean (*MsnSoapReadCbFunction)(MsnSoapConn *);
+typedef void (*MsnSoapWrittenCbFunction)(MsnSoapConn *);
+
+typedef gboolean (*MsnSoapSslConnectCbFunction)(MsnSoapConn *, PurpleSslConnection *);
+typedef void (*MsnSoapSslErrorCbFunction)(MsnSoapConn *, PurpleSslConnection *, PurpleSslErrorType);
+
+
+struct _MsnSoapReq{
+	/*request sequence*/
+	int	 id;
+
+	char *login_host;
+	char *login_path;
+	char *soap_action;
+
+	char *body;
+	
+	gpointer data_cb;
+	MsnSoapReadCbFunction read_cb;
+	MsnSoapWrittenCbFunction written_cb;
+	MsnSoapConnectInitFunction connect_init;
+};
+
+struct _MsnSoapConn{
+	MsnSession *session;
+	gpointer parent;
+
+	char *login_host;
+	char *login_path;
+	char *soap_action;
+
+	MsnSoapStep step;
+	/*ssl connection?*/
+	gboolean ssl_conn;
+	/*normal connection*/
+	guint fd;
+	/*SSL connection*/
+	PurpleSslConnection *gsc;
+	/*ssl connection callback*/
+	MsnSoapSslConnectCbFunction connect_cb;
+	/*ssl error callback*/
+	MsnSoapSslErrorCbFunction error_cb;
+
+	/*read handler*/
+	guint input_handler;
+	/*write handler*/
+	guint output_handler;
+
+	/*Queue of SOAP request to send*/
+	int soap_id;
+	GQueue *soap_queue;
+
+	/*write buffer*/
+	char *write_buf;
+	gsize written_len;
+	MsnSoapWrittenCbFunction written_cb;
+
+	/*read buffer*/
+	char *read_buf;
+	gsize read_len;
+	gsize need_to_read;
+	MsnSoapReadCbFunction read_cb;
+
+	gpointer data_cb;
+
+	/*HTTP reply body part*/
+	char *body;
+	int body_len;
+};
+
+
+/*Function Prototype*/
+/*Soap Request Function */
+MsnSoapReq *msn_soap_request_new(const char *host, const char *post_url,
+				 const char *soap_action, const char *body,
+				 const gpointer data_cb,
+				 MsnSoapReadCbFunction read_cb,
+				 MsnSoapWrittenCbFunction written_cb,
+				 MsnSoapConnectInitFunction connect_init);
+
+void msn_soap_request_free(MsnSoapReq *request);
+void msn_soap_post_request(MsnSoapConn *soapconn,MsnSoapReq *request);
+void msn_soap_post_head_request(MsnSoapConn *soapconn);
+
+/*new a soap conneciton */
+MsnSoapConn *msn_soap_new(MsnSession *session, gpointer data, gboolean ssl);
+
+/*destroy */
+void msn_soap_destroy(MsnSoapConn *soapconn);
+
+/*init a soap conneciton */
+void msn_soap_init(MsnSoapConn *soapconn, char * host, gboolean ssl,
+		   MsnSoapSslConnectCbFunction connect_cb,
+		   MsnSoapSslErrorCbFunction error_cb);
+void msn_soap_connect(MsnSoapConn *soapconn);
+void msn_soap_close(MsnSoapConn *soapconn);
+
+/*write to soap*/
+void msn_soap_write(MsnSoapConn * soapconn, char *write_buf, MsnSoapWrittenCbFunction written_cb);
+void msn_soap_post(MsnSoapConn *soapconn,MsnSoapReq *request);
+
+void msn_soap_free_read_buf(MsnSoapConn *soapconn);
+void msn_soap_free_write_buf(MsnSoapConn *soapconn);
+void msn_soap_connect_cb(gpointer data, PurpleSslConnection *gsc, PurpleInputCondition cond);
+void msn_soap_read_cb(gpointer data, gint source, PurpleInputCondition cond);
+
+/*clean the unhandled requests*/
+void msn_soap_clean_unhandled_requests(MsnSoapConn *soapconn);
+
+/*check if the soap connection is connected*/
+int msn_soap_connected(MsnSoapConn *soapconn);
+void msn_soap_set_process_step(MsnSoapConn *soapconn, MsnSoapStep step);
+
+#endif/*_MSN_SOAP_H_*/
+
--- a/libpurple/protocols/msn/state.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/state.c	Tue Oct 23 17:27:12 2007 +0000
@@ -38,6 +38,197 @@
 	N_("Available")
 };
 
+/* Local Function Prototype*/
+static char *msn_build_psm(const char *psmstr,const char *mediastr,
+						   const char *guidstr);
+
+/*
+ * WLM media PSM info build prcedure
+ *
+ * Result can like:
+ *	<CurrentMedia>\0Music\01\0{0} - {1}\0Song Title\0Song Artist\0Song Album\0\0</CurrentMedia>\
+ *	<CurrentMedia>\0Games\01\0Playing {0}\0Game Name\0</CurrentMedia>\
+ *	<CurrentMedia>\0Office\01\0Office Message\0Office App Name\0</CurrentMedia>"
+ */
+static char *
+msn_build_psm(const char *psmstr,const char *mediastr, const char *guidstr)
+{
+	xmlnode *dataNode,*psmNode,*mediaNode,*guidNode;
+	char *result;
+	int length;
+
+	dataNode = xmlnode_new("Data");
+
+	psmNode = xmlnode_new("PSM");
+	if(psmstr != NULL){
+		xmlnode_insert_data(psmNode,psmstr,strlen(psmstr));
+	}
+	xmlnode_insert_child(dataNode,psmNode);
+
+	mediaNode = xmlnode_new("CurrentMedia");
+	if(mediastr != NULL){
+		xmlnode_insert_data(mediaNode,mediastr,strlen(mediastr));
+	}
+	xmlnode_insert_child(dataNode,mediaNode);
+
+	guidNode = xmlnode_new("MachineGuid");
+	if(guidstr != NULL){
+		xmlnode_insert_data(guidNode,guidstr,strlen(guidstr));
+	}
+	xmlnode_insert_child(dataNode,guidNode);
+
+	result = xmlnode_to_str(dataNode,&length);
+	xmlnode_free(dataNode);
+	return result;
+}
+
+/* parse CurrentMedia string */
+char *
+msn_parse_currentmedia(const char *cmedia)
+{
+	char **cmedia_array;
+	GString *buffer = NULL;
+	int strings;
+
+	if ((cmedia == NULL) || (*cmedia == '\0')) {
+		purple_debug_info("msn", "No currentmedia string\n");
+		return NULL;
+	}
+
+	purple_debug_info("msn", "Parsing currentmedia string: \"%s\"\n", cmedia);
+
+	cmedia_array = g_strsplit(cmedia, "\\0", 0);
+
+	strings = 0;
+	/* Yes, we want to skip the first element here, as it is empty due to
+	 * the cmedia string starting with \0 -- see the examples below. */
+	while (cmedia_array[++strings] != NULL);
+
+	/* The cmedia_array[2] field contains a 1 if enabled. */
+	if ((strings > 3) && (!strcmp(cmedia_array[2], "1"))) {
+		char *inptr = cmedia_array[3];
+
+		buffer = g_string_new(NULL);
+
+		while (*inptr != '\0') {
+			if ((*inptr == '{') && ((*(inptr + 1) != '\0') && (*(inptr+2) == '}'))) {
+				char *tmpptr;
+				int tmp;
+
+				errno = 0;
+				tmp = strtol(inptr + 1, &tmpptr, 10);
+
+				if (errno == 0 && tmpptr != inptr + 1 &&
+				    tmp + 4 < strings) {
+					/* Replace {?} tag with appropriate text only when successful.
+					 * Skip otherwise. */
+					buffer = g_string_append(buffer, cmedia_array[tmp + 4]);
+				}
+				inptr += 3; /* Skip to the next char after '}' */
+			} else {
+				buffer = g_string_append_c(buffer, *inptr++);
+			}
+		}
+		purple_debug_info("msn", "Parsed currentmedia string, result: \"%s\"\n",
+		                  buffer->str);
+	} else {
+		purple_debug_info("msn", "Current media marked disabled, not parsing.\n");
+	}
+
+	g_strfreev(cmedia_array);
+	return buffer ? g_string_free(buffer, FALSE) : NULL;
+}
+
+/* get the CurrentMedia info from the XML string */
+char *
+msn_get_currentmedia(char *xml_str, gsize len)
+{
+	xmlnode *payloadNode, *currentmediaNode;
+	char *currentmedia;
+	
+	purple_debug_info("msn","msn get CurrentMedia\n");
+	payloadNode = xmlnode_from_str(xml_str, len);
+	if (!payloadNode){
+		purple_debug_error("msn","PSM XML parse Error!\n");
+		return NULL;
+	}
+	currentmediaNode = xmlnode_get_child(payloadNode, "CurrentMedia");
+	if (currentmediaNode == NULL){
+		purple_debug_info("msn","No CurrentMedia Node");
+		xmlnode_free(payloadNode);
+		return NULL;
+	}
+	currentmedia = xmlnode_get_data(currentmediaNode);
+
+	xmlnode_free(payloadNode);
+
+	return currentmedia;
+}
+
+/*get the PSM info from the XML string*/
+char *
+msn_get_psm(char *xml_str, gsize len)
+{
+	xmlnode *payloadNode, *psmNode;
+	char *psm;
+	
+	purple_debug_info("MSNP14","msn get PSM\n");
+	payloadNode = xmlnode_from_str(xml_str, len);
+	if (!payloadNode){
+		purple_debug_error("MSNP14","PSM XML parse Error!\n");
+		return NULL;
+	}
+	psmNode = xmlnode_get_child(payloadNode, "PSM");
+	if (psmNode == NULL){
+		purple_debug_info("MSNP14","No PSM status Node");
+		xmlnode_free(payloadNode);
+		return NULL;
+	}
+	psm = xmlnode_get_data(psmNode);
+
+	xmlnode_free(payloadNode);
+
+	return psm;
+}
+
+/* Set the MSN PSM based on the "message" attribute of the current status
+ * Thanks for Cris Code
+ */
+void
+msn_set_psm(MsnSession *session)
+{
+	PurpleAccount *account = session->account;
+	PurplePresence *presence;
+	PurpleStatus *status;
+	MsnCmdProc *cmdproc;
+	MsnTransaction *trans;
+	char *payload;
+	const char *statusline;
+	gchar *statusline_stripped;
+
+	g_return_if_fail(session != NULL);
+	g_return_if_fail(session->notification != NULL);
+
+	cmdproc = session->notification->cmdproc;
+
+	/* Get the PSM string from Purple's Status Line */
+	presence = purple_account_get_presence(account);
+	status = purple_presence_get_active_status(presence);
+	statusline = purple_status_get_attr_string(status, "message");
+
+	/* MSN expects plain text, not HTML */
+	statusline_stripped = purple_markup_strip_html(statusline);
+	g_free(session->psm);
+	session->psm = msn_build_psm(statusline_stripped, NULL, NULL);
+	g_free(statusline_stripped);
+
+	payload = session->psm;
+	purple_debug_misc("MSNP14","Sending UUX command with payload: %s\n",payload);
+	trans = msn_transaction_new(cmdproc, "UUX", "%d", strlen(payload));
+	msn_transaction_set_payload(trans, payload, strlen(payload));
+	msn_cmdproc_send_trans(cmdproc, trans);
+}
+
 void
 msn_change_status(MsnSession *session)
 {
@@ -79,6 +270,7 @@
 
 		g_free(msnobj_str);
 	}
+	msn_set_psm(session);
 }
 
 const char *
--- a/libpurple/protocols/msn/state.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/state.h	Tue Oct 23 17:27:12 2007 +0000
@@ -59,6 +59,17 @@
 
 const char *msn_state_get_text(MsnAwayType state);
 
+void msn_set_psm(MsnSession *session);
+
+/* Parse CurrentMedia string */
+char * msn_parse_currentmedia(const char *cmedia);
+
+/* Get the CurrentMedia info from the XML string */
+char * msn_get_currentmedia(char *xml_str,gsize len);
+
+/*get the PSM info from the XML string*/
+char * msn_get_psm(char *xml_str,gsize len);
+
 MsnAwayType msn_state_from_account(PurpleAccount *account);
 
 #endif /* _MSN_STATE_H_ */
--- a/libpurple/protocols/msn/switchboard.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/switchboard.c	Tue Oct 23 17:27:12 2007 +0000
@@ -25,7 +25,7 @@
 #include "prefs.h"
 #include "switchboard.h"
 #include "notification.h"
-#include "msn-utils.h"
+#include "msnutils.h"
 
 #include "error.h"
 
@@ -108,8 +108,8 @@
 	g_free(swboard->auth_key);
 	g_free(swboard->session_id);
 
-	for (l = swboard->users; l != NULL; l = l->next)
-		g_free(l->data);
+	for (; swboard->users; swboard->users = g_list_delete_link(swboard->users, swboard->users))
+		g_free(swboard->users->data);
 
 	session = swboard->session;
 	session->switches = g_list_remove(session->switches, swboard);
@@ -152,9 +152,7 @@
 	g_return_if_fail(swboard != NULL);
 	g_return_if_fail(id != NULL);
 
-	if (swboard->session_id != NULL)
-		g_free(swboard->session_id);
-
+	g_free(swboard->session_id);
 	swboard->session_id = g_strdup(id);
 }
 
@@ -534,6 +532,7 @@
 	payload = msn_message_gen_payload(msg, &payload_len);
 
 #ifdef MSN_DEBUG_SB
+	purple_debug_info("MSNP14","SB length:{%d}",payload_len);
 	msn_message_show_readable(msg, "SB SEND", FALSE);
 #endif
 
@@ -621,6 +620,7 @@
 	g_return_if_fail(swboard != NULL);
 	g_return_if_fail(msg     != NULL);
 
+	purple_debug_info("MSNP14","switchboard send msg..\n");
 	if (msn_switchboard_can_send(swboard))
 		release_msg(swboard, msg);
 	else if (queue)
@@ -727,15 +727,15 @@
 
 	msg = msn_message_new_from_cmd(cmdproc->session, cmd);
 
-	msn_message_parse_payload(msg, payload, len);
+	msn_message_parse_payload(msg, payload, len,
+					MSG_LINE_DEM,MSG_BODY_DEM);
 #ifdef MSN_DEBUG_SB
 	msn_message_show_readable(msg, "SB RECV", FALSE);
 #endif
 
-	if (msg->remote_user != NULL)
-		g_free (msg->remote_user);
+	g_free (msg->remote_user);
+	msg->remote_user = g_strdup(cmd->params[0]);
 
-	msg->remote_user = g_strdup(cmd->params[0]);
 	msn_cmdproc_process_msg(cmdproc, msg);
 
 	msn_message_destroy(msg);
@@ -749,6 +749,14 @@
 }
 
 static void
+ubm_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
+{
+	purple_debug_misc("MSNP14","get UBM...\n");
+	cmdproc->servconn->payload_len = atoi(cmd->params[4]);
+	cmdproc->last_cmd->payload_cb = msg_cmd_post;
+}
+
+static void
 nak_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
 {
 	MsnMessage *msg;
@@ -1084,6 +1092,8 @@
 cal_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error)
 {
 	int reason = MSN_SB_ERROR_UNKNOWN;
+	MsnMessage *msg;
+	MsnSwitchBoard *swboard = trans->data;
 
 	if (error == 215)
 	{
@@ -1096,7 +1106,19 @@
 	}
 
 	purple_debug_warning("msn", "cal_error: command %s gave error %i\n", trans->command, error);
+	purple_debug_warning("msn", "Will Use Offline Message to sendit\n");
 
+//	cal_error_helper(trans, reason);
+	/*offline Message send Process*/
+
+	while ((msg = g_queue_pop_head(swboard->msg_queue)) != NULL){
+		purple_debug_warning("MSNP14","offline msg to send:{%s}\n",msg->body);
+		/* The messages could not be sent due to a switchboard error */
+		swboard->error = MSN_SB_ERROR_USER_OFFLINE;
+		msg_error_helper(swboard->cmdproc, msg,
+							 MSN_MSG_ERROR_SB);
+		msn_message_unref(msg);
+	}
 	cal_error_helper(trans, reason);
 }
 
@@ -1140,6 +1162,7 @@
 		/* The conversation window was closed. */
 		return;
 
+	purple_debug_info("MSNP14","Switchboard:auth:{%s} socket:{%s}\n",cmd->params[4],cmd->params[2]);
 	msn_switchboard_set_auth_key(swboard, cmd->params[4]);
 
 	msn_parse_socket(cmd->params[2], &host, &port);
@@ -1252,6 +1275,7 @@
 	msn_table_add_cmd(cbs_table, "USR", "USR", usr_cmd);
 
 	msn_table_add_cmd(cbs_table, NULL, "MSG", msg_cmd);
+	msn_table_add_cmd(cbs_table, NULL, "UBM", ubm_cmd);
 	msn_table_add_cmd(cbs_table, NULL, "JOI", joi_cmd);
 	msn_table_add_cmd(cbs_table, NULL, "BYE", bye_cmd);
 	msn_table_add_cmd(cbs_table, NULL, "OUT", out_cmd);
--- a/libpurple/protocols/msn/sync.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/sync.c	Tue Oct 23 17:27:12 2007 +0000
@@ -90,9 +90,9 @@
 {
 	MsnSession *session = cmdproc->session;
 	const char *name;
-	int group_id;
+	const char *group_id;
 
-	group_id = atoi(cmd->params[0]);
+	group_id = cmd->params[0];
 	name = purple_url_decode(cmd->params[1]);
 
 	msn_group_new(session->userlist, group_id, name);
@@ -156,10 +156,10 @@
 
 		for (c = tokens; *c != NULL; c++)
 		{
-			int id;
+			char *id;
 
-			id = atoi(*c);
-			group_ids = g_slist_append(group_ids, GINT_TO_POINTER(id));
+			id = *c;
+			group_ids = g_slist_append(group_ids, g_strdup(id));
 		}
 
 		g_strfreev(tokens);
--- a/libpurple/protocols/msn/user.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/user.c	Tue Oct 23 17:27:12 2007 +0000
@@ -25,6 +25,7 @@
 #include "user.h"
 #include "slp.h"
 
+/*new a user object*/
 MsnUser *
 msn_user_new(MsnUserList *userlist, const char *passport,
 			 const char *store_name)
@@ -50,6 +51,7 @@
 	return user;
 }
 
+/*destroy a user object*/
 void
 msn_user_destroy(MsnUser *user)
 {
@@ -59,7 +61,14 @@
 		g_hash_table_destroy(user->clientcaps);
 
 	if (user->group_ids != NULL)
+	{
+		GList *l;
+		for (l = user->group_ids; l != NULL; l = l->next)
+		{
+			g_free(l->data);
+		}
 		g_list_free(user->group_ids);
+	}
 
 	if (user->msnobj != NULL)
 		msn_object_destroy(user->msnobj);
@@ -67,6 +76,7 @@
 	g_free(user->passport);
 	g_free(user->friendly_name);
 	g_free(user->store_name);
+	g_free(user->uid);
 	g_free(user->phone.home);
 	g_free(user->phone.work);
 	g_free(user->phone.mobile);
@@ -81,7 +91,18 @@
 
 	account = user->userlist->session->account;
 
-	if (user->status != NULL) {
+	if (user->statusline != NULL && user->currentmedia != NULL) {
+		purple_prpl_got_user_status(account, user->passport, user->status,
+		                          "message", user->statusline,
+		                          PURPLE_TUNE_FULL, user->currentmedia, NULL);
+	} else if (user->currentmedia != NULL) {
+		purple_prpl_got_user_status(account, user->passport, user->status, PURPLE_TUNE_FULL,
+		                          user->currentmedia, NULL);
+	} else if (user->statusline != NULL) {
+		//char *status = g_strdup_printf("%s - %s", user->status, user->statusline);
+		purple_prpl_got_user_status(account, user->passport, user->status,
+		                          "message", user->statusline, NULL);
+	} else if (user->status != NULL) {
 		if (!strcmp(user->status, "offline") && user->mobile) {
 			purple_prpl_got_user_status(account, user->passport, "offline", NULL);
 			purple_prpl_got_user_status(account, user->passport, "mobile", NULL);
@@ -142,12 +163,66 @@
 }
 
 void
+msn_user_set_statusline(MsnUser *user, const char *statusline)
+{
+	g_return_if_fail(user != NULL);
+
+	g_free(user->statusline);
+	user->statusline = g_strdup(statusline);
+}
+
+void
+msn_user_set_currentmedia(MsnUser *user, const char *currentmedia)
+{
+	g_return_if_fail(user != NULL);
+
+	g_free(user->currentmedia);
+	user->currentmedia = g_strdup(currentmedia);
+}
+
+void
 msn_user_set_store_name(MsnUser *user, const char *name)
 {
 	g_return_if_fail(user != NULL);
 
-	g_free(user->store_name);
-	user->store_name = g_strdup(name);
+	if (name != NULL)
+	{
+		g_free(user->store_name);
+		user->store_name = g_strdup(name);
+	}
+}
+
+void
+msn_user_set_uid(MsnUser *user, const char *uid)
+{
+	g_return_if_fail(user != NULL);
+
+	g_free(user->uid);
+	user->uid = g_strdup(uid);
+}
+
+void
+msn_user_set_type(MsnUser *user, MsnUserType type)
+{
+	g_return_if_fail(user != NULL);
+
+	user->type = type;
+}
+
+void
+msn_user_set_op(MsnUser *user, int list_op)
+{
+	g_return_if_fail(user != NULL);
+
+	user->list_op |= list_op;
+}
+
+void
+msn_user_unset_op(MsnUser *user, int list_op)
+{
+	g_return_if_fail(user != NULL);
+	
+	user->list_op &= ~list_op;
 }
 
 void
@@ -218,54 +293,97 @@
 	}
 }
 
+/*add group id to User object*/
 void
-msn_user_add_group_id(MsnUser *user, int id)
+msn_user_add_group_id(MsnUser *user, const char* id)
 {
 	MsnUserList *userlist;
 	PurpleAccount *account;
 	PurpleBuddy *b;
 	PurpleGroup *g;
 	const char *passport;
+	char *group_id;
 	const char *group_name;
 
 	g_return_if_fail(user != NULL);
-	g_return_if_fail(id >= 0);
+	g_return_if_fail(id != NULL);
 
-	user->group_ids = g_list_append(user->group_ids, GINT_TO_POINTER(id));
+	group_id = g_strdup(id);
+	user->group_ids = g_list_append(user->group_ids, group_id);
 
 	userlist = user->userlist;
 	account = userlist->session->account;
 	passport = msn_user_get_passport(user);
 
-	group_name = msn_userlist_find_group_name(userlist, id);
+	group_name = msn_userlist_find_group_name(userlist, group_id);
+
+	purple_debug_info("User","group id:%s,name:%s,user:%s\n", group_id, group_name, passport);
 
 	g = purple_find_group(group_name);
 
-	if ((id == 0) && (g == NULL))
+	if ((id == NULL) && (g == NULL))
 	{
 		g = purple_group_new(group_name);
 		purple_blist_add_group(g, NULL);
 	}
 
 	b = purple_find_buddy_in_group(account, passport, g);
-
 	if (b == NULL)
 	{
 		b = purple_buddy_new(account, passport, NULL);
-
 		purple_blist_add_buddy(b, NULL, g, NULL);
 	}
+	b->proto_data = user;
+	/*Update the blist Node info*/
+//	purple_blist_node_set_string(&(b->node), "", "");
+}
 
-	b->proto_data = user;
+/*check if the msn user is online*/
+gboolean
+msn_user_is_online(PurpleAccount *account, const char *name)
+{
+	PurpleBuddy *buddy;
+
+	buddy =purple_find_buddy(account,name);
+	return PURPLE_BUDDY_IS_ONLINE(buddy);
+}
+
+gboolean
+msn_user_is_yahoo(PurpleAccount *account, const char *name)
+{
+	MsnSession *session = NULL;
+	MsnUser *user;
+	PurpleConnection *gc;
+
+	gc = purple_account_get_connection(account);
+	if (gc != NULL)
+		session = gc->proto_data;
+
+	if ((session != NULL) && (session->protocol_ver == WLM_PROT_VER))
+		return FALSE;
+
+	if ((session != NULL) && (user = msn_userlist_find_user(session->userlist, name)) != NULL)
+	{
+		return (user->type == MSN_USER_TYPE_YAHOO);
+	}
+	return (strstr(name,"@yahoo.") != NULL);
 }
 
 void
-msn_user_remove_group_id(MsnUser *user, int id)
+msn_user_remove_group_id(MsnUser *user, const char *id)
 {
+	GList *l;
+
 	g_return_if_fail(user != NULL);
-	g_return_if_fail(id >= 0);
+	g_return_if_fail(id != NULL);
+
+	l = g_list_find_custom(user->group_ids, id, (GCompareFunc)strcmp);
 
-	user->group_ids = g_list_remove(user->group_ids, GINT_TO_POINTER(id));
+	if (l == NULL)
+		return;
+
+	g_free(l->data);
+	user->group_ids = g_list_delete_link(user->group_ids, l);
 }
 
 void
@@ -273,10 +391,8 @@
 {
 	g_return_if_fail(user != NULL);
 
-	if (user->phone.home != NULL)
-		g_free(user->phone.home);
-
-	user->phone.home = (number == NULL ? NULL : g_strdup(number));
+	g_free(user->phone.home);
+	user->phone.home = g_strdup(number);
 }
 
 void
@@ -284,10 +400,8 @@
 {
 	g_return_if_fail(user != NULL);
 
-	if (user->phone.work != NULL)
-		g_free(user->phone.work);
-
-	user->phone.work = (number == NULL ? NULL : g_strdup(number));
+	g_free(user->phone.work);
+	user->phone.work = g_strdup(number);
 }
 
 void
@@ -295,10 +409,8 @@
 {
 	g_return_if_fail(user != NULL);
 
-	if (user->phone.mobile != NULL)
-		g_free(user->phone.mobile);
-
-	user->phone.mobile = (number == NULL ? NULL : g_strdup(number));
+	g_free(user->phone.mobile);
+	user->phone.mobile = g_strdup(number);
 }
 
 void
--- a/libpurple/protocols/msn/user.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/user.h	Tue Oct 23 17:27:12 2007 +0000
@@ -31,6 +31,17 @@
 
 #include "userlist.h"
 
+typedef enum
+{
+	MSN_USER_TYPE_UNKNOWN  = 0x00,
+	MSN_USER_TYPE_PASSPORT = 0x01,
+	MSN_USER_TYPE_UNKNOWN1 = 0x02,
+	MSN_USER_TYPE_MOBILE   = 0x04,
+	MSN_USER_TYPE_UNKNOWN2 = 0x08,
+	MSN_USER_TYPE_UNKNOWN3 = 0x10,
+	MSN_USER_TYPE_YAHOO    = 0x20
+} MsnUserType;
+
 /**
  * A user.
  */
@@ -45,7 +56,12 @@
 	char *store_name;       /**< The name stored in the server. */
 	char *friendly_name;    /**< The friendly name.             */
 
+	char * uid;				/*< User Id							*/
+
 	const char *status;     /**< The state of the user.         */
+	char *statusline;       /**< The state of the user.         */	
+	char *currentmedia;     /**< The current media of the user. */
+
 	gboolean idle;          /**< The idle state of the user.    */
 
 	struct
@@ -65,7 +81,12 @@
 
 	GHashTable *clientcaps; /**< The client's capabilities.     */
 
-	int list_op;
+	MsnUserType type;       /**< The user type                  */
+
+	int list_op;            /**< Which lists the user is in     */
+
+	guint membership_id[5];	/**< The membershipId sent by the contacts server,
+				     indexed by the list it belongs to		*/
 };
 
 /**************************************************************************/
@@ -102,6 +123,22 @@
  */
 void msn_user_update(MsnUser *user);
 
+ /**
+  *  Sets the new statusline of user.
+  * 
+  *  @param user The user.
+  *  @param state The statusline string.
+  */
+void msn_user_set_statusline(MsnUser *user, const char *statusline);
+
+ /**
+  *  Sets the current media of user.
+  * 
+  *  @param user The user.
+  *  @param state The statusline string.
+  */
+void msn_user_set_currentmedia(MsnUser *user, const char *currentmedia);
+
 /**
  * Sets the new state of user.
  *
@@ -156,7 +193,7 @@
  * @param user The user.
  * @param id   The group ID.
  */
-void msn_user_add_group_id(MsnUser *user, int id);
+void msn_user_add_group_id(MsnUser *user, const char * id);
 
 /**
  * Removes the group ID from a user.
@@ -164,7 +201,7 @@
  * @param user The user.
  * @param id   The group ID.
  */
-void msn_user_remove_group_id(MsnUser *user, int id);
+void msn_user_remove_group_id(MsnUser *user, const char * id);
 
 /**
  * Sets the home phone number for a user.
@@ -182,6 +219,9 @@
  */
 void msn_user_set_work_phone(MsnUser *user, const char *number);
 
+void msn_user_set_uid(MsnUser *user, const char *uid);
+void msn_user_set_type(MsnUser *user, MsnUserType type);
+
 /**
  * Sets the mobile phone number for a user.
  *
@@ -279,6 +319,22 @@
  */
 GHashTable *msn_user_get_client_caps(const MsnUser *user);
 
+/**
+ * check to see if user is online
+ */
+gboolean
+msn_user_is_online(PurpleAccount *account, const char *name);
+
+/**
+ * check to see if user is Yahoo User
+ */
+gboolean
+msn_user_is_yahoo(PurpleAccount *account ,const char *name);
+
+void msn_user_set_op(MsnUser *user, int list_op);
+void msn_user_unset_op(MsnUser *user, int list_op);
+
 /*@}*/
 
+
 #endif /* _MSN_USER_H_ */
--- a/libpurple/protocols/msn/userlist.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/userlist.c	Tue Oct 23 17:27:12 2007 +0000
@@ -41,10 +41,18 @@
 msn_accept_add_cb(gpointer data)
 {
 	MsnPermitAdd *pa = data;
-	MsnSession *session = pa->gc->proto_data;
-	MsnUserList *userlist = session->userlist;
+
+	purple_debug_misc("MSN Userlist", "Accepted the new buddy: %s\n", pa->who);
 
-	msn_userlist_add_buddy(userlist, pa->who, MSN_LIST_AL, NULL);
+	if (PURPLE_CONNECTION_IS_VALID(pa->gc))
+	{
+		MsnSession *session = pa->gc->proto_data;
+		MsnUserList *userlist = session->userlist;
+		
+		msn_userlist_add_buddy_to_list(userlist, pa->who, MSN_LIST_AL);
+
+		msn_del_contact_from_list(session->contact, NULL, pa->who, MSN_LIST_PL);
+	}
 
 	g_free(pa->who);
 	g_free(pa->friendly);
@@ -55,10 +63,20 @@
 msn_cancel_add_cb(gpointer data)
 {
 	MsnPermitAdd *pa = data;
-	MsnSession *session = pa->gc->proto_data;
-	MsnUserList *userlist = session->userlist;
+
+	purple_debug_misc("MSN Userlist", "Denied the new buddy: %s\n", pa->who);
 
-	msn_userlist_add_buddy(userlist, pa->who, MSN_LIST_BL, NULL);
+	if (PURPLE_CONNECTION_IS_VALID(pa->gc))
+	{
+		MsnSession *session = pa->gc->proto_data;
+		MsnUserList *userlist = session->userlist;
+		MsnCallbackState *state = msn_callback_state_new();
+
+		msn_callback_state_set_action(state, MSN_DENIED_BUDDY);
+
+		msn_userlist_add_buddy_to_list(userlist, pa->who, MSN_LIST_BL);
+		msn_del_contact_from_list(session->contact, state, pa->who, MSN_LIST_PL);
+	}
 
 	g_free(pa->who);
 	g_free(pa->friendly);
@@ -68,59 +86,57 @@
 static void
 got_new_entry(PurpleConnection *gc, const char *passport, const char *friendly)
 {
+	PurpleAccount *acct;
 	MsnPermitAdd *pa;
 
 	pa = g_new0(MsnPermitAdd, 1);
 	pa->who = g_strdup(passport);
 	pa->friendly = g_strdup(friendly);
 	pa->gc = gc;
-	
-	purple_account_request_authorization(purple_connection_get_account(gc), passport, NULL, friendly, NULL,
-					   purple_find_buddy(purple_connection_get_account(gc), passport) != NULL,
-					   msn_accept_add_cb, msn_cancel_add_cb, pa);
+
+	acct = purple_connection_get_account(gc);
+	purple_account_request_authorization(acct, passport, NULL, friendly, NULL,
+										 purple_find_buddy(acct, passport) != NULL,
+										 msn_accept_add_cb, msn_cancel_add_cb, pa);
+
 }
 
 /**************************************************************************
  * Utility functions
  **************************************************************************/
 
-static gboolean
-user_is_in_group(MsnUser *user, int group_id)
+gboolean
+msn_userlist_user_is_in_group(MsnUser *user, const char * group_id)
 {
 	if (user == NULL)
 		return FALSE;
 
-	if (group_id < 0)
+	if (group_id == NULL)
 		return FALSE;
 
-	if (g_list_find(user->group_ids, GINT_TO_POINTER(group_id)))
+	if (g_list_find_custom(user->group_ids, group_id, (GCompareFunc)strcmp))
 		return TRUE;
 
 	return FALSE;
 }
 
-static gboolean
-user_is_there(MsnUser *user, int list_id, int group_id)
+gboolean
+msn_userlist_user_is_in_list(MsnUser *user, MsnListId list_id)
 {
 	int list_op;
 
 	if (user == NULL)
 		return FALSE;
-
+	
 	list_op = 1 << list_id;
 
-	if (!(user->list_op & list_op))
+	if (user->list_op & list_op)
+		return TRUE;
+	else
 		return FALSE;
-
-	if (list_id == MSN_LIST_FL)
-	{
-		if (group_id >= 0)
-			return user_is_in_group(user, group_id);
-	}
-
-	return TRUE;
 }
 
+#if 0
 static const char*
 get_store_name(MsnUser *user)
 {
@@ -148,31 +164,7 @@
 
 	return store_name;
 }
-
-static void
-msn_request_add_group(MsnUserList *userlist, const char *who,
-					  const char *old_group_name, const char *new_group_name)
-{
-	MsnCmdProc *cmdproc;
-	MsnTransaction *trans;
-	MsnMoveBuddy *data;
-
-	cmdproc = userlist->session->notification->cmdproc;
-	data = g_new0(MsnMoveBuddy, 1);
-
-	data->who = g_strdup(who);
-
-	if (old_group_name)
-		data->old_group_name = g_strdup(old_group_name);
-
-	trans = msn_transaction_new(cmdproc, "ADG", "%s %d",
-								purple_url_encode(new_group_name),
-								0);
-
-	msn_transaction_set_data(trans, data);
-
-	msn_cmdproc_send_trans(cmdproc, trans);
-}
+#endif
 
 /**************************************************************************
  * Server functions
@@ -193,14 +185,16 @@
 	return -1;
 }
 
+/* this function msn_got_add_user isn't called anywhere */
 void
 msn_got_add_user(MsnSession *session, MsnUser *user,
-				 MsnListId list_id, int group_id)
+				 MsnListId list_id, const char * group_id)
 {
 	PurpleAccount *account;
 	const char *passport;
 	const char *friendly;
 
+	purple_debug_info("MSNP14","got add user...\n");
 	account = session->account;
 
 	passport = msn_user_get_passport(user);
@@ -214,7 +208,7 @@
 
 		serv_got_alias(gc, passport, friendly);
 
-		if (group_id >= 0)
+		if (group_id != NULL)
 		{
 			msn_user_add_group_id(user, group_id);
 		}
@@ -233,11 +227,8 @@
 	}
 	else if (list_id == MSN_LIST_RL)
 	{
-		PurpleConnection *gc;
 		PurpleConversation *convo;
 
-		gc = purple_account_get_connection(account);
-
 		purple_debug_info("msn",
 						"%s has added you to his or her buddy list.\n",
 						passport);
@@ -263,7 +254,7 @@
 			 *       looked at this.  Maybe we should use the store
 			 *       name instead? --KingAnt
 			 */
-			got_new_entry(gc, passport, friendly);
+//			got_new_entry(gc, passport, friendly);
 		}
 	}
 
@@ -273,7 +264,7 @@
 
 void
 msn_got_rem_user(MsnSession *session, MsnUser *user,
-				 MsnListId list_id, int group_id)
+				 MsnListId list_id, const char * group_id)
 {
 	PurpleAccount *account;
 	const char *passport;
@@ -285,7 +276,7 @@
 	if (list_id == MSN_LIST_FL)
 	{
 		/* TODO: When is the user totally removed? */
-		if (group_id >= 0)
+		if (group_id != NULL)
 		{
 			msn_user_remove_group_id(user, group_id);
 			return;
@@ -333,7 +324,6 @@
 	{
 		purple_debug_info("msn", "Buddy '%s' shall be deleted?.\n",
 						passport);
-
 	}
 }
 
@@ -351,14 +341,16 @@
 
 	passport = msn_user_get_passport(user);
 	store = msn_user_get_store_name(user);
+	
+	msn_user_set_op(user, list_op);
 
 	if (list_op & MSN_LIST_FL_OP)
 	{
 		GSList *c;
 		for (c = group_ids; c != NULL; c = g_slist_next(c))
 		{
-			int group_id;
-			group_id = GPOINTER_TO_INT(c->data);
+			char *group_id;
+			group_id = c->data;
 			msn_user_add_group_id(user, group_id);
 		}
 
@@ -393,11 +385,14 @@
 
 		if (!(list_op & (MSN_LIST_AL_OP | MSN_LIST_BL_OP)))
 		{
-			got_new_entry(gc, passport, store);
+//			got_new_entry(gc, passport, store);
 		}
 	}
 
-	user->list_op = list_op;
+	if (list_op & MSN_LIST_PL_OP)
+	{
+		got_new_entry(gc, passport, store);
+	}
 }
 
 /**************************************************************************
@@ -427,18 +422,18 @@
 {
 	GList *l;
 
+	/*destroy userlist*/
 	for (l = userlist->users; l != NULL; l = l->next)
 	{
 		msn_user_destroy(l->data);
 	}
-
 	g_list_free(userlist->users);
 
+	/*destroy group list*/
 	for (l = userlist->groups; l != NULL; l = l->next)
 	{
 		msn_group_destroy(l->data);
 	}
-
 	g_list_free(userlist->groups);
 
 	g_queue_free(userlist->buddy_icon_requests);
@@ -449,6 +444,22 @@
 	g_free(userlist);
 }
 
+MsnUser *
+msn_userlist_find_add_user(MsnUserList *userlist,const char *passport,const char *userName)
+{
+	MsnUser *user;
+
+	user = msn_userlist_find_user(userlist, passport);
+	if (user == NULL)
+	{
+		user = msn_user_new(userlist, passport, userName);
+		msn_userlist_add_user(userlist, user);
+	} else {
+		msn_user_set_store_name(user, userName);
+	}
+	return user;
+}
+
 void
 msn_userlist_add_user(MsnUserList *userlist, MsnUser *user)
 {
@@ -472,10 +483,36 @@
 	{
 		MsnUser *user = (MsnUser *)l->data;
 
+//		purple_debug_info("MsnUserList","user passport:%s,passport:%s\n",user->passport,passport);
 		g_return_val_if_fail(user->passport != NULL, NULL);
 
-		if (!strcmp(passport, user->passport))
+		if (!g_strcasecmp(passport, user->passport)){
+//			purple_debug_info("MsnUserList","return:%p\n",user);
 			return user;
+		}
+	}
+
+	return NULL;
+}
+
+MsnUser *
+msn_userlist_find_user_with_id(MsnUserList *userlist, const char *uid)
+{
+ 	GList *l;
+
+        g_return_val_if_fail(uid != NULL, NULL);
+
+        for (l = userlist->users; l != NULL; l = l->next)
+        {
+                MsnUser *user = (MsnUser *)l->data;
+
+		if (user->uid == NULL) {
+			continue;
+		}
+
+		if ( !g_strcasecmp(uid, user->uid) ) {
+			return user;
+		}
 	}
 
 	return NULL;
@@ -494,18 +531,18 @@
 }
 
 MsnGroup *
-msn_userlist_find_group_with_id(MsnUserList *userlist, int id)
+msn_userlist_find_group_with_id(MsnUserList *userlist, const char * id)
 {
 	GList *l;
 
 	g_return_val_if_fail(userlist != NULL, NULL);
-	g_return_val_if_fail(id       >= 0,    NULL);
+	g_return_val_if_fail(id       != NULL, NULL);
 
 	for (l = userlist->groups; l != NULL; l = l->next)
 	{
 		MsnGroup *group = l->data;
 
-		if (group->id == id)
+		if (!g_strcasecmp(group->id,id))
 			return group;
 	}
 
@@ -524,14 +561,14 @@
 	{
 		MsnGroup *group = l->data;
 
-		if ((group->name != NULL) && !g_ascii_strcasecmp(name, group->name))
+		if ((group->name != NULL) && !g_strcasecmp(name, group->name))
 			return group;
 	}
 
 	return NULL;
 }
 
-int
+const char *
 msn_userlist_find_group_id(MsnUserList *userlist, const char *group_name)
 {
 	MsnGroup *group;
@@ -541,11 +578,11 @@
 	if (group != NULL)
 		return msn_group_get_id(group);
 	else
-		return -1;
+		return NULL;
 }
 
 const char *
-msn_userlist_find_group_name(MsnUserList *userlist, int group_id)
+msn_userlist_find_group_name(MsnUserList *userlist, const char * group_id)
 {
 	MsnGroup *group;
 
@@ -558,7 +595,7 @@
 }
 
 void
-msn_userlist_rename_group_id(MsnUserList *userlist, int group_id,
+msn_userlist_rename_group_id(MsnUserList *userlist, const char * group_id,
 							 const char *new_name)
 {
 	MsnGroup *group;
@@ -570,7 +607,7 @@
 }
 
 void
-msn_userlist_remove_group_id(MsnUserList *userlist, int group_id)
+msn_userlist_remove_group_id(MsnUserList *userlist, const char * group_id)
 {
 	MsnGroup *group;
 
@@ -584,116 +621,293 @@
 }
 
 void
-msn_userlist_rem_buddy(MsnUserList *userlist,
-					   const char *who, int list_id, const char *group_name)
+msn_userlist_rem_buddy(MsnUserList *userlist, const char *who)
+{
+	MsnUser *user = NULL;
+	
+	g_return_if_fail(userlist != NULL);
+	g_return_if_fail(userlist->session != NULL);
+	g_return_if_fail(userlist->session->contact != NULL);
+	g_return_if_fail(who != NULL);
+	
+	user = msn_userlist_find_user(userlist, who);
+
+	msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_FL);
+
+	/* delete the contact from address book via soap action */
+	if (user != NULL) {
+		msn_delete_contact(userlist->session->contact, user->uid);
+	}
+}
+
+void
+msn_userlist_rem_buddy_from_list(MsnUserList *userlist, const char *who,
+				 MsnListId list_id)
 {
 	MsnUser *user;
-	int group_id;
-	const char *list;
+	const gchar *list;
+	MsnListOp list_op = 1 << list_id;
 
 	user = msn_userlist_find_user(userlist, who);
-	group_id = -1;
-
-	if (group_name != NULL)
-	{
-		group_id = msn_userlist_find_group_id(userlist, group_name);
-
-		if (group_id < 0)
-		{
-			/* Whoa, there is no such group. */
-			purple_debug_error("msn", "Group doesn't exist: %s\n", group_name);
-			return;
-		}
-	}
-
-	/* First we're going to check if not there. */
-	if (!(user_is_there(user, list_id, group_id)))
-	{
+	
+	g_return_if_fail(user != NULL);
+	
+	if ( !msn_userlist_user_is_in_list(user, list_id)) {
 		list = lists[list_id];
-		purple_debug_error("msn", "User '%s' is not there: %s\n",
-						 who, list);
+		purple_debug_info("MSN Userlist", "User %s is not in list %s, not removing.\n", who, list);
 		return;
 	}
 
-	/* Then request the rem to the server. */
-	list = lists[list_id];
+	msn_user_unset_op(user, list_op);
 
-	msn_notification_rem_buddy(userlist->session->notification, list, who, group_id);
+	msn_notification_rem_buddy_from_list(userlist->session->notification, list_id, who);
 }
 
+/*add buddy*/
 void
-msn_userlist_add_buddy(MsnUserList *userlist,
-					   const char *who, int list_id,
-					   const char *group_name)
+msn_userlist_add_buddy(MsnUserList *userlist, const char *who, const char *group_name)
 {
 	MsnUser *user;
-	int group_id;
-	const char *list;
-	const char *store_name;
+	MsnCallbackState *state = NULL;
+	const char *group_id = NULL, *new_group_name;
+	
+	new_group_name = group_name == NULL ? MSN_INDIVIDUALS_GROUP_NAME : group_name;
 
-	group_id = -1;
+	
+	g_return_if_fail(userlist != NULL);
+	g_return_if_fail(userlist->session != NULL);
+
+	
+	purple_debug_info("MSN Userlist", "Add user: %s to group: %s\n", who, new_group_name);
+
+	state = msn_callback_state_new();
+	msn_callback_state_set_who(state, who);
+	msn_callback_state_set_new_group_name(state, new_group_name);
 
 	if (!purple_email_is_valid(who))
 	{
 		/* only notify the user about problems adding to the friends list
 		 * maybe we should do something else for other lists, but it probably
 		 * won't cause too many problems if we just ignore it */
-		if (list_id == MSN_LIST_FL)
-		{
-			char *str = g_strdup_printf(_("Unable to add \"%s\"."), who);
-			purple_notify_error(NULL, NULL, str,
-							  _("The screen name specified is invalid."));
-			g_free(str);
-		}
+		
+		char *str = g_strdup_printf(_("Unable to add \"%s\"."), who);
+		
+		purple_notify_error(NULL, NULL, str,
+				  _("The screen name specified is invalid."));
+		g_free(str);
 
 		return;
 	}
 
-	if (group_name != NULL)
+	group_id = msn_userlist_find_group_id(userlist, new_group_name);
+
+	if (group_id == NULL)
 	{
-		group_id = msn_userlist_find_group_id(userlist, group_name);
+		/* Whoa, we must add that group first. */
+		purple_debug_info("MSN Userlist", "Adding user %s to a new group, creating group %s first\n", who, new_group_name);
+		
+		msn_callback_state_set_action(state, MSN_ADD_BUDDY);
 
-		if (group_id < 0)
-		{
-			/* Whoa, we must add that group first. */
-			msn_request_add_group(userlist, who, NULL, group_name);
+		msn_add_group(userlist->session, state, new_group_name);
+		return;
+	} else {
+		msn_callback_state_set_guid(state, group_id);
+	}
+	
+	/* XXX: adding user here may not be correct (should add them in the
+ 	 * ACK to the ADL command), but for now we need to make sure they exist  
+	 * early enough that the ILN command doesn't screw us up */
+
+	user = msn_userlist_find_add_user(userlist, who, who);
+
+	if ( msn_userlist_user_is_in_list(user, MSN_LIST_FL) ) {
+
+		purple_debug_info("MSN Userlist", "User %s already exists\n", who);
+
+		msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_BL);
+
+		if (msn_userlist_user_is_in_group(user, group_id)) {
+			purple_debug_info("MSN Userlist", "User %s is already in group %s, returning\n", who, new_group_name);
 			return;
 		}
 	}
+			
+	purple_debug_info("MSN Userlist", "Adding user: %s to group id: %s\n", who, group_id);
 
-	user = msn_userlist_find_user(userlist, who);
+	msn_callback_state_set_action(state, MSN_ADD_BUDDY);
+
+	/* Add contact in the Contact server with a SOAP request and if
+	   successful, send ADL with MSN_LIST_AL and MSN_LIST_FL and a FQY */
+	msn_add_contact_to_group(userlist->session->contact, state, who, group_id);
+}
 
+void
+msn_userlist_add_buddy_to_list(MsnUserList *userlist, const char *who, 
+							MsnListId list_id)
+{
+	MsnUser *user = NULL;
+	const gchar *list;
+	MsnListOp list_op = 1 << list_id;
+
+	g_return_if_fail(userlist != NULL);
+	
+	user = msn_userlist_find_add_user(userlist, who, who);
+	
 	/* First we're going to check if it's already there. */
-	if (user_is_there(user, list_id, group_id))
+	if (msn_userlist_user_is_in_list(user, list_id))
 	{
 		list = lists[list_id];
-		purple_debug_error("msn", "User '%s' is already there: %s\n", who, list);
+		purple_debug_info("MSN Userlist", "User '%s' is already in list: %s\n", who, list);
 		return;
 	}
+	
+	//store_name = (user != NULL) ? get_store_name(user) : who;
+	
+	//purple_debug_info("MSN Userlist", "store_name = %s\n", store_name);
+	
+	/* XXX: see XXX above, this should really be done when we get the response from
+		the server */
+	
+	msn_user_set_op(user, list_op);
+	
+	msn_notification_add_buddy_to_list(userlist->session->notification, list_id, who);
+}
+
+gboolean
+msn_userlist_add_buddy_to_group(MsnUserList *userlist, const char *who,
+				const char *group_name)
+{
+	MsnUser *user;
+	gchar * group_id;
+	
+	g_return_val_if_fail(userlist != NULL, FALSE);
+	g_return_val_if_fail(group_name != NULL, FALSE);
+	g_return_val_if_fail(who != NULL, FALSE);
+
+	purple_debug_info("MSN Userlist","Adding buddy with passport %s to group %s\n", who, group_name);
+
+	if ( (group_id = (gchar *)msn_userlist_find_group_id(userlist, group_name)) == NULL) {
+		purple_debug_error("MSN Userlist", "Group %s has no guid!\n", group_name);
+		return FALSE;
+	}
 
-	store_name = (user != NULL) ? get_store_name(user) : who;
+	if ( (user = msn_userlist_find_user(userlist, who)) == NULL) {
+		purple_debug_error("MSN Userlist", "User %s not found!", who);
+		return FALSE;
+	}
+	
+	msn_user_add_group_id(user, group_id);
+
+	return TRUE;
+}
+
+
+gboolean
+msn_userlist_rem_buddy_from_group(MsnUserList *userlist, const char *who,
+				const char *group_name)
+{
+	const gchar * group_id;
+	MsnUser *user;
 
-	/* Then request the add to the server. */
-	list = lists[list_id];
+	g_return_val_if_fail(userlist != NULL, FALSE);
+	g_return_val_if_fail(group_name != NULL, FALSE);
+	g_return_val_if_fail(who != NULL, FALSE);
+	
+	purple_debug_info("MSN Userlist","Removing buddy with passport %s from group %s\n", who, group_name);
 
-	msn_notification_add_buddy(userlist->session->notification, list, who,
-							   store_name, group_id);
+	if ( (group_id = msn_userlist_find_group_id(userlist, group_name)) == NULL) {
+		purple_debug_error("MSN Userlist", "Group %s has no guid!\n", group_name);
+		return FALSE;
+	}
+
+	if ( (user = msn_userlist_find_user(userlist, who)) == NULL) {
+		purple_debug_error("MSN Userlist", "User %s not found!", who);
+		return FALSE;
+	}
+
+	msn_user_remove_group_id(user, group_id);
+
+	return TRUE;
 }
 
 void
 msn_userlist_move_buddy(MsnUserList *userlist, const char *who,
-						const char *old_group_name, const char *new_group_name)
+			const char *old_group_name, const char *new_group_name)
 {
-	int new_group_id;
+	const char *new_group_id;
+	MsnCallbackState *state;
+	
+	g_return_if_fail(userlist != NULL);
+	g_return_if_fail(userlist->session != NULL);
+	g_return_if_fail(userlist->session->contact != NULL);
+
+	state = msn_callback_state_new();
+	msn_callback_state_set_who(state, who);
+	msn_callback_state_set_action(state, MSN_MOVE_BUDDY);
+	msn_callback_state_set_old_group_name(state, old_group_name);
+	msn_callback_state_set_new_group_name(state, new_group_name);
 
 	new_group_id = msn_userlist_find_group_id(userlist, new_group_name);
 
-	if (new_group_id < 0)
-	{
-		msn_request_add_group(userlist, who, old_group_name, new_group_name);
+	if (new_group_id == NULL)
+	{		
+		msn_add_group(userlist->session, state, new_group_name);
 		return;
 	}
+	
+	/* add the contact to the new group, and remove it from the old one in
+	 * the callback
+	*/
+	msn_add_contact_to_group(userlist->session->contact, state, who, new_group_id);
+}
 
-	msn_userlist_add_buddy(userlist, who, MSN_LIST_FL, new_group_name);
-	msn_userlist_rem_buddy(userlist, who, MSN_LIST_FL, old_group_name);
+/*load userlist from the Blist file cache*/
+void
+msn_userlist_load(MsnSession *session)
+{
+	PurpleBlistNode *gnode, *cnode, *bnode;
+	PurpleConnection *gc = purple_account_get_connection(session->account);
+	GSList *l;
+	MsnUser * user;
+
+	g_return_if_fail(gc != NULL);
+
+	for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next)
+	{
+		if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
+			continue;
+		for (cnode = gnode->child; cnode; cnode = cnode->next)
+		{
+			if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
+				continue;
+			for (bnode = cnode->child; bnode; bnode = bnode->next)
+			{
+				PurpleBuddy *b;
+				if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
+					continue;
+				b = (PurpleBuddy *)bnode;
+				if (b->account == gc->account)
+				{
+					user = msn_userlist_find_add_user(session->userlist,
+						b->name,NULL);
+					b->proto_data = user;
+					msn_user_set_op(user, MSN_LIST_FL_OP);
+				}
+			}
+		}
+	}
+	for (l = session->account->permit; l != NULL; l = l->next)
+	{
+		user = msn_userlist_find_add_user(session->userlist,
+						(char *)l->data,NULL);
+		msn_user_set_op(user, MSN_LIST_AL_OP);
+	}
+	for (l = session->account->deny; l != NULL; l = l->next)
+	{
+		user = msn_userlist_find_add_user(session->userlist,
+						(char *)l->data,NULL);
+		msn_user_set_op(user, MSN_LIST_BL_OP);
+	}
+	
 }
+
--- a/libpurple/protocols/msn/userlist.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/msn/userlist.h	Tue Oct 23 17:27:12 2007 +0000
@@ -35,16 +35,11 @@
 	MSN_LIST_FL,
 	MSN_LIST_AL,
 	MSN_LIST_BL,
-	MSN_LIST_RL
+	MSN_LIST_RL,
+	MSN_LIST_PL
 
 } MsnListId;
 
-typedef struct
-{
-	char *who;
-	char *old_group_name;
-
-} MsnMoveBuddy;
 
 struct _MsnUserList
 {
@@ -64,40 +59,57 @@
 
 };
 
+gboolean msn_userlist_user_is_in_group(MsnUser *user, const char * group_id);
+gboolean msn_userlist_user_is_in_list(MsnUser *user, MsnListId list_id);
 MsnListId msn_get_list_id(const char *list);
 
 void msn_got_add_user(MsnSession *session, MsnUser *user,
-					  MsnListId list_id, int group_id);
+					  MsnListId list_id, const char *group_id);
 void msn_got_rem_user(MsnSession *session, MsnUser *user,
-					  MsnListId list_id, int group_id);
+					  MsnListId list_id, const char *group_id);
 void msn_got_lst_user(MsnSession *session, MsnUser *user,
 					  int list_op, GSList *group_ids);
 
 MsnUserList *msn_userlist_new(MsnSession *session);
 void msn_userlist_destroy(MsnUserList *userlist);
+
 void msn_userlist_add_user(MsnUserList *userlist, MsnUser *user);
 void msn_userlist_remove_user(MsnUserList *userlist, MsnUser *user);
-MsnUser *msn_userlist_find_user(MsnUserList *userlist,
-								const char *passport);
+
+MsnUser * msn_userlist_find_user(MsnUserList *userlist, const char *passport);
+MsnUser * msn_userlist_find_add_user(MsnUserList *userlist,
+				const char *passport, const char *userName);
+MsnUser * msn_userlist_find_user_with_id(MsnUserList *userlist, const char *uid);
+
 void msn_userlist_add_group(MsnUserList *userlist, MsnGroup *group);
 void msn_userlist_remove_group(MsnUserList *userlist, MsnGroup *group);
-MsnGroup *msn_userlist_find_group_with_id(MsnUserList *userlist, int id);
-MsnGroup *msn_userlist_find_group_with_name(MsnUserList *userlist,
-											const char *name);
-int msn_userlist_find_group_id(MsnUserList *userlist,
-							   const char *group_name);
-const char *msn_userlist_find_group_name(MsnUserList *userlist,
-										 int group_id);
-void msn_userlist_rename_group_id(MsnUserList *userlist, int group_id,
-								  const char *new_name);
-void msn_userlist_remove_group_id(MsnUserList *userlist, int group_id);
+MsnGroup *msn_userlist_find_group_with_id(MsnUserList *userlist, const char *id);
+MsnGroup *msn_userlist_find_group_with_name(MsnUserList *userlist, const char *name);
+const char * msn_userlist_find_group_id(MsnUserList *userlist,
+					const char *group_name);
+const char *msn_userlist_find_group_name(MsnUserList *userlist, const char *group_id);
+void msn_userlist_rename_group_id(MsnUserList *userlist, const char *group_id,
+				  const char *new_name);
+void msn_userlist_remove_group_id(MsnUserList *userlist, const char *group_id);
 
-void msn_userlist_rem_buddy(MsnUserList *userlist, const char *who,
-							int list_id, const char *group_name);
-void msn_userlist_add_buddy(MsnUserList *userlist, const char *who,
-							int list_id, const char *group_name);
+void msn_userlist_rem_buddy(MsnUserList *userlist, const char *who);
+void msn_userlist_add_buddy(MsnUserList *userlist, 
+			    const char *who, const char *group_name);
 void msn_userlist_move_buddy(MsnUserList *userlist, const char *who,
-							 const char *old_group_name,
-							 const char *new_group_name);
+						    const char *old_group_name,
+						    const char *new_group_name);
+
+gboolean msn_userlist_add_buddy_to_group(MsnUserList *userlist, const char *who,
+					 const char *group_name);
+gboolean msn_userlist_rem_buddy_from_group(MsnUserList *userlist,
+					   const char *who,
+					   const char *group_name);
+
+void msn_userlist_add_buddy_to_list(MsnUserList *userlist, const char *who, 
+				    MsnListId list_id);
+void msn_userlist_rem_buddy_from_list(MsnUserList *userlist, const char *who,
+				      MsnListId list_id);
+
+void msn_userlist_load(MsnSession *session);
 
 #endif /* _MSN_USERLIST_H_ */
--- a/libpurple/protocols/myspace/markup.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/myspace/markup.c	Tue Oct 23 17:27:12 2007 +0000
@@ -519,7 +519,8 @@
 #endif
 
 		err = g_strdup_printf("html_tag_to_msim_markup: unrecognized "
-				"HTML tag %s was sent by the IM client; ignoring", (root->name ? root->name : "(NULL)"));
+			"HTML tag %s was sent by the IM client; ignoring", 
+			root->name ? root->name : "(NULL)");
 		msim_unrecognized(NULL, NULL, err);
 		g_free(err);
 	}
--- a/libpurple/protocols/myspace/myspace.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/myspace/myspace.c	Tue Oct 23 17:27:12 2007 +0000
@@ -291,9 +291,10 @@
 		/* Notify an error message also, because this is important! */
 		purple_notify_error(acct, _("MySpaceIM Error"), str, NULL);
 
+		gc->wants_to_die = TRUE;
 		purple_connection_error(gc, str);
-		
 		g_free(str);
+		return;
 	}
 #endif
 
@@ -458,6 +459,7 @@
 	purple_cipher_context_append(key_context, hash_pw, HASH_SIZE);
 	purple_cipher_context_append(key_context, (guchar *)(nonce + NONCE_SIZE), NONCE_SIZE);
 	purple_cipher_context_digest(key_context, sizeof(key), key, NULL);
+	purple_cipher_context_destroy(key_context);
 
 #ifdef MSIM_DEBUG_LOGIN_CHALLENGE
 	purple_debug_info("msim", "key = ");
@@ -1044,7 +1046,7 @@
 	PurpleStatusType *type;
 	MsimSession *session;
 	guint status_code;
-	const gchar *statstring;
+	gchar *statstring;
 
 	session = (MsimSession *)account->gc->proto_data;
 
@@ -1078,7 +1080,7 @@
 			break;
 	}
 
-	statstring = purple_status_get_attr_string(status, "message");
+	statstring = (gchar *)purple_status_get_attr_string(status, "message");
 
 	if (!statstring) {
 		statstring = "";
@@ -1087,7 +1089,7 @@
 	/* Status strings are plain text. */
 	statstring = purple_markup_strip_html(statstring);
 
-	msim_set_status_code(session, status_code, g_strdup(statstring));
+	msim_set_status_code(session, status_code, statstring);
 }
 
 /** Go idle. */
@@ -1218,7 +1220,7 @@
 		if (uid == wanted_uid)
 		{
 			ret = g_strdup(name);
-            break;
+			break;
 		}
 	}
 
@@ -1795,11 +1797,13 @@
 	/* Destroy session if fatal. */
 	if (msim_msg_get(msg, "fatal")) {
 		purple_debug_info("msim", "fatal error, closing\n");
-		if (err == 260) {
-			/* Incorrect password */
-			session->gc->wants_to_die = TRUE;
-			if (!purple_account_get_remember_password(session->account))
-				purple_account_set_password(session->account, NULL);
+		switch (err) {
+			case 260: /* Incorrect password */
+			case 6: /* Logged in elsewhere */
+				session->gc->wants_to_die = TRUE;
+				if (!purple_account_get_remember_password(session->account))
+					purple_account_set_password(session->account, NULL);
+				break;
 		}
 		purple_connection_error(session->gc, full_errmsg);
 	} else {
@@ -1871,6 +1875,7 @@
 		purple_blist_add_buddy(buddy, NULL, NULL, NULL);
 
 		user = msim_get_user_from_buddy(buddy);
+		/* TODO: free user. memory leak? */
 
 		/* All buddies on list should have 'uid' integer associated with them. */
 		purple_blist_node_set_int(&buddy->node, "UserID", msim_msg_get_integer(msg, "f"));
@@ -2537,14 +2542,14 @@
 	display_name = headline = NULL;
 
 	/* Retrieve display name and/or headline, depending on user preference. */
-	if (purple_account_get_bool(session->account, "show_display_name", TRUE)) {
+	if (purple_account_get_bool(session->account, "show_headline", TRUE)) {
+		headline = user->headline;
+	}
+
+	if (purple_account_get_bool(session->account, "show_display_name", FALSE)) {
 		display_name = user->display_name;
 	} 
 
-	if (purple_account_get_bool(session->account, "show_headline", FALSE)) {
-		headline = user->headline;
-	}
-
 	/* Return appropriate combination of display name and/or headline, or neither. */
 
 	if (display_name && headline) {
@@ -2864,7 +2869,7 @@
 }
 
 /** Callbacks called by Purple, to access this plugin. */
-PurplePluginProtocolInfo prpl_info = {
+static PurplePluginProtocolInfo prpl_info = {
 	/* options */
 	  OPT_PROTO_USE_POINTSIZE        /* specify font size in sane point size */
 	| OPT_PROTO_MAIL_CHECK,
--- a/libpurple/protocols/myspace/user.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/myspace/user.c	Tue Oct 23 17:27:12 2007 +0000
@@ -161,7 +161,13 @@
 	}
 }
 
-/** Store a field of information about a buddy. */
+/** Store a field of information about a buddy. 
+ *
+ * @param key_str Key to store.
+ * @param value_str Value string, either user takes ownership of this string
+ *                  or it is freed if MsimUser doesn't store the string.
+ * @param user User to store data in. Existing data will be replaced.
+ * */
 void 
 msim_store_user_info_each(const gchar *key_str, gchar *value_str, MsimUser *user)
 {
@@ -175,21 +181,27 @@
 		/* Need to store in MsimUser, too? What if not on blist? */
 	} else if (g_str_equal(key_str, "Age")) {
 		user->age = atol(value_str);
+		g_free(value_str);
 	} else if (g_str_equal(key_str, "Gender")) {
-		user->gender = g_strdup(value_str);
+		g_free(user->gender);
+		user->gender = value_str;
 	} else if (g_str_equal(key_str, "Location")) {
-		user->location = g_strdup(value_str);
+		g_free(user->location);
+		user->location = value_str;
 	} else if (g_str_equal(key_str, "TotalFriends")) {
 		user->total_friends = atol(value_str);
 	} else if (g_str_equal(key_str, "DisplayName")) {
-		user->display_name = g_strdup(value_str);
+		g_free(user->display_name);
+		user->display_name = value_str;
 	} else if (g_str_equal(key_str, "BandName")) {
-		user->band_name = g_strdup(value_str);
+		g_free(user->band_name);
+		user->band_name = value_str;
 	} else if (g_str_equal(key_str, "SongName")) {
-		user->song_name = g_strdup(value_str);
+		g_free(user->song_name);
+		user->song_name = value_str;
 	} else if (g_str_equal(key_str, "UserName") || g_str_equal(key_str, "IMName") || g_str_equal(key_str, "NickName")) {
 		/* Ignore because PurpleBuddy knows this already */
-		;
+		g_free(value_str);
 	} else if (g_str_equal(key_str, "ImageURL") || g_str_equal(key_str, "AvatarURL")) {
 		if (user->temporary_user) {
 			/* This user will be destroyed soon; don't try to look up its image or avatar, 
@@ -201,7 +213,17 @@
 		
 		const gchar *previous_url;
 
-		user->image_url = g_strdup(value_str);
+		if (user->temporary_user) {
+			/* This user will be destroyed soon; don't try to look up its image or avatar, 
+			 * since that won't return immediately and we will end up accessing freed data.
+			 */
+			g_free(value_str);
+			return;
+		}
+		
+		g_free(user->image_url);
+
+		user->image_url = value_str;
 
 		/* Instead of showing 'no photo' picture, show nothing. */
 		if (g_str_equal(user->image_url, "http://x.myspace.com/images/no_pic.gif"))
@@ -222,14 +244,17 @@
 	} else if (g_str_equal(key_str, "LastImageUpdated")) {
 		/* TODO: use somewhere */
 		user->last_image_updated = atol(value_str);
+		g_free(value_str);
 	} else if (g_str_equal(key_str, "Headline")) {
-		user->headline = g_strdup(value_str);
+		g_free(user->headline);
+		user->headline = value_str;
 	} else {
 		/* TODO: other fields in MsimUser */
 		gchar *msg;
 
 		msg = g_strdup_printf("msim_store_user_info_each: unknown field %s=%s",
 				key_str, value_str);
+		g_free(value_str);
 
 		msim_unrecognized(NULL, NULL, msg);
 
@@ -299,7 +324,6 @@
 
 		value_str = msim_msg_get_string_from_element(elem);
 		msim_store_user_info_each(key_str, value_str, user);
-		g_free(value_str);
 	}
 
 	if (msim_msg_get_integer(msg, "dsn") == MG_OWN_IM_INFO_DSN &&
@@ -316,6 +340,7 @@
 	}
 
 	msim_msg_free(body);
+	g_free(username);
 
 	return TRUE;
 }
--- a/libpurple/protocols/myspace/zap.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/myspace/zap.c	Tue Oct 23 17:27:12 2007 +0000
@@ -41,15 +41,52 @@
 		types = g_list_append(types, attn);
 
 		/* TODO: icons for each zap */
+
+		/* Lots of comments for translators: */
+
+		/* Zap means "to strike suddenly and forcefully as if with a
+		 * projectile or weapon."  This term often has an electrical
+		 * connotation, for example, "he was zapped by electricity when
+		 * he put a fork in the toaster." */
 		_MSIM_ADD_NEW_ATTENTION(NULL, _("Zap"), _("%s has zapped you!"), _("Zapping %s..."));
+
+		/* Whack means "to hit or strike someone with a sharp blow" */
 		_MSIM_ADD_NEW_ATTENTION(NULL, _("Whack"), _("%s has whacked you!"), _("Whacking %s..."));
+
+		/* Torch means "to set on fire."  Don't worry, this doesn't
+		 * make a whole lot of sense in English, either.  Feel free
+		 * to translate it literally. */
 		_MSIM_ADD_NEW_ATTENTION(NULL, _("Torch"), _("%s has torched you!"), _("Torching %s..."));
+
+		/* Smooch means "to kiss someone, often enthusiastically" */
 		_MSIM_ADD_NEW_ATTENTION(NULL, _("Smooch"), _("%s has smooched you!"), _("Smooching %s..."));
+
+		/* A hug is a display of affection; wrapping your arms around someone */
 		_MSIM_ADD_NEW_ATTENTION(NULL, _("Hug"), _("%s has hugged you!"), _("Hugging %s..."));
+
+		/* Slap means "to hit someone with an open/flat hand" */
 		_MSIM_ADD_NEW_ATTENTION(NULL, _("Slap"), _("%s has slapped you!"), _("Slapping %s..."));
+
+		/* Goose means "to pinch someone on their butt" */
 		_MSIM_ADD_NEW_ATTENTION(NULL, _("Goose"), _("%s has goosed you!"), _("Goosing %s..."));
+
+		/* A high-five is when two people's hands slap each other
+		 * in the air above their heads.  It is done to celebrate
+		 * something, often a victory, or to congratulate someone. */
 		_MSIM_ADD_NEW_ATTENTION(NULL, _("High-five"), _("%s has high-fived you!"), _("High-fiving %s..."));
+
+		/* We're not entirely sure what the MySpace people mean by
+		 * this... but we think it's the equivalent of "prank."  Or, for
+		 * someone to perform a mischievous trick or practical joke. */
 		_MSIM_ADD_NEW_ATTENTION(NULL, _("Punk"), _("%s has punk'd you!"), _("Punking %s..."));
+
+		/* Raspberry is a slang term for the vibrating sound made
+		 * when you stick your tongue out of your mouth with your
+		 * lips closed and blow.  It is typically done when
+		 * gloating or bragging.  Nowadays it's a pretty silly
+		 * gesture, so it does not carry a harsh negative
+		 * connotation.  It is generally used in a playful tone
+		 * with friends. */
 		_MSIM_ADD_NEW_ATTENTION(NULL, _("Raspberry"), _("%s has raspberried you!"), _("Raspberrying %s..."));
 	}
 
--- a/libpurple/protocols/novell/novell.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/novell/novell.c	Tue Oct 23 17:27:12 2007 +0000
@@ -130,6 +130,8 @@
 		if (ret_code == NMERR_AUTHENTICATION_FAILED ||
 			ret_code == NMERR_CREDENTIALS_MISSING ||
 			ret_code == NMERR_PASSWORD_INVALID) {
+			if (!purple_account_get_remember_password(gc->account))
+				purple_account_set_password(gc->account, NULL);
 			gc->wants_to_die = TRUE;
 		}
 		purple_connection_error(gc, err);
@@ -2004,11 +2006,14 @@
 _evt_user_disconnect(NMUser * user, NMEvent * event)
 {
 	PurpleConnection *gc;
-
-	gc = purple_account_get_connection((PurpleAccount *) user->client_data);
+	PurpleAccount *account = user->client_data;
+
+	gc = purple_account_get_connection(account);
 	if (gc)
 	{
 		gc->wants_to_die = TRUE; /* we don't want to reconnect in this case */
+		if (!purple_account_get_remember_password(account))
+			purple_account_set_password(account, NULL);
 		purple_connection_error(gc, _("You have been logged out because you"
 									" logged in at another workstation."));
 	}
@@ -2799,7 +2804,7 @@
 	const char *text = NULL;
 
 	if (buddy == NULL)
-		return; 
+		return;
 
 	gc = purple_account_get_connection(buddy->account);
 	if (gc == NULL || (user = gc->proto_data) == NULL)
--- a/libpurple/protocols/oscar/flap_connection.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/oscar/flap_connection.c	Tue Oct 23 17:27:12 2007 +0000
@@ -382,6 +382,8 @@
 		gchar *tmp;
 		if (conn->disconnect_code == 0x0001) {
 			tmp = g_strdup(_("You have signed on from another location."));
+			if (!purple_account_get_remember_password(account))
+				purple_account_set_password(account, NULL);
 			od->gc->wants_to_die = TRUE;
 		} else if (conn->disconnect_reason == OSCAR_DISCONNECT_REMOTE_CLOSED)
 			tmp = g_strdup(_("Server closed the connection."));
--- a/libpurple/protocols/oscar/oscar.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/oscar/oscar.c	Tue Oct 23 17:27:12 2007 +0000
@@ -5575,6 +5575,8 @@
 			return "hiptop";
 		if (userinfo->capabilities & OSCAR_CAPABILITY_SECUREIM)
 			return "secure";
+		if (userinfo->icqinfo.status & AIM_ICQ_STATE_BIRTHDAY)
+			return "birthday";
 	}
 	return NULL;
 }
--- a/libpurple/protocols/qq/login_logout.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/qq/login_logout.c	Tue Oct 23 17:27:12 2007 +0000
@@ -480,6 +480,8 @@
 	switch (ret) {
 	case QQ_LOGIN_REPLY_PWD_ERROR:
 		gc->wants_to_die = TRUE;
+		if (!purple_account_get_remember_password(gc->account))
+			purple_account_set_password(gc->account, NULL);
 		purple_connection_error(gc, _("Incorrect password."));
 		break;
 	case QQ_LOGIN_REPLY_MISC_ERROR:
--- a/libpurple/protocols/simple/simple.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/simple/simple.c	Tue Oct 23 17:27:12 2007 +0000
@@ -696,7 +696,7 @@
 static void do_register_exp(struct simple_account_data *sip, int expire) {
 	char *uri, *to, *contact, *hdr;
 
-	/* Set our default expiration to 900, 
+	/* Set our default expiration to 900,
 	 * as done in the initialization of the simple_account_data
 	 * structure.
 	 */
@@ -1043,6 +1043,8 @@
 				if(sip->registrar.retries > SIMPLE_REGISTER_RETRY_MAX) {
 					purple_debug_info("simple", "Setting wants_to_die to true.\n");
 					sip->gc->wants_to_die = TRUE;
+					if (!purple_account_get_remember_password(sip->gc->account))
+						purple_account_set_password(sip->gc->account, NULL);
 					purple_connection_error(sip->gc, _("Incorrect password."));
 					return TRUE;
 				}
--- a/libpurple/protocols/yahoo/yahoo.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/protocols/yahoo/yahoo.c	Tue Oct 23 17:27:12 2007 +0000
@@ -202,6 +202,8 @@
 
 	if (pkt->service == YAHOO_SERVICE_LOGOFF && pkt->status == -1) {
 		gc->wants_to_die = TRUE;
+		if (!purple_account_get_remember_password(account))
+			purple_account_set_password(account, NULL);
 		purple_connection_error(gc, _("You have signed on from another location."));
 		return;
 	}
@@ -4090,12 +4092,12 @@
 {
 	return TRUE;
 }
-	
+
 gboolean yahoo_send_attention(PurpleConnection *gc, const char *username, guint type)
 {
 	PurpleConversation *c;
 
-	c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, 
+	c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
 			username, gc->account);
 
 	g_return_val_if_fail(c != NULL, FALSE);
@@ -4120,7 +4122,7 @@
 		attn->incoming_description = _("%s has buzzed you!");
 		attn->outgoing_description = _("Buzzing %s...");
 		list = g_list_append(list, attn);
-	} 
+	}
 
 	return list;
 }
--- a/libpurple/prpl.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/prpl.h	Tue Oct 23 17:27:12 2007 +0000
@@ -226,11 +226,17 @@
 	void (*tooltip_text)(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info, gboolean full);
 
 	/**
-	 * This must be implemented, and must add at least the offline
-	 * and online states.
+	 * Returns a list of #PurpleStatusType which exist for this account;
+	 * this must be implemented, and must add at least the offline and
+	 * online states.
 	 */
 	GList *(*status_types)(PurpleAccount *account);
 
+	/**
+	 * Returns a list of #PurpleMenuAction structs, which represent extra
+	 * actions to be shown in (for example) the right-click menu for @a
+	 * node.
+	 */
 	GList *(*blist_node_menu)(PurpleBlistNode *node);
 	GList *(*chat_info)(PurpleConnection *);
 	GHashTable *(*chat_info_defaults)(PurpleConnection *, const char *chat_name);
@@ -258,6 +264,10 @@
 
 	void (*set_info)(PurpleConnection *, const char *info);
 	unsigned int (*send_typing)(PurpleConnection *, const char *name, PurpleTypingState state);
+	/**
+	 * Should arrange for purple_notify_userinfo() to be called with
+	 * @a who's user info.
+	 */
 	void (*get_info)(PurpleConnection *, const char *who);
 	void (*set_status)(PurpleAccount *account, PurpleStatus *status);
 
@@ -287,8 +297,14 @@
 	/** new user registration */
 	void (*register_user)(PurpleAccount *);
 
-	/* get "chat buddy" info and away message */
+	/**
+	 * @deprecated Use #PurplePluginProtocolInfo.get_info instead.
+	 */
 	void (*get_cb_info)(PurpleConnection *, int, const char *who);
+	/**
+	 * @deprecated Use #PurplePluginProtocolInfo.get_cb_real_name and
+	 *             #PurplePluginProtocolInfo.status_text instead.
+	 */
 	void (*get_cb_away)(PurpleConnection *, int, const char *who);
 
 	/** save/store buddy's alias on server list/roster */
@@ -348,9 +364,12 @@
 	/* room list serialize */
 	char *(*roomlist_room_serialize)(PurpleRoomlistRoom *room);
 
-	/* Remove the user from the server. (This is only at the bottom to keep binary compatibility.)
-	 * The account can either be connected or disconnected. After the removal is finished,
-	 * the connection will stay open and has to be closed!
+	/** Remove the user from the server.  The account can either be
+	 * connected or disconnected. After the removal is finished, the
+	 * connection will stay open and has to be closed!
+	 */
+	/* This is here rather than next to register_user for API compatibility
+	 * reasons.
 	 */
 	void (*unregister_user)(PurpleAccount *, PurpleAccountUnregistrationCb cb, void *user_data);
 	
--- a/libpurple/request.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/request.h	Tue Oct 23 17:27:12 2007 +0000
@@ -266,7 +266,7 @@
  *
  * @param fields The fields list.
  *
- * @return A list of groups.
+ * @constreturn A list of groups.
  */
 GList *purple_request_fields_get_groups(const PurpleRequestFields *fields);
 
@@ -424,7 +424,7 @@
  *
  * @param group The group.
  *
- * @return The list of fields in the group.
+ * @constreturn The list of fields in the group.
  */
 GList *purple_request_field_group_get_fields(
 		const PurpleRequestFieldGroup *group);
@@ -836,7 +836,7 @@
  *
  * @param field The field.
  *
- * @return The list of labels.
+ * @constreturn The list of labels.
  */
 GList *purple_request_field_choice_get_labels(const PurpleRequestField *field);
 
--- a/libpurple/savedstatuses.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/savedstatuses.c	Tue Oct 23 17:27:12 2007 +0000
@@ -761,10 +761,13 @@
 {
 	GList *popular = NULL;
 	GList *cur;
-	int i;
+	unsigned int i;
 	PurpleSavedStatus *next;
 
-	/* Copy 'how_many' elements to a new list */
+	/* Copy 'how_many' elements to a new list. If 'how_many' is 0, then copy all of 'em. */
+	if (how_many == 0)
+		how_many = (unsigned int) -1;
+
 	i = 0;
 	cur = saved_statuses;
 	while ((i < how_many) && (cur != NULL))
@@ -773,7 +776,7 @@
 		if ((!purple_savedstatus_is_transient(next)
 			|| purple_savedstatus_get_message(next) != NULL))
 		{
-			popular = g_list_prepend(popular, cur->data);
+			popular = g_list_prepend(popular, next);
 			i++;
 		}
 		cur = cur->next;
--- a/libpurple/savedstatuses.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/savedstatuses.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file savedstatuses.h Saved Status API
  * @ingroup core
+ * @see @ref savedstatus-signals
  */
 
 /* purple
@@ -22,8 +23,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- * @see @ref savedstatus-signals
  */
 #ifndef _PURPLE_SAVEDSTATUSES_H_
 #define _PURPLE_SAVEDSTATUSES_H_
@@ -171,11 +170,8 @@
 /**
  * Returns the n most popular saved statuses.  "Popularity" is
  * determined by when the last time a saved_status was used and
- * how many times it has been used.  If the current status would
- * normally show up in this list, then it is omited and instead
- * the "how_many+1" saved status will appear in the list.  Also
- * transient statuses without messages are not included in the
- * list.
+ * how many times it has been used. Transient statuses without
+ * messages are not included in the list.
  *
  * @param how_many The maximum number of saved statuses
  *                 to return, or '0' to get all saved
--- a/libpurple/server.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/server.c	Tue Oct 23 17:27:12 2007 +0000
@@ -543,7 +543,7 @@
 				 PurpleMessageFlags flags, time_t mtime)
 {
 	PurpleAccount *account;
-	PurpleConversation *cnv;
+	PurpleConversation *conv;
 	char *message, *name;
 	char *angel, *buffy;
 	int plugin_return;
@@ -562,22 +562,19 @@
 	 * We should update the conversation window buttons and menu,
 	 * if it exists.
 	 */
-	cnv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, who, gc->account);
+	conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, who, gc->account);
 
 	/*
-	 * Plugin stuff. we pass a char ** but we don't want to pass what's
-	 * been given us by the prpls. So we create temp holders and pass
-	 * those instead. It's basically just to avoid segfaults.
+	 * Make copies of the message and the sender in case plugins want
+	 * to free these strings and replace them with a modifed version.
 	 */
-	/* TODO: MAX(message, BUF_LONG) is pretty ugly. */
-	buffy = g_malloc(MAX(strlen(msg) + 1, BUF_LONG));
-	strcpy(buffy, msg);
+	buffy = g_strdup(msg);
 	angel = g_strdup(who);
 
 	plugin_return = GPOINTER_TO_INT(
 		purple_signal_emit_return_1(purple_conversations_get_handle(),
 								  "receiving-im-msg", gc->account,
-								  &angel, &buffy, cnv, &flags));
+								  &angel, &buffy, conv, &flags));
 
 	if (!buffy || !angel || plugin_return) {
 		g_free(buffy);
@@ -589,21 +586,21 @@
 	message = buffy;
 
 	purple_signal_emit(purple_conversations_get_handle(), "received-im-msg", gc->account,
-					 name, message, cnv, flags);
+					 name, message, conv, flags);
 
 	/* search for conversation again in case it was created by received-im-msg handler */
-	if (cnv == NULL)
-		cnv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, name, gc->account);
+	if (conv == NULL)
+		conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, name, gc->account);
 
 	/*
 	 * XXX: Should we be setting this here, or relying on prpls to set it?
 	 */
 	flags |= PURPLE_MESSAGE_RECV;
 
-	if (cnv == NULL)
-		cnv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, name);
+	if (conv == NULL)
+		conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, name);
 
-	purple_conv_im_write(PURPLE_CONV_IM(cnv), NULL, message, flags, mtime);
+	purple_conv_im_write(PURPLE_CONV_IM(conv), NULL, message, flags, mtime);
 	g_free(message);
 
 	/*
@@ -670,7 +667,7 @@
 				{
 					serv_send_im(gc, name, away_msg, PURPLE_MESSAGE_AUTO_RESP);
 
-					purple_conv_im_write(PURPLE_CONV_IM(cnv), NULL, away_msg,
+					purple_conv_im_write(PURPLE_CONV_IM(conv), NULL, away_msg,
 									   PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_AUTO_RESP,
 									   mtime);
 				}
@@ -892,15 +889,10 @@
 		return;
 
 	/*
-	 * Plugin stuff. We pass a char ** but we don't want to pass what's
-	 * been given us by the prpls. so we create temp holders and pass those
-	 * instead. It's basically just to avoid segfaults. Of course, if the
-	 * data is binary, plugins don't see it. Bitch all you want; i really
-	 * don't want you to be dealing with it.
+	 * Make copies of the message and the sender in case plugins want
+	 * to free these strings and replace them with a modifed version.
 	 */
-	/* TODO: MAX(message, BUF_LONG) is pretty ugly. */
-	buffy = g_malloc(MAX(strlen(message) + 1, BUF_LONG));
-	strcpy(buffy, message);
+	buffy = g_strdup(message);
 	angel = g_strdup(who);
 
 	plugin_return = GPOINTER_TO_INT(
@@ -913,6 +905,7 @@
 		g_free(angel);
 		return;
 	}
+
 	who = angel;
 	message = buffy;
 
--- a/libpurple/sound.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/sound.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file sound.h Sound API
  * @ingroup core
+ * @see @ref sound-signals
  */
 
 /* purple
@@ -22,8 +23,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- * @see @ref sound-signals
  */
 #ifndef _PURPLE_SOUND_H_
 #define _PURPLE_SOUND_H_
--- a/libpurple/sslconn.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/sslconn.h	Tue Oct 23 17:27:12 2007 +0000
@@ -31,6 +31,7 @@
 
 #define PURPLE_SSL_DEFAULT_PORT 443
 
+/** Possible SSL errors. */
 typedef enum
 {
 	PURPLE_SSL_HANDSHAKE_FAILED = 1,
@@ -86,39 +87,48 @@
 typedef struct
 {
 	/** Initializes the SSL system provided.
-     *  @return TRUE if initialization succeeded
-     */
+	 *  @return @a TRUE if initialization succeeded
+	 *  @see purple_ssl_init
+	 */
 	gboolean (*init)(void);
-	/** Unloads the SSL system. Inverse of init. */
+	/** Unloads the SSL system. Inverse of PurpleSslOps::init.
+	 *  @see purple_ssl_uninit
+	 */
 	void (*uninit)(void);
-	/** Sets up the SSL connection for a PurpleSslConnection once
-     *  the TCP connection has been established */
+	/** Sets up the SSL connection for a #PurpleSslConnection once
+	 *  the TCP connection has been established
+	 *  @see purple_ssl_connect
+	 */
 	void (*connectfunc)(PurpleSslConnection *gsc);
 	/** Destroys the internal data of the SSL connection provided.
 	 *  Freeing gsc itself is left to purple_ssl_close()
-	 *
+	 *  @see purple_ssl_close
 	 */
 	void (*close)(PurpleSslConnection *gsc);
 	/** Reads data from a connection (like POSIX read())
-	 * @param gsc	Connection context
-	 * @param data	Pointer to buffer to drop data into
-	 * @param len	Maximum number of bytes to read
-	 * @return	Number of bytes actually written into the buffer, or <0 on error
+	 * @param gsc   Connection context
+	 * @param data  Pointer to buffer to drop data into
+	 * @param len   Maximum number of bytes to read
+	 * @return      Number of bytes actually written into @a data (which may be
+	 *              less than @a len), or <0 on error
+	 * @see purple_ssl_read
 	*/
 	size_t (*read)(PurpleSslConnection *gsc, void *data, size_t len);
 	/** Writes data to a connection (like POSIX send())
-	* @param gsc	Connection context
-	* @param data	Data buffer to send data from
-	* @param len	Number of bytes to send from buffer
-	* @return	The number of bytes written (may be less than len) or <0 on error
+	* @param gsc    Connection context
+	* @param data   Data buffer to send data from
+	* @param len    Number of bytes to send from buffer
+	* @return       The number of bytes written to @a data (may be less than
+	*               @a len) or <0 on error
+	* @see purple_ssl_write
 	*/
 	size_t (*write)(PurpleSslConnection *gsc, const void *data, size_t len);
 	/** Obtains the certificate chain provided by the peer
 	 *
 	 * @param gsc   Connection context
-	 * @return      A newly allocated list containing the certificates
-	 *              the peer provided.
-	 * @see PurpleCertificate
+	 * @return      A newly allocated list of #PurpleCertificate containing the
+	 *              certificates the peer provided.
+	 * @see purple_ssl_get_peer_certificates
 	 * @todo        Decide whether the ordering of certificates in this
 	 *              list can be guaranteed.
 	 */
@@ -141,12 +151,12 @@
 /**
  * Returns whether or not SSL is currently supported.
  *
- * @return TRUE if SSL is supported, or FALSE otherwise.
+ * @return @a TRUE if SSL is supported, or @a FALSE otherwise.
  */
 gboolean purple_ssl_is_supported(void);
 
 /**
- * Returns a human-readable string for an SSL error
+ * Returns a human-readable string for an SSL error.
  *
  * @param error      Error code
  * @return Human-readable error explanation
@@ -163,8 +173,8 @@
  * @param port       The destination port.
  * @param func       The SSL input handler function.
  * @param error_func The SSL error handler function.  This function
- *                   should NOT call purple_ssl_close().  In the event
- *                   of an error the PurpleSslConnection will be
+ *                   should <strong>NOT</strong> call purple_ssl_close().  In
+ *                   the event of an error the #PurpleSslConnection will be
  *                   destroyed for you.
  * @param data       User-defined data.
  *
@@ -177,7 +187,8 @@
 
 /**
  * Makes a SSL connection using an already open file descriptor.
- * DEPRECATED. Use purple_ssl_connect_with_host_fd instead.
+ *
+ * @deprecated Use purple_ssl_connect_with_host_fd() instead.
  *
  * @param account    The account making the connection.
  * @param fd         The file descriptor.
@@ -193,17 +204,19 @@
  									   void *data);
 
 /**
-  * Makes a SSL connection using an already open file descriptor.
-  *
-  * @param account    The account making the connection.
-  * @param fd         The file descriptor.
-  * @param func       The SSL input handler function.
-  * @param error_func The SSL error handler function.
-  * @param host       The hostname of the other peer (to verify the CN)
-  * @param data       User-defined data.
-  *
-  * @return The SSL connection handle.
-  */
+ * Makes a SSL connection using an already open file descriptor.
+ *
+ * @param account    The account making the connection.
+ * @param fd         The file descriptor.
+ * @param func       The SSL input handler function.
+ * @param error_func The SSL error handler function.
+ * @param host       The hostname of the other peer (to verify the CN)
+ * @param data       User-defined data.
+ *
+ * @return The SSL connection handle.
+ *
+ * @since 2.2.0
+ */
 PurpleSslConnection *purple_ssl_connect_with_host_fd(PurpleAccount *account, int fd,
                                            PurpleSslInputFunction func,
                                            PurpleSslErrorFunction error_func,
@@ -256,7 +269,9 @@
  * @param gsc    The SSL connection handle
  *
  * @return The peer certificate chain, in the order of certificate, issuer,
- *         issuer's issuer, etc. NULL if no certificates have been provided,
+ *         issuer's issuer, etc. @a NULL if no certificates have been provided,
+ *
+ * @since 2.2.0
  */
 GList * purple_ssl_get_peer_certificates(PurpleSslConnection *gsc);
 
--- a/libpurple/status.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/status.c	Tue Oct 23 17:27:12 2007 +0000
@@ -601,7 +601,7 @@
 	{
 		time_t current_time = time(NULL);
 		const char *buddy_alias = purple_buddy_get_alias(buddy);
-		char *tmp;
+		char *tmp, *logtmp;
 		PurpleLog *log;
 
 		if (old_status != NULL)
@@ -609,6 +609,10 @@
 			tmp = g_strdup_printf(_("%s changed status from %s to %s"), buddy_alias,
 			                      purple_status_get_name(old_status),
 			                      purple_status_get_name(new_status));
+			logtmp = g_strdup_printf(_("%s (%s) changed status from %s to %s"), buddy_alias, buddy->name,
+			                      purple_status_get_name(old_status),
+			                      purple_status_get_name(new_status));
+
 		}
 		else
 		{
@@ -618,11 +622,16 @@
 			{
 				tmp = g_strdup_printf(_("%s is now %s"), buddy_alias,
 				                      purple_status_get_name(new_status));
+				logtmp = g_strdup_printf(_("%s (%s) is now %s"), buddy_alias, buddy->name,
+				                      purple_status_get_name(new_status));
+
 			}
 			else
 			{
 				tmp = g_strdup_printf(_("%s is no longer %s"), buddy_alias,
 				                      purple_status_get_name(new_status));
+				logtmp = g_strdup_printf(_("%s (%s) is no longer %s"), buddy_alias, buddy->name,
+				                      purple_status_get_name(new_status));
 			}
 		}
 
@@ -630,10 +639,11 @@
 		if (log != NULL)
 		{
 			purple_log_write(log, PURPLE_MESSAGE_SYSTEM, buddy_alias,
-			               current_time, tmp);
+			               current_time, logtmp);
 		}
 
 		g_free(tmp);
+		g_free(logtmp);
 	}
 }
 
--- a/libpurple/status.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/status.h	Tue Oct 23 17:27:12 2007 +0000
@@ -121,7 +121,8 @@
 #define PURPLE_TUNE_TRACK	"tune_track"
 #define PURPLE_TUNE_TIME	"tune_time"
 #define PURPLE_TUNE_YEAR	"tune_year"
-#define PURPLE_TUNE_URL	"tune_url"
+#define PURPLE_TUNE_URL		"tune_url"
+#define PURPLE_TUNE_FULL	"tune_full"
 
 #ifdef __cplusplus
 extern "C" {
--- a/libpurple/util.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/util.c	Tue Oct 23 17:27:12 2007 +0000
@@ -68,7 +68,7 @@
 };
 
 static char *custom_user_dir = NULL;
-static char *home_dir = NULL;
+static char *user_dir = NULL;
 
 PurpleMenuAction *
 purple_menu_action_new(const char *label, PurpleCallback callback, gpointer data,
@@ -515,23 +515,6 @@
  * Date/Time Functions
  **************************************************************************/
 
-#ifdef _WIN32
-static long win32_get_tz_offset() {
-	TIME_ZONE_INFORMATION tzi;
-	DWORD ret;
-	long off = -1;
-
-	if ((ret = GetTimeZoneInformation(&tzi)) != TIME_ZONE_ID_INVALID)
-	{
-		off = -(tzi.Bias * 60);
-		if (ret == TIME_ZONE_ID_DAYLIGHT)
-			off -= tzi.DaylightBias * 60;
-	}
-
-	return off;
-}
-#endif
-
 const char *purple_get_tzoff_str(const struct tm *tm, gboolean iso)
 {
 	static char buf[7];
@@ -546,7 +529,7 @@
 		g_return_val_if_reached("");
 
 #ifdef _WIN32
-	if ((off = win32_get_tz_offset()) == -1)
+	if ((off = wpurple_get_tz_offset()) == -1)
 		return "";
 #else
 # ifdef HAVE_TM_GMTOFF
@@ -854,7 +837,7 @@
 #endif
 
 #ifdef _WIN32
-				if ((sys_tzoff = win32_get_tz_offset()) == -1)
+				if ((sys_tzoff = wpurple_get_tz_offset()) == -1)
 					tzoff = PURPLE_NO_TZ_OFF;
 				else
 					tzoff += sys_tzoff;
@@ -2465,10 +2448,10 @@
 {
 	if (custom_user_dir != NULL)
 		return custom_user_dir;
-	else if (!home_dir)
-		home_dir = g_build_filename(purple_home_dir(), ".purple", NULL);
-
-	return home_dir;
+	else if (!user_dir)
+		user_dir = g_build_filename(purple_home_dir(), ".purple", NULL);
+
+	return user_dir;
 }
 
 void purple_util_set_user_dir(const char *dir)
--- a/libpurple/win32/win32dep.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/win32/win32dep.c	Tue Oct 23 17:27:12 2007 +0000
@@ -575,6 +575,22 @@
 	libpurpledll_hInstance = NULL;
 }
 
+long
+wpurple_get_tz_offset() {
+	TIME_ZONE_INFORMATION tzi;
+	DWORD ret;
+	long off = -1;
+
+	if ((ret = GetTimeZoneInformation(&tzi)) != TIME_ZONE_ID_INVALID)
+	{
+		off = -(tzi.Bias * 60);
+		if (ret == TIME_ZONE_ID_DAYLIGHT)
+			off -= tzi.DaylightBias * 60;
+	}
+
+	return off;
+}
+
 /* DLL initializer */
 /* suppress gcc "no previous prototype" warning */
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved);
--- a/libpurple/win32/win32dep.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/win32/win32dep.h	Tue Oct 23 17:27:12 2007 +0000
@@ -60,6 +60,7 @@
 void wpurple_init(void);
 void wpurple_cleanup(void);
 
+long wpurple_get_tz_offset(void);
 
 /*
  *  MACROS
--- a/libpurple/xmlnode.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/libpurple/xmlnode.h	Tue Oct 23 17:27:12 2007 +0000
@@ -129,7 +129,7 @@
  *
  * @param node The node to get data from.
  *
- * @return The data from the node.  This data is in raw escaped format.
+ * @return The data from the node or NULL. This data is in raw escaped format.
  *         You must g_free this string when finished using it.
  */
 char *xmlnode_get_data(xmlnode *node);
--- a/pidgin/eggtrayicon.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/eggtrayicon.c	Tue Oct 23 17:27:12 2007 +0000
@@ -23,7 +23,6 @@
 
 #include "eggtrayicon.h"
 
-#include <gdk/gdkx.h>
 #include <X11/Xatom.h>
 
 #define _(x) x
--- a/pidgin/gtkaccount.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtkaccount.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file gtkaccount.h GTK+ Account Editor UI
  * @ingroup pidgin
+ * @see @ref gtkaccount-signals
  */
 
 /* pidgin
--- a/pidgin/gtkblist.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtkblist.c	Tue Oct 23 17:27:12 2007 +0000
@@ -88,6 +88,8 @@
 	GtkWidget *group_combo;
 	GtkWidget *entries_box;
 	GtkSizeGroup *sg;
+	GtkWidget *autojoin;
+	GtkWidget *persistent;
 
 	GList *entries;
 
@@ -138,13 +140,23 @@
 static void redo_buddy_list(PurpleBuddyList *list, gboolean remove, gboolean rerender);
 static void pidgin_blist_collapse_contact_cb(GtkWidget *w, PurpleBlistNode *node);
 static char *pidgin_get_group_title(PurpleBlistNode *gnode, gboolean expanded);
-
-struct _pidgin_blist_node {
+static void pidgin_blist_expand_contact_cb(GtkWidget *w, PurpleBlistNode *node);
+
+typedef enum {
+	PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE    =  1 << 0,  /* Whether there's pending message in a conversation */
+} PidginBlistNodeFlags;
+
+typedef struct _pidgin_blist_node {
 	GtkTreeRowReference *row;
 	gboolean contact_expanded;
 	gboolean recent_signonoff;
 	gint recent_signonoff_timer;
-};
+	struct {
+		PurpleConversation *conv;
+		time_t last_message;          /* timestamp for last displayed message */
+		PidginBlistNodeFlags flags;
+	} conv;
+} PidginBlistNode;
 
 static char dim_grey_string[8] = "";
 static char *dim_grey()
@@ -306,12 +318,36 @@
 	serv_send_file(b->account->gc, b->name, NULL);
 }
 
+static void gtk_blist_menu_move_to_cb(GtkWidget *w, PurpleBlistNode *node)
+{
+	PurpleGroup *group = g_object_get_data(G_OBJECT(w), "groupnode");
+	purple_blist_add_contact((PurpleContact *)node, group, NULL);
+
+}
+
 static void gtk_blist_menu_autojoin_cb(GtkWidget *w, PurpleChat *chat)
 {
 	purple_blist_node_set_bool((PurpleBlistNode*)chat, "gtk-autojoin",
 			gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)));
 }
 
+static void gtk_blist_menu_persistent_cb(GtkWidget *w, PurpleChat *chat)
+{
+	purple_blist_node_set_bool((PurpleBlistNode*)chat, "gtk-persistent",
+			gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)));
+}
+
+static PurpleConversation *
+find_conversation_with_buddy(PurpleBuddy *buddy)
+{
+	PidginBlistNode *ui = buddy->node.ui_data;
+	if (ui)
+		return ui->conv.conv;
+	return purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
+									     purple_buddy_get_name(buddy),
+									     purple_buddy_get_account(buddy));
+}
+
 static void gtk_blist_join_chat(PurpleChat *chat)
 {
 	PurpleConversation *conv;
@@ -395,6 +431,105 @@
 }
 #endif
 
+static void
+gtk_blist_do_personize(GList *merges)
+{
+	PurpleBlistNode *contact = NULL;
+	int max = 0;
+	GList *tmp;
+
+	/* First, we find the contact to merge the rest of the buddies into.
+ 	 * This will be the contact with the most buddies in it; ties are broken
+ 	 * by which contact is higher in the list
+ 	 */
+	for (tmp = merges; tmp; tmp = tmp->next) {
+		PurpleBlistNode *node = tmp->data;
+		PurpleBlistNode *b;
+		int i = 0;
+
+		if (node->type == PURPLE_BLIST_BUDDY_NODE)
+			node = node->parent;
+
+		if (node->type != PURPLE_BLIST_CONTACT_NODE)
+			continue;
+		
+
+		for (b = node->child; b; b = b->next)
+			i++;
+		if (i > max) {
+			contact = node;
+			max = i;
+		}
+	}
+
+	if (contact == NULL)
+		return;
+
+	/* Merge all those buddies into this contact */
+	for (tmp = merges; tmp; tmp = tmp->next) {
+		PurpleBlistNode *node = tmp->data;
+		if (node->type == PURPLE_BLIST_BUDDY_NODE)
+			node = node->parent;
+
+		if (node == contact)
+			continue;
+
+		purple_blist_merge_contact((PurpleContact *)node, contact);
+	}
+
+	/* And show the expanded contact, so the people know what's going on */
+	pidgin_blist_expand_contact_cb(NULL, contact);
+	g_list_free(merges);
+}
+
+static void
+gtk_blist_auto_personize(PurpleBlistNode *group, const char *alias)
+{
+	PurpleBlistNode *contact;
+	PurpleBlistNode *buddy;
+	GList *merges = NULL;
+	int i = 0;
+	char *a = g_utf8_casefold(alias, -1);
+
+	for (contact = group->child; contact; contact = contact->next) {
+		char *node_alias;
+		if (contact->type != PURPLE_BLIST_CONTACT_NODE)
+			continue;
+
+		node_alias = g_utf8_casefold(purple_contact_get_alias((PurpleContact *)contact), -1);
+		if (node_alias && !g_utf8_collate(node_alias, a)) {
+			merges = g_list_append(merges, contact);
+			i++;
+			g_free(node_alias);
+			continue;
+		}
+		g_free(node_alias);
+
+		for (buddy = contact->child; buddy; buddy = buddy->next) {
+			if (buddy->type != PURPLE_BLIST_BUDDY_NODE)
+				continue;
+
+			node_alias = g_utf8_casefold(purple_buddy_get_alias((PurpleBuddy *)buddy), -1);
+			if (node_alias && !g_utf8_collate(node_alias, a)) {
+				merges = g_list_append(merges, buddy);
+				i++;
+			}
+			g_free(node_alias);
+		}
+	}
+	g_free(a);
+	
+	if (i > 1)
+	{
+		char *msg = g_strdup_printf(ngettext("You have %d contact named %s. Would you like to merge them?", "You currently have %d contacts named %s. Would you like to merge them?", i), i, alias);
+		purple_request_action(NULL, NULL, msg, _("Merging these contacts will cause them to share a single entry on the buddy list and use a single conversation window. "
+							 "You can separate them again by choosing 'Expand' from the contact's context menu"), 0, NULL, NULL, NULL,
+				      merges, 2, _("_Merge"), PURPLE_CALLBACK(gtk_blist_do_personize), _("_Cancel"), PURPLE_CALLBACK(g_list_free));
+		g_free(msg);
+	} else
+		g_list_free(merges);
+}
+
 static void gtk_blist_renderer_edited_cb(GtkCellRendererText *text_rend, char *arg1,
 					 char *arg2, PurpleBuddyList *list)
 {
@@ -421,13 +556,14 @@
 				PurpleContact *contact = (PurpleContact *)node;
 				struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data;
 
-				if (contact->alias || gtknode->contact_expanded)
+				if (contact->alias || gtknode->contact_expanded) {
 					purple_blist_alias_contact(contact, arg2);
-				else
-				{
+					gtk_blist_auto_personize(node->parent, arg2);
+				} else {
 					PurpleBuddy *buddy = purple_contact_get_priority_buddy(contact);
 					purple_blist_alias_buddy(buddy, arg2);
 					serv_alias_buddy(buddy);
+					gtk_blist_auto_personize(node->parent, arg2);
 				}
 			}
 			break;
@@ -435,6 +571,7 @@
 		case PURPLE_BLIST_BUDDY_NODE:
 			purple_blist_alias_buddy((PurpleBuddy*)node, arg2);
 			serv_alias_buddy((PurpleBuddy *)node);
+			gtk_blist_auto_personize(node->parent->parent, arg2);
 			break;
 		case PURPLE_BLIST_GROUP_NODE:
 			dest = purple_find_group(arg2);
@@ -525,6 +662,26 @@
 	}
 }
 
+static void gtk_blist_menu_showoffline_cb(GtkWidget *w, PurpleBlistNode *node)
+{
+	if (PURPLE_BLIST_NODE_IS_BUDDY(node))
+	{
+		purple_blist_node_set_bool(node, "show_offline",
+		                           !purple_blist_node_get_bool(node, "show_offline"));
+	}
+	else if (PURPLE_BLIST_NODE_IS_CONTACT(node))
+	{
+		PurpleBlistNode *bnode;
+		gboolean setting = !purple_blist_node_get_bool(node, "show_offline");
+
+		purple_blist_node_set_bool(node, "show_offline", setting);
+		for (bnode = node->child; bnode != NULL; bnode = bnode->next) {
+			purple_blist_node_set_bool(bnode, "show_offline", setting);
+		}
+	}
+	pidgin_blist_update(purple_get_blist(), node);
+}
+
 static void gtk_blist_show_systemlog_cb()
 {
 	pidgin_syslog_show();
@@ -1119,17 +1276,49 @@
 	g_list_free(ll);
 }
 
+
+
+static void
+pidgin_append_blist_node_move_to_menu(GtkWidget *menu, PurpleBlistNode *node)
+{
+	GtkWidget *submenu;
+	GtkWidget *menuitem;
+	PurpleBlistNode *group;
+
+	menuitem = gtk_menu_item_new_with_label(_("Move to"));
+	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
+	gtk_widget_show(menuitem);
+
+	submenu = gtk_menu_new();
+	gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
+
+	for (group = purple_blist_get_root(); group; group = group->next) {
+		if (group->type != PURPLE_BLIST_GROUP_NODE)
+			continue;
+		if (group == node->parent)
+			continue;
+		menuitem = pidgin_new_item_from_stock(submenu, purple_group_get_name((PurpleGroup *)group), NULL,
+						      G_CALLBACK(gtk_blist_menu_move_to_cb), node, 0, 0, NULL);
+		g_object_set_data(G_OBJECT(menuitem), "groupnode", group);
+	}
+	gtk_widget_show_all(submenu);
+}
+
 void
 pidgin_blist_make_buddy_menu(GtkWidget *menu, PurpleBuddy *buddy, gboolean sub) {
 	PurplePluginProtocolInfo *prpl_info;
 	PurpleContact *contact;
+	PurpleBlistNode *node;
 	gboolean contact_expanded = FALSE;
+	gboolean show_offline = FALSE;
 
 	g_return_if_fail(menu);
 	g_return_if_fail(buddy);
 
 	prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(buddy->account->gc->prpl);
 
+	node = (PurpleBlistNode*)buddy;
+
 	contact = purple_buddy_get_contact(buddy);
 	if (contact) {
 		contact_expanded = ((struct _pidgin_blist_node *)(((PurpleBlistNode*)contact)->ui_data))->contact_expanded;
@@ -1145,17 +1334,17 @@
 		if (!prpl_info->can_receive_file ||
 			prpl_info->can_receive_file(buddy->account->gc, buddy->name))
 		{
-			pidgin_new_item_from_stock(menu, _("_Send File"),
+			pidgin_new_item_from_stock(menu, _("_Send File..."),
 									 PIDGIN_STOCK_TOOLBAR_SEND_FILE,
 									 G_CALLBACK(gtk_blist_menu_send_file_cb),
 									 buddy, 0, 0, NULL);
 		}
 	}
 
-	pidgin_new_item_from_stock(menu, _("Add Buddy _Pounce"), NULL,
+	pidgin_new_item_from_stock(menu, _("Add Buddy _Pounce..."), NULL,
 			G_CALLBACK(gtk_blist_menu_bp_cb), buddy, 0, 0, NULL);
 
-	if (((PurpleBlistNode*)buddy)->parent && ((PurpleBlistNode*)buddy)->parent->child->next && 
+	if (node->parent && node->parent->child->next && 
 	      !sub && !contact_expanded) {
 		pidgin_new_item_from_stock(menu, _("View _Log"), NULL,
 				G_CALLBACK(gtk_blist_menu_showlog_cb),
@@ -1165,15 +1354,22 @@
 				G_CALLBACK(gtk_blist_menu_showlog_cb), buddy, 0, 0, NULL);
 	}
 
-
-	pidgin_append_blist_node_proto_menu(menu, buddy->account->gc,
-										  (PurpleBlistNode *)buddy);
-	pidgin_append_blist_node_extended_menu(menu, (PurpleBlistNode *)buddy);
-
-	if (((PurpleBlistNode*)buddy)->parent && ((PurpleBlistNode*)buddy)->parent->child->next && 
+	if (!(purple_blist_node_get_flags(node) & PURPLE_BLIST_NODE_FLAG_NO_SAVE)) {
+		show_offline = purple_blist_node_get_bool(node, "show_offline");
+		pidgin_new_item_from_stock(menu, show_offline ? _("Hide when offline") : _("Show when offline"),
+				NULL, G_CALLBACK(gtk_blist_menu_showoffline_cb), node, 0, 0, NULL);
+	}
+
+	pidgin_append_blist_node_proto_menu(menu, buddy->account->gc, node);
+	pidgin_append_blist_node_extended_menu(menu, node);
+
+	if (!contact_expanded)
+		pidgin_append_blist_node_move_to_menu(menu, (PurpleBlistNode *)contact);
+
+	if (node->parent && node->parent->child->next && 
               !sub && !contact_expanded) {
 		pidgin_separator(menu);
-		pidgin_append_blist_node_privacy_menu(menu, (PurpleBlistNode *)buddy);
+		pidgin_append_blist_node_privacy_menu(menu, node);
 		pidgin_new_item_from_stock(menu, _("_Alias..."), PIDGIN_STOCK_ALIAS,
 				G_CALLBACK(gtk_blist_menu_alias_cb),
 				contact, 0, 0, NULL);
@@ -1182,7 +1378,7 @@
 				contact, 0, 0, NULL);
 	} else if (!sub || contact_expanded) {
 		pidgin_separator(menu);
-		pidgin_append_blist_node_privacy_menu(menu, (PurpleBlistNode *)buddy);
+		pidgin_append_blist_node_privacy_menu(menu, node);
 		pidgin_new_item_from_stock(menu, _("_Alias..."), PIDGIN_STOCK_ALIAS,
 				G_CALLBACK(gtk_blist_menu_alias_cb), buddy, 0, 0, NULL);
 		pidgin_new_item_from_stock(menu, _("_Remove"), GTK_STOCK_REMOVE,
@@ -1235,10 +1431,10 @@
 	GtkWidget *item;
 
 	menu = gtk_menu_new();
-	item = pidgin_new_item_from_stock(menu, _("Add a _Buddy"), GTK_STOCK_ADD,
+	item = pidgin_new_item_from_stock(menu, _("Add _Buddy..."), GTK_STOCK_ADD,
 				 G_CALLBACK(pidgin_blist_add_buddy_cb), node, 0, 0, NULL);
 	gtk_widget_set_sensitive(item, purple_connections_get_all() != NULL);
-	item = pidgin_new_item_from_stock(menu, _("Add a C_hat"), GTK_STOCK_ADD,
+	item = pidgin_new_item_from_stock(menu, _("Add C_hat..."), GTK_STOCK_ADD,
 				 G_CALLBACK(pidgin_blist_add_chat_cb), node, 0, 0, NULL);
 	gtk_widget_set_sensitive(item, pidgin_blist_joinchat_is_showable());
 	pidgin_new_item_from_stock(menu, _("_Delete Group"), GTK_STOCK_REMOVE,
@@ -1256,16 +1452,19 @@
 create_chat_menu(PurpleBlistNode *node, PurpleChat *c)
 {
 	GtkWidget *menu;
-	gboolean autojoin;
+	gboolean autojoin, persistent;
 
 	menu = gtk_menu_new();
 	autojoin = (purple_blist_node_get_bool(node, "gtk-autojoin") ||
 			(purple_blist_node_get_string(node, "gtk-autojoin") != NULL));
+	persistent = purple_blist_node_get_bool(node, "gtk-persistent");
 
 	pidgin_new_item_from_stock(menu, _("_Join"), PIDGIN_STOCK_CHAT,
 			G_CALLBACK(gtk_blist_menu_join_cb), node, 0, 0, NULL);
 	pidgin_new_check_item(menu, _("Auto-Join"),
 			G_CALLBACK(gtk_blist_menu_autojoin_cb), node, autojoin);
+	pidgin_new_check_item(menu, _("Persistent"),
+			G_CALLBACK(gtk_blist_menu_persistent_cb), node, persistent);
 	pidgin_new_item_from_stock(menu, _("View _Log"), NULL,
 			G_CALLBACK(gtk_blist_menu_showlog_cb), node, 0, 0, NULL);
 
@@ -1307,7 +1506,6 @@
 				 node, 0, 0, NULL);
 
 	pidgin_append_blist_node_extended_menu(menu, node);
-
 	return menu;
 }
 
@@ -2872,7 +3070,7 @@
 	{ N_("/Buddies/Get User _Info..."), "<CTL>I", pidgin_dialogs_info, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_USER_INFO },
 	{ N_("/Buddies/View User _Log..."), "<CTL>L", pidgin_dialogs_log, 0, "<Item>", NULL },
 	{ "/Buddies/sep1", NULL, NULL, 0, "<Separator>", NULL },
-	{ N_("/Buddies/Show"), NULL, NULL, 0, "<Branch>", NULL},
+	{ N_("/Buddies/Sh_ow"), NULL, NULL, 0, "<Branch>", NULL},
 	{ N_("/Buddies/Show/_Offline Buddies"), NULL, pidgin_blist_edit_mode_cb, 1, "<CheckItem>", NULL },
 	{ N_("/Buddies/Show/_Empty Groups"), NULL, pidgin_blist_show_empty_groups_cb, 1, "<CheckItem>", NULL },
 	{ N_("/Buddies/Show/Buddy _Details"), NULL, pidgin_blist_buddy_details_cb, 1, "<CheckItem>", NULL },
@@ -2888,7 +3086,7 @@
 
 	/* Accounts menu */
 	{ N_("/_Accounts"), NULL, NULL, 0, "<Branch>", NULL },
-	{ N_("/Accounts/Add\\/Edit"), "<CTL>A", pidgin_accounts_window_show, 0, "<Item>", NULL },
+	{ N_("/Accounts/Manage"), "<CTL>A", pidgin_accounts_window_show, 0, "<Item>", NULL },
 
 	/* Tools */
 	{ N_("/_Tools"), NULL, NULL, 0, "<Branch>", NULL },
@@ -3145,8 +3343,6 @@
 	GdkPixbuf *ret;
 	PurplePresence *p;
 
-
-
 	if(PURPLE_BLIST_NODE_IS_CONTACT(node)) {
 		if(!gtknode->contact_expanded) {
 			buddy = purple_contact_get_priority_buddy((PurpleContact*)node);
@@ -3188,6 +3384,13 @@
 		return ret;
 	}
 
+	if (purple_status_get_attr_string(purple_presence_get_active_status(p), PURPLE_TUNE_TITLE)) {
+		path = g_build_filename(DATADIR, "pixmaps", "pidgin", "emblems", "16", "music.png", NULL);
+		ret = gdk_pixbuf_new_from_file(path, NULL);
+		g_free(path);
+		return ret;
+	}
+
 	prpl = purple_find_prpl(purple_account_get_protocol_id(buddy->account));
 	if (!prpl)
 		return NULL;
@@ -3261,17 +3464,17 @@
 	}
 
 	if(buddy) {
-	  	PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
-									     purple_buddy_get_name(buddy),
-									     purple_buddy_get_account(buddy));
+	  	PurpleConversation *conv = find_conversation_with_buddy(buddy);
 		PurplePresence *p;
 		gboolean trans;
 
 		if(conv != NULL) {
 			PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
-			if((gtkconv == NULL || pidgin_conv_is_hidden(gtkconv)) && size == PIDGIN_STATUS_ICON_SMALL) {
-				return gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_MESSAGE,
-							       icon_size, "GtkTreeView");
+			if (gtkconv == NULL && size == PIDGIN_STATUS_ICON_SMALL) {
+				PidginBlistNode *ui = buddy->node.ui_data;
+				if (ui == NULL || (ui->conv.flags & PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE))
+					return gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview),
+							PIDGIN_STOCK_STATUS_MESSAGE, icon_size, "GtkTreeView");
 			}
 		}
 
@@ -3327,16 +3530,17 @@
 	struct _pidgin_blist_node *gtkcontactnode = NULL;
 	char *idletime = NULL, *statustext = NULL;
 	time_t t;
-	PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
-								     purple_buddy_get_name(b),
-								     purple_buddy_get_account(b));
-	PidginConversation *gtkconv;
+	PurpleConversation *conv = find_conversation_with_buddy(b);
 	gboolean hidden_conv = FALSE;
 
-	if(conv != NULL) {
-		gtkconv = PIDGIN_CONVERSATION(conv);
-		if(gtkconv == NULL || pidgin_conv_is_hidden(gtkconv)) {
-			hidden_conv = TRUE;
+	if (conv != NULL) {
+		PidginBlistNode *ui = b->node.ui_data;
+		if (ui) {
+			if (ui->conv.flags & PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE)
+				hidden_conv = TRUE;
+		} else {
+			if (PIDGIN_CONVERSATION(conv) == NULL)
+				hidden_conv = TRUE;
 		}
 	}
 
@@ -3673,13 +3877,26 @@
 {
 	static GtkWidget *menu = NULL;
 	GList *convs = NULL;
+	GList *chats, *ims;
 
 	if (menu) {
 		gtk_widget_destroy(menu);
 		menu = NULL;
 	}
 
-	convs = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM, PIDGIN_UNSEEN_TEXT, TRUE, 0);
+	ims = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM,
+				PIDGIN_UNSEEN_TEXT, FALSE, 0);
+
+	chats = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_CHAT,
+				PIDGIN_UNSEEN_NICK, FALSE, 0);
+
+	if(ims && chats)
+		convs = g_list_concat(ims, chats);
+	else if(ims && !chats)
+		convs = ims;
+	else if(!ims && chats)
+		convs = chats;
+
 	if (!convs)
 		/* no conversations added, don't show the menu */
 		return;
@@ -3701,7 +3918,11 @@
 	switch (event->button) {
 		case 1:
 			convs = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM,
-															PIDGIN_UNSEEN_TEXT, TRUE, 1);
+							PIDGIN_UNSEEN_TEXT, FALSE, 1);
+
+			if(!convs)
+				convs = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_CHAT,
+								PIDGIN_UNSEEN_NICK, FALSE, 1);
 			if (convs) {
 				pidgin_conv_present_conversation((PurpleConversation*)convs->data);
 				g_list_free(convs);
@@ -3719,6 +3940,7 @@
                         PidginBuddyList *gtkblist)
 {
 	GList *convs = NULL;
+	GList *ims, *chats;
 	GList *l = NULL;
 
 	if (type != PURPLE_CONV_UPDATE_UNSEEN)
@@ -3735,7 +3957,19 @@
 		gtkblist->menutrayicon = NULL;
 	}
 
-	convs = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM, PIDGIN_UNSEEN_TEXT, TRUE, 0);
+	ims = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM,
+				PIDGIN_UNSEEN_TEXT, FALSE, 0);
+
+	chats = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_CHAT,
+				PIDGIN_UNSEEN_NICK, FALSE, 0);
+
+	if(ims && chats)
+		convs = g_list_concat(ims, chats);
+	else if(ims && !chats)
+		convs = ims;
+	else if(!ims && chats)
+		convs = chats;
+
 	if (convs) {
 		GtkWidget *img = NULL;
 		GString *tooltip_text = NULL;
@@ -3743,14 +3977,17 @@
 		tooltip_text = g_string_new("");
 		l = convs;
 		while (l != NULL) {
-			if (PIDGIN_IS_PIDGIN_CONVERSATION(l->data)) {
-				PidginConversation *gtkconv = PIDGIN_CONVERSATION((PurpleConversation *)l->data);
-
-				g_string_append_printf(tooltip_text,
-						ngettext("%d unread message from %s\n", "%d unread messages from %s\n", gtkconv->unseen_count),
-						gtkconv->unseen_count,
-						gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)));
-			}
+			int count = 0;
+			PidginConversation *gtkconv = PIDGIN_CONVERSATION((PurpleConversation *)l->data);
+
+			if(gtkconv)
+				count = gtkconv->unseen_count;
+			else if(purple_conversation_get_data(l->data, "unseen-count"))
+				count = GPOINTER_TO_INT(purple_conversation_get_data(l->data, "unseen-count"));
+
+			g_string_append_printf(tooltip_text,
+					ngettext("%d unread message from %s\n", "%d unread messages from %s\n", count),
+					count, purple_conversation_get_title(l->data));
 			l = l->next;
 		}
 		if(tooltip_text->len > 0) {
@@ -3778,6 +4015,88 @@
 	conversation_updated_cb(conv, PURPLE_CONV_UPDATE_UNSEEN, gtkblist);
 }
 
+static void
+conversation_deleted_update_ui_cb(PurpleConversation *conv, struct _pidgin_blist_node *ui)
+{
+	if (ui->conv.conv != conv)
+		return;
+	ui->conv.conv = NULL;
+	ui->conv.flags = 0;
+	ui->conv.last_message = 0;
+}
+
+static void
+written_msg_update_ui_cb(PurpleAccount *account, const char *who, const char *message,
+		PurpleConversation *conv, PurpleMessageFlags flag, PurpleBlistNode *node)
+{
+	PidginBlistNode *ui = node->ui_data;
+	if (ui->conv.conv != conv || PIDGIN_CONVERSATION(conv) ||
+			!(flag & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV)))
+		return;
+	ui->conv.flags |= PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE;
+	ui->conv.last_message = time(NULL);    /* XXX: for lack of better data */
+	pidgin_blist_update(purple_get_blist(), node);
+}
+
+static void
+displayed_msg_update_ui_cb(PurpleAccount *account, const char *who, const char *message,
+		PurpleConversation *conv, PurpleMessageFlags flag, PurpleBlistNode *node)
+{
+	PidginBlistNode *ui = node->ui_data;
+	if (ui->conv.conv != conv)
+		return;
+	ui->conv.flags &= ~PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE;
+	pidgin_blist_update(purple_get_blist(), node);
+}
+
+static void
+conversation_created_cb(PurpleConversation *conv, PidginBuddyList *gtkblist)
+{
+	switch (conv->type) {
+		case PURPLE_CONV_TYPE_IM:
+			{
+				GSList *buddies = purple_find_buddies(conv->account, conv->name);
+				while (buddies) {
+					PurpleBlistNode *buddy = buddies->data;
+					struct _pidgin_blist_node *ui = buddy->ui_data;
+					buddies = g_slist_delete_link(buddies, buddies);
+					if (!ui)
+						continue;
+					ui->conv.conv = conv;
+					ui->conv.flags = 0;
+					ui->conv.last_message = 0;
+					purple_signal_connect(purple_conversations_get_handle(), "deleting-conversation",
+							ui, PURPLE_CALLBACK(conversation_deleted_update_ui_cb), ui);
+					purple_signal_connect(purple_conversations_get_handle(), "wrote-im-msg",
+							ui, PURPLE_CALLBACK(written_msg_update_ui_cb), buddy);
+					purple_signal_connect(pidgin_conversations_get_handle(), "displayed-im-msg",
+							ui, PURPLE_CALLBACK(displayed_msg_update_ui_cb), buddy);
+				}
+			}
+		case PURPLE_CONV_TYPE_CHAT:
+			{
+				PurpleChat *chat = purple_blist_find_chat(conv->account, conv->name);
+				struct _pidgin_blist_node *ui;
+				if (!chat)
+					break;
+				ui = chat->node.ui_data;
+				if (!ui)
+					break;
+				ui->conv.conv = conv;
+				ui->conv.flags = 0;
+				ui->conv.last_message = 0;
+				purple_signal_connect(purple_conversations_get_handle(), "deleting-conversation",
+						ui, PURPLE_CALLBACK(conversation_deleted_update_ui_cb), ui);
+				purple_signal_connect(purple_conversations_get_handle(), "wrote-chat-msg",
+						ui, PURPLE_CALLBACK(written_msg_update_ui_cb), chat);
+				purple_signal_connect(pidgin_conversations_get_handle(), "displayed-chat-msg",
+						ui, PURPLE_CALLBACK(displayed_msg_update_ui_cb), chat);
+			}
+		default:
+			break;
+	}
+}
+
 /**********************************************************************************
  * Public API Functions                                                           *
  **********************************************************************************/
@@ -4341,7 +4660,7 @@
 	tmp = g_strdup_printf(_("<span weight='bold' size='larger'>Welcome to %s!</span>\n\n"
 
 					       "You have no accounts enabled. Enable your IM accounts from the "
-					       "<b>Accounts</b> window at <b>Accounts->Add/Edit</b>. Once you "
+					       "<b>Accounts</b> window at <b>Accounts->Manage</b>. Once you "
 					       "enable accounts, you'll be able to sign on, set your status, "
 					       "and talk to your friends."), PIDGIN_NAME);
 	pretty = pidgin_make_pretty_arrows(tmp);
@@ -4690,6 +5009,9 @@
 	purple_signal_connect(purple_conversations_get_handle(), "deleting-conversation",
 						gtkblist, PURPLE_CALLBACK(conversation_deleting_cb),
 						gtkblist);
+	purple_signal_connect(purple_conversations_get_handle(), "conversation-created",
+			gtkblist, PURPLE_CALLBACK(conversation_created_cb),
+			gtkblist);
 
 	gtk_widget_hide(gtkblist->headline_hbox);
 	gtk_widget_hide(gtkblist->error_buttons);
@@ -4796,6 +5118,7 @@
 		if(gtknode->recent_signonoff_timer > 0)
 			purple_timeout_remove(gtknode->recent_signonoff_timer);
 
+		purple_signals_disconnect_by_handle(node->ui_data);
 		g_free(node->ui_data);
 		node->ui_data = NULL;
 	}
@@ -4960,7 +5283,7 @@
 				   STATUS_ICON_COLUMN, NULL,
 				   NAME_COLUMN, title,
 				   NODE_COLUMN, gnode,
-				   BGCOLOR_COLUMN, &bgcolor,
+	/* 			   BGCOLOR_COLUMN, &bgcolor,     */
 				   GROUP_EXPANDER_COLUMN, TRUE,
 				   GROUP_EXPANDER_VISIBLE_COLUMN, TRUE,
 				   CONTACT_EXPANDER_VISIBLE_COLUMN, FALSE,
@@ -5224,14 +5547,17 @@
 		GdkPixbuf *status, *avatar, *emblem, *prpl_icon;
 		char *mark;
 		gboolean showicons = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons");
-		const char *name = purple_chat_get_name(chat);
-		PurpleConversation *conv =
-				purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, name, chat->account);
-		gboolean hidden = (conv && !PIDGIN_CONVERSATION(conv));
-
-		if(!insert_node(list, node, &iter))
+		PidginBlistNode *ui;
+		PurpleConversation *conv;
+		gboolean hidden;
+
+		if (!insert_node(list, node, &iter))
 			return;
 
+		ui = node->ui_data;
+		conv = ui->conv.conv;
+		hidden = (conv && (ui->conv.flags & PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE));
+
 		status = pidgin_blist_get_status_icon(node,
 				 PIDGIN_STATUS_ICON_SMALL);
 		emblem = pidgin_blist_get_emblem(node);
@@ -5544,7 +5870,7 @@
 	gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
 
 	/* Set up stuff for the account box */
-	label = gtk_label_new_with_mnemonic(_("_Account:"));
+	label = gtk_label_new_with_mnemonic(_("A_ccount:"));
 	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
 	gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
 
@@ -5661,6 +5987,12 @@
 		purple_blist_add_chat(chat, group, NULL);
 	}
 
+	if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->autojoin)))
+		purple_blist_node_set_bool((PurpleBlistNode*)chat, "gtk-autojoin", TRUE);
+
+	if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->persistent)))
+		purple_blist_node_set_bool((PurpleBlistNode*)chat, "gtk-persistent", TRUE);
+
 	gtk_widget_destroy(data->window);
 	g_free(data->default_chat_name);
 	g_list_free(data->entries);
@@ -5955,6 +6287,11 @@
 	gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_BIN(data->group_combo)->child);
 	pidgin_set_accessible_label (data->group_combo, label);
 	gtk_box_pack_end(GTK_BOX(rowbox), data->group_combo, TRUE, TRUE, 0);
+	
+	data->autojoin = gtk_check_button_new_with_mnemonic(_("Autojoin when account becomes online."));
+	data->persistent = gtk_check_button_new_with_mnemonic(_("Hide chat when the window is closed."));
+	gtk_box_pack_start(GTK_BOX(vbox), data->autojoin, FALSE, FALSE, 0);
+	gtk_box_pack_start(GTK_BOX(vbox), data->persistent, FALSE, FALSE, 0);
 
 	g_signal_connect(G_OBJECT(data->window), "response",
 					 G_CALLBACK(add_chat_resp_cb), data);
@@ -6603,7 +6940,7 @@
 	for (l = gtk_container_get_children(GTK_CONTAINER(accountmenu)); l; l = g_list_delete_link(l, l)) {
 		menuitem = l->data;
 
-		if (menuitem != gtk_item_factory_get_widget(gtkblist->ift, N_("/Accounts/Add\\/Edit")))
+		if (menuitem != gtk_item_factory_get_widget(gtkblist->ift, N_("/Accounts/Manage")))
 			gtk_widget_destroy(menuitem);
 	}
 
--- a/pidgin/gtkblist.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtkblist.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file gtkblist.h GTK+ Buddy List API
  * @ingroup pidgin
+ * @see @ref gtkblist-signals
  */
 
 /* pidgin
@@ -370,6 +371,8 @@
  * @param selected  Whether this buddy is selected. If TRUE, the markup will not change the color.
  * @param aliased  TRUE to return the appropriate alias of this buddy, FALSE to return its screenname and status information
  * @return The markup for this buddy
+ *
+ * @since 2.1.0
  */
 gchar *pidgin_blist_get_name_markup(PurpleBuddy *buddy, gboolean selected, gboolean aliased);
 
@@ -381,11 +384,15 @@
  *
  * @param node The buddy list node to show a tooltip for
  * @param widget The widget to draw the tooltip on
+ *
+ * @since 2.1.0
  */
 void pidgin_blist_draw_tooltip(PurpleBlistNode *node, GtkWidget *widget);
 
 /**
  * Destroys the current (if any) Buddy List tooltip
+ *
+ * @since 2.1.0
  */
 void pidgin_blist_tooltip_destroy(void);
 
--- a/pidgin/gtkcellrendererexpander.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtkcellrendererexpander.c	Tue Oct 23 17:27:12 2007 +0000
@@ -270,6 +270,9 @@
 			    cell_area->x + cell->xpad + (width / 2),
 			    cell_area->y + cell->ypad + (height / 2),
 			    cell->is_expanded ? GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED);
+	if (cell->is_expanded)
+		gtk_paint_hline (widget->style, window, state, NULL, widget, NULL, 0, 
+				 widget->allocation.width, cell_area->y + cell_area->height);
 }
 
 static gboolean pidgin_cell_renderer_expander_activate(GtkCellRenderer *r,
--- a/pidgin/gtkconn.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtkconn.c	Tue Oct 23 17:27:12 2007 +0000
@@ -53,7 +53,7 @@
  * The key is a pointer to the PurpleAccount and the
  * value is a pointer to a PidginAutoRecon.
  */
-static GHashTable *hash = NULL;
+static GHashTable *auto_reconns = NULL;
 
 static void
 pidgin_connection_connect_progress(PurpleConnection *gc,
@@ -80,7 +80,7 @@
 		pidgin_status_box_set_connecting(PIDGIN_STATUS_BOX(gtkblist->statusbox),
 					   (purple_connections_get_connecting() != NULL));
 
-	g_hash_table_remove(hash, account);
+	g_hash_table_remove(auto_reconns, account);
 
 	pidgin_blist_update_account_error_state(account, NULL);
 }
@@ -120,7 +120,7 @@
 
 	purple_debug_info("autorecon", "do_signon called\n");
 	g_return_val_if_fail(account != NULL, FALSE);
-	info = g_hash_table_lookup(hash, account);
+	info = g_hash_table_lookup(auto_reconns, account);
 
 	if (info)
 		info->timeout = 0;
@@ -141,15 +141,16 @@
 {
 	PurpleAccount *account = NULL;
 	PidginAutoRecon *info;
+	GList *list;
 
 	account = purple_connection_get_account(gc);
-	info = g_hash_table_lookup(hash, account);
+	info = g_hash_table_lookup(auto_reconns, account);
 
 	pidgin_blist_update_account_error_state(account, text);
 	if (!gc->wants_to_die) {
 		if (info == NULL) {
 			info = g_new0(PidginAutoRecon, 1);
-			g_hash_table_insert(hash, account, info);
+			g_hash_table_insert(auto_reconns, account, info);
 			info->delay = g_random_int_range(INITIAL_RECON_DELAY_MIN, INITIAL_RECON_DELAY_MAX);
 		} else {
 			info->delay = MIN(2 * info->delay, MAX_RECON_DELAY);
@@ -160,7 +161,7 @@
 	} else {
 		char *p, *s, *n=NULL ;
 		if (info != NULL)
-			g_hash_table_remove(hash, account);
+			g_hash_table_remove(auto_reconns, account);
 
 		if (purple_account_get_alias(account))
 		{
@@ -192,6 +193,17 @@
 		 */
 		purple_account_set_enabled(account, PIDGIN_UI, FALSE);
 	}
+
+	/* If we have any open chats, we probably want to rejoin when we get back online. */
+	list = purple_get_chats();
+	while (list) {
+		PurpleConversation *conv = list->data;
+		list = list->next;
+		if (conv->account != account ||
+				purple_conv_chat_has_left(PURPLE_CONV_CHAT(conv)))
+			continue;
+		purple_conversation_set_data(conv, "want-to-rejoin", GINT_TO_POINTER(TRUE));
+	}
 }
 
 static void pidgin_connection_network_connected ()
@@ -204,7 +216,7 @@
 
 	while (list) {
 		PurpleAccount *account = (PurpleAccount*)list->data;
-		g_hash_table_remove(hash, account);
+		g_hash_table_remove(auto_reconns, account);
 		if (purple_account_is_disconnected(account))
 			do_signon(account);
 		list = list->next;
@@ -265,7 +277,7 @@
 static void
 account_removed_cb(PurpleAccount *account, gpointer user_data)
 {
-	g_hash_table_remove(hash, account);
+	g_hash_table_remove(auto_reconns, account);
 
 	pidgin_blist_update_account_error_state(account, NULL);
 }
@@ -286,7 +298,7 @@
 void
 pidgin_connection_init(void)
 {
-	hash = g_hash_table_new_full(
+	auto_reconns = g_hash_table_new_full(
 							g_direct_hash, g_direct_equal,
 							NULL, free_auto_recon);
 
@@ -300,5 +312,5 @@
 {
 	purple_signals_disconnect_by_handle(pidgin_connection_get_handle());
 
-	g_hash_table_destroy(hash);
+	g_hash_table_destroy(auto_reconns);
 }
--- a/pidgin/gtkconv.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtkconv.c	Tue Oct 23 17:27:12 2007 +0000
@@ -70,6 +70,8 @@
 
 #include "gtknickcolors.h"
 
+#define CLOSE_CONV_TIMEOUT_SECS  (10 * 60)
+
 #define AUTO_RESPONSE "&lt;AUTO-REPLY&gt; : "
 
 typedef  enum
@@ -123,7 +125,6 @@
 static GtkWidget *invite_dialog = NULL;
 static GtkWidget *warn_close_dialog = NULL;
 
-static PidginWindow *hidden_convwin = NULL;
 static GList *window_list = NULL;
 
 /* Lists of status icons at all available sizes for use as window icons */
@@ -147,6 +148,7 @@
 static void add_chat_buddy_common(PurpleConversation *conv, PurpleConvChatBuddy *cb, const char *old_name);
 static gboolean tab_complete(PurpleConversation *conv);
 static void pidgin_conv_updated(PurpleConversation *conv, PurpleConvUpdateType type);
+static void conv_set_unseen(PurpleConversation *gtkconv, PidginUnseenState state);
 static void gtkconv_set_unseen(PidginConversation *gtkconv, PidginUnseenState state);
 static void update_typing_icon(PidginConversation *gtkconv);
 static const char *item_factory_translate_func (const char *path, gpointer func_data);
@@ -161,6 +163,7 @@
 static gboolean infopane_press_cb(GtkWidget *widget, GdkEventButton *e, PidginConversation *conv);
 static gboolean pidgin_userlist_motion_cb (GtkWidget *w, GdkEventMotion *event, PidginConversation *gtkconv);
 static void pidgin_conv_leave_cb (GtkWidget *w, GdkEventCrossing *e, PidginConversation *gtkconv);
+static void hide_conv(PidginConversation *gtkconv, gboolean closetimer);
 
 static void pidgin_conv_set_position_size(PidginWindow *win, int x, int y,
 		int width, int height);
@@ -208,12 +211,49 @@
  **************************************************************************/
 
 static gboolean
-close_conv_cb(GtkWidget *w, GdkEventButton *event, PidginConversation *gtkconv)
-{
+close_this_sucker(gpointer data)
+{
+	PidginConversation *gtkconv = data;
 	GList *list = g_list_copy(gtkconv->convs);
-
 	g_list_foreach(list, (GFunc)purple_conversation_destroy, NULL);
 	g_list_free(list);
+	return FALSE;
+}
+
+static gboolean
+close_conv_cb(GtkWidget *w, GdkEventButton *dontuse, PidginConversation *gtkconv)
+{
+	/* We are going to destroy the conversations immediately only if the 'close immediately'
+	 * preference is selected. Otherwise, close the conversation after a reasonable timeout
+	 * (I am going to consider 10 minutes as a 'reasonable timeout' here.
+	 * For chats, close immediately if the chat is not in the buddylist, or if the chat is
+	 * not marked 'Persistent' */
+	PurpleConversation *conv = gtkconv->active_conv;
+	PurpleAccount *account = purple_conversation_get_account(conv);
+	const char *name = purple_conversation_get_name(conv);
+
+	switch (purple_conversation_get_type(conv)) {
+		case PURPLE_CONV_TYPE_IM:
+		{
+			if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/im/close_immediately"))
+				close_this_sucker(gtkconv);
+			else
+				hide_conv(gtkconv, TRUE);
+			break;
+		}
+		case PURPLE_CONV_TYPE_CHAT:
+		{
+			PurpleChat *chat = purple_blist_find_chat(account, name);
+			if (!chat ||
+					!purple_blist_node_get_bool(&chat->node, "gtk-persistent"))
+				close_this_sucker(gtkconv);
+			else
+				hide_conv(gtkconv, FALSE);
+			break;
+		}
+		default:
+			;
+	}
 
 	return TRUE;
 }
@@ -337,10 +377,13 @@
 static void clear_conversation_scrollback(PurpleConversation *conv)
 {
 	PidginConversation *gtkconv = NULL;
+	GList *iter;
 
 	gtkconv = PIDGIN_CONVERSATION(conv);
 
 	gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml));
+	for (iter = gtkconv->convs; iter; iter = iter->next)
+		purple_conversation_clear_message_history(iter->data);
 }
 
 static PurpleCmdRet
@@ -348,7 +391,6 @@
                  const char *cmd, char **args, char **error, void *data)
 {
 	clear_conversation_scrollback(conv);
-	purple_conversation_clear_message_history(conv);
 	return PURPLE_CMD_STATUS_OK;
 }
 
@@ -1060,12 +1102,9 @@
 {
 	PidginWindow *win = data;
 	PurpleConversation *conv;
-	PidginConversation *gtkconv;
 
 	conv = pidgin_conv_window_get_active_conversation(win);
-	gtkconv = PIDGIN_CONVERSATION(conv);
-
-	gtk_imhtml_clear(GTK_IMHTML(gtkconv->imhtml));
+	clear_conversation_scrollback(conv);
 }
 
 struct _search {
@@ -1315,18 +1354,33 @@
 	add_remove_cb(NULL, PIDGIN_CONVERSATION(conv));
 }
 
-#if 0
-static void
-menu_hide_conv_cb(gpointer data, guint action, GtkWidget *widget)
-{
-	PidginWindow *win = data;
-	PidginConversation *gtkconv = pidgin_conv_window_get_active_gtkconv(win);
-	PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win);
+static gboolean
+close_already(gpointer data)
+{
+	purple_conversation_destroy(data);
+	return FALSE;
+}
+
+static void
+hide_conv(PidginConversation *gtkconv, gboolean closetimer)
+{
+	GList *list;
+
 	purple_signal_emit(pidgin_conversations_get_handle(),
 			"conversation-hiding", gtkconv);
-	purple_conversation_set_ui_ops(conv, NULL);
-}
-#endif
+
+	for (list = g_list_copy(gtkconv->convs); list; list = g_list_delete_link(list, list)) {
+		PurpleConversation *conv = list->data;
+		if (closetimer) {
+			guint timer = GPOINTER_TO_INT(purple_conversation_get_data(conv, "close-timer"));
+			if (timer)
+				purple_timeout_remove(timer);
+			timer = purple_timeout_add_seconds(CLOSE_CONV_TIMEOUT_SECS, close_already, conv);
+			purple_conversation_set_data(conv, "close-timer", GINT_TO_POINTER(timer));
+		}
+		purple_conversation_set_ui_ops(conv, NULL);
+	}
+}
 
 static void
 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget)
@@ -2343,63 +2397,69 @@
 	return get_prpl_icon_list(account);
 }
 
-GdkPixbuf *
-pidgin_conv_get_tab_icon(PurpleConversation *conv, gboolean small_icon)
-{
-        PurpleAccount *account = NULL;
-        const char *name = NULL;
-        GdkPixbuf *status = NULL;
-        PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
-	const char *icon_size = small_icon ? PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC : PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL;
-        g_return_val_if_fail(conv != NULL, NULL);
-
-        account = purple_conversation_get_account(conv);
-        name = purple_conversation_get_name(conv);
-
-        g_return_val_if_fail(account != NULL, NULL);
-        g_return_val_if_fail(name != NULL, NULL);
-
-        /* Use the buddy icon, if possible */
-        if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
-                PurpleBuddy *b = purple_find_buddy(account, name);
-                if (b != NULL) {
+static GdkPixbuf *
+pidgin_conv_get_icon(PurpleConversation *conv, GtkWidget *parent, const char *icon_size)
+{
+	PurpleAccount *account = NULL;
+	const char *name = NULL;
+	GdkPixbuf *status = NULL;
+	PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
+	g_return_val_if_fail(conv != NULL, NULL);
+
+	account = purple_conversation_get_account(conv);
+	name = purple_conversation_get_name(conv);
+
+	g_return_val_if_fail(account != NULL, NULL);
+	g_return_val_if_fail(name != NULL, NULL);
+
+	/* Use the buddy icon, if possible */
+	if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
+		PurpleBuddy *b = purple_find_buddy(account, name);
+		if (b != NULL) {
 			PurplePresence *p = purple_buddy_get_presence(b);
-                        /* I hate this hack.  It fixes a bug where the pending message icon
-                          * displays in the conv tab even though it shouldn't.
-                          * A better solution would be great. */
-                        if (ops && ops->update)
-                                ops->update(NULL, (PurpleBlistNode*)b);
+			/* I hate this hack.  It fixes a bug where the pending message icon
+			 * displays in the conv tab even though it shouldn't.
+			 * A better solution would be great. */
+			if (ops && ops->update)
+				ops->update(NULL, (PurpleBlistNode*)b);
 
 			/* XXX Seanegan: We really need a util function to return a pixbuf for a Presence to avoid all this switching */	
 			if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_AWAY))
-	                        status = pidgin_create_status_icon(PURPLE_STATUS_AWAY, PIDGIN_CONVERSATION(conv)->icon, icon_size);
+				status = pidgin_create_status_icon(PURPLE_STATUS_AWAY, parent, icon_size);
 			else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_EXTENDED_AWAY))
-	                        status = pidgin_create_status_icon(PURPLE_STATUS_EXTENDED_AWAY, PIDGIN_CONVERSATION(conv)->icon, icon_size);
- 			else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_OFFLINE))
-	                        status = pidgin_create_status_icon(PURPLE_STATUS_OFFLINE, PIDGIN_CONVERSATION(conv)->icon, icon_size);
- 			else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_AVAILABLE))
-	                        status = pidgin_create_status_icon(PURPLE_STATUS_AVAILABLE, PIDGIN_CONVERSATION(conv)->icon, icon_size);
- 			else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_INVISIBLE))
-	                        status = pidgin_create_status_icon(PURPLE_STATUS_INVISIBLE, PIDGIN_CONVERSATION(conv)->icon, icon_size);
- 			else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_UNAVAILABLE))
-	                        status = pidgin_create_status_icon(PURPLE_STATUS_UNAVAILABLE, PIDGIN_CONVERSATION(conv)->icon, icon_size);
-                }
-        }
-
-        /* If they don't have a buddy icon, then use the PRPL icon */
-        if (status == NULL) {
+				status = pidgin_create_status_icon(PURPLE_STATUS_EXTENDED_AWAY, parent, icon_size);
+			else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_OFFLINE))
+				status = pidgin_create_status_icon(PURPLE_STATUS_OFFLINE, parent, icon_size);
+			else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_AVAILABLE))
+				status = pidgin_create_status_icon(PURPLE_STATUS_AVAILABLE, parent, icon_size);
+			else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_INVISIBLE))
+				status = pidgin_create_status_icon(PURPLE_STATUS_INVISIBLE, parent, icon_size);
+			else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_UNAVAILABLE))
+				status = pidgin_create_status_icon(PURPLE_STATUS_UNAVAILABLE, parent, icon_size);
+		}
+	}
+
+	/* If they don't have a buddy icon, then use the PRPL icon */
+	if (status == NULL) {
 		GtkIconSize size = gtk_icon_size_from_name(icon_size);
 		if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
-        		status = gtk_widget_render_icon (PIDGIN_CONVERSATION(conv)->icon, PIDGIN_STOCK_STATUS_PERSON,
-                                                 size, "GtkWidget");
+			status = gtk_widget_render_icon (parent, PIDGIN_STOCK_STATUS_PERSON,
+					size, "GtkWidget");
 		} else {
-	        		status = gtk_widget_render_icon (PIDGIN_CONVERSATION(conv)->icon, PIDGIN_STOCK_STATUS_CHAT,
-                                                 size, "GtkWidget");
+			status = gtk_widget_render_icon (parent, PIDGIN_STOCK_STATUS_CHAT,
+					size, "GtkWidget");
 		}
 	}	
 	return status;
 }
 
+GdkPixbuf *
+pidgin_conv_get_tab_icon(PurpleConversation *conv, gboolean small_icon)
+{
+	const char *icon_size = small_icon ? PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC : PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL;
+	return pidgin_conv_get_icon(conv, PIDGIN_CONVERSATION(conv)->icon, icon_size);
+}
+
 
 static void
 update_tab_icon(PurpleConversation *conv)
@@ -2756,9 +2816,9 @@
 	PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
 	GdkModifierType state;
 
-	if(gtkconv->win==hidden_convwin) {
-		pidgin_conv_window_remove_gtkconv(hidden_convwin, gtkconv);
-		pidgin_conv_placement_place(gtkconv);
+	if (gtkconv == NULL) {
+		pidgin_conv_attach_to_conversation(conv);
+		gtkconv = PIDGIN_CONVERSATION(conv);
 	}
 
 	pidgin_conv_switch_active_conversation(conv);
@@ -2791,15 +2851,20 @@
 		PurpleConversation *conv = (PurpleConversation*)l->data;
 		PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
 
-		if(gtkconv == NULL || gtkconv->active_conv != conv)
+		if (gtkconv != NULL && gtkconv->active_conv != conv)
 			continue;
-
-		if (gtkconv->unseen_state >= min_state
-			&& (!hidden_only ||
-				(hidden_only && gtkconv->win == hidden_convwin))) {
-
+		if (gtkconv == NULL) {
+			if (!purple_conversation_get_data(conv, "unseen-count") ||
+				!purple_conversation_get_data(conv, "unseen-state") ||
+				GPOINTER_TO_INT(purple_conversation_get_data(conv, "unseen-state"))<min_state)
+				continue;
 			r = g_list_prepend(r, conv);
 			c++;
+		} else {
+			if (gtkconv->unseen_state >= min_state && !hidden_only) {
+				r = g_list_prepend(r, conv);
+				c++;
+			}
 		}
 	}
 
@@ -2839,11 +2904,11 @@
 		PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
 
 		GtkWidget *icon = gtk_image_new();
-		GdkPixbuf *pbuf = pidgin_conv_get_tab_icon(conv, TRUE);
+		GdkPixbuf *pbuf = pidgin_conv_get_icon(conv, icon, PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC);
 		GtkWidget *item;
 		gchar *text = g_strdup_printf("%s (%d)",
-				gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)),
-				gtkconv->unseen_count);
+				gtkconv ? gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)) : purple_conversation_get_name(conv),
+				gtkconv ? gtkconv->unseen_count : GPOINTER_TO_INT(purple_conversation_get_data(conv, "unseen-count")));
 
 		gtk_image_set_from_pixbuf(GTK_IMAGE(icon), pbuf);
 		g_object_unref(pbuf);
@@ -3101,7 +3166,7 @@
 	PurpleConversation *conv;
 	GtkWidget *item;
 
-	if (win->window == NULL || win == hidden_convwin)
+	if (win->window == NULL)
 		return;
 
 	gtkconv = pidgin_conv_window_get_active_gtkconv(win);
@@ -3577,7 +3642,7 @@
 		gtk_widget_destroy(win->menu.send_to);
 
 	/* Build the Send To menu */
-	win->menu.send_to = gtk_menu_item_new_with_mnemonic(_("_Send To"));
+	win->menu.send_to = gtk_menu_item_new_with_mnemonic(_("S_end To"));
 	gtk_widget_show(win->menu.send_to);
 
 	menu = gtk_menu_new();
@@ -4957,6 +5022,9 @@
 	GtkWidget *tab_cont;
 	PurpleBlistNode *convnode;
 
+	if (hidden)
+		return;
+
 	if (conv_type == PURPLE_CONV_TYPE_IM && (gtkconv = pidgin_conv_find_gtkconv(conv))) {
 		conv->ui_data = gtkconv;
 		if (!g_list_find(gtkconv->convs, conv))
@@ -5056,10 +5124,7 @@
 	                         G_CALLBACK(gtk_widget_grab_focus),
 	                         gtkconv->entry);
 
-	if (hidden)
-		pidgin_conv_window_add_gtkconv(hidden_convwin, gtkconv);
-	else
-		pidgin_conv_placement_place(gtkconv);
+	pidgin_conv_placement_place(gtkconv);
 
 	if (nick_colors == NULL) {
 		nbr_nick_colors = NUM_NICK_COLORS;
@@ -5067,11 +5132,13 @@
 	}
 }
 
+#if 0
 static void
 pidgin_conv_new_hidden(PurpleConversation *conv)
 {
 	private_gtkconv_new(conv, TRUE);
 }
+#endif
 
 void
 pidgin_conv_new(PurpleConversation *conv)
@@ -5087,26 +5154,24 @@
 				   PurpleConversation *conv, PurpleMessageFlags flags)
 {
 	PurpleConversationUiOps *ui_ops = pidgin_conversations_get_conv_ui_ops();
-	if (conv != NULL)
-		return;
 
 	/* create hidden conv if hide_new pref is always */
-	if (strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "always") == 0)
-	{
-		ui_ops->create_conversation = pidgin_conv_new_hidden;
-		purple_conversation_new(PURPLE_CONV_TYPE_IM, account, sender);
-		ui_ops->create_conversation = pidgin_conv_new;
-		return;
-	}
-
-	/* create hidden conv if hide_new pref is away and account is away */
-	if (strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "away") == 0 &&
-	    !purple_status_is_available(purple_account_get_active_status(account)))
-	{
-		ui_ops->create_conversation = pidgin_conv_new_hidden;
-		purple_conversation_new(PURPLE_CONV_TYPE_IM, account, sender);
-		ui_ops->create_conversation = pidgin_conv_new;
-		return;
+	/* or if hide_new pref is away and account is away */
+	if ((strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "always") == 0) ||
+		(strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "away") == 0 &&
+		 !purple_status_is_available(purple_account_get_active_status(account)))) {
+		if (!conv) {
+			ui_ops->create_conversation = NULL;
+			conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, sender);
+			purple_conversation_set_ui_ops(conv, NULL);
+			ui_ops->create_conversation = pidgin_conv_new;
+		} else {
+			/* TODO: update the unseen_state data on the conv here */
+		}
+	} else {
+		/* new message for an IM */
+		if (conv && conv->type == PURPLE_CONV_TYPE_IM)
+			pidgin_conv_attach_to_conversation(conv);
 	}
 }
 
@@ -5115,6 +5180,9 @@
 {
 	PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
 
+	if (!gtkconv)
+		return;
+
 	gtkconv->convs = g_list_remove(gtkconv->convs, conv);
 	/* Don't destroy ourselves until all our convos are gone */
 	if (gtkconv->convs) {
@@ -6509,10 +6577,13 @@
 			style = "color=\"#c4a000\"";
 		} else if (gtkconv->unseen_state == PIDGIN_UNSEEN_NICK)	{
 			atk_object_set_description(accessibility_obj, _("Nick Said"));
-			style = "color=\"#204a87\"";
+			style = "color=\"#cc0000\"";
 		} else if (gtkconv->unseen_state == PIDGIN_UNSEEN_TEXT)	{
 			atk_object_set_description(accessibility_obj, _("Unread Messages"));
-			style = "color=\"#cc0000\"";
+			if (gtkconv->active_conv->type == PURPLE_CONV_TYPE_CHAT)
+				style = "color=\"#204a87\"";
+			else
+				style = "color=\"#cc0000\"";
 		} else if (gtkconv->unseen_state == PIDGIN_UNSEEN_EVENT) {
 			atk_object_set_description(accessibility_obj, _("New Event"));
 			style = "color=\"#888a85\"";
@@ -6524,7 +6595,7 @@
 				gtkconv->unseen_state == PIDGIN_UNSEEN_NICK ||
 				gtkconv->unseen_state == PIDGIN_UNSEEN_EVENT)
 			bold = TRUE;
-		
+
 		if (style || bold)
 		{
 			char *html_title,*label;
@@ -6600,6 +6671,30 @@
 	pidgin_conv_update_fields(conv, flags);
 }
 
+static void
+wrote_msg_update_unseen_cb(PurpleAccount *account, const char *who, const char *message,
+		PurpleConversation *conv, PurpleMessageFlags flags, gpointer null)
+{
+	if (conv == NULL || PIDGIN_IS_PIDGIN_CONVERSATION(conv))
+		return;
+	if (flags & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV)) {
+		PidginUnseenState unseen = PIDGIN_UNSEEN_NONE;
+
+		if ((flags & PURPLE_MESSAGE_NICK) == PURPLE_MESSAGE_NICK)
+			unseen = PIDGIN_UNSEEN_NICK;
+		else if (((flags & PURPLE_MESSAGE_SYSTEM) == PURPLE_MESSAGE_SYSTEM) ||
+			  ((flags & PURPLE_MESSAGE_ERROR) == PURPLE_MESSAGE_ERROR))
+			unseen = PIDGIN_UNSEEN_EVENT;
+		else if ((flags & PURPLE_MESSAGE_NO_LOG) == PURPLE_MESSAGE_NO_LOG)
+			unseen = PIDGIN_UNSEEN_NO_LOG;
+		else
+			unseen = PIDGIN_UNSEEN_TEXT;
+
+		conv_set_unseen(conv, unseen);
+		purple_conversation_update(conv, PURPLE_CONV_UPDATE_UNSEEN);
+	}
+}
+
 static PurpleConversationUiOps conversation_ui_ops =
 {
 	pidgin_conv_new,
@@ -7099,6 +7194,7 @@
 account_status_changed_cb(PurpleAccount *account, PurpleStatus *oldstatus,
                           PurpleStatus *newstatus)
 {
+#if 0
 	GList *l;
 	PurpleConversation *conv = NULL;
 	PidginConversation *gtkconv;
@@ -7108,27 +7204,7 @@
 
 	if(purple_status_is_available(oldstatus) || !purple_status_is_available(newstatus))
 		return;
-
-	while ((l = hidden_convwin->gtkconvs) != NULL)
-	{
-		gtkconv = l->data;
-
-		conv = gtkconv->active_conv;
-
-		while(l && !purple_status_is_available(
-					purple_account_get_active_status(
-					purple_conversation_get_account(conv))))
-			l = l->next;
-		if (!l)
-			break;
-
-		pidgin_conv_window_remove_gtkconv(hidden_convwin, gtkconv);
-		pidgin_conv_placement_place(gtkconv);
-
-		/* TODO: do we need to do anything for any other conversations that are in the same gtkconv here?
-		 * I'm a little concerned that not doing so will cause the "pending" indicator in the gtkblist not to be cleared. -DAA*/
-		purple_conversation_update(conv, PURPLE_CONV_UPDATE_UNSEEN);
-	}
+#endif
 }
 
 static void
@@ -7136,32 +7212,25 @@
 				 gconstpointer value, gpointer data)
 {
 	GList *l;
-	PurpleConversation *conv = NULL;
-	PidginConversation *gtkconv;
 	gboolean when_away = FALSE;
 
-	if(!hidden_convwin)
-		return;
-
 	if(strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "always")==0)
 		return;
 
 	if(strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new"), "away")==0)
 		when_away = TRUE;
 
-	while ((l = hidden_convwin->gtkconvs) != NULL)
+	for (l = purple_get_conversations(); l; l = l->next)
 	{
-		gtkconv = l->data;
-
-		conv = gtkconv->active_conv;
-
+		PurpleConversation *conv = l->data;
+		PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
+		if (gtkconv)
+			continue;
 		if(when_away && !purple_status_is_available(
 							purple_account_get_active_status(
 							purple_conversation_get_account(conv))))
 			continue;
-
-		pidgin_conv_window_remove_gtkconv(hidden_convwin, gtkconv);
-		pidgin_conv_placement_place(gtkconv);
+		pidgin_conv_attach_to_conversation(conv);
 	}
 }
 
@@ -7217,6 +7286,23 @@
 		/* if (purple_conversation_get_account(conv) == account) */
 			pidgin_conv_update_fields(conv, PIDGIN_CONV_TAB_ICON |
 							PIDGIN_CONV_MENU | PIDGIN_CONV_COLORIZE_TITLE);
+
+		if (PURPLE_CONNECTION_IS_CONNECTED(gc) &&
+				conv->type == PURPLE_CONV_TYPE_CHAT &&
+				conv->account == gc->account &&
+				purple_conversation_get_data(conv, "want-to-rejoin")) {
+			GHashTable *comps = NULL;
+			PurpleChat *chat = purple_blist_find_chat(conv->account, conv->name);
+			if (chat == NULL) {
+				if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL)
+					comps = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, conv->name);
+			} else {
+				comps = chat->components;
+			}
+			serv_join_chat(gc, comps);
+			if (chat == NULL && comps != NULL)
+				g_hash_table_destroy(comps);
+		}
 	}
 }
 
@@ -7344,9 +7430,15 @@
 	PidginConversation *gtkconv = data;
 	int count = 0;
 	int timer = gtkconv->attach.timer;
+	time_t when = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(gtkconv->entry), "attach-start-time"));
+
 	gtkconv->attach.timer = 0;
 	while (gtkconv->attach.current && count < 100) {  /* XXX: 100 is a random value here */
 		PurpleConvMessage *msg = gtkconv->attach.current->data;
+		if (when && when < msg->when) {
+			gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "<BR><HR>", 0);
+			g_object_set_data(G_OBJECT(gtkconv->entry), "attach-start-time", NULL);
+		}
 		pidgin_conv_write_conv(gtkconv->active_conv, msg->who, msg->who, msg->what, msg->flags, msg->when);
 		gtkconv->attach.current = gtkconv->attach.current->prev;
 		count++;
@@ -7355,6 +7447,7 @@
 	if (gtkconv->attach.current)
 		return TRUE;
 
+	g_object_set_data(G_OBJECT(gtkconv->entry), "attach-start-time", NULL);
 	purple_signal_emit(pidgin_conversations_get_handle(),
 			"conversation-displayed", gtkconv);
 	g_source_remove(gtkconv->attach.timer);
@@ -7366,18 +7459,22 @@
 {
 	GList *list;
 	PidginConversation *gtkconv;
+	int timer;
 
 	if (PIDGIN_IS_PIDGIN_CONVERSATION(conv))
 		return FALSE;
 
+	purple_conversation_set_data(conv, "unseen-count", NULL);
+	purple_conversation_set_data(conv, "unseen-state", NULL);
 	purple_conversation_set_ui_ops(conv, pidgin_conversations_get_conv_ui_ops());
 	private_gtkconv_new(conv, FALSE);
 	gtkconv = PIDGIN_CONVERSATION(conv);
 
 	list = purple_conversation_get_message_history(conv);
 	if (list) {
-		list = g_list_last(list);
-		gtkconv->attach.current = list;
+		g_object_set_data(G_OBJECT(gtkconv->entry), "attach-start-time",
+				GINT_TO_POINTER(((PurpleConvMessage*)(list->data))->when));
+		gtkconv->attach.current = g_list_last(list);
 		gtkconv->attach.timer = g_idle_add(add_message_history_to_gtkconv, gtkconv);
 	} else {
 		purple_signal_emit(pidgin_conversations_get_handle(),
@@ -7389,6 +7486,9 @@
 		pidgin_conv_chat_add_users(conv, PURPLE_CONV_CHAT(conv)->in_room, TRUE);
 	}
 
+	timer = GPOINTER_TO_INT(purple_conversation_get_data(conv, "close-timer"));
+	if (timer)
+		purple_timeout_remove(timer);
 	return TRUE;
 }
 
@@ -7454,6 +7554,7 @@
 	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons", TRUE);
 
 	purple_prefs_add_string(PIDGIN_PREFS_ROOT "/conversations/im/hide_new", "never");
+	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/im/close_immediately", FALSE);
 
 #ifdef _WIN32
 	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/win32/minimize_new_convs", FALSE);
@@ -7617,9 +7718,6 @@
 
 	purple_conversations_set_ui_ops(&conversation_ui_ops);
 
-	hidden_convwin = pidgin_conv_window_new();
-	window_list = g_list_remove(window_list, hidden_convwin);
-
 	purple_signal_connect(purple_accounts_get_handle(), "account-status-changed",
                         handle, PURPLE_CALLBACK(account_status_changed_cb), NULL);
 
@@ -7655,6 +7753,10 @@
 	purple_signal_connect_priority(purple_conversations_get_handle(), "conversation-updated", handle,
 						PURPLE_CALLBACK(pidgin_conv_updated), NULL,
 						PURPLE_SIGNAL_PRIORITY_LOWEST);
+	purple_signal_connect(purple_conversations_get_handle(), "wrote-im-msg", handle,
+			PURPLE_CALLBACK(wrote_msg_update_unseen_cb), NULL);
+	purple_signal_connect(purple_conversations_get_handle(), "wrote-chat-msg", handle,
+			PURPLE_CALLBACK(wrote_msg_update_unseen_cb), NULL);
 }
 
 void
@@ -7663,8 +7765,6 @@
 	purple_prefs_disconnect_by_handle(pidgin_conversations_get_handle());
 	purple_signals_disconnect_by_handle(pidgin_conversations_get_handle());
 	purple_signals_unregister_by_instance(pidgin_conversations_get_handle());
-	pidgin_conv_window_destroy(hidden_convwin);
-	hidden_convwin=NULL;
 }
 
 
@@ -7835,6 +7935,38 @@
 }
 
 static void
+conv_set_unseen(PurpleConversation *conv, PidginUnseenState state)
+{
+	int unseen_count = 0;
+	PidginUnseenState unseen_state = PIDGIN_UNSEEN_NONE;
+
+	if(purple_conversation_get_data(conv, "unseen-count"))
+		unseen_count = GPOINTER_TO_INT(purple_conversation_get_data(conv, "unseen-count"));
+
+	if(purple_conversation_get_data(conv, "unseen-state"))
+		unseen_state = GPOINTER_TO_INT(purple_conversation_get_data(conv, "unseen-state"));
+
+	if (state == PIDGIN_UNSEEN_NONE)
+	{
+		unseen_count = 0;
+		unseen_state = PIDGIN_UNSEEN_NONE;
+	}
+	else
+	{
+		if (state >= PIDGIN_UNSEEN_TEXT)
+			unseen_count++;
+
+		if (state > unseen_state)
+			unseen_state = state;
+	}
+
+	purple_conversation_set_data(conv, "unseen-count", GINT_TO_POINTER(unseen_count));
+	purple_conversation_set_data(conv, "unseen-state", GINT_TO_POINTER(unseen_state));
+
+	purple_conversation_update(conv, PURPLE_CONV_UPDATE_UNSEEN);
+}
+
+static void
 gtkconv_set_unseen(PidginConversation *gtkconv, PidginUnseenState state)
 {
 	if (state == PIDGIN_UNSEEN_NONE)
@@ -8046,7 +8178,7 @@
 		sub = gtk_menu_item_get_submenu(GTK_MENU_ITEM(gtkconv->win->menu.send_to));
 
 		if (sub && GTK_WIDGET_IS_SENSITIVE(gtkconv->win->menu.send_to)) {
-			GtkWidget *item = gtk_menu_item_new_with_mnemonic(_("_Send To"));
+			GtkWidget *item = gtk_menu_item_new_with_mnemonic(_("S_end To"));
 			if (populated)
 				pidgin_separator(menu);
 			gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
@@ -8796,15 +8928,10 @@
 
 	if (win->gtkconvs) {
 		while (win->gtkconvs) {
-			GList *nextgtk = win->gtkconvs->next;
-			PidginConversation *gtkconv = win->gtkconvs->data;
-			GList *nextcore = gtkconv->convs->next;
-			PurpleConversation *conv = gtkconv->convs->data;
-			purple_conversation_destroy(conv);
-			if (!nextgtk && !nextcore)
-			/* we'll end up invoking ourselves when we destroy our last child */
-			/* so don't destroy ourselves right now */
-				return;
+			gboolean last = (win->gtkconvs->next == NULL);
+			close_conv_cb(NULL, NULL, win->gtkconvs->data);
+			if (last)
+				break;
 		}
 		return;
 	}
@@ -9083,7 +9210,7 @@
 	if (win->gtkconvs && win->gtkconvs->next == NULL)
 		pidgin_conv_tab_pack(win, win->gtkconvs->data);
 
-	if (!win->gtkconvs && win != hidden_convwin)
+	if (!win->gtkconvs)
 		pidgin_conv_window_destroy(win);
 }
 
@@ -9622,9 +9749,7 @@
 gboolean
 pidgin_conv_is_hidden(PidginConversation *gtkconv)
 {
-	g_return_val_if_fail(gtkconv != NULL, FALSE);
-
-	return (gtkconv->win == hidden_convwin);
+	return (gtkconv == NULL);
 }
 
 
@@ -9725,3 +9850,4 @@
 
 	return colors;
 }
+
--- a/pidgin/gtkconv.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtkconv.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file gtkconv.h GTK+ Conversation API
  * @ingroup pidgin
+ * @see @ref gtkconv-signals
  */
 
 /* pidgin
@@ -252,6 +253,8 @@
  * @param conv  The conversation.
  *
  * @return  Wheter Pidgin UI was successfully attached.
+ *
+ * @since 2.2.0
  */
 gboolean pidgin_conv_attach_to_conversation(PurpleConversation *conv);
 
--- a/pidgin/gtkdocklet.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtkdocklet.c	Tue Oct 23 17:27:12 2007 +0000
@@ -145,15 +145,22 @@
 		if (ui_ops->set_tooltip) {
 			GString *tooltip_text = g_string_new("");
 			for (l = convs, count = 0 ; l != NULL ; l = l->next, count++) {
-				if (PIDGIN_IS_PIDGIN_CONVERSATION(l->data)) {
-					PidginConversation *gtkconv = PIDGIN_CONVERSATION((PurpleConversation *)l->data);
-					if (count == DOCKLET_TOOLTIP_LINE_LIMIT - 1)
-						g_string_append(tooltip_text, _("Right-click for more unread messages...\n"));
-					else
-						g_string_append_printf(tooltip_text,
-							ngettext("%d unread message from %s\n", "%d unread messages from %s\n", gtkconv->unseen_count),
-							gtkconv->unseen_count,
-							gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)));
+				PurpleConversation *conv = (PurpleConversation *)l->data;
+				PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
+
+				if (count == DOCKLET_TOOLTIP_LINE_LIMIT - 1) {
+					g_string_append(tooltip_text, _("Right-click for more unread messages...\n"));
+				} else if(gtkconv) {
+					g_string_append_printf(tooltip_text,
+						ngettext("%d unread message from %s\n", "%d unread messages from %s\n", gtkconv->unseen_count),
+						gtkconv->unseen_count,
+						purple_conversation_get_title(conv));
+				} else {
+					g_string_append_printf(tooltip_text,
+						ngettext("%d unread message from %s\n", "%d unread messages from %s\n",
+						GPOINTER_TO_INT(purple_conversation_get_data(conv, "unseen-count"))),
+						GPOINTER_TO_INT(purple_conversation_get_data(conv, "unseen-count")),
+						purple_conversation_get_title(conv));
 				}
 			}
 
@@ -578,6 +585,87 @@
 	return menuitem;
 }
 
+
+
+static void
+plugin_act(GtkObject *obj, PurplePluginAction *pam)
+{
+	if (pam && pam->callback)
+		pam->callback(pam);
+}
+
+static void
+build_plugin_actions(GtkWidget *menu, PurplePlugin *plugin,
+		gpointer context)
+{
+	GtkWidget *menuitem;
+	PurplePluginAction *action = NULL;
+	GList *actions, *l;
+
+	actions = PURPLE_PLUGIN_ACTIONS(plugin, context);
+
+	for (l = actions; l != NULL; l = l->next)
+	{
+		if (l->data)
+		{
+			action = (PurplePluginAction *) l->data;
+			action->plugin = plugin;
+			action->context = context;
+
+			menuitem = gtk_menu_item_new_with_label(action->label);
+			gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
+
+			g_signal_connect(G_OBJECT(menuitem), "activate",
+					G_CALLBACK(plugin_act), action);
+			g_object_set_data_full(G_OBJECT(menuitem), "plugin_action",
+								   action,
+								   (GDestroyNotify)purple_plugin_action_free);
+			gtk_widget_show(menuitem);
+		}
+		else
+			pidgin_separator(menu);
+	}
+
+	g_list_free(actions);
+}
+
+
+static void
+docklet_plugin_actions(GtkWidget *menu)
+{
+	GtkWidget *menuitem, *submenu;
+	PurplePlugin *plugin = NULL;
+	GList *l;
+	int c = 0;
+
+	g_return_if_fail(menu != NULL);
+
+	/* Add a submenu for each plugin with custom actions */
+	for (l = purple_plugins_get_loaded(); l; l = l->next) {
+		plugin = (PurplePlugin *) l->data;
+
+		if (PURPLE_IS_PROTOCOL_PLUGIN(plugin))
+			continue;
+
+		if (!PURPLE_PLUGIN_HAS_ACTIONS(plugin))
+			continue;
+
+		menuitem = gtk_image_menu_item_new_with_label(_(plugin->info->name));
+		gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
+		gtk_widget_show(menuitem);
+
+		submenu = gtk_menu_new();
+		gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
+		gtk_widget_show(submenu);
+
+		build_plugin_actions(submenu, plugin, NULL);
+
+		c++;
+	}
+	if(c>0)
+		pidgin_separator(menu);
+}
+
 static void
 docklet_menu() {
 	static GtkWidget *menu = NULL;
@@ -637,13 +725,16 @@
 	g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_mute), NULL);
 	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
 
-	menuitem = gtk_check_menu_item_new_with_label(_("Blink on new message"));
+	menuitem = gtk_check_menu_item_new_with_label(_("Blink on New Message"));
 	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/docklet/blink"));
 	g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_blink), NULL);
 	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
 
 	pidgin_separator(menu);
 
+	/* add plugin actions */
+	docklet_plugin_actions(menu);
+
 	pidgin_new_item_from_stock(menu, _("Quit"), GTK_STOCK_QUIT, G_CALLBACK(purple_core_quit), NULL, 0, 0, NULL);
 
 #ifdef _WIN32
@@ -674,7 +765,7 @@
 			if (pending) {
 				GList *l = get_pending_list(1);
 				if (l != NULL) {
-					purple_conversation_present((PurpleConversation *)l->data);
+					pidgin_conv_present_conversation((PurpleConversation *)l->data);
 					g_list_free(l);
 				}
 			} else {
--- a/pidgin/gtkimhtml.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtkimhtml.c	Tue Oct 23 17:27:12 2007 +0000
@@ -3132,9 +3132,10 @@
 		gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer,
 			&i, sd->mark);
 		if (gtk_text_iter_in_range(&i, start, end)) {
-			GtkIMHtmlScalable *scale = sd->scalable;
+			GtkIMHtmlScalable *scale = GTK_IMHTML_SCALABLE(sd->scalable);
 			scale->free(scale);
-			imhtml->scalables = g_list_remove_link(imhtml->scalables, l);
+			g_free(sd);
+			imhtml->scalables = g_list_delete_link(imhtml->scalables, l);
 		}
 		l = next;
 	}
--- a/pidgin/gtkimhtml.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtkimhtml.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file gtkimhtml.h GTK+ IM/HTML rendering component
  * @ingroup pidgin
+ * @see @ref gtkimhtml-signals
  */
 
 /* Pidgin is the legal property of its developers, whose names are too numerous
@@ -440,6 +441,8 @@
  * @param id       The id to associate with the image.
  *
  * @return A new IM/HTML Scalable object with an image.
+ *
+ * @since 2.1.0
  */
 /*
  * TODO: All this animation code could be combined much better with
@@ -836,6 +839,8 @@
  *
  * @param imhtml  The GTK+ IM/HTML.
  * @param flags   The connection flag which describes the allowed types of formatting.
+ *
+ * @since 2.1.0
  */
 void gtk_imhtml_setup_entry(GtkIMHtml *imhtml, PurpleConnectionFlags flags);
 
--- a/pidgin/gtkimhtmltoolbar.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtkimhtmltoolbar.c	Tue Oct 23 17:27:12 2007 +0000
@@ -1166,6 +1166,7 @@
 	GtkWidget *label;
 	GtkWidget *insert_button;
 	GtkWidget *font_button;
+	GtkWidget *smiley_button;
 	GtkWidget *font_menu;
 	GtkWidget *insert_menu;
 	GtkWidget *menuitem;
@@ -1267,12 +1268,6 @@
 	insert_menu = gtk_menu_new();
 	g_object_set_data(G_OBJECT(toolbar), "insert_menu", insert_menu);
 
-	menuitem = gtk_menu_item_new_with_mnemonic(_("_Smiley"));
-	g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_button_clicked), toolbar->smiley);
-	gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem);
-	g_signal_connect(G_OBJECT(toolbar->smiley), "notify::sensitive",
-			G_CALLBACK(button_sensitiveness_changed), menuitem);
-
 	menuitem = gtk_menu_item_new_with_mnemonic(_("_Image"));
 	g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_button_clicked), toolbar->image);
 	gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem);
@@ -1294,6 +1289,24 @@
 	g_signal_connect(G_OBJECT(insert_button), "activate", G_CALLBACK(pidgin_menu_clicked), insert_menu);
 	g_signal_connect(G_OBJECT(insert_menu), "deactivate", G_CALLBACK(pidgin_menu_deactivate), insert_button);
 	toolbar->sml = NULL;
+	
+	/* Sep */
+	sep = gtk_vseparator_new();
+	gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 0);
+	gtk_widget_show_all(sep);
+
+	/* Smiley */
+	smiley_button = gtk_button_new();
+	gtk_button_set_relief(GTK_BUTTON(smiley_button), GTK_RELIEF_NONE);
+	bbox = gtk_hbox_new(FALSE, 3);
+	gtk_container_add(GTK_CONTAINER(smiley_button), bbox);
+	image = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_SMILEY, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
+	gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0);
+	label = gtk_label_new_with_mnemonic(_("_Smile!"));
+	gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0);
+	gtk_box_pack_start(GTK_BOX(box), smiley_button, FALSE, FALSE, 0);
+	g_signal_connect_swapped(G_OBJECT(smiley_button), "clicked", G_CALLBACK(gtk_button_clicked), toolbar->smiley);
+	gtk_widget_show_all(smiley_button);
 
 	gtk_box_pack_start(GTK_BOX(hbox), box, FALSE, FALSE, 0);
 	g_object_set_data(G_OBJECT(hbox), "lean-view", box);
--- a/pidgin/gtklog.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtklog.h	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 /**
  * @file gtklog.h GTK+ Log viewer
  * @ingroup pidgin
+ * @see @ref gtklog-signals
  */
 
 /* pidgin
--- a/pidgin/gtkmain.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtkmain.c	Tue Oct 23 17:27:12 2007 +0000
@@ -394,6 +394,9 @@
 		       "  -n, --nologin       don't automatically login\n"
 		       "  -l, --login[=NAME]  automatically login (optional argument NAME specifies\n"
 		       "                      account(s) to use, separated by commas)\n"
+#ifndef WIN32
+		       "  --display=DISPLAY   X display to use\n"
+#endif
 		       "  -v, --version       display the current version and exit\n"), PIDGIN_NAME, VERSION, name);
 	}
 
@@ -481,6 +484,7 @@
 		{"nologin",  no_argument,       NULL, 'n'},
 		{"session",  required_argument, NULL, 's'},
 		{"version",  no_argument,       NULL, 'v'},
+		{"display",  required_argument, NULL, 'D'},
 		{0, 0, 0, 0}
 	};
 
@@ -509,7 +513,7 @@
 #ifndef DEBUG
 		/* We translate this here in case the crash breaks gettext. */
 		segfault_message_tmp = g_strdup_printf(_(
-			"%s has segfaulted and attempted to dump a core file.\n"
+			"%s %s has segfaulted and attempted to dump a core file.\n"
 			"This is a bug in the software and has happened through\n"
 			"no fault of your own.\n\n"
 			"If you can reproduce the crash, please notify the developers\n"
@@ -523,7 +527,7 @@
 			"LSchiere (via AIM).  Contact information for Sean and Luke \n"
 			"on other protocols is at\n"
 			"%swiki/DeveloperPages\n"),
-			PIDGIN_NAME, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE
+			PIDGIN_NAME, VERSION, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE
 		);
 
 		/* we have to convert the message (UTF-8 to console
@@ -626,6 +630,9 @@
 		case 'm':   /* do not ensure single instance. */
 			opt_si = FALSE;
 			break;
+		case 'D':   /* --display */
+			/* handled by gtk_init_check below */
+			break;
 		case '?':	/* show terse help */
 		default:
 			show_usage(argv[0], TRUE);
--- a/pidgin/gtknotify.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtknotify.c	Tue Oct 23 17:27:12 2007 +0000
@@ -566,8 +566,8 @@
 	if (!GTK_WIDGET_VISIBLE(dialog)) {
 		GdkPixbuf *pixbuf = gtk_widget_render_icon(dialog, PIDGIN_STOCK_DIALOG_MAIL,
 							   gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL), NULL);
-		char *label_text = g_strdup_printf(ngettext("<b>You have %d new e-mail.</b>",
-							    "<b>You have %d new e-mails.</b>",
+		char *label_text = g_strdup_printf(ngettext("<b>%d new e-mail.</b>",
+							    "<b>%d new e-mails.</b>",
 							    mail_dialog->total_count), mail_dialog->total_count);
 		mail_dialog->in_use = TRUE;     /* So that _set_headline doesn't accidentally
 										   remove the notifications when replacing an
@@ -697,30 +697,30 @@
 	GtkTreeIter iter;
 	GdkPixbuf *pixbuf;
 	guint col_num;
-	guint i;
-	guint j;
+	GList *row, *column;
+	guint n;
 
 	gtk_list_store_clear(data->model);
 
 	pixbuf = pidgin_create_prpl_icon(purple_connection_get_account(gc), 0.5);
 
 	/* +1 is for the automagically created Status column. */
-	col_num = purple_notify_searchresults_get_columns_count(results) + 1;
+	col_num = g_list_length(results->columns) + 1;
 
-	for (i = 0; i < purple_notify_searchresults_get_rows_count(results); i++) {
-		GList *row = purple_notify_searchresults_row_get(results, i);
+	for (row = results->rows; row != NULL; row = row->next) {
 
 		gtk_list_store_append(model, &iter);
 		gtk_list_store_set(model, &iter, 0, pixbuf, -1);
 
-		for (j = 1; j < col_num; j++) {
+		n = 1;
+		for (column = row->data; column != NULL; column = column->next) {
 			GValue v;
-			char *data = g_list_nth_data(row, j - 1);
 
 			v.g_type = 0;
 			g_value_init(&v, G_TYPE_STRING);
-			g_value_set_string(&v, data);
-			gtk_list_store_set_value(model, &iter, j, &v);
+			g_value_set_string(&v, column->data);
+			gtk_list_store_set_value(model, &iter, n, &v);
+			n++;
 		}
 	}
 
@@ -740,6 +740,7 @@
 	GtkListStore *model;
 	GtkCellRenderer *renderer;
 	guint col_num;
+	GList *columniter;
 	guint i;
 
 	GtkWidget *vbox;
@@ -787,7 +788,7 @@
 	g_free(label_text);
 
 	/* +1 is for the automagically created Status column. */
-	col_num = purple_notify_searchresults_get_columns_count(results) + 1;
+	col_num = g_list_length(results->columns) + 1;
 
 	/* Setup the list model */
 	col_types = g_new0(GType, col_num);
@@ -822,12 +823,14 @@
 	gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview),
 					-1, "", renderer, "pixbuf", 0, NULL);
 
-	for (i = 1; i < col_num; i++) {
+	i = 1;
+	for (columniter = results->columns; columniter != NULL; columniter = columniter->next) {
+		PurpleNotifySearchColumn *column = columniter->data;
 		renderer = gtk_cell_renderer_text_new();
 
 		gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), -1,
-				purple_notify_searchresults_column_get_title(results, i-1),
-				renderer, "text", i, NULL);
+				column->title, renderer, "text", i, NULL);
+		i++;
 	}
 
 	for (i = 0; i < g_list_length(results->buttons); i++) {
--- a/pidgin/gtkprefs.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtkprefs.c	Tue Oct 23 17:27:12 2007 +0000
@@ -994,6 +994,8 @@
 
 	pidgin_prefs_checkbox(_("Show _formatting on incoming messages"),
 				PIDGIN_PREFS_ROOT "/conversations/show_incoming_formatting", vbox);
+	pidgin_prefs_checkbox(_("Close IMs immediately when the tab is closed"),
+				PIDGIN_PREFS_ROOT "/conversations/im/close_immediately", vbox);
 
 	iconpref1 = pidgin_prefs_checkbox(_("Show _detailed information"),
 			PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons", vbox);
--- a/pidgin/gtksession.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtksession.c	Tue Oct 23 17:27:12 2007 +0000
@@ -36,6 +36,7 @@
 #include <gdk/gdkx.h>
 #include <unistd.h>
 #include <fcntl.h>
+#include <gdk/gdk.h>
 
 #define ERROR_LENGTH 512
 
@@ -141,7 +142,7 @@
 /* my magic utility function */
 
 static gchar **session_make_command(gchar *client_id, gchar *config_dir) {
-	gint i = 2;
+	gint i = 4;
 	gint j = 0;
 	gchar **ret;
 
@@ -161,6 +162,9 @@
 		ret[j++] = g_strdup(config_dir);
 	}
 
+	ret[j++] = g_strdup("--display");
+	ret[j++] = g_strdup((gchar *)gdk_display_get_name(gdk_display_get_default()));
+
 	ret[j++] = NULL;
 
 	return ret;
--- a/pidgin/gtkutils.h	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/gtkutils.h	Tue Oct 23 17:27:12 2007 +0000
@@ -376,6 +376,8 @@
  *
  * @param conn   The connection to get information from.
  * @param name   The user to get information about.
+ *
+ * @since 2.1.0
  */
 void pidgin_retrieve_user_info(PurpleConnection *conn, const char *name);
 
@@ -385,6 +387,8 @@
  * @param conn   The connection to get information from.
  * @param name   The user to get information about.
  * @param chatid The chat id.
+ *
+ * @since 2.1.0
  */
 void pidgin_retrieve_user_info_in_chat(PurpleConnection *conn, const char *name, int chatid);
 
@@ -423,6 +427,8 @@
  *
  * @param w The widget that we want to label.
  * @param l A GtkLabel that we want to use as the label for the widget.
+ *
+ * @since 2.2.0
  */
 void pidgin_set_accessible_relations(GtkWidget *w, GtkWidget *l);
 
@@ -437,6 +443,8 @@
  *        where the menu shall be drawn. This is an output parameter.
  * @param push_in This is an output parameter?
  * @param data Not used by this particular position function.
+ *
+ * @since 2.1.0
  */
 void pidgin_menu_position_func_helper(GtkMenu *menu, gint *x, gint *y,
 										gboolean *push_in, gpointer data);
@@ -671,6 +679,8 @@
  *
  * @return               A newly created text GtkComboBox containing a GtkEntry
  *                       child.
+ *
+ * @since 2.2.0
  */
 GtkWidget *pidgin_text_combo_box_entry_new(const char *default_item, GList *items);
 
@@ -680,6 +690,8 @@
  * @param widget         The simple text GtkComboBoxEntry equivalent widget
  *
  * @return               The text in the widget's entry. It must not be freed
+ *
+ * @since 2.2.0
  */
 const char *pidgin_text_combo_box_entry_get_text(GtkWidget *widget);
 
@@ -688,6 +700,8 @@
  *
  * @param widget         The simple text GtkComboBoxEntry equivalent widget
  * @param text           The text to set
+ *
+ * @since 2.2.0
  */
 void pidgin_text_combo_box_entry_set_text(GtkWidget *widget, const char *text);
 
--- a/pidgin/pidginstock.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/pidginstock.c	Tue Oct 23 17:27:12 2007 +0000
@@ -114,11 +114,11 @@
 	{ PIDGIN_STOCK_STATUS_CHAT, 	"status", "chat.png",		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
 	{ PIDGIN_STOCK_STATUS_INVISIBLE,"status", "invisible.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
 	{ PIDGIN_STOCK_STATUS_XA, 	"status", "extended-away.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, PIDGIN_STOCK_STATUS_XA_I },
-	{ PIDGIN_STOCK_STATUS_LOGIN, 	"status", "log-in.png",		FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
-	{ PIDGIN_STOCK_STATUS_LOGOUT, 	"status", "log-out.png",	FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
+	{ PIDGIN_STOCK_STATUS_LOGIN, 	"status", "log-in.png",		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
+	{ PIDGIN_STOCK_STATUS_LOGOUT, 	"status", "log-out.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
 	{ PIDGIN_STOCK_STATUS_OFFLINE, 	"status", "offline.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_OFFLINE_I  },
 	{ PIDGIN_STOCK_STATUS_PERSON, 	"status", "person.png",		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_STATUS_MESSAGE, 	"toolbar", "message-new.png",   FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_STATUS_MESSAGE, 	"toolbar", "message-new.png",   TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
 	
 	{ PIDGIN_STOCK_STATUS_IGNORED,	"emblems", "blocked.png",	FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
 	{ PIDGIN_STOCK_STATUS_FOUNDER,	"emblems", "founder.png",	FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
Binary file pidgin/pixmaps/dialogs/64/cool.png has changed
Binary file pidgin/pixmaps/dialogs/64/error.png has changed
Binary file pidgin/pixmaps/dialogs/64/info.png has changed
Binary file pidgin/pixmaps/dialogs/64/mail.png has changed
Binary file pidgin/pixmaps/dialogs/64/question.png has changed
--- a/pidgin/pixmaps/dialogs/64/scalable/cool.svg	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/pixmaps/dialogs/64/scalable/cool.svg	Tue Oct 23 17:27:12 2007 +0000
@@ -7,101 +7,25 @@
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="64"
-   height="64"
+   width="48"
+   height="48"
    id="svg2"
    sodipodi:version="0.32"
-   inkscape:version="0.43"
+   inkscape:version="0.45"
    version="1.0"
-   sodipodi:docbase="/home/hbons/Desktop/Gaim Refresh/dialogs"
+   sodipodi:docbase="/home/hbons/Desktop/2.1.1/dialogs"
    sodipodi:docname="dialog-cool.svg"
-   inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/dialogs/dialog-cool.png"
+   inkscape:export-filename="/home/hbons/Desktop/newstyle.png"
    inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
+   inkscape:export-ydpi="90"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:modified="true">
   <defs
      id="defs4">
     <linearGradient
        inkscape:collect="always"
-       id="linearGradient2351">
-      <stop
-         style="stop-color:#eeeeec;stop-opacity:1;"
-         offset="0"
-         id="stop2353" />
-      <stop
-         style="stop-color:#eeeeec;stop-opacity:0;"
-         offset="1"
-         id="stop2355" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2351"
-       id="linearGradient2357"
-       x1="12.488563"
-       y1="5.8544211"
-       x2="12.488563"
-       y2="19.066195"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(60.97357,13.05831)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient2343">
-      <stop
-         style="stop-color:#babdb6;stop-opacity:1;"
-         offset="0"
-         id="stop2345" />
-      <stop
-         style="stop-color:#babdb6;stop-opacity:0;"
-         offset="1"
-         id="stop2347" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2343"
-       id="linearGradient2349"
-       x1="12.515625"
-       y1="8.7261219"
-       x2="12.515625"
-       y2="0.68458056"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.99284,0,0,1,61.04756,13.09375)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3121">
-      <stop
-         style="stop-color:#d3d7cf;stop-opacity:1;"
-         offset="0"
-         id="stop3123" />
-      <stop
-         style="stop-color:#d3d7cf;stop-opacity:0;"
-         offset="1"
-         id="stop3125" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3816">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop3818" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop3820" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3816"
-       id="radialGradient3822"
-       cx="31.112698"
-       cy="19.008621"
-       fx="31.112698"
-       fy="19.008621"
-       r="8.6620579"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
        id="linearGradient3104">
       <stop
          style="stop-color:#eeeeec;stop-opacity:1;"
@@ -123,15 +47,380 @@
        r="9.975256"
        gradientUnits="userSpaceOnUse"
        gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <filter
+       inkscape:collect="always"
+       x="-0.27879593"
+       width="1.5575919"
+       y="-0.78248727"
+       height="2.5649745"
+       id="filter3405">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="1.5438116"
+         id="feGaussianBlur3407" />
+    </filter>
+    <radialGradient
+       r="9.975256"
+       fy="18.005522"
+       fx="8.7359829"
+       cy="18.005522"
+       cx="8.7359829"
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2247"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3263">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop3265" />
+      <stop
+         style="stop-color:#555753;stop-opacity:0;"
+         offset="1"
+         id="stop3267" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2216"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3263"
+       id="linearGradient3269"
+       x1="12.845698"
+       y1="16.037401"
+       x2="10.698112"
+       y2="15.449714"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       r="9.975256"
+       fy="18.005522"
+       fx="8.7359829"
+       cy="18.005522"
+       cx="8.7359829"
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3191"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3150">
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="0"
+         id="stop3152" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:0;"
+         offset="1"
+         id="stop3154" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3175"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3150"
+       id="radialGradient3156"
+       cx="10.748654"
+       cy="10.457643"
+       fx="10.748654"
+       fy="10.457643"
+       r="6.6449099"
+       gradientTransform="matrix(-0.842757,0,0,-0.35721,19.80716,14.19321)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="18.005522"
+       fx="8.7359829"
+       cy="18.005522"
+       cx="8.7359829"
+       id="radialGradient2214"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2255"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3313"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <radialGradient
+       r="2.5781252"
+       fy="11.083743"
+       fx="17.911736"
+       cy="11.083743"
+       cx="17.911736"
+       gradientTransform="matrix(-1.591138,1.574803,-1.783257,-1.76495,68.854751,-2.8442229)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2259"
+       xlink:href="#linearGradient2382"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2867">
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="0"
+         id="stop2869" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:0;"
+         offset="1"
+         id="stop2871" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2847">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop2849" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:0;"
+         offset="1"
+         id="stop2851" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2382">
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="0"
+         id="stop2384" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:0;"
+         offset="1"
+         id="stop2386" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2230"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2847"
+       id="linearGradient2853"
+       x1="12.5"
+       y1="18.202251"
+       x2="12.746171"
+       y2="20.761486"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867"
+       id="linearGradient2873"
+       x1="12.720216"
+       y1="20.952612"
+       x2="12.720216"
+       y2="17.682426"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       id="radialGradient2303"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2349"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
+    <radialGradient
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       id="radialGradient2233"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2264"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
+    <radialGradient
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       id="radialGradient3771"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       r="8.6620579"
+       fy="19.008621"
+       fx="31.112698"
+       cy="19.008621"
+       cx="31.112698"
+       id="radialGradient3822"
+       xlink:href="#linearGradient3816"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3816"
+       inkscape:collect="always">
+      <stop
+         id="stop3818"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop3820"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3121"
+       inkscape:collect="always">
+      <stop
+         id="stop3123"
+         offset="0"
+         style="stop-color:#d3d7cf;stop-opacity:1;" />
+      <stop
+         id="stop3125"
+         offset="1"
+         style="stop-color:#d3d7cf;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(0.99284,0,0,1,61.04756,13.09375)"
+       gradientUnits="userSpaceOnUse"
+       y2="0.68458056"
+       x2="12.515625"
+       y1="8.7261219"
+       x1="12.515625"
+       id="linearGradient2349"
+       xlink:href="#linearGradient2343"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient2343"
+       inkscape:collect="always">
+      <stop
+         id="stop2345"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         id="stop2347"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(60.97357,13.05831)"
+       gradientUnits="userSpaceOnUse"
+       y2="19.066195"
+       x2="12.488563"
+       y1="5.8544211"
+       x1="12.488563"
+       id="linearGradient2357"
+       xlink:href="#linearGradient2351"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient2351"
+       inkscape:collect="always">
+      <stop
+         id="stop2353"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop2355"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3794"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
     <linearGradient
        inkscape:collect="always"
        xlink:href="#linearGradient3121"
-       id="linearGradient1551"
+       id="linearGradient3802"
        gradientUnits="userSpaceOnUse"
        x1="42.925175"
        y1="40.136646"
        x2="42.925175"
        y2="15.474488" />
+    <filter
+       inkscape:collect="always"
+       x="-0.47282609"
+       width="1.9456522"
+       y="-0.47282609"
+       height="1.9456522"
+       id="filter4019">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="1.552286"
+         id="feGaussianBlur4021" />
+    </filter>
   </defs>
   <sodipodi:namedview
      id="base"
@@ -140,17 +429,19 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="12.003863"
-     inkscape:cx="43.074856"
-     inkscape:cy="35.626159"
+     inkscape:zoom="15.839192"
+     inkscape:cx="40.272536"
+     inkscape:cy="20.18158"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="true"
-     fill="#555753"
-     inkscape:window-width="1267"
-     inkscape:window-height="971"
-     inkscape:window-x="6"
-     inkscape:window-y="21" />
+     fill="#fce94f"
+     inkscape:window-width="1440"
+     inkscape:window-height="847"
+     inkscape:window-x="3"
+     inkscape:window-y="25"
+     width="48px"
+     height="48px" />
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -167,25 +458,25 @@
      inkscape:groupmode="layer"
      id="layer1">
     <path
-       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.45064,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
-       sodipodi:ry="8.6620579"
-       sodipodi:rx="8.6620579"
-       sodipodi:cy="19.008621"
-       sodipodi:cx="31.112698"
-       id="path4318"
-       style="opacity:0.5;color:#000000;fill:url(#radialGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
        sodipodi:type="arc"
-       transform="matrix(2.383972,0,0,1.117487,-53.5217,33.04541)" />
+       style="opacity:0.64044949;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3405)"
+       id="path3140"
+       sodipodi:cx="10.748654"
+       sodipodi:cy="10.457643"
+       sodipodi:rx="6.6449099"
+       sodipodi:ry="2.3675451"
+       d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1  4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1  17.393564 10.457643 z"
+       transform="matrix(2.2723916,0,0,1.6905173,-0.1758194,23.510748)" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#f57900;stroke-width:0.53913006;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#cc6400;stroke-width:0.55559433;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path1307"
        sodipodi:cx="11.806158"
        sodipodi:cy="10.983024"
        sodipodi:rx="9.975256"
        sodipodi:ry="9.975256"
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
-       transform="matrix(1.854646,0,0,1.855034,-0.899768,22.62707)" />
+       transform="matrix(1.8043406,0,0,1.8043406,3.1976696,7.6828846)" />
     <path
        sodipodi:type="arc"
        style="opacity:0.79545456;fill:url(#radialGradient3114);fill-opacity:1;stroke:none;stroke-width:1.05274069;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@@ -195,98 +486,215 @@
        sodipodi:rx="9.975256"
        sodipodi:ry="9.975256"
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
-       transform="matrix(1.704217,0,0,1.704217,0.879746,24.28255)" />
+       transform="matrix(1.6958412,0,0,1.6958412,4.3182736,9.0348912)" />
     <path
        sodipodi:type="arc"
-       style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.57006598;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.58677971;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path2184"
        sodipodi:cx="11.806158"
        sodipodi:cy="10.983024"
        sodipodi:rx="9.975256"
        sodipodi:ry="9.975256"
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
-       transform="matrix(1.75441,0,0,1.753957,0.28417,23.73792)" />
+       transform="matrix(1.7042169,0,0,1.7042169,4.3797455,8.7825453)" />
+    <path
+       style="fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 23.500001,23.5 C 23.500001,26.26 21.260002,28.500001 18.500001,28.500001 C 15.740001,28.500001 13.5,26.26 13.5,23.5 C 13.5,20.74 15.740001,18.5 18.500001,18.5 C 21.260002,18.5 23.500001,20.74 23.500001,23.5 z "
+       id="path3154" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2172"
+       sodipodi:cx="9.7069349"
+       sodipodi:cy="9.6526775"
+       sodipodi:rx="1.0259361"
+       sodipodi:ry="1.9413869"
+       d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1  8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1  10.732871 9.6526775 z"
+       transform="matrix(1.9494387,0,0,1.2877392,1.0769258,12.069869)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:0.282258;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3152"
+       sodipodi:cx="9.7069349"
+       sodipodi:cy="9.6526775"
+       sodipodi:rx="1.0259361"
+       sodipodi:ry="1.9413869"
+       d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1  8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1  10.732871 9.6526775 z"
+       transform="matrix(4.8735976,0,0,2.5754783,-16.807694,-1.3602618)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3148"
+       sodipodi:cx="9.7069349"
+       sodipodi:cy="9.6526775"
+       sodipodi:rx="1.0259361"
+       sodipodi:ry="1.9413869"
+       d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1  8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1  10.732871 9.6526775 z"
+       transform="matrix(1.9494393,0,0,1.2877392,10.076919,12.069869)" />
+    <path
+       style="opacity:1;fill:#ce5c00;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 36,31 C 35.958854,34.901861 33.103799,38.559709 28.776926,39.671439 C 24.450054,40.78317 20.070187,38.984235 18,35.624852 C 24.906148,40.499205 32.307884,37.963138 36,31 z "
+       id="path2186"
+       sodipodi:nodetypes="cscc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2259"
+       sodipodi:cx="8.3258924"
+       sodipodi:cy="9.2232141"
+       sodipodi:rx="1.2276785"
+       sodipodi:ry="1.7410715"
+       d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
+       transform="matrix(3.5277688,0.705265,-0.6665314,1.855957,7.1597185,-7.1449202)"
+       sodipodi:start="3.5782199"
+       sodipodi:end="5.6135639"
+       sodipodi:open="true" />
     <path
-       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 32,46 C 30.709742,51.13847 26.288403,55 21.000001,55 C 15.7116,55 11.290259,51.13847 10,46 C 12.318243,49.327326 16.389775,52.419284 21.000001,52.419284 C 25.610224,52.419285 29.681757,49.327326 32,46 z "
-       id="path2186"
+       sodipodi:type="arc"
+       style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2261"
+       sodipodi:cx="8.3258924"
+       sodipodi:cy="9.2232141"
+       sodipodi:rx="1.2276785"
+       sodipodi:ry="1.7410715"
+       d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
+       transform="matrix(-3.5277688,0.705265,0.6665314,1.855957,41.208475,-4.1630498)"
+       sodipodi:start="3.5782199"
+       sodipodi:end="5.6135639"
+       sodipodi:open="true" />
+    <path
+       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.45064,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
+       sodipodi:ry="8.6620579"
+       sodipodi:rx="8.6620579"
+       sodipodi:cy="19.008621"
+       sodipodi:cx="31.112698"
+       id="path4318"
+       style="opacity:0.5;color:#000000;fill:url(#radialGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       sodipodi:type="arc"
+       transform="matrix(2.383972,0,0,1.117487,-126.51617,-6.51091)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#edd400;fill-opacity:1;stroke:#f57900;stroke-width:0.53913003;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3777"
+       sodipodi:cx="11.806158"
+       sodipodi:cy="10.983024"
+       sodipodi:rx="9.975256"
+       sodipodi:ry="9.975256"
+       d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
+       transform="matrix(1.854646,0,0,1.855034,-73.894233,-16.92925)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:0.79545456;fill:url(#radialGradient3794);fill-opacity:1;stroke:none;stroke-width:1.05274069;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3779"
+       sodipodi:cx="11.806158"
+       sodipodi:cy="10.983024"
+       sodipodi:rx="9.975256"
+       sodipodi:ry="9.975256"
+       d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
+       transform="matrix(1.704217,0,0,1.704217,-72.114719,-15.27377)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.57006598;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3781"
+       sodipodi:cx="11.806158"
+       sodipodi:cy="10.983024"
+       sodipodi:rx="9.975256"
+       sodipodi:ry="9.975256"
+       d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
+       transform="matrix(1.75441,0,0,1.753957,-72.710295,-15.8184)" />
+    <path
+       style="fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M -40.994465,6.44368 C -42.284723,11.58215 -46.706062,15.44368 -51.994464,15.44368 C -57.282865,15.44368 -61.704206,11.58215 -62.994465,6.44368 C -60.676222,9.771006 -56.60469,12.862964 -51.994464,12.862964 C -47.384241,12.862965 -43.312708,9.771006 -40.994465,6.44368 z "
+       id="path3783"
        sodipodi:nodetypes="cscsc" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path2191"
        sodipodi:cx="9.0598059"
        sodipodi:cy="8.7845774"
        sodipodi:rx="1.1679889"
        sodipodi:ry="1.4520943"
        d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1  7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1  10.227795 8.7845774 z"
-       transform="matrix(1.712345,0,0,2.754643,1.486487,14.80163)" />
+       transform="matrix(1.712345,0,0,2.754643,-71.507978,-24.75469)" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path2193"
        sodipodi:cx="9.0598059"
        sodipodi:cy="8.7845774"
        sodipodi:rx="1.1679889"
        sodipodi:ry="1.4520943"
        d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1  7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1  10.227795 8.7845774 z"
-       transform="matrix(1.712345,0,0,2.754643,9.486483,14.80163)" />
+       transform="matrix(1.712345,0,0,2.754643,-63.507982,-24.75469)" />
     <path
-       style="opacity:0.78977272;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1.66300178;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 6,37 C 6,41.951923 9.359998,46 13.499999,46 C 17.413598,46 20.659892,42.352213 21,37.773438 C 21.340107,42.352213 24.586402,46 28.499999,46 C 32.640004,46 36,41.951923 36,37 L 21,37 L 6,37 z "
-       id="path2264" />
-    <path
-       style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#787878;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
-       d="M 44.078659,9.5112136 C 34.84342,9.8834971 27.500059,15.977362 27.500059,23.405814 C 27.500059,27.671183 29.253586,32.180745 33.0662,34.729626 C 33.874807,38.292011 31.54507,41.058776 31.141507,41.494102 C 31.871844,41.290557 37.643487,39.670532 39.808221,37.260561 C 41.990193,37.168054 43.23089,37.300418 44.997262,37.300418 C 54.649949,37.300418 62.494467,31.073895 62.494465,23.405814 C 62.494465,15.737733 54.649949,9.5112136 44.997262,9.5112136 C 44.695616,9.5112136 44.37657,9.4992035 44.078659,9.5112136 z "
+       style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#787878;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       d="M -28.915806,-30.045106 C -38.151045,-29.672823 -45.494406,-23.578958 -45.494406,-16.150506 C -45.494406,-11.885137 -43.740879,-7.375575 -39.928265,-4.826694 C -39.119658,-1.264309 -41.449395,1.502456 -41.852958,1.937782 C -41.122621,1.734237 -35.350978,0.114212 -33.186244,-2.295759 C -31.004272,-2.388266 -29.763575,-2.255902 -27.997203,-2.255902 C -18.344516,-2.255902 -10.499998,-8.482425 -10.5,-16.150506 C -10.5,-23.818587 -18.344516,-30.045106 -27.997203,-30.045106 C -28.298849,-30.045106 -28.617895,-30.057116 -28.915806,-30.045106 z "
        id="path13316"
        sodipodi:nodetypes="cscccsssc" />
     <path
        sodipodi:type="inkscape:offset"
        inkscape:radius="-1.0020103"
-       inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
+       inkscape:original="M -28.90625 -30.03125 C -38.141489 -29.658966 -45.5 -23.584702 -45.5 -16.15625 C -45.499998 -11.890882 -43.750114 -7.361381 -39.9375 -4.8125 C -39.128893 -1.250115 -41.440187 1.502174 -41.84375 1.9375 C -41.113412 1.733955 -35.352234 0.128721 -33.1875 -2.28125 C -31.005527 -2.373757 -29.766372 -2.25 -28 -2.25 C -18.347312 -2.2499999 -10.499998 -8.488169 -10.5 -16.15625 C -10.5 -23.824332 -18.347313 -30.03125 -28 -30.03125 C -28.301645 -30.031249 -28.608339 -30.04326 -28.90625 -30.03125 z "
        xlink:href="#path13316"
        style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
        id="path13323"
        inkscape:href="#path13316"
-       d="M 43.9375,10.5 C 35.082559,10.856667 28.28125,16.643774 28.28125,23.4375 C 28.28125,27.441186 29.946384,31.636673 33.4375,33.96875 C 33.648247,34.117093 33.793739,34.340928 33.84375,34.59375 C 34.305353,36.625753 33.873291,38.418899 33.28125,39.75 C 33.741286,39.588469 33.859625,39.584381 34.375,39.375 C 36.123726,38.664548 38.008731,37.651133 38.875,36.6875 C 39.056781,36.478508 39.316956,36.354077 39.59375,36.34375 C 41.847992,36.248256 43.128683,36.40625 44.84375,36.40625 C 54.103198,36.406251 61.406252,30.447219 61.40625,23.4375 C 61.406249,16.427779 54.105354,10.5 44.84375,10.5 C 44.5143,10.499999 44.179676,10.490245 43.9375,10.5 z " />
+       d="M 44.125,10.5 C 35.308909,10.855387 28.5,16.639515 28.5,23.40625 C 28.5,27.397567 30.147439,31.550115 33.625,33.875 C 33.835747,34.023343 33.981239,34.247178 34.03125,34.5 C 34.490803,36.524599 34.051533,38.324325 33.46875,39.65625 C 33.930328,39.493414 34.045022,39.492531 34.5625,39.28125 C 36.305088,38.56977 38.200088,37.553862 39.0625,36.59375 C 39.244281,36.384758 39.504456,36.260327 39.78125,36.25 C 42.026592,36.154804 43.292249,36.3125 45,36.3125 C 54.22098,36.312499 61.500002,30.39071 61.5,23.40625 C 61.5,16.421791 54.220979,10.5 45,10.5 C 44.671757,10.5 44.368389,10.490188 44.125,10.5 z "
+       transform="translate(-72.994465,-39.55632)" />
     <path
        sodipodi:type="inkscape:offset"
        inkscape:radius="-1.0109046"
-       inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
+       inkscape:original="M -28.90625 -30.03125 C -38.141489 -29.658966 -45.5 -23.584702 -45.5 -16.15625 C -45.499998 -11.890882 -43.750114 -7.361381 -39.9375 -4.8125 C -39.128893 -1.250115 -41.440187 1.502174 -41.84375 1.9375 C -41.113412 1.733955 -35.352234 0.128721 -33.1875 -2.28125 C -31.005527 -2.373757 -29.766372 -2.25 -28 -2.25 C -18.347312 -2.2499999 -10.499998 -8.488169 -10.5 -16.15625 C -10.5 -23.824332 -18.347313 -30.03125 -28 -30.03125 C -28.301645 -30.031249 -28.608339 -30.04326 -28.90625 -30.03125 z "
        xlink:href="#path13316"
-       style="opacity:1;color:#000000;fill:url(#linearGradient1551);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
+       style="color:#000000;fill:url(#linearGradient3802);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
        id="path1336"
        inkscape:href="#path13316"
-       d="M 43.9375,10.5 C 35.086269,10.856517 28.28125,16.649624 28.28125,23.4375 C 28.28125,27.43874 29.949375,31.638672 33.4375,33.96875 C 33.659358,34.111954 33.816384,34.336276 33.875,34.59375 C 34.337119,36.628026 33.873842,38.417659 33.28125,39.75 C 33.741161,39.588512 33.859781,39.584317 34.375,39.375 C 36.123195,38.664763 38.010688,37.617706 38.875,36.65625 C 39.06282,36.459679 39.321894,36.347038 39.59375,36.34375 C 41.848554,36.248232 43.129202,36.40625 44.84375,36.40625 C 54.099359,36.406251 61.406252,30.441153 61.40625,23.4375 C 61.406249,16.433845 54.101534,10.5 44.84375,10.5 C 44.514064,10.499999 44.17917,10.490265 43.9375,10.5 z " />
+       d="M 44.125,10.5 C 35.31263,10.855237 28.5,16.645389 28.5,23.40625 C 28.5,27.395135 30.150413,31.552103 33.625,33.875 C 33.846858,34.018204 34.003884,34.242526 34.0625,34.5 C 34.519684,36.514161 34.077673,38.294264 33.5,39.625 C 33.948389,39.466107 34.062909,39.485228 34.5625,39.28125 C 36.304559,38.569986 38.202041,37.520438 39.0625,36.5625 C 39.25032,36.365929 39.509394,36.253288 39.78125,36.25 C 42.027154,36.154781 43.29277,36.3125 45,36.3125 C 54.217148,36.312499 61.500002,30.384642 61.5,23.40625 C 61.5,16.427859 54.217147,10.5 45,10.5 C 44.671521,10.5 44.367905,10.490207 44.125,10.5 z "
+       transform="translate(-72.994465,-39.55632)" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#555753;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="fill:#555753;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path1397"
        sodipodi:cx="9.0598059"
        sodipodi:cy="8.7845774"
        sodipodi:rx="1.1679889"
        sodipodi:ry="1.4520943"
        d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1  7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1  10.227795 8.7845774 z"
-       transform="matrix(0.856174,0,0,0.688661,33.24323,22.95041)" />
+       transform="matrix(0.856174,0,0,0.688661,-39.751235,-16.60591)" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#555753;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="fill:#555753;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path1403"
        sodipodi:cx="9.0598059"
        sodipodi:cy="8.7845774"
        sodipodi:rx="1.1679889"
        sodipodi:ry="1.4520943"
        d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1  7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1  10.227795 8.7845774 z"
-       transform="matrix(0.856172,0,0,0.688662,37.24325,22.9504)" />
+       transform="matrix(0.856172,0,0,0.688662,-35.751215,-16.60592)" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#555753;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="fill:#555753;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path1405"
        sodipodi:cx="9.0598059"
        sodipodi:cy="8.7845774"
        sodipodi:rx="1.1679889"
        sodipodi:ry="1.4520943"
        d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1  7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1  10.227795 8.7845774 z"
-       transform="matrix(0.856173,0,0,0.688662,41.24324,22.95039)" />
+       transform="matrix(0.856173,0,0,0.688662,-31.751225,-16.60593)" />
+    <path
+       style="opacity:0.78977272;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1.66300178;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 6.9375 23 C 6.6605 23 6.4375 23.223 6.4375 23.5 C 6.4375 23.777 6.6605 24 6.9375 24 L 11.0625 24 C 11.531404 27.382552 14.351819 30 17.75 30 C 21.272241 30 24.193903 27.155019 24.5 23.59375 C 24.806096 27.15502 27.727762 30 31.25 30 C 34.648185 30 37.468596 27.382552 37.9375 24 L 42.0625 24 C 42.3395 24 42.5625 23.777 42.5625 23.5 C 42.5625 23.223 42.3395 23 42.0625 23 L 38 23 L 24.5 23 L 11.5 23 L 11 23 L 6.9375 23 z "
+       id="path2264" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4019)"
+       id="path3813"
+       sodipodi:cx="13.826463"
+       sodipodi:cy="24.19828"
+       sodipodi:rx="3.2829957"
+       sodipodi:ry="3.2829957"
+       d="M 17.109458 24.19828 A 3.2829957 3.2829957 0 1 1  10.543467,24.19828 A 3.2829957 3.2829957 0 1 1  17.109458 24.19828 z"
+       transform="matrix(0.9137996,0,0,0.9137994,-1.6346163,0.8876255)" />
   </g>
 </svg>
--- a/pidgin/pixmaps/dialogs/64/scalable/error.svg	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/pixmaps/dialogs/64/scalable/error.svg	Tue Oct 23 17:27:12 2007 +0000
@@ -7,101 +7,25 @@
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="64"
-   height="64"
+   width="48"
+   height="48"
    id="svg2"
    sodipodi:version="0.32"
-   inkscape:version="0.43"
+   inkscape:version="0.45"
    version="1.0"
-   sodipodi:docbase="/home/hbons/Desktop"
-   sodipodi:docname="dialog-error.svg"
-   inkscape:export-filename="/home/hbons/Desktop/dialog-warning.png"
+   sodipodi:docbase="/home/hbons/Desktop/2.1.1/dialogs"
+   sodipodi:docname="dialog--error.svg"
+   inkscape:export-filename="/home/hbons/Desktop/newstyle.png"
    inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
+   inkscape:export-ydpi="90"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:modified="true">
   <defs
      id="defs4">
     <linearGradient
        inkscape:collect="always"
-       id="linearGradient2239">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop2241" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop2243" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2239"
-       id="linearGradient2245"
-       x1="15.535398"
-       y1="1.8014067"
-       x2="15.535398"
-       y2="48.674999"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.667328,0,0,0.667328,34.82201,12.82201)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient2186">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop2188" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop2190" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2186"
-       id="linearGradient2194"
-       x1="11.226587"
-       y1="-5.4832759"
-       x2="11.226587"
-       y2="17.697369"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.946132,0,0,0.946123,34.14115,12.15018)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3121">
-      <stop
-         style="stop-color:#d3d7cf;stop-opacity:1;"
-         offset="0"
-         id="stop3123" />
-      <stop
-         style="stop-color:#d3d7cf;stop-opacity:0;"
-         offset="1"
-         id="stop3125" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3816">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop3818" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop3820" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3816"
-       id="radialGradient3822"
-       cx="31.112698"
-       cy="19.008621"
-       fx="31.112698"
-       fy="19.008621"
-       r="8.6620579"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
        id="linearGradient3104">
       <stop
          style="stop-color:#eeeeec;stop-opacity:1;"
@@ -123,15 +47,462 @@
        r="9.975256"
        gradientUnits="userSpaceOnUse"
        gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <filter
+       inkscape:collect="always"
+       x="-0.27879593"
+       width="1.5575919"
+       y="-0.78248727"
+       height="2.5649745"
+       id="filter3405">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="1.5438116"
+         id="feGaussianBlur3407" />
+    </filter>
+    <radialGradient
+       r="9.975256"
+       fy="18.005522"
+       fx="8.7359829"
+       cy="18.005522"
+       cx="8.7359829"
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2247"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3263">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop3265" />
+      <stop
+         style="stop-color:#555753;stop-opacity:0;"
+         offset="1"
+         id="stop3267" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2216"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3263"
+       id="linearGradient3269"
+       x1="12.845698"
+       y1="16.037401"
+       x2="10.698112"
+       y2="15.449714"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       r="9.975256"
+       fy="18.005522"
+       fx="8.7359829"
+       cy="18.005522"
+       cx="8.7359829"
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3191"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3150">
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="0"
+         id="stop3152" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:0;"
+         offset="1"
+         id="stop3154" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3175"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3150"
+       id="radialGradient3156"
+       cx="10.748654"
+       cy="10.457643"
+       fx="10.748654"
+       fy="10.457643"
+       r="6.6449099"
+       gradientTransform="matrix(-0.842757,0,0,-0.35721,19.80716,14.19321)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="18.005522"
+       fx="8.7359829"
+       cy="18.005522"
+       cx="8.7359829"
+       id="radialGradient2214"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2255"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3313"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <radialGradient
+       r="2.5781252"
+       fy="11.083743"
+       fx="17.911736"
+       cy="11.083743"
+       cx="17.911736"
+       gradientTransform="matrix(-1.591138,1.574803,-1.783257,-1.76495,68.854751,-2.8442229)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2259"
+       xlink:href="#linearGradient2382"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2867">
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="0"
+         id="stop2869" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:0;"
+         offset="1"
+         id="stop2871" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2847">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop2849" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:0;"
+         offset="1"
+         id="stop2851" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2382">
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="0"
+         id="stop2384" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:0;"
+         offset="1"
+         id="stop2386" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2230"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2847"
+       id="linearGradient2853"
+       x1="12.5"
+       y1="18.202251"
+       x2="12.746171"
+       y2="20.761486"
+       gradientUnits="userSpaceOnUse" />
     <linearGradient
        inkscape:collect="always"
-       xlink:href="#linearGradient3121"
-       id="linearGradient1551"
+       xlink:href="#linearGradient2867"
+       id="linearGradient2873"
+       x1="12.720216"
+       y1="20.952612"
+       x2="12.720216"
+       y2="17.682426"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       id="radialGradient2303"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2349"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
+    <radialGradient
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       id="radialGradient2233"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2264"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
+    <radialGradient
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3456"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3454"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <radialGradient
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3452"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3450"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="17.682426"
+       x2="12.720216"
+       y1="20.952612"
+       x1="12.720216"
+       id="linearGradient3448"
+       xlink:href="#linearGradient2867"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="20.761486"
+       x2="12.746171"
+       y1="18.202251"
+       x1="12.5"
+       id="linearGradient3446"
+       xlink:href="#linearGradient2847"
+       inkscape:collect="always" />
+    <radialGradient
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
        gradientUnits="userSpaceOnUse"
-       x1="42.925175"
-       y1="40.136646"
-       x2="42.925175"
-       y2="15.474488" />
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       id="radialGradient3444"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2382"
+       id="radialGradient3424"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.591138,1.574803,-1.783257,-1.76495,68.854751,-2.8442229)"
+       cx="17.911736"
+       cy="11.083743"
+       fx="17.911736"
+       fy="11.083743"
+       r="2.5781252" />
+    <radialGradient
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       id="radialGradient3422"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3420"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3418"
+       cx="8.7359829"
+       cy="18.005522"
+       fx="8.7359829"
+       fy="18.005522"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.842757,0,0,-0.35721,19.80716,14.19321)"
+       r="6.6449099"
+       fy="10.457643"
+       fx="10.748654"
+       cy="10.457643"
+       cx="10.748654"
+       id="radialGradient3416"
+       xlink:href="#linearGradient3150"
+       inkscape:collect="always" />
+    <radialGradient
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       id="radialGradient3414"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3406"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       cx="8.7359829"
+       cy="18.005522"
+       fx="8.7359829"
+       fy="18.005522"
+       r="9.975256" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="15.449714"
+       x2="10.698112"
+       y1="16.037401"
+       x1="12.845698"
+       id="linearGradient3404"
+       xlink:href="#linearGradient3263"
+       inkscape:collect="always" />
+    <radialGradient
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       id="radialGradient3402"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3394"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       cx="8.7359829"
+       cy="18.005522"
+       fx="8.7359829"
+       fy="18.005522"
+       r="9.975256" />
+    <radialGradient
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       id="radialGradient3388"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3479"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
   </defs>
   <sodipodi:namedview
      id="base"
@@ -140,17 +511,19 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="29.556978"
-     inkscape:cx="52.766638"
-     inkscape:cy="42.047904"
+     inkscape:zoom="11.2"
+     inkscape:cx="49.816631"
+     inkscape:cy="24.376627"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="true"
-     fill="#cc0000"
-     inkscape:window-width="1267"
-     inkscape:window-height="971"
-     inkscape:window-x="6"
-     inkscape:window-y="21" />
+     fill="#fce94f"
+     inkscape:window-width="1440"
+     inkscape:window-height="847"
+     inkscape:window-x="3"
+     inkscape:window-y="25"
+     width="48px"
+     height="48px" />
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -167,25 +540,25 @@
      inkscape:groupmode="layer"
      id="layer1">
     <path
-       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.45064,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
-       sodipodi:ry="8.6620579"
-       sodipodi:rx="8.6620579"
-       sodipodi:cy="19.008621"
-       sodipodi:cx="31.112698"
-       id="path4318"
-       style="opacity:0.5;color:#000000;fill:url(#radialGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
        sodipodi:type="arc"
-       transform="matrix(2.383972,0,0,1.117487,-53.5217,33.04541)" />
+       style="opacity:0.64044949;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3405)"
+       id="path3140"
+       sodipodi:cx="10.748654"
+       sodipodi:cy="10.457643"
+       sodipodi:rx="6.6449099"
+       sodipodi:ry="2.3675451"
+       d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1  4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1  17.393564 10.457643 z"
+       transform="matrix(2.2723916,0,0,1.6905173,-0.1758194,23.510748)" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#f57900;stroke-width:0.53913006;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#cc6400;stroke-width:0.55559433;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path1307"
        sodipodi:cx="11.806158"
        sodipodi:cy="10.983024"
        sodipodi:rx="9.975256"
        sodipodi:ry="9.975256"
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
-       transform="matrix(1.854646,0,0,1.855034,-0.899768,22.62707)" />
+       transform="matrix(1.8043406,0,0,1.8043406,3.1976696,7.6828846)" />
     <path
        sodipodi:type="arc"
        style="opacity:0.79545456;fill:url(#radialGradient3114);fill-opacity:1;stroke:none;stroke-width:1.05274069;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@@ -195,93 +568,55 @@
        sodipodi:rx="9.975256"
        sodipodi:ry="9.975256"
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
-       transform="matrix(1.704217,0,0,1.704217,0.879746,24.28255)" />
+       transform="matrix(1.6958412,0,0,1.6958412,4.3182736,9.0348912)" />
     <path
        sodipodi:type="arc"
-       style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.57006598;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.58677971;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path2184"
        sodipodi:cx="11.806158"
        sodipodi:cy="10.983024"
        sodipodi:rx="9.975256"
        sodipodi:ry="9.975256"
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
-       transform="matrix(1.75441,0,0,1.753957,0.28417,23.73792)" />
-    <path
-       style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#787878;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
-       d="M 44.078659,9.5112136 C 34.84342,9.8834971 27.500059,15.977362 27.500059,23.405814 C 27.500059,27.671183 29.253586,32.180745 33.0662,34.729626 C 33.874807,38.292011 31.54507,41.058776 31.141507,41.494102 C 31.871844,41.290557 37.643487,39.670532 39.808221,37.260561 C 41.990193,37.168054 43.23089,37.300418 44.997262,37.300418 C 54.649949,37.300418 62.494467,31.073895 62.494465,23.405814 C 62.494465,15.737733 54.649949,9.5112136 44.997262,9.5112136 C 44.695616,9.5112136 44.37657,9.4992035 44.078659,9.5112136 z "
-       id="path13316"
-       sodipodi:nodetypes="cscccsssc" />
-    <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-1.0020103"
-       inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
-       xlink:href="#path13316"
-       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="path13323"
-       inkscape:href="#path13316"
-       d="M 43.9375,10.5 C 35.082559,10.856667 28.28125,16.643774 28.28125,23.4375 C 28.28125,27.441186 29.946384,31.636673 33.4375,33.96875 C 33.648247,34.117093 33.793739,34.340928 33.84375,34.59375 C 34.305353,36.625753 33.873291,38.418899 33.28125,39.75 C 33.741286,39.588469 33.859625,39.584381 34.375,39.375 C 36.123726,38.664548 38.008731,37.651133 38.875,36.6875 C 39.056781,36.478508 39.316956,36.354077 39.59375,36.34375 C 41.847992,36.248256 43.128683,36.40625 44.84375,36.40625 C 54.103198,36.406251 61.406252,30.447219 61.40625,23.4375 C 61.406249,16.427779 54.105354,10.5 44.84375,10.5 C 44.5143,10.499999 44.179676,10.490245 43.9375,10.5 z " />
-    <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-1.0109046"
-       inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
-       xlink:href="#path13316"
-       style="opacity:1;color:#000000;fill:url(#linearGradient1551);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
-       id="path1336"
-       inkscape:href="#path13316"
-       d="M 43.9375,10.5 C 35.086269,10.856517 28.28125,16.649624 28.28125,23.4375 C 28.28125,27.43874 29.949375,31.638672 33.4375,33.96875 C 33.659358,34.111954 33.816384,34.336276 33.875,34.59375 C 34.337119,36.628026 33.873842,38.417659 33.28125,39.75 C 33.741161,39.588512 33.859781,39.584317 34.375,39.375 C 36.123195,38.664763 38.010688,37.617706 38.875,36.65625 C 39.06282,36.459679 39.321894,36.347038 39.59375,36.34375 C 41.848554,36.248232 43.129202,36.40625 44.84375,36.40625 C 54.099359,36.406251 61.406252,30.441153 61.40625,23.4375 C 61.406249,16.433845 54.101534,10.5 44.84375,10.5 C 44.514064,10.499999 44.17917,10.490265 43.9375,10.5 z " />
+       transform="matrix(1.7042169,0,0,1.7042169,4.3797455,8.7825453)" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path2193"
-       sodipodi:cx="9.0598059"
-       sodipodi:cy="8.7845774"
-       sodipodi:rx="1.1679889"
-       sodipodi:ry="1.4520943"
-       d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1  7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1  10.227795 8.7845774 z"
-       transform="matrix(1.712345,0,0,2.754643,9.486483,14.80163)" />
+       style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2259"
+       sodipodi:cx="8.3258924"
+       sodipodi:cy="9.2232141"
+       sodipodi:rx="1.2276785"
+       sodipodi:ry="1.7410715"
+       d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
+       transform="matrix(3.5277688,0.705265,-0.6665314,1.855957,7.2901885,-4.1630498)"
+       sodipodi:start="3.5782199"
+       sodipodi:end="5.6135639"
+       sodipodi:open="true" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path2191"
-       sodipodi:cx="9.0598059"
-       sodipodi:cy="8.7845774"
-       sodipodi:rx="1.1679889"
-       sodipodi:ry="1.4520943"
-       d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1  7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1  10.227795 8.7845774 z"
-       transform="matrix(1.712345,0,0,2.754643,1.486487,14.80163)" />
+       style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2261"
+       sodipodi:cx="8.3258924"
+       sodipodi:cy="9.2232141"
+       sodipodi:rx="1.2276785"
+       sodipodi:ry="1.7410715"
+       d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
+       transform="matrix(-3.5277688,0.705265,0.6665314,1.855957,41.208475,-4.1630498)"
+       sodipodi:start="3.5782199"
+       sodipodi:end="5.6135639"
+       sodipodi:open="true" />
     <path
        style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 32,55 C 30.709742,49.86153 26.288403,46 21.000001,46 C 15.7116,46 11.290259,49.86153 10,55 C 12.318243,51.672674 16.389775,48.580716 21.000001,48.580716 C 25.610224,48.580715 29.681757,51.672674 32,55 z "
-       id="path2186"
-       sodipodi:nodetypes="cscsc" />
-    <path
-       sodipodi:type="arc"
-       style="opacity:1;color:#000000;fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.36561811px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="path1311"
-       sodipodi:cx="15.590227"
-       sodipodi:cy="16.57217"
-       sodipodi:rx="14.345175"
-       sodipodi:ry="14.345175"
-       d="M 29.935402 16.57217 A 14.345175 14.345175 0 1 1  1.2450523,16.57217 A 14.345175 14.345175 0 1 1  29.935402 16.57217 z"
-       transform="matrix(0.732268,0,0,0.732268,34.07926,11.36022)" />
+       d="M 17,21 L 17,22 L 18,22 L 18,21 L 17,21 z M 18,22 L 18,23 L 19,23 L 19,22 L 18,22 z M 19,23 L 19,24 L 20,24 L 20,23 L 19,23 z M 20,23 L 21,23 L 21,22 L 20,22 L 20,23 z M 21,22 L 22,22 L 22,21 L 21,21 L 21,22 z M 20,24 L 20,25 L 21,25 L 21,24 L 20,24 z M 21,25 L 21,26 L 22,26 L 22,25 L 21,25 z M 19,24 L 18,24 L 18,25 L 19,25 L 19,24 z M 18,25 L 17,25 L 17,26 L 18,26 L 18,25 z "
+       id="rect3307" />
     <path
-       sodipodi:type="arc"
-       style="opacity:1;color:#000000;fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:#a40000;stroke-width:1.4342562px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="path1339"
-       sodipodi:cx="15.590227"
-       sodipodi:cy="16.57217"
-       sodipodi:rx="14.345175"
-       sodipodi:ry="14.345175"
-       d="M 29.935402 16.57217 A 14.345175 14.345175 0 1 1  1.2450523,16.57217 A 14.345175 14.345175 0 1 1  29.935402 16.57217 z"
-       transform="matrix(0.697225,0,0,0.697224,34.63061,11.94498)" />
+       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 27,21 L 27,22 L 28,22 L 28,21 L 27,21 z M 28,22 L 28,23 L 29,23 L 29,22 L 28,22 z M 29,23 L 29,24 L 30,24 L 30,23 L 29,23 z M 30,23 L 31,23 L 31,22 L 30,22 L 30,23 z M 31,22 L 32,22 L 32,21 L 31,21 L 31,22 z M 30,24 L 30,25 L 31,25 L 31,24 L 30,24 z M 31,25 L 31,26 L 32,26 L 32,25 L 31,25 z M 29,24 L 28,24 L 28,25 L 29,25 L 29,24 z M 28,25 L 27,25 L 27,26 L 28,26 L 28,25 z "
+       id="path3326" />
     <path
-       style="opacity:0.6;color:#000000;fill:url(#linearGradient2194);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2245);stroke-width:1.00000024px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       d="M 54.501284,23.499216 C 54.501284,28.468337 50.46837,32.501247 45.499243,32.501247 C 40.530116,32.501247 36.497202,28.468337 36.497202,23.499216 C 36.497202,18.530098 40.530116,14.497189 45.499243,14.497189 C 50.46837,14.497189 54.501284,18.530098 54.501284,23.499216 z "
-       id="path2220" />
-    <path
-       style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#a40000;stroke-width:0.99999881px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       d="M 53.472399,23.373021 C 53.472399,25.828104 51.776345,25.485533 45.279112,25.485533 C 38.811218,25.485533 37.51405,25.897351 37.51405,23.485931 C 37.51405,21.235525 38.820793,21.494116 45.34652,21.494116 C 51.901652,21.494116 53.472399,20.942767 53.472399,23.373021 z "
-       id="path1341"
-       sodipodi:nodetypes="czczz" />
+       style="fill:#ce5c00;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 34,39 C 32.885686,35.003412 29.067255,32 24.5,32 C 19.932746,32 16.114315,35.003412 15,39 C 17.00212,36.412082 20.518441,33.850868 24.5,33.850868 C 28.481556,33.850866 31.99788,36.412082 34,39 z "
+       id="path3492"
+       sodipodi:nodetypes="cscsc" />
   </g>
 </svg>
--- a/pidgin/pixmaps/dialogs/64/scalable/info.svg	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/pixmaps/dialogs/64/scalable/info.svg	Tue Oct 23 17:27:12 2007 +0000
@@ -7,147 +7,25 @@
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="64"
-   height="64"
+   width="48"
+   height="48"
    id="svg2"
    sodipodi:version="0.32"
-   inkscape:version="0.43"
+   inkscape:version="0.45"
    version="1.0"
    sodipodi:docbase="/home/hbons/Desktop"
-   sodipodi:docname="dialog-info.svg"
-   inkscape:export-filename="/home/hbons/Desktop/dialog-info.png"
+   sodipodi:docname="dialog.svg"
+   inkscape:export-filename="/home/hbons/Desktop/newstyle.png"
    inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
+   inkscape:export-ydpi="90"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:modified="true">
   <defs
      id="defs4">
     <linearGradient
        inkscape:collect="always"
-       id="linearGradient2226">
-      <stop
-         style="stop-color:#729fcf;stop-opacity:1;"
-         offset="0"
-         id="stop2228" />
-      <stop
-         style="stop-color:#729fcf;stop-opacity:0;"
-         offset="1"
-         id="stop2230" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2226"
-       id="radialGradient2232"
-       cx="6.8598728"
-       cy="12.836589"
-       fx="6.8598728"
-       fy="12.836589"
-       r="6"
-       gradientTransform="matrix(-1.535401,1.457479,-1.350253,-1.281728,72.86699,21.2066)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3150">
-      <stop
-         style="stop-color:#2e3436;stop-opacity:1;"
-         offset="0"
-         id="stop3152" />
-      <stop
-         style="stop-color:#2e3436;stop-opacity:0;"
-         offset="1"
-         id="stop3154" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3150"
-       id="radialGradient3156"
-       cx="10.748654"
-       cy="10.457643"
-       fx="10.748654"
-       fy="10.457643"
-       r="6.6449099"
-       gradientTransform="matrix(-0.842757,5.698892e-16,-4.565819e-9,-0.35721,19.80716,14.19321)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient2351">
-      <stop
-         style="stop-color:#eeeeec;stop-opacity:1;"
-         offset="0"
-         id="stop2353" />
-      <stop
-         style="stop-color:#eeeeec;stop-opacity:0;"
-         offset="1"
-         id="stop2355" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2351"
-       id="linearGradient2357"
-       x1="12.488563"
-       y1="5.8544211"
-       x2="12.488563"
-       y2="19.066195"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,1.005826,31.99641,10.9359)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient2343">
-      <stop
-         style="stop-color:#babdb6;stop-opacity:1;"
-         offset="0"
-         id="stop2345" />
-      <stop
-         style="stop-color:#babdb6;stop-opacity:0;"
-         offset="1"
-         id="stop2347" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2343"
-       id="linearGradient2349"
-       x1="12.515625"
-       y1="8.7261219"
-       x2="12.515625"
-       y2="0.68458056"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.993429,0,0,1.004681,32.05868,11.024)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3121">
-      <stop
-         style="stop-color:#d3d7cf;stop-opacity:1;"
-         offset="0"
-         id="stop3123" />
-      <stop
-         style="stop-color:#d3d7cf;stop-opacity:0;"
-         offset="1"
-         id="stop3125" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3816">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop3818" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop3820" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3816"
-       id="radialGradient3822"
-       cx="31.112698"
-       cy="19.008621"
-       fx="31.112698"
-       fy="19.008621"
-       r="8.6620579"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
        id="linearGradient3104">
       <stop
          style="stop-color:#eeeeec;stop-opacity:1;"
@@ -169,15 +47,259 @@
        r="9.975256"
        gradientUnits="userSpaceOnUse"
        gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <filter
+       inkscape:collect="always"
+       x="-0.27879593"
+       width="1.5575919"
+       y="-0.78248727"
+       height="2.5649745"
+       id="filter3405">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="1.5438116"
+         id="feGaussianBlur3407" />
+    </filter>
+    <radialGradient
+       r="9.975256"
+       fy="18.005522"
+       fx="8.7359829"
+       cy="18.005522"
+       cx="8.7359829"
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2247"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3263">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop3265" />
+      <stop
+         style="stop-color:#555753;stop-opacity:0;"
+         offset="1"
+         id="stop3267" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2216"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3263"
+       id="linearGradient3269"
+       x1="12.845698"
+       y1="16.037401"
+       x2="10.698112"
+       y2="15.449714"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       r="9.975256"
+       fy="18.005522"
+       fx="8.7359829"
+       cy="18.005522"
+       cx="8.7359829"
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3191"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
     <linearGradient
        inkscape:collect="always"
-       xlink:href="#linearGradient3121"
-       id="linearGradient1551"
+       id="linearGradient3150">
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="0"
+         id="stop3152" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:0;"
+         offset="1"
+         id="stop3154" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3175"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3150"
+       id="radialGradient3156"
+       cx="10.748654"
+       cy="10.457643"
+       fx="10.748654"
+       fy="10.457643"
+       r="6.6449099"
+       gradientTransform="matrix(-0.842757,0,0,-0.35721,19.80716,14.19321)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="18.005522"
+       fx="8.7359829"
+       cy="18.005522"
+       cx="8.7359829"
+       id="radialGradient2214"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2255"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3313"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <radialGradient
+       r="2.5781252"
+       fy="11.083743"
+       fx="17.911736"
+       cy="11.083743"
+       cx="17.911736"
+       gradientTransform="matrix(-1.591138,1.574803,-1.783257,-1.76495,68.854751,-2.8442229)"
        gradientUnits="userSpaceOnUse"
-       x1="42.925175"
-       y1="40.136646"
-       x2="42.925175"
-       y2="15.474488" />
+       id="radialGradient2259"
+       xlink:href="#linearGradient2382"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2867">
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="0"
+         id="stop2869" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:0;"
+         offset="1"
+         id="stop2871" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2847">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop2849" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:0;"
+         offset="1"
+         id="stop2851" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2382">
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="0"
+         id="stop2384" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:0;"
+         offset="1"
+         id="stop2386" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2230"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2847"
+       id="linearGradient2853"
+       x1="12.5"
+       y1="18.202251"
+       x2="12.746171"
+       y2="20.761486"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867"
+       id="linearGradient2873"
+       x1="12.720216"
+       y1="20.952612"
+       x2="12.720216"
+       y2="17.682426"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       id="radialGradient2303"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2349"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
+    <radialGradient
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       id="radialGradient2233"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2264"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
   </defs>
   <sodipodi:namedview
      id="base"
@@ -186,17 +308,19 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="6.0019314"
-     inkscape:cx="46.66506"
-     inkscape:cy="27.955978"
+     inkscape:zoom="11.2"
+     inkscape:cx="49.304407"
+     inkscape:cy="24.325832"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="true"
-     fill="#2e3436"
-     inkscape:window-width="1267"
-     inkscape:window-height="971"
-     inkscape:window-x="6"
-     inkscape:window-y="21" />
+     fill="#fce94f"
+     inkscape:window-width="1440"
+     inkscape:window-height="845"
+     inkscape:window-x="3"
+     inkscape:window-y="25"
+     width="48px"
+     height="48px" />
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -213,25 +337,25 @@
      inkscape:groupmode="layer"
      id="layer1">
     <path
-       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.45064,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
-       sodipodi:ry="8.6620579"
-       sodipodi:rx="8.6620579"
-       sodipodi:cy="19.008621"
-       sodipodi:cx="31.112698"
-       id="path4318"
-       style="opacity:0.5;color:#000000;fill:url(#radialGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
        sodipodi:type="arc"
-       transform="matrix(2.383972,0,0,1.117487,-53.5217,33.04541)" />
+       style="opacity:0.64044949;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3405)"
+       id="path3140"
+       sodipodi:cx="10.748654"
+       sodipodi:cy="10.457643"
+       sodipodi:rx="6.6449099"
+       sodipodi:ry="2.3675451"
+       d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1  4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1  17.393564 10.457643 z"
+       transform="matrix(2.2723916,0,0,1.6905173,-0.1758194,23.510748)" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#f57900;stroke-width:0.53913006;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#cc6400;stroke-width:0.55559433;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path1307"
        sodipodi:cx="11.806158"
        sodipodi:cy="10.983024"
        sodipodi:rx="9.975256"
        sodipodi:ry="9.975256"
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
-       transform="matrix(1.854646,0,0,1.855034,-0.899768,22.62707)" />
+       transform="matrix(1.8043406,0,0,1.8043406,3.1976696,7.6828846)" />
     <path
        sodipodi:type="arc"
        style="opacity:0.79545456;fill:url(#radialGradient3114);fill-opacity:1;stroke:none;stroke-width:1.05274069;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@@ -241,161 +365,81 @@
        sodipodi:rx="9.975256"
        sodipodi:ry="9.975256"
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
-       transform="matrix(1.704217,0,0,1.704217,0.879746,24.28255)" />
+       transform="matrix(1.6958412,0,0,1.6958412,4.3182736,9.0348912)" />
     <path
        sodipodi:type="arc"
-       style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.57006598;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.58677971;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path2184"
        sodipodi:cx="11.806158"
        sodipodi:cy="10.983024"
        sodipodi:rx="9.975256"
        sodipodi:ry="9.975256"
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
-       transform="matrix(1.75441,0,0,1.753957,0.28417,23.73792)" />
+       transform="matrix(1.7042169,0,0,1.7042169,4.3797455,8.7825453)" />
+    <path
+       style="fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 23.500001,23.5 C 23.500001,26.26 21.260002,28.500001 18.500001,28.500001 C 15.740001,28.500001 13.5,26.26 13.5,23.5 C 13.5,20.74 15.740001,18.5 18.500001,18.5 C 21.260002,18.5 23.500001,20.74 23.500001,23.5 z "
+       id="path3154" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2172"
+       sodipodi:cx="9.7069349"
+       sodipodi:cy="9.6526775"
+       sodipodi:rx="1.0259361"
+       sodipodi:ry="1.9413869"
+       d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1  8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1  10.732871 9.6526775 z"
+       transform="matrix(1.9494387,0,0,1.2877392,1.0769249,12.069869)" />
     <path
-       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 32,46 C 30.709742,51.13847 26.288403,55 21.000001,55 C 15.7116,55 11.290259,51.13847 10,46 C 12.318243,49.327326 16.389775,52.419284 21.000001,52.419284 C 25.610224,52.419285 29.681757,49.327326 32,46 z "
+       sodipodi:type="arc"
+       style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:0.282258;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3152"
+       sodipodi:cx="9.7069349"
+       sodipodi:cy="9.6526775"
+       sodipodi:rx="1.0259361"
+       sodipodi:ry="1.9413869"
+       d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1  8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1  10.732871 9.6526775 z"
+       transform="matrix(4.8735976,0,0,2.5754783,-16.807694,-1.3602618)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3148"
+       sodipodi:cx="9.7069349"
+       sodipodi:cy="9.6526775"
+       sodipodi:rx="1.0259361"
+       sodipodi:ry="1.9413869"
+       d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1  8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1  10.732871 9.6526775 z"
+       transform="matrix(1.9494393,0,0,1.2877392,10.07692,12.069869)" />
+    <path
+       style="opacity:1;fill:#ce5c00;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 34,32 C 32.885686,35.996588 29.067255,39 24.5,39 C 19.932746,39 16.114315,35.996588 15,32 C 17.00212,34.587918 20.518441,37.149132 24.5,37.149132 C 28.481556,37.149134 31.99788,34.587918 34,32 z "
        id="path2186"
        sodipodi:nodetypes="cscsc" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path2191"
-       sodipodi:cx="9.0598059"
-       sodipodi:cy="8.7845774"
-       sodipodi:rx="1.1679889"
-       sodipodi:ry="1.4520943"
-       d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1  7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1  10.227795 8.7845774 z"
-       transform="matrix(1.712345,0,0,2.754643,1.486487,14.80163)" />
+       style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2259"
+       sodipodi:cx="8.3258924"
+       sodipodi:cy="9.2232141"
+       sodipodi:rx="1.2276785"
+       sodipodi:ry="1.7410715"
+       d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
+       transform="matrix(3.5277688,0.705265,-0.6665314,1.855957,7.2901885,-4.1630498)"
+       sodipodi:start="3.5782199"
+       sodipodi:end="5.6135639"
+       sodipodi:open="true" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path2193"
-       sodipodi:cx="9.0598059"
-       sodipodi:cy="8.7845774"
-       sodipodi:rx="1.1679889"
-       sodipodi:ry="1.4520943"
-       d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1  7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1  10.227795 8.7845774 z"
-       transform="matrix(1.712345,0,0,2.754643,9.486483,14.80163)" />
-    <path
-       style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#787878;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
-       d="M 44.078659,9.5112136 C 34.84342,9.8834971 27.500059,15.977362 27.500059,23.405814 C 27.500059,27.671183 29.253586,32.180745 33.0662,34.729626 C 33.874807,38.292011 31.54507,41.058776 31.141507,41.494102 C 31.871844,41.290557 37.643487,39.670532 39.808221,37.260561 C 41.990193,37.168054 43.23089,37.300418 44.997262,37.300418 C 54.649949,37.300418 62.494467,31.073895 62.494465,23.405814 C 62.494465,15.737733 54.649949,9.5112136 44.997262,9.5112136 C 44.695616,9.5112136 44.37657,9.4992035 44.078659,9.5112136 z "
-       id="path13316"
-       sodipodi:nodetypes="cscccsssc" />
-    <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-1.0020103"
-       inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
-       xlink:href="#path13316"
-       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="path13323"
-       inkscape:href="#path13316"
-       d="M 43.9375,10.5 C 35.082559,10.856667 28.28125,16.643774 28.28125,23.4375 C 28.28125,27.441186 29.946384,31.636673 33.4375,33.96875 C 33.648247,34.117093 33.793739,34.340928 33.84375,34.59375 C 34.305353,36.625753 33.873291,38.418899 33.28125,39.75 C 33.741286,39.588469 33.859625,39.584381 34.375,39.375 C 36.123726,38.664548 38.008731,37.651133 38.875,36.6875 C 39.056781,36.478508 39.316956,36.354077 39.59375,36.34375 C 41.847992,36.248256 43.128683,36.40625 44.84375,36.40625 C 54.103198,36.406251 61.406252,30.447219 61.40625,23.4375 C 61.406249,16.427779 54.105354,10.5 44.84375,10.5 C 44.5143,10.499999 44.179676,10.490245 43.9375,10.5 z " />
-    <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-1.0109046"
-       inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
-       xlink:href="#path13316"
-       style="opacity:1;color:#000000;fill:url(#linearGradient1551);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
-       id="path1336"
-       inkscape:href="#path13316"
-       d="M 43.9375,10.5 C 35.086269,10.856517 28.28125,16.649624 28.28125,23.4375 C 28.28125,27.43874 29.949375,31.638672 33.4375,33.96875 C 33.659358,34.111954 33.816384,34.336276 33.875,34.59375 C 34.337119,36.628026 33.873842,38.417659 33.28125,39.75 C 33.741161,39.588512 33.859781,39.584317 34.375,39.375 C 36.123195,38.664763 38.010688,37.617706 38.875,36.65625 C 39.06282,36.459679 39.321894,36.347038 39.59375,36.34375 C 41.848554,36.248232 43.129202,36.40625 44.84375,36.40625 C 54.099359,36.406251 61.406252,30.441153 61.40625,23.4375 C 61.406249,16.433845 54.101534,10.5 44.84375,10.5 C 44.514064,10.499999 44.17917,10.490265 43.9375,10.5 z " />
-    <path
-       style="opacity:1;fill:url(#radialGradient2232);fill-opacity:1;stroke:#729fcf;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 44.703431,14.533668 C 40.70252,14.678436 37.503421,17.811488 37.503421,21.651365 C 37.503421,24.907582 40.201737,27.911617 43.341119,28.760108 L 43.389173,30.850471 C 43.389173,30.872875 43.386855,30.909548 43.389173,30.931354 C 43.394328,30.963552 43.421848,31.022249 43.431776,31.052677 C 43.443213,31.082437 43.458677,31.146493 43.474381,31.174002 C 43.480062,31.182896 43.510872,31.20584 43.516985,31.214444 C 43.569231,31.280841 43.655052,31.37351 43.730003,31.41665 C 43.749323,31.426587 43.794808,31.448926 43.815208,31.457092 C 43.857011,31.471566 43.940397,31.49101 43.985625,31.497533 C 44.008596,31.499735 44.047229,31.497533 44.07083,31.497533 L 46.028589,31.404055 C 46.052192,31.404055 46.090827,31.406257 46.113796,31.404055 C 46.159024,31.397531 46.242411,31.378087 46.284211,31.363613 C 46.304612,31.355448 46.350096,31.333109 46.369418,31.323172 C 46.444367,31.280031 46.53019,31.187363 46.582436,31.120966 C 46.588549,31.112362 46.619359,31.089417 46.62504,31.080523 C 46.640742,31.053014 46.656207,30.988959 46.667645,30.959199 C 46.677573,30.928771 46.705092,30.870073 46.710248,30.837876 C 46.712565,30.816069 46.710248,30.779396 46.710248,30.756993 L 46.758302,28.760108 C 49.897683,27.911617 52.499887,24.907584 52.499889,21.651365 C 52.499889,17.719331 49.13652,14.533668 45.001656,14.533668 C 44.904746,14.533668 44.799454,14.530194 44.703431,14.533668 z "
-       id="path1311"
-       sodipodi:nodetypes="csccsssssssccsssssssccssc" />
-    <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-0.98906523"
-       inkscape:original="M 44.71875 14.53125 C 40.71784 14.676018 37.5 17.816373 37.5 21.65625 C 37.499999 24.912467 40.204368 27.901509 43.34375 28.75 L 43.375 30.84375 C 43.375001 30.866154 43.372682 30.915694 43.375 30.9375 C 43.380156 30.969697 43.427572 31.032072 43.4375 31.0625 C 43.448939 31.09226 43.453046 31.159991 43.46875 31.1875 C 43.474432 31.196394 43.525137 31.210146 43.53125 31.21875 C 43.583494 31.285148 43.643799 31.36311 43.71875 31.40625 C 43.73807 31.416186 43.7921 31.460584 43.8125 31.46875 C 43.854303 31.483224 43.954772 31.493477 44 31.5 C 44.02297 31.502201 44.038899 31.5 44.0625 31.5 L 46.03125 31.40625 C 46.054855 31.40625 46.102031 31.408452 46.125 31.40625 C 46.170228 31.399726 46.23945 31.389474 46.28125 31.375 C 46.301652 31.366835 46.355678 31.322437 46.375 31.3125 C 46.449948 31.269359 46.541504 31.191397 46.59375 31.125 C 46.599863 31.116396 46.619319 31.102644 46.625 31.09375 C 46.640704 31.066241 46.644812 30.99851 46.65625 30.96875 C 46.666178 30.938321 46.713594 30.875947 46.71875 30.84375 C 46.721068 30.821944 46.71875 30.772403 46.71875 30.75 L 46.75 28.75 C 49.889382 27.901508 52.499998 24.912469 52.5 21.65625 C 52.5 17.724216 49.134864 14.53125 45 14.53125 C 44.90309 14.53125 44.814773 14.527776 44.71875 14.53125 z "
-       xlink:href="#path1311"
-       style="opacity:0.7;fill:#ffffff;fill-opacity:0.41960784;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path2204"
-       inkscape:href="#path1311"
-       d="M 33.46875,7.46875 C 29.99276,7.595007 27.28125,10.282227 27.28125,13.5625 C 27.281251,16.268084 29.627654,18.959072 32.3125,19.6875 C 32.745246,19.795209 33.052411,20.179165 33.0625,20.625 L 33.125,22.34375 L 34.40625,22.28125 L 34.46875,20.625 C 34.478839,20.179165 34.786004,19.795209 35.21875,19.6875 C 37.89876,18.960384 40.156248,16.287128 40.15625,13.5625 C 40.15625,10.202426 37.315969,7.4687499 33.71875,7.46875 C 33.598771,7.4687498 33.517755,7.46697 33.46875,7.46875 z "
-       transform="translate(3.330669e-15,4.169556e-4)" />
-    <rect
-       style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#c4a000;stroke-width:1.00000107;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2188"
-       width="5.0002198"
-       height="3.994288"
-       x="42.497272"
-       y="29.502851"
-       rx="0.50000107"
-       ry="0.50000083" />
-    <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-1.0076578"
-       inkscape:original="M 43 29.5 C 42.722999 29.5 42.5 29.723 42.5 30 L 42.5 33 C 42.5 33.277 42.723 33.5 43 33.5 L 47 33.5 C 47.277001 33.5 47.499999 33.277 47.5 33 L 47.5 30 C 47.5 29.723 47.277002 29.5 47 29.5 L 43 29.5 z "
-       xlink:href="#rect2188"
-       style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.00000083;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path1324"
-       inkscape:href="#rect2188"
-       d="M 32.21875,22.4375 L 32.21875,24.40625 L 35.1875,24.40625 L 35.1875,22.4375 L 32.21875,22.4375 z " />
-    <rect
-       style="opacity:0.7;fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2238"
-       width="1"
-       height="2"
-       x="43"
-       y="24" />
-    <rect
-       style="opacity:0.70454544;fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2240"
-       width="1.0217247"
-       height="2"
-       x="45.978275"
-       y="24" />
-    <rect
-       style="opacity:0.7;fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2242"
-       width="1"
-       height="2.0132751"
-       x="-25"
-       y="43.986725"
-       transform="matrix(0,-1,1,0,0,0)" />
-    <rect
-       style="opacity:0.7;fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2244"
-       width="1.0000002"
-       height="1"
-       x="-24"
-       y="43"
-       transform="matrix(0,-1,1,0,0,0)" />
-    <rect
-       style="opacity:0.7;fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2246"
-       width="1.0000002"
-       height="1"
-       x="-24"
-       y="45"
-       transform="matrix(0,-1,1,0,0,0)" />
-    <rect
-       style="opacity:0.5;fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2250"
-       width="1.0000002"
-       height="1.0066376"
-       x="-23"
-       y="45.993362"
-       transform="matrix(0,-1,1,0,0,0)" />
-    <rect
-       style="opacity:0.5;fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2252"
-       width="1.0000002"
-       height="1.0066376"
-       x="-23"
-       y="43.993362"
-       transform="matrix(0,-1,1,0,0,0)" />
-    <path
-       sodipodi:type="arc"
-       style="opacity:0.9;fill:#ffffff;fill-opacity:0.41960784;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path2254"
-       sodipodi:cx="8.9137974"
-       sodipodi:cy="6.046802"
-       sodipodi:rx="1.3745575"
-       sodipodi:ry="1.3329042"
-       d="M 10.288355 6.046802 A 1.3745575 1.3329042 0 1 1  7.5392399,6.046802 A 1.3745575 1.3329042 0 1 1  10.288355 6.046802 z"
-       transform="matrix(1.455014,0,0,1.500481,30.0303,10.92689)" />
+       style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2261"
+       sodipodi:cx="8.3258924"
+       sodipodi:cy="9.2232141"
+       sodipodi:rx="1.2276785"
+       sodipodi:ry="1.7410715"
+       d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
+       transform="matrix(-3.5277688,0.705265,0.6665314,1.855957,41.208475,-4.1630498)"
+       sodipodi:start="3.5782199"
+       sodipodi:end="5.6135639"
+       sodipodi:open="true" />
   </g>
 </svg>
--- a/pidgin/pixmaps/dialogs/64/scalable/question.svg	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/pixmaps/dialogs/64/scalable/question.svg	Tue Oct 23 17:27:12 2007 +0000
@@ -7,57 +7,25 @@
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="64"
-   height="64"
+   width="48"
+   height="48"
    id="svg2"
    sodipodi:version="0.32"
-   inkscape:version="0.43"
+   inkscape:version="0.45"
    version="1.0"
-   sodipodi:docbase="/home/hbons/Desktop"
+   sodipodi:docbase="/home/hbons/Desktop/2.1.1/dialogs/scalable"
    sodipodi:docname="dialog-question.svg"
-   inkscape:export-filename="/home/hbons/Desktop/dialog-question.png"
+   inkscape:export-filename="/home/hbons/Desktop/newstyle.png"
    inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
+   inkscape:export-ydpi="90"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:modified="true">
   <defs
      id="defs4">
     <linearGradient
        inkscape:collect="always"
-       id="linearGradient3121">
-      <stop
-         style="stop-color:#d3d7cf;stop-opacity:1;"
-         offset="0"
-         id="stop3123" />
-      <stop
-         style="stop-color:#d3d7cf;stop-opacity:0;"
-         offset="1"
-         id="stop3125" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3816">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop3818" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop3820" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3816"
-       id="radialGradient3822"
-       cx="31.112698"
-       cy="19.008621"
-       fx="31.112698"
-       fy="19.008621"
-       r="8.6620579"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
        id="linearGradient3104">
       <stop
          style="stop-color:#eeeeec;stop-opacity:1;"
@@ -79,15 +47,259 @@
        r="9.975256"
        gradientUnits="userSpaceOnUse"
        gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <filter
+       inkscape:collect="always"
+       x="-0.27879593"
+       width="1.5575919"
+       y="-0.78248727"
+       height="2.5649745"
+       id="filter3405">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="1.5438116"
+         id="feGaussianBlur3407" />
+    </filter>
+    <radialGradient
+       r="9.975256"
+       fy="18.005522"
+       fx="8.7359829"
+       cy="18.005522"
+       cx="8.7359829"
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2247"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3263">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop3265" />
+      <stop
+         style="stop-color:#555753;stop-opacity:0;"
+         offset="1"
+         id="stop3267" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2216"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3263"
+       id="linearGradient3269"
+       x1="12.845698"
+       y1="16.037401"
+       x2="10.698112"
+       y2="15.449714"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       r="9.975256"
+       fy="18.005522"
+       fx="8.7359829"
+       cy="18.005522"
+       cx="8.7359829"
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3191"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
     <linearGradient
        inkscape:collect="always"
-       xlink:href="#linearGradient3121"
-       id="linearGradient1551"
+       id="linearGradient3150">
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="0"
+         id="stop3152" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:0;"
+         offset="1"
+         id="stop3154" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3175"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3150"
+       id="radialGradient3156"
+       cx="10.748654"
+       cy="10.457643"
+       fx="10.748654"
+       fy="10.457643"
+       r="6.6449099"
+       gradientTransform="matrix(-0.842757,0,0,-0.35721,19.80716,14.19321)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="18.005522"
+       fx="8.7359829"
+       cy="18.005522"
+       cx="8.7359829"
+       id="radialGradient2214"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2255"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3313"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <radialGradient
+       r="2.5781252"
+       fy="11.083743"
+       fx="17.911736"
+       cy="11.083743"
+       cx="17.911736"
+       gradientTransform="matrix(-1.591138,1.574803,-1.783257,-1.76495,68.854751,-2.8442229)"
        gradientUnits="userSpaceOnUse"
-       x1="42.925175"
-       y1="40.136646"
-       x2="42.925175"
-       y2="15.474488" />
+       id="radialGradient2259"
+       xlink:href="#linearGradient2382"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2867">
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="0"
+         id="stop2869" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:0;"
+         offset="1"
+         id="stop2871" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2847">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop2849" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:0;"
+         offset="1"
+         id="stop2851" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2382">
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="0"
+         id="stop2384" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:0;"
+         offset="1"
+         id="stop2386" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2230"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2847"
+       id="linearGradient2853"
+       x1="12.5"
+       y1="18.202251"
+       x2="12.746171"
+       y2="20.761486"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867"
+       id="linearGradient2873"
+       x1="12.720216"
+       y1="20.952612"
+       x2="12.720216"
+       y2="17.682426"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       id="radialGradient2303"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2349"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
+    <radialGradient
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       id="radialGradient2233"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2264"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
   </defs>
   <sodipodi:namedview
      id="base"
@@ -96,17 +308,19 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="16.976026"
-     inkscape:cx="39.201403"
-     inkscape:cy="23.251521"
+     inkscape:zoom="22.4"
+     inkscape:cx="41.793957"
+     inkscape:cy="31.031721"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="true"
-     fill="#204a87"
-     inkscape:window-width="1267"
-     inkscape:window-height="971"
-     inkscape:window-x="6"
-     inkscape:window-y="21" />
+     fill="#fce94f"
+     inkscape:window-width="1440"
+     inkscape:window-height="847"
+     inkscape:window-x="3"
+     inkscape:window-y="25"
+     width="48px"
+     height="48px" />
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -123,25 +337,25 @@
      inkscape:groupmode="layer"
      id="layer1">
     <path
-       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.45064,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
-       sodipodi:ry="8.6620579"
-       sodipodi:rx="8.6620579"
-       sodipodi:cy="19.008621"
-       sodipodi:cx="31.112698"
-       id="path4318"
-       style="opacity:0.5;color:#000000;fill:url(#radialGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
        sodipodi:type="arc"
-       transform="matrix(2.383972,0,0,1.117487,-53.5217,33.04541)" />
+       style="opacity:0.64044949;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3405)"
+       id="path3140"
+       sodipodi:cx="10.748654"
+       sodipodi:cy="10.457643"
+       sodipodi:rx="6.6449099"
+       sodipodi:ry="2.3675451"
+       d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1  4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1  17.393564 10.457643 z"
+       transform="matrix(2.2723916,0,0,1.6905173,-4.1758193,23.510748)" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#f57900;stroke-width:0.53913006;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#cc6400;stroke-width:0.55559433;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path1307"
        sodipodi:cx="11.806158"
        sodipodi:cy="10.983024"
        sodipodi:rx="9.975256"
        sodipodi:ry="9.975256"
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
-       transform="matrix(1.854646,0,0,1.855034,-0.899768,22.62707)" />
+       transform="matrix(1.8043406,0,0,1.8043406,-0.8023303,7.6828845)" />
     <path
        sodipodi:type="arc"
        style="opacity:0.79545456;fill:url(#radialGradient3114);fill-opacity:1;stroke:none;stroke-width:1.05274069;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@@ -151,81 +365,90 @@
        sodipodi:rx="9.975256"
        sodipodi:ry="9.975256"
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
-       transform="matrix(1.704217,0,0,1.704217,0.879746,24.28255)" />
+       transform="matrix(1.6958412,0,0,1.6958412,0.3182737,9.0348911)" />
     <path
        sodipodi:type="arc"
-       style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.57006598;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.58677971;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path2184"
        sodipodi:cx="11.806158"
        sodipodi:cy="10.983024"
        sodipodi:rx="9.975256"
        sodipodi:ry="9.975256"
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
-       transform="matrix(1.75441,0,0,1.753957,0.28417,23.73792)" />
+       transform="matrix(1.7042169,0,0,1.7042169,0.3797456,8.7825452)" />
+    <path
+       style="fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 19.500001,23.5 C 19.500001,26.26 17.260002,28.500001 14.500001,28.500001 C 11.740001,28.500001 9.5000001,26.26 9.5000001,23.5 C 9.5000001,20.74 11.740001,18.5 14.500001,18.5 C 17.260002,18.5 19.500001,20.74 19.500001,23.5 z "
+       id="path3154" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path2191"
-       sodipodi:cx="9.0598059"
-       sodipodi:cy="8.7845774"
-       sodipodi:rx="1.1679889"
-       sodipodi:ry="1.4520943"
-       d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1  7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1  10.227795 8.7845774 z"
-       transform="matrix(1.712345,0,0,2.754643,1.486487,11.80163)" />
+       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2172"
+       sodipodi:cx="9.7069349"
+       sodipodi:cy="9.6526775"
+       sodipodi:rx="1.0259361"
+       sodipodi:ry="1.9413869"
+       d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1  8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1  10.732871 9.6526775 z"
+       transform="matrix(1.9494387,0,0,1.2877392,-1.9230749,13.069869)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:0.282258;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3152"
+       sodipodi:cx="9.7069349"
+       sodipodi:cy="9.6526775"
+       sodipodi:rx="1.0259361"
+       sodipodi:ry="1.9413869"
+       d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1  8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1  10.732871 9.6526775 z"
+       transform="matrix(4.8735976,0,0,2.5754783,-20.807694,-1.3602619)" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path2193"
-       sodipodi:cx="9.0598059"
-       sodipodi:cy="8.7845774"
-       sodipodi:rx="1.1679889"
-       sodipodi:ry="1.4520943"
-       d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1  7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1  10.227795 8.7845774 z"
-       transform="matrix(1.712345,0,0,2.754643,9.486483,11.80163)" />
+       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3148"
+       sodipodi:cx="9.7069349"
+       sodipodi:cy="9.6526775"
+       sodipodi:rx="1.0259361"
+       sodipodi:ry="1.9413869"
+       d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1  8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1  10.732871 9.6526775 z"
+       transform="matrix(1.9494393,0,0,1.2877392,9.0769201,13.069869)" />
     <path
-       style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#787878;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
-       d="M 44.078659,9.5112136 C 34.84342,9.8834971 27.500059,15.977362 27.500059,23.405814 C 27.500059,27.671183 29.253586,32.180745 33.0662,34.729626 C 33.874807,38.292011 31.54507,41.058776 31.141507,41.494102 C 31.871844,41.290557 37.643487,39.670532 39.808221,37.260561 C 41.990193,37.168054 43.23089,37.300418 44.997262,37.300418 C 54.649949,37.300418 62.494467,31.073895 62.494465,23.405814 C 62.494465,15.737733 54.649949,9.5112136 44.997262,9.5112136 C 44.695616,9.5112136 44.37657,9.4992035 44.078659,9.5112136 z "
-       id="path13316"
-       sodipodi:nodetypes="cscccsssc" />
-    <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-1.0020103"
-       inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
-       xlink:href="#path13316"
-       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="path13323"
-       inkscape:href="#path13316"
-       d="M 43.9375,10.5 C 35.082559,10.856667 28.28125,16.643774 28.28125,23.4375 C 28.28125,27.441186 29.946384,31.636673 33.4375,33.96875 C 33.648247,34.117093 33.793739,34.340928 33.84375,34.59375 C 34.305353,36.625753 33.873291,38.418899 33.28125,39.75 C 33.741286,39.588469 33.859625,39.584381 34.375,39.375 C 36.123726,38.664548 38.008731,37.651133 38.875,36.6875 C 39.056781,36.478508 39.316956,36.354077 39.59375,36.34375 C 41.847992,36.248256 43.128683,36.40625 44.84375,36.40625 C 54.103198,36.406251 61.406252,30.447219 61.40625,23.4375 C 61.406249,16.427779 54.105354,10.5 44.84375,10.5 C 44.5143,10.499999 44.179676,10.490245 43.9375,10.5 z " />
+       style="opacity:1;fill:#ce5c00;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 30,32 C 28.885686,35.996588 25.067255,39 20.5,39 C 15.932746,39 12.114315,35.996588 11,32 C 16.460075,38.82871 24.447577,38.177252 30,32 z "
+       id="path2186"
+       sodipodi:nodetypes="cscc" />
     <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-1.0109046"
-       inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
-       xlink:href="#path13316"
-       style="opacity:1;color:#000000;fill:url(#linearGradient1551);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
-       id="path1336"
-       inkscape:href="#path13316"
-       d="M 43.9375,10.5 C 35.086269,10.856517 28.28125,16.649624 28.28125,23.4375 C 28.28125,27.43874 29.949375,31.638672 33.4375,33.96875 C 33.659358,34.111954 33.816384,34.336276 33.875,34.59375 C 34.337119,36.628026 33.873842,38.417659 33.28125,39.75 C 33.741161,39.588512 33.859781,39.584317 34.375,39.375 C 36.123195,38.664763 38.010688,37.617706 38.875,36.65625 C 39.06282,36.459679 39.321894,36.347038 39.59375,36.34375 C 41.848554,36.248232 43.129202,36.40625 44.84375,36.40625 C 54.099359,36.406251 61.406252,30.441153 61.40625,23.4375 C 61.406249,16.433845 54.101534,10.5 44.84375,10.5 C 44.514064,10.499999 44.17917,10.490265 43.9375,10.5 z " />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2649"
-       style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#204a87;font-family:Bitstream Charter"
-       transform="matrix(1.282232,0,0,1.31579,-8.49345,-11.44883)"><flowRegion
-         id="flowRegion2651"><rect
-           id="rect2653"
-           width="44.011906"
-           height="42.819229"
-           x="36.988094"
-           y="20.180773"
-           style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#204a87;font-family:Bitstream Charter" /></flowRegion><flowPara
-         id="flowPara2655">?</flowPara></flowRoot>    <rect
-       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2278"
-       width="16.246384"
-       height="1.4764884"
-       x="-2.760174"
-       y="54.321537"
-       ry="0.49634099"
-       rx="0.49687836"
-       transform="matrix(0.972407,-0.233292,0.286699,0.958021,0,0)" />
+       sodipodi:type="arc"
+       style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2259"
+       sodipodi:cx="8.3258924"
+       sodipodi:cy="9.2232141"
+       sodipodi:rx="1.2276785"
+       sodipodi:ry="1.7410715"
+       d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
+       transform="matrix(3.5277688,0.705265,-0.6665314,1.855957,3.2901886,-4.1630499)"
+       sodipodi:start="3.5782199"
+       sodipodi:end="5.6135639"
+       sodipodi:open="true" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2261"
+       sodipodi:cx="8.3258924"
+       sodipodi:cy="9.2232141"
+       sodipodi:rx="1.2276785"
+       sodipodi:ry="1.7410715"
+       d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
+       transform="matrix(-3.5277688,0.705265,0.6665314,1.855957,37.208475,-4.1630499)"
+       sodipodi:start="3.5782199"
+       sodipodi:end="5.6135639"
+       sodipodi:open="true" />
+    <path
+       transform="translate(-2.96875,2.96875)"
+       style="font-size:19.03945923px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#204a87;fill-opacity:1;stroke:none;stroke-width:1.55613649px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Century Schoolbook L"
+       d="M 41.5625,0.03125 C 39.882592,0.03125 38.340312,0.45633843 37.125,1.3125 C 35.909688,2.1686616 35.03125,3.5773827 35.03125,5.15625 C 35.031248,6.9581536 36.509895,8.65625 38.375,8.65625 C 39.965182,8.6562496 41.5,7.3378655 41.5,5.65625 C 41.5,5.3071726 41.34266,4.9823536 41.21875,4.65625 C 41.387991,4.6997757 41.631962,4.7250666 41.6875,4.78125 C 41.780384,4.8752143 41.90625,5.0515022 41.90625,5.59375 C 41.90625,6.1652988 41.718827,6.6932831 41.46875,7.03125 C 40.561362,8.1855326 40.145637,8.7242892 39.8125,9.21875 C 39.479363,9.7132108 39.280996,10.139806 39.125,10.53125 C 39.124907,10.541666 39.124907,10.552084 39.125,10.5625 C 39.043286,10.775751 38.25,11.848298 38.25,13.46875 L 38.25,14.21875 C 38.248868,14.683225 38.432878,15.129003 38.761313,15.457437 C 39.089747,15.785872 39.535525,15.969882 40,15.96875 L 40.59375,15.96875 C 39.296693,16.363109 38.1875,17.335329 38.1875,18.78125 C 38.187498,20.599164 39.742417,21.96875 41.46875,21.96875 C 43.193995,21.968752 44.75,20.563489 44.75,18.78125 C 44.749996,17.191313 43.501537,16.129612 42.0625,15.84375 C 42.760608,15.593328 43.224284,14.929144 43.21875,14.1875 C 43.207309,13.142551 43.280625,12.715648 43.375,12.5 C 43.469375,12.284352 43.666112,12.036543 44.375,11.46875 C 44.385548,11.458466 44.395966,11.448048 44.40625,11.4375 C 45.640264,10.416457 46.472134,9.663013 47.09375,8.75 C 47.715366,7.836987 47.96875,6.7448903 47.96875,5.75 C 47.968751,4.1061365 47.251058,2.5766205 46.0625,1.5625 C 44.873942,0.5483795 43.29027,0.03125 41.5625,0.03125 z "
+       id="path3346" />
+    <path
+       id="text2395"
+       d="M 38.506782,17.184869 C 38.482313,14.953817 38.751472,14.339138 40.317489,13.087017 C 42.715448,11.106389 43.253768,10.332347 43.253768,8.7387398 C 43.253768,6.3710938 41.369653,4.7774818 38.580188,4.7774818 C 35.815195,4.7774818 33.808732,6.1889664 33.808732,8.1468275 C 33.808732,9.1485242 34.493866,9.8997976 35.399218,9.8997976 C 36.182227,9.8997976 36.793951,9.3534166 36.793951,8.6476754 C 36.793951,8.1923596 36.549258,7.8053395 36.08435,7.4410862 C 35.717315,7.1678961 35.692845,7.122364 35.692845,6.9402374 C 35.692845,6.3483259 36.769483,5.8019451 37.943996,5.8019451 C 39.681291,5.8019451 40.684521,6.8491761 40.684521,8.6021443 C 40.684521,9.5355437 40.390894,10.400647 39.901517,11.060855 C 38.09081,13.360205 38.090807,13.360208 37.772712,14.157012 C 37.528022,14.794454 37.034866,15.386368 37.034866,16.456362 L 37.034866,17.184869 L 38.506782,17.184869 M 38.512445,20.345536 C 37.65603,20.345536 36.970897,20.982982 36.970897,21.75702 C 36.970897,22.553823 37.65603,23.191268 38.487976,23.191268 C 39.344388,23.191268 40.029523,22.553823 40.029523,21.75702 C 40.029523,20.982982 39.344388,20.345536 38.512445,20.345536"
+       style="font-size:19.03945923px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#eeeeec;fill-opacity:1;stroke:#ffffff;stroke-width:1.55496371px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Century Schoolbook L" />
   </g>
 </svg>
--- a/pidgin/pixmaps/dialogs/64/scalable/warning.svg	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/pixmaps/dialogs/64/scalable/warning.svg	Tue Oct 23 17:27:12 2007 +0000
@@ -7,55 +7,35 @@
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="64"
-   height="64"
+   width="48"
+   height="48"
    id="svg2"
    sodipodi:version="0.32"
-   inkscape:version="0.43"
+   inkscape:version="0.45"
    version="1.0"
-   sodipodi:docbase="/home/hbons/Desktop/Gaim Refresh/dialogs"
+   sodipodi:docbase="/home/hbons/Desktop/2.1.1/dialogs"
    sodipodi:docname="dialog-warning.svg"
-   inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/dialogs/dialog-warning.png"
+   inkscape:export-filename="/home/hbons/Desktop/newstyle.png"
    inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
+   inkscape:export-ydpi="90"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:modified="true">
   <defs
      id="defs4">
     <linearGradient
        inkscape:collect="always"
-       id="linearGradient3121">
-      <stop
-         style="stop-color:#d3d7cf;stop-opacity:1;"
-         offset="0"
-         id="stop3123" />
+       id="linearGradient3179">
       <stop
-         style="stop-color:#d3d7cf;stop-opacity:0;"
-         offset="1"
-         id="stop3125" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3816">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
+         style="stop-color:#555753;stop-opacity:1;"
          offset="0"
-         id="stop3818" />
+         id="stop3181" />
       <stop
-         style="stop-color:#000000;stop-opacity:0;"
+         style="stop-color:#555753;stop-opacity:0;"
          offset="1"
-         id="stop3820" />
+         id="stop3183" />
     </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3816"
-       id="radialGradient3822"
-       cx="31.112698"
-       cy="19.008621"
-       fx="31.112698"
-       fy="19.008621"
-       r="8.6620579"
-       gradientUnits="userSpaceOnUse" />
     <linearGradient
        inkscape:collect="always"
        id="linearGradient3104">
@@ -79,15 +59,268 @@
        r="9.975256"
        gradientUnits="userSpaceOnUse"
        gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <filter
+       inkscape:collect="always"
+       x="-0.27879593"
+       width="1.5575919"
+       y="-0.78248727"
+       height="2.5649745"
+       id="filter3405">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="1.5438116"
+         id="feGaussianBlur3407" />
+    </filter>
+    <radialGradient
+       r="9.975256"
+       fy="18.005522"
+       fx="8.7359829"
+       cy="18.005522"
+       cx="8.7359829"
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2247"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3263">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop3265" />
+      <stop
+         style="stop-color:#555753;stop-opacity:0;"
+         offset="1"
+         id="stop3267" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2216"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3263"
+       id="linearGradient3269"
+       x1="12.845698"
+       y1="16.037401"
+       x2="10.698112"
+       y2="15.449714"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       r="9.975256"
+       fy="18.005522"
+       fx="8.7359829"
+       cy="18.005522"
+       cx="8.7359829"
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3191"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
     <linearGradient
        inkscape:collect="always"
-       xlink:href="#linearGradient3121"
-       id="linearGradient1551"
+       id="linearGradient3150">
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="0"
+         id="stop3152" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:0;"
+         offset="1"
+         id="stop3154" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3175"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3150"
+       id="radialGradient3156"
+       cx="10.748654"
+       cy="10.457643"
+       fx="10.748654"
+       fy="10.457643"
+       r="6.6449099"
+       gradientTransform="matrix(-0.842757,0,0,-0.35721,19.80716,14.19321)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="18.005522"
+       fx="8.7359829"
+       cy="18.005522"
+       cx="8.7359829"
+       id="radialGradient2214"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2255"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient3313"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <radialGradient
+       r="2.5781252"
+       fy="11.083743"
+       fx="17.911736"
+       cy="11.083743"
+       cx="17.911736"
+       gradientTransform="matrix(-1.591138,1.574803,-1.783257,-1.76495,68.854751,-2.8442229)"
        gradientUnits="userSpaceOnUse"
-       x1="42.925175"
-       y1="40.136646"
-       x2="42.925175"
-       y2="15.474488" />
+       id="radialGradient2259"
+       xlink:href="#linearGradient2382"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2867">
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="0"
+         id="stop2869" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:0;"
+         offset="1"
+         id="stop2871" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2847">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop2849" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:0;"
+         offset="1"
+         id="stop2851" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2382">
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="0"
+         id="stop2384" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:0;"
+         offset="1"
+         id="stop2386" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2230"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2847"
+       id="linearGradient2853"
+       x1="12.5"
+       y1="18.202251"
+       x2="12.746171"
+       y2="20.761486"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867"
+       id="linearGradient2873"
+       x1="12.720216"
+       y1="20.952612"
+       x2="12.720216"
+       y2="17.682426"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       id="radialGradient2303"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2349"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
+    <radialGradient
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       gradientUnits="userSpaceOnUse"
+       r="9.975256"
+       fy="14.186539"
+       fx="8.3343515"
+       cy="14.186539"
+       cx="8.3343515"
+       id="radialGradient2233"
+       xlink:href="#linearGradient3104"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3104"
+       id="radialGradient2264"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
+       cx="8.3343515"
+       cy="14.186539"
+       fx="8.3343515"
+       fy="14.186539"
+       r="9.975256" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3179"
+       id="linearGradient3185"
+       x1="19.107143"
+       y1="33.892857"
+       x2="24.017857"
+       y2="33.892857"
+       gradientUnits="userSpaceOnUse" />
   </defs>
   <sodipodi:namedview
      id="base"
@@ -96,17 +329,19 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="12.003863"
-     inkscape:cx="39.201403"
-     inkscape:cy="23.251521"
+     inkscape:zoom="11.2"
+     inkscape:cx="48.857979"
+     inkscape:cy="24.415118"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="true"
-     fill="#cc0000"
-     inkscape:window-width="1267"
-     inkscape:window-height="971"
-     inkscape:window-x="6"
-     inkscape:window-y="21" />
+     fill="#fce94f"
+     inkscape:window-width="1440"
+     inkscape:window-height="845"
+     inkscape:window-x="3"
+     inkscape:window-y="25"
+     width="48px"
+     height="48px" />
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -123,25 +358,25 @@
      inkscape:groupmode="layer"
      id="layer1">
     <path
-       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.45064,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
-       sodipodi:ry="8.6620579"
-       sodipodi:rx="8.6620579"
-       sodipodi:cy="19.008621"
-       sodipodi:cx="31.112698"
-       id="path4318"
-       style="opacity:0.5;color:#000000;fill:url(#radialGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
        sodipodi:type="arc"
-       transform="matrix(2.383972,0,0,1.117487,-53.5217,33.04541)" />
+       style="opacity:0.64044949;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3405)"
+       id="path3140"
+       sodipodi:cx="10.748654"
+       sodipodi:cy="10.457643"
+       sodipodi:rx="6.6449099"
+       sodipodi:ry="2.3675451"
+       d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1  4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1  17.393564 10.457643 z"
+       transform="matrix(2.2723916,0,0,1.6905173,-0.1758194,23.510748)" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#f57900;stroke-width:0.53913006;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#cc6400;stroke-width:0.55559433;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path1307"
        sodipodi:cx="11.806158"
        sodipodi:cy="10.983024"
        sodipodi:rx="9.975256"
        sodipodi:ry="9.975256"
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
-       transform="matrix(1.854646,0,0,1.855034,-0.899768,22.62707)" />
+       transform="matrix(1.8043406,0,0,1.8043406,3.1976696,7.6828846)" />
     <path
        sodipodi:type="arc"
        style="opacity:0.79545456;fill:url(#radialGradient3114);fill-opacity:1;stroke:none;stroke-width:1.05274069;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@@ -151,83 +386,96 @@
        sodipodi:rx="9.975256"
        sodipodi:ry="9.975256"
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
-       transform="matrix(1.704217,0,0,1.704217,0.879746,24.28255)" />
+       transform="matrix(1.6958412,0,0,1.6958412,4.3182736,9.0348912)" />
     <path
        sodipodi:type="arc"
-       style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.57006598;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.58677971;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path2184"
        sodipodi:cx="11.806158"
        sodipodi:cy="10.983024"
        sodipodi:rx="9.975256"
        sodipodi:ry="9.975256"
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
-       transform="matrix(1.75441,0,0,1.753957,0.28417,23.73792)" />
+       transform="matrix(1.7042169,0,0,1.7042169,4.3797455,8.7825453)" />
     <path
-       style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#787878;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
-       d="M 44.078659,9.5112136 C 34.84342,9.8834971 27.500059,15.977362 27.500059,23.405814 C 27.500059,27.671183 29.253586,32.180745 33.0662,34.729626 C 33.874807,38.292011 31.54507,41.058776 31.141507,41.494102 C 31.871844,41.290557 37.643487,39.670532 39.808221,37.260561 C 41.990193,37.168054 43.23089,37.300418 44.997262,37.300418 C 54.649949,37.300418 62.494467,31.073895 62.494465,23.405814 C 62.494465,15.737733 54.649949,9.5112136 44.997262,9.5112136 C 44.695616,9.5112136 44.37657,9.4992035 44.078659,9.5112136 z "
-       id="path13316"
-       sodipodi:nodetypes="cscccsssc" />
+       style="fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 23.500001,23.5 C 23.500001,26.26 21.260002,28.500001 18.500001,28.500001 C 15.740001,28.500001 13.5,26.26 13.5,23.5 C 13.5,20.74 15.740001,18.5 18.500001,18.5 C 21.260002,18.5 23.500001,20.74 23.500001,23.5 z "
+       id="path3154" />
     <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-1.0020103"
-       inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
-       xlink:href="#path13316"
-       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="path13323"
-       inkscape:href="#path13316"
-       d="M 43.9375,10.5 C 35.082559,10.856667 28.28125,16.643774 28.28125,23.4375 C 28.28125,27.441186 29.946384,31.636673 33.4375,33.96875 C 33.648247,34.117093 33.793739,34.340928 33.84375,34.59375 C 34.305353,36.625753 33.873291,38.418899 33.28125,39.75 C 33.741286,39.588469 33.859625,39.584381 34.375,39.375 C 36.123726,38.664548 38.008731,37.651133 38.875,36.6875 C 39.056781,36.478508 39.316956,36.354077 39.59375,36.34375 C 41.847992,36.248256 43.128683,36.40625 44.84375,36.40625 C 54.103198,36.406251 61.406252,30.447219 61.40625,23.4375 C 61.406249,16.427779 54.105354,10.5 44.84375,10.5 C 44.5143,10.499999 44.179676,10.490245 43.9375,10.5 z " />
+       sodipodi:type="arc"
+       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2172"
+       sodipodi:cx="9.7069349"
+       sodipodi:cy="9.6526775"
+       sodipodi:rx="1.0259361"
+       sodipodi:ry="1.9413869"
+       d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1  8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1  10.732871 9.6526775 z"
+       transform="matrix(1.9494387,0,0,1.2877392,1.0769249,12.069869)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:0.282258;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3152"
+       sodipodi:cx="9.7069349"
+       sodipodi:cy="9.6526775"
+       sodipodi:rx="1.0259361"
+       sodipodi:ry="1.9413869"
+       d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1  8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1  10.732871 9.6526775 z"
+       transform="matrix(4.8735976,0,0,2.5754783,-16.807694,-1.3602618)" />
     <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-1.0109046"
-       inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
-       xlink:href="#path13316"
-       style="opacity:1;color:#000000;fill:url(#linearGradient1551);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
-       id="path1336"
-       inkscape:href="#path13316"
-       d="M 43.9375,10.5 C 35.086269,10.856517 28.28125,16.649624 28.28125,23.4375 C 28.28125,27.43874 29.949375,31.638672 33.4375,33.96875 C 33.659358,34.111954 33.816384,34.336276 33.875,34.59375 C 34.337119,36.628026 33.873842,38.417659 33.28125,39.75 C 33.741161,39.588512 33.859781,39.584317 34.375,39.375 C 36.123195,38.664763 38.010688,37.617706 38.875,36.65625 C 39.06282,36.459679 39.321894,36.347038 39.59375,36.34375 C 41.848554,36.248232 43.129202,36.40625 44.84375,36.40625 C 54.099359,36.406251 61.406252,30.441153 61.40625,23.4375 C 61.406249,16.433845 54.101534,10.5 44.84375,10.5 C 44.514064,10.499999 44.17917,10.490265 43.9375,10.5 z " />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2649"
-       style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#cc0000;font-family:Bitstream Charter"
-       transform="matrix(1.41844,0,0,1.343101,-12.30498,-12.66081)"><flowRegion
-         id="flowRegion2651"><rect
-           id="rect2653"
-           width="44.011906"
-           height="42.819229"
-           x="36.988094"
-           y="20.180773"
-           style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#cc0000;font-family:Bitstream Charter" /></flowRegion><flowPara
-         id="flowPara2655">!</flowPara></flowRoot>    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3148"
+       sodipodi:cx="9.7069349"
+       sodipodi:cy="9.6526775"
+       sodipodi:rx="1.0259361"
+       sodipodi:ry="1.9413869"
+       d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1  8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1  10.732871 9.6526775 z"
+       transform="matrix(1.9494393,0,0,1.2877392,10.07692,12.069869)" />
+    <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path2193"
-       sodipodi:cx="9.0598059"
-       sodipodi:cy="8.7845774"
-       sodipodi:rx="1.1679889"
-       sodipodi:ry="1.4520943"
-       d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1  7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1  10.227795 8.7845774 z"
-       transform="matrix(1.712345,0,0,2.754643,9.486483,14.80163)" />
+       style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2259"
+       sodipodi:cx="8.3258924"
+       sodipodi:cy="9.2232141"
+       sodipodi:rx="1.2276785"
+       sodipodi:ry="1.7410715"
+       d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
+       transform="matrix(3.5277688,0.705265,-0.6665314,1.855957,7.2901885,-4.1630498)"
+       sodipodi:start="3.5782199"
+       sodipodi:end="5.6135639"
+       sodipodi:open="true" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2261"
+       sodipodi:cx="8.3258924"
+       sodipodi:cy="9.2232141"
+       sodipodi:rx="1.2276785"
+       sodipodi:ry="1.7410715"
+       d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
+       transform="matrix(-3.5277688,0.705265,0.6665314,1.855957,41.208475,-4.1630498)"
+       sodipodi:start="3.5782199"
+       sodipodi:end="5.6135639"
+       sodipodi:open="true" />
     <path
        sodipodi:type="arc"
        style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path2191"
-       sodipodi:cx="9.0598059"
-       sodipodi:cy="8.7845774"
-       sodipodi:rx="1.1679889"
-       sodipodi:ry="1.4520943"
-       d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1  7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1  10.227795 8.7845774 z"
-       transform="matrix(1.712345,0,0,2.754643,1.486487,14.80163)" />
+       id="path3228"
+       sodipodi:cx="21.5625"
+       sodipodi:cy="33.892857"
+       sodipodi:rx="2.4553571"
+       sodipodi:ry="1.9642857"
+       d="M 24.017857 33.892857 A 2.4553571 1.9642857 0 1 1  19.107143,33.892857 A 2.4553571 1.9642857 0 1 1  24.017857 33.892857 z"
+       transform="matrix(3.0545454,0,0,2.2909093,-41.363636,-42.145461)" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path2251"
-       sodipodi:cx="9.3754778"
-       sodipodi:cy="13.4881"
-       sodipodi:rx="6.1556172"
-       sodipodi:ry="6.1556172"
-       d="M 15.531095 13.4881 A 6.1556172 6.1556172 0 1 1  3.2198606,13.4881 A 6.1556172 6.1556172 0 1 1  15.531095 13.4881 z"
-       transform="matrix(0.97472,0,0,0.812266,11.86154,41.04407)"
-       inkscape:export-xdpi="90"
-       inkscape:export-ydpi="90" />
+       style="opacity:1;fill:url(#linearGradient3185);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2206"
+       sodipodi:cx="21.5625"
+       sodipodi:cy="33.892857"
+       sodipodi:rx="2.4553571"
+       sodipodi:ry="1.9642857"
+       d="M 24.017857 33.892857 A 2.4553571 1.9642857 0 1 1  19.107143,33.892857 A 2.4553571 1.9642857 0 1 1  24.017857 33.892857 z"
+       transform="matrix(-3.0545454,0,0,2.2909093,90.363634,-42.145461)" />
   </g>
 </svg>
Binary file pidgin/pixmaps/dialogs/64/warning.png has changed
--- a/pidgin/pixmaps/emblems/16/Makefile.am	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/pixmaps/emblems/16/Makefile.am	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,7 @@
 SUBDIRS = scalable
 
 EXTRA_DIST = 	aol-client.png \
+		birthday.png \
 		blocked.png \
 		bot.png \
 		external.png \
@@ -12,6 +13,7 @@
 		hiptop.png \
 		male.png \
 		mobile.png \
+		music.png \
 		not-authorized.png \
 		operator.png \
 		qq-member.png \
Binary file pidgin/pixmaps/emblems/16/birthday.png has changed
Binary file pidgin/pixmaps/emblems/16/music.png has changed
--- a/pidgin/pixmaps/emblems/16/scalable/Makefile.am	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/pixmaps/emblems/16/scalable/Makefile.am	Tue Oct 23 17:27:12 2007 +0000
@@ -7,6 +7,7 @@
 		game.svg \
 		male.svg \
 		mobile.svg \
+		music.svg \
 		not-authorized.svg \
 		qq-member.svg \
 		secure.svg \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/pixmaps/emblems/16/scalable/music.svg	Tue Oct 23 17:27:12 2007 +0000
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="16"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45"
+   sodipodi:modified="true"
+   version="1.0">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3185">
+      <stop
+         style="stop-color:#4e9a06;stop-opacity:1;"
+         offset="0"
+         id="stop3187" />
+      <stop
+         style="stop-color:#4e9a06;stop-opacity:0"
+         offset="1"
+         id="stop3189" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3177">
+      <stop
+         style="stop-color:#4e9a06;stop-opacity:1;"
+         offset="0"
+         id="stop3179" />
+      <stop
+         style="stop-color:#4e9a06;stop-opacity:0;"
+         offset="1"
+         id="stop3181" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3153">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3155" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:0;"
+         offset="1"
+         id="stop3157" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3153"
+       id="linearGradient3159"
+       x1="2.5409546"
+       y1="10.048674"
+       x2="10.378205"
+       y2="15.928688"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3177"
+       id="radialGradient3183"
+       cx="5.2116022"
+       cy="8.4051199"
+       fx="5.2116022"
+       fy="8.4051199"
+       r="2.9404981"
+       gradientTransform="matrix(2.6050387,0,0,2.2888674,-8.415579,-10.767812)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3185"
+       id="radialGradient3191"
+       cx="5.1978397"
+       cy="8.4135866"
+       fx="5.1978397"
+       fy="8.4135866"
+       r="3.1428281"
+       gradientTransform="matrix(2.8202152,0,0,2.4999643,-9.461187,-12.455954)"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.4"
+     inkscape:cx="19.784002"
+     inkscape:cy="11.848"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="16px"
+     height="16px"
+     showgrid="true"
+     inkscape:window-width="1440"
+     inkscape:window-height="847"
+     inkscape:window-x="0"
+     inkscape:window-y="22" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#555753;fill-opacity:1;stroke:#222728;stroke-width:1.14297926;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2160"
+       sodipodi:cx="6.4712896"
+       sodipodi:cy="14.484771"
+       sodipodi:rx="3.5986683"
+       sodipodi:ry="2.1781414"
+       d="M 10.069958 14.484771 A 3.5986683 2.1781414 0 1 1  2.8726213,14.484771 A 3.5986683 2.1781414 0 1 1  10.069958 14.484771 z"
+       transform="matrix(0.8336417,0,0,0.918214,4.1052631,-0.8001194)" />
+    <rect
+       style="opacity:1;fill:#222728;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3143"
+       width="1"
+       height="12"
+       x="12"
+       y="1"
+       rx="0.18940361"
+       ry="0.20662212" />
+    <path
+       style="fill:#222728;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 12.006464,3.0203051 L 11.981638,1 C 13.945163,1 17.837365,1.1548232 14.996311,7.9684328 C 15.596089,2.2547574 13.743811,3.0203051 12.006464,3.0203051 z "
+       id="rect3146"
+       sodipodi:nodetypes="cccc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#555753;fill-opacity:1;stroke:url(#linearGradient3159);stroke-width:1.97969818;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3151"
+       sodipodi:cx="6.4712896"
+       sodipodi:cy="14.484771"
+       sodipodi:rx="3.5986683"
+       sodipodi:ry="2.1781414"
+       d="M 10.069958 14.484771 A 3.5986683 2.1781414 0 1 1  2.8726213,14.484771 A 3.5986683 2.1781414 0 1 1  10.069958 14.484771 z"
+       transform="matrix(0.5557611,0,0,0.4591071,5.903509,5.8499391)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:none;fill-opacity:1;stroke:url(#radialGradient3191);stroke-width:0.98568761;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3173"
+       sodipodi:cx="8.0970039"
+       sodipodi:cy="11.122857"
+       sodipodi:rx="4.3089318"
+       sodipodi:ry="3.5513175"
+       d="M 3.9729753,12.152015 A 4.3089318,3.5513175 0 0 1 9.0871283,7.6665672"
+       transform="matrix(1.0443424,0,0,0.9855497,-0.4560443,3.7870959e-2)"
+       sodipodi:start="2.8475788"
+       sodipodi:end="4.9442449"
+       sodipodi:open="true" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:none;fill-opacity:1;stroke:url(#radialGradient3183);stroke-width:0.58102763;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3175"
+       sodipodi:cx="8.0970039"
+       sodipodi:cy="11.122857"
+       sodipodi:rx="4.3089318"
+       sodipodi:ry="3.5513175"
+       d="M 3.9729753,12.152015 A 4.3089318,3.5513175 0 0 1 9.0871283,7.6665672"
+       transform="matrix(1.6981233,0,0,1.7443645,-5.9310642,-8.697544)"
+       sodipodi:start="2.8475788"
+       sodipodi:end="4.9442449"
+       sodipodi:open="true" />
+  </g>
+</svg>
Binary file pidgin/pixmaps/protocols/16/myspace.png has changed
Binary file pidgin/pixmaps/protocols/48/myspace.png has changed
--- a/pidgin/pixmaps/status/11/Makefile.am	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/pixmaps/status/11/Makefile.am	Tue Oct 23 17:27:12 2007 +0000
@@ -6,6 +6,8 @@
 		chat.png \
 		extended-away.png \
 		invisible.png \
+		log-in.png \
+		log-out.png \
 		offline.png \
 		person.png
 
Binary file pidgin/pixmaps/status/11/log-in.png has changed
Binary file pidgin/pixmaps/status/11/log-out.png has changed
Binary file pidgin/pixmaps/status/16/available.png has changed
Binary file pidgin/pixmaps/status/16/away.png has changed
Binary file pidgin/pixmaps/status/16/busy.png has changed
Binary file pidgin/pixmaps/status/16/extended-away.png has changed
Binary file pidgin/pixmaps/status/16/offline.png has changed
Binary file pidgin/pixmaps/status/16/rtl/extended-away.png has changed
--- a/pidgin/pixmaps/status/16/scalable/available.svg	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/pixmaps/status/16/scalable/available.svg	Tue Oct 23 17:27:12 2007 +0000
@@ -13,13 +13,15 @@
    height="16"
    id="svg2"
    sodipodi:version="0.32"
-   inkscape:version="0.44.1"
+   inkscape:version="0.45"
    version="1.0"
    inkscape:export-filename="/home/hbons/GUI/Tango/Gaim Refresh/status/16/available.png"
    inkscape:export-xdpi="90"
    inkscape:export-ydpi="90"
-   sodipodi:docbase="/home/hbons/Desktop/experiment/status/16/scalable"
-   sodipodi:docname="available.svg">
+   sodipodi:docbase="/home/hbons/Desktop/2.1.1/status/16/scalable"
+   sodipodi:docname="available.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:modified="true">
   <defs
      id="defs4">
     <linearGradient
@@ -246,7 +248,7 @@
      inkscape:window-width="1274"
      inkscape:window-height="844"
      inkscape:window-x="3"
-     inkscape:window-y="0" />
+     inkscape:window-y="25" />
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -263,16 +265,6 @@
      inkscape:groupmode="layer"
      id="layer1">
     <path
-       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.45064,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
-       sodipodi:ry="8.6620579"
-       sodipodi:rx="8.6620579"
-       sodipodi:cy="19.008621"
-       sodipodi:cx="31.112698"
-       id="path2969"
-       style="color:black;fill:url(#radialGradient3025);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       sodipodi:type="arc"
-       transform="matrix(0.923568,0,0,0.173169,-20.73469,11.2083)" />
-    <path
        transform="matrix(0.538297,0,0,0.538297,-1.630177,-1.459246)"
        style="fill:url(#linearGradient4738);fill-opacity:1;fill-rule:evenodd;stroke:#306300;stroke-width:1.85770929;stroke-miterlimit:4;stroke-opacity:1"
        d="M 31.822886,17.572527 C 31.822886,25.263442 25.580983,31.505344 17.890068,31.505344 C 10.199153,31.505344 3.9572506,25.263442 3.9572506,17.572527 C 3.9572506,9.8816117 10.199153,3.6397095 17.890068,3.6397095 C 25.580983,3.6397095 31.822886,9.8816117 31.822886,17.572527 z "
--- a/pidgin/pixmaps/status/16/scalable/away.svg	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/pixmaps/status/16/scalable/away.svg	Tue Oct 23 17:27:12 2007 +0000
@@ -13,13 +13,15 @@
    height="16"
    id="svg2"
    sodipodi:version="0.32"
-   inkscape:version="0.44.1"
+   inkscape:version="0.45"
    version="1.0"
    inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/status/16/available16.png"
    inkscape:export-xdpi="90"
    inkscape:export-ydpi="90"
-   sodipodi:docbase="/home/hbons/Desktop/2.0.2/pidgin/pixmaps/status/16/scalable"
-   sodipodi:docname="away.svg">
+   sodipodi:docbase="/home/hbons/Desktop/2.1.1/status/16/scalable"
+   sodipodi:docname="away.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:modified="true">
   <defs
      id="defs4">
     <linearGradient
@@ -123,8 +125,8 @@
      fill="#eeeeec"
      inkscape:window-width="1434"
      inkscape:window-height="840"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
+     inkscape:window-x="3"
+     inkscape:window-y="25"
      inkscape:object-paths="false"
      inkscape:grid-bbox="true"
      inkscape:guide-bbox="false"
@@ -145,16 +147,6 @@
      inkscape:groupmode="layer"
      id="layer1">
     <path
-       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.45064,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
-       sodipodi:ry="8.6620579"
-       sodipodi:rx="8.6620579"
-       sodipodi:cy="19.008621"
-       sodipodi:cx="31.112698"
-       id="path4318"
-       style="opacity:1;color:black;fill:url(#radialGradient2818);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       sodipodi:type="arc"
-       transform="matrix(0.923568,0,0,0.173169,-20.73469,11.2083)" />
-    <path
        sodipodi:type="arc"
        style="opacity:1;color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#173867;stroke-width:1.91314828px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
        id="path1339"
--- a/pidgin/pixmaps/status/16/scalable/busy.svg	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/pixmaps/status/16/scalable/busy.svg	Tue Oct 23 17:27:12 2007 +0000
@@ -13,13 +13,15 @@
    height="16"
    id="svg2"
    sodipodi:version="0.32"
-   inkscape:version="0.44.1"
+   inkscape:version="0.45"
    version="1.0"
    inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/status/16/available16.png"
    inkscape:export-xdpi="90"
    inkscape:export-ydpi="90"
-   sodipodi:docbase="/home/hbons/Desktop/experiment/status/16/scalable"
-   sodipodi:docname="busy.svg">
+   sodipodi:docbase="/home/hbons/Desktop/2.1.1/status/16/scalable"
+   sodipodi:docname="busy.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:modified="true">
   <defs
      id="defs4">
     <linearGradient
@@ -192,8 +194,8 @@
      fill="#eeeeec"
      inkscape:window-width="1268"
      inkscape:window-height="844"
-     inkscape:window-x="6"
-     inkscape:window-y="0" />
+     inkscape:window-x="3"
+     inkscape:window-y="25" />
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -210,16 +212,6 @@
      inkscape:groupmode="layer"
      id="layer1">
     <path
-       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.45064,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
-       sodipodi:ry="8.6620579"
-       sodipodi:rx="8.6620579"
-       sodipodi:cy="19.008621"
-       sodipodi:cx="31.112698"
-       id="path2969"
-       style="color:black;fill:url(#radialGradient3025);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       sodipodi:type="arc"
-       transform="matrix(0.923568,0,0,0.173169,-20.73469,11.2083)" />
-    <path
        sodipodi:type="arc"
        style="opacity:1;color:#000000;fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.36561811px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
        id="path1311"
--- a/pidgin/pixmaps/status/16/scalable/extended-away.svg	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/pixmaps/status/16/scalable/extended-away.svg	Tue Oct 23 17:27:12 2007 +0000
@@ -13,12 +13,14 @@
    height="16px"
    id="svg4245"
    sodipodi:version="0.32"
-   inkscape:version="0.44.1"
-   sodipodi:docbase="/home/hbons/GUI/Tango/Gaim Refresh/status/16/scalable"
+   inkscape:version="0.45"
+   sodipodi:docbase="/home/hbons/Desktop/2.1.1/status/16/scalable"
    sodipodi:docname="extended-away.svg"
    inkscape:export-filename="/home/hbons/GUI/Tango/Gaim Refresh/status/16/extended-away.png"
    inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
+   inkscape:export-ydpi="90"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:modified="true">
   <defs
      id="defs4247">
     <linearGradient
@@ -53,16 +55,16 @@
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
      inkscape:zoom="22.197802"
-     inkscape:cx="8"
-     inkscape:cy="9.6246122"
+     inkscape:cx="14.39703"
+     inkscape:cy="8.273127"
      inkscape:current-layer="layer1"
      showgrid="true"
      inkscape:grid-bbox="true"
      inkscape:document-units="px"
-     inkscape:window-width="872"
-     inkscape:window-height="626"
-     inkscape:window-x="129"
-     inkscape:window-y="124" />
+     inkscape:window-width="1440"
+     inkscape:window-height="847"
+     inkscape:window-x="0"
+     inkscape:window-y="22" />
   <metadata
      id="metadata4250">
     <rdf:RDF>
@@ -79,27 +81,17 @@
      inkscape:label="Layer 1"
      inkscape:groupmode="layer">
     <path
-       sodipodi:type="arc"
-       style="fill:url(#radialGradient5300);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.81530744;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path5131"
-       sodipodi:cx="11.756953"
-       sodipodi:cy="17.588654"
-       sodipodi:rx="6.3436799"
-       sodipodi:ry="3.9753728"
-       d="M 18.100633 17.588654 A 6.3436799 3.9753728 0 1 1  5.4132733,17.588654 A 6.3436799 3.9753728 0 1 1  18.100633 17.588654 z"
-       transform="matrix(-1.024642,0,0,0.754646,19.54667,-0.273206)" />
-    <path
-       transform="matrix(-1.708738,0,0,1.647118,-1.878642,-0.867731)"
        style="fill:#fce94f;fill-opacity:1;stroke:#ce5c00;stroke-width:0.59607363;stroke-miterlimit:4;stroke-opacity:1"
        d="M -9,3.2233667 L -7.134588,1.4374993 L -2.89508,1.4374993 C -2.3096744,1.4374993 -1.9824877,1.8329068 -1.9824877,2.3263196 L -1.9824877,9.3300741 L -9,9.3300741 L -9,3.2233667 z "
        id="rect5097"
-       sodipodi:nodetypes="ccccccc" />
+       sodipodi:nodetypes="ccccccc"
+       transform="matrix(-1.708738,0,0,1.647118,-1.878642,-0.867731)" />
     <path
-       transform="matrix(-1.398059,0,0,1.342047,-8.253506e-2,0.574281)"
        style="opacity:0.5625;fill:none;fill-opacity:1;stroke:#eeeeec;stroke-width:0.7300511;stroke-miterlimit:4;stroke-opacity:1"
        d="M -8.9656284,3.1521999 L -7.1361003,1.4267646 L -1.8535964,1.4374993 L -1.8535964,9.6313422 L -9,9.6313422 L -8.9656284,3.1521999 z "
        id="rect5099"
-       sodipodi:nodetypes="cccccc" />
+       sodipodi:nodetypes="cccccc"
+       transform="matrix(-1.398059,0,0,1.342047,-8.253506e-2,0.574281)" />
     <rect
        style="opacity:0.4;fill:#ce5c00;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="rect5988"
--- a/pidgin/pixmaps/status/16/scalable/offline.svg	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/pixmaps/status/16/scalable/offline.svg	Tue Oct 23 17:27:12 2007 +0000
@@ -13,13 +13,15 @@
    height="16"
    id="svg2"
    sodipodi:version="0.32"
-   inkscape:version="0.44.1"
+   inkscape:version="0.45"
    version="1.0"
    inkscape:export-filename="/home/hbons/Desktop/offline.png"
    inkscape:export-xdpi="90"
    inkscape:export-ydpi="90"
-   sodipodi:docbase="/home/hbons/Desktop/experiment/status/16/scalable"
-   sodipodi:docname="offline.svg">
+   sodipodi:docbase="/home/hbons/Desktop/2.1.1/status/16/scalable"
+   sodipodi:docname="offline.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:modified="true">
   <defs
      id="defs4">
     <linearGradient
@@ -168,8 +170,8 @@
      fill="#eeeeec"
      inkscape:window-width="1434"
      inkscape:window-height="844"
-     inkscape:window-x="0"
-     inkscape:window-y="0" />
+     inkscape:window-x="3"
+     inkscape:window-y="25" />
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -186,16 +188,6 @@
      inkscape:groupmode="layer"
      id="layer1">
     <path
-       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.45064,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
-       sodipodi:ry="8.6620579"
-       sodipodi:rx="8.6620579"
-       sodipodi:cy="19.008621"
-       sodipodi:cx="31.112698"
-       id="path4318"
-       style="opacity:0.7;color:#000000;fill:url(#radialGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       sodipodi:type="arc"
-       transform="matrix(0.923568,0,0,0.288615,-20.73469,8.013827)" />
-    <path
        style="fill:#888a85;fill-opacity:1;stroke:#2e3436;stroke-width:0.99999827;stroke-miterlimit:4;stroke-opacity:1"
        d="M 13.307074,13.307079 C 10.376958,16.237198 5.6213214,16.237693 2.6918157,13.308187 C -0.23769028,10.378679 -0.23719421,5.623042 2.692923,2.6929237 C 5.62304,-0.23719442 10.378675,-0.23769056 13.308181,2.6918165 C 16.237687,5.6213234 16.237192,10.376962 13.307074,13.307079 z "
        id="path2187" />
Binary file pidgin/pixmaps/toolbar/11/message-new.png has changed
Binary file pidgin/pixmaps/toolbar/16/emote-select.png has changed
Binary file pidgin/pixmaps/toolbar/16/insert.png has changed
Binary file pidgin/pixmaps/toolbar/16/send-file.png has changed
--- a/pidgin/pixmaps/toolbar/Makefile.am	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/pixmaps/toolbar/Makefile.am	Tue Oct 23 17:27:12 2007 +0000
@@ -1,6 +1,11 @@
 SUBDIRS = 16 22
 
+TINY_ICONS = 11/message-new.png
 EXTRA_DIST = \
 	Makefile.mingw \
 	16/Makefile.mingw \
-	22/Makefile.mingw
+	22/Makefile.mingw \
+	$(TINY_ICONS)
+
+pidgintinytoolbarpixdir = $(datadir)/pixmaps/pidgin/toolbar/11
+pidgintinytoolbarpix_DATA = $(TINY_ICONS)
--- a/pidgin/plugins/gestures/stroke-draw.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/plugins/gestures/stroke-draw.c	Tue Oct 23 17:27:12 2007 +0000
@@ -13,7 +13,6 @@
 #include <gtk/gtk.h>
 #include <gdk/gdkx.h>
 
-#include <gdk/gdkx.h>
 #include "gstroke.h"
 #include "gstroke-internal.h"
 
--- a/pidgin/plugins/history.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/plugins/history.c	Tue Oct 23 17:27:12 2007 +0000
@@ -46,6 +46,9 @@
 
 	convtype = purple_conversation_get_type(c);
 	gtkconv = PIDGIN_CONVERSATION(c);
+	if (gtkconv == NULL)
+		return;
+
 	if (convtype == PURPLE_CONV_TYPE_IM && g_list_length(gtkconv->convs) < 2)
 	{
 		GSList *buddies;
@@ -166,6 +169,7 @@
 	purple_signal_connect(purple_conversations_get_handle(),
 						"conversation-created",
 						plugin, PURPLE_CALLBACK(historize), NULL);
+	/* XXX: Do we want to listen to pidgin's "conversation-displayed" signal? */
 
 	purple_prefs_connect_callback(plugin, "/purple/logging/log_ims",
 								history_prefs_cb, plugin);
--- a/pidgin/plugins/pidginrc.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/plugins/pidginrc.c	Tue Oct 23 17:27:12 2007 +0000
@@ -57,22 +57,16 @@
 
 static const gchar *font_prefs[] = {
 	"/plugins/gtk/purplerc/font/*pidgin_conv_entry",
-	"/plugins/gtk/purplerc/font/*pidgin_conv_imhtml",
-	"/plugins/gtk/purplerc/font/*pidgin_log_imhtml",
 	"/plugins/gtk/purplerc/font/*pidgin_request_imhtml",
 	"/plugins/gtk/purplerc/font/*pidgin_notify_imhtml",
 };
 static const gchar *font_prefs_set[] = {
 	"/plugins/gtk/purplerc/set/font/*pidgin_conv_entry",
-	"/plugins/gtk/purplerc/set/font/*pidgin_conv_imhtml",
-	"/plugins/gtk/purplerc/set/font/*pidgin_log_imhtml",
 	"/plugins/gtk/purplerc/set/font/*pidgin_request_imhtml",
 	"/plugins/gtk/purplerc/set/font/*pidgin_notify_imhtml",
 };
 static const gchar *font_names[] = {
 	N_("Conversation Entry"),
-	N_("Conversation History"),
-	N_("Log Viewer"),
 	N_("Request Dialog"),
 	N_("Notify Dialog")
 };
--- a/pidgin/plugins/win32/winprefs/gtkappbar.c	Tue Oct 23 17:05:12 2007 +0000
+++ b/pidgin/plugins/win32/winprefs/gtkappbar.c	Tue Oct 23 17:27:12 2007 +0000
@@ -352,17 +352,37 @@
 	}
 	return GDK_FILTER_CONTINUE;
 }
+
+static void show_hide(GtkAppBar *ab, gboolean hide) {
+	purple_debug_info("gtkappbar", "show_hide(%d)\n", hide);
+
+	if (hide) {
+		purple_debug_info("gtkappbar", "hidden\n");
+		gtk_appbar_unregister(ab, GDK_WINDOW_HWND(ab->win->window));
+		ab->docked = TRUE;
+		ab->iconized = TRUE;
+	} else {
+		ab->iconized = FALSE;
+		purple_debug_info("gtkappbar", "shown\n");
+		ab->docked = FALSE;
+		gtk_appbar_do_dock(ab, ab->side);
+	}
+
+}
+
 /** Notify the system that the appbar's position has changed */
 static GdkFilterReturn wnd_poschanged(GtkAppBar *ab, GdkXEvent *xevent) {
 	if (ab->registered) {
 		APPBARDATA abd;
 		MSG *msg = (MSG*)xevent;
+
 		purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "wnd_poschanged\n");
 
 		abd.hWnd = msg->hwnd;
 		abd.cbSize = sizeof(APPBARDATA);
 
 		SHAppBarMessage(ABM_WINDOWPOSCHANGED, &abd);
+
 	}
 	return GDK_FILTER_CONTINUE;
 }
@@ -382,6 +402,14 @@
                         set_toolbar(msg->hwnd, FALSE);
                 /*return GDK_FILTER_REMOVE;*/
         }
+
+	if (ab->docked) {
+		if (ab->iconized && wpos->flags & SWP_SHOWWINDOW)
+			show_hide(ab, FALSE);
+		else if (!ab->iconized && wpos->flags & SWP_HIDEWINDOW)
+			show_hide(ab, TRUE);
+	}
+
         return GDK_FILTER_CONTINUE;
 }
 
@@ -409,23 +437,17 @@
 }
 
 static GdkFilterReturn wnd_showwindow(GtkAppBar *ab, GdkXEvent *xevent) {
-        MSG *msg = (MSG*)xevent;
+	MSG *msg = (MSG*)xevent;
 
-        purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "wnd_showwindow\n");
-        if(msg->wParam && ab->docked) {
-		ab->iconized = FALSE;
-                purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "shown\n");
-                ab->docked = FALSE;
-                gtk_appbar_do_dock(ab, ab->side);
-        }
-        else if(!msg->wParam && ab->docked) {
-                purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "hidden\n");
-                gtk_appbar_unregister(ab, GDK_WINDOW_HWND(ab->win->window));
-                ab->docked = TRUE;
-		ab->iconized = TRUE;
-        }
-        return GDK_FILTER_CONTINUE;
+	purple_debug_info("gtkappbar", "wnd_showwindow\n");
+	if(msg->wParam && ab->docked) {
+		show_hide(ab, FALSE);
+	} else if(!msg->wParam && ab->docked) {
+		show_hide(ab, TRUE);
+	}
+	return GDK_FILTER_CONTINUE;
 }
+
 /** The window's size has changed */
 static GdkFilterReturn wnd_size(GtkAppBar *ab, GdkXEvent *xevent) {
         MSG *msg = (MSG*)xevent;
Binary file pidgin/win32/nsis/pixmaps/pidgin-intro.bmp has changed
--- a/po/ChangeLog	Tue Oct 23 17:05:12 2007 +0000
+++ b/po/ChangeLog	Tue Oct 23 17:27:12 2007 +0000
@@ -1,4 +1,4 @@
-idgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
+Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
 version 2.2.2
 	* Catalan translation updated (Josep Puigdemont)
--- a/po/POTFILES.in	Tue Oct 23 17:05:12 2007 +0000
+++ b/po/POTFILES.in	Tue Oct 23 17:27:12 2007 +0000
@@ -91,11 +91,13 @@
 libpurple/protocols/jabber/usermood.c
 libpurple/protocols/jabber/usernick.c
 libpurple/protocols/jabber/xdata.c
+libpurple/protocols/msn/contact.c
 libpurple/protocols/msn/dialog.c
 libpurple/protocols/msn/error.c
 libpurple/protocols/msn/msn.c
 libpurple/protocols/msn/nexus.c
 libpurple/protocols/msn/notification.c
+libpurple/protocols/msn/oim.c
 libpurple/protocols/msn/servconn.c
 libpurple/protocols/msn/session.c
 libpurple/protocols/msn/state.c
--- a/po/nb.po	Tue Oct 23 17:05:12 2007 +0000
+++ b/po/nb.po	Tue Oct 23 17:27:12 2007 +0000
@@ -1,9 +1,10 @@
 # translation of nb.po to Norsk bokmål
-# Gaim Norwegian translation
+# Pidgin Norwegian Bokmål translation
 # Copyright (C) 2003, Petter Johan Olsen <petter.olsen@cc.uit.no>
 # Copyright (C) 2005, Kyrre Ness Sjøbæk  <kyrre@solution-forge.net>
+# Copyright (C), Hallvard Glad <hallvard.glad@gmail.com>
 #
-# This file is distributed under the same license as the Gaim package.
+# This file is distributed under the same license as the Pidgin package.
 #
 # Contributors:
 #  Petter Johan Olsen   initial translation for 0.62
@@ -17,26 +18,26 @@
 msgstr ""
 "Project-Id-Version: nb\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-09-28 15:32-0500\n"
-"PO-Revision-Date: 2005-06-08 15:51+0200\n"
-"Last-Translator: Hallvard Glad <hallvard.glad@gmail.com>\n"
+"POT-Creation-Date: 2007-09-26 09:23-0400\n"
+"PO-Revision-Date: 2007-09-26 13:48+0100\n"
+"Last-Translator: Espen Stefansen <espens@svn.gnome.org>\n"
 "Language-Team: Norsk bokmål <no@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: KBabel 1.3.1\n"
-
-#: ../finch/finch.c:64 ../finch/finch.c:301 ../finch/finch.c:330
+
+#: ../finch/finch.c:64
+#: ../finch/finch.c:301
+#: ../finch/finch.c:330
 #: ../finch/finch.c:418
-#, fuzzy
 msgid "Finch"
-msgstr "Fransk"
+msgstr "Finch"
 
 #: ../finch/finch.c:206
-#, fuzzy, c-format
+#, c-format
 msgid "%s. Try `%s -h' for more information.\n"
-msgstr "Gaim %s. Prøv '%s -h' for mer informasjon.\n"
+msgstr "%s. Prøv '%s -h' for mer informasjon.\n"
 
 #: ../finch/finch.c:208
 #, c-format
@@ -51,42 +52,47 @@
 "  -v, --version       display the current version and exit\n"
 msgstr ""
 
-#: ../finch/finch.c:328 ../pidgin/gtkmain.c:711
-#, c-format
-msgid ""
-"%s encountered errors migrating your settings from %s to %s. Please "
-"investigate and complete the migration by hand. Please report this error at "
-"http://developer.pidgin.im"
-msgstr ""
-
-#: ../finch/gntaccount.c:124 ../finch/gntaccount.c:484 ../finch/gntblist.c:300
-#: ../finch/gntblist.c:433 ../finch/gntblist.c:446 ../finch/gntplugin.c:186
-#: ../finch/gntplugin.c:234 ../finch/gntstatus.c:301 ../finch/gntstatus.c:310
-#: ../finch/plugins/gntclipboard.c:115 ../finch/plugins/gntclipboard.c:121
+#: ../finch/finch.c:328
+#: ../pidgin/gtkmain.c:718
+#, c-format
+msgid "%s encountered errors migrating your settings from %s to %s. Please investigate and complete the migration by hand. Please report this error at http://developer.pidgin.im"
+msgstr ""
+
+#: ../finch/gntaccount.c:124
+#: ../finch/gntaccount.c:484
+#: ../finch/gntblist.c:300
+#: ../finch/gntblist.c:433
+#: ../finch/gntblist.c:446
+#: ../finch/gntplugin.c:186
+#: ../finch/gntplugin.c:234
+#: ../finch/gntstatus.c:301
+#: ../finch/gntstatus.c:310
+#: ../finch/plugins/gntclipboard.c:115
+#: ../finch/plugins/gntclipboard.c:121
 #: ../finch/plugins/gntclipboard.c:128
-#: ../libpurple/protocols/jabber/buddy.c:2029
+#: ../libpurple/protocols/jabber/buddy.c:2032
 #: ../libpurple/protocols/jabber/chat.c:677
 #: ../libpurple/protocols/jabber/chat.c:688
 #: ../libpurple/protocols/jabber/jabber.c:1515
 #: ../libpurple/protocols/qq/group_join.c:328
-#: ../libpurple/protocols/qq/im.c:576 ../libpurple/protocols/silc/ops.c:57
+#: ../libpurple/protocols/qq/im.c:576
+#: ../libpurple/protocols/silc/ops.c:57
 #: ../libpurple/protocols/silc/ops.c:1456
 #: ../libpurple/protocols/silc10/ops.c:1451
 msgid "Error"
 msgstr "Feil"
 
 #: ../finch/gntaccount.c:124
-#, fuzzy
 msgid "Account was not added"
-msgstr "Kontoen har blitt deaktivert"
+msgstr "Kontoen ble ikke lagt til"
 
 #: ../finch/gntaccount.c:125
 msgid "Screenname of an account must be non-empty."
-msgstr ""
+msgstr "Skjermnavnet for en konto kan ikke være tomt."
 
 #: ../finch/gntaccount.c:437
 msgid "New mail notifications"
-msgstr "Varsling om ny e-post"
+msgstr "Varsling om nye e-poster"
 
 #: ../finch/gntaccount.c:447
 msgid "Remember password"
@@ -94,30 +100,31 @@
 
 #: ../finch/gntaccount.c:485
 msgid "There's no protocol plugins installed."
-msgstr ""
+msgstr "Det er ingen protokolltillegg installert."
 
 #: ../finch/gntaccount.c:486
 msgid "(You probably forgot to 'make install'.)"
-msgstr ""
-
-#: ../finch/gntaccount.c:496 ../finch/gntconn.c:136
-#: ../pidgin/gtkaccount.c:1473 ../pidgin/gtkblist.c:4040
+msgstr "(Du har sikkert glemt 'make install'.)"
+
+#: ../finch/gntaccount.c:496
+#: ../finch/gntconn.c:137
+#: ../pidgin/gtkaccount.c:1473
+#: ../pidgin/gtkblist.c:4322
 msgid "Modify Account"
 msgstr "Endre konto"
 
 #
 #: ../finch/gntaccount.c:496
-#, fuzzy
 msgid "New Account"
-msgstr "Konto"
-
-#: ../finch/gntaccount.c:521 ../pidgin/gtkft.c:696
+msgstr "Ny konto"
+
+#: ../finch/gntaccount.c:521
+#: ../pidgin/gtkft.c:696
 msgid "Protocol:"
 msgstr "Protokoll:"
 
 #: ../finch/gntaccount.c:529
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:290
-#, fuzzy
 msgid "Screen name:"
 msgstr "Skjermnavn:"
 
@@ -131,21 +138,37 @@
 
 #. Cancel button
 #. Cancel
-#: ../finch/gntaccount.c:575 ../finch/gntaccount.c:638
-#: ../finch/gntaccount.c:889 ../finch/gntblist.c:344 ../finch/gntblist.c:421
-#: ../finch/gntblist.c:456 ../finch/gntblist.c:803 ../finch/gntblist.c:1005
-#: ../finch/gntblist.c:1101 ../finch/gntblist.c:2222 ../finch/gntcertmgr.c:91
-#: ../finch/gntplugin.c:379 ../finch/gntpounce.c:459 ../finch/gntpounce.c:667
-#: ../finch/gntprefs.c:265 ../finch/gntsound.c:1058 ../finch/gntstatus.c:145
-#: ../finch/gntstatus.c:485 ../finch/gntstatus.c:610
-#: ../libpurple/account.c:1013 ../libpurple/account.c:1263
-#: ../libpurple/account.c:1298 ../libpurple/conversation.c:1215
-#: ../libpurple/plugins/buddynote.c:51 ../libpurple/protocols/gg/gg.c:507
-#: ../libpurple/protocols/gg/gg.c:666 ../libpurple/protocols/gg/gg.c:803
+#: ../finch/gntaccount.c:575
+#: ../finch/gntaccount.c:638
+#: ../finch/gntaccount.c:889
+#: ../finch/gntblist.c:344
+#: ../finch/gntblist.c:421
+#: ../finch/gntblist.c:456
+#: ../finch/gntblist.c:803
+#: ../finch/gntblist.c:1005
+#: ../finch/gntblist.c:1101
+#: ../finch/gntblist.c:2224
+#: ../finch/gntcertmgr.c:91
+#: ../finch/gntplugin.c:379
+#: ../finch/gntpounce.c:459
+#: ../finch/gntpounce.c:667
+#: ../finch/gntprefs.c:265
+#: ../finch/gntsound.c:1058
+#: ../finch/gntstatus.c:145
+#: ../finch/gntstatus.c:485
+#: ../finch/gntstatus.c:610
+#: ../libpurple/account.c:1013
+#: ../libpurple/account.c:1263
+#: ../libpurple/account.c:1298
+#: ../libpurple/conversation.c:1215
+#: ../libpurple/plugins/buddynote.c:51
+#: ../libpurple/protocols/gg/gg.c:507
+#: ../libpurple/protocols/gg/gg.c:666
+#: ../libpurple/protocols/gg/gg.c:803
 #: ../libpurple/protocols/gg/gg.c:884
 #: ../libpurple/protocols/jabber/buddy.c:728
-#: ../libpurple/protocols/jabber/buddy.c:2413
-#: ../libpurple/protocols/jabber/buddy.c:2449
+#: ../libpurple/protocols/jabber/buddy.c:2416
+#: ../libpurple/protocols/jabber/buddy.c:2452
 #: ../libpurple/protocols/jabber/chat.c:786
 #: ../libpurple/protocols/jabber/jabber.c:1008
 #: ../libpurple/protocols/jabber/jabber.c:1017
@@ -154,10 +177,12 @@
 #: ../libpurple/protocols/jabber/usermood.c:184
 #: ../libpurple/protocols/jabber/usernick.c:78
 #: ../libpurple/protocols/jabber/xdata.c:400
-#: ../libpurple/protocols/msn/msn.c:287 ../libpurple/protocols/msn/msn.c:304
-#: ../libpurple/protocols/msn/msn.c:321 ../libpurple/protocols/msn/msn.c:338
-#: ../libpurple/protocols/msn/msn.c:359
-#: ../libpurple/protocols/oscar/oscar.c:6094
+#: ../libpurple/protocols/msn/msn.c:290
+#: ../libpurple/protocols/msn/msn.c:307
+#: ../libpurple/protocols/msn/msn.c:324
+#: ../libpurple/protocols/msn/msn.c:341
+#: ../libpurple/protocols/msn/msn.c:362
+#: ../libpurple/protocols/oscar/oscar.c:6092
 #: ../libpurple/protocols/oscar/peer.c:1046
 #: ../libpurple/protocols/qq/buddy_info.c:484
 #: ../libpurple/protocols/qq/buddy_opt.c:214
@@ -192,176 +217,231 @@
 #: ../libpurple/protocols/silc10/ops.c:1904
 #: ../libpurple/protocols/silc10/silc.c:736
 #: ../libpurple/protocols/silc10/silc.c:942
-#: ../libpurple/protocols/yahoo/yahoo.c:1032
-#: ../libpurple/protocols/yahoo/yahoo.c:3498
-#: ../libpurple/protocols/yahoo/yahoo.c:3509 ../pidgin/gtkaccount.c:1908
-#: ../pidgin/gtkaccount.c:2495 ../pidgin/gtkblist.c:5967
-#: ../pidgin/gtkcertmgr.c:197 ../pidgin/gtkdialogs.c:773
-#: ../pidgin/gtkdialogs.c:912 ../pidgin/gtkdialogs.c:1004
-#: ../pidgin/gtkdialogs.c:1024 ../pidgin/gtkdialogs.c:1048
-#: ../pidgin/gtkdialogs.c:1070 ../pidgin/gtkdialogs.c:1118
-#: ../pidgin/gtkdialogs.c:1159 ../pidgin/gtkdialogs.c:1215
-#: ../pidgin/gtkdialogs.c:1254 ../pidgin/gtkdialogs.c:1281
-#: ../pidgin/gtkimhtmltoolbar.c:435 ../pidgin/gtklog.c:328
-#: ../pidgin/gtkplugin.c:289 ../pidgin/gtkpounce.c:1101
-#: ../pidgin/gtkprivacy.c:563 ../pidgin/gtkprivacy.c:579
-#: ../pidgin/gtkprivacy.c:604 ../pidgin/gtkprivacy.c:618
-#: ../pidgin/gtkrequest.c:271 ../pidgin/gtksavedstatuses.c:345
+#: ../libpurple/protocols/yahoo/yahoo.c:1031
+#: ../libpurple/protocols/yahoo/yahoo.c:3497
+#: ../libpurple/protocols/yahoo/yahoo.c:3508
+#: ../pidgin/gtkaccount.c:1908
+#: ../pidgin/gtkaccount.c:2495
+#: ../pidgin/gtkblist.c:6267
+#: ../pidgin/gtkcertmgr.c:197
+#: ../pidgin/gtkdialogs.c:769
+#: ../pidgin/gtkdialogs.c:908
+#: ../pidgin/gtkdialogs.c:1000
+#: ../pidgin/gtkdialogs.c:1020
+#: ../pidgin/gtkdialogs.c:1044
+#: ../pidgin/gtkdialogs.c:1066
+#: ../pidgin/gtkdialogs.c:1114
+#: ../pidgin/gtkdialogs.c:1155
+#: ../pidgin/gtkdialogs.c:1211
+#: ../pidgin/gtkdialogs.c:1250
+#: ../pidgin/gtkdialogs.c:1277
+#: ../pidgin/gtkimhtmltoolbar.c:435
+#: ../pidgin/gtklog.c:328
+#: ../pidgin/gtkplugin.c:289
+#: ../pidgin/gtkpounce.c:1101
+#: ../pidgin/gtkprivacy.c:563
+#: ../pidgin/gtkprivacy.c:579
+#: ../pidgin/gtkprivacy.c:604
+#: ../pidgin/gtkprivacy.c:618
+#: ../pidgin/gtkrequest.c:271
+#: ../pidgin/gtksavedstatuses.c:345
 #: ../pidgin/gtkstatusbox.c:1574
 msgid "Cancel"
-msgstr "_Avbryt"
+msgstr "Avbryt"
 
 #. Save button
 #. Save
-#: ../finch/gntaccount.c:579 ../finch/gntcertmgr.c:311
-#: ../finch/gntplugin.c:379 ../finch/gntpounce.c:465 ../finch/gntprefs.c:265
-#: ../finch/gntsound.c:1055 ../finch/gntstatus.c:488 ../finch/gntstatus.c:598
-#: ../libpurple/account.c:1297 ../libpurple/plugins/buddynote.c:50
-#: ../libpurple/protocols/jabber/buddy.c:727 ../pidgin/gtkdebug.c:749
+#: ../finch/gntaccount.c:579
+#: ../finch/gntcertmgr.c:311
+#: ../finch/gntplugin.c:379
+#: ../finch/gntpounce.c:465
+#: ../finch/gntprefs.c:265
+#: ../finch/gntsound.c:1055
+#: ../finch/gntstatus.c:488
+#: ../finch/gntstatus.c:598
+#: ../libpurple/account.c:1297
+#: ../libpurple/plugins/buddynote.c:50
+#: ../libpurple/protocols/jabber/buddy.c:727
+#: ../pidgin/gtkdebug.c:749
 #: ../pidgin/gtkrequest.c:277
 msgid "Save"
 msgstr "Lagre"
 
-#: ../finch/gntaccount.c:632 ../pidgin/gtkaccount.c:1900
-#: ../pidgin/gtksavedstatuses.c:333 ../pidgin/gtkstatusbox.c:1568
+#: ../finch/gntaccount.c:632
+#: ../pidgin/gtkaccount.c:1900
+#: ../pidgin/gtksavedstatuses.c:333
+#: ../pidgin/gtkstatusbox.c:1568
 #, c-format
 msgid "Are you sure you want to delete %s?"
 msgstr "Er du sikker på at du vil slette %s?"
 
-#
 #: ../finch/gntaccount.c:635
-#, fuzzy
 msgid "Delete Account"
-msgstr "Konto"
+msgstr "Slett konto"
 
 #. Delete button
-#: ../finch/gntaccount.c:637 ../finch/gntaccount.c:707
-#: ../finch/gntcertmgr.c:319 ../finch/gntpounce.c:666 ../finch/gntpounce.c:729
-#: ../finch/gntstatus.c:144 ../finch/gntstatus.c:210
-#: ../pidgin/gtkaccount.c:1907 ../pidgin/gtklog.c:327
-#: ../pidgin/gtkpounce.c:1100 ../pidgin/gtkrequest.c:274
-#: ../pidgin/gtksavedstatuses.c:344 ../pidgin/gtkstatusbox.c:1573
+#: ../finch/gntaccount.c:637
+#: ../finch/gntaccount.c:707
+#: ../finch/gntcertmgr.c:319
+#: ../finch/gntpounce.c:666
+#: ../finch/gntpounce.c:729
+#: ../finch/gntstatus.c:144
+#: ../finch/gntstatus.c:210
+#: ../pidgin/gtkaccount.c:1907
+#: ../pidgin/gtklog.c:327
+#: ../pidgin/gtkpounce.c:1100
+#: ../pidgin/gtkrequest.c:274
+#: ../pidgin/gtksavedstatuses.c:344
+#: ../pidgin/gtkstatusbox.c:1573
 msgid "Delete"
 msgstr "Slett"
 
-#: ../finch/gntaccount.c:669 ../finch/gntblist.c:2119 ../finch/gntui.c:82
-#: ../pidgin/gtkaccount.c:2325 ../pidgin/gtkdocklet.c:522
+#: ../finch/gntaccount.c:669
+#: ../finch/gntblist.c:2121
+#: ../finch/gntui.c:82
+#: ../pidgin/gtkaccount.c:2325
+#: ../pidgin/gtkdocklet.c:522
 msgid "Accounts"
 msgstr "Kontoer"
 
 #: ../finch/gntaccount.c:675
-#, fuzzy
 msgid "You can enable/disable accounts from the following list."
-msgstr "Du venter på godkjenning fra disse kontaktene"
+msgstr "Du kan aktivere/deaktivere kontoer fra følgende liste."
 
 #. Add button
-#: ../finch/gntaccount.c:698 ../finch/gntaccount.c:888 ../finch/gntblist.c:343
-#: ../finch/gntblist.c:421 ../finch/gntblist.c:456 ../finch/gntcertmgr.c:306
-#: ../finch/gntnotify.c:380 ../finch/gntpounce.c:713 ../finch/gntstatus.c:199
-#: ../libpurple/protocols/gg/gg.c:883 ../libpurple/protocols/qq/sys_msg.c:114
+#: ../finch/gntaccount.c:698
+#: ../finch/gntaccount.c:888
+#: ../finch/gntblist.c:343
+#: ../finch/gntblist.c:421
+#: ../finch/gntblist.c:456
+#: ../finch/gntblist.c:2305
+#: ../finch/gntcertmgr.c:306
+#: ../finch/gntnotify.c:383
+#: ../finch/gntpounce.c:713
+#: ../finch/gntstatus.c:199
+#: ../libpurple/protocols/gg/gg.c:883
+#: ../libpurple/protocols/qq/sys_msg.c:114
 #: ../libpurple/protocols/qq/sys_msg.c:173
 #: ../libpurple/protocols/qq/sys_msg.c:267
 #: ../libpurple/protocols/sametime/sametime.c:5486
 #: ../libpurple/protocols/silc/chat.c:615
-#: ../libpurple/protocols/silc10/chat.c:599 ../pidgin/gtkaccount.c:2494
-#: ../pidgin/gtkblist.c:5966 ../pidgin/gtkconv.c:1659
+#: ../libpurple/protocols/silc10/chat.c:599
+#: ../pidgin/gtkaccount.c:2494
+#: ../pidgin/gtkblist.c:6266
+#: ../pidgin/gtkconv.c:1712
 #: ../pidgin/gtkrequest.c:275
 msgid "Add"
 msgstr "Legg til"
 
 #. Modify button
-#: ../finch/gntaccount.c:703 ../finch/gntpounce.c:721
-#, fuzzy
+#: ../finch/gntaccount.c:703
+#: ../finch/gntpounce.c:721
 msgid "Modify"
-msgstr "_Endre"
-
-#: ../finch/gntaccount.c:811 ../pidgin/gtkaccount.c:2441
-#, fuzzy, c-format
+msgstr "Endre"
+
+#: ../finch/gntaccount.c:811
+#: ../pidgin/gtkaccount.c:2441
+#, c-format
 msgid "%s%s%s%s has made %s his or her buddy%s%s"
-msgstr "%s%s%s%s har lagt %s til i sin kontaktliste%s%s%s"
-
-#: ../finch/gntaccount.c:884 ../pidgin/gtkaccount.c:2493
+msgstr "%s%s%s%s har lagt til %s i sin kontaktliste%s%s"
+
+#: ../finch/gntaccount.c:884
+#: ../pidgin/gtkaccount.c:2493
 msgid "Add buddy to your list?"
 msgstr "Legg til kontakten i listen din?"
 
-#: ../finch/gntaccount.c:944 ../pidgin/gtkaccount.c:2551
-#, fuzzy, c-format
+#: ../finch/gntaccount.c:944
+#: ../pidgin/gtkaccount.c:2551
+#, c-format
 msgid "%s%s%s%s wants to add %s to his or her buddy list%s%s"
-msgstr "Brukeren %s ønsker å legge til %s i kontaktlisten sin."
-
-#: ../finch/gntaccount.c:969 ../finch/gntaccount.c:972
-#: ../finch/gntaccount.c:999 ../pidgin/gtkaccount.c:2574
+msgstr "%s%s%s%s ønsker å legge til %s i sin kontaktliste%s%s."
+
+#: ../finch/gntaccount.c:969
+#: ../finch/gntaccount.c:972
+#: ../finch/gntaccount.c:999
+#: ../pidgin/gtkaccount.c:2574
 #: ../pidgin/gtkaccount.c:2580
-#, fuzzy
 msgid "Authorize buddy?"
-msgstr "Godkjenn"
-
-#: ../finch/gntaccount.c:976 ../finch/gntaccount.c:1003
-#: ../pidgin/gtkaccount.c:2575 ../pidgin/gtkaccount.c:2581
+msgstr "Godkjenn kontakt?"
+
+#: ../finch/gntaccount.c:976
+#: ../finch/gntaccount.c:1003
+#: ../pidgin/gtkaccount.c:2575
+#: ../pidgin/gtkaccount.c:2581
 msgid "Authorize"
 msgstr "Godkjenn"
 
-#: ../finch/gntaccount.c:977 ../finch/gntaccount.c:1004
-#: ../pidgin/gtkaccount.c:2576 ../pidgin/gtkaccount.c:2582
+#: ../finch/gntaccount.c:977
+#: ../finch/gntaccount.c:1004
+#: ../pidgin/gtkaccount.c:2576
+#: ../pidgin/gtkaccount.c:2582
 msgid "Deny"
 msgstr "Nekt"
 
 #: ../finch/gntblist.c:289
 msgid "You must provide a screename for the buddy."
-msgstr ""
+msgstr "Du må oppgi et skjermnavn for kontakten."
 
 #: ../finch/gntblist.c:291
 msgid "You must provide a group."
-msgstr ""
+msgstr "Du må oppgi en gruppe."
 
 #: ../finch/gntblist.c:293
-#, fuzzy
 msgid "You must select an account."
-msgstr "Du må angi et kallenavn"
+msgstr "Du må velge en konto."
 
 #: ../finch/gntblist.c:295
 msgid "The selected account is not online."
 msgstr ""
 
 #: ../finch/gntblist.c:300
-#, fuzzy
 msgid "Error adding buddy"
-msgstr ""
-"Klarte ikke lese %s:\n"
-"%s\n"
-
-#: ../finch/gntblist.c:325 ../libpurple/protocols/oscar/oscar.c:2888
-#: ../pidgin/gtkaccount.c:1981 ../pidgin/gtksavedstatuses.c:980
+msgstr "Feil ved å legge til kontakt"
+
+#: ../finch/gntblist.c:325
+#: ../libpurple/protocols/oscar/oscar.c:2884
+#: ../pidgin/gtkaccount.c:1981
+#: ../pidgin/gtksavedstatuses.c:980
 msgid "Screen Name"
 msgstr "Skjermnavn"
 
-#: ../finch/gntblist.c:328 ../finch/gntblist.c:410 ../finch/gntblist.c:1250
-#: ../libpurple/protocols/msn/msn.c:1395
+#: ../finch/gntblist.c:328
+#: ../finch/gntblist.c:410
+#: ../finch/gntblist.c:1250
+#: ../libpurple/protocols/msn/msn.c:1507
 #: ../libpurple/protocols/silc/chat.c:606
 #: ../libpurple/protocols/silc10/chat.c:590
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:704
 #: ../libpurple/protocols/zephyr/zephyr.c:788
-#: ../libpurple/protocols/zephyr/zephyr.c:1207 ../pidgin/gtkdialogs.c:1023
-#: ../pidgin/gtkdialogs.c:1047 ../pidgin/gtkdialogs.c:1069
+#: ../libpurple/protocols/zephyr/zephyr.c:1207
+#: ../pidgin/gtkdialogs.c:1019
+#: ../pidgin/gtkdialogs.c:1043
+#: ../pidgin/gtkdialogs.c:1065
 #: ../pidgin/gtkrequest.c:278
 msgid "Alias"
 msgstr "Alias"
 
-#: ../finch/gntblist.c:331 ../finch/gntblist.c:413
-#, fuzzy
+#: ../finch/gntblist.c:331
+#: ../finch/gntblist.c:413
 msgid "Group"
-msgstr "Gruppe:"
-
-#
-#: ../finch/gntblist.c:335 ../finch/gntblist.c:401 ../finch/gntblist.c:1305
-#: ../finch/gntnotify.c:174 ../finch/gntstatus.c:576
-#: ../libpurple/plugins/idle.c:153 ../libpurple/plugins/idle.c:190
-#: ../pidgin/gtkblist.c:3008 ../pidgin/gtknotify.c:506
-#: ../pidgin/gtkpounce.c:1268 ../pidgin/plugins/gevolution/gevolution.c:445
+msgstr "Gruppe"
+
+#: ../finch/gntblist.c:335
+#: ../finch/gntblist.c:401
+#: ../finch/gntblist.c:1305
+#: ../finch/gntnotify.c:174
+#: ../finch/gntstatus.c:576
+#: ../libpurple/plugins/idle.c:153
+#: ../libpurple/plugins/idle.c:190
+#: ../pidgin/gtkblist.c:3206
+#: ../pidgin/gtknotify.c:503
+#: ../pidgin/gtkpounce.c:1268
+#: ../pidgin/plugins/gevolution/gevolution.c:445
 msgid "Account"
 msgstr "Konto"
 
-#: ../finch/gntblist.c:341 ../finch/gntblist.c:852
+#: ../finch/gntblist.c:341
+#: ../finch/gntblist.c:852
 #: ../libpurple/protocols/silc/buddy.c:725
 #: ../libpurple/protocols/silc/buddy.c:1027
 #: ../libpurple/protocols/silc/buddy.c:1072
@@ -370,38 +450,44 @@
 #: ../libpurple/protocols/silc10/buddy.c:1033
 #: ../libpurple/protocols/silc10/buddy.c:1080
 #: ../libpurple/protocols/silc10/buddy.c:1180
-#: ../libpurple/protocols/yahoo/yahoo.c:3343 ../pidgin/gtkblist.c:5483
+#: ../libpurple/protocols/yahoo/yahoo.c:3342
+#: ../pidgin/gtkblist.c:5772
 #: ../pidgin/plugins/gevolution/add_buddy_dialog.c:445
 msgid "Add Buddy"
 msgstr "Legg til kontakt"
 
 #: ../finch/gntblist.c:341
-#, fuzzy
 msgid "Please enter buddy information."
-msgstr "Navnet på kontakten du vil varsle."
-
-#: ../finch/gntblist.c:370 ../libpurple/blist.c:1209
+msgstr "Vennligst skriv inn kontakteninformasjon."
+
+#: ../finch/gntblist.c:370
+#: ../libpurple/blist.c:1210
 msgid "Chats"
 msgstr "Samtaler"
 
 #. Extract their Name and put it in
-#: ../finch/gntblist.c:407 ../libpurple/protocols/jabber/jabber.c:924
+#: ../finch/gntblist.c:407
+#: ../libpurple/protocols/jabber/jabber.c:924
 #: ../libpurple/protocols/jabber/jabber.c:927
-#: ../libpurple/protocols/msn/msn.c:1584 ../libpurple/protocols/msn/msn.c:1649
-#: ../libpurple/protocols/msn/msn.c:1676
-#: ../libpurple/protocols/qq/buddy_info.c:44 ../pidgin/gtkplugin.c:582
+#: ../libpurple/protocols/msn/msn.c:1694
+#: ../libpurple/protocols/msn/msn.c:1759
+#: ../libpurple/protocols/msn/msn.c:1786
+#: ../libpurple/protocols/qq/buddy_info.c:44
+#: ../pidgin/gtkplugin.c:582
 #: ../pidgin/gtkroomlist.c:618
 #: ../pidgin/plugins/gevolution/add_buddy_dialog.c:132
 #: ../pidgin/plugins/gevolution/assoc-buddy.c:123
 msgid "Name"
 msgstr "Navn"
 
-#: ../finch/gntblist.c:416 ../finch/gntblist.c:819
-#, fuzzy
+#: ../finch/gntblist.c:416
+#: ../finch/gntblist.c:819
 msgid "Auto-join"
 msgstr "Automatisk pålogging"
 
-#: ../finch/gntblist.c:419 ../finch/gntblist.c:854 ../pidgin/gtkblist.c:5859
+#: ../finch/gntblist.c:419
+#: ../finch/gntblist.c:854
+#: ../pidgin/gtkblist.c:6154
 msgid "Add Chat"
 msgstr "Legg til samtale"
 
@@ -409,100 +495,96 @@
 msgid "You can edit more information from the context menu later."
 msgstr ""
 
-#: ../finch/gntblist.c:433 ../finch/gntblist.c:446
-#, fuzzy
+#: ../finch/gntblist.c:433
+#: ../finch/gntblist.c:446
 msgid "Error adding group"
-msgstr ""
-"Klarte ikke lese %s:\n"
-"%s\n"
+msgstr "Feil ved å legge til gruppe"
 
 #: ../finch/gntblist.c:434
-#, fuzzy
 msgid "You must give a name for the group to add."
-msgstr "Vennligst skriv inn navnet på gruppen som skal legges til."
+msgstr "Du må angi et navn til gruppen som skal legges til."
 
 #: ../finch/gntblist.c:447
-#, fuzzy
 msgid "A group with the name already exists."
-msgstr "En mappe med dette navnet eksisterer allerede"
-
-#: ../finch/gntblist.c:454 ../finch/gntblist.c:856
+msgstr "En gruppe med dette navnet eksisterer allerede"
+
+#: ../finch/gntblist.c:454
+#: ../finch/gntblist.c:856
 #: ../libpurple/protocols/sametime/sametime.c:5396
-#: ../libpurple/protocols/sametime/sametime.c:5484 ../pidgin/gtkblist.c:5963
+#: ../libpurple/protocols/sametime/sametime.c:5484
+#: ../pidgin/gtkblist.c:6263
 msgid "Add Group"
 msgstr "Legg til gruppe"
 
 #: ../finch/gntblist.c:454
-#, fuzzy
 msgid "Enter the name of the group"
-msgstr "Vennligst skriv inn navnet på gruppen som skal legges til."
+msgstr "Vennligst skriv inn navnet på gruppen"
 
 #: ../finch/gntblist.c:802
-#, fuzzy
 msgid "Edit Chat"
-msgstr "Legg til samtale"
+msgstr "Rediger samtale"
 
 #: ../finch/gntblist.c:802
 msgid "Please Update the necessary fields."
-msgstr ""
-
-#: ../finch/gntblist.c:803 ../finch/gntstatus.c:205
-#, fuzzy
+msgstr "Vennligst oppdater de nødvendige feltene."
+
+#: ../finch/gntblist.c:803
+#: ../finch/gntstatus.c:205
 msgid "Edit"
 msgstr "Rediger"
 
 #: ../finch/gntblist.c:828
-#, fuzzy
 msgid "Edit Settings"
-msgstr "Skjulte Innstillinger"
-
-#: ../finch/gntblist.c:864 ../pidgin/gtkutils.c:931
+msgstr "Rediger innstillinger"
+
+#: ../finch/gntblist.c:864
+#: ../pidgin/gtkutils.c:931
 msgid "Information"
 msgstr "Informasjon"
 
-#: ../finch/gntblist.c:864 ../pidgin/gtkutils.c:931
-#, fuzzy
+#: ../finch/gntblist.c:864
+#: ../pidgin/gtkutils.c:931
 msgid "Retrieving..."
-msgstr "Kobler til..."
-
-#: ../finch/gntblist.c:904 ../finch/gntconv.c:507
+msgstr "Mottar..."
+
+#: ../finch/gntblist.c:904
+#: ../finch/gntconv.c:534
 #: ../libpurple/protocols/silc/chat.c:899
 #: ../libpurple/protocols/silc10/chat.c:883
 msgid "Get Info"
 msgstr "Hent informasjon"
 
 #: ../finch/gntblist.c:908
-#, fuzzy
 msgid "Add Buddy Pounce"
-msgstr "Legg til kompisvarsling"
+msgstr "Legg til kontaktvarsling"
 
 #. if (q_bud && is_online(q_bud->status)) {
-#: ../finch/gntblist.c:915 ../finch/gntconv.c:519
+#: ../finch/gntblist.c:915
+#: ../finch/gntconv.c:546
 #: ../libpurple/protocols/jabber/si.c:874
-#: ../libpurple/protocols/oscar/oscar.c:654 ../libpurple/protocols/qq/qq.c:587
-#: ../pidgin/gtkconv.c:1607
+#: ../libpurple/protocols/oscar/oscar.c:654
+#: ../libpurple/protocols/qq/qq.c:587
+#: ../pidgin/gtkconv.c:1660
 msgid "Send File"
 msgstr "Send fil"
 
 #: ../finch/gntblist.c:919
-#, fuzzy
 msgid "View Log"
-msgstr "Vis _logg"
+msgstr "Vis logg"
 
 #: ../finch/gntblist.c:1000
-#, fuzzy, c-format
+#, c-format
 msgid "Please enter the new name for %s"
-msgstr "Vennligst skriv inn nytt navn for gruppen."
-
-#: ../finch/gntblist.c:1002 ../finch/gntblist.c:1250
-#, fuzzy
-msgid "Rename"
-msgstr "End_re navn"
+msgstr "Vennligst skriv inn det nye navnet for %s"
 
 #: ../finch/gntblist.c:1002
-#, fuzzy
+#: ../finch/gntblist.c:1250
+msgid "Rename"
+msgstr "Endre navn"
+
+#: ../finch/gntblist.c:1002
 msgid "Set Alias"
-msgstr "Alias"
+msgstr "Angi alias"
 
 #: ../finch/gntblist.c:1003
 msgid "Enter empty string to reset the name."
@@ -517,25 +599,31 @@
 msgstr ""
 
 #: ../finch/gntblist.c:1092
-#, fuzzy, c-format
+#, c-format
 msgid "Are you sure you want to remove %s?"
 msgstr "Er du sikker på at du vil slette %s?"
 
 #. XXX: anything to do with the returned ui-handle?
 #: ../finch/gntblist.c:1095
-#, fuzzy
 msgid "Confirm Remove"
-msgstr "Bekrefte konto"
-
-#: ../finch/gntblist.c:1100 ../finch/gntblist.c:1252 ../finch/gntft.c:227
-#: ../pidgin/gtkconv.c:1656 ../pidgin/gtkrequest.c:276
+msgstr "Bekreft fjerning"
+
+#: ../finch/gntblist.c:1100
+#: ../finch/gntblist.c:1252
+#: ../finch/gntft.c:227
+#: ../pidgin/gtkconv.c:1709
+#: ../pidgin/gtkrequest.c:276
 #: ../pidgin/gtkstatusbox.c:264
 msgid "Remove"
 msgstr "Fjern"
 
 #. Buddy List
-#: ../finch/gntblist.c:1226 ../finch/gntblist.c:2307 ../finch/gntprefs.c:258
-#: ../finch/gntui.c:83 ../pidgin/gtkblist.c:2688 ../pidgin/gtkblist.c:4284
+#: ../finch/gntblist.c:1226
+#: ../finch/gntblist.c:2355
+#: ../finch/gntprefs.c:258
+#: ../finch/gntui.c:83
+#: ../pidgin/gtkblist.c:2886
+#: ../pidgin/gtkblist.c:4566
 #: ../pidgin/plugins/win32/winprefs/winprefs.c:326
 msgid "Buddy List"
 msgstr "Kontaktliste"
@@ -549,20 +637,23 @@
 msgstr ""
 
 #. General
-#: ../finch/gntblist.c:1298 ../libpurple/protocols/gg/gg.c:637
-#: ../libpurple/protocols/gg/gg.c:1050 ../libpurple/protocols/gg/gg.c:1123
+#: ../finch/gntblist.c:1298
+#: ../libpurple/protocols/gg/gg.c:637
+#: ../libpurple/protocols/gg/gg.c:1050
+#: ../libpurple/protocols/gg/gg.c:1123
 #: ../libpurple/protocols/gg/gg.c:2207
 #: ../libpurple/protocols/jabber/buddy.c:286
 #: ../libpurple/protocols/jabber/buddy.c:1247
-#: ../libpurple/protocols/jabber/buddy.c:2214
-#: ../libpurple/protocols/jabber/buddy.c:2396
+#: ../libpurple/protocols/jabber/buddy.c:2217
+#: ../libpurple/protocols/jabber/buddy.c:2399
 #: ../libpurple/protocols/jabber/jabber.c:937
 #: ../libpurple/protocols/jabber/jabber.c:1544
 #: ../libpurple/protocols/jabber/jabber.c:1567
 #: ../libpurple/protocols/jabber/jabber.c:1590
 #: ../libpurple/protocols/jabber/jabber.c:1613
 #: ../libpurple/protocols/jabber/jabber.c:1636
-#: ../libpurple/protocols/msn/msn.c:1403 ../libpurple/protocols/msn/msn.c:1587
+#: ../libpurple/protocols/msn/msn.c:1515
+#: ../libpurple/protocols/msn/msn.c:1697
 #: ../libpurple/protocols/qq/buddy_info.c:43
 #: ../libpurple/protocols/silc/buddy.c:1535
 #: ../libpurple/protocols/silc/ops.c:1002
@@ -572,28 +663,31 @@
 #: ../libpurple/protocols/silc10/ops.c:1036
 #: ../libpurple/protocols/silc10/ops.c:1179
 #: ../libpurple/protocols/silc10/ops.c:1328
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1066 ../pidgin/gtkblist.c:3032
+#: ../libpurple/protocols/yahoo/yahoo_profile.c:1066
+#: ../pidgin/gtkblist.c:3230
 msgid "Nickname"
 msgstr "Kallenavn"
 
 #. Idle stuff
-#: ../finch/gntblist.c:1320 ../finch/gntprefs.c:261
+#: ../finch/gntblist.c:1320
+#: ../finch/gntprefs.c:261
 #: ../libpurple/protocols/bonjour/bonjour.c:340
 #: ../libpurple/protocols/jabber/buddy.c:787
 #: ../libpurple/protocols/jabber/buddy.c:951
-#: ../libpurple/protocols/msn/msn.c:544 ../libpurple/protocols/msn/state.c:32
-#: ../libpurple/protocols/novell/novell.c:2825
-#: ../libpurple/protocols/oscar/oscar.c:2912
-#: ../libpurple/protocols/yahoo/yahoo.c:3097
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:710 ../pidgin/gtkblist.c:3060
-#: ../pidgin/gtkblist.c:3460 ../pidgin/gtkprefs.c:1925
+#: ../libpurple/protocols/msn/state.c:32
+#: ../libpurple/protocols/novell/novell.c:2830
+#: ../libpurple/protocols/oscar/oscar.c:2908
+#: ../libpurple/protocols/yahoo/yahoo.c:3096
+#: ../libpurple/protocols/yahoo/yahoo_profile.c:710
+#: ../pidgin/gtkblist.c:3258
+#: ../pidgin/gtkblist.c:3664
+#: ../pidgin/gtkprefs.c:1927
 msgid "Idle"
 msgstr "Inaktiv"
 
 #: ../finch/gntblist.c:1334
-#, fuzzy
 msgid "On Mobile"
-msgstr "Send til mobil"
+msgstr "På mobil"
 
 #: ../finch/gntblist.c:1415
 #, c-format
@@ -603,70 +697,82 @@
 msgstr ""
 
 #: ../finch/gntblist.c:1424
-#, fuzzy, c-format
+#, c-format
 msgid "Account: %s (%s)"
-msgstr "%s på %s (%s)"
+msgstr "Konto: %s (%s)"
 
 #: ../finch/gntblist.c:1436
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Last Seen: %s ago"
 msgstr ""
 "\n"
-"<b>%s:</b> %s"
-
-#: ../finch/gntblist.c:1702 ../pidgin/gtkdocklet.c:470
+"Sist sett: %s siden"
+
+#: ../finch/gntblist.c:1704
+#: ../pidgin/gtkdocklet.c:470
 #: ../pidgin/gtkstatusbox.c:1072
 msgid "New..."
 msgstr "Ny..."
 
-#: ../finch/gntblist.c:1709 ../pidgin/gtkdocklet.c:471
+#: ../finch/gntblist.c:1711
+#: ../pidgin/gtkdocklet.c:471
 #: ../pidgin/gtkstatusbox.c:1073
-#, fuzzy
 msgid "Saved..."
-msgstr "Lagre fil..."
-
-#: ../finch/gntblist.c:2087 ../finch/gntplugin.c:255 ../finch/gntui.c:88
-#: ../pidgin/gtkdocklet.c:523 ../pidgin/gtkplugin.c:531
+msgstr "Lagret..."
+
+#: ../finch/gntblist.c:2089
+#: ../finch/gntplugin.c:255
+#: ../finch/gntui.c:88
+#: ../pidgin/gtkdocklet.c:523
+#: ../pidgin/gtkplugin.c:531
 msgid "Plugins"
 msgstr "Tillegg"
 
-#: ../finch/gntblist.c:2203 ../pidgin/gtkdialogs.c:754
-#: ../pidgin/gtkdialogs.c:893 ../pidgin/gtkdialogs.c:974
-#, fuzzy
+#: ../finch/gntblist.c:2205
+#: ../pidgin/gtkdialogs.c:750
+#: ../pidgin/gtkdialogs.c:889
+#: ../pidgin/gtkdialogs.c:970
 msgid "_Name"
-msgstr "Navn"
-
-#: ../finch/gntblist.c:2208 ../pidgin/gtkdialogs.c:759
-#: ../pidgin/gtkdialogs.c:898 ../pidgin/gtkdialogs.c:979
+msgstr "_Navn"
+
+#: ../finch/gntblist.c:2210
+#: ../pidgin/gtkdialogs.c:755
+#: ../pidgin/gtkdialogs.c:894
+#: ../pidgin/gtkdialogs.c:975
 msgid "_Account"
 msgstr "Konto:"
 
-#: ../finch/gntblist.c:2216 ../pidgin/gtkdialogs.c:767
+#: ../finch/gntblist.c:2218
+#: ../pidgin/gtkdialogs.c:763
 msgid "New Instant Message"
 msgstr "Ny direktemelding"
 
-#: ../finch/gntblist.c:2218 ../pidgin/gtkdialogs.c:769
-#, fuzzy
-msgid ""
-"Please enter the screen name or alias of the person you would like to IM."
-msgstr ""
-"Vennligst skriv inn skjermnavnet på den personen du vil sende direktemelding "
-"til."
+#: ../finch/gntblist.c:2220
+#: ../pidgin/gtkdialogs.c:765
+msgid "Please enter the screen name or alias of the person you would like to IM."
+msgstr "Vennligst skriv inn skjermnavnet eller aliaset på den personen du vil sende direktemelding til."
 
 #. Not multiline
 #. Not masked?
 #. No hints?
-#: ../finch/gntblist.c:2221 ../finch/gntcertmgr.c:90 ../finch/gntconn.c:135
-#: ../finch/gntnotify.c:80 ../libpurple/account.c:1012
-#: ../libpurple/account.c:1262 ../libpurple/protocols/gg/gg.c:506
-#: ../libpurple/protocols/gg/gg.c:665 ../libpurple/protocols/gg/gg.c:802
+#: ../finch/gntblist.c:2223
+#: ../finch/gntcertmgr.c:90
+#: ../finch/gntconn.c:136
+#: ../finch/gntnotify.c:80
+#: ../libpurple/account.c:1012
+#: ../libpurple/account.c:1262
+#: ../libpurple/protocols/gg/gg.c:506
+#: ../libpurple/protocols/gg/gg.c:665
+#: ../libpurple/protocols/gg/gg.c:802
 #: ../libpurple/protocols/jabber/jabber.c:1736
 #: ../libpurple/protocols/jabber/xdata.c:399
-#: ../libpurple/protocols/msn/msn.c:286 ../libpurple/protocols/msn/msn.c:303
-#: ../libpurple/protocols/msn/msn.c:320 ../libpurple/protocols/msn/msn.c:337
-#: ../libpurple/protocols/oscar/oscar.c:6093
+#: ../libpurple/protocols/msn/msn.c:289
+#: ../libpurple/protocols/msn/msn.c:306
+#: ../libpurple/protocols/msn/msn.c:323
+#: ../libpurple/protocols/msn/msn.c:340
+#: ../libpurple/protocols/oscar/oscar.c:6091
 #: ../libpurple/protocols/silc/buddy.c:454
 #: ../libpurple/protocols/silc/buddy.c:1190
 #: ../libpurple/protocols/silc/chat.c:447
@@ -683,107 +789,131 @@
 #: ../libpurple/protocols/silc10/ops.c:1297
 #: ../libpurple/protocols/silc10/ops.c:1903
 #: ../libpurple/protocols/silc10/silc.c:735
-#: ../libpurple/protocols/yahoo/yahoo.c:1031
-#: ../libpurple/protocols/yahoo/yahoo.c:3497
-#: ../libpurple/protocols/yahoo/yahoo.c:3508 ../pidgin/gtkblist.c:4039
-#: ../pidgin/gtkcertmgr.c:195 ../pidgin/gtkdialogs.c:772
-#: ../pidgin/gtkdialogs.c:911 ../pidgin/gtkdialogs.c:1003
+#: ../libpurple/protocols/yahoo/yahoo.c:1030
+#: ../libpurple/protocols/yahoo/yahoo.c:3496
+#: ../libpurple/protocols/yahoo/yahoo.c:3507
+#: ../pidgin/gtkblist.c:4321
+#: ../pidgin/gtkcertmgr.c:195
+#: ../pidgin/gtkdialogs.c:768
+#: ../pidgin/gtkdialogs.c:907
+#: ../pidgin/gtkdialogs.c:999
 #: ../pidgin/gtkrequest.c:270
 msgid "OK"
-msgstr "_OK"
+msgstr "OK"
 
 #. Create the "Options" frame.
-#: ../finch/gntblist.c:2241 ../finch/gntpounce.c:447 ../pidgin/gtkpounce.c:790
-#, fuzzy
+#: ../finch/gntblist.c:2261
+#: ../finch/gntpounce.c:447
+#: ../pidgin/gtkpounce.c:790
 msgid "Options"
-msgstr "/_Brukervalg"
-
-#: ../finch/gntblist.c:2247
-#, fuzzy
-msgid "Send IM..."
-msgstr "Lagre fil..."
-
-#: ../finch/gntblist.c:2251
-#, fuzzy
-msgid "Show empty groups"
-msgstr "Etter gruppe"
-
-#: ../finch/gntblist.c:2257
-#, fuzzy
-msgid "Show offline buddies"
-msgstr "/Kontakter/Vis _avloggede kontakter"
-
-#: ../finch/gntblist.c:2263
-#, fuzzy
-msgid "Sort by status"
-msgstr "Status"
+msgstr "Brukervalg"
 
 #: ../finch/gntblist.c:2267
-#, fuzzy
-msgid "Sort alphabetically"
-msgstr "Alfabetisk"
+msgid "Send IM..."
+msgstr "Send direktemelding..."
 
 #: ../finch/gntblist.c:2271
 #, fuzzy
-msgid "Sort by log size"
+msgid "Show"
+msgstr "Vis alle"
+
+#: ../finch/gntblist.c:2276
+#, fuzzy
+msgid "Empty groups"
+msgstr "Vis tomme grupper"
+
+#: ../finch/gntblist.c:2282
+#, fuzzy
+msgid "Offline buddies"
+msgstr "Vis avloggede kontakter"
+
+#: ../finch/gntblist.c:2288
+#, fuzzy
+msgid "Sort"
+msgstr "Port"
+
+#: ../finch/gntblist.c:2293
+#, fuzzy
+msgid "By Status"
+msgstr "Etter status"
+
+#: ../finch/gntblist.c:2297
+#: ../pidgin/gtkblist.c:4106
+msgid "Alphabetically"
+msgstr "Alfabetisk"
+
+#: ../finch/gntblist.c:2301
+#, fuzzy
+msgid "By Log Size"
 msgstr "Etter loggstørrelse"
 
-#: ../finch/gntcertmgr.c:86 ../pidgin/gtkcertmgr.c:188
-#, fuzzy
+#: ../finch/gntcertmgr.c:86
+#: ../pidgin/gtkcertmgr.c:188
 msgid "Certificate Import"
-msgstr "Koble til"
-
-#: ../finch/gntcertmgr.c:87 ../pidgin/gtkcertmgr.c:189
+msgstr "Importering av sertifikat"
+
+#: ../finch/gntcertmgr.c:87
+#: ../pidgin/gtkcertmgr.c:189
 msgid "Specify a hostname"
-msgstr ""
-
-#: ../finch/gntcertmgr.c:88 ../pidgin/gtkcertmgr.c:190
+msgstr "Spesifiser et vertsnavn"
+
+#: ../finch/gntcertmgr.c:88
+#: ../pidgin/gtkcertmgr.c:190
 msgid "Type the host name this certificate is for."
-msgstr ""
-
-#: ../finch/gntcertmgr.c:97 ../pidgin/gtkcertmgr.c:210
+msgstr "Skriv inn vertsnavnet som dette sertifikatet er for."
+
+#: ../finch/gntcertmgr.c:97
+#: ../pidgin/gtkcertmgr.c:210
 #, c-format
 msgid ""
 "File %s could not be imported.\n"
 "Make sure that the file is readable and in PEM format.\n"
 msgstr ""
-
-#: ../finch/gntcertmgr.c:99 ../pidgin/gtkcertmgr.c:212
+"Filen %s kunne ikke bli importert.\n"
+"Pass på at filen er lesbar og i PEM-format.\n"
+
+#: ../finch/gntcertmgr.c:99
+#: ../pidgin/gtkcertmgr.c:212
 msgid "Certificate Import Error"
 msgstr ""
 
-#: ../finch/gntcertmgr.c:100 ../pidgin/gtkcertmgr.c:213
+#: ../finch/gntcertmgr.c:100
+#: ../pidgin/gtkcertmgr.c:213
 msgid "X.509 certificate import failed"
 msgstr ""
 
-#: ../finch/gntcertmgr.c:110 ../pidgin/gtkcertmgr.c:224
-#, fuzzy
+#: ../finch/gntcertmgr.c:110
+#: ../pidgin/gtkcertmgr.c:224
 msgid "Select a PEM certificate"
-msgstr "Velg fil"
-
-#: ../finch/gntcertmgr.c:127 ../pidgin/gtkcertmgr.c:245
+msgstr "Velg et PEM-sertifikat"
+
+#: ../finch/gntcertmgr.c:127
+#: ../pidgin/gtkcertmgr.c:245
 #, c-format
 msgid ""
 "Export to file %s failed.\n"
 "Check that you have write permission to the target path\n"
 msgstr ""
 
-#: ../finch/gntcertmgr.c:129 ../pidgin/gtkcertmgr.c:247
+#: ../finch/gntcertmgr.c:129
+#: ../pidgin/gtkcertmgr.c:247
 msgid "Certificate Export Error"
 msgstr ""
 
-#: ../finch/gntcertmgr.c:130 ../pidgin/gtkcertmgr.c:248
+#: ../finch/gntcertmgr.c:130
+#: ../pidgin/gtkcertmgr.c:248
 msgid "X.509 certificate export failed"
 msgstr ""
 
-#: ../finch/gntcertmgr.c:159 ../pidgin/gtkcertmgr.c:299
+#: ../finch/gntcertmgr.c:159
+#: ../pidgin/gtkcertmgr.c:299
 msgid "PEM X.509 Certificate Export"
 msgstr ""
 
 #: ../finch/gntcertmgr.c:188
 #, c-format
 msgid "Certificate for %s"
-msgstr ""
+msgstr "Sertifikat for %s"
 
 #: ../finch/gntcertmgr.c:195
 #, c-format
@@ -798,183 +928,193 @@
 msgid "SSL Host Certificate"
 msgstr ""
 
-#: ../finch/gntcertmgr.c:233 ../pidgin/gtkcertmgr.c:372
+#: ../finch/gntcertmgr.c:233
+#: ../pidgin/gtkcertmgr.c:372
 #, c-format
 msgid "Really delete certificate for %s?"
-msgstr ""
-
-#: ../finch/gntcertmgr.c:236 ../pidgin/gtkcertmgr.c:374
+msgstr "Virkelig slett sertifikat for %s?"
+
+#: ../finch/gntcertmgr.c:236
+#: ../pidgin/gtkcertmgr.c:374
 msgid "Confirm certificate delete"
-msgstr ""
-
-#: ../finch/gntcertmgr.c:293 ../pidgin/gtkcertmgr.c:602
+msgstr "Bekreft sletting av sertifikat"
+
+#: ../finch/gntcertmgr.c:293
+#: ../pidgin/gtkcertmgr.c:602
 msgid "Certificate Manager"
-msgstr ""
+msgstr "Sertifikatshåndterer"
 
 #. Creating the user splits
-#: ../finch/gntcertmgr.c:298 ../libpurple/protocols/bonjour/bonjour.c:652
+#: ../finch/gntcertmgr.c:298
+#: ../libpurple/protocols/bonjour/bonjour.c:652
 #: ../libpurple/protocols/silc/silc.c:1007
 #: ../libpurple/protocols/silc10/silc.c:918
-#, fuzzy
 msgid "Hostname"
-msgstr "Etternavn:"
-
-#: ../finch/gntcertmgr.c:315 ../finch/gntnotify.c:383 ../pidgin/gtkconv.c:1635
+msgstr "Vertsnavn"
+
+#: ../finch/gntcertmgr.c:315
+#: ../finch/gntnotify.c:386
+#: ../pidgin/gtkconv.c:1688
 #: ../pidgin/gtkdebug.c:835
 msgid "Info"
 msgstr "Info"
 
 #. Close button
-#: ../finch/gntcertmgr.c:324 ../finch/gntft.c:237 ../finch/gntnotify.c:182
-#: ../finch/gntplugin.c:210 ../finch/gntplugin.c:310 ../finch/gntpounce.c:738
-#: ../finch/gntstatus.c:216 ../libpurple/protocols/msn/msn.c:403
+#: ../finch/gntcertmgr.c:324
+#: ../finch/gntft.c:237
+#: ../finch/gntnotify.c:182
+#: ../finch/gntplugin.c:210
+#: ../finch/gntplugin.c:310
+#: ../finch/gntpounce.c:738
+#: ../finch/gntstatus.c:216
+#: ../libpurple/protocols/msn/msn.c:406
 #: ../libpurple/protocols/silc/util.c:382
-#: ../libpurple/protocols/silc10/util.c:377 ../pidgin/gtkaccount.c:2468
+#: ../libpurple/protocols/silc10/util.c:377
+#: ../pidgin/gtkaccount.c:2468
 #: ../pidgin/gtkrequest.c:273
 msgid "Close"
-msgstr "L_ukk"
-
-#: ../finch/gntconn.c:124
-#, fuzzy, c-format
+msgstr "Lukk"
+
+#: ../finch/gntconn.c:125
+#, c-format
 msgid "%s (%s)"
-msgstr "%s på %s (%s)"
-
-#: ../finch/gntconn.c:127
-#, fuzzy, c-format
-msgid "%s disconnected."
-msgstr "Frakoblet."
+msgstr "%s (%s)"
 
 #: ../finch/gntconn.c:128
+#, c-format
+msgid "%s disconnected."
+msgstr "%s koblet fra."
+
+#: ../finch/gntconn.c:129
 #, fuzzy, c-format
 msgid ""
 "%s\n"
 "\n"
-"Finch will not attempt to reconnect the account until you correct the error "
-"and re-enable the account."
-msgstr ""
-"%s ble avkoblet pga. en feil. %s Kontoen har blitt avstengt. Korriger feilen "
-"og slå på kontoen for å tilkoble."
-
-#: ../finch/gntconn.c:137 ../pidgin/gtkblist.c:4041
-#, fuzzy
+"Finch will not attempt to reconnect the account until you correct the error and re-enable the account."
+msgstr "%s ble avkoblet pga. en feil. %s Kontoen har blitt avstengt. Korriger feilen og slå på kontoen for å tilkoble."
+
+#: ../finch/gntconn.c:138
+#: ../pidgin/gtkblist.c:4323
 msgid "Re-enable Account"
-msgstr "Registrere ny jabber-konto"
+msgstr "Reaktiver konto"
 
 #: ../finch/gntconv.c:139
 msgid "No such command."
 msgstr "Ingen slik kommando"
 
-#: ../finch/gntconv.c:143 ../pidgin/gtkconv.c:489
+#: ../finch/gntconv.c:143
+#: ../pidgin/gtkconv.c:530
 msgid "Syntax Error:  You typed the wrong number of arguments to that command."
 msgstr "Syntaksfeil: Du skrev inn feil antall argumenter til den kommandoen"
 
-#: ../finch/gntconv.c:148 ../pidgin/gtkconv.c:495
+#: ../finch/gntconv.c:148
+#: ../pidgin/gtkconv.c:536
 msgid "Your command failed for an unknown reason."
 msgstr "Din kommando feilet av ukjent årsak."
 
-#: ../finch/gntconv.c:153 ../pidgin/gtkconv.c:502
-#, fuzzy
+#: ../finch/gntconv.c:153
+#: ../pidgin/gtkconv.c:543
 msgid "That command only works in chats, not IMs."
-msgstr "Den kommandoen virker bare i samtalegrupper, ikke i direktemeldinger"
-
-#: ../finch/gntconv.c:156 ../pidgin/gtkconv.c:505
-#, fuzzy
+msgstr "Den kommandoen virker bare i samtalegrupper, ikke i direktemeldinger."
+
+#: ../finch/gntconv.c:156
+#: ../pidgin/gtkconv.c:546
 msgid "That command only works in IMs, not chats."
 msgstr "Den kommandoen virker bare i direktemeldinger, ikke samtalegrupper"
 
-#: ../finch/gntconv.c:160 ../pidgin/gtkconv.c:510
+#: ../finch/gntconv.c:160
+#: ../pidgin/gtkconv.c:551
 msgid "That command doesn't work on this protocol."
 msgstr "Denne kommandoen virker ikke på denne protokollen"
 
 #: ../finch/gntconv.c:168
-#, fuzzy
 msgid "Message was not sent, because you are not signed on."
-msgstr "Meldingen kunne ikke bli sendt, brukeren er frakoblet:"
+msgstr "Meldingen kunne ikke bli sendt, fordi du ikke er koblet til."
 
 #: ../finch/gntconv.c:251
-#, fuzzy, c-format
+#, c-format
 msgid "%s (%s -- %s)"
-msgstr "%s på %s (%s)"
+msgstr "%s (%s -- %s)"
 
 #: ../finch/gntconv.c:274
 #, c-format
 msgid "%s [%s]"
-msgstr ""
-
-#: ../finch/gntconv.c:279 ../finch/gntconv.c:773
-#, fuzzy, c-format
+msgstr "%s [%s]"
+
+#: ../finch/gntconv.c:279
+#: ../finch/gntconv.c:801
+#, c-format
 msgid ""
 "\n"
 "%s is typing..."
-msgstr "Brukeren skriver en melding..."
+msgstr ""
+"\n"
+"%s skriver..."
 
 #: ../finch/gntconv.c:298
-#, fuzzy
 msgid "You have left this chat."
-msgstr "Du snakker i samtalen"
-
-#: ../finch/gntconv.c:387 ../pidgin/gtkconv.c:1362
+msgstr "Du har forlatt denne samtalen"
+
+#: ../finch/gntconv.c:414
+#: ../pidgin/gtkconv.c:1415
 msgid "Logging started. Future messages in this conversation will be logged."
 msgstr ""
 
-#: ../finch/gntconv.c:393 ../pidgin/gtkconv.c:1370
-msgid ""
-"Logging stopped. Future messages in this conversation will not be logged."
-msgstr ""
-"Logging stoppet. Framtidige beskjeder i denne samtalen vil ikke bli logget."
-
-#: ../finch/gntconv.c:442
-#, fuzzy
+#: ../finch/gntconv.c:420
+#: ../pidgin/gtkconv.c:1423
+msgid "Logging stopped. Future messages in this conversation will not be logged."
+msgstr "Logging stoppet. Framtidige beskjeder i denne samtalen vil ikke bli logget."
+
+#: ../finch/gntconv.c:469
 msgid "Send To"
-msgstr "Send som"
-
-#: ../finch/gntconv.c:486
-#, fuzzy
+msgstr "Send til"
+
+#: ../finch/gntconv.c:513
 msgid "Conversation"
-msgstr "Samtaler"
-
-#: ../finch/gntconv.c:492
+msgstr "Samtale"
+
+#: ../finch/gntconv.c:519
 msgid "Clear Scrollback"
 msgstr ""
 
-#: ../finch/gntconv.c:496 ../finch/gntprefs.c:191
-#, fuzzy
+#: ../finch/gntconv.c:523
+#: ../finch/gntprefs.c:191
 msgid "Show Timestamps"
-msgstr "Tidsstempler"
-
-#: ../finch/gntconv.c:512
-#, fuzzy
+msgstr "Vis tidsstempler"
+
+#: ../finch/gntconv.c:539
 msgid "Add Buddy Pounce..."
-msgstr "Legg til kompisvarsling"
-
-#: ../finch/gntconv.c:527
-#, fuzzy
+msgstr "Legg til kontaktvarsling..."
+
+#: ../finch/gntconv.c:554
 msgid "Enable Logging"
-msgstr "/Brukervalg/Slå på logging"
-
-#: ../finch/gntconv.c:533
-#, fuzzy
+msgstr "Aktiver logging"
+
+#: ../finch/gntconv.c:560
 msgid "Enable Sounds"
-msgstr "/Brukervalg/Slå på lyder"
-
-#: ../finch/gntconv.c:739
+msgstr "Aktiver lyder"
+
+#: ../finch/gntconv.c:766
 msgid "<AUTO-REPLY> "
 msgstr ""
 
 #. Print the list of users in the room
-#: ../finch/gntconv.c:861
+#: ../finch/gntconv.c:889
 msgid "List of users:\n"
 msgstr ""
 
-#: ../finch/gntconv.c:1023 ../pidgin/gtkconv.c:331
+#: ../finch/gntconv.c:1051
+#: ../pidgin/gtkconv.c:370
 msgid "Supported debug options are:  version"
 msgstr "Støttede avlusningsmuligheter er: version"
 
-#: ../finch/gntconv.c:1059 ../pidgin/gtkconv.c:381
+#: ../finch/gntconv.c:1087
+#: ../pidgin/gtkconv.c:422
 msgid "No such command (in this context)."
 msgstr "Ingen slik kommando (i denne sammenheng)."
 
-#: ../finch/gntconv.c:1062 ../pidgin/gtkconv.c:384
+#: ../finch/gntconv.c:1090
+#: ../pidgin/gtkconv.c:425
 msgid ""
 "Use \"/help &lt;command&gt;\" for help on a specific command.\n"
 "The following commands are available in this context:\n"
@@ -982,65 +1122,63 @@
 "Bruk \"/help &lt;command&gt;\" for hjelp på en spesifikk kommando.\n"
 "De følgende kommandoer er tilgjengelige i denne sammenhengen:\n"
 
-#: ../finch/gntconv.c:1120 ../pidgin/gtkconv.c:7560
-msgid ""
-"say &lt;message&gt;:  Send a message normally as if you weren't using a "
-"command."
-msgstr ""
-"say &lt;message&gt;: Send en beskjed normalt som om du ikke brukte en "
-"kommando."
-
-#: ../finch/gntconv.c:1123 ../pidgin/gtkconv.c:7563
+#: ../finch/gntconv.c:1148
+#: ../pidgin/gtkconv.c:7642
+msgid "say &lt;message&gt;:  Send a message normally as if you weren't using a command."
+msgstr "say &lt;message&gt;: Send en beskjed normalt som om du ikke brukte en kommando."
+
+#: ../finch/gntconv.c:1151
+#: ../pidgin/gtkconv.c:7645
 msgid "me &lt;action&gt;:  Send an IRC style action to a buddy or chat."
-msgstr ""
-"me &lt;action&gt;: Send en IRC stil handling til en kompis eller samtale."
-
-#: ../finch/gntconv.c:1126 ../pidgin/gtkconv.c:7566
-msgid ""
-"debug &lt;option&gt;:  Send various debug information to the current "
-"conversation."
-msgstr ""
-"debug &lt;option&gt;: Send diverse debug informasjon til den pågående "
-"samtalen."
-
-#: ../finch/gntconv.c:1129 ../pidgin/gtkconv.c:7569
+msgstr "me &lt;action&gt;: Send en IRC stil handling til en kompis eller samtale."
+
+#: ../finch/gntconv.c:1154
+#: ../pidgin/gtkconv.c:7648
+msgid "debug &lt;option&gt;:  Send various debug information to the current conversation."
+msgstr "debug &lt;option&gt;: Send diverse debug informasjon til den pågående samtalen."
+
+#: ../finch/gntconv.c:1157
+#: ../pidgin/gtkconv.c:7651
 #, fuzzy
 msgid "clear: Clears the conversation scrollback."
 msgstr "%s har lukket samtalevinduet."
 
-#: ../finch/gntconv.c:1132 ../pidgin/gtkconv.c:7575
+#: ../finch/gntconv.c:1160
+#: ../pidgin/gtkconv.c:7657
 msgid "help &lt;command&gt;:  Help on a specific command."
 msgstr ""
 
-#: ../finch/gntconv.c:1135
+#: ../finch/gntconv.c:1163
 msgid "users:  Show the list of users in the chat."
 msgstr ""
 
-#: ../finch/gntconv.c:1140
+#: ../finch/gntconv.c:1168
 msgid "plugins: Show the plugins window."
 msgstr ""
 
-#: ../finch/gntconv.c:1143
+#: ../finch/gntconv.c:1171
 msgid "buddylist: Show the buddylist."
 msgstr ""
 
-#: ../finch/gntconv.c:1146
+#: ../finch/gntconv.c:1174
 msgid "accounts: Show the accounts window."
 msgstr ""
 
-#: ../finch/gntconv.c:1149
+#: ../finch/gntconv.c:1177
 msgid "debugwin: Show the debug window."
 msgstr ""
 
-#: ../finch/gntconv.c:1152
+#: ../finch/gntconv.c:1180
 msgid "prefs: Show the preference window."
 msgstr ""
 
-#: ../finch/gntconv.c:1155
+#: ../finch/gntconv.c:1183
 msgid "statuses: Show the savedstatuses window."
 msgstr ""
 
-#: ../finch/gntdebug.c:235 ../finch/gntui.c:86 ../pidgin/gtkdebug.c:695
+#: ../finch/gntdebug.c:235
+#: ../finch/gntui.c:86
+#: ../pidgin/gtkdebug.c:695
 msgid "Debug Window"
 msgstr "Avlusningsvindu"
 
@@ -1048,73 +1186,88 @@
 #. * it's necessary to make the width of the debug window resizable ... like I said,
 #. * it doesn't make sense. The bug is likely in the packing in gntbox.c.
 #.
-#: ../finch/gntdebug.c:256 ../pidgin/gtkdebug.c:754
+#: ../finch/gntdebug.c:256
+#: ../pidgin/gtkdebug.c:754
 #, fuzzy
 msgid "Clear"
 msgstr "L_ukk"
 
 #: ../finch/gntdebug.c:262
-#, fuzzy
 msgid "Filter: "
-msgstr "Feilet."
-
-#: ../finch/gntdebug.c:266 ../pidgin/gtkdebug.c:763
+msgstr "Filter:"
+
+#: ../finch/gntdebug.c:266
+#: ../pidgin/gtkdebug.c:763
 msgid "Pause"
 msgstr "Pause"
 
-#: ../finch/gntft.c:118 ../pidgin/gtkft.c:229
-#, fuzzy, c-format
+#: ../finch/gntft.c:118
+#: ../pidgin/gtkft.c:229
+#, c-format
 msgid "File Transfers - %d%% of %d files"
-msgstr "Filoverføring til %s avbrutt.\n"
+msgstr "Filoverføringer - %d%% av %d filer"
 
 #. Create the window.
-#: ../finch/gntft.c:123 ../finch/gntft.c:196 ../finch/gntui.c:87
-#: ../pidgin/gtkft.c:234 ../pidgin/gtkft.c:762
+#: ../finch/gntft.c:123
+#: ../finch/gntft.c:196
+#: ../finch/gntui.c:87
+#: ../pidgin/gtkft.c:234
+#: ../pidgin/gtkft.c:762
 msgid "File Transfers"
 msgstr "Filoverføringer"
 
-#: ../finch/gntft.c:201 ../pidgin/gtkft.c:645
+#: ../finch/gntft.c:201
+#: ../pidgin/gtkft.c:645
 msgid "Progress"
 msgstr "Framdrift"
 
-#: ../finch/gntft.c:201 ../pidgin/gtkft.c:652
+#: ../finch/gntft.c:201
+#: ../pidgin/gtkft.c:652
 msgid "Filename"
 msgstr "Filnavn"
 
-#: ../finch/gntft.c:201 ../pidgin/gtkft.c:659
+#: ../finch/gntft.c:201
+#: ../pidgin/gtkft.c:659
 msgid "Size"
 msgstr "Størrelse"
 
 #: ../finch/gntft.c:201
-#, fuzzy
 msgid "Speed"
-msgstr "Hastighet:"
-
-#: ../finch/gntft.c:201 ../pidgin/gtkft.c:666
+msgstr "Hastighet"
+
+#: ../finch/gntft.c:201
+#: ../pidgin/gtkft.c:666
 msgid "Remaining"
 msgstr "Gjenstår"
 
 #. XXX: Use of ggp_str_to_uin() is an ugly hack!
-#: ../finch/gntft.c:201 ../finch/gntstatus.c:547 ../finch/gntstatus.c:576
+#: ../finch/gntft.c:201
+#: ../finch/gntstatus.c:547
+#: ../finch/gntstatus.c:576
 #: ../libpurple/protocols/bonjour/bonjour.c:344
-#: ../libpurple/protocols/gg/gg.c:1039 ../libpurple/protocols/gg/gg.c:1576
+#: ../libpurple/protocols/gg/gg.c:1039
+#: ../libpurple/protocols/gg/gg.c:1576
 #: ../libpurple/protocols/gg/gg.c:1584
 #: ../libpurple/protocols/jabber/buddy.c:778
 #: ../libpurple/protocols/jabber/buddy.c:782
 #: ../libpurple/protocols/jabber/buddy.c:941
 #: ../libpurple/protocols/jabber/jabber.c:1500
-#: ../libpurple/protocols/msn/msn.c:543
-#: ../libpurple/protocols/novell/novell.c:2835
+#: ../libpurple/protocols/msn/msn.c:596
+#: ../libpurple/protocols/msn/msn.c:603
+#: ../libpurple/protocols/novell/novell.c:2840
 #: ../libpurple/protocols/oscar/oscar.c:821
 #: ../libpurple/protocols/oscar/oscar.c:826
 #: ../libpurple/protocols/oscar/oscar.c:828
-#: ../libpurple/protocols/oscar/oscar.c:2700
-#: ../libpurple/protocols/oscar/oscar.c:3780
+#: ../libpurple/protocols/oscar/oscar.c:2696
+#: ../libpurple/protocols/oscar/oscar.c:3776
 #: ../libpurple/protocols/sametime/sametime.c:3263
 #: ../libpurple/protocols/sametime/sametime.c:4150
-#: ../libpurple/protocols/yahoo/yahoo.c:3248 ../pidgin/gtkblist.c:3104
-#: ../pidgin/gtkblist.c:3118 ../pidgin/gtkblist.c:3120
-#: ../pidgin/gtksavedstatuses.c:999 ../pidgin/gtksavedstatuses.c:1144
+#: ../libpurple/protocols/yahoo/yahoo.c:3247
+#: ../pidgin/gtkblist.c:3302
+#: ../pidgin/gtkblist.c:3316
+#: ../pidgin/gtkblist.c:3318
+#: ../pidgin/gtksavedstatuses.c:999
+#: ../pidgin/gtksavedstatuses.c:1144
 msgid "Status"
 msgstr "Status"
 
@@ -1123,113 +1276,124 @@
 msgstr ""
 
 #: ../finch/gntft.c:218
-#, fuzzy
 msgid "Clear finished transfers"
 msgstr "Fjern fullførte overføringer"
 
 #: ../finch/gntft.c:232
-#, fuzzy
 msgid "Stop"
-msgstr "Hiptop"
-
-#: ../finch/gntft.c:305 ../pidgin/gtkft.c:169 ../pidgin/gtkft.c:973
+msgstr "Stopp"
+
+#: ../finch/gntft.c:305
+#: ../pidgin/gtkft.c:169
+#: ../pidgin/gtkft.c:973
 msgid "Waiting for transfer to begin"
 msgstr "Venter på at overføringen skal starte"
 
-#: ../finch/gntft.c:372 ../pidgin/gtkft.c:166 ../pidgin/gtkft.c:1054
+#: ../finch/gntft.c:372
+#: ../pidgin/gtkft.c:166
+#: ../pidgin/gtkft.c:1054
 msgid "Canceled"
 msgstr "Avbrutt"
 
-#: ../finch/gntft.c:374 ../pidgin/gtkft.c:1056
+#: ../finch/gntft.c:374
+#: ../pidgin/gtkft.c:1056
 msgid "Failed"
-msgstr "Feilet."
-
-#: ../finch/gntft.c:420 ../pidgin/gtkft.c:134
-#, fuzzy, c-format
+msgstr "Feilet"
+
+#: ../finch/gntft.c:420
+#: ../pidgin/gtkft.c:134
+#, c-format
 msgid "%.2f KiB/s"
-msgstr "%.2f KB/s"
+msgstr "%.2f KiB/s"
 
 #: ../finch/gntft.c:431
 #, c-format
 msgid "The file was saved as %s."
-msgstr ""
-
-#
-#: ../finch/gntft.c:432 ../finch/gntft.c:433 ../pidgin/gtkft.c:163
+msgstr "Filen ble lagret som %s."
+
+#: ../finch/gntft.c:432
+#: ../finch/gntft.c:433
+#: ../pidgin/gtkft.c:163
 #: ../pidgin/gtkft.c:1116
 msgid "Finished"
-msgstr "Ferdig"
-
-#: ../finch/gntft.c:437 ../libpurple/protocols/msn/session.c:347
+msgstr "Fullført"
+
+#: ../finch/gntft.c:437
+#: ../libpurple/protocols/msn/session.c:386
 msgid "Transferring"
 msgstr "Overfører"
 
 #: ../finch/gntnotify.c:165
-#, fuzzy
 msgid "Emails"
-msgstr "E-post"
-
-#: ../finch/gntnotify.c:171 ../finch/gntnotify.c:225
+msgstr "E-poster"
+
+#: ../finch/gntnotify.c:171
+#: ../finch/gntnotify.c:225
 msgid "You have mail!"
-msgstr ""
-
-#: ../finch/gntnotify.c:174 ../pidgin/gtknotify.c:513
-#, fuzzy
+msgstr "Du har e-post!"
+
+#: ../finch/gntnotify.c:174
+#: ../pidgin/gtknotify.c:510
 msgid "Sender"
-msgstr "Kjønn"
-
-#: ../finch/gntnotify.c:174 ../pidgin/gtknotify.c:520
+msgstr "Avsender"
+
+#: ../finch/gntnotify.c:174
+#: ../pidgin/gtknotify.c:517
 msgid "Subject"
-msgstr ""
+msgstr "Tittel"
 
 #: ../finch/gntnotify.c:201
-#, fuzzy, c-format
+#, c-format
 msgid "%s (%s) has %d new message."
 msgid_plural "%s (%s) has %d new messages."
-msgstr[0] "%s har %d ny beskjed."
-msgstr[1] "%s har %d nye beskjeder."
-
-#: ../finch/gntnotify.c:225 ../pidgin/gtknotify.c:341
-#, fuzzy
+msgstr[0] "%s (%s) har %d ny beskjed."
+msgstr[1] "%s (%s) har %d nye beskjeder."
+
+#: ../finch/gntnotify.c:225
+#: ../pidgin/gtknotify.c:341
 msgid "New Mail"
-msgstr "E-post"
-
-#: ../finch/gntnotify.c:290 ../pidgin/gtknotify.c:940
+msgstr "Ny e-post"
+
+#: ../finch/gntnotify.c:290
+#: ../pidgin/gtknotify.c:940
 #, c-format
 msgid "Info for %s"
 msgstr "Info for %s"
 
-#: ../finch/gntnotify.c:291 ../libpurple/protocols/toc/toc.c:476
+#: ../finch/gntnotify.c:291
+#: ../libpurple/protocols/toc/toc.c:476
 #: ../pidgin/gtknotify.c:941
 msgid "Buddy Information"
 msgstr "Kontaktinformasjon"
 
-#: ../finch/gntnotify.c:377 ../libpurple/protocols/qq/group_join.c:367
-#, fuzzy
+#: ../finch/gntnotify.c:380
+#: ../libpurple/protocols/qq/group_join.c:367
 msgid "Continue"
-msgstr "Kobler til"
-
-#: ../finch/gntnotify.c:386 ../pidgin/gtkconv.c:1596
-msgid "IM"
-msgstr "Direktemelding"
+msgstr "Fortsett"
 
 #: ../finch/gntnotify.c:389
-#, fuzzy
+#: ../pidgin/gtkconv.c:1649
+msgid "IM"
+msgstr "Direktemelding"
+
+#: ../finch/gntnotify.c:392
 msgid "Join"
-msgstr "_Bli med i samtalegruppe"
-
-#: ../finch/gntnotify.c:392 ../libpurple/protocols/sametime/sametime.c:3473
+msgstr "Bli med"
+
+#: ../finch/gntnotify.c:395
+#: ../libpurple/protocols/sametime/sametime.c:3473
 msgid "Invite"
 msgstr "Inviter"
 
-#: ../finch/gntnotify.c:395
+#: ../finch/gntnotify.c:398
 #, fuzzy
 msgid "(none)"
 msgstr "(uten navn)"
 
-#: ../finch/gntplugin.c:75 ../finch/gntplugin.c:84
+#: ../finch/gntplugin.c:75
+#: ../finch/gntplugin.c:84
 msgid "ERROR"
-msgstr ""
+msgstr "FEIL"
 
 #: ../finch/gntplugin.c:75
 #, fuzzy
@@ -1250,6 +1414,12 @@
 "Website: %s\n"
 "Filename: %s\n"
 msgstr ""
+"Navn: %s\n"
+"Versjon: %s\n"
+"Beskrivelse: %s\n"
+"Forfatter: %s\n"
+"Hjemmeside: %s\n"
+"Filnavn: %s\n"
 
 #: ../finch/gntplugin.c:187
 msgid "Plugin need to be loaded before you can configure it."
@@ -1274,52 +1444,57 @@
 #. (that should have been "effect," right?)
 #. Back to instant-apply! I win!  BU-HAHAHA!
 #. Create the window
-#: ../finch/gntplugin.c:371 ../finch/gntplugin.c:378 ../finch/gntprefs.c:264
-#: ../finch/gntui.c:90 ../pidgin/gtkdocklet.c:524 ../pidgin/gtkprefs.c:2067
+#: ../finch/gntplugin.c:371
+#: ../finch/gntplugin.c:378
+#: ../finch/gntprefs.c:264
+#: ../finch/gntui.c:90
+#: ../pidgin/gtkdocklet.c:524
+#: ../pidgin/gtkprefs.c:2069
 msgid "Preferences"
 msgstr "Innstillinger"
 
-#: ../finch/gntpounce.c:183 ../pidgin/gtkpounce.c:256
+#: ../finch/gntpounce.c:183
+#: ../pidgin/gtkpounce.c:256
 msgid "Please enter a buddy to pounce."
 msgstr "Navnet på kontakten du vil varsle."
 
-#: ../finch/gntpounce.c:328 ../pidgin/gtkpounce.c:517
+#: ../finch/gntpounce.c:328
+#: ../pidgin/gtkpounce.c:517
 msgid "New Buddy Pounce"
-msgstr "Legg til kompisvarsling"
-
-#: ../finch/gntpounce.c:328 ../pidgin/gtkpounce.c:517
+msgstr "Legg til kontaktvarsling"
+
+#: ../finch/gntpounce.c:328
+#: ../pidgin/gtkpounce.c:517
 msgid "Edit Buddy Pounce"
-msgstr "Rediger kompisvarsling"
+msgstr "Rediger kontaktvarsling"
 
 #: ../finch/gntpounce.c:333
 msgid "Pounce Who"
-msgstr "Varsling for"
+msgstr "Varsle hvem"
 
 #. Account:
-#: ../finch/gntpounce.c:336 ../finch/gntstatus.c:456
+#: ../finch/gntpounce.c:336
+#: ../finch/gntstatus.c:456
 msgid "Account:"
 msgstr "Konto:"
 
 #: ../finch/gntpounce.c:358
-#, fuzzy
 msgid "Buddy name:"
 msgstr "Kontaktnavn:"
 
 #. Create the "Pounce When Buddy..." frame.
-#: ../finch/gntpounce.c:374 ../pidgin/gtkpounce.c:585
-#, fuzzy
+#: ../finch/gntpounce.c:374
+#: ../pidgin/gtkpounce.c:585
 msgid "Pounce When Buddy..."
-msgstr "Varsle når"
+msgstr "Varsle når kontakt..."
 
 #: ../finch/gntpounce.c:376
-#, fuzzy
 msgid "Signs on"
-msgstr "Pålo_gging"
+msgstr "Logger på"
 
 #: ../finch/gntpounce.c:377
-#, fuzzy
 msgid "Signs off"
-msgstr "Logg _av"
+msgstr "Logger av"
 
 #: ../finch/gntpounce.c:378
 #, fuzzy
@@ -1327,24 +1502,20 @@
 msgstr "Når fraværende"
 
 #: ../finch/gntpounce.c:379
-#, fuzzy
 msgid "Returns from away"
-msgstr "_Returnere fra fravær"
+msgstr "Returnerer fra fravær"
 
 #: ../finch/gntpounce.c:380
-#, fuzzy
 msgid "Becomes idle"
-msgstr "%s har blitt inaktiv"
+msgstr "Blir inaktiv"
 
 #: ../finch/gntpounce.c:381
-#, fuzzy
 msgid "Is no longer idle"
-msgstr "%s er ikke lenger inaktiv"
+msgstr "Er ikke lenger inaktiv"
 
 #: ../finch/gntpounce.c:382
-#, fuzzy
 msgid "Starts typing"
-msgstr "Venn s_tarter å skrive"
+msgstr "Starter å skrive"
 
 #: ../finch/gntpounce.c:383
 #, fuzzy
@@ -1352,17 +1523,16 @@
 msgstr "Brukeren skriver en melding..."
 
 #: ../finch/gntpounce.c:384
-#, fuzzy
 msgid "Stops typing"
-msgstr "Venn slutter å skrive til deg"
+msgstr "Stopper å skrive"
 
 #: ../finch/gntpounce.c:385
-#, fuzzy
 msgid "Sends a message"
-msgstr "Send _beskjed"
+msgstr "Sender en beskjed"
 
 #. Create the "Action" frame.
-#: ../finch/gntpounce.c:414 ../pidgin/gtkpounce.c:646
+#: ../finch/gntpounce.c:414
+#: ../pidgin/gtkpounce.c:646
 #, fuzzy
 msgid "Action"
 msgstr "Sted"
@@ -1378,17 +1548,14 @@
 msgstr "Varslingsvindu spretter o_pp"
 
 #: ../finch/gntpounce.c:418
-#, fuzzy
 msgid "Send a message"
-msgstr "Send _beskjed"
+msgstr "Send en beskjed"
 
 #: ../finch/gntpounce.c:419
-#, fuzzy
 msgid "Execute a command"
 msgstr "Kjør en kommando"
 
 #: ../finch/gntpounce.c:420
-#, fuzzy
 msgid "Play a sound"
 msgstr "Spill av en lyd"
 
@@ -1396,85 +1563,97 @@
 msgid "Pounce only when my status is not available"
 msgstr ""
 
-#: ../finch/gntpounce.c:450 ../pidgin/gtkpounce.c:1281
+#: ../finch/gntpounce.c:450
+#: ../pidgin/gtkpounce.c:1281
 msgid "Recurring"
 msgstr ""
 
 #: ../finch/gntpounce.c:618
-#, fuzzy
 msgid "Cannot create pounce"
-msgstr "Kan ikke endre kallenavn"
+msgstr "Kan ikke opprette varsling"
 
 #: ../finch/gntpounce.c:619
 msgid "You do not have any accounts."
-msgstr ""
+msgstr "Du har ingen kontoer."
 
 #: ../finch/gntpounce.c:620
 msgid "You must create an account first before you can create a pounce."
-msgstr ""
-
-#: ../finch/gntpounce.c:662 ../pidgin/gtkpounce.c:1096
+msgstr "Du må opprette en konto før du kan opprette en varsling."
+
+#: ../finch/gntpounce.c:662
+#: ../pidgin/gtkpounce.c:1096
 #, fuzzy, c-format
 msgid "Are you sure you want to delete the pounce on %s for %s?"
 msgstr "Er du sikker på at du vil slette %s?"
 
-#: ../finch/gntpounce.c:696 ../finch/gntui.c:84 ../pidgin/gtkpounce.c:1325
-#, fuzzy
+#: ../finch/gntpounce.c:696
+#: ../finch/gntui.c:84
+#: ../pidgin/gtkpounce.c:1325
 msgid "Buddy Pounces"
-msgstr "Legg til kompisvarsling"
-
-#: ../finch/gntpounce.c:810 ../pidgin/gtkpounce.c:1452
+msgstr "Kontaktvarsling"
+
+#: ../finch/gntpounce.c:810
+#: ../pidgin/gtkpounce.c:1452
 #, c-format
 msgid "%s has started typing to you (%s)"
 msgstr "%s har begynt å skrive til deg (%s)"
 
-#: ../finch/gntpounce.c:812 ../pidgin/gtkpounce.c:1454
-#, fuzzy, c-format
+#: ../finch/gntpounce.c:812
+#: ../pidgin/gtkpounce.c:1454
+#, c-format
 msgid "%s has paused while typing to you (%s)"
-msgstr "%s har begynt å skrive til deg (%s)"
-
-#: ../finch/gntpounce.c:814 ../pidgin/gtkpounce.c:1456
+msgstr "%s har pauset under skriving til deg (%s)"
+
+#: ../finch/gntpounce.c:814
+#: ../pidgin/gtkpounce.c:1456
 #, c-format
 msgid "%s has signed on (%s)"
 msgstr "%s har logget på (%s)"
 
-#: ../finch/gntpounce.c:816 ../pidgin/gtkpounce.c:1458
+#: ../finch/gntpounce.c:816
+#: ../pidgin/gtkpounce.c:1458
 #, c-format
 msgid "%s has returned from being idle (%s)"
 msgstr "%s har blitt aktiv igjen (%s)"
 
-#: ../finch/gntpounce.c:818 ../pidgin/gtkpounce.c:1460
+#: ../finch/gntpounce.c:818
+#: ../pidgin/gtkpounce.c:1460
 #, c-format
 msgid "%s has returned from being away (%s)"
 msgstr "%s har kommet tilbake (%s)"
 
-#: ../finch/gntpounce.c:820 ../pidgin/gtkpounce.c:1462
+#: ../finch/gntpounce.c:820
+#: ../pidgin/gtkpounce.c:1462
 #, c-format
 msgid "%s has stopped typing to you (%s)"
 msgstr "%s har sluttet å skrive til deg (%s)"
 
-#: ../finch/gntpounce.c:822 ../pidgin/gtkpounce.c:1464
+#: ../finch/gntpounce.c:822
+#: ../pidgin/gtkpounce.c:1464
 #, c-format
 msgid "%s has signed off (%s)"
 msgstr "%s har logget av (%s)"
 
-#: ../finch/gntpounce.c:824 ../pidgin/gtkpounce.c:1466
+#: ../finch/gntpounce.c:824
+#: ../pidgin/gtkpounce.c:1466
 #, c-format
 msgid "%s has become idle (%s)"
 msgstr "%s har blitt inaktiv (%s)"
 
-#: ../finch/gntpounce.c:826 ../pidgin/gtkpounce.c:1468
+#: ../finch/gntpounce.c:826
+#: ../pidgin/gtkpounce.c:1468
 #, c-format
 msgid "%s has gone away. (%s)"
 msgstr "%s er borte. (%s)"
 
-#: ../finch/gntpounce.c:828 ../pidgin/gtkpounce.c:1470
-#, fuzzy, c-format
+#: ../finch/gntpounce.c:828
+#: ../pidgin/gtkpounce.c:1470
+#, c-format
 msgid "%s has sent you a message. (%s)"
-msgstr "%s ønsker å sende deg %s (%s)"
-
-#: ../finch/gntpounce.c:829 ../pidgin/gtkpounce.c:1471
-#, c-format
+msgstr "%s har sendt deg en beskjed. (%s)"
+
+#: ../finch/gntpounce.c:829
+#: ../pidgin/gtkpounce.c:1471
 msgid "Unknown pounce event. Please report this!"
 msgstr "Ukjent varslingshendelse. Vennligst rapporter dette!"
 
@@ -1482,43 +1661,41 @@
 msgid "Based on keyboard use"
 msgstr ""
 
-#: ../finch/gntprefs.c:94 ../pidgin/gtkprefs.c:1930
-#, fuzzy
+#: ../finch/gntprefs.c:94
+#: ../pidgin/gtkprefs.c:1932
 msgid "From last sent message"
-msgstr "CTRL-Enter sender beskjeden"
-
-#: ../finch/gntprefs.c:96 ../pidgin/gtkprefs.c:898 ../pidgin/gtkprefs.c:907
-#: ../pidgin/gtkprefs.c:1929 ../pidgin/gtkprefs.c:1943
+msgstr "Fra sist sendte beskjed"
+
+#: ../finch/gntprefs.c:96
+#: ../pidgin/gtkprefs.c:898
+#: ../pidgin/gtkprefs.c:907
+#: ../pidgin/gtkprefs.c:1931
+#: ../pidgin/gtkprefs.c:1945
 #: ../pidgin/plugins/win32/winprefs/winprefs.c:333
 msgid "Never"
 msgstr "Aldri"
 
 #: ../finch/gntprefs.c:184
-#, fuzzy
 msgid "Show Idle Time"
-msgstr "Sett fraværstid for konto"
+msgstr "Vis inaktivtid"
 
 #: ../finch/gntprefs.c:185
-#, fuzzy
 msgid "Show Offline Buddies"
-msgstr "/Kontakter/Vis _avloggede kontakter"
+msgstr "Vis avloggede kontakter"
 
 #: ../finch/gntprefs.c:192
-#, fuzzy
 msgid "Notify buddies when you are typing"
 msgstr "Varsle kontakter når skriver til dem"
 
 #: ../finch/gntprefs.c:198
-#, fuzzy
 msgid "Log format"
-msgstr "Logg_format:"
+msgstr "Logg-format"
 
 #: ../finch/gntprefs.c:199
 msgid "Log IMs"
 msgstr ""
 
 #: ../finch/gntprefs.c:200
-#, fuzzy
 msgid "Log chats"
 msgstr "Logg alle samtaler"
 
@@ -1543,224 +1720,244 @@
 msgstr "Antall minutter før fraværsmarkert:"
 
 #: ../finch/gntprefs.c:210
-#, fuzzy
 msgid "Change status to"
-msgstr "Endre adresse til:"
+msgstr "Endre status til"
 
 #. Conversations
-#: ../finch/gntprefs.c:259 ../pidgin/gtkprefs.c:993 ../pidgin/gtkprefs.c:2033
+#: ../finch/gntprefs.c:259
+#: ../pidgin/gtkprefs.c:993
+#: ../pidgin/gtkprefs.c:2035
 #: ../pidgin/plugins/win32/winprefs/winprefs.c:340
 msgid "Conversations"
 msgstr "Samtaler"
 
-#: ../finch/gntprefs.c:260 ../pidgin/gtkprefs.c:1467 ../pidgin/gtkprefs.c:2044
+#: ../finch/gntprefs.c:260
+#: ../pidgin/gtkprefs.c:1469
+#: ../pidgin/gtkprefs.c:2046
 msgid "Logging"
 msgstr "Logging"
 
 #: ../finch/gntrequest.c:583
-#, fuzzy
 msgid "Not implemented yet."
-msgstr "Funksjonen er ikke implementert"
-
-#: ../finch/gntrequest.c:659 ../pidgin/gtkrequest.c:1555
+msgstr "Ikke implementert enda"
+
+#: ../finch/gntrequest.c:659
+#: ../pidgin/gtkrequest.c:1555
 #: ../pidgin/gtkrequest.c:1601
 msgid "Save File..."
 msgstr "Lagre fil..."
 
-#: ../finch/gntrequest.c:659 ../pidgin/gtkrequest.c:1556
+#: ../finch/gntrequest.c:659
+#: ../pidgin/gtkrequest.c:1556
 #: ../pidgin/gtkrequest.c:1602
 msgid "Open File..."
 msgstr "Åpne fil..."
 
-#: ../finch/gntsound.c:97 ../pidgin/gtksound.c:64
+#: ../finch/gntsound.c:97
+#: ../pidgin/gtksound.c:64
 msgid "Buddy logs in"
 msgstr "Kontakt logger inn"
 
-#: ../finch/gntsound.c:98 ../pidgin/gtksound.c:65
+#: ../finch/gntsound.c:98
+#: ../pidgin/gtksound.c:65
 msgid "Buddy logs out"
 msgstr "Kontakt logger ut"
 
-#: ../finch/gntsound.c:99 ../pidgin/gtksound.c:66
+#: ../finch/gntsound.c:99
+#: ../pidgin/gtksound.c:66
 msgid "Message received"
 msgstr "Beskjed mottatt"
 
-#: ../finch/gntsound.c:100 ../pidgin/gtksound.c:67
+#: ../finch/gntsound.c:100
+#: ../pidgin/gtksound.c:67
 msgid "Message received begins conversation"
 msgstr "Beskjed mottas og samtale starter"
 
-#: ../finch/gntsound.c:101 ../pidgin/gtksound.c:68
+#: ../finch/gntsound.c:101
+#: ../pidgin/gtksound.c:68
 msgid "Message sent"
 msgstr "Beskjed sendt"
 
-#: ../finch/gntsound.c:102 ../pidgin/gtksound.c:69
+#: ../finch/gntsound.c:102
+#: ../pidgin/gtksound.c:69
 msgid "Person enters chat"
 msgstr "Person blir med i samtalen"
 
-#: ../finch/gntsound.c:103 ../pidgin/gtksound.c:70
+#: ../finch/gntsound.c:103
+#: ../pidgin/gtksound.c:70
 msgid "Person leaves chat"
 msgstr "Person forlater samtalen"
 
-#: ../finch/gntsound.c:104 ../pidgin/gtksound.c:71
+#: ../finch/gntsound.c:104
+#: ../pidgin/gtksound.c:71
 msgid "You talk in chat"
 msgstr "Du snakker i samtalen"
 
-#: ../finch/gntsound.c:105 ../pidgin/gtksound.c:72
+#: ../finch/gntsound.c:105
+#: ../pidgin/gtksound.c:72
 msgid "Others talk in chat"
 msgstr "Andre snakker i samtalen"
 
-#: ../finch/gntsound.c:107 ../pidgin/gtksound.c:75
-#, fuzzy
+#: ../finch/gntsound.c:107
+#: ../pidgin/gtksound.c:75
 msgid "Someone says your screen name in chat"
-msgstr "Noen sier navnet ditt i en samtale"
-
-#: ../finch/gntsound.c:361 ../pidgin/gtksound.c:311
+msgstr "Noen roper skjermnavnet ditt i en samtale"
+
+#: ../finch/gntsound.c:361
+#: ../pidgin/gtksound.c:311
 msgid "GStreamer Failure"
-msgstr ""
-
-#: ../finch/gntsound.c:362 ../pidgin/gtksound.c:312
+msgstr "Feil i GStreamer"
+
+#: ../finch/gntsound.c:362
+#: ../pidgin/gtksound.c:312
 msgid "GStreamer failed to initialize."
 msgstr ""
 
-#: ../finch/gntsound.c:716 ../finch/gntsound.c:802 ../pidgin/gtkprefs.c:1587
-#: ../pidgin/gtkprefs.c:1676 ../pidgin/gtkprefs.c:1872
-#, fuzzy
+#: ../finch/gntsound.c:716
+#: ../finch/gntsound.c:802
+#: ../pidgin/gtkprefs.c:1589
+#: ../pidgin/gtkprefs.c:1678
+#: ../pidgin/gtkprefs.c:1874
 msgid "(default)"
-msgstr "Gnome-standard"
+msgstr "(forvalgt)"
 
 #: ../finch/gntsound.c:729
-#, fuzzy
 msgid "Select Sound File ..."
-msgstr "Velg fil"
+msgstr "Velg lydfil ..."
 
 #: ../finch/gntsound.c:904
-#, fuzzy
 msgid "Sound Preferences"
-msgstr "Innstillinger"
+msgstr "Lydinnstillinger"
 
 #: ../finch/gntsound.c:915
-#, fuzzy
 msgid "Profiles"
-msgstr "Profil"
-
-#: ../finch/gntsound.c:954 ../pidgin/gtkprefs.c:1717
+msgstr "Profiler"
+
+#: ../finch/gntsound.c:954
+#: ../pidgin/gtkprefs.c:1719
 msgid "Automatic"
 msgstr "Automatisk"
 
 #: ../finch/gntsound.c:957
-#, fuzzy
 msgid "Console Beep"
 msgstr "Konsollpip"
 
-#: ../finch/gntsound.c:958 ../pidgin/gtkprefs.c:1721
+#: ../finch/gntsound.c:958
+#: ../pidgin/gtkprefs.c:1723
 msgid "Command"
 msgstr "Kommando"
 
 #: ../finch/gntsound.c:959
-#, fuzzy
 msgid "No Sound"
-msgstr "Lyder"
-
-#: ../finch/gntsound.c:961 ../pidgin/gtkprefs.c:1712
+msgstr "Ingen lyd"
+
+#: ../finch/gntsound.c:961
+#: ../pidgin/gtkprefs.c:1714
 msgid "Sound Method"
 msgstr "Lydtype"
 
 #: ../finch/gntsound.c:966
-#, fuzzy
 msgid "Method: "
-msgstr "_Metode:"
+msgstr "Metode: "
 
 #: ../finch/gntsound.c:973
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Sound Command\n"
 "(%s for filename)"
 msgstr ""
-"_Program for lydavspilling\n"
+"Lydkommando\n"
 "(%s for filnavn)"
 
 #. Sound options
-#: ../finch/gntsound.c:981 ../pidgin/gtkprefs.c:1756
+#: ../finch/gntsound.c:981
+#: ../pidgin/gtkprefs.c:1758
 msgid "Sound Options"
 msgstr "Lydinnstillinger"
 
-#
 #: ../finch/gntsound.c:982
-#, fuzzy
 msgid "Sounds when conversation has focus"
-msgstr "Lyder når samtalevinduet har _fokus"
-
-#: ../finch/gntsound.c:990 ../pidgin/gtkprefs.c:897 ../pidgin/gtkprefs.c:909
-#: ../pidgin/gtkprefs.c:1763 ../pidgin/plugins/timestamp_format.c:42
+msgstr "Lyder når samtalen har fokus"
+
+#: ../finch/gntsound.c:990
+#: ../pidgin/gtkprefs.c:897
+#: ../pidgin/gtkprefs.c:909
+#: ../pidgin/gtkprefs.c:1765
+#: ../pidgin/plugins/timestamp_format.c:42
 #: ../pidgin/plugins/timestamp_format.c:51
 #: ../pidgin/plugins/win32/winprefs/winprefs.c:334
-#, fuzzy
 msgid "Always"
-msgstr "Borte"
-
-#: ../finch/gntsound.c:991 ../pidgin/gtkprefs.c:1761
-#, fuzzy
+msgstr "Alltid"
+
+#: ../finch/gntsound.c:991
+#: ../pidgin/gtkprefs.c:1763
 msgid "Only when available"
-msgstr "Ikke tilgjengelig"
-
-#: ../finch/gntsound.c:992 ../pidgin/gtkprefs.c:1762
-#, fuzzy
+msgstr "Bare hvis tilgjengelig"
+
+#: ../finch/gntsound.c:992
+#: ../pidgin/gtkprefs.c:1764
 msgid "Only when not available"
-msgstr "Snakkerom i %s er ikke tilgjengelig."
+msgstr "Bare hvis ikke tilgjengelig."
 
 #: ../finch/gntsound.c:999
 msgid "Volume(0-100):"
-msgstr ""
+msgstr "Volum(0-100):"
 
 #. Sound events
-#: ../finch/gntsound.c:1018 ../pidgin/gtkprefs.c:1798
+#: ../finch/gntsound.c:1018
+#: ../pidgin/gtkprefs.c:1800
 msgid "Sound Events"
 msgstr "Lydhendelser"
 
-#: ../finch/gntsound.c:1020 ../pidgin/gtkprefs.c:1857
+#: ../finch/gntsound.c:1020
+#: ../pidgin/gtkprefs.c:1859
 msgid "Event"
 msgstr "Hendelse"
 
 #: ../finch/gntsound.c:1020
-#, fuzzy
 msgid "File"
-msgstr "Feilet."
-
-#: ../finch/gntsound.c:1039 ../pidgin/gtkprefs.c:1876
+msgstr "Fil"
+
+#: ../finch/gntsound.c:1039
+#: ../pidgin/gtkprefs.c:1878
 msgid "Test"
 msgstr "Test"
 
-#: ../finch/gntsound.c:1042 ../pidgin/gtkprefs.c:1880
+#: ../finch/gntsound.c:1042
+#: ../pidgin/gtkprefs.c:1882
 msgid "Reset"
 msgstr "Nullstill"
 
-#: ../finch/gntsound.c:1045 ../pidgin/gtkprefs.c:1884
+#: ../finch/gntsound.c:1045
+#: ../pidgin/gtkprefs.c:1886
 msgid "Choose..."
 msgstr "Bla gjennom..."
 
 #: ../finch/gntstatus.c:138
-#, fuzzy, c-format
+#, c-format
 msgid "Are you sure you want to delete \"%s\""
-msgstr "Er du sikker på at du vil slette %s?"
+msgstr "Er du sikker på at du vil slette '%s'?"
 
 #: ../finch/gntstatus.c:141
-#, fuzzy
 msgid "Delete Status"
-msgstr "Påloggningsstatus"
-
-#: ../finch/gntstatus.c:176 ../pidgin/gtksavedstatuses.c:597
-#, fuzzy
+msgstr "Slett status"
+
+#: ../finch/gntstatus.c:176
+#: ../pidgin/gtksavedstatuses.c:597
 msgid "Saved Statuses"
-msgstr "Tjenerstatistikk"
-
-#: ../finch/gntstatus.c:183 ../finch/gntstatus.c:539
+msgstr "Lagrede statuser"
+
+#: ../finch/gntstatus.c:183
+#: ../finch/gntstatus.c:539
 #: ../libpurple/protocols/jabber/buddy.c:298
 #: ../libpurple/protocols/jabber/buddy.c:1359
-#: ../libpurple/protocols/novell/novell.c:1484
+#: ../libpurple/protocols/novell/novell.c:1486
 #: ../pidgin/gtksavedstatuses.c:500
 msgid "Title"
 msgstr "Tittel"
 
-#: ../finch/gntstatus.c:183 ../pidgin/gtksavedstatuses.c:515
+#: ../finch/gntstatus.c:183
+#: ../pidgin/gtksavedstatuses.c:515
 msgid "Type"
 msgstr "Type"
 
@@ -1772,31 +1969,43 @@
 #. user_settable
 #. not independent
 #. Attributes - each status can have a message.
-#: ../finch/gntstatus.c:183 ../finch/gntstatus.c:564 ../finch/gntstatus.c:576
+#: ../finch/gntstatus.c:183
+#: ../finch/gntstatus.c:564
+#: ../finch/gntstatus.c:576
 #: ../libpurple/protocols/bonjour/bonjour.c:256
 #: ../libpurple/protocols/bonjour/bonjour.c:263
 #: ../libpurple/protocols/bonjour/bonjour.c:346
-#: ../libpurple/protocols/gg/gg.c:1077 ../libpurple/protocols/gg/gg.c:1579
-#: ../libpurple/protocols/gg/gg.c:1597 ../libpurple/protocols/gg/gg.c:1607
-#: ../libpurple/protocols/gg/gg.c:1613 ../libpurple/protocols/gg/gg.c:1622
-#: ../libpurple/protocols/gg/gg.c:1627 ../libpurple/protocols/irc/irc.c:234
+#: ../libpurple/protocols/gg/gg.c:1077
+#: ../libpurple/protocols/gg/gg.c:1579
+#: ../libpurple/protocols/gg/gg.c:1597
+#: ../libpurple/protocols/gg/gg.c:1607
+#: ../libpurple/protocols/gg/gg.c:1613
+#: ../libpurple/protocols/gg/gg.c:1622
+#: ../libpurple/protocols/gg/gg.c:1627
+#: ../libpurple/protocols/irc/irc.c:234
 #: ../libpurple/protocols/jabber/jabber.c:1532
 #: ../libpurple/protocols/jabber/jabber.c:1555
 #: ../libpurple/protocols/jabber/jabber.c:1578
 #: ../libpurple/protocols/jabber/jabber.c:1601
 #: ../libpurple/protocols/jabber/jabber.c:1624
 #: ../libpurple/protocols/jabber/jabber.c:1649
+#: ../libpurple/protocols/msn/msn.c:634
+#: ../libpurple/protocols/msn/msn.c:641
+#: ../libpurple/protocols/msn/msn.c:648
+#: ../libpurple/protocols/msn/msn.c:655
+#: ../libpurple/protocols/msn/msn.c:661
+#: ../libpurple/protocols/msn/msn.c:667
 #: ../libpurple/protocols/myspace/myspace.c:148
-#: ../libpurple/protocols/novell/novell.c:2838
-#: ../libpurple/protocols/novell/novell.c:2941
-#: ../libpurple/protocols/novell/novell.c:2947
-#: ../libpurple/protocols/novell/novell.c:2953
-#: ../libpurple/protocols/oscar/oscar.c:5554
-#: ../libpurple/protocols/oscar/oscar.c:5772
-#: ../libpurple/protocols/oscar/oscar.c:5786
-#: ../libpurple/protocols/oscar/oscar.c:5802
-#: ../libpurple/protocols/oscar/oscar.c:5809
-#: ../libpurple/protocols/oscar/oscar.c:5816
+#: ../libpurple/protocols/novell/novell.c:2843
+#: ../libpurple/protocols/novell/novell.c:2946
+#: ../libpurple/protocols/novell/novell.c:2952
+#: ../libpurple/protocols/novell/novell.c:2958
+#: ../libpurple/protocols/oscar/oscar.c:5552
+#: ../libpurple/protocols/oscar/oscar.c:5770
+#: ../libpurple/protocols/oscar/oscar.c:5784
+#: ../libpurple/protocols/oscar/oscar.c:5800
+#: ../libpurple/protocols/oscar/oscar.c:5807
+#: ../libpurple/protocols/oscar/oscar.c:5814
 #: ../libpurple/protocols/sametime/sametime.c:3286
 #: ../libpurple/protocols/sametime/sametime.c:3292
 #: ../libpurple/protocols/sametime/sametime.c:3298
@@ -1804,28 +2013,27 @@
 #: ../libpurple/protocols/silc/buddy.c:1551
 #: ../libpurple/protocols/silc10/buddy.c:1551
 #: ../libpurple/protocols/simple/simple.c:246
-#: ../libpurple/protocols/yahoo/yahoo.c:3751
-#: ../libpurple/protocols/yahoo/yahoo.c:3757
+#: ../libpurple/protocols/yahoo/yahoo.c:3750
+#: ../libpurple/protocols/yahoo/yahoo.c:3756
 #: ../libpurple/protocols/zephyr/zephyr.c:2337
-#: ../pidgin/gtksavedstatuses.c:526 ../pidgin/gtksavedstatuses.c:1010
+#: ../pidgin/gtksavedstatuses.c:526
+#: ../pidgin/gtksavedstatuses.c:1010
 msgid "Message"
-msgstr "Beskjed:"
+msgstr "Beskjed"
 
 #. Use
-#: ../finch/gntstatus.c:194 ../finch/gntstatus.c:593
-#, fuzzy
+#: ../finch/gntstatus.c:194
+#: ../finch/gntstatus.c:593
 msgid "Use"
 msgstr "Bruk"
 
 #: ../finch/gntstatus.c:301
-#, fuzzy
 msgid "Invalid title"
-msgstr "Ugyldig authzid"
+msgstr "Ugyldig tittel"
 
 #: ../finch/gntstatus.c:302
-#, fuzzy
 msgid "Please enter a non-empty title for the status."
-msgstr "Vennligst skriv inn nytt navn for gruppen."
+msgstr "Vennligst ikke angi et tom tittel til statusen."
 
 #: ../finch/gntstatus.c:310
 #, fuzzy
@@ -1833,54 +2041,51 @@
 msgstr "Dupliserings Korrigering"
 
 #: ../finch/gntstatus.c:311
-#, fuzzy
 msgid "Please enter a different title for the status."
-msgstr "Vennligst skriv inn nytt navn for gruppen."
+msgstr "Vennligst skriv inn en annen tittel til statusen."
 
 #: ../finch/gntstatus.c:452
 #, fuzzy
 msgid "Substatus"
 msgstr "Status"
 
-#: ../finch/gntstatus.c:464 ../pidgin/gtkft.c:699
+#: ../finch/gntstatus.c:464
+#: ../pidgin/gtkft.c:699
 msgid "Status:"
 msgstr "Status:"
 
 #: ../finch/gntstatus.c:479
-#, fuzzy
 msgid "Message:"
 msgstr "Beskjed:"
 
 #: ../finch/gntstatus.c:528
-#, fuzzy
 msgid "Edit Status"
-msgstr "Sivilstatus"
+msgstr "Endre status"
 
 #: ../finch/gntstatus.c:570
-#, fuzzy
 msgid "Use different status for following accounts"
-msgstr "Bruk en annen status for noen kontoer"
+msgstr "Bruk en annen status for følgende kontoer"
 
 #. Save & Use
 #: ../finch/gntstatus.c:604
-#, fuzzy
 msgid "Save & Use"
-msgstr "Lagre & bruk"
+msgstr "Lagre og bruk"
 
 #: ../finch/gntui.c:85
 msgid "Certificates"
-msgstr ""
-
-#: ../finch/gntui.c:89 ../pidgin/gtkprefs.c:2035
+msgstr "Sertifikater"
+
+#: ../finch/gntui.c:89
+#: ../pidgin/gtkprefs.c:2037
 msgid "Sounds"
 msgstr "Lyder"
 
 #: ../finch/gntui.c:91
-#, fuzzy
 msgid "Statuses"
-msgstr "Status"
-
-#: ../finch/plugins/gntclipboard.c:115 ../finch/plugins/gntclipboard.c:121
+msgstr "Statuser"
+
+#: ../finch/plugins/gntclipboard.c:115
+#: ../finch/plugins/gntclipboard.c:121
 #: ../finch/plugins/gntclipboard.c:128
 #, fuzzy
 msgid "Error loading the plugin."
@@ -1892,9 +2097,8 @@
 msgstr "Kan ikke sende fil"
 
 #: ../finch/plugins/gntclipboard.c:122
-#, fuzzy
 msgid "Couldn't find window"
-msgstr "Kan ikke sende fil"
+msgstr "Kan ikke finne vindu"
 
 #: ../finch/plugins/gntclipboard.c:129
 msgid "This plugin cannot be loaded because it was not built with X11 support."
@@ -1902,32 +2106,30 @@
 
 #: ../finch/plugins/gntclipboard.c:158
 msgid "GntClipboard"
-msgstr ""
+msgstr "GntClipboard"
 
 #: ../finch/plugins/gntclipboard.c:160
 msgid "Clipboard plugin"
 msgstr ""
 
 #: ../finch/plugins/gntclipboard.c:161
-msgid ""
-"When the gnt clipboard contents change, the contents are made available to "
-"X, if possible."
+msgid "When the gnt clipboard contents change, the contents are made available to X, if possible."
 msgstr ""
 
 #: ../finch/plugins/gntgf.c:231
-#, fuzzy, c-format
+#, c-format
 msgid "%s just signed on"
-msgstr "%s har logget på"
+msgstr "%s logget akkurat på"
 
 #: ../finch/plugins/gntgf.c:238
-#, fuzzy, c-format
+#, c-format
 msgid "%s just signed off"
-msgstr "%s logget av"
+msgstr "%s logget akkurat av"
 
 #: ../finch/plugins/gntgf.c:246
-#, fuzzy, c-format
+#, c-format
 msgid "%s sent you a message"
-msgstr "%s ønsker å sende deg en fil."
+msgstr "%s har sendt deg en beskjed"
 
 #: ../finch/plugins/gntgf.c:265
 #, c-format
@@ -1935,28 +2137,25 @@
 msgstr ""
 
 #: ../finch/plugins/gntgf.c:267
-#, fuzzy, c-format
+#, c-format
 msgid "%s sent a message in %s"
-msgstr "Send _beskjed"
+msgstr "%s sendte en beskjed i %s"
 
 #: ../finch/plugins/gntgf.c:305
-#, fuzzy
 msgid "Buddy signs on/off"
-msgstr "Kontakt er avlogget:"
+msgstr "Kontakt logget på/av"
 
 #: ../finch/plugins/gntgf.c:306
 msgid "You receive an IM"
 msgstr ""
 
 #: ../finch/plugins/gntgf.c:307
-#, fuzzy
 msgid "Someone speaks in a chat"
-msgstr "Noen sier navnet ditt i en samtale"
+msgstr "Noen snakker i en samtale"
 
 #: ../finch/plugins/gntgf.c:308
-#, fuzzy
 msgid "Someone says your name in a chat"
-msgstr "Noen sier navnet ditt i en samtale"
+msgstr "Noen sa navnet ditt i en samtale"
 
 #: ../finch/plugins/gntgf.c:336
 msgid "Notify with a toaster when"
@@ -1972,74 +2171,73 @@
 
 #: ../finch/plugins/gntgf.c:377
 msgid "GntGf"
-msgstr ""
-
-#: ../finch/plugins/gntgf.c:379 ../finch/plugins/gntgf.c:380
+msgstr "GntGf"
+
+#: ../finch/plugins/gntgf.c:379
+#: ../finch/plugins/gntgf.c:380
 msgid "Toaster plugin"
 msgstr ""
 
-#: ../finch/plugins/gnthistory.c:116 ../pidgin/plugins/history.c:120
-#, fuzzy, c-format
+#: ../finch/plugins/gnthistory.c:116
+#: ../pidgin/plugins/history.c:123
+#, c-format
 msgid "<b>Conversation with %s on %s:</b><br>"
-msgstr "Samtaler med %s"
-
-#: ../finch/plugins/gnthistory.c:138 ../pidgin/plugins/history.c:147
+msgstr "<b>Samtaler med %s på %s:</b><br>"
+
+#: ../finch/plugins/gnthistory.c:138
+#: ../pidgin/plugins/history.c:150
 msgid "History Plugin Requires Logging"
 msgstr "Historie Tillegg Krever Logging"
 
-#: ../finch/plugins/gnthistory.c:139 ../pidgin/plugins/history.c:148
+#: ../finch/plugins/gnthistory.c:139
+#: ../pidgin/plugins/history.c:151
 msgid ""
 "Logging can be enabled from Tools -> Preferences -> Logging.\n"
 "\n"
-"Enabling logs for instant messages and/or chats will activate history for "
-"the same conversation type(s)."
+"Enabling logs for instant messages and/or chats will activate history for the same conversation type(s)."
 msgstr ""
 "Logging kan slås på gjennom Verktøy -> Innstillinger -> Logging.\n"
 "\n"
-"Å slå på logging for lynmeldinger og/eller prat vil aktivere historie for "
-"den samme samtaletypen."
+"Å slå på logging for lynmeldinger og/eller prat vil aktivere historie for den samme samtaletypen."
 
 #: ../finch/plugins/gnthistory.c:179
 #, fuzzy
 msgid "GntHistory"
-msgstr "Historikk"
-
-#: ../finch/plugins/gnthistory.c:181 ../pidgin/plugins/history.c:190
+msgstr "GntHistorikk"
+
+#: ../finch/plugins/gnthistory.c:181
+#: ../pidgin/plugins/history.c:194
 msgid "Shows recently logged conversations in new conversations."
 msgstr "Viser tidligere loggede samtaler i nye samtaler."
 
-#: ../finch/plugins/gnthistory.c:182 ../pidgin/plugins/history.c:191
-msgid ""
-"When a new conversation is opened this plugin will insert the last "
-"conversation into the current conversation."
-msgstr ""
-"Når en ny samtale startes, vil dette tillegget sette inn den forrige "
-"samtalen i den pågående."
+#: ../finch/plugins/gnthistory.c:182
+#: ../pidgin/plugins/history.c:195
+msgid "When a new conversation is opened this plugin will insert the last conversation into the current conversation."
+msgstr "Når en ny samtale startes, vil dette tillegget sette inn den forrige samtalen i den pågående."
 
 #: ../finch/plugins/lastlog.c:69
 msgid "Lastlog"
 msgstr ""
 
-#. Translator Note: The "backlog" is the conversation buffer/history.
-#: ../finch/plugins/lastlog.c:100
+#: ../finch/plugins/lastlog.c:99
 msgid "lastlog: Searches for a substring in the backlog."
 msgstr ""
 
-#: ../finch/plugins/lastlog.c:122
+#: ../finch/plugins/lastlog.c:121
 msgid "GntLastlog"
 msgstr ""
 
-#: ../finch/plugins/lastlog.c:124 ../finch/plugins/lastlog.c:125
+#: ../finch/plugins/lastlog.c:123
+#: ../finch/plugins/lastlog.c:124
 msgid "Lastlog plugin."
 msgstr ""
 
 #: ../libpurple/account.c:791
-#, fuzzy
 msgid "accounts"
-msgstr "Kontoer"
-
-#: ../libpurple/account.c:958 ../libpurple/protocols/jabber/auth.c:195
-#, fuzzy
+msgstr "kontoer"
+
+#: ../libpurple/account.c:958
+#: ../libpurple/protocols/jabber/auth.c:195
 msgid "Password is required to sign on."
 msgstr "Passord kreves for å logge på."
 
@@ -2049,28 +2247,29 @@
 msgstr "Oppgi passord for %s (%s)"
 
 #: ../libpurple/account.c:999
-#, fuzzy
 msgid "Enter Password"
-msgstr "Oppgi  passord"
+msgstr "Oppgi passord"
 
 #
 #: ../libpurple/account.c:1004
-#, fuzzy
 msgid "Save password"
 msgstr "Lagre passord"
 
-#: ../libpurple/account.c:1039 ../libpurple/connection.c:105
+#: ../libpurple/account.c:1039
+#: ../libpurple/connection.c:105
 #: ../libpurple/connection.c:178
 #, c-format
 msgid "Missing protocol plugin for %s"
 msgstr "Mangler protokolltillegg for %s"
 
-#: ../libpurple/account.c:1041 ../libpurple/connection.c:108
-#: ../pidgin/gtkblist.c:4036
+#: ../libpurple/account.c:1041
+#: ../libpurple/connection.c:108
+#: ../pidgin/gtkblist.c:4318
 msgid "Connection Error"
 msgstr "Feil ved tilkobling"
 
-#: ../libpurple/account.c:1199 ../libpurple/protocols/gg/gg.c:707
+#: ../libpurple/account.c:1199
+#: ../libpurple/protocols/gg/gg.c:707
 #: ../libpurple/protocols/jabber/jabber.c:1687
 msgid "New passwords do not match."
 msgstr "De nye passordene stemmer ikke overens."
@@ -2079,17 +2278,14 @@
 msgid "Fill out all fields completely."
 msgstr "Fyll ut alle feltene fullstendig."
 
-#
 #: ../libpurple/account.c:1231
 msgid "Original password"
 msgstr "Opprinnelig passord"
 
-#
 #: ../libpurple/account.c:1238
 msgid "New password"
 msgstr "Nytt passord"
 
-#
 #: ../libpurple/account.c:1245
 msgid "New password (again)"
 msgstr "Nytt passord (igjen)"
@@ -2099,7 +2295,6 @@
 msgid "Change password for %s"
 msgstr "Endre passord for %s:"
 
-#
 #: ../libpurple/account.c:1259
 msgid "Please enter your current password and your new password."
 msgstr "Skriv inn ditt nåværende passord og ditt nye passord."
@@ -2109,31 +2304,36 @@
 msgid "Change user information for %s"
 msgstr "Endre brukerinformasjon for %s"
 
-#: ../libpurple/account.c:1293 ../libpurple/protocols/toc/toc.c:1670
+#: ../libpurple/account.c:1293
+#: ../libpurple/protocols/toc/toc.c:1670
 msgid "Set User Info"
 msgstr "Sett brukerinfo"
 
-#: ../libpurple/account.c:1764 ../libpurple/protocols/gg/gg.c:1017
+#: ../libpurple/account.c:1764
+#: ../libpurple/protocols/gg/gg.c:1017
 #: ../libpurple/protocols/jabber/buddy.c:782
-#: ../libpurple/protocols/jabber/buddy.c:2027
-#: ../libpurple/protocols/jabber/buddy.c:2044
-#: ../libpurple/protocols/novell/novell.c:2831
-#: ../libpurple/protocols/qq/qq.c:232 ../pidgin/gtkft.c:160
+#: ../libpurple/protocols/jabber/buddy.c:2030
+#: ../libpurple/protocols/jabber/buddy.c:2047
+#: ../libpurple/protocols/novell/novell.c:2836
+#: ../libpurple/protocols/qq/qq.c:232
+#: ../pidgin/gtkft.c:160
 msgid "Unknown"
 msgstr "Ukjent"
 
-#: ../libpurple/blist.c:521 ../libpurple/blist.c:1320
-#: ../libpurple/blist.c:1552 ../libpurple/protocols/jabber/roster.c:69
-#: ../libpurple/protocols/myspace/myspace.c:3244 ../pidgin/gtkblist.c:5373
+#: ../libpurple/blist.c:521
+#: ../libpurple/blist.c:1321
+#: ../libpurple/blist.c:1531
+#: ../libpurple/protocols/jabber/roster.c:69
+#: ../libpurple/protocols/myspace/myspace.c:3242
+#: ../pidgin/gtkblist.c:5662
 #: ../pidgin/plugins/gevolution/gevo-util.c:67
 #: ../pidgin/plugins/gevolution/gevolution.c:96
 msgid "Buddies"
 msgstr "Kontakter"
 
 #: ../libpurple/blist.c:548
-#, fuzzy
 msgid "buddy list"
-msgstr "Kontaktliste"
+msgstr "kontaktliste"
 
 #: ../libpurple/certificate.c:545
 msgid "(DOES NOT MATCH)"
@@ -2171,9 +2371,9 @@
 
 #. Make messages
 #: ../libpurple/certificate.c:1171
-#, fuzzy, c-format
+#, c-format
 msgid "Accept certificate for %s?"
-msgstr "Aksepter samtaleinvitasjon?"
+msgstr "Aksepter sertifikat for %s?"
 
 #. TODO: Find what the handle ought to be
 #: ../libpurple/certificate.c:1177
@@ -2185,18 +2385,18 @@
 msgid "Accept"
 msgstr "Godta"
 
-#: ../libpurple/certificate.c:1187 ../libpurple/protocols/qq/buddy_opt.c:214
+#: ../libpurple/certificate.c:1187
+#: ../libpurple/protocols/qq/buddy_opt.c:214
 #: ../libpurple/protocols/qq/group_im.c:144
 #: ../libpurple/protocols/qq/group_opt.c:127
 #: ../libpurple/protocols/qq/sys_msg.c:90
 #: ../libpurple/protocols/qq/sys_msg.c:246
-#, fuzzy
 msgid "Reject"
-msgstr "Nullstill"
+msgstr "Avslå"
 
 #: ../libpurple/certificate.c:1188
 msgid "_View Certificate..."
-msgstr ""
+msgstr "_Se på sertfikat..."
 
 #. Prompt the user to authenticate the certificate
 #. TODO: Provide the user with more guidance about why he is
@@ -2204,18 +2404,14 @@
 #. vrq will be completed by user_auth
 #: ../libpurple/certificate.c:1288
 #, c-format
-msgid ""
-"The certificate presented by \"%s\" claims to be from \"%s\" instead.  This "
-"could mean that you are not connecting to the service you believe you are."
+msgid "The certificate presented by \"%s\" claims to be from \"%s\" instead.  This could mean that you are not connecting to the service you believe you are."
 msgstr ""
 
 #. Prompt the user to authenticate the certificate
 #. vrq will be completed by user_auth
 #: ../libpurple/certificate.c:1313
 #, c-format
-msgid ""
-"The certificate presented by \"%s\" is self-signed. It cannot be "
-"automatically checked."
+msgid "The certificate presented by \"%s\" is self-signed. It cannot be automatically checked."
 msgstr ""
 
 #: ../libpurple/certificate.c:1331
@@ -2228,7 +2424,8 @@
 #. stifle it.
 #. TODO: Probably wrong.
 #. TODO: Probably wrong
-#: ../libpurple/certificate.c:1339 ../libpurple/certificate.c:1416
+#: ../libpurple/certificate.c:1339
+#: ../libpurple/certificate.c:1416
 msgid "SSL Certificate Error"
 msgstr ""
 
@@ -2239,23 +2436,17 @@
 
 #. vrq will be completed by user_auth
 #: ../libpurple/certificate.c:1360
-msgid ""
-"You have no database of root certificates, so this certificate cannot be "
-"validated."
+msgid "You have no database of root certificates, so this certificate cannot be validated."
 msgstr ""
 
 #. vrq will be completed by user_auth
 #: ../libpurple/certificate.c:1382
-msgid ""
-"The root certificate this one claims to be issued by is unknown to Pidgin."
+msgid "The root certificate this one claims to be issued by is unknown to Pidgin."
 msgstr ""
 
 #: ../libpurple/certificate.c:1408
 #, c-format
-msgid ""
-"The certificate chain presented by %s does not have a valid digital "
-"signature from the Certificate Authority from which it claims to have a "
-"signature."
+msgid "The certificate chain presented by %s does not have a valid digital signature from the Certificate Authority from which it claims to have a signature."
 msgstr ""
 
 #: ../libpurple/certificate.c:1417
@@ -2263,7 +2454,7 @@
 msgstr ""
 
 #. Make messages
-#: ../libpurple/certificate.c:1881
+#: ../libpurple/certificate.c:1882
 #, c-format
 msgid ""
 "Common name: %s\n"
@@ -2275,54 +2466,52 @@
 msgstr ""
 
 #. TODO: Find what the handle ought to be
-#: ../libpurple/certificate.c:1890
-#, fuzzy
+#: ../libpurple/certificate.c:1891
 msgid "Certificate Information"
-msgstr "Profilinformasjon"
-
-#
+msgstr "Sertifikatinformasjon"
+
 #: ../libpurple/connection.c:107
 msgid "Registration Error"
 msgstr "Registreringsfeil"
 
-#
 #: ../libpurple/connection.c:180
-#, fuzzy
 msgid "Unregistration Error"
-msgstr "Registreringsfeil"
+msgstr "Avregistreringsfeil"
 
 #: ../libpurple/connection.c:350
-#, fuzzy, c-format
+#, c-format
 msgid "+++ %s signed on"
-msgstr "%s har logget på"
+msgstr "+++ %s logget på"
 
 #: ../libpurple/connection.c:380
-#, fuzzy, c-format
+#, c-format
 msgid "+++ %s signed off"
-msgstr "%s logget av"
-
-#: ../libpurple/connection.c:497 ../libpurple/plugin.c:282
-#: ../libpurple/protocols/jabber/buddy.c:2337
+msgstr "+++ %s logget av"
+
+#: ../libpurple/connection.c:497
+#: ../libpurple/plugin.c:282
+#: ../libpurple/protocols/jabber/buddy.c:2340
 #: ../libpurple/protocols/msn/servconn.c:141
-#: ../libpurple/protocols/msn/session.c:322
+#: ../libpurple/protocols/msn/session.c:361
 msgid "Unknown error"
 msgstr "Ukjent feil"
 
 #: ../libpurple/conversation.c:170
-#, fuzzy
 msgid "Unable to send message: The message is too large."
-msgstr "Kunne ikke sende beskjed. Beskjeden er for stor."
-
-#: ../libpurple/conversation.c:173 ../libpurple/conversation.c:186
-#, fuzzy, c-format
+msgstr "Kunne ikke sende beskjed: Beskjeden er for stor."
+
+#: ../libpurple/conversation.c:173
+#: ../libpurple/conversation.c:186
+#, c-format
 msgid "Unable to send message to %s."
-msgstr "Kunne ikke sende beskjed til %s."
+msgstr "Klarte ikke å sende beskjed til %s."
 
 #: ../libpurple/conversation.c:174
 msgid "The message is too large."
-msgstr "Meldingen er for stor."
-
-#: ../libpurple/conversation.c:183 ../libpurple/protocols/bonjour/jabber.c:255
+msgstr "Beskjeden er for stor."
+
+#: ../libpurple/conversation.c:183
+#: ../libpurple/protocols/bonjour/jabber.c:255
 #: ../libpurple/protocols/bonjour/jabber.c:298
 msgid "Unable to send message."
 msgstr "Kunne ikke sende beskjed."
@@ -2332,9 +2521,8 @@
 msgstr "Send beskjed"
 
 #: ../libpurple/conversation.c:1214
-#, fuzzy
 msgid "_Send Message"
-msgstr "Send beskjed"
+msgstr "_Send beskjed"
 
 #: ../libpurple/conversation.c:1620
 #, c-format
@@ -2385,7 +2573,8 @@
 msgid "Purple's D-BUS server is not running for the reason listed below"
 msgstr ""
 
-#: ../libpurple/desktopitem.c:287 ../libpurple/desktopitem.c:878
+#: ../libpurple/desktopitem.c:287
+#: ../libpurple/desktopitem.c:878
 #, fuzzy
 msgid "No name"
 msgstr "Etternavn:"
@@ -2400,7 +2589,8 @@
 msgid "Unable to send request to resolver process\n"
 msgstr "Kunne ikke sende beskjed til %s."
 
-#: ../libpurple/dnsquery.c:549 ../libpurple/dnsquery.c:697
+#: ../libpurple/dnsquery.c:549
+#: ../libpurple/dnsquery.c:697
 #, fuzzy, c-format
 msgid ""
 "Error resolving %s:\n"
@@ -2409,7 +2599,8 @@
 "Klarte ikke lese %s:\n"
 "%s\n"
 
-#: ../libpurple/dnsquery.c:552 ../libpurple/dnsquery.c:711
+#: ../libpurple/dnsquery.c:552
+#: ../libpurple/dnsquery.c:711
 #: ../libpurple/dnsquery.c:831
 #, fuzzy, c-format
 msgid "Error resolving %s: %d"
@@ -2425,7 +2616,7 @@
 msgstr "Feil under lesing fra socket."
 
 #: ../libpurple/dnsquery.c:578
-#, fuzzy, c-format
+#, fuzzy
 msgid "EOF while reading from resolver process"
 msgstr "Feil under lesing fra socket."
 
@@ -2435,9 +2626,8 @@
 msgstr "Autentiseringsfeil"
 
 #: ../libpurple/dnsquery.c:762
-#, fuzzy
 msgid "Unknown reason"
-msgstr "Ukjent grunn."
+msgstr "Ukjent grunn"
 
 #: ../libpurple/ft.c:209
 #, c-format
@@ -2481,9 +2671,7 @@
 #: ../libpurple/ft.c:287
 #, c-format
 msgid "%s is not a regular file. Cowardly refusing to overwrite it.\n"
-msgstr ""
-"%s er ikke en vanlig fil. Gaim nekter å overskrive den for å ikke risikere å "
-"ødelegge noe.\n"
+msgstr "%s er ikke en vanlig fil. Gaim nekter å overskrive den for å ikke risikere å ødelegge noe.\n"
 
 #: ../libpurple/ft.c:347
 #, c-format
@@ -2512,9 +2700,9 @@
 "Port: %d"
 
 #: ../libpurple/ft.c:436
-#, fuzzy, c-format
+#, c-format
 msgid "%s is offering to send file %s"
-msgstr "Tilbyr å sende %s til %s"
+msgstr "%s tilbyr å sende filen %s"
 
 #: ../libpurple/ft.c:488
 #, c-format
@@ -2527,9 +2715,9 @@
 msgstr "Tilbyr å sende %s til %s"
 
 #: ../libpurple/ft.c:521
-#, fuzzy, c-format
+#, c-format
 msgid "Starting transfer of %s from %s"
-msgstr "Aksepter forespørselen for filoverføring fra %s?"
+msgstr "Starter overføring av %s fra %s"
 
 #: ../libpurple/ft.c:682
 #, c-format
@@ -2537,7 +2725,6 @@
 msgstr "Overføring av filen %s er ferdig."
 
 #: ../libpurple/ft.c:685
-#, c-format
 msgid "File transfer complete"
 msgstr "Filoverføring ferdig"
 
@@ -2547,7 +2734,6 @@
 msgstr "Du avbrøt overføringen av %s."
 
 #: ../libpurple/ft.c:1108
-#, c-format
 msgid "File transfer cancelled"
 msgstr "Filoverføring avbrutt."
 
@@ -2562,168 +2748,150 @@
 msgstr "%s avbrøt filoverføringen."
 
 #: ../libpurple/ft.c:1228
-#, fuzzy, c-format
+#, c-format
 msgid "File transfer to %s failed."
-msgstr "Filoverføring til %s avbrutt.\n"
+msgstr "Filoverføring til %s feilet."
 
 #: ../libpurple/ft.c:1230
-#, fuzzy, c-format
+#, c-format
 msgid "File transfer from %s failed."
-msgstr "Filoverføring fra %s avbrutt.\n"
+msgstr "Filoverføring fra %s feilet."
 
 #: ../libpurple/gconf/purple.schemas.in.h:1
 msgid "Run the command in a terminal"
-msgstr ""
+msgstr "Kjør kommandoen i en terminal"
 
 #: ../libpurple/gconf/purple.schemas.in.h:2
 msgid "The command used to handle \"aim\" URLs, if enabled."
-msgstr ""
+msgstr "Kommando for å håndtere «aim»-URLer, hvis aktivert."
 
 #: ../libpurple/gconf/purple.schemas.in.h:3
 msgid "The command used to handle \"gg\" URLs, if enabled."
-msgstr ""
+msgstr "Kommando for å håndtere «gg»-URLer, hvis aktivert."
 
 #: ../libpurple/gconf/purple.schemas.in.h:4
 msgid "The command used to handle \"icq\" URLs, if enabled."
-msgstr ""
+msgstr "Kommando for å håndtere «icq»-URLer, hvis aktivert."
 
 #: ../libpurple/gconf/purple.schemas.in.h:5
 msgid "The command used to handle \"irc\" URLs, if enabled."
-msgstr ""
+msgstr "Kommando for å håndtere «irc»-URLer, hvis aktivert."
 
 #: ../libpurple/gconf/purple.schemas.in.h:6
 msgid "The command used to handle \"msnim\" URLs, if enabled."
-msgstr ""
+msgstr "Kommando for å håndtere «msnim»-URLer, hvis aktivert."
 
 #: ../libpurple/gconf/purple.schemas.in.h:7
 msgid "The command used to handle \"sip\" URLs, if enabled."
-msgstr ""
+msgstr "Kommando for å håndtere «sip»-URLer, hvis aktivert."
 
 #: ../libpurple/gconf/purple.schemas.in.h:8
 msgid "The command used to handle \"xmpp\" URLs, if enabled."
-msgstr ""
+msgstr "Kommando for å håndtere «xmpp»-URLer, hvis aktivert."
 
 #: ../libpurple/gconf/purple.schemas.in.h:9
 msgid "The command used to handle \"ymsgr\" URLs, if enabled."
-msgstr ""
+msgstr "Kommando for å håndtere «ymsgr»-URLer, hvis aktivert."
 
 #: ../libpurple/gconf/purple.schemas.in.h:10
 msgid "The handler for \"aim\" URLs"
-msgstr ""
+msgstr "Håndtereren for «aim»-URLer"
 
 #: ../libpurple/gconf/purple.schemas.in.h:11
 msgid "The handler for \"gg\" URLs"
-msgstr ""
+msgstr "Håndtereren for «gg»-URLer"
 
 #: ../libpurple/gconf/purple.schemas.in.h:12
 msgid "The handler for \"icq\" URLs"
-msgstr ""
+msgstr "Håndtereren for «icq»-URLer"
 
 #: ../libpurple/gconf/purple.schemas.in.h:13
 msgid "The handler for \"irc\" URLs"
-msgstr ""
+msgstr "Håndtereren for «irc»-URLer"
 
 #: ../libpurple/gconf/purple.schemas.in.h:14
 msgid "The handler for \"msnim\" URLs"
-msgstr ""
+msgstr "Håndtereren for «msnim»-URLer"
 
 #: ../libpurple/gconf/purple.schemas.in.h:15
 msgid "The handler for \"sip\" URLs"
-msgstr ""
+msgstr "Håndtereren for «sip»-URLer"
 
 #: ../libpurple/gconf/purple.schemas.in.h:16
 msgid "The handler for \"xmpp\" URLs"
-msgstr ""
+msgstr "Håndtereren for «xmpp»-URLer"
 
 #: ../libpurple/gconf/purple.schemas.in.h:17
 msgid "The handler for \"ymsgr\" URLs"
-msgstr ""
+msgstr "Håndtereren for «ymsgr»-URLer"
 
 #: ../libpurple/gconf/purple.schemas.in.h:18
-msgid ""
-"True if the command specified in the \"command\" key should handle \"aim\" "
-"URLs."
-msgstr ""
+msgid "True if the command specified in the \"command\" key should handle \"aim\" URLs."
+msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «aim»-URLer."
 
 #: ../libpurple/gconf/purple.schemas.in.h:19
-msgid ""
-"True if the command specified in the \"command\" key should handle \"gg\" "
-"URLs."
-msgstr ""
+msgid "True if the command specified in the \"command\" key should handle \"gg\" URLs."
+msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «gg»-URLer."
 
 #: ../libpurple/gconf/purple.schemas.in.h:20
-msgid ""
-"True if the command specified in the \"command\" key should handle \"icq\" "
-"URLs."
-msgstr ""
+msgid "True if the command specified in the \"command\" key should handle \"icq\" URLs."
+msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «icq»-URLer."
 
 #: ../libpurple/gconf/purple.schemas.in.h:21
-msgid ""
-"True if the command specified in the \"command\" key should handle \"irc\" "
-"URLs."
-msgstr ""
+msgid "True if the command specified in the \"command\" key should handle \"irc\" URLs."
+msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «irc»-URLer."
 
 #: ../libpurple/gconf/purple.schemas.in.h:22
-msgid ""
-"True if the command specified in the \"command\" key should handle \"msnim\" "
-"URLs."
-msgstr ""
+msgid "True if the command specified in the \"command\" key should handle \"msnim\" URLs."
+msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «msnim»-URLer."
 
 #: ../libpurple/gconf/purple.schemas.in.h:23
-msgid ""
-"True if the command specified in the \"command\" key should handle \"sip\" "
-"URLs."
-msgstr ""
+msgid "True if the command specified in the \"command\" key should handle \"sip\" URLs."
+msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «sip»-URLer."
 
 #: ../libpurple/gconf/purple.schemas.in.h:24
-msgid ""
-"True if the command specified in the \"command\" key should handle \"xmpp\" "
-"URLs."
-msgstr ""
+msgid "True if the command specified in the \"command\" key should handle \"xmpp\" URLs."
+msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «xmpp»-URLer."
 
 #: ../libpurple/gconf/purple.schemas.in.h:25
-msgid ""
-"True if the command specified in the \"command\" key should handle \"ymsgr\" "
-"URLs."
-msgstr ""
+msgid "True if the command specified in the \"command\" key should handle \"ymsgr\" URLs."
+msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «ymsgr»-URLer."
 
 #: ../libpurple/gconf/purple.schemas.in.h:26
-msgid ""
-"True if the command used to handle this type of URL should be run in a "
-"terminal."
-msgstr ""
+msgid "True if the command used to handle this type of URL should be run in a terminal."
+msgstr "Sann hvis kommandoen som skal håndtere denne type URLer skal kjøres i en terminal."
 
 #: ../libpurple/gconf/purple.schemas.in.h:27
 msgid "Whether the specified command should handle \"aim\" URLs"
-msgstr ""
+msgstr "Om den spesifike kommandoen skal håndtere «aim»-URLer"
 
 #: ../libpurple/gconf/purple.schemas.in.h:28
 msgid "Whether the specified command should handle \"gg\" URLs"
-msgstr ""
+msgstr "Om den spesifike kommandoen skal håndtere «gg»-URLer"
 
 #: ../libpurple/gconf/purple.schemas.in.h:29
 msgid "Whether the specified command should handle \"icq\" URLs"
-msgstr ""
+msgstr "Om den spesifike kommandoen skal håndtere «icq»-URLer"
 
 #: ../libpurple/gconf/purple.schemas.in.h:30
 msgid "Whether the specified command should handle \"irc\" URLs"
-msgstr ""
+msgstr "Om den spesifike kommandoen skal håndtere «irc»-URLer"
 
 #: ../libpurple/gconf/purple.schemas.in.h:31
 msgid "Whether the specified command should handle \"msnim\" URLs"
-msgstr ""
+msgstr "Om den spesifike kommandoen skal håndtere «msnim»-URLer"
 
 #: ../libpurple/gconf/purple.schemas.in.h:32
 msgid "Whether the specified command should handle \"sip\" URLs"
-msgstr ""
+msgstr "Om den spesifike kommandoen skal håndtere «sip»-URLer"
 
 #: ../libpurple/gconf/purple.schemas.in.h:33
 msgid "Whether the specified command should handle \"xmpp\" URLs"
-msgstr ""
+msgstr "Om den spesifike kommandoen skal håndtere «xmpp»-URLer"
 
 #: ../libpurple/gconf/purple.schemas.in.h:34
 msgid "Whether the specified command should handle \"ymsgr\" URLs"
-msgstr ""
+msgstr "Om den spesifike kommandoen skal håndtere «ymsgr»-URLer"
 
 #: ../libpurple/log.c:183
 msgid "<b><font color=\"red\">The logger has no read function</font></b>"
@@ -2751,27 +2919,21 @@
 
 #: ../libpurple/log.c:1366
 #, c-format
-msgid ""
-"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
-"REPLY&gt;:</b></font> %s<br/>\n"
-msgstr ""
-"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;"
-"STANDARDSVAR&gt;:</b></font> %s<br/>\n"
+msgid "<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-REPLY&gt;:</b></font> %s<br/>\n"
+msgstr "<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;STANDARDSVAR&gt;:</b></font> %s<br/>\n"
 
 #: ../libpurple/log.c:1368
 #, c-format
-msgid ""
-"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
-"REPLY&gt;:</b></font> %s<br/>\n"
-msgstr ""
-"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;"
-"STANDARDSVAR&gt;:</b></font> %s<br/>\n"
-
-#: ../libpurple/log.c:1426 ../libpurple/log.c:1559
+msgid "<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-REPLY&gt;:</b></font> %s<br/>\n"
+msgstr "<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;STANDARDSVAR&gt;:</b></font> %s<br/>\n"
+
+#: ../libpurple/log.c:1426
+#: ../libpurple/log.c:1559
 msgid "<font color=\"red\"><b>Unable to find log path!</b></font>"
 msgstr "<font color=\"red\"><b>Kunne ikke finne banen til loggen!</b></font>"
 
-#: ../libpurple/log.c:1438 ../libpurple/log.c:1568
+#: ../libpurple/log.c:1438
+#: ../libpurple/log.c:1568
 #, c-format
 msgid "<font color=\"red\"><b>Could not read file: %s</b></font>"
 msgstr "<font color=\"red\"><b>Kunne ikke lese fil: %s</b></font>"
@@ -2784,10 +2946,9 @@
 #: ../libpurple/plugin.c:365
 #, c-format
 msgid "You are using %s, but this plugin requires %s."
-msgstr ""
+msgstr "Du bruker %s, men dette tillegget krever %s."
 
 #: ../libpurple/plugin.c:380
-#, c-format
 msgid "This plugin has not defined an ID."
 msgstr ""
 
@@ -2807,17 +2968,12 @@
 
 #: ../libpurple/plugin.c:547
 #, c-format
-msgid ""
-"The required plugin %s was not found. Please install this plugin and try "
-"again."
-msgstr ""
-"Det nødvendige tillegget %s ble ikke funnet. Installer dette tillegget og "
-"prøv igjen."
+msgid "The required plugin %s was not found. Please install this plugin and try again."
+msgstr "Det nødvendige tillegget %s ble ikke funnet. Installer dette tillegget og prøv igjen."
 
 #: ../libpurple/plugin.c:552
-#, fuzzy
 msgid "Unable to load the plugin"
-msgstr "Gaim klarte ikke å laste tillegget."
+msgstr "Klarte ikke å laste tillegget."
 
 #: ../libpurple/plugin.c:574
 #, c-format
@@ -2840,11 +2996,11 @@
 msgstr "Lar deg laste perl-tillegg."
 
 #: ../libpurple/plugins/autoaccept.c:23
-#, fuzzy
 msgid "Autoaccept"
-msgstr "Godta"
-
-#: ../libpurple/plugins/autoaccept.c:25 ../libpurple/plugins/autoaccept.c:26
+msgstr "Autoaksepter"
+
+#: ../libpurple/plugins/autoaccept.c:25
+#: ../libpurple/plugins/autoaccept.c:26
 #, fuzzy
 msgid "Auto-accept file transfer requests from selected users."
 msgstr "Aksepter forespørselen for filoverføring fra %s?"
@@ -2870,24 +3026,28 @@
 
 #: ../libpurple/plugins/autoaccept.c:164
 msgid "_Save"
-msgstr "Lagre"
-
-#: ../libpurple/plugins/autoaccept.c:165 ../libpurple/plugins/idle.c:170
-#: ../libpurple/plugins/idle.c:204 ../libpurple/plugins/idle.c:230
+msgstr "_Lagre"
+
+#: ../libpurple/plugins/autoaccept.c:165
+#: ../libpurple/plugins/idle.c:170
+#: ../libpurple/plugins/idle.c:204
+#: ../libpurple/plugins/idle.c:230
 #: ../libpurple/protocols/oscar/oscar.c:1453
-#: ../libpurple/protocols/oscar/oscar.c:2233
-#: ../libpurple/protocols/oscar/oscar.c:2282
-#: ../libpurple/protocols/oscar/oscar.c:5886
-#: ../libpurple/protocols/oscar/oscar.c:5941
-#: ../libpurple/protocols/oscar/oscar.c:6167
-#: ../libpurple/protocols/oscar/oscar.c:6237 ../libpurple/request.h:1388
+#: ../libpurple/protocols/oscar/oscar.c:2229
+#: ../libpurple/protocols/oscar/oscar.c:2278
+#: ../libpurple/protocols/oscar/oscar.c:5884
+#: ../libpurple/protocols/oscar/oscar.c:5939
+#: ../libpurple/protocols/oscar/oscar.c:6165
+#: ../libpurple/protocols/oscar/oscar.c:6235
+#: ../libpurple/request.h:1388
 #: ../libpurple/request.h:1398
+#: ../pidgin/gtkblist.c:527
 msgid "_Cancel"
 msgstr "_Avbryt"
 
 #: ../libpurple/plugins/autoaccept.c:168
 msgid "Ask"
-msgstr ""
+msgstr "Spør"
 
 #: ../libpurple/plugins/autoaccept.c:169
 #, fuzzy
@@ -2922,19 +3082,19 @@
 "(only when there's no conversation with the sender)"
 msgstr ""
 
-#: ../libpurple/plugins/buddynote.c:46 ../libpurple/protocols/msn/msn.c:1660
-#: ../libpurple/protocols/msn/msn.c:1690
-#, fuzzy
+#: ../libpurple/plugins/buddynote.c:46
+#: ../libpurple/protocols/msn/msn.c:1770
+#: ../libpurple/protocols/msn/msn.c:1800
 msgid "Notes"
-msgstr "Merknad"
+msgstr "Merknader"
 
 #: ../libpurple/plugins/buddynote.c:47
 msgid "Enter your notes below..."
-msgstr ""
+msgstr "Skriv inn merknadene dine under..."
 
 #: ../libpurple/plugins/buddynote.c:65
 msgid "Edit Notes..."
-msgstr ""
+msgstr "Rediger merknader..."
 
 #. *< major version
 #. *< minor version
@@ -2944,19 +3104,21 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/buddynote.c:90 ../pidgin/plugins/gtkbuddynote.c:74
-#, fuzzy
+#: ../libpurple/plugins/buddynote.c:90
+#: ../pidgin/plugins/gtkbuddynote.c:74
 msgid "Buddy Notes"
-msgstr "Kontakter"
+msgstr "Kontaktmerknader"
 
 #. *< name
 #. *< version
-#: ../libpurple/plugins/buddynote.c:92 ../pidgin/plugins/gtkbuddynote.c:76
+#: ../libpurple/plugins/buddynote.c:92
+#: ../pidgin/plugins/gtkbuddynote.c:76
 msgid "Store notes on particular buddies."
 msgstr ""
 
 #. *< summary
-#: ../libpurple/plugins/buddynote.c:93 ../pidgin/plugins/gtkbuddynote.c:77
+#: ../libpurple/plugins/buddynote.c:93
+#: ../pidgin/plugins/gtkbuddynote.c:77
 #, fuzzy
 msgid "Adds the option to store notes for buddies on your buddy list."
 msgstr "Legg til brukeren i kontaktlisten din"
@@ -2975,7 +3137,8 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/plugins/ciphertest.c:267 ../libpurple/plugins/ciphertest.c:269
+#: ../libpurple/plugins/ciphertest.c:267
+#: ../libpurple/plugins/ciphertest.c:269
 msgid "Tests the ciphers that ship with libpurple."
 msgstr ""
 
@@ -2987,7 +3150,7 @@
 #. *< id
 #: ../libpurple/plugins/dbus-example.c:155
 msgid "DBus Example"
-msgstr ""
+msgstr "DBus-eksempel"
 
 #. *< name
 #. *< version
@@ -3005,36 +3168,41 @@
 #. *< priority
 #. *< id
 #: ../libpurple/plugins/filectl.c:248
-#, fuzzy
 msgid "File Control"
-msgstr "Styre Gaim fra kontrollfil"
+msgstr "Filkontroll"
 
 #. *< name
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/plugins/filectl.c:251 ../libpurple/plugins/filectl.c:253
+#: ../libpurple/plugins/filectl.c:251
+#: ../libpurple/plugins/filectl.c:253
 #, fuzzy
 msgid "Allows control by entering commands in a file."
 msgstr "Lar deg kontrollere Gaim ved å skrive inn kommandoer i en fil."
 
-#: ../libpurple/plugins/idle.c:158 ../libpurple/plugins/idle.c:218
+#: ../libpurple/plugins/idle.c:158
+#: ../libpurple/plugins/idle.c:218
 msgid "Minutes"
 msgstr "Minutter"
 
 #. This is a cultural reference.  Dy'er Mak'er is a song by Led Zeppelin.
 #. If that doesn't translate well into your language, drop the 's before translating.
-#: ../libpurple/plugins/idle.c:165 ../libpurple/plugins/idle.c:199
-#: ../libpurple/plugins/idle.c:225 ../libpurple/plugins/idle.c:318
+#: ../libpurple/plugins/idle.c:165
+#: ../libpurple/plugins/idle.c:199
+#: ../libpurple/plugins/idle.c:225
+#: ../libpurple/plugins/idle.c:318
 msgid "I'dle Mak'er"
 msgstr "I'dle Mak'er"
 
-#: ../libpurple/plugins/idle.c:166 ../libpurple/plugins/idle.c:258
+#: ../libpurple/plugins/idle.c:166
+#: ../libpurple/plugins/idle.c:258
 #, fuzzy
 msgid "Set Account Idle Time"
 msgstr "Sett fraværstid for konto"
 
-#: ../libpurple/plugins/idle.c:169 ../libpurple/plugins/idle.c:229
+#: ../libpurple/plugins/idle.c:169
+#: ../libpurple/plugins/idle.c:229
 msgid "_Set"
 msgstr "_Sett"
 
@@ -3042,7 +3210,8 @@
 msgid "None of your accounts are idle."
 msgstr ""
 
-#: ../libpurple/plugins/idle.c:200 ../libpurple/plugins/idle.c:262
+#: ../libpurple/plugins/idle.c:200
+#: ../libpurple/plugins/idle.c:262
 #, fuzzy
 msgid "Unset Account Idle Time"
 msgstr "Sett fraværstid for konto"
@@ -3052,7 +3221,8 @@
 msgid "_Unset"
 msgstr "Bruk"
 
-#: ../libpurple/plugins/idle.c:226 ../libpurple/plugins/idle.c:266
+#: ../libpurple/plugins/idle.c:226
+#: ../libpurple/plugins/idle.c:266
 #, fuzzy
 msgid "Set Idle Time for All Accounts"
 msgstr "Frigi Borte-tid For Alle Idle Kontoer"
@@ -3062,7 +3232,8 @@
 msgid "Unset Idle Time for All Idled Accounts"
 msgstr "Frigi Borte-tid For Alle Idle Kontoer"
 
-#: ../libpurple/plugins/idle.c:320 ../libpurple/plugins/idle.c:321
+#: ../libpurple/plugins/idle.c:320
+#: ../libpurple/plugins/idle.c:321
 #, fuzzy
 msgid "Allows you to hand-configure how long you've been idle"
 msgstr "Lar deg manuelt sette hvor lenge du har vært borte."
@@ -3086,12 +3257,8 @@
 
 #. *  description
 #: ../libpurple/plugins/ipc-test-client.c:92
-msgid ""
-"Test plugin IPC support, as a client. This locates the server plugin and "
-"calls the commands registered."
-msgstr ""
-"Test IPC-støtte for tillegg (som klient). Dette finner tjenertillegget og "
-"kaller de registrerte kommandoene."
+msgid "Test plugin IPC support, as a client. This locates the server plugin and calls the commands registered."
+msgstr "Test IPC-støtte for tillegg (som klient). Dette finner tjenertillegget og kaller de registrerte kommandoene."
 
 #
 #. *< type
@@ -3114,8 +3281,7 @@
 #. *  description
 #: ../libpurple/plugins/ipc-test-server.c:79
 msgid "Test plugin IPC support, as a server. This registers the IPC commands."
-msgstr ""
-"Test IPC-støtte for tillegg (som tjener). Dette registrerer IPC-kommandoene."
+msgstr "Test IPC-støtte for tillegg (som tjener). Dette registrerer IPC-kommandoene."
 
 #: ../libpurple/plugins/joinpart.c:229
 #, fuzzy
@@ -3149,9 +3315,7 @@
 
 #. *  description
 #: ../libpurple/plugins/joinpart.c:275
-msgid ""
-"This plugin hides join/part messages in large rooms, except for those users "
-"actively taking part in a conversation."
+msgid "This plugin hides join/part messages in large rooms, except for those users actively taking part in a conversation."
 msgstr ""
 
 #. This is used in the place of a timezone abbreviation if the
@@ -3160,10 +3324,9 @@
 #. * not a real timezone.
 #: ../libpurple/plugins/log_reader.c:493
 msgid "(UTC)"
-msgstr ""
+msgstr "(UTC)"
 
 #: ../libpurple/plugins/log_reader.c:1577
-#, fuzzy
 msgid "User is offline."
 msgstr "Brukeren er avlogget"
 
@@ -3175,9 +3338,9 @@
 #: ../libpurple/plugins/log_reader.c:1593
 #: ../libpurple/plugins/log_reader.c:1596
 #: ../libpurple/plugins/statenotify.c:80
-#, fuzzy, c-format
+#, c-format
 msgid "%s has signed off."
-msgstr "%s har logget av (%s)"
+msgstr "%s har logget av."
 
 #: ../libpurple/plugins/log_reader.c:1610
 msgid "One or more messages may have been undeliverable."
@@ -3188,9 +3351,7 @@
 msgstr "Du har blitt koblet fra tjeneren."
 
 #: ../libpurple/plugins/log_reader.c:1628
-msgid ""
-"You are currently disconnected. Messages will not be received unless you are "
-"logged in."
+msgid "You are currently disconnected. Messages will not be received unless you are logged in."
 msgstr ""
 
 #: ../libpurple/plugins/log_reader.c:1643
@@ -3199,9 +3360,8 @@
 msgstr "Meldingen kunne ikke bli sendt, brukeren er frakoblet:"
 
 #: ../libpurple/plugins/log_reader.c:1648
-#, fuzzy
 msgid "Message could not be sent."
-msgstr "Din Yahoo!-beskjed ble ikke sendt."
+msgstr "Beskjeden kunne ikke bli sendt."
 
 #. The names of IM clients are marked for translation at the request of
 #. translators who wanted to transliterate them.  Many translators
@@ -3209,25 +3369,23 @@
 #: ../libpurple/plugins/log_reader.c:2349
 #: ../libpurple/plugins/log_reader.c:2472
 msgid "Adium"
-msgstr ""
+msgstr "Adium"
 
 #. The names of IM clients are marked for translation at the request of
 #. translators who wanted to transliterate them.  Many translators
 #. choose to leave them alone.  Choose what's best for your language.
 #: ../libpurple/plugins/log_reader.c:2362
 #: ../libpurple/plugins/log_reader.c:2477
-#, fuzzy
 msgid "Fire"
-msgstr "Firefox"
+msgstr "Fire"
 
 #. The names of IM clients are marked for translation at the request of
 #. translators who wanted to transliterate them.  Many translators
 #. choose to leave them alone.  Choose what's best for your language.
 #: ../libpurple/plugins/log_reader.c:2374
 #: ../libpurple/plugins/log_reader.c:2481
-#, fuzzy
 msgid "Messenger Plus!"
-msgstr "Melding fra %s"
+msgstr "Messenger Plus!"
 
 #. The names of IM clients are marked for translation at the request of
 #. translators who wanted to transliterate them.  Many translators
@@ -3235,16 +3393,15 @@
 #: ../libpurple/plugins/log_reader.c:2388
 #: ../libpurple/plugins/log_reader.c:2486
 msgid "QIP"
-msgstr ""
+msgstr "QIP"
 
 #. The names of IM clients are marked for translation at the request of
 #. translators who wanted to transliterate them.  Many translators
 #. choose to leave them alone.  Choose what's best for your language.
 #: ../libpurple/plugins/log_reader.c:2400
 #: ../libpurple/plugins/log_reader.c:2490
-#, fuzzy
 msgid "MSN Messenger"
-msgstr "Lynmeldingsklient"
+msgstr "MSN Messenger"
 
 #. The names of IM clients are marked for translation at the request of
 #. translators who wanted to transliterate them.  Many translators
@@ -3252,7 +3409,7 @@
 #: ../libpurple/plugins/log_reader.c:2412
 #: ../libpurple/plugins/log_reader.c:2494
 msgid "Trillian"
-msgstr ""
+msgstr "Trillian"
 
 #. Add general preferences.
 #: ../libpurple/plugins/log_reader.c:2454
@@ -3296,11 +3453,9 @@
 #. * description
 #: ../libpurple/plugins/log_reader.c:2531
 msgid ""
-"When viewing logs, this plugin will include logs from other IM clients. "
-"Currently, this includes Adium, MSN Messenger, and Trillian.\n"
+"When viewing logs, this plugin will include logs from other IM clients. Currently, this includes Adium, MSN Messenger, and Trillian.\n"
 "\n"
-"WARNING: This plugin is still alpha code and may crash frequently.  Use it "
-"at your own risk!"
+"WARNING: This plugin is still alpha code and may crash frequently.  Use it at your own risk!"
 msgstr ""
 
 #
@@ -3324,9 +3479,8 @@
 #. *< priority
 #. *< id
 #: ../libpurple/plugins/newline.c:68
-#, fuzzy
 msgid "New Line"
-msgstr "Nytt vindu"
+msgstr "Ny linje"
 
 #. *< name
 #. *< version
@@ -3337,30 +3491,25 @@
 
 #. *< summary
 #: ../libpurple/plugins/newline.c:71
-msgid ""
-"Prepends a newline to messages so that the rest of the message appears below "
-"the screen name in the conversation window."
+msgid "Prepends a newline to messages so that the rest of the message appears below the screen name in the conversation window."
 msgstr ""
 
 #: ../libpurple/plugins/offlinemsg.c:23
 msgid "Offline Message Emulation"
 msgstr ""
 
-#: ../libpurple/plugins/offlinemsg.c:25 ../libpurple/plugins/offlinemsg.c:26
+#: ../libpurple/plugins/offlinemsg.c:25
+#: ../libpurple/plugins/offlinemsg.c:26
 msgid "Save messages sent to an offline user as pounce."
 msgstr ""
 
 #: ../libpurple/plugins/offlinemsg.c:95
-msgid ""
-"The rest of the messages will be saved as pounce. You can edit/delete the "
-"pounce from the `Buddy Pounce' dialog."
+msgid "The rest of the messages will be saved as pounce. You can edit/delete the pounce from the `Buddy Pounce' dialog."
 msgstr ""
 
 #: ../libpurple/plugins/offlinemsg.c:156
 #, c-format
-msgid ""
-"\"%s\" is currently offline. Do you want to save the rest of the messages in "
-"a pounce and automatically send them when \"%s\" logs back in?"
+msgid "\"%s\" is currently offline. Do you want to save the rest of the messages in a pounce and automatically send them when \"%s\" logs back in?"
 msgstr ""
 
 #: ../libpurple/plugins/offlinemsg.c:160
@@ -3373,26 +3522,30 @@
 msgstr ""
 
 #: ../libpurple/plugins/offlinemsg.c:165
-#: ../libpurple/protocols/msn/dialog.c:133
-#: ../libpurple/protocols/msn/msn.c:550 ../libpurple/protocols/msn/msn.c:560
-#: ../libpurple/protocols/novell/novell.c:1917
+#: ../libpurple/protocols/msn/dialog.c:141
+#: ../libpurple/protocols/msn/msn.c:622
+#: ../libpurple/protocols/novell/novell.c:1919
 #: ../libpurple/protocols/silc/buddy.c:317
-#: ../libpurple/protocols/silc/pk.c:113 ../libpurple/protocols/silc/wb.c:304
+#: ../libpurple/protocols/silc/pk.c:113
+#: ../libpurple/protocols/silc/wb.c:304
 #: ../libpurple/protocols/silc10/buddy.c:314
 #: ../libpurple/protocols/silc10/pk.c:119
-#: ../libpurple/protocols/silc10/wb.c:304 ../pidgin/gtkrequest.c:268
+#: ../libpurple/protocols/silc10/wb.c:304
+#: ../pidgin/gtkrequest.c:268
 msgid "Yes"
 msgstr "Ja"
 
 #: ../libpurple/plugins/offlinemsg.c:166
-#: ../libpurple/protocols/msn/dialog.c:134
-#: ../libpurple/protocols/msn/msn.c:550 ../libpurple/protocols/msn/msn.c:560
-#: ../libpurple/protocols/novell/novell.c:1918
+#: ../libpurple/protocols/msn/dialog.c:142
+#: ../libpurple/protocols/msn/msn.c:622
+#: ../libpurple/protocols/novell/novell.c:1920
 #: ../libpurple/protocols/silc/buddy.c:318
-#: ../libpurple/protocols/silc/pk.c:114 ../libpurple/protocols/silc/wb.c:305
+#: ../libpurple/protocols/silc/pk.c:114
+#: ../libpurple/protocols/silc/wb.c:305
 #: ../libpurple/protocols/silc10/buddy.c:315
 #: ../libpurple/protocols/silc10/pk.c:120
-#: ../libpurple/protocols/silc10/wb.c:305 ../pidgin/gtkrequest.c:269
+#: ../libpurple/protocols/silc10/wb.c:305
+#: ../pidgin/gtkrequest.c:269
 msgid "No"
 msgstr "Nei"
 
@@ -3417,7 +3570,8 @@
 #. *< name
 #. *< version
 #. *< summary
-#: ../libpurple/plugins/perl/perl.c:603 ../libpurple/plugins/perl/perl.c:604
+#: ../libpurple/plugins/perl/perl.c:603
+#: ../libpurple/plugins/perl/perl.c:604
 msgid "Provides support for loading perl plugins."
 msgstr "Lar deg laste perl-tillegg."
 
@@ -3430,9 +3584,7 @@
 msgstr ""
 
 #: ../libpurple/plugins/psychic.c:22
-msgid ""
-"Causes conversation windows to appear as other users begin to message you.  "
-"This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
+msgid "Causes conversation windows to appear as other users begin to message you.  This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
 msgstr ""
 
 #: ../libpurple/plugins/psychic.c:72
@@ -3492,15 +3644,16 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/plugins/simple.c:40 ../libpurple/plugins/simple.c:42
+#: ../libpurple/plugins/simple.c:40
+#: ../libpurple/plugins/simple.c:42
 msgid "Tests to see that most things are working."
 msgstr "Test for å se at mesteparten fungerer."
 
 #. Scheme name
-#: ../libpurple/plugins/ssl/ssl-gnutls.c:902
+#: ../libpurple/plugins/ssl/ssl-gnutls.c:903
 #: ../libpurple/plugins/ssl/ssl-nss.c:725
 msgid "X.509 Certificates"
-msgstr ""
+msgstr "X.509-sertifikater"
 
 #. *< type
 #. *< ui_requirement
@@ -3508,7 +3661,7 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/ssl/ssl-gnutls.c:986
+#: ../libpurple/plugins/ssl/ssl-gnutls.c:987
 msgid "GNUTLS"
 msgstr "GNUTLS"
 
@@ -3516,8 +3669,8 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/plugins/ssl/ssl-gnutls.c:989
-#: ../libpurple/plugins/ssl/ssl-gnutls.c:991
+#: ../libpurple/plugins/ssl/ssl-gnutls.c:990
+#: ../libpurple/plugins/ssl/ssl-gnutls.c:992
 msgid "Provides SSL support through GNUTLS."
 msgstr "Tilbyr SSL-støtte gjennom GNUTLS."
 
@@ -3554,7 +3707,8 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/plugins/ssl/ssl.c:97 ../libpurple/plugins/ssl/ssl.c:99
+#: ../libpurple/plugins/ssl/ssl.c:97
+#: ../libpurple/plugins/ssl/ssl.c:99
 msgid "Provides a wrapper around SSL support libraries."
 msgstr "Tilbyr ett felles grensesnitt for SSL-biblioteker."
 
@@ -3579,9 +3733,9 @@
 msgstr "%s er ikke lenger inaktiv"
 
 #: ../libpurple/plugins/statenotify.c:73
-#, fuzzy, c-format
+#, c-format
 msgid "%s has signed on."
-msgstr "%s har logget på (%s)"
+msgstr "%s har logget på."
 
 #: ../libpurple/plugins/statenotify.c:91
 msgid "Notify When"
@@ -3616,27 +3770,22 @@
 #. *  description
 #: ../libpurple/plugins/statenotify.c:151
 #: ../libpurple/plugins/statenotify.c:154
-msgid ""
-"Notifies in a conversation window when a buddy goes or returns from away or "
-"idle."
-msgstr ""
-"Varsler i et samtalevindu når en kontakt blir borte/inaktiv, eller "
-"returnerer."
+msgid "Notifies in a conversation window when a buddy goes or returns from away or idle."
+msgstr "Varsler i et samtalevindu når en kontakt blir borte/inaktiv, eller returnerer."
 
 #
-#: ../libpurple/plugins/tcl/tcl.c:421
+#: ../libpurple/plugins/tcl/tcl.c:423
 msgid "Tcl Plugin Loader"
 msgstr "Tcl-tilleggslaster"
 
 #
-#: ../libpurple/plugins/tcl/tcl.c:423 ../libpurple/plugins/tcl/tcl.c:424
+#: ../libpurple/plugins/tcl/tcl.c:425
+#: ../libpurple/plugins/tcl/tcl.c:426
 msgid "Provides support for loading Tcl plugins"
 msgstr "Lar deg laste Tcl-tillegg."
 
-#: ../libpurple/plugins/tcl/tcl.c:507
-msgid ""
-"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, "
-"install ActiveTCL from http://www.activestate.com\n"
+#: ../libpurple/plugins/tcl/tcl.c:509
+msgid "Unable to detect ActiveTCL installation. If you wish to use TCL plugins, install ActiveTCL from http://www.activestate.com\n"
 msgstr ""
 
 #. Send a message about the connection error
@@ -3646,8 +3795,7 @@
 msgstr "Kunne ikke lage ny tilkobling."
 
 #: ../libpurple/protocols/bonjour/bonjour.c:137
-msgid ""
-"Unable to establish connection with the local mDNS server.  Is it running?"
+msgid "Unable to establish connection with the local mDNS server.  Is it running?"
 msgstr ""
 
 #. Creating the options for the protocol
@@ -3655,23 +3803,21 @@
 #: ../libpurple/protocols/bonjour/bonjour.c:656
 #: ../libpurple/protocols/gg/gg.c:632
 #: ../libpurple/protocols/jabber/jabber.c:942
-#, fuzzy
 msgid "First name"
-msgstr "Fornavn:"
+msgstr "Fornavn"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:353
 #: ../libpurple/protocols/bonjour/bonjour.c:659
 #: ../libpurple/protocols/gg/gg.c:627
 #: ../libpurple/protocols/jabber/jabber.c:947
-#, fuzzy
 msgid "Last name"
-msgstr "Etternavn:"
+msgstr "Etternavn"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:357
 #: ../libpurple/protocols/jabber/buddy.c:295
 #: ../libpurple/protocols/jabber/buddy.c:1325
 #: ../libpurple/protocols/jabber/buddy.c:1335
-#: ../libpurple/protocols/jabber/buddy.c:2216
+#: ../libpurple/protocols/jabber/buddy.c:2219
 #: ../libpurple/protocols/silc/ops.c:1041
 #: ../libpurple/protocols/silc/util.c:555
 #: ../libpurple/protocols/silc10/ops.c:1075
@@ -3682,16 +3828,14 @@
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
 #: ../libpurple/protocols/bonjour/bonjour.c:665
-#, fuzzy
 msgid "AIM Account"
-msgstr "Legg til konto"
+msgstr "AIM-konto"
 
 #
 #: ../libpurple/protocols/bonjour/bonjour.c:363
 #: ../libpurple/protocols/bonjour/bonjour.c:668
-#, fuzzy
 msgid "XMPP Account"
-msgstr "Konto"
+msgstr "XMPP-konto"
 
 #. *< type
 #. *< ui_requirement
@@ -3721,18 +3865,17 @@
 #: ../libpurple/protocols/silc/silc.c:1011
 #: ../libpurple/protocols/silc10/silc.c:681
 #: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
 msgid "E-mail"
-msgstr "E-post:"
+msgstr "E-post"
 
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
-msgstr ""
+msgstr "Bonjour"
 
 #: ../libpurple/protocols/bonjour/jabber.c:380
-#, fuzzy, c-format
+#, c-format
 msgid "%s has closed the conversation."
-msgstr "%s har blitt invitert til denne samtalen."
+msgstr "%s har lukket samtalen."
 
 #: ../libpurple/protocols/bonjour/jabber.c:437
 #: ../libpurple/protocols/bonjour/jabber.c:660
@@ -3761,56 +3904,58 @@
 msgid "Could not listen on socket"
 msgstr "Kunne ikke opprette socket"
 
-#: ../libpurple/protocols/gg/gg.c:76 ../libpurple/proxy.c:1829
+#: ../libpurple/protocols/gg/gg.c:76
+#: ../libpurple/proxy.c:1829
 msgid "Invalid proxy settings"
 msgstr "Ugyldige proxyinnstilinger"
 
-#: ../libpurple/protocols/gg/gg.c:77 ../libpurple/proxy.c:1829
-msgid ""
-"Either the host name or port number specified for your given proxy type is "
-"invalid."
+#: ../libpurple/protocols/gg/gg.c:77
+#: ../libpurple/proxy.c:1829
+msgid "Either the host name or port number specified for your given proxy type is invalid."
 msgstr "Det spesifiserte maskinnavnet eller portnummeret for proxy er ugyldig."
 
-#: ../libpurple/protocols/gg/gg.c:115 ../libpurple/protocols/gg/gg.c:137
+#: ../libpurple/protocols/gg/gg.c:115
+#: ../libpurple/protocols/gg/gg.c:137
 #: ../libpurple/protocols/gg/gg.c:180
 #, fuzzy
 msgid "Token Error"
 msgstr "Ukjent feil"
 
-#: ../libpurple/protocols/gg/gg.c:116 ../libpurple/protocols/gg/gg.c:138
+#: ../libpurple/protocols/gg/gg.c:116
+#: ../libpurple/protocols/gg/gg.c:138
 #: ../libpurple/protocols/gg/gg.c:181
 #, fuzzy
 msgid "Unable to fetch the token.\n"
 msgstr "Klarte ikke hente ned romliste."
 
-#: ../libpurple/protocols/gg/gg.c:269 ../libpurple/protocols/gg/gg.c:288
-#, fuzzy
+#: ../libpurple/protocols/gg/gg.c:269
+#: ../libpurple/protocols/gg/gg.c:288
 msgid "Save Buddylist..."
-msgstr "Sende kontaktliste"
+msgstr "Lagre kontaktliste..."
 
 #: ../libpurple/protocols/gg/gg.c:270
 msgid "Your buddylist is empty, nothing was written to the file."
 msgstr "Kompislisten din er tom, ingenting ble skrevet til filen."
 
-#: ../libpurple/protocols/gg/gg.c:276 ../libpurple/protocols/gg/gg.c:278
-#, fuzzy
+#: ../libpurple/protocols/gg/gg.c:276
+#: ../libpurple/protocols/gg/gg.c:278
 msgid "Couldn't open file"
-msgstr "Kan ikke sende fil"
+msgstr "Kunne ikke åpne filen"
 
 #: ../libpurple/protocols/gg/gg.c:289
 #, fuzzy
 msgid "Buddylist saved successfully!"
 msgstr "Passordet er endret"
 
-#: ../libpurple/protocols/gg/gg.c:307 ../libpurple/protocols/gg/gg.c:308
-#, fuzzy
+#: ../libpurple/protocols/gg/gg.c:307
+#: ../libpurple/protocols/gg/gg.c:308
 msgid "Couldn't load buddylist"
-msgstr "Kunne ikke eksportere kontaktliste"
+msgstr "Kunne ikke laste kontaktliste"
 
 #: ../libpurple/protocols/gg/gg.c:324
 #, fuzzy
 msgid "Load Buddylist..."
-msgstr "_Alias for kontakt..."
+msgstr "Last kontaktliste..."
 
 #: ../libpurple/protocols/gg/gg.c:325
 #, fuzzy
@@ -3818,18 +3963,16 @@
 msgstr "Passordet er endret"
 
 #: ../libpurple/protocols/gg/gg.c:336
-#, fuzzy
 msgid "Save buddylist..."
-msgstr "Sende kontaktliste"
+msgstr "Lagre kontaktliste"
 
 #: ../libpurple/protocols/gg/gg.c:384
 msgid "Fill in the registration fields."
 msgstr "Fyll inn registrerings feltene."
 
 #: ../libpurple/protocols/gg/gg.c:389
-#, fuzzy
 msgid "Passwords do not match."
-msgstr "De nye passordene stemmer ikke overens."
+msgstr "Passordene stemmer ikke overens."
 
 #: ../libpurple/protocols/gg/gg.c:398
 #, fuzzy
@@ -3845,29 +3988,34 @@
 msgid "Registration completed successfully!"
 msgstr "Registreringen var vellykket!"
 
-#: ../libpurple/protocols/gg/gg.c:482 ../libpurple/protocols/gg/gg.c:775
+#: ../libpurple/protocols/gg/gg.c:482
+#: ../libpurple/protocols/gg/gg.c:775
 #: ../libpurple/protocols/jabber/jabber.c:913
 #: ../libpurple/protocols/jabber/jabber.c:916
 #: ../libpurple/protocols/jabber/jabber.c:1722
 msgid "Password"
 msgstr "Passord"
 
-#: ../libpurple/protocols/gg/gg.c:487 ../libpurple/protocols/gg/gg.c:780
+#: ../libpurple/protocols/gg/gg.c:487
+#: ../libpurple/protocols/gg/gg.c:780
 #, fuzzy
 msgid "Password (retype)"
 msgstr "Passord sendt"
 
-#: ../libpurple/protocols/gg/gg.c:492 ../libpurple/protocols/gg/gg.c:785
+#: ../libpurple/protocols/gg/gg.c:492
+#: ../libpurple/protocols/gg/gg.c:785
 #, fuzzy
 msgid "Enter current token"
 msgstr "%s er ikke pålogget."
 
-#: ../libpurple/protocols/gg/gg.c:498 ../libpurple/protocols/gg/gg.c:791
+#: ../libpurple/protocols/gg/gg.c:498
+#: ../libpurple/protocols/gg/gg.c:791
 #, fuzzy
 msgid "Current token"
 msgstr "Pålogget på"
 
-#: ../libpurple/protocols/gg/gg.c:502 ../libpurple/protocols/gg/gg.c:503
+#: ../libpurple/protocols/gg/gg.c:502
+#: ../libpurple/protocols/gg/gg.c:503
 #, fuzzy
 msgid "Register New Gadu-Gadu Account"
 msgstr "Registrere ny jabber-konto"
@@ -3876,42 +4024,46 @@
 msgid "Please, fill in the following fields"
 msgstr "Vennligst fyll ut de følgende felt."
 
-#: ../libpurple/protocols/gg/gg.c:642 ../libpurple/protocols/gg/gg.c:1054
+#: ../libpurple/protocols/gg/gg.c:642
+#: ../libpurple/protocols/gg/gg.c:1054
 #: ../libpurple/protocols/gg/gg.c:1126
 #: ../libpurple/protocols/jabber/jabber.c:957
-#: ../libpurple/protocols/oscar/oscar.c:3789
-#: ../libpurple/protocols/oscar/oscar.c:3802
+#: ../libpurple/protocols/oscar/oscar.c:3785
+#: ../libpurple/protocols/oscar/oscar.c:3798
 #: ../libpurple/protocols/qq/buddy_info.c:49
 msgid "City"
 msgstr "By"
 
 #: ../libpurple/protocols/gg/gg.c:647
 msgid "Year of birth"
-msgstr "Fødselsdato"
-
-#: ../libpurple/protocols/gg/gg.c:650 ../libpurple/protocols/msn/msn.c:1589
+msgstr "Fødselsår"
+
+#: ../libpurple/protocols/gg/gg.c:650
+#: ../libpurple/protocols/msn/msn.c:1699
 #: ../libpurple/protocols/myspace/user.c:115
-#: ../libpurple/protocols/oscar/oscar.c:3732
+#: ../libpurple/protocols/oscar/oscar.c:3728
 #: ../libpurple/protocols/qq/buddy_info.c:46
-#: ../libpurple/protocols/qq/qq.c:226 ../libpurple/protocols/qq/qq.c:229
-#: ../libpurple/protocols/qq/qq.c:232 ../libpurple/protocols/qq/qq.c:236
+#: ../libpurple/protocols/qq/qq.c:226
+#: ../libpurple/protocols/qq/qq.c:229
+#: ../libpurple/protocols/qq/qq.c:232
+#: ../libpurple/protocols/qq/qq.c:236
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1091
 msgid "Gender"
 msgstr "Kjønn"
 
 #: ../libpurple/protocols/gg/gg.c:651
 msgid "Male or female"
-msgstr ""
+msgstr "Hankjønn eller hunkjønn"
 
 #: ../libpurple/protocols/gg/gg.c:652
-#: ../libpurple/protocols/oscar/oscar.c:3732
+#: ../libpurple/protocols/oscar/oscar.c:3728
 #: ../libpurple/protocols/qq/buddy_info.c:83
 #: ../libpurple/protocols/qq/qq.c:226
 msgid "Male"
 msgstr "Hankjønn"
 
 #: ../libpurple/protocols/gg/gg.c:653
-#: ../libpurple/protocols/oscar/oscar.c:3732
+#: ../libpurple/protocols/oscar/oscar.c:3728
 #: ../libpurple/protocols/qq/buddy_info.c:84
 #: ../libpurple/protocols/qq/qq.c:229
 msgid "Female"
@@ -3922,10 +4074,10 @@
 msgid "Only online"
 msgstr "Pålogget"
 
-#: ../libpurple/protocols/gg/gg.c:661 ../libpurple/protocols/gg/gg.c:662
-#, fuzzy
+#: ../libpurple/protocols/gg/gg.c:661
+#: ../libpurple/protocols/gg/gg.c:662
 msgid "Find buddies"
-msgstr "Dimme ned inaktive kontakter"
+msgstr "Finn kontakter"
 
 #: ../libpurple/protocols/gg/gg.c:663
 #, fuzzy
@@ -3956,9 +4108,8 @@
 msgstr "Passordet er endret"
 
 #: ../libpurple/protocols/gg/gg.c:770
-#, fuzzy
 msgid "Current password"
-msgstr "Feil passord."
+msgstr "Nåværende passord"
 
 #
 #: ../libpurple/protocols/gg/gg.c:795
@@ -3966,87 +4117,103 @@
 msgid "Please, enter your current password and your new password for UIN: "
 msgstr "Skriv inn ditt nåværende passord og ditt nye passord."
 
-#: ../libpurple/protocols/gg/gg.c:799 ../libpurple/protocols/gg/gg.c:800
-#, fuzzy
+#: ../libpurple/protocols/gg/gg.c:799
+#: ../libpurple/protocols/gg/gg.c:800
 msgid "Change Gadu-Gadu Password"
-msgstr "Kunne ikke bytte Gadu-Gadu-passord"
+msgstr "Endre Gadu-Gadu-passord"
 
 #: ../libpurple/protocols/gg/gg.c:876
-#, fuzzy, c-format
+#, c-format
 msgid "Select a chat for buddy: %s"
-msgstr "Fjern samtalen fra kontaktlisten din"
-
-#: ../libpurple/protocols/gg/gg.c:879 ../libpurple/protocols/gg/gg.c:880
+msgstr "Velg en samtale for kontakt: %s"
+
+#: ../libpurple/protocols/gg/gg.c:879
+#: ../libpurple/protocols/gg/gg.c:880
 #, fuzzy
 msgid "Add to chat..."
 msgstr "Legg til samtalegruppe"
 
 #: ../libpurple/protocols/gg/gg.c:1008
-#: ../libpurple/protocols/jabber/buddy.c:2031
-#: ../libpurple/protocols/novell/novell.c:2828
+#: ../libpurple/protocols/jabber/buddy.c:2034
+#: ../libpurple/protocols/novell/novell.c:2833
 #: ../libpurple/protocols/oscar/oscar.c:828
-#: ../libpurple/protocols/oscar/oscar.c:5604
-#: ../libpurple/protocols/qq/qq.c:170 ../libpurple/protocols/qq/qq.c:177
+#: ../libpurple/protocols/oscar/oscar.c:5602
+#: ../libpurple/protocols/qq/qq.c:170
+#: ../libpurple/protocols/qq/qq.c:177
 #: ../libpurple/protocols/qq/qq.c:292
-#: ../libpurple/protocols/yahoo/yahoo.c:3099 ../libpurple/status.c:154
-#: ../pidgin/gtkblist.c:3104 ../pidgin/gtkblist.c:3436
-#: ../pidgin/gtkdocklet.c:450 ../pidgin/gtkstatusbox.c:1061
+#: ../libpurple/protocols/yahoo/yahoo.c:3098
+#: ../libpurple/status.c:154
+#: ../pidgin/gtkblist.c:3302
+#: ../pidgin/gtkblist.c:3640
+#: ../pidgin/gtkdocklet.c:450
+#: ../pidgin/gtkstatusbox.c:1061
 msgid "Offline"
 msgstr "Avlogget"
 
 #: ../libpurple/protocols/gg/gg.c:1011
-#: ../libpurple/protocols/jabber/buddy.c:2033
-#: ../libpurple/protocols/msn/state.c:29 ../libpurple/protocols/msn/state.c:30
-#: ../libpurple/protocols/msn/state.c:37 ../libpurple/protocols/msn/state.c:38
-#: ../libpurple/protocols/novell/novell.c:2816
+#: ../libpurple/protocols/jabber/buddy.c:2036
+#: ../libpurple/protocols/msn/state.c:29
+#: ../libpurple/protocols/msn/state.c:30
+#: ../libpurple/protocols/msn/state.c:37
+#: ../libpurple/protocols/msn/state.c:38
+#: ../libpurple/protocols/novell/novell.c:2821
 #: ../libpurple/protocols/qq/qq.c:280
-#: ../libpurple/protocols/yahoo/yahoo.c:3101 ../libpurple/status.c:155
-#: ../pidgin/gtkdocklet.c:438 ../pidgin/gtkstatusbox.c:1057
+#: ../libpurple/protocols/yahoo/yahoo.c:3100
+#: ../libpurple/status.c:155
+#: ../pidgin/gtkdocklet.c:438
+#: ../pidgin/gtkstatusbox.c:1057
 msgid "Available"
 msgstr "Tilgjengelig"
 
 #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
 #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
 #. Away stuff
-#: ../libpurple/protocols/gg/gg.c:1014 ../libpurple/protocols/irc/irc.c:528
+#: ../libpurple/protocols/gg/gg.c:1014
+#: ../libpurple/protocols/irc/irc.c:528
 #: ../libpurple/protocols/irc/msgs.c:310
-#: ../libpurple/protocols/jabber/buddy.c:2037
-#: ../libpurple/protocols/novell/novell.c:2819
+#: ../libpurple/protocols/jabber/buddy.c:2040
+#: ../libpurple/protocols/novell/novell.c:2824
 #: ../libpurple/protocols/oscar/oscar.c:733
-#: ../libpurple/protocols/oscar/oscar.c:4547
-#: ../libpurple/protocols/oscar/oscar.c:5632
-#: ../libpurple/protocols/qq/qq.c:180 ../libpurple/protocols/qq/qq.c:284
+#: ../libpurple/protocols/oscar/oscar.c:4543
+#: ../libpurple/protocols/oscar/oscar.c:5630
+#: ../libpurple/protocols/qq/qq.c:180
+#: ../libpurple/protocols/qq/qq.c:284
 #: ../libpurple/protocols/silc/buddy.c:1476
 #: ../libpurple/protocols/silc10/buddy.c:1476
-#: ../libpurple/protocols/yahoo/yahoo.c:3653
-#: ../libpurple/protocols/yahoo/yahoo.c:3727 ../libpurple/status.c:158
-#: ../pidgin/gtkdocklet.c:442 ../pidgin/gtkprefs.c:1939
+#: ../libpurple/protocols/yahoo/yahoo.c:3652
+#: ../libpurple/protocols/yahoo/yahoo.c:3726
+#: ../libpurple/status.c:158
+#: ../pidgin/gtkdocklet.c:442
+#: ../pidgin/gtkprefs.c:1941
 #: ../pidgin/gtkstatusbox.c:1058
-#, c-format
 msgid "Away"
 msgstr "Borte"
 
-#: ../libpurple/protocols/gg/gg.c:1043 ../libpurple/protocols/gg/gg.c:1117
-#: ../libpurple/protocols/oscar/oscar.c:2699
-#: ../libpurple/protocols/oscar/oscar.c:3699
+#: ../libpurple/protocols/gg/gg.c:1043
+#: ../libpurple/protocols/gg/gg.c:1117
+#: ../libpurple/protocols/oscar/oscar.c:2695
+#: ../libpurple/protocols/oscar/oscar.c:3695
 msgid "UIN"
 msgstr "UIN"
 
-#: ../libpurple/protocols/gg/gg.c:1046 ../libpurple/protocols/gg/gg.c:1120
-#: ../libpurple/protocols/jabber/buddy.c:2210
-#: ../libpurple/protocols/jabber/buddy.c:2386
-#: ../libpurple/protocols/oscar/oscar.c:3710
+#: ../libpurple/protocols/gg/gg.c:1046
+#: ../libpurple/protocols/gg/gg.c:1120
+#: ../libpurple/protocols/jabber/buddy.c:2213
+#: ../libpurple/protocols/jabber/buddy.c:2389
+#: ../libpurple/protocols/oscar/oscar.c:3706
 #: ../libpurple/protocols/silc/ops.c:990
 #: ../libpurple/protocols/silc10/ops.c:1024
 msgid "First Name"
 msgstr "Fornavn"
 
-#: ../libpurple/protocols/gg/gg.c:1059 ../libpurple/protocols/gg/gg.c:1129
+#: ../libpurple/protocols/gg/gg.c:1059
+#: ../libpurple/protocols/gg/gg.c:1129
 msgid "Birth Year"
 msgstr "Fødselsår"
 
-#: ../libpurple/protocols/gg/gg.c:1111 ../libpurple/protocols/gg/gg.c:1180
-#: ../libpurple/protocols/oscar/oscar.c:3911
+#: ../libpurple/protocols/gg/gg.c:1111
+#: ../libpurple/protocols/gg/gg.c:1180
+#: ../libpurple/protocols/oscar/oscar.c:3907
 #, fuzzy
 msgid "Unable to display the search results."
 msgstr "Kunne ikke invitere bruker (%s)."
@@ -4056,7 +4223,6 @@
 msgstr ""
 
 #: ../libpurple/protocols/gg/gg.c:1172
-#, fuzzy
 msgid "Search results"
 msgstr "Søkeresultater"
 
@@ -4070,7 +4236,8 @@
 msgid "There are no users matching your search criteria."
 msgstr "Skriv inn ditt nye passord"
 
-#: ../libpurple/protocols/gg/gg.c:1310 ../libpurple/protocols/gg/gg.c:1463
+#: ../libpurple/protocols/gg/gg.c:1310
+#: ../libpurple/protocols/gg/gg.c:1463
 msgid "Unable to read socket"
 msgstr "Kunne ikke lese socket"
 
@@ -4094,12 +4261,14 @@
 msgid "Your buddy list was stored on the server."
 msgstr "Det er ingen kontaktliste på Gadu-Gadu-tjeneren."
 
-#: ../libpurple/protocols/gg/gg.c:1509 ../libpurple/protocols/gg/gg.c:1715
+#: ../libpurple/protocols/gg/gg.c:1509
+#: ../libpurple/protocols/gg/gg.c:1715
 #, fuzzy
 msgid "Connection failed."
 msgstr "Tilkopling feilet"
 
-#: ../libpurple/protocols/gg/gg.c:1621 ../libpurple/protocols/msn/msn.c:559
+#: ../libpurple/protocols/gg/gg.c:1621
+#: ../libpurple/protocols/msn/msn.c:621
 msgid "Blocked"
 msgstr "Blokkert"
 
@@ -4138,14 +4307,12 @@
 msgstr "Du har blitt koblet fra tjeneren."
 
 #: ../libpurple/protocols/gg/gg.c:2021
-#, fuzzy
 msgid "Find buddies..."
-msgstr "Dimme ned inaktive kontakter"
+msgstr "Finn kontakter..."
 
 #: ../libpurple/protocols/gg/gg.c:2027
-#, fuzzy
 msgid "Change password..."
-msgstr "Bytt passord..."
+msgstr "Endre passord..."
 
 #: ../libpurple/protocols/gg/gg.c:2033
 #, fuzzy
@@ -4224,9 +4391,8 @@
 #: ../libpurple/protocols/yahoo/yahoo_filexfer.c:269
 #: ../libpurple/protocols/yahoo/yahoo_filexfer.c:278
 #: ../libpurple/protocols/yahoo/yahoo_filexfer.c:287
-#, fuzzy
 msgid "File Transfer Failed"
-msgstr "Filoverføring avbrutt."
+msgstr "Filoverføring feilet"
 
 #: ../libpurple/protocols/irc/dcc_send.c:297
 #: ../libpurple/protocols/irc/dcc_send.c:338
@@ -4251,9 +4417,11 @@
 msgid "MOTD for %s"
 msgstr "MOTD for %s"
 
-#: ../libpurple/protocols/irc/irc.c:127 ../libpurple/protocols/irc/irc.c:165
-#: ../libpurple/protocols/irc/irc.c:612 ../libpurple/protocols/irc/irc.c:637
-#: ../libpurple/protocols/myspace/myspace.c:2356
+#: ../libpurple/protocols/irc/irc.c:127
+#: ../libpurple/protocols/irc/irc.c:165
+#: ../libpurple/protocols/irc/irc.c:612
+#: ../libpurple/protocols/irc/irc.c:637
+#: ../libpurple/protocols/myspace/myspace.c:2354
 msgid "Server has disconnected"
 msgstr "Tjeneren har koplet fra"
 
@@ -4261,13 +4429,15 @@
 msgid "View MOTD"
 msgstr "Vis MOTD"
 
-#: ../libpurple/protocols/irc/irc.c:261 ../libpurple/protocols/silc/chat.c:33
+#: ../libpurple/protocols/irc/irc.c:261
+#: ../libpurple/protocols/silc/chat.c:33
 #: ../libpurple/protocols/silc10/chat.c:33
 msgid "_Channel:"
 msgstr "_Kanal:"
 
 #: ../libpurple/protocols/irc/irc.c:267
-#: ../libpurple/protocols/jabber/chat.c:59 ../pidgin/gtkaccount.c:524
+#: ../libpurple/protocols/jabber/chat.c:59
+#: ../pidgin/gtkaccount.c:524
 msgid "_Password:"
 msgstr "_Passord"
 
@@ -4279,15 +4449,16 @@
 #. connect to the server
 #: ../libpurple/protocols/irc/irc.c:319
 #: ../libpurple/protocols/jabber/jabber.c:1280
-#: ../libpurple/protocols/msn/session.c:345
-#: ../libpurple/protocols/myspace/myspace.c:301
-#: ../libpurple/protocols/novell/novell.c:2182
+#: ../libpurple/protocols/msn/session.c:384
+#: ../libpurple/protocols/myspace/myspace.c:302
+#: ../libpurple/protocols/novell/novell.c:2187
 #: ../libpurple/protocols/oscar/oscar.c:1287
 #: ../libpurple/protocols/qq/qq.c:136
 #: ../libpurple/protocols/sametime/sametime.c:3723
-#: ../libpurple/protocols/simple/simple.c:1716
-#: ../libpurple/protocols/yahoo/yahoo.c:2939
-#: ../libpurple/protocols/zephyr/zephyr.c:1621 ../pidgin/gtkstatusbox.c:662
+#: ../libpurple/protocols/simple/simple.c:1718
+#: ../libpurple/protocols/yahoo/yahoo.c:2938
+#: ../libpurple/protocols/zephyr/zephyr.c:1621
+#: ../pidgin/gtkstatusbox.c:662
 msgid "Connecting"
 msgstr "Kobler til"
 
@@ -4300,20 +4471,21 @@
 #. TODO: try other ports if in auto mode, then save
 #. * working port and try that first next time.
 #: ../libpurple/protocols/irc/irc.c:338
-#: ../libpurple/protocols/myspace/myspace.c:317
+#: ../libpurple/protocols/myspace/myspace.c:318
 #: ../libpurple/protocols/simple/simple.c:464
-#: ../libpurple/protocols/simple/simple.c:1631
+#: ../libpurple/protocols/simple/simple.c:1633
 msgid "Couldn't create socket"
 msgstr "Kunne ikke opprette socket"
 
 #: ../libpurple/protocols/irc/irc.c:421
-#: ../libpurple/protocols/myspace/myspace.c:2469
+#: ../libpurple/protocols/myspace/myspace.c:2467
 #: ../libpurple/protocols/oscar/oscar.c:1283
 msgid "Couldn't connect to host"
 msgstr "Kunne ikke koble til"
 
-#: ../libpurple/protocols/irc/irc.c:609 ../libpurple/protocols/irc/irc.c:634
-#: ../libpurple/protocols/myspace/myspace.c:2352
+#: ../libpurple/protocols/irc/irc.c:609
+#: ../libpurple/protocols/irc/irc.c:634
+#: ../libpurple/protocols/myspace/myspace.c:2350
 msgid "Read error"
 msgstr "Lesefeil"
 
@@ -4352,23 +4524,25 @@
 msgstr "IRC-protokolltillegg"
 
 #. host to connect to
-#: ../libpurple/protocols/irc/irc.c:940 ../libpurple/protocols/irc/msgs.c:323
-#: ../libpurple/protocols/msn/msn.c:2185
-#: ../libpurple/protocols/oscar/oscar.c:6671
+#: ../libpurple/protocols/irc/irc.c:940
+#: ../libpurple/protocols/irc/msgs.c:323
+#: ../libpurple/protocols/msn/msn.c:2297
+#: ../libpurple/protocols/oscar/oscar.c:6669
 #: ../libpurple/protocols/qq/qq.c:755
 #: ../libpurple/protocols/sametime/sametime.c:5727
 #: ../libpurple/protocols/silc/ops.c:1249
 #: ../libpurple/protocols/silc/ops.c:1341
 #: ../libpurple/protocols/silc10/ops.c:1244
 #: ../libpurple/protocols/silc10/ops.c:1347
-#: ../libpurple/protocols/simple/simple.c:1896
+#: ../libpurple/protocols/simple/simple.c:1898
 #: ../libpurple/protocols/toc/toc.c:2327
 msgid "Server"
 msgstr "Tjener"
 
 #. port to connect to
-#: ../libpurple/protocols/irc/irc.c:943 ../libpurple/protocols/msn/msn.c:2190
-#: ../libpurple/protocols/oscar/oscar.c:6674
+#: ../libpurple/protocols/irc/irc.c:943
+#: ../libpurple/protocols/msn/msn.c:2302
+#: ../libpurple/protocols/oscar/oscar.c:6672
 #: ../libpurple/protocols/qq/qq.c:758
 #: ../libpurple/protocols/sametime/sametime.c:5732
 #: ../libpurple/protocols/silc/silc.c:1918
@@ -4381,7 +4555,8 @@
 msgid "Encodings"
 msgstr "Tegnkodinger:"
 
-#: ../libpurple/protocols/irc/irc.c:949 ../libpurple/protocols/irc/msgs.c:316
+#: ../libpurple/protocols/irc/irc.c:949
+#: ../libpurple/protocols/irc/msgs.c:316
 #: ../libpurple/protocols/jabber/jabber.c:904
 #: ../libpurple/protocols/jabber/jabber.c:907
 #: ../libpurple/protocols/silc/buddy.c:1539
@@ -4399,7 +4574,8 @@
 msgid "Username"
 msgstr "Brukernavn"
 
-#: ../libpurple/protocols/irc/irc.c:952 ../libpurple/protocols/irc/msgs.c:317
+#: ../libpurple/protocols/irc/irc.c:952
+#: ../libpurple/protocols/irc/msgs.c:317
 #: ../libpurple/protocols/silc/silc.c:1009
 #: ../libpurple/protocols/silc10/silc.c:920
 msgid "Real name"
@@ -4410,9 +4586,8 @@
 #. prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
 #.
 #: ../libpurple/protocols/irc/irc.c:960
-#, fuzzy
 msgid "Use SSL"
-msgstr "SSL"
+msgstr "Bruk SSL"
 
 #: ../libpurple/protocols/irc/msgs.c:187
 msgid "Bad mode"
@@ -4441,7 +4616,7 @@
 msgstr " <i>(registrert)</i>"
 
 #: ../libpurple/protocols/irc/msgs.c:303
-#: ../libpurple/protocols/oscar/oscar.c:3700
+#: ../libpurple/protocols/oscar/oscar.c:3696
 #: ../libpurple/protocols/silc/ops.c:1418
 #: ../libpurple/protocols/silc10/ops.c:1414
 msgid "Nick"
@@ -4454,9 +4629,8 @@
 msgstr "Pålogget på"
 
 #: ../libpurple/protocols/irc/msgs.c:334
-#, fuzzy
 msgid "Idle for"
-msgstr "Inaktiv"
+msgstr "Inaktiv for"
 
 #: ../libpurple/protocols/irc/msgs.c:337
 msgid "Online since"
@@ -4474,17 +4648,17 @@
 #: ../libpurple/protocols/irc/msgs.c:420
 #, c-format
 msgid "%s has changed the topic to: %s"
-msgstr "%s har endret kanaltema til: %s"
+msgstr "%s har endret temaet til: %s"
 
 #: ../libpurple/protocols/irc/msgs.c:422
 #, fuzzy, c-format
 msgid "%s has cleared the topic."
-msgstr "%s har endret kanaltema til: %s"
+msgstr "%s har endret tema til: %s"
 
 #: ../libpurple/protocols/irc/msgs.c:430
 #, c-format
 msgid "The topic for %s is: %s"
-msgstr "Kanaltema for %s er %s"
+msgstr "Temaet for %s er: %s"
 
 #: ../libpurple/protocols/irc/msgs.c:448
 #, c-format
@@ -4551,7 +4725,8 @@
 msgstr "Du har blitt sparket ut fra %s: %s"
 
 #. Remove user from channel
-#: ../libpurple/protocols/irc/msgs.c:800 ../libpurple/protocols/silc/ops.c:699
+#: ../libpurple/protocols/irc/msgs.c:800
+#: ../libpurple/protocols/silc/ops.c:699
 #: ../libpurple/protocols/silc10/ops.c:720
 #, c-format
 msgid "Kicked by %s (%s)"
@@ -4562,26 +4737,19 @@
 msgid "mode (%s %s) by %s"
 msgstr "mode (%s %s) av %s"
 
-#: ../libpurple/protocols/irc/msgs.c:908 ../libpurple/protocols/irc/msgs.c:909
+#: ../libpurple/protocols/irc/msgs.c:908
+#: ../libpurple/protocols/irc/msgs.c:909
 msgid "Invalid nickname"
 msgstr "Ugyldig brukernavn"
 
 #: ../libpurple/protocols/irc/msgs.c:910
 #, fuzzy
-msgid ""
-"Your selected nickname was rejected by the server.  It probably contains "
-"invalid characters."
-msgstr ""
-"Ditt valgte kontonavn ble avvist av tjeneren. Sannsynligvis inneholder det "
-"ugyldige tegn."
+msgid "Your selected nickname was rejected by the server.  It probably contains invalid characters."
+msgstr "Ditt valgte kontonavn ble avvist av tjeneren. Sannsynligvis inneholder det ugyldige tegn."
 
 #: ../libpurple/protocols/irc/msgs.c:915
-msgid ""
-"Your selected account name was rejected by the server.  It probably contains "
-"invalid characters."
-msgstr ""
-"Ditt valgte kontonavn ble avvist av tjeneren. Sannsynligvis inneholder det "
-"ugyldige tegn."
+msgid "Your selected account name was rejected by the server.  It probably contains invalid characters."
+msgstr "Ditt valgte kontonavn ble avvist av tjeneren. Sannsynligvis inneholder det ugyldige tegn."
 
 #: ../libpurple/protocols/irc/msgs.c:954
 msgid "Cannot change nick"
@@ -4632,12 +4800,8 @@
 
 #: ../libpurple/protocols/irc/parse.c:123
 #, fuzzy
-msgid ""
-"away [message]:  Set an away message, or use no message to return from being "
-"away."
-msgstr ""
-"fraværende [melding]:  Sett en melding som skal vises når du er fraværende, "
-"eller ikke sett noen for å returnere."
+msgid "away [message]:  Set an away message, or use no message to return from being away."
+msgstr "fraværende [melding]:  Sett en melding som skal vises når du er fraværende, eller ikke sett noen for å returnere."
 
 #: ../libpurple/protocols/irc/parse.c:124
 #, fuzzy
@@ -4645,62 +4809,32 @@
 msgstr "quote [...]:  Send en rå kommando til serveren."
 
 #: ../libpurple/protocols/irc/parse.c:125
-msgid ""
-"deop &lt;nick1&gt; [nick2] ...:  Remove channel operator status from "
-"someone. You must be a channel operator to do this."
-msgstr ""
-"deop &lt;nick1&gt; [nick2] ...:  Fjern kanal OP status fra noen. Du må være "
-"kanal OP for å gjøre dette."
+msgid "deop &lt;nick1&gt; [nick2] ...:  Remove channel operator status from someone. You must be a channel operator to do this."
+msgstr "deop &lt;nick1&gt; [nick2] ...:  Fjern kanal OP status fra noen. Du må være kanal OP for å gjøre dette."
 
 #: ../libpurple/protocols/irc/parse.c:126
-msgid ""
-"devoice &lt;nick1&gt; [nick2] ...:  Remove channel voice status from "
-"someone, preventing them from speaking if the channel is moderated (+m). You "
-"must be a channel operator to do this."
-msgstr ""
-"devoice &lt;nick1&gt; [nick2] ...:  Fjern kanal voice status fra noen, "
-"hindre de fra å snakke om kanalen er moderert (+m). Du må være kanal OP for "
-"å gjøre dette."
+msgid "devoice &lt;nick1&gt; [nick2] ...:  Remove channel voice status from someone, preventing them from speaking if the channel is moderated (+m). You must be a channel operator to do this."
+msgstr "devoice &lt;nick1&gt; [nick2] ...:  Fjern kanal voice status fra noen, hindre de fra å snakke om kanalen er moderert (+m). Du må være kanal OP for å gjøre dette."
 
 #: ../libpurple/protocols/irc/parse.c:127
-msgid ""
-"invite &lt;nick&gt; [room]:  Invite someone to join you in the specified "
-"channel, or the current channel."
-msgstr ""
-"invite &lt;nick&gt; [room]:  Inviter noen til å joine deg i spsifisert kanel "
-"eller den nåværende kanalen."
+msgid "invite &lt;nick&gt; [room]:  Invite someone to join you in the specified channel, or the current channel."
+msgstr "invite &lt;nick&gt; [room]:  Inviter noen til å joine deg i spsifisert kanel eller den nåværende kanalen."
 
 #: ../libpurple/protocols/irc/parse.c:128
-msgid ""
-"j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more "
-"channels, optionally providing a channel key for each if needed."
-msgstr ""
-"j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Fyll inn en eller flere "
-"kanaler, alternativt gi en nøkkel for hver om nødvendig."
+msgid "j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more channels, optionally providing a channel key for each if needed."
+msgstr "j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Fyll inn en eller flere kanaler, alternativt gi en nøkkel for hver om nødvendig."
 
 #: ../libpurple/protocols/irc/parse.c:129
-msgid ""
-"join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more "
-"channels, optionally providing a channel key for each if needed."
-msgstr ""
-"join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Fyll inn en eller "
-"flere kanaler, alternativt gi en nøkkel for hver om nødvendig."
+msgid "join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more channels, optionally providing a channel key for each if needed."
+msgstr "join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Fyll inn en eller flere kanaler, alternativt gi en nøkkel for hver om nødvendig."
 
 #: ../libpurple/protocols/irc/parse.c:130
-msgid ""
-"kick &lt;nick&gt; [message]:  Remove someone from a channel. You must be a "
-"channel operator to do this."
-msgstr ""
-"kick &lt;nick&gt; [message]:  Fjern noen fra en kanal. Du må være kanal OP "
-"for å gjøre dette."
+msgid "kick &lt;nick&gt; [message]:  Remove someone from a channel. You must be a channel operator to do this."
+msgstr "kick &lt;nick&gt; [message]:  Fjern noen fra en kanal. Du må være kanal OP for å gjøre dette."
 
 #: ../libpurple/protocols/irc/parse.c:131
-msgid ""
-"list:  Display a list of chat rooms on the network. <i>Warning, some servers "
-"may disconnect you upon doing this.</i>"
-msgstr ""
-"list:  Vis en liste over samtalerom på et nettverk.<i>Advarsel, noen servere "
-"kan disconnecte om du gjør dette.<i>"
+msgid "list:  Display a list of chat rooms on the network. <i>Warning, some servers may disconnect you upon doing this.</i>"
+msgstr "list:  Vis en liste over samtalerom på et nettverk.<i>Advarsel, noen servere kan disconnecte om du gjør dette.<i>"
 
 #: ../libpurple/protocols/irc/parse.c:132
 msgid "me &lt;action to perform&gt;:  Perform an action."
@@ -4712,26 +4846,19 @@
 msgstr "quote [...]:  Send en rå kommando til serveren."
 
 #: ../libpurple/protocols/irc/parse.c:134
-msgid ""
-"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;:  Set or unset a channel "
-"or user mode."
-msgstr ""
-"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;:  Sett er fjern en kanal "
-"eller bruker modus."
+msgid "mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;:  Set or unset a channel or user mode."
+msgstr "mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;:  Sett er fjern en kanal eller bruker modus."
 
 #: ../libpurple/protocols/irc/parse.c:135
-msgid ""
-"msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as "
-"opposed to a channel)."
-msgstr ""
-"msg &lt;nick&gt; &lt;message&gt;:  Send en privat beskjed til en bruker."
+msgid "msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as opposed to a channel)."
+msgstr "msg &lt;nick&gt; &lt;message&gt;:  Send en privat beskjed til en bruker."
 
 #: ../libpurple/protocols/irc/parse.c:136
 msgid "names [channel]:  List the users currently in a channel."
 msgstr "names [channel]:  Vis brukere i denne kanalen."
 
 #: ../libpurple/protocols/irc/parse.c:137
-#: ../libpurple/protocols/jabber/jabber.c:2261
+#: ../libpurple/protocols/jabber/jabber.c:2299
 msgid "nick &lt;new nickname&gt;:  Change your nickname."
 msgstr "nick &lt;new nickname&gt;:  Skift nick."
 
@@ -4741,20 +4868,12 @@
 msgstr "quote [...]:  Send en rå kommando til serveren."
 
 #: ../libpurple/protocols/irc/parse.c:139
-msgid ""
-"op &lt;nick1&gt; [nick2] ...:  Grant channel operator status to someone. You "
-"must be a channel operator to do this."
-msgstr ""
-"op &lt;nick1&gt; [nick2] ...:  Tillat OP status til noen. Du må være kanal "
-"OP for å gjøre dette."
+msgid "op &lt;nick1&gt; [nick2] ...:  Grant channel operator status to someone. You must be a channel operator to do this."
+msgstr "op &lt;nick1&gt; [nick2] ...:  Tillat OP status til noen. Du må være kanal OP for å gjøre dette."
 
 #: ../libpurple/protocols/irc/parse.c:140
-msgid ""
-"operwall &lt;message&gt;:  If you don't know what this is, you probably "
-"can't use it."
-msgstr ""
-"operwall &lt;message&gt;:  Om du ikke vet hva dette er, kan du sannsynligvis "
-"ikke bruke dette."
+msgid "operwall &lt;message&gt;:  If you don't know what this is, you probably can't use it."
+msgstr "operwall &lt;message&gt;:  Om du ikke vet hva dette er, kan du sannsynligvis ikke bruke dette."
 
 #: ../libpurple/protocols/irc/parse.c:141
 #, fuzzy
@@ -4762,26 +4881,16 @@
 msgstr "quote [...]:  Send en rå kommando til serveren."
 
 #: ../libpurple/protocols/irc/parse.c:142
-msgid ""
-"part [room] [message]:  Leave the current channel, or a specified channel, "
-"with an optional message."
-msgstr ""
-"part [room] [message]:  Forlat nåværende kanal eller en spesifisert kanal "
-"med en beskjed."
+msgid "part [room] [message]:  Leave the current channel, or a specified channel, with an optional message."
+msgstr "part [room] [message]:  Forlat nåværende kanal eller en spesifisert kanal med en beskjed."
 
 #: ../libpurple/protocols/irc/parse.c:143
-msgid ""
-"ping [nick]:  Asks how much lag a user (or the server if no user specified) "
-"has."
+msgid "ping [nick]:  Asks how much lag a user (or the server if no user specified) has."
 msgstr "ping [nick]:  Send ping til en bruker."
 
 #: ../libpurple/protocols/irc/parse.c:144
-msgid ""
-"query &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as "
-"opposed to a channel)."
-msgstr ""
-"query &lt;nick&gt; &lt;message&gt;:  Send en privat beskjed til en bruker "
-"(vises ikke i kanal)."
+msgid "query &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as opposed to a channel)."
+msgstr "query &lt;nick&gt; &lt;message&gt;:  Send en privat beskjed til en bruker (vises ikke i kanal)."
 
 #: ../libpurple/protocols/irc/parse.c:145
 msgid "quit [message]:  Disconnect from the server, with an optional message."
@@ -4792,12 +4901,8 @@
 msgstr "quote [...]:  Send en rå kommando til serveren."
 
 #: ../libpurple/protocols/irc/parse.c:147
-msgid ""
-"remove &lt;nick&gt; [message]:  Remove someone from a room. You must be a "
-"channel operator to do this."
-msgstr ""
-"remove &lt;nick&gt; [message]:  Fjern noen fra et rom. Du må være kanal OP "
-"for å gjøre dette."
+msgid "remove &lt;nick&gt; [message]:  Remove someone from a room. You must be a channel operator to do this."
+msgstr "remove &lt;nick&gt; [message]:  Fjern noen fra et rom. Du må være kanal OP for å gjøre dette."
 
 #: ../libpurple/protocols/irc/parse.c:148
 msgid "time: Displays the current local time at the IRC server."
@@ -4816,20 +4921,12 @@
 msgstr ""
 
 #: ../libpurple/protocols/irc/parse.c:152
-msgid ""
-"voice &lt;nick1&gt; [nick2] ...:  Grant channel voice status to someone. You "
-"must be a channel operator to do this."
-msgstr ""
-"voice &lt;nick1&gt; [nick2] ...:  Gi voice til noen. Du må være kanal OP for "
-"å gjøre dette."
+msgid "voice &lt;nick1&gt; [nick2] ...:  Grant channel voice status to someone. You must be a channel operator to do this."
+msgstr "voice &lt;nick1&gt; [nick2] ...:  Gi voice til noen. Du må være kanal OP for å gjøre dette."
 
 #: ../libpurple/protocols/irc/parse.c:153
-msgid ""
-"wallops &lt;message&gt;:  If you don't know what this is, you probably can't "
-"use it."
-msgstr ""
-"wallops &lt;message&gt;:  Om du ikke vet hva dette er, kan du sannsynligvis "
-"ikke bruke det."
+msgid "wallops &lt;message&gt;:  If you don't know what this is, you probably can't use it."
+msgstr "wallops &lt;message&gt;:  Om du ikke vet hva dette er, kan du sannsynligvis ikke bruke det."
 
 #: ../libpurple/protocols/irc/parse.c:154
 msgid "whois [server] &lt;nick&gt;:  Get information on a user."
@@ -4854,8 +4951,10 @@
 msgstr "CTCP PING-svar"
 
 #: ../libpurple/protocols/irc/parse.c:577
-#: ../libpurple/protocols/irc/parse.c:581 ../libpurple/protocols/toc/toc.c:191
-#: ../libpurple/protocols/toc/toc.c:694 ../libpurple/protocols/toc/toc.c:710
+#: ../libpurple/protocols/irc/parse.c:581
+#: ../libpurple/protocols/toc/toc.c:191
+#: ../libpurple/protocols/toc/toc.c:694
+#: ../libpurple/protocols/toc/toc.c:710
 #: ../libpurple/protocols/toc/toc.c:786
 msgid "Disconnected."
 msgstr "Frakoblet."
@@ -4873,32 +4972,24 @@
 msgid "Ad-Hoc Command Failed"
 msgstr "Kommando deaktivert"
 
-#: ../libpurple/protocols/jabber/adhoccommands.c:173
+#: ../libpurple/protocols/jabber/adhoccommands.c:176
 #, fuzzy
 msgid "execute"
 msgstr "Uventet"
 
 #: ../libpurple/protocols/jabber/auth.c:53
 msgid "Server requires TLS/SSL for login.  No TLS/SSL support found."
-msgstr ""
-"Tjeneren krever TLS/SSL for å logge inn, men støtte for dette ble ikke "
-"funnet."
+msgstr "Tjeneren krever TLS/SSL for å logge inn, men støtte for dette ble ikke funnet."
 
 #: ../libpurple/protocols/jabber/auth.c:116
 msgid "Server requires plaintext authentication over an unencrypted stream"
-msgstr ""
-"Tjeneren forlanger identitetsbekreftelse i ren tekst over en ukryptert "
-"forbindelse"
+msgstr "Tjeneren forlanger identitetsbekreftelse i ren tekst over en ukryptert forbindelse"
 
 #: ../libpurple/protocols/jabber/auth.c:319
 #: ../libpurple/protocols/jabber/auth.c:508
 #, fuzzy, c-format
-msgid ""
-"%s requires plaintext authentication over an unencrypted connection.  Allow "
-"this and continue authentication?"
-msgstr ""
-"Denne tjeneren forlanger autentifikasjon i ren tekst over en ukryptert "
-"forbindelse. Tillat dette og fortsett identitetsbekreftelse?"
+msgid "%s requires plaintext authentication over an unencrypted connection.  Allow this and continue authentication?"
+msgstr "Denne tjeneren forlanger autentifikasjon i ren tekst over en ukryptert forbindelse. Tillat dette og fortsett identitetsbekreftelse?"
 
 #: ../libpurple/protocols/jabber/auth.c:321
 #: ../libpurple/protocols/jabber/auth.c:322
@@ -4927,12 +5018,8 @@
 msgstr "Ugyldig svar fra tjener."
 
 #: ../libpurple/protocols/jabber/auth.c:600
-msgid ""
-"This server requires plaintext authentication over an unencrypted "
-"connection.  Allow this and continue authentication?"
-msgstr ""
-"Denne tjeneren forlanger autentifikasjon i ren tekst over en ukryptert "
-"forbindelse. Tillat dette og fortsett identitetsbekreftelse?"
+msgid "This server requires plaintext authentication over an unencrypted connection.  Allow this and continue authentication?"
+msgstr "Denne tjeneren forlanger autentifikasjon i ren tekst over en ukryptert forbindelse. Tillat dette og fortsett identitetsbekreftelse?"
 
 #: ../libpurple/protocols/jabber/auth.c:797
 #: ../libpurple/protocols/jabber/auth.c:820
@@ -5024,15 +5111,16 @@
 
 #: ../libpurple/protocols/jabber/buddy.c:300
 #: ../libpurple/protocols/jabber/buddy.c:1250
-#: ../libpurple/protocols/msn/msn.c:1658
-#: ../libpurple/protocols/oscar/oscar.c:3749
+#: ../libpurple/protocols/msn/msn.c:1768
+#: ../libpurple/protocols/oscar/oscar.c:3745
 msgid "Birthday"
 msgstr "Fødselsdag"
 
 #: ../libpurple/protocols/jabber/buddy.c:301
 #: ../libpurple/protocols/jabber/buddy.c:1365
 #: ../libpurple/protocols/jabber/chat.c:775
-#: ../libpurple/protocols/jabber/usermood.c:175 ../pidgin/gtkblist.c:3116
+#: ../libpurple/protocols/jabber/usermood.c:175
+#: ../pidgin/gtkblist.c:3314
 #: ../pidgin/gtkprefs.c:739
 msgid "Description"
 msgstr "Beskrivelse"
@@ -5044,24 +5132,18 @@
 msgstr "Rediger vCard for Jabber"
 
 #: ../libpurple/protocols/jabber/buddy.c:724
-msgid ""
-"All items below are optional. Enter only the information with which you feel "
-"comfortable."
-msgstr ""
-"Alle feltene nedenfor er valgfrie. Du trenger bare å skrive den "
-"informasjonen du ønsker"
+msgid "All items below are optional. Enter only the information with which you feel comfortable."
+msgstr "Alle feltene nedenfor er valgfrie. Du trenger bare å skrive den informasjonen du ønsker"
 
 #: ../libpurple/protocols/jabber/buddy.c:795
 #: ../libpurple/protocols/jabber/buddy.c:960
-#, fuzzy
 msgid "Client"
-msgstr "By"
+msgstr "Klient"
 
 #: ../libpurple/protocols/jabber/buddy.c:799
 #: ../libpurple/protocols/jabber/buddy.c:964
-#, fuzzy
 msgid "Operating System"
-msgstr "Skjul operativsystem"
+msgstr "Operativsystem"
 
 #: ../libpurple/protocols/jabber/buddy.c:815
 #: ../libpurple/protocols/jabber/buddy.c:975
@@ -5351,7 +5433,7 @@
 
 #: ../libpurple/protocols/jabber/buddy.c:921
 #: ../libpurple/protocols/jabber/buddy.c:1081
-#: ../libpurple/protocols/oscar/oscar.c:2906
+#: ../libpurple/protocols/oscar/oscar.c:2902
 msgid "Capabilities"
 msgstr "Evner"
 
@@ -5367,9 +5449,8 @@
 #: ../libpurple/protocols/jabber/jabber.c:1577
 #: ../libpurple/protocols/jabber/jabber.c:1600
 #: ../libpurple/protocols/jabber/jabber.c:1623
-#, fuzzy
 msgid "Priority"
-msgstr "Port"
+msgstr "Prioritet"
 
 #: ../libpurple/protocols/jabber/buddy.c:1237
 #: ../libpurple/protocols/silc/ops.c:994
@@ -5379,8 +5460,8 @@
 
 #: ../libpurple/protocols/jabber/buddy.c:1270
 #: ../libpurple/protocols/jabber/jabber.c:952
-#: ../libpurple/protocols/oscar/oscar.c:3788
-#: ../libpurple/protocols/oscar/oscar.c:3801
+#: ../libpurple/protocols/oscar/oscar.c:3784
+#: ../libpurple/protocols/oscar/oscar.c:3797
 #: ../libpurple/protocols/qq/buddy_info.c:56
 #: ../libpurple/protocols/silc/ops.c:1030
 #: ../libpurple/protocols/silc10/ops.c:1064
@@ -5399,118 +5480,111 @@
 msgid "Logo"
 msgstr "Logo"
 
-#: ../libpurple/protocols/jabber/buddy.c:1942
+#: ../libpurple/protocols/jabber/buddy.c:1945
 msgid "Un-hide From"
 msgstr "Fjern fraværsmarkering for"
 
-#: ../libpurple/protocols/jabber/buddy.c:1946
+#: ../libpurple/protocols/jabber/buddy.c:1949
 msgid "Temporarily Hide From"
 msgstr "Midlertidig borte for"
 
 #. && NOT ME
-#: ../libpurple/protocols/jabber/buddy.c:1954
+#: ../libpurple/protocols/jabber/buddy.c:1957
 msgid "Cancel Presence Notification"
 msgstr "Avbryt varsling av tilstedeværelse"
 
-#: ../libpurple/protocols/jabber/buddy.c:1961
+#: ../libpurple/protocols/jabber/buddy.c:1964
 msgid "(Re-)Request authorization"
 msgstr "Spør på nytt om godkjenning"
 
 #. if(NOT ME)
 #. shouldn't this just happen automatically when the buddy is
 #. removed?
-#: ../libpurple/protocols/jabber/buddy.c:1970
+#: ../libpurple/protocols/jabber/buddy.c:1973
 msgid "Unsubscribe"
 msgstr "Fjern abonnement"
 
-#: ../libpurple/protocols/jabber/buddy.c:1985
-#, fuzzy
+#: ../libpurple/protocols/jabber/buddy.c:1988
 msgid "Log In"
-msgstr "Innlogging"
-
-#: ../libpurple/protocols/jabber/buddy.c:1989
-#, fuzzy
+msgstr "Logg inn"
+
+#: ../libpurple/protocols/jabber/buddy.c:1992
 msgid "Log Out"
-msgstr "Logget ut"
-
-#: ../libpurple/protocols/jabber/buddy.c:2035
+msgstr "Logg ut"
+
+#: ../libpurple/protocols/jabber/buddy.c:2038
 #: ../libpurple/protocols/jabber/jabber.c:1553
 msgid "Chatty"
 msgstr "Pratsom"
 
-#: ../libpurple/protocols/jabber/buddy.c:2039
+#: ../libpurple/protocols/jabber/buddy.c:2042
 msgid "Extended Away"
 msgstr "Utvidet borte"
 
-#: ../libpurple/protocols/jabber/buddy.c:2041
+#: ../libpurple/protocols/jabber/buddy.c:2044
 #: ../libpurple/protocols/jabber/jabber.c:1622
 #: ../libpurple/protocols/oscar/oscar.c:727
-#: ../libpurple/protocols/oscar/oscar.c:5808
+#: ../libpurple/protocols/oscar/oscar.c:5806
 #: ../libpurple/protocols/sametime/sametime.c:3297
-#, c-format
 msgid "Do Not Disturb"
 msgstr "Ikke forstyrr"
 
-#: ../libpurple/protocols/jabber/buddy.c:2208
+#: ../libpurple/protocols/jabber/buddy.c:2211
 msgid "JID"
 msgstr ""
 
-#: ../libpurple/protocols/jabber/buddy.c:2212
-#: ../libpurple/protocols/jabber/buddy.c:2391
-#: ../libpurple/protocols/oscar/oscar.c:3711
+#: ../libpurple/protocols/jabber/buddy.c:2215
+#: ../libpurple/protocols/jabber/buddy.c:2394
+#: ../libpurple/protocols/oscar/oscar.c:3707
 msgid "Last Name"
 msgstr "Etternavn"
 
-#: ../libpurple/protocols/jabber/buddy.c:2244
+#: ../libpurple/protocols/jabber/buddy.c:2247
 msgid "The following are the results of your search"
 msgstr "Følgende resultat fra ditt søk"
 
 #. current comment from Jabber User Directory users.jabber.org
-#: ../libpurple/protocols/jabber/buddy.c:2319
-msgid ""
-"Find a contact by entering the search criteria in the given fields. Note: "
-"Each field supports wild card searches (%)"
-msgstr ""
-
-#: ../libpurple/protocols/jabber/buddy.c:2339
+#: ../libpurple/protocols/jabber/buddy.c:2322
+msgid "Find a contact by entering the search criteria in the given fields. Note: Each field supports wild card searches (%)"
+msgstr ""
+
+#: ../libpurple/protocols/jabber/buddy.c:2342
 #, fuzzy
 msgid "Directory Query Failed"
 msgstr "Direktekopling feilet"
 
-#: ../libpurple/protocols/jabber/buddy.c:2340
+#: ../libpurple/protocols/jabber/buddy.c:2343
 #, fuzzy
 msgid "Could not query the directory server."
 msgstr "Kunne ikke starte filoverføring"
 
 #. Try to translate the message (see static message
 #. list in jabber_user_dir_comments[])
-#: ../libpurple/protocols/jabber/buddy.c:2374
+#: ../libpurple/protocols/jabber/buddy.c:2377
 #, fuzzy, c-format
 msgid "Server Instructions: %s"
 msgstr "Tjenerinformasjon"
 
-#: ../libpurple/protocols/jabber/buddy.c:2381
+#: ../libpurple/protocols/jabber/buddy.c:2384
 #, fuzzy
 msgid "Fill in one or more fields to search for any matching XMPP users."
-msgstr ""
-"Fyll inn ett eller flere felt for å søke etter matchende Jabber brukere."
-
-#: ../libpurple/protocols/jabber/buddy.c:2401
-#: ../libpurple/protocols/novell/novell.c:1488
-#: ../libpurple/protocols/oscar/oscar.c:3714
-#: ../libpurple/protocols/oscar/oscar.c:3723
+msgstr "Fyll inn ett eller flere felt for å søke etter matchende Jabber brukere."
+
+#: ../libpurple/protocols/jabber/buddy.c:2404
+#: ../libpurple/protocols/novell/novell.c:1490
+#: ../libpurple/protocols/oscar/oscar.c:3710
+#: ../libpurple/protocols/oscar/oscar.c:3719
 msgid "E-Mail Address"
 msgstr "E-postadresse"
 
 #
-#: ../libpurple/protocols/jabber/buddy.c:2410
-#: ../libpurple/protocols/jabber/buddy.c:2411
-#, fuzzy
+#: ../libpurple/protocols/jabber/buddy.c:2413
+#: ../libpurple/protocols/jabber/buddy.c:2414
 msgid "Search for XMPP users"
-msgstr "_Søk etter:"
+msgstr "Søk etter XMPP-brukere"
 
 #. "Search"
-#: ../libpurple/protocols/jabber/buddy.c:2412
+#: ../libpurple/protocols/jabber/buddy.c:2415
 #: ../libpurple/protocols/qq/group.c:123
 #: ../libpurple/protocols/qq/group_im.c:147
 #: ../libpurple/protocols/qq/sys_msg.c:174
@@ -5522,29 +5596,29 @@
 msgid "Search"
 msgstr "Søk"
 
-#: ../libpurple/protocols/jabber/buddy.c:2427
+#: ../libpurple/protocols/jabber/buddy.c:2430
 #, fuzzy
 msgid "Invalid Directory"
 msgstr "Ugyldig feil"
 
-#: ../libpurple/protocols/jabber/buddy.c:2444
+#: ../libpurple/protocols/jabber/buddy.c:2447
 #, fuzzy
 msgid "Enter a User Directory"
 msgstr "Kan ikke sende en katalog."
 
-#: ../libpurple/protocols/jabber/buddy.c:2445
+#: ../libpurple/protocols/jabber/buddy.c:2448
 #, fuzzy
 msgid "Select a user directory to search"
 msgstr "Velg en konferanseserver å spørre"
 
 #
-#: ../libpurple/protocols/jabber/buddy.c:2448
+#: ../libpurple/protocols/jabber/buddy.c:2451
 #, fuzzy
 msgid "Search Directory"
 msgstr "_Søk etter:"
 
 #: ../libpurple/protocols/jabber/chat.c:41
-#: ../libpurple/protocols/oscar/oscar.c:5294
+#: ../libpurple/protocols/oscar/oscar.c:5290
 #: ../libpurple/protocols/yahoo/yahoochat.c:1048
 msgid "_Room:"
 msgstr "_Rom:"
@@ -5660,9 +5734,9 @@
 msgstr "Lesefeil"
 
 #: ../libpurple/protocols/jabber/jabber.c:482
-#: ../libpurple/protocols/oscar/flap_connection.c:394
-#: ../libpurple/protocols/yahoo/yahoo.c:2558
-#: ../libpurple/protocols/yahoo/yahoo.c:2590
+#: ../libpurple/protocols/oscar/flap_connection.c:396
+#: ../libpurple/protocols/yahoo/yahoo.c:2557
+#: ../libpurple/protocols/yahoo/yahoo.c:2589
 #, c-format
 msgid ""
 "Could not establish a connection with the server:\n"
@@ -5726,13 +5800,12 @@
 msgstr "Du er allerede registrert"
 
 #: ../libpurple/protocols/jabber/jabber.c:962
-#: ../libpurple/protocols/oscar/oscar.c:3790
-#: ../libpurple/protocols/oscar/oscar.c:3803
+#: ../libpurple/protocols/oscar/oscar.c:3786
+#: ../libpurple/protocols/oscar/oscar.c:3799
 msgid "State"
 msgstr "Fylke/stat"
 
 #: ../libpurple/protocols/jabber/jabber.c:967
-#, fuzzy
 msgid "Postal code"
 msgstr "Postnummer"
 
@@ -5757,8 +5830,7 @@
 
 #: ../libpurple/protocols/jabber/jabber.c:994
 #, fuzzy
-msgid ""
-"Please fill out the information below to change your account registration."
+msgid "Please fill out the information below to change your account registration."
 msgstr "Fyll ut feltene under for å registrere den nye kontoen din."
 
 #: ../libpurple/protocols/jabber/jabber.c:997
@@ -5813,7 +5885,7 @@
 msgstr "Nullstiller datastrøm"
 
 #: ../libpurple/protocols/jabber/jabber.c:1293
-#: ../libpurple/protocols/msn/session.c:351
+#: ../libpurple/protocols/msn/session.c:390
 msgid "Authenticating"
 msgstr "Autentiserer"
 
@@ -5826,7 +5898,7 @@
 #: ../libpurple/protocols/jabber/jabber.c:1909
 #: ../libpurple/protocols/jabber/jabber.c:1945
 #: ../libpurple/protocols/oscar/oscar.c:826
-#: ../libpurple/protocols/oscar/oscar.c:5602
+#: ../libpurple/protocols/oscar/oscar.c:5600
 msgid "Not Authorized"
 msgstr "Ikke godkjent"
 
@@ -5991,16 +6063,15 @@
 
 #: ../libpurple/protocols/jabber/jabber.c:1734
 #: ../libpurple/protocols/jabber/jabber.c:1735
-#, fuzzy
 msgid "Change XMPP Password"
-msgstr "Bytt passord"
+msgstr "Endre XMPP-passord"
 
 #: ../libpurple/protocols/jabber/jabber.c:1735
 msgid "Please enter your new password"
 msgstr "Skriv inn ditt nye passord"
 
 #: ../libpurple/protocols/jabber/jabber.c:1749
-#: ../libpurple/protocols/oscar/oscar.c:6388
+#: ../libpurple/protocols/oscar/oscar.c:6386
 #: ../libpurple/protocols/silc/silc.c:1093
 #: ../libpurple/protocols/silc10/silc.c:1004
 msgid "Set User Info..."
@@ -6008,7 +6079,7 @@
 
 #. if (js->protocol_options & CHANGE_PASSWORD) {
 #: ../libpurple/protocols/jabber/jabber.c:1754
-#: ../libpurple/protocols/oscar/oscar.c:6399
+#: ../libpurple/protocols/oscar/oscar.c:6397
 #: ../libpurple/protocols/silc/silc.c:1089
 #: ../libpurple/protocols/silc10/silc.c:1000
 msgid "Change Password..."
@@ -6017,9 +6088,8 @@
 #
 #. }
 #: ../libpurple/protocols/jabber/jabber.c:1759
-#, fuzzy
 msgid "Search for Users..."
-msgstr "_Søk etter:"
+msgstr "Søk etter brukere..."
 
 #: ../libpurple/protocols/jabber/jabber.c:1845
 msgid "Bad Request"
@@ -6273,69 +6343,80 @@
 msgid "Unable to buzz, because the user %s does not support it."
 msgstr "Kunne ikke spille av lyd fordi lydfilen (%s) ikke eksisterer."
 
-#: ../libpurple/protocols/jabber/jabber.c:2253
+#: ../libpurple/protocols/jabber/jabber.c:2250
+#: ../libpurple/protocols/yahoo/yahoo.c:4118
+#, fuzzy
+msgid "Buzz"
+msgstr "Buzz!!"
+
+#: ../libpurple/protocols/jabber/jabber.c:2251
+#: ../libpurple/protocols/jabber/message.c:307
+#: ../libpurple/protocols/yahoo/yahoo.c:4119
+#, fuzzy, c-format
+msgid "%s has buzzed you!"
+msgstr "Brukeren har blokkert deg"
+
+#: ../libpurple/protocols/jabber/jabber.c:2252
+#: ../libpurple/protocols/yahoo/yahoo.c:4120
+#, c-format
+msgid "Buzzing %s..."
+msgstr ""
+
+#: ../libpurple/protocols/jabber/jabber.c:2291
 msgid "config:  Configure a chat room."
 msgstr "config:  Endre innstillingene for et samtalerom"
 
-#: ../libpurple/protocols/jabber/jabber.c:2257
+#: ../libpurple/protocols/jabber/jabber.c:2295
 msgid "configure:  Configure a chat room."
 msgstr "configure:  Endre innstillingene for et samtalerom"
 
-#: ../libpurple/protocols/jabber/jabber.c:2266
+#: ../libpurple/protocols/jabber/jabber.c:2304
 msgid "part [room]:  Leave the room."
 msgstr "part [rom]:  Forlat rommet"
 
-#: ../libpurple/protocols/jabber/jabber.c:2271
+#: ../libpurple/protocols/jabber/jabber.c:2309
 msgid "register:  Register with a chat room."
 msgstr "register:  Registrer med et gruppesamtalerom."
 
-#: ../libpurple/protocols/jabber/jabber.c:2277
+#: ../libpurple/protocols/jabber/jabber.c:2315
 msgid "topic [new topic]:  View or change the topic."
 msgstr "topic [nytt emne]:  Vis eller endre emnet"
 
-#: ../libpurple/protocols/jabber/jabber.c:2283
+#: ../libpurple/protocols/jabber/jabber.c:2321
 msgid "ban &lt;user&gt; [room]:  Ban a user from the room."
 msgstr "ban &lt;bruker&gt; [rom]:  Forby en bruker fra rommet"
 
-#: ../libpurple/protocols/jabber/jabber.c:2289
-msgid ""
-"affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
-"affiliation with the room."
-msgstr ""
-
-#: ../libpurple/protocols/jabber/jabber.c:2295
-msgid ""
-"role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's "
-"role in the room."
-msgstr ""
-
-#: ../libpurple/protocols/jabber/jabber.c:2301
+#: ../libpurple/protocols/jabber/jabber.c:2327
+msgid "affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's affiliation with the room."
+msgstr ""
+
+#: ../libpurple/protocols/jabber/jabber.c:2333
+msgid "role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's role in the room."
+msgstr ""
+
+#: ../libpurple/protocols/jabber/jabber.c:2339
 #, fuzzy
 msgid "invite &lt;user&gt; [message]:  Invite a user to the room."
 msgstr "invite &lt;bruker&gt; [rom]:  Inviter en bruker til rommet"
 
-#: ../libpurple/protocols/jabber/jabber.c:2307
+#: ../libpurple/protocols/jabber/jabber.c:2345
 msgid "join: &lt;room&gt; [server]:  Join a chat on this server."
-msgstr ""
-"join: &lt;rom&gt; [vert]:  Bli med i en gruppesamtale på denne serveren"
-
-#: ../libpurple/protocols/jabber/jabber.c:2313
+msgstr "join: &lt;rom&gt; [vert]:  Bli med i en gruppesamtale på denne serveren"
+
+#: ../libpurple/protocols/jabber/jabber.c:2351
 msgid "kick &lt;user&gt; [room]:  Kick a user from the room."
 msgstr "kick &lt;bruker&gt; [rom]:  Spark en bruker ut av rommet"
 
-#: ../libpurple/protocols/jabber/jabber.c:2318
-msgid ""
-"msg &lt;user&gt; &lt;message&gt;:  Send a private message to another user."
-msgstr ""
-"msg &lt;bruker&gt; &lt;melding&gt;:  Send en privatmelding til en annen "
-"bruker"
-
-#: ../libpurple/protocols/jabber/jabber.c:2324
+#: ../libpurple/protocols/jabber/jabber.c:2356
+msgid "msg &lt;user&gt; &lt;message&gt;:  Send a private message to another user."
+msgstr "msg &lt;bruker&gt; &lt;melding&gt;:  Send en privatmelding til en annen bruker"
+
+#: ../libpurple/protocols/jabber/jabber.c:2362
 msgid "ping &lt;jid&gt;:\tPing a user/component/server."
 msgstr ""
 
-#: ../libpurple/protocols/jabber/jabber.c:2329
-#: ../libpurple/protocols/yahoo/yahoo.c:4145
+#: ../libpurple/protocols/jabber/jabber.c:2367
+#: ../libpurple/protocols/yahoo/yahoo.c:4144
 #, fuzzy
 msgid "buzz: Buzz a user to get their attention"
 msgstr "buzz: Buzz en kontakt for å få deres oppmerksomhet"
@@ -6358,15 +6439,14 @@
 
 #
 #. Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im
-#: ../libpurple/protocols/jabber/libxmpp.c:202 ../pidgin/gtkaccount.c:506
-#, fuzzy
+#: ../libpurple/protocols/jabber/libxmpp.c:202
+#: ../pidgin/gtkaccount.c:506
 msgid "Domain"
-msgstr "Rumensk"
+msgstr "Domene"
 
 #: ../libpurple/protocols/jabber/libxmpp.c:210
-#, fuzzy
 msgid "Require SSL/TLS"
-msgstr "Krev TLS"
+msgstr "Krever SSL/TLS"
 
 #: ../libpurple/protocols/jabber/libxmpp.c:214
 #, fuzzy
@@ -6378,8 +6458,8 @@
 msgstr "Tillat identitetsbekreftelse i ren tekst over ukrypterte forbindelser"
 
 #: ../libpurple/protocols/jabber/libxmpp.c:224
-#: ../libpurple/protocols/myspace/myspace.c:3277
-#: ../libpurple/protocols/simple/simple.c:1902
+#: ../libpurple/protocols/myspace/myspace.c:3275
+#: ../libpurple/protocols/simple/simple.c:1904
 #, fuzzy
 msgid "Connect port"
 msgstr "Koble til"
@@ -6388,9 +6468,10 @@
 #. * able to set the first port to try (like LastConnectedPort in Windows client).
 #. Account options
 #: ../libpurple/protocols/jabber/libxmpp.c:228
-#: ../libpurple/protocols/myspace/myspace.c:3274
+#: ../libpurple/protocols/myspace/myspace.c:3272
 #: ../libpurple/protocols/silc/silc.c:1914
-#: ../libpurple/protocols/silc10/silc.c:1857 ../pidgin/gtkaccount.c:837
+#: ../libpurple/protocols/silc10/silc.c:1857
+#: ../pidgin/gtkaccount.c:837
 msgid "Connect server"
 msgstr "Koble til tjener"
 
@@ -6424,12 +6505,6 @@
 msgid "XMPP Message Error"
 msgstr "Jabber beskjedfeil"
 
-#: ../libpurple/protocols/jabber/message.c:307
-#: ../libpurple/protocols/yahoo/yahoo.c:4120
-#, fuzzy, c-format
-msgid "%s has buzzed you!"
-msgstr "Brukeren har blokkert deg"
-
 #: ../libpurple/protocols/jabber/message.c:407
 #, c-format
 msgid " (Code %s)"
@@ -6439,39 +6514,34 @@
 msgid "XML Parse error"
 msgstr "XML-parsefeil"
 
-#: ../libpurple/protocols/jabber/presence.c:427
+#: ../libpurple/protocols/jabber/presence.c:422
 msgid "Unknown Error in presence"
 msgstr "Ukjent feil i tilstedeværelse"
 
-#: ../libpurple/protocols/jabber/presence.c:508
-#: ../libpurple/protocols/jabber/presence.c:509
+#: ../libpurple/protocols/jabber/presence.c:503
+#: ../libpurple/protocols/jabber/presence.c:504
 msgid "Create New Room"
 msgstr "Skap nytt samtalerom"
 
-#: ../libpurple/protocols/jabber/presence.c:510
-msgid ""
-"You are creating a new room.  Would you like to configure it, or accept the "
-"default settings?"
-msgstr ""
-"Du er i ferd med å lage et nytt rom. Ønsker du å endre innstillingene, eller "
-"bruke standardinnstillingene?"
-
-#: ../libpurple/protocols/jabber/presence.c:516
-#, fuzzy
+#: ../libpurple/protocols/jabber/presence.c:505
+msgid "You are creating a new room.  Would you like to configure it, or accept the default settings?"
+msgstr "Du er i ferd med å lage et nytt rom. Ønsker du å endre innstillingene, eller bruke standardinnstillingene?"
+
+#: ../libpurple/protocols/jabber/presence.c:511
 msgid "_Configure Room"
-msgstr "Konfigurer rom"
-
-#: ../libpurple/protocols/jabber/presence.c:517
+msgstr "_Konfigurer rom"
+
+#: ../libpurple/protocols/jabber/presence.c:512
 #, fuzzy
 msgid "_Accept Defaults"
 msgstr "Aksepter standardinstillinger"
 
-#: ../libpurple/protocols/jabber/presence.c:559
+#: ../libpurple/protocols/jabber/presence.c:554
 #, c-format
 msgid "Error in chat %s"
 msgstr "Feil i gruppesamtale %s"
 
-#: ../libpurple/protocols/jabber/presence.c:563
+#: ../libpurple/protocols/jabber/presence.c:558
 #, c-format
 msgid "Error joining chat %s"
 msgstr "Klarte ikke bli med i gruppesamtale %s"
@@ -6524,9 +6594,8 @@
 
 #: ../libpurple/protocols/jabber/usermood.c:183
 #: ../libpurple/protocols/jabber/usernick.c:78
-#, fuzzy
 msgid "Set"
-msgstr "_Sett"
+msgstr "Sett"
 
 #: ../libpurple/protocols/jabber/usermood.c:191
 #, fuzzy
@@ -6544,12 +6613,10 @@
 msgstr "Vennligst skriv inn nytt navn for gruppen."
 
 #: ../libpurple/protocols/jabber/usernick.c:77
-msgid ""
-"This information is visible to all contacts on your contact list, so choose "
-"something appropriate."
-msgstr ""
-
-#: ../libpurple/protocols/jabber/usernick.c:99
+msgid "This information is visible to all contacts on your contact list, so choose something appropriate."
+msgstr ""
+
+#: ../libpurple/protocols/jabber/usernick.c:100
 #, fuzzy
 msgid "Set Nickname..."
 msgstr "Kallenavn"
@@ -6564,265 +6631,229 @@
 msgid "Select an action"
 msgstr "Velg fil"
 
-#: ../libpurple/protocols/msn/dialog.c:110
+#: ../libpurple/protocols/msn/contact.c:207
+#, fuzzy
+msgid "Unable to connect to contact server"
+msgstr "Kan ikke koble til tjener."
+
+#: ../libpurple/protocols/msn/contact.c:954
+#, fuzzy
+msgid "Unable to retrieve MSN Address Book"
+msgstr "Legg til i adresseboka"
+
+#: ../libpurple/protocols/msn/dialog.c:118
 #, c-format
 msgid "Buddy list synchronization issue in %s (%s)"
 msgstr "Synkronisasjonsproblem med vennelista i %s (%s)"
 
-#: ../libpurple/protocols/msn/dialog.c:116
-#, c-format
-msgid ""
-"%s on the local list is inside the group \"%s\" but not on the server list. "
-"Do you want this buddy to be added?"
-msgstr ""
-"%s er på den lokale lista innenfor gruppa \"%s\", men ikke på tjenerlista. "
-"Ønsker du at denne kontakten skal bli lagt til?"
-
 #: ../libpurple/protocols/msn/dialog.c:124
 #, c-format
-msgid ""
-"%s is on the local list but not on the server list. Do you want this buddy "
-"to be added?"
-msgstr ""
-"%s er på den lokale lista, men ikke på tjenerlista. Ønsker du at denne "
-"kontakten skal bli lagt til?"
+msgid "%s on the local list is inside the group \"%s\" but not on the server list. Do you want this buddy to be added?"
+msgstr "%s er på den lokale lista innenfor gruppa \"%s\", men ikke på tjenerlista. Ønsker du at denne kontakten skal bli lagt til?"
+
+#: ../libpurple/protocols/msn/dialog.c:132
+#, c-format
+msgid "%s is on the local list but not on the server list. Do you want this buddy to be added?"
+msgstr "%s er på den lokale lista, men ikke på tjenerlista. Ønsker du at denne kontakten skal bli lagt til?"
 
 #: ../libpurple/protocols/msn/error.c:36
-#, c-format
 msgid "Unable to parse message"
 msgstr "Kunne ikke tolke beskjed."
 
 #: ../libpurple/protocols/msn/error.c:41
-#, fuzzy, c-format
+#, fuzzy
 msgid "Syntax Error (probably a client bug)"
 msgstr "Syntaksfeil (sannsynligvis en Gaim-bug)"
 
 #: ../libpurple/protocols/msn/error.c:46
-#, c-format
 msgid "Invalid e-mail address"
 msgstr "Ugyldig epostadresse"
 
 #: ../libpurple/protocols/msn/error.c:49
-#, c-format
 msgid "User does not exist"
 msgstr "Brukeren eksisterer ikke"
 
 #: ../libpurple/protocols/msn/error.c:53
-#, fuzzy, c-format
+#, fuzzy
 msgid "Fully qualified domain name missing"
 msgstr "Fullstending domenenavn mangler"
 
 #: ../libpurple/protocols/msn/error.c:56
-#, fuzzy, c-format
 msgid "Already logged in"
 msgstr "Allerede logget inn"
 
 #: ../libpurple/protocols/msn/error.c:59
-#, fuzzy, c-format
+#, fuzzy
 msgid "Invalid screen name"
 msgstr "Ugyldig brukernavn"
 
 #: ../libpurple/protocols/msn/error.c:62
-#, fuzzy, c-format
+#, fuzzy
 msgid "Invalid friendly name"
 msgstr "Ugyldig kallenavn"
 
 #: ../libpurple/protocols/msn/error.c:65
-#, fuzzy, c-format
+#, fuzzy
 msgid "List full"
 msgstr "Listen er full"
 
 #: ../libpurple/protocols/msn/error.c:68
-#, c-format
 msgid "Already there"
 msgstr "Du er allerede der"
 
 #: ../libpurple/protocols/msn/error.c:72
-#, c-format
 msgid "Not on list"
 msgstr "Ikke på listen"
 
 #: ../libpurple/protocols/msn/error.c:75
 #: ../libpurple/protocols/zephyr/zephyr.c:756
-#, c-format
 msgid "User is offline"
 msgstr "Brukeren er avlogget"
 
 #: ../libpurple/protocols/msn/error.c:78
-#, c-format
 msgid "Already in the mode"
 msgstr "Du er allerede i modusen"
 
 #: ../libpurple/protocols/msn/error.c:82
-#, c-format
 msgid "Already in opposite list"
 msgstr "Du er allerede i den andre listen"
 
 #: ../libpurple/protocols/msn/error.c:86
-#, c-format
 msgid "Too many groups"
 msgstr "For mange grupper"
 
 #: ../libpurple/protocols/msn/error.c:89
-#, c-format
 msgid "Invalid group"
 msgstr "Ugyldig gruppe"
 
 #: ../libpurple/protocols/msn/error.c:92
-#, c-format
 msgid "User not in group"
 msgstr "Brukeren er ikke i gruppen"
 
 #: ../libpurple/protocols/msn/error.c:95
-#, c-format
 msgid "Group name too long"
 msgstr "Gruppenavnet er for langt"
 
 #: ../libpurple/protocols/msn/error.c:98
-#, c-format
 msgid "Cannot remove group zero"
 msgstr "Kan ikke fjerne gruppe null"
 
 #: ../libpurple/protocols/msn/error.c:103
-#, fuzzy, c-format
+#, fuzzy
 msgid "Tried to add a user to a group that doesn't exist"
 msgstr "Prøvde å legge en kontakt til i en ikke-eksisterende gruppe"
 
 #: ../libpurple/protocols/msn/error.c:107
-#, c-format
 msgid "Switchboard failed"
 msgstr "Feil med switchboard-tjenesten"
 
 #: ../libpurple/protocols/msn/error.c:111
-#, fuzzy, c-format
+#, fuzzy
 msgid "Notify transfer failed"
 msgstr "Overføring av varsling feilet"
 
 #: ../libpurple/protocols/msn/error.c:116
-#, c-format
 msgid "Required fields missing"
 msgstr "Du har ikke fylt inn alle nødvendige felt"
 
 #: ../libpurple/protocols/msn/error.c:120
-#, c-format
 msgid "Too many hits to a FND"
 msgstr "For mange treff på en FND"
 
 #: ../libpurple/protocols/msn/error.c:124
 #: ../libpurple/protocols/oscar/oscar.c:120
-#, c-format
 msgid "Not logged in"
 msgstr "Ikke pålogget"
 
 #: ../libpurple/protocols/msn/error.c:128
-#, fuzzy, c-format
+#, fuzzy
 msgid "Service temporarily unavailable"
 msgstr "Tjenesten midlertidig uttilgjengelig"
 
 #: ../libpurple/protocols/msn/error.c:131
-#, c-format
 msgid "Database server error"
 msgstr "Feil på databasetjeneren"
 
 #: ../libpurple/protocols/msn/error.c:135
-#, c-format
 msgid "Command disabled"
 msgstr "Kommando deaktivert"
 
 #: ../libpurple/protocols/msn/error.c:139
-#, c-format
 msgid "File operation error"
 msgstr "Filoperasjonsfeil"
 
 #: ../libpurple/protocols/msn/error.c:143
-#, c-format
 msgid "Memory allocation error"
 msgstr "Feil ved minneallokering"
 
 #: ../libpurple/protocols/msn/error.c:147
-#, c-format
 msgid "Wrong CHL value sent to server"
 msgstr "Feil CHL-verdi sendt til tjener"
 
 #: ../libpurple/protocols/msn/error.c:152
-#, c-format
 msgid "Server busy"
 msgstr "Tjeneren er opptatt"
 
 #: ../libpurple/protocols/msn/error.c:155
 #: ../libpurple/protocols/msn/error.c:170
 #: ../libpurple/protocols/msn/error.c:230
-#, c-format
 msgid "Server unavailable"
 msgstr "Tjeneren er ikke tilgjengelig"
 
 #: ../libpurple/protocols/msn/error.c:158
-#, fuzzy, c-format
+#, fuzzy
 msgid "Peer notification server down"
 msgstr "Varslingstjeneren er ikke tilgjengelig"
 
 #: ../libpurple/protocols/msn/error.c:162
-#, c-format
 msgid "Database connect error"
 msgstr "Kunne ikke koble til databasen"
 
 #: ../libpurple/protocols/msn/error.c:167
-#, c-format
 msgid "Server is going down (abandon ship)"
 msgstr "Tjeneren er på vei nei (redde seg den som kan)"
 
 #: ../libpurple/protocols/msn/error.c:174
-#, c-format
 msgid "Error creating connection"
 msgstr "Feil: kunne ikke koble til"
 
 #: ../libpurple/protocols/msn/error.c:179
-#, c-format
 msgid "CVR parameters are either unknown or not allowed"
 msgstr "CVR-parametre er enten ukjent eller ikke tillatt"
 
 #: ../libpurple/protocols/msn/error.c:183
-#, c-format
 msgid "Unable to write"
 msgstr "Kunne ikke skrive"
 
 #: ../libpurple/protocols/msn/error.c:186
-#, c-format
 msgid "Session overload"
 msgstr "Sesjonsoverlast"
 
 #: ../libpurple/protocols/msn/error.c:190
-#, c-format
 msgid "User is too active"
 msgstr "Brukeren er for aktiv"
 
 #: ../libpurple/protocols/msn/error.c:193
-#, c-format
 msgid "Too many sessions"
 msgstr "For mange sesjoner"
 
 #: ../libpurple/protocols/msn/error.c:196
-#, c-format
 msgid "Passport not verified"
 msgstr "Passport-konto er ikke blitt verifisert"
 
 #: ../libpurple/protocols/msn/error.c:199
-#, c-format
 msgid "Bad friend file"
 msgstr "Ugyldig 'friend'-fil"
 
 #: ../libpurple/protocols/msn/error.c:203
-#, c-format
 msgid "Not expected"
 msgstr "Uventet"
 
 #: ../libpurple/protocols/msn/error.c:209
-#, c-format
 msgid "Friendly name changes too rapidly"
 msgstr "Visningsnavnet endres for raskt"
 
 #: ../libpurple/protocols/msn/error.c:218
-#, c-format
 msgid "Server too busy"
 msgstr "Tjeneren er for opptatt"
 
@@ -6830,33 +6861,28 @@
 #: ../libpurple/protocols/oscar/oscar.c:1380
 #: ../libpurple/protocols/silc/silc.c:233
 #: ../libpurple/protocols/silc10/ops.c:1709
-#: ../libpurple/protocols/toc/toc.c:728 ../libpurple/proxy.c:1380
-#, c-format
+#: ../libpurple/protocols/toc/toc.c:728
+#: ../libpurple/proxy.c:1380
 msgid "Authentication failed"
 msgstr "Autentisering feilet"
 
 #: ../libpurple/protocols/msn/error.c:225
-#, c-format
 msgid "Not allowed when offline"
 msgstr "Ikke tillatt når avlogget"
 
 #: ../libpurple/protocols/msn/error.c:233
-#, c-format
 msgid "Not accepting new users"
 msgstr "Nye brukere vil ikke bli godtatt"
 
 #: ../libpurple/protocols/msn/error.c:237
-#, c-format
 msgid "Kids Passport without parental consent"
 msgstr "Passport for barn, men har ikke foreldregodkjenning"
 
 #: ../libpurple/protocols/msn/error.c:241
-#, c-format
 msgid "Passport account not yet verified"
 msgstr "Passport-konto er ikke blitt verifisert enda"
 
 #: ../libpurple/protocols/msn/error.c:244
-#, c-format
 msgid "Bad ticket"
 msgstr "Bad ticket"
 
@@ -6888,401 +6914,395 @@
 msgid "Your new MSN friendly name is too long."
 msgstr "Det nye MSN-kallenavnet er for langt."
 
-#: ../libpurple/protocols/msn/msn.c:282
+#: ../libpurple/protocols/msn/msn.c:285
 msgid "Set your friendly name."
 msgstr "Sett kallenavn."
 
-#: ../libpurple/protocols/msn/msn.c:283
+#: ../libpurple/protocols/msn/msn.c:286
 msgid "This is the name that other MSN buddies will see you as."
 msgstr "Dette er navnet som andre MSN-kompiser vil se deg som."
 
-#: ../libpurple/protocols/msn/msn.c:301
+#: ../libpurple/protocols/msn/msn.c:304
 msgid "Set your home phone number."
 msgstr "Sett telefonnummer (hjemme)."
 
-#: ../libpurple/protocols/msn/msn.c:318
+#: ../libpurple/protocols/msn/msn.c:321
 msgid "Set your work phone number."
 msgstr "Sett telefonnummer (arbeid)."
 
-#: ../libpurple/protocols/msn/msn.c:335
+#: ../libpurple/protocols/msn/msn.c:338
 msgid "Set your mobile phone number."
 msgstr "Sett mobiltelefonnummer"
 
-#: ../libpurple/protocols/msn/msn.c:350
+#: ../libpurple/protocols/msn/msn.c:353
 msgid "Allow MSN Mobile pages?"
 msgstr "Tillat tekstmeldinger via MSN"
 
-#: ../libpurple/protocols/msn/msn.c:351
-msgid ""
-"Do you want to allow or disallow people on your buddy list to send you MSN "
-"Mobile pages to your cell phone or other mobile device?"
-msgstr ""
-"Ønsker du å tillate eller forby kontakter å sende deg tekstmeldinger via MSN?"
-
-#: ../libpurple/protocols/msn/msn.c:357
+#: ../libpurple/protocols/msn/msn.c:354
+msgid "Do you want to allow or disallow people on your buddy list to send you MSN Mobile pages to your cell phone or other mobile device?"
+msgstr "Ønsker du å tillate eller forby kontakter å sende deg tekstmeldinger via MSN?"
+
+#: ../libpurple/protocols/msn/msn.c:360
 msgid "Allow"
 msgstr "Tillat"
 
-#: ../libpurple/protocols/msn/msn.c:358
+#: ../libpurple/protocols/msn/msn.c:361
 msgid "Disallow"
 msgstr "Forby"
 
-#: ../libpurple/protocols/msn/msn.c:374
+#: ../libpurple/protocols/msn/msn.c:377
 msgid "This Hotmail account may not be active."
 msgstr "Det kan hende denne Hotmail kontoen ikke er aktiv."
 
-#: ../libpurple/protocols/msn/msn.c:400
+#: ../libpurple/protocols/msn/msn.c:403
 msgid "Send a mobile message."
 msgstr "Send tekstmelding"
 
-#: ../libpurple/protocols/msn/msn.c:402
+#: ../libpurple/protocols/msn/msn.c:405
 msgid "Page"
 msgstr "Send"
 
-#: ../libpurple/protocols/msn/msn.c:549
-#, fuzzy
-msgid "Has you"
-msgstr "Har deg"
-
-#: ../libpurple/protocols/msn/msn.c:579 ../libpurple/protocols/msn/state.c:33
-#: ../libpurple/protocols/yahoo/yahoo.c:3077
-#: ../libpurple/protocols/yahoo/yahoo.c:3761
+#: ../libpurple/protocols/msn/msn.c:610
+#: ../libpurple/protocols/msn/msn.c:635
+#: ../libpurple/protocols/msn/msn.c:642
+#: ../libpurple/protocols/msn/msn.c:649
+#: ../libpurple/protocols/msn/msn.c:656
+#: ../libpurple/protocols/msn/msn.c:662
+#: ../libpurple/protocols/msn/msn.c:668
+#, fuzzy
+msgid "Current media"
+msgstr "Pålogget på"
+
+#: ../libpurple/protocols/msn/msn.c:647
+#: ../libpurple/protocols/msn/state.c:33
+#: ../libpurple/protocols/yahoo/yahoo.c:3076
+#: ../libpurple/protocols/yahoo/yahoo.c:3760
 msgid "Be Right Back"
 msgstr "Straks tilbake"
 
-#: ../libpurple/protocols/msn/msn.c:583 ../libpurple/protocols/msn/state.c:31
-#: ../libpurple/protocols/novell/novell.c:2822
-#: ../libpurple/protocols/novell/novell.c:2952
+#: ../libpurple/protocols/msn/msn.c:654
+#: ../libpurple/protocols/msn/state.c:31
+#: ../libpurple/protocols/novell/novell.c:2827
+#: ../libpurple/protocols/novell/novell.c:2957
 #: ../libpurple/protocols/silc/buddy.c:1480
 #: ../libpurple/protocols/silc/silc.c:56
 #: ../libpurple/protocols/silc10/buddy.c:1480
 #: ../libpurple/protocols/silc10/silc.c:47
-#: ../libpurple/protocols/yahoo/yahoo.c:3079
-#: ../libpurple/protocols/yahoo/yahoo.c:3764
+#: ../libpurple/protocols/yahoo/yahoo.c:3078
+#: ../libpurple/protocols/yahoo/yahoo.c:3763
 msgid "Busy"
 msgstr "Opptatt"
 
-#: ../libpurple/protocols/msn/msn.c:587
-#: ../libpurple/protocols/yahoo/yahoo.c:3087
-#: ../libpurple/protocols/yahoo/yahoo.c:3776
-#, fuzzy
+#: ../libpurple/protocols/msn/msn.c:660
+#: ../libpurple/protocols/yahoo/yahoo.c:3086
+#: ../libpurple/protocols/yahoo/yahoo.c:3775
 msgid "On the Phone"
 msgstr "I telefonen"
 
-#: ../libpurple/protocols/msn/msn.c:591
-#: ../libpurple/protocols/yahoo/yahoo.c:3091
-#: ../libpurple/protocols/yahoo/yahoo.c:3782
-#, fuzzy
+#: ../libpurple/protocols/msn/msn.c:666
+#: ../libpurple/protocols/yahoo/yahoo.c:3090
+#: ../libpurple/protocols/yahoo/yahoo.c:3781
 msgid "Out to Lunch"
 msgstr "Ute til lunsj"
 
-#: ../libpurple/protocols/msn/msn.c:619
+#: ../libpurple/protocols/msn/msn.c:697
 #, fuzzy
 msgid "Set Friendly Name..."
 msgstr "Sett kallenavn"
 
-#: ../libpurple/protocols/msn/msn.c:624
-#, fuzzy
+#: ../libpurple/protocols/msn/msn.c:702
 msgid "Set Home Phone Number..."
-msgstr "Sett telefonnummer (hjemme)"
-
-#: ../libpurple/protocols/msn/msn.c:628
-#, fuzzy
+msgstr "Sett telefonnummer (hjemme)..."
+
+#: ../libpurple/protocols/msn/msn.c:706
 msgid "Set Work Phone Number..."
-msgstr "Sett telefonnummer (arbeid)"
-
-#: ../libpurple/protocols/msn/msn.c:632
-#, fuzzy
+msgstr "Sett telefonnummer (arbeid)..."
+
+#: ../libpurple/protocols/msn/msn.c:710
 msgid "Set Mobile Phone Number..."
-msgstr "Sett mobiltelefonnummer"
-
-#: ../libpurple/protocols/msn/msn.c:638
+msgstr "Sett telefonnummer (mobil)..."
+
+#: ../libpurple/protocols/msn/msn.c:716
 #, fuzzy
 msgid "Enable/Disable Mobile Devices..."
 msgstr "Bruk/ikke bruk mobile enheter"
 
-#: ../libpurple/protocols/msn/msn.c:643
+#: ../libpurple/protocols/msn/msn.c:721
 #, fuzzy
 msgid "Allow/Disallow Mobile Pages..."
 msgstr "Tillate/forby tekstmeldinger"
 
-#: ../libpurple/protocols/msn/msn.c:654
+#: ../libpurple/protocols/msn/msn.c:732
 msgid "Open Hotmail Inbox"
 msgstr "Åpne Hotmail Inbox"
 
-#: ../libpurple/protocols/msn/msn.c:678
+#: ../libpurple/protocols/msn/msn.c:756
 msgid "Send to Mobile"
 msgstr "Send til mobil"
 
-#: ../libpurple/protocols/msn/msn.c:688
-#: ../libpurple/protocols/novell/novell.c:3408
+#: ../libpurple/protocols/msn/msn.c:766
+#: ../libpurple/protocols/novell/novell.c:3413
 msgid "Initiate _Chat"
 msgstr "Start gruppesamtale"
 
-#: ../libpurple/protocols/msn/msn.c:726
-#, fuzzy
+#: ../libpurple/protocols/msn/msn.c:804
 msgid "SSL support is needed for MSN. Please install a supported SSL library."
-msgstr ""
-"SSL-støtte kreves for MSN, vennligst installer et støttet SSL-bibliotek. Se "
-"http://gaim.sf.net/faq-ssl.php for mer informasjon."
-
-#: ../libpurple/protocols/msn/msn.c:754
+msgstr "SSL-støtte kreves for MSN. Vennligst installer et støttet SSL-bibliotek."
+
+#: ../libpurple/protocols/msn/msn.c:832
 msgid "Failed to connect to server."
 msgstr "Klarte ikke koble til tjener."
 
-#: ../libpurple/protocols/msn/msn.c:1510 ../libpurple/protocols/msn/msn.c:1858
+#: ../libpurple/protocols/msn/msn.c:1620
+#: ../libpurple/protocols/msn/msn.c:1968
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:808
 msgid "Error retrieving profile"
 msgstr "Klarte ikke hente profil"
 
-#: ../libpurple/protocols/msn/msn.c:1581 ../pidgin/plugins/convcolors.c:309
-#: ../pidgin/plugins/pidginrc.c:366
+#: ../libpurple/protocols/msn/msn.c:1691
+#: ../pidgin/plugins/convcolors.c:309
+#: ../pidgin/plugins/pidginrc.c:360
 #, fuzzy
 msgid "General"
 msgstr "Kjønn"
 
-#: ../libpurple/protocols/msn/msn.c:1588
+#: ../libpurple/protocols/msn/msn.c:1698
 #: ../libpurple/protocols/myspace/user.c:110
-#: ../libpurple/protocols/oscar/oscar.c:3755
+#: ../libpurple/protocols/oscar/oscar.c:3751
 #: ../libpurple/protocols/qq/buddy_info.c:45
 #: ../libpurple/protocols/qq/qq.c:221
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1081
 msgid "Age"
 msgstr "Alder"
 
-#: ../libpurple/protocols/msn/msn.c:1590
+#: ../libpurple/protocols/msn/msn.c:1700
 #: ../libpurple/protocols/qq/buddy_info.c:51
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1096
 msgid "Occupation"
 msgstr "Yrke"
 
-#: ../libpurple/protocols/msn/msn.c:1591
+#: ../libpurple/protocols/msn/msn.c:1701
 #: ../libpurple/protocols/myspace/user.c:119
-#: ../libpurple/protocols/novell/novell.c:1478
+#: ../libpurple/protocols/novell/novell.c:1480
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1076
 #: ../libpurple/protocols/zephyr/zephyr.c:798
 #: ../libpurple/protocols/zephyr/zephyr.c:1215
 msgid "Location"
 msgstr "Sted"
 
-#: ../libpurple/protocols/msn/msn.c:1596 ../libpurple/protocols/msn/msn.c:1788
-#: ../libpurple/protocols/msn/msn.c:1794 ../libpurple/protocols/msn/msn.c:1801
+#: ../libpurple/protocols/msn/msn.c:1706
+#: ../libpurple/protocols/msn/msn.c:1898
+#: ../libpurple/protocols/msn/msn.c:1904
+#: ../libpurple/protocols/msn/msn.c:1911
 msgid "Hobbies and Interests"
 msgstr "Hobbyer og interesser"
 
-#: ../libpurple/protocols/msn/msn.c:1602 ../libpurple/protocols/msn/msn.c:1722
-#: ../libpurple/protocols/msn/msn.c:1728 ../libpurple/protocols/msn/msn.c:1735
-#: ../libpurple/protocols/msn/msn.c:1743 ../libpurple/protocols/msn/msn.c:1750
+#: ../libpurple/protocols/msn/msn.c:1712
+#: ../libpurple/protocols/msn/msn.c:1832
+#: ../libpurple/protocols/msn/msn.c:1838
+#: ../libpurple/protocols/msn/msn.c:1845
+#: ../libpurple/protocols/msn/msn.c:1853
+#: ../libpurple/protocols/msn/msn.c:1860
 msgid "A Little About Me"
 msgstr "Noen ord om meg"
 
-#: ../libpurple/protocols/msn/msn.c:1619
+#: ../libpurple/protocols/msn/msn.c:1729
 msgid "Social"
 msgstr ""
 
-#: ../libpurple/protocols/msn/msn.c:1621
+#: ../libpurple/protocols/msn/msn.c:1731
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1086
 msgid "Marital Status"
 msgstr "Sivilstatus"
 
-#: ../libpurple/protocols/msn/msn.c:1622
-#, fuzzy
+#: ../libpurple/protocols/msn/msn.c:1732
 msgid "Interests"
-msgstr "Sett _inn"
-
-#: ../libpurple/protocols/msn/msn.c:1623
-#, fuzzy
+msgstr "Interesser"
+
+#: ../libpurple/protocols/msn/msn.c:1733
 msgid "Pets"
-msgstr "Porter"
-
-#: ../libpurple/protocols/msn/msn.c:1624
-#, fuzzy
+msgstr "Dyr"
+
+#: ../libpurple/protocols/msn/msn.c:1734
 msgid "Hometown"
-msgstr "Maskin ukjent"
-
-#: ../libpurple/protocols/msn/msn.c:1625
+msgstr "Hjemby"
+
+#: ../libpurple/protocols/msn/msn.c:1735
 msgid "Places Lived"
 msgstr ""
 
-#: ../libpurple/protocols/msn/msn.c:1626
+#: ../libpurple/protocols/msn/msn.c:1736
 msgid "Fashion"
-msgstr ""
-
-#: ../libpurple/protocols/msn/msn.c:1627
+msgstr "Mote"
+
+#: ../libpurple/protocols/msn/msn.c:1737
 msgid "Humor"
-msgstr ""
-
-#: ../libpurple/protocols/msn/msn.c:1628
+msgstr "Humor"
+
+#: ../libpurple/protocols/msn/msn.c:1738
 msgid "Music"
-msgstr ""
-
-#: ../libpurple/protocols/msn/msn.c:1629 ../libpurple/protocols/msn/msn.c:1810
-#: ../libpurple/protocols/msn/msn.c:1816
+msgstr "Musikk"
+
+#: ../libpurple/protocols/msn/msn.c:1739
+#: ../libpurple/protocols/msn/msn.c:1920
+#: ../libpurple/protocols/msn/msn.c:1926
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1138
 msgid "Favorite Quote"
 msgstr "Yndlingssitat"
 
-#: ../libpurple/protocols/msn/msn.c:1646
-#, fuzzy
+#: ../libpurple/protocols/msn/msn.c:1756
 msgid "Contact Info"
-msgstr "Kontoinformasjon"
-
-#: ../libpurple/protocols/msn/msn.c:1647
+msgstr "Kontaktinformasjon"
+
+#: ../libpurple/protocols/msn/msn.c:1757
 #, fuzzy
 msgid "Personal"
 msgstr "Tittel"
 
-#: ../libpurple/protocols/msn/msn.c:1650
+#: ../libpurple/protocols/msn/msn.c:1760
 msgid "Significant Other"
 msgstr ""
 
-#: ../libpurple/protocols/msn/msn.c:1651
+#: ../libpurple/protocols/msn/msn.c:1761
 #, fuzzy
 msgid "Home Phone"
 msgstr "Hjemmeside"
 
-#: ../libpurple/protocols/msn/msn.c:1652
+#: ../libpurple/protocols/msn/msn.c:1762
 #, fuzzy
 msgid "Home Phone 2"
 msgstr "Sett telefonnummer (hjemme)"
 
-#: ../libpurple/protocols/msn/msn.c:1653
-#: ../libpurple/protocols/oscar/oscar.c:3793
+#: ../libpurple/protocols/msn/msn.c:1763
+#: ../libpurple/protocols/oscar/oscar.c:3789
 msgid "Home Address"
 msgstr "Hjemstedsadresse"
 
-#: ../libpurple/protocols/msn/msn.c:1654
+#: ../libpurple/protocols/msn/msn.c:1764
 #, fuzzy
 msgid "Personal Mobile"
 msgstr "Tittel"
 
-#: ../libpurple/protocols/msn/msn.c:1655
+#: ../libpurple/protocols/msn/msn.c:1765
 #, fuzzy
 msgid "Home Fax"
 msgstr "Hjemmeside"
 
-#: ../libpurple/protocols/msn/msn.c:1656
+#: ../libpurple/protocols/msn/msn.c:1766
 #, fuzzy
 msgid "Personal E-Mail"
 msgstr "Tittel"
 
-#: ../libpurple/protocols/msn/msn.c:1657
+#: ../libpurple/protocols/msn/msn.c:1767
 #, fuzzy
 msgid "Personal IM"
 msgstr "Tittel"
 
-#: ../libpurple/protocols/msn/msn.c:1659
+#: ../libpurple/protocols/msn/msn.c:1769
 msgid "Anniversary"
 msgstr ""
 
 #. Business
-#: ../libpurple/protocols/msn/msn.c:1675
+#: ../libpurple/protocols/msn/msn.c:1785
 msgid "Work"
 msgstr ""
 
-#: ../libpurple/protocols/msn/msn.c:1677
+#: ../libpurple/protocols/msn/msn.c:1787
 #: ../libpurple/protocols/silc/ops.c:1010
 #: ../libpurple/protocols/silc10/ops.c:1044
 msgid "Job Title"
 msgstr "Tittel"
 
-#: ../libpurple/protocols/msn/msn.c:1678
-#: ../libpurple/protocols/oscar/oscar.c:3814
+#: ../libpurple/protocols/msn/msn.c:1788
+#: ../libpurple/protocols/oscar/oscar.c:3810
 msgid "Company"
 msgstr "Firma"
 
-#: ../libpurple/protocols/msn/msn.c:1679
-#: ../libpurple/protocols/novell/novell.c:1480
+#: ../libpurple/protocols/msn/msn.c:1789
+#: ../libpurple/protocols/novell/novell.c:1482
 msgid "Department"
 msgstr "Avdeling"
 
-#: ../libpurple/protocols/msn/msn.c:1680
+#: ../libpurple/protocols/msn/msn.c:1790
 #, fuzzy
 msgid "Profession"
 msgstr "Framdrift"
 
-#: ../libpurple/protocols/msn/msn.c:1681
+#: ../libpurple/protocols/msn/msn.c:1791
 #, fuzzy
 msgid "Work Phone"
 msgstr "Telefon"
 
-#: ../libpurple/protocols/msn/msn.c:1682
+#: ../libpurple/protocols/msn/msn.c:1792
 #, fuzzy
 msgid "Work Phone 2"
 msgstr "Sett telefonnummer (arbeid)"
 
-#: ../libpurple/protocols/msn/msn.c:1683
-#: ../libpurple/protocols/oscar/oscar.c:3806
+#: ../libpurple/protocols/msn/msn.c:1793
+#: ../libpurple/protocols/oscar/oscar.c:3802
 msgid "Work Address"
 msgstr "Arbeidsadresse"
 
-#: ../libpurple/protocols/msn/msn.c:1684
+#: ../libpurple/protocols/msn/msn.c:1794
 #, fuzzy
 msgid "Work Mobile"
 msgstr "Send til mobil"
 
-#: ../libpurple/protocols/msn/msn.c:1685
+#: ../libpurple/protocols/msn/msn.c:1795
 #, fuzzy
 msgid "Work Pager"
 msgstr "Hjemmeside"
 
-#: ../libpurple/protocols/msn/msn.c:1686
+#: ../libpurple/protocols/msn/msn.c:1796
 msgid "Work Fax"
 msgstr ""
 
-#: ../libpurple/protocols/msn/msn.c:1687
+#: ../libpurple/protocols/msn/msn.c:1797
 #, fuzzy
 msgid "Work E-Mail"
 msgstr "E-post"
 
-#: ../libpurple/protocols/msn/msn.c:1688
+#: ../libpurple/protocols/msn/msn.c:1798
 msgid "Work IM"
 msgstr ""
 
-#: ../libpurple/protocols/msn/msn.c:1689
+#: ../libpurple/protocols/msn/msn.c:1799
 #, fuzzy
 msgid "Start Date"
 msgstr "Fylke/stat"
 
-#: ../libpurple/protocols/msn/msn.c:1759 ../libpurple/protocols/msn/msn.c:1765
-#: ../libpurple/protocols/msn/msn.c:1772 ../libpurple/protocols/msn/msn.c:1779
+#: ../libpurple/protocols/msn/msn.c:1869
+#: ../libpurple/protocols/msn/msn.c:1875
+#: ../libpurple/protocols/msn/msn.c:1882
+#: ../libpurple/protocols/msn/msn.c:1889
 msgid "Favorite Things"
 msgstr "Favoritt-ting"
 
-#: ../libpurple/protocols/msn/msn.c:1824
+#: ../libpurple/protocols/msn/msn.c:1934
 msgid "Last Updated"
 msgstr "Sist oppdatert"
 
-#: ../libpurple/protocols/msn/msn.c:1835
+#: ../libpurple/protocols/msn/msn.c:1945
 #: ../libpurple/protocols/qq/buddy_info.c:60
 #: ../libpurple/protocols/silc/ops.c:1026
 #: ../libpurple/protocols/silc10/ops.c:1060
 msgid "Homepage"
 msgstr "Hjemmeside"
 
-#: ../libpurple/protocols/msn/msn.c:1859
+#: ../libpurple/protocols/msn/msn.c:1969
 msgid "The user has not created a public profile."
 msgstr "Brukeren har ikke opprettet en offentlig profil"
 
-#: ../libpurple/protocols/msn/msn.c:1860
-msgid ""
-"MSN reported not being able to find the user's profile. This either means "
-"that the user does not exist, or that the user exists but has not created a "
-"public profile."
-msgstr ""
-"MSN klarte ikke å finne brukerens profil. Dette betyr enten at brukeren ikke "
-"eksisterer, eller at brukeren ikke har opprettet en offentlig profil"
-
-#: ../libpurple/protocols/msn/msn.c:1864
-#, fuzzy
-msgid ""
-"Could not find any information in the user's profile. The user most likely "
-"does not exist."
-msgstr ""
-"Gaim klarte ikke finne noen informasjon i brukerens profil. Antakelig "
-"eksisterer brukeren ikke."
-
-#: ../libpurple/protocols/msn/msn.c:1872
+#: ../libpurple/protocols/msn/msn.c:1970
+msgid "MSN reported not being able to find the user's profile. This either means that the user does not exist, or that the user exists but has not created a public profile."
+msgstr "MSN klarte ikke å finne brukerens profil. Dette betyr enten at brukeren ikke eksisterer, eller at brukeren ikke har opprettet en offentlig profil"
+
+#: ../libpurple/protocols/msn/msn.c:1974
+#, fuzzy
+msgid "Could not find any information in the user's profile. The user most likely does not exist."
+msgstr "Gaim klarte ikke finne noen informasjon i brukerens profil. Antakelig eksisterer brukeren ikke."
+
+#: ../libpurple/protocols/msn/msn.c:1982
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1240
 msgid "Profile URL"
 msgstr "Profil URL"
@@ -7297,31 +7317,134 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/msn/msn.c:2158 ../libpurple/protocols/msn/msn.c:2160
-#, fuzzy
-msgid "MSN Protocol Plugin"
-msgstr "AIM/ICQ-protokolltillegg"
-
-#: ../libpurple/protocols/msn/msn.c:2194
+#: ../libpurple/protocols/msn/msn.c:2269
+#: ../libpurple/protocols/msn/msn.c:2271
+#, fuzzy
+msgid "Windows Live Messenger Protocol Plugin"
+msgstr "Novel GroupWise Messenger protolltillegg"
+
+#: ../libpurple/protocols/msn/msn.c:2306
 msgid "Use HTTP Method"
 msgstr "Bruk HTTP-metode"
 
 #
-#: ../libpurple/protocols/msn/msn.c:2199
+#: ../libpurple/protocols/msn/msn.c:2311
 #, fuzzy
 msgid "HTTP Method Server"
 msgstr "IPC testtjener"
 
-#: ../libpurple/protocols/msn/msn.c:2204
+#: ../libpurple/protocols/msn/msn.c:2316
 msgid "Show custom smileys"
 msgstr ""
 
-#: ../libpurple/protocols/msn/msn.c:2212
+#: ../libpurple/protocols/msn/msn.c:2324
 #, fuzzy
 msgid "nudge: nudge a user to get their attention"
 msgstr "nudge: nudge en kontakt for å få deres oppmerksomhet"
 
-#: ../libpurple/protocols/msn/nexus.c:146
+#: ../libpurple/protocols/msn/nexus.c:137
+msgid "Windows Live ID authentication:Unable to connect"
+msgstr ""
+
+#: ../libpurple/protocols/msn/nexus.c:275
+#, fuzzy
+msgid "Windows Live ID authentication Failed"
+msgstr "Autentisering feilet"
+
+#: ../libpurple/protocols/msn/notification.c:191
+#, c-format
+msgid "%s is not a valid group."
+msgstr "%s er ikke et gyldig navn på en gruppe."
+
+#: ../libpurple/protocols/msn/notification.c:197
+#: ../libpurple/protocols/msn/notification.c:938
+#: ../libpurple/protocols/msn/session.c:369
+msgid "Unknown error."
+msgstr "Ukjent feil."
+
+#: ../libpurple/protocols/msn/notification.c:200
+#, c-format
+msgid "%s on %s (%s)"
+msgstr "%s på %s (%s)"
+
+#: ../libpurple/protocols/msn/notification.c:518
+#, fuzzy, c-format
+msgid "%s just sent you a Nudge!"
+msgstr "%s har sendt deg en beskjed"
+
+#: ../libpurple/protocols/msn/notification.c:843
+#, c-format
+msgid "Unknown error (%d)"
+msgstr "Ukjent feil (%d)"
+
+#: ../libpurple/protocols/msn/notification.c:844
+#: ../libpurple/protocols/sametime/sametime.c:4425
+#, fuzzy
+msgid "Unable to add user"
+msgstr "Klarte ikke forby brukeren %s"
+
+#: ../libpurple/protocols/msn/notification.c:904
+#, c-format
+msgid "Unable to add user on %s (%s)"
+msgstr "Klarte ikke legge til bruker på %s (%s)"
+
+#: ../libpurple/protocols/msn/notification.c:908
+#, c-format
+msgid "Unable to block user on %s (%s)"
+msgstr "Klarte ikke blokkere brukeren på %s (%s)"
+
+#: ../libpurple/protocols/msn/notification.c:912
+#, c-format
+msgid "Unable to permit user on %s (%s)"
+msgstr "Klarte ikke tillate bruker på %s (%s)"
+
+#: ../libpurple/protocols/msn/notification.c:920
+#, c-format
+msgid "%s could not be added because your buddy list is full."
+msgstr "%s kunne ikke bli lagt til kontaktlista, fordi din kontaktliste er full."
+
+#: ../libpurple/protocols/msn/notification.c:929
+#, c-format
+msgid "%s is not a valid passport account."
+msgstr "%s er ikke et gyldig passport-konto"
+
+#: ../libpurple/protocols/msn/notification.c:934
+#, fuzzy
+msgid "Service Temporarily Unavailable."
+msgstr "Tjenesten midlertidig uttilgjengelig"
+
+#: ../libpurple/protocols/msn/notification.c:1272
+msgid "Unable to rename group"
+msgstr "Kunne ikke endre navn på gruppe"
+
+#: ../libpurple/protocols/msn/notification.c:1327
+msgid "Unable to delete group"
+msgstr "Kunne ikke slette gruppe"
+
+#: ../libpurple/protocols/msn/notification.c:1943
+#, c-format
+msgid ""
+"The MSN server will shut down for maintenance in %d minute. You will automatically be signed out at that time.  Please finish any conversations in progress.\n"
+"\n"
+"After the maintenance has been completed, you will be able to successfully sign in."
+msgid_plural ""
+"The MSN server will shut down for maintenance in %d minutes. You will automatically be signed out at that time.  Please finish any conversations in progress.\n"
+"\n"
+"After the maintenance has been completed, you will be able to successfully sign in."
+msgstr[0] ""
+"MSN-tjeneren vil stenge ned pga. vedlikeholdsarbeid i løpet av %d minutt. Du vil da bli frakoblet, så vennligst avslutt eventuelle samtaler før det.\n"
+"\n"
+"Etter at vedlikeholdsarbeidet er ferdig, kan du logge på igjen."
+msgstr[1] ""
+"MSN-tjeneren vil stenge ned pga. vedlikeholdsarbeid i løpet av %d minutter. Du vil da bli frakoblet, så vennligst avslutt eventuelle samtaler før det.\n"
+"\n"
+"Etter at vedlikeholdsarbeidet er ferdig, kan du logge på igjen."
+
+#: ../libpurple/protocols/msn/oim.c:141
+#, fuzzy
+msgid "Unable to connect to OIM server"
+msgstr "Kan ikke koble til tjener."
+
 #: ../libpurple/protocols/msn/servconn.c:135
 #: ../libpurple/protocols/qq/qq_proxy.c:242
 #: ../libpurple/protocols/qq/qq_proxy.c:321
@@ -7341,88 +7464,6 @@
 msgid "Unable to connect"
 msgstr "Kunne ikke koble til"
 
-#: ../libpurple/protocols/msn/notification.c:178
-#, c-format
-msgid "%s is not a valid group."
-msgstr "%s er ikke et gyldig navn på en gruppe."
-
-#: ../libpurple/protocols/msn/notification.c:184
-#: ../libpurple/protocols/msn/notification.c:532
-#: ../libpurple/protocols/msn/session.c:330
-msgid "Unknown error."
-msgstr "Ukjent feil."
-
-#: ../libpurple/protocols/msn/notification.c:187
-#, c-format
-msgid "%s on %s (%s)"
-msgstr "%s på %s (%s)"
-
-#: ../libpurple/protocols/msn/notification.c:498
-#, c-format
-msgid "Unable to add user on %s (%s)"
-msgstr "Klarte ikke legge til bruker på %s (%s)"
-
-#: ../libpurple/protocols/msn/notification.c:502
-#, c-format
-msgid "Unable to block user on %s (%s)"
-msgstr "Klarte ikke blokkere brukeren på %s (%s)"
-
-#: ../libpurple/protocols/msn/notification.c:506
-#, c-format
-msgid "Unable to permit user on %s (%s)"
-msgstr "Klarte ikke tillate bruker på %s (%s)"
-
-#: ../libpurple/protocols/msn/notification.c:514
-#, c-format
-msgid "%s could not be added because your buddy list is full."
-msgstr ""
-"%s kunne ikke bli lagt til kontaktlista, fordi din kontaktliste er full."
-
-#: ../libpurple/protocols/msn/notification.c:523
-#, c-format
-msgid "%s is not a valid passport account."
-msgstr "%s er ikke et gyldig passport-konto"
-
-#: ../libpurple/protocols/msn/notification.c:528
-#, fuzzy
-msgid "Service Temporarily Unavailable."
-msgstr "Tjenesten midlertidig uttilgjengelig"
-
-#: ../libpurple/protocols/msn/notification.c:851
-msgid "Unable to rename group"
-msgstr "Kunne ikke endre navn på gruppe"
-
-#: ../libpurple/protocols/msn/notification.c:906
-msgid "Unable to delete group"
-msgstr "Kunne ikke slette gruppe"
-
-#: ../libpurple/protocols/msn/notification.c:1325
-#, c-format
-msgid ""
-"The MSN server will shut down for maintenance in %d minute. You will "
-"automatically be signed out at that time.  Please finish any conversations "
-"in progress.\n"
-"\n"
-"After the maintenance has been completed, you will be able to successfully "
-"sign in."
-msgid_plural ""
-"The MSN server will shut down for maintenance in %d minutes. You will "
-"automatically be signed out at that time.  Please finish any conversations "
-"in progress.\n"
-"\n"
-"After the maintenance has been completed, you will be able to successfully "
-"sign in."
-msgstr[0] ""
-"MSN-tjeneren vil stenge ned pga. vedlikeholdsarbeid i løpet av %d minutt. Du "
-"vil da bli frakoblet, så vennligst avslutt eventuelle samtaler før det.\n"
-"\n"
-"Etter at vedlikeholdsarbeidet er ferdig, kan du logge på igjen."
-msgstr[1] ""
-"MSN-tjeneren vil stenge ned pga. vedlikeholdsarbeid i løpet av %d minutter. "
-"Du vil da bli frakoblet, så vennligst avslutt eventuelle samtaler før det.\n"
-"\n"
-"Etter at vedlikeholdsarbeidet er ferdig, kan du logge på igjen."
-
 #: ../libpurple/protocols/msn/servconn.c:137
 msgid "Writing error"
 msgstr "Feil ved skriving"
@@ -7440,59 +7481,55 @@
 "Tilkoplingsfeil fra %s tjener (%s):\n"
 "%s"
 
-#: ../libpurple/protocols/msn/session.c:299
+#: ../libpurple/protocols/msn/session.c:336
 msgid "Our protocol is not supported by the server."
 msgstr "Vår protokoll er ikke støttet av tjeneren"
 
-#: ../libpurple/protocols/msn/session.c:303
+#: ../libpurple/protocols/msn/session.c:340
 msgid "Error parsing HTTP."
 msgstr "Feil under tolkning av HTTP."
 
-#: ../libpurple/protocols/msn/session.c:307
+#: ../libpurple/protocols/msn/session.c:344
 #: ../libpurple/protocols/oscar/flap_connection.c:384
-#: ../libpurple/protocols/yahoo/yahoo.c:205
+#: ../libpurple/protocols/yahoo/yahoo.c:207
 msgid "You have signed on from another location."
 msgstr "Du ble logget av fordi du har logget på et annet sted."
 
-#: ../libpurple/protocols/msn/session.c:310
+#: ../libpurple/protocols/msn/session.c:349
 msgid "The MSN servers are temporarily unavailable. Please wait and try again."
-msgstr ""
-"MSN-tjenerene er midlertidig utilgjengelig.Vennligst prøv igjen senere."
-
-#: ../libpurple/protocols/msn/session.c:315
+msgstr "MSN-tjenerene er midlertidig utilgjengelig.Vennligst prøv igjen senere."
+
+#: ../libpurple/protocols/msn/session.c:354
 msgid "The MSN servers are going down temporarily."
 msgstr "MSN-tjenerne vil bli utilgjengelig en liten stund."
 
-#: ../libpurple/protocols/msn/session.c:320
+#: ../libpurple/protocols/msn/session.c:359
 #, c-format
 msgid "Unable to authenticate: %s"
 msgstr "Klarte ikke autentisere: %s"
 
-#: ../libpurple/protocols/msn/session.c:325
-msgid ""
-"Your MSN buddy list is temporarily unavailable. Please wait and try again."
-msgstr ""
-"Din MSN-kontaktliste er midlertidig utilgjengelig. Vennligst prøv igjen "
-"senere."
-
-#: ../libpurple/protocols/msn/session.c:346
-#: ../libpurple/protocols/msn/session.c:348
+#: ../libpurple/protocols/msn/session.c:364
+msgid "Your MSN buddy list is temporarily unavailable. Please wait and try again."
+msgstr "Din MSN-kontaktliste er midlertidig utilgjengelig. Vennligst prøv igjen senere."
+
+#: ../libpurple/protocols/msn/session.c:385
+#: ../libpurple/protocols/msn/session.c:387
 msgid "Handshaking"
 msgstr "Håndtrykk"
 
-#: ../libpurple/protocols/msn/session.c:349
+#: ../libpurple/protocols/msn/session.c:388
 msgid "Starting authentication"
 msgstr "Starter godkjenning"
 
-#: ../libpurple/protocols/msn/session.c:350
+#: ../libpurple/protocols/msn/session.c:389
 msgid "Getting cookie"
 msgstr "Henter informasjonskapsel"
 
-#: ../libpurple/protocols/msn/session.c:352
+#: ../libpurple/protocols/msn/session.c:391
 msgid "Sending cookie"
 msgstr "Sender informasjonskapsel"
 
-#: ../libpurple/protocols/msn/session.c:353
+#: ../libpurple/protocols/msn/session.c:392
 msgid "Retrieving buddy list"
 msgstr "Henter kontaktliste"
 
@@ -7514,8 +7551,7 @@
 
 #: ../libpurple/protocols/msn/switchboard.c:408
 msgid "Message could not be sent, not allowed while invisible:"
-msgstr ""
-"Meldingen ble ikke sendt, du ikke kan sende meldinger når du er usynlig:"
+msgstr "Meldingen ble ikke sendt, du ikke kan sende meldinger når du er usynlig:"
 
 #: ../libpurple/protocols/msn/switchboard.c:412
 msgid "Message could not be sent because the user is offline:"
@@ -7531,37 +7567,36 @@
 msgstr "Meldingen kunne ikke bli sendt, brukeren er frakoblet:"
 
 #: ../libpurple/protocols/msn/switchboard.c:424
-msgid ""
-"Message could not be sent because we were unable to establish a session with "
-"the server. This is likely a server problem, try again in a few minutes:"
+msgid "Message could not be sent because we were unable to establish a session with the server. This is likely a server problem, try again in a few minutes:"
 msgstr ""
 
 #: ../libpurple/protocols/msn/switchboard.c:431
-msgid ""
-"Message could not be sent because an error with the switchboard occurred:"
-msgstr ""
-"Meldingen kunne ikke bli sendt, da det skjedde en feil med sentralbordet:"
+msgid "Message could not be sent because an error with the switchboard occurred:"
+msgstr "Meldingen kunne ikke bli sendt, da det skjedde en feil med sentralbordet:"
 
 #: ../libpurple/protocols/msn/switchboard.c:439
 msgid "Message may have not been sent because an unknown error occurred:"
 msgstr "Meldingen kunne ikke bli sendt på grunn av en ukjent feil:"
 
-#: ../libpurple/protocols/msn/userlist.c:252
-#, fuzzy, c-format
+#: ../libpurple/protocols/msn/userlist.c:243
+#, c-format
 msgid "%s has added you to his or her buddy list."
-msgstr "Brukeren %s ønsker å legge til %s i kontaktlisten sin."
-
-#: ../libpurple/protocols/msn/userlist.c:321
-#, fuzzy, c-format
+msgstr "%s har lagt deg til i kontaktlisten sin."
+
+#: ../libpurple/protocols/msn/userlist.c:312
+#, c-format
 msgid "%s has removed you from his or her buddy list."
 msgstr "%s har fjernet deg fra sin kontaktliste."
 
-#: ../libpurple/protocols/msn/userlist.c:643
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#: ../libpurple/protocols/msn/userlist.c:693
 #, fuzzy, c-format
 msgid "Unable to add \"%s\"."
 msgstr "Kunne ikke lese fil %s."
 
-#: ../libpurple/protocols/msn/userlist.c:645
+#: ../libpurple/protocols/msn/userlist.c:696
 #, fuzzy
 msgid "The screen name specified is invalid."
 msgstr "Den inntastede SecurID-nøkkelen er ugyldig."
@@ -7575,21 +7610,17 @@
 msgstr ""
 
 #: ../libpurple/protocols/myspace/myspace.c:113
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
+msgid "Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will not be loaded."
 msgstr ""
 
 #: ../libpurple/protocols/myspace/myspace.c:286
 #, c-format
-msgid ""
-"Sorry, passwords over %d characters in length (yours is %d) are not "
-"supported by MySpace."
+msgid "Sorry, passwords over %d characters in length (yours is %d) are not supported by MySpace."
 msgstr ""
 
 #. Notify an error message also, because this is important!
 #: ../libpurple/protocols/myspace/myspace.c:292
-#: ../libpurple/protocols/myspace/myspace.c:1801
+#: ../libpurple/protocols/myspace/myspace.c:1798
 msgid "MySpaceIM Error"
 msgstr ""
 
@@ -7608,196 +7639,192 @@
 msgid "Logging in"
 msgstr "Logging"
 
-#: ../libpurple/protocols/myspace/myspace.c:1286
+#: ../libpurple/protocols/myspace/myspace.c:1278
 #, c-format
 msgid "Connection to server lost (no data received within %d seconds)"
 msgstr ""
 
 #. Can't write _()'d strings in array initializers. Workaround.
-#: ../libpurple/protocols/myspace/myspace.c:1328
+#: ../libpurple/protocols/myspace/myspace.c:1321
 #, fuzzy
 msgid "New mail messages"
 msgstr "Ny fraværsbeskjed"
 
-#: ../libpurple/protocols/myspace/myspace.c:1329
+#: ../libpurple/protocols/myspace/myspace.c:1322
 msgid "New blog comments"
 msgstr ""
 
-#: ../libpurple/protocols/myspace/myspace.c:1330
+#: ../libpurple/protocols/myspace/myspace.c:1323
 msgid "New profile comments"
 msgstr ""
 
-#: ../libpurple/protocols/myspace/myspace.c:1331
+#: ../libpurple/protocols/myspace/myspace.c:1324
 msgid "New friend requests!"
 msgstr ""
 
-#: ../libpurple/protocols/myspace/myspace.c:1332
+#: ../libpurple/protocols/myspace/myspace.c:1325
 msgid "New picture comments"
 msgstr ""
 
-#: ../libpurple/protocols/myspace/myspace.c:1360
+#: ../libpurple/protocols/myspace/myspace.c:1355
 msgid "MySpace"
-msgstr ""
+msgstr "Myspace"
 
 #. The session is now set up, ready to be connected. This emits the
 #. * signedOn signal, so clients can now do anything with msimprpl, and
 #. * we're ready for it (session key, userid, username all setup).
-#: ../libpurple/protocols/myspace/myspace.c:1543
+#: ../libpurple/protocols/myspace/myspace.c:1538
 #: ../libpurple/protocols/sametime/sametime.c:1544
 #, fuzzy
 msgid "Connected"
 msgstr "Koble til"
 
-#: ../libpurple/protocols/myspace/myspace.c:1554
-#: ../libpurple/protocols/myspace/myspace.c:1556
+#: ../libpurple/protocols/myspace/myspace.c:1549
+#: ../libpurple/protocols/myspace/myspace.c:1551
 #, fuzzy
 msgid "No username set"
 msgstr "Skjermnavn ikke oppgitt."
 
-#: ../libpurple/protocols/myspace/myspace.c:1555
-msgid ""
-"Please go to http://editprofile.myspace.com/index.cfm?fuseaction=profile."
-"username and choose a username and try to login again."
-msgstr ""
-
-#: ../libpurple/protocols/myspace/myspace.c:1782
+#: ../libpurple/protocols/myspace/myspace.c:1550
+msgid "Please go to http://editprofile.myspace.com/index.cfm?fuseaction=profile.username and choose a username and try to login again."
+msgstr ""
+
+#: ../libpurple/protocols/myspace/myspace.c:1777
 #, c-format
 msgid "Protocol error, code %d: %s"
 msgstr ""
 
-#: ../libpurple/protocols/myspace/myspace.c:1972
-#: ../libpurple/protocols/myspace/myspace.c:2006
+#: ../libpurple/protocols/myspace/myspace.c:1970
+#: ../libpurple/protocols/myspace/myspace.c:2004
 #, fuzzy
 msgid "Failed to add buddy"
 msgstr "Kunne ikke bli med kontakt i samtale"
 
-#: ../libpurple/protocols/myspace/myspace.c:1972
+#: ../libpurple/protocols/myspace/myspace.c:1970
 #, fuzzy
 msgid "'addbuddy' command failed."
 msgstr "Importer kontaktliste fra tjener"
 
-#: ../libpurple/protocols/myspace/myspace.c:2006
-#: ../libpurple/protocols/myspace/myspace.c:2247
+#: ../libpurple/protocols/myspace/myspace.c:2004
+#: ../libpurple/protocols/myspace/myspace.c:2245
 #, fuzzy
 msgid "persist command failed"
 msgstr "Feil med switchboard-tjenesten"
 
-#: ../libpurple/protocols/myspace/myspace.c:2115
+#: ../libpurple/protocols/myspace/myspace.c:2113
 #, c-format
 msgid "No such user: %s"
 msgstr ""
 
-#: ../libpurple/protocols/myspace/myspace.c:2116
+#: ../libpurple/protocols/myspace/myspace.c:2114
 #, fuzzy
 msgid "User lookup"
 msgstr "Brukerrom"
 
-#: ../libpurple/protocols/myspace/myspace.c:2228
-#: ../libpurple/protocols/myspace/myspace.c:2247
-#: ../libpurple/protocols/myspace/myspace.c:2269
+#: ../libpurple/protocols/myspace/myspace.c:2226
+#: ../libpurple/protocols/myspace/myspace.c:2245
+#: ../libpurple/protocols/myspace/myspace.c:2267
 #, fuzzy
 msgid "Failed to remove buddy"
 msgstr "Kunne ikke bli med kontakt i samtale"
 
-#: ../libpurple/protocols/myspace/myspace.c:2228
+#: ../libpurple/protocols/myspace/myspace.c:2226
 msgid "'delbuddy' command failed"
 msgstr ""
 
-#: ../libpurple/protocols/myspace/myspace.c:2269
+#: ../libpurple/protocols/myspace/myspace.c:2267
 #, fuzzy
 msgid "blocklist command failed"
 msgstr "Feil med switchboard-tjenesten"
 
-#: ../libpurple/protocols/myspace/myspace.c:2315
+#: ../libpurple/protocols/myspace/myspace.c:2313
 #, fuzzy
 msgid "Invalid input condition"
 msgstr "Fullfører tilkobling"
 
 #. TODO: g_realloc like msn, yahoo, irc, jabber?
-#: ../libpurple/protocols/myspace/myspace.c:2333
-#: ../libpurple/protocols/myspace/myspace.c:2364
+#: ../libpurple/protocols/myspace/myspace.c:2331
+#: ../libpurple/protocols/myspace/myspace.c:2362
 #, fuzzy
 msgid "Read buffer full"
 msgstr "Køen er full"
 
-#: ../libpurple/protocols/myspace/myspace.c:2402
+#: ../libpurple/protocols/myspace/myspace.c:2400
 #, fuzzy
 msgid "Unparseable message"
 msgstr "Kunne ikke tolke beskjed."
 
-#: ../libpurple/protocols/myspace/myspace.c:2471
+#: ../libpurple/protocols/myspace/myspace.c:2469
 #, fuzzy, c-format
 msgid "Couldn't connect to host: %s (%d)"
 msgstr "Kunne ikke koble til"
 
-#: ../libpurple/protocols/myspace/myspace.c:2642
+#: ../libpurple/protocols/myspace/myspace.c:2640
 #, fuzzy
 msgid "IM Friends"
 msgstr "Vinduer for direktemeldinger"
 
-#: ../libpurple/protocols/myspace/myspace.c:2741
-#, c-format
-msgid ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr ""
-
-#: ../libpurple/protocols/myspace/myspace.c:2742
+#: ../libpurple/protocols/myspace/myspace.c:2739
+#, c-format
+msgid "%d buddies were added or updated from the server (including buddies already on the server-side list)"
+msgstr ""
+
+#: ../libpurple/protocols/myspace/myspace.c:2740
 #, fuzzy
 msgid "Add contacts from server"
 msgstr "Ugyldig svar fra tjener."
 
-#: ../libpurple/protocols/myspace/myspace.c:2794
-#: ../libpurple/protocols/myspace/myspace.c:2859
+#: ../libpurple/protocols/myspace/myspace.c:2792
+#: ../libpurple/protocols/myspace/myspace.c:2857
 msgid "Add friends from MySpace.com"
-msgstr ""
-
-#: ../libpurple/protocols/myspace/myspace.c:2795
+msgstr "Legg til venner fra MySpace.com"
+
+#: ../libpurple/protocols/myspace/myspace.c:2793
 #, fuzzy
 msgid "Importing friends failed"
 msgstr "Ugyldig 'friend'-fil"
 
 #. TODO: find out how
-#: ../libpurple/protocols/myspace/myspace.c:2851
+#: ../libpurple/protocols/myspace/myspace.c:2849
 msgid "Find people..."
 msgstr ""
 
-#: ../libpurple/protocols/myspace/myspace.c:2854
+#: ../libpurple/protocols/myspace/myspace.c:2852
 #, fuzzy
 msgid "Change IM name..."
 msgstr "Bytt passord..."
 
-#: ../libpurple/protocols/myspace/myspace.c:3156
+#: ../libpurple/protocols/myspace/myspace.c:3154
 msgid "myim URL handler"
 msgstr ""
 
-#: ../libpurple/protocols/myspace/myspace.c:3157
+#: ../libpurple/protocols/myspace/myspace.c:3155
 msgid "No suitable MySpaceIM account could be found to open this myim URL."
 msgstr ""
 
-#: ../libpurple/protocols/myspace/myspace.c:3158
+#: ../libpurple/protocols/myspace/myspace.c:3156
 msgid "Enable the proper MySpaceIM account and try again."
 msgstr ""
 
-#: ../libpurple/protocols/myspace/myspace.c:3281
+#: ../libpurple/protocols/myspace/myspace.c:3279
 msgid "Show display name in status text"
 msgstr ""
 
-#: ../libpurple/protocols/myspace/myspace.c:3284
+#: ../libpurple/protocols/myspace/myspace.c:3282
 #, fuzzy
 msgid "Show headline in status text"
 msgstr "Vis aliasnavn i titteltekster"
 
-#: ../libpurple/protocols/myspace/myspace.c:3289
+#: ../libpurple/protocols/myspace/myspace.c:3287
 #, fuzzy
 msgid "Send emoticons"
 msgstr "Lydinnstillinger"
 
-#: ../libpurple/protocols/myspace/myspace.c:3294
+#: ../libpurple/protocols/myspace/myspace.c:3292
 msgid "Screen resolution (dots per inch)"
 msgstr ""
 
-#: ../libpurple/protocols/myspace/myspace.c:3297
+#: ../libpurple/protocols/myspace/myspace.c:3295
 #, fuzzy
 msgid "Base font size (points)"
 msgstr "Større skrift"
@@ -7805,13 +7832,12 @@
 #: ../libpurple/protocols/myspace/user.c:95
 #: ../libpurple/protocols/zephyr/zephyr.c:786
 #: ../libpurple/protocols/zephyr/zephyr.c:1204
-#, fuzzy
 msgid "User"
-msgstr "Brukere"
+msgstr "Bruker"
 
 #. TODO: link to username, if available
 #: ../libpurple/protocols/myspace/user.c:102
-#: ../libpurple/protocols/oscar/oscar.c:2964
+#: ../libpurple/protocols/oscar/oscar.c:2960
 msgid "Profile"
 msgstr "Profil"
 
@@ -7821,13 +7847,12 @@
 msgstr "Avslå"
 
 #: ../libpurple/protocols/myspace/user.c:129
-#, fuzzy
 msgid "Song"
-msgstr "_Sortering:"
+msgstr "Sang"
 
 #: ../libpurple/protocols/myspace/user.c:134
 msgid "Total Friends"
-msgstr ""
+msgstr "Antall venner"
 
 #: ../libpurple/protocols/myspace/user.c:145
 #: ../libpurple/protocols/myspace/user.c:148
@@ -8068,12 +8093,8 @@
 
 #: ../libpurple/protocols/novell/nmuser.c:1928
 #, fuzzy
-msgid ""
-"Your account has been disabled because too many incorrect passwords were "
-"entered"
-msgstr ""
-"Kontoen din har blitt deaktivert på grunn av for mange ugyldige inntastede "
-"passord"
+msgid "Your account has been disabled because too many incorrect passwords were entered"
+msgstr "Kontoen din har blitt deaktivert på grunn av for mange ugyldige inntastede passord"
 
 #: ../libpurple/protocols/novell/nmuser.c:1931
 msgid "You cannot add the same person twice to a conversation"
@@ -8101,11 +8122,8 @@
 msgstr "Brukeren har blokkert deg"
 
 #: ../libpurple/protocols/novell/nmuser.c:1950
-msgid ""
-"This evaluation version does not allow more than ten users to log in at one "
-"time"
-msgstr ""
-"Denne testversjonen tillater ikke mer enn ti samtidige innloggede brukere"
+msgid "This evaluation version does not allow more than ten users to log in at one time"
+msgstr "Denne testversjonen tillater ikke mer enn ti samtidige innloggede brukere"
 
 #: ../libpurple/protocols/novell/nmuser.c:1953
 msgid "The user is either offline or you are blocked"
@@ -8121,113 +8139,104 @@
 msgid "Login failed (%s)."
 msgstr "Pålogging feilet (%s)"
 
-#: ../libpurple/protocols/novell/novell.c:247
+#: ../libpurple/protocols/novell/novell.c:249
 #, c-format
 msgid "Unable to send message. Could not get details for user (%s)."
 msgstr "Kunne ikke sende beskjed. Klarte ikke hente brukerdetaljer (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:396
+#: ../libpurple/protocols/novell/novell.c:398
 #, c-format
 msgid "Unable to add %s to your buddy list (%s)."
 msgstr "Kunne ikke legge til %s til kontaktlisten din (%s)."
 
 #. TODO: Improve this! message to who or for what conference?
-#: ../libpurple/protocols/novell/novell.c:422
+#: ../libpurple/protocols/novell/novell.c:424
 #, c-format
 msgid "Unable to send message (%s)."
 msgstr "Kunne ikke sende beskjed (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:493
-#: ../libpurple/protocols/novell/novell.c:985
+#: ../libpurple/protocols/novell/novell.c:495
+#: ../libpurple/protocols/novell/novell.c:987
 #, c-format
 msgid "Unable to invite user (%s)."
 msgstr "Kunne ikke invitere bruker (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:532
+#: ../libpurple/protocols/novell/novell.c:534
 #, c-format
 msgid "Unable to send message to %s. Could not create the conference (%s)."
-msgstr ""
-"Klarte ikke sende beskjed til %s. Kunne ikke sette opp konferansen (%s)."
-
-#: ../libpurple/protocols/novell/novell.c:537
+msgstr "Klarte ikke sende beskjed til %s. Kunne ikke sette opp konferansen (%s)."
+
+#: ../libpurple/protocols/novell/novell.c:539
 #, c-format
 msgid "Unable to send message. Could not create the conference (%s)."
 msgstr "Klarte ikke sende beskjed. Kunne ikke sette opp konferansen (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:584
-#, c-format
-msgid ""
-"Unable to move user %s to folder %s in the server side list. Error while "
-"creating folder (%s)."
-msgstr ""
-"Klarte ikke flytte brukeren %s til mappe %s i lista på tjenersiden. En feil "
-"oppsto under opprettelse av mappe (%s)."
-
-#: ../libpurple/protocols/novell/novell.c:632
-#, c-format
-msgid ""
-"Unable to add %s to your buddy list. Error creating folder in server side "
-"list (%s)."
-msgstr ""
-"Klarte ikke legge til %s i kontaktlista. En feil oppsto under opprettelse i "
-"lista på tjenersiden (%s)."
-
-#: ../libpurple/protocols/novell/novell.c:705
+#: ../libpurple/protocols/novell/novell.c:586
+#, c-format
+msgid "Unable to move user %s to folder %s in the server side list. Error while creating folder (%s)."
+msgstr "Klarte ikke flytte brukeren %s til mappe %s i lista på tjenersiden. En feil oppsto under opprettelse av mappe (%s)."
+
+#: ../libpurple/protocols/novell/novell.c:634
+#, c-format
+msgid "Unable to add %s to your buddy list. Error creating folder in server side list (%s)."
+msgstr "Klarte ikke legge til %s i kontaktlista. En feil oppsto under opprettelse i lista på tjenersiden (%s)."
+
+#: ../libpurple/protocols/novell/novell.c:707
 #, c-format
 msgid "Could not get details for user %s (%s)."
 msgstr "Kunne ikke hente detaljer for brukeren %s (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:751
-#: ../libpurple/protocols/novell/novell.c:897
+#: ../libpurple/protocols/novell/novell.c:753
+#: ../libpurple/protocols/novell/novell.c:899
 #, c-format
 msgid "Unable to add user to privacy list (%s)."
 msgstr "Kunne ikke legge til bruker til privatliste (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:798
+#: ../libpurple/protocols/novell/novell.c:800
 #, c-format
 msgid "Unable to add %s to deny list (%s)."
 msgstr "Kunne ikke legge til %s til nektingsliste (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:851
+#: ../libpurple/protocols/novell/novell.c:853
 #, c-format
 msgid "Unable to add %s to permit list (%s)."
 msgstr "Kunne ikke legge til %s til tillatelsesliste (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:919
+#: ../libpurple/protocols/novell/novell.c:921
 #, c-format
 msgid "Unable to remove %s from privacy list (%s)."
 msgstr "Kunne ikke fjerne %s fra privatliste (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:942
-#: ../libpurple/protocols/novell/novell.c:1647
+#: ../libpurple/protocols/novell/novell.c:944
+#: ../libpurple/protocols/novell/novell.c:1649
 #, c-format
 msgid "Unable to change server side privacy settings (%s)."
 msgstr "Klarte ikke endre personsvernsinstillinger på tjenersiden (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:1012
+#: ../libpurple/protocols/novell/novell.c:1014
 #, c-format
 msgid "Unable to create conference (%s)."
 msgstr "Klarte ikke opprette konferanse (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:1121
-#: ../libpurple/protocols/novell/novell.c:1692
+#: ../libpurple/protocols/novell/novell.c:1123
+#: ../libpurple/protocols/novell/novell.c:1694
 msgid "Error communicating with server. Closing connection."
 msgstr "Feil i kommunikasjon med tjener, stenger forbindelse."
 
-#: ../libpurple/protocols/novell/novell.c:1476
+#: ../libpurple/protocols/novell/novell.c:1478
 msgid "Telephone Number"
 msgstr "Telefonnummer"
 
-#: ../libpurple/protocols/novell/novell.c:1482
+#: ../libpurple/protocols/novell/novell.c:1484
 msgid "Personal Title"
 msgstr "Tittel"
 
 # VAR: E-post
-#: ../libpurple/protocols/novell/novell.c:1486
+#: ../libpurple/protocols/novell/novell.c:1488
 msgid "Mailstop"
 msgstr ""
 
-#: ../libpurple/protocols/novell/novell.c:1502
+#: ../libpurple/protocols/novell/novell.c:1504
 #: ../libpurple/protocols/sametime/sametime.c:4122
 msgid "User ID"
 msgstr "Brukerid"
@@ -8238,41 +8247,41 @@
 #. purple_notify_user_info_add_pair(user_info, tag, value);
 #. }
 #.
-#: ../libpurple/protocols/novell/novell.c:1515
+#: ../libpurple/protocols/novell/novell.c:1517
 msgid "Full name"
 msgstr "Fullt navn"
 
-#: ../libpurple/protocols/novell/novell.c:1637
+#: ../libpurple/protocols/novell/novell.c:1639
 #, c-format
 msgid "GroupWise Conference %d"
 msgstr "GroupWise-konferanse %d"
 
-#: ../libpurple/protocols/novell/novell.c:1668
+#: ../libpurple/protocols/novell/novell.c:1670
 msgid "Unable to make SSL connection to server."
 msgstr "Klarte ikke opprette SSL-forbindelse med tjeneren."
 
-#: ../libpurple/protocols/novell/novell.c:1720
+#: ../libpurple/protocols/novell/novell.c:1722
 msgid "Authenticating..."
 msgstr "Autentiserer..."
 
-#: ../libpurple/protocols/novell/novell.c:1732
+#: ../libpurple/protocols/novell/novell.c:1734
 msgid "Unable to connect to server."
 msgstr "Kan ikke koble til tjener."
 
-#: ../libpurple/protocols/novell/novell.c:1735
+#: ../libpurple/protocols/novell/novell.c:1737
 msgid "Waiting for response..."
 msgstr "Venter på svar..."
 
-#: ../libpurple/protocols/novell/novell.c:1870
+#: ../libpurple/protocols/novell/novell.c:1872
 #, c-format
 msgid "%s has been invited to this conversation."
 msgstr "%s har blitt invitert til denne samtalen."
 
-#: ../libpurple/protocols/novell/novell.c:1898
+#: ../libpurple/protocols/novell/novell.c:1900
 msgid "Invitation to Conversation"
 msgstr "Invitasjon til samtale"
 
-#: ../libpurple/protocols/novell/novell.c:1899
+#: ../libpurple/protocols/novell/novell.c:1901
 #, c-format
 msgid ""
 "Invitation from: %s\n"
@@ -8283,43 +8292,34 @@
 "\n"
 "Sent: %s"
 
-#: ../libpurple/protocols/novell/novell.c:1901
+#: ../libpurple/protocols/novell/novell.c:1903
 msgid "Would you like to join the conversation?"
 msgstr "Ønsker du å bli med i samtalen?"
 
-#. we don't want to reconnect in this case
-#: ../libpurple/protocols/novell/novell.c:2012
+#: ../libpurple/protocols/novell/novell.c:2017
 msgid "You have been logged out because you logged in at another workstation."
-msgstr ""
-"Du ble logget av fordi du har logget på med dette skjermnavnet et annet sted."
-
-#: ../libpurple/protocols/novell/novell.c:2069
-#, c-format
-msgid ""
-"%s appears to be offline and did not receive the message that you just sent."
+msgstr "Du ble logget av fordi du har logget på med dette skjermnavnet et annet sted."
+
+#: ../libpurple/protocols/novell/novell.c:2074
+#, c-format
+msgid "%s appears to be offline and did not receive the message that you just sent."
 msgstr "%s ser ut til å være  frakoplet, og mottok ikke meldingen du sendte."
 
 #. TODO: Would be nice to prompt if not set!
 #. *  purple_request_fields(gc, _("Server Address"),...);
 #.
 #. ...but for now just error out with a nice message.
-#: ../libpurple/protocols/novell/novell.c:2167
-msgid ""
-"Unable to connect to server. Please enter the address of the server you wish "
-"to connect to."
-msgstr ""
-"Klarte ikke kople til tjener, skriv inn adressen til tjeneren du ønsker å "
-"kople til."
-
-#: ../libpurple/protocols/novell/novell.c:2195
+#: ../libpurple/protocols/novell/novell.c:2172
+msgid "Unable to connect to server. Please enter the address of the server you wish to connect to."
+msgstr "Klarte ikke kople til tjener, skriv inn adressen til tjeneren du ønsker å kople til."
+
+#: ../libpurple/protocols/novell/novell.c:2200
 msgid "Error. SSL support is not installed."
 msgstr "Feil: SSL-støtte er ikke installert."
 
-#: ../libpurple/protocols/novell/novell.c:2504
-#, c-format
+#: ../libpurple/protocols/novell/novell.c:2509
 msgid "This conference has been closed. No more messages can be sent."
-msgstr ""
-"Denne konferansen har blitt stengt, ingen flere meldinger kan bli sendt."
+msgstr "Denne konferansen har blitt stengt, ingen flere meldinger kan bli sendt."
 
 #. *< type
 #. *< ui_requirement
@@ -8331,43 +8331,51 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/novell/novell.c:3518
-#: ../libpurple/protocols/novell/novell.c:3520
+#: ../libpurple/protocols/novell/novell.c:3523
+#: ../libpurple/protocols/novell/novell.c:3525
 msgid "Novell GroupWise Messenger Protocol Plugin"
 msgstr "Novel GroupWise Messenger protolltillegg"
 
-#: ../libpurple/protocols/novell/novell.c:3545
+#: ../libpurple/protocols/novell/novell.c:3550
 msgid "Server address"
 msgstr "Tjeneradresse"
 
-#: ../libpurple/protocols/novell/novell.c:3549
+#: ../libpurple/protocols/novell/novell.c:3554
 msgid "Server port"
 msgstr "Tjenerport"
 
-#: ../libpurple/protocols/oscar/flap_connection.c:387
-#: ../libpurple/protocols/yahoo/yahoo.c:2469
-#: ../libpurple/protocols/yahoo/yahoo.c:2636
-#: ../libpurple/protocols/yahoo/ycht.c:481 ../libpurple/proxy.c:581
-#: ../libpurple/proxy.c:1116 ../libpurple/proxy.c:1225
-#: ../libpurple/proxy.c:1325 ../libpurple/proxy.c:1453
+#: ../libpurple/protocols/oscar/flap_connection.c:389
+#: ../libpurple/protocols/yahoo/yahoo.c:2468
+#: ../libpurple/protocols/yahoo/yahoo.c:2635
+#: ../libpurple/protocols/yahoo/ycht.c:481
+#: ../libpurple/proxy.c:581
+#: ../libpurple/proxy.c:1116
+#: ../libpurple/proxy.c:1225
+#: ../libpurple/proxy.c:1325
+#: ../libpurple/proxy.c:1453
 #, fuzzy
 msgid "Server closed the connection."
 msgstr "Feil: kunne ikke koble til"
 
-#: ../libpurple/protocols/oscar/flap_connection.c:389
-#: ../libpurple/protocols/yahoo/yahoo.c:2463
-#: ../libpurple/protocols/yahoo/yahoo.c:2630 ../libpurple/proxy.c:593
-#: ../libpurple/proxy.c:1128 ../libpurple/proxy.c:1237
-#: ../libpurple/proxy.c:1337 ../libpurple/proxy.c:1465
+#: ../libpurple/protocols/oscar/flap_connection.c:391
+#: ../libpurple/protocols/yahoo/yahoo.c:2462
+#: ../libpurple/protocols/yahoo/yahoo.c:2629
+#: ../libpurple/proxy.c:593
+#: ../libpurple/proxy.c:1128
+#: ../libpurple/proxy.c:1237
+#: ../libpurple/proxy.c:1337
+#: ../libpurple/proxy.c:1465
 #, fuzzy, c-format
 msgid ""
 "Lost connection with server:\n"
 "%s"
 msgstr "Du har blitt koblet fra tjeneren."
 
-#: ../libpurple/protocols/oscar/flap_connection.c:392
-#: ../libpurple/proxy.c:1145 ../libpurple/proxy.c:1250
-#: ../libpurple/proxy.c:1349 ../libpurple/proxy.c:1421
+#: ../libpurple/protocols/oscar/flap_connection.c:394
+#: ../libpurple/proxy.c:1145
+#: ../libpurple/proxy.c:1250
+#: ../libpurple/proxy.c:1349
+#: ../libpurple/proxy.c:1421
 #: ../libpurple/proxy.c:1478
 #, fuzzy
 msgid "Received invalid data on connection with server."
@@ -8406,7 +8414,7 @@
 msgstr "IRC-protokolltillegg"
 
 #: ../libpurple/protocols/oscar/libicq.c:147
-#: ../libpurple/protocols/yahoo/yahoo.c:4410
+#: ../libpurple/protocols/yahoo/yahoo.c:4409
 #: ../libpurple/protocols/zephyr/zephyr.c:2997
 msgid "Encoding"
 msgstr "Tegnkoding:"
@@ -8541,25 +8549,18 @@
 msgstr "Ikke mens du er på AOL"
 
 #: ../libpurple/protocols/oscar/oscar.c:348
-msgid ""
-"(There was an error receiving this message.  The buddy you are speaking with "
-"is probably using a different encoding than expected.  If you know what "
-"encoding he is using, you can specify it in the advanced account options for "
-"your AIM/ICQ account.)"
+msgid "(There was an error receiving this message.  The buddy you are speaking with is probably using a different encoding than expected.  If you know what encoding he is using, you can specify it in the advanced account options for your AIM/ICQ account.)"
 msgstr ""
 
 # Lusete klient :P
 #: ../libpurple/protocols/oscar/oscar.c:457
 #, fuzzy, c-format
-msgid ""
-"(There was an error receiving this message.  Either you and %s have "
-"different encodings selected, or %s has a buggy client.)"
-msgstr ""
-"(Det oppsto en feil under mottak av denne meldingen. Kontakten du snakker "
-"til har sannsynligvis en lusete klient.)"
+msgid "(There was an error receiving this message.  Either you and %s have different encodings selected, or %s has a buggy client.)"
+msgstr "(Det oppsto en feil under mottak av denne meldingen. Kontakten du snakker til har sannsynligvis en lusete klient.)"
 
 #. Label
-#: ../libpurple/protocols/oscar/oscar.c:639 ../pidgin/gtkutils.c:2387
+#: ../libpurple/protocols/oscar/oscar.c:639
+#: ../pidgin/gtkutils.c:2387
 #: ../pidgin/gtkutils.c:2417
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:332
 msgid "Buddy Icon"
@@ -8582,7 +8583,7 @@
 msgstr "Samtale"
 
 #: ../libpurple/protocols/oscar/oscar.c:651
-#: ../libpurple/protocols/oscar/oscar.c:6010
+#: ../libpurple/protocols/oscar/oscar.c:6008
 msgid "Get File"
 msgstr "Laste ned fil"
 
@@ -8655,49 +8656,48 @@
 msgstr "Kamera"
 
 #: ../libpurple/protocols/oscar/oscar.c:725
-#: ../libpurple/protocols/oscar/oscar.c:5780
-#, c-format
+#: ../libpurple/protocols/oscar/oscar.c:5778
 msgid "Free For Chat"
 msgstr "Tilgjengelig for samtale"
 
 #: ../libpurple/protocols/oscar/oscar.c:729
-#: ../libpurple/protocols/oscar/oscar.c:5815
-#, c-format
+#: ../libpurple/protocols/oscar/oscar.c:5813
 msgid "Not Available"
 msgstr "Ikke tilgjengelig"
 
 #: ../libpurple/protocols/oscar/oscar.c:731
-#: ../libpurple/protocols/oscar/oscar.c:5801
-#, c-format
+#: ../libpurple/protocols/oscar/oscar.c:5799
 msgid "Occupied"
 msgstr "Opptatt"
 
 #: ../libpurple/protocols/oscar/oscar.c:735
-#, fuzzy, c-format
+#, fuzzy
 msgid "Web Aware"
 msgstr "Web-oppmerksom"
 
-#: ../libpurple/protocols/oscar/oscar.c:737 ../libpurple/protocols/qq/qq.c:183
+#: ../libpurple/protocols/oscar/oscar.c:737
+#: ../libpurple/protocols/qq/qq.c:183
 #: ../libpurple/protocols/qq/qq.c:288
-#: ../libpurple/protocols/yahoo/yahoo.c:3095 ../libpurple/status.c:157
-#: ../pidgin/gtkdocklet.c:446 ../pidgin/gtkstatusbox.c:1060
-#, c-format
+#: ../libpurple/protocols/yahoo/yahoo.c:3094
+#: ../libpurple/status.c:157
+#: ../pidgin/gtkdocklet.c:446
+#: ../pidgin/gtkstatusbox.c:1060
 msgid "Invisible"
 msgstr "Usynlig"
 
 #: ../libpurple/protocols/oscar/oscar.c:739
-#, c-format
 msgid "Online"
 msgstr "Pålogget"
 
 #: ../libpurple/protocols/oscar/oscar.c:838
-#: ../libpurple/protocols/oscar/oscar.c:3707
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:721 ../pidgin/gtkprefs.c:1126
+#: ../libpurple/protocols/oscar/oscar.c:3703
+#: ../libpurple/protocols/yahoo/yahoo_profile.c:721
+#: ../pidgin/gtkprefs.c:1128
 msgid "IP Address"
 msgstr "IP-adresse"
 
 #: ../libpurple/protocols/oscar/oscar.c:845
-#: ../libpurple/protocols/oscar/oscar.c:2891
+#: ../libpurple/protocols/oscar/oscar.c:2887
 msgid "Warning Level"
 msgstr "Advarselsnivåer"
 
@@ -8735,25 +8735,19 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:1260
 #, fuzzy, c-format
-msgid ""
-"Unable to login: Could not sign on as %s because the screen name is "
-"invalid.  Screen names must be a valid email address, or start with a letter "
-"and contain only letters, numbers and spaces, or contain only numbers."
-msgstr ""
-"Klarte ikke logge på: Kunne ikke logge på som %s fordi skjermnavnet er "
-"ugyldig. Skjermnavn må enten starte med en bokstav og kun inneholde tall, "
-"bokstaver, og mellomrom, eller bare inneholde tall."
+msgid "Unable to login: Could not sign on as %s because the screen name is invalid.  Screen names must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."
+msgstr "Klarte ikke logge på: Kunne ikke logge på som %s fordi skjermnavnet er ugyldig. Skjermnavn må enten starte med en bokstav og kun inneholde tall, bokstaver, og mellomrom, eller bare inneholde tall."
 
 #: ../libpurple/protocols/oscar/oscar.c:1345
-#: ../libpurple/protocols/yahoo/yahoo.c:2105
+#: ../libpurple/protocols/yahoo/yahoo.c:2104
 #, fuzzy
 msgid "Invalid screen name."
 msgstr "Ugyldig brukernavn,"
 
 #: ../libpurple/protocols/oscar/oscar.c:1352
-#: ../libpurple/protocols/qq/login_logout.c:483
-#: ../libpurple/protocols/simple/simple.c:1045
-#: ../libpurple/protocols/yahoo/yahoo.c:2126
+#: ../libpurple/protocols/qq/login_logout.c:485
+#: ../libpurple/protocols/simple/simple.c:1047
+#: ../libpurple/protocols/yahoo/yahoo.c:2125
 msgid "Incorrect password."
 msgstr "Feil passord."
 
@@ -8768,18 +8762,13 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:1366
 #: ../libpurple/protocols/oscar/oscar.c:1377
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. "
-"Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger."
+msgid "You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."
+msgstr "Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger."
 
 #: ../libpurple/protocols/oscar/oscar.c:1371
 #, c-format
 msgid "The client version you are using is too old. Please upgrade at %s"
-msgstr ""
-"Klientversjonen av programmet er for gammel. Vennligst oppgrader her: %s"
+msgstr "Klientversjonen av programmet er for gammel. Vennligst oppgrader her: %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:1410
 msgid "Could Not Connect"
@@ -8805,23 +8794,19 @@
 #. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons.
 #.
 #: ../libpurple/protocols/oscar/oscar.c:1452
-#: ../libpurple/protocols/oscar/oscar.c:2232
-#: ../libpurple/protocols/oscar/oscar.c:2281
-#: ../libpurple/protocols/oscar/oscar.c:5885
-#: ../libpurple/protocols/oscar/oscar.c:6166 ../libpurple/request.h:1388
-#, fuzzy
+#: ../libpurple/protocols/oscar/oscar.c:2228
+#: ../libpurple/protocols/oscar/oscar.c:2277
+#: ../libpurple/protocols/oscar/oscar.c:5883
+#: ../libpurple/protocols/oscar/oscar.c:6164
+#: ../libpurple/request.h:1388
 msgid "_OK"
 msgstr "_OK"
 
 #: ../libpurple/protocols/oscar/oscar.c:1491
 #: ../libpurple/protocols/oscar/oscar.c:1534
 #, c-format
-msgid ""
-"You may be disconnected shortly.  You may want to use TOC until this is "
-"fixed.  Check %s for updates."
-msgstr ""
-"Du kan bli frakoblet ganske snart. Du vil kanskje bruke TOC inntil dette er "
-"ordnet. Sjekk %s for oppdateringer."
+msgid "You may be disconnected shortly.  You may want to use TOC until this is fixed.  Check %s for updates."
+msgstr "Du kan bli frakoblet ganske snart. Du vil kanskje bruke TOC inntil dette er ordnet. Sjekk %s for oppdateringer."
 
 #: ../libpurple/protocols/oscar/oscar.c:1494
 #: ../libpurple/protocols/oscar/oscar.c:1537
@@ -8832,9 +8817,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:1622
 #, fuzzy, c-format
 msgid "You may be disconnected shortly.  Check %s for updates."
-msgstr ""
-"Du kan bli frakoblet ganske snart. Du vil kanskje bruke TOC inntil dette er "
-"ordnet. Sjekk %s for oppdateringer."
+msgstr "Du kan bli frakoblet ganske snart. Du vil kanskje bruke TOC inntil dette er ordnet. Sjekk %s for oppdateringer."
 
 #: ../libpurple/protocols/oscar/oscar.c:1625
 #, fuzzy
@@ -8850,55 +8833,50 @@
 msgid "Unable to initialize connection"
 msgstr "Kunne ikke lage ny tilkobling."
 
-#: ../libpurple/protocols/oscar/oscar.c:2202
+#: ../libpurple/protocols/oscar/oscar.c:2198
 msgid "Please authorize me so I can add you to my buddy list."
-msgstr ""
-"Vennligst godkjenn meg slik at jeg kan legge deg til i kontaktlisten min."
-
-#: ../libpurple/protocols/oscar/oscar.c:2230
+msgstr "Vennligst godkjenn meg slik at jeg kan legge deg til i kontaktlisten min."
+
+#: ../libpurple/protocols/oscar/oscar.c:2226
 msgid "Authorization Request Message:"
 msgstr "Beskjed i godkjenningsforespørsel:"
 
-#: ../libpurple/protocols/oscar/oscar.c:2231
+#: ../libpurple/protocols/oscar/oscar.c:2227
 msgid "Please authorize me!"
 msgstr "Vennligst godkjenn meg!"
 
-#: ../libpurple/protocols/oscar/oscar.c:2272
-#: ../libpurple/protocols/oscar/oscar.c:2280
-#: ../libpurple/protocols/oscar/oscar.c:2407
-#: ../libpurple/protocols/oscar/oscar.c:5263
-#: ../libpurple/protocols/yahoo/yahoo.c:1030
+#: ../libpurple/protocols/oscar/oscar.c:2268
+#: ../libpurple/protocols/oscar/oscar.c:2276
+#: ../libpurple/protocols/oscar/oscar.c:2403
+#: ../libpurple/protocols/oscar/oscar.c:5259
+#: ../libpurple/protocols/yahoo/yahoo.c:1029
 msgid "No reason given."
 msgstr "Ingen grunn spesifisert."
 
-#: ../libpurple/protocols/oscar/oscar.c:2279
+#: ../libpurple/protocols/oscar/oscar.c:2275
 msgid "Authorization Denied Message:"
 msgstr "Godkjenning nektet, grunn:"
 
-#: ../libpurple/protocols/oscar/oscar.c:2407
-#, c-format
-msgid ""
-"The user %u has denied your request to add them to your buddy list for the "
-"following reason:\n"
+#: ../libpurple/protocols/oscar/oscar.c:2403
+#, c-format
+msgid ""
+"The user %u has denied your request to add them to your buddy list for the following reason:\n"
 "%s"
 msgstr ""
-"Brukeren %u har avslått din forespørsel om å bli lagt til i din kontaktliste "
-"med følgende grunn:\n"
+"Brukeren %u har avslått din forespørsel om å bli lagt til i din kontaktliste med følgende grunn:\n"
 "%s"
 
-#: ../libpurple/protocols/oscar/oscar.c:2408
+#: ../libpurple/protocols/oscar/oscar.c:2404
 msgid "ICQ authorization denied."
 msgstr "ICQ-godkjenning avslått."
 
 #. Someone has granted you authorization
-#: ../libpurple/protocols/oscar/oscar.c:2415
+#: ../libpurple/protocols/oscar/oscar.c:2411
 #, c-format
 msgid "The user %u has granted your request to add them to your buddy list."
-msgstr ""
-"Brukeren %u har godtatt din forespørsel om å bli lagt til i kontaktlisten "
-"din."
-
-#: ../libpurple/protocols/oscar/oscar.c:2423
+msgstr "Brukeren %u har godtatt din forespørsel om å bli lagt til i kontaktlisten din."
+
+#: ../libpurple/protocols/oscar/oscar.c:2419
 #, c-format
 msgid ""
 "You have received a special message\n"
@@ -8911,7 +8889,7 @@
 "Fra: %s [%s]\n"
 "%s"
 
-#: ../libpurple/protocols/oscar/oscar.c:2431
+#: ../libpurple/protocols/oscar/oscar.c:2427
 #, c-format
 msgid ""
 "You have received an ICQ page\n"
@@ -8924,7 +8902,7 @@
 "Fra: %s [%s]\n"
 "%s"
 
-#: ../libpurple/protocols/oscar/oscar.c:2439
+#: ../libpurple/protocols/oscar/oscar.c:2435
 #, c-format
 msgid ""
 "You have received an ICQ e-mail from %s [%s]\n"
@@ -8937,69 +8915,60 @@
 "Beskjed:\n"
 "%s"
 
-#: ../libpurple/protocols/oscar/oscar.c:2460
+#: ../libpurple/protocols/oscar/oscar.c:2456
 #, c-format
 msgid "ICQ user %u has sent you a buddy: %s (%s)"
 msgstr "ICQ-brukeren %u har sent deg en kontakt: %s (%s)"
 
-#: ../libpurple/protocols/oscar/oscar.c:2466
+#: ../libpurple/protocols/oscar/oscar.c:2462
 msgid "Do you want to add this buddy to your buddy list?"
 msgstr "Ønsker du å legge denne kontakten til i kontaktlisten din?"
 
-#: ../libpurple/protocols/oscar/oscar.c:2471 ../pidgin/gtkroomlist.c:309
-#, fuzzy
+#: ../libpurple/protocols/oscar/oscar.c:2467
+#: ../pidgin/gtkroomlist.c:309
 msgid "_Add"
-msgstr "Legg til"
-
-#: ../libpurple/protocols/oscar/oscar.c:2472
-#, fuzzy
+msgstr "_Legg til"
+
+#: ../libpurple/protocols/oscar/oscar.c:2468
 msgid "_Decline"
-msgstr "Avslå"
-
-#: ../libpurple/protocols/oscar/oscar.c:2596
+msgstr "_Avslå"
+
+#: ../libpurple/protocols/oscar/oscar.c:2592
 #, c-format
 msgid "You missed %hu message from %s because it was invalid."
 msgid_plural "You missed %hu messages from %s because they were invalid."
 msgstr[0] "Du har gått glipp av %hu beskjed fra %s fordi den var ugyldig."
 msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi de var ugyldige."
 
-#: ../libpurple/protocols/oscar/oscar.c:2605
+#: ../libpurple/protocols/oscar/oscar.c:2601
 #, c-format
 msgid "You missed %hu message from %s because it was too large."
 msgid_plural "You missed %hu messages from %s because they were too large."
 msgstr[0] "Du har gått glipp av %hu beskjed fra %s fordi den var for stor."
 msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi de var for store."
 
-#: ../libpurple/protocols/oscar/oscar.c:2614
-#, c-format
-msgid ""
-"You missed %hu message from %s because the rate limit has been exceeded."
-msgid_plural ""
-"You missed %hu messages from %s because the rate limit has been exceeded."
-msgstr[0] ""
-"Du har gått glipp av %hu beskjed fra %s fordi hastighetsgrensen har blitt "
-"overskredet."
-msgstr[1] ""
-"Du har gått glipp av %hu beskjeder fra %s fordi hastighetsgrensen har blitt "
-"overskredet."
-
-#: ../libpurple/protocols/oscar/oscar.c:2623
+#: ../libpurple/protocols/oscar/oscar.c:2610
+#, c-format
+msgid "You missed %hu message from %s because the rate limit has been exceeded."
+msgid_plural "You missed %hu messages from %s because the rate limit has been exceeded."
+msgstr[0] "Du har gått glipp av %hu beskjed fra %s fordi hastighetsgrensen har blitt overskredet."
+msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi hastighetsgrensen har blitt overskredet."
+
+#: ../libpurple/protocols/oscar/oscar.c:2619
 #, c-format
 msgid "You missed %hu message from %s because he/she was too evil."
 msgid_plural "You missed %hu messages from %s because he/she was too evil."
-msgstr[0] ""
-"Du har gått glipp av %hu beskjed fra %s fordi vedkommende var for ond."
-msgstr[1] ""
-"Du har gått glipp av %hu beskjeder fra %s fordi vedkommende var for ond."
-
-#: ../libpurple/protocols/oscar/oscar.c:2632
+msgstr[0] "Du har gått glipp av %hu beskjed fra %s fordi vedkommende var for ond."
+msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi vedkommende var for ond."
+
+#: ../libpurple/protocols/oscar/oscar.c:2628
 #, c-format
 msgid "You missed %hu message from %s because you are too evil."
 msgid_plural "You missed %hu messages from %s because you are too evil."
 msgstr[0] "Du har gått glipp av %hu beskjed fra %s fordi du er for ond."
 msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi du er for ond."
 
-#: ../libpurple/protocols/oscar/oscar.c:2641
+#: ../libpurple/protocols/oscar/oscar.c:2637
 #, c-format
 msgid "You missed %hu message from %s for an unknown reason."
 msgid_plural "You missed %hu messages from %s for an unknown reason."
@@ -9007,559 +8976,465 @@
 msgstr[1] "Du har gått glipp av %hu beskjeder fra %s, ingen grunn oppgitt."
 
 #. Data is assumed to be the destination sn
-#: ../libpurple/protocols/oscar/oscar.c:2796
+#: ../libpurple/protocols/oscar/oscar.c:2792
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Kunne ikke sende beskjed: %s"
 
-#: ../libpurple/protocols/oscar/oscar.c:2796
-#: ../libpurple/protocols/oscar/oscar.c:2801
-#: ../libpurple/protocols/oscar/oscar.c:2865
+#: ../libpurple/protocols/oscar/oscar.c:2792
+#: ../libpurple/protocols/oscar/oscar.c:2797
+#: ../libpurple/protocols/oscar/oscar.c:2861
 msgid "Unknown reason."
 msgstr "Ukjent grunn."
 
-#: ../libpurple/protocols/oscar/oscar.c:2799
+#: ../libpurple/protocols/oscar/oscar.c:2795
 #: ../libpurple/protocols/sametime/sametime.c:2409
 #, c-format
 msgid "Unable to send message to %s:"
 msgstr "Kunne ikke sende beskjed til %s."
 
-#: ../libpurple/protocols/oscar/oscar.c:2865
+#: ../libpurple/protocols/oscar/oscar.c:2861
 #, c-format
 msgid "User information not available: %s"
 msgstr "Brukerinformasjon er ikke tilgjengelig: %s"
 
-#: ../libpurple/protocols/oscar/oscar.c:2896
+#: ../libpurple/protocols/oscar/oscar.c:2892
 msgid "Online Since"
 msgstr "Pålogget siden"
 
-#: ../libpurple/protocols/oscar/oscar.c:2901
+#: ../libpurple/protocols/oscar/oscar.c:2897
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1185
 msgid "Member Since"
 msgstr "Medlem siden"
 
-#: ../libpurple/protocols/oscar/oscar.c:2936
+#: ../libpurple/protocols/oscar/oscar.c:2932
 #, fuzzy
 msgid "Available Message"
 msgstr "Tilstedebeskjed:"
 
-#: ../libpurple/protocols/oscar/oscar.c:3044
+#: ../libpurple/protocols/oscar/oscar.c:3040
 msgid "Your AIM connection may be lost."
 msgstr "AIM-tilkoblingen kan være brutt."
 
 #. The conversion failed!
-#: ../libpurple/protocols/oscar/oscar.c:3232
-msgid ""
-"[Unable to display a message from this user because it contained invalid "
-"characters.]"
-msgstr ""
-"[Klarte ikke vise en melding fra denne brukeren da den inneholdt ugyldige "
-"tegn.]"
-
-#: ../libpurple/protocols/oscar/oscar.c:3396
-msgid ""
-"The last action you attempted could not be performed because you are over "
-"the rate limit. Please wait 10 seconds and try again."
-msgstr ""
-"Den siste kommandoen ble ikke utført fordi du har overskredet "
-"hastighetsgrensen. Vennligst vent 10 sekunder og prøv igjen."
-
-#: ../libpurple/protocols/oscar/oscar.c:3479
+#: ../libpurple/protocols/oscar/oscar.c:3228
+msgid "[Unable to display a message from this user because it contained invalid characters.]"
+msgstr "[Klarte ikke vise en melding fra denne brukeren da den inneholdt ugyldige tegn.]"
+
+#: ../libpurple/protocols/oscar/oscar.c:3392
+msgid "The last action you attempted could not be performed because you are over the rate limit. Please wait 10 seconds and try again."
+msgstr "Den siste kommandoen ble ikke utført fordi du har overskredet hastighetsgrensen. Vennligst vent 10 sekunder og prøv igjen."
+
+#: ../libpurple/protocols/oscar/oscar.c:3475
 #: ../libpurple/protocols/toc/toc.c:977
 #, c-format
 msgid "You have been disconnected from chat room %s."
 msgstr "Du har blitt koblet fra samtalegruppen %s."
 
-#: ../libpurple/protocols/oscar/oscar.c:3729
+#: ../libpurple/protocols/oscar/oscar.c:3725
 #: ../libpurple/protocols/silc/util.c:585
 #: ../libpurple/protocols/silc10/util.c:581
 msgid "Mobile Phone"
 msgstr "Mobiltelefon"
 
-#: ../libpurple/protocols/oscar/oscar.c:3759
+#: ../libpurple/protocols/oscar/oscar.c:3755
 msgid "Personal Web Page"
 msgstr "Personlig hjemmeside"
 
-#: ../libpurple/protocols/oscar/oscar.c:3783
+#: ../libpurple/protocols/oscar/oscar.c:3779
 #: ../libpurple/protocols/qq/buddy_info.c:40
 msgid "Additional Information"
 msgstr "Tilleggsinformasjon"
 
-#: ../libpurple/protocols/oscar/oscar.c:3791
-#: ../libpurple/protocols/oscar/oscar.c:3804
+#: ../libpurple/protocols/oscar/oscar.c:3787
+#: ../libpurple/protocols/oscar/oscar.c:3800
 msgid "Zip Code"
 msgstr "Postnummer"
 
-#: ../libpurple/protocols/oscar/oscar.c:3815
+#: ../libpurple/protocols/oscar/oscar.c:3811
 msgid "Division"
 msgstr "Avdeling"
 
-#: ../libpurple/protocols/oscar/oscar.c:3816
+#: ../libpurple/protocols/oscar/oscar.c:3812
 msgid "Position"
 msgstr "Stilling"
 
-#: ../libpurple/protocols/oscar/oscar.c:3818
+#: ../libpurple/protocols/oscar/oscar.c:3814
 msgid "Web Page"
 msgstr "Hjemmeside"
 
-#: ../libpurple/protocols/oscar/oscar.c:3821
+#: ../libpurple/protocols/oscar/oscar.c:3817
 msgid "Work Information"
 msgstr "Arbeid ekstra info"
 
-#: ../libpurple/protocols/oscar/oscar.c:3877
+#: ../libpurple/protocols/oscar/oscar.c:3873
 msgid "Pop-Up Message"
 msgstr "Varslingsbeskjed"
 
-#: ../libpurple/protocols/oscar/oscar.c:3917
-#, fuzzy, c-format
+#: ../libpurple/protocols/oscar/oscar.c:3913
+#, c-format
 msgid "The following screen name is associated with %s"
 msgid_plural "The following screen names are associated with %s"
-msgstr[0] "De følgende skjermnavnene er assosierte med %s"
+msgstr[0] "Det følgende skjermnavnet er assosierte med %s"
 msgstr[1] "De følgende skjermnavnene er assosierte med %s"
 
-#: ../libpurple/protocols/oscar/oscar.c:3922
-#, fuzzy
+#: ../libpurple/protocols/oscar/oscar.c:3918
 msgid "Screen name"
-msgstr "_Skjermnavn"
-
-#: ../libpurple/protocols/oscar/oscar.c:3948
+msgstr "Skjermnavn"
+
+#: ../libpurple/protocols/oscar/oscar.c:3944
 #, c-format
 msgid "No results found for e-mail address %s"
 msgstr "Ingen resultater funnet for e-postadresse %s"
 
-#: ../libpurple/protocols/oscar/oscar.c:3969
+#: ../libpurple/protocols/oscar/oscar.c:3965
 #, c-format
 msgid "You should receive an e-mail asking to confirm %s."
 msgstr "Du vil motta en e-post hvor du blir bedt om å bekrefte %s."
 
-#: ../libpurple/protocols/oscar/oscar.c:3971
+#: ../libpurple/protocols/oscar/oscar.c:3967
 msgid "Account Confirmation Requested"
 msgstr "Kontobekreftelse forespurt"
 
-#: ../libpurple/protocols/oscar/oscar.c:4002
-#, c-format
+#: ../libpurple/protocols/oscar/oscar.c:3998
 msgid "Error Changing Account Info"
 msgstr "Feil ved endring av kontoinformasjon"
 
-#: ../libpurple/protocols/oscar/oscar.c:4005
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to format screen name because the requested screen name "
-"differs from the original."
-msgstr ""
-"Feil 0x%04x: Kunne ikke formatere skjermnavnet fordi det forespurte "
-"skjermnavnet er forskjellig fra det opprinnelige."
-
-#: ../libpurple/protocols/oscar/oscar.c:4008
+#: ../libpurple/protocols/oscar/oscar.c:4001
+#, c-format
+msgid "Error 0x%04x: Unable to format screen name because the requested screen name differs from the original."
+msgstr "Feil 0x%04x: Kunne ikke formatere skjermnavnet fordi det forespurte skjermnavnet er forskjellig fra det opprinnelige."
+
+#: ../libpurple/protocols/oscar/oscar.c:4004
 #, fuzzy, c-format
 msgid "Error 0x%04x: Unable to format screen name because it is invalid."
-msgstr ""
-"Feil 0x%04x: Kunne ikke formatere skjermnavnet fordi det forespurte "
-"skjermnavnet er for langt."
-
-#: ../libpurple/protocols/oscar/oscar.c:4011
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to format screen name because the requested screen name "
-"is too long."
-msgstr ""
-"Feil 0x%04x: Kunne ikke formatere skjermnavnet fordi det forespurte "
-"skjermnavnet er for langt."
-
-#: ../libpurple/protocols/oscar/oscar.c:4014
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
-"request pending for this screen name."
-msgstr ""
-"Feil 0x%04x: Kunne ikke endre e-postadressen fordi det finnes en utestående "
-"forespørsel for dette skjermnavnet."
-
-#: ../libpurple/protocols/oscar/oscar.c:4017
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
-"too many screen names associated with it."
-msgstr ""
-"Feil 0x%04x: Kunne ikke endre e-postadressen fordi den gitte adressen har "
-"for mange skjermnavn assosiert ved seg."
-
-#: ../libpurple/protocols/oscar/oscar.c:4020
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
-"invalid."
-msgstr ""
-"Feil 0x%04x: Kunne ikke endre e-postadressen fordi den gitte adressen er "
-"ugyldig."
-
-#: ../libpurple/protocols/oscar/oscar.c:4023
+msgstr "Feil 0x%04x: Kunne ikke formatere skjermnavnet fordi det forespurte skjermnavnet er for langt."
+
+#: ../libpurple/protocols/oscar/oscar.c:4007
+#, c-format
+msgid "Error 0x%04x: Unable to format screen name because the requested screen name is too long."
+msgstr "Feil 0x%04x: Kunne ikke formatere skjermnavnet fordi det forespurte skjermnavnet er for langt."
+
+#: ../libpurple/protocols/oscar/oscar.c:4010
+#, c-format
+msgid "Error 0x%04x: Unable to change e-mail address because there is already a request pending for this screen name."
+msgstr "Feil 0x%04x: Kunne ikke endre e-postadressen fordi det finnes en utestående forespørsel for dette skjermnavnet."
+
+#: ../libpurple/protocols/oscar/oscar.c:4013
+#, c-format
+msgid "Error 0x%04x: Unable to change e-mail address because the given address has too many screen names associated with it."
+msgstr "Feil 0x%04x: Kunne ikke endre e-postadressen fordi den gitte adressen har for mange skjermnavn assosiert ved seg."
+
+#: ../libpurple/protocols/oscar/oscar.c:4016
+#, c-format
+msgid "Error 0x%04x: Unable to change e-mail address because the given address is invalid."
+msgstr "Feil 0x%04x: Kunne ikke endre e-postadressen fordi den gitte adressen er ugyldig."
+
+#: ../libpurple/protocols/oscar/oscar.c:4019
 #, c-format
 msgid "Error 0x%04x: Unknown error."
 msgstr "Feil 0x%04x: Ukjent feil."
 
-#: ../libpurple/protocols/oscar/oscar.c:4033
+#: ../libpurple/protocols/oscar/oscar.c:4029
 #, c-format
 msgid "The e-mail address for %s is %s"
 msgstr "E-postadressen for %s er %s"
 
-#: ../libpurple/protocols/oscar/oscar.c:4035
+#: ../libpurple/protocols/oscar/oscar.c:4031
 msgid "Account Info"
 msgstr "Kontoinformasjon"
 
-#: ../libpurple/protocols/oscar/oscar.c:4218
-msgid ""
-"Your IM Image was not sent. You must be Direct Connected to send IM Images."
-msgstr ""
-"Ditt direktemeldingsbilde ble ikke sendt. Du må være direkte tilkoplet for å "
-"sende direktemeldingsbilder"
-
-#: ../libpurple/protocols/oscar/oscar.c:4489
+#: ../libpurple/protocols/oscar/oscar.c:4214
+msgid "Your IM Image was not sent. You must be Direct Connected to send IM Images."
+msgstr "Ditt direktemeldingsbilde ble ikke sendt. Du må være direkte tilkoplet for å sende direktemeldingsbilder"
+
+#: ../libpurple/protocols/oscar/oscar.c:4485
 msgid "Unable to set AIM profile."
 msgstr "Kunne ikke sette AIM-profil."
 
-#: ../libpurple/protocols/oscar/oscar.c:4490
-msgid ""
-"You have probably requested to set your profile before the login procedure "
-"completed.  Your profile remains unset; try setting it again when you are "
-"fully connected."
-msgstr ""
-"Du har antakeligvis prøvd å lagre profilinformasjon før "
-"innloggingsprosedyren var ferdig. Din profil er ennå ikke blitt lagret. Prøv "
-"å lagre den igjen når du er ferdig pålogget."
-
-#: ../libpurple/protocols/oscar/oscar.c:4504
-#, fuzzy, c-format
-msgid ""
-"The maximum profile length of %d byte has been exceeded.  It has been "
-"truncated for you."
-msgid_plural ""
-"The maximum profile length of %d bytes has been exceeded.  It has been "
-"truncated for you."
-msgstr[0] ""
-"Maksimum profillengde på %d bytes har blitt overskredet. Gaim har avkortet "
-"den før den ble lagret."
-msgstr[1] ""
-"Maksimum profillengde på %d bytes har blitt overskredet. Gaim har avkortet "
-"den før den ble lagret."
-
-#: ../libpurple/protocols/oscar/oscar.c:4509
+#: ../libpurple/protocols/oscar/oscar.c:4486
+msgid "You have probably requested to set your profile before the login procedure completed.  Your profile remains unset; try setting it again when you are fully connected."
+msgstr "Du har antakeligvis prøvd å lagre profilinformasjon før innloggingsprosedyren var ferdig. Din profil er ennå ikke blitt lagret. Prøv å lagre den igjen når du er ferdig pålogget."
+
+#: ../libpurple/protocols/oscar/oscar.c:4500
+#, fuzzy, c-format
+msgid "The maximum profile length of %d byte has been exceeded.  It has been truncated for you."
+msgid_plural "The maximum profile length of %d bytes has been exceeded.  It has been truncated for you."
+msgstr[0] "Maksimum profillengde på %d byte har blitt overskredet. Gaim har avkortet den før den ble lagret."
+msgstr[1] "Maksimum profillengde på %d bytes har blitt overskredet. Gaim har avkortet den før den ble lagret."
+
+#: ../libpurple/protocols/oscar/oscar.c:4505
 msgid "Profile too long."
 msgstr "Profilen er for stor."
 
-#: ../libpurple/protocols/oscar/oscar.c:4554
-#, fuzzy, c-format
-msgid ""
-"The maximum away message length of %d byte has been exceeded.  It has been "
-"truncated for you."
-msgid_plural ""
-"The maximum away message length of %d bytes has been exceeded.  It has been "
-"truncated for you."
-msgstr[0] ""
-"Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. "
-"Gaim har avkortet den."
-msgstr[1] ""
-"Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. "
-"Gaim har avkortet den."
-
-#: ../libpurple/protocols/oscar/oscar.c:4559
+#: ../libpurple/protocols/oscar/oscar.c:4550
+#, fuzzy, c-format
+msgid "The maximum away message length of %d byte has been exceeded.  It has been truncated for you."
+msgid_plural "The maximum away message length of %d bytes has been exceeded.  It has been truncated for you."
+msgstr[0] "Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. Gaim har avkortet den."
+msgstr[1] "Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. Gaim har avkortet den."
+
+#: ../libpurple/protocols/oscar/oscar.c:4555
 msgid "Away message too long."
 msgstr "Fraværsbeskjeden er for lang."
 
-#: ../libpurple/protocols/oscar/oscar.c:4628
-#, fuzzy, c-format
-msgid ""
-"Could not add the buddy %s because the screen name is invalid.  Screen names "
-"must be a valid email address, or start with a letter and contain only "
-"letters, numbers and spaces, or contain only numbers."
-msgstr ""
-"Klarte ikke legge til kontakten %s fordi skjermnavnet er ugyldig. Skjernavn "
-"må enten starte med en bokstav og inneholde kun bokstaver, tall, og "
-"mellomrom, eller bare inneholde nummer."
-
-#: ../libpurple/protocols/oscar/oscar.c:4630
-#: ../libpurple/protocols/oscar/oscar.c:5060
-#: ../libpurple/protocols/oscar/oscar.c:5075
+#: ../libpurple/protocols/oscar/oscar.c:4624
+#, fuzzy, c-format
+msgid "Could not add the buddy %s because the screen name is invalid.  Screen names must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."
+msgstr "Klarte ikke legge til kontakten %s fordi skjermnavnet er ugyldig. Skjernavn må enten starte med en bokstav og inneholde kun bokstaver, tall, og mellomrom, eller bare inneholde nummer."
+
+#: ../libpurple/protocols/oscar/oscar.c:4626
+#: ../libpurple/protocols/oscar/oscar.c:5056
+#: ../libpurple/protocols/oscar/oscar.c:5071
 msgid "Unable To Add"
 msgstr "Kunne ikke legge til"
 
-#: ../libpurple/protocols/oscar/oscar.c:4739
+#: ../libpurple/protocols/oscar/oscar.c:4735
 msgid "Unable To Retrieve Buddy List"
 msgstr "Kunne ikke hente kontaktliste"
 
-#: ../libpurple/protocols/oscar/oscar.c:4740
-#, fuzzy
-msgid ""
-"The AIM servers were temporarily unable to send your buddy list.  Your buddy "
-"list is not lost, and will probably become available in a few hours."
-msgstr ""
-"Gaim klarte ikke å hente kontaktlisten din fra AIM-tjenerne. Kontaktlisten "
-"er ikke tapt, og vil sannsynligvis bli tilgjengelig i løpet av få timer."
-
-#: ../libpurple/protocols/oscar/oscar.c:4922
-#: ../libpurple/protocols/oscar/oscar.c:4924
-#: ../libpurple/protocols/oscar/oscar.c:5140
-#: ../libpurple/protocols/oscar/oscar.c:5141
-#: ../libpurple/protocols/oscar/oscar.c:5146
+#: ../libpurple/protocols/oscar/oscar.c:4736
+#, fuzzy
+msgid "The AIM servers were temporarily unable to send your buddy list.  Your buddy list is not lost, and will probably become available in a few hours."
+msgstr "Gaim klarte ikke å hente kontaktlisten din fra AIM-tjenerne. Kontaktlisten er ikke tapt, og vil sannsynligvis bli tilgjengelig i løpet av få timer."
+
+#: ../libpurple/protocols/oscar/oscar.c:4918
+#: ../libpurple/protocols/oscar/oscar.c:4920
+#: ../libpurple/protocols/oscar/oscar.c:5136
+#: ../libpurple/protocols/oscar/oscar.c:5137
+#: ../libpurple/protocols/oscar/oscar.c:5142
 msgid "Orphans"
 msgstr "Ugrupperte"
 
-#: ../libpurple/protocols/oscar/oscar.c:5058
-#, c-format
-msgid ""
-"Could not add the buddy %s because you have too many buddies in your buddy "
-"list.  Please remove one and try again."
-msgstr ""
-"Kunne ikke legge til kontakten %s fordi du har for mange kontakter i listen. "
-"Vennligst fjern en og prøv igjen."
-
-#: ../libpurple/protocols/oscar/oscar.c:5058
-#: ../libpurple/protocols/oscar/oscar.c:5073
+#: ../libpurple/protocols/oscar/oscar.c:5054
+#, c-format
+msgid "Could not add the buddy %s because you have too many buddies in your buddy list.  Please remove one and try again."
+msgstr "Kunne ikke legge til kontakten %s fordi du har for mange kontakter i listen. Vennligst fjern en og prøv igjen."
+
+#: ../libpurple/protocols/oscar/oscar.c:5054
+#: ../libpurple/protocols/oscar/oscar.c:5069
 msgid "(no name)"
 msgstr "(uten navn)"
 
-#: ../libpurple/protocols/oscar/oscar.c:5072
+#: ../libpurple/protocols/oscar/oscar.c:5068
 #, fuzzy, c-format
 msgid "Could not add the buddy %s for an unknown reason."
 msgstr "Din kommando feilet av ukjent årsak."
 
-#: ../libpurple/protocols/oscar/oscar.c:5178
-#, c-format
-msgid ""
-"The user %s has given you permission to add you to their buddy list.  Do you "
-"want to add them?"
-msgstr ""
-"Brukeren %s har gitt deg tillatelse til å legge deg til i kontaktlisten sin. "
-"Ønsker du å legge til vedkommende?"
-
-#: ../libpurple/protocols/oscar/oscar.c:5186
+#: ../libpurple/protocols/oscar/oscar.c:5174
+#, c-format
+msgid "The user %s has given you permission to add you to their buddy list.  Do you want to add them?"
+msgstr "Brukeren %s har gitt deg tillatelse til å legge deg til i kontaktlisten sin. Ønsker du å legge til vedkommende?"
+
+#: ../libpurple/protocols/oscar/oscar.c:5182
 msgid "Authorization Given"
 msgstr "Godkjent"
 
 #. Granted
-#: ../libpurple/protocols/oscar/oscar.c:5259
+#: ../libpurple/protocols/oscar/oscar.c:5255
 #, c-format
 msgid "The user %s has granted your request to add them to your buddy list."
-msgstr ""
-"Brukeren %s har akseptert din forespørsel om å bli lagt til i kontaktlisten "
-"din."
-
-#: ../libpurple/protocols/oscar/oscar.c:5260
+msgstr "Brukeren %s har akseptert din forespørsel om å bli lagt til i kontaktlisten din."
+
+#: ../libpurple/protocols/oscar/oscar.c:5256
 msgid "Authorization Granted"
 msgstr "Godkjent"
 
 #. Denied
-#: ../libpurple/protocols/oscar/oscar.c:5263
-#, c-format
-msgid ""
-"The user %s has denied your request to add them to your buddy list for the "
-"following reason:\n"
+#: ../libpurple/protocols/oscar/oscar.c:5259
+#, c-format
+msgid ""
+"The user %s has denied your request to add them to your buddy list for the following reason:\n"
 "%s"
 msgstr ""
-"Brukeren %s har avslått din forespørsel om å bli lagt til i din kontaktliste "
-"med følgende grun:\n"
+"Brukeren %s har avslått din forespørsel om å bli lagt til i din kontaktliste med følgende grun:\n"
 "%s"
 
-#: ../libpurple/protocols/oscar/oscar.c:5264
+#: ../libpurple/protocols/oscar/oscar.c:5260
 msgid "Authorization Denied"
 msgstr "Ikke godkjent"
 
-#: ../libpurple/protocols/oscar/oscar.c:5300
+#: ../libpurple/protocols/oscar/oscar.c:5296
 #: ../libpurple/protocols/toc/toc.c:1371
 msgid "_Exchange:"
 msgstr "_Utveksling:"
 
-#: ../libpurple/protocols/oscar/oscar.c:5340
+#: ../libpurple/protocols/oscar/oscar.c:5336
 msgid "Invalid chat name specified."
 msgstr "Ugyldig gruppesamtalenavn oppgitt."
 
-#: ../libpurple/protocols/oscar/oscar.c:5409
+#: ../libpurple/protocols/oscar/oscar.c:5405
 msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
-msgstr ""
-"Ditt direktemeldingsbilde ble ikke sendt. Du kan ikke sende "
-"direktemeldingsbilder i AIM-samtalegrupper."
-
-#: ../libpurple/protocols/oscar/oscar.c:5569
-#: ../libpurple/protocols/oscar/oscar.c:5574
+msgstr "Ditt direktemeldingsbilde ble ikke sendt. Du kan ikke sende direktemeldingsbilder i AIM-samtalegrupper."
+
+#: ../libpurple/protocols/oscar/oscar.c:5567
+#: ../libpurple/protocols/oscar/oscar.c:5572
 msgid "Away Message"
 msgstr "Fraværsbeskjed"
 
-#: ../libpurple/protocols/oscar/oscar.c:5574
-#, fuzzy
+#: ../libpurple/protocols/oscar/oscar.c:5572
 msgid "<i>(retrieving)</i>"
-msgstr " <i>(registrert)</i>"
-
-#: ../libpurple/protocols/oscar/oscar.c:5774
+msgstr "<i>(mottar)</i>"
+
+#: ../libpurple/protocols/oscar/oscar.c:5772
 msgid "iTunes Music Store Link"
 msgstr ""
 
-#: ../libpurple/protocols/oscar/oscar.c:5882
+#: ../libpurple/protocols/oscar/oscar.c:5880
 #, c-format
 msgid "Buddy Comment for %s"
 msgstr "Kontaktkommentar for %s"
 
-#: ../libpurple/protocols/oscar/oscar.c:5883
+#: ../libpurple/protocols/oscar/oscar.c:5881
 msgid "Buddy Comment:"
 msgstr "Kontaktkommentar:"
 
-#: ../libpurple/protocols/oscar/oscar.c:5930
+#: ../libpurple/protocols/oscar/oscar.c:5928
 #, c-format
 msgid "You have selected to open a Direct IM connection with %s."
 msgstr "Du har valgt å åpne en direktemelding til %s."
 
-#: ../libpurple/protocols/oscar/oscar.c:5934
-#, fuzzy
-msgid ""
-"Because this reveals your IP address, it may be considered a security risk.  "
-"Do you wish to continue?"
-msgstr ""
-"Dette vil avsløre din IP-adresse til mottakeren, og medføre en (minimal) "
-"sikkerhetsrisiko. Ønsker du å fortsette?"
-
-#: ../libpurple/protocols/oscar/oscar.c:5940
+#: ../libpurple/protocols/oscar/oscar.c:5932
+#, fuzzy
+msgid "Because this reveals your IP address, it may be considered a security risk.  Do you wish to continue?"
+msgstr "Dette vil avsløre din IP-adresse til mottakeren, og medføre en (minimal) sikkerhetsrisiko. Ønsker du å fortsette?"
+
+#: ../libpurple/protocols/oscar/oscar.c:5938
 #: ../libpurple/protocols/oscar/peer.c:1045
 #, fuzzy
 msgid "C_onnect"
 msgstr "Koble til"
 
-#: ../libpurple/protocols/oscar/oscar.c:5975
+#: ../libpurple/protocols/oscar/oscar.c:5973
 #, fuzzy
 msgid "Get AIM Info"
 msgstr "Hent informasjon"
 
-#: ../libpurple/protocols/oscar/oscar.c:5981
+#: ../libpurple/protocols/oscar/oscar.c:5979
 msgid "Edit Buddy Comment"
 msgstr "Rediger kontaktkommentar"
 
-#: ../libpurple/protocols/oscar/oscar.c:5989
+#: ../libpurple/protocols/oscar/oscar.c:5987
 msgid "Get Status Msg"
 msgstr "Hent statusbeskjed"
 
-#: ../libpurple/protocols/oscar/oscar.c:6002
+#: ../libpurple/protocols/oscar/oscar.c:6000
 msgid "Direct IM"
 msgstr "Direkte samtale"
 
-#: ../libpurple/protocols/oscar/oscar.c:6024
+#: ../libpurple/protocols/oscar/oscar.c:6022
 msgid "Re-request Authorization"
 msgstr "Spør på nytt om godkjenning"
 
-#: ../libpurple/protocols/oscar/oscar.c:6083
+#: ../libpurple/protocols/oscar/oscar.c:6081
 #, fuzzy
 msgid "Require authorization"
 msgstr "Spør om godkjenning"
 
-#: ../libpurple/protocols/oscar/oscar.c:6086
+#: ../libpurple/protocols/oscar/oscar.c:6084
 msgid "Web aware (enabling this will cause you to receive SPAM!)"
 msgstr ""
 
-#: ../libpurple/protocols/oscar/oscar.c:6091
+#: ../libpurple/protocols/oscar/oscar.c:6089
 #, fuzzy
 msgid "ICQ Privacy Options"
 msgstr "Proxyinnstillinger"
 
-#: ../libpurple/protocols/oscar/oscar.c:6110
+#: ../libpurple/protocols/oscar/oscar.c:6108
 msgid "The new formatting is invalid."
 msgstr "Den nye formateringen er ugyldig."
 
-#: ../libpurple/protocols/oscar/oscar.c:6111
+#: ../libpurple/protocols/oscar/oscar.c:6109
 msgid "Screen name formatting can change only capitalization and whitespace."
-msgstr ""
-"Skjermnavn-formatering kan bare endre på store/små bokstaver og mellomrom."
-
-#: ../libpurple/protocols/oscar/oscar.c:6164
+msgstr "Skjermnavn-formatering kan bare endre på store/små bokstaver og mellomrom."
+
+#: ../libpurple/protocols/oscar/oscar.c:6162
 msgid "Change Address To:"
 msgstr "Endre adresse til:"
 
-#: ../libpurple/protocols/oscar/oscar.c:6210
+#: ../libpurple/protocols/oscar/oscar.c:6208
 msgid "<i>you are not waiting for authorization</i>"
 msgstr "<i>du venter ikke på godkjenning</i>"
 
-#: ../libpurple/protocols/oscar/oscar.c:6213
+#: ../libpurple/protocols/oscar/oscar.c:6211
 msgid "You are awaiting authorization from the following buddies"
 msgstr "Du venter på godkjenning fra disse kontaktene"
 
-#: ../libpurple/protocols/oscar/oscar.c:6214
-msgid ""
-"You can re-request authorization from these buddies by right-clicking on "
-"them and selecting \"Re-request Authorization.\""
-msgstr ""
-"Du kan spørre om godkjenning på nytt hos disse kontaktene ved å høyreklikke "
-"på dem og velge \"Spør på nytt om godkjenning\"."
-
-#: ../libpurple/protocols/oscar/oscar.c:6231
+#: ../libpurple/protocols/oscar/oscar.c:6212
+msgid "You can re-request authorization from these buddies by right-clicking on them and selecting \"Re-request Authorization.\""
+msgstr "Du kan spørre om godkjenning på nytt hos disse kontaktene ved å høyreklikke på dem og velge \"Spør på nytt om godkjenning\"."
+
+#: ../libpurple/protocols/oscar/oscar.c:6229
 msgid "Find Buddy by E-Mail"
 msgstr "Finn kontakt etter e-post"
 
-#: ../libpurple/protocols/oscar/oscar.c:6232
+#: ../libpurple/protocols/oscar/oscar.c:6230
 msgid "Search for a buddy by e-mail address"
-msgstr "Kontaktsøk etter e-postadresse"
-
-#: ../libpurple/protocols/oscar/oscar.c:6233
+msgstr "Søk etter en kontakt ved hjelp av e-postadresse"
+
+#: ../libpurple/protocols/oscar/oscar.c:6231
 msgid "Type the e-mail address of the buddy you are searching for."
 msgstr "Skriv inn e-postadressen til den du søker etter."
 
-#: ../libpurple/protocols/oscar/oscar.c:6236
-#, fuzzy
+#: ../libpurple/protocols/oscar/oscar.c:6234
 msgid "_Search"
-msgstr "Søk"
-
-#: ../libpurple/protocols/oscar/oscar.c:6394
+msgstr "_Søk"
+
+#: ../libpurple/protocols/oscar/oscar.c:6392
 msgid "Set User Info (URL)..."
 msgstr "Sett brukerinfo (URL)..."
 
-#: ../libpurple/protocols/oscar/oscar.c:6405
+#: ../libpurple/protocols/oscar/oscar.c:6403
 msgid "Change Password (URL)"
 msgstr "Endre passord (URL)"
 
-#: ../libpurple/protocols/oscar/oscar.c:6409
+#: ../libpurple/protocols/oscar/oscar.c:6407
 msgid "Configure IM Forwarding (URL)"
 msgstr "Konfigurer beskjedvideresending (URL)"
 
 #. ICQ actions
-#: ../libpurple/protocols/oscar/oscar.c:6419
+#: ../libpurple/protocols/oscar/oscar.c:6417
 #, fuzzy
 msgid "Set Privacy Options..."
 msgstr "Vis flere valg"
 
 #. AIM actions
-#: ../libpurple/protocols/oscar/oscar.c:6426
+#: ../libpurple/protocols/oscar/oscar.c:6424
 msgid "Confirm Account"
 msgstr "Bekrefte konto"
 
-#: ../libpurple/protocols/oscar/oscar.c:6430
+#: ../libpurple/protocols/oscar/oscar.c:6428
 #, fuzzy
 msgid "Display Currently Registered E-Mail Address"
 msgstr "Vis nåværende registrert adresse"
 
-#: ../libpurple/protocols/oscar/oscar.c:6434
+#: ../libpurple/protocols/oscar/oscar.c:6432
 #, fuzzy
 msgid "Change Currently Registered E-Mail Address..."
 msgstr "Endre nåværende registrert adresse"
 
-#: ../libpurple/protocols/oscar/oscar.c:6441
+#: ../libpurple/protocols/oscar/oscar.c:6439
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Vis kontakter som venter på godkjenning"
 
-#: ../libpurple/protocols/oscar/oscar.c:6447
-#, fuzzy
+#: ../libpurple/protocols/oscar/oscar.c:6445
 msgid "Search for Buddy by E-Mail Address..."
-msgstr "Vennesøk etter e-postadresse"
-
-#: ../libpurple/protocols/oscar/oscar.c:6452
+msgstr "Søk etter kontakter ved hjelp av e-postadresser..."
+
+#: ../libpurple/protocols/oscar/oscar.c:6450
 msgid "Search for Buddy by Information"
 msgstr "Vennesøk etter informasjon"
 
-#: ../libpurple/protocols/oscar/oscar.c:6520
+#: ../libpurple/protocols/oscar/oscar.c:6518
 #, fuzzy
 msgid "Use recent buddies group"
 msgstr "Brukeren er ikke i gruppen"
 
-#: ../libpurple/protocols/oscar/oscar.c:6523
-#, fuzzy
+#: ../libpurple/protocols/oscar/oscar.c:6521
 msgid "Show how long you have been idle"
-msgstr "Lar deg manuelt sette hvor lenge du har vært borte."
-
-#: ../libpurple/protocols/oscar/oscar.c:6678
+msgstr "Vis hvor lenge du har vært inaktiv"
+
+#: ../libpurple/protocols/oscar/oscar.c:6676
 msgid ""
 "Always use ICQ proxy server for file transfers\n"
 "(slower, but does not reveal your IP address)"
@@ -9571,12 +9446,12 @@
 msgstr "Spør %s om å kople til oss på %s:%hu for direktesamtale."
 
 #: ../libpurple/protocols/oscar/peer.c:782
-#, fuzzy, c-format
+#, c-format
 msgid "Attempting to connect to %s:%hu."
-msgstr "Forsøker å kople til %s på %s:%hu for direktesamtale."
+msgstr "Forsøker å kople til %s:%hu."
 
 #: ../libpurple/protocols/oscar/peer.c:856
-#, fuzzy, c-format
+#, fuzzy
 msgid "Attempting to connect via proxy server."
 msgstr "Forsøker å kople til %s på %s:%hu for direktesamtale."
 
@@ -9586,14 +9461,8 @@
 msgstr "%s har akkurat spurt om direkte tilkobling til %s"
 
 #: ../libpurple/protocols/oscar/peer.c:1037
-msgid ""
-"This requires a direct connection between the two computers and is necessary "
-"for IM Images.  Because your IP address will be revealed, this may be "
-"considered a privacy risk."
-msgstr ""
-"Dette krever at det opprettes en direkte tilkobling mellom de to "
-"datamaskinene, men er nødvendig for å sende bilder. Dette kan være en "
-"(minimal) sikkerhetsrisiko fordi mottakeren da ser IP-adressen din."
+msgid "This requires a direct connection between the two computers and is necessary for IM Images.  Because your IP address will be revealed, this may be considered a privacy risk."
+msgstr "Dette krever at det opprettes en direkte tilkobling mellom de to datamaskinene, men er nødvendig for å sende bilder. Dette kan være en (minimal) sikkerhetsrisiko fordi mottakeren da ser IP-adressen din."
 
 #: ../libpurple/protocols/qq/buddy_info.c:39
 #, fuzzy
@@ -9610,186 +9479,163 @@
 msgstr ""
 
 #: ../libpurple/protocols/qq/buddy_info.c:47
-#, fuzzy
 msgid "Country/Region"
 msgstr "Land"
 
 #: ../libpurple/protocols/qq/buddy_info.c:48
 msgid "Province/State"
-msgstr ""
+msgstr "Fylke/stat"
 
 #: ../libpurple/protocols/qq/buddy_info.c:50
 msgid "Horoscope Symbol"
-msgstr ""
+msgstr "Horoskoptegn"
 
 #: ../libpurple/protocols/qq/buddy_info.c:52
 msgid "Zodiac Sign"
-msgstr ""
+msgstr "Stjernetegn"
 
 #: ../libpurple/protocols/qq/buddy_info.c:53
 msgid "Blood Type"
-msgstr ""
+msgstr "Blodtype"
 
 #: ../libpurple/protocols/qq/buddy_info.c:54
-#, fuzzy
 msgid "College"
-msgstr "_Lukk"
+msgstr "Universitet"
 
 #: ../libpurple/protocols/qq/buddy_info.c:55
 msgid "Email"
 msgstr "E-post"
 
 #: ../libpurple/protocols/qq/buddy_info.c:57
-#, fuzzy
 msgid "Zipcode"
 msgstr "Postnummer"
 
 #: ../libpurple/protocols/qq/buddy_info.c:58
-#, fuzzy
 msgid "Cellphone Number"
-msgstr "Telefonnummer"
+msgstr "Mobilnummer"
 
 #: ../libpurple/protocols/qq/buddy_info.c:59
-#, fuzzy
 msgid "Phone Number"
 msgstr "Telefonnummer"
 
 #: ../libpurple/protocols/qq/buddy_info.c:64
 msgid "Aquarius"
-msgstr ""
+msgstr "Vannmannen"
 
 #: ../libpurple/protocols/qq/buddy_info.c:64
-#, fuzzy
 msgid "Pisces"
-msgstr "Bilder"
+msgstr "Fiskene"
 
 #: ../libpurple/protocols/qq/buddy_info.c:64
-#, fuzzy
 msgid "Aries"
-msgstr "Adresse"
+msgstr "Væren"
 
 #: ../libpurple/protocols/qq/buddy_info.c:64
-#, fuzzy
 msgid "Taurus"
-msgstr "Tyrkisk"
+msgstr "Tyren"
 
 #: ../libpurple/protocols/qq/buddy_info.c:65
-#, fuzzy
 msgid "Gemini"
-msgstr "Tysk"
+msgstr "Tvillingen"
 
 #: ../libpurple/protocols/qq/buddy_info.c:65
-#, fuzzy
 msgid "Cancer"
-msgstr "_Avbryt"
+msgstr "Krepsen"
 
 #: ../libpurple/protocols/qq/buddy_info.c:65
 msgid "Leo"
-msgstr ""
+msgstr "Løven"
 
 #: ../libpurple/protocols/qq/buddy_info.c:65
 msgid "Virgo"
-msgstr ""
+msgstr "Jomfruen"
 
 #: ../libpurple/protocols/qq/buddy_info.c:65
 msgid "Libra"
-msgstr ""
+msgstr "Vekten"
 
 #: ../libpurple/protocols/qq/buddy_info.c:66
-#, fuzzy
 msgid "Scorpio"
-msgstr "Abonnement"
+msgstr "Skorpionen"
 
 #: ../libpurple/protocols/qq/buddy_info.c:66
 msgid "Sagittarius"
-msgstr ""
+msgstr "Skytten"
 
 #: ../libpurple/protocols/qq/buddy_info.c:66
 msgid "Capricorn"
-msgstr ""
+msgstr "Steinbukken"
 
 #: ../libpurple/protocols/qq/buddy_info.c:71
-#, fuzzy
+
 msgid "Rat"
-msgstr "Direkte"
+msgstr "Rotte"
 
 #: ../libpurple/protocols/qq/buddy_info.c:71
 msgid "Ox"
-msgstr ""
+msgstr "Okse"
 
 #
 #: ../libpurple/protocols/qq/buddy_info.c:71
-#, fuzzy
 msgid "Tiger"
-msgstr "Tid"
+msgstr "Tiger"
 
 #: ../libpurple/protocols/qq/buddy_info.c:71
 msgid "Rabbit"
-msgstr ""
+msgstr "Hare"
 
 #: ../libpurple/protocols/qq/buddy_info.c:72
 msgid "Dragon"
-msgstr ""
+msgstr "Drage"
 
 #: ../libpurple/protocols/qq/buddy_info.c:72
-#, fuzzy
 msgid "Snake"
-msgstr "Lagre"
+msgstr "Slange"
 
 #: ../libpurple/protocols/qq/buddy_info.c:72
-#, fuzzy
 msgid "Horse"
-msgstr "Porter"
+msgstr "Hest"
 
 #: ../libpurple/protocols/qq/buddy_info.c:72
 msgid "Goat"
-msgstr ""
+msgstr "Geit"
 
 #: ../libpurple/protocols/qq/buddy_info.c:72
-#, fuzzy
 msgid "Monkey"
-msgstr "Ingen"
+msgstr "Ape"
 
 #: ../libpurple/protocols/qq/buddy_info.c:73
-#, fuzzy
 msgid "Rooster"
-msgstr "Registrer"
+msgstr "Hane"
 
 #: ../libpurple/protocols/qq/buddy_info.c:73
 msgid "Dog"
-msgstr ""
+msgstr "Hund"
 
 #: ../libpurple/protocols/qq/buddy_info.c:73
-#, fuzzy
 msgid "Pig"
-msgstr "Ping"
+msgstr "Gris"
 
 #: ../libpurple/protocols/qq/buddy_info.c:78
-#, fuzzy
 msgid "Other"
-msgstr "Opera"
+msgstr "Andre"
 
 #: ../libpurple/protocols/qq/buddy_info.c:481
 #: ../libpurple/protocols/qq/buddy_info.c:482
-#, fuzzy
 msgid "Modify my information"
-msgstr "Kontaktinformasjon"
+msgstr "Endre min informasjon"
 
 #: ../libpurple/protocols/qq/buddy_info.c:483
-#, fuzzy
 msgid "Update my information"
-msgstr "Brukerinformasjon"
+msgstr "Oppdater min informasjon"
 
 #: ../libpurple/protocols/qq/buddy_info.c:507
-#, fuzzy
 msgid "Your information has been updated"
-msgstr "Passordet ditt har blitt endret."
+msgstr "Din informasjon har blitt oppdatert."
 
 #: ../libpurple/protocols/qq/buddy_info.c:560
 #, c-format
-msgid ""
-"Setting custom faces is not currently supported. Please choose an image from "
-"%s."
+msgid "Setting custom faces is not currently supported. Please choose an image from %s."
 msgstr ""
 
 #: ../libpurple/protocols/qq/buddy_info.c:577
@@ -9809,9 +9655,8 @@
 msgstr ""
 
 #: ../libpurple/protocols/qq/buddy_opt.c:212
-#, fuzzy
 msgid "Reject request"
-msgstr "Uventet forespørsel"
+msgstr "Avslå forespørsel"
 
 #. title
 #: ../libpurple/protocols/qq/buddy_opt.c:213
@@ -9920,9 +9765,9 @@
 #: ../libpurple/protocols/qq/group_im.c:127
 #: ../libpurple/protocols/qq/group_im.c:181
 #: ../libpurple/protocols/qq/sys_msg.c:193
-#, fuzzy, c-format
+#, c-format
 msgid "Reason: %s"
-msgstr "Brukere på %s: %s"
+msgstr "Grunn: %s"
 
 #: ../libpurple/protocols/qq/group_im.c:136
 #: ../libpurple/protocols/qq/group_im.c:183
@@ -9994,8 +9839,7 @@
 #: ../libpurple/protocols/qq/group_join.c:82
 #, fuzzy
 msgid "This group does not allow others to join"
-msgstr ""
-"Denne testversjonen tillater ikke mer enn ti samtidige innloggede brukere"
+msgstr "Denne testversjonen tillater ikke mer enn ti samtidige innloggede brukere"
 
 #: ../libpurple/protocols/qq/group_join.c:233
 msgid "You have successfully left the group"
@@ -10027,7 +9871,7 @@
 #: ../libpurple/protocols/qq/group_network.c:92
 #, c-format
 msgid "Code [0x%02X]: %s"
-msgstr ""
+msgstr "Kode [0x%02X]: %s"
 
 #: ../libpurple/protocols/qq/group_network.c:93
 #, fuzzy
@@ -10088,13 +9932,14 @@
 msgid "Error requesting login token"
 msgstr "Feil: kunne ikke koble til"
 
-#: ../libpurple/protocols/qq/login_logout.c:486
+#: ../libpurple/protocols/qq/login_logout.c:488
 #, fuzzy
 msgid "Unable to login, check debug log"
 msgstr "Kunne ikke logge på AIM"
 
 #. we didn't successfully connect. tdt->toc_fd is valid here
-#: ../libpurple/protocols/qq/qq.c:139 ../libpurple/protocols/toc/toc.c:173
+#: ../libpurple/protocols/qq/qq.c:139
+#: ../libpurple/protocols/toc/toc.c:173
 #: ../libpurple/protocols/yahoo/yahoo_filexfer.c:109
 #: ../libpurple/protocols/yahoo/yahoo_filexfer.c:189
 #: ../libpurple/protocols/yahoo/ycht.c:549
@@ -10178,7 +10023,8 @@
 msgid "Set My Information"
 msgstr "Tjenerinformasjon"
 
-#: ../libpurple/protocols/qq/qq.c:536 ../libpurple/protocols/toc/toc.c:1680
+#: ../libpurple/protocols/qq/qq.c:536
+#: ../libpurple/protocols/toc/toc.c:1680
 msgid "Change Password"
 msgstr "Bytt passord"
 
@@ -10192,9 +10038,8 @@
 msgstr ""
 
 #: ../libpurple/protocols/qq/qq.c:584
-#, fuzzy
 msgid "Block this buddy"
-msgstr "Blokker brukeren"
+msgstr "Blokker denne kontakten"
 
 #. *< type
 #. *< ui_requirement
@@ -10206,7 +10051,8 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/qq/qq.c:725 ../libpurple/protocols/qq/qq.c:727
+#: ../libpurple/protocols/qq/qq.c:725
+#: ../libpurple/protocols/qq/qq.c:727
 #, fuzzy
 msgid "QQ Protocol\tPlugin"
 msgstr "IRC-protokolltillegg"
@@ -10238,9 +10084,9 @@
 msgstr "Filsending feilet"
 
 #: ../libpurple/protocols/qq/send_file.c:736
-#, fuzzy, c-format
+#, c-format
 msgid "%d canceled the transfer of %s"
-msgstr "%s avbrøt overføringen av %s"
+msgstr "%d avbrøt overføringen av %s"
 
 #: ../libpurple/protocols/qq/sendqueue.c:123
 #, fuzzy
@@ -10292,9 +10138,9 @@
 msgstr "%s ønsker å sende deg en fil."
 
 #: ../libpurple/protocols/qq/sys_msg.c:239
-#, fuzzy, c-format
+#, c-format
 msgid "Message: %s"
-msgstr "Beskjed:"
+msgstr "Beskjed: %s"
 
 #: ../libpurple/protocols/qq/sys_msg.c:261
 #, fuzzy, c-format
@@ -10317,9 +10163,9 @@
 msgstr "<b>Bruker:</b> %s<br>"
 
 #: ../libpurple/protocols/sametime/sametime.c:1293
-#, fuzzy, c-format
+#, c-format
 msgid "Info for Group %s"
-msgstr "Info for %s"
+msgstr "Info for gruppe %s"
 
 #: ../libpurple/protocols/sametime/sametime.c:1295
 #, fuzzy
@@ -10375,8 +10221,7 @@
 
 #: ../libpurple/protocols/sametime/sametime.c:1645
 #, c-format
-msgid ""
-"A Sametime administrator has issued the following announcement on server %s"
+msgid "A Sametime administrator has issued the following announcement on server %s"
 msgstr ""
 
 #: ../libpurple/protocols/sametime/sametime.c:1650
@@ -10422,23 +10267,21 @@
 
 #: ../libpurple/protocols/sametime/sametime.c:3229
 msgid "Microphone"
-msgstr ""
+msgstr "Mikrofon"
 
 #: ../libpurple/protocols/sametime/sametime.c:3230
 msgid "Speakers"
-msgstr ""
+msgstr "Høytalere"
 
 #: ../libpurple/protocols/sametime/sametime.c:3231
-#, fuzzy
 msgid "Video Camera"
-msgstr "Videosamtale"
+msgstr "Videokamera"
 
 #
 #: ../libpurple/protocols/sametime/sametime.c:3269
 #: ../libpurple/protocols/sametime/sametime.c:4145
-#, fuzzy
 msgid "Supports"
-msgstr "støtte"
+msgstr "Støtter"
 
 #: ../libpurple/protocols/sametime/sametime.c:3274
 #: ../libpurple/protocols/sametime/sametime.c:4119
@@ -10453,9 +10296,7 @@
 
 #: ../libpurple/protocols/sametime/sametime.c:3381
 #, c-format
-msgid ""
-"Please enter a topic for the new conference, and an invitation message to be "
-"sent to %s"
+msgid "Please enter a topic for the new conference, and an invitation message to be sent to %s"
 msgstr ""
 
 #: ../libpurple/protocols/sametime/sametime.c:3385
@@ -10485,10 +10326,7 @@
 
 #: ../libpurple/protocols/sametime/sametime.c:3466
 #, c-format
-msgid ""
-"Select a conference from the list below to send an invite to user %s. Select "
-"\"Create New Conference\" if you'd like to create a new conference to invite "
-"this user to."
+msgid "Select a conference from the list below to send an invite to user %s. Select \"Create New Conference\" if you'd like to create a new conference to invite this user to."
 msgstr ""
 
 #: ../libpurple/protocols/sametime/sametime.c:3471
@@ -10505,7 +10343,8 @@
 msgid "Send TEST Announcement"
 msgstr ""
 
-#: ../libpurple/protocols/sametime/sametime.c:3586 ../pidgin/gtkconv.c:4354
+#: ../libpurple/protocols/sametime/sametime.c:3586
+#: ../pidgin/gtkconv.c:4417
 msgid "Topic:"
 msgstr "Tema:"
 
@@ -10516,9 +10355,7 @@
 
 #: ../libpurple/protocols/sametime/sametime.c:3636
 #, c-format
-msgid ""
-"No host or IP address has been configured for the Meanwhile account %s. "
-"Please enter one below to continue logging in."
+msgid "No host or IP address has been configured for the Meanwhile account %s. Please enter one below to continue logging in."
 msgstr ""
 
 #: ../libpurple/protocols/sametime/sametime.c:3641
@@ -10531,14 +10368,15 @@
 msgid "No Sametime Community Server Specified"
 msgstr "Kobler til SILC-tjener"
 
-#: ../libpurple/protocols/sametime/sametime.c:3644 ../pidgin/gtkblist.c:4041
+#: ../libpurple/protocols/sametime/sametime.c:3644
+#: ../pidgin/gtkblist.c:4323
 msgid "Connect"
 msgstr "Koble til"
 
 #: ../libpurple/protocols/sametime/sametime.c:4135
 #, c-format
 msgid "Unknown (0x%04x)<br>"
-msgstr ""
+msgstr "Ukjent (0x%04x)<br>"
 
 #: ../libpurple/protocols/sametime/sametime.c:4137
 #, fuzzy
@@ -10547,7 +10385,6 @@
 
 #: ../libpurple/protocols/sametime/sametime.c:4301
 #: ../libpurple/protocols/sametime/sametime.c:5506
-#, fuzzy
 msgid "User Name"
 msgstr "Brukernavn"
 
@@ -10562,12 +10399,8 @@
 
 #: ../libpurple/protocols/sametime/sametime.c:4329
 #, fuzzy, c-format
-msgid ""
-"The identifier '%s' may possibly refer to any of the following users. Please "
-"select the correct user from the list below to add them to your buddy list."
-msgstr ""
-"Men enn en bruker ble funnet med det samme navnet. Velg den korrekte "
-"brukeren fra lista for å legge til kontaktlista."
+msgid "The identifier '%s' may possibly refer to any of the following users. Please select the correct user from the list below to add them to your buddy list."
+msgstr "Men enn en bruker ble funnet med det samme navnet. Velg den korrekte brukeren fra lista for å legge til kontaktlista."
 
 #: ../libpurple/protocols/sametime/sametime.c:4334
 #, fuzzy
@@ -10581,15 +10414,8 @@
 
 #: ../libpurple/protocols/sametime/sametime.c:4420
 #, c-format
-msgid ""
-"The identifier '%s' did not match any users in your Sametime community. This "
-"entry has been removed from your buddy list."
-msgstr ""
-
-#: ../libpurple/protocols/sametime/sametime.c:4425
-#, fuzzy
-msgid "Unable to add user"
-msgstr "Klarte ikke forby brukeren %s"
+msgid "The identifier '%s' did not match any users in your Sametime community. This entry has been removed from your buddy list."
+msgstr ""
 
 #: ../libpurple/protocols/sametime/sametime.c:5011
 #, fuzzy, c-format
@@ -10665,10 +10491,7 @@
 
 #: ../libpurple/protocols/sametime/sametime.c:5389
 #, c-format
-msgid ""
-"The identifier '%s' may possibly refer to any of the following Notes Address "
-"Book groups. Please select the correct group from the list below to add it "
-"to your buddy list."
+msgid "The identifier '%s' may possibly refer to any of the following Notes Address Book groups. Please select the correct group from the list below to add it to your buddy list."
 msgstr ""
 
 #: ../libpurple/protocols/sametime/sametime.c:5394
@@ -10683,9 +10506,7 @@
 
 #: ../libpurple/protocols/sametime/sametime.c:5439
 #, c-format
-msgid ""
-"The identifier '%s' did not match any Notes Address Book groups in your "
-"Sametime community."
+msgid "The identifier '%s' did not match any Notes Address Book groups in your Sametime community."
 msgstr ""
 
 #: ../libpurple/protocols/sametime/sametime.c:5480
@@ -10694,9 +10515,7 @@
 msgstr "Legg til i adresseboka"
 
 #: ../libpurple/protocols/sametime/sametime.c:5481
-msgid ""
-"Enter the name of a Notes Address Book group in the field below to add the "
-"group and its members to your buddy list."
+msgid "Enter the name of a Notes Address Book group in the field below to add the group and its members to your buddy list."
 msgstr ""
 
 #: ../libpurple/protocols/sametime/sametime.c:5530
@@ -10706,18 +10525,15 @@
 
 #: ../libpurple/protocols/sametime/sametime.c:5531
 #, c-format
-msgid ""
-"The identifier '%s' may possibly refer to any of the following users. You "
-"may add these users to your buddy list or send them messages with the action "
-"buttons below."
-msgstr ""
-
-#: ../libpurple/protocols/sametime/sametime.c:5538 ../pidgin/gtknotify.c:756
+msgid "The identifier '%s' may possibly refer to any of the following users. You may add these users to your buddy list or send them messages with the action buttons below."
+msgstr ""
+
+#: ../libpurple/protocols/sametime/sametime.c:5538
+#: ../pidgin/gtknotify.c:755
 msgid "Search Results"
 msgstr "Søkeresultater"
 
 #: ../libpurple/protocols/sametime/sametime.c:5563
-#, fuzzy
 msgid "No matches"
 msgstr "Ingen treff"
 
@@ -10727,20 +10543,16 @@
 msgstr ""
 
 #: ../libpurple/protocols/sametime/sametime.c:5568
-#, fuzzy
 msgid "No Matches"
 msgstr "Ingen treff"
 
 #
 #: ../libpurple/protocols/sametime/sametime.c:5605
-#, fuzzy
 msgid "Search for a user"
-msgstr "_Søk etter:"
+msgstr "Søk etter en bruker"
 
 #: ../libpurple/protocols/sametime/sametime.c:5606
-msgid ""
-"Enter a name or partial ID in the field below to search for matching users "
-"in your Sametime community."
+msgid "Enter a name or partial ID in the field below to search for matching users in your Sametime community."
 msgstr ""
 
 #: ../libpurple/protocols/sametime/sametime.c:5609
@@ -10856,11 +10668,8 @@
 #: ../libpurple/protocols/silc/buddy.c:298
 #: ../libpurple/protocols/silc10/buddy.c:295
 #, c-format
-msgid ""
-"Key agreement request received from %s. Would you like to perform the key "
-"agreement?"
-msgstr ""
-"Nøkkelavtaleforespørsel motatt fra %s. Ønsker du å gjennomføre nøkkelavtalen?"
+msgid "Key agreement request received from %s. Would you like to perform the key agreement?"
+msgstr "Nøkkelavtaleforespørsel motatt fra %s. Ønsker du å gjennomføre nøkkelavtalen?"
 
 #: ../libpurple/protocols/silc/buddy.c:302
 #: ../libpurple/protocols/silc10/buddy.c:299
@@ -10967,13 +10776,8 @@
 
 #: ../libpurple/protocols/silc/buddy.c:726
 #: ../libpurple/protocols/silc10/buddy.c:738
-msgid ""
-"You cannot receive buddy notifications until you import his/her public key.  "
-"You can use the Get Public Key command to get the public key."
-msgstr ""
-"Du kan ikke motta kontaktvarslinger før du importerer hans/hennes offentlige "
-"nøkkel. Du kan bruke Hent offentlig nøkkel-kommandoen for å få den "
-"offentlige nøkkelen."
+msgid "You cannot receive buddy notifications until you import his/her public key.  You can use the Get Public Key command to get the public key."
+msgstr "Du kan ikke motta kontaktvarslinger før du importerer hans/hennes offentlige nøkkel. Du kan bruke Hent offentlig nøkkel-kommandoen for å få den offentlige nøkkelen."
 
 #. Open file selector to select the public key.
 #: ../libpurple/protocols/silc/buddy.c:1059
@@ -10989,18 +10793,13 @@
 
 #: ../libpurple/protocols/silc/buddy.c:1073
 #: ../libpurple/protocols/silc10/buddy.c:1081
-msgid ""
-"To add the buddy you must import his/her public key. Press Import to import "
-"a public key."
-msgstr ""
-"For å legge til kontakten må du importere hans/hennes offentlige nøkkel. "
-"Trykk Import for å importere en offentlig nøkkel."
+msgid "To add the buddy you must import his/her public key. Press Import to import a public key."
+msgstr "For å legge til kontakten må du importere hans/hennes offentlige nøkkel. Trykk Import for å importere en offentlig nøkkel."
 
 #: ../libpurple/protocols/silc/buddy.c:1077
 #: ../libpurple/protocols/silc10/buddy.c:1085
-#, fuzzy
 msgid "_Import..."
-msgstr "Importer..."
+msgstr "_Importer..."
 
 #: ../libpurple/protocols/silc/buddy.c:1183
 #: ../libpurple/protocols/silc10/buddy.c:1181
@@ -11009,21 +10808,13 @@
 
 #: ../libpurple/protocols/silc/buddy.c:1185
 #: ../libpurple/protocols/silc10/buddy.c:1183
-msgid ""
-"More than one user was found with the same public key. Select the correct "
-"user from the list to add to the buddy list."
-msgstr ""
-"Mer enn en bruker ble funnet med den samme offentlige nøkkelen. Velg den "
-"korrekte brukeren fra lista for å legge til kontaktlista."
+msgid "More than one user was found with the same public key. Select the correct user from the list to add to the buddy list."
+msgstr "Mer enn en bruker ble funnet med den samme offentlige nøkkelen. Velg den korrekte brukeren fra lista for å legge til kontaktlista."
 
 #: ../libpurple/protocols/silc/buddy.c:1187
 #: ../libpurple/protocols/silc10/buddy.c:1185
-msgid ""
-"More than one user was found with the same name. Select the correct user "
-"from the list to add to the buddy list."
-msgstr ""
-"Men enn en bruker ble funnet med det samme navnet. Velg den korrekte "
-"brukeren fra lista for å legge til kontaktlista."
+msgid "More than one user was found with the same name. Select the correct user from the list to add to the buddy list."
+msgstr "Men enn en bruker ble funnet med det samme navnet. Velg den korrekte brukeren fra lista for å legge til kontaktlista."
 
 #: ../libpurple/protocols/silc/buddy.c:1474
 #: ../libpurple/protocols/silc10/buddy.c:1474
@@ -11303,7 +11094,7 @@
 # Urk... moduser?
 #: ../libpurple/protocols/silc/chat.c:153
 #: ../libpurple/protocols/silc10/chat.c:152
-#, fuzzy, c-format
+#, fuzzy
 msgid "<br><b>Channel Modes:</b> "
 msgstr "<br><b>Kanalmoduser:</b> "
 
@@ -11345,19 +11136,8 @@
 
 #: ../libpurple/protocols/silc/chat.c:435
 #: ../libpurple/protocols/silc10/chat.c:413
-#, c-format
-msgid ""
-"Channel authentication is used to secure the channel from unauthorized "
-"access. The authentication may be based on passphrase and digital "
-"signatures. If passphrase is set, it is required to be able to join. If "
-"channel public keys are set then only users whose public keys are listed are "
-"able to join."
-msgstr ""
-"Kanalgodkjenning er brukt for å sikre kanalen fra uautorisert tilgang. "
-"Autentifikasjonen kan være basert på en nøkkelsetning og digitale "
-"signaturer. Dersom nøkkelsetning er valgt, er dette krevd for å bli med. "
-"Dersom digitale signaturer er valgt, så kan kun brukere hvis offentlige "
-"nøkkler er listet bli med."
+msgid "Channel authentication is used to secure the channel from unauthorized access. The authentication may be based on passphrase and digital signatures. If passphrase is set, it is required to be able to join. If channel public keys are set then only users whose public keys are listed are able to join."
+msgstr "Kanalgodkjenning er brukt for å sikre kanalen fra uautorisert tilgang. Autentifikasjonen kan være basert på en nøkkelsetning og digitale signaturer. Dersom nøkkelsetning er valgt, er dette krevd for å bli med. Dersom digitale signaturer er valgt, så kan kun brukere hvis offentlige nøkkler er listet bli med."
 
 #: ../libpurple/protocols/silc/chat.c:444
 #: ../libpurple/protocols/silc/chat.c:445
@@ -11413,8 +11193,7 @@
 #: ../libpurple/protocols/silc/chat.c:743
 #: ../libpurple/protocols/silc10/chat.c:727
 msgid "Set user limit on channel. Set to zero to reset user limit."
-msgstr ""
-"Velg brukergrense til kanalen. Velg null for å nullstille brukergrense."
+msgstr "Velg brukergrense til kanalen. Velg null for å nullstille brukergrense."
 
 #: ../libpurple/protocols/silc/chat.c:907
 #: ../libpurple/protocols/silc10/chat.c:891
@@ -11479,8 +11258,7 @@
 #: ../libpurple/protocols/silc/chat.c:1045
 #: ../libpurple/protocols/silc10/chat.c:1102
 #, c-format
-msgid ""
-"You have to join the %s channel before you are able to join the private group"
+msgid "You have to join the %s channel before you are able to join the private group"
 msgstr "Du må bli med i %s-kanalen før du kan bli med i den private gruppa"
 
 #: ../libpurple/protocols/silc/chat.c:1047
@@ -11516,13 +11294,20 @@
 msgid "Unknown command"
 msgstr "Ukjent kommando:"
 
-#: ../libpurple/protocols/silc/ft.c:85 ../libpurple/protocols/silc/ft.c:101
-#: ../libpurple/protocols/silc/ft.c:104 ../libpurple/protocols/silc/ft.c:108
-#: ../libpurple/protocols/silc/ft.c:112 ../libpurple/protocols/silc/ft.c:116
-#: ../libpurple/protocols/silc/ft.c:120 ../libpurple/protocols/silc/ft.c:272
-#: ../libpurple/protocols/silc/ft.c:277 ../libpurple/protocols/silc/ft.c:282
-#: ../libpurple/protocols/silc/ft.c:288 ../libpurple/protocols/silc/ft.c:425
-#: ../libpurple/protocols/silc10/ft.c:89 ../libpurple/protocols/silc10/ft.c:92
+#: ../libpurple/protocols/silc/ft.c:85
+#: ../libpurple/protocols/silc/ft.c:101
+#: ../libpurple/protocols/silc/ft.c:104
+#: ../libpurple/protocols/silc/ft.c:108
+#: ../libpurple/protocols/silc/ft.c:112
+#: ../libpurple/protocols/silc/ft.c:116
+#: ../libpurple/protocols/silc/ft.c:120
+#: ../libpurple/protocols/silc/ft.c:272
+#: ../libpurple/protocols/silc/ft.c:277
+#: ../libpurple/protocols/silc/ft.c:282
+#: ../libpurple/protocols/silc/ft.c:288
+#: ../libpurple/protocols/silc/ft.c:425
+#: ../libpurple/protocols/silc10/ft.c:89
+#: ../libpurple/protocols/silc10/ft.c:92
 #: ../libpurple/protocols/silc10/ft.c:96
 #: ../libpurple/protocols/silc10/ft.c:100
 #: ../libpurple/protocols/silc10/ft.c:104
@@ -11534,11 +11319,16 @@
 msgid "Secure File Transfer"
 msgstr "Sikret filoverføring"
 
-#: ../libpurple/protocols/silc/ft.c:86 ../libpurple/protocols/silc/ft.c:102
-#: ../libpurple/protocols/silc/ft.c:105 ../libpurple/protocols/silc/ft.c:109
-#: ../libpurple/protocols/silc/ft.c:113 ../libpurple/protocols/silc/ft.c:117
-#: ../libpurple/protocols/silc/ft.c:121 ../libpurple/protocols/silc10/ft.c:90
-#: ../libpurple/protocols/silc10/ft.c:93 ../libpurple/protocols/silc10/ft.c:97
+#: ../libpurple/protocols/silc/ft.c:86
+#: ../libpurple/protocols/silc/ft.c:102
+#: ../libpurple/protocols/silc/ft.c:105
+#: ../libpurple/protocols/silc/ft.c:109
+#: ../libpurple/protocols/silc/ft.c:113
+#: ../libpurple/protocols/silc/ft.c:117
+#: ../libpurple/protocols/silc/ft.c:121
+#: ../libpurple/protocols/silc10/ft.c:90
+#: ../libpurple/protocols/silc10/ft.c:93
+#: ../libpurple/protocols/silc10/ft.c:97
 #: ../libpurple/protocols/silc10/ft.c:101
 #: ../libpurple/protocols/silc10/ft.c:105
 msgid "Error during file transfer"
@@ -11549,11 +11339,13 @@
 msgid "Remote disconnected"
 msgstr "Frakoblet."
 
-#: ../libpurple/protocols/silc/ft.c:106 ../libpurple/protocols/silc10/ft.c:94
+#: ../libpurple/protocols/silc/ft.c:106
+#: ../libpurple/protocols/silc10/ft.c:94
 msgid "Permission denied"
 msgstr "Tilgang nektet"
 
-#: ../libpurple/protocols/silc/ft.c:110 ../libpurple/protocols/silc10/ft.c:98
+#: ../libpurple/protocols/silc/ft.c:110
+#: ../libpurple/protocols/silc10/ft.c:98
 msgid "Key agreement failed"
 msgstr "Nøkkelavtale feilet"
 
@@ -11567,28 +11359,34 @@
 msgid "Creating connection failed"
 msgstr "Tilkopling feilet"
 
-#: ../libpurple/protocols/silc/ft.c:122 ../libpurple/protocols/silc10/ft.c:102
+#: ../libpurple/protocols/silc/ft.c:122
+#: ../libpurple/protocols/silc10/ft.c:102
 #, fuzzy
 msgid "File transfer session does not exist"
 msgstr "Filoverføringsøkt eksisterer ikke"
 
-#: ../libpurple/protocols/silc/ft.c:273 ../libpurple/protocols/silc10/ft.c:206
+#: ../libpurple/protocols/silc/ft.c:273
+#: ../libpurple/protocols/silc10/ft.c:206
 msgid "No file transfer session active"
 msgstr "Ingen filoverføringsøkt aktiv"
 
-#: ../libpurple/protocols/silc/ft.c:278 ../libpurple/protocols/silc10/ft.c:211
+#: ../libpurple/protocols/silc/ft.c:278
+#: ../libpurple/protocols/silc10/ft.c:211
 msgid "File transfer already started"
 msgstr "Filoverføring allerede avbrutt"
 
-#: ../libpurple/protocols/silc/ft.c:283 ../libpurple/protocols/silc10/ft.c:216
+#: ../libpurple/protocols/silc/ft.c:283
+#: ../libpurple/protocols/silc10/ft.c:216
 msgid "Could not perform key agreement for file transfer"
 msgstr "Kunne ikke gjennomføre nøkkelavtale for filoverføring"
 
-#: ../libpurple/protocols/silc/ft.c:289 ../libpurple/protocols/silc10/ft.c:222
+#: ../libpurple/protocols/silc/ft.c:289
+#: ../libpurple/protocols/silc10/ft.c:222
 msgid "Could not start the file transfer"
 msgstr "Kunne ikke starte filoverføring"
 
-#: ../libpurple/protocols/silc/ft.c:426 ../libpurple/protocols/silc10/ft.c:341
+#: ../libpurple/protocols/silc/ft.c:426
+#: ../libpurple/protocols/silc10/ft.c:341
 msgid "Cannot send file"
 msgstr "Kan ikke sende fil"
 
@@ -11596,7 +11394,8 @@
 msgid "Error occurred"
 msgstr ""
 
-#: ../libpurple/protocols/silc/ops.c:533 ../libpurple/protocols/silc/ops.c:542
+#: ../libpurple/protocols/silc/ops.c:533
+#: ../libpurple/protocols/silc/ops.c:542
 #: ../libpurple/protocols/silc/ops.c:551
 #: ../libpurple/protocols/silc10/ops.c:554
 #: ../libpurple/protocols/silc10/ops.c:563
@@ -11635,7 +11434,8 @@
 msgid "You have been kicked off <I>%s</I> by <I>%s</I> (%s)"
 msgstr "Du har blitt sparket av <I>%s</I> av <I>%s</I> (%s)"
 
-#: ../libpurple/protocols/silc/ops.c:718 ../libpurple/protocols/silc/ops.c:723
+#: ../libpurple/protocols/silc/ops.c:718
+#: ../libpurple/protocols/silc/ops.c:723
 #: ../libpurple/protocols/silc/ops.c:728
 #: ../libpurple/protocols/silc10/ops.c:742
 #: ../libpurple/protocols/silc10/ops.c:747
@@ -11644,7 +11444,8 @@
 msgid "You have been killed by %s (%s)"
 msgstr "Du har blitt drept av %s (%s)"
 
-#: ../libpurple/protocols/silc/ops.c:749 ../libpurple/protocols/silc/ops.c:754
+#: ../libpurple/protocols/silc/ops.c:749
+#: ../libpurple/protocols/silc/ops.c:754
 #: ../libpurple/protocols/silc/ops.c:759
 #: ../libpurple/protocols/silc10/ops.c:773
 #: ../libpurple/protocols/silc10/ops.c:778
@@ -11740,9 +11541,8 @@
 
 #: ../libpurple/protocols/silc/ops.c:1292
 #: ../libpurple/protocols/silc10/ops.c:1298
-#, fuzzy
 msgid "_More..."
-msgstr "Mer..."
+msgstr "_Mer..."
 
 #: ../libpurple/protocols/silc/ops.c:1369
 #: ../libpurple/protocols/silc/silc.c:1077
@@ -11901,21 +11701,20 @@
 msgid "Passphrase required"
 msgstr "Nøkkelsetning kreves"
 
-#: ../libpurple/protocols/silc/pk.c:98 ../libpurple/protocols/silc10/pk.c:104
-#, c-format
-msgid ""
-"Received %s's public key. Your local copy does not match this key. Would you "
-"still like to accept this public key?"
-msgstr ""
-"Mottok %s's offentlige nøkkel, men din lokale kopi stemmer ikke overens med "
-"denne nøkkelen. Ønsker du fremdeles å akseptere denne nøkkelen?"
-
-#: ../libpurple/protocols/silc/pk.c:103 ../libpurple/protocols/silc10/pk.c:109
+#: ../libpurple/protocols/silc/pk.c:98
+#: ../libpurple/protocols/silc10/pk.c:104
+#, c-format
+msgid "Received %s's public key. Your local copy does not match this key. Would you still like to accept this public key?"
+msgstr "Mottok %s's offentlige nøkkel, men din lokale kopi stemmer ikke overens med denne nøkkelen. Ønsker du fremdeles å akseptere denne nøkkelen?"
+
+#: ../libpurple/protocols/silc/pk.c:103
+#: ../libpurple/protocols/silc10/pk.c:109
 #, c-format
 msgid "Received %s's public key. Would you like to accept this public key?"
 msgstr "Mottok %s's offentlige nøkkel. Ønsker du å akseptere denne nøkkelen?"
 
-#: ../libpurple/protocols/silc/pk.c:107 ../libpurple/protocols/silc10/pk.c:113
+#: ../libpurple/protocols/silc/pk.c:107
+#: ../libpurple/protocols/silc10/pk.c:113
 #, c-format
 msgid ""
 "Fingerprint and babbleprint for the %s key are:\n"
@@ -11924,18 +11723,21 @@
 "%s\n"
 msgstr ""
 
-#: ../libpurple/protocols/silc/pk.c:110 ../libpurple/protocols/silc/pk.c:139
+#: ../libpurple/protocols/silc/pk.c:110
+#: ../libpurple/protocols/silc/pk.c:139
 #: ../libpurple/protocols/silc10/pk.c:116
 #: ../libpurple/protocols/silc10/pk.c:142
 msgid "Verify Public Key"
 msgstr "Bekreft offentlig nøkkel"
 
-#: ../libpurple/protocols/silc/pk.c:115 ../libpurple/protocols/silc10/pk.c:121
+#: ../libpurple/protocols/silc/pk.c:115
+#: ../libpurple/protocols/silc10/pk.c:121
 #, fuzzy
 msgid "_View..."
 msgstr "Vis..."
 
-#: ../libpurple/protocols/silc/pk.c:140 ../libpurple/protocols/silc10/pk.c:143
+#: ../libpurple/protocols/silc/pk.c:140
+#: ../libpurple/protocols/silc10/pk.c:143
 msgid "Unsupported public key type"
 msgstr "Ustøttet offentlig nøkkeltype"
 
@@ -11958,11 +11760,8 @@
 #: ../libpurple/protocols/silc/silc.c:238
 #: ../libpurple/protocols/silc10/ops.c:1714
 #, fuzzy
-msgid ""
-"Resuming detached session failed. Press Reconnect to create new connection."
-msgstr ""
-"Fortsettelse av løsnet økt misslyktes. Trykk Kople til på nytt for å lage en "
-"ny forbindelse"
+msgid "Resuming detached session failed. Press Reconnect to create new connection."
+msgstr "Fortsettelse av løsnet økt misslyktes. Trykk Kople til på nytt for å lage en ny forbindelse"
 
 #: ../libpurple/protocols/silc/silc.c:265
 #: ../libpurple/protocols/silc/silc.c:311
@@ -11982,7 +11781,7 @@
 msgstr "Kobler til SILC-tjener"
 
 #: ../libpurple/protocols/silc/silc.c:352
-#, fuzzy, c-format
+#, fuzzy
 msgid "Could not load SILC key pair"
 msgstr "Kunne ikke laste den offentlige nøkkelen"
 
@@ -12014,14 +11813,13 @@
 msgstr "Dit nåværende humør"
 
 #: ../libpurple/protocols/silc/silc.c:741
-#: ../libpurple/protocols/silc10/silc.c:652 ../pidgin/gtkprefs.c:1641
-#, c-format
+#: ../libpurple/protocols/silc10/silc.c:652
+#: ../pidgin/gtkprefs.c:1643
 msgid "Normal"
 msgstr "Normal"
 
 #: ../libpurple/protocols/silc/silc.c:755
 #: ../libpurple/protocols/silc10/silc.c:666
-#, fuzzy
 msgid "In love"
 msgstr "Forelsket"
 
@@ -12086,9 +11884,8 @@
 
 #
 #: ../libpurple/protocols/silc/silc.c:812
-#, fuzzy
 msgid "Timezone (UTC)"
-msgstr "Tidssone"
+msgstr "Tidssone (UTC)"
 
 #: ../libpurple/protocols/silc/silc.c:816
 #: ../libpurple/protocols/silc/silc.c:817
@@ -12099,14 +11896,8 @@
 
 #: ../libpurple/protocols/silc/silc.c:818
 #: ../libpurple/protocols/silc10/silc.c:731
-msgid ""
-"You can let other users see your online status information and your personal "
-"information. Please fill the information you would like other users to see "
-"about yourself."
-msgstr ""
-"Du kan la andre brukere se din tilkoblingsstatusinformasjon og din "
-"personlige informasjon. Fyll inn informasjonen du ønsker at andre skal se om "
-"deg."
+msgid "You can let other users see your online status information and your personal information. Please fill the information you would like other users to see about yourself."
+msgstr "Du kan la andre brukere se din tilkoblingsstatusinformasjon og din personlige informasjon. Fyll inn informasjonen du ønsker at andre skal se om deg."
 
 #: ../libpurple/protocols/silc/silc.c:859
 #: ../libpurple/protocols/silc/silc.c:865
@@ -12158,9 +11949,8 @@
 
 #: ../libpurple/protocols/silc/silc.c:996
 #: ../libpurple/protocols/silc10/silc.c:907
-#, fuzzy
 msgid "Key length"
-msgstr "Nøkkellengde: \t%d biter\n"
+msgstr "Nøkkellengde"
 
 #: ../libpurple/protocols/silc/silc.c:998
 #: ../libpurple/protocols/silc10/silc.c:909
@@ -12267,8 +12057,7 @@
 #: ../libpurple/protocols/silc/silc.c:1666
 #: ../libpurple/protocols/silc10/silc.c:1595
 msgid "join &lt;channel&gt; [&lt;password&gt;]:  Join a chat on this network"
-msgstr ""
-"join &lt;channel&gt; [&lt;password&gt;]:  Join en samtale på dette nettverket"
+msgstr "join &lt;channel&gt; [&lt;password&gt;]:  Join en samtale på dette nettverket"
 
 #: ../libpurple/protocols/silc/silc.c:1670
 #: ../libpurple/protocols/silc10/silc.c:1599
@@ -12284,14 +12073,12 @@
 #: ../libpurple/protocols/silc10/silc.c:1607
 #: ../libpurple/protocols/zephyr/zephyr.c:2685
 msgid "msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user"
-msgstr ""
-"msg &lt;nick&gt; &lt;message&gt;:  Send en privat beskjed til en bruker"
+msgstr "msg &lt;nick&gt; &lt;message&gt;:  Send en privat beskjed til en bruker"
 
 #: ../libpurple/protocols/silc/silc.c:1682
 #: ../libpurple/protocols/silc10/silc.c:1611
 msgid "query &lt;nick&gt; [&lt;message&gt;]:  Send a private message to a user"
-msgstr ""
-"query &lt;nick&gt; [&lt;message&gt;]:  Send en privat beskjed til en bruker"
+msgstr "query &lt;nick&gt; [&lt;message&gt;]:  Send en privat beskjed til en bruker"
 
 #: ../libpurple/protocols/silc/silc.c:1686
 #: ../libpurple/protocols/silc10/silc.c:1615
@@ -12330,21 +12117,13 @@
 
 #: ../libpurple/protocols/silc/silc.c:1716
 #: ../libpurple/protocols/silc10/silc.c:1645
-msgid ""
-"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]:  Change or display "
-"channel modes"
-msgstr ""
-"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]:  Forandre eller vis "
-"kanal modus"
+msgid "cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]:  Change or display channel modes"
+msgstr "cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]:  Forandre eller vis kanal modus"
 
 #: ../libpurple/protocols/silc/silc.c:1720
 #: ../libpurple/protocols/silc10/silc.c:1649
-msgid ""
-"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;:  Change nick's modes "
-"on channel"
-msgstr ""
-"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;:  Forandre nick modus "
-"på kanal"
+msgid "cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;:  Change nick's modes on channel"
+msgstr "cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;:  Forandre nick modus på kanal"
 
 #: ../libpurple/protocols/silc/silc.c:1724
 #: ../libpurple/protocols/silc10/silc.c:1653
@@ -12358,12 +12137,8 @@
 
 #: ../libpurple/protocols/silc/silc.c:1732
 #: ../libpurple/protocols/silc10/silc.c:1661
-msgid ""
-"invite &lt;channel&gt; [-|+]&lt;nick&gt;:  invite nick or add/remove from "
-"channel invite list"
-msgstr ""
-"invite &lt;channel&gt; [-|+]&lt;nick&gt;:  inviter nick eller legg til/fjern "
-"fra kanalens invitasjonsliste"
+msgid "invite &lt;channel&gt; [-|+]&lt;nick&gt;:  invite nick or add/remove from channel invite list"
+msgstr "invite &lt;channel&gt; [-|+]&lt;nick&gt;:  inviter nick eller legg til/fjern fra kanalens invitasjonsliste"
 
 #: ../libpurple/protocols/silc/silc.c:1736
 #: ../libpurple/protocols/silc10/silc.c:1665
@@ -12383,8 +12158,7 @@
 #: ../libpurple/protocols/silc/silc.c:1748
 #: ../libpurple/protocols/silc10/silc.c:1677
 msgid "getkey &lt;nick|server&gt;:  Retrieve client's or server's public key"
-msgstr ""
-"getkey &lt;nick|server&gt;:  Få klientens eller serverens offentlige nøkkel"
+msgstr "getkey &lt;nick|server&gt;:  Få klientens eller serverens offentlige nøkkel"
 
 #: ../libpurple/protocols/silc/silc.c:1752
 #: ../libpurple/protocols/silc10/silc.c:1681
@@ -12403,12 +12177,8 @@
 
 #: ../libpurple/protocols/silc/silc.c:1765
 #: ../libpurple/protocols/silc10/silc.c:1694
-msgid ""
-"names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;:  List "
-"specific users in channel(s)"
-msgstr ""
-"names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;:  Vis "
-"spesifiserte brukere i kanalen/kanlaene"
+msgid "names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;:  List specific users in channel(s)"
+msgstr "names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;:  Vis spesifiserte brukere i kanalen/kanlaene"
 
 #. *< type
 #. *< ui_requirement
@@ -12431,7 +12201,8 @@
 msgstr "Secure Internet Live Conferencing (SILC) Protokoll"
 
 #: ../libpurple/protocols/silc/silc.c:1910
-#: ../libpurple/protocols/silc10/silc.c:1853 ../pidgin/gtkprefs.c:2036
+#: ../libpurple/protocols/silc10/silc.c:1853
+#: ../pidgin/gtkprefs.c:2038
 msgid "Network"
 msgstr "Nettverk"
 
@@ -12519,7 +12290,7 @@
 
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
-#, fuzzy, c-format
+#, c-format
 msgid "E-Mail: \t\t%s\n"
 msgstr "E-post: \t\t%s\n"
 
@@ -12554,9 +12325,9 @@
 msgstr "Nøkkellengde: \t%d biter\n"
 
 #: ../libpurple/protocols/silc/util.c:372
-#, fuzzy, c-format
+#, c-format
 msgid "Version: \t%s\n"
-msgstr "Organisasjon: \t%s\n"
+msgstr "Versjon: \t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:374
 #: ../libpurple/protocols/silc10/util.c:369
@@ -12610,19 +12381,20 @@
 msgid "Terminal"
 msgstr "Terminal"
 
-#: ../libpurple/protocols/silc/wb.c:284 ../libpurple/protocols/silc10/wb.c:284
+#: ../libpurple/protocols/silc/wb.c:284
+#: ../libpurple/protocols/silc10/wb.c:284
 #, c-format
 msgid "%s sent message to whiteboard. Would you like to open the whiteboard?"
 msgstr ""
 
-#: ../libpurple/protocols/silc/wb.c:288 ../libpurple/protocols/silc10/wb.c:288
-#, c-format
-msgid ""
-"%s sent message to whiteboard on %s channel. Would you like to open the "
-"whiteboard?"
-msgstr ""
-
-#: ../libpurple/protocols/silc/wb.c:302 ../libpurple/protocols/silc10/wb.c:302
+#: ../libpurple/protocols/silc/wb.c:288
+#: ../libpurple/protocols/silc10/wb.c:288
+#, c-format
+msgid "%s sent message to whiteboard on %s channel. Would you like to open the whiteboard?"
+msgstr ""
+
+#: ../libpurple/protocols/silc/wb.c:302
+#: ../libpurple/protocols/silc10/wb.c:302
 msgid "Whiteboard"
 msgstr ""
 
@@ -12631,53 +12403,46 @@
 msgstr "Ingen tjenerstatistikk tilgjengelig"
 
 #: ../libpurple/protocols/silc10/ops.c:1931
-#, fuzzy, c-format
+#, fuzzy
 msgid "Failure: Version mismatch, upgrade your client"
 msgstr "Feil versjon, vennligst oppgrader din klient"
 
 #: ../libpurple/protocols/silc10/ops.c:1934
-#, c-format
 msgid "Failure: Remote does not trust/support your public key"
-msgstr ""
-"Fjernliggende part støtter eller stoler ikke på ikke din offentlige nøkkel"
+msgstr "Fjernliggende part støtter eller stoler ikke på ikke din offentlige nøkkel"
 
 #: ../libpurple/protocols/silc10/ops.c:1937
-#, fuzzy, c-format
+#, fuzzy
 msgid "Failure: Remote does not support proposed KE group"
 msgstr "Fjerntliggende part støtter ikke foreslått KE-gruppe"
 
 #: ../libpurple/protocols/silc10/ops.c:1940
-#, c-format
 msgid "Failure: Remote does not support proposed cipher"
 msgstr "Fjerntliggende part støtter ikke foreslått krypteringsmetode"
 
 #: ../libpurple/protocols/silc10/ops.c:1943
-#, fuzzy, c-format
+#, fuzzy
 msgid "Failure: Remote does not support proposed PKCS"
 msgstr "Fjerntliggende part støtter ikke foreslått PKCS"
 
 #: ../libpurple/protocols/silc10/ops.c:1946
-#, fuzzy, c-format
+#, fuzzy
 msgid "Failure: Remote does not support proposed hash function"
 msgstr "Fjerntliggende part støtter ikke foreslått nøkkelfunksjon"
 
 #: ../libpurple/protocols/silc10/ops.c:1949
-#, c-format
 msgid "Failure: Remote does not support proposed HMAC"
 msgstr "Fjerntliggende part støtter ikke foreslått HMAC"
 
 #: ../libpurple/protocols/silc10/ops.c:1951
-#, c-format
 msgid "Failure: Incorrect signature"
 msgstr "Ugyldig signatur"
 
 #: ../libpurple/protocols/silc10/ops.c:1953
-#, c-format
 msgid "Failure: Invalid cookie"
 msgstr "Ugyldig informasjonskapsel"
 
 #: ../libpurple/protocols/silc10/ops.c:1964
-#, c-format
 msgid "Failure: Authentication failed"
 msgstr "Autentisering feilet"
 
@@ -12702,39 +12467,38 @@
 
 #. TODO: do we really want to disconnect on a failure to write?
 #: ../libpurple/protocols/simple/simple.c:416
-#, fuzzy
 msgid "Could not write"
-msgstr "Kunne ikke sende"
+msgstr "Kunne ikke skrive"
 
 #: ../libpurple/protocols/simple/simple.c:438
-#: ../libpurple/protocols/simple/simple.c:1529
+#: ../libpurple/protocols/simple/simple.c:1531
 msgid "Could not connect"
 msgstr "Kunne ikke koble til"
 
-#: ../libpurple/protocols/simple/simple.c:1059
+#: ../libpurple/protocols/simple/simple.c:1061
 #, fuzzy
 msgid "Unknown server response."
 msgstr "Ukjent feil."
 
-#: ../libpurple/protocols/simple/simple.c:1563
-#: ../libpurple/protocols/simple/simple.c:1605
-#: ../libpurple/protocols/simple/simple.c:1618
-#: ../libpurple/protocols/simple/simple.c:1669
+#: ../libpurple/protocols/simple/simple.c:1565
+#: ../libpurple/protocols/simple/simple.c:1607
+#: ../libpurple/protocols/simple/simple.c:1620
+#: ../libpurple/protocols/simple/simple.c:1671
 #, fuzzy
 msgid "Could not create listen socket"
 msgstr "Kunne ikke opprette socket"
 
-#: ../libpurple/protocols/simple/simple.c:1586
+#: ../libpurple/protocols/simple/simple.c:1588
 #, fuzzy
 msgid "Couldn't resolve host"
 msgstr "Kunne ikke koble til"
 
-#: ../libpurple/protocols/simple/simple.c:1677
+#: ../libpurple/protocols/simple/simple.c:1679
 #, fuzzy
 msgid "Could not resolve hostname"
 msgstr "Kan ikke finne datamaskinnavnet."
 
-#: ../libpurple/protocols/simple/simple.c:1694
+#: ../libpurple/protocols/simple/simple.c:1696
 #, fuzzy
 msgid "SIP screen names may not contain whitespaces or @ symbols"
 msgstr "IRC-kallenavn kan ikke inneholde mellomrom"
@@ -12747,43 +12511,43 @@
 #. *< id
 #. *< name
 #. *< version
-#: ../libpurple/protocols/simple/simple.c:1870
+#: ../libpurple/protocols/simple/simple.c:1872
 #, fuzzy
 msgid "SIP/SIMPLE Protocol Plugin"
 msgstr "SILC-protokolltillegg"
 
 #. *  summary
-#: ../libpurple/protocols/simple/simple.c:1871
+#: ../libpurple/protocols/simple/simple.c:1873
 #, fuzzy
 msgid "The SIP/SIMPLE Protocol Plugin"
 msgstr "SILC-protokolltillegg"
 
-#: ../libpurple/protocols/simple/simple.c:1899
+#: ../libpurple/protocols/simple/simple.c:1901
 #, fuzzy
 msgid "Publish status (note: everyone may watch you)"
 msgstr "Publiser status (NB: alle kan se deg)"
 
-#: ../libpurple/protocols/simple/simple.c:1905
+#: ../libpurple/protocols/simple/simple.c:1907
 #, fuzzy
 msgid "Use UDP"
 msgstr "Brukerid"
 
-#: ../libpurple/protocols/simple/simple.c:1907
+#: ../libpurple/protocols/simple/simple.c:1909
 #, fuzzy
 msgid "Use proxy"
 msgstr "Ingen proxy"
 
-#: ../libpurple/protocols/simple/simple.c:1909
+#: ../libpurple/protocols/simple/simple.c:1911
 #, fuzzy
 msgid "Proxy"
 msgstr "Ingen proxy"
 
-#: ../libpurple/protocols/simple/simple.c:1911
+#: ../libpurple/protocols/simple/simple.c:1913
 #, fuzzy
 msgid "Auth User"
 msgstr "AP-bruker"
 
-#: ../libpurple/protocols/simple/simple.c:1913
+#: ../libpurple/protocols/simple/simple.c:1915
 #, fuzzy
 msgid "Auth Domain"
 msgstr "Automatisk"
@@ -12829,7 +12593,6 @@
 msgstr "Advarsel %s er ikke tillatt."
 
 #: ../libpurple/protocols/toc/toc.c:503
-#, c-format
 msgid "A message has been dropped, you are exceeding the server speed limit."
 msgstr "En beskjed ble forkastet. Du overskrider tjenerens fartsgrense."
 
@@ -12854,47 +12617,38 @@
 msgstr "Du gikk glipp av en beskjed fra %s fordi den ble sendt for raskt."
 
 #: ../libpurple/protocols/toc/toc.c:518
-#, c-format
 msgid "Failure."
 msgstr "Feil."
 
 #: ../libpurple/protocols/toc/toc.c:521
-#, c-format
 msgid "Too many matches."
 msgstr "For mange treff."
 
 #: ../libpurple/protocols/toc/toc.c:524
-#, c-format
 msgid "Need more qualifiers."
 msgstr "Trenger flere parametre."
 
 #: ../libpurple/protocols/toc/toc.c:527
-#, c-format
 msgid "Dir service temporarily unavailable."
 msgstr "Katalogtjenesten er midlertidig utilgjengelig."
 
 #: ../libpurple/protocols/toc/toc.c:530
-#, c-format
 msgid "E-mail lookup restricted."
 msgstr "E-postoppslag er begrenset."
 
 #: ../libpurple/protocols/toc/toc.c:533
-#, c-format
 msgid "Keyword ignored."
 msgstr "Nøkkelord ignorert."
 
 #: ../libpurple/protocols/toc/toc.c:536
-#, c-format
 msgid "No keywords."
 msgstr "Ingen nøkkelord."
 
 #: ../libpurple/protocols/toc/toc.c:539
-#, c-format
 msgid "User has no directory information."
 msgstr "Brukeren har ingen kataloginformasjon."
 
 #: ../libpurple/protocols/toc/toc.c:543
-#, c-format
 msgid "Country not supported."
 msgstr "Land ikke støttet."
 
@@ -12904,28 +12658,21 @@
 msgstr "Ukjent feil: %s."
 
 #: ../libpurple/protocols/toc/toc.c:549
-#, fuzzy, c-format
+#, fuzzy
 msgid "Incorrect screen name or password."
 msgstr "Feil kallenavn eller passord."
 
 #: ../libpurple/protocols/toc/toc.c:552
-#, c-format
 msgid "The service is temporarily unavailable."
 msgstr "Tjenesten er midlertidig utilgjengelig."
 
 #: ../libpurple/protocols/toc/toc.c:555
-#, c-format
 msgid "Your warning level is currently too high to log in."
 msgstr "Advarselsnivået ditt er satt for høyt for å logge inn."
 
 #: ../libpurple/protocols/toc/toc.c:558
-#, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently.  Wait ten minutes "
-"and try again.  If you continue to try, you will need to wait even longer."
-msgstr ""
-"Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. "
-"Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger."
+msgid "You have been connecting and disconnecting too frequently.  Wait ten minutes and try again.  If you continue to try, you will need to wait even longer."
+msgstr "Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger."
 
 #: ../libpurple/protocols/toc/toc.c:560
 #, c-format
@@ -12958,10 +12705,11 @@
 msgid "Password Change Successful"
 msgstr "Passordet er endret."
 
-#: ../libpurple/protocols/toc/toc.c:1366 ../pidgin/gtkblist.c:5582
-#: ../pidgin/gtkblist.c:5932
+#: ../libpurple/protocols/toc/toc.c:1366
+#: ../pidgin/gtkblist.c:5871
+#: ../pidgin/gtkblist.c:6227
 msgid "_Group:"
-msgstr "Gruppe:"
+msgstr "_Gruppe:"
 
 #: ../libpurple/protocols/toc/toc.c:1535
 msgid "Get Dir Info"
@@ -12980,8 +12728,10 @@
 msgid "File transfer failed; other side probably canceled."
 msgstr "Filoverføringen mislyktes - sannsynligvis avbrutt på den andre siden."
 
-#: ../libpurple/protocols/toc/toc.c:1878 ../libpurple/protocols/toc/toc.c:1918
-#: ../libpurple/protocols/toc/toc.c:2042 ../libpurple/protocols/toc/toc.c:2130
+#: ../libpurple/protocols/toc/toc.c:1878
+#: ../libpurple/protocols/toc/toc.c:1918
+#: ../libpurple/protocols/toc/toc.c:2042
+#: ../libpurple/protocols/toc/toc.c:2130
 msgid "Could not connect for transfer."
 msgstr "Kunne ikke koble til for dataoverføring."
 
@@ -12990,9 +12740,8 @@
 msgstr "Kunne ikke skrive filhode. Filen vil ikke bli overført."
 
 #: ../libpurple/protocols/toc/toc.c:2175
-#, fuzzy
 msgid "Save As..."
-msgstr "Lagre ikon som..."
+msgstr "Lagre som..."
 
 #: ../libpurple/protocols/toc/toc.c:2209
 #, c-format
@@ -13016,253 +12765,223 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/toc/toc.c:2306 ../libpurple/protocols/toc/toc.c:2308
+#: ../libpurple/protocols/toc/toc.c:2306
+#: ../libpurple/protocols/toc/toc.c:2308
 msgid "TOC Protocol Plugin"
 msgstr "TOC-protokolltillegg"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:782
+#: ../libpurple/protocols/yahoo/yahoo.c:784
 #, c-format
 msgid "%s has sent you a webcam invite, which is not yet supported."
 msgstr ""
 
-#: ../libpurple/protocols/yahoo/yahoo.c:838
+#: ../libpurple/protocols/yahoo/yahoo.c:840
 msgid "Your Yahoo! message did not get sent."
 msgstr "Din Yahoo!-beskjed ble ikke sendt."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:960
+#: ../libpurple/protocols/yahoo/yahoo.c:959
 #, c-format
 msgid "Yahoo! system message for %s:"
 msgstr "Yahoo! systemmelding for %s:"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:1029
+#: ../libpurple/protocols/yahoo/yahoo.c:1028
 #, fuzzy
 msgid "Authorization denied message:"
 msgstr "Godkjenning nektet, grunn:"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:1047
-#, c-format
-msgid ""
-"%s has (retroactively) denied your request to add them to your list for the "
-"following reason: %s."
-msgstr ""
-"%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i "
-"kontaktlisten med følgende grunn: %s."
-
-#: ../libpurple/protocols/yahoo/yahoo.c:1050
+#: ../libpurple/protocols/yahoo/yahoo.c:1046
+#, c-format
+msgid "%s has (retroactively) denied your request to add them to your list for the following reason: %s."
+msgstr "%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i kontaktlisten med følgende grunn: %s."
+
+#: ../libpurple/protocols/yahoo/yahoo.c:1049
 #, c-format
 msgid "%s has (retroactively) denied your request to add them to your list."
-msgstr ""
-"%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i "
-"kontaktlisten din."
-
-#: ../libpurple/protocols/yahoo/yahoo.c:1052
+msgstr "%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i kontaktlisten din."
+
+#: ../libpurple/protocols/yahoo/yahoo.c:1051
 msgid "Add buddy rejected"
 msgstr "Legge til kontakt avslått"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:1994
-#, fuzzy, c-format
-msgid ""
-"The Yahoo server has requested the use of an unrecognized authentication "
-"method.  You will probably not be able to successfully sign on to Yahoo.  "
-"Check %s for updates."
-msgstr ""
-"Yahoo-tjeneren har forespurt bruk av en ukjent autentiseringsmetode. Denne "
-"versjonen av Gaim vil antakeligvis ikke være i stand til å logge på Yahoo. "
-"Sjekk %s for oppdateringer."
-
-#: ../libpurple/protocols/yahoo/yahoo.c:1997
+#: ../libpurple/protocols/yahoo/yahoo.c:1993
+#, fuzzy, c-format
+msgid "The Yahoo server has requested the use of an unrecognized authentication method.  You will probably not be able to successfully sign on to Yahoo.  Check %s for updates."
+msgstr "Yahoo-tjeneren har forespurt bruk av en ukjent autentiseringsmetode. Denne versjonen av Gaim vil antakeligvis ikke være i stand til å logge på Yahoo. Sjekk %s for oppdateringer."
+
+#: ../libpurple/protocols/yahoo/yahoo.c:1996
 msgid "Failed Yahoo! Authentication"
 msgstr "Yahoo!-autentisering feilet"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2063
-#, c-format
-msgid ""
-"You have tried to ignore %s, but the user is on your buddy list.  Clicking "
-"\"Yes\" will remove and ignore the buddy."
-msgstr ""
-"Du forsøkte å ignorere %s, men vedkommende er i kontaktlisten din. Hvis du "
-"klikker på \"Ja\" vil kontakten fjernes og ignoreres."
-
-#: ../libpurple/protocols/yahoo/yahoo.c:2066
+#: ../libpurple/protocols/yahoo/yahoo.c:2062
+#, c-format
+msgid "You have tried to ignore %s, but the user is on your buddy list.  Clicking \"Yes\" will remove and ignore the buddy."
+msgstr "Du forsøkte å ignorere %s, men vedkommende er i kontaktlisten din. Hvis du klikker på \"Ja\" vil kontakten fjernes og ignoreres."
+
+#: ../libpurple/protocols/yahoo/yahoo.c:2065
 msgid "Ignore buddy?"
 msgstr "Ignorere kontakt?"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2129
+#: ../libpurple/protocols/yahoo/yahoo.c:2128
 msgid "Your account is locked, please log in to the Yahoo! website."
 msgstr "Din konto har blitt låst, vennligst logg inn på Yahoo! nettsiden"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2132
+#: ../libpurple/protocols/yahoo/yahoo.c:2131
 #, c-format
 msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
 msgstr ""
 "Ukjent feilkode %d.\n"
 "Om du logger inn på Yahoo! sin nettside, kan dette  kansje løse problemet"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2186
+#: ../libpurple/protocols/yahoo/yahoo.c:2185
 #, c-format
 msgid "Could not add buddy %s to group %s to the server list on account %s."
-msgstr ""
-"Kunne ikke legge til kontakt %s i gruppen %s i tjenerlisten på konto %s."
-
-#: ../libpurple/protocols/yahoo/yahoo.c:2189
+msgstr "Kunne ikke legge til kontakt %s i gruppen %s i tjenerlisten på konto %s."
+
+#: ../libpurple/protocols/yahoo/yahoo.c:2188
 msgid "Could not add buddy to server list"
 msgstr "Kunne ikke legge kontakt til tjenerens kontaktliste"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2308
+#: ../libpurple/protocols/yahoo/yahoo.c:2307
 #, c-format
 msgid "[ Audible %s/%s/%s.swf ] %s"
 msgstr ""
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2651
+#: ../libpurple/protocols/yahoo/yahoo.c:2650
 #, fuzzy
 msgid "Received unexpected HTTP response from server."
 msgstr "Ugyldig svar fra tjener."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2675
-#: ../libpurple/protocols/yahoo/yahoo.c:2861
-#: ../libpurple/protocols/yahoo/yahoo.c:2964
-#: ../libpurple/protocols/yahoo/yahoo.c:2974
+#: ../libpurple/protocols/yahoo/yahoo.c:2674
+#: ../libpurple/protocols/yahoo/yahoo.c:2860
+#: ../libpurple/protocols/yahoo/yahoo.c:2963
+#: ../libpurple/protocols/yahoo/yahoo.c:2973
 #: ../libpurple/protocols/yahoo/yahoochat.c:1514
 #: ../libpurple/protocols/yahoo/yahoochat.c:1584
 #: ../libpurple/protocols/yahoo/ycht.c:585
 msgid "Connection problem"
 msgstr "Problem ved tilkobling"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2701
+#: ../libpurple/protocols/yahoo/yahoo.c:2700
 #, fuzzy, c-format
 msgid ""
 "Lost connection with %s:\n"
 "%s"
 msgstr "Samtaler med %s"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2726
+#: ../libpurple/protocols/yahoo/yahoo.c:2725
 #, c-format
 msgid ""
 "Could not establish a connection with %s:\n"
 "%s"
 msgstr ""
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3081
-#: ../libpurple/protocols/yahoo/yahoo.c:3767
-#, fuzzy
+#: ../libpurple/protocols/yahoo/yahoo.c:3080
+#: ../libpurple/protocols/yahoo/yahoo.c:3766
 msgid "Not at Home"
 msgstr "Ikke hjemme"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3083
-#: ../libpurple/protocols/yahoo/yahoo.c:3770
-#, fuzzy
+#: ../libpurple/protocols/yahoo/yahoo.c:3082
+#: ../libpurple/protocols/yahoo/yahoo.c:3769
 msgid "Not at Desk"
 msgstr "Ikke ved skrivebordet"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3085
-#: ../libpurple/protocols/yahoo/yahoo.c:3773
-#, fuzzy
+#: ../libpurple/protocols/yahoo/yahoo.c:3084
+#: ../libpurple/protocols/yahoo/yahoo.c:3772
 msgid "Not in Office"
 msgstr "Ikke på kontoret"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3089
-#: ../libpurple/protocols/yahoo/yahoo.c:3779
+#: ../libpurple/protocols/yahoo/yahoo.c:3088
+#: ../libpurple/protocols/yahoo/yahoo.c:3778
 msgid "On Vacation"
 msgstr "På ferie"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3093
-#: ../libpurple/protocols/yahoo/yahoo.c:3785
+#: ../libpurple/protocols/yahoo/yahoo.c:3092
+#: ../libpurple/protocols/yahoo/yahoo.c:3784
 msgid "Stepped Out"
 msgstr "Ute"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3186
-#: ../libpurple/protocols/yahoo/yahoo.c:3216
+#: ../libpurple/protocols/yahoo/yahoo.c:3185
+#: ../libpurple/protocols/yahoo/yahoo.c:3215
 msgid "Not on server list"
 msgstr "Ikke på tjenerlisten"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3233
-#: ../libpurple/protocols/yahoo/yahoo.c:3291
+#: ../libpurple/protocols/yahoo/yahoo.c:3232
+#: ../libpurple/protocols/yahoo/yahoo.c:3290
 #, fuzzy
 msgid "Appear Online"
 msgstr "Lat som avlogget"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3236
-#: ../libpurple/protocols/yahoo/yahoo.c:3312
+#: ../libpurple/protocols/yahoo/yahoo.c:3235
+#: ../libpurple/protocols/yahoo/yahoo.c:3311
 #, fuzzy
 msgid "Appear Permanently Offline"
 msgstr "Lat som avlogget"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3254
+#: ../libpurple/protocols/yahoo/yahoo.c:3253
 #, fuzzy
 msgid "Presence"
 msgstr "Innstillinger"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3297
+#: ../libpurple/protocols/yahoo/yahoo.c:3296
 msgid "Appear Offline"
 msgstr "Lat som avlogget"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3306
+#: ../libpurple/protocols/yahoo/yahoo.c:3305
 #, fuzzy
 msgid "Don't Appear Permanently Offline"
 msgstr "Lat som avlogget"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3354
+#: ../libpurple/protocols/yahoo/yahoo.c:3353
 msgid "Join in Chat"
 msgstr "Bli med i samtalegruppe"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3360
+#: ../libpurple/protocols/yahoo/yahoo.c:3359
 msgid "Initiate Conference"
 msgstr "Start konferanse"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3388
+#: ../libpurple/protocols/yahoo/yahoo.c:3387
 #, fuzzy
 msgid "Presence Settings"
 msgstr "Skjulte Innstillinger"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3394
+#: ../libpurple/protocols/yahoo/yahoo.c:3393
 msgid "Start Doodling"
 msgstr "Start kruseduller"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3495
+#: ../libpurple/protocols/yahoo/yahoo.c:3494
 #, fuzzy
 msgid "Activate which ID?"
 msgstr "Aktiver hvilken ID?"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3506
+#: ../libpurple/protocols/yahoo/yahoo.c:3505
 msgid "Join whom in chat?"
 msgstr "Bli med hvem i samtalegruppe?"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3518
+#: ../libpurple/protocols/yahoo/yahoo.c:3517
 msgid "Activate ID..."
 msgstr "Aktiver ID..."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3522
+#: ../libpurple/protocols/yahoo/yahoo.c:3521
 #, fuzzy
 msgid "Join User in Chat..."
 msgstr "Bli med bruker i samtalegruppe..."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3527
+#: ../libpurple/protocols/yahoo/yahoo.c:3526
 #, fuzzy
 msgid "Open Inbox"
 msgstr "Åpne Hotmail Inbox"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4119
-#, fuzzy
-msgid "Buzz"
-msgstr "Buzz!!"
-
-#: ../libpurple/protocols/yahoo/yahoo.c:4121
-#, c-format
-msgid "Buzzing %s..."
-msgstr ""
-
-#: ../libpurple/protocols/yahoo/yahoo.c:4136
+#: ../libpurple/protocols/yahoo/yahoo.c:4135
 #, fuzzy
 msgid "join &lt;room&gt;:  Join a chat room on the Yahoo network"
-msgstr ""
-"join: &lt;rom&gt; [vert]:  Bli med i en gruppesamtale på denne serveren"
-
-#: ../libpurple/protocols/yahoo/yahoo.c:4141
+msgstr "join: &lt;rom&gt; [vert]:  Bli med i en gruppesamtale på denne serveren"
+
+#: ../libpurple/protocols/yahoo/yahoo.c:4140
 #, fuzzy
 msgid "list: List rooms on the Yahoo network"
 msgstr "list:  Vis kanaler på dette nettverket"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4149
+#: ../libpurple/protocols/yahoo/yahoo.c:4148
 msgid "doodle: Request user to start a Doodle session"
 msgstr "doodle: Forespør en bruker om å starte en Doodle session"
 
@@ -13276,62 +12995,62 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/yahoo/yahoo.c:4358
-#: ../libpurple/protocols/yahoo/yahoo.c:4360
+#: ../libpurple/protocols/yahoo/yahoo.c:4357
+#: ../libpurple/protocols/yahoo/yahoo.c:4359
 msgid "Yahoo Protocol Plugin"
 msgstr "Yahoo-protokolltillegg"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4383
+#: ../libpurple/protocols/yahoo/yahoo.c:4382
 msgid "Yahoo Japan"
 msgstr "Yahoo Japan"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4386
+#: ../libpurple/protocols/yahoo/yahoo.c:4385
 #, fuzzy
 msgid "Pager server"
 msgstr "Proxytjener"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4389
+#: ../libpurple/protocols/yahoo/yahoo.c:4388
 #, fuzzy
 msgid "Japan Pager server"
 msgstr "Japansk personsøker-adresse:"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4392
+#: ../libpurple/protocols/yahoo/yahoo.c:4391
 msgid "Pager port"
 msgstr "Personsøker-port:"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4395
+#: ../libpurple/protocols/yahoo/yahoo.c:4394
 #, fuzzy
 msgid "File transfer server"
 msgstr "Filoverføringsvert"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4398
+#: ../libpurple/protocols/yahoo/yahoo.c:4397
 #, fuzzy
 msgid "Japan file transfer server"
 msgstr "Japansk filoverføringsvert"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4401
+#: ../libpurple/protocols/yahoo/yahoo.c:4400
 msgid "File transfer port"
 msgstr "Filoverføringsport"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4404
+#: ../libpurple/protocols/yahoo/yahoo.c:4403
 #, fuzzy
 msgid "Chat room locale"
 msgstr "Samtaleromslisteadresse"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4407
+#: ../libpurple/protocols/yahoo/yahoo.c:4406
 msgid "Ignore conference and chatroom invitations"
 msgstr ""
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4415
+#: ../libpurple/protocols/yahoo/yahoo.c:4414
 #, fuzzy
 msgid "Chat room list URL"
 msgstr "Samtaleromslisteadresse"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4418
+#: ../libpurple/protocols/yahoo/yahoo.c:4417
 msgid "Yahoo Chat server"
 msgstr ""
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4421
+#: ../libpurple/protocols/yahoo/yahoo.c:4420
 #, fuzzy
 msgid "Yahoo Chat port"
 msgstr "Yahoo Japan"
@@ -13364,20 +13083,13 @@
 msgstr "Yahoo!-profil"
 
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:838
-msgid ""
-"Sorry, profiles marked as containing adult content are not supported at this "
-"time."
-msgstr ""
-"Beklager, profiler som er markert med vokseninnhold er for tiden ikke "
-"støttet."
+msgid "Sorry, profiles marked as containing adult content are not supported at this time."
+msgstr "Beklager, profiler som er markert med vokseninnhold er for tiden ikke støttet."
 
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:840
 #, fuzzy
-msgid ""
-"If you wish to view this profile, you will need to visit this link in your "
-"web browser:"
-msgstr ""
-"Hvis du ønsker å vise denne profilen, må du åpne denne lenken i en nettleser"
+msgid "If you wish to view this profile, you will need to visit this link in your web browser:"
+msgstr "Hvis du ønsker å vise denne profilen, må du åpne denne lenken i en nettleser"
 
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1034
 msgid "Yahoo! ID"
@@ -13411,7 +13123,6 @@
 msgstr "Kul lenke 3"
 
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1190
-#, fuzzy
 msgid "Last Update"
 msgstr "Sist oppdatert"
 
@@ -13422,31 +13133,16 @@
 
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1205
 #, fuzzy
-msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
-msgstr ""
-"Beklager, men denne profilen ser ut til å være i et språk som for øyeblikket "
-"ikke er støttet."
+msgid "Sorry, this profile seems to be in a language or format that is not supported at this time."
+msgstr "Beklager, men denne profilen ser ut til å være i et språk som for øyeblikket ikke er støttet."
 
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1221
-msgid ""
-"Could not retrieve the user's profile. This most likely is a temporary "
-"server-side problem. Please try again later."
-msgstr ""
-"Kunne ikke hente ned brukerens profil. Dette er mest sannsynlig et "
-"midlertidig server-problem. Vennligst prøv igjen senere."
+msgid "Could not retrieve the user's profile. This most likely is a temporary server-side problem. Please try again later."
+msgstr "Kunne ikke hente ned brukerens profil. Dette er mest sannsynlig et midlertidig server-problem. Vennligst prøv igjen senere."
 
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1224
-msgid ""
-"Could not retrieve the user's profile. This most likely means that the user "
-"does not exist; however, Yahoo! sometimes does fail to find a user's "
-"profile. If you know that the user exists, please try again later."
-msgstr ""
-"Kunne ikke hente ned brukerens profil. Dette betyr sannsynligvis at brukeren "
-"ikke eksisterer, men merk at Yahoo! noen ganger ikke greier å finne en "
-"brukers profil. Om du vet at brukeren eksisterer, vennligst prøv igjen "
-"senere."
+msgid "Could not retrieve the user's profile. This most likely means that the user does not exist; however, Yahoo! sometimes does fail to find a user's profile. If you know that the user exists, please try again later."
+msgstr "Kunne ikke hente ned brukerens profil. Dette betyr sannsynligvis at brukeren ikke eksisterer, men merk at Yahoo! noen ganger ikke greier å finne en brukers profil. Om du vet at brukeren eksisterer, vennligst prøv igjen senere."
 
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1231
 msgid "The user's profile is empty."
@@ -13467,15 +13163,13 @@
 
 #. -6
 #: ../libpurple/protocols/yahoo/yahoochat.c:441
-#, fuzzy
 msgid "Unknown room"
-msgstr "Ukjent feil"
+msgstr "Ukjent rom"
 
 #. -15
 #: ../libpurple/protocols/yahoo/yahoochat.c:444
-#, fuzzy
 msgid "Maybe the room is full"
-msgstr "Kanskje rommet er fullt?"
+msgstr "Kanskje rommet er fullt"
 
 #. -35
 #: ../libpurple/protocols/yahoo/yahoochat.c:447
@@ -13484,9 +13178,7 @@
 msgstr "Ikke tilgjengelig"
 
 #: ../libpurple/protocols/yahoo/yahoochat.c:451
-msgid ""
-"Unknown error. You may need to logout and wait five minutes before being "
-"able to rejoin a chatroom"
+msgid "Unknown error. You may need to logout and wait five minutes before being able to rejoin a chatroom"
 msgstr ""
 
 #: ../libpurple/protocols/yahoo/yahoochat.c:534
@@ -13537,12 +13229,8 @@
 
 #: ../libpurple/protocols/zephyr/zephyr.c:354
 #, fuzzy
-msgid ""
-"(There was an error converting this message.\t Check the 'Encoding' option "
-"in the Account Editor)"
-msgstr ""
-"(Det oppstod en feil under konverteringen av denne beskjeden.\t Sjekk "
-"'encoding'-innstillingen i kontooppsettet)"
+msgid "(There was an error converting this message.\t Check the 'Encoding' option in the Account Editor)"
+msgstr "(Det oppstod en feil under konverteringen av denne beskjeden.\t Sjekk 'encoding'-innstillingen i kontooppsettet)"
 
 #: ../libpurple/protocols/zephyr/zephyr.c:752
 #, fuzzy, c-format
@@ -13593,8 +13281,7 @@
 
 #: ../libpurple/protocols/zephyr/zephyr.c:2700
 msgid "instance &lt;instance&gt;: Set the instance to be used on this class"
-msgstr ""
-"instance &lt;instance&gt;: Sett hendelse som skal brukes for denne klassen"
+msgstr "instance &lt;instance&gt;: Sett hendelse som skal brukes for denne klassen"
 
 #: ../libpurple/protocols/zephyr/zephyr.c:2705
 msgid "inst &lt;instance&gt;: Set the instance to be used on this class"
@@ -13602,35 +13289,26 @@
 
 #: ../libpurple/protocols/zephyr/zephyr.c:2710
 msgid "topic &lt;instance&gt;: Set the instance to be used on this class"
-msgstr ""
-"topic &lt;instance&gt;: Sett hendelse som skal brukes for denne klassen"
+msgstr "topic &lt;instance&gt;: Sett hendelse som skal brukes for denne klassen"
 
 #: ../libpurple/protocols/zephyr/zephyr.c:2716
 msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
-msgstr ""
-"ub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join en ny samtale"
+msgstr "ub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join en ny samtale"
 
 #: ../libpurple/protocols/zephyr/zephyr.c:2721
-msgid ""
-"zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
+msgid "zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
 msgstr ""
 
 #: ../libpurple/protocols/zephyr/zephyr.c:2727
-msgid ""
-"zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,"
-"<i>instance</i>,*&gt;"
+msgid "zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,<i>instance</i>,*&gt;"
 msgstr ""
 
 #: ../libpurple/protocols/zephyr/zephyr.c:2733
-msgid ""
-"zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;"
-"<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
+msgid "zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
 msgstr ""
 
 #: ../libpurple/protocols/zephyr/zephyr.c:2739
-msgid ""
-"zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,"
-"<i>instance</i>,<i>recipient</i>&gt;"
+msgid "zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,<i>instance</i>,<i>recipient</i>&gt;"
 msgstr ""
 
 #: ../libpurple/protocols/zephyr/zephyr.c:2744
@@ -13695,7 +13373,9 @@
 msgid "Exposure"
 msgstr ""
 
-#: ../libpurple/proxy.c:459 ../libpurple/proxy.c:894 ../libpurple/proxy.c:1049
+#: ../libpurple/proxy.c:459
+#: ../libpurple/proxy.c:894
+#: ../libpurple/proxy.c:1049
 #: ../libpurple/proxy.c:1617
 #, fuzzy, c-format
 msgid ""
@@ -13708,7 +13388,9 @@
 msgid "Unable to parse response from HTTP proxy: %s\n"
 msgstr ""
 
-#: ../libpurple/proxy.c:698 ../libpurple/proxy.c:744 ../libpurple/proxy.c:780
+#: ../libpurple/proxy.c:698
+#: ../libpurple/proxy.c:744
+#: ../libpurple/proxy.c:780
 #: ../libpurple/proxy.c:792
 #, fuzzy, c-format
 msgid "HTTP proxy connection error %d"
@@ -13733,29 +13415,26 @@
 #. * A wrapper for purple_request_action() that uses @c Yes and @c No buttons.
 #.
 #: ../libpurple/request.h:1378
-#, fuzzy
 msgid "_Yes"
-msgstr "Ja"
+msgstr "_Ja"
 
 #: ../libpurple/request.h:1378
-#, fuzzy
 msgid "_No"
-msgstr "Nei"
+msgstr "_Nei"
 
 #. *
 #. * A wrapper for purple_request_action() that uses Accept and Cancel buttons.
 #.
 #: ../libpurple/request.h:1398
-#, fuzzy
 msgid "_Accept"
-msgstr "Godta"
+msgstr "_Godta"
 
 #. *
 #. * The default message to use when the user becomes auto-away.
 #.
 #: ../libpurple/savedstatuses.c:48
 msgid "I'm not here right now"
-msgstr ""
+msgstr "Jeg er ikke her akkurat nå"
 
 #: ../libpurple/savedstatuses.c:535
 #, fuzzy
@@ -13777,19 +13456,19 @@
 msgid "%s has requested your attention!"
 msgstr "%s hentet informasjon om deg"
 
-#: ../libpurple/server.c:796
+#: ../libpurple/server.c:793
 #, fuzzy, c-format
 msgid ""
 "%s has invited %s to the chat room %s:\n"
 "%s"
 msgstr "Brukeren '%s' inviterer %s til samtalerom: '%s\n"
 
-#: ../libpurple/server.c:801
+#: ../libpurple/server.c:798
 #, c-format
 msgid "%s has invited %s to the chat room %s\n"
 msgstr "Brukeren '%s' inviterer %s til samtalerom: '%s\n"
 
-#: ../libpurple/server.c:805
+#: ../libpurple/server.c:802
 msgid "Accept chat invitation?"
 msgstr "Aksepter samtaleinvitasjon?"
 
@@ -13817,180 +13496,180 @@
 msgid "Unset"
 msgstr "Enhet"
 
-#: ../libpurple/status.c:156 ../pidgin/gtkstatusbox.c:1059
-#, fuzzy
+#: ../libpurple/status.c:156
+#: ../pidgin/gtkstatusbox.c:1059
 msgid "Do not disturb"
 msgstr "Ikke forstyrr"
 
 #: ../libpurple/status.c:159
-#, fuzzy
 msgid "Extended away"
 msgstr "Utvidet borte"
 
 #: ../libpurple/status.c:160
-#, fuzzy
 msgid "Mobile"
-msgstr "Mobiltelefon"
+msgstr "Mobil"
 
 #: ../libpurple/status.c:609
-#, fuzzy, c-format
+#, c-format
 msgid "%s changed status from %s to %s"
-msgstr "%s har endret kanaltema til: %s"
-
-#: ../libpurple/status.c:619
-#, fuzzy, c-format
+msgstr "%s har endret status fra %s til %s"
+
+#: ../libpurple/status.c:612
+#, c-format
+msgid "%s (%s) changed status from %s to %s"
+msgstr "%s (%s) har endret status fra %s til %s"
+
+#: ../libpurple/status.c:623
+#, c-format
 msgid "%s is now %s"
-msgstr "%s heter nå %s"
-
-#: ../libpurple/status.c:624
-#, fuzzy, c-format
+msgstr "%s er nå %s"
+
+#: ../libpurple/status.c:625
+#, c-format
+msgid "%s (%s) is now %s"
+msgstr "%s (%s) er nå %s"
+
+#: ../libpurple/status.c:631
+#, c-format
 msgid "%s is no longer %s"
-msgstr "%s er tilbake."
-
-#: ../libpurple/status.c:1234
+msgstr "%s er ikke lenger %s"
+
+#: ../libpurple/status.c:633
+#, c-format
+msgid "%s (%s) is no longer %s"
+msgstr "%s (%s) er ikke lenger %s"
+
+#: ../libpurple/status.c:1244
 #, c-format
 msgid "%s became idle"
 msgstr "%s har blitt inaktiv"
 
-#: ../libpurple/status.c:1251
+#: ../libpurple/status.c:1261
 #, c-format
 msgid "%s became unidle"
 msgstr "%s har blitt aktiv"
 
-#: ../libpurple/status.c:1314
-#, fuzzy, c-format
+#: ../libpurple/status.c:1324
+#, c-format
 msgid "+++ %s became idle"
 msgstr "%s har blitt inaktiv"
 
-#: ../libpurple/status.c:1316
-#, fuzzy, c-format
+#: ../libpurple/status.c:1326
+#, c-format
 msgid "+++ %s became unidle"
 msgstr "%s har blitt aktiv"
 
-#: ../libpurple/util.c:718
+#: ../libpurple/util.c:701
 #, c-format
 msgid "%x %X"
-msgstr ""
-
-#: ../libpurple/util.c:2722
-#, fuzzy, c-format
+msgstr "%x %X"
+
+#: ../libpurple/util.c:2705
+#, c-format
 msgid "Error Reading %s"
-msgstr ""
-"Klarte ikke lese %s:\n"
-"%s\n"
-
-#: ../libpurple/util.c:2723
-#, fuzzy, c-format
-msgid ""
-"An error was encountered reading your %s.  They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Det oppstod en feil under innlasting av kontaktlisten din. Den har ikke "
-"blitt lastet, og den gamle filen ble flyttet til blist.xml~."
-
-#: ../libpurple/util.c:3223
+msgstr "Feil ved lesing av %s"
+
+#: ../libpurple/util.c:2706
+#, c-format
+msgid "An error was encountered reading your %s.  They have not been loaded, and the old file has been renamed to %s~."
+msgstr "Det oppstod en feil under lesing av %s. Den har ikke blitt lastet, og den gamle filen ble flyttet til %s~."
+
+#: ../libpurple/util.c:3206
 msgid "Calculating..."
 msgstr "Beregner..."
 
-#: ../libpurple/util.c:3226
+#: ../libpurple/util.c:3209
 msgid "Unknown."
 msgstr "Ukjent."
 
-#: ../libpurple/util.c:3252
-#, fuzzy, c-format
+#: ../libpurple/util.c:3235
+#, c-format
 msgid "%d second"
 msgid_plural "%d seconds"
-msgstr[0] "sekund"
-msgstr[1] "sekunder"
-
-#: ../libpurple/util.c:3264
-#, fuzzy, c-format
+msgstr[0] "%d sekund"
+msgstr[1] "%d sekunder"
+
+#: ../libpurple/util.c:3247
+#, c-format
 msgid "%d day"
 msgid_plural "%d days"
-msgstr[0] "dag"
-msgstr[1] "dager"
-
-#: ../libpurple/util.c:3272
+msgstr[0] "%d dag"
+msgstr[1] "%d dager"
+
+#: ../libpurple/util.c:3255
 #, c-format
 msgid "%s, %d hour"
 msgid_plural "%s, %d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../libpurple/util.c:3278
-#, fuzzy, c-format
+msgstr[0] "%s, %d time"
+msgstr[1] "%s, %d timer"
+
+#: ../libpurple/util.c:3261
+#, c-format
 msgid "%d hour"
 msgid_plural "%d hours"
-msgstr[0] "time"
-msgstr[1] "timer"
-
-#: ../libpurple/util.c:3286
-#, fuzzy, c-format
+msgstr[0] "%d time"
+msgstr[1] "%d timer"
+
+#: ../libpurple/util.c:3269
+#, c-format
 msgid "%s, %d minute"
 msgid_plural "%s, %d minutes"
-msgstr[0] "minutt"
-msgstr[1] "minutter"
-
-#: ../libpurple/util.c:3292
-#, fuzzy, c-format
+msgstr[0] "%s, %d minutt"
+msgstr[1] "%s, %d minutter"
+
+#: ../libpurple/util.c:3275
+#, c-format
 msgid "%d minute"
 msgid_plural "%d minutes"
-msgstr[0] "minutt"
-msgstr[1] "minutter"
-
-#: ../libpurple/util.c:3552
+msgstr[0] "%d minutt"
+msgstr[1] "%d minutter"
+
+#: ../libpurple/util.c:3535
 #, c-format
 msgid "Could not open %s: Redirected too many times"
-msgstr ""
-
-#: ../libpurple/util.c:3589 ../libpurple/util.c:3885
-#, fuzzy, c-format
+msgstr "Kunne ikke åpne %s: Omdirigert for mange ganger"
+
+#: ../libpurple/util.c:3572
+#: ../libpurple/util.c:3868
+#, c-format
 msgid "Unable to connect to %s"
-msgstr "Kan ikke koble til tjener."
-
-#: ../libpurple/util.c:3712
-#, c-format
-msgid ""
-"Unable to allocate enough memory to hold the contents from %s.  The web "
-"server may be trying something malicious."
-msgstr ""
-
-#: ../libpurple/util.c:3747
-#, fuzzy, c-format
+msgstr "Kan ikke koble til %s"
+
+#: ../libpurple/util.c:3695
+#, c-format
+msgid "Unable to allocate enough memory to hold the contents from %s.  The web server may be trying something malicious."
+msgstr ""
+
+#: ../libpurple/util.c:3730
+#, c-format
 msgid "Error reading from %s: %s"
-msgstr ""
-"Klarte ikke lese %s:\n"
-"%s\n"
-
-#: ../libpurple/util.c:3778
-#, fuzzy, c-format
+msgstr "Feil ved lesing fra %s: %s"
+
+#: ../libpurple/util.c:3761
+#, c-format
 msgid "Error writing to %s: %s"
-msgstr ""
-"Klarte ikke skrive %s:\n"
-"%s\n"
-
-#: ../libpurple/util.c:3803
-#, fuzzy, c-format
+msgstr "Feil ved skriving til %s: %s"
+
+#: ../libpurple/util.c:3786
+#, c-format
 msgid "Unable to connect to %s: %s"
-msgstr "Kan ikke koble til tjener."
+msgstr "Kan ikke koble til %s: %s"
 
 #: ../pidgin.desktop.in.h:1
 msgid "Internet Messenger"
 msgstr "Lynmeldingsklient"
 
 #: ../pidgin.desktop.in.h:2
-#, fuzzy
 msgid "Pidgin Internet Messenger"
-msgstr "Lynmeldingsklient"
+msgstr "Pidgin Lynmeldingsklient"
 
 #: ../pidgin.desktop.in.h:3
 msgid "Send instant messages over multiple protocols"
 msgstr "Send lynmeldinger over flere protokoller"
 
 #: ../pidgin/eggtrayicon.c:129
-#, fuzzy
 msgid "Orientation"
-msgstr "Organisasjon"
+msgstr "Orientering"
 
 #: ../pidgin/eggtrayicon.c:130
 msgid "The orientation of the tray."
@@ -14002,24 +13681,20 @@
 msgstr "Innloggingsvalg"
 
 #: ../pidgin/gtkaccount.c:428
-#, fuzzy
 msgid "Pro_tocol:"
-msgstr "Protokoll:"
+msgstr "Pro_tokoll:"
 
 #: ../pidgin/gtkaccount.c:439
-#, fuzzy
 msgid "Screen _name:"
-msgstr "Skjermnavn:"
+msgstr "Skjerm_navn:"
 
 #: ../pidgin/gtkaccount.c:529
-#, fuzzy
 msgid "_Local alias:"
-msgstr "Lokale brukere"
+msgstr "_Lokalt alias:"
 
 #: ../pidgin/gtkaccount.c:533
-#, fuzzy
 msgid "Remember pass_word"
-msgstr "Husk passord"
+msgstr "Husk pass_ord"
 
 #. Build the user options frame.
 #: ../pidgin/gtkaccount.c:591
@@ -14027,9 +13702,8 @@
 msgstr "Brukervalg"
 
 #: ../pidgin/gtkaccount.c:604
-#, fuzzy
 msgid "New _mail notifications"
-msgstr "Varsling om ny e-post"
+msgstr "_Varsling om ny e-post"
 
 #. Buddy icon
 #: ../pidgin/gtkaccount.c:609
@@ -14043,9 +13717,8 @@
 msgstr "%s brukervalg"
 
 #: ../pidgin/gtkaccount.c:936
-#, fuzzy
 msgid "Use GNOME Proxy Settings"
-msgstr "Bruk globale proxyinnstilinger"
+msgstr "Bruk GNOMEs proxyinnstilinger"
 
 #: ../pidgin/gtkaccount.c:937
 msgid "Use Global Proxy Settings"
@@ -14067,8 +13740,8 @@
 msgid "SOCKS 5"
 msgstr "SOCKS 5"
 
-#
-#: ../pidgin/gtkaccount.c:967 ../pidgin/gtkprefs.c:1211
+#: ../pidgin/gtkaccount.c:967
+#: ../pidgin/gtkprefs.c:1213
 msgid "Use Environmental Settings"
 msgstr "Bruk innstillinger fra miljøet"
 
@@ -14090,15 +13763,18 @@
 msgid "Proxy Options"
 msgstr "Proxyinnstillinger"
 
-#: ../pidgin/gtkaccount.c:1044 ../pidgin/gtkprefs.c:1205
+#: ../pidgin/gtkaccount.c:1044
+#: ../pidgin/gtkprefs.c:1207
 msgid "Proxy _type:"
-msgstr "Proxytype:"
-
-#: ../pidgin/gtkaccount.c:1053 ../pidgin/gtkprefs.c:1226
+msgstr "Proxy_type:"
+
+#: ../pidgin/gtkaccount.c:1053
+#: ../pidgin/gtkprefs.c:1228
 msgid "_Host:"
-msgstr "Adresse:"
-
-#: ../pidgin/gtkaccount.c:1057 ../pidgin/gtkprefs.c:1244
+msgstr "_Vert:"
+
+#: ../pidgin/gtkaccount.c:1057
+#: ../pidgin/gtkprefs.c:1246
 msgid "_Port:"
 msgstr "_Port:"
 
@@ -14106,41 +13782,39 @@
 msgid "_Username:"
 msgstr "_Brukernavn:"
 
-#: ../pidgin/gtkaccount.c:1072 ../pidgin/gtkprefs.c:1281
+#: ../pidgin/gtkaccount.c:1072
+#: ../pidgin/gtkprefs.c:1283
 msgid "Pa_ssword:"
-msgstr "Passord:"
+msgstr "Pa_ssord:"
 
 #: ../pidgin/gtkaccount.c:1195
-#, fuzzy
 msgid "Unable to save new account"
-msgstr "Kunne ikke lage ny tilkobling."
+msgstr "Kan ikke lagre ny konto"
 
 #: ../pidgin/gtkaccount.c:1196
 msgid "An account already exists with the specified criteria."
-msgstr ""
+msgstr "En konto eksisterer allerede med de spesifiserte kriteriene."
 
 #: ../pidgin/gtkaccount.c:1473
 msgid "Add Account"
 msgstr "Legg til konto"
 
 #: ../pidgin/gtkaccount.c:1492
-#, fuzzy
 msgid "_Basic"
-msgstr "Tilbake"
+msgstr "_Generell"
 
 #: ../pidgin/gtkaccount.c:1499
 msgid "Create this new account on the server"
-msgstr ""
+msgstr "Opprett denne nye kontoen på tjeneren"
 
 #: ../pidgin/gtkaccount.c:1515
-#, fuzzy
 msgid "_Advanced"
-msgstr "_Avbryt"
-
-#: ../pidgin/gtkaccount.c:1973 ../pidgin/gtkplugin.c:569
-#, fuzzy
+msgstr "_Avansert"
+
+#: ../pidgin/gtkaccount.c:1973
+#: ../pidgin/gtkplugin.c:569
 msgid "Enabled"
-msgstr "Feilet."
+msgstr "Aktivert"
 
 #: ../pidgin/gtkaccount.c:2001
 msgid "Protocol"
@@ -14151,270 +13825,296 @@
 msgid ""
 "<span size='larger' weight='bold'>Welcome to %s!</span>\n"
 "\n"
-"You have no IM accounts configured. To start connecting with %s press the "
-"<b>Add</b> button below and configure your first account. If you want %s to "
-"connect to multiple IM accounts, press <b>Add</b> again to configure them "
-"all.\n"
+"You have no IM accounts configured. To start connecting with %s press the <b>Add</b> button below and configure your first account. If you want %s to connect to multiple IM accounts, press <b>Add</b> again to configure them all.\n"
 "\n"
-"You can come back to this window to add, edit, or remove accounts from "
-"<b>Accounts->Add/Edit</b> in the Buddy List window"
-msgstr ""
-
-#: ../pidgin/gtkblist.c:767
+"You can come back to this window to add, edit, or remove accounts from <b>Accounts->Add/Edit</b> in the Buddy List window"
+msgstr ""
+
+#: ../pidgin/gtkblist.c:524
+#, c-format
+msgid "You have %d contact named %s. Would you like to merge them?"
+msgid_plural "You currently have %d contacts named %s. Would you like to merge them?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../pidgin/gtkblist.c:525
+msgid "Merging these contacts will cause them to share a single entry on the buddy list and use a single conversation window. You can separate them again by choosing 'Expand' from the contact's context menu"
+msgstr ""
+
+#: ../pidgin/gtkblist.c:527
+#, fuzzy
+msgid "_Merge"
+msgstr "_Beskjed:"
+
+#: ../pidgin/gtkblist.c:924
 msgid "Join a Chat"
 msgstr "Bli med i en samtalegruppe"
 
-#: ../pidgin/gtkblist.c:788
-msgid ""
-"Please enter the appropriate information about the chat you would like to "
-"join.\n"
-msgstr ""
-"Vennligst skriv inn informasjon om samtalegruppen du ønsker å bli med i.\n"
-
-#. Set up stuff for the account box
-#: ../pidgin/gtkblist.c:799 ../pidgin/gtkblist.c:5530
-#: ../pidgin/gtkblist.c:5893 ../pidgin/gtkpounce.c:539
+#: ../pidgin/gtkblist.c:945
+msgid "Please enter the appropriate information about the chat you would like to join.\n"
+msgstr "Vennligst skriv inn informasjon om samtalegruppen du ønsker å bli med i.\n"
+
+#: ../pidgin/gtkblist.c:956
+#: ../pidgin/gtkblist.c:6188
+#: ../pidgin/gtkpounce.c:539
 #: ../pidgin/gtkroomlist.c:396
 msgid "_Account:"
-msgstr "Konto:"
-
-#: ../pidgin/gtkblist.c:1088 ../pidgin/gtkprivacy.c:603
+msgstr "_Konto:"
+
+#: ../pidgin/gtkblist.c:1245
+#: ../pidgin/gtkprivacy.c:603
 #: ../pidgin/gtkprivacy.c:617
-#, fuzzy
 msgid "_Block"
-msgstr "Blokker"
-
-#: ../pidgin/gtkblist.c:1088
-#, fuzzy
+msgstr "_Blokker"
+
+#: ../pidgin/gtkblist.c:1245
 msgid "Un_block"
-msgstr "Blokker"
-
-#: ../pidgin/gtkblist.c:1139
+msgstr "_Ta bort blokkering"
+
+#: ../pidgin/gtkblist.c:1288
+msgid "Move to"
+msgstr "Flytt til"
+
+#: ../pidgin/gtkblist.c:1328
 msgid "Get _Info"
-msgstr "_Info"
-
-#: ../pidgin/gtkblist.c:1142 ../pidgin/pidginstock.c:90
+msgstr "Hent _informasjon"
+
+#: ../pidgin/gtkblist.c:1331
+#: ../pidgin/pidginstock.c:90
 msgid "I_M"
 msgstr "Direkte_melding"
 
-#: ../pidgin/gtkblist.c:1148
-#, fuzzy
-msgid "_Send File"
-msgstr "Send fil"
-
-#: ../pidgin/gtkblist.c:1155
-#, fuzzy
-msgid "Add Buddy _Pounce"
-msgstr "Legg til kompisvarsling"
-
-#: ../pidgin/gtkblist.c:1160 ../pidgin/gtkblist.c:1164
-#: ../pidgin/gtkblist.c:1269 ../pidgin/gtkblist.c:1292
+#: ../pidgin/gtkblist.c:1337
+msgid "_Send File..."
+msgstr "_Send fil..."
+
+#: ../pidgin/gtkblist.c:1344
+msgid "Add Buddy _Pounce..."
+msgstr "Legg til _kontaktvarsling..."
+
+#: ../pidgin/gtkblist.c:1349
+#: ../pidgin/gtkblist.c:1353
+#: ../pidgin/gtkblist.c:1468
+#: ../pidgin/gtkblist.c:1491
 msgid "View _Log"
 msgstr "Vis _logg"
 
-#: ../pidgin/gtkblist.c:1177 ../pidgin/gtkblist.c:1186
-#: ../pidgin/gtkblist.c:1277 ../pidgin/gtkblist.c:1298
+#: ../pidgin/gtkblist.c:1359
+#, fuzzy
+msgid "Hide when offline"
+msgstr "Ikke tillatt når avlogget"
+
+#: ../pidgin/gtkblist.c:1359
+#, fuzzy
+msgid "Show when offline"
+msgstr "Ikke tillatt når avlogget"
+
+#: ../pidgin/gtkblist.c:1373
+#: ../pidgin/gtkblist.c:1382
+#: ../pidgin/gtkblist.c:1476
+#: ../pidgin/gtkblist.c:1497
 msgid "_Alias..."
 msgstr "_Alias..."
 
-#: ../pidgin/gtkblist.c:1180 ../pidgin/gtkblist.c:1188
-#: ../pidgin/gtkblist.c:1279 ../pidgin/gtkblist.c:1300
+#: ../pidgin/gtkblist.c:1376
+#: ../pidgin/gtkblist.c:1384
+#: ../pidgin/gtkblist.c:1478
+#: ../pidgin/gtkblist.c:1499
 msgid "_Remove"
 msgstr "Fje_rn"
 
-#: ../pidgin/gtkblist.c:1238
-msgid "Add a _Buddy"
-msgstr "Legg til kompis"
-
-#: ../pidgin/gtkblist.c:1241
-msgid "Add a C_hat"
-msgstr "Legg til samtalegruppe"
-
-#: ../pidgin/gtkblist.c:1244
+#: ../pidgin/gtkblist.c:1434
+msgid "Add _Buddy..."
+msgstr "Legg til _kontakt"
+
+#: ../pidgin/gtkblist.c:1437
+msgid "Add C_hat..."
+msgstr "Legg til _samtale"
+
+#: ../pidgin/gtkblist.c:1440
 msgid "_Delete Group"
-msgstr "Slett gruppe"
-
-#: ../pidgin/gtkblist.c:1246
+msgstr "_Slett gruppe"
+
+#: ../pidgin/gtkblist.c:1442
 msgid "_Rename"
 msgstr "End_re navn"
 
 #. join button
-#: ../pidgin/gtkblist.c:1265 ../pidgin/gtkroomlist.c:307
-#: ../pidgin/gtkroomlist.c:460 ../pidgin/pidginstock.c:88
+#: ../pidgin/gtkblist.c:1462
+#: ../pidgin/gtkroomlist.c:307
+#: ../pidgin/gtkroomlist.c:460
+#: ../pidgin/pidginstock.c:88
 msgid "_Join"
-msgstr "_Bli med i samtalegruppe"
-
-#: ../pidgin/gtkblist.c:1267
+msgstr "_Bli med"
+
+#: ../pidgin/gtkblist.c:1464
 msgid "Auto-Join"
 msgstr "Automatisk pålogging"
 
-#: ../pidgin/gtkblist.c:1305 ../pidgin/gtkblist.c:1329
+#: ../pidgin/gtkblist.c:1466
+#, fuzzy
+msgid "Persistent"
+msgstr "Serbisk"
+
+#: ../pidgin/gtkblist.c:1504
+#: ../pidgin/gtkblist.c:1527
 msgid "_Collapse"
 msgstr "_Lukk"
 
-#: ../pidgin/gtkblist.c:1334
+#: ../pidgin/gtkblist.c:1532
 msgid "_Expand"
 msgstr "_Utvid"
 
-#: ../pidgin/gtkblist.c:1585 ../pidgin/gtkblist.c:1597
-#: ../pidgin/gtkblist.c:4603 ../pidgin/gtkblist.c:4616
-#, fuzzy
+#: ../pidgin/gtkblist.c:1783
+#: ../pidgin/gtkblist.c:1795
+#: ../pidgin/gtkblist.c:4885
+#: ../pidgin/gtkblist.c:4898
 msgid "/Tools/Mute Sounds"
-msgstr "Skru av lyder"
-
-#: ../pidgin/gtkblist.c:2057 ../pidgin/gtkconv.c:4840
+msgstr "/Verktøy/Skru av lyder"
+
+#: ../pidgin/gtkblist.c:2255
+#: ../pidgin/gtkconv.c:4903
 #: ../pidgin/gtkpounce.c:430
-msgid ""
-"You are not currently signed on with an account that can add that buddy."
+msgid "You are not currently signed on with an account that can add that buddy."
 msgstr "Du er ikke pålogget med noen kontoer som kan legge til den kontakten."
 
 #. Buddies menu
-#: ../pidgin/gtkblist.c:2869
+#: ../pidgin/gtkblist.c:3067
 msgid "/_Buddies"
 msgstr "/_Kontakter"
 
-#: ../pidgin/gtkblist.c:2870
+#: ../pidgin/gtkblist.c:3068
 msgid "/Buddies/New Instant _Message..."
 msgstr "/Kontakter/_Ny direktemelding..."
 
-#: ../pidgin/gtkblist.c:2871
+#: ../pidgin/gtkblist.c:3069
 msgid "/Buddies/Join a _Chat..."
 msgstr "/Kontakter/_Bli med i samtalegruppe..."
 
-#: ../pidgin/gtkblist.c:2872
+#: ../pidgin/gtkblist.c:3070
 msgid "/Buddies/Get User _Info..."
 msgstr "/Kontakter/_Hent brukerinfo..."
 
-#: ../pidgin/gtkblist.c:2873
+#: ../pidgin/gtkblist.c:3071
 msgid "/Buddies/View User _Log..."
-msgstr "/Kontakter/Hent bruker_logg..."
-
-#: ../pidgin/gtkblist.c:2875
-#, fuzzy
+msgstr "/Kontakter/Vis bruker_logg..."
+
+#: ../pidgin/gtkblist.c:3073
 msgid "/Buddies/Show"
-msgstr "/Kontakter/L_ogge av"
-
-#: ../pidgin/gtkblist.c:2876
-#, fuzzy
+msgstr "/Kontakter/Vis"
+
+#: ../pidgin/gtkblist.c:3074
 msgid "/Buddies/Show/_Offline Buddies"
-msgstr "/Kontakter/_Vis avloggede kontakter"
-
-#: ../pidgin/gtkblist.c:2877
-#, fuzzy
+msgstr "/Kontakter/Vis/_Avloggede kontakter"
+
+#: ../pidgin/gtkblist.c:3075
 msgid "/Buddies/Show/_Empty Groups"
-msgstr "/Kontakter/Vis _tomme grupper"
-
-#: ../pidgin/gtkblist.c:2878
-#, fuzzy
+msgstr "/Kontakter/Vis/_Tomme grupper"
+
+#: ../pidgin/gtkblist.c:3076
 msgid "/Buddies/Show/Buddy _Details"
-msgstr "/Kontakter/Vis _avloggede kontakter"
-
-#: ../pidgin/gtkblist.c:2879
-#, fuzzy
+msgstr "/Kontakter/Vis/Kontakt_detaljer"
+
+#: ../pidgin/gtkblist.c:3077
 msgid "/Buddies/Show/Idle _Times"
-msgstr "/Kontakter/Vis _avloggede kontakter"
-
-#: ../pidgin/gtkblist.c:2880
-#, fuzzy
+msgstr "/Kontakter/Vis/_Fraværstid"
+
+#: ../pidgin/gtkblist.c:3078
 msgid "/Buddies/Show/_Protocol Icons"
-msgstr "/Kontakter/Vis _tomme grupper"
-
-#: ../pidgin/gtkblist.c:2881
-#, fuzzy
+msgstr "/Kontakter/Vis/_Protokollikoner"
+
+#: ../pidgin/gtkblist.c:3079
 msgid "/Buddies/_Sort Buddies"
-msgstr "/Kontakter/Vis _avloggede kontakter"
-
-#: ../pidgin/gtkblist.c:2883
+msgstr "/Kontakter/_Sorter kontakter"
+
+#: ../pidgin/gtkblist.c:3081
 msgid "/Buddies/_Add Buddy..."
-msgstr "/Kontakter/_Legg til kompis..."
-
-#: ../pidgin/gtkblist.c:2884
+msgstr "/Kontakter/_Legg til kontakt..."
+
+#: ../pidgin/gtkblist.c:3082
 msgid "/Buddies/Add C_hat..."
 msgstr "/Kontakter/Legg til _samtalegruppe..."
 
-#: ../pidgin/gtkblist.c:2885
+#: ../pidgin/gtkblist.c:3083
 msgid "/Buddies/Add _Group..."
 msgstr "/Kontakter/Legg til _gruppe..."
 
-#: ../pidgin/gtkblist.c:2887
+#: ../pidgin/gtkblist.c:3085
 msgid "/Buddies/_Quit"
 msgstr "/Kontakter/_Avslutt"
 
 #. Accounts menu
-#: ../pidgin/gtkblist.c:2890
-#, fuzzy
+#: ../pidgin/gtkblist.c:3088
 msgid "/_Accounts"
-msgstr "Kontoer"
-
-#: ../pidgin/gtkblist.c:2891 ../pidgin/gtkblist.c:6589
-#, fuzzy
-msgid "/Accounts/Add\\/Edit"
-msgstr "Kontoer"
+msgstr "/_Kontoer"
+
+#: ../pidgin/gtkblist.c:3089
+#: ../pidgin/gtkblist.c:6889
+#, fuzzy
+msgid "/Accounts/Manage"
+msgstr "/Kontoer"
 
 #. Tools
-#: ../pidgin/gtkblist.c:2894
+#: ../pidgin/gtkblist.c:3092
 msgid "/_Tools"
 msgstr "/_Verktøy"
 
-#: ../pidgin/gtkblist.c:2895
-#, fuzzy
+#: ../pidgin/gtkblist.c:3093
 msgid "/Tools/Buddy _Pounces"
 msgstr "/Verktøy/_Kompisvarsling"
 
-#: ../pidgin/gtkblist.c:2896
-#, fuzzy
+#: ../pidgin/gtkblist.c:3094
 msgid "/Tools/_Certificates"
-msgstr "/Verktøy/_Innstillinger"
-
-#: ../pidgin/gtkblist.c:2897
+msgstr "/Verktøy/_Sertifikater"
+
+#: ../pidgin/gtkblist.c:3095
 #, fuzzy
 msgid "/Tools/Plu_gins"
 msgstr "/Verktøy/Handlinger for tillegg"
 
-#: ../pidgin/gtkblist.c:2898
+#: ../pidgin/gtkblist.c:3096
 msgid "/Tools/Pr_eferences"
 msgstr "/Verktøy/_Innstillinger"
 
-#: ../pidgin/gtkblist.c:2899
+#: ../pidgin/gtkblist.c:3097
 msgid "/Tools/Pr_ivacy"
 msgstr "/Verktøy/_Sikkerhet"
 
-#: ../pidgin/gtkblist.c:2901
+#: ../pidgin/gtkblist.c:3099
 msgid "/Tools/_File Transfers"
 msgstr "/Verktøy/_Filoverføringer..."
 
-#: ../pidgin/gtkblist.c:2902
+#: ../pidgin/gtkblist.c:3100
 msgid "/Tools/R_oom List"
 msgstr "/Verktøy/_Romliste"
 
-#: ../pidgin/gtkblist.c:2903
-#, fuzzy
+#: ../pidgin/gtkblist.c:3101
 msgid "/Tools/System _Log"
-msgstr "/Verktøy/_Vis systemlogg"
-
-#: ../pidgin/gtkblist.c:2905
-#, fuzzy
+msgstr "/Verktøy/System_logg"
+
+#: ../pidgin/gtkblist.c:3103
 msgid "/Tools/Mute _Sounds"
-msgstr "Skru av lyder"
+msgstr "/Verktøy/_Skru av lyder"
 
 #. Help
-#: ../pidgin/gtkblist.c:2907
+#: ../pidgin/gtkblist.c:3105
 msgid "/_Help"
 msgstr "/_Hjelp"
 
-#: ../pidgin/gtkblist.c:2908
+#: ../pidgin/gtkblist.c:3106
 msgid "/Help/Online _Help"
 msgstr "/Hjelp/Hjelp på _nettet"
 
-#: ../pidgin/gtkblist.c:2909
+#: ../pidgin/gtkblist.c:3107
 msgid "/Help/_Debug Window"
 msgstr "/Hjelp/_Avlusningsvindu"
 
-#: ../pidgin/gtkblist.c:2911 ../pidgin/gtkblist.c:2913
+#: ../pidgin/gtkblist.c:3109
+#: ../pidgin/gtkblist.c:3111
 msgid "/Help/_About"
 msgstr "/Hjelp/_Om"
 
-#: ../pidgin/gtkblist.c:2942
+#: ../pidgin/gtkblist.c:3140
 #, c-format
 msgid ""
 "\n"
@@ -14423,699 +14123,643 @@
 "\n"
 "<b>Konto:</b> %s"
 
-#: ../pidgin/gtkblist.c:3020
-#, fuzzy
+#: ../pidgin/gtkblist.c:3218
 msgid "Buddy Alias"
-msgstr "Kontaktliste"
-
-#: ../pidgin/gtkblist.c:3049
-#, fuzzy
+msgstr "Kontaktalias"
+
+#: ../pidgin/gtkblist.c:3247
 msgid "Logged In"
-msgstr "Logget ut"
-
-#: ../pidgin/gtkblist.c:3095
-#, fuzzy
+msgstr "Logget inn"
+
+#: ../pidgin/gtkblist.c:3293
 msgid "Last Seen"
-msgstr "Etternavn:"
-
-#: ../pidgin/gtkblist.c:3116
+msgstr "Sist sett"
+
+#: ../pidgin/gtkblist.c:3314
 msgid "Spooky"
-msgstr ""
-
-#: ../pidgin/gtkblist.c:3118
+msgstr "Skummelt"
+
+#: ../pidgin/gtkblist.c:3316
 msgid "Awesome"
-msgstr ""
-
-#: ../pidgin/gtkblist.c:3120
+msgstr "Fantastisk"
+
+#: ../pidgin/gtkblist.c:3318
 msgid "Rockin'"
-msgstr ""
-
-#: ../pidgin/gtkblist.c:3453
-#, fuzzy, c-format
+msgstr "Rocker"
+
+#: ../pidgin/gtkblist.c:3657
+#, c-format
 msgid "Idle %dd %dh %02dm"
-msgstr "Inaktiv (%dt%02dm) "
-
-#: ../pidgin/gtkblist.c:3455
-#, fuzzy, c-format
+msgstr "Inaktiv %dd %dh %02dm"
+
+#: ../pidgin/gtkblist.c:3659
+#, c-format
 msgid "Idle %dh %02dm"
-msgstr "Inaktiv (%dt%02dm) "
-
-#: ../pidgin/gtkblist.c:3457
-#, fuzzy, c-format
+msgstr "Inaktiv %dh %02dm"
+
+#: ../pidgin/gtkblist.c:3661
+#, c-format
 msgid "Idle %dm"
-msgstr "Inaktiv (%dm) "
-
-#: ../pidgin/gtkblist.c:3602
-#, fuzzy
+msgstr "Inaktiv %dm"
+
+#: ../pidgin/gtkblist.c:3806
 msgid "/Buddies/New Instant Message..."
-msgstr "/Kontakter/_Ny direktemelding..."
-
-#: ../pidgin/gtkblist.c:3603 ../pidgin/gtkblist.c:3636
+msgstr "/Kontakter/Ny direktemelding..."
+
+#: ../pidgin/gtkblist.c:3807
+#: ../pidgin/gtkblist.c:3840
 msgid "/Buddies/Join a Chat..."
-msgstr "/Kontakter/_Bli med i samtalegruppe..."
-
-#: ../pidgin/gtkblist.c:3604
-#, fuzzy
+msgstr "/Kontakter/Bli med i samtalegruppe..."
+
+#: ../pidgin/gtkblist.c:3808
 msgid "/Buddies/Get User Info..."
-msgstr "/Kontakter/_Hent brukerinfo..."
-
-#: ../pidgin/gtkblist.c:3605
-#, fuzzy
+msgstr "/Kontakter/Hent brukerinfo..."
+
+#: ../pidgin/gtkblist.c:3809
 msgid "/Buddies/Add Buddy..."
-msgstr "/Kontakter/_Legg til kompis..."
-
-#: ../pidgin/gtkblist.c:3606 ../pidgin/gtkblist.c:3639
-#, fuzzy
+msgstr "/Kontakter/Legg til kontakt..."
+
+#: ../pidgin/gtkblist.c:3810
+#: ../pidgin/gtkblist.c:3843
 msgid "/Buddies/Add Chat..."
-msgstr "/Kontakter/Legg til _samtalegruppe..."
-
-#: ../pidgin/gtkblist.c:3607
-#, fuzzy
+msgstr "/Kontakter/Legg til samtalegruppe..."
+
+#: ../pidgin/gtkblist.c:3811
 msgid "/Buddies/Add Group..."
-msgstr "/Kontakter/Legg til _gruppe..."
-
-#: ../pidgin/gtkblist.c:3642
+msgstr "/Kontakter/Legg til gruppe..."
+
+#: ../pidgin/gtkblist.c:3846
 msgid "/Tools/Privacy"
-msgstr "/Verktøy/Blo_kkeringer"
-
-#: ../pidgin/gtkblist.c:3645
+msgstr "/Verktøy/Blokkeringer"
+
+#: ../pidgin/gtkblist.c:3849
 msgid "/Tools/Room List"
-msgstr "/Verktøy/_Romliste"
-
-#: ../pidgin/gtkblist.c:3742 ../pidgin/gtkdocklet.c:153
-#, fuzzy, c-format
+msgstr "/Verktøy/Romliste"
+
+#: ../pidgin/gtkblist.c:3944
+#: ../pidgin/gtkdocklet.c:153
+#, c-format
 msgid "%d unread message from %s\n"
 msgid_plural "%d unread messages from %s\n"
-msgstr[0] "Melding fra %s"
-msgstr[1] "Melding fra %s"
-
-#: ../pidgin/gtkblist.c:3822
-#, fuzzy
+msgstr[0] "%d ulest beskjed fra %s\n"
+msgstr[1] "%d uleste beskjeder fra %s\n"
+
+#: ../pidgin/gtkblist.c:4104
 msgid "Manually"
-msgstr "Egendefinert"
-
-#: ../pidgin/gtkblist.c:3824
-#, fuzzy
-msgid "Alphabetically"
-msgstr "Alfabetisk"
-
-#: ../pidgin/gtkblist.c:3825
+msgstr "Manuelt"
+
+#: ../pidgin/gtkblist.c:4107
 msgid "By status"
 msgstr "Etter status"
 
-#: ../pidgin/gtkblist.c:3826
+#: ../pidgin/gtkblist.c:4108
 msgid "By log size"
 msgstr "Etter loggstørrelse"
 
-#: ../pidgin/gtkblist.c:4031 ../pidgin/gtkconn.c:179
-#, fuzzy, c-format
+#: ../pidgin/gtkblist.c:4313
+#: ../pidgin/gtkconn.c:180
+#, c-format
 msgid "%s disconnected"
-msgstr "Frakoblet."
-
-#: ../pidgin/gtkblist.c:4067
-#, fuzzy, c-format
+msgstr "%s koblet fra"
+
+#: ../pidgin/gtkblist.c:4349
+#, c-format
 msgid "<span color=\"red\">%s disconnected: %s</span>"
-msgstr ""
-"<span weight=\"bold\" size=\"larger\">%s har blitt koplet fra.</span>\n"
-"\n"
-"%s\n"
-"%s"
-
-#: ../pidgin/gtkblist.c:4219
-#, fuzzy
+msgstr "<span color=\"red\">%s koblet fra: %s</span>"
+
+#: ../pidgin/gtkblist.c:4501
 msgid "<b>Username:</b>"
-msgstr ""
-"\n"
-"<b>Advart:</b>"
-
-#: ../pidgin/gtkblist.c:4226
-#, fuzzy
+msgstr "<b>Brukernavn:</b>"
+
+#: ../pidgin/gtkblist.c:4508
 msgid "<b>Password:</b>"
-msgstr "<b>_Passord:</b>"
-
-#: ../pidgin/gtkblist.c:4237
+msgstr "<b>Passord:</b>"
+
+#: ../pidgin/gtkblist.c:4519
 #, fuzzy
 msgid "_Login"
 msgstr "Innlogging"
 
-#: ../pidgin/gtkblist.c:4320
-#, fuzzy
+#: ../pidgin/gtkblist.c:4602
 msgid "/Accounts"
-msgstr "Kontoer"
+msgstr "/Kontoer"
 
 #. Translators: Please maintain the use of -> and <- to refer to menu heirarchy
-#: ../pidgin/gtkblist.c:4334
+#: ../pidgin/gtkblist.c:4616
 #, c-format
 msgid ""
 "<span weight='bold' size='larger'>Welcome to %s!</span>\n"
 "\n"
-"You have no accounts enabled. Enable your IM accounts from the <b>Accounts</"
-"b> window at <b>Accounts->Add/Edit</b>. Once you enable accounts, you'll be "
-"able to sign on, set your status, and talk to your friends."
+"You have no accounts enabled. Enable your IM accounts from the <b>Accounts</b> window at <b>Accounts->Manage</b>. Once you enable accounts, you'll be able to sign on, set your status, and talk to your friends."
 msgstr ""
 
 #. set the Show Offline Buddies option. must be done
 #. * after the treeview or faceprint gets mad. -Robot101
 #.
-#: ../pidgin/gtkblist.c:4597
-#, fuzzy
+#: ../pidgin/gtkblist.c:4879
 msgid "/Buddies/Show/Offline Buddies"
-msgstr "/Kontakter/Vis _avloggede kontakter"
-
-#: ../pidgin/gtkblist.c:4600
-#, fuzzy
+msgstr "/Kontakter/Vis/Avloggede kontakter"
+
+#: ../pidgin/gtkblist.c:4882
 msgid "/Buddies/Show/Empty Groups"
-msgstr "/Kontakter/Vis tomme grupper"
-
-#: ../pidgin/gtkblist.c:4606
-#, fuzzy
+msgstr "/Kontakter/Vis/Tomme grupper"
+
+#: ../pidgin/gtkblist.c:4888
 msgid "/Buddies/Show/Buddy Details"
-msgstr "/Kontakter/Vis _avloggede kontakter"
-
-#: ../pidgin/gtkblist.c:4609
-#, fuzzy
+msgstr "/Kontakter/Vis/Kontaktdetaljer"
+
+#: ../pidgin/gtkblist.c:4891
 msgid "/Buddies/Show/Idle Times"
-msgstr "/Kontakter/Vis _avloggede kontakter"
-
-#: ../pidgin/gtkblist.c:4612
-#, fuzzy
+msgstr "/Kontakter/Vis/Fraværstider"
+
+#: ../pidgin/gtkblist.c:4894
 msgid "/Buddies/Show/Protocol Icons"
-msgstr "/Kontakter/Vis tomme grupper"
-
-#: ../pidgin/gtkblist.c:5507
-msgid ""
-"Please enter the screen name of the person you would like to add to your "
-"buddy list. You may optionally enter an alias, or nickname,  for the buddy. "
-"The alias will be displayed in place of the screen name whenever possible.\n"
-msgstr ""
-"Vennligst skriv inn skjermnavnet til den personen som du vil legge til i "
-"kontaktlisten din. I tillegg kan du skrive inn et alias, eller kallenavn, "
-"for kontakten. Aliaset vil bli vist i stedet for skjermnavnet der det er "
-"mulig.\n"
+msgstr "/Kontakter/Vis/Protokollikoner"
+
+#: ../pidgin/gtkblist.c:5796
+msgid "Please enter the screen name of the person you would like to add to your buddy list. You may optionally enter an alias, or nickname,  for the buddy. The alias will be displayed in place of the screen name whenever possible.\n"
+msgstr "Vennligst skriv inn skjermnavnet til den personen som du vil legge til i kontaktlisten din. I tillegg kan du skrive inn et alias, eller kallenavn, for kontakten. Aliaset vil bli vist i stedet for skjermnavnet der det er mulig.\n"
+
+#. Set up stuff for the account box
+#: ../pidgin/gtkblist.c:5819
+msgid "A_ccount:"
+msgstr "K_onto:"
 
 #. End of account box
-#: ../pidgin/gtkblist.c:5542
-#, fuzzy
+#: ../pidgin/gtkblist.c:5831
 msgid "_Screen name:"
-msgstr "_Skjermnavn"
-
-#: ../pidgin/gtkblist.c:5564 ../pidgin/gtkblist.c:5914
-#, fuzzy
+msgstr "_Skjermnavn:"
+
+#: ../pidgin/gtkblist.c:5853
+#: ../pidgin/gtkblist.c:6209
 msgid "A_lias:"
-msgstr "Alias:"
-
-#: ../pidgin/gtkblist.c:5826
+msgstr "A_lias:"
+
+#: ../pidgin/gtkblist.c:6121
 msgid "This protocol does not support chat rooms."
 msgstr "Denne protokollversjonen støtter ikke samtalerom"
 
-#: ../pidgin/gtkblist.c:5842
-msgid ""
-"You are not currently signed on with any protocols that have the ability to "
-"chat."
+#: ../pidgin/gtkblist.c:6137
+msgid "You are not currently signed on with any protocols that have the ability to chat."
 msgstr "Du er ikke pålogget med noen protokoller som støtter samtalegrupper."
 
-#: ../pidgin/gtkblist.c:5883
-msgid ""
-"Please enter an alias, and the appropriate information about the chat you "
-"would like to add to your buddy list.\n"
-msgstr ""
-"Vennligst skriv inn et aliasnavn og annen informasjon for samtalegruppen.\n"
-
-#: ../pidgin/gtkblist.c:5964
+#: ../pidgin/gtkblist.c:6178
+msgid "Please enter an alias, and the appropriate information about the chat you would like to add to your buddy list.\n"
+msgstr "Vennligst skriv inn et aliasnavn og annen informasjon for samtalegruppen.\n"
+
+#: ../pidgin/gtkblist.c:6237
+msgid "Autojoin when account becomes online."
+msgstr ""
+
+#: ../pidgin/gtkblist.c:6238
+msgid "Hide chat when the window is closed."
+msgstr ""
+
+#: ../pidgin/gtkblist.c:6264
 msgid "Please enter the name of the group to be added."
 msgstr "Vennligst skriv inn navnet på gruppen som skal legges til."
 
-#: ../pidgin/gtkblist.c:6609
+#: ../pidgin/gtkblist.c:6909
 msgid "<PurpleMain>/Accounts/"
-msgstr ""
-
-#: ../pidgin/gtkblist.c:6633
-#, fuzzy
+msgstr "<PurpleMain>/Kontoer/"
+
+#: ../pidgin/gtkblist.c:6933
 msgid "_Edit Account"
-msgstr "Konto:"
-
-#: ../pidgin/gtkblist.c:6646 ../pidgin/gtkconv.c:3073
+msgstr "_Rediger konto"
+
+#: ../pidgin/gtkblist.c:6946
+#: ../pidgin/gtkconv.c:3136
 msgid "No actions available"
 msgstr "Ingen handlinger tilgjengelig"
 
-#: ../pidgin/gtkblist.c:6654
-#, fuzzy
+#: ../pidgin/gtkblist.c:6954
 msgid "_Disable"
-msgstr "Synlig"
-
-#
-#: ../pidgin/gtkblist.c:6666
-#, fuzzy
+msgstr "_Deaktiver"
+
+#: ../pidgin/gtkblist.c:6966
 msgid "Enable Account"
-msgstr "Konto"
-
-#: ../pidgin/gtkblist.c:6672
+msgstr "Aktiver konto"
+
+#: ../pidgin/gtkblist.c:6972
 msgid "<PurpleMain>/Accounts/Enable Account"
-msgstr ""
-
-#: ../pidgin/gtkblist.c:6721
-#, fuzzy
+msgstr "<PurpleMain>/Kontoer/Aktiver konto"
+
+#: ../pidgin/gtkblist.c:7021
 msgid "/Tools"
-msgstr "/_Verktøy"
-
-#: ../pidgin/gtkblist.c:6791
-#, fuzzy
+msgstr "/Verktøy"
+
+#: ../pidgin/gtkblist.c:7091
 msgid "/Buddies/Sort Buddies"
-msgstr "/Kontakter/Vis _avloggede kontakter"
+msgstr "/Kontakter/Sorter kontakter"
 
 #. Widget creation function
 #: ../pidgin/gtkcertmgr.c:530
-#, fuzzy
 msgid "SSL Servers"
-msgstr "Tjener"
-
-#: ../pidgin/gtkconn.c:180
+msgstr "SSL-tjenere"
+
+#: ../pidgin/gtkconn.c:181
 #, fuzzy, c-format
 msgid ""
 "%s\n"
 "\n"
-"%s will not attempt to reconnect the account until you correct the error and "
-"re-enable the account."
-msgstr ""
-"%s ble avkoblet pga. en feil. %s Kontoen har blitt avstengt. Korriger feilen "
-"og slå på kontoen for å tilkoble."
-
-#: ../pidgin/gtkconv.c:482
-#, fuzzy
+"%s will not attempt to reconnect the account until you correct the error and re-enable the account."
+msgstr "%s ble avkoblet pga. en feil. %s Kontoen har blitt avstengt. Korriger feilen og slå på kontoen for å tilkoble."
+
+#: ../pidgin/gtkconv.c:523
 msgid "Unknown command."
-msgstr "Ukjent kommando:"
-
-#: ../pidgin/gtkconv.c:754 ../pidgin/gtkconv.c:780
-#, fuzzy
+msgstr "Ukjent kommando."
+
+#: ../pidgin/gtkconv.c:795
+#: ../pidgin/gtkconv.c:821
 msgid "That buddy is not on the same protocol as this chat."
-msgstr "Denne vennen er ikke på den samme protokollen som denne samtalegruppa"
-
-#: ../pidgin/gtkconv.c:774
-msgid ""
-"You are not currently signed on with an account that can invite that buddy."
-msgstr ""
-"Du er ikke pålogget pålogget med en konto som kan invitere denne kameraten."
-
-#: ../pidgin/gtkconv.c:827
+msgstr "Denne kontakten er ikke på den samme protokollen som denne samtalegruppa"
+
+#: ../pidgin/gtkconv.c:815
+msgid "You are not currently signed on with an account that can invite that buddy."
+msgstr "Du er ikke pålogget pålogget med en konto som kan invitere denne kontakten."
+
+#: ../pidgin/gtkconv.c:868
 msgid "Invite Buddy Into Chat Room"
-msgstr "Inviter kamerat inn i samtalerom"
+msgstr "Inviter kontakten inn i samtalerom"
 
 #. Put our happy label in it.
-#: ../pidgin/gtkconv.c:857
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Vennligst skriv inn navnet på brukeren som du vil invitere, og en eventuell "
-"invitasjonsbeskjed."
-
-#: ../pidgin/gtkconv.c:878
+#: ../pidgin/gtkconv.c:898
+msgid "Please enter the name of the user you wish to invite, along with an optional invite message."
+msgstr "Vennligst skriv inn navnet på brukeren som du vil invitere, og en eventuell invitasjonsbeskjed."
+
+#: ../pidgin/gtkconv.c:919
 msgid "_Buddy:"
-msgstr "Kontakt:"
-
-#: ../pidgin/gtkconv.c:889 ../pidgin/gtksavedstatuses.c:1194
+msgstr "_Kontakt:"
+
+#: ../pidgin/gtkconv.c:930
+#: ../pidgin/gtksavedstatuses.c:1194
 #: ../pidgin/gtksavedstatuses.c:1528
 msgid "_Message:"
-msgstr "Beskjed:"
-
-#: ../pidgin/gtkconv.c:947 ../pidgin/gtkconv.c:2598 ../pidgin/gtkdebug.c:219
+msgstr "_Beskjed:"
+
+#: ../pidgin/gtkconv.c:988
+#: ../pidgin/gtkconv.c:2657
+#: ../pidgin/gtkdebug.c:219
 #: ../pidgin/gtkft.c:543
 msgid "Unable to open file."
-msgstr "Klarte ikke åpne fil."
-
-#: ../pidgin/gtkconv.c:953
+msgstr "Kunne ikke ikke åpne fil."
+
+#: ../pidgin/gtkconv.c:994
 #, c-format
 msgid "<h1>Conversation with %s</h1>\n"
 msgstr "<h1>Samtale med %s</h1>\n"
 
-#: ../pidgin/gtkconv.c:991
+#: ../pidgin/gtkconv.c:1032
 msgid "Save Conversation"
 msgstr "Lagre samtale"
 
-#: ../pidgin/gtkconv.c:1140 ../pidgin/gtkdebug.c:167 ../pidgin/gtkdebug.c:743
+#: ../pidgin/gtkconv.c:1178
+#: ../pidgin/gtkdebug.c:167
+#: ../pidgin/gtkdebug.c:743
 msgid "Find"
 msgstr "Finn"
 
-#
-#: ../pidgin/gtkconv.c:1166 ../pidgin/gtkdebug.c:195
+#: ../pidgin/gtkconv.c:1204
+#: ../pidgin/gtkdebug.c:195
 msgid "_Search for:"
 msgstr "_Søk etter:"
 
-#: ../pidgin/gtkconv.c:1622
+#: ../pidgin/gtkconv.c:1675
 msgid "Un-Ignore"
 msgstr "Fjern ignorer"
 
-#: ../pidgin/gtkconv.c:1625
+#: ../pidgin/gtkconv.c:1678
 msgid "Ignore"
 msgstr "Ignorer"
 
-#: ../pidgin/gtkconv.c:1645
+#: ../pidgin/gtkconv.c:1698
 #, fuzzy
 msgid "Get Away Message"
 msgstr "Ny fraværsbeskjed"
 
-#: ../pidgin/gtkconv.c:1668
-#, fuzzy
+#: ../pidgin/gtkconv.c:1721
 msgid "Last said"
-msgstr "Etternavn:"
-
-#: ../pidgin/gtkconv.c:2606
+msgstr "Sa sist"
+
+#: ../pidgin/gtkconv.c:2665
 msgid "Unable to save icon file to disk."
 msgstr "Kan ikke lagre ikonfil til disk."
 
-#: ../pidgin/gtkconv.c:2657
+#: ../pidgin/gtkconv.c:2716
 msgid "Save Icon"
 msgstr "Lagre ikon"
 
-#
-#: ../pidgin/gtkconv.c:2709
+#: ../pidgin/gtkconv.c:2768
 msgid "Animate"
 msgstr "Animer"
 
-#: ../pidgin/gtkconv.c:2714
+#: ../pidgin/gtkconv.c:2773
 msgid "Hide Icon"
 msgstr "Skjul ikon"
 
-#: ../pidgin/gtkconv.c:2717
+#: ../pidgin/gtkconv.c:2776
 msgid "Save Icon As..."
 msgstr "Lagre ikon som..."
 
-#: ../pidgin/gtkconv.c:2721
-#, fuzzy
+#: ../pidgin/gtkconv.c:2780
 msgid "Set Custom Icon..."
-msgstr "Egendefinert"
-
-#
-#: ../pidgin/gtkconv.c:2734
-#, fuzzy
+msgstr "Velg eget ikon..."
+
+#: ../pidgin/gtkconv.c:2793
 msgid "Remove Custom Icon"
-msgstr "Fje_rn kontakt"
-
-#: ../pidgin/gtkconv.c:2861
+msgstr "Ta bort eget ikon"
+
+#: ../pidgin/gtkconv.c:2924
 msgid "Show All"
-msgstr ""
+msgstr "Vis alle"
 
 #. Conversation menu
-#: ../pidgin/gtkconv.c:2880
+#: ../pidgin/gtkconv.c:2943
 msgid "/_Conversation"
 msgstr "/_Samtale"
 
-#: ../pidgin/gtkconv.c:2882
+#: ../pidgin/gtkconv.c:2945
 msgid "/Conversation/New Instant _Message..."
 msgstr "/Samtale/Ny direktemelding..."
 
-#: ../pidgin/gtkconv.c:2887
+#: ../pidgin/gtkconv.c:2950
 msgid "/Conversation/_Find..."
 msgstr "/Samtale/_Finn..."
 
-#
-#: ../pidgin/gtkconv.c:2889
+#: ../pidgin/gtkconv.c:2952
 msgid "/Conversation/View _Log"
 msgstr "/Samtale/_Vis logg..."
 
-#: ../pidgin/gtkconv.c:2890
+#: ../pidgin/gtkconv.c:2953
 msgid "/Conversation/_Save As..."
 msgstr "/Samtale/_Lagre som..."
 
-#: ../pidgin/gtkconv.c:2892
-#, fuzzy
+#: ../pidgin/gtkconv.c:2955
 msgid "/Conversation/Clea_r Scrollback"
-msgstr "/Samtale/Tøm"
-
-#: ../pidgin/gtkconv.c:2896
+msgstr "/Samtale/_Tøm tilbakeblikk"
+
+#: ../pidgin/gtkconv.c:2959
 msgid "/Conversation/Se_nd File..."
 msgstr "/Samtale/Se_nd fil..."
 
-#: ../pidgin/gtkconv.c:2897
+#: ../pidgin/gtkconv.c:2960
 msgid "/Conversation/Add Buddy _Pounce..."
 msgstr "/Samtale/Legg til _kompisvarsling"
 
-#: ../pidgin/gtkconv.c:2899
+#: ../pidgin/gtkconv.c:2962
 msgid "/Conversation/_Get Info"
 msgstr "/Samtale/_Hent info"
 
-#: ../pidgin/gtkconv.c:2901
+#: ../pidgin/gtkconv.c:2964
 msgid "/Conversation/In_vite..."
 msgstr "/Samtale/_Inviter..."
 
-#: ../pidgin/gtkconv.c:2903
-#, fuzzy
+#: ../pidgin/gtkconv.c:2966
 msgid "/Conversation/M_ore"
-msgstr "/Samtale/L_ukk"
-
-#: ../pidgin/gtkconv.c:2907
-#, fuzzy
+msgstr "/Samtale/M_ere"
+
+#: ../pidgin/gtkconv.c:2970
 msgid "/Conversation/Al_ias..."
-msgstr "/Samtale/Alias..."
-
-#: ../pidgin/gtkconv.c:2909
+msgstr "/Samtale/Al_ias..."
+
+#: ../pidgin/gtkconv.c:2972
 msgid "/Conversation/_Block..."
 msgstr "/Samtale/_Blokker..."
 
-#: ../pidgin/gtkconv.c:2911
-#, fuzzy
+#: ../pidgin/gtkconv.c:2974
 msgid "/Conversation/_Unblock..."
-msgstr "/Samtale/_Blokker..."
-
-#: ../pidgin/gtkconv.c:2913
+msgstr "/Samtale/_Fjern blokkering..."
+
+#: ../pidgin/gtkconv.c:2976
 msgid "/Conversation/_Add..."
 msgstr "/Samtale/_Legg til..."
 
-#: ../pidgin/gtkconv.c:2915
+#: ../pidgin/gtkconv.c:2978
 msgid "/Conversation/_Remove..."
 msgstr "/Samtale/_Fjern..."
 
-#: ../pidgin/gtkconv.c:2920
+#: ../pidgin/gtkconv.c:2983
 msgid "/Conversation/Insert Lin_k..."
 msgstr "/Samtale/Sett inn len_ke..."
 
-#: ../pidgin/gtkconv.c:2922
+#: ../pidgin/gtkconv.c:2985
 msgid "/Conversation/Insert Imag_e..."
 msgstr "/Samtale/Sett inn bild_e..."
 
-#: ../pidgin/gtkconv.c:2928
+#: ../pidgin/gtkconv.c:2991
 msgid "/Conversation/_Close"
 msgstr "/Samtale/L_ukk"
 
 #. Options
-#: ../pidgin/gtkconv.c:2932
+#: ../pidgin/gtkconv.c:2995
 msgid "/_Options"
 msgstr "/_Brukervalg"
 
-#: ../pidgin/gtkconv.c:2933
+#: ../pidgin/gtkconv.c:2996
 msgid "/Options/Enable _Logging"
 msgstr "/Brukervalg/Slå på _logging"
 
-#: ../pidgin/gtkconv.c:2934
+#: ../pidgin/gtkconv.c:2997
 msgid "/Options/Enable _Sounds"
 msgstr "/Brukervalg/Slå på l_yder"
 
-#: ../pidgin/gtkconv.c:2936
-#, fuzzy
+#: ../pidgin/gtkconv.c:2999
 msgid "/Options/Show Formatting _Toolbars"
 msgstr "/Brukervalg/Vis _formateringsverktøy"
 
-#: ../pidgin/gtkconv.c:2937
-#, fuzzy
+#: ../pidgin/gtkconv.c:3000
 msgid "/Options/Show Ti_mestamps"
-msgstr "/Brukervalg/Vis tidsstempler"
-
-#: ../pidgin/gtkconv.c:3061
-#, fuzzy
+msgstr "/Brukervalg/Vis _tidsstempler"
+
+#: ../pidgin/gtkconv.c:3124
 msgid "/Conversation/More"
-msgstr "/Samtale/L_ukk"
-
-#: ../pidgin/gtkconv.c:3117
-#, fuzzy
+msgstr "/Samtale/Mere"
+
+#: ../pidgin/gtkconv.c:3180
 msgid "/Options"
-msgstr "/_Brukervalg"
+msgstr "/Brukervalg"
 
 #. The menubar has been deactivated. Make sure the 'More' submenu is regenerated next time
 #. * the 'Conversation' menu pops up.
 #. Make sure the 'Conversation -> More' menuitems are regenerated whenever
 #. * the 'Conversation' menu pops up because the entries can change after the
 #. * conversation is created.
-#: ../pidgin/gtkconv.c:3152 ../pidgin/gtkconv.c:3184
-#, fuzzy
+#: ../pidgin/gtkconv.c:3215
+#: ../pidgin/gtkconv.c:3247
 msgid "/Conversation"
-msgstr "/_Samtale"
+msgstr "/Samtale"
 
 #
-#: ../pidgin/gtkconv.c:3192
+#: ../pidgin/gtkconv.c:3255
 msgid "/Conversation/View Log"
 msgstr "/Samtale/Vis logg"
 
-#: ../pidgin/gtkconv.c:3198
+#: ../pidgin/gtkconv.c:3261
 msgid "/Conversation/Send File..."
 msgstr "/Samtale/Send fil..."
 
-#: ../pidgin/gtkconv.c:3202
+#: ../pidgin/gtkconv.c:3265
 msgid "/Conversation/Add Buddy Pounce..."
 msgstr "/Samtale/Legg til kompisvarsling..."
 
-#: ../pidgin/gtkconv.c:3208
+#: ../pidgin/gtkconv.c:3271
 msgid "/Conversation/Get Info"
 msgstr "/Samtale/Hent info"
 
-#: ../pidgin/gtkconv.c:3212
+#: ../pidgin/gtkconv.c:3275
 msgid "/Conversation/Invite..."
 msgstr "/Samtale/Inviter..."
 
-#: ../pidgin/gtkconv.c:3218
+#: ../pidgin/gtkconv.c:3281
 msgid "/Conversation/Alias..."
 msgstr "/Samtale/Alias..."
 
-#: ../pidgin/gtkconv.c:3222
+#: ../pidgin/gtkconv.c:3285
 msgid "/Conversation/Block..."
 msgstr "/Samtale/Blokker..."
 
-#: ../pidgin/gtkconv.c:3226
-#, fuzzy
+#: ../pidgin/gtkconv.c:3289
 msgid "/Conversation/Unblock..."
-msgstr "/Samtale/Blokker..."
-
-#: ../pidgin/gtkconv.c:3230
+msgstr "/Samtale/Fjern blokkering..."
+
+#: ../pidgin/gtkconv.c:3293
 msgid "/Conversation/Add..."
 msgstr "/Samtale/Legg til..."
 
-#: ../pidgin/gtkconv.c:3234
+#: ../pidgin/gtkconv.c:3297
 msgid "/Conversation/Remove..."
 msgstr "/Samtale/Fjern..."
 
-#: ../pidgin/gtkconv.c:3240
+#: ../pidgin/gtkconv.c:3303
 msgid "/Conversation/Insert Link..."
 msgstr "/Samtale/Sett inn lenke"
 
-#: ../pidgin/gtkconv.c:3244
+#: ../pidgin/gtkconv.c:3307
 msgid "/Conversation/Insert Image..."
 msgstr "/Samtale/Sett inn bilde..."
 
-#: ../pidgin/gtkconv.c:3250
+#: ../pidgin/gtkconv.c:3313
 msgid "/Options/Enable Logging"
 msgstr "/Brukervalg/Slå på logging"
 
-#: ../pidgin/gtkconv.c:3253
+#: ../pidgin/gtkconv.c:3316
 msgid "/Options/Enable Sounds"
 msgstr "/Brukervalg/Slå på lyder"
 
-#: ../pidgin/gtkconv.c:3266
-#, fuzzy
+#: ../pidgin/gtkconv.c:3329
 msgid "/Options/Show Formatting Toolbars"
 msgstr "/Brukervalg/Vis formateringsverktøy"
 
-#: ../pidgin/gtkconv.c:3269
+#: ../pidgin/gtkconv.c:3332
 msgid "/Options/Show Timestamps"
 msgstr "/Brukervalg/Vis tidsstempler"
 
-#: ../pidgin/gtkconv.c:3346 ../pidgin/gtkconv.c:3388
+#: ../pidgin/gtkconv.c:3409
+#: ../pidgin/gtkconv.c:3451
 msgid "User is typing..."
 msgstr "Brukeren skriver en melding..."
 
-#: ../pidgin/gtkconv.c:3391
-#, fuzzy
+#: ../pidgin/gtkconv.c:3454
 msgid "User has typed something and stopped"
-msgstr "Brukeren har skrevet noe og tatt pause"
+msgstr "Brukeren har skrevet noe og pauset"
 
 #. Build the Send To menu
-#: ../pidgin/gtkconv.c:3574 ../pidgin/gtkconv.c:8022
-#, fuzzy
-msgid "_Send To"
-msgstr "Send som"
-
-#: ../pidgin/gtkconv.c:4286
-#, fuzzy
+#: ../pidgin/gtkconv.c:3637
+#: ../pidgin/gtkconv.c:8103
+msgid "S_end To"
+msgstr "S_end til"
+
+#: ../pidgin/gtkconv.c:4349
 msgid "_Send"
-msgstr "Send"
+msgstr "_Send"
 
 #. Setup the label telling how many people are in the room.
-#: ../pidgin/gtkconv.c:4390
+#: ../pidgin/gtkconv.c:4453
 msgid "0 people in room"
 msgstr "0 brukere i rommet"
 
-#: ../pidgin/gtkconv.c:5759 ../pidgin/gtkconv.c:5880
+#: ../pidgin/gtkconv.c:5823
+#: ../pidgin/gtkconv.c:5944
 #, c-format
 msgid "%d person in room"
 msgid_plural "%d people in room"
 msgstr[0] "%d person i rommet"
 msgstr[1] "%d personer i rommet"
 
-#: ../pidgin/gtkconv.c:6486 ../pidgin/gtkstatusbox.c:660
-#, fuzzy
+#: ../pidgin/gtkconv.c:6550
+#: ../pidgin/gtkstatusbox.c:660
 msgid "Typing"
-msgstr "Ping"
-
-#: ../pidgin/gtkconv.c:6490
-#, fuzzy
+msgstr "Skriver"
+
+#: ../pidgin/gtkconv.c:6554
 msgid "Stopped Typing"
-msgstr "Ping"
-
-#: ../pidgin/gtkconv.c:6493
+msgstr "Stoppet å skrive"
+
+#: ../pidgin/gtkconv.c:6557
 #, fuzzy
 msgid "Nick Said"
 msgstr "Kallenavn"
 
-#: ../pidgin/gtkconv.c:6496 ../pidgin/gtkdocklet.c:492
-#, fuzzy
+#: ../pidgin/gtkconv.c:6560
+#: ../pidgin/gtkdocklet.c:492
 msgid "Unread Messages"
-msgstr "Send beskjed"
-
-#: ../pidgin/gtkconv.c:6499
-#, fuzzy
+msgstr "Uleste beskjeder"
+
+#: ../pidgin/gtkconv.c:6563
 msgid "New Event"
-msgstr "Hendelse"
-
-#: ../pidgin/gtkconv.c:7572
+msgstr "Ny hendelse"
+
+#: ../pidgin/gtkconv.c:7654
 #, fuzzy
 msgid "clear: Clears all conversation scrollbacks."
 msgstr "%s har lukket samtalevinduet."
 
-#: ../pidgin/gtkconv.c:7736
-#, fuzzy
+#: ../pidgin/gtkconv.c:7817
 msgid "Confirm close"
-msgstr "Bekrefte konto"
-
-#: ../pidgin/gtkconv.c:7768
-#, fuzzy
+msgstr "Bekrefte lukking"
+
+#: ../pidgin/gtkconv.c:7849
 msgid "You have unread messages. Are you sure you want to close the window?"
-msgstr "Er du sikker på at du vil slette %s?"
-
-#: ../pidgin/gtkconv.c:8355
+msgstr "Du har uleste beskjeder. Er du sikker på at du vil lukke vinduet?"
+
+#: ../pidgin/gtkconv.c:8436
 msgid "Close other tabs"
-msgstr ""
-
-#: ../pidgin/gtkconv.c:8361
+msgstr "Lukk andre faner"
+
+#: ../pidgin/gtkconv.c:8442
 msgid "Close all tabs"
-msgstr ""
-
-#: ../pidgin/gtkconv.c:8369
+msgstr "Lukk alle faner"
+
+#: ../pidgin/gtkconv.c:8450
 msgid "Detach this tab"
 msgstr ""
 
-#: ../pidgin/gtkconv.c:8375
+#: ../pidgin/gtkconv.c:8456
 msgid "Close this tab"
-msgstr ""
-
-#: ../pidgin/gtkconv.c:8875
+msgstr "Lukk denne fanen"
+
+#: ../pidgin/gtkconv.c:8951
 msgid "Close conversation"
 msgstr "Lukk samtalen"
 
-#: ../pidgin/gtkconv.c:9477
+#: ../pidgin/gtkconv.c:9553
 msgid "Last created window"
-msgstr "Sist lagde vindu"
-
-#: ../pidgin/gtkconv.c:9479
+msgstr "Sist opprettede vindu"
+
+#: ../pidgin/gtkconv.c:9555
 msgid "Separate IM and Chat windows"
 msgstr "Skill direktemeldings- og gruppesamtalevinduer."
 
-#: ../pidgin/gtkconv.c:9481 ../pidgin/gtkprefs.c:1415
+#: ../pidgin/gtkconv.c:9557
+#: ../pidgin/gtkprefs.c:1417
 msgid "New window"
 msgstr "Nytt vindu"
 
-#: ../pidgin/gtkconv.c:9483
+#: ../pidgin/gtkconv.c:9559
 msgid "By group"
 msgstr "Etter gruppe"
 
-#: ../pidgin/gtkconv.c:9485
+#: ../pidgin/gtkconv.c:9561
 msgid "By account"
 msgstr "Etter konto"
 
@@ -15124,9 +14768,8 @@
 msgstr "Lagre avlusningslogg"
 
 #: ../pidgin/gtkdebug.c:582
-#, fuzzy
 msgid "Invert"
-msgstr "Sett _inn"
+msgstr "Inverter"
 
 #: ../pidgin/gtkdebug.c:585
 msgid "Highlight matches"
@@ -15134,70 +14777,74 @@
 
 #: ../pidgin/gtkdebug.c:652
 msgid "_Icon Only"
-msgstr ""
+msgstr "Bare _ikon"
 
 #: ../pidgin/gtkdebug.c:653
 msgid "_Text Only"
-msgstr ""
+msgstr "Bare _tekst"
 
 #: ../pidgin/gtkdebug.c:654
 msgid "_Both Icon & Text"
-msgstr ""
+msgstr "_Både ikon og tekst"
 
 #: ../pidgin/gtkdebug.c:775
-#, fuzzy
 msgid "Filter"
-msgstr "Feilet."
+msgstr "Filter"
 
 #: ../pidgin/gtkdebug.c:794
-#, fuzzy
 msgid "Right click for more options."
-msgstr "Vis flere valg"
+msgstr "Høyreklikk for flere valg"
 
 #: ../pidgin/gtkdebug.c:824
 msgid "Level "
-msgstr ""
-
-#: ../pidgin/gtkdebug.c:825 ../pidgin/gtkdebug.c:831
+msgstr "Nivå"
+
+#: ../pidgin/gtkdebug.c:825
+#: ../pidgin/gtkdebug.c:831
 msgid "Select the debug filter level."
 msgstr ""
 
 #: ../pidgin/gtkdebug.c:833
-#, fuzzy
 msgid "All"
-msgstr "Tillat"
+msgstr "Alle"
 
 #: ../pidgin/gtkdebug.c:834
 msgid "Misc"
-msgstr ""
+msgstr "Diverse"
 
 #: ../pidgin/gtkdebug.c:836
-#, fuzzy
 msgid "Warning"
-msgstr "Advar"
+msgstr "Advarsel"
 
 #: ../pidgin/gtkdebug.c:837
-#, fuzzy
 msgid "Error "
 msgstr "Feil"
 
 #: ../pidgin/gtkdebug.c:838
-#, fuzzy
 msgid "Fatal Error"
-msgstr "Intern feil"
-
-#: ../pidgin/gtkdialogs.c:72 ../pidgin/gtkdialogs.c:117
+msgstr "Alvorlig feil"
+
+#: ../pidgin/gtkdialogs.c:72
+#: ../pidgin/gtkdialogs.c:117
 msgid "lead developer"
 msgstr "hovedutvikler"
 
-#: ../pidgin/gtkdialogs.c:73 ../pidgin/gtkdialogs.c:74
-#: ../pidgin/gtkdialogs.c:75 ../pidgin/gtkdialogs.c:76
-#: ../pidgin/gtkdialogs.c:77 ../pidgin/gtkdialogs.c:78
-#: ../pidgin/gtkdialogs.c:79 ../pidgin/gtkdialogs.c:80
-#: ../pidgin/gtkdialogs.c:81 ../pidgin/gtkdialogs.c:82
-#: ../pidgin/gtkdialogs.c:83 ../pidgin/gtkdialogs.c:84
-#: ../pidgin/gtkdialogs.c:85 ../pidgin/gtkdialogs.c:86
-#: ../pidgin/gtkdialogs.c:89 ../pidgin/gtkdialogs.c:91
+#: ../pidgin/gtkdialogs.c:73
+#: ../pidgin/gtkdialogs.c:74
+#: ../pidgin/gtkdialogs.c:75
+#: ../pidgin/gtkdialogs.c:76
+#: ../pidgin/gtkdialogs.c:77
+#: ../pidgin/gtkdialogs.c:78
+#: ../pidgin/gtkdialogs.c:79
+#: ../pidgin/gtkdialogs.c:80
+#: ../pidgin/gtkdialogs.c:81
+#: ../pidgin/gtkdialogs.c:82
+#: ../pidgin/gtkdialogs.c:83
+#: ../pidgin/gtkdialogs.c:84
+#: ../pidgin/gtkdialogs.c:85
+#: ../pidgin/gtkdialogs.c:86
+#: ../pidgin/gtkdialogs.c:89
+#: ../pidgin/gtkdialogs.c:91
 #: ../pidgin/gtkdialogs.c:92
 msgid "developer"
 msgstr "utvikler"
@@ -15207,13 +14854,13 @@
 msgid "support"
 msgstr "støtte"
 
-#
 #: ../pidgin/gtkdialogs.c:88
 #, fuzzy
 msgid "support/QA"
 msgstr "støtte"
 
-#: ../pidgin/gtkdialogs.c:90 ../pidgin/gtkdialogs.c:112
+#: ../pidgin/gtkdialogs.c:90
+#: ../pidgin/gtkdialogs.c:112
 msgid "developer & webmaster"
 msgstr "utvikler og vevansvarlig"
 
@@ -15225,15 +14872,14 @@
 msgid "win32 port"
 msgstr "windows-versjon"
 
-#
-#: ../pidgin/gtkdialogs.c:109 ../pidgin/gtkdialogs.c:110
+#: ../pidgin/gtkdialogs.c:109
+#: ../pidgin/gtkdialogs.c:110
 msgid "maintainer"
 msgstr "ansvarlig"
 
 #: ../pidgin/gtkdialogs.c:111
-#, fuzzy
 msgid "libfaim maintainer"
-msgstr "tidligere libfaim-ansvarlig"
+msgstr "libfaim-ansvarlig"
 
 #. If "lazy bum" translates literally into a serious insult, use something else or omit it.
 #: ../pidgin/gtkdialogs.c:114
@@ -15241,76 +14887,79 @@
 msgstr "hacker og sjåfør (avslappet fyr)"
 
 #: ../pidgin/gtkdialogs.c:115
-#, fuzzy
 msgid "XMPP developer"
-msgstr "utvikler"
-
-#
+msgstr "XMPP-utvikler"
+
 #: ../pidgin/gtkdialogs.c:116
 msgid "original author"
 msgstr "opprinnelig laget av"
 
 #: ../pidgin/gtkdialogs.c:133
 msgid "Afrikaans"
-msgstr ""
-
-#
-#: ../pidgin/gtkdialogs.c:134 ../pidgin/gtkdialogs.c:226
-#, fuzzy
+msgstr "Afrikaans"
+
+#: ../pidgin/gtkdialogs.c:134
 msgid "Arabic"
-msgstr "Amharisk"
+msgstr "Arabisk"
 
 #: ../pidgin/gtkdialogs.c:135
 msgid "Belarusian Latin"
 msgstr ""
 
-#: ../pidgin/gtkdialogs.c:136 ../pidgin/gtkdialogs.c:137
-#: ../pidgin/gtkdialogs.c:227
+#: ../pidgin/gtkdialogs.c:136
+#: ../pidgin/gtkdialogs.c:137
+#: ../pidgin/gtkdialogs.c:224
 msgid "Bulgarian"
 msgstr "Bulgarsk"
 
-#: ../pidgin/gtkdialogs.c:138 ../pidgin/gtkdialogs.c:139
-#: ../pidgin/gtkdialogs.c:140 ../pidgin/gtkdialogs.c:141
+#: ../pidgin/gtkdialogs.c:138
+#: ../pidgin/gtkdialogs.c:139
+#: ../pidgin/gtkdialogs.c:140
+#: ../pidgin/gtkdialogs.c:141
 msgid "Bengali"
 msgstr ""
 
-#
 #: ../pidgin/gtkdialogs.c:142
-#, fuzzy
 msgid "Bosnian"
-msgstr "Estisk"
-
-#: ../pidgin/gtkdialogs.c:143 ../pidgin/gtkdialogs.c:228
-#: ../pidgin/gtkdialogs.c:229
+msgstr "Bosnisk"
+
+#: ../pidgin/gtkdialogs.c:143
+#: ../pidgin/gtkdialogs.c:225
+#: ../pidgin/gtkdialogs.c:226
 msgid "Catalan"
 msgstr "Katalansk"
 
-#: ../pidgin/gtkdialogs.c:144 ../pidgin/gtkdialogs.c:145
+#: ../pidgin/gtkdialogs.c:144
+#: ../pidgin/gtkdialogs.c:145
 msgid "Valencian-Catalan"
 msgstr ""
 
-#: ../pidgin/gtkdialogs.c:146 ../pidgin/gtkdialogs.c:230
+#: ../pidgin/gtkdialogs.c:146
+#: ../pidgin/gtkdialogs.c:227
 msgid "Czech"
 msgstr "Tsjekkisk"
 
-#
-#: ../pidgin/gtkdialogs.c:147 ../pidgin/gtkdialogs.c:148
+#: ../pidgin/gtkdialogs.c:147
+#: ../pidgin/gtkdialogs.c:148
 msgid "Danish"
 msgstr "Dansk"
 
-#: ../pidgin/gtkdialogs.c:149 ../pidgin/gtkdialogs.c:150
-#: ../pidgin/gtkdialogs.c:231
+#: ../pidgin/gtkdialogs.c:149
+#: ../pidgin/gtkdialogs.c:150
+#: ../pidgin/gtkdialogs.c:228
 msgid "German"
 msgstr "Tysk"
 
-#: ../pidgin/gtkdialogs.c:151 ../pidgin/gtkdialogs.c:152
+#: ../pidgin/gtkdialogs.c:151
+#: ../pidgin/gtkdialogs.c:152
 #: ../pidgin/gtkdialogs.c:153
 msgid "Dzongkha"
 msgstr ""
 
-#: ../pidgin/gtkdialogs.c:154 ../pidgin/gtkdialogs.c:155
+#: ../pidgin/gtkdialogs.c:154
+#: ../pidgin/gtkdialogs.c:155
 msgid "Greek"
-msgstr ""
+msgstr "Gresk"
 
 #: ../pidgin/gtkdialogs.c:156
 msgid "Australian English"
@@ -15328,48 +14977,52 @@
 msgid "Esperanto"
 msgstr ""
 
-#: ../pidgin/gtkdialogs.c:160 ../pidgin/gtkdialogs.c:232
-#: ../pidgin/gtkdialogs.c:233 ../pidgin/gtkdialogs.c:234
-#: ../pidgin/gtkdialogs.c:235
+#: ../pidgin/gtkdialogs.c:160
+#: ../pidgin/gtkdialogs.c:229
+#: ../pidgin/gtkdialogs.c:230
+#: ../pidgin/gtkdialogs.c:231
+#: ../pidgin/gtkdialogs.c:232
 msgid "Spanish"
 msgstr "Spansk"
 
-#
 #: ../pidgin/gtkdialogs.c:161
-#, fuzzy
 msgid "Estonian"
 msgstr "Estisk"
 
-#: ../pidgin/gtkdialogs.c:162 ../pidgin/gtkdialogs.c:163
+#: ../pidgin/gtkdialogs.c:162
+#: ../pidgin/gtkdialogs.c:163
 msgid "Euskera(Basque)"
 msgstr ""
 
-#: ../pidgin/gtkdialogs.c:164 ../pidgin/gtkdialogs.c:165
+#: ../pidgin/gtkdialogs.c:164
+#: ../pidgin/gtkdialogs.c:165
 #: ../pidgin/gtkdialogs.c:166
 #, fuzzy
 msgid "Persian"
 msgstr "Serbisk"
 
-#
-#: ../pidgin/gtkdialogs.c:167 ../pidgin/gtkdialogs.c:236
-#: ../pidgin/gtkdialogs.c:237
+#: ../pidgin/gtkdialogs.c:167
+#: ../pidgin/gtkdialogs.c:233
+#: ../pidgin/gtkdialogs.c:234
 msgid "Finnish"
 msgstr "Finsk"
 
-#: ../pidgin/gtkdialogs.c:168 ../pidgin/gtkdialogs.c:238
-#: ../pidgin/gtkdialogs.c:239 ../pidgin/gtkdialogs.c:240
-#: ../pidgin/gtkdialogs.c:241
+#: ../pidgin/gtkdialogs.c:168
+#: ../pidgin/gtkdialogs.c:235
+#: ../pidgin/gtkdialogs.c:236
+#: ../pidgin/gtkdialogs.c:237
+#: ../pidgin/gtkdialogs.c:238
 msgid "French"
 msgstr "Fransk"
 
-#
-#: ../pidgin/gtkdialogs.c:169 ../pidgin/gtkdialogs.c:170
-#: ../pidgin/gtkdialogs.c:242
-#, fuzzy
+#: ../pidgin/gtkdialogs.c:169
+#: ../pidgin/gtkdialogs.c:170
+#: ../pidgin/gtkdialogs.c:239
 msgid "Galician"
-msgstr "Italiensk"
-
-#: ../pidgin/gtkdialogs.c:171 ../pidgin/gtkdialogs.c:172
+msgstr "Galisisk"
+
+#: ../pidgin/gtkdialogs.c:171
+#: ../pidgin/gtkdialogs.c:172
 msgid "Gujarati"
 msgstr ""
 
@@ -15377,7 +15030,8 @@
 msgid "Gujarati Language Team"
 msgstr ""
 
-#: ../pidgin/gtkdialogs.c:173 ../pidgin/gtkdialogs.c:243
+#: ../pidgin/gtkdialogs.c:173
+#: ../pidgin/gtkdialogs.c:240
 msgid "Hebrew"
 msgstr "Hebraisk"
 
@@ -15385,29 +15039,31 @@
 msgid "Hindi"
 msgstr "Hindi"
 
-#: ../pidgin/gtkdialogs.c:175 ../pidgin/gtkdialogs.c:244
+#: ../pidgin/gtkdialogs.c:175
+#: ../pidgin/gtkdialogs.c:241
 msgid "Hungarian"
 msgstr "Ungarsk"
 
 #: ../pidgin/gtkdialogs.c:176
-#, fuzzy
 msgid "Indonesian"
-msgstr "Makedons"
-
-#
-#: ../pidgin/gtkdialogs.c:177 ../pidgin/gtkdialogs.c:245
+msgstr "Indonesisk"
+
+#: ../pidgin/gtkdialogs.c:177
+#: ../pidgin/gtkdialogs.c:242
 msgid "Italian"
 msgstr "Italiensk"
 
-#: ../pidgin/gtkdialogs.c:178 ../pidgin/gtkdialogs.c:246
-#: ../pidgin/gtkdialogs.c:247 ../pidgin/gtkdialogs.c:248
+#: ../pidgin/gtkdialogs.c:178
+#: ../pidgin/gtkdialogs.c:243
+#: ../pidgin/gtkdialogs.c:244
+#: ../pidgin/gtkdialogs.c:245
 msgid "Japanese"
 msgstr "Japansk"
 
-#: ../pidgin/gtkdialogs.c:179 ../pidgin/gtkdialogs.c:249
-#, fuzzy
+#: ../pidgin/gtkdialogs.c:179
+#: ../pidgin/gtkdialogs.c:246
 msgid "Georgian"
-msgstr "Tysk"
+msgstr "Georgisk"
 
 #: ../pidgin/gtkdialogs.c:179
 #, fuzzy
@@ -15415,378 +15071,330 @@
 msgstr "Aktive oversettere"
 
 #: ../pidgin/gtkdialogs.c:180
-#, fuzzy
 msgid "Kannada"
-msgstr "Bannlyst"
+msgstr "Kannada"
 
 #: ../pidgin/gtkdialogs.c:180
 msgid "Kannada Translation team"
 msgstr ""
 
-#: ../pidgin/gtkdialogs.c:181 ../pidgin/gtkdialogs.c:250
-#: ../pidgin/gtkdialogs.c:251
+#: ../pidgin/gtkdialogs.c:181
+#: ../pidgin/gtkdialogs.c:247
+#: ../pidgin/gtkdialogs.c:248
 msgid "Korean"
 msgstr "Koreansk"
 
-#: ../pidgin/gtkdialogs.c:182 ../pidgin/gtkdialogs.c:183
+#: ../pidgin/gtkdialogs.c:182
+#: ../pidgin/gtkdialogs.c:183
 #: ../pidgin/gtkdialogs.c:184
-#, fuzzy
 msgid "Kurdish"
-msgstr "Tyrkisk"
+msgstr "Kurdisk"
 
 #: ../pidgin/gtkdialogs.c:185
-msgid "Lao"
-msgstr ""
-
-#: ../pidgin/gtkdialogs.c:186 ../pidgin/gtkdialogs.c:252
-#: ../pidgin/gtkdialogs.c:253
+#: ../pidgin/gtkdialogs.c:249
+#: ../pidgin/gtkdialogs.c:250
 msgid "Lithuanian"
 msgstr "Litauisk"
 
-#: ../pidgin/gtkdialogs.c:187 ../pidgin/gtkdialogs.c:188
-#: ../pidgin/gtkdialogs.c:189 ../pidgin/gtkdialogs.c:254
+#: ../pidgin/gtkdialogs.c:186
+#: ../pidgin/gtkdialogs.c:187
+#: ../pidgin/gtkdialogs.c:251
 msgid "Macedonian"
 msgstr "Makedons"
 
-#: ../pidgin/gtkdialogs.c:190 ../pidgin/gtkdialogs.c:255
-#: ../pidgin/gtkdialogs.c:256
-#, fuzzy
+#: ../pidgin/gtkdialogs.c:188
+#: ../pidgin/gtkdialogs.c:252
 msgid "Bokmål Norwegian"
-msgstr "Norsk"
-
-#: ../pidgin/gtkdialogs.c:191
+msgstr "Norsk Bokmål"
+
+#: ../pidgin/gtkdialogs.c:189
 msgid "Nepali"
 msgstr ""
 
-#: ../pidgin/gtkdialogs.c:192
+#: ../pidgin/gtkdialogs.c:190
 #, fuzzy
 msgid "Dutch, Flemish"
 msgstr "Nederlansk, flamsk"
 
-#: ../pidgin/gtkdialogs.c:193
-#, fuzzy
+#: ../pidgin/gtkdialogs.c:191
 msgid "Norwegian Nynorsk"
-msgstr "Norsk"
-
-#
-#: ../pidgin/gtkdialogs.c:194 ../pidgin/gtkdialogs.c:195
-#: ../pidgin/gtkdialogs.c:196 ../pidgin/gtkdialogs.c:257
+msgstr "Norsk Nynorsk"
+
+#: ../pidgin/gtkdialogs.c:192
+#: ../pidgin/gtkdialogs.c:193
+#: ../pidgin/gtkdialogs.c:194
+#: ../pidgin/gtkdialogs.c:253
 msgid "Polish"
 msgstr "Polsk"
 
-#: ../pidgin/gtkdialogs.c:197
+#: ../pidgin/gtkdialogs.c:195
 msgid "Portuguese"
 msgstr "Portugisisk"
 
-#: ../pidgin/gtkdialogs.c:198
+#: ../pidgin/gtkdialogs.c:196
 msgid "Portuguese-Brazil"
 msgstr "Portugisisk (Brasil)"
 
+#: ../pidgin/gtkdialogs.c:197
+msgid "Pashto"
+msgstr "Pashto"
+
+#: ../pidgin/gtkdialogs.c:198
+msgid "Romanian"
+msgstr "Rumensk"
+
 #: ../pidgin/gtkdialogs.c:199
-#, fuzzy
-msgid "Pashto"
-msgstr "Bilde"
-
-#
-#: ../pidgin/gtkdialogs.c:200
-msgid "Romanian"
-msgstr "Rumensk"
-
-#: ../pidgin/gtkdialogs.c:201 ../pidgin/gtkdialogs.c:258
-#: ../pidgin/gtkdialogs.c:259
+#: ../pidgin/gtkdialogs.c:254
+#: ../pidgin/gtkdialogs.c:255
 msgid "Russian"
 msgstr "Russisk"
 
-#: ../pidgin/gtkdialogs.c:202 ../pidgin/gtkdialogs.c:203
-#: ../pidgin/gtkdialogs.c:260 ../pidgin/gtkdialogs.c:261
-#: ../pidgin/gtkdialogs.c:262
+#: ../pidgin/gtkdialogs.c:200
+#: ../pidgin/gtkdialogs.c:201
+#: ../pidgin/gtkdialogs.c:256
+#: ../pidgin/gtkdialogs.c:257
+#: ../pidgin/gtkdialogs.c:258
 msgid "Slovak"
 msgstr "Slovakisk"
 
-#: ../pidgin/gtkdialogs.c:204 ../pidgin/gtkdialogs.c:263
+#: ../pidgin/gtkdialogs.c:202
+#: ../pidgin/gtkdialogs.c:259
 msgid "Slovenian"
 msgstr "Slovensk"
 
-#
-#: ../pidgin/gtkdialogs.c:205
+#: ../pidgin/gtkdialogs.c:203
 msgid "Albanian"
 msgstr "Albansk"
 
-#: ../pidgin/gtkdialogs.c:206 ../pidgin/gtkdialogs.c:207
-#: ../pidgin/gtkdialogs.c:264 ../pidgin/gtkdialogs.c:265
+#: ../pidgin/gtkdialogs.c:204
+#: ../pidgin/gtkdialogs.c:205
+#: ../pidgin/gtkdialogs.c:260
+#: ../pidgin/gtkdialogs.c:261
 msgid "Serbian"
 msgstr "Serbisk"
 
-#: ../pidgin/gtkdialogs.c:208 ../pidgin/gtkdialogs.c:266
-#: ../pidgin/gtkdialogs.c:267
+#: ../pidgin/gtkdialogs.c:206
+#: ../pidgin/gtkdialogs.c:262
+#: ../pidgin/gtkdialogs.c:263
 msgid "Swedish"
 msgstr "Svensk"
 
+#: ../pidgin/gtkdialogs.c:207
+msgid "Tamil"
+msgstr "Tamil"
+
+#: ../pidgin/gtkdialogs.c:208
+msgid "Telugu"
+msgstr "Dravidisk"
+
 #: ../pidgin/gtkdialogs.c:209
-#, fuzzy
-msgid "Tamil"
-msgstr "Terminal"
+msgid "Thai"
+msgstr "Thai"
 
 #: ../pidgin/gtkdialogs.c:210
-msgid "Telugu"
-msgstr "Dravidisk"
+#: ../pidgin/gtkdialogs.c:264
+msgid "Turkish"
+msgstr "Tyrkisk"
 
 #: ../pidgin/gtkdialogs.c:211
-msgid "Thai"
-msgstr ""
-
-#: ../pidgin/gtkdialogs.c:212 ../pidgin/gtkdialogs.c:268
-msgid "Turkish"
-msgstr "Tyrkisk"
-
-#: ../pidgin/gtkdialogs.c:213
 msgid "Vietnamese"
 msgstr "Vietnamesisk"
 
+#: ../pidgin/gtkdialogs.c:211
+msgid "T.M.Thanh and the Gnome-Vi Team"
+msgstr ""
+
+#: ../pidgin/gtkdialogs.c:212
+#: ../pidgin/gtkdialogs.c:265
+msgid "Simplified Chinese"
+msgstr "Forenklet kinesisk"
+
 #: ../pidgin/gtkdialogs.c:213
-msgid "T.M.Thanh and the Gnome-Vi Team"
-msgstr ""
-
-#: ../pidgin/gtkdialogs.c:214 ../pidgin/gtkdialogs.c:269
-msgid "Simplified Chinese"
-msgstr "Forenklet kinesisk"
-
-#: ../pidgin/gtkdialogs.c:215 ../pidgin/gtkdialogs.c:216
+#: ../pidgin/gtkdialogs.c:214
+#: ../pidgin/gtkdialogs.c:215
+msgid "Hong Kong Chinese"
+msgstr ""
+
+#: ../pidgin/gtkdialogs.c:216
 #: ../pidgin/gtkdialogs.c:217
-msgid "Hong Kong Chinese"
-msgstr ""
-
-#: ../pidgin/gtkdialogs.c:218 ../pidgin/gtkdialogs.c:219
-#: ../pidgin/gtkdialogs.c:270
+#: ../pidgin/gtkdialogs.c:266
 msgid "Traditional Chinese"
 msgstr "Tradisjonell kinesisk"
 
 #
-#: ../pidgin/gtkdialogs.c:225
+#: ../pidgin/gtkdialogs.c:223
 msgid "Amharic"
 msgstr "Amharisk"
 
-#: ../pidgin/gtkdialogs.c:357
-#, fuzzy, c-format
+#: ../pidgin/gtkdialogs.c:353
+#, c-format
 msgid "About %s"
-msgstr "Om Gaim"
-
-#: ../pidgin/gtkdialogs.c:400
-#, c-format
-msgid ""
-"%s is a graphical modular messaging client based on libpurple which is "
-"capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, "
-"Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and "
-"QQ all at once.  It is written using GTK+.<BR><BR>You may modify and "
-"redistribute the program under the terms of the GPL (version 2 or later).  A "
-"copy of the GPL is contained in the 'COPYING' file distributed with %s.  %s "
-"is copyrighted by its contributors.  See the 'COPYRIGHT' file for the "
-"complete list of contributors.  We provide no warranty for this program."
-"<BR><BR>"
-msgstr ""
-
-#: ../pidgin/gtkdialogs.c:418
-#, fuzzy, c-format
+msgstr "Om %s"
+
+#: ../pidgin/gtkdialogs.c:396
+#, c-format
+msgid "%s is a graphical modular messaging client based on libpurple which is capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and QQ all at once.  It is written using GTK+.<BR><BR>You may modify and redistribute the program under the terms of the GPL (version 2 or later).  A copy of the GPL is contained in the 'COPYING' file distributed with %s.  %s is copyrighted by its contributors.  See the 'COPYRIGHT' file for the complete list of contributors.  We provide no warranty for this program.<BR><BR>"
+msgstr ""
+
+#: ../pidgin/gtkdialogs.c:414
 msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
-msgstr "<FONT SIZE=\"4\">IRC:</FONT> #gaim på irc.freenode.net<BR><BR>"
-
-#: ../pidgin/gtkdialogs.c:423
-#, fuzzy
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin på irc.freenode.net<BR><BR>"
+
+#: ../pidgin/gtkdialogs.c:419
 msgid "Current Developers"
-msgstr "tidligere utviklere"
-
-#: ../pidgin/gtkdialogs.c:438
+msgstr "Tidligere utviklere"
+
+#: ../pidgin/gtkdialogs.c:434
 msgid "Crazy Patch Writers"
-msgstr "folk som har bidratt med rettelser"
-
-#: ../pidgin/gtkdialogs.c:453
+msgstr "Folk som har bidratt med rettelser"
+
+#: ../pidgin/gtkdialogs.c:449
 msgid "Retired Developers"
 msgstr "tidligere utviklere"
 
-#: ../pidgin/gtkdialogs.c:468
-#, fuzzy
+#: ../pidgin/gtkdialogs.c:464
 msgid "Retired Crazy Patch Writers"
-msgstr "folk som har bidratt med rettelser"
-
-#: ../pidgin/gtkdialogs.c:483
+msgstr "\"Pensjonerte\" folk som har bidratt med rettelser"
+
+#: ../pidgin/gtkdialogs.c:479
 msgid "Artists"
-msgstr ""
-
-#: ../pidgin/gtkdialogs.c:498
+msgstr "Artister"
+
+#: ../pidgin/gtkdialogs.c:494
 msgid "Current Translators"
 msgstr "Aktive oversettere"
 
-#: ../pidgin/gtkdialogs.c:518
+#: ../pidgin/gtkdialogs.c:514
 msgid "Past Translators"
 msgstr "Tidligere oversettere"
 
-#: ../pidgin/gtkdialogs.c:536
+#: ../pidgin/gtkdialogs.c:532
 #, fuzzy
 msgid "Debugging Information"
 msgstr "Brukerinformasjon"
 
-#: ../pidgin/gtkdialogs.c:906
+#: ../pidgin/gtkdialogs.c:902
 msgid "Get User Info"
 msgstr "Hent brukerinfo"
 
-#: ../pidgin/gtkdialogs.c:908
-#, fuzzy
-msgid ""
-"Please enter the screen name or alias of the person whose info you would "
-"like to view."
-msgstr ""
-"Vennligst skriv inn skjermnavnet til den personen du vil se informasjon om."
-
-#: ../pidgin/gtkdialogs.c:998
-#, fuzzy
+#: ../pidgin/gtkdialogs.c:904
+msgid "Please enter the screen name or alias of the person whose info you would like to view."
+msgstr "Vennligst skriv inn skjermnavnet eller aliaset til den personen du vil se informasjon om."
+
+#: ../pidgin/gtkdialogs.c:994
 msgid "View User Log"
-msgstr "Hent brukerlogg"
-
-#: ../pidgin/gtkdialogs.c:1000
-#, fuzzy
-msgid ""
-"Please enter the screen name or alias of the person whose log you would like "
-"to view."
-msgstr ""
-"Vennligst skriv inn skjermnavnet til den personen du vil se loggen til."
-
-#
-#: ../pidgin/gtkdialogs.c:1020
+msgstr "Se på brukerlogg"
+
+#: ../pidgin/gtkdialogs.c:996
+msgid "Please enter the screen name or alias of the person whose log you would like to view."
+msgstr "Vennligst skriv inn skjermnavnet eller aliaset til den personen du vil se loggen til."
+
+#: ../pidgin/gtkdialogs.c:1016
 msgid "Alias Contact"
 msgstr "Kontaktalias"
 
-#
-#: ../pidgin/gtkdialogs.c:1021
+#: ../pidgin/gtkdialogs.c:1017
 msgid "Enter an alias for this contact."
-msgstr "Vennligst skriv inn aliasnavn for denne kontakten."
-
-#: ../pidgin/gtkdialogs.c:1043
+msgstr "Vennligst skriv inn et alias for denne kontakten."
+
+#: ../pidgin/gtkdialogs.c:1039
 #, c-format
 msgid "Enter an alias for %s."
 msgstr "Oppgi et alias for %s."
 
-#: ../pidgin/gtkdialogs.c:1045
+#: ../pidgin/gtkdialogs.c:1041
 msgid "Alias Buddy"
 msgstr "Alias for kontakt"
 
-#: ../pidgin/gtkdialogs.c:1066
+#: ../pidgin/gtkdialogs.c:1062
 msgid "Alias Chat"
 msgstr "Samtalealias"
 
-#: ../pidgin/gtkdialogs.c:1067
+#: ../pidgin/gtkdialogs.c:1063
 msgid "Enter an alias for this chat."
 msgstr "Vennligst skriv inn aliasnavn for denne samtalegruppa."
 
-#: ../pidgin/gtkdialogs.c:1106
-#, fuzzy, c-format
-msgid ""
-"You are about to remove the contact containing %s and %d other buddy from "
-"your buddy list.  Do you want to continue?"
-msgid_plural ""
-"You are about to remove the contact containing %s and %d other buddies from "
-"your buddy list.  Do you want to continue?"
-msgstr[0] ""
-"Er du sikker på at du vil fjerne kontakten som inneholder %s og %d andre "
-"kontakter fra kontaktlisten din?"
-msgstr[1] ""
-"Er du sikker på at du vil fjerne kontakten som inneholder %s og %d andre "
-"kontakter fra kontaktlisten din?"
-
-#
-#: ../pidgin/gtkdialogs.c:1114
+#: ../pidgin/gtkdialogs.c:1102
+#, fuzzy, c-format
+msgid "You are about to remove the contact containing %s and %d other buddy from your buddy list.  Do you want to continue?"
+msgid_plural "You are about to remove the contact containing %s and %d other buddies from your buddy list.  Do you want to continue?"
+msgstr[0] "Er du sikker på at du vil fjerne kontakten som inneholder %s og %d andre kontakter fra kontaktlisten din?"
+msgstr[1] "Er du sikker på at du vil fjerne kontakten som inneholder %s og %d andre kontakter fra kontaktlisten din?"
+
+#: ../pidgin/gtkdialogs.c:1110
 msgid "Remove Contact"
-msgstr "Fje_rn kontakt"
-
-#
-#: ../pidgin/gtkdialogs.c:1117
-#, fuzzy
+msgstr "Fjern kontakt"
+
+#: ../pidgin/gtkdialogs.c:1113
 msgid "_Remove Contact"
 msgstr "Fje_rn kontakt"
 
-#: ../pidgin/gtkdialogs.c:1148
-#, fuzzy, c-format
-msgid ""
-"You are about to merge the group called %s into the group called %s. Do you "
-"want to continue?"
-msgstr ""
-"Er du sikker på at du vil fjerne gruppen %s med alle medlemmer fra "
-"kontaktlisten din?"
-
-#: ../pidgin/gtkdialogs.c:1155
+#: ../pidgin/gtkdialogs.c:1144
+#, fuzzy, c-format
+msgid "You are about to merge the group called %s into the group called %s. Do you want to continue?"
+msgstr "Er du sikker på at du vil fjerne gruppen %s med alle medlemmer fra kontaktlisten din?"
+
+#: ../pidgin/gtkdialogs.c:1151
 #, fuzzy
 msgid "Merge Groups"
 msgstr "Fjern gruppe"
 
-#: ../pidgin/gtkdialogs.c:1158
+#: ../pidgin/gtkdialogs.c:1154
 #, fuzzy
 msgid "_Merge Groups"
 msgstr "Slett gruppe"
 
-#: ../pidgin/gtkdialogs.c:1208
-#, c-format
-msgid ""
-"You are about to remove the group %s and all its members from your buddy "
-"list.  Do you want to continue?"
-msgstr ""
-"Er du sikker på at du vil fjerne gruppen %s med alle medlemmer fra "
-"kontaktlisten din?"
-
-#: ../pidgin/gtkdialogs.c:1211
+#: ../pidgin/gtkdialogs.c:1204
+#, c-format
+msgid "You are about to remove the group %s and all its members from your buddy list.  Do you want to continue?"
+msgstr "Er du sikker på at du vil fjerne gruppen %s med alle medlemmer fra kontaktlisten din?"
+
+#: ../pidgin/gtkdialogs.c:1207
 msgid "Remove Group"
 msgstr "Fjern gruppe"
 
-#: ../pidgin/gtkdialogs.c:1214
-#, fuzzy
+#: ../pidgin/gtkdialogs.c:1210
 msgid "_Remove Group"
-msgstr "Fjern gruppe"
-
-#: ../pidgin/gtkdialogs.c:1247
-#, c-format
-msgid ""
-"You are about to remove %s from your buddy list.  Do you want to continue?"
+msgstr "Fje_rn gruppe"
+
+#: ../pidgin/gtkdialogs.c:1243
+#, c-format
+msgid "You are about to remove %s from your buddy list.  Do you want to continue?"
 msgstr "Er du sikker på at du vil fjerne %s fra kontaktlisten din?"
 
-#: ../pidgin/gtkdialogs.c:1250
+#: ../pidgin/gtkdialogs.c:1246
 msgid "Remove Buddy"
 msgstr "Fjern kontakt"
 
-#: ../pidgin/gtkdialogs.c:1253
+#: ../pidgin/gtkdialogs.c:1249
 msgid "_Remove Buddy"
 msgstr "Fje_rn kontakt"
 
-#: ../pidgin/gtkdialogs.c:1274
-#, c-format
-msgid ""
-"You are about to remove the chat %s from your buddy list.  Do you want to "
-"continue?"
-msgstr ""
-"Er du sikker på at du vil fjerne samtalegruppen %s fra kontaktlisten din?"
-
-#: ../pidgin/gtkdialogs.c:1277
+#: ../pidgin/gtkdialogs.c:1270
+#, c-format
+msgid "You are about to remove the chat %s from your buddy list.  Do you want to continue?"
+msgstr "Er du sikker på at du vil fjerne samtalegruppen %s fra kontaktlisten din?"
+
+#: ../pidgin/gtkdialogs.c:1273
 msgid "Remove Chat"
 msgstr "Fjern samtalegruppe"
 
-#: ../pidgin/gtkdialogs.c:1280
-#, fuzzy
+#: ../pidgin/gtkdialogs.c:1276
 msgid "_Remove Chat"
-msgstr "Fjern samtalegruppe"
+msgstr "_Fjern samtalegruppe"
 
 #: ../pidgin/gtkdocklet.c:150
-#, fuzzy
 msgid "Right-click for more unread messages...\n"
-msgstr "Vis flere valg"
+msgstr "Høyreklikk for flere uleste beskjeder...\n"
 
 #: ../pidgin/gtkdocklet.c:435
-#, fuzzy
 msgid "Change Status"
-msgstr "Endre adresse til:"
+msgstr "Endre status"
 
 #: ../pidgin/gtkdocklet.c:487
-#, fuzzy
 msgid "Show Buddy List"
-msgstr "Kontaktliste"
-
-#
+msgstr "Vis kontaktliste"
+
 #: ../pidgin/gtkdocklet.c:513
 msgid "New Message..."
 msgstr "Ny melding..."
@@ -15795,24 +15403,22 @@
 msgid "Mute Sounds"
 msgstr "Skru av lyder"
 
-#
 #: ../pidgin/gtkdocklet.c:535
 #, fuzzy
-msgid "Blink on new message"
-msgstr "Ny melding..."
+msgid "Blink on New Message"
+msgstr "Blink ved nye beskjeder"
 
 #: ../pidgin/gtkdocklet.c:542
 msgid "Quit"
 msgstr "Avslutt"
 
 #: ../pidgin/gtkft.c:154
-#, fuzzy
 msgid "Not started"
-msgstr "Ikke støttet"
+msgstr "Ikke startet"
 
 #: ../pidgin/gtkft.c:274
 msgid "<b>Receiving As:</b>"
-msgstr "<b>Mottar som:</b>"
+msgstr "<b>Mottas som:</b>"
 
 #: ../pidgin/gtkft.c:276
 msgid "<b>Receiving From:</b>"
@@ -15835,28 +15441,27 @@
 msgstr "En feil oppsto under åpningen av filen"
 
 #: ../pidgin/gtkft.c:540
-#, fuzzy, c-format
+#, c-format
 msgid "Error launching %s: %s"
-msgstr "Feil under starting av kommando: <b>%s</b>:%s"
+msgstr "Feil under start av %s: %s"
 
 #: ../pidgin/gtkft.c:549
-#, fuzzy, c-format
+#, c-format
 msgid "Error running %s"
-msgstr "Klarte ikke bli med i gruppesamtale %s"
+msgstr "Feil ved kjøring av %s"
 
 #: ../pidgin/gtkft.c:550
 #, c-format
 msgid "Process returned error code %d"
-msgstr ""
+msgstr "Prosessen returnerte feilkode %d"
 
 #: ../pidgin/gtkft.c:697
 msgid "Filename:"
 msgstr "Filnavn:"
 
 #: ../pidgin/gtkft.c:698
-#, fuzzy
 msgid "Local File:"
-msgstr "Lokale brukere"
+msgstr "Lokal fil"
 
 #: ../pidgin/gtkft.c:700
 msgid "Speed:"
@@ -15872,21 +15477,20 @@
 
 #: ../pidgin/gtkft.c:784
 msgid "Close this window when all transfers _finish"
-msgstr ""
+msgstr "Lukk dette vinduet når alle overføringene er _fullført"
 
 #: ../pidgin/gtkft.c:794
-#, fuzzy
 msgid "C_lear finished transfers"
-msgstr "Fjern fullførte overføringer"
+msgstr "_Fjern fullførte overføringer"
 
 #. "Download Details" arrow
 #: ../pidgin/gtkft.c:803
-#, fuzzy
 msgid "File transfer _details"
-msgstr "Skjul overføringsdetaljer"
+msgstr "Skjul overførings_detaljer"
 
 #. Pause button
-#: ../pidgin/gtkft.c:833 ../pidgin/pidginstock.c:95
+#: ../pidgin/gtkft.c:833
+#: ../pidgin/pidginstock.c:95
 msgid "_Pause"
 msgstr "_Pause"
 
@@ -15896,12 +15500,11 @@
 msgstr "_Fortsett"
 
 #: ../pidgin/gtkimhtml.c:816
-#, fuzzy
 msgid "Paste as Plain _Text"
-msgstr "Li_m inn som tekst"
-
-#: ../pidgin/gtkimhtml.c:833 ../pidgin/gtkimhtmltoolbar.c:1194
-#, fuzzy
+msgstr "Lim inn som ren _tekst"
+
+#: ../pidgin/gtkimhtml.c:833
+#: ../pidgin/gtkimhtmltoolbar.c:1195
 msgid "_Reset formatting"
 msgstr "_Fjern formatering"
 
@@ -15911,7 +15514,7 @@
 
 #: ../pidgin/gtkimhtml.c:1374
 msgid "Color to draw hyperlinks."
-msgstr "Farge på lenker"
+msgstr "Fargen som lenker skal ha"
 
 #: ../pidgin/gtkimhtml.c:1377
 #, fuzzy
@@ -15923,18 +15526,17 @@
 msgid "Color to draw hyperlinks when mouse is over them."
 msgstr "Farge på lenker"
 
-#
 #: ../pidgin/gtkimhtml.c:1598
 msgid "_Copy E-Mail Address"
-msgstr "Kopier e-postadresse"
+msgstr "_Kopier e-postadresse"
 
 #: ../pidgin/gtkimhtml.c:1610
 msgid "_Open Link in Browser"
-msgstr "Åpne i nettleser"
+msgstr "_Åpne lenke i nettleser"
 
 #: ../pidgin/gtkimhtml.c:1620
 msgid "_Copy Link Location"
-msgstr "Kopier snarvei"
+msgstr "_Kopier lenkemål"
 
 #: ../pidgin/gtkimhtml.c:3369
 msgid ""
@@ -15957,32 +15559,35 @@
 "Går tilbake til PNG."
 
 #: ../pidgin/gtkimhtml.c:3401
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "<span size='larger' weight='bold'>Error saving image</span>\n"
 "\n"
 "%s"
 msgstr ""
-"<span weight=\"bold\" size=\"larger\">Du har e-post!</span>\n"
+"<span size='larger' weight='bold'>Feil ved lagring av bilde</span>\n"
 "\n"
 "%s"
 
 #: ../pidgin/gtkimhtml.c:3404
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Error saving image\n"
 "\n"
 "%s"
-msgstr "Feil under lagring av bilde: %s"
-
-#: ../pidgin/gtkimhtml.c:3482 ../pidgin/gtkimhtml.c:3494
+msgstr ""
+"Feil ved lagring av bilde\n"
+"\n"
+"%s"
+
+#: ../pidgin/gtkimhtml.c:3482
+#: ../pidgin/gtkimhtml.c:3494
 msgid "Save Image"
 msgstr "Lagre bilde"
 
 #: ../pidgin/gtkimhtml.c:3522
-#, c-format
 msgid "_Save Image..."
-msgstr "Lagre bilde..."
+msgstr "_Lagre bilde..."
 
 #: ../pidgin/gtkimhtmltoolbar.c:163
 msgid "Select Font"
@@ -16001,29 +15606,24 @@
 msgstr "_URL"
 
 #: ../pidgin/gtkimhtmltoolbar.c:418
-#, fuzzy
 msgid "_Description"
-msgstr "Beskrivelse"
+msgstr "_Beskrivelse"
 
 #: ../pidgin/gtkimhtmltoolbar.c:421
-msgid ""
-"Please enter the URL and description of the link that you want to insert. "
-"The description is optional."
-msgstr ""
-"Vennligst skriv inn URL og beskrivelse av lenka du vil sette inn. "
-"Beskrivelsesfeltet er valgfritt."
+msgid "Please enter the URL and description of the link that you want to insert. The description is optional."
+msgstr "Vennligst skriv inn URL og beskrivelse av lenka du vil sette inn. Beskrivelsesfeltet er valgfritt."
 
 #: ../pidgin/gtkimhtmltoolbar.c:425
 msgid "Please enter the URL of the link that you want to insert."
-msgstr ""
-"Vennligst skriv inn URL og beskrivelse av lenka du vil sette inn. "
-"Beskrivelsesfeltet er valgfritt."
-
-#: ../pidgin/gtkimhtmltoolbar.c:430 ../pidgin/gtkimhtmltoolbar.c:1102
+msgstr "Vennligst skriv inn URL og beskrivelse av lenka du vil sette inn. Beskrivelsesfeltet er valgfritt."
+
+#: ../pidgin/gtkimhtmltoolbar.c:430
+#: ../pidgin/gtkimhtmltoolbar.c:1102
 msgid "Insert Link"
 msgstr "Sett inn lenke"
 
-#: ../pidgin/gtkimhtmltoolbar.c:434 ../pidgin/gtkimhtmltoolbar.c:1262
+#: ../pidgin/gtkimhtmltoolbar.c:434
+#: ../pidgin/gtkimhtmltoolbar.c:1263
 msgid "_Insert"
 msgstr "Sett _inn"
 
@@ -16032,7 +15632,8 @@
 msgid "Failed to store image: %s\n"
 msgstr "Klarte ikke å lagre bilde: %s\n"
 
-#: ../pidgin/gtkimhtmltoolbar.c:540 ../pidgin/gtkimhtmltoolbar.c:550
+#: ../pidgin/gtkimhtmltoolbar.c:540
+#: ../pidgin/gtkimhtmltoolbar.c:550
 msgid "Insert Image"
 msgstr "Sett inn bilde"
 
@@ -16045,7 +15646,8 @@
 msgid "Smile!"
 msgstr "Smil!"
 
-#: ../pidgin/gtkimhtmltoolbar.c:846 ../pidgin/gtkimhtmltoolbar.c:1219
+#: ../pidgin/gtkimhtmltoolbar.c:846
+#: ../pidgin/gtkimhtmltoolbar.c:1220
 #, fuzzy
 msgid "_Font"
 msgstr "Konto:"
@@ -16059,15 +15661,18 @@
 msgid "Ungroup Items"
 msgstr ""
 
-#: ../pidgin/gtkimhtmltoolbar.c:1088 ../pidgin/plugins/convcolors.c:287
+#: ../pidgin/gtkimhtmltoolbar.c:1088
+#: ../pidgin/plugins/convcolors.c:287
 msgid "Bold"
 msgstr "Fet"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1089 ../pidgin/plugins/convcolors.c:294
+#: ../pidgin/gtkimhtmltoolbar.c:1089
+#: ../pidgin/plugins/convcolors.c:294
 msgid "Italic"
 msgstr "Kursiv"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1090 ../pidgin/plugins/convcolors.c:301
+#: ../pidgin/gtkimhtmltoolbar.c:1090
+#: ../pidgin/plugins/convcolors.c:301
 msgid "Underline"
 msgstr "Understrek"
 
@@ -16076,9 +15681,8 @@
 msgstr ""
 
 #: ../pidgin/gtkimhtmltoolbar.c:1093
-#, fuzzy
 msgid "Increase Font Size"
-msgstr "Ignorer skriftstørrelser"
+msgstr "Øk skriftstørrelse"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1094
 msgid "Decrease Font Size"
@@ -16089,12 +15693,10 @@
 msgstr "Skrifttype"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1097
-#, fuzzy
 msgid "Background Color"
 msgstr "Bakgrunnsfarge"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1098
-#, fuzzy
 msgid "Foreground Color"
 msgstr "Forgrunnsfarge"
 
@@ -16109,143 +15711,110 @@
 msgstr "Sett inn bilde"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1104
-#, fuzzy
 msgid "Insert Smiley"
 msgstr "Sett inn smilefjes"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1179
-#, fuzzy
+#: ../pidgin/gtkimhtmltoolbar.c:1180
 msgid "<b>_Bold</b>"
-msgstr "<b>_Passord:</b>"
-
-#: ../pidgin/gtkimhtmltoolbar.c:1180
-#, fuzzy
-msgid "<i>_Italic</i>"
-msgstr " <i>(irc-operatør)</i>"
+msgstr "<b>_Uthev</b>"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1181
-#, fuzzy
-msgid "<u>_Underline</u>"
-msgstr "Understrek"
+msgid "<i>_Italic</i>"
+msgstr "<i>_Kursiv</i>"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1182
-msgid "<span strikethrough='true'>Strikethrough</span>"
-msgstr ""
+msgid "<u>_Underline</u>"
+msgstr "<u>_Understrek</u>"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1183
-#, fuzzy
+msgid "<span strikethrough='true'>Strikethrough</span>"
+msgstr ""
+
+#: ../pidgin/gtkimhtmltoolbar.c:1184
 msgid "<span size='larger'>_Larger</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Gaim v%s</span>"
-
-#: ../pidgin/gtkimhtmltoolbar.c:1185
-#, fuzzy
+msgstr "<span size='larger'>_Større</span>"
+
+#: ../pidgin/gtkimhtmltoolbar.c:1186
 msgid "_Normal"
-msgstr "Normal"
-
-#: ../pidgin/gtkimhtmltoolbar.c:1187
+msgstr "_Normal"
+
+#: ../pidgin/gtkimhtmltoolbar.c:1188
 msgid "<span size='smaller'>_Smaller</span>"
-msgstr ""
+msgstr "<span size='smaller'>_Mindre</span>"
 
 #. If we want to show the formatting for the following items, we would
 #. * need to update them when formatting changes. The above items don't need
 #. * no updating nor nothin'
-#: ../pidgin/gtkimhtmltoolbar.c:1191
+#: ../pidgin/gtkimhtmltoolbar.c:1192
 #, fuzzy
 msgid "_Font face"
 msgstr "Skrifttype"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1192
-#, fuzzy
+#: ../pidgin/gtkimhtmltoolbar.c:1193
 msgid "Foreground _color"
-msgstr "Forgrunnsfarge"
-
-#: ../pidgin/gtkimhtmltoolbar.c:1193
-#, fuzzy
+msgstr "Forgrunns_farge"
+
+#: ../pidgin/gtkimhtmltoolbar.c:1194
 msgid "Bac_kground color"
-msgstr "Bakgrunnsfarge"
-
-#: ../pidgin/gtkimhtmltoolbar.c:1270
-#, fuzzy
-msgid "_Smiley"
-msgstr "Smil!"
-
-#: ../pidgin/gtkimhtmltoolbar.c:1276
-#, fuzzy
+msgstr "Ba_kgrunnsfarge"
+
+#: ../pidgin/gtkimhtmltoolbar.c:1271
 msgid "_Image"
-msgstr "Lagre bilde"
-
-#: ../pidgin/gtkimhtmltoolbar.c:1282
-#, fuzzy
+msgstr "_Bilde"
+
+#: ../pidgin/gtkimhtmltoolbar.c:1277
 msgid "_Link"
-msgstr "_Bli med i samtalegruppe"
-
-#: ../pidgin/gtkimhtmltoolbar.c:1288
+msgstr "_Lenke"
+
+#: ../pidgin/gtkimhtmltoolbar.c:1283
 msgid "_Horizontal rule"
 msgstr ""
 
+#: ../pidgin/gtkimhtmltoolbar.c:1305
+msgid "_Smile!"
+msgstr "_Smil!"
+
 #: ../pidgin/gtklog.c:293
 #, c-format
-msgid ""
-"Are you sure you want to permanently delete the log of the conversation with "
-"%s which started at %s?"
+msgid "Are you sure you want to permanently delete the log of the conversation with %s which started at %s?"
 msgstr ""
 
 #: ../pidgin/gtklog.c:304
 #, c-format
-msgid ""
-"Are you sure you want to permanently delete the log of the conversation in %"
-"s which started at %s?"
+msgid "Are you sure you want to permanently delete the log of the conversation in %s which started at %s?"
 msgstr ""
 
 #: ../pidgin/gtklog.c:309
 #, fuzzy, c-format
-msgid ""
-"Are you sure you want to permanently delete the system log which started at %"
-"s?"
+msgid "Are you sure you want to permanently delete the system log which started at %s?"
 msgstr "Er du sikker på at du vil slette \"%s\"?"
 
 #: ../pidgin/gtklog.c:453
-#, fuzzy, c-format
+#, c-format
 msgid "<span size='larger' weight='bold'>Conversation in %s on %s</span>"
-msgstr ""
-"<span weight=\"bold\" size=\"larger\">Du har e-post!</span>\n"
-"\n"
-"%s"
+msgstr "<span size='larger' weight='bold'>Samtale i %s på %s</span>"
 
 #: ../pidgin/gtklog.c:456
-#, fuzzy, c-format
+#, c-format
 msgid "<span size='larger' weight='bold'>Conversation with %s on %s</span>"
-msgstr ""
-"<span weight=\"bold\" size=\"larger\">Du har e-post!</span>\n"
-"\n"
-"%s"
+msgstr "<span size='larger' weight='bold'>Samtale med %s på %s</span>"
 
 #: ../pidgin/gtklog.c:503
 msgid "%B %Y"
-msgstr ""
+msgstr "%B %Y"
 
 #: ../pidgin/gtklog.c:550
-msgid ""
-"System events will only be logged if the \"Log all status changes to system "
-"log\" preference is enabled."
-msgstr ""
-"System hendelser vil bare bli logget om \"Logg alle status forandringer til "
-"system logg\" har blitt slått på."
+msgid "System events will only be logged if the \"Log all status changes to system log\" preference is enabled."
+msgstr "System hendelser vil bare bli logget om \"Logg alle status forandringer til system logg\" har blitt slått på."
 
 #: ../pidgin/gtklog.c:554
-msgid ""
-"Instant messages will only be logged if the \"Log all instant messages\" "
-"preference is enabled."
-msgstr ""
-"Direktemeldinger vil bare bli logget om \"Logg alle direktemeldinger\" har "
-"blitt slått på."
+msgid "Instant messages will only be logged if the \"Log all instant messages\" preference is enabled."
+msgstr "Direktemeldinger vil bare bli logget om \"Logg alle direktemeldinger\" har blitt slått på."
 
 #: ../pidgin/gtklog.c:557
 #, fuzzy
-msgid ""
-"Chats will only be logged if the \"Log all chats\" preference is enabled."
-msgstr ""
-"Samtaler vil bare bli logget om \"Logg alle samtaler\" har blitt slått på."
+msgid "Chats will only be logged if the \"Log all chats\" preference is enabled."
+msgstr "Samtaler vil bare bli logget om \"Logg alle samtaler\" har blitt slått på."
 
 #: ../pidgin/gtklog.c:561
 msgid "No logs were found"
@@ -16262,11 +15831,12 @@
 msgstr "Etter loggstørrelse"
 
 #: ../pidgin/gtklog.c:709
-#, fuzzy, c-format
+#, c-format
 msgid "Conversations in %s"
-msgstr "Samtaler med %s"
-
-#: ../pidgin/gtklog.c:717 ../pidgin/gtklog.c:779
+msgstr "Samtaler i %s"
+
+#: ../pidgin/gtklog.c:717
+#: ../pidgin/gtklog.c:779
 #, c-format
 msgid "Conversations with %s"
 msgstr "Samtaler med %s"
@@ -16276,9 +15846,9 @@
 msgstr "Systemlogg"
 
 #: ../pidgin/gtkmain.c:386
-#, fuzzy, c-format
+#, c-format
 msgid "%s %s. Try `%s -h' for more information.\n"
-msgstr "Gaim %s. Prøv '%s -h' for mer informasjon.\n"
+msgstr "%s %s. Prøv '%s -h' for mer informasjon.\n"
 
 #: ../pidgin/gtkmain.c:388
 #, c-format
@@ -16293,13 +15863,14 @@
 "  -n, --nologin       don't automatically login\n"
 "  -l, --login[=NAME]  automatically login (optional argument NAME specifies\n"
 "                      account(s) to use, separated by commas)\n"
+"  --display=DISPLAY   X display to use\n"
 "  -v, --version       display the current version and exit\n"
 msgstr ""
 
-#: ../pidgin/gtkmain.c:512
-#, c-format
-msgid ""
-"%s has segfaulted and attempted to dump a core file.\n"
+#: ../pidgin/gtkmain.c:516
+#, c-format
+msgid ""
+"%s %s has segfaulted and attempted to dump a core file.\n"
 "This is a bug in the software and has happened through\n"
 "no fault of your own.\n"
 "\n"
@@ -16320,59 +15891,54 @@
 
 #. Translators may want to transliterate the name.
 #. It is not to be translated.
-#: ../pidgin/gtkmain.c:699 ../pidgin/pidgin.h:51
-#, fuzzy
+#: ../pidgin/gtkmain.c:706
+#: ../pidgin/pidgin.h:51
 msgid "Pidgin"
-msgstr "Paging"
+msgstr "Pidgin"
 
 #: ../pidgin/gtknotify.c:349
-#, fuzzy
 msgid "Open All Messages"
-msgstr "Send beskjed"
+msgstr "Åpne alle beskjeder"
 
 #: ../pidgin/gtknotify.c:402
-#, fuzzy
 msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr ""
-"<span weight=\"bold\" size=\"larger\">Du har e-post!</span>\n"
-"\n"
-"%s"
-
-#: ../pidgin/gtknotify.c:540
+msgstr "<span weight=\"bold\" size=\"larger\">Du har fått e-post!</span>"
+
+#: ../pidgin/gtknotify.c:537
 #, c-format
 msgid "%s has %d new message."
 msgid_plural "%s has %d new messages."
 msgstr[0] "%s har %d ny beskjed."
 msgstr[1] "%s har %d nye beskjeder."
 
-#: ../pidgin/gtknotify.c:564
-#, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
-msgstr[0] ""
-msgstr[1] ""
+#: ../pidgin/gtknotify.c:562
+#, c-format
+msgid "<b>%d new e-mail.</b>"
+msgid_plural "<b>%d new e-mails.</b>"
+msgstr[0] "<b>%d ny e-post.</b>"
+msgstr[1] "<b>%d nye e-poster.</b>"
 
 #: ../pidgin/gtknotify.c:989
 #, fuzzy, c-format
 msgid "The browser command \"%s\" is invalid."
 msgstr "Nettleserkommandoen <b>%s</b> er ugyldig."
 
-#: ../pidgin/gtknotify.c:991 ../pidgin/gtknotify.c:1003
-#: ../pidgin/gtknotify.c:1016 ../pidgin/gtknotify.c:1144
+#: ../pidgin/gtknotify.c:991
+#: ../pidgin/gtknotify.c:1003
+#: ../pidgin/gtknotify.c:1016
+#: ../pidgin/gtknotify.c:1144
 msgid "Unable to open URL"
 msgstr "Kunne ikke åpne URL"
 
-#: ../pidgin/gtknotify.c:1001 ../pidgin/gtknotify.c:1014
+#: ../pidgin/gtknotify.c:1001
+#: ../pidgin/gtknotify.c:1014
 #, fuzzy, c-format
 msgid "Error launching \"%s\": %s"
 msgstr "Feil under starting av kommando: <b>%s</b>:%s"
 
 #: ../pidgin/gtknotify.c:1145
-msgid ""
-"The 'Manual' browser command has been chosen, but no command has been set."
-msgstr ""
-"Klarte ikke å starte en nettleser fordi 'Manuell' nettleserkommando er "
-"valgt, men ingen kommando for denne har blitt satt."
+msgid "The 'Manual' browser command has been chosen, but no command has been set."
+msgstr "Klarte ikke å starte en nettleser fordi 'Manuell' nettleserkommando er valgt, men ingen kommando for denne har blitt satt."
 
 #: ../pidgin/gtkplugin.c:265
 msgid "The following plugins will be unloaded."
@@ -16388,17 +15954,15 @@
 msgstr "Tillegg"
 
 #: ../pidgin/gtkplugin.c:400
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "%s%s<span weight=\"bold\">Written by:</span>\t%s\n"
 "<span weight=\"bold\">Website:</span>\t\t%s\n"
 "<span weight=\"bold\">Filename:</span>\t\t%s"
 msgstr ""
-"<span size=\"larger\">%s %s</span>\n"
-"\n"
-"<span weight=\"bold\">Skrevet av:</span>\t%s\n"
-"<span weight=\"bold\">Webside:</span>\t\t%s\n"
-"<span weight=\"bold\">Filnavn:</span>\t%s"
+"%s%s<span weight=\"bold\">Skrevet av:</span>\t%s\n"
+"<span weight=\"bold\">Hjemmeside:</span>\t\t%s\n"
+"<span weight=\"bold\">Filnavn:</span>\t\t%s"
 
 #: ../pidgin/gtkplugin.c:410
 #, c-format
@@ -16423,62 +15987,52 @@
 
 #. Create the "Pounce on Whom" frame.
 #: ../pidgin/gtkpounce.c:532
-#, fuzzy
 msgid "Pounce on Whom"
-msgstr "Varsling for"
+msgstr "Varsling for hvem"
 
 #: ../pidgin/gtkpounce.c:559
 msgid "_Buddy name:"
-msgstr "Kontaktnavn:"
+msgstr "_Kontaktnavn:"
 
 #: ../pidgin/gtkpounce.c:593
-#, fuzzy
 msgid "Si_gns on"
-msgstr "Pålo_gging"
+msgstr "Lo_gger på"
 
 #: ../pidgin/gtkpounce.c:595
-#, fuzzy
 msgid "Signs o_ff"
-msgstr "Logg _av"
+msgstr "Logger _av"
 
 #: ../pidgin/gtkpounce.c:597
-#, fuzzy
 msgid "Goes a_way"
-msgstr "Kontakt forsvinner"
+msgstr "Går _vekk"
 
 #: ../pidgin/gtkpounce.c:599
-#, fuzzy
 msgid "Ret_urns from away"
-msgstr "_Returnere fra fravær"
+msgstr "_Returnerer fra fravær"
 
 #: ../pidgin/gtkpounce.c:601
-#, fuzzy
 msgid "Becomes _idle"
-msgstr "%s har blitt inaktiv"
+msgstr "Blir _inaktiv"
 
 #: ../pidgin/gtkpounce.c:603
-#, fuzzy
 msgid "Is no longer i_dle"
-msgstr "%s er ikke lenger inaktiv"
+msgstr "Er ikke lenger i_naktiv"
 
 #: ../pidgin/gtkpounce.c:605
-#, fuzzy
 msgid "Starts _typing"
-msgstr "Venn s_tarter å skrive"
+msgstr "S_tarter å skrive"
 
 #: ../pidgin/gtkpounce.c:607
 msgid "P_auses while typing"
-msgstr ""
+msgstr "P_auser under skriving"
 
 #: ../pidgin/gtkpounce.c:609
-#, fuzzy
 msgid "Stops t_yping"
-msgstr "Venn slutter å skrive til deg"
+msgstr "Stopper å _skrive"
 
 #: ../pidgin/gtkpounce.c:611
-#, fuzzy
 msgid "Sends a _message"
-msgstr "Send _beskjed"
+msgstr "Sender en _beskjed"
 
 #: ../pidgin/gtkpounce.c:654
 #, fuzzy
@@ -16496,21 +16050,19 @@
 
 #: ../pidgin/gtkpounce.c:660
 msgid "E_xecute a command"
-msgstr "Kjør en kommando"
+msgstr "_Kjør en kommando"
 
 #: ../pidgin/gtkpounce.c:662
 msgid "P_lay a sound"
-msgstr "Spill av en lyd"
+msgstr "Spi_ll av en lyd"
 
 #: ../pidgin/gtkpounce.c:668
-#, fuzzy
 msgid "Brows_e..."
 msgstr "_Bla gjennom..."
 
 #: ../pidgin/gtkpounce.c:670
-#, fuzzy
 msgid "Br_owse..."
-msgstr "_Bla gjennom..."
+msgstr "Bla _gjennom..."
 
 #: ../pidgin/gtkpounce.c:671
 msgid "Pre_view"
@@ -16531,9 +16083,8 @@
 
 #: ../pidgin/gtkprefs.c:386
 #: ../pidgin/pixmaps/emotes/default/24/default.theme.in.h:1
-#, fuzzy
 msgid "Default"
-msgstr "Gnome-standard"
+msgstr "Forvalgt"
 
 #: ../pidgin/gtkprefs.c:517
 msgid "Smiley theme failed to unpack."
@@ -16541,15 +16092,11 @@
 
 #: ../pidgin/gtkprefs.c:644
 msgid "Install Theme"
-msgstr ""
+msgstr "Installer tema"
 
 #: ../pidgin/gtkprefs.c:697
-msgid ""
-"Select a smiley theme that you would like to use from the list below. New "
-"themes can be installed by dragging and dropping them onto the theme list."
-msgstr ""
-"Velg smilefjes-temaet du vil bruke fra listen nedenfor. Nye temaer kan "
-"installeres ved å dra og slippe dem over temalisten."
+msgid "Select a smiley theme that you would like to use from the list below. New themes can be installed by dragging and dropping them onto the theme list."
+msgstr "Velg smilefjes-temaet du vil bruke fra listen nedenfor. Nye temaer kan installeres ved å dra og slippe dem over temalisten."
 
 #: ../pidgin/gtkprefs.c:732
 msgid "Icon"
@@ -16565,28 +16112,26 @@
 msgstr "System-trayikon"
 
 #: ../pidgin/gtkprefs.c:899
-#, fuzzy
 msgid "On unread messages"
-msgstr "Send _beskjed"
+msgstr "Ved uleste beskjeder"
 
 #: ../pidgin/gtkprefs.c:904
-#, fuzzy
 msgid "Conversation Window Hiding"
 msgstr "Samtalevinduer for direktemeldinger"
 
 #: ../pidgin/gtkprefs.c:905
-#, fuzzy
 msgid "_Hide new IM conversations:"
-msgstr "Lukk samtalen"
-
-#: ../pidgin/gtkprefs.c:908 ../pidgin/gtkprefs.c:1944
+msgstr "_Gjem nye direktemeldingssamtaler"
+
+#: ../pidgin/gtkprefs.c:908
+#: ../pidgin/gtkprefs.c:1946
 msgid "When away"
 msgstr "Når fraværende"
 
 #. All the tab options!
 #: ../pidgin/gtkprefs.c:916
 msgid "Tabs"
-msgstr ""
+msgstr "Faner"
 
 #: ../pidgin/gtkprefs.c:918
 msgid "Show IMs and chats in _tabbed windows"
@@ -16597,9 +16142,8 @@
 msgstr "Vis _lukkeknapp på faner"
 
 #: ../pidgin/gtkprefs.c:935
-#, fuzzy
 msgid "_Placement:"
-msgstr "ExtPlacement"
+msgstr "_Plassering"
 
 #: ../pidgin/gtkprefs.c:937
 msgid "Top"
@@ -16626,196 +16170,185 @@
 msgstr ""
 
 #: ../pidgin/gtkprefs.c:950
-#, fuzzy
 msgid "N_ew conversations:"
-msgstr "Lukk samtalen"
+msgstr "Ny_e samtaler:"
 
 #: ../pidgin/gtkprefs.c:995
-#, fuzzy
 msgid "Show _formatting on incoming messages"
-msgstr "Vis formateringsverktøylinje"
-
-#: ../pidgin/gtkprefs.c:998
-#, fuzzy
-msgid "Show _detailed information"
-msgstr "Profilinformasjon"
+msgstr "Vis _formateringsverktøy på innkommende beskjeder"
+
+#: ../pidgin/gtkprefs.c:997
+msgid "Close IMs immediately when the tab is closed"
+msgstr ""
 
 #: ../pidgin/gtkprefs.c:1000
+msgid "Show _detailed information"
+msgstr "Vis _detaljert informasjon"
+
+#: ../pidgin/gtkprefs.c:1002
 msgid "Enable buddy ic_on animation"
 msgstr "Slå på _animasjoner i kontaktikoner"
 
-#: ../pidgin/gtkprefs.c:1007
+#: ../pidgin/gtkprefs.c:1009
 msgid "_Notify buddies that you are typing to them"
-msgstr "Varsle kontakter når skriver til dem"
-
-#: ../pidgin/gtkprefs.c:1010
-#, fuzzy
+msgstr "_Varsle kontakter når skriver til dem"
+
+#: ../pidgin/gtkprefs.c:1012
 msgid "Highlight _misspelled words"
-msgstr "Marker stavefeil"
-
-#: ../pidgin/gtkprefs.c:1014
+msgstr "Marker _feilstavede ord"
+
+#: ../pidgin/gtkprefs.c:1016
 msgid "Use smooth-scrolling"
 msgstr ""
 
-#: ../pidgin/gtkprefs.c:1017
-#, fuzzy
-msgid "F_lash window when IMs are received"
-msgstr "_Blink vinduet når nye beskjeder mottas"
-
 #: ../pidgin/gtkprefs.c:1019
-#, fuzzy
+msgid "F_lash window when IMs are received"
+msgstr "B_link vinduet når nye direktemeldinger mottas"
+
+#: ../pidgin/gtkprefs.c:1021
 msgid "Minimi_ze new conversation windows"
-msgstr "Samtalevinduer for direktemeldinger"
-
-#: ../pidgin/gtkprefs.c:1023
-#, fuzzy
+msgstr "Mini_mer nye samtalevinduer"
+
+#: ../pidgin/gtkprefs.c:1025
 msgid "Font"
 msgstr "Skrifttype"
 
-#: ../pidgin/gtkprefs.c:1025
+#: ../pidgin/gtkprefs.c:1027
 msgid "Use document font from _theme"
 msgstr ""
 
-#: ../pidgin/gtkprefs.c:1027
-msgid "Use font from _theme"
-msgstr ""
-
 #: ../pidgin/gtkprefs.c:1029
+msgid "Use font from _theme"
+msgstr ""
+
+#: ../pidgin/gtkprefs.c:1031
 #, fuzzy
 msgid "Conversation _font:"
 msgstr "Samtaler"
 
-#: ../pidgin/gtkprefs.c:1043
+#: ../pidgin/gtkprefs.c:1045
 msgid "Default Formatting"
 msgstr "Standardformatering"
 
-#: ../pidgin/gtkprefs.c:1062
-#, fuzzy
-msgid ""
-"This is how your outgoing message text will appear when you use protocols "
-"that support formatting."
-msgstr ""
-"Slik vil dine utgående meldinger se ut når du bruker protokoller som støtter "
-"formatering :)"
-
-#: ../pidgin/gtkprefs.c:1128
-#, fuzzy
+#: ../pidgin/gtkprefs.c:1064
+#, fuzzy
+msgid "This is how your outgoing message text will appear when you use protocols that support formatting."
+msgstr "Slik vil dine utgående meldinger se ut når du bruker protokoller som støtter formatering :)"
+
+#: ../pidgin/gtkprefs.c:1130
 msgid "ST_UN server:"
-msgstr "_Tjener:"
-
-#: ../pidgin/gtkprefs.c:1140
+msgstr "ST_UN-tjener:"
+
+#: ../pidgin/gtkprefs.c:1142
 msgid "<span style=\"italic\">Example: stunserver.org</span>"
-msgstr ""
-
-#: ../pidgin/gtkprefs.c:1144
-#, fuzzy
+msgstr "<span style=\"italic\">Eksempel: stunserver.org</span>"
+
+#: ../pidgin/gtkprefs.c:1146
 msgid "_Autodetect IP address"
 msgstr "Finn IP-adresse _automatisk"
 
-#: ../pidgin/gtkprefs.c:1153
+#: ../pidgin/gtkprefs.c:1155
 msgid "Public _IP:"
-msgstr "Offentlig _IP (ved NAT):"
-
-#: ../pidgin/gtkprefs.c:1182
+msgstr "Offentlig _IP:"
+
+#: ../pidgin/gtkprefs.c:1184
 msgid "Ports"
 msgstr "Porter"
 
-#: ../pidgin/gtkprefs.c:1185
+#: ../pidgin/gtkprefs.c:1187
 msgid "_Manually specify range of ports to listen on"
 msgstr "_Manuellt spesifiser et intervall av porter å lytte på"
 
-#: ../pidgin/gtkprefs.c:1188
-#, fuzzy
+#: ../pidgin/gtkprefs.c:1190
 msgid "_Start port:"
 msgstr "_Startport:"
 
-#: ../pidgin/gtkprefs.c:1195
-#, fuzzy
+#: ../pidgin/gtkprefs.c:1197
 msgid "_End port:"
 msgstr "_Sluttport:"
 
-#: ../pidgin/gtkprefs.c:1203
+#: ../pidgin/gtkprefs.c:1205
 msgid "Proxy Server"
 msgstr "Proxytjener"
 
-#: ../pidgin/gtkprefs.c:1207
+#: ../pidgin/gtkprefs.c:1209
 msgid "No proxy"
 msgstr "Ingen proxy"
 
-#: ../pidgin/gtkprefs.c:1263
+#: ../pidgin/gtkprefs.c:1265
 msgid "_User:"
 msgstr "_Bruker:"
 
-#: ../pidgin/gtkprefs.c:1328
+#: ../pidgin/gtkprefs.c:1330
 msgid "Seamonkey"
-msgstr ""
-
-#: ../pidgin/gtkprefs.c:1329
+msgstr "Seamonkey"
+
+#: ../pidgin/gtkprefs.c:1331
 msgid "Opera"
 msgstr "Opera"
 
-#: ../pidgin/gtkprefs.c:1330
+#: ../pidgin/gtkprefs.c:1332
 msgid "Netscape"
 msgstr "Netscape"
 
-#: ../pidgin/gtkprefs.c:1331
+#: ../pidgin/gtkprefs.c:1333
 msgid "Mozilla"
 msgstr "Mozilla"
 
-#: ../pidgin/gtkprefs.c:1332
+#: ../pidgin/gtkprefs.c:1334
 msgid "Konqueror"
 msgstr "Konqueror"
 
-#: ../pidgin/gtkprefs.c:1333
+#: ../pidgin/gtkprefs.c:1335
 #, fuzzy
 msgid "GNOME Default"
 msgstr "Gnome-standard"
 
-#: ../pidgin/gtkprefs.c:1334
+#: ../pidgin/gtkprefs.c:1336
 msgid "Galeon"
 msgstr "Galeon"
 
-#: ../pidgin/gtkprefs.c:1335
+#: ../pidgin/gtkprefs.c:1337
 msgid "Firefox"
 msgstr "Firefox"
 
-#: ../pidgin/gtkprefs.c:1336
+#: ../pidgin/gtkprefs.c:1338
 msgid "Firebird"
 msgstr "Firebird"
 
-#: ../pidgin/gtkprefs.c:1337
+#: ../pidgin/gtkprefs.c:1339
 msgid "Epiphany"
 msgstr "Epiphany"
 
-#: ../pidgin/gtkprefs.c:1346
+#: ../pidgin/gtkprefs.c:1348
 msgid "Manual"
 msgstr "Egendefinert"
 
-#: ../pidgin/gtkprefs.c:1399
+#: ../pidgin/gtkprefs.c:1401
 msgid "Browser Selection"
 msgstr "Valg av nettleser"
 
-#: ../pidgin/gtkprefs.c:1403
+#: ../pidgin/gtkprefs.c:1405
 msgid "_Browser:"
 msgstr "_Nettleser:"
 
-#: ../pidgin/gtkprefs.c:1411
+#: ../pidgin/gtkprefs.c:1413
 msgid "_Open link in:"
 msgstr "_Åpne lenke i:"
 
-#: ../pidgin/gtkprefs.c:1413
+#: ../pidgin/gtkprefs.c:1415
 msgid "Browser default"
 msgstr "Standard for nettleser"
 
-#: ../pidgin/gtkprefs.c:1414
+#: ../pidgin/gtkprefs.c:1416
 msgid "Existing window"
 msgstr "Eksisterende vindu"
 
-#: ../pidgin/gtkprefs.c:1416
+#: ../pidgin/gtkprefs.c:1418
 msgid "New tab"
-msgstr "Ny tab"
-
-#: ../pidgin/gtkprefs.c:1430
+msgstr "Ny fane"
+
+#: ../pidgin/gtkprefs.c:1432
 #, c-format
 msgid ""
 "_Manual:\n"
@@ -16824,72 +16357,64 @@
 "_Egendefinert:\n"
 "(%s for URL)"
 
-#: ../pidgin/gtkprefs.c:1470
-#, fuzzy
+#: ../pidgin/gtkprefs.c:1472
 msgid "Log _format:"
 msgstr "Logg_format:"
 
-#: ../pidgin/gtkprefs.c:1475
-#, fuzzy
-msgid "Log all _instant messages"
-msgstr "Logg alle direktemeldinger"
-
 #: ../pidgin/gtkprefs.c:1477
-msgid "Log all c_hats"
-msgstr "Logg alle samtaler"
+msgid "Log all _instant messages"
+msgstr "Logg alle d_irektemeldinger"
 
 #: ../pidgin/gtkprefs.c:1479
+msgid "Log all c_hats"
+msgstr "Logg alle s_amtaler"
+
+#: ../pidgin/gtkprefs.c:1481
 msgid "Log all _status changes to system log"
-msgstr "Logg alle status endinger til systemlogg"
-
-#: ../pidgin/gtkprefs.c:1625
+msgstr "Logg alle _status endinger til systemlogg"
+
+#: ../pidgin/gtkprefs.c:1627
 msgid "Sound Selection"
 msgstr "Lydvalg"
 
-#: ../pidgin/gtkprefs.c:1635
-#, fuzzy, c-format
-msgid "Quietest"
-msgstr "Avslutt"
-
 #: ../pidgin/gtkprefs.c:1637
-#, fuzzy, c-format
-msgid "Quieter"
-msgstr "Avslutt"
+msgid "Quietest"
+msgstr "Stillest"
 
 #: ../pidgin/gtkprefs.c:1639
-#, fuzzy, c-format
+msgid "Quieter"
+msgstr "Stillere"
+
+#: ../pidgin/gtkprefs.c:1641
 msgid "Quiet"
-msgstr "Avslutt"
-
-#: ../pidgin/gtkprefs.c:1643
-#, fuzzy, c-format
-msgid "Loud"
-msgstr "Last"
+msgstr "Stille"
 
 #: ../pidgin/gtkprefs.c:1645
-#, fuzzy, c-format
-msgid "Louder"
-msgstr "time"
+msgid "Loud"
+msgstr "Høy"
 
 #: ../pidgin/gtkprefs.c:1647
-#, fuzzy, c-format
+msgid "Louder"
+msgstr "Høyere"
+
+#: ../pidgin/gtkprefs.c:1649
 msgid "Loudest"
-msgstr "Lyder"
-
-#: ../pidgin/gtkprefs.c:1713
+msgstr "Høyest"
+
+#: ../pidgin/gtkprefs.c:1715
 msgid "_Method:"
 msgstr "_Metode:"
 
-#: ../pidgin/gtkprefs.c:1715
+#: ../pidgin/gtkprefs.c:1717
 msgid "Console beep"
 msgstr "Konsollpip"
 
-#: ../pidgin/gtkprefs.c:1722
+#: ../pidgin/gtkprefs.c:1724
 #, fuzzy
 msgid "No sounds"
 msgstr "Lyder"
 
-#: ../pidgin/gtkprefs.c:1730
+#: ../pidgin/gtkprefs.c:1732
 #, c-format
 msgid ""
 "Sound c_ommand:\n"
@@ -16898,91 +16423,85 @@
 "_Program for lydavspilling\n"
 "(%s for filnavn)"
 
-#
-#: ../pidgin/gtkprefs.c:1757
+#: ../pidgin/gtkprefs.c:1759
 msgid "Sounds when conversation has _focus"
 msgstr "Lyder når samtalevinduet har _fokus"
 
-#: ../pidgin/gtkprefs.c:1759
-#, fuzzy
+#: ../pidgin/gtkprefs.c:1761
 msgid "Enable sounds:"
-msgstr "Feilet."
-
-#: ../pidgin/gtkprefs.c:1770
+msgstr "Aktiver lyder:"
+
+#: ../pidgin/gtkprefs.c:1772
 msgid "Volume:"
-msgstr ""
-
-#: ../pidgin/gtkprefs.c:1850
+msgstr "Volum:"
+
+#: ../pidgin/gtkprefs.c:1852
 msgid "Play"
 msgstr "Spill av"
 
-#: ../pidgin/gtkprefs.c:1927
+#: ../pidgin/gtkprefs.c:1929
 #, fuzzy
 msgid "_Report idle time:"
 msgstr "Vis inaktiv tid"
 
-#: ../pidgin/gtkprefs.c:1932
+#: ../pidgin/gtkprefs.c:1934
 msgid "Based on keyboard or mouse use"
 msgstr ""
 
-#: ../pidgin/gtkprefs.c:1941
+#: ../pidgin/gtkprefs.c:1943
 msgid "_Auto-reply:"
 msgstr "_Automatisk svar"
 
-#: ../pidgin/gtkprefs.c:1945
-#, fuzzy
+#: ../pidgin/gtkprefs.c:1947
 msgid "When both away and idle"
-msgstr "Når fraværende og inaktiv"
+msgstr "Når både fraværende og inaktiv"
 
 #. Auto-away stuff
-#: ../pidgin/gtkprefs.c:1951
+#: ../pidgin/gtkprefs.c:1953
 msgid "Auto-away"
 msgstr "Automatisk fraværsmarkering"
 
-#: ../pidgin/gtkprefs.c:1953
-#, fuzzy
+#: ../pidgin/gtkprefs.c:1955
 msgid "Change status when _idle"
-msgstr "Sett som borte når inaktiv"
-
-#: ../pidgin/gtkprefs.c:1957
+msgstr "Endre status hvis _inaktiv"
+
+#: ../pidgin/gtkprefs.c:1959
 #, fuzzy
 msgid "_Minutes before becoming idle:"
 msgstr "Antall minutter før fraværsmarkert:"
 
-#: ../pidgin/gtkprefs.c:1965
-#, fuzzy
+#: ../pidgin/gtkprefs.c:1967
 msgid "Change _status to:"
-msgstr "Endre adresse til:"
+msgstr "Endre _status til:"
 
 #. Signon status stuff
-#: ../pidgin/gtkprefs.c:1986
+#: ../pidgin/gtkprefs.c:1988
 msgid "Status at Startup"
-msgstr ""
-
-#: ../pidgin/gtkprefs.c:1988
+msgstr "Status ved oppstart"
+
+#: ../pidgin/gtkprefs.c:1990
 msgid "Use status from last _exit at startup"
 msgstr ""
 
-#: ../pidgin/gtkprefs.c:1994
+#: ../pidgin/gtkprefs.c:1996
 msgid "Status to a_pply at startup:"
 msgstr ""
 
-#: ../pidgin/gtkprefs.c:2032
+#: ../pidgin/gtkprefs.c:2034
 msgid "Interface"
 msgstr "Grensesnitt"
 
-#: ../pidgin/gtkprefs.c:2034
+#: ../pidgin/gtkprefs.c:2036
 msgid "Smiley Themes"
 msgstr "Smilefjes-tema"
 
-#: ../pidgin/gtkprefs.c:2041
+#: ../pidgin/gtkprefs.c:2043
 msgid "Browser"
 msgstr "Nettleser"
 
-#: ../pidgin/gtkprefs.c:2045
-#, fuzzy
+#: ../pidgin/gtkprefs.c:2047
 msgid "Status / Idle"
-msgstr "Borte / inaktiv"
+msgstr "Status / inaktiv"
 
 #: ../pidgin/gtkprivacy.c:80
 msgid "Allow all users to contact me"
@@ -17017,7 +16536,8 @@
 msgid "Set privacy for:"
 msgstr "Sett sikkerhet for:"
 
-#: ../pidgin/gtkprivacy.c:557 ../pidgin/gtkprivacy.c:574
+#: ../pidgin/gtkprivacy.c:557
+#: ../pidgin/gtkprivacy.c:574
 msgid "Permit User"
 msgstr "Tillat bruker"
 
@@ -17027,13 +16547,12 @@
 
 #: ../pidgin/gtkprivacy.c:559
 msgid "Please enter the name of the user you wish to be able to contact you."
-msgstr ""
-"Vennligst skriv inn navnet på brukeren som du vil skal kunne kontakte deg."
-
-#: ../pidgin/gtkprivacy.c:562 ../pidgin/gtkprivacy.c:578
-#, fuzzy
+msgstr "Vennligst skriv inn navnet på brukeren som du vil skal kunne kontakte deg."
+
+#: ../pidgin/gtkprivacy.c:562
+#: ../pidgin/gtkprivacy.c:578
 msgid "_Permit"
-msgstr "Tillat"
+msgstr "_Tillat"
 
 #: ../pidgin/gtkprivacy.c:568
 #, c-format
@@ -17045,7 +16564,8 @@
 msgid "Are you sure you wish to allow %s to contact you?"
 msgstr "Er du sikker på at du vil at %s skal kunne kontakte deg?"
 
-#: ../pidgin/gtkprivacy.c:599 ../pidgin/gtkprivacy.c:613
+#: ../pidgin/gtkprivacy.c:599
+#: ../pidgin/gtkprivacy.c:613
 msgid "Block User"
 msgstr "Blokker bruker"
 
@@ -17081,16 +16601,16 @@
 
 #: ../pidgin/gtkrequest.c:1511
 msgid "Overwrite"
-msgstr ""
+msgstr "Overskriv"
 
 #: ../pidgin/gtkrequest.c:1512
 msgid "Choose New Name"
 msgstr ""
 
-#: ../pidgin/gtkrequest.c:1650 ../pidgin/gtkrequest.c:1664
-#, fuzzy
+#: ../pidgin/gtkrequest.c:1650
+#: ../pidgin/gtkrequest.c:1664
 msgid "Select Folder..."
-msgstr "Velg tekstfarge"
+msgstr "Velg mappe..."
 
 #. Create the window.
 #: ../pidgin/gtkroomlist.c:375
@@ -17104,9 +16624,8 @@
 
 #. add button
 #: ../pidgin/gtkroomlist.c:451
-#, fuzzy
 msgid "_Add Chat"
-msgstr "Legg til samtale"
+msgstr "_Legg til samtale"
 
 #: ../pidgin/gtksavedstatuses.c:337
 #, fuzzy
@@ -17114,29 +16633,27 @@
 msgstr "Er du sikker på at du vil slette %s?"
 
 #. Use button
-#: ../pidgin/gtksavedstatuses.c:620 ../pidgin/gtksavedstatuses.c:1266
-#, fuzzy
+#: ../pidgin/gtksavedstatuses.c:620
+#: ../pidgin/gtksavedstatuses.c:1266
 msgid "_Use"
-msgstr "Bruk"
+msgstr "_Bruk"
 
 #: ../pidgin/gtksavedstatuses.c:780
 msgid "Title already in use.  You must choose a unique title."
 msgstr "Tittel allerede i bruk. Du må velge en unik tittel."
 
 #: ../pidgin/gtksavedstatuses.c:970
-#, fuzzy
 msgid "Different"
-msgstr "Avdeling"
+msgstr "Forskjellig"
 
 #: ../pidgin/gtksavedstatuses.c:1159
-#, fuzzy
 msgid "_Title:"
-msgstr "Tittel"
-
-#: ../pidgin/gtksavedstatuses.c:1178 ../pidgin/gtksavedstatuses.c:1497
-#, fuzzy
+msgstr "_Tittel"
+
+#: ../pidgin/gtksavedstatuses.c:1178
+#: ../pidgin/gtksavedstatuses.c:1497
 msgid "_Status:"
-msgstr "Status:"
+msgstr "_Status:"
 
 #. Different status message expander
 #: ../pidgin/gtksavedstatuses.c:1210
@@ -17149,9 +16666,9 @@
 msgstr "Lagre & bruk"
 
 #: ../pidgin/gtksavedstatuses.c:1480
-#, fuzzy, c-format
+#, c-format
 msgid "Status for %s"
-msgstr "Status: %s"
+msgstr "Status for %s"
 
 #: ../pidgin/gtkstatusbox.c:664
 #, fuzzy
@@ -17160,55 +16677,54 @@
 
 #: ../pidgin/gtkutils.c:632
 msgid "Google Talk"
-msgstr ""
-
-#: ../pidgin/gtkutils.c:1399 ../pidgin/gtkutils.c:1422
+msgstr "Google Talk"
+
+#: ../pidgin/gtkutils.c:1399
+#: ../pidgin/gtkutils.c:1422
 #, fuzzy, c-format
 msgid "The following error has occurred loading %s: %s"
 msgstr "En ukjent påloggingsfeil har inntruffet: %s."
 
-#: ../pidgin/gtkutils.c:1402 ../pidgin/gtkutils.c:1424
+#: ../pidgin/gtkutils.c:1402
+#: ../pidgin/gtkutils.c:1424
 #, fuzzy
 msgid "Failed to load image"
 msgstr "Klarte ikke å lagre bilde: %s\n"
 
 #: ../pidgin/gtkutils.c:1498
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot send folder %s."
-msgstr "Kan ikke sende fil"
+msgstr "Kan ikke sende mappe %s"
 
 #: ../pidgin/gtkutils.c:1499
 #, fuzzy, c-format
-msgid ""
-"%s cannot transfer a folder. You will need to send the files within "
-"individually."
+msgid "%s cannot transfer a folder. You will need to send the files within individually."
 msgstr "Gaim kan ikke overføre en mappe. Du må sende filene inni hver for seg"
 
-#: ../pidgin/gtkutils.c:1531 ../pidgin/gtkutils.c:1543
+#: ../pidgin/gtkutils.c:1531
+#: ../pidgin/gtkutils.c:1543
 #: ../pidgin/gtkutils.c:1550
 #, fuzzy
 msgid "You have dragged an image"
 msgstr "Du har tastet inn et ugyldig brukernavn"
 
 #: ../pidgin/gtkutils.c:1532
-msgid ""
-"You can send this image as a file transfer, embed it into this message, or "
-"use it as the buddy icon for this user."
-msgstr ""
-"Du kan sende dette bildet som filoverføring, sett det inn i denne bekjeden "
-"eller bruk det som kompis ikon for denne brukeren."
-
-#: ../pidgin/gtkutils.c:1538 ../pidgin/gtkutils.c:1558
+msgid "You can send this image as a file transfer, embed it into this message, or use it as the buddy icon for this user."
+msgstr "Du kan sende dette bildet som filoverføring, sett det inn i denne bekjeden eller bruk det som kompis ikon for denne brukeren."
+
+#: ../pidgin/gtkutils.c:1538
+#: ../pidgin/gtkutils.c:1558
 #, fuzzy
 msgid "Set as buddy icon"
 msgstr "Vis kontaktikoner"
 
-#: ../pidgin/gtkutils.c:1539 ../pidgin/gtkutils.c:1559
-#, fuzzy
+#: ../pidgin/gtkutils.c:1539
+#: ../pidgin/gtkutils.c:1559
 msgid "Send image file"
-msgstr "Send beskjed"
-
-#: ../pidgin/gtkutils.c:1540 ../pidgin/gtkutils.c:1559
+msgstr "Send bildefil"
+
+#: ../pidgin/gtkutils.c:1540
+#: ../pidgin/gtkutils.c:1559
 #, fuzzy
 msgid "Insert in message"
 msgstr "Sett inn bilde"
@@ -17220,20 +16736,12 @@
 
 #: ../pidgin/gtkutils.c:1551
 #, fuzzy
-msgid ""
-"You can send this image as a file transfer, or use it as the buddy icon for "
-"this user."
-msgstr ""
-"Du kan sende dette bildet som filoverføring, sett det inn i denne bekjeden "
-"eller bruk det som kompis ikon for denne brukeren."
+msgid "You can send this image as a file transfer, or use it as the buddy icon for this user."
+msgstr "Du kan sende dette bildet som filoverføring, sett det inn i denne bekjeden eller bruk det som kompis ikon for denne brukeren."
 
 #: ../pidgin/gtkutils.c:1552
-msgid ""
-"You can insert this image into this message, or use it as the buddy icon for "
-"this user"
-msgstr ""
-"Du kan sette inn dette bildet i beskjed eller bruke det som kompis ikon for "
-"denne brukeren"
+msgid "You can insert this image into this message, or use it as the buddy icon for this user"
+msgstr "Du kan sette inn dette bildet i beskjed eller bruke det som kompis ikon for denne brukeren"
 
 #. I don't know if we really want to do anything here.  Most of the desktop item types are crap like
 #. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really
@@ -17246,9 +16754,7 @@
 msgstr "Kan ikke sende fil"
 
 #: ../pidgin/gtkutils.c:1610
-msgid ""
-"You dragged a desktop launcher. Most likely you wanted to send whatever this "
-"launcher points to instead of this launcher itself."
+msgid "You dragged a desktop launcher. Most likely you wanted to send whatever this launcher points to instead of this launcher itself."
 msgstr ""
 
 #: ../pidgin/gtkutils.c:2345
@@ -17284,33 +16790,29 @@
 
 #: ../pidgin/gtkutils.c:2793
 #, c-format
-msgid ""
-"Failed to load image '%s': reason not known, probably a corrupt image file"
-msgstr ""
-
-#: ../pidgin/gtkwhiteboard.c:754 ../pidgin/gtkwhiteboard.c:773
-#, fuzzy
+msgid "Failed to load image '%s': reason not known, probably a corrupt image file"
+msgstr ""
+
+#: ../pidgin/gtkwhiteboard.c:754
+#: ../pidgin/gtkwhiteboard.c:773
 msgid "Save File"
-msgstr "Lagre fil..."
+msgstr "Lagre fil"
 
 #: ../pidgin/gtkwhiteboard.c:861
-#, fuzzy
 msgid "Select color"
-msgstr "Velg tekstfarge"
+msgstr "Velg farge"
 
 #: ../pidgin/pidginstock.c:87
 msgid "_Alias"
 msgstr "_Alias"
 
 #: ../pidgin/pidginstock.c:89
-#, fuzzy
 msgid "Close _tabs"
-msgstr "L_ukk"
+msgstr "Lukk _faner"
 
 #: ../pidgin/pidginstock.c:91
-#, fuzzy
 msgid "_Get Info"
-msgstr "Hent informasjon"
+msgstr "_Hent informasjon"
 
 #: ../pidgin/pidginstock.c:92
 msgid "_Invite"
@@ -17337,16 +16839,16 @@
 msgstr ""
 
 #: ../pidgin/pixmaps/emotes/none/none.theme.in.h:3
-#, fuzzy
 msgid "none"
-msgstr "Alle"
+msgstr "ingen"
 
 #: ../pidgin/plugins/cap/cap.c:450
 #, fuzzy
 msgid "Display Statistics"
 msgstr "Vis advarsler om tidsavbrudd"
 
-#: ../pidgin/plugins/cap/cap.c:462 ../pidgin/plugins/cap/cap.c:465
+#: ../pidgin/plugins/cap/cap.c:462
+#: ../pidgin/plugins/cap/cap.c:465
 #, fuzzy
 msgid "Response Probability:"
 msgstr "Svaret gikk tapt"
@@ -17361,9 +16863,10 @@
 msgid "Maximum response timeout:"
 msgstr ""
 
-#: ../pidgin/plugins/cap/cap.c:817 ../pidgin/plugins/cap/cap.c:824
-#: ../pidgin/plugins/cap/cap.c:831 ../pidgin/plugins/timestamp.c:150
-#, fuzzy
+#: ../pidgin/plugins/cap/cap.c:817
+#: ../pidgin/plugins/cap/cap.c:824
+#: ../pidgin/plugins/cap/cap.c:831
+#: ../pidgin/plugins/timestamp.c:150
 msgid "minutes"
 msgstr "minutter"
 
@@ -17395,20 +16898,16 @@
 
 #. *  summary
 #: ../pidgin/plugins/cap/cap.c:939
-msgid ""
-"The contact availability plugin (cap) is used to display statistical "
-"information about buddies in a users contact list."
+msgid "The contact availability plugin (cap) is used to display statistical information about buddies in a users contact list."
 msgstr ""
 
 #: ../pidgin/plugins/contact_priority.c:61
-#, fuzzy
 msgid "Buddy is idle"
-msgstr "Kontakt er inaktiv:"
+msgstr "Kontakt er inaktiv"
 
 #: ../pidgin/plugins/contact_priority.c:62
-#, fuzzy
 msgid "Buddy is away"
-msgstr "Kontakt er borte:"
+msgstr "Kontakt er borte"
 
 #: ../pidgin/plugins/contact_priority.c:63
 #, fuzzy
@@ -17417,23 +16916,19 @@
 
 #. Not used yet.
 #: ../pidgin/plugins/contact_priority.c:66
-#, fuzzy
 msgid "Buddy is mobile"
-msgstr "Kontakt er inaktiv:"
+msgstr "Kontakt er mobil"
 
 #: ../pidgin/plugins/contact_priority.c:68
-#, fuzzy
 msgid "Buddy is offline"
-msgstr "Kontakt er avlogget:"
+msgstr "Kontakt er avlogget"
 
 #: ../pidgin/plugins/contact_priority.c:90
 msgid "Point values to use when..."
 msgstr "Verdier for bruk når..."
 
 #: ../pidgin/plugins/contact_priority.c:118
-msgid ""
-"The buddy with the <i>largest score</i> is the buddy who will have priority "
-"in the contact.\n"
+msgid "The buddy with the <i>largest score</i> is the buddy who will have priority in the contact.\n"
 msgstr ""
 
 #: ../pidgin/plugins/contact_priority.c:125
@@ -17459,26 +16954,21 @@
 #. *< version
 #. *< summary
 #: ../pidgin/plugins/contact_priority.c:190
-msgid ""
-"Allows for controlling the values associated with different buddy states."
-msgstr ""
-"Lar deg kontrollere verdiene for de ulike tilstandene kontakter kan være i."
+msgid "Allows for controlling the values associated with different buddy states."
+msgstr "Lar deg kontrollere verdiene for de ulike tilstandene kontakter kan være i."
 
 #. *< description
 #: ../pidgin/plugins/contact_priority.c:192
-msgid ""
-"Allows for changing the point values of idle/away/offline states for buddies "
-"in contact priority computations."
-msgstr ""
-"Lar deg endre vektingen for inaktiv/borte/avlogget for kontakter i "
-"kontaktprioritetsutregninger."
+msgid "Allows for changing the point values of idle/away/offline states for buddies in contact priority computations."
+msgstr "Lar deg endre vektingen for inaktiv/borte/avlogget for kontakter i kontaktprioritetsutregninger."
 
 #: ../pidgin/plugins/convcolors.c:23
 #, fuzzy
 msgid "Conversation Colors"
 msgstr "/Samtale/L_ukk"
 
-#: ../pidgin/plugins/convcolors.c:25 ../pidgin/plugins/convcolors.c:26
+#: ../pidgin/plugins/convcolors.c:25
+#: ../pidgin/plugins/convcolors.c:26
 #, fuzzy
 msgid "Customize colors in the conversation window"
 msgstr "Samtalevinduer for direktemeldinger"
@@ -17499,19 +16989,18 @@
 msgstr "Send beskjed"
 
 #: ../pidgin/plugins/convcolors.c:85
-#, fuzzy
 msgid "Sent Messages"
-msgstr "Send beskjed"
+msgstr "Sendte beskjeder"
 
 #: ../pidgin/plugins/convcolors.c:86
-#, fuzzy
 msgid "Received Messages"
-msgstr "Send beskjed"
-
-#: ../pidgin/plugins/convcolors.c:210 ../pidgin/plugins/pidginrc.c:251
-#, fuzzy, c-format
+msgstr "Mottatte beskjeder"
+
+#: ../pidgin/plugins/convcolors.c:210
+#: ../pidgin/plugins/pidginrc.c:245
+#, c-format
 msgid "Select Color for %s"
-msgstr "Velg tekstfarge"
+msgstr "Velg farge for %s"
 
 #: ../pidgin/plugins/convcolors.c:310
 #, fuzzy
@@ -17537,9 +17026,7 @@
 
 #. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above
 #: ../pidgin/plugins/extplacement.c:105
-msgid ""
-"Note: The preference for \"New conversations\" must be set to \"By "
-"conversation count\"."
+msgid "Note: The preference for \"New conversations\" must be set to \"By conversation count\"."
 msgstr ""
 
 #: ../pidgin/plugins/extplacement.c:111
@@ -17548,9 +17035,7 @@
 
 #: ../pidgin/plugins/extplacement.c:117
 msgid "Separate IM and Chat windows when placing by number"
-msgstr ""
-"Separere direktemeldings- og chattevinduer når programet plasserer etter "
-"nummer"
+msgstr "Separere direktemeldings- og chattevinduer når programet plasserer etter nummer"
 
 #. *< type
 #. *< ui_requirement
@@ -17571,12 +17056,8 @@
 #. *< summary
 #. *  description
 #: ../pidgin/plugins/extplacement.c:150
-msgid ""
-"Restrict the number of conversations per windows, optionally separating IMs "
-"and Chats"
-msgstr ""
-"Begrens det maksimale antallet samtaler per vindu, og eventuelt separering "
-"av direktemeldinger og chat"
+msgid "Restrict the number of conversations per windows, optionally separating IMs and Chats"
+msgstr "Begrens det maksimale antallet samtaler per vindu, og eventuelt separering av direktemeldinger og chat"
 
 #. Configuration frame
 #: ../pidgin/plugins/gestures/gestures.c:235
@@ -17638,9 +17119,7 @@
 #. Add the label.
 #: ../pidgin/plugins/gevolution/add_buddy_dialog.c:457
 msgid "Select a person from your address book below, or add a new person."
-msgstr ""
-"Velg en person fra adresseboken som er vist under, eller legg til en ny "
-"person"
+msgstr "Velg en person fra adresseboken som er vist under, eller legg til en ny person"
 
 #: ../pidgin/plugins/gevolution/add_buddy_dialog.c:551
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:301
@@ -17661,18 +17140,13 @@
 
 #. Add the label.
 #: ../pidgin/plugins/gevolution/assoc-buddy.c:343
-msgid ""
-"Select a person from your address book to add this buddy to, or create a new "
-"person."
-msgstr ""
-"Velg en person fra adresseboka for å legge til denne kontakten, eller lag en "
-"ny kontakt."
+msgid "Select a person from your address book to add this buddy to, or create a new person."
+msgstr "Velg en person fra adresseboka for å legge til denne kontakten, eller lag en ny kontakt."
 
 #. Add the expander
 #: ../pidgin/plugins/gevolution/assoc-buddy.c:431
-#, fuzzy
 msgid "User _details"
-msgstr "Skjul brukerdetaljer"
+msgstr "_Brukerdetaljer"
 
 #. "Associate Buddy" button
 #: ../pidgin/plugins/gevolution/assoc-buddy.c:484
@@ -17681,9 +17155,8 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-#, fuzzy
 msgid "Unable to send e-mail"
-msgstr "Kunne ikke sende e-post"
+msgstr "Klarte ikke å sende e-post"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
 msgid "The evolution executable was not found in the PATH."
@@ -17698,7 +17171,6 @@
 msgstr "Legg til i adresseboka"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-#, fuzzy
 msgid "Send E-Mail"
 msgstr "Send E-post"
 
@@ -17729,9 +17201,8 @@
 #. *  description
 #: ../pidgin/plugins/gevolution/gevolution.c:530
 #: ../pidgin/plugins/gevolution/gevolution.c:532
-#, fuzzy
 msgid "Provides integration with Evolution."
-msgstr "Tilbyr integrasjon med Ximian Evolution"
+msgstr "Tilbyr integrasjon med Evolution"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:262
 msgid "Please enter the person's information below."
@@ -17739,9 +17210,7 @@
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:266
 msgid "Please enter the buddy's screen name and account type below."
-msgstr ""
-"Venligst tast inn kontaktens brukernavn og hvilken protokoll kontakten "
-"finnes på under."
+msgstr "Venligst tast inn kontaktens brukernavn og hvilken protokoll kontakten finnes på under."
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:286
 msgid "Account type:"
@@ -17793,7 +17262,7 @@
 "\n"
 "<b>Inaktiv:</b>"
 
-#: ../pidgin/plugins/history.c:188
+#: ../pidgin/plugins/history.c:192
 msgid "History"
 msgstr "Historikk"
 
@@ -17811,7 +17280,8 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../pidgin/plugins/iconaway.c:85 ../pidgin/plugins/iconaway.c:87
+#: ../pidgin/plugins/iconaway.c:85
+#: ../pidgin/plugins/iconaway.c:87
 msgid "Iconifies the buddy list and your conversations when you go away."
 msgstr "Minimer kontaktlisten og samtalene når du er markert som borte."
 
@@ -17825,15 +17295,15 @@
 
 #: ../pidgin/plugins/mailchk.c:163
 msgid "Adds a small box to the buddy list that shows if you have new mail."
-msgstr ""
-"Legger til en liten boks i kontaktlista som viser om du har fått e-post."
+msgstr "Legger til en liten boks i kontaktlista som viser om du har fått e-post."
 
 #: ../pidgin/plugins/markerline.c:23
 #, fuzzy
 msgid "Markerline"
 msgstr "Understrek"
 
-#: ../pidgin/plugins/markerline.c:25 ../pidgin/plugins/markerline.c:26
+#: ../pidgin/plugins/markerline.c:25
+#: ../pidgin/plugins/markerline.c:26
 msgid "Draw a line to indicate new messages in a conversation."
 msgstr ""
 
@@ -17841,19 +17311,19 @@
 msgid "Draw Markerline in "
 msgstr ""
 
-#: ../pidgin/plugins/markerline.c:250 ../pidgin/plugins/notify.c:682
+#: ../pidgin/plugins/markerline.c:250
+#: ../pidgin/plugins/notify.c:682
 msgid "_IM windows"
 msgstr "Vinduer for direktemeldinger"
 
 #
-#: ../pidgin/plugins/markerline.c:254 ../pidgin/plugins/notify.c:689
+#: ../pidgin/plugins/markerline.c:254
+#: ../pidgin/plugins/notify.c:689
 msgid "C_hat windows"
 msgstr "_Samtalevinduer"
 
 #: ../pidgin/plugins/musicmessaging/musicmessaging.c:44
-msgid ""
-"A music messaging session has been requested. Please click the MM icon to "
-"accept."
+msgid "A music messaging session has been requested. Please click the MM icon to accept."
 msgstr ""
 
 #: ../pidgin/plugins/musicmessaging/musicmessaging.c:45
@@ -17891,7 +17361,7 @@
 
 #: ../pidgin/plugins/musicmessaging/musicmessaging.c:644
 msgid "_Apply"
-msgstr "Bruk"
+msgstr "_Bruk"
 
 #. *< type
 #. *< ui_requirement
@@ -17907,9 +17377,7 @@
 
 #. *  summary
 #: ../pidgin/plugins/musicmessaging/musicmessaging.c:687
-msgid ""
-"The Music Messaging Plugin allows a number of users to simultaneously work "
-"on a piece of music by editting a common score in real-time."
+msgid "The Music Messaging Plugin allows a number of users to simultaneously work on a piece of music by editting a common score in real-time."
 msgstr ""
 
 #. ---------- "Notify For" ----------
@@ -18004,7 +17472,8 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../pidgin/plugins/notify.c:910 ../pidgin/plugins/notify.c:912
+#: ../pidgin/plugins/notify.c:910
+#: ../pidgin/plugins/notify.c:912
 msgid "Provides a variety of ways of notifying you of unread messages."
 msgstr "Lar deg bli varslet om uleste meldinger på flere vis."
 
@@ -18056,52 +17525,41 @@
 msgid "GtkTreeView Horizontal Separation"
 msgstr ""
 
-#: ../pidgin/plugins/pidginrc.c:73
+#: ../pidgin/plugins/pidginrc.c:69
 #, fuzzy
 msgid "Conversation Entry"
 msgstr "Samtaler"
 
-#: ../pidgin/plugins/pidginrc.c:74
-#, fuzzy
-msgid "Conversation History"
-msgstr "Samtaler Historie"
-
-#: ../pidgin/plugins/pidginrc.c:75
-#, fuzzy
-msgid "Log Viewer"
-msgstr "Log Viser"
-
-#: ../pidgin/plugins/pidginrc.c:76
+#: ../pidgin/plugins/pidginrc.c:70
 #, fuzzy
 msgid "Request Dialog"
 msgstr "Anmodnings Dialog"
 
-#: ../pidgin/plugins/pidginrc.c:77
+#: ../pidgin/plugins/pidginrc.c:71
 #, fuzzy
 msgid "Notify Dialog"
 msgstr "Bruk varsling for"
 
-#: ../pidgin/plugins/pidginrc.c:253
-#, fuzzy
+#: ../pidgin/plugins/pidginrc.c:247
 msgid "Select Color"
-msgstr "Velg tekstfarge"
-
-#: ../pidgin/plugins/pidginrc.c:300
-#, fuzzy, c-format
+msgstr "Velg farge"
+
+#: ../pidgin/plugins/pidginrc.c:294
+#, fuzzy
 msgid "Select Interface Font"
 msgstr "Velg skrifttype"
 
-#: ../pidgin/plugins/pidginrc.c:303
+#: ../pidgin/plugins/pidginrc.c:297
 #, fuzzy, c-format
 msgid "Select Font for %s"
 msgstr "Velg skrifttype"
 
-#: ../pidgin/plugins/pidginrc.c:371
+#: ../pidgin/plugins/pidginrc.c:365
 #, fuzzy
 msgid "GTK+ Interface Font"
 msgstr "Valg for grensesnitt"
 
-#: ../pidgin/plugins/pidginrc.c:391
+#: ../pidgin/plugins/pidginrc.c:385
 msgid "GTK+ Text Shortcut Theme"
 msgstr "GTK+ Tekst Tema Snarvei"
 
@@ -18125,40 +17583,41 @@
 #. widget_bool_widgets[i]);
 #. }
 #.
-#: ../pidgin/plugins/pidginrc.c:428
+#: ../pidgin/plugins/pidginrc.c:422
 #, fuzzy
 msgid "Interface colors"
 msgstr "Ignorer farger"
 
-#: ../pidgin/plugins/pidginrc.c:452
+#: ../pidgin/plugins/pidginrc.c:446
 msgid "Widget Sizes"
 msgstr ""
 
-#: ../pidgin/plugins/pidginrc.c:473
+#: ../pidgin/plugins/pidginrc.c:467
 #, fuzzy
 msgid "Fonts"
 msgstr "Kontoer"
 
-#: ../pidgin/plugins/pidginrc.c:497
+#: ../pidgin/plugins/pidginrc.c:491
 #, fuzzy
 msgid "Gtkrc File Tools"
 msgstr "Styre Gaim fra kontrollfil"
 
-#: ../pidgin/plugins/pidginrc.c:502
+#: ../pidgin/plugins/pidginrc.c:496
 #, c-format
 msgid "Write settings to %s%sgtkrc-2.0"
 msgstr ""
 
-#: ../pidgin/plugins/pidginrc.c:511
+#: ../pidgin/plugins/pidginrc.c:505
 msgid "Re-read gtkrc files"
 msgstr ""
 
-#: ../pidgin/plugins/pidginrc.c:544
+#: ../pidgin/plugins/pidginrc.c:538
 #, fuzzy
 msgid "Pidgin GTK+ Theme Control"
 msgstr "Gaim GTK+ Tema Kontroll"
 
-#: ../pidgin/plugins/pidginrc.c:546 ../pidgin/plugins/pidginrc.c:547
+#: ../pidgin/plugins/pidginrc.c:540
+#: ../pidgin/plugins/pidginrc.c:541
 msgid "Provides access to commonly used gtkrc settings."
 msgstr "Gir tilgang til vanlig brukte gtkrc innstillinger"
 
@@ -18172,18 +17631,12 @@
 
 #: ../pidgin/plugins/raw.c:178
 #, fuzzy
-msgid ""
-"Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit "
-"'Enter' in the entry box to send. Watch the debug window."
-msgstr ""
-"Lar deg sende direktekommandoer til tekstbaserte protokoller (Jabber, MSN, "
-"IRC, TOC). Trykk 'Enter' for å sende, og sjekk avlusningsvinduet."
+msgid "Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit 'Enter' in the entry box to send. Watch the debug window."
+msgstr "Lar deg sende direktekommandoer til tekstbaserte protokoller (Jabber, MSN, IRC, TOC). Trykk 'Enter' for å sende, og sjekk avlusningsvinduet."
 
 #: ../pidgin/plugins/relnot.c:71
 #, fuzzy, c-format
-msgid ""
-"You are using %s version %s.  The current version is %s.  You can get it "
-"from <a href=\"%s\">%s</a><hr>"
+msgid "You are using %s version %s.  The current version is %s.  You can get it from <a href=\"%s\">%s</a><hr>"
 msgstr "Du bruker Gaim versjon %s. Den nåværende versjonen er %s.<hr>"
 
 #: ../pidgin/plugins/relnot.c:79
@@ -18193,7 +17646,8 @@
 "<b> Endringslogg: </b>\n"
 "%s<br><br>"
 
-#: ../pidgin/plugins/relnot.c:84 ../pidgin/plugins/relnot.c:85
+#: ../pidgin/plugins/relnot.c:84
+#: ../pidgin/plugins/relnot.c:85
 msgid "New Version Available"
 msgstr "Ny versjon tilgjengelig"
 
@@ -18216,11 +17670,8 @@
 
 #. *  description
 #: ../pidgin/plugins/relnot.c:148
-msgid ""
-"Checks periodically for new releases and notifies the user with the "
-"ChangeLog."
-msgstr ""
-"Sjekker periodisk for nye versjoner, og gir endringslista til brukeren."
+msgid "Checks periodically for new releases and notifies the user with the ChangeLog."
+msgstr "Sjekker periodisk for nye versjoner, og gir endringslista til brukeren."
 
 #: ../pidgin/plugins/spellchk.c:1962
 msgid "Duplicate Correction"
@@ -18284,7 +17735,8 @@
 msgid "Text replacement"
 msgstr "Teksterstatter"
 
-#: ../pidgin/plugins/spellchk.c:2372 ../pidgin/plugins/spellchk.c:2373
+#: ../pidgin/plugins/spellchk.c:2372
+#: ../pidgin/plugins/spellchk.c:2373
 msgid "Replaces text in outgoing messages according to user-defined rules."
 msgstr "Erstatter tekst i utgående beskjeder etter regler som du bestemmer."
 
@@ -18294,7 +17746,8 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/ticker/ticker.c:74 ../pidgin/plugins/ticker/ticker.c:354
+#: ../pidgin/plugins/ticker/ticker.c:74
+#: ../pidgin/plugins/ticker/ticker.c:354
 msgid "Buddy Ticker"
 msgstr "Rullende kontaktliste"
 
@@ -18302,7 +17755,8 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../pidgin/plugins/ticker/ticker.c:357 ../pidgin/plugins/ticker/ticker.c:359
+#: ../pidgin/plugins/ticker/ticker.c:357
+#: ../pidgin/plugins/ticker/ticker.c:359
 msgid "A horizontal scrolling version of the buddy list."
 msgstr "En horisontalt rullende versjon av kontaktlisten."
 
@@ -18340,19 +17794,16 @@
 msgstr ""
 
 #: ../pidgin/plugins/timestamp_format.c:26
-#, c-format
 msgid "_Force 24-hour time format"
 msgstr ""
 
 #: ../pidgin/plugins/timestamp_format.c:33
-#, fuzzy
 msgid "Show dates in..."
-msgstr "Vis flere valg"
+msgstr "Vis datoer i..."
 
 #: ../pidgin/plugins/timestamp_format.c:38
-#, fuzzy
 msgid "Co_nversations:"
-msgstr "Samtaler"
+msgstr "Sa_mtaler:"
 
 #: ../pidgin/plugins/timestamp_format.c:40
 #: ../pidgin/plugins/timestamp_format.c:49
@@ -18389,9 +17840,7 @@
 
 #. *  description
 #: ../pidgin/plugins/timestamp_format.c:156
-msgid ""
-"This plugin allows the user to customize conversation and logging message "
-"timestamp formats."
+msgid "This plugin allows the user to customize conversation and logging message timestamp formats."
 msgstr ""
 
 #: ../pidgin/plugins/win32/transparency/win2ktrans.c:175
@@ -18460,13 +17909,11 @@
 #: ../pidgin/plugins/win32/transparency/win2ktrans.c:698
 #, fuzzy
 msgid ""
-"This plugin enables variable alpha transparency on conversation windows and "
-"the buddy list.\n"
+"This plugin enables variable alpha transparency on conversation windows and the buddy list.\n"
 "\n"
 "* Note: This plugin requires Win2000 or greater."
 msgstr ""
-"Dette tillegget gjør at samtalevinduene og kontaktlisten blir delvis "
-"gjennomsiktige.\n"
+"Dette tillegget gjør at samtalevinduene og kontaktlisten blir delvis gjennomsiktige.\n"
 "\n"
 "* Merk: du må ha Windows 2000 eller Windows XP for at denne skal virke."
 
@@ -18480,9 +17927,9 @@
 msgstr "Oppstart"
 
 #: ../pidgin/plugins/win32/winprefs/winprefs.c:312
-#, fuzzy, c-format
+#, c-format
 msgid "_Start %s on Windows startup"
-msgstr "Start Gaim når Windows starter"
+msgstr "_Start %s når Windows starter"
 
 #: ../pidgin/plugins/win32/winprefs/winprefs.c:327
 msgid "_Dockable Buddy List"
@@ -18516,11 +17963,8 @@
 
 #: ../pidgin/plugins/win32/winprefs/winprefs.c:374
 #, fuzzy
-msgid ""
-"Provides options specific to Pidgin for Windows , such as buddy list docking."
-msgstr ""
-"Gir spesifikke innstillinger for Windows Gaim, slik som kontaktliste docking "
-"og samtale blinking."
+msgid "Provides options specific to Pidgin for Windows , such as buddy list docking."
+msgstr "Gir spesifikke innstillinger for Windows Gaim, slik som kontaktliste docking og samtale blinking."
 
 #: ../pidgin/plugins/xmppconsole.c:667
 msgid "<font color='#777777'>Logged out.</font>"
@@ -18532,13 +17976,13 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/xmppconsole.c:746 ../pidgin/plugins/xmppconsole.c:841
+#: ../pidgin/plugins/xmppconsole.c:746
+#: ../pidgin/plugins/xmppconsole.c:841
 #: ../pidgin/plugins/xmppconsole.c:860
 msgid "XMPP Console"
 msgstr ""
 
 #: ../pidgin/plugins/xmppconsole.c:753
-#, fuzzy
 msgid "Account: "
 msgstr "Konto:"
 
@@ -18571,1666 +18015,3 @@
 msgid "This plugin is useful for debbuging XMPP servers or clients."
 msgstr ""
 
-#, fuzzy
-#~ msgid "Offline buddies"
-#~ msgstr "Dimme ned inaktive kontakter"
-
-#, fuzzy
-#~ msgid "Sort"
-#~ msgstr "Port"
-
-#, fuzzy
-#~ msgid "By Status"
-#~ msgstr "Etter status"
-
-#, fuzzy
-#~ msgid "By Log Size"
-#~ msgstr "Etter loggstørrelse"
-
-#, fuzzy
-#~ msgid "Unable to connect to contact server"
-#~ msgstr "Kan ikke koble til tjener."
-
-#, fuzzy
-#~ msgid "Unable to retrieve MSN Address Book"
-#~ msgstr "Kunne ikke hente kontaktliste"
-
-#, fuzzy
-#~ msgid "Current media"
-#~ msgstr "Pålogget på"
-
-#, fuzzy
-#~ msgid "Windows Live Messenger Protocol Plugin"
-#~ msgstr "Novel GroupWise Messenger protolltillegg"
-
-#, fuzzy
-#~ msgid "Windows Live ID authentication Failed"
-#~ msgstr "Normal autentisering feilet"
-
-#, fuzzy
-#~ msgid "%s just sent you a Nudge!"
-#~ msgstr "%s ønsker å sende deg en fil."
-
-#, fuzzy
-#~ msgid "Unknown error (%d)"
-#~ msgstr "Ukjent feil"
-
-#, fuzzy
-#~ msgid "Unable to connect to OIM server"
-#~ msgstr "Kan ikke koble til tjener."
-
-#, fuzzy
-#~ msgid "%s (%s) changed status from %s to %s"
-#~ msgstr "%s har endret kanaltema til: %s"
-
-#, fuzzy
-#~ msgid "%s (%s) is now %s"
-#~ msgstr "%s heter nå %s"
-
-#, fuzzy
-#~ msgid "%s (%s) is no longer %s"
-#~ msgstr "%s er tilbake."
-
-#, fuzzy
-#~ msgid "_Merge"
-#~ msgstr "Beskjed:"
-
-#, fuzzy
-#~ msgid "_Send File..."
-#~ msgstr "_Send fil"
-
-#, fuzzy
-#~ msgid "Add Buddy _Pounce..."
-#~ msgstr "Legg til kompisvarsling"
-
-#, fuzzy
-#~ msgid "Hide when offline"
-#~ msgstr "Ikke tillatt når avlogget"
-
-#, fuzzy
-#~ msgid "Show when offline"
-#~ msgstr "Ikke tillatt når avlogget"
-
-#, fuzzy
-#~ msgid "Add _Buddy..."
-#~ msgstr "Legg til kontakt"
-
-#, fuzzy
-#~ msgid "Add C_hat..."
-#~ msgstr "Legg til samtale"
-
-#, fuzzy
-#~ msgid "Persistent"
-#~ msgstr "Tillat"
-
-#, fuzzy
-#~ msgid "/Accounts/Manage"
-#~ msgstr "Kontoer"
-
-#, fuzzy
-#~ msgid "A_ccount:"
-#~ msgstr "Konto:"
-
-#, fuzzy
-#~ msgid "S_end To"
-#~ msgstr "Send som"
-
-#~ msgid "Gaim Internet Messenger"
-#~ msgstr "Gaim lynmeldingsklient"
-
-#~ msgid "Hide Disconnect Errors"
-#~ msgstr "Skjul frakoblingsfeil"
-
-#~ msgid "Hide Login Errors"
-#~ msgstr "Skjul påloggningsfeil"
-
-#, fuzzy
-#~ msgid "Hide Reconnecting Dialog"
-#~ msgstr "Skjul frakoblingsfeil"
-
-#~ msgid "When you are kicked offline, this reconnects you."
-#~ msgstr ""
-#~ "Dette tillegget vil koble deg til på nytt dersom du mister forbindelsen."
-
-#~ msgid "Use last matching buddy"
-#~ msgstr "Bruk samme kontakt som sist"
-
-#, fuzzy
-#~ msgid ""
-#~ "The buddy with the lowest score is the buddy who will have priority in "
-#~ "the contact.\n"
-#~ "The default values (offline = 4, away = 2, and idle = 1) will use what "
-#~ "used to be\n"
-#~ "the built-in order: active, idle, away, away + idle, offline."
-#~ msgstr ""
-#~ "Kompisen med den laveste verdien er den som er prioritert i kontakten.\n"
-#~ "Standardverdiene (frakoblet = 4, fraværende = 2, og ingen aktivitet = 1)\n"
-#~ "vil tilsvare det som var den innebygde rekkefølgen:\n"
-#~ "aktiv -> ingen aktivitet -> fraværende -> fraværende og ingen aktivitet -"
-#~ "> ikke pålogget."
-
-#~ msgid "Gaim"
-#~ msgstr "Gaim"
-
-#~ msgid "Gaim - Signed off"
-#~ msgstr "Gaim - Avlogget"
-
-#~ msgid "Gaim - Away"
-#~ msgstr "Gaim - Borte"
-
-#~ msgid "Join A Chat..."
-#~ msgstr "Bli med i samtalegruppe..."
-
-#~ msgid "Displays an icon for Gaim in the system tray."
-#~ msgstr "Viser et ikon for gaim i systemtray."
-
-#~ msgid ""
-#~ "Displays a system tray icon (in GNOME, KDE or Windows for example) to "
-#~ "show the current status of Gaim, allow fast access to commonly used "
-#~ "functions, and to toggle display of the buddy list or login window. Also "
-#~ "allows messages to be queued until the icon is clicked, similar to ICQ."
-#~ msgstr ""
-#~ "Bruker et beskjedvarslings-applet (f.eks. i GNOME eller KDE) for å vise "
-#~ "Gaims status, gi hurtig tilgang til ofte brukte funksjoner, og for å "
-#~ "fjerne/vise kontaktlisten og påloggingsvinduet. Muliggjør også kølegging "
-#~ "av beskjeder helt til ikonet klikkes, a la ICQ."
-
-#, fuzzy
-#~ msgid "GtkTreeView Expander Size"
-#~ msgstr "Utvider-størrelse"
-
-#~ msgid "The specified buddy was not found in the Evolution Contacts."
-#~ msgstr "Kompisen ble ikke funnet i adresseboka til Evolution"
-
-#~ msgid ""
-#~ "When a new conversation is opened this plugin will insert the last "
-#~ "conversation into the current conversation.\n"
-#~ "\n"
-#~ "The history plugin requires logging be enabled. Logging can be enabled "
-#~ "from Tools -> Preferences -> Logging. Enabling logs for instant messages "
-#~ "and/or chats will activate history for the same conversation type(s)."
-#~ msgstr ""
-#~ "Når en ny samtale er åpnet vil dette tillegget sette inn siste samtale i "
-#~ "den pågående samtalen.\n"
-#~ "\n"
-#~ "Historie tillegget krever at logging er slått på. Logging kan bli satt på "
-#~ "gjennom Verktøy -> Innstillinger -> Logging. Å slå på logger for "
-#~ "lynmeldinger og/eller prat vil aktivere historie for den samme "
-#~ "samtaletypen."
-
-#~ msgid ""
-#~ "You can get version %s from:<br><a href=\"http://gaim.sourceforge.net/"
-#~ "\">http://gaim.sourceforge.net</a>."
-#~ msgstr ""
-#~ "Du kan finne versjon %s her:<br><a href=\"http://gaim.sourceforge.net/"
-#~ "\">http://gaim.sourceforge.net</a>."
-
-#~ msgid "Delay"
-#~ msgstr "Sett inn hvert"
-
-#~ msgid "WinGaim Options"
-#~ msgstr "WinGaim Innstilinger"
-
-#~ msgid ""
-#~ "%d buddy from group %s was not removed because its account was not logged "
-#~ "in.  This buddy and the group were not removed.\n"
-#~ msgid_plural ""
-#~ "%d buddies from group %s were not removed because their accounts were not "
-#~ "logged in.  These buddies and the group were not removed.\n"
-#~ msgstr[0] ""
-#~ "%d kontakt fra gruppen %s ble ikke fjernet fordi kontaktens konto ikke "
-#~ "var innlogget. Denne kontakten (og gruppen) ble ikke fjernet.\n"
-#~ msgstr[1] ""
-#~ "%d kontakter fra gruppen %s ble ikke fjernet fordi kontoene deres ikke "
-#~ "var innlogget. Disse kontaktene (og gruppen) ble ikke fjernet.\n"
-
-#~ msgid "Group not removed"
-#~ msgstr "Gruppe ikke fjernet"
-
-#~ msgid "(+%d more)"
-#~ msgstr "(+%d flere)"
-
-#~ msgid " left the room (%s)."
-#~ msgstr " forlot rommet (%s)."
-
-#~ msgid "Screen Name:"
-#~ msgstr "Skjermnavn:"
-
-#~ msgid "Buddy icon:"
-#~ msgstr "Kontaktikon:"
-
-#~ msgid ""
-#~ "\n"
-#~ "\n"
-#~ "Do you wish to add him or her to your buddy list?"
-#~ msgstr ""
-#~ "\n"
-#~ "\n"
-#~ "Ønsker du å legge vedkommende til i din kontaktliste?"
-
-#~ msgid "_Alias Buddy..."
-#~ msgstr "_Alias for kontakt..."
-
-#
-#, fuzzy
-#~ msgid "Alias Contact..."
-#~ msgstr "Kontaktalias..."
-
-#~ msgid "/Tools/Account Ac_tions"
-#~ msgstr "/Verktøy/_Handlinger for kontoer"
-
-#~ msgid "/Tools/A_ccounts"
-#~ msgstr "/Verktøy/K_ontoer"
-
-#
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "<b>Contact Alias:</b> %s"
-#~ msgstr ""
-#~ "\n"
-#~ "<b>Kontaktalias:</b>"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "<b>Alias:</b> %s"
-#~ msgstr ""
-#~ "\n"
-#~ "<b>Alias:</b>"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "<b>Nickname:</b> %s"
-#~ msgstr ""
-#~ "\n"
-#~ "<b>Kallenavn:</b>"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "<b>Logged In:</b> %s"
-#~ msgstr ""
-#~ "\n"
-#~ "<b>Pålogget:</b> "
-
-#~ msgid ""
-#~ "\n"
-#~ "<b>Status:</b> Offline"
-#~ msgstr ""
-#~ "\n"
-#~ "<b>Status:</b> Avlogget"
-
-#~ msgid ""
-#~ "\n"
-#~ "<b>Description:</b> Spooky"
-#~ msgstr ""
-#~ "\n"
-#~ "<b>Beskrivelse:</b> Skummel"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "<b>Status:</b> Awesome"
-#~ msgstr ""
-#~ "\n"
-#~ "<b>Status:</b> Fantastisk"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "<b>Status:</b> Rockin'"
-#~ msgstr ""
-#~ "\n"
-#~ "<b>Status:</b> Rockin'"
-
-#~ msgid "/Tools/Buddy Pounce"
-#~ msgstr "/Verktøy/Kompisvarsel"
-
-#~ msgid "/Tools/Account Actions"
-#~ msgstr "/Verktøy/_Handlinger for kontoe"
-
-# Lot "me" stå, var usikker på om denne brukes "teknisk"
-# (denne meldingen kommer opp når du skriver "debug version"
-# - da byttes "me" ut med kallenavn)
-#~ msgid "me is using Gaim v%s."
-#~ msgstr "me bruker Gaim v%s."
-
-#, fuzzy
-#~ msgid "/Options/Show Buddy _Icon"
-#~ msgstr "Vis kontaktikoner"
-
-#, fuzzy
-#~ msgid "/Options/Show Buddy Icon"
-#~ msgstr "Vis kontaktikoner"
-
-#~ msgid "IM the user"
-#~ msgstr "Send beskjed til bruker"
-
-#~ msgid "Ignore the user"
-#~ msgstr "Ignorer bruker"
-
-#~ msgid "Get the user's information"
-#~ msgstr "Hent brukerinformasjon"
-
-#, fuzzy
-#~ msgid "Jabber developer"
-#~ msgstr "tidligere jabber-utvikler"
-
-#, fuzzy
-#~ msgid ""
-#~ "Gaim is a modular messaging client capable of using AIM, MSN, Yahoo!, "
-#~ "Jabber, ICQ, IRC, SILC, Novell GroupWise, Napster, Zephyr, and Gadu-Gadu "
-#~ "all at once.  It is written using GTK+ and is licensed under the GNU GPL."
-#~ "<BR><BR>"
-#~ msgstr ""
-#~ "Gaim er en modulbasert klient for direktemeldinger som kan bruke AIM, "
-#~ "MSN, Yahoo!, Jabber, ICQ, IRC, SILC, Novell GroupWise, Napster, Zephyr, "
-#~ "og Gadu-Gadu samtidig. Programmet er bygget på Gtk+ og er lisensiert "
-#~ "under GPL.<BR><BR>"
-
-#~ msgid "<FONT SIZE=\"4\">IRC:</FONT> #wingaim on irc.freenode.net<BR><BR>"
-#~ msgstr "<FONT SIZE=\"4\">IRC:</FONT> #wingaim på irc.freenode.net<BR><BR>"
-
-#~ msgid "Active Developers"
-#~ msgstr "Aktive utviklere"
-
-#~ msgid "_Keep the dialog open"
-#~ msgstr "Hold dialogen åpen"
-
-#~ msgid "Smaller font size"
-#~ msgstr "Mindre skrift"
-
-#~ msgid "Insert link"
-#~ msgstr "Sett inn lenke"
-
-#~ msgid "Insert image"
-#~ msgstr "Sett inn bilde"
-
-#, fuzzy
-#~ msgid "Conversation in %s on %s"
-#~ msgstr "Samtaler med %s"
-
-#~ msgid "<span weight=\"bold\">From:</span> %s\n"
-#~ msgstr "<span weight=\"bold\">Fra:</span> %s\n"
-
-#~ msgid "<span weight=\"bold\">Subject:</span> %s\n"
-#~ msgstr "<span weight=\"bold\">Emne:</span> %s\n"
-
-#~ msgid ""
-#~ "<span weight=\"bold\" size=\"larger\">You have mail!</span>\n"
-#~ "\n"
-#~ "%s%s%s%s"
-#~ msgstr ""
-#~ "<span weight=\"bold\" size=\"larger\">Du har e-post!</span>\n"
-#~ "\n"
-#~ "%s%s%s%s"
-
-#~ msgid "Error launching <b>%s</b>: %s"
-#~ msgstr "Feil under starting av kommando: <b>%s</b>:%s"
-
-#~ msgid "A_way"
-#~ msgstr "_Borte"
-
-#~ msgid "_Idle"
-#~ msgstr "_Inaktiv"
-
-#~ msgid "Retur_n from idle"
-#~ msgstr "Retur_ner fra inaktivitet"
-
-#~ msgid "Pounce Action"
-#~ msgstr "Varslingsmåte"
-
-#~ msgid "Bro_wse..."
-#~ msgstr "Bla _gjennom"
-
-#~ msgid "Sav_e this pounce after activation"
-#~ msgstr "Lagre denne varslingen etter aktivering"
-
-#~ msgid "Remove Buddy Pounce"
-#~ msgstr "Fjern kompisvarsling"
-
-#~ msgid "Send unknown \"_slash\" commands as messages"
-#~ msgstr "Send ukjente \"skråstreks\"-kommandoer som meldinger"
-
-#~ msgid "Show buddy _icons"
-#~ msgstr "Vis kontaktikoner"
-
-#~ msgid "Tab Options"
-#~ msgstr "Fanevalg"
-
-#~ msgid "_Sounds while away"
-#~ msgstr "Lyder når du er fraværsmarkert"
-
-#~ msgid "_Queue new messages when away"
-#~ msgstr "Når borte, legg nye beskjeder i kø"
-
-#, fuzzy
-#~ msgid "Custom status"
-#~ msgstr "Etter status"
-
-#~ msgid ""
-#~ "Unable to play sound because the 'Command' sound method has been chosen, "
-#~ "but no command has been set."
-#~ msgstr ""
-#~ "Kunne ikke spille av lyd fordi du har valgt at et eksternt program skal "
-#~ "spille av lyd, men ikke spesifisert navnet på programmet."
-
-#~ msgid ""
-#~ "Unable to play sound because the configured sound command could not be "
-#~ "launched: %s"
-#~ msgstr ""
-#~ "Kunne ikke spille av lyd fordi det konfigurerte avspillingsprogrammet "
-#~ "ikke kunne startes: %s"
-
-#~ msgid "_Warn"
-#~ msgstr "Advar"
-
-#~ msgid ""
-#~ "You can send this image as a file transfer or embed it into this message, "
-#~ "or use it as the buddy icon for this user."
-#~ msgstr ""
-#~ "Du kan sende dette bildet som filoverføring, sett det inn i denne "
-#~ "bekjeden eller bruk det som kompis ikon for denne brukeren."
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "<b>Status:</b> %s"
-#~ msgstr ""
-#~ "\n"
-#~ "<b>Status:</b> Fantastisk"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "<b>Message:</b> %s"
-#~ msgstr ""
-#~ "\n"
-#~ "<b>%s:</b> %s"
-
-#, fuzzy
-#~ msgid "Could't open file"
-#~ msgstr "Kan ikke sende fil"
-
-#, fuzzy
-#~ msgid "Change password"
-#~ msgstr "Bytt passord"
-
-#~ msgid "<b>%s:</b> %s"
-#~ msgstr "<b>%s:</b> %s"
-
-#~ msgid "<b>%s:</b> %s<br>"
-#~ msgstr "<b>%s:</b> %s<br>"
-
-#~ msgid "Realname"
-#~ msgstr "Virkelig navn"
-
-#~ msgid "Cannot join %s:"
-#~ msgstr "Kan ikke bli med i %s:"
-
-#~ msgid ""
-#~ "Server requires TLS/SSL for login.  Select \"Use TLS if available\" in "
-#~ "account properties"
-#~ msgstr ""
-#~ "Tjeneren krever TSL/SSL for innlogging. Velg \"Bruk TLS hvis tilgjengelig "
-#~ "\" i kontoalternativer."
-
-#~ msgid "Jabber ID"
-#~ msgstr "Jabber-feil"
-
-#, fuzzy
-#~ msgid "Search for Jabber users"
-#~ msgstr "Kontaktsøk etter e-postadresse"
-
-#~ msgid "Invalid Jabber ID"
-#~ msgstr "Ugyldig jabber-ID"
-
-#~ msgid "Change Jabber Password"
-#~ msgstr "Bytt jabber-passord"
-
-#~ msgid "Jabber Protocol Plugin"
-#~ msgstr "Jabber-protokolltillegg"
-
-#~ msgid "Use TLS if available"
-#~ msgstr "Bruk TLS hvis tilgjengelig"
-
-#~ msgid "The user %s wants to add %s to his or her buddy list."
-#~ msgstr "Brukeren %s ønsker å legge til %s i kontaktlisten sin."
-
-#~ msgid "You have just sent a Nudge!"
-#~ msgstr "Du har sent en Nudge!"
-
-#~ msgid ""
-#~ "\n"
-#~ "<b>%s:</b> %s"
-#~ msgstr ""
-#~ "\n"
-#~ "<b>%s:</b> %s"
-
-#~ msgid "Hidden"
-#~ msgstr "Usynlig"
-
-#~ msgid "<b>%s:</b> "
-#~ msgstr "<b>%s:</b> "
-
-#~ msgid "MSN Profile"
-#~ msgstr "MSN-profil"
-
-#~ msgid "Login server"
-#~ msgstr "Påloggingstjener"
-
-#~ msgid "The user %s (%s) wants to add %s to his or her buddy list."
-#~ msgstr "Brukeren %s (%s) ønsker å legge til %s i kontaktlisten sin."
-
-#~ msgid "Unable to read header from server"
-#~ msgstr "Kunne ikke lese meldingshode fra tjener"
-
-#~ msgid ""
-#~ "Unable to read message from server: %s.  Command is %hd, length is %hd."
-#~ msgstr ""
-#~ "Kunne ikke lese melding fra tjener: %s. Kommando er %hd, lengde er %hd."
-
-#~ msgid "users: %s, files: %s, size: %sGB"
-#~ msgstr "brukere: %s, filer: %s, størrelse %sGB"
-
-#~ msgid "Unable to add \"%s\" to your Napster hotlist"
-#~ msgstr "Kunne ikke legge til \"%s\" i Napster-listen din"
-
-#~ msgid "%s requested a PING"
-#~ msgstr "%s pinget deg"
-
-#~ msgid "NAPSTER Protocol Plugin"
-#~ msgstr "Napster-protokolltillegg"
-
-#
-#~ msgid "Invalid password"
-#~ msgstr "Ugyldig passord"
-
-#~ msgid "Invalid username or password"
-#~ msgstr "Ugyldig brukernavn eller passord"
-
-#~ msgid "Error processing event or response (%s)."
-#~ msgstr "Klarte ikke behandle hendelse eller svar (%s)."
-
-#~ msgid "Direct IM with %s closed"
-#~ msgstr "Direkte samtale med %s stengt"
-
-#~ msgid "Direct IM with %s failed"
-#~ msgstr "Direkte samtale med %s mislyktes"
-
-#~ msgid "Unable to open Direct IM"
-#~ msgstr "Kunne ikke åpne direkte direktesamtale"
-
-#, fuzzy
-#~ msgid "You have lost your connection to chat room %s."
-#~ msgstr "Du har blitt koblet fra samtalegruppen %s."
-
-#~ msgid "Chat is currently unavailable"
-#~ msgstr "Samtalegrupper er for tiden utilgjengelig"
-
-#~ msgid ""
-#~ "Transfer of file %s timed out.\n"
-#~ " Try enabling proxy servers for file transfers in Tools->Preferences->AIM/"
-#~ "ICQ."
-#~ msgstr ""
-#~ "Overføring av filen %s timet ut.\n"
-#~ " Forsøk å slå på proxy servere for filoverføringer i Verktøy-"
-#~ ">Innstillinger->AIM/ICQ."
-
-#, fuzzy
-#~ msgid "Unable to log into file transfer proxy."
-#~ msgstr "Kunne ikke skrive fil %s."
-
-#, fuzzy
-#~ msgid ""
-#~ "Unable to establish listener socket or no AOL proxy connection present."
-#~ msgstr "Kunne ikke etablere lytte-socket."
-
-#~ msgid ""
-#~ "The user %s requires authorization before being added to a buddy list.  "
-#~ "Do you want to send an authorization request?"
-#~ msgstr ""
-#~ "Brukeren %s krever godkjenning før vedkommende legges til i "
-#~ "kontaktlisten. Vil du sende en godkjenningsforespørsel?"
-
-#~ msgid "Request Authorization"
-#~ msgstr "Spør om godkjenning"
-
-#, fuzzy
-#~ msgid ""
-#~ "The user %u wants to add %s to their buddy list for the following "
-#~ "reason:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Brukeren %u ønsker å legge deg til sin kontaktliste og oppgav følgende "
-#~ "grunn:\n"
-#~ "%s"
-
-#~ msgid "Authorization Request"
-#~ msgstr "Godkjenningsforespørsel"
-
-#~ msgid "<B>UIN:</B> %s<BR><B>Status:</B> %s<HR>%s"
-#~ msgstr "<B>UIN:</B> %s<BR><B>Status:</B> %s<HR>%s"
-
-#~ msgid "SNAC threw error: %s\n"
-#~ msgstr "SNAC-feil: %s\n"
-
-#~ msgid "User information for %s unavailable:"
-#~ msgstr "Brukerinformasjon for %s er ikke tilgjengelig:"
-
-#~ msgid "Rate limiting error."
-#~ msgstr "Feil ved hastighetsbegrensning."
-
-#~ msgid "You have been signed off for an unknown reason."
-#~ msgstr "Du har blitt logget av, årsak ukjent."
-
-#~ msgid ""
-#~ "Your screen name is currently formatted as follows:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Skjermnavnet ditt er formatert slik:\n"
-#~ "%s"
-
-#~ msgid "Unable to set AIM away message."
-#~ msgstr "Kunne ikke sette fraværsbeskjed for AIM."
-
-#~ msgid ""
-#~ "You have probably requested to set your away message before the login "
-#~ "procedure completed.  You remain in a \"present\" state; try setting it "
-#~ "again when you are fully connected."
-#~ msgstr ""
-#~ "Du har antakeligvis prøvd å sette en fraværsbeskjed før "
-#~ "innloggingsprosedyren var ferdig. Du er fortsatt markert som til stede. "
-#~ "Prøv å gjenta operasjonen når du er ferdig pålogget."
-
-#~ msgid ""
-#~ "Could not add the buddy %s for an unknown reason.  The most common reason "
-#~ "for this is that you have the maximum number of allowed buddies in your "
-#~ "buddy list."
-#~ msgstr ""
-#~ "Kunne ikke legge til kontakten %s pga. en ukjent feil. Den vanligste "
-#~ "årsaken til dette er at du har nådd maksimalgrensen for antall kontakter "
-#~ "i kontaktlisten din."
-
-#, fuzzy
-#~ msgid ""
-#~ "The user %s wants to add %s to their buddy list for the following "
-#~ "reason:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Brukeren %s ønsker å legge deg til i kontaktlisten sin med følgende "
-#~ "grunn:\n"
-#~ "%s"
-
-#, fuzzy
-#~ msgid "Hide IP address"
-#~ msgstr "IP-adresse"
-
-#, fuzzy
-#~ msgid "Web aware"
-#~ msgstr "Web-oppmerksom"
-
-#~ msgid "New screen name formatting:"
-#~ msgstr "Ny skjermnavn-formatering:"
-
-#~ msgid "Format Screen Name..."
-#~ msgstr "Formatere skjermnavn..."
-
-#~ msgid "Use AIM/ICQ proxy server (Slower/More Secure/Usually Works)"
-#~ msgstr "Bruk AIM/ICQ proxy server (Saktere/Mer sikkert/Fungerer vanligvis)"
-
-#~ msgid "Auth host"
-#~ msgstr "Autentiseringsadresse:"
-
-#~ msgid "Auth port"
-#~ msgstr "Autentiseringsport:"
-
-#~ msgid "Active"
-#~ msgstr "Aktiv"
-
-#~ msgid ""
-#~ "Could not add the buddy %s because every simple user has to start with "
-#~ "'sip:'."
-#~ msgstr ""
-#~ "Kunne ikke tilføye kompis %s fordi hver enkel bruker må starte med 'sip:'."
-
-#~ msgid "Thomas Butter <butter@uni-mannheim.de>"
-#~ msgstr "Thomas Butter <butter@uni-mannheim.de>"
-
-#~ msgid "EMail"
-#~ msgstr "E-post"
-
-#~ msgid "Instant Messages"
-#~ msgstr "Direktemeldinger"
-
-#~ msgid "Verify all IM message signatures"
-#~ msgstr "Bekreft alle direktemeldingssignaturer"
-
-#~ msgid "Channel Messages"
-#~ msgstr "Kanalmeldinger"
-
-#~ msgid "Digitally sign all channel messages"
-#~ msgstr "Signer alle kanalmeldinger digitalt"
-
-#~ msgid "Verify all channel message signatures"
-#~ msgstr "Bekreft alle kanalmeldingssignaturer"
-
-#, fuzzy
-#~ msgid "Reject watching by other users"
-#~ msgstr "Avvis overvåkning fra andre brukere"
-
-#~ msgid "Block invites"
-#~ msgstr "Blokker invitasjoner"
-
-#, fuzzy
-#~ msgid "Reject online status attribute requests"
-#~ msgstr "Avvis spørsmål om tilkoplingsstatus"
-
-#~ msgid "TOC has sent a PAUSE command."
-#~ msgstr "TOC har sendt en PAUSE-kommando."
-
-#~ msgid ""
-#~ "When this happens, TOC ignores any messages sent to it, and may kick you "
-#~ "off if you send a message. Gaim will prevent anything from going through. "
-#~ "This is only temporary, please be patient."
-#~ msgstr ""
-#~ "Når dette skjer, vil TOC ignorere alle beskjeder som blir sendt, og vil "
-#~ "kanskje kaste deg ut hvis du prøver å sende. Gaim vil derfor stoppe alle "
-#~ "utsendelser. Dette er bare midlertidig, vennligst vent."
-
-#~ msgid "Gaim - Save As..."
-#~ msgstr "Gaim - Lagre som..."
-
-#~ msgid "TOC host"
-#~ msgstr "TOC-adresse:"
-
-#~ msgid "TOC port"
-#~ msgstr "TOC-port:"
-
-#, fuzzy
-#~ msgid "Message (optional) :"
-#~ msgstr "Beskjedvarsling"
-
-#~ msgid ""
-#~ "The normal authentication method has failed. This means either your "
-#~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
-#~ "Gaim will now attempt to log in using Web Messenger authentication, which "
-#~ "will result in reduced functionality and features."
-#~ msgstr ""
-#~ "Den normale autentifikasjonsmekanismen har feilet, noe som enten betyr at "
-#~ "passordet ditt er feil, eller at Yahoo! sin autentifikasjonsmetode har "
-#~ "endret seg. Gaim vil nå forsøke å logge inn ved hjelp av Web Messenger "
-#~ "autentifikasjon, noe som vil føre til redusert funksjonalitet og færre "
-#~ "muligheter"
-
-#~ msgid "Unable to read"
-#~ msgstr "Kunne ikke lese"
-
-#, fuzzy
-#~ msgid "Stealth"
-#~ msgstr "Fylke/stat"
-
-#~ msgid "Pager host"
-#~ msgstr "Personsøker-adresse:"
-
-#, fuzzy
-#~ msgid "YCHT Host"
-#~ msgstr "YCHT-vert"
-
-#, fuzzy
-#~ msgid "YCHT Port"
-#~ msgstr "YCHT-Port"
-
-#~ msgid "<b>IP Address:</b> %s<br>"
-#~ msgstr "<b>IP-adresse:</b> %s <br>"
-
-#~ msgid "(%d message)"
-#~ msgid_plural "(%d messages)"
-#~ msgstr[0] "(%d beskjeder)"
-#~ msgstr[1] "(%d beskjeder)"
-
-#~ msgid "(1 message)"
-#~ msgstr "(1 beskjed)"
-
-#~ msgid "%s came back"
-#~ msgstr "%s kom tilbake"
-
-#, fuzzy
-#~ msgid "Default auto-away"
-#~ msgstr "Automatisk fraværsmarkering"
-
-#~ msgid "g003: Error opening connection.\n"
-#~ msgstr "g003: Feil ved tilkobling.\n"
-
-#, fuzzy
-#~ msgid "Show more buddy details"
-#~ msgstr "Vis brukerdetaljer"
-
-#~ msgid "Gnome Default"
-#~ msgstr "Gnome-standard"
-
-#~ msgid "Away m_essage:"
-#~ msgstr "Fraværsbeskjed:"
-
-#, fuzzy
-#~ msgid "Quit message"
-#~ msgstr "(1 beskjed)"
-
-#~ msgid "Restore Away State On Reconnect"
-#~ msgstr ""
-#~ "Fortsett som fraværende etter at forbindelsen har blitt gjennoprettet"
-
-#~ msgid "Mail Server"
-#~ msgstr "E-posttjener"
-
-#~ msgid "%s (%d new/%d total)"
-#~ msgstr "%s (%d nye/%d totalt)"
-
-#~ msgid "Check Mail"
-#~ msgstr "Sjekk e-post"
-
-#~ msgid "Check e-mail every X seconds.\n"
-#~ msgstr "Sjekk e-post hvert Xte sekund.\n"
-
-#~ msgid "Auto-login"
-#~ msgstr "Automatisk pålogging"
-
-#~ msgid "Signoff"
-#~ msgstr "Logge av"
-
-#~ msgid "_Hide new messages until tray icon is clicked"
-#~ msgstr "Skjul nye beskjeder inntil trayikon klikkes"
-
-#~ msgid "Not connected to AIM"
-#~ msgstr "Ikke tilkoblet til AIM"
-
-#~ msgid "No roomname given."
-#~ msgstr "Romnavn ikke oppgitt."
-
-#~ msgid "Invalid AIM URI"
-#~ msgstr "Ugyldig AIM URI"
-
-#~ msgid ""
-#~ "Failed to assign %s to a socket:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Klarte ikke tilordne %s til en socket:\n"
-#~ "%s"
-
-#~ msgid "Remote Control"
-#~ msgstr "Styre Gaim fra kontrollfil"
-
-#~ msgid "Provides remote control for gaim applications."
-#~ msgstr "Muliggjør fjernstyring for Gaim-applikasjoner."
-
-#~ msgid ""
-#~ "Gives Gaim the ability to be remote-controlled through third-party "
-#~ "applications or through the gaim-remote tool."
-#~ msgstr ""
-#~ "Lar Gaim bli kontrollert fra tredjeparts-applikasjoner eller gjennom "
-#~ "verktøyet gaim-remote."
-
-#~ msgid "Docked _Buddy List is always on top"
-#~ msgstr "Dockable kontaktliste er alltid øverst"
-
-#~ msgid "Away!"
-#~ msgstr "Borte"
-
-#~ msgid "Edit This Message"
-#~ msgstr "Rediger denne meldingen"
-
-#~ msgid "I'm Back!"
-#~ msgstr "Tilbake!"
-
-#~ msgid "Remove Away Message"
-#~ msgstr "Fjern fraværsbeskjed"
-
-#~ msgid "Set All Away"
-#~ msgstr "Marker som borte på alle"
-
-#~ msgid "You cannot save an away message with a blank title"
-#~ msgstr "Du kan ikke lagre en fraværsbeskjed uten tittel"
-
-#~ msgid ""
-#~ "Please give the message a title, or choose \"Use\" to use without saving."
-#~ msgstr ""
-#~ "Vennligst gi beskjeden en tittel, eller velg \"Bruk\" for å bruke uten "
-#~ "lagring."
-
-#~ msgid "You cannot create an empty away message"
-#~ msgstr "Du kan ikke lage en tom fraværsbeskjed"
-
-#~ msgid "Away title: "
-#~ msgstr "Tittel: "
-
-#~ msgid "Buddy List Error"
-#~ msgstr "Feil i kontaktliste"
-
-#~ msgid "Size of the expander arrow"
-#~ msgstr "Størrelse på utvider-pil"
-
-#~ msgid ""
-#~ "Usage: %s command [OPTIONS] [URI]\n"
-#~ "\n"
-#~ "    COMMANDS:\n"
-#~ "       uri                      Handle AIM: URI\n"
-#~ "       away                     Popup the away dialog with the default "
-#~ "message\n"
-#~ "       back                     Remove the away dialog\n"
-#~ "       quit                     Close running copy of Gaim\n"
-#~ "\n"
-#~ "    OPTIONS:\n"
-#~ "       -h, --help [command]     Show help for command\n"
-#~ msgstr ""
-#~ "Bruksmåte: %s kommando [FLAGG] [URI]\n"
-#~ "\n"
-#~ "    KOMMANDOER:\n"
-#~ "       uri                      Håndtere AIM-URI\n"
-#~ "       away                      Sprett opp fraværsdialogen med "
-#~ "standardmeldingen\n"
-#~ "       back                     Fjern standardmeldingen\n"
-#~ "       quit                     Lukk Gaim-program som kjører\n"
-#~ "\n"
-#~ "    FLAGG:\n"
-#~ "       -h, --help [kommando]    Vis hjelp for kommando\n"
-
-#~ msgid ""
-#~ "Gaim not running (on session 0)\n"
-#~ "Is the \"Remote Control\" plugin loaded?\n"
-#~ msgstr ""
-#~ "Gaim kjører ikke (på sesjon 0)\n"
-#~ "Er fjernstyringstillegget lastet?\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Using AIM: URIs:\n"
-#~ "Sending an IM to a screen name:\n"
-#~ "\tgaim-remote uri 'aim:goim?screenname=Penguin&message=hello+world'\n"
-#~ "In this case, 'Penguin' is the screen name we wish to IM, and 'hello "
-#~ "world'\n"
-#~ "is the message to be sent.  '+' must be used in place of spaces.\n"
-#~ "Please note the quoting used above - if you run this from a shell the "
-#~ "'&'\n"
-#~ "needs to be escaped, or the command will stop at that point.\n"
-#~ "Also,the following will just open a conversation window to a screen "
-#~ "name,\n"
-#~ "with no message:\n"
-#~ "\tgaim-remote uri 'aim:goim?screenname=Penguin'\n"
-#~ "\n"
-#~ "Joining a chat:\n"
-#~ "\tgaim-remote uri 'aim:gochat?roomname=PenguinLounge'\n"
-#~ "...joins the 'PenguinLounge' chat room.\n"
-#~ "\n"
-#~ "Adding a buddy to your buddy list:\n"
-#~ "\tgaim-remote uri 'aim:addbuddy?screenname=Penguin'\n"
-#~ "...prompts you to add 'Penguin' to your buddy list.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Bruke AIM: URIer:\n"
-#~ "Å sende en direktebeskjed til en kontakts skjermnavn:\n"
-#~ "\tgaim-remote uri 'aim:goim?screenname=Penguin&message=hello+world'\n"
-#~ "'Penguin' er skjermnavnet vi ønsker å sende direktebeskjed til, og "
-#~ "'hello\n"
-#~ "world' er beskjeden. Tegnet '+' må brukes som erstatning for mellomrom.\n"
-#~ "Merk at hvordan kommandoen over bruker anførselstegn - hvis du starter\n"
-#~ "kommandoen fra et shell, må du passe på å 'escape' tegnet &, ellers vil "
-#~ "resten\n"
-#~ "av linja ignoreres. Hvis du bare ønsker å åpne et samtalevindu til en "
-#~ "kontakt\n"
-#~ "uten å sende noen beskjed først, kan du gjøre slik:\n"
-#~ "\tgaim-remote uri aim:goim?screenname=Penguin\n"
-#~ "\n"
-#~ "For å bli med i en samtale:\n"
-#~ "\tgaim-remote uri aim:gochat?roomname=PenguinLounge\n"
-#~ "...starter en samtale i PenguinLounge-samtalerommet.\n"
-#~ "\n"
-#~ "For å legge til en kontakt i kontaktlisten:\n"
-#~ "\tgaim-remote uri aim:addbuddy?screenname=Penguin\n"
-#~ "...vil spørre deg om å legge til Penguin i kontaktlisten.\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Close running copy of Gaim\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Lukk eksisterende Gaim-program\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Mark all accounts as \"away\" with the default message.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Merk alle kontoer som \"fraværende\" med standardmeldingen.\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Set all accounts as not away.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Sett alle kontoers status til ikke fraværende.\n"
-
-#~ msgid "Show fewer options"
-#~ msgstr "Vis færre valg"
-
-#~ msgid "/Tools/_Away"
-#~ msgstr "/Verktøy/_Borte"
-
-#~ msgid "/Tools/Pl_ugin Actions"
-#~ msgstr "/Verktøy/Handlinger for tillegg"
-
-#~ msgid "Rename Group"
-#~ msgstr "Endre gruppenavn"
-
-#~ msgid "New group name"
-#~ msgstr "Nytt gruppenavn:"
-
-#~ msgid "%d%%"
-#~ msgstr "%d%%"
-
-#~ msgid ""
-#~ "\n"
-#~ "<b>Account:</b>"
-#~ msgstr ""
-#~ "\n"
-#~ "<b>Konto:</b>"
-
-#~ msgid "Warned (%d%%) "
-#~ msgstr "Advart (%d%%) "
-
-#~ msgid "/Tools/Away"
-#~ msgstr "/Verktøy/Borte"
-
-#~ msgid "Send a message to the selected buddy"
-#~ msgstr "Send beskjed til den valgte kontakten"
-
-#~ msgid "Get information on the selected buddy"
-#~ msgstr "Hent informasjon om den valgte kontakten"
-
-#~ msgid "_Chat"
-#~ msgstr "_Gruppesamtale"
-
-#~ msgid "Join a chat room"
-#~ msgstr "Bli med i samtalegruppe"
-
-#~ msgid "_Away"
-#~ msgstr "_Borte"
-
-#~ msgid "Set an away message"
-#~ msgstr "Sett en fraværsbeskjed"
-
-#~ msgid "Done."
-#~ msgstr "Ferdig."
-
-#~ msgid "Signon: "
-#~ msgstr "Pålogging: "
-
-#~ msgid "Signon"
-#~ msgstr "Pålogging"
-
-#~ msgid "Cancel All"
-#~ msgstr "A_vbryt alle"
-
-#
-#~ msgid "_Reconnect"
-#~ msgstr "Kople til på nytt"
-
-#~ msgid "Reason Unknown."
-#~ msgstr "Ukjent årsak."
-
-#
-#~ msgid "Reconnect _All"
-#~ msgstr "Kople til _alle på nytt"
-
-#~ msgid "Get Away Msg"
-#~ msgstr "Hent fraværsbeskjed"
-
-#~ msgid "/Conversation/_Warn..."
-#~ msgstr "/Samtale/A_dvar..."
-
-#~ msgid "/Conversation/A_lias..."
-#~ msgstr "/Samtale/_Alias..."
-
-#~ msgid "/Options/Show T_imestamps"
-#~ msgstr "/Brukervalg/Vis t_idsstempler"
-
-#~ msgid "/Conversation/Warn..."
-#~ msgstr "/Samtale/Advar..."
-
-#~ msgid "Warn the user"
-#~ msgstr "Advar brukeren"
-
-#~ msgid "Send a file to the user"
-#~ msgstr "Send en fil til brukeren"
-
-#~ msgid "Remove the user from your buddy list"
-#~ msgstr "Fjern brukeren fra kontaktlisten din"
-
-#~ msgid "Invite a user"
-#~ msgstr "Inviter en bruker"
-
-#~ msgid "Add the chat to your buddy list"
-#~ msgstr "Legg til samtalen i kontaktlisten din"
-
-#~ msgid "<main>/Conversation/Close"
-#~ msgstr "<main>/Samtale/Lukk"
-
-#~ msgid "former lead developer"
-#~ msgstr "tidligere hovedutvikler"
-
-#~ msgid "former maintainer"
-#~ msgstr "tidligere ansvarlig"
-
-#, fuzzy
-#~ msgid "Azerbaijani"
-#~ msgstr "Serbisk"
-
-#~ msgid "Burmese"
-#~ msgstr "Burmesisk"
-
-#~ msgid "Ukrainian"
-#~ msgstr "Ukrainsk"
-
-#
-#~ msgid "Chinese"
-#~ msgstr "Kinesisk"
-
-#~ msgid ""
-#~ "<span weight=\"bold\" size=\"larger\">Warn %s?</span>\n"
-#~ "\n"
-#~ "This will increase %s's warning level and he or she will be subject to "
-#~ "harsher rate limiting.\n"
-#~ msgstr ""
-#~ "<span weight=\"bold\" size=\"larger\">Advar %s?</span>\n"
-#~ "\n"
-#~ "Dette vil øke advarselsnivået til %s og vedkommende vil måtte tåle "
-#~ "strengere hastighetsbegrensning.\n"
-
-#~ msgid "Warn _anonymously?"
-#~ msgstr "Advar anonymt"
-
-#~ msgid "<b>Anonymous warnings are less severe.</b>"
-#~ msgstr "<b>Anonyme advarsler er mindre betydningsfulle.</b>"
-
-#~ msgid "Show transfer details"
-#~ msgstr "Vis overføringsdetaljer"
-
-#~ msgid "D_isplay remote nicknames if no alias is set"
-#~ msgstr "Vis kallenavn for personer hvis de ikke har noe alias"
-
-#~ msgid "Display"
-#~ msgstr "Vis"
-
-#~ msgid "Show _timestamp on messages"
-#~ msgstr "Vis tidsstempel på beskjeder"
-
-#~ msgid "Ignore font _faces"
-#~ msgstr "Ignorer skrifttyper"
-
-#~ msgid "_Send default formatting with outgoing messages"
-#~ msgstr "_Send standardformatering med utgående meldinger"
-
-#~ msgid "Enter _sends message"
-#~ msgstr "Enter _sender beskjeden"
-
-#~ msgid "Window Closing"
-#~ msgstr "Lukke vindu"
-
-#~ msgid "_Escape closes window"
-#~ msgstr "_ESC lukker vinduet"
-
-#~ msgid "Insertions"
-#~ msgstr "Innsettinger"
-
-#~ msgid "Control-{B/I/U} changes _formatting"
-#~ msgstr "CTRL-{b/i/u/s} endrer _formatering"
-
-#~ msgid "Control-(number) _inserts smileys"
-#~ msgstr "CTRL-(tall) setter _inn smilefjes"
-
-#~ msgid "Show _buttons as:"
-#~ msgstr "Vis knapper som:"
-
-#~ msgid "Text"
-#~ msgstr "Tekst"
-
-#~ msgid "Pictures and text"
-#~ msgstr "Bilder og tekst"
-
-#~ msgid "_Raise window on events"
-#~ msgstr "Flytt vinduet øverst ved hendelser"
-
-#~ msgid "Show _warning levels"
-#~ msgstr "Vis advarselsnivåer"
-
-#~ msgid "Enable \"_slash\" commands"
-#~ msgstr "Skru på \"_skråstreks\"-kommandoer"
-
-#~ msgid "_Raise IM window on events"
-#~ msgstr "Flytt direktemeldingsvindu øverst ved hendelser"
-
-#~ msgid "Raise chat _window on events"
-#~ msgstr "Flytt gruppesamtalevinduet øverst ved hendelser"
-
-#~ msgid "Use _multi-colored screen names in chats"
-#~ msgstr "Bruk _flerfargede brukernavn i samtalegrupper"
-
-#~ msgid "Tab p_lacement:"
-#~ msgstr "_Faneplassering:"
-
-#~ msgid "New conversation _placement:"
-#~ msgstr "Ny samtale_plassering"
-
-#~ msgid "System Logs"
-#~ msgstr "Systemlogging"
-
-#~ msgid "_Enable system log"
-#~ msgstr "Skru på _systemlogg:"
-
-#~ msgid "Log when buddies _sign on/sign off"
-#~ msgstr "Skriv til logg når kontakter logger av/på"
-
-#~ msgid "Log when buddies become _idle/un-idle"
-#~ msgstr "Skriv til logg når kontakter blir aktiv/inaktiv"
-
-#~ msgid "Log when buddies go away/come _back"
-#~ msgstr "Skriv til logg når kontakter blir borte/kommer tilbake"
-
-#~ msgid "Log your _own signons/idleness/awayness"
-#~ msgstr "Skriv egne pålogginger/inaktivitet/bortemarkeringer til logg"
-
-#~ msgid "Idle _time reporting:"
-#~ msgstr "Rapportering av inaktiv _tid:"
-
-#~ msgid "Gaim usage"
-#~ msgstr "Gaim-bruk"
-
-#~ msgid "X usage"
-#~ msgstr "X-bruk"
-
-#~ msgid "Windows usage"
-#~ msgstr "Windows-bruk"
-
-#~ msgid ""
-#~ "<span size=\"larger\">%s %s</span>\n"
-#~ "\n"
-#~ "<span weight=\"bold\">Written by:</span>  %s\n"
-#~ "<span weight=\"bold\">URL:</span>  %s\n"
-#~ "<span weight=\"bold\">File name:</span>  %s"
-#~ msgstr ""
-#~ "<span size=\"larger\">%s %s</span>\n"
-#~ "\n"
-#~ "<span weight=\"bold\">Skrevet av:</span>  %s\n"
-#~ "<span weight=\"bold\">URL:</span>  %s\n"
-#~ "<span weight=\"bold\">Filnavn:</span>  %s"
-
-#~ msgid "Summary"
-#~ msgstr "Oppsummering"
-
-#~ msgid "Details"
-#~ msgstr "Detaljer"
-
-#~ msgid "Message Text"
-#~ msgstr "Beskjeder"
-
-#~ msgid "Shortcuts"
-#~ msgstr "Hurtigtaster"
-
-#~ msgid "Away Messages"
-#~ msgstr "Fraværsbeskjeder"
-
-#~ msgid "Please create an account."
-#~ msgstr "Vennligst lag en konto."
-
-#~ msgid "<b>_Account:</b>"
-#~ msgstr "<b>_Konto:</b>"
-
-#~ msgid "A_ccounts"
-#~ msgstr "Kontoer"
-
-#, fuzzy
-#~ msgid "P_references"
-#~ msgstr "Innstillinger"
-
-#~ msgid "_Sign on"
-#~ msgstr "Logg _på"
-
-#~ msgid ""
-#~ "Gaim %s\n"
-#~ "Usage: %s [OPTION]...\n"
-#~ "\n"
-#~ "  -a, --acct          display account editor window\n"
-#~ "  -w, --away[=MESG]   make away on signon (optional argument MESG "
-#~ "specifies\n"
-#~ "                      name of away message to use)\n"
-#~ "  -l, --login[=NAME]  automatically login (optional argument NAME "
-#~ "specifies\n"
-#~ "                      account(s) to use, seperated by commas)\n"
-#~ "  -n, --loginwin      don't automatically login; show login window\n"
-#~ "  -u, --user=NAME     use account NAME\n"
-#~ "  -c, --config=DIR    use DIR for config files\n"
-#~ "  -d, --debug         print debugging messages to stdout\n"
-#~ "  -v, --version       display the current version and exit\n"
-#~ "  -h, --help          display this help and exit\n"
-#~ msgstr ""
-#~ "Gaim %s\n"
-#~ "Bruksmåte: %s [BRUKERVALG]...\n"
-#~ "\n"
-#~ "  -a, --acct          vis redigeringsvindu for kontoer\n"
-#~ "  -w, --away[=MESG]   marker som borte ved pålogging (valgfri MESG er "
-#~ "navnet\n"
-#~ "                      på bortebeskjeden du vil bruke)\n"
-#~ "  -l, --login[=NAME]  logg inn automatisk (valgfri NAME er navnet på\n"
-#~ "                      konto(er) du vil bruke, atskilt av komma)\n"
-#~ "  -n, --loginwin      ikke logg inn automatisk, men vis påloggingsvindu\n"
-#~ "  -u, --user=NAME     bruk kontoen NAME\n"
-#~ "  -f, --file=FILE     bruk filen FILE som konfigurasjonsfil\n"
-#~ "  -d, --debug         skriv avlusningsinfo til stdout\n"
-#~ "  -v, --version       vis versjonsinformasjon og avslutt\n"
-#~ "  -h, --help          vis denne hjelpeteksten og avslutt\n"
-
-#~ msgid "Unable to load preferences"
-#~ msgstr "Kunne ikke åpne innstillinger"
-
-#~ msgid ""
-#~ "Gaim was not able to load your preferences because they are stored in an "
-#~ "old format that is no longer used.  Please reconfigure your settings "
-#~ "using the Preferences window."
-#~ msgstr ""
-#~ "Gaim kunne ikke åpne dine instillinger, da de er lagret i et gammelt "
-#~ "format som ikke lenger er i bruk.  Vennligst rekonfigurer dine  "
-#~ "instillinger ved hjelp av innstillingsvinduet"
-
-#~ msgid "Slightly less boring default"
-#~ msgstr "kjedelig standardsvar"
-
-#~ msgid "Available for friends only"
-#~ msgstr "Tilgjengelig bare for venner"
-
-#~ msgid "Away for friends only"
-#~ msgstr "Borte bare for venner"
-
-#~ msgid "Invisible for friends only"
-#~ msgstr "Usynlig bare for venner"
-
-#~ msgid "Error while writing to socket."
-#~ msgstr "Feil under skriving til socket."
-
-#~ msgid "Authentication failed."
-#~ msgstr "Autentisering feilet."
-
-#~ msgid "Unknown Error Code."
-#~ msgstr "Ukjent feilkode."
-
-#~ msgid "Balancer handshake"
-#~ msgstr "Finner ledig tjener"
-
-#~ msgid "Reading server key"
-#~ msgstr "Leser tjenernøkkel"
-
-#~ msgid "Exchanging key hash"
-#~ msgstr "Utveksler nøkkel-hash"
-
-#~ msgid "Critical error in GG library\n"
-#~ msgstr "Kritisk feil i GG-biblioteket\n"
-
-#~ msgid "Unable to ping server"
-#~ msgstr "Kunne ikke pinge tjener"
-
-#~ msgid "Send as message"
-#~ msgstr "Send som beskjed"
-
-#~ msgid "Looking up GG server"
-#~ msgstr "Søker etter GG-tjener"
-
-#~ msgid "Invalid Gadu-Gadu UIN specified"
-#~ msgstr "Ugyldig Gadu-Gadu UIN oppgitt"
-
-#~ msgid "You are trying to send a message to an invalid Gadu-Gadu UIN."
-#~ msgstr "Du prøver å sende en beskjed til et ugyldig Gadu-Gadu UIN."
-
-#~ msgid "Couldn't get search results"
-#~ msgstr "Kunne ikke laste ned søkeresultater"
-
-#~ msgid "Sex"
-#~ msgstr "Kjønn"
-
-#~ msgid "Couldn't Import Buddy List from Server"
-#~ msgstr "Kunne ikke importere kontaktliste fra tjeneren"
-
-#~ msgid "Buddy List successfully transferred to Gadu-Gadu server"
-#~ msgstr "Kontaktlisten ble overført til Gadu-Gadu-tjeneren"
-
-#~ msgid "Couldn't transfer Buddy List to Gadu-Gadu server"
-#~ msgstr "Kunne ikke overføre kontaktlisten til Gadu-Gadu-tjeneren"
-
-#~ msgid "Buddy List successfully deleted from Gadu-Gadu server"
-#~ msgstr "Kontaktlisten ble slettet fra Gadu-Gadu-tjeneren"
-
-#~ msgid "Couldn't delete Buddy List from Gadu-Gadu server"
-#~ msgstr "Kunne ikke slette kontaktlisten fra Gadu-Gadu-tjeneren"
-
-#~ msgid "Password couldn't be changed"
-#~ msgstr "Passordet kunne ikke endres"
-
-#~ msgid "Error communicating with Gadu-Gadu server"
-#~ msgstr "Feil i kommunikasjonen med Gadu-Gadu-tjeneren"
-
-#~ msgid ""
-#~ "Gaim was unable to complete your request due to a problem communicating "
-#~ "with the Gadu-Gadu HTTP server.  Please try again later."
-#~ msgstr ""
-#~ "Gaim kunne ikke fullføre oppgaven på grunn av kommunikasjonsproblemer med "
-#~ "Gadu-Gadu-HTTP-tjeneren. Vennligst forsøk igjen senere."
-
-#~ msgid "Unable to import Gadu-Gadu buddy list"
-#~ msgstr "Kunne ikke importere Gadu-Gadu-kontaktliste"
-
-#~ msgid ""
-#~ "Gaim was unable to connect to the Gadu-Gadu buddy list server.  Please "
-#~ "try again later."
-#~ msgstr ""
-#~ "Gaim kunne ikke koble til kontaktliste-tjeneren for Gadu-Gadu. Vennligst "
-#~ "forsøk igjen senere."
-
-#~ msgid ""
-#~ "Gaim was unable to connect to the buddy list server.  Please try again "
-#~ "later."
-#~ msgstr ""
-#~ "Gaim kunne ikke koble til kontaktliste-tjeneren. Vennligst forsøk igjen "
-#~ "senere."
-
-#~ msgid "Unable to delete Gadu-Gadu buddy list"
-#~ msgstr "Kunne ikke slette kontaktliste for Gadu-Gadu"
-
-#~ msgid "Unable to access directory"
-#~ msgstr "Fikk ikke tilgang til katalogen"
-
-#~ msgid ""
-#~ "Gaim was unable to search the Directory because it was unable to connect "
-#~ "to the directory server.  Please try again later."
-#~ msgstr ""
-#~ "Gaim kunne ikke søke i katalogen fordi den ikke fikk kontakt med "
-#~ "katalogtjeneren. Vennligst prøv igjen senere."
-
-#~ msgid ""
-#~ "Gaim was unable to change your password due to an error connecting to the "
-#~ "Gadu-Gadu server.  Please try again later."
-#~ msgstr ""
-#~ "Gaim fikk ikke kontakt med Gadu-Gadu-tjeneren og kunne ikke endre "
-#~ "passordet ditt. Vennligst forsøk igjen senere."
-
-#~ msgid "Directory Search"
-#~ msgstr "Katalogsøk"
-
-#~ msgid "Unable to access user profile."
-#~ msgstr "Fikk ikke tilgang til brukerprofilen."
-
-#~ msgid ""
-#~ "Gaim was unable to access this user's profile due to an error connecting "
-#~ "to the directory server.  Please try again later."
-#~ msgstr ""
-#~ "Gaim kunne ikke lese brukerprofilen på grunn av tilkoblingsproblemer mot "
-#~ "katalogtjeneren. Vennligst forsøk igjen senere."
-
-#~ msgid "Gaim encountered an error communicating with the ICQ server."
-#~ msgstr "Det oppstod en feil i kommunikasjonen med ICQ-tjeneren."
-
-#~ msgid "The user %s (%s%s%s%s%s) wants you to authorize them."
-#~ msgstr "Brukeren %s (%s%s%s%s%s) ønsker å bli godkjent av deg."
-
-#~ msgid "Send message through server"
-#~ msgstr "Send beskjed gjennom tjener"
-
-#~ msgid "Nick:"
-#~ msgstr "Kallenavn:"
-
-#~ msgid "Gaim User"
-#~ msgstr "Gaim-bruker"
-
-#~ msgid "File Transfer Aborted"
-#~ msgstr "Filoverføring avbrutt"
-
-#~ msgid "Buddy Information for %s"
-#~ msgstr "Kontaktinformasjon for %s"
-
-#~ msgid "Invalid nickname '%s'"
-#~ msgstr "Ugyldig brukernavn '%s'"
-
-#~ msgid "Jabber Profile"
-#~ msgstr "Jabber-profil"
-
-#
-#~ msgid "Roomlist Error"
-#~ msgstr "Feil ved liste over rom"
-
-#~ msgid "The user %s wants to add you to their buddy list."
-#~ msgstr "Brukeren %s vil legge deg til i sin kontaktliste."
-
-#~ msgid "Display conversation closed notices"
-#~ msgstr "Vis advasler om at samtalen har blitt lukket"
-
-#~ msgid "The conversation has become inactive and timed out."
-#~ msgstr "Samtalen har blitt avsluttet pga. inaktivitet."
-
-#~ msgid ""
-#~ "You were disconnected from the server, because you logged on from a "
-#~ "different location"
-#~ msgstr "Du ble logget av fordi du har logget på et annet sted."
-
-#, fuzzy
-#~ msgid "User Properties"
-#~ msgstr "Brukervalg"
-
-#, fuzzy
-#~ msgid "Transfer of file %s timed out."
-#~ msgstr "Overføring av filen %s er ferdig."
-
-#~ msgid ""
-#~ "You have been disconnected because you have signed on with this screen "
-#~ "name at another location."
-#~ msgstr ""
-#~ "Du ble logget av fordi du har logget på med dette skjermnavnet et annet "
-#~ "sted."
-
-# Gammel "uventet", kansje bedre?
-#, fuzzy
-#~ msgid "Not specified"
-#~ msgstr "Ikke spesifisert"
-
-#~ msgid "ICQ Info for %s"
-#~ msgstr "ICQ-info for %s"
-
-#~ msgid ""
-#~ "Error 0x%04x: Unable to format screen name because the requested screen "
-#~ "name ends in a space."
-#~ msgstr ""
-#~ "Feil 0x%04x: Kunne ikke formatere skjermnavnet fordi det forespurte "
-#~ "skjermnavnet slutter med et mellomrom."
-
-#~ msgid "I'm doing work and hoping for a distraction--IM me!"
-#~ msgstr "Jeg jobber og håper at noen skal forstyrre - send meg en beskjed!"
-
-#~ msgid "Set Available Message..."
-#~ msgstr "Sett tilstedebeskjed..."
-
-#~ msgid "Failed to leave channel"
-#~ msgstr "Kunne ikke forlate kanalen"
-
-#~ msgid "Basic Profile"
-#~ msgstr "Grunnleggende profil"
-
-#~ msgid "AIM"
-#~ msgstr "AIM"
-
-#~ msgid "ICQ UIN"
-#~ msgstr "ICQ UIN"
-
-#~ msgid "MSN"
-#~ msgstr "MSN"
-
-#~ msgid "Yahoo"
-#~ msgstr "Yahoo"
-
-#~ msgid "I'm From"
-#~ msgstr "Jeg er fra"
-
-#~ msgid "Set your Trepia profile data."
-#~ msgstr "Skriv inn data i din Trepia-profil."
-
-#~ msgid "Visit Homepage"
-#~ msgstr "Besøk hjemmeside"
-
-#~ msgid "Local Users"
-#~ msgstr "Lokale brukere"
-
-#~ msgid "Trepia Protocol Plugin"
-#~ msgstr "Trepia-protokolltillegg"
-
-#~ msgid ""
-#~ "You have been logged off as you have logged in on a different machine or "
-#~ "device."
-#~ msgstr "Du har blitt logget av, da du har logget inn et annet sted"
-
-#~ msgid "Please enter your password"
-#~ msgstr "Skriv inn passord"
-
-#~ msgid "%s logged in."
-#~ msgstr "%s logget inn."
-
-#~ msgid "%s logged out."
-#~ msgstr "%s logget ut."
-
-#~ msgid ""
-#~ "%s has just been warned by %s.\n"
-#~ "Your new warning level is %d%%"
-#~ msgstr ""
-#~ "%s har blitt advart av %s.\n"
-#~ "Ditt nye advarselsnivå er %d%%"
-
-#~ msgid "an anonymous person"
-#~ msgstr "en anonym person"
-
-#~ msgid ""
-#~ "%s has invited %s to the chat room %s:\n"
-#~ "<b>%s</b>"
-#~ msgstr ""
-#~ "Brukeren '%s' inviterer %s til samtalerom: '%s'\n"
-#~ "<b>%s</b>"
-
-#~ msgid "Sorry, I ran out for a bit!"
-#~ msgstr "Borte litt, tilbake om en stund!"
-
-#~ msgid ""
-#~ "Unable to guess the image type based on the file extension supplied.  "
-#~ "Defaulting to PNG."
-#~ msgstr ""
-#~ "Gaim kunne ikke gjette bildetypen ut fra filtypen (siste del av "
-#~ "filnavnet). Antar PNG-format."
-
-#~ msgid "SILC Public Key"
-#~ msgstr "SILC offentlig nøkkel"
-
-#~ msgid "SILC Private Key"
-#~ msgstr "SILC privat nøkkel"
--- a/po/sk.po	Tue Oct 23 17:05:12 2007 +0000
+++ b/po/sk.po	Tue Oct 23 17:27:12 2007 +0000
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: pidgin-1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-09-28 15:32-0500\n"
+"POT-Creation-Date: 2007-10-02 04:01-0400\n"
 "PO-Revision-Date: 2007-09-10 17:31+0000\n"
 "Last-Translator: helix84 <helix84@centrum.sk>\n"
 "Language-Team: Slovak <kde-sk@linux.sk>\n"
@@ -51,7 +51,7 @@
 "  -n, --nologin       neprihlasovať automaticky\n"
 "  -v, --version       zobrazí verziu programu a skončí\n"
 
-#: ../finch/finch.c:328 ../pidgin/gtkmain.c:711
+#: ../finch/finch.c:328 ../pidgin/gtkmain.c:718
 #, c-format
 msgid ""
 "%s encountered errors migrating your settings from %s to %s. Please "
@@ -63,11 +63,11 @@
 "http://developer.pidgin.im"
 
 #: ../finch/gntaccount.c:124 ../finch/gntaccount.c:484 ../finch/gntblist.c:300
-#: ../finch/gntblist.c:433 ../finch/gntblist.c:446 ../finch/gntplugin.c:186
-#: ../finch/gntplugin.c:234 ../finch/gntstatus.c:301 ../finch/gntstatus.c:310
+#: ../finch/gntblist.c:433 ../finch/gntblist.c:446 ../finch/gntplugin.c:187
+#: ../finch/gntplugin.c:235 ../finch/gntstatus.c:301 ../finch/gntstatus.c:310
 #: ../finch/plugins/gntclipboard.c:115 ../finch/plugins/gntclipboard.c:121
 #: ../finch/plugins/gntclipboard.c:128
-#: ../libpurple/protocols/jabber/buddy.c:2029
+#: ../libpurple/protocols/jabber/buddy.c:2032
 #: ../libpurple/protocols/jabber/chat.c:677
 #: ../libpurple/protocols/jabber/chat.c:688
 #: ../libpurple/protocols/jabber/jabber.c:1515
@@ -102,8 +102,8 @@
 msgid "(You probably forgot to 'make install'.)"
 msgstr "(Pravdepodobne ste zabudli na „make install“.)"
 
-#: ../finch/gntaccount.c:496 ../finch/gntconn.c:136
-#: ../pidgin/gtkaccount.c:1473 ../pidgin/gtkblist.c:4040
+#: ../finch/gntaccount.c:496 ../finch/gntconn.c:137
+#: ../pidgin/gtkaccount.c:1473 ../pidgin/gtkblist.c:4322
 msgid "Modify Account"
 msgstr "Upraviť účet"
 
@@ -133,18 +133,18 @@
 #: ../finch/gntaccount.c:575 ../finch/gntaccount.c:638
 #: ../finch/gntaccount.c:889 ../finch/gntblist.c:344 ../finch/gntblist.c:421
 #: ../finch/gntblist.c:456 ../finch/gntblist.c:803 ../finch/gntblist.c:1005
-#: ../finch/gntblist.c:1101 ../finch/gntblist.c:2222 ../finch/gntcertmgr.c:91
-#: ../finch/gntplugin.c:379 ../finch/gntpounce.c:459 ../finch/gntpounce.c:667
-#: ../finch/gntprefs.c:265 ../finch/gntsound.c:1058 ../finch/gntstatus.c:145
-#: ../finch/gntstatus.c:485 ../finch/gntstatus.c:610
+#: ../finch/gntblist.c:1101 ../finch/gntblist.c:2224 ../finch/gntblist.c:2287
+#: ../finch/gntcertmgr.c:91 ../finch/gntplugin.c:472 ../finch/gntpounce.c:459
+#: ../finch/gntpounce.c:667 ../finch/gntprefs.c:265 ../finch/gntsound.c:1058
+#: ../finch/gntstatus.c:145 ../finch/gntstatus.c:485 ../finch/gntstatus.c:610
 #: ../libpurple/account.c:1013 ../libpurple/account.c:1263
 #: ../libpurple/account.c:1298 ../libpurple/conversation.c:1215
 #: ../libpurple/plugins/buddynote.c:51 ../libpurple/protocols/gg/gg.c:507
 #: ../libpurple/protocols/gg/gg.c:666 ../libpurple/protocols/gg/gg.c:803
 #: ../libpurple/protocols/gg/gg.c:884
 #: ../libpurple/protocols/jabber/buddy.c:728
-#: ../libpurple/protocols/jabber/buddy.c:2413
-#: ../libpurple/protocols/jabber/buddy.c:2449
+#: ../libpurple/protocols/jabber/buddy.c:2416
+#: ../libpurple/protocols/jabber/buddy.c:2452
 #: ../libpurple/protocols/jabber/chat.c:786
 #: ../libpurple/protocols/jabber/jabber.c:1008
 #: ../libpurple/protocols/jabber/jabber.c:1017
@@ -153,10 +153,10 @@
 #: ../libpurple/protocols/jabber/usermood.c:184
 #: ../libpurple/protocols/jabber/usernick.c:78
 #: ../libpurple/protocols/jabber/xdata.c:400
-#: ../libpurple/protocols/msn/msn.c:287 ../libpurple/protocols/msn/msn.c:304
-#: ../libpurple/protocols/msn/msn.c:321 ../libpurple/protocols/msn/msn.c:338
-#: ../libpurple/protocols/msn/msn.c:359
-#: ../libpurple/protocols/oscar/oscar.c:6094
+#: ../libpurple/protocols/msn/msn.c:290 ../libpurple/protocols/msn/msn.c:307
+#: ../libpurple/protocols/msn/msn.c:324 ../libpurple/protocols/msn/msn.c:341
+#: ../libpurple/protocols/msn/msn.c:362
+#: ../libpurple/protocols/oscar/oscar.c:6146
 #: ../libpurple/protocols/oscar/peer.c:1046
 #: ../libpurple/protocols/qq/buddy_info.c:484
 #: ../libpurple/protocols/qq/buddy_opt.c:214
@@ -191,10 +191,10 @@
 #: ../libpurple/protocols/silc10/ops.c:1904
 #: ../libpurple/protocols/silc10/silc.c:736
 #: ../libpurple/protocols/silc10/silc.c:942
-#: ../libpurple/protocols/yahoo/yahoo.c:1032
-#: ../libpurple/protocols/yahoo/yahoo.c:3498
-#: ../libpurple/protocols/yahoo/yahoo.c:3509 ../pidgin/gtkaccount.c:1908
-#: ../pidgin/gtkaccount.c:2495 ../pidgin/gtkblist.c:5967
+#: ../libpurple/protocols/yahoo/yahoo.c:1034
+#: ../libpurple/protocols/yahoo/yahoo.c:3500
+#: ../libpurple/protocols/yahoo/yahoo.c:3511 ../pidgin/gtkaccount.c:1908
+#: ../pidgin/gtkaccount.c:2495 ../pidgin/gtkblist.c:6267
 #: ../pidgin/gtkcertmgr.c:197 ../pidgin/gtkdialogs.c:773
 #: ../pidgin/gtkdialogs.c:912 ../pidgin/gtkdialogs.c:1004
 #: ../pidgin/gtkdialogs.c:1024 ../pidgin/gtkdialogs.c:1048
@@ -202,7 +202,7 @@
 #: ../pidgin/gtkdialogs.c:1159 ../pidgin/gtkdialogs.c:1215
 #: ../pidgin/gtkdialogs.c:1254 ../pidgin/gtkdialogs.c:1281
 #: ../pidgin/gtkimhtmltoolbar.c:435 ../pidgin/gtklog.c:328
-#: ../pidgin/gtkplugin.c:289 ../pidgin/gtkpounce.c:1101
+#: ../pidgin/gtkplugin.c:289 ../pidgin/gtkpounce.c:1108
 #: ../pidgin/gtkprivacy.c:563 ../pidgin/gtkprivacy.c:579
 #: ../pidgin/gtkprivacy.c:604 ../pidgin/gtkprivacy.c:618
 #: ../pidgin/gtkrequest.c:271 ../pidgin/gtksavedstatuses.c:345
@@ -212,8 +212,8 @@
 
 #. Save button
 #. Save
-#: ../finch/gntaccount.c:579 ../finch/gntcertmgr.c:311
-#: ../finch/gntplugin.c:379 ../finch/gntpounce.c:465 ../finch/gntprefs.c:265
+#: ../finch/gntaccount.c:579 ../finch/gntcertmgr.c:311 ../finch/gntdebug.c:297
+#: ../finch/gntplugin.c:472 ../finch/gntpounce.c:465 ../finch/gntprefs.c:265
 #: ../finch/gntsound.c:1055 ../finch/gntstatus.c:488 ../finch/gntstatus.c:598
 #: ../libpurple/account.c:1297 ../libpurple/plugins/buddynote.c:50
 #: ../libpurple/protocols/jabber/buddy.c:727 ../pidgin/gtkdebug.c:749
@@ -236,12 +236,12 @@
 #: ../finch/gntcertmgr.c:319 ../finch/gntpounce.c:666 ../finch/gntpounce.c:729
 #: ../finch/gntstatus.c:144 ../finch/gntstatus.c:210
 #: ../pidgin/gtkaccount.c:1907 ../pidgin/gtklog.c:327
-#: ../pidgin/gtkpounce.c:1100 ../pidgin/gtkrequest.c:274
+#: ../pidgin/gtkpounce.c:1107 ../pidgin/gtkrequest.c:274
 #: ../pidgin/gtksavedstatuses.c:344 ../pidgin/gtkstatusbox.c:1573
 msgid "Delete"
 msgstr "Odstrániť"
 
-#: ../finch/gntaccount.c:669 ../finch/gntblist.c:2119 ../finch/gntui.c:82
+#: ../finch/gntaccount.c:669 ../finch/gntblist.c:2121 ../finch/gntui.c:82
 #: ../pidgin/gtkaccount.c:2325 ../pidgin/gtkdocklet.c:522
 msgid "Accounts"
 msgstr "Účty"
@@ -252,15 +252,16 @@
 
 #. Add button
 #: ../finch/gntaccount.c:698 ../finch/gntaccount.c:888 ../finch/gntblist.c:343
-#: ../finch/gntblist.c:421 ../finch/gntblist.c:456 ../finch/gntcertmgr.c:306
-#: ../finch/gntnotify.c:380 ../finch/gntpounce.c:713 ../finch/gntstatus.c:199
-#: ../libpurple/protocols/gg/gg.c:883 ../libpurple/protocols/qq/sys_msg.c:114
+#: ../finch/gntblist.c:421 ../finch/gntblist.c:456 ../finch/gntblist.c:2372
+#: ../finch/gntcertmgr.c:306 ../finch/gntnotify.c:383 ../finch/gntpounce.c:713
+#: ../finch/gntstatus.c:199 ../libpurple/protocols/gg/gg.c:883
+#: ../libpurple/protocols/qq/sys_msg.c:114
 #: ../libpurple/protocols/qq/sys_msg.c:173
 #: ../libpurple/protocols/qq/sys_msg.c:267
 #: ../libpurple/protocols/sametime/sametime.c:5486
 #: ../libpurple/protocols/silc/chat.c:615
 #: ../libpurple/protocols/silc10/chat.c:599 ../pidgin/gtkaccount.c:2494
-#: ../pidgin/gtkblist.c:5966 ../pidgin/gtkconv.c:1659
+#: ../pidgin/gtkblist.c:6266 ../pidgin/gtkconv.c:1712
 #: ../pidgin/gtkrequest.c:275
 msgid "Add"
 msgstr "Pridať"
@@ -322,13 +323,13 @@
 msgid "Error adding buddy"
 msgstr "Chyba počas pridávania priateľa"
 
-#: ../finch/gntblist.c:325 ../libpurple/protocols/oscar/oscar.c:2888
+#: ../finch/gntblist.c:325 ../libpurple/protocols/oscar/oscar.c:2902
 #: ../pidgin/gtkaccount.c:1981 ../pidgin/gtksavedstatuses.c:980
 msgid "Screen Name"
 msgstr "Používateľské meno"
 
 #: ../finch/gntblist.c:328 ../finch/gntblist.c:410 ../finch/gntblist.c:1250
-#: ../libpurple/protocols/msn/msn.c:1395
+#: ../libpurple/protocols/msn/msn.c:1507
 #: ../libpurple/protocols/silc/chat.c:606
 #: ../libpurple/protocols/silc10/chat.c:590
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:704
@@ -344,10 +345,11 @@
 msgstr "Skupina"
 
 #: ../finch/gntblist.c:335 ../finch/gntblist.c:401 ../finch/gntblist.c:1305
-#: ../finch/gntnotify.c:174 ../finch/gntstatus.c:576
-#: ../libpurple/plugins/idle.c:153 ../libpurple/plugins/idle.c:190
-#: ../pidgin/gtkblist.c:3008 ../pidgin/gtknotify.c:506
-#: ../pidgin/gtkpounce.c:1268 ../pidgin/plugins/gevolution/gevolution.c:445
+#: ../finch/gntblist.c:2210 ../finch/gntblist.c:2274 ../finch/gntnotify.c:174
+#: ../finch/gntstatus.c:576 ../libpurple/plugins/idle.c:153
+#: ../libpurple/plugins/idle.c:190 ../pidgin/gtkblist.c:3206
+#: ../pidgin/gtknotify.c:511 ../pidgin/gtkpounce.c:1275
+#: ../pidgin/plugins/gevolution/gevolution.c:445
 msgid "Account"
 msgstr "Účet"
 
@@ -360,7 +362,7 @@
 #: ../libpurple/protocols/silc10/buddy.c:1033
 #: ../libpurple/protocols/silc10/buddy.c:1080
 #: ../libpurple/protocols/silc10/buddy.c:1180
-#: ../libpurple/protocols/yahoo/yahoo.c:3343 ../pidgin/gtkblist.c:5483
+#: ../libpurple/protocols/yahoo/yahoo.c:3345 ../pidgin/gtkblist.c:5772
 #: ../pidgin/plugins/gevolution/add_buddy_dialog.c:445
 msgid "Add Buddy"
 msgstr "Pridať priateľa"
@@ -369,15 +371,16 @@
 msgid "Please enter buddy information."
 msgstr "Zadajte, prosím, informáciu o priateľovi."
 
-#: ../finch/gntblist.c:370 ../libpurple/blist.c:1209
+#: ../finch/gntblist.c:370 ../libpurple/blist.c:1210
 msgid "Chats"
 msgstr "Chaty"
 
 #. Extract their Name and put it in
-#: ../finch/gntblist.c:407 ../libpurple/protocols/jabber/jabber.c:924
+#: ../finch/gntblist.c:407 ../finch/gntblist.c:2205
+#: ../libpurple/protocols/jabber/jabber.c:924
 #: ../libpurple/protocols/jabber/jabber.c:927
-#: ../libpurple/protocols/msn/msn.c:1584 ../libpurple/protocols/msn/msn.c:1649
-#: ../libpurple/protocols/msn/msn.c:1676
+#: ../libpurple/protocols/msn/msn.c:1694 ../libpurple/protocols/msn/msn.c:1759
+#: ../libpurple/protocols/msn/msn.c:1786
 #: ../libpurple/protocols/qq/buddy_info.c:44 ../pidgin/gtkplugin.c:582
 #: ../pidgin/gtkroomlist.c:618
 #: ../pidgin/plugins/gevolution/add_buddy_dialog.c:132
@@ -389,7 +392,7 @@
 msgid "Auto-join"
 msgstr "Prihlásiť automaticky"
 
-#: ../finch/gntblist.c:419 ../finch/gntblist.c:854 ../pidgin/gtkblist.c:5859
+#: ../finch/gntblist.c:419 ../finch/gntblist.c:854 ../pidgin/gtkblist.c:6154
 msgid "Add Chat"
 msgstr "Pridať chat"
 
@@ -411,7 +414,7 @@
 
 #: ../finch/gntblist.c:454 ../finch/gntblist.c:856
 #: ../libpurple/protocols/sametime/sametime.c:5396
-#: ../libpurple/protocols/sametime/sametime.c:5484 ../pidgin/gtkblist.c:5963
+#: ../libpurple/protocols/sametime/sametime.c:5484 ../pidgin/gtkblist.c:6263
 msgid "Add Group"
 msgstr "Pridať skupinu"
 
@@ -443,7 +446,7 @@
 msgid "Retrieving..."
 msgstr "Prijíma sa..."
 
-#: ../finch/gntblist.c:904 ../finch/gntconv.c:507
+#: ../finch/gntblist.c:904 ../finch/gntconv.c:534
 #: ../libpurple/protocols/silc/chat.c:899
 #: ../libpurple/protocols/silc10/chat.c:883
 msgid "Get Info"
@@ -454,10 +457,10 @@
 msgstr "Pridať sledovanie priateľa"
 
 #. if (q_bud && is_online(q_bud->status)) {
-#: ../finch/gntblist.c:915 ../finch/gntconv.c:519
+#: ../finch/gntblist.c:915 ../finch/gntconv.c:546
 #: ../libpurple/protocols/jabber/si.c:874
 #: ../libpurple/protocols/oscar/oscar.c:654 ../libpurple/protocols/qq/qq.c:587
-#: ../pidgin/gtkconv.c:1607
+#: ../pidgin/gtkconv.c:1660
 msgid "Send File"
 msgstr "Odoslať súbor"
 
@@ -503,14 +506,14 @@
 msgstr "Potvrdiť odstránenie"
 
 #: ../finch/gntblist.c:1100 ../finch/gntblist.c:1252 ../finch/gntft.c:227
-#: ../pidgin/gtkconv.c:1656 ../pidgin/gtkrequest.c:276
+#: ../pidgin/gtkconv.c:1709 ../pidgin/gtkrequest.c:276
 #: ../pidgin/gtkstatusbox.c:264
 msgid "Remove"
 msgstr "Odstrániť"
 
 #. Buddy List
-#: ../finch/gntblist.c:1226 ../finch/gntblist.c:2307 ../finch/gntprefs.c:258
-#: ../finch/gntui.c:83 ../pidgin/gtkblist.c:2688 ../pidgin/gtkblist.c:4284
+#: ../finch/gntblist.c:1226 ../finch/gntblist.c:2422 ../finch/gntprefs.c:258
+#: ../finch/gntui.c:83 ../pidgin/gtkblist.c:2886 ../pidgin/gtkblist.c:4566
 #: ../pidgin/plugins/win32/winprefs/winprefs.c:326
 msgid "Buddy List"
 msgstr "Zoznam priateľov"
@@ -529,15 +532,15 @@
 #: ../libpurple/protocols/gg/gg.c:2207
 #: ../libpurple/protocols/jabber/buddy.c:286
 #: ../libpurple/protocols/jabber/buddy.c:1247
-#: ../libpurple/protocols/jabber/buddy.c:2214
-#: ../libpurple/protocols/jabber/buddy.c:2396
+#: ../libpurple/protocols/jabber/buddy.c:2217
+#: ../libpurple/protocols/jabber/buddy.c:2399
 #: ../libpurple/protocols/jabber/jabber.c:937
 #: ../libpurple/protocols/jabber/jabber.c:1544
 #: ../libpurple/protocols/jabber/jabber.c:1567
 #: ../libpurple/protocols/jabber/jabber.c:1590
 #: ../libpurple/protocols/jabber/jabber.c:1613
 #: ../libpurple/protocols/jabber/jabber.c:1636
-#: ../libpurple/protocols/msn/msn.c:1403 ../libpurple/protocols/msn/msn.c:1587
+#: ../libpurple/protocols/msn/msn.c:1515 ../libpurple/protocols/msn/msn.c:1697
 #: ../libpurple/protocols/qq/buddy_info.c:43
 #: ../libpurple/protocols/silc/buddy.c:1535
 #: ../libpurple/protocols/silc/ops.c:1002
@@ -547,7 +550,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1036
 #: ../libpurple/protocols/silc10/ops.c:1179
 #: ../libpurple/protocols/silc10/ops.c:1328
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1066 ../pidgin/gtkblist.c:3032
+#: ../libpurple/protocols/yahoo/yahoo_profile.c:1066 ../pidgin/gtkblist.c:3230
 msgid "Nickname"
 msgstr "Prezývka"
 
@@ -556,12 +559,12 @@
 #: ../libpurple/protocols/bonjour/bonjour.c:340
 #: ../libpurple/protocols/jabber/buddy.c:787
 #: ../libpurple/protocols/jabber/buddy.c:951
-#: ../libpurple/protocols/msn/msn.c:544 ../libpurple/protocols/msn/state.c:32
-#: ../libpurple/protocols/novell/novell.c:2825
-#: ../libpurple/protocols/oscar/oscar.c:2912
-#: ../libpurple/protocols/yahoo/yahoo.c:3097
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:710 ../pidgin/gtkblist.c:3060
-#: ../pidgin/gtkblist.c:3460 ../pidgin/gtkprefs.c:1925
+#: ../libpurple/protocols/msn/state.c:32
+#: ../libpurple/protocols/novell/novell.c:2830
+#: ../libpurple/protocols/oscar/oscar.c:2926
+#: ../libpurple/protocols/yahoo/yahoo.c:3099
+#: ../libpurple/protocols/yahoo/yahoo_profile.c:710 ../pidgin/gtkblist.c:3258
+#: ../pidgin/gtkblist.c:3664 ../pidgin/gtkprefs.c:1927
 msgid "Idle"
 msgstr "Nečinný"
 
@@ -592,36 +595,26 @@
 "\n"
 "Naposledy pripojený: %s dozadu"
 
-#: ../finch/gntblist.c:1702 ../pidgin/gtkdocklet.c:470
+#: ../finch/gntblist.c:1704 ../pidgin/gtkdocklet.c:470
 #: ../pidgin/gtkstatusbox.c:1072
 msgid "New..."
 msgstr "Nový..."
 
-#: ../finch/gntblist.c:1709 ../pidgin/gtkdocklet.c:471
+#: ../finch/gntblist.c:1711 ../pidgin/gtkdocklet.c:471
 #: ../pidgin/gtkstatusbox.c:1073
 msgid "Saved..."
 msgstr "Uložený..."
 
-#: ../finch/gntblist.c:2087 ../finch/gntplugin.c:255 ../finch/gntui.c:88
+#: ../finch/gntblist.c:2089 ../finch/gntplugin.c:343 ../finch/gntui.c:88
 #: ../pidgin/gtkdocklet.c:523 ../pidgin/gtkplugin.c:531
 msgid "Plugins"
 msgstr "Moduly"
 
-#: ../finch/gntblist.c:2203 ../pidgin/gtkdialogs.c:754
-#: ../pidgin/gtkdialogs.c:893 ../pidgin/gtkdialogs.c:974
-msgid "_Name"
-msgstr "_Meno"
-
-#: ../finch/gntblist.c:2208 ../pidgin/gtkdialogs.c:759
-#: ../pidgin/gtkdialogs.c:898 ../pidgin/gtkdialogs.c:979
-msgid "_Account"
-msgstr "Úč_et"
-
-#: ../finch/gntblist.c:2216 ../pidgin/gtkdialogs.c:767
+#: ../finch/gntblist.c:2218 ../pidgin/gtkdialogs.c:767
 msgid "New Instant Message"
 msgstr "Nová správa"
 
-#: ../finch/gntblist.c:2218 ../pidgin/gtkdialogs.c:769
+#: ../finch/gntblist.c:2220 ../pidgin/gtkdialogs.c:769
 msgid ""
 "Please enter the screen name or alias of the person you would like to IM."
 msgstr ""
@@ -631,15 +624,15 @@
 #. Not multiline
 #. Not masked?
 #. No hints?
-#: ../finch/gntblist.c:2221 ../finch/gntcertmgr.c:90 ../finch/gntconn.c:135
+#: ../finch/gntblist.c:2223 ../finch/gntcertmgr.c:90 ../finch/gntconn.c:136
 #: ../finch/gntnotify.c:80 ../libpurple/account.c:1012
 #: ../libpurple/account.c:1262 ../libpurple/protocols/gg/gg.c:506
 #: ../libpurple/protocols/gg/gg.c:665 ../libpurple/protocols/gg/gg.c:802
 #: ../libpurple/protocols/jabber/jabber.c:1736
 #: ../libpurple/protocols/jabber/xdata.c:399
-#: ../libpurple/protocols/msn/msn.c:286 ../libpurple/protocols/msn/msn.c:303
-#: ../libpurple/protocols/msn/msn.c:320 ../libpurple/protocols/msn/msn.c:337
-#: ../libpurple/protocols/oscar/oscar.c:6093
+#: ../libpurple/protocols/msn/msn.c:289 ../libpurple/protocols/msn/msn.c:306
+#: ../libpurple/protocols/msn/msn.c:323 ../libpurple/protocols/msn/msn.c:340
+#: ../libpurple/protocols/oscar/oscar.c:6145
 #: ../libpurple/protocols/silc/buddy.c:454
 #: ../libpurple/protocols/silc/buddy.c:1190
 #: ../libpurple/protocols/silc/chat.c:447
@@ -656,58 +649,83 @@
 #: ../libpurple/protocols/silc10/ops.c:1297
 #: ../libpurple/protocols/silc10/ops.c:1903
 #: ../libpurple/protocols/silc10/silc.c:735
-#: ../libpurple/protocols/yahoo/yahoo.c:1031
-#: ../libpurple/protocols/yahoo/yahoo.c:3497
-#: ../libpurple/protocols/yahoo/yahoo.c:3508 ../pidgin/gtkblist.c:4039
+#: ../libpurple/protocols/yahoo/yahoo.c:1033
+#: ../libpurple/protocols/yahoo/yahoo.c:3499
+#: ../libpurple/protocols/yahoo/yahoo.c:3510 ../pidgin/gtkblist.c:4321
 #: ../pidgin/gtkcertmgr.c:195 ../pidgin/gtkdialogs.c:772
 #: ../pidgin/gtkdialogs.c:911 ../pidgin/gtkdialogs.c:1003
 #: ../pidgin/gtkrequest.c:270
 msgid "OK"
 msgstr "OK"
 
+#: ../finch/gntblist.c:2270
+msgid "Channel"
+msgstr "Kanál"
+
+#: ../finch/gntblist.c:2282 ../pidgin/gtkblist.c:924
+msgid "Join a Chat"
+msgstr "Pripojiť sa k chatu"
+
+#: ../finch/gntblist.c:2284
+msgid "Please enter the name of the chat you want to join."
+msgstr "Prosím, zadajte názov chatu na ktorý sa chcete pripojiť."
+
+#: ../finch/gntblist.c:2286 ../finch/gntnotify.c:392
+msgid "Join"
+msgstr "Pripojiť"
+
 #. Create the "Options" frame.
-#: ../finch/gntblist.c:2241 ../finch/gntpounce.c:447 ../pidgin/gtkpounce.c:790
+#: ../finch/gntblist.c:2324 ../finch/gntpounce.c:447 ../pidgin/gtkpounce.c:797
 msgid "Options"
 msgstr "Voľby"
 
-#: ../finch/gntblist.c:2247
+#: ../finch/gntblist.c:2330
 msgid "Send IM..."
 msgstr "Odoslať správu..."
 
-#: ../finch/gntblist.c:2251
-#, fuzzy
-msgid "Show empty groups"
-msgstr "Zobraziť prázdne skupiny"
-
-#: ../finch/gntblist.c:2257
-#, fuzzy
-msgid "Show offline buddies"
-msgstr "Zobraziť odpojených priateľov"
-
-#: ../finch/gntblist.c:2263
-msgid "Sort by status"
-msgstr "Zoradiť podľa stavu"
-
-#: ../finch/gntblist.c:2267
-msgid "Sort alphabetically"
-msgstr "Zoradiť podľa abecedy"
-
-#: ../finch/gntblist.c:2271
-msgid "Sort by log size"
-msgstr "Zoradiť podľa veľkosti záznamu"
+#: ../finch/gntblist.c:2334
+msgid "Join Chat..."
+msgstr "Pripojiť sa na chat..."
+
+#: ../finch/gntblist.c:2338
+msgid "Show"
+msgstr "Zobraziť"
+
+#: ../finch/gntblist.c:2343
+msgid "Empty groups"
+msgstr "Prázdne skupiny"
+
+#: ../finch/gntblist.c:2349
+msgid "Offline buddies"
+msgstr "Odpojených priateľov"
+
+#: ../finch/gntblist.c:2355
+msgid "Sort"
+msgstr "Zoradiť"
+
+#: ../finch/gntblist.c:2360
+msgid "By Status"
+msgstr "Podľa stavu"
+
+#: ../finch/gntblist.c:2364 ../pidgin/gtkblist.c:4106
+msgid "Alphabetically"
+msgstr "Podľa abecedy"
+
+#: ../finch/gntblist.c:2368
+msgid "By Log Size"
+msgstr "Podľa veľkosti záznamu"
 
 #: ../finch/gntcertmgr.c:86 ../pidgin/gtkcertmgr.c:188
-#, fuzzy
 msgid "Certificate Import"
-msgstr "Certifikáty"
+msgstr "Import certifikátu"
 
 #: ../finch/gntcertmgr.c:87 ../pidgin/gtkcertmgr.c:189
 msgid "Specify a hostname"
-msgstr ""
+msgstr "Zadajte názov hostiteľa"
 
 #: ../finch/gntcertmgr.c:88 ../pidgin/gtkcertmgr.c:190
 msgid "Type the host name this certificate is for."
-msgstr ""
+msgstr "Zadajte názov hostiteľa, komu je určený tento certifikát."
 
 #: ../finch/gntcertmgr.c:97 ../pidgin/gtkcertmgr.c:210
 #, c-format
@@ -715,21 +733,20 @@
 "File %s could not be imported.\n"
 "Make sure that the file is readable and in PEM format.\n"
 msgstr ""
+"Nie je možné importovať súbor %s.\n"
+"Skontrolujte, či je ho možné čítať a či je vo formáte PEM.\n"
 
 #: ../finch/gntcertmgr.c:99 ../pidgin/gtkcertmgr.c:212
-#, fuzzy
 msgid "Certificate Import Error"
-msgstr "Certifikáty"
+msgstr "Chyba pri importe certifikátu"
 
 #: ../finch/gntcertmgr.c:100 ../pidgin/gtkcertmgr.c:213
-#, fuzzy
 msgid "X.509 certificate import failed"
-msgstr "X.509 certifikáty"
+msgstr "Import X.509 certifikátu zlyhal"
 
 #: ../finch/gntcertmgr.c:110 ../pidgin/gtkcertmgr.c:224
-#, fuzzy
 msgid "Select a PEM certificate"
-msgstr "Vyberte súbor"
+msgstr "Vyberte PEM certifikát"
 
 #: ../finch/gntcertmgr.c:127 ../pidgin/gtkcertmgr.c:245
 #, c-format
@@ -737,26 +754,25 @@
 "Export to file %s failed.\n"
 "Check that you have write permission to the target path\n"
 msgstr ""
+"Export do súboru %s zlyhal.\n"
+"Skontrolujte, či máte právo na zápis do cieľového umiestnenia\n"
 
 #: ../finch/gntcertmgr.c:129 ../pidgin/gtkcertmgr.c:247
-#, fuzzy
 msgid "Certificate Export Error"
-msgstr "Certifikáty"
+msgstr "Chyba exportu certifikátu"
 
 #: ../finch/gntcertmgr.c:130 ../pidgin/gtkcertmgr.c:248
-#, fuzzy
 msgid "X.509 certificate export failed"
-msgstr "X.509 certifikáty"
+msgstr "Export X.509 certifikátu zlyhal"
 
 #: ../finch/gntcertmgr.c:159 ../pidgin/gtkcertmgr.c:299
-#, fuzzy
 msgid "PEM X.509 Certificate Export"
-msgstr "X.509 certifikáty"
+msgstr "Export PEM X.509 certifikátu"
 
 #: ../finch/gntcertmgr.c:188
-#, fuzzy, c-format
+#, c-format
 msgid "Certificate for %s"
-msgstr "Certifikáty"
+msgstr "Certifikát pre %s"
 
 #: ../finch/gntcertmgr.c:195
 #, c-format
@@ -766,25 +782,27 @@
 "SHA1 fingerprint:\n"
 "%s"
 msgstr ""
+"Bežný názov: %s\n"
+"\n"
+"SHA1 odtlačok:\n"
+"%s"
 
 #: ../finch/gntcertmgr.c:198
-#, fuzzy
 msgid "SSL Host Certificate"
-msgstr "Certifikáty"
+msgstr "SSL certifikát hostiteľa"
 
 #: ../finch/gntcertmgr.c:233 ../pidgin/gtkcertmgr.c:372
 #, c-format
 msgid "Really delete certificate for %s?"
-msgstr ""
+msgstr "Naozaj chcete odstrániť certifikát pre %s?"
 
 #: ../finch/gntcertmgr.c:236 ../pidgin/gtkcertmgr.c:374
 msgid "Confirm certificate delete"
-msgstr ""
+msgstr "Potvrdiť odstránenie certifikátu"
 
 #: ../finch/gntcertmgr.c:293 ../pidgin/gtkcertmgr.c:602
-#, fuzzy
 msgid "Certificate Manager"
-msgstr "Certifikáty"
+msgstr "Manažér certifikátov"
 
 #. Creating the user splits
 #: ../finch/gntcertmgr.c:298 ../libpurple/protocols/bonjour/bonjour.c:652
@@ -793,32 +811,32 @@
 msgid "Hostname"
 msgstr "Názov hostiteľa"
 
-#: ../finch/gntcertmgr.c:315 ../finch/gntnotify.c:383 ../pidgin/gtkconv.c:1635
+#: ../finch/gntcertmgr.c:315 ../finch/gntnotify.c:386 ../pidgin/gtkconv.c:1688
 #: ../pidgin/gtkdebug.c:835
 msgid "Info"
 msgstr "Podrobnosti"
 
 #. Close button
 #: ../finch/gntcertmgr.c:324 ../finch/gntft.c:237 ../finch/gntnotify.c:182
-#: ../finch/gntplugin.c:210 ../finch/gntplugin.c:310 ../finch/gntpounce.c:738
-#: ../finch/gntstatus.c:216 ../libpurple/protocols/msn/msn.c:403
+#: ../finch/gntplugin.c:211 ../finch/gntplugin.c:403 ../finch/gntpounce.c:738
+#: ../finch/gntstatus.c:216 ../libpurple/protocols/msn/msn.c:406
 #: ../libpurple/protocols/silc/util.c:382
 #: ../libpurple/protocols/silc10/util.c:377 ../pidgin/gtkaccount.c:2468
 #: ../pidgin/gtkrequest.c:273
 msgid "Close"
 msgstr "Zavrieť"
 
-#: ../finch/gntconn.c:124
+#: ../finch/gntconn.c:125
 #, c-format
 msgid "%s (%s)"
 msgstr "%s (%s)"
 
-#: ../finch/gntconn.c:127
+#: ../finch/gntconn.c:128
 #, c-format
 msgid "%s disconnected."
 msgstr "%s je odpojený."
 
-#: ../finch/gntconn.c:128
+#: ../finch/gntconn.c:129
 #, c-format
 msgid ""
 "%s\n"
@@ -831,7 +849,7 @@
 "Finch sa nebude pokúšať znovu pripojiť na tento účet, dokým neopravíte chybu "
 "a znovu nepovolíte tento účet."
 
-#: ../finch/gntconn.c:137 ../pidgin/gtkblist.c:4041
+#: ../finch/gntconn.c:138 ../pidgin/gtkblist.c:4323
 msgid "Re-enable Account"
 msgstr "Znovu povoliť účet"
 
@@ -839,23 +857,23 @@
 msgid "No such command."
 msgstr "Tento príkaz neexistuje."
 
-#: ../finch/gntconv.c:143 ../pidgin/gtkconv.c:489
+#: ../finch/gntconv.c:143 ../pidgin/gtkconv.c:530
 msgid "Syntax Error:  You typed the wrong number of arguments to that command."
 msgstr "Chyba syntaxi: V príkaze ste zadali nesprávny počet argumentov."
 
-#: ../finch/gntconv.c:148 ../pidgin/gtkconv.c:495
+#: ../finch/gntconv.c:148 ../pidgin/gtkconv.c:536
 msgid "Your command failed for an unknown reason."
 msgstr "Váš príkaz zlyhal z neznámeho dôvodu."
 
-#: ../finch/gntconv.c:153 ../pidgin/gtkconv.c:502
+#: ../finch/gntconv.c:153 ../pidgin/gtkconv.c:543
 msgid "That command only works in chats, not IMs."
 msgstr "Tento príkaz funguje len v chatoch, nie v IM."
 
-#: ../finch/gntconv.c:156 ../pidgin/gtkconv.c:505
+#: ../finch/gntconv.c:156 ../pidgin/gtkconv.c:546
 msgid "That command only works in IMs, not chats."
 msgstr "Tento príkaz funguje len v IM, nie v chatoch."
 
-#: ../finch/gntconv.c:160 ../pidgin/gtkconv.c:510
+#: ../finch/gntconv.c:160 ../pidgin/gtkconv.c:551
 msgid "That command doesn't work on this protocol."
 msgstr "Tento príkaz nefunguje v tomto protokole."
 
@@ -873,7 +891,7 @@
 msgid "%s [%s]"
 msgstr "%s [%s]"
 
-#: ../finch/gntconv.c:279 ../finch/gntconv.c:773
+#: ../finch/gntconv.c:279 ../finch/gntconv.c:801
 #, c-format
 msgid ""
 "\n"
@@ -886,65 +904,65 @@
 msgid "You have left this chat."
 msgstr "Opustili ste tento chat."
 
-#: ../finch/gntconv.c:387 ../pidgin/gtkconv.c:1362
+#: ../finch/gntconv.c:414 ../pidgin/gtkconv.c:1415
 msgid "Logging started. Future messages in this conversation will be logged."
 msgstr ""
 "Zaznamenávanie bolo spustené. Nasledujúce správy v rozhovore budú "
 "zaznamenané."
 
-#: ../finch/gntconv.c:393 ../pidgin/gtkconv.c:1370
+#: ../finch/gntconv.c:420 ../pidgin/gtkconv.c:1423
 msgid ""
 "Logging stopped. Future messages in this conversation will not be logged."
 msgstr ""
 "Zaznamenávanie bolo zastavené. Nasledujúce správy v rozhovore už nebudú "
 "zaznamenané."
 
-#: ../finch/gntconv.c:442
+#: ../finch/gntconv.c:469
 msgid "Send To"
 msgstr "Odoslať do"
 
-#: ../finch/gntconv.c:486
+#: ../finch/gntconv.c:513
 msgid "Conversation"
 msgstr "Rozhovor"
 
-#: ../finch/gntconv.c:492
+#: ../finch/gntconv.c:519
 msgid "Clear Scrollback"
 msgstr "Vymazať záznam"
 
-#: ../finch/gntconv.c:496 ../finch/gntprefs.c:191
+#: ../finch/gntconv.c:523 ../finch/gntprefs.c:191
 msgid "Show Timestamps"
 msgstr "Zobrazovať časové značky"
 
-#: ../finch/gntconv.c:512
+#: ../finch/gntconv.c:539
 msgid "Add Buddy Pounce..."
 msgstr "Pridať sledovanie priateľa..."
 
-#: ../finch/gntconv.c:527
+#: ../finch/gntconv.c:554
 msgid "Enable Logging"
 msgstr "Zapnúť zaznamenávanie"
 
-#: ../finch/gntconv.c:533
+#: ../finch/gntconv.c:560
 msgid "Enable Sounds"
 msgstr "Zapnúť zvuky"
 
-#: ../finch/gntconv.c:739
+#: ../finch/gntconv.c:766
 msgid "<AUTO-REPLY> "
 msgstr "<AUTOMATICKÁ ODPOVEĎ> "
 
 #. Print the list of users in the room
-#: ../finch/gntconv.c:861
+#: ../finch/gntconv.c:889
 msgid "List of users:\n"
 msgstr "Zoznam používateľov:\n"
 
-#: ../finch/gntconv.c:1023 ../pidgin/gtkconv.c:331
+#: ../finch/gntconv.c:1051 ../pidgin/gtkconv.c:370
 msgid "Supported debug options are:  version"
 msgstr "Podporované ladiace voľby sú:  version"
 
-#: ../finch/gntconv.c:1059 ../pidgin/gtkconv.c:381
+#: ../finch/gntconv.c:1087 ../pidgin/gtkconv.c:422
 msgid "No such command (in this context)."
 msgstr "Tento príkaz neexistuje (v tejto situácii)."
 
-#: ../finch/gntconv.c:1062 ../pidgin/gtkconv.c:384
+#: ../finch/gntconv.c:1090 ../pidgin/gtkconv.c:425
 msgid ""
 "Use \"/help &lt;command&gt;\" for help on a specific command.\n"
 "The following commands are available in this context:\n"
@@ -952,60 +970,65 @@
 "Pomocníka ku zadanému príkazu zobrazíte zadaním „/help &lt;príkaz&gt;“.\n"
 "V tomto kontexte sú dostupné nasledujúce príkazy:\n"
 
-#: ../finch/gntconv.c:1120 ../pidgin/gtkconv.c:7560
+#: ../finch/gntconv.c:1148 ../pidgin/gtkconv.c:7644
 msgid ""
 "say &lt;message&gt;:  Send a message normally as if you weren't using a "
 "command."
 msgstr "say &lt;správa&gt;:  Odošle správu rovnako, ako bez použitia príkazu."
 
-#: ../finch/gntconv.c:1123 ../pidgin/gtkconv.c:7563
+#: ../finch/gntconv.c:1151 ../pidgin/gtkconv.c:7647
 msgid "me &lt;action&gt;:  Send an IRC style action to a buddy or chat."
 msgstr "me &lt;akcia&gt;:  Odošle priateľovi alebo na chat akciu v štýle IRC."
 
-#: ../finch/gntconv.c:1126 ../pidgin/gtkconv.c:7566
+#: ../finch/gntconv.c:1154 ../pidgin/gtkconv.c:7650
 msgid ""
 "debug &lt;option&gt;:  Send various debug information to the current "
 "conversation."
 msgstr ""
 "debug &lt;voľby&gt;:  Do aktuálneho rozhovoru vloží rôzne ladiace informácie."
 
-#: ../finch/gntconv.c:1129 ../pidgin/gtkconv.c:7569
+#: ../finch/gntconv.c:1157 ../pidgin/gtkconv.c:7653
 msgid "clear: Clears the conversation scrollback."
 msgstr "clear: Vyčistí okno rozhovoru."
 
-#: ../finch/gntconv.c:1132 ../pidgin/gtkconv.c:7575
+#: ../finch/gntconv.c:1160 ../pidgin/gtkconv.c:7659
 msgid "help &lt;command&gt;:  Help on a specific command."
 msgstr "help &lt;príkaz&gt;:  Zobrazí pomocníka ku zadanému príkazu."
 
-#: ../finch/gntconv.c:1135
+#: ../finch/gntconv.c:1163
 msgid "users:  Show the list of users in the chat."
 msgstr "users:  Zobrazí zoznam používateľov na chate."
 
-#: ../finch/gntconv.c:1140
+#: ../finch/gntconv.c:1168
 msgid "plugins: Show the plugins window."
 msgstr "plugins: Zobrazí okno modulov."
 
-#: ../finch/gntconv.c:1143
+#: ../finch/gntconv.c:1171
 msgid "buddylist: Show the buddylist."
 msgstr "zoznam kamarátov: Zobraziť zoznam."
 
-#: ../finch/gntconv.c:1146
+#: ../finch/gntconv.c:1174
 msgid "accounts: Show the accounts window."
 msgstr "účty: Zobraziť okno s účtami."
 
-#: ../finch/gntconv.c:1149
+#: ../finch/gntconv.c:1177
 msgid "debugwin: Show the debug window."
 msgstr "ladiace okno: Zobraziť ladiace okno"
 
-#: ../finch/gntconv.c:1152
+#: ../finch/gntconv.c:1180
 msgid "prefs: Show the preference window."
 msgstr "vlastnosti: Zobraziť okno vlastností"
 
-#: ../finch/gntconv.c:1155
+#: ../finch/gntconv.c:1183
 msgid "statuses: Show the savedstatuses window."
 msgstr "stavy: Zobraziť okno stavov."
 
-#: ../finch/gntdebug.c:235 ../finch/gntui.c:86 ../pidgin/gtkdebug.c:695
+#: ../finch/gntdebug.c:231 ../pidgin/gtkconv.c:988 ../pidgin/gtkconv.c:2657
+#: ../pidgin/gtkdebug.c:219 ../pidgin/gtkft.c:543
+msgid "Unable to open file."
+msgstr "Nepodarilo sa otvoriť súbor."
+
+#: ../finch/gntdebug.c:271 ../finch/gntui.c:86 ../pidgin/gtkdebug.c:695
 msgid "Debug Window"
 msgstr "Ladiace okno"
 
@@ -1013,15 +1036,15 @@
 #. * it's necessary to make the width of the debug window resizable ... like I said,
 #. * it doesn't make sense. The bug is likely in the packing in gntbox.c.
 #.
-#: ../finch/gntdebug.c:256 ../pidgin/gtkdebug.c:754
+#: ../finch/gntdebug.c:292 ../pidgin/gtkdebug.c:754
 msgid "Clear"
 msgstr "Vyčistiť"
 
-#: ../finch/gntdebug.c:262
-msgid "Filter: "
+#: ../finch/gntdebug.c:303
+msgid "Filter:"
 msgstr "Filter: "
 
-#: ../finch/gntdebug.c:266 ../pidgin/gtkdebug.c:763
+#: ../finch/gntdebug.c:309 ../pidgin/gtkdebug.c:763
 msgid "Pause"
 msgstr "Pozastaviť"
 
@@ -1065,17 +1088,17 @@
 #: ../libpurple/protocols/jabber/buddy.c:782
 #: ../libpurple/protocols/jabber/buddy.c:941
 #: ../libpurple/protocols/jabber/jabber.c:1500
-#: ../libpurple/protocols/msn/msn.c:543
-#: ../libpurple/protocols/novell/novell.c:2835
+#: ../libpurple/protocols/msn/msn.c:596 ../libpurple/protocols/msn/msn.c:603
+#: ../libpurple/protocols/novell/novell.c:2840
 #: ../libpurple/protocols/oscar/oscar.c:821
 #: ../libpurple/protocols/oscar/oscar.c:826
 #: ../libpurple/protocols/oscar/oscar.c:828
-#: ../libpurple/protocols/oscar/oscar.c:2700
-#: ../libpurple/protocols/oscar/oscar.c:3780
+#: ../libpurple/protocols/oscar/oscar.c:2714
+#: ../libpurple/protocols/oscar/oscar.c:3794
 #: ../libpurple/protocols/sametime/sametime.c:3263
 #: ../libpurple/protocols/sametime/sametime.c:4150
-#: ../libpurple/protocols/yahoo/yahoo.c:3248 ../pidgin/gtkblist.c:3104
-#: ../pidgin/gtkblist.c:3118 ../pidgin/gtkblist.c:3120
+#: ../libpurple/protocols/yahoo/yahoo.c:3250 ../pidgin/gtkblist.c:3302
+#: ../pidgin/gtkblist.c:3316 ../pidgin/gtkblist.c:3318
 #: ../pidgin/gtksavedstatuses.c:999 ../pidgin/gtksavedstatuses.c:1144
 msgid "Status"
 msgstr "Stav"
@@ -1119,7 +1142,7 @@
 msgid "Finished"
 msgstr "Dokončené"
 
-#: ../finch/gntft.c:437 ../libpurple/protocols/msn/session.c:347
+#: ../finch/gntft.c:437 ../libpurple/protocols/msn/session.c:386
 msgid "Transferring"
 msgstr "Prenáša sa"
 
@@ -1131,11 +1154,11 @@
 msgid "You have mail!"
 msgstr "Máte poštu!"
 
-#: ../finch/gntnotify.c:174 ../pidgin/gtknotify.c:513
+#: ../finch/gntnotify.c:174 ../pidgin/gtknotify.c:518
 msgid "Sender"
 msgstr "Odosielateľ"
 
-#: ../finch/gntnotify.c:174 ../pidgin/gtknotify.c:520
+#: ../finch/gntnotify.c:174 ../pidgin/gtknotify.c:525
 msgid "Subject"
 msgstr "Predmet"
 
@@ -1151,49 +1174,45 @@
 msgid "New Mail"
 msgstr "Nová pošta"
 
-#: ../finch/gntnotify.c:290 ../pidgin/gtknotify.c:940
+#: ../finch/gntnotify.c:290 ../pidgin/gtknotify.c:947
 #, c-format
 msgid "Info for %s"
-msgstr "Podrobnosti o %s"
+msgstr "Podrobnosti o priateľovi %s"
 
 #: ../finch/gntnotify.c:291 ../libpurple/protocols/toc/toc.c:476
-#: ../pidgin/gtknotify.c:941
+#: ../pidgin/gtknotify.c:948
 msgid "Buddy Information"
 msgstr "Podrobnosti o priateľovi"
 
-#: ../finch/gntnotify.c:377 ../libpurple/protocols/qq/group_join.c:367
+#: ../finch/gntnotify.c:380 ../libpurple/protocols/qq/group_join.c:367
 msgid "Continue"
 msgstr "Pokračovať"
 
-#: ../finch/gntnotify.c:386 ../pidgin/gtkconv.c:1596
+#: ../finch/gntnotify.c:389 ../pidgin/gtkconv.c:1649
 msgid "IM"
 msgstr "Napísať správu"
 
-#: ../finch/gntnotify.c:389
-msgid "Join"
-msgstr "Pripojiť"
-
-#: ../finch/gntnotify.c:392 ../libpurple/protocols/sametime/sametime.c:3473
+#: ../finch/gntnotify.c:395 ../libpurple/protocols/sametime/sametime.c:3473
 msgid "Invite"
 msgstr "Pozvať"
 
-#: ../finch/gntnotify.c:395
+#: ../finch/gntnotify.c:398
 msgid "(none)"
 msgstr "(žiadne)"
 
-#: ../finch/gntplugin.c:75 ../finch/gntplugin.c:84
+#: ../finch/gntplugin.c:76 ../finch/gntplugin.c:85
 msgid "ERROR"
 msgstr "CHYBA"
 
-#: ../finch/gntplugin.c:75
+#: ../finch/gntplugin.c:76
 msgid "loading plugin failed"
 msgstr "načítavanie modulu zlyhalo"
 
-#: ../finch/gntplugin.c:84
+#: ../finch/gntplugin.c:85
 msgid "unloading plugin failed"
 msgstr "ukončenie modulu zlyhalo"
 
-#: ../finch/gntplugin.c:129
+#: ../finch/gntplugin.c:130
 #, c-format
 msgid ""
 "Name: %s\n"
@@ -1210,19 +1229,41 @@
 "Domovská stránka: %s\n"
 "Názov súboru: %s\n"
 
-#: ../finch/gntplugin.c:187
+#: ../finch/gntplugin.c:188
 msgid "Plugin need to be loaded before you can configure it."
 msgstr "Prosím, zapnite tento modul, ak ho chcete konfigurovať."
 
-#: ../finch/gntplugin.c:235
+#: ../finch/gntplugin.c:236
 msgid "No configuration options for this plugin."
 msgstr "Tento modul sa nedá konfigurovať."
 
-#: ../finch/gntplugin.c:260
+#: ../finch/gntplugin.c:257
+msgid "Error loading plugin"
+msgstr "Chyba pri načítavaní modulu"
+
+#: ../finch/gntplugin.c:258
+msgid "The selected file is not a valid plugin."
+msgstr "Vybraný súbor nie je správny modul."
+
+#: ../finch/gntplugin.c:259
+msgid ""
+"Please open the debug window and try again to see the exact error message."
+msgstr ""
+"Prosím, otvorte ladiace okno a skúste to znovu. Mala by sa vám zobraziť presná chybová správa."
+
+#: ../finch/gntplugin.c:322
+msgid "Select plugin to install"
+msgstr "Vyberte modul, ktorý chcete nainštalovať"
+
+#: ../finch/gntplugin.c:348
 msgid "You can (un)load plugins from the following list."
 msgstr "V nasledujúcom zozname je možné zapínať a vypínať moduly."
 
-#: ../finch/gntplugin.c:315
+#: ../finch/gntplugin.c:399
+msgid "Install Plugin..."
+msgstr "Inštalovať modul..."
+
+#: ../finch/gntplugin.c:408
 msgid "Configure Plugin"
 msgstr "Konfigurovať modul"
 
@@ -1231,8 +1272,8 @@
 #. (that should have been "effect," right?)
 #. Back to instant-apply! I win!  BU-HAHAHA!
 #. Create the window
-#: ../finch/gntplugin.c:371 ../finch/gntplugin.c:378 ../finch/gntprefs.c:264
-#: ../finch/gntui.c:90 ../pidgin/gtkdocklet.c:524 ../pidgin/gtkprefs.c:2067
+#: ../finch/gntplugin.c:464 ../finch/gntplugin.c:471 ../finch/gntprefs.c:264
+#: ../finch/gntui.c:90 ../pidgin/gtkdocklet.c:524 ../pidgin/gtkprefs.c:2069
 msgid "Preferences"
 msgstr "Nastavenia"
 
@@ -1240,11 +1281,11 @@
 msgid "Please enter a buddy to pounce."
 msgstr "Zadajte, prosím, priateľa, ktorého chcete sledovať."
 
-#: ../finch/gntpounce.c:328 ../pidgin/gtkpounce.c:517
+#: ../finch/gntpounce.c:328 ../pidgin/gtkpounce.c:524
 msgid "New Buddy Pounce"
 msgstr "Nové sledovanie priateľa"
 
-#: ../finch/gntpounce.c:328 ../pidgin/gtkpounce.c:517
+#: ../finch/gntpounce.c:328 ../pidgin/gtkpounce.c:524
 msgid "Edit Buddy Pounce"
 msgstr "Upraviť sledovanie priateľa"
 
@@ -1262,7 +1303,7 @@
 msgstr "Meno priateľa:"
 
 #. Create the "Pounce When Buddy..." frame.
-#: ../finch/gntpounce.c:374 ../pidgin/gtkpounce.c:585
+#: ../finch/gntpounce.c:374 ../pidgin/gtkpounce.c:592
 msgid "Pounce When Buddy..."
 msgstr "Sledovať keď priateľ..."
 
@@ -1307,7 +1348,7 @@
 msgstr "Pošle správu"
 
 #. Create the "Action" frame.
-#: ../finch/gntpounce.c:414 ../pidgin/gtkpounce.c:646
+#: ../finch/gntpounce.c:414 ../pidgin/gtkpounce.c:653
 msgid "Action"
 msgstr "Akcia"
 
@@ -1335,7 +1376,7 @@
 msgid "Pounce only when my status is not available"
 msgstr "Sledovať, len ak som nedostupný"
 
-#: ../finch/gntpounce.c:450 ../pidgin/gtkpounce.c:1281
+#: ../finch/gntpounce.c:450 ../pidgin/gtkpounce.c:1288
 msgid "Recurring"
 msgstr "Opakujúci sa"
 
@@ -1351,67 +1392,66 @@
 msgid "You must create an account first before you can create a pounce."
 msgstr "Pred tým než spustíte sledovanie si musíte pridať účet."
 
-#: ../finch/gntpounce.c:662 ../pidgin/gtkpounce.c:1096
+#: ../finch/gntpounce.c:662 ../pidgin/gtkpounce.c:1103
 #, c-format
 msgid "Are you sure you want to delete the pounce on %s for %s?"
-msgstr "Ste si istý, že chcete odstrániť sledovanie na %s pre %s?"
-
-#: ../finch/gntpounce.c:696 ../finch/gntui.c:84 ../pidgin/gtkpounce.c:1325
+msgstr "Ste si istý, že chcete odstrániť sledovanie priateľa %s v účte %s?"
+
+#: ../finch/gntpounce.c:696 ../finch/gntui.c:84 ../pidgin/gtkpounce.c:1332
 msgid "Buddy Pounces"
 msgstr "Sledovanie priateľov"
 
-#: ../finch/gntpounce.c:810 ../pidgin/gtkpounce.c:1452
+#: ../finch/gntpounce.c:810 ../pidgin/gtkpounce.c:1459
 #, c-format
 msgid "%s has started typing to you (%s)"
 msgstr "používateľ %s vám začal písať (%s)"
 
-#: ../finch/gntpounce.c:812 ../pidgin/gtkpounce.c:1454
+#: ../finch/gntpounce.c:812 ../pidgin/gtkpounce.c:1461
 #, c-format
 msgid "%s has paused while typing to you (%s)"
 msgstr "používteľ %s vám prestal písať (%s)"
 
-#: ../finch/gntpounce.c:814 ../pidgin/gtkpounce.c:1456
+#: ../finch/gntpounce.c:814 ../pidgin/gtkpounce.c:1463
 #, c-format
 msgid "%s has signed on (%s)"
 msgstr "používateľ %s sa prihlásil (%s)"
 
-#: ../finch/gntpounce.c:816 ../pidgin/gtkpounce.c:1458
+#: ../finch/gntpounce.c:816 ../pidgin/gtkpounce.c:1465
 #, c-format
 msgid "%s has returned from being idle (%s)"
 msgstr "používateľ %s prestal byť nečinný (%s)"
 
-#: ../finch/gntpounce.c:818 ../pidgin/gtkpounce.c:1460
+#: ../finch/gntpounce.c:818 ../pidgin/gtkpounce.c:1467
 #, c-format
 msgid "%s has returned from being away (%s)"
 msgstr "používateľ %s sa vrátil (%s)"
 
-#: ../finch/gntpounce.c:820 ../pidgin/gtkpounce.c:1462
+#: ../finch/gntpounce.c:820 ../pidgin/gtkpounce.c:1469
 #, c-format
 msgid "%s has stopped typing to you (%s)"
 msgstr "používateľ %s vám nenapísal (%s)"
 
-#: ../finch/gntpounce.c:822 ../pidgin/gtkpounce.c:1464
+#: ../finch/gntpounce.c:822 ../pidgin/gtkpounce.c:1471
 #, c-format
 msgid "%s has signed off (%s)"
 msgstr "používateľ %s sa odhlásil (%s)"
 
-#: ../finch/gntpounce.c:824 ../pidgin/gtkpounce.c:1466
+#: ../finch/gntpounce.c:824 ../pidgin/gtkpounce.c:1473
 #, c-format
 msgid "%s has become idle (%s)"
 msgstr "používateľ %s sa stal nečinným (%s)"
 
-#: ../finch/gntpounce.c:826 ../pidgin/gtkpounce.c:1468
+#: ../finch/gntpounce.c:826 ../pidgin/gtkpounce.c:1475
 #, c-format
 msgid "%s has gone away. (%s)"
 msgstr "používateľ %s sa stal neprítomným (%s)"
 
-#: ../finch/gntpounce.c:828 ../pidgin/gtkpounce.c:1470
+#: ../finch/gntpounce.c:828 ../pidgin/gtkpounce.c:1477
 #, c-format
 msgid "%s has sent you a message. (%s)"
 msgstr "používateľ %s vám poslal správu. (%s)"
 
-#: ../finch/gntpounce.c:829 ../pidgin/gtkpounce.c:1471
-#, c-format
+#: ../finch/gntpounce.c:829 ../pidgin/gtkpounce.c:1478
 msgid "Unknown pounce event. Please report this!"
 msgstr "Neznáma udalosť sledovania. Oznámte to, prosím!"
 
@@ -1419,12 +1459,12 @@
 msgid "Based on keyboard use"
 msgstr "Podľa využitia klávesnice"
 
-#: ../finch/gntprefs.c:94 ../pidgin/gtkprefs.c:1930
+#: ../finch/gntprefs.c:94 ../pidgin/gtkprefs.c:1932
 msgid "From last sent message"
 msgstr "Podľa naposledy odoslanej správy"
 
 #: ../finch/gntprefs.c:96 ../pidgin/gtkprefs.c:898 ../pidgin/gtkprefs.c:907
-#: ../pidgin/gtkprefs.c:1929 ../pidgin/gtkprefs.c:1943
+#: ../pidgin/gtkprefs.c:1931 ../pidgin/gtkprefs.c:1945
 #: ../pidgin/plugins/win32/winprefs/winprefs.c:333
 msgid "Never"
 msgstr "Nikdy"
@@ -1474,25 +1514,25 @@
 msgstr "Zmeniť stav na:"
 
 #. Conversations
-#: ../finch/gntprefs.c:259 ../pidgin/gtkprefs.c:993 ../pidgin/gtkprefs.c:2033
+#: ../finch/gntprefs.c:259 ../pidgin/gtkprefs.c:993 ../pidgin/gtkprefs.c:2035
 #: ../pidgin/plugins/win32/winprefs/winprefs.c:340
 msgid "Conversations"
 msgstr "Rozhovory"
 
-#: ../finch/gntprefs.c:260 ../pidgin/gtkprefs.c:1467 ../pidgin/gtkprefs.c:2044
+#: ../finch/gntprefs.c:260 ../pidgin/gtkprefs.c:1469 ../pidgin/gtkprefs.c:2046
 msgid "Logging"
 msgstr "Zaznamenávanie"
 
-#: ../finch/gntrequest.c:583
+#: ../finch/gntrequest.c:585
 msgid "Not implemented yet."
 msgstr "Zatiaľ nie je implementované."
 
-#: ../finch/gntrequest.c:659 ../pidgin/gtkrequest.c:1555
+#: ../finch/gntrequest.c:661 ../pidgin/gtkrequest.c:1555
 #: ../pidgin/gtkrequest.c:1601
 msgid "Save File..."
 msgstr "Uložiť súbor..."
 
-#: ../finch/gntrequest.c:659 ../pidgin/gtkrequest.c:1556
+#: ../finch/gntrequest.c:661 ../pidgin/gtkrequest.c:1556
 #: ../pidgin/gtkrequest.c:1602
 msgid "Open File..."
 msgstr "Otvoriť súbor..."
@@ -1545,8 +1585,8 @@
 msgid "GStreamer failed to initialize."
 msgstr "Nepodarilo sa inicializovať rozhranie GStreamer"
 
-#: ../finch/gntsound.c:716 ../finch/gntsound.c:802 ../pidgin/gtkprefs.c:1587
-#: ../pidgin/gtkprefs.c:1676 ../pidgin/gtkprefs.c:1872
+#: ../finch/gntsound.c:716 ../finch/gntsound.c:802 ../pidgin/gtkprefs.c:1589
+#: ../pidgin/gtkprefs.c:1678 ../pidgin/gtkprefs.c:1874
 msgid "(default)"
 msgstr "(štandardné)"
 
@@ -1562,7 +1602,7 @@
 msgid "Profiles"
 msgstr "Profily"
 
-#: ../finch/gntsound.c:954 ../pidgin/gtkprefs.c:1717
+#: ../finch/gntsound.c:954 ../pidgin/gtkprefs.c:1719
 msgid "Automatic"
 msgstr "Automaticky"
 
@@ -1570,7 +1610,7 @@
 msgid "Console Beep"
 msgstr "Pípnutie konzoly"
 
-#: ../finch/gntsound.c:958 ../pidgin/gtkprefs.c:1721
+#: ../finch/gntsound.c:958 ../pidgin/gtkprefs.c:1723
 msgid "Command"
 msgstr "Príkaz"
 
@@ -1578,7 +1618,7 @@
 msgid "No Sound"
 msgstr "Žiadne zvuky"
 
-#: ../finch/gntsound.c:961 ../pidgin/gtkprefs.c:1712
+#: ../finch/gntsound.c:961 ../pidgin/gtkprefs.c:1714
 msgid "Sound Method"
 msgstr "Metóda zvukov"
 
@@ -1596,7 +1636,7 @@
 "(%s pre názov súboru)"
 
 #. Sound options
-#: ../finch/gntsound.c:981 ../pidgin/gtkprefs.c:1756
+#: ../finch/gntsound.c:981 ../pidgin/gtkprefs.c:1758
 msgid "Sound Options"
 msgstr "Možnosti zvuku"
 
@@ -1605,17 +1645,17 @@
 msgstr "Prehrávať zvuky, keď je okno koverzácie aktívne"
 
 #: ../finch/gntsound.c:990 ../pidgin/gtkprefs.c:897 ../pidgin/gtkprefs.c:909
-#: ../pidgin/gtkprefs.c:1763 ../pidgin/plugins/timestamp_format.c:42
+#: ../pidgin/gtkprefs.c:1765 ../pidgin/plugins/timestamp_format.c:42
 #: ../pidgin/plugins/timestamp_format.c:51
 #: ../pidgin/plugins/win32/winprefs/winprefs.c:334
 msgid "Always"
 msgstr "Vždy"
 
-#: ../finch/gntsound.c:991 ../pidgin/gtkprefs.c:1761
+#: ../finch/gntsound.c:991 ../pidgin/gtkprefs.c:1763
 msgid "Only when available"
 msgstr "Len ak sú dostupné"
 
-#: ../finch/gntsound.c:992 ../pidgin/gtkprefs.c:1762
+#: ../finch/gntsound.c:992 ../pidgin/gtkprefs.c:1764
 msgid "Only when not available"
 msgstr "Len ak sú nedostupné"
 
@@ -1624,11 +1664,11 @@
 msgstr "Hlasitosť(0-100):"
 
 #. Sound events
-#: ../finch/gntsound.c:1018 ../pidgin/gtkprefs.c:1798
+#: ../finch/gntsound.c:1018 ../pidgin/gtkprefs.c:1800
 msgid "Sound Events"
 msgstr "Zvukové udalosti"
 
-#: ../finch/gntsound.c:1020 ../pidgin/gtkprefs.c:1857
+#: ../finch/gntsound.c:1020 ../pidgin/gtkprefs.c:1859
 msgid "Event"
 msgstr "Udalosť"
 
@@ -1636,15 +1676,15 @@
 msgid "File"
 msgstr "Súbor"
 
-#: ../finch/gntsound.c:1039 ../pidgin/gtkprefs.c:1876
+#: ../finch/gntsound.c:1039 ../pidgin/gtkprefs.c:1878
 msgid "Test"
 msgstr "Ukážka"
 
-#: ../finch/gntsound.c:1042 ../pidgin/gtkprefs.c:1880
+#: ../finch/gntsound.c:1042 ../pidgin/gtkprefs.c:1882
 msgid "Reset"
 msgstr "Obnoviť"
 
-#: ../finch/gntsound.c:1045 ../pidgin/gtkprefs.c:1884
+#: ../finch/gntsound.c:1045 ../pidgin/gtkprefs.c:1886
 msgid "Choose..."
 msgstr "Vybrať..."
 
@@ -1664,7 +1704,7 @@
 #: ../finch/gntstatus.c:183 ../finch/gntstatus.c:539
 #: ../libpurple/protocols/jabber/buddy.c:298
 #: ../libpurple/protocols/jabber/buddy.c:1359
-#: ../libpurple/protocols/novell/novell.c:1484
+#: ../libpurple/protocols/novell/novell.c:1486
 #: ../pidgin/gtksavedstatuses.c:500
 msgid "Title"
 msgstr "Nadpis"
@@ -1695,17 +1735,20 @@
 #: ../libpurple/protocols/jabber/jabber.c:1601
 #: ../libpurple/protocols/jabber/jabber.c:1624
 #: ../libpurple/protocols/jabber/jabber.c:1649
+#: ../libpurple/protocols/msn/msn.c:634 ../libpurple/protocols/msn/msn.c:641
+#: ../libpurple/protocols/msn/msn.c:648 ../libpurple/protocols/msn/msn.c:655
+#: ../libpurple/protocols/msn/msn.c:661 ../libpurple/protocols/msn/msn.c:667
 #: ../libpurple/protocols/myspace/myspace.c:148
-#: ../libpurple/protocols/novell/novell.c:2838
-#: ../libpurple/protocols/novell/novell.c:2941
-#: ../libpurple/protocols/novell/novell.c:2947
-#: ../libpurple/protocols/novell/novell.c:2953
-#: ../libpurple/protocols/oscar/oscar.c:5554
-#: ../libpurple/protocols/oscar/oscar.c:5772
-#: ../libpurple/protocols/oscar/oscar.c:5786
-#: ../libpurple/protocols/oscar/oscar.c:5802
-#: ../libpurple/protocols/oscar/oscar.c:5809
-#: ../libpurple/protocols/oscar/oscar.c:5816
+#: ../libpurple/protocols/novell/novell.c:2843
+#: ../libpurple/protocols/novell/novell.c:2946
+#: ../libpurple/protocols/novell/novell.c:2952
+#: ../libpurple/protocols/novell/novell.c:2958
+#: ../libpurple/protocols/oscar/oscar.c:5606
+#: ../libpurple/protocols/oscar/oscar.c:5824
+#: ../libpurple/protocols/oscar/oscar.c:5838
+#: ../libpurple/protocols/oscar/oscar.c:5854
+#: ../libpurple/protocols/oscar/oscar.c:5861
+#: ../libpurple/protocols/oscar/oscar.c:5868
 #: ../libpurple/protocols/sametime/sametime.c:3286
 #: ../libpurple/protocols/sametime/sametime.c:3292
 #: ../libpurple/protocols/sametime/sametime.c:3298
@@ -1713,8 +1756,8 @@
 #: ../libpurple/protocols/silc/buddy.c:1551
 #: ../libpurple/protocols/silc10/buddy.c:1551
 #: ../libpurple/protocols/simple/simple.c:246
-#: ../libpurple/protocols/yahoo/yahoo.c:3751
-#: ../libpurple/protocols/yahoo/yahoo.c:3757
+#: ../libpurple/protocols/yahoo/yahoo.c:3753
+#: ../libpurple/protocols/yahoo/yahoo.c:3759
 #: ../libpurple/protocols/zephyr/zephyr.c:2337
 #: ../pidgin/gtksavedstatuses.c:526 ../pidgin/gtksavedstatuses.c:1010
 msgid "Message"
@@ -1770,7 +1813,7 @@
 msgid "Certificates"
 msgstr "Certifikáty"
 
-#: ../finch/gntui.c:89 ../pidgin/gtkprefs.c:2035
+#: ../finch/gntui.c:89 ../pidgin/gtkprefs.c:2037
 msgid "Sounds"
 msgstr "Zvuky"
 
@@ -1780,23 +1823,20 @@
 
 #: ../finch/plugins/gntclipboard.c:115 ../finch/plugins/gntclipboard.c:121
 #: ../finch/plugins/gntclipboard.c:128
-#, fuzzy
 msgid "Error loading the plugin."
-msgstr "Počas zatvárania modulu sa vyskytli chyby."
+msgstr "Počas načítavania modulu sa vyskytli chyby."
 
 #: ../finch/plugins/gntclipboard.c:116
-#, fuzzy
 msgid "Couldn't find X display"
-msgstr "Nepodarilo sa otvoriť súbor"
+msgstr "Nebola nájdená X obrazovka"
 
 #: ../finch/plugins/gntclipboard.c:122
-#, fuzzy
 msgid "Couldn't find window"
-msgstr "Nepodarilo sa otvoriť súbor"
+msgstr "Nebolo nájdené okno"
 
 #: ../finch/plugins/gntclipboard.c:129
 msgid "This plugin cannot be loaded because it was not built with X11 support."
-msgstr ""
+msgstr "Tento modul nebol načítaný, pretože neobsahuje podporu pre X11."
 
 #: ../finch/plugins/gntclipboard.c:158
 msgid "GntClipboard"
@@ -1874,16 +1914,16 @@
 msgid "Toaster plugin"
 msgstr "Modul vysúvaceho okna"
 
-#: ../finch/plugins/gnthistory.c:116 ../pidgin/plugins/history.c:120
+#: ../finch/plugins/gnthistory.c:116 ../pidgin/plugins/history.c:123
 #, c-format
 msgid "<b>Conversation with %s on %s:</b><br>"
 msgstr "<b>Rozhovor s %s, %s:</b><br>"
 
-#: ../finch/plugins/gnthistory.c:138 ../pidgin/plugins/history.c:147
+#: ../finch/plugins/gnthistory.c:138 ../pidgin/plugins/history.c:150
 msgid "History Plugin Requires Logging"
 msgstr "Modul História vyžaduje zaznamenávanie"
 
-#: ../finch/plugins/gnthistory.c:139 ../pidgin/plugins/history.c:148
+#: ../finch/plugins/gnthistory.c:139 ../pidgin/plugins/history.c:151
 msgid ""
 "Logging can be enabled from Tools -> Preferences -> Logging.\n"
 "\n"
@@ -1899,11 +1939,11 @@
 msgid "GntHistory"
 msgstr "GntHistory"
 
-#: ../finch/plugins/gnthistory.c:181 ../pidgin/plugins/history.c:190
+#: ../finch/plugins/gnthistory.c:181 ../pidgin/plugins/history.c:194
 msgid "Shows recently logged conversations in new conversations."
 msgstr "Zobrazuje nedávno zaznamenanú konverzáciu v novom okne konverzácie."
 
-#: ../finch/plugins/gnthistory.c:182 ../pidgin/plugins/history.c:191
+#: ../finch/plugins/gnthistory.c:182 ../pidgin/plugins/history.c:195
 msgid ""
 "When a new conversation is opened this plugin will insert the last "
 "conversation into the current conversation."
@@ -1939,7 +1979,7 @@
 #: ../libpurple/account.c:992
 #, c-format
 msgid "Enter password for %s (%s)"
-msgstr "Zadajte heslo pre %s (%s)"
+msgstr "Zadajte heslo používateľa %s (%s)"
 
 #: ../libpurple/account.c:999
 msgid "Enter Password"
@@ -1956,7 +1996,7 @@
 msgstr "Chýba modul protokolu pre protokol %s"
 
 #: ../libpurple/account.c:1041 ../libpurple/connection.c:108
-#: ../pidgin/gtkblist.c:4036
+#: ../pidgin/gtkblist.c:4318
 msgid "Connection Error"
 msgstr "Chyba pripojenia"
 
@@ -1984,7 +2024,7 @@
 #: ../libpurple/account.c:1251
 #, c-format
 msgid "Change password for %s"
-msgstr "Zmeniť heslo %s"
+msgstr "Zmeniť heslo používateľa %s"
 
 #: ../libpurple/account.c:1259
 msgid "Please enter your current password and your new password."
@@ -2001,16 +2041,16 @@
 
 #: ../libpurple/account.c:1764 ../libpurple/protocols/gg/gg.c:1017
 #: ../libpurple/protocols/jabber/buddy.c:782
-#: ../libpurple/protocols/jabber/buddy.c:2027
-#: ../libpurple/protocols/jabber/buddy.c:2044
-#: ../libpurple/protocols/novell/novell.c:2831
+#: ../libpurple/protocols/jabber/buddy.c:2030
+#: ../libpurple/protocols/jabber/buddy.c:2047
+#: ../libpurple/protocols/novell/novell.c:2836
 #: ../libpurple/protocols/qq/qq.c:232 ../pidgin/gtkft.c:160
 msgid "Unknown"
 msgstr "Neznáma"
 
-#: ../libpurple/blist.c:521 ../libpurple/blist.c:1320
-#: ../libpurple/blist.c:1552 ../libpurple/protocols/jabber/roster.c:69
-#: ../libpurple/protocols/myspace/myspace.c:3244 ../pidgin/gtkblist.c:5373
+#: ../libpurple/blist.c:521 ../libpurple/blist.c:1321
+#: ../libpurple/blist.c:1531 ../libpurple/protocols/jabber/roster.c:69
+#: ../libpurple/protocols/myspace/myspace.c:3250 ../pidgin/gtkblist.c:5662
 #: ../pidgin/plugins/gevolution/gevo-util.c:67
 #: ../pidgin/plugins/gevolution/gevolution.c:96
 msgid "Buddies"
@@ -2022,13 +2062,13 @@
 
 #: ../libpurple/certificate.c:545
 msgid "(DOES NOT MATCH)"
-msgstr ""
+msgstr "(NEVYHOVUJE)"
 
 #. Make messages
 #: ../libpurple/certificate.c:549
 #, c-format
 msgid "%s has presented the following certificate for just-this-once use:"
-msgstr ""
+msgstr "%s vytvoril nasledujúci certifikát iba na jedno použitie:"
 
 #: ../libpurple/certificate.c:550
 #, c-format
@@ -2036,41 +2076,41 @@
 "Common name: %s %s\n"
 "Fingerprint (SHA1): %s"
 msgstr ""
+"Bežný názov: %s %s\n"
+"Odtlačok (SHA1): %s"
 
 #. TODO: Find what the handle ought to be
 #: ../libpurple/certificate.c:555
 msgid "Single-use Certificate Verification"
-msgstr ""
+msgstr "Overenie certifikátu na jedno použitie"
 
 #. Scheme name
 #. Pool name
 #: ../libpurple/certificate.c:872
-#, fuzzy
 msgid "Certificate Authorities"
-msgstr "Certifikáty"
+msgstr "Autority certifikátov"
 
 #. Scheme name
 #. Pool name
 #: ../libpurple/certificate.c:1040
 msgid "SSL Peers Cache"
-msgstr ""
+msgstr "Vyrovnávacia pamäť SSL peerov"
 
 #. Make messages
 #: ../libpurple/certificate.c:1171
-#, fuzzy, c-format
+#, c-format
 msgid "Accept certificate for %s?"
-msgstr "Prijať pozvanie na chat?"
+msgstr "Prijať certifikát pre %s?"
 
 #. TODO: Find what the handle ought to be
 #: ../libpurple/certificate.c:1177
 msgid "SSL Certificate Verification"
-msgstr ""
+msgstr "Overenie SSL certifikátu"
 
 #. Number of actions
 #: ../libpurple/certificate.c:1186
-#, fuzzy
 msgid "Accept"
-msgstr "Použiť"
+msgstr "Prijať"
 
 #: ../libpurple/certificate.c:1187 ../libpurple/protocols/qq/buddy_opt.c:214
 #: ../libpurple/protocols/qq/group_im.c:144
@@ -2081,9 +2121,8 @@
 msgstr "Odmietnuť"
 
 #: ../libpurple/certificate.c:1188
-#, fuzzy
 msgid "_View Certificate..."
-msgstr "Certifikáty"
+msgstr "_Prezrieť certifikát..."
 
 #. Prompt the user to authenticate the certificate
 #. TODO: Provide the user with more guidance about why he is
@@ -2095,6 +2134,9 @@
 "The certificate presented by \"%s\" claims to be from \"%s\" instead.  This "
 "could mean that you are not connecting to the service you believe you are."
 msgstr ""
+"Certifikát od používateľa \"%s\" tvrdí, že pochádza od používateľa \"%s\". "
+"To môže znamenať, že sa nepripájate na tú službu, na ktorú sa chcete "
+"pripojiť. "
 
 #. Prompt the user to authenticate the certificate
 #. vrq will be completed by user_auth
@@ -2104,11 +2146,13 @@
 "The certificate presented by \"%s\" is self-signed. It cannot be "
 "automatically checked."
 msgstr ""
+"Certifikát od používateľa \"%s\" je podpísaný samým sebou. Nie je možné ho "
+"automaticky overiť."
 
 #: ../libpurple/certificate.c:1331
 #, c-format
 msgid "The certificate chain presented for %s is not valid."
-msgstr ""
+msgstr "Reťaz certifikátu od používateľa %s nie je správna."
 
 #. TODO: Make this error either block the ensuing SSL
 #. connection error until the user dismisses this one, or
@@ -2116,14 +2160,12 @@
 #. TODO: Probably wrong.
 #. TODO: Probably wrong
 #: ../libpurple/certificate.c:1339 ../libpurple/certificate.c:1416
-#, fuzzy
 msgid "SSL Certificate Error"
-msgstr "Certifikáty"
+msgstr "Chyba SSL Certifikátu"
 
 #: ../libpurple/certificate.c:1340
-#, fuzzy
 msgid "Invalid certificate chain"
-msgstr "Chybný titulok"
+msgstr "Chybná reťaz certifikátu"
 
 #. vrq will be completed by user_auth
 #: ../libpurple/certificate.c:1360
@@ -2131,12 +2173,14 @@
 "You have no database of root certificates, so this certificate cannot be "
 "validated."
 msgstr ""
+"Nemáte databázu koreňových certifikátov, takže tento certifikát nie je možné "
+"overiť."
 
 #. vrq will be completed by user_auth
 #: ../libpurple/certificate.c:1382
 msgid ""
 "The root certificate this one claims to be issued by is unknown to Pidgin."
-msgstr ""
+msgstr "Certifikát, ktorým je tento certifikát vydaný, je pre Pidgin neznámy."
 
 #: ../libpurple/certificate.c:1408
 #, c-format
@@ -2145,10 +2189,12 @@
 "signature from the Certificate Authority from which it claims to have a "
 "signature."
 msgstr ""
+"Reťaz certifikátu od používateľa %s nemá správny digitálny podpis od "
+"autority, ktorá je na ňom uvedená."
 
 #: ../libpurple/certificate.c:1417
 msgid "Invalid certificate authority signature"
-msgstr ""
+msgstr "Chybný podpis autority"
 
 #. Make messages
 #: ../libpurple/certificate.c:1881
@@ -2161,21 +2207,25 @@
 "Activation date: %s\n"
 "Expiration date: %s\n"
 msgstr ""
+"Bežný názov: %s\n"
+"\n"
+"Odtlačok (SHA1): %s\n"
+"\n"
+"Dátum aktivácie: %s\n"
+"Dátum vypršania: %s\n"
 
 #. TODO: Find what the handle ought to be
 #: ../libpurple/certificate.c:1890
-#, fuzzy
 msgid "Certificate Information"
-msgstr "Podrobnosti o serveri"
+msgstr "Podrobnosti o certifikáte"
 
 #: ../libpurple/connection.c:107
 msgid "Registration Error"
 msgstr "Chyba pri registrácii"
 
 #: ../libpurple/connection.c:180
-#, fuzzy
 msgid "Unregistration Error"
-msgstr "Chyba pri registrácii"
+msgstr "Chyba pri rušení registrácie"
 
 #: ../libpurple/connection.c:350
 #, c-format
@@ -2188,9 +2238,9 @@
 msgstr "+++ používateľ %s sa odhlásil"
 
 #: ../libpurple/connection.c:497 ../libpurple/plugin.c:282
-#: ../libpurple/protocols/jabber/buddy.c:2337
+#: ../libpurple/protocols/jabber/buddy.c:2340
 #: ../libpurple/protocols/msn/servconn.c:141
-#: ../libpurple/protocols/msn/session.c:322
+#: ../libpurple/protocols/msn/session.c:361
 msgid "Unknown error"
 msgstr "Neznáma chyba"
 
@@ -2306,7 +2356,6 @@
 "%s"
 
 #: ../libpurple/dnsquery.c:578
-#, c-format
 msgid "EOF while reading from resolver process"
 msgstr "Počas čítania z procesu resolveru sa vyskytlo EOF"
 
@@ -2415,7 +2464,6 @@
 msgstr "Prenos súboru %s bol dokončený"
 
 #: ../libpurple/ft.c:685
-#, c-format
 msgid "File transfer complete"
 msgstr "Prenos súboru je dokončený"
 
@@ -2425,7 +2473,6 @@
 msgstr "Zrušili ste prenos %s"
 
 #: ../libpurple/ft.c:1108
-#, c-format
 msgid "File transfer cancelled"
 msgstr "Prenos súboru zrušený"
 
@@ -2675,7 +2722,6 @@
 msgstr "Používate %s, ale tento modul vyžaduje %s."
 
 #: ../libpurple/plugin.c:380
-#, c-format
 msgid "This plugin has not defined an ID."
 msgstr "Tento modul nemá definované ID."
 
@@ -2759,13 +2805,13 @@
 #: ../libpurple/plugins/autoaccept.c:165 ../libpurple/plugins/idle.c:170
 #: ../libpurple/plugins/idle.c:204 ../libpurple/plugins/idle.c:230
 #: ../libpurple/protocols/oscar/oscar.c:1453
-#: ../libpurple/protocols/oscar/oscar.c:2233
-#: ../libpurple/protocols/oscar/oscar.c:2282
-#: ../libpurple/protocols/oscar/oscar.c:5886
-#: ../libpurple/protocols/oscar/oscar.c:5941
-#: ../libpurple/protocols/oscar/oscar.c:6167
-#: ../libpurple/protocols/oscar/oscar.c:6237 ../libpurple/request.h:1388
-#: ../libpurple/request.h:1398
+#: ../libpurple/protocols/oscar/oscar.c:2247
+#: ../libpurple/protocols/oscar/oscar.c:2296
+#: ../libpurple/protocols/oscar/oscar.c:5938
+#: ../libpurple/protocols/oscar/oscar.c:5993
+#: ../libpurple/protocols/oscar/oscar.c:6219
+#: ../libpurple/protocols/oscar/oscar.c:6289 ../libpurple/request.h:1388
+#: ../libpurple/request.h:1398 ../pidgin/gtkblist.c:527
 msgid "_Cancel"
 msgstr "_Zrušiť"
 
@@ -2807,8 +2853,8 @@
 "súboru\n"
 "(len ak neexistuje konverzácia s odosielateľom)"
 
-#: ../libpurple/plugins/buddynote.c:46 ../libpurple/protocols/msn/msn.c:1660
-#: ../libpurple/protocols/msn/msn.c:1690
+#: ../libpurple/plugins/buddynote.c:46 ../libpurple/protocols/msn/msn.c:1770
+#: ../libpurple/protocols/msn/msn.c:1800
 msgid "Notes"
 msgstr "Poznámky"
 
@@ -3246,9 +3292,9 @@
 msgstr "Sledovanie môžete pridať/odstrániť v dialógu „Sledovanie priateľov“"
 
 #: ../libpurple/plugins/offlinemsg.c:165
-#: ../libpurple/protocols/msn/dialog.c:133
-#: ../libpurple/protocols/msn/msn.c:550 ../libpurple/protocols/msn/msn.c:560
-#: ../libpurple/protocols/novell/novell.c:1917
+#: ../libpurple/protocols/msn/dialog.c:141
+#: ../libpurple/protocols/msn/msn.c:622
+#: ../libpurple/protocols/novell/novell.c:1919
 #: ../libpurple/protocols/silc/buddy.c:317
 #: ../libpurple/protocols/silc/pk.c:113 ../libpurple/protocols/silc/wb.c:304
 #: ../libpurple/protocols/silc10/buddy.c:314
@@ -3258,9 +3304,9 @@
 msgstr "Áno"
 
 #: ../libpurple/plugins/offlinemsg.c:166
-#: ../libpurple/protocols/msn/dialog.c:134
-#: ../libpurple/protocols/msn/msn.c:550 ../libpurple/protocols/msn/msn.c:560
-#: ../libpurple/protocols/novell/novell.c:1918
+#: ../libpurple/protocols/msn/dialog.c:142
+#: ../libpurple/protocols/msn/msn.c:622
+#: ../libpurple/protocols/novell/novell.c:1920
 #: ../libpurple/protocols/silc/buddy.c:318
 #: ../libpurple/protocols/silc/pk.c:114 ../libpurple/protocols/silc/wb.c:305
 #: ../libpurple/protocols/silc10/buddy.c:315
@@ -3369,7 +3415,7 @@
 msgstr "Test pre zistenie, či väčšina vecí funguje."
 
 #. Scheme name
-#: ../libpurple/plugins/ssl/ssl-gnutls.c:902
+#: ../libpurple/plugins/ssl/ssl-gnutls.c:911
 #: ../libpurple/plugins/ssl/ssl-nss.c:725
 msgid "X.509 Certificates"
 msgstr "X.509 certifikáty"
@@ -3380,7 +3426,7 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/ssl/ssl-gnutls.c:986
+#: ../libpurple/plugins/ssl/ssl-gnutls.c:995
 msgid "GNUTLS"
 msgstr "GNUTLS"
 
@@ -3388,8 +3434,8 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/plugins/ssl/ssl-gnutls.c:989
-#: ../libpurple/plugins/ssl/ssl-gnutls.c:991
+#: ../libpurple/plugins/ssl/ssl-gnutls.c:998
+#: ../libpurple/plugins/ssl/ssl-gnutls.c:1000
 msgid "Provides SSL support through GNUTLS."
 msgstr "Poskytuje podporu SSL pomocou GNUTLS."
 
@@ -3494,15 +3540,15 @@
 "Upozorní v okne konverzácie, keď priateľ je alebo prestane byť neprítomný "
 "alebo nečinný."
 
-#: ../libpurple/plugins/tcl/tcl.c:421
+#: ../libpurple/plugins/tcl/tcl.c:423
 msgid "Tcl Plugin Loader"
 msgstr "Načítač Tcl modulov"
 
-#: ../libpurple/plugins/tcl/tcl.c:423 ../libpurple/plugins/tcl/tcl.c:424
+#: ../libpurple/plugins/tcl/tcl.c:425 ../libpurple/plugins/tcl/tcl.c:426
 msgid "Provides support for loading Tcl plugins"
 msgstr "Umožňuje spúšťať Tcl moduly."
 
-#: ../libpurple/plugins/tcl/tcl.c:507
+#: ../libpurple/plugins/tcl/tcl.c:509
 msgid ""
 "Unable to detect ActiveTCL installation. If you wish to use TCL plugins, "
 "install ActiveTCL from http://www.activestate.com\n"
@@ -3539,7 +3585,7 @@
 #: ../libpurple/protocols/jabber/buddy.c:295
 #: ../libpurple/protocols/jabber/buddy.c:1325
 #: ../libpurple/protocols/jabber/buddy.c:1335
-#: ../libpurple/protocols/jabber/buddy.c:2216
+#: ../libpurple/protocols/jabber/buddy.c:2219
 #: ../libpurple/protocols/silc/ops.c:1041
 #: ../libpurple/protocols/silc/util.c:555
 #: ../libpurple/protocols/silc10/ops.c:1075
@@ -3720,8 +3766,8 @@
 #: ../libpurple/protocols/gg/gg.c:642 ../libpurple/protocols/gg/gg.c:1054
 #: ../libpurple/protocols/gg/gg.c:1126
 #: ../libpurple/protocols/jabber/jabber.c:957
-#: ../libpurple/protocols/oscar/oscar.c:3789
-#: ../libpurple/protocols/oscar/oscar.c:3802
+#: ../libpurple/protocols/oscar/oscar.c:3803
+#: ../libpurple/protocols/oscar/oscar.c:3816
 #: ../libpurple/protocols/qq/buddy_info.c:49
 msgid "City"
 msgstr "Mesto"
@@ -3730,9 +3776,9 @@
 msgid "Year of birth"
 msgstr "Rok narodenia"
 
-#: ../libpurple/protocols/gg/gg.c:650 ../libpurple/protocols/msn/msn.c:1589
-#: ../libpurple/protocols/myspace/user.c:115
-#: ../libpurple/protocols/oscar/oscar.c:3732
+#: ../libpurple/protocols/gg/gg.c:650 ../libpurple/protocols/msn/msn.c:1699
+#: ../libpurple/protocols/myspace/user.c:117
+#: ../libpurple/protocols/oscar/oscar.c:3746
 #: ../libpurple/protocols/qq/buddy_info.c:46
 #: ../libpurple/protocols/qq/qq.c:226 ../libpurple/protocols/qq/qq.c:229
 #: ../libpurple/protocols/qq/qq.c:232 ../libpurple/protocols/qq/qq.c:236
@@ -3745,14 +3791,14 @@
 msgstr "Muž alebo žena"
 
 #: ../libpurple/protocols/gg/gg.c:652
-#: ../libpurple/protocols/oscar/oscar.c:3732
+#: ../libpurple/protocols/oscar/oscar.c:3746
 #: ../libpurple/protocols/qq/buddy_info.c:83
 #: ../libpurple/protocols/qq/qq.c:226
 msgid "Male"
 msgstr "Muž"
 
 #: ../libpurple/protocols/gg/gg.c:653
-#: ../libpurple/protocols/oscar/oscar.c:3732
+#: ../libpurple/protocols/oscar/oscar.c:3746
 #: ../libpurple/protocols/qq/buddy_info.c:84
 #: ../libpurple/protocols/qq/qq.c:229
 msgid "Female"
@@ -3812,25 +3858,25 @@
 msgstr "Pridať na chat..."
 
 #: ../libpurple/protocols/gg/gg.c:1008
-#: ../libpurple/protocols/jabber/buddy.c:2031
-#: ../libpurple/protocols/novell/novell.c:2828
+#: ../libpurple/protocols/jabber/buddy.c:2034
+#: ../libpurple/protocols/novell/novell.c:2833
 #: ../libpurple/protocols/oscar/oscar.c:828
-#: ../libpurple/protocols/oscar/oscar.c:5604
+#: ../libpurple/protocols/oscar/oscar.c:5656
 #: ../libpurple/protocols/qq/qq.c:170 ../libpurple/protocols/qq/qq.c:177
 #: ../libpurple/protocols/qq/qq.c:292
-#: ../libpurple/protocols/yahoo/yahoo.c:3099 ../libpurple/status.c:154
-#: ../pidgin/gtkblist.c:3104 ../pidgin/gtkblist.c:3436
+#: ../libpurple/protocols/yahoo/yahoo.c:3101 ../libpurple/status.c:154
+#: ../pidgin/gtkblist.c:3302 ../pidgin/gtkblist.c:3640
 #: ../pidgin/gtkdocklet.c:450 ../pidgin/gtkstatusbox.c:1061
 msgid "Offline"
 msgstr "Odpojený"
 
 #: ../libpurple/protocols/gg/gg.c:1011
-#: ../libpurple/protocols/jabber/buddy.c:2033
+#: ../libpurple/protocols/jabber/buddy.c:2036
 #: ../libpurple/protocols/msn/state.c:29 ../libpurple/protocols/msn/state.c:30
 #: ../libpurple/protocols/msn/state.c:37 ../libpurple/protocols/msn/state.c:38
-#: ../libpurple/protocols/novell/novell.c:2816
+#: ../libpurple/protocols/novell/novell.c:2821
 #: ../libpurple/protocols/qq/qq.c:280
-#: ../libpurple/protocols/yahoo/yahoo.c:3101 ../libpurple/status.c:155
+#: ../libpurple/protocols/yahoo/yahoo.c:3103 ../libpurple/status.c:155
 #: ../pidgin/gtkdocklet.c:438 ../pidgin/gtkstatusbox.c:1057
 msgid "Available"
 msgstr "Pripojený"
@@ -3840,32 +3886,31 @@
 #. Away stuff
 #: ../libpurple/protocols/gg/gg.c:1014 ../libpurple/protocols/irc/irc.c:528
 #: ../libpurple/protocols/irc/msgs.c:310
-#: ../libpurple/protocols/jabber/buddy.c:2037
-#: ../libpurple/protocols/novell/novell.c:2819
+#: ../libpurple/protocols/jabber/buddy.c:2040
+#: ../libpurple/protocols/novell/novell.c:2824
 #: ../libpurple/protocols/oscar/oscar.c:733
-#: ../libpurple/protocols/oscar/oscar.c:4547
-#: ../libpurple/protocols/oscar/oscar.c:5632
+#: ../libpurple/protocols/oscar/oscar.c:4561
+#: ../libpurple/protocols/oscar/oscar.c:5684
 #: ../libpurple/protocols/qq/qq.c:180 ../libpurple/protocols/qq/qq.c:284
 #: ../libpurple/protocols/silc/buddy.c:1476
 #: ../libpurple/protocols/silc10/buddy.c:1476
-#: ../libpurple/protocols/yahoo/yahoo.c:3653
-#: ../libpurple/protocols/yahoo/yahoo.c:3727 ../libpurple/status.c:158
-#: ../pidgin/gtkdocklet.c:442 ../pidgin/gtkprefs.c:1939
+#: ../libpurple/protocols/yahoo/yahoo.c:3655
+#: ../libpurple/protocols/yahoo/yahoo.c:3729 ../libpurple/status.c:158
+#: ../pidgin/gtkdocklet.c:442 ../pidgin/gtkprefs.c:1941
 #: ../pidgin/gtkstatusbox.c:1058
-#, c-format
 msgid "Away"
 msgstr "Neprítomný"
 
 #: ../libpurple/protocols/gg/gg.c:1043 ../libpurple/protocols/gg/gg.c:1117
-#: ../libpurple/protocols/oscar/oscar.c:2699
-#: ../libpurple/protocols/oscar/oscar.c:3699
+#: ../libpurple/protocols/oscar/oscar.c:2713
+#: ../libpurple/protocols/oscar/oscar.c:3713
 msgid "UIN"
 msgstr "UIN"
 
 #: ../libpurple/protocols/gg/gg.c:1046 ../libpurple/protocols/gg/gg.c:1120
-#: ../libpurple/protocols/jabber/buddy.c:2210
-#: ../libpurple/protocols/jabber/buddy.c:2386
-#: ../libpurple/protocols/oscar/oscar.c:3710
+#: ../libpurple/protocols/jabber/buddy.c:2213
+#: ../libpurple/protocols/jabber/buddy.c:2389
+#: ../libpurple/protocols/oscar/oscar.c:3724
 #: ../libpurple/protocols/silc/ops.c:990
 #: ../libpurple/protocols/silc10/ops.c:1024
 msgid "First Name"
@@ -3876,7 +3921,7 @@
 msgstr "Rok narodenia"
 
 #: ../libpurple/protocols/gg/gg.c:1111 ../libpurple/protocols/gg/gg.c:1180
-#: ../libpurple/protocols/oscar/oscar.c:3911
+#: ../libpurple/protocols/oscar/oscar.c:3925
 msgid "Unable to display the search results."
 msgstr "Nebolo možné zobraziť výsledky vyhľadávania."
 
@@ -3920,7 +3965,7 @@
 msgid "Connection failed."
 msgstr "Pripojenie zlyhalo"
 
-#: ../libpurple/protocols/gg/gg.c:1621 ../libpurple/protocols/msn/msn.c:559
+#: ../libpurple/protocols/gg/gg.c:1621 ../libpurple/protocols/msn/msn.c:621
 msgid "Blocked"
 msgstr "Blokovaný"
 
@@ -4058,7 +4103,7 @@
 
 #: ../libpurple/protocols/irc/irc.c:127 ../libpurple/protocols/irc/irc.c:165
 #: ../libpurple/protocols/irc/irc.c:612 ../libpurple/protocols/irc/irc.c:637
-#: ../libpurple/protocols/myspace/myspace.c:2356
+#: ../libpurple/protocols/myspace/myspace.c:2361
 msgid "Server has disconnected"
 msgstr "Server bol odpojený"
 
@@ -4084,14 +4129,14 @@
 #. connect to the server
 #: ../libpurple/protocols/irc/irc.c:319
 #: ../libpurple/protocols/jabber/jabber.c:1280
-#: ../libpurple/protocols/msn/session.c:345
-#: ../libpurple/protocols/myspace/myspace.c:301
-#: ../libpurple/protocols/novell/novell.c:2182
+#: ../libpurple/protocols/msn/session.c:384
+#: ../libpurple/protocols/myspace/myspace.c:302
+#: ../libpurple/protocols/novell/novell.c:2187
 #: ../libpurple/protocols/oscar/oscar.c:1287
 #: ../libpurple/protocols/qq/qq.c:136
 #: ../libpurple/protocols/sametime/sametime.c:3723
-#: ../libpurple/protocols/simple/simple.c:1716
-#: ../libpurple/protocols/yahoo/yahoo.c:2939
+#: ../libpurple/protocols/simple/simple.c:1718
+#: ../libpurple/protocols/yahoo/yahoo.c:2941
 #: ../libpurple/protocols/zephyr/zephyr.c:1621 ../pidgin/gtkstatusbox.c:662
 msgid "Connecting"
 msgstr "Pripája sa"
@@ -4105,20 +4150,20 @@
 #. TODO: try other ports if in auto mode, then save
 #. * working port and try that first next time.
 #: ../libpurple/protocols/irc/irc.c:338
-#: ../libpurple/protocols/myspace/myspace.c:317
+#: ../libpurple/protocols/myspace/myspace.c:318
 #: ../libpurple/protocols/simple/simple.c:464
-#: ../libpurple/protocols/simple/simple.c:1631
+#: ../libpurple/protocols/simple/simple.c:1633
 msgid "Couldn't create socket"
 msgstr "Nepodarilo sa vytvoriť socket"
 
 #: ../libpurple/protocols/irc/irc.c:421
-#: ../libpurple/protocols/myspace/myspace.c:2469
+#: ../libpurple/protocols/myspace/myspace.c:2474
 #: ../libpurple/protocols/oscar/oscar.c:1283
 msgid "Couldn't connect to host"
 msgstr "Nepodarilo sa pripojiť ku hostiteľovi"
 
 #: ../libpurple/protocols/irc/irc.c:609 ../libpurple/protocols/irc/irc.c:634
-#: ../libpurple/protocols/myspace/myspace.c:2352
+#: ../libpurple/protocols/myspace/myspace.c:2357
 msgid "Read error"
 msgstr "Chyba čítania"
 
@@ -4158,22 +4203,22 @@
 
 #. host to connect to
 #: ../libpurple/protocols/irc/irc.c:940 ../libpurple/protocols/irc/msgs.c:323
-#: ../libpurple/protocols/msn/msn.c:2185
-#: ../libpurple/protocols/oscar/oscar.c:6671
+#: ../libpurple/protocols/msn/msn.c:2297
+#: ../libpurple/protocols/oscar/oscar.c:6723
 #: ../libpurple/protocols/qq/qq.c:755
 #: ../libpurple/protocols/sametime/sametime.c:5727
 #: ../libpurple/protocols/silc/ops.c:1249
 #: ../libpurple/protocols/silc/ops.c:1341
 #: ../libpurple/protocols/silc10/ops.c:1244
 #: ../libpurple/protocols/silc10/ops.c:1347
-#: ../libpurple/protocols/simple/simple.c:1896
+#: ../libpurple/protocols/simple/simple.c:1898
 #: ../libpurple/protocols/toc/toc.c:2327
 msgid "Server"
 msgstr "Server"
 
 #. port to connect to
-#: ../libpurple/protocols/irc/irc.c:943 ../libpurple/protocols/msn/msn.c:2190
-#: ../libpurple/protocols/oscar/oscar.c:6674
+#: ../libpurple/protocols/irc/irc.c:943 ../libpurple/protocols/msn/msn.c:2302
+#: ../libpurple/protocols/oscar/oscar.c:6726
 #: ../libpurple/protocols/qq/qq.c:758
 #: ../libpurple/protocols/sametime/sametime.c:5732
 #: ../libpurple/protocols/silc/silc.c:1918
@@ -4245,7 +4290,7 @@
 msgstr " <i>(identifikovaný)</i>"
 
 #: ../libpurple/protocols/irc/msgs.c:303
-#: ../libpurple/protocols/oscar/oscar.c:3700
+#: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/silc/ops.c:1418
 #: ../libpurple/protocols/silc10/ops.c:1414
 msgid "Nick"
@@ -4344,79 +4389,79 @@
 msgid "Invitation only"
 msgstr "Len pre pozvaných"
 
-#: ../libpurple/protocols/irc/msgs.c:795
+#: ../libpurple/protocols/irc/msgs.c:798
 #, c-format
 msgid "You have been kicked by %s: (%s)"
 msgstr "Používateľ %s vás vykopol: (%s)"
 
 #. Remove user from channel
-#: ../libpurple/protocols/irc/msgs.c:800 ../libpurple/protocols/silc/ops.c:699
+#: ../libpurple/protocols/irc/msgs.c:803 ../libpurple/protocols/silc/ops.c:699
 #: ../libpurple/protocols/silc10/ops.c:720
 #, c-format
 msgid "Kicked by %s (%s)"
 msgstr "Vykopnutý používateľom %s (%s)"
 
-#: ../libpurple/protocols/irc/msgs.c:823
+#: ../libpurple/protocols/irc/msgs.c:826
 #, c-format
 msgid "mode (%s %s) by %s"
 msgstr "režim (%s %s) od %s"
 
-#: ../libpurple/protocols/irc/msgs.c:908 ../libpurple/protocols/irc/msgs.c:909
+#: ../libpurple/protocols/irc/msgs.c:911 ../libpurple/protocols/irc/msgs.c:912
 msgid "Invalid nickname"
 msgstr "Neplatná prezývka"
 
-#: ../libpurple/protocols/irc/msgs.c:910
+#: ../libpurple/protocols/irc/msgs.c:913
 msgid ""
 "Your selected nickname was rejected by the server.  It probably contains "
 "invalid characters."
 msgstr ""
 "Server neuznal vami vybranú prezývku. Zrejme obsahuje nedovolené znaky."
 
-#: ../libpurple/protocols/irc/msgs.c:915
+#: ../libpurple/protocols/irc/msgs.c:918
 msgid ""
 "Your selected account name was rejected by the server.  It probably contains "
 "invalid characters."
 msgstr ""
 "Server neuznal vami vybraný názov účtu. Zrejme obsahuje nedovolené znaky."
 
-#: ../libpurple/protocols/irc/msgs.c:954
+#: ../libpurple/protocols/irc/msgs.c:957
 msgid "Cannot change nick"
 msgstr "Nepodarilo sa zmeniť prezývku"
 
-#: ../libpurple/protocols/irc/msgs.c:954
+#: ../libpurple/protocols/irc/msgs.c:957
 msgid "Could not change nick"
 msgstr "Nebolo možné zmeniť prezývku"
 
-#: ../libpurple/protocols/irc/msgs.c:975
+#: ../libpurple/protocols/irc/msgs.c:978
 #, c-format
 msgid "You have parted the channel%s%s"
 msgstr "Opustili ste kanál %s%s"
 
-#: ../libpurple/protocols/irc/msgs.c:1017
+#: ../libpurple/protocols/irc/msgs.c:1020
 msgid "Error: invalid PONG from server"
 msgstr "Chyba: neplatný PONG od servera"
 
-#: ../libpurple/protocols/irc/msgs.c:1019
+#: ../libpurple/protocols/irc/msgs.c:1022
 #, c-format
 msgid "PING reply -- Lag: %lu seconds"
 msgstr "Odpoveď na PING -- Oneskorenie: %lu sekúnd"
 
-#: ../libpurple/protocols/irc/msgs.c:1110
+#: ../libpurple/protocols/irc/msgs.c:1113
 #, c-format
 msgid "Cannot join %s: Registration is required."
 msgstr "Nedá sa pripojiť do %s: Je potrebné sa zaregistrovať."
 
-#: ../libpurple/protocols/irc/msgs.c:1111
+#: ../libpurple/protocols/irc/msgs.c:1114
 #: ../libpurple/protocols/silc/ops.c:1093
 #: ../libpurple/protocols/silc10/ops.c:1128
 msgid "Cannot join channel"
 msgstr "Nepodarilo sa pripojiť na kanál"
 
-#: ../libpurple/protocols/irc/msgs.c:1145
+#: ../libpurple/protocols/irc/msgs.c:1148
 msgid "Nick or channel is temporarily unavailable."
 msgstr "Prezývka alebo kanál je dočasne nedostupný."
 
-#: ../libpurple/protocols/irc/msgs.c:1157
+#: ../libpurple/protocols/irc/msgs.c:1160
 #, c-format
 msgid "Wallops from %s"
 msgstr "Operátori %s"
@@ -4528,7 +4573,7 @@
 "names [kanál]:  Zobrazí názvy používateľov nachádzajúcich sa na kanáli."
 
 #: ../libpurple/protocols/irc/parse.c:137
-#: ../libpurple/protocols/jabber/jabber.c:2261
+#: ../libpurple/protocols/jabber/jabber.c:2299
 msgid "nick &lt;new nickname&gt;:  Change your nickname."
 msgstr "nick &lt;nová prezývka&gt;:  Zmení vašu prezývku."
 
@@ -4667,14 +4712,12 @@
 
 #: ../libpurple/protocols/jabber/adhoccommands.c:139
 #: ../libpurple/protocols/jabber/adhoccommands.c:140
-#, fuzzy
 msgid "Ad-Hoc Command Failed"
-msgstr "príkaz blocklist zlyhal"
-
-#: ../libpurple/protocols/jabber/adhoccommands.c:173
-#, fuzzy
+msgstr "príkaz Ad-Hoc zlyhal"
+
+#: ../libpurple/protocols/jabber/adhoccommands.c:176
 msgid "execute"
-msgstr "Neočakávané"
+msgstr "vykonať"
 
 #: ../libpurple/protocols/jabber/auth.c:53
 msgid "Server requires TLS/SSL for login.  No TLS/SSL support found."
@@ -4819,15 +4862,15 @@
 
 #: ../libpurple/protocols/jabber/buddy.c:300
 #: ../libpurple/protocols/jabber/buddy.c:1250
-#: ../libpurple/protocols/msn/msn.c:1658
-#: ../libpurple/protocols/oscar/oscar.c:3749
+#: ../libpurple/protocols/msn/msn.c:1768
+#: ../libpurple/protocols/oscar/oscar.c:3763
 msgid "Birthday"
 msgstr "Dátum narodenia"
 
 #: ../libpurple/protocols/jabber/buddy.c:301
 #: ../libpurple/protocols/jabber/buddy.c:1365
 #: ../libpurple/protocols/jabber/chat.c:775
-#: ../libpurple/protocols/jabber/usermood.c:175 ../pidgin/gtkblist.c:3116
+#: ../libpurple/protocols/jabber/usermood.c:175 ../pidgin/gtkblist.c:3314
 #: ../pidgin/gtkprefs.c:739
 msgid "Description"
 msgstr "Popis"
@@ -4858,104 +4901,92 @@
 #: ../libpurple/protocols/jabber/buddy.c:815
 #: ../libpurple/protocols/jabber/buddy.c:975
 msgid "Last Activity"
-msgstr ""
+msgstr "Posledná aktivita"
 
 #: ../libpurple/protocols/jabber/buddy.c:817
 #: ../libpurple/protocols/jabber/buddy.c:977
-#, fuzzy
 msgid "Service Discovery Info"
-msgstr "Nastaviť informácie o priečinku"
+msgstr "Prieskum služieb"
 
 #: ../libpurple/protocols/jabber/buddy.c:819
 #: ../libpurple/protocols/jabber/buddy.c:979
 msgid "Service Discovery Items"
-msgstr ""
+msgstr "Položky prieskumu služieb"
 
 #: ../libpurple/protocols/jabber/buddy.c:821
 #: ../libpurple/protocols/jabber/buddy.c:981
-#, fuzzy
 msgid "Extended Stanza Addressing"
-msgstr "Rozšírená adresa"
+msgstr "Rozšírené adresovanie slôh"
 
 #: ../libpurple/protocols/jabber/buddy.c:823
 #: ../libpurple/protocols/jabber/buddy.c:983
-#, fuzzy
 msgid "Multi-User Chat"
-msgstr "Prezývka pre chat"
+msgstr "Skupinový chat"
 
 #: ../libpurple/protocols/jabber/buddy.c:825
 #: ../libpurple/protocols/jabber/buddy.c:985
-#, fuzzy
 msgid "Multi-User Chat Extended Presence Information"
-msgstr "Používateľ nemá žiadne podrobnosti v adresári."
+msgstr "Rozšírené informácie o prítomnosti v skupinovom chate."
 
 #: ../libpurple/protocols/jabber/buddy.c:827
 #: ../libpurple/protocols/jabber/buddy.c:987
 msgid "In-Band Bytestreams"
-msgstr ""
+msgstr "In-Band Bajtstreamy"
 
 #: ../libpurple/protocols/jabber/buddy.c:829
 #: ../libpurple/protocols/jabber/buddy.c:989
-#, fuzzy
 msgid "Ad-Hoc Commands"
-msgstr "Príkaz"
+msgstr "Príkaz Ad-Hoc"
 
 #: ../libpurple/protocols/jabber/buddy.c:831
 #: ../libpurple/protocols/jabber/buddy.c:991
 msgid "PubSub Service"
-msgstr ""
+msgstr "PubSub služba"
 
 #: ../libpurple/protocols/jabber/buddy.c:833
 #: ../libpurple/protocols/jabber/buddy.c:993
 msgid "SOCKS5 Bytestreams"
-msgstr ""
+msgstr "SOCKS5 Bajtstreamy"
 
 #: ../libpurple/protocols/jabber/buddy.c:835
 #: ../libpurple/protocols/jabber/buddy.c:995
 msgid "Out of Band Data"
-msgstr ""
+msgstr "Mimo skupinových dát"
 
 #: ../libpurple/protocols/jabber/buddy.c:837
 #: ../libpurple/protocols/jabber/buddy.c:997
-#, fuzzy
 msgid "XHTML-IM"
-msgstr "HTML"
+msgstr "XHTML-IM"
 
 #: ../libpurple/protocols/jabber/buddy.c:839
 #: ../libpurple/protocols/jabber/buddy.c:999
-#, fuzzy
 msgid "In-Band Registration"
-msgstr "Chyba pri registrácii"
+msgstr "In-Band Registrácia"
 
 #: ../libpurple/protocols/jabber/buddy.c:841
 #: ../libpurple/protocols/jabber/buddy.c:1001
-#, fuzzy
 msgid "User Location"
 msgstr "Lokalita"
 
 #: ../libpurple/protocols/jabber/buddy.c:843
 #: ../libpurple/protocols/jabber/buddy.c:1003
-#, fuzzy
 msgid "User Avatar"
-msgstr "Hľadanie používateľov"
+msgstr "Avatar používateľa"
 
 #: ../libpurple/protocols/jabber/buddy.c:845
 #: ../libpurple/protocols/jabber/buddy.c:1005
-#, fuzzy
 msgid "Chat State Notifications"
-msgstr "Upozornenie na stav priateľa"
+msgstr "Upozornenie na stav v chate"
 
 #: ../libpurple/protocols/jabber/buddy.c:847
 #: ../libpurple/protocols/jabber/buddy.c:1007
-#, fuzzy
 msgid "Software Version"
-msgstr "Nepodporovaná verzia"
+msgstr "Verzia softvéru"
 
 #: ../libpurple/protocols/jabber/buddy.c:849
 #: ../libpurple/protocols/jabber/buddy.c:1009
-#, fuzzy
 msgid "Stream Initiation"
-msgstr "Orientácia"
+msgstr "Iniciácia streamu"
 
 #: ../libpurple/protocols/jabber/buddy.c:851
 #: ../libpurple/protocols/jabber/buddy.c:1011
@@ -4965,129 +4996,113 @@
 
 #: ../libpurple/protocols/jabber/buddy.c:853
 #: ../libpurple/protocols/jabber/buddy.c:1013
-#, fuzzy
 msgid "User Mood"
-msgstr "Režimy používateľa"
+msgstr "Nálada používateľa"
 
 #: ../libpurple/protocols/jabber/buddy.c:855
 #: ../libpurple/protocols/jabber/buddy.c:1015
-#, fuzzy
 msgid "User Activity"
-msgstr "Limit používateľov"
+msgstr "Aktivita používateľa"
 
 #: ../libpurple/protocols/jabber/buddy.c:857
 #: ../libpurple/protocols/jabber/buddy.c:1017
-#, fuzzy
 msgid "Entity Capabilities"
 msgstr "Schopnosti"
 
 #: ../libpurple/protocols/jabber/buddy.c:859
 #: ../libpurple/protocols/jabber/buddy.c:1019
 msgid "Encrypted Session Negotiations"
-msgstr ""
+msgstr "Požadovanie šifrovaného spojenia"
 
 #: ../libpurple/protocols/jabber/buddy.c:861
 #: ../libpurple/protocols/jabber/buddy.c:1021
-#, fuzzy
 msgid "User Tune"
-msgstr "Prihlasovacie meno"
+msgstr "Používateľ Tune"
 
 #: ../libpurple/protocols/jabber/buddy.c:863
 #: ../libpurple/protocols/jabber/buddy.c:1023
-#, fuzzy
 msgid "Roster Item Exchange"
-msgstr "IM s výmenou kľúčov"
+msgstr "Výmena kontaktov"
 
 #: ../libpurple/protocols/jabber/buddy.c:865
 #: ../libpurple/protocols/jabber/buddy.c:1025
-#, fuzzy
 msgid "Reachability Address"
-msgstr "E-mailová adresa"
+msgstr "Dostupná adresa"
 
 #: ../libpurple/protocols/jabber/buddy.c:867
 #: ../libpurple/protocols/jabber/buddy.c:1027
-#, fuzzy
 msgid "User Profile"
-msgstr "Profil"
+msgstr "Profil používateľa"
 
 #: ../libpurple/protocols/jabber/buddy.c:869
 #: ../libpurple/protocols/jabber/buddy.c:1029
-#, fuzzy
 msgid "Jingle"
-msgstr "Pripojiť"
+msgstr "Jingle"
 
 #: ../libpurple/protocols/jabber/buddy.c:871
 #: ../libpurple/protocols/jabber/buddy.c:1031
 msgid "Jingle Audio"
-msgstr ""
+msgstr "Zvuk Jingle"
 
 #: ../libpurple/protocols/jabber/buddy.c:873
 #: ../libpurple/protocols/jabber/buddy.c:1033
-#, fuzzy
 msgid "User Nickname"
-msgstr "Meno používateľa"
+msgstr "Prezývka používateľa"
 
 #: ../libpurple/protocols/jabber/buddy.c:875
 #: ../libpurple/protocols/jabber/buddy.c:1035
 msgid "Jingle ICE UDP"
-msgstr ""
+msgstr "Jingle ICE UDP"
 
 #: ../libpurple/protocols/jabber/buddy.c:877
 #: ../libpurple/protocols/jabber/buddy.c:1037
 msgid "Jingle ICE TCP"
-msgstr ""
+msgstr "Jingle ICE UDP"
 
 #: ../libpurple/protocols/jabber/buddy.c:879
 #: ../libpurple/protocols/jabber/buddy.c:1039
 msgid "Jingle Raw UDP"
-msgstr ""
+msgstr "Jingle ICE UDP"
 
 #: ../libpurple/protocols/jabber/buddy.c:881
 #: ../libpurple/protocols/jabber/buddy.c:1041
-#, fuzzy
 msgid "Jingle Video"
-msgstr "Živé video"
+msgstr "Jingle Video"
 
 #: ../libpurple/protocols/jabber/buddy.c:883
 #: ../libpurple/protocols/jabber/buddy.c:1043
 msgid "Jingle DTMF"
-msgstr ""
+msgstr "Jingle DTMF"
 
 #: ../libpurple/protocols/jabber/buddy.c:885
 #: ../libpurple/protocols/jabber/buddy.c:1045
-#, fuzzy
 msgid "Message Receipts"
-msgstr "Prijatá správa"
+msgstr "Príjem správ"
 
 #: ../libpurple/protocols/jabber/buddy.c:887
 #: ../libpurple/protocols/jabber/buddy.c:1047
-#, fuzzy
 msgid "Public Key Publishing"
-msgstr "Babbleprint verejného kľúča"
+msgstr "Zverejnenie verejného kľúča"
 
 #: ../libpurple/protocols/jabber/buddy.c:889
 #: ../libpurple/protocols/jabber/buddy.c:1049
-#, fuzzy
 msgid "User Chatting"
-msgstr "Možnosti používateľa"
+msgstr "Používateľ chatuje"
 
 #: ../libpurple/protocols/jabber/buddy.c:891
 #: ../libpurple/protocols/jabber/buddy.c:1051
-#, fuzzy
 msgid "User Browsing"
-msgstr "Režimy používateľa"
+msgstr "Používateľ surfuje"
 
 #: ../libpurple/protocols/jabber/buddy.c:893
 #: ../libpurple/protocols/jabber/buddy.c:1053
-#, fuzzy
 msgid "User Gaming"
-msgstr "Meno používateľa"
+msgstr "Používateľ hrá"
 
 #: ../libpurple/protocols/jabber/buddy.c:895
 #: ../libpurple/protocols/jabber/buddy.c:1055
-#, fuzzy
 msgid "User Viewing"
-msgstr "Limit používateľov"
+msgstr "Používateľ prezerá"
 
 #: ../libpurple/protocols/jabber/buddy.c:897
 #: ../libpurple/protocols/jabber/buddy.c:1057
@@ -5100,48 +5115,47 @@
 
 #: ../libpurple/protocols/jabber/buddy.c:899
 #: ../libpurple/protocols/jabber/buddy.c:1059
-#, fuzzy
 msgid "Stanza Encryption"
-msgstr "Šifrovanie Trillian"
+msgstr "Šifrovanie slôh"
 
 #: ../libpurple/protocols/jabber/buddy.c:901
 #: ../libpurple/protocols/jabber/buddy.c:1061
 msgid "Entity Time"
-msgstr ""
+msgstr "Čas entity"
 
 #: ../libpurple/protocols/jabber/buddy.c:903
 #: ../libpurple/protocols/jabber/buddy.c:1063
 msgid "Delayed Delivery"
-msgstr ""
+msgstr "Odložené doručenie"
 
 #: ../libpurple/protocols/jabber/buddy.c:905
 #: ../libpurple/protocols/jabber/buddy.c:1065
 msgid "Collaborative Data Objects"
-msgstr ""
+msgstr "Spolupracujúce dátové objekty"
 
 #: ../libpurple/protocols/jabber/buddy.c:907
 #: ../libpurple/protocols/jabber/buddy.c:1067
 msgid "File Repository and Sharing"
-msgstr ""
+msgstr "Ukladanie a zdieľanie súborov"
 
 #: ../libpurple/protocols/jabber/buddy.c:909
 #: ../libpurple/protocols/jabber/buddy.c:1069
 msgid "STUN Service Discovery for Jingle"
-msgstr ""
+msgstr "Objavenie STUN služieb pre Jingle"
 
 #: ../libpurple/protocols/jabber/buddy.c:911
 #: ../libpurple/protocols/jabber/buddy.c:1071
 msgid "Simplified Encrypted Session Negotiation"
-msgstr ""
+msgstr "Požadovanie zjednodušeného šiforvaného spojenia"
 
 #: ../libpurple/protocols/jabber/buddy.c:913
 #: ../libpurple/protocols/jabber/buddy.c:1073
 msgid "Hop Check"
-msgstr ""
+msgstr "Kontrola skoku"
 
 #: ../libpurple/protocols/jabber/buddy.c:921
 #: ../libpurple/protocols/jabber/buddy.c:1081
-#: ../libpurple/protocols/oscar/oscar.c:2906
+#: ../libpurple/protocols/oscar/oscar.c:2920
 msgid "Capabilities"
 msgstr "Schopnosti"
 
@@ -5168,8 +5182,8 @@
 
 #: ../libpurple/protocols/jabber/buddy.c:1270
 #: ../libpurple/protocols/jabber/jabber.c:952
-#: ../libpurple/protocols/oscar/oscar.c:3788
-#: ../libpurple/protocols/oscar/oscar.c:3801
+#: ../libpurple/protocols/oscar/oscar.c:3802
+#: ../libpurple/protocols/oscar/oscar.c:3815
 #: ../libpurple/protocols/qq/buddy_info.c:56
 #: ../libpurple/protocols/silc/ops.c:1030
 #: ../libpurple/protocols/silc10/ops.c:1064
@@ -5178,7 +5192,7 @@
 
 #: ../libpurple/protocols/jabber/buddy.c:1276
 msgid "P.O. Box"
-msgstr "P.O. Box"
+msgstr "P.O.Box"
 
 #: ../libpurple/protocols/jabber/buddy.c:1386
 msgid "Photo"
@@ -5188,74 +5202,71 @@
 msgid "Logo"
 msgstr "Logo"
 
-#: ../libpurple/protocols/jabber/buddy.c:1942
+#: ../libpurple/protocols/jabber/buddy.c:1945
 msgid "Un-hide From"
 msgstr "Zviditeľniť pred"
 
-#: ../libpurple/protocols/jabber/buddy.c:1946
+#: ../libpurple/protocols/jabber/buddy.c:1949
 msgid "Temporarily Hide From"
 msgstr "Dočasne skryť pred"
 
 #. && NOT ME
-#: ../libpurple/protocols/jabber/buddy.c:1954
+#: ../libpurple/protocols/jabber/buddy.c:1957
 msgid "Cancel Presence Notification"
 msgstr "Zrušiť upozornenie prítomnosti"
 
-#: ../libpurple/protocols/jabber/buddy.c:1961
+#: ../libpurple/protocols/jabber/buddy.c:1964
 msgid "(Re-)Request authorization"
 msgstr "Znovu požiadať o autorizáciu"
 
 #. if(NOT ME)
 #. shouldn't this just happen automatically when the buddy is
 #. removed?
-#: ../libpurple/protocols/jabber/buddy.c:1970
+#: ../libpurple/protocols/jabber/buddy.c:1973
 msgid "Unsubscribe"
 msgstr "Odhlásiť sa"
 
-#: ../libpurple/protocols/jabber/buddy.c:1985
-#, fuzzy
+#: ../libpurple/protocols/jabber/buddy.c:1988
 msgid "Log In"
-msgstr "Prihlásený"
-
-#: ../libpurple/protocols/jabber/buddy.c:1989
-#, fuzzy
+msgstr "Prihlásiť"
+
+#: ../libpurple/protocols/jabber/buddy.c:1992
 msgid "Log Out"
-msgstr "Ukladať rozhovory"
-
-#: ../libpurple/protocols/jabber/buddy.c:2035
+msgstr "Odhlásiť"
+
+#: ../libpurple/protocols/jabber/buddy.c:2038
 #: ../libpurple/protocols/jabber/jabber.c:1553
 msgid "Chatty"
 msgstr "Chatty"
 
-#: ../libpurple/protocols/jabber/buddy.c:2039
+#: ../libpurple/protocols/jabber/buddy.c:2042
 msgid "Extended Away"
 msgstr "Dlhšie neprítomný"
 
-#: ../libpurple/protocols/jabber/buddy.c:2041
+#: ../libpurple/protocols/jabber/buddy.c:2044
 #: ../libpurple/protocols/jabber/jabber.c:1622
 #: ../libpurple/protocols/oscar/oscar.c:727
-#: ../libpurple/protocols/oscar/oscar.c:5808
+#: ../libpurple/protocols/oscar/oscar.c:5860
 #: ../libpurple/protocols/sametime/sametime.c:3297
-#, c-format
 msgid "Do Not Disturb"
 msgstr "Nerušiť"
 
-#: ../libpurple/protocols/jabber/buddy.c:2208
+#: ../libpurple/protocols/jabber/buddy.c:2211
 msgid "JID"
 msgstr "JID"
 
-#: ../libpurple/protocols/jabber/buddy.c:2212
-#: ../libpurple/protocols/jabber/buddy.c:2391
-#: ../libpurple/protocols/oscar/oscar.c:3711
+#: ../libpurple/protocols/jabber/buddy.c:2215
+#: ../libpurple/protocols/jabber/buddy.c:2394
+#: ../libpurple/protocols/oscar/oscar.c:3725
 msgid "Last Name"
 msgstr "Priezvisko"
 
-#: ../libpurple/protocols/jabber/buddy.c:2244
+#: ../libpurple/protocols/jabber/buddy.c:2247
 msgid "The following are the results of your search"
 msgstr "Nižšie sú výsledky vášho vyhľadávania"
 
 #. current comment from Jabber User Directory users.jabber.org
-#: ../libpurple/protocols/jabber/buddy.c:2319
+#: ../libpurple/protocols/jabber/buddy.c:2322
 msgid ""
 "Find a contact by entering the search criteria in the given fields. Note: "
 "Each field supports wild card searches (%)"
@@ -5263,40 +5274,40 @@
 "Nájdite kontakt zadávaním vyhľadávaích kritérií v daných poliach. Poznámka: "
 "Každé pole podporuje hľadanie pomocou nahradzajúcich znakov (%)"
 
-#: ../libpurple/protocols/jabber/buddy.c:2339
+#: ../libpurple/protocols/jabber/buddy.c:2342
 msgid "Directory Query Failed"
 msgstr "Požiadavka na priečinok zlyhala"
 
-#: ../libpurple/protocols/jabber/buddy.c:2340
+#: ../libpurple/protocols/jabber/buddy.c:2343
 msgid "Could not query the directory server."
 msgstr "Nedá sa poslať požiadavka na priečinkový server."
 
 #. Try to translate the message (see static message
 #. list in jabber_user_dir_comments[])
-#: ../libpurple/protocols/jabber/buddy.c:2374
+#: ../libpurple/protocols/jabber/buddy.c:2377
 #, c-format
 msgid "Server Instructions: %s"
 msgstr "Inštrukcie servera: %s"
 
-#: ../libpurple/protocols/jabber/buddy.c:2381
+#: ../libpurple/protocols/jabber/buddy.c:2384
 msgid "Fill in one or more fields to search for any matching XMPP users."
 msgstr ""
 "Vyplňte jedno alebo viac políčok na hľadanie vyhovujúcich XMPP používateľov."
 
-#: ../libpurple/protocols/jabber/buddy.c:2401
-#: ../libpurple/protocols/novell/novell.c:1488
-#: ../libpurple/protocols/oscar/oscar.c:3714
-#: ../libpurple/protocols/oscar/oscar.c:3723
+#: ../libpurple/protocols/jabber/buddy.c:2404
+#: ../libpurple/protocols/novell/novell.c:1490
+#: ../libpurple/protocols/oscar/oscar.c:3728
+#: ../libpurple/protocols/oscar/oscar.c:3737
 msgid "E-Mail Address"
 msgstr "E-mailová adresa"
 
-#: ../libpurple/protocols/jabber/buddy.c:2410
-#: ../libpurple/protocols/jabber/buddy.c:2411
+#: ../libpurple/protocols/jabber/buddy.c:2413
+#: ../libpurple/protocols/jabber/buddy.c:2414
 msgid "Search for XMPP users"
 msgstr "Vyhľadávanie používateľov XMPP"
 
 #. "Search"
-#: ../libpurple/protocols/jabber/buddy.c:2412
+#: ../libpurple/protocols/jabber/buddy.c:2415
 #: ../libpurple/protocols/qq/group.c:123
 #: ../libpurple/protocols/qq/group_im.c:147
 #: ../libpurple/protocols/qq/sys_msg.c:174
@@ -5308,24 +5319,24 @@
 msgid "Search"
 msgstr "Hľadať"
 
-#: ../libpurple/protocols/jabber/buddy.c:2427
+#: ../libpurple/protocols/jabber/buddy.c:2430
 msgid "Invalid Directory"
 msgstr "Neplatný priečinok"
 
-#: ../libpurple/protocols/jabber/buddy.c:2444
+#: ../libpurple/protocols/jabber/buddy.c:2447
 msgid "Enter a User Directory"
 msgstr "Zadajte používateľský priečinok"
 
-#: ../libpurple/protocols/jabber/buddy.c:2445
+#: ../libpurple/protocols/jabber/buddy.c:2448
 msgid "Select a user directory to search"
 msgstr "Vyberte používateľský priečinok pre hľadanie"
 
-#: ../libpurple/protocols/jabber/buddy.c:2448
+#: ../libpurple/protocols/jabber/buddy.c:2451
 msgid "Search Directory"
 msgstr "Prehľadávať priečinok"
 
 #: ../libpurple/protocols/jabber/chat.c:41
-#: ../libpurple/protocols/oscar/oscar.c:5294
+#: ../libpurple/protocols/oscar/oscar.c:5344
 #: ../libpurple/protocols/yahoo/yahoochat.c:1048
 msgid "_Room:"
 msgstr "_Miestnosť:"
@@ -5423,7 +5434,7 @@
 
 #: ../libpurple/protocols/jabber/jabber.c:145
 msgid "You require encryption, but it is not available on this server."
-msgstr ""
+msgstr "Požadovali ste šifrovanie, ale na tomto serveri nie je dostupné."
 
 #: ../libpurple/protocols/jabber/jabber.c:259
 #: ../libpurple/protocols/jabber/jabber.c:312
@@ -5437,9 +5448,9 @@
 msgstr "Chyba čítania"
 
 #: ../libpurple/protocols/jabber/jabber.c:482
-#: ../libpurple/protocols/oscar/flap_connection.c:394
-#: ../libpurple/protocols/yahoo/yahoo.c:2558
-#: ../libpurple/protocols/yahoo/yahoo.c:2590
+#: ../libpurple/protocols/oscar/flap_connection.c:396
+#: ../libpurple/protocols/yahoo/yahoo.c:2560
+#: ../libpurple/protocols/yahoo/yahoo.c:2592
 #, c-format
 msgid ""
 "Could not establish a connection with the server:\n"
@@ -5467,9 +5478,9 @@
 msgstr "Registrácia %s@%s bola úspešná"
 
 #: ../libpurple/protocols/jabber/jabber.c:662
-#, fuzzy, c-format
+#, c-format
 msgid "Registration to %s successful"
-msgstr "Registrácia %s@%s bola úspešná"
+msgstr "Registrácia na %s bola úspešná"
 
 #: ../libpurple/protocols/jabber/jabber.c:664
 #: ../libpurple/protocols/jabber/jabber.c:665
@@ -5482,21 +5493,19 @@
 msgstr "Registrácia zlyhala"
 
 #: ../libpurple/protocols/jabber/jabber.c:692
-#, fuzzy, c-format
+#, c-format
 msgid "Registration from %s successfully removed"
-msgstr "Registrácia %s@%s bola úspešná"
+msgstr "Registrácia z %s bola úspešne odstránená"
 
 #: ../libpurple/protocols/jabber/jabber.c:694
 #: ../libpurple/protocols/jabber/jabber.c:695
-#, fuzzy
 msgid "Unregistration Successful"
-msgstr "Registrácia úspešná"
+msgstr "Zrušenie registrácie úspešné"
 
 #: ../libpurple/protocols/jabber/jabber.c:703
 #: ../libpurple/protocols/jabber/jabber.c:704
-#, fuzzy
 msgid "Unregistration Failed"
-msgstr "Registrácia zlyhala"
+msgstr "Zrušenie registrácie zlyhalo"
 
 #: ../libpurple/protocols/jabber/jabber.c:864
 #: ../libpurple/protocols/jabber/jabber.c:865
@@ -5504,8 +5513,8 @@
 msgstr "Už zaregistrovaný"
 
 #: ../libpurple/protocols/jabber/jabber.c:962
-#: ../libpurple/protocols/oscar/oscar.c:3790
-#: ../libpurple/protocols/oscar/oscar.c:3803
+#: ../libpurple/protocols/oscar/oscar.c:3804
+#: ../libpurple/protocols/oscar/oscar.c:3817
 msgid "State"
 msgstr "Štát"
 
@@ -5528,22 +5537,19 @@
 msgstr "Dátum"
 
 #: ../libpurple/protocols/jabber/jabber.c:987
-#, fuzzy
 msgid "Unregister"
-msgstr "Registrovať"
+msgstr "Zrušiť registráciu"
 
 #: ../libpurple/protocols/jabber/jabber.c:994
-#, fuzzy
 msgid ""
 "Please fill out the information below to change your account registration."
 msgstr ""
-"Pre zaregistrovanie vášho nového konta, vyplňte prosím nižšie uvedené "
-"informácie."
+"Pre zmenu registrácie vašeho účtu, vyplňte prosím nižšie uvedené informácie."
 
 #: ../libpurple/protocols/jabber/jabber.c:997
 msgid "Please fill out the information below to register your new account."
 msgstr ""
-"Pre zaregistrovanie vášho nového konta, vyplňte prosím nižšie uvedené "
+"Pre zaregistrovanie vášho nového účtu, vyplňte prosím nižšie uvedené "
 "informácie."
 
 #: ../libpurple/protocols/jabber/jabber.c:1005
@@ -5557,43 +5563,39 @@
 msgstr "Registrovať"
 
 #: ../libpurple/protocols/jabber/jabber.c:1012
-#, fuzzy, c-format
+#, c-format
 msgid "Change Account Registration at %s"
-msgstr "Zmeniť podrobnosti o používateľovi %s"
+msgstr "Zmeniť registráciu účtu na %s"
 
 #: ../libpurple/protocols/jabber/jabber.c:1013
-#, fuzzy, c-format
+#, c-format
 msgid "Register New Account at %s"
-msgstr "Registrovať nový XMPP účet"
+msgstr "Registrovať nový účet na %s"
 
 #: ../libpurple/protocols/jabber/jabber.c:1016
-#, fuzzy
 msgid "Change Registration"
-msgstr "Zmeniť stav na:"
+msgstr "Zmeniť registráciu"
 
 #: ../libpurple/protocols/jabber/jabber.c:1120
 #: ../libpurple/protocols/jabber/jabber.c:1121
-#, fuzzy
 msgid "Error unregistering account"
-msgstr "Chyba pri zmene podrobností účtu"
+msgstr "Chyba pri rušení účtu"
 
 #: ../libpurple/protocols/jabber/jabber.c:1126
 #: ../libpurple/protocols/jabber/jabber.c:1127
-#, fuzzy
 msgid "Account successfully unregistered"
-msgstr "Úspešne ste vytvroili Qun"
+msgstr "Registrácia úspešne zrušená"
 
 #: ../libpurple/protocols/jabber/jabber.c:1284
 msgid "Initializing Stream"
 msgstr "Spúšťa sa dátový prúd"
 
 #: ../libpurple/protocols/jabber/jabber.c:1289
-#, fuzzy
 msgid "Initializing SSL/TLS"
-msgstr "Spúšťa sa dátový prúd"
+msgstr "Spúšťa sa SSL/TLS"
 
 #: ../libpurple/protocols/jabber/jabber.c:1293
-#: ../libpurple/protocols/msn/session.c:351
+#: ../libpurple/protocols/msn/session.c:390
 msgid "Authenticating"
 msgstr "Autentifikácia"
 
@@ -5606,7 +5608,7 @@
 #: ../libpurple/protocols/jabber/jabber.c:1909
 #: ../libpurple/protocols/jabber/jabber.c:1945
 #: ../libpurple/protocols/oscar/oscar.c:826
-#: ../libpurple/protocols/oscar/oscar.c:5602
+#: ../libpurple/protocols/oscar/oscar.c:5654
 msgid "Not Authorized"
 msgstr "Neautorizovaný"
 
@@ -5660,27 +5662,24 @@
 #: ../libpurple/protocols/jabber/jabber.c:1580
 #: ../libpurple/protocols/jabber/jabber.c:1603
 #: ../libpurple/protocols/jabber/jabber.c:1626
-#, fuzzy
 msgid "Mood Text"
-msgstr "Krvná skupina"
+msgstr "Popis nálady"
 
 #: ../libpurple/protocols/jabber/jabber.c:1535
 #: ../libpurple/protocols/jabber/jabber.c:1558
 #: ../libpurple/protocols/jabber/jabber.c:1581
 #: ../libpurple/protocols/jabber/jabber.c:1604
 #: ../libpurple/protocols/jabber/jabber.c:1627
-#, fuzzy
 msgid "Tune Artist"
-msgstr "Umelci"
+msgstr "Tune interpret"
 
 #: ../libpurple/protocols/jabber/jabber.c:1536
 #: ../libpurple/protocols/jabber/jabber.c:1559
 #: ../libpurple/protocols/jabber/jabber.c:1582
 #: ../libpurple/protocols/jabber/jabber.c:1605
 #: ../libpurple/protocols/jabber/jabber.c:1628
-#, fuzzy
 msgid "Tune Title"
-msgstr "Nadpis"
+msgstr "Tune titulok"
 
 #: ../libpurple/protocols/jabber/jabber.c:1537
 #: ../libpurple/protocols/jabber/jabber.c:1560
@@ -5688,7 +5687,7 @@
 #: ../libpurple/protocols/jabber/jabber.c:1606
 #: ../libpurple/protocols/jabber/jabber.c:1629
 msgid "Tune Album"
-msgstr ""
+msgstr "Tune album"
 
 #: ../libpurple/protocols/jabber/jabber.c:1538
 #: ../libpurple/protocols/jabber/jabber.c:1561
@@ -5696,16 +5695,15 @@
 #: ../libpurple/protocols/jabber/jabber.c:1607
 #: ../libpurple/protocols/jabber/jabber.c:1630
 msgid "Tune Genre"
-msgstr ""
+msgstr "Tune žáner"
 
 #: ../libpurple/protocols/jabber/jabber.c:1539
 #: ../libpurple/protocols/jabber/jabber.c:1562
 #: ../libpurple/protocols/jabber/jabber.c:1585
 #: ../libpurple/protocols/jabber/jabber.c:1608
 #: ../libpurple/protocols/jabber/jabber.c:1631
-#, fuzzy
 msgid "Tune Comment"
-msgstr "Komentár priateľa"
+msgstr "Tune komentár"
 
 #: ../libpurple/protocols/jabber/jabber.c:1540
 #: ../libpurple/protocols/jabber/jabber.c:1563
@@ -5713,7 +5711,7 @@
 #: ../libpurple/protocols/jabber/jabber.c:1609
 #: ../libpurple/protocols/jabber/jabber.c:1632
 msgid "Tune Track"
-msgstr ""
+msgstr "Tune stopa"
 
 #: ../libpurple/protocols/jabber/jabber.c:1541
 #: ../libpurple/protocols/jabber/jabber.c:1564
@@ -5721,7 +5719,7 @@
 #: ../libpurple/protocols/jabber/jabber.c:1610
 #: ../libpurple/protocols/jabber/jabber.c:1633
 msgid "Tune Time"
-msgstr ""
+msgstr "Tune čas"
 
 #: ../libpurple/protocols/jabber/jabber.c:1542
 #: ../libpurple/protocols/jabber/jabber.c:1565
@@ -5729,7 +5727,7 @@
 #: ../libpurple/protocols/jabber/jabber.c:1611
 #: ../libpurple/protocols/jabber/jabber.c:1634
 msgid "Tune Year"
-msgstr ""
+msgstr "Tune rok"
 
 #: ../libpurple/protocols/jabber/jabber.c:1543
 #: ../libpurple/protocols/jabber/jabber.c:1566
@@ -5737,16 +5735,15 @@
 #: ../libpurple/protocols/jabber/jabber.c:1612
 #: ../libpurple/protocols/jabber/jabber.c:1635
 msgid "Tune URL"
-msgstr ""
+msgstr "Tune URL"
 
 #: ../libpurple/protocols/jabber/jabber.c:1545
 #: ../libpurple/protocols/jabber/jabber.c:1568
 #: ../libpurple/protocols/jabber/jabber.c:1591
 #: ../libpurple/protocols/jabber/jabber.c:1614
 #: ../libpurple/protocols/jabber/jabber.c:1637
-#, fuzzy
 msgid "Allow Buzz"
-msgstr "Povoliť"
+msgstr "Povoliť Bzzz"
 
 #: ../libpurple/protocols/jabber/jabber.c:1665
 msgid "Password Changed"
@@ -5775,7 +5772,7 @@
 msgstr "Zadajte, prosím, vaše nové heslo"
 
 #: ../libpurple/protocols/jabber/jabber.c:1749
-#: ../libpurple/protocols/oscar/oscar.c:6388
+#: ../libpurple/protocols/oscar/oscar.c:6440
 #: ../libpurple/protocols/silc/silc.c:1093
 #: ../libpurple/protocols/silc10/silc.c:1004
 msgid "Set User Info..."
@@ -5783,7 +5780,7 @@
 
 #. if (js->protocol_options & CHANGE_PASSWORD) {
 #: ../libpurple/protocols/jabber/jabber.c:1754
-#: ../libpurple/protocols/oscar/oscar.c:6399
+#: ../libpurple/protocols/oscar/oscar.c:6451
 #: ../libpurple/protocols/silc/silc.c:1089
 #: ../libpurple/protocols/silc10/silc.c:1000
 msgid "Change Password..."
@@ -5979,7 +5976,7 @@
 
 #: ../libpurple/protocols/jabber/jabber.c:1963
 msgid "Unsupported Stanza Type"
-msgstr "Nepodporovaný Stanza typ"
+msgstr "Nepodporovaný typ slohy"
 
 #: ../libpurple/protocols/jabber/jabber.c:1965
 msgid "Unsupported Version"
@@ -6024,51 +6021,69 @@
 msgstr "Nepodarilo sa vykopnúť používateľa %s"
 
 #: ../libpurple/protocols/jabber/jabber.c:2185
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to ping user %s"
-msgstr "Nedá sa udeliť zákaz pre používateľa %s"
+msgstr "Nepodarilo sa pingnúť používateľa %s"
 
 #: ../libpurple/protocols/jabber/jabber.c:2207
 #: ../libpurple/protocols/jabber/jabber.c:2217
 #, c-format
 msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr ""
+msgstr "Nepodarilo sa poslať bzzz, pretože o používateľovi %s nič nevieme."
 
 #: ../libpurple/protocols/jabber/jabber.c:2213
 #, c-format
 msgid "Unable to buzz, because user %s might be offline."
-msgstr ""
+msgstr "Nepodarilo sa poslať bzzz, pretože používateľ %s môže byť odpojený."
 
 #: ../libpurple/protocols/jabber/jabber.c:2239
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to buzz, because the user %s does not support it."
-msgstr "Nedá sa odoslať súbor používateľovi %s, nepodporuje prenosy súborov"
-
-#: ../libpurple/protocols/jabber/jabber.c:2253
+msgstr "Nepodarilo sa poslať bzzz, pretože používateľ %s to nepodporuje."
+
+#: ../libpurple/protocols/jabber/jabber.c:2250
+#: ../libpurple/protocols/yahoo/yahoo.c:4121
+msgid "Buzz"
+msgstr "Bzzz"
+
+#: ../libpurple/protocols/jabber/jabber.c:2251
+#: ../libpurple/protocols/jabber/message.c:307
+#: ../libpurple/protocols/yahoo/yahoo.c:4122
+#, c-format
+msgid "%s has buzzed you!"
+msgstr "Používateľ %s vám poslal bzzz!"
+
+#: ../libpurple/protocols/jabber/jabber.c:2252
+#: ../libpurple/protocols/yahoo/yahoo.c:4123
+#, c-format
+msgid "Buzzing %s..."
+msgstr "Posielam bzzz používateľovi %s..."
+
+#: ../libpurple/protocols/jabber/jabber.c:2291
 msgid "config:  Configure a chat room."
 msgstr "config:  Nastavenie miestnosti chatu."
 
-#: ../libpurple/protocols/jabber/jabber.c:2257
+#: ../libpurple/protocols/jabber/jabber.c:2295
 msgid "configure:  Configure a chat room."
 msgstr "configure:  Nastavenie miestnosti chatu."
 
-#: ../libpurple/protocols/jabber/jabber.c:2266
+#: ../libpurple/protocols/jabber/jabber.c:2304
 msgid "part [room]:  Leave the room."
 msgstr "part [miestnosť]:  Opustí miestnosť."
 
-#: ../libpurple/protocols/jabber/jabber.c:2271
+#: ../libpurple/protocols/jabber/jabber.c:2309
 msgid "register:  Register with a chat room."
 msgstr "register:  Zaregistrovať sa v chatovacej miestnosti."
 
-#: ../libpurple/protocols/jabber/jabber.c:2277
+#: ../libpurple/protocols/jabber/jabber.c:2315
 msgid "topic [new topic]:  View or change the topic."
 msgstr "topic [nová téma]:  Zobrazí alebo zmení tému."
 
-#: ../libpurple/protocols/jabber/jabber.c:2283
+#: ../libpurple/protocols/jabber/jabber.c:2321
 msgid "ban &lt;user&gt; [room]:  Ban a user from the room."
 msgstr "ban &lt;používateľ&gt; [miestnosť]:  Vykázať používateľa z miestnosti."
 
-#: ../libpurple/protocols/jabber/jabber.c:2289
+#: ../libpurple/protocols/jabber/jabber.c:2327
 msgid ""
 "affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
 "affiliation with the room."
@@ -6076,7 +6091,7 @@
 "affiliate &lt;používateľ&gt; &lt;owner|admin|member|outcast|none&gt;: "
 "Nastaví používateľové pričlenenie v miestnosti."
 
-#: ../libpurple/protocols/jabber/jabber.c:2295
+#: ../libpurple/protocols/jabber/jabber.c:2333
 msgid ""
 "role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's "
 "role in the room."
@@ -6084,32 +6099,32 @@
 "role &lt;používateľ&gt; &lt;moderator|participant|visitor|none&gt;: Nastaví "
 "postavenie používateľa v miestnosti."
 
-#: ../libpurple/protocols/jabber/jabber.c:2301
+#: ../libpurple/protocols/jabber/jabber.c:2339
 msgid "invite &lt;user&gt; [message]:  Invite a user to the room."
 msgstr "invite &lt;user&gt; [správa]: Pozve používateľa do miestnosti."
 
-#: ../libpurple/protocols/jabber/jabber.c:2307
+#: ../libpurple/protocols/jabber/jabber.c:2345
 msgid "join: &lt;room&gt; [server]:  Join a chat on this server."
 msgstr "join: &lt;room&gt; [server]: Pripojí sa na chat na tomto serveri."
 
-#: ../libpurple/protocols/jabber/jabber.c:2313
+#: ../libpurple/protocols/jabber/jabber.c:2351
 msgid "kick &lt;user&gt; [room]:  Kick a user from the room."
 msgstr ""
 "kick &lt;používateľ&gt; [miestnosť]:  Vykopne používateľa z miestnosti."
 
-#: ../libpurple/protocols/jabber/jabber.c:2318
+#: ../libpurple/protocols/jabber/jabber.c:2356
 msgid ""
 "msg &lt;user&gt; &lt;message&gt;:  Send a private message to another user."
 msgstr ""
-"msg &lt;používateľ&gt; &lt;správa&gt;: Odosle súkromnú správu inému "
+"msg &lt;používateľ&gt; &lt;správa&gt;: Odošle súkromnú správu inému "
 "používateľovi."
 
-#: ../libpurple/protocols/jabber/jabber.c:2324
+#: ../libpurple/protocols/jabber/jabber.c:2362
 msgid "ping &lt;jid&gt;:\tPing a user/component/server."
-msgstr ""
-
-#: ../libpurple/protocols/jabber/jabber.c:2329
-#: ../libpurple/protocols/yahoo/yahoo.c:4145
+msgstr "ping &lt;jid&gt;:\tPingne používateľa, súčasť alebo server."
+
+#: ../libpurple/protocols/jabber/jabber.c:2367
+#: ../libpurple/protocols/yahoo/yahoo.c:4147
 msgid "buzz: Buzz a user to get their attention"
 msgstr "buzz: Pošlite používateľovi „bzzz“ a tým si získajte jeho pozornosť"
 
@@ -6135,7 +6150,7 @@
 
 #: ../libpurple/protocols/jabber/libxmpp.c:210
 msgid "Require SSL/TLS"
-msgstr ""
+msgstr "Vyžadovať SSL/TLS"
 
 #: ../libpurple/protocols/jabber/libxmpp.c:214
 msgid "Force old (port 5223) SSL"
@@ -6146,8 +6161,8 @@
 msgstr "Povoliť plaintextovú autentifikáciu cez nezašifrované spojenia"
 
 #: ../libpurple/protocols/jabber/libxmpp.c:224
-#: ../libpurple/protocols/myspace/myspace.c:3277
-#: ../libpurple/protocols/simple/simple.c:1902
+#: ../libpurple/protocols/myspace/myspace.c:3283
+#: ../libpurple/protocols/simple/simple.c:1904
 msgid "Connect port"
 msgstr "Port pripojenia"
 
@@ -6155,7 +6170,7 @@
 #. * able to set the first port to try (like LastConnectedPort in Windows client).
 #. Account options
 #: ../libpurple/protocols/jabber/libxmpp.c:228
-#: ../libpurple/protocols/myspace/myspace.c:3274
+#: ../libpurple/protocols/myspace/myspace.c:3280
 #: ../libpurple/protocols/silc/silc.c:1914
 #: ../libpurple/protocols/silc10/silc.c:1857 ../pidgin/gtkaccount.c:837
 msgid "Connect server"
@@ -6190,12 +6205,6 @@
 msgid "XMPP Message Error"
 msgstr "Chyba správy XMPP"
 
-#: ../libpurple/protocols/jabber/message.c:307
-#: ../libpurple/protocols/yahoo/yahoo.c:4120
-#, fuzzy, c-format
-msgid "%s has buzzed you!"
-msgstr "Používateľ %s sa prihlásil."
-
 #: ../libpurple/protocols/jabber/message.c:407
 #, c-format
 msgid " (Code %s)"
@@ -6205,16 +6214,16 @@
 msgid "XML Parse error"
 msgstr "Chyba pri spracovaní XML"
 
-#: ../libpurple/protocols/jabber/presence.c:427
+#: ../libpurple/protocols/jabber/presence.c:422
 msgid "Unknown Error in presence"
 msgstr "Prítomná neznáma chyba"
 
-#: ../libpurple/protocols/jabber/presence.c:508
-#: ../libpurple/protocols/jabber/presence.c:509
+#: ../libpurple/protocols/jabber/presence.c:503
+#: ../libpurple/protocols/jabber/presence.c:504
 msgid "Create New Room"
 msgstr "Vytvoriť novú miestnosť"
 
-#: ../libpurple/protocols/jabber/presence.c:510
+#: ../libpurple/protocols/jabber/presence.c:505
 msgid ""
 "You are creating a new room.  Would you like to configure it, or accept the "
 "default settings?"
@@ -6222,20 +6231,20 @@
 "Vytvárate novú miestnosť. Chceli by ste ju nastaviť, alebo prijmete "
 "štandardné nastavenia?"
 
-#: ../libpurple/protocols/jabber/presence.c:516
+#: ../libpurple/protocols/jabber/presence.c:511
 msgid "_Configure Room"
 msgstr "Konfigurovať miestnosť"
 
-#: ../libpurple/protocols/jabber/presence.c:517
+#: ../libpurple/protocols/jabber/presence.c:512
 msgid "_Accept Defaults"
 msgstr "_Prijať štandardné"
 
-#: ../libpurple/protocols/jabber/presence.c:559
+#: ../libpurple/protocols/jabber/presence.c:554
 #, c-format
 msgid "Error in chat %s"
 msgstr "Chyba v chate %s"
 
-#: ../libpurple/protocols/jabber/presence.c:563
+#: ../libpurple/protocols/jabber/presence.c:558
 #, c-format
 msgid "Error joining chat %s"
 msgstr "Chyba pripojenia na chat %s"
@@ -6279,62 +6288,64 @@
 
 #: ../libpurple/protocols/jabber/usermood.c:179
 #: ../libpurple/protocols/jabber/usermood.c:180
-#, fuzzy
 msgid "Edit User Mood"
-msgstr "Režimy používateľa"
+msgstr "Zmeniť náladu používateľa"
 
 #: ../libpurple/protocols/jabber/usermood.c:181
 msgid "Please select your mood from the list."
-msgstr ""
+msgstr "Prosím, vyberte vašu náladu zo zoznamu."
 
 #: ../libpurple/protocols/jabber/usermood.c:183
 #: ../libpurple/protocols/jabber/usernick.c:78
-#, fuzzy
 msgid "Set"
-msgstr "_Nastaviť"
+msgstr "Nastaviť"
 
 #: ../libpurple/protocols/jabber/usermood.c:191
-#, fuzzy
 msgid "Set Mood..."
-msgstr "Odoslať správu..."
+msgstr "Nastaviť náladu..."
 
 #: ../libpurple/protocols/jabber/usernick.c:76
-#, fuzzy
 msgid "Set User Nickname"
-msgstr "Nastaviť limit používateľov"
+msgstr "Nastaviť prezývku používateľa"
 
 #: ../libpurple/protocols/jabber/usernick.c:76
-#, fuzzy
 msgid "Please specify a new nickname for you."
-msgstr "Zadajte, prosím, nový názov pre %s"
+msgstr "Prosím, zadajte svoju novú prezývku."
 
 #: ../libpurple/protocols/jabber/usernick.c:77
 msgid ""
 "This information is visible to all contacts on your contact list, so choose "
 "something appropriate."
 msgstr ""
-
-#: ../libpurple/protocols/jabber/usernick.c:99
-#, fuzzy
+"Táto prezývka sa zobrazí všetkým osobám vo vašom zozname kontaktov, preto "
+"vyberte niečo vhodné."
+
+#: ../libpurple/protocols/jabber/usernick.c:100
 msgid "Set Nickname..."
-msgstr "Prezývka"
+msgstr "Nastaviť prezývku..."
 
 #: ../libpurple/protocols/jabber/xdata.c:378
-#, fuzzy
 msgid "Actions"
-msgstr "Akcia"
+msgstr "Akcie"
 
 #: ../libpurple/protocols/jabber/xdata.c:380
-#, fuzzy
 msgid "Select an action"
-msgstr "Vyberte súbor"
-
-#: ../libpurple/protocols/msn/dialog.c:110
+msgstr "Vyberte autora"
+
+#: ../libpurple/protocols/msn/contact.c:188
+msgid "Unable to connect to contact server"
+msgstr "Nepodarilo sa pripojiť na server kontaktov."
+
+#: ../libpurple/protocols/msn/contact.c:948
+msgid "Unable to retrieve MSN Address Book"
+msgstr "Nebolo možné prevzať zoznam adries MSN"
+
+#: ../libpurple/protocols/msn/dialog.c:118
 #, c-format
 msgid "Buddy list synchronization issue in %s (%s)"
 msgstr "Problém synchronizácie zoznamu kamarátov v %s (%s)"
 
-#: ../libpurple/protocols/msn/dialog.c:116
+#: ../libpurple/protocols/msn/dialog.c:124
 #, c-format
 msgid ""
 "%s on the local list is inside the group \"%s\" but not on the server list. "
@@ -6343,7 +6354,7 @@
 "%s v miestnom zozname je v skupine „%s“, ale nie je v zozname servera. "
 "Chcete tohto kamaráta pridať?"
 
-#: ../libpurple/protocols/msn/dialog.c:124
+#: ../libpurple/protocols/msn/dialog.c:132
 #, c-format
 msgid ""
 "%s is on the local list but not on the server list. Do you want this buddy "
@@ -6353,241 +6364,194 @@
 "kamaráta pridať?"
 
 #: ../libpurple/protocols/msn/error.c:36
-#, c-format
 msgid "Unable to parse message"
 msgstr "Správa sa nedá spracovať"
 
 #: ../libpurple/protocols/msn/error.c:41
-#, c-format
 msgid "Syntax Error (probably a client bug)"
 msgstr "Chyba syntaxe (pravdepodobne chyba v klientovi)"
 
 #: ../libpurple/protocols/msn/error.c:46
-#, c-format
 msgid "Invalid e-mail address"
 msgstr "Chybná e-mailová adresa"
 
 #: ../libpurple/protocols/msn/error.c:49
-#, c-format
 msgid "User does not exist"
 msgstr "Používateľ neexistuje"
 
 #: ../libpurple/protocols/msn/error.c:53
-#, c-format
 msgid "Fully qualified domain name missing"
 msgstr "Chýba plne kvalifikované doménové meno"
 
 #: ../libpurple/protocols/msn/error.c:56
-#, c-format
 msgid "Already logged in"
 msgstr "Už je prihlásený"
 
 #: ../libpurple/protocols/msn/error.c:59
-#, c-format
 msgid "Invalid screen name"
 msgstr "Používateľské meno je chybné"
 
 #: ../libpurple/protocols/msn/error.c:62
-#, c-format
 msgid "Invalid friendly name"
 msgstr "Priateľské meno je chybné"
 
 #: ../libpurple/protocols/msn/error.c:65
-#, c-format
 msgid "List full"
 msgstr "Zoznam je plný"
 
 #: ../libpurple/protocols/msn/error.c:68
-#, c-format
 msgid "Already there"
 msgstr "Už sa tam nachádza"
 
 #: ../libpurple/protocols/msn/error.c:72
-#, c-format
 msgid "Not on list"
 msgstr "Nie je v zozname"
 
 #: ../libpurple/protocols/msn/error.c:75
 #: ../libpurple/protocols/zephyr/zephyr.c:756
-#, c-format
 msgid "User is offline"
 msgstr "Používateľ je odpojený"
 
 #: ../libpurple/protocols/msn/error.c:78
-#, c-format
 msgid "Already in the mode"
 msgstr "Už v režime"
 
 #: ../libpurple/protocols/msn/error.c:82
-#, c-format
 msgid "Already in opposite list"
 msgstr "Už v opačnom zozname"
 
 #: ../libpurple/protocols/msn/error.c:86
-#, c-format
 msgid "Too many groups"
 msgstr "Príliš veľa skupín"
 
 #: ../libpurple/protocols/msn/error.c:89
-#, c-format
 msgid "Invalid group"
 msgstr "Chybná skupina"
 
 #: ../libpurple/protocols/msn/error.c:92
-#, c-format
 msgid "User not in group"
 msgstr "Používateľ nie je v skupine"
 
 #: ../libpurple/protocols/msn/error.c:95
-#, c-format
 msgid "Group name too long"
 msgstr "Názov skupiny príliš dlhý"
 
 #: ../libpurple/protocols/msn/error.c:98
-#, c-format
 msgid "Cannot remove group zero"
 msgstr "Nie je možné odstrániť nultú skupinu"
 
 #: ../libpurple/protocols/msn/error.c:103
-#, c-format
 msgid "Tried to add a user to a group that doesn't exist"
 msgstr "Pokúšate sa pridať používateľa do skupiny, ktorá neexistuje"
 
 #: ../libpurple/protocols/msn/error.c:107
-#, c-format
 msgid "Switchboard failed"
 msgstr "Prepojenie zlyhalo"
 
 #: ../libpurple/protocols/msn/error.c:111
-#, c-format
 msgid "Notify transfer failed"
 msgstr "Upozornenie prenosu zlyhalo"
 
 #: ../libpurple/protocols/msn/error.c:116
-#, c-format
 msgid "Required fields missing"
 msgstr "Chýbajú požadované polia"
 
 #: ../libpurple/protocols/msn/error.c:120
-#, c-format
 msgid "Too many hits to a FND"
 msgstr "Priveľa úderov pre FND"
 
 #: ../libpurple/protocols/msn/error.c:124
 #: ../libpurple/protocols/oscar/oscar.c:120
-#, c-format
 msgid "Not logged in"
 msgstr "Neprihlásený"
 
 #: ../libpurple/protocols/msn/error.c:128
-#, c-format
 msgid "Service temporarily unavailable"
 msgstr "Služba je dočasne nedostupná"
 
 #: ../libpurple/protocols/msn/error.c:131
-#, c-format
 msgid "Database server error"
 msgstr "Chyba databázového servera"
 
 #: ../libpurple/protocols/msn/error.c:135
-#, c-format
 msgid "Command disabled"
 msgstr "Príkaz vypnutý"
 
 #: ../libpurple/protocols/msn/error.c:139
-#, c-format
 msgid "File operation error"
 msgstr "Chyba súborového operátora"
 
 #: ../libpurple/protocols/msn/error.c:143
-#, c-format
 msgid "Memory allocation error"
 msgstr "Chyba vyhradenie pamäte"
 
 #: ../libpurple/protocols/msn/error.c:147
-#, c-format
 msgid "Wrong CHL value sent to server"
 msgstr "Nesprávna CHL hodnota zaslaná servera"
 
 #: ../libpurple/protocols/msn/error.c:152
-#, c-format
 msgid "Server busy"
 msgstr "Server zaneprázdnený"
 
 #: ../libpurple/protocols/msn/error.c:155
 #: ../libpurple/protocols/msn/error.c:170
 #: ../libpurple/protocols/msn/error.c:230
-#, c-format
 msgid "Server unavailable"
 msgstr "Server je nedostupný"
 
 #: ../libpurple/protocols/msn/error.c:158
-#, c-format
 msgid "Peer notification server down"
 msgstr "Server upozornenia na partnera je vypnutý"
 
 #: ../libpurple/protocols/msn/error.c:162
-#, c-format
 msgid "Database connect error"
 msgstr "Chyba pripojenia k databáze"
 
 #: ../libpurple/protocols/msn/error.c:167
-#, c-format
 msgid "Server is going down (abandon ship)"
 msgstr "Server sa vypína (opustite ľoď)"
 
 #: ../libpurple/protocols/msn/error.c:174
-#, c-format
 msgid "Error creating connection"
 msgstr "Chyba pri vytváraní spojenia"
 
 #: ../libpurple/protocols/msn/error.c:179
-#, c-format
 msgid "CVR parameters are either unknown or not allowed"
 msgstr "CVR parametre sú buď neznáme alebo nedovolené"
 
 #: ../libpurple/protocols/msn/error.c:183
-#, c-format
 msgid "Unable to write"
 msgstr "Nepodarilo sa zapisovať"
 
 #: ../libpurple/protocols/msn/error.c:186
-#, c-format
 msgid "Session overload"
 msgstr "Relácia preťažená"
 
 #: ../libpurple/protocols/msn/error.c:190
-#, c-format
 msgid "User is too active"
 msgstr "Používateľ je príliš aktívny"
 
 #: ../libpurple/protocols/msn/error.c:193
-#, c-format
 msgid "Too many sessions"
 msgstr "Príliš veľa relácií"
 
 #: ../libpurple/protocols/msn/error.c:196
-#, c-format
 msgid "Passport not verified"
 msgstr "Heslo nebolo overené"
 
 #: ../libpurple/protocols/msn/error.c:199
-#, c-format
 msgid "Bad friend file"
 msgstr "Nesprávny súbor priateľa"
 
 #: ../libpurple/protocols/msn/error.c:203
-#, c-format
 msgid "Not expected"
 msgstr "Neočakávané"
 
 #: ../libpurple/protocols/msn/error.c:209
-#, c-format
 msgid "Friendly name changes too rapidly"
 msgstr "Priateľské meno sa mení príliš rýchlo"
 
 #: ../libpurple/protocols/msn/error.c:218
-#, c-format
 msgid "Server too busy"
 msgstr "Server je príliš zaneprázdnený"
 
@@ -6596,32 +6560,26 @@
 #: ../libpurple/protocols/silc/silc.c:233
 #: ../libpurple/protocols/silc10/ops.c:1709
 #: ../libpurple/protocols/toc/toc.c:728 ../libpurple/proxy.c:1380
-#, c-format
 msgid "Authentication failed"
 msgstr "Autentifikácia zlyhala"
 
 #: ../libpurple/protocols/msn/error.c:225
-#, c-format
 msgid "Not allowed when offline"
 msgstr "Nepovolené v odpojenom stave"
 
 #: ../libpurple/protocols/msn/error.c:233
-#, c-format
 msgid "Not accepting new users"
 msgstr "Neprijímame nových používateľov"
 
 #: ../libpurple/protocols/msn/error.c:237
-#, c-format
 msgid "Kids Passport without parental consent"
 msgstr "Detský pas bez súhlasu rodičov"
 
 #: ../libpurple/protocols/msn/error.c:241
-#, c-format
 msgid "Passport account not yet verified"
 msgstr "Účet pasu nebol ešte overený"
 
 #: ../libpurple/protocols/msn/error.c:244
-#, c-format
 msgid "Bad ticket"
 msgstr "Nesprávny lístok"
 
@@ -6636,49 +6594,48 @@
 msgstr "Chyba MSN: %s\n"
 
 #: ../libpurple/protocols/msn/msn.c:130
-#, fuzzy
 msgid "Nudge"
-msgstr "štuchanec"
+msgstr "Štuchanec"
 
 #: ../libpurple/protocols/msn/msn.c:131
-#, fuzzy, c-format
+#, c-format
 msgid "%s has nudged you!"
-msgstr "Používateľ %s sa prihlásil."
+msgstr "Používateľ %s vás štuchol!"
 
 #: ../libpurple/protocols/msn/msn.c:132
-#, fuzzy, c-format
+#, c-format
 msgid "Nudging %s..."
-msgstr "Štuchanec"
+msgstr "Štucháte používateľa %s..."
 
 #: ../libpurple/protocols/msn/msn.c:174
 msgid "Your new MSN friendly name is too long."
 msgstr "Vaše nové MSN priateľské meno je príliš dlhé."
 
-#: ../libpurple/protocols/msn/msn.c:282
+#: ../libpurple/protocols/msn/msn.c:285
 msgid "Set your friendly name."
 msgstr "Vyplňte vaše priateľské meno."
 
-#: ../libpurple/protocols/msn/msn.c:283
+#: ../libpurple/protocols/msn/msn.c:286
 msgid "This is the name that other MSN buddies will see you as."
 msgstr "Toto je názov, pod ktorým vás budú vidieť ostatní priatelia z MSN."
 
-#: ../libpurple/protocols/msn/msn.c:301
+#: ../libpurple/protocols/msn/msn.c:304
 msgid "Set your home phone number."
 msgstr "Vyplňte vaše telefónne čislo domov"
 
-#: ../libpurple/protocols/msn/msn.c:318
+#: ../libpurple/protocols/msn/msn.c:321
 msgid "Set your work phone number."
 msgstr "Vyplňte vaše telefónne čislo do práce"
 
-#: ../libpurple/protocols/msn/msn.c:335
+#: ../libpurple/protocols/msn/msn.c:338
 msgid "Set your mobile phone number."
 msgstr "Vyplňte vaše telefónne čislo na mobil"
 
-#: ../libpurple/protocols/msn/msn.c:350
+#: ../libpurple/protocols/msn/msn.c:353
 msgid "Allow MSN Mobile pages?"
 msgstr "Povoliť mobilné stránky MSN?"
 
-#: ../libpurple/protocols/msn/msn.c:351
+#: ../libpurple/protocols/msn/msn.c:354
 msgid ""
 "Do you want to allow or disallow people on your buddy list to send you MSN "
 "Mobile pages to your cell phone or other mobile device?"
@@ -6686,323 +6643,326 @@
 "Chcete povoliť alebo zakázať osobám vo vašom zozname priateľov posielať vám "
 "na váš mobilný telefón stránky MSN?"
 
-#: ../libpurple/protocols/msn/msn.c:357
+#: ../libpurple/protocols/msn/msn.c:360
 msgid "Allow"
 msgstr "Povoliť"
 
-#: ../libpurple/protocols/msn/msn.c:358
+#: ../libpurple/protocols/msn/msn.c:361
 msgid "Disallow"
 msgstr "Nepovoliť"
 
-#: ../libpurple/protocols/msn/msn.c:374
+#: ../libpurple/protocols/msn/msn.c:377
 msgid "This Hotmail account may not be active."
 msgstr "Tento účet služby Hotmail nemusí byť aktívny."
 
-#: ../libpurple/protocols/msn/msn.c:400
+#: ../libpurple/protocols/msn/msn.c:403
 msgid "Send a mobile message."
 msgstr "Odoslať správu na mobil."
 
-#: ../libpurple/protocols/msn/msn.c:402
+#: ../libpurple/protocols/msn/msn.c:405
 msgid "Page"
 msgstr "Strana"
 
-#: ../libpurple/protocols/msn/msn.c:549
-msgid "Has you"
-msgstr "Vás má"
-
-#: ../libpurple/protocols/msn/msn.c:579 ../libpurple/protocols/msn/state.c:33
-#: ../libpurple/protocols/yahoo/yahoo.c:3077
-#: ../libpurple/protocols/yahoo/yahoo.c:3761
+#: ../libpurple/protocols/msn/msn.c:610 ../libpurple/protocols/msn/msn.c:635
+#: ../libpurple/protocols/msn/msn.c:642 ../libpurple/protocols/msn/msn.c:649
+#: ../libpurple/protocols/msn/msn.c:656 ../libpurple/protocols/msn/msn.c:662
+#: ../libpurple/protocols/msn/msn.c:668
+msgid "Current media"
+msgstr "Aktuálne médium"
+
+#: ../libpurple/protocols/msn/msn.c:647 ../libpurple/protocols/msn/state.c:33
+#: ../libpurple/protocols/yahoo/yahoo.c:3079
+#: ../libpurple/protocols/yahoo/yahoo.c:3763
 msgid "Be Right Back"
 msgstr "Hneď som späť"
 
-#: ../libpurple/protocols/msn/msn.c:583 ../libpurple/protocols/msn/state.c:31
-#: ../libpurple/protocols/novell/novell.c:2822
-#: ../libpurple/protocols/novell/novell.c:2952
+#: ../libpurple/protocols/msn/msn.c:654 ../libpurple/protocols/msn/state.c:31
+#: ../libpurple/protocols/novell/novell.c:2827
+#: ../libpurple/protocols/novell/novell.c:2957
 #: ../libpurple/protocols/silc/buddy.c:1480
 #: ../libpurple/protocols/silc/silc.c:56
 #: ../libpurple/protocols/silc10/buddy.c:1480
 #: ../libpurple/protocols/silc10/silc.c:47
-#: ../libpurple/protocols/yahoo/yahoo.c:3079
-#: ../libpurple/protocols/yahoo/yahoo.c:3764
+#: ../libpurple/protocols/yahoo/yahoo.c:3081
+#: ../libpurple/protocols/yahoo/yahoo.c:3766
 msgid "Busy"
 msgstr "Zaneprázdnený"
 
-#: ../libpurple/protocols/msn/msn.c:587
-#: ../libpurple/protocols/yahoo/yahoo.c:3087
-#: ../libpurple/protocols/yahoo/yahoo.c:3776
+#: ../libpurple/protocols/msn/msn.c:660
+#: ../libpurple/protocols/yahoo/yahoo.c:3089
+#: ../libpurple/protocols/yahoo/yahoo.c:3778
 msgid "On the Phone"
 msgstr "Telefonujem"
 
-#: ../libpurple/protocols/msn/msn.c:591
-#: ../libpurple/protocols/yahoo/yahoo.c:3091
-#: ../libpurple/protocols/yahoo/yahoo.c:3782
+#: ../libpurple/protocols/msn/msn.c:666
+#: ../libpurple/protocols/yahoo/yahoo.c:3093
+#: ../libpurple/protocols/yahoo/yahoo.c:3784
 msgid "Out to Lunch"
 msgstr "Na obede"
 
-#: ../libpurple/protocols/msn/msn.c:619
+#: ../libpurple/protocols/msn/msn.c:697
 msgid "Set Friendly Name..."
 msgstr "Nastaviť priateľské meno..."
 
-#: ../libpurple/protocols/msn/msn.c:624
+#: ../libpurple/protocols/msn/msn.c:702
 msgid "Set Home Phone Number..."
 msgstr "Nastaviť číslo telefónu domov..."
 
-#: ../libpurple/protocols/msn/msn.c:628
+#: ../libpurple/protocols/msn/msn.c:706
 msgid "Set Work Phone Number..."
 msgstr "Nastaviť číslo telefónu do práce..."
 
-#: ../libpurple/protocols/msn/msn.c:632
+#: ../libpurple/protocols/msn/msn.c:710
 msgid "Set Mobile Phone Number..."
 msgstr "Nastaviť číslo mobilného telefónu..."
 
-#: ../libpurple/protocols/msn/msn.c:638
+#: ../libpurple/protocols/msn/msn.c:716
 msgid "Enable/Disable Mobile Devices..."
 msgstr "Povoliť/Zakázať mobilné zariadenia..."
 
-#: ../libpurple/protocols/msn/msn.c:643
+#: ../libpurple/protocols/msn/msn.c:721
 msgid "Allow/Disallow Mobile Pages..."
 msgstr "Povoliť/Zakázať mobilné stránky..."
 
-#: ../libpurple/protocols/msn/msn.c:654
+#: ../libpurple/protocols/msn/msn.c:732
 msgid "Open Hotmail Inbox"
 msgstr "Otvoriť poštovú schránku Hotmail"
 
-#: ../libpurple/protocols/msn/msn.c:678
+#: ../libpurple/protocols/msn/msn.c:756
 msgid "Send to Mobile"
 msgstr "Odoslať na mobil"
 
-#: ../libpurple/protocols/msn/msn.c:688
-#: ../libpurple/protocols/novell/novell.c:3408
+#: ../libpurple/protocols/msn/msn.c:766
+#: ../libpurple/protocols/novell/novell.c:3413
 msgid "Initiate _Chat"
 msgstr "Začať _chat"
 
-#: ../libpurple/protocols/msn/msn.c:726
+#: ../libpurple/protocols/msn/msn.c:804
 msgid "SSL support is needed for MSN. Please install a supported SSL library."
 msgstr ""
 "Pre MSN je potrebná podpora SSL. Nainštalujte, prosím, podporovanú SSL "
 "knižnicu."
 
-#: ../libpurple/protocols/msn/msn.c:754
+#: ../libpurple/protocols/msn/msn.c:832
 msgid "Failed to connect to server."
 msgstr "Nepodarilo sa spojiť so serverom."
 
-#: ../libpurple/protocols/msn/msn.c:1510 ../libpurple/protocols/msn/msn.c:1858
+#: ../libpurple/protocols/msn/msn.c:1620 ../libpurple/protocols/msn/msn.c:1968
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:808
 msgid "Error retrieving profile"
 msgstr "Chyba pri získavaní profilu"
 
-#: ../libpurple/protocols/msn/msn.c:1581 ../pidgin/plugins/convcolors.c:309
-#: ../pidgin/plugins/pidginrc.c:366
+#: ../libpurple/protocols/msn/msn.c:1691 ../pidgin/plugins/convcolors.c:309
+#: ../pidgin/plugins/pidginrc.c:360
 msgid "General"
 msgstr "Všeobecné"
 
-#: ../libpurple/protocols/msn/msn.c:1588
-#: ../libpurple/protocols/myspace/user.c:110
-#: ../libpurple/protocols/oscar/oscar.c:3755
+#: ../libpurple/protocols/msn/msn.c:1698
+#: ../libpurple/protocols/myspace/user.c:113
+#: ../libpurple/protocols/oscar/oscar.c:3769
 #: ../libpurple/protocols/qq/buddy_info.c:45
 #: ../libpurple/protocols/qq/qq.c:221
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1081
 msgid "Age"
 msgstr "Vek"
 
-#: ../libpurple/protocols/msn/msn.c:1590
+#: ../libpurple/protocols/msn/msn.c:1700
 #: ../libpurple/protocols/qq/buddy_info.c:51
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1096
 msgid "Occupation"
 msgstr "Povolanie"
 
-#: ../libpurple/protocols/msn/msn.c:1591
-#: ../libpurple/protocols/myspace/user.c:119
-#: ../libpurple/protocols/novell/novell.c:1478
+#: ../libpurple/protocols/msn/msn.c:1701
+#: ../libpurple/protocols/myspace/user.c:121
+#: ../libpurple/protocols/novell/novell.c:1480
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1076
 #: ../libpurple/protocols/zephyr/zephyr.c:798
 #: ../libpurple/protocols/zephyr/zephyr.c:1215
 msgid "Location"
 msgstr "Lokalita"
 
-#: ../libpurple/protocols/msn/msn.c:1596 ../libpurple/protocols/msn/msn.c:1788
-#: ../libpurple/protocols/msn/msn.c:1794 ../libpurple/protocols/msn/msn.c:1801
+#: ../libpurple/protocols/msn/msn.c:1706 ../libpurple/protocols/msn/msn.c:1898
+#: ../libpurple/protocols/msn/msn.c:1904 ../libpurple/protocols/msn/msn.c:1911
 msgid "Hobbies and Interests"
 msgstr "Záľuby a záujmy"
 
-#: ../libpurple/protocols/msn/msn.c:1602 ../libpurple/protocols/msn/msn.c:1722
-#: ../libpurple/protocols/msn/msn.c:1728 ../libpurple/protocols/msn/msn.c:1735
-#: ../libpurple/protocols/msn/msn.c:1743 ../libpurple/protocols/msn/msn.c:1750
+#: ../libpurple/protocols/msn/msn.c:1712 ../libpurple/protocols/msn/msn.c:1832
+#: ../libpurple/protocols/msn/msn.c:1838 ../libpurple/protocols/msn/msn.c:1845
+#: ../libpurple/protocols/msn/msn.c:1853 ../libpurple/protocols/msn/msn.c:1860
 msgid "A Little About Me"
 msgstr "Niečo o mne"
 
-#: ../libpurple/protocols/msn/msn.c:1619
+#: ../libpurple/protocols/msn/msn.c:1729
 msgid "Social"
 msgstr "Sociálne"
 
-#: ../libpurple/protocols/msn/msn.c:1621
+#: ../libpurple/protocols/msn/msn.c:1731
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1086
 msgid "Marital Status"
 msgstr "Manželský stav"
 
-#: ../libpurple/protocols/msn/msn.c:1622
+#: ../libpurple/protocols/msn/msn.c:1732
 msgid "Interests"
 msgstr "Záujmy"
 
-#: ../libpurple/protocols/msn/msn.c:1623
+#: ../libpurple/protocols/msn/msn.c:1733
 msgid "Pets"
 msgstr "Domáce zvieratá"
 
-#: ../libpurple/protocols/msn/msn.c:1624
+#: ../libpurple/protocols/msn/msn.c:1734
 msgid "Hometown"
 msgstr "Mesto v ktorom bývate"
 
-#: ../libpurple/protocols/msn/msn.c:1625
+#: ../libpurple/protocols/msn/msn.c:1735
 msgid "Places Lived"
 msgstr "Miesta, kde ste bývali"
 
-#: ../libpurple/protocols/msn/msn.c:1626
+#: ../libpurple/protocols/msn/msn.c:1736
 msgid "Fashion"
 msgstr "Móda"
 
-#: ../libpurple/protocols/msn/msn.c:1627
+#: ../libpurple/protocols/msn/msn.c:1737
 msgid "Humor"
 msgstr "Humor"
 
-#: ../libpurple/protocols/msn/msn.c:1628
+#: ../libpurple/protocols/msn/msn.c:1738
 msgid "Music"
 msgstr "Hudba"
 
-#: ../libpurple/protocols/msn/msn.c:1629 ../libpurple/protocols/msn/msn.c:1810
-#: ../libpurple/protocols/msn/msn.c:1816
+#: ../libpurple/protocols/msn/msn.c:1739 ../libpurple/protocols/msn/msn.c:1920
+#: ../libpurple/protocols/msn/msn.c:1926
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1138
 msgid "Favorite Quote"
 msgstr "Obľúbený citát"
 
-#: ../libpurple/protocols/msn/msn.c:1646
+#: ../libpurple/protocols/msn/msn.c:1756
 msgid "Contact Info"
 msgstr "Kontaktné informácie"
 
-#: ../libpurple/protocols/msn/msn.c:1647
+#: ../libpurple/protocols/msn/msn.c:1757
 msgid "Personal"
 msgstr "Osobné"
 
-#: ../libpurple/protocols/msn/msn.c:1650
+#: ../libpurple/protocols/msn/msn.c:1760
 msgid "Significant Other"
 msgstr "Ďalšie významné"
 
-#: ../libpurple/protocols/msn/msn.c:1651
+#: ../libpurple/protocols/msn/msn.c:1761
 msgid "Home Phone"
 msgstr "Telefón domov"
 
-#: ../libpurple/protocols/msn/msn.c:1652
+#: ../libpurple/protocols/msn/msn.c:1762
 msgid "Home Phone 2"
 msgstr "Telefón domov 2"
 
-#: ../libpurple/protocols/msn/msn.c:1653
-#: ../libpurple/protocols/oscar/oscar.c:3793
+#: ../libpurple/protocols/msn/msn.c:1763
+#: ../libpurple/protocols/oscar/oscar.c:3807
 msgid "Home Address"
 msgstr "Adresa domov"
 
-#: ../libpurple/protocols/msn/msn.c:1654
+#: ../libpurple/protocols/msn/msn.c:1764
 msgid "Personal Mobile"
 msgstr "Osobný mobil"
 
-#: ../libpurple/protocols/msn/msn.c:1655
+#: ../libpurple/protocols/msn/msn.c:1765
 msgid "Home Fax"
 msgstr "Fax domov"
 
-#: ../libpurple/protocols/msn/msn.c:1656
+#: ../libpurple/protocols/msn/msn.c:1766
 msgid "Personal E-Mail"
 msgstr "Osobný e-mail"
 
-#: ../libpurple/protocols/msn/msn.c:1657
+#: ../libpurple/protocols/msn/msn.c:1767
 msgid "Personal IM"
 msgstr "Osobné IM"
 
-#: ../libpurple/protocols/msn/msn.c:1659
+#: ../libpurple/protocols/msn/msn.c:1769
 msgid "Anniversary"
 msgstr "Výročie"
 
 #. Business
-#: ../libpurple/protocols/msn/msn.c:1675
+#: ../libpurple/protocols/msn/msn.c:1785
 msgid "Work"
 msgstr "Práca"
 
-#: ../libpurple/protocols/msn/msn.c:1677
+#: ../libpurple/protocols/msn/msn.c:1787
 #: ../libpurple/protocols/silc/ops.c:1010
 #: ../libpurple/protocols/silc10/ops.c:1044
 msgid "Job Title"
 msgstr "Názov zamestnania"
 
-#: ../libpurple/protocols/msn/msn.c:1678
-#: ../libpurple/protocols/oscar/oscar.c:3814
+#: ../libpurple/protocols/msn/msn.c:1788
+#: ../libpurple/protocols/oscar/oscar.c:3828
 msgid "Company"
 msgstr "Spoločnosť"
 
-#: ../libpurple/protocols/msn/msn.c:1679
-#: ../libpurple/protocols/novell/novell.c:1480
+#: ../libpurple/protocols/msn/msn.c:1789
+#: ../libpurple/protocols/novell/novell.c:1482
 msgid "Department"
 msgstr "Oddelenie"
 
-#: ../libpurple/protocols/msn/msn.c:1680
+#: ../libpurple/protocols/msn/msn.c:1790
 msgid "Profession"
 msgstr "Profesia"
 
-#: ../libpurple/protocols/msn/msn.c:1681
+#: ../libpurple/protocols/msn/msn.c:1791
 msgid "Work Phone"
 msgstr "Telefón do práce"
 
-#: ../libpurple/protocols/msn/msn.c:1682
+#: ../libpurple/protocols/msn/msn.c:1792
 msgid "Work Phone 2"
 msgstr "Telefón do práce 2"
 
-#: ../libpurple/protocols/msn/msn.c:1683
-#: ../libpurple/protocols/oscar/oscar.c:3806
+#: ../libpurple/protocols/msn/msn.c:1793
+#: ../libpurple/protocols/oscar/oscar.c:3820
 msgid "Work Address"
 msgstr "Adresa pracoviska"
 
-#: ../libpurple/protocols/msn/msn.c:1684
+#: ../libpurple/protocols/msn/msn.c:1794
 msgid "Work Mobile"
 msgstr "Služobný mobil"
 
-#: ../libpurple/protocols/msn/msn.c:1685
+#: ../libpurple/protocols/msn/msn.c:1795
 msgid "Work Pager"
 msgstr "Služobný pager"
 
-#: ../libpurple/protocols/msn/msn.c:1686
+#: ../libpurple/protocols/msn/msn.c:1796
 msgid "Work Fax"
 msgstr "Služobný fax"
 
-#: ../libpurple/protocols/msn/msn.c:1687
+#: ../libpurple/protocols/msn/msn.c:1797
 msgid "Work E-Mail"
 msgstr "Pracovný e-mail"
 
-#: ../libpurple/protocols/msn/msn.c:1688
+#: ../libpurple/protocols/msn/msn.c:1798
 msgid "Work IM"
 msgstr "Pracovné IM"
 
-#: ../libpurple/protocols/msn/msn.c:1689
+#: ../libpurple/protocols/msn/msn.c:1799
 msgid "Start Date"
 msgstr "Dátum začiatku"
 
-#: ../libpurple/protocols/msn/msn.c:1759 ../libpurple/protocols/msn/msn.c:1765
-#: ../libpurple/protocols/msn/msn.c:1772 ../libpurple/protocols/msn/msn.c:1779
+#: ../libpurple/protocols/msn/msn.c:1869 ../libpurple/protocols/msn/msn.c:1875
+#: ../libpurple/protocols/msn/msn.c:1882 ../libpurple/protocols/msn/msn.c:1889
 msgid "Favorite Things"
 msgstr "Obľúbené veci"
 
-#: ../libpurple/protocols/msn/msn.c:1824
+#: ../libpurple/protocols/msn/msn.c:1934
 msgid "Last Updated"
 msgstr "Naposledy aktualizované"
 
-#: ../libpurple/protocols/msn/msn.c:1835
+#: ../libpurple/protocols/msn/msn.c:1945
 #: ../libpurple/protocols/qq/buddy_info.c:60
 #: ../libpurple/protocols/silc/ops.c:1026
 #: ../libpurple/protocols/silc10/ops.c:1060
 msgid "Homepage"
 msgstr "Domovská stránka"
 
-#: ../libpurple/protocols/msn/msn.c:1859
+#: ../libpurple/protocols/msn/msn.c:1969
 msgid "The user has not created a public profile."
 msgstr "Používateľ nemá vytvorený verejný profil."
 
-#: ../libpurple/protocols/msn/msn.c:1860
+#: ../libpurple/protocols/msn/msn.c:1970
 msgid ""
 "MSN reported not being able to find the user's profile. This either means "
 "that the user does not exist, or that the user exists but has not created a "
@@ -7011,7 +6971,7 @@
 "MSN ohlásilo, že nie je schopné nájsť používateľov profil. To znamená, že "
 "používateľ buď neexistuje alebo existuje, ale nemá vytvorený verejný profil."
 
-#: ../libpurple/protocols/msn/msn.c:1864
+#: ../libpurple/protocols/msn/msn.c:1974
 msgid ""
 "Could not find any information in the user's profile. The user most likely "
 "does not exist."
@@ -7019,7 +6979,7 @@
 "Nebolo možné nájsť žiadnu informáciu v používateľovom profile. Používateľ "
 "pravdepodobne neexistuje."
 
-#: ../libpurple/protocols/msn/msn.c:1872
+#: ../libpurple/protocols/msn/msn.c:1982
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1240
 msgid "Profile URL"
 msgstr "Adresa profilu"
@@ -7034,101 +6994,103 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/msn/msn.c:2158 ../libpurple/protocols/msn/msn.c:2160
-msgid "MSN Protocol Plugin"
-msgstr "Modul protokolu HTTP"
-
-#: ../libpurple/protocols/msn/msn.c:2194
+#: ../libpurple/protocols/msn/msn.c:2269 ../libpurple/protocols/msn/msn.c:2271
+msgid "Windows Live Messenger Protocol Plugin"
+msgstr "Modul protokolu Windows Live Messenger"
+
+#: ../libpurple/protocols/msn/msn.c:2306
 msgid "Use HTTP Method"
 msgstr "Používať HTTP"
 
-#: ../libpurple/protocols/msn/msn.c:2199
-#, fuzzy
+#: ../libpurple/protocols/msn/msn.c:2311
 msgid "HTTP Method Server"
-msgstr "Server testu IPC"
-
-#: ../libpurple/protocols/msn/msn.c:2204
+msgstr "Server HTTP"
+
+#: ../libpurple/protocols/msn/msn.c:2316
 msgid "Show custom smileys"
 msgstr "Zobraziť vlastných smajlíkov"
 
-#: ../libpurple/protocols/msn/msn.c:2212
+#: ../libpurple/protocols/msn/msn.c:2324
 msgid "nudge: nudge a user to get their attention"
 msgstr "nudge: postrčte používateľa pre získanie ich pozornosti"
 
-#: ../libpurple/protocols/msn/nexus.c:146
-#: ../libpurple/protocols/msn/servconn.c:135
-#: ../libpurple/protocols/qq/qq_proxy.c:242
-#: ../libpurple/protocols/qq/qq_proxy.c:321
-#: ../libpurple/protocols/qq/qq_proxy.c:366
-#: ../libpurple/protocols/qq/qq_proxy.c:399
-#: ../libpurple/protocols/qq/udp_proxy_s5.c:63
-#: ../libpurple/protocols/qq/udp_proxy_s5.c:163
-#: ../libpurple/protocols/qq/udp_proxy_s5.c:187
-#: ../libpurple/protocols/qq/udp_proxy_s5.c:200
-#: ../libpurple/protocols/qq/udp_proxy_s5.c:229
-#: ../libpurple/protocols/qq/udp_proxy_s5.c:243
-#: ../libpurple/protocols/qq/udp_proxy_s5.c:268
-#: ../libpurple/protocols/qq/udp_proxy_s5.c:302
-#: ../libpurple/protocols/qq/udp_proxy_s5.c:332
-#: ../libpurple/protocols/yahoo/yahoochat.c:1416
-#: ../libpurple/protocols/yahoo/yahoochat.c:1442
-msgid "Unable to connect"
-msgstr "Nepodarilo sa pripojiť"
-
-#: ../libpurple/protocols/msn/notification.c:178
+#: ../libpurple/protocols/msn/nexus.c:137
+msgid "Windows Live ID authentication:Unable to connect"
+msgstr "Antentifikácia Windows Live ID: nebolo možné pripojiť sa"
+
+#: ../libpurple/protocols/msn/nexus.c:275
+msgid "Windows Live ID authentication Failed"
+msgstr "Zlyhala antentifikácia Windows Live ID"
+
+#: ../libpurple/protocols/msn/notification.c:185
 #, c-format
 msgid "%s is not a valid group."
 msgstr "%s nie je správna skupina."
 
-#: ../libpurple/protocols/msn/notification.c:184
-#: ../libpurple/protocols/msn/notification.c:532
-#: ../libpurple/protocols/msn/session.c:330
+#: ../libpurple/protocols/msn/notification.c:191
+#: ../libpurple/protocols/msn/notification.c:934
+#: ../libpurple/protocols/msn/session.c:369
 msgid "Unknown error."
 msgstr "Neznáma chyba."
 
-#: ../libpurple/protocols/msn/notification.c:187
+#: ../libpurple/protocols/msn/notification.c:194
 #, c-format
 msgid "%s on %s (%s)"
 msgstr "%s na %s (%s)"
 
-#: ../libpurple/protocols/msn/notification.c:498
+#: ../libpurple/protocols/msn/notification.c:512
+#, c-format
+msgid "%s just sent you a Nudge!"
+msgstr "%s vám práve poslal Nudge!"
+
+#: ../libpurple/protocols/msn/notification.c:839
+#, c-format
+msgid "Unknown error (%d)"
+msgstr "Neznáma chyba (%d)"
+
+#: ../libpurple/protocols/msn/notification.c:840
+#: ../libpurple/protocols/sametime/sametime.c:4425
+msgid "Unable to add user"
+msgstr "Nebolo možné priadať používateľa"
+
+#: ../libpurple/protocols/msn/notification.c:900
 #, c-format
 msgid "Unable to add user on %s (%s)"
 msgstr "Nebolo možné pridať používateľa %s (%s)"
 
-#: ../libpurple/protocols/msn/notification.c:502
+#: ../libpurple/protocols/msn/notification.c:904
 #, c-format
 msgid "Unable to block user on %s (%s)"
 msgstr "Nebolo možné blokovať používateľa %s (%s)"
 
-#: ../libpurple/protocols/msn/notification.c:506
+#: ../libpurple/protocols/msn/notification.c:908
 #, c-format
 msgid "Unable to permit user on %s (%s)"
 msgstr "Nebolo možné povoliť používateľa %s (%s)"
 
-#: ../libpurple/protocols/msn/notification.c:514
+#: ../libpurple/protocols/msn/notification.c:916
 #, c-format
 msgid "%s could not be added because your buddy list is full."
 msgstr "%s sa nepridal, pretože váš zoznam priateľov je plný."
 
-#: ../libpurple/protocols/msn/notification.c:523
+#: ../libpurple/protocols/msn/notification.c:925
 #, c-format
 msgid "%s is not a valid passport account."
 msgstr "%s nie je platný účet pasu."
 
-#: ../libpurple/protocols/msn/notification.c:528
+#: ../libpurple/protocols/msn/notification.c:930
 msgid "Service Temporarily Unavailable."
 msgstr "Služba je dočasne nedostupná."
 
-#: ../libpurple/protocols/msn/notification.c:851
+#: ../libpurple/protocols/msn/notification.c:1268
 msgid "Unable to rename group"
 msgstr "Nepodarilo sa premenovať skupinu"
 
-#: ../libpurple/protocols/msn/notification.c:906
+#: ../libpurple/protocols/msn/notification.c:1323
 msgid "Unable to delete group"
 msgstr "Nepodarilo sa odstrániť skupinu"
 
-#: ../libpurple/protocols/msn/notification.c:1325
+#: ../libpurple/protocols/msn/notification.c:1939
 #, c-format
 msgid ""
 "The MSN server will shut down for maintenance in %d minute. You will "
@@ -7160,6 +7122,29 @@
 "\n"
 "Keď bude údržba dokončená, budete sa môcť znovu prihlásiť."
 
+#: ../libpurple/protocols/msn/oim.c:141
+msgid "Unable to connect to OIM server"
+msgstr "Nepodarilo sa pripojiť na OIM server."
+
+#: ../libpurple/protocols/msn/servconn.c:135
+#: ../libpurple/protocols/qq/qq_proxy.c:242
+#: ../libpurple/protocols/qq/qq_proxy.c:321
+#: ../libpurple/protocols/qq/qq_proxy.c:366
+#: ../libpurple/protocols/qq/qq_proxy.c:399
+#: ../libpurple/protocols/qq/udp_proxy_s5.c:63
+#: ../libpurple/protocols/qq/udp_proxy_s5.c:163
+#: ../libpurple/protocols/qq/udp_proxy_s5.c:187
+#: ../libpurple/protocols/qq/udp_proxy_s5.c:200
+#: ../libpurple/protocols/qq/udp_proxy_s5.c:229
+#: ../libpurple/protocols/qq/udp_proxy_s5.c:243
+#: ../libpurple/protocols/qq/udp_proxy_s5.c:268
+#: ../libpurple/protocols/qq/udp_proxy_s5.c:302
+#: ../libpurple/protocols/qq/udp_proxy_s5.c:332
+#: ../libpurple/protocols/yahoo/yahoochat.c:1416
+#: ../libpurple/protocols/yahoo/yahoochat.c:1442
+msgid "Unable to connect"
+msgstr "Nepodarilo sa pripojiť"
+
 #: ../libpurple/protocols/msn/servconn.c:137
 msgid "Writing error"
 msgstr "Chyba pri zápise"
@@ -7177,58 +7162,58 @@
 "Chyba pripojenia %s servera:\n"
 "%s"
 
-#: ../libpurple/protocols/msn/session.c:299
+#: ../libpurple/protocols/msn/session.c:336
 msgid "Our protocol is not supported by the server."
 msgstr "Server nepodporuje náš protokol."
 
-#: ../libpurple/protocols/msn/session.c:303
+#: ../libpurple/protocols/msn/session.c:340
 msgid "Error parsing HTTP."
 msgstr "Chyba pri spracovávaní HTTP."
 
-#: ../libpurple/protocols/msn/session.c:307
+#: ../libpurple/protocols/msn/session.c:344
 #: ../libpurple/protocols/oscar/flap_connection.c:384
-#: ../libpurple/protocols/yahoo/yahoo.c:205
+#: ../libpurple/protocols/yahoo/yahoo.c:207
 msgid "You have signed on from another location."
 msgstr "Prihlásili ste sa z iného miesta."
 
-#: ../libpurple/protocols/msn/session.c:310
+#: ../libpurple/protocols/msn/session.c:349
 msgid "The MSN servers are temporarily unavailable. Please wait and try again."
 msgstr ""
 "MSN servery sú dočasne nedostupné. Počkajte, prosím, a skúste to znovu."
 
-#: ../libpurple/protocols/msn/session.c:315
+#: ../libpurple/protocols/msn/session.c:354
 msgid "The MSN servers are going down temporarily."
 msgstr "MSN servery sa dočasne vypínajú."
 
-#: ../libpurple/protocols/msn/session.c:320
+#: ../libpurple/protocols/msn/session.c:359
 #, c-format
 msgid "Unable to authenticate: %s"
 msgstr "Nepodarilo sa autentifikovať: %s"
 
-#: ../libpurple/protocols/msn/session.c:325
+#: ../libpurple/protocols/msn/session.c:364
 msgid ""
 "Your MSN buddy list is temporarily unavailable. Please wait and try again."
 msgstr ""
 "Váš zoznam priateľov MSN je dočasne nedostupný. Skúste to, prosím, neskôr."
 
-#: ../libpurple/protocols/msn/session.c:346
-#: ../libpurple/protocols/msn/session.c:348
+#: ../libpurple/protocols/msn/session.c:385
+#: ../libpurple/protocols/msn/session.c:387
 msgid "Handshaking"
 msgstr "Prevzatie"
 
-#: ../libpurple/protocols/msn/session.c:349
+#: ../libpurple/protocols/msn/session.c:388
 msgid "Starting authentication"
 msgstr "Začína sa autentifikácia"
 
-#: ../libpurple/protocols/msn/session.c:350
+#: ../libpurple/protocols/msn/session.c:389
 msgid "Getting cookie"
 msgstr "Prijímajú sa cookies"
 
-#: ../libpurple/protocols/msn/session.c:352
+#: ../libpurple/protocols/msn/session.c:391
 msgid "Sending cookie"
 msgstr "Odosielajú sa cookies"
 
-#: ../libpurple/protocols/msn/session.c:353
+#: ../libpurple/protocols/msn/session.c:392
 msgid "Retrieving buddy list"
 msgstr "Prijíma sa zoznam priateľov"
 
@@ -7281,22 +7266,25 @@
 msgid "Message may have not been sent because an unknown error occurred:"
 msgstr "Správu sa nepodarilo odoslať, pretože sa vyskytla neznáma chyba:"
 
-#: ../libpurple/protocols/msn/userlist.c:252
+#: ../libpurple/protocols/msn/userlist.c:249
 #, c-format
 msgid "%s has added you to his or her buddy list."
 msgstr "Používateľ %s si vás pridal do svojho zoznamu priateľov."
 
-#: ../libpurple/protocols/msn/userlist.c:321
+#: ../libpurple/protocols/msn/userlist.c:318
 #, c-format
 msgid "%s has removed you from his or her buddy list."
 msgstr "Používateľ %s vás odstránil zo svojho zoznamu priateľov."
 
-#: ../libpurple/protocols/msn/userlist.c:643
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#: ../libpurple/protocols/msn/userlist.c:699
 #, c-format
 msgid "Unable to add \"%s\"."
 msgstr "Nepodarilo sa pridať „%s“."
 
-#: ../libpurple/protocols/msn/userlist.c:645
+#: ../libpurple/protocols/msn/userlist.c:702
 msgid "The screen name specified is invalid."
 msgstr "Zadané používateľské meno je chybné."
 
@@ -7327,198 +7315,202 @@
 
 #. Notify an error message also, because this is important!
 #: ../libpurple/protocols/myspace/myspace.c:292
-#: ../libpurple/protocols/myspace/myspace.c:1801
+#: ../libpurple/protocols/myspace/myspace.c:1806
 msgid "MySpaceIM Error"
 msgstr "Chyba MySpaceIM"
 
-#: ../libpurple/protocols/myspace/myspace.c:349
+#: ../libpurple/protocols/myspace/myspace.c:350
 msgid "Reading challenge"
 msgstr "Číta sa výzva"
 
-#: ../libpurple/protocols/myspace/myspace.c:355
+#: ../libpurple/protocols/myspace/myspace.c:356
 msgid "Unexpected challenge length from server"
 msgstr "Neočakávaná dĺžka výzvy zo servera"
 
-#: ../libpurple/protocols/myspace/myspace.c:359
+#: ../libpurple/protocols/myspace/myspace.c:360
 msgid "Logging in"
 msgstr "Prihlasuje sa"
 
-#: ../libpurple/protocols/myspace/myspace.c:1286
+#: ../libpurple/protocols/myspace/myspace.c:1289
 #, c-format
 msgid "Connection to server lost (no data received within %d seconds)"
 msgstr ""
 "Pripojenie ku serveru prerušené (neboli prijaté žiadné údaje počas %d sekúnd)"
 
 #. Can't write _()'d strings in array initializers. Workaround.
-#: ../libpurple/protocols/myspace/myspace.c:1328
+#: ../libpurple/protocols/myspace/myspace.c:1331
 msgid "New mail messages"
 msgstr "Nové poštové správy"
 
-#: ../libpurple/protocols/myspace/myspace.c:1329
+#: ../libpurple/protocols/myspace/myspace.c:1332
 msgid "New blog comments"
 msgstr "Nové komentáre na blogu"
 
-#: ../libpurple/protocols/myspace/myspace.c:1330
+#: ../libpurple/protocols/myspace/myspace.c:1333
 msgid "New profile comments"
 msgstr "Nové komentáre v profile"
 
-#: ../libpurple/protocols/myspace/myspace.c:1331
+#: ../libpurple/protocols/myspace/myspace.c:1334
 msgid "New friend requests!"
 msgstr "Nové pozvánky priateľov!"
 
-#: ../libpurple/protocols/myspace/myspace.c:1332
+#: ../libpurple/protocols/myspace/myspace.c:1335
 msgid "New picture comments"
 msgstr "Nové komentáre ku obrázkom"
 
-#: ../libpurple/protocols/myspace/myspace.c:1360
+#: ../libpurple/protocols/myspace/myspace.c:1363
 msgid "MySpace"
 msgstr "MySpace"
 
 #. The session is now set up, ready to be connected. This emits the
 #. * signedOn signal, so clients can now do anything with msimprpl, and
 #. * we're ready for it (session key, userid, username all setup).
-#: ../libpurple/protocols/myspace/myspace.c:1543
+#: ../libpurple/protocols/myspace/myspace.c:1546
 #: ../libpurple/protocols/sametime/sametime.c:1544
 msgid "Connected"
 msgstr "Pripojený"
 
-#: ../libpurple/protocols/myspace/myspace.c:1554
-#: ../libpurple/protocols/myspace/myspace.c:1556
-#, fuzzy
+#: ../libpurple/protocols/myspace/myspace.c:1557
+#: ../libpurple/protocols/myspace/myspace.c:1559
 msgid "No username set"
-msgstr "Bez názvu"
-
-#: ../libpurple/protocols/myspace/myspace.c:1555
+msgstr "Nenastavené používateľské meno"
+
+#: ../libpurple/protocols/myspace/myspace.c:1558
 msgid ""
 "Please go to http://editprofile.myspace.com/index.cfm?fuseaction=profile."
 "username and choose a username and try to login again."
 msgstr ""
-
-#: ../libpurple/protocols/myspace/myspace.c:1782
+"Prosím, choďte na http://editprofile.myspace.com/index.cfm?"
+"fuseaction=profile.username a vyberte si používateľské meno a skúste sa "
+"prihlásiť znovu."
+
+#: ../libpurple/protocols/myspace/myspace.c:1785
 #, c-format
 msgid "Protocol error, code %d: %s"
 msgstr "Chyba protokolu, kód %d: %s"
 
-#: ../libpurple/protocols/myspace/myspace.c:1972
-#: ../libpurple/protocols/myspace/myspace.c:2006
+#: ../libpurple/protocols/myspace/myspace.c:1977
+#: ../libpurple/protocols/myspace/myspace.c:2011
 msgid "Failed to add buddy"
 msgstr "Nebolo možné pridať priateľa."
 
-#: ../libpurple/protocols/myspace/myspace.c:1972
+#: ../libpurple/protocols/myspace/myspace.c:1977
 msgid "'addbuddy' command failed."
 msgstr "príkaz 'addbuddy' zlyhal."
 
-#: ../libpurple/protocols/myspace/myspace.c:2006
-#: ../libpurple/protocols/myspace/myspace.c:2247
+#: ../libpurple/protocols/myspace/myspace.c:2011
+#: ../libpurple/protocols/myspace/myspace.c:2252
 msgid "persist command failed"
 msgstr "príkaz persist zlyhal"
 
-#: ../libpurple/protocols/myspace/myspace.c:2115
+#: ../libpurple/protocols/myspace/myspace.c:2120
 #, c-format
 msgid "No such user: %s"
 msgstr "Neexistujúci používateľ: %s"
 
-#: ../libpurple/protocols/myspace/myspace.c:2116
+#: ../libpurple/protocols/myspace/myspace.c:2121
 msgid "User lookup"
 msgstr "Vyhľadanie používateľov"
 
-#: ../libpurple/protocols/myspace/myspace.c:2228
-#: ../libpurple/protocols/myspace/myspace.c:2247
-#: ../libpurple/protocols/myspace/myspace.c:2269
+#: ../libpurple/protocols/myspace/myspace.c:2233
+#: ../libpurple/protocols/myspace/myspace.c:2252
+#: ../libpurple/protocols/myspace/myspace.c:2274
 msgid "Failed to remove buddy"
 msgstr "Odstránenie priateľa zlyhalo"
 
-#: ../libpurple/protocols/myspace/myspace.c:2228
+#: ../libpurple/protocols/myspace/myspace.c:2233
 msgid "'delbuddy' command failed"
 msgstr "príkaz 'delbuddy' zlyhal"
 
-#: ../libpurple/protocols/myspace/myspace.c:2269
+#: ../libpurple/protocols/myspace/myspace.c:2274
 msgid "blocklist command failed"
 msgstr "príkaz blocklist zlyhal"
 
-#: ../libpurple/protocols/myspace/myspace.c:2315
+#: ../libpurple/protocols/myspace/myspace.c:2320
 msgid "Invalid input condition"
 msgstr "Chybná podmienka vstupu"
 
 #. TODO: g_realloc like msn, yahoo, irc, jabber?
-#: ../libpurple/protocols/myspace/myspace.c:2333
-#: ../libpurple/protocols/myspace/myspace.c:2364
+#: ../libpurple/protocols/myspace/myspace.c:2338
+#: ../libpurple/protocols/myspace/myspace.c:2369
 msgid "Read buffer full"
 msgstr "Zásobník čítania plný"
 
-#: ../libpurple/protocols/myspace/myspace.c:2402
+#: ../libpurple/protocols/myspace/myspace.c:2407
 msgid "Unparseable message"
 msgstr "Nespracovateľná správa"
 
-#: ../libpurple/protocols/myspace/myspace.c:2471
+#: ../libpurple/protocols/myspace/myspace.c:2476
 #, c-format
 msgid "Couldn't connect to host: %s (%d)"
 msgstr "Nebolo možné sa pripojiť ku hostiteľovi: %s (%d)"
 
-#: ../libpurple/protocols/myspace/myspace.c:2642
+#: ../libpurple/protocols/myspace/myspace.c:2647
 msgid "IM Friends"
 msgstr "IM Priateľov"
 
-#: ../libpurple/protocols/myspace/myspace.c:2741
+#: ../libpurple/protocols/myspace/myspace.c:2747
 #, c-format
 msgid ""
 "%d buddies were added or updated from the server (including buddies already "
 "on the server-side list)"
 msgstr ""
-
-#: ../libpurple/protocols/myspace/myspace.c:2742
+"%d priateľov bolo pridaných alebo aktualizovaných zo serveru (vrátane "
+"priateľov ktorí sa už nachádzali na serverovom zozname)"
+
+#: ../libpurple/protocols/myspace/myspace.c:2748
 msgid "Add contacts from server"
 msgstr "Pridať kontakty zo serveru"
 
-#: ../libpurple/protocols/myspace/myspace.c:2794
-#: ../libpurple/protocols/myspace/myspace.c:2859
+#: ../libpurple/protocols/myspace/myspace.c:2800
+#: ../libpurple/protocols/myspace/myspace.c:2865
 msgid "Add friends from MySpace.com"
 msgstr "Pridať priateľov z MySpace.com"
 
-#: ../libpurple/protocols/myspace/myspace.c:2795
+#: ../libpurple/protocols/myspace/myspace.c:2801
 msgid "Importing friends failed"
 msgstr "Importovanie priateľov zlyhalo"
 
 #. TODO: find out how
-#: ../libpurple/protocols/myspace/myspace.c:2851
+#: ../libpurple/protocols/myspace/myspace.c:2857
 msgid "Find people..."
 msgstr "Hľadať ľudí..."
 
-#: ../libpurple/protocols/myspace/myspace.c:2854
+#: ../libpurple/protocols/myspace/myspace.c:2860
 msgid "Change IM name..."
 msgstr "Zmeniť IM meno..."
 
-#: ../libpurple/protocols/myspace/myspace.c:3156
+#: ../libpurple/protocols/myspace/myspace.c:3162
 msgid "myim URL handler"
 msgstr "myim URL handler"
 
-#: ../libpurple/protocols/myspace/myspace.c:3157
+#: ../libpurple/protocols/myspace/myspace.c:3163
 msgid "No suitable MySpaceIM account could be found to open this myim URL."
 msgstr ""
 "Nebol nájdený žiadny vyhovujúci MySpaceIM účet na otvorenie tejto myim "
 "adresy."
 
-#: ../libpurple/protocols/myspace/myspace.c:3158
+#: ../libpurple/protocols/myspace/myspace.c:3164
 msgid "Enable the proper MySpaceIM account and try again."
 msgstr "Povoľte správny MySpaceIM účet a skúste znovu."
 
-#: ../libpurple/protocols/myspace/myspace.c:3281
+#: ../libpurple/protocols/myspace/myspace.c:3287
 msgid "Show display name in status text"
 msgstr "Zobraziť používateľské meno v texte stavu"
 
-#: ../libpurple/protocols/myspace/myspace.c:3284
+#: ../libpurple/protocols/myspace/myspace.c:3290
 msgid "Show headline in status text"
 msgstr "Zobraziť nadpis v texte stavu"
 
-#: ../libpurple/protocols/myspace/myspace.c:3289
+#: ../libpurple/protocols/myspace/myspace.c:3295
 msgid "Send emoticons"
 msgstr "Poslať emotikony"
 
-#: ../libpurple/protocols/myspace/myspace.c:3294
+#: ../libpurple/protocols/myspace/myspace.c:3300
 msgid "Screen resolution (dots per inch)"
 msgstr "Rozlíšenie obrazovky (bodov na palec)"
 
-#: ../libpurple/protocols/myspace/myspace.c:3297
+#: ../libpurple/protocols/myspace/myspace.c:3303
 msgid "Base font size (points)"
 msgstr "Základná veľkosť písma (body)"
 
@@ -7528,178 +7520,194 @@
 msgid "User"
 msgstr "Používateľ"
 
-#. TODO: link to username, if available
-#: ../libpurple/protocols/myspace/user.c:102
-#: ../libpurple/protocols/oscar/oscar.c:2964
+#: ../libpurple/protocols/myspace/user.c:104
+#: ../libpurple/protocols/oscar/oscar.c:2978
 msgid "Profile"
 msgstr "Profil"
 
-#: ../libpurple/protocols/myspace/user.c:124
-#, fuzzy
+#: ../libpurple/protocols/myspace/user.c:126
 msgid "Headline"
-msgstr "_Prezývka:"
-
-#: ../libpurple/protocols/myspace/user.c:129
-#, fuzzy
+msgstr "Nadpis"
+
+#: ../libpurple/protocols/myspace/user.c:131
 msgid "Song"
-msgstr "Zvuky"
-
-#: ../libpurple/protocols/myspace/user.c:134
-#, fuzzy
+msgstr "Pesnička"
+
+#: ../libpurple/protocols/myspace/user.c:139
 msgid "Total Friends"
-msgstr "IM Priateľov"
-
-#: ../libpurple/protocols/myspace/user.c:145
-#: ../libpurple/protocols/myspace/user.c:148
-#: ../libpurple/protocols/myspace/user.c:151
-#, fuzzy
+msgstr "Spolu priateľov"
+
+#: ../libpurple/protocols/myspace/user.c:157
 msgid "Client Version"
-msgstr "Zavrieť rozhovor"
+msgstr "Verzia klienta"
 
 #. TODO: icons for each zap
-#: ../libpurple/protocols/myspace/zap.c:44
-#: ../libpurple/protocols/myspace/zap.c:177
+#. Lots of comments for translators:
+#. Zap means "to strike suddenly and forcefully as if with a
+#. * projectile or weapon."  This term often has an electrical
+#. * connotation, for example, "he was zapped by electricity when
+#. * he put a fork in the toaster."
+#: ../libpurple/protocols/myspace/zap.c:51
+#: ../libpurple/protocols/myspace/zap.c:214
 msgid "Zap"
-msgstr ""
-
-#: ../libpurple/protocols/myspace/zap.c:44
-#, fuzzy, c-format
+msgstr "Elektrizovať"
+
+#: ../libpurple/protocols/myspace/zap.c:51
+#, c-format
 msgid "%s has zapped you!"
-msgstr "Používateľ %s sa prihlásil."
-
-#: ../libpurple/protocols/myspace/zap.c:44
+msgstr "Používateľ %s vás zelektrizoval!"
+
+#: ../libpurple/protocols/myspace/zap.c:51
 #, c-format
 msgid "Zapping %s..."
-msgstr ""
-
-#: ../libpurple/protocols/myspace/zap.c:45
+msgstr "Zelektrizovali ste %s..."
+
+#. Whack means "to hit or strike someone with a sharp blow"
+#: ../libpurple/protocols/myspace/zap.c:54
 msgid "Whack"
-msgstr ""
-
-#: ../libpurple/protocols/myspace/zap.c:45
-#, fuzzy, c-format
+msgstr "Buchnúť"
+
+#: ../libpurple/protocols/myspace/zap.c:54
+#, c-format
 msgid "%s has whacked you!"
-msgstr "Používateľ vás zablokoval"
-
-#: ../libpurple/protocols/myspace/zap.c:45
+msgstr "Používateľ %s vás buchol!"
+
+#: ../libpurple/protocols/myspace/zap.c:54
 #, c-format
 msgid "Whacking %s..."
-msgstr ""
-
-#: ../libpurple/protocols/myspace/zap.c:46
-#, fuzzy
+msgstr "Buchli ste používateľa %s..."
+
+#. Torch means "to set on fire."  Don't worry, this doesn't
+#. * make a whole lot of sense in English, either.  Feel free
+#. * to translate it literally.
+#: ../libpurple/protocols/myspace/zap.c:59
 msgid "Torch"
-msgstr "Téma"
-
-#: ../libpurple/protocols/myspace/zap.c:46
-#, fuzzy, c-format
+msgstr "Zapáliť"
+
+#: ../libpurple/protocols/myspace/zap.c:59
+#, c-format
 msgid "%s has torched you!"
-msgstr "Používateľ vás zablokoval"
-
-#: ../libpurple/protocols/myspace/zap.c:46
+msgstr "Používateľ %s vás zapálil!"
+
+#: ../libpurple/protocols/myspace/zap.c:59
 #, c-format
 msgid "Torching %s..."
-msgstr ""
-
-#: ../libpurple/protocols/myspace/zap.c:47
+msgstr "Zapálili ste používateľa %s..."
+
+#. Smooch means "to kiss someone, often enthusiastically"
+#: ../libpurple/protocols/myspace/zap.c:62
 msgid "Smooch"
-msgstr ""
-
-#: ../libpurple/protocols/myspace/zap.c:47
-#, fuzzy, c-format
+msgstr "Pobozkať"
+
+#: ../libpurple/protocols/myspace/zap.c:62
+#, c-format
 msgid "%s has smooched you!"
-msgstr "Používateľ %s sa prihlásil."
-
-#: ../libpurple/protocols/myspace/zap.c:47
+msgstr "Používateľ %s vás pobozkal!"
+
+#: ../libpurple/protocols/myspace/zap.c:62
 #, c-format
 msgid "Smooching %s..."
-msgstr ""
-
-#: ../libpurple/protocols/myspace/zap.c:48
+msgstr "Pobozkali ste používateľa %s..."
+
+#. A hug is a display of affection; wrapping your arms around someone
+#: ../libpurple/protocols/myspace/zap.c:65
 msgid "Hug"
-msgstr ""
-
-#: ../libpurple/protocols/myspace/zap.c:48
-#, fuzzy, c-format
+msgstr "Objať"
+
+#: ../libpurple/protocols/myspace/zap.c:65
+#, c-format
 msgid "%s has hugged you!"
-msgstr "Používateľ %s sa prihlásil."
-
-#: ../libpurple/protocols/myspace/zap.c:48
+msgstr "Používateľ %s vás objal!"
+
+#: ../libpurple/protocols/myspace/zap.c:65
 #, c-format
 msgid "Hugging %s..."
-msgstr ""
-
-#: ../libpurple/protocols/myspace/zap.c:49
-#, fuzzy
+msgstr "Objali ste používateľa %s..."
+
+#. Slap means "to hit someone with an open/flat hand"
+#: ../libpurple/protocols/myspace/zap.c:68
 msgid "Slap"
-msgstr "Ospalý"
-
-#: ../libpurple/protocols/myspace/zap.c:49
-#, fuzzy, c-format
+msgstr "Dať facku"
+
+#: ../libpurple/protocols/myspace/zap.c:68
+#, c-format
 msgid "%s has slapped you!"
-msgstr "Používateľ %s sa prihlásil."
-
-#: ../libpurple/protocols/myspace/zap.c:49
+msgstr "Používateľ %s vám dal facku!"
+
+#: ../libpurple/protocols/myspace/zap.c:68
 #, c-format
 msgid "Slapping %s..."
-msgstr ""
-
-#: ../libpurple/protocols/myspace/zap.c:50
-#, fuzzy
+msgstr "Dali ste facku používateľovi %s..."
+
+#. Goose means "to pinch someone on their butt"
+#: ../libpurple/protocols/myspace/zap.c:71
 msgid "Goose"
-msgstr "Preč"
-
-#: ../libpurple/protocols/myspace/zap.c:50
-#, fuzzy, c-format
+msgstr "Uťahovať si z"
+
+#: ../libpurple/protocols/myspace/zap.c:71
+#, c-format
 msgid "%s has goosed you!"
-msgstr "Používateľ %s odišiel preč."
-
-#: ../libpurple/protocols/myspace/zap.c:50
-#, fuzzy, c-format
+msgstr "Používateľ %s si z vás uťahuje!"
+
+#: ../libpurple/protocols/myspace/zap.c:71
+#, c-format
 msgid "Goosing %s..."
-msgstr "Vyhľadáva sa %s"
-
-#: ../libpurple/protocols/myspace/zap.c:51
+msgstr "Uťahujete si z %s..."
+
+#. A high-five is when two people's hands slap each other
+#. * in the air above their heads.  It is done to celebrate
+#. * something, often a victory, or to congratulate someone.
+#: ../libpurple/protocols/myspace/zap.c:76
 msgid "High-five"
-msgstr ""
-
-#: ../libpurple/protocols/myspace/zap.c:51
-#, fuzzy, c-format
+msgstr "Tľapnúť si"
+
+#: ../libpurple/protocols/myspace/zap.c:76
+#, c-format
 msgid "%s has high-fived you!"
-msgstr "Používateľ %s sa prihlásil."
-
-#: ../libpurple/protocols/myspace/zap.c:51
+msgstr "Používateľ %s si s vami tľapol!"
+
+#: ../libpurple/protocols/myspace/zap.c:76
 #, c-format
 msgid "High-fiving %s..."
-msgstr ""
-
-#: ../libpurple/protocols/myspace/zap.c:52
+msgstr "Tľapli ste si s používateľom %s..."
+
+#. We're not entirely sure what the MySpace people mean by
+#. * this... but we think it's the equivalent of "prank."  Or, for
+#. * someone to perform a mischievous trick or practical joke.
+#: ../libpurple/protocols/myspace/zap.c:81
 msgid "Punk"
-msgstr ""
-
-#: ../libpurple/protocols/myspace/zap.c:52
-#, fuzzy, c-format
+msgstr "Nachytať"
+
+#: ../libpurple/protocols/myspace/zap.c:81
+#, c-format
 msgid "%s has punk'd you!"
-msgstr "Používateľ %s sa prihlásil."
-
-#: ../libpurple/protocols/myspace/zap.c:52
+msgstr "Používateľ %s vás nachytal!"
+
+#: ../libpurple/protocols/myspace/zap.c:81
 #, c-format
 msgid "Punking %s..."
-msgstr ""
-
-#: ../libpurple/protocols/myspace/zap.c:53
+msgstr "Nachytali ste používateľa %s..."
+
+#. Raspberry is a slang term for the vibrating sound made
+#. * when you stick your tongue out of your mouth with your
+#. * lips closed and blow.  It is typically done when
+#. * gloating or bragging.  Nowadays it's a pretty silly
+#. * gesture, so it does not carry a harsh negative
+#. * connotation.  It is generally used in a playful tone
+#. * with friends.
+#: ../libpurple/protocols/myspace/zap.c:90
 msgid "Raspberry"
-msgstr ""
-
-#: ../libpurple/protocols/myspace/zap.c:53
-#, fuzzy, c-format
+msgstr "Vzdychnúť si na"
+
+#: ../libpurple/protocols/myspace/zap.c:90
+#, c-format
 msgid "%s has raspberried you!"
-msgstr "Používateľ %s sa prihlásil."
-
-#: ../libpurple/protocols/myspace/zap.c:53
+msgstr "Používateľ %s si vzdychol!"
+
+#: ../libpurple/protocols/myspace/zap.c:90
 #, c-format
 msgid "Raspberrying %s..."
-msgstr ""
+msgstr "Vzdychli ste si na používateľa %s..."
 
 #: ../libpurple/protocols/novell/nmuser.c:1864
 msgid "Required parameters not passed in"
@@ -7834,42 +7842,42 @@
 msgid "Login failed (%s)."
 msgstr "Prihlásenie zlyhalo (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:247
+#: ../libpurple/protocols/novell/novell.c:249
 #, c-format
 msgid "Unable to send message. Could not get details for user (%s)."
 msgstr ""
 "Nepodarilo sa odoslať správu. Nepodarilo sa zobraziť podrobnosti o "
 "používateľovi (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:396
+#: ../libpurple/protocols/novell/novell.c:398
 #, c-format
 msgid "Unable to add %s to your buddy list (%s)."
 msgstr "Nepodarilo sa pridať používateľa %s do vášho zoznamu priateľov (%s)."
 
 #. TODO: Improve this! message to who or for what conference?
-#: ../libpurple/protocols/novell/novell.c:422
+#: ../libpurple/protocols/novell/novell.c:424
 #, c-format
 msgid "Unable to send message (%s)."
 msgstr "Nepodarilo sa odoslať správu (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:493
-#: ../libpurple/protocols/novell/novell.c:985
+#: ../libpurple/protocols/novell/novell.c:495
+#: ../libpurple/protocols/novell/novell.c:987
 #, c-format
 msgid "Unable to invite user (%s)."
 msgstr "Nepodarilo sa pozvať používateľa (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:532
+#: ../libpurple/protocols/novell/novell.c:534
 #, c-format
 msgid "Unable to send message to %s. Could not create the conference (%s)."
 msgstr ""
 "Nepodarilo sa odoslať správu pre %s. Nepodarilo sa vytvoriť konferenciu (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:537
+#: ../libpurple/protocols/novell/novell.c:539
 #, c-format
 msgid "Unable to send message. Could not create the conference (%s)."
 msgstr "Nepodarilo sa odoslať správu. Nepodarilo sa vytvoriť konferenciu (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:584
+#: ../libpurple/protocols/novell/novell.c:586
 #, c-format
 msgid ""
 "Unable to move user %s to folder %s in the server side list. Error while "
@@ -7878,7 +7886,7 @@
 "Nepodarilo sa presunúť používateľa %s do priečinka %s v serverovom zozname. "
 "Chyba počas vytvárania priečinku (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:632
+#: ../libpurple/protocols/novell/novell.c:634
 #, c-format
 msgid ""
 "Unable to add %s to your buddy list. Error creating folder in server side "
@@ -7887,61 +7895,61 @@
 "Nebolo možné pridať %s do vášho zoznamu priateľov. Chyba počas vytvárania "
 "priečinku v serverovom zozname (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:705
+#: ../libpurple/protocols/novell/novell.c:707
 #, c-format
 msgid "Could not get details for user %s (%s)."
 msgstr "Nepodarilo sa zobraziť podrobnosti o používateľovi %s (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:751
-#: ../libpurple/protocols/novell/novell.c:897
+#: ../libpurple/protocols/novell/novell.c:753
+#: ../libpurple/protocols/novell/novell.c:899
 #, c-format
 msgid "Unable to add user to privacy list (%s)."
 msgstr "Nepodarilo sa pridať do zoznamu súkromných (%s)"
 
-#: ../libpurple/protocols/novell/novell.c:798
+#: ../libpurple/protocols/novell/novell.c:800
 #, c-format
 msgid "Unable to add %s to deny list (%s)."
 msgstr "Nepodarilo sa pridať %s do zoznamu blokovaných (%s)"
 
-#: ../libpurple/protocols/novell/novell.c:851
+#: ../libpurple/protocols/novell/novell.c:853
 #, c-format
 msgid "Unable to add %s to permit list (%s)."
 msgstr "Nepodarilo sa pridať %s do zoznamu povolených (%s)"
 
-#: ../libpurple/protocols/novell/novell.c:919
+#: ../libpurple/protocols/novell/novell.c:921
 #, c-format
 msgid "Unable to remove %s from privacy list (%s)."
 msgstr "Nepodarilo sa odstrániť %s zo zoznamu súkromných (%s)"
 
-#: ../libpurple/protocols/novell/novell.c:942
-#: ../libpurple/protocols/novell/novell.c:1647
+#: ../libpurple/protocols/novell/novell.c:944
+#: ../libpurple/protocols/novell/novell.c:1649
 #, c-format
 msgid "Unable to change server side privacy settings (%s)."
 msgstr "Nepodarilo sa zmeniť nastavenia súkromných na strane servera (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:1012
+#: ../libpurple/protocols/novell/novell.c:1014
 #, c-format
 msgid "Unable to create conference (%s)."
 msgstr "Nepodarilo sa vytvoriť konferenciu (%s)."
 
-#: ../libpurple/protocols/novell/novell.c:1121
-#: ../libpurple/protocols/novell/novell.c:1692
+#: ../libpurple/protocols/novell/novell.c:1123
+#: ../libpurple/protocols/novell/novell.c:1694
 msgid "Error communicating with server. Closing connection."
 msgstr "Chyba počas komunikácie so serverom. Uzatvára sa pripojenie."
 
-#: ../libpurple/protocols/novell/novell.c:1476
+#: ../libpurple/protocols/novell/novell.c:1478
 msgid "Telephone Number"
 msgstr "Telefónne číslo"
 
-#: ../libpurple/protocols/novell/novell.c:1482
+#: ../libpurple/protocols/novell/novell.c:1484
 msgid "Personal Title"
 msgstr "Osobný titul"
 
-#: ../libpurple/protocols/novell/novell.c:1486
+#: ../libpurple/protocols/novell/novell.c:1488
 msgid "Mailstop"
 msgstr "Pošta"
 
-#: ../libpurple/protocols/novell/novell.c:1502
+#: ../libpurple/protocols/novell/novell.c:1504
 #: ../libpurple/protocols/sametime/sametime.c:4122
 msgid "User ID"
 msgstr "ID používateľa"
@@ -7952,41 +7960,41 @@
 #. purple_notify_user_info_add_pair(user_info, tag, value);
 #. }
 #.
-#: ../libpurple/protocols/novell/novell.c:1515
+#: ../libpurple/protocols/novell/novell.c:1517
 msgid "Full name"
 msgstr "Celé meno"
 
-#: ../libpurple/protocols/novell/novell.c:1637
+#: ../libpurple/protocols/novell/novell.c:1639
 #, c-format
 msgid "GroupWise Conference %d"
 msgstr "GroupWise konferencia %d"
 
-#: ../libpurple/protocols/novell/novell.c:1668
+#: ../libpurple/protocols/novell/novell.c:1670
 msgid "Unable to make SSL connection to server."
 msgstr "Nepodarilo sa vytvoriť SSL pripojenie na server."
 
-#: ../libpurple/protocols/novell/novell.c:1720
+#: ../libpurple/protocols/novell/novell.c:1722
 msgid "Authenticating..."
 msgstr "Overuje sa..."
 
-#: ../libpurple/protocols/novell/novell.c:1732
+#: ../libpurple/protocols/novell/novell.c:1734
 msgid "Unable to connect to server."
 msgstr "Nepodarilo sa pripojiť na server."
 
-#: ../libpurple/protocols/novell/novell.c:1735
+#: ../libpurple/protocols/novell/novell.c:1737
 msgid "Waiting for response..."
 msgstr "Čaká sa na odpoveď..."
 
-#: ../libpurple/protocols/novell/novell.c:1870
+#: ../libpurple/protocols/novell/novell.c:1872
 #, c-format
 msgid "%s has been invited to this conversation."
 msgstr "Používateľ %s bol pozvaný na konferenciu."
 
-#: ../libpurple/protocols/novell/novell.c:1898
+#: ../libpurple/protocols/novell/novell.c:1900
 msgid "Invitation to Conversation"
 msgstr "Prozvánka na konferenciu"
 
-#: ../libpurple/protocols/novell/novell.c:1899
+#: ../libpurple/protocols/novell/novell.c:1901
 #, c-format
 msgid ""
 "Invitation from: %s\n"
@@ -7997,17 +8005,16 @@
 "\n"
 "Odoslal: %s"
 
-#: ../libpurple/protocols/novell/novell.c:1901
+#: ../libpurple/protocols/novell/novell.c:1903
 msgid "Would you like to join the conversation?"
 msgstr "Chcete sa pripojiť do tejto konverzácie?"
 
-#. we don't want to reconnect in this case
-#: ../libpurple/protocols/novell/novell.c:2012
+#: ../libpurple/protocols/novell/novell.c:2017
 msgid "You have been logged out because you logged in at another workstation."
 msgstr ""
 "Boli ste odhlásený, pretože ste sa prihlásili na inej pracovnej stanici."
 
-#: ../libpurple/protocols/novell/novell.c:2069
+#: ../libpurple/protocols/novell/novell.c:2074
 #, c-format
 msgid ""
 "%s appears to be offline and did not receive the message that you just sent."
@@ -8018,7 +8025,7 @@
 #. *  purple_request_fields(gc, _("Server Address"),...);
 #.
 #. ...but for now just error out with a nice message.
-#: ../libpurple/protocols/novell/novell.c:2167
+#: ../libpurple/protocols/novell/novell.c:2172
 msgid ""
 "Unable to connect to server. Please enter the address of the server you wish "
 "to connect to."
@@ -8026,12 +8033,11 @@
 "Nedá sa pripojiť na server. Zadajte, prosím, adresu servera, na ktorý sa "
 "chcete pripojiť."
 
-#: ../libpurple/protocols/novell/novell.c:2195
+#: ../libpurple/protocols/novell/novell.c:2200
 msgid "Error. SSL support is not installed."
 msgstr "Chyba. SSL podpora nie je nainštalovaná."
 
-#: ../libpurple/protocols/novell/novell.c:2504
-#, c-format
+#: ../libpurple/protocols/novell/novell.c:2509
 msgid "This conference has been closed. No more messages can be sent."
 msgstr ""
 "Táto konferencia bola uzavretá. Nie je možné do nej odosielať ďalšie správy."
@@ -8046,31 +8052,31 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/novell/novell.c:3518
-#: ../libpurple/protocols/novell/novell.c:3520
+#: ../libpurple/protocols/novell/novell.c:3523
+#: ../libpurple/protocols/novell/novell.c:3525
 msgid "Novell GroupWise Messenger Protocol Plugin"
 msgstr "Modul protokolu Novell GroupWise Messenger"
 
-#: ../libpurple/protocols/novell/novell.c:3545
+#: ../libpurple/protocols/novell/novell.c:3550
 msgid "Server address"
 msgstr "Adresa servera"
 
-#: ../libpurple/protocols/novell/novell.c:3549
+#: ../libpurple/protocols/novell/novell.c:3554
 msgid "Server port"
 msgstr "Port servera"
 
-#: ../libpurple/protocols/oscar/flap_connection.c:387
-#: ../libpurple/protocols/yahoo/yahoo.c:2469
-#: ../libpurple/protocols/yahoo/yahoo.c:2636
+#: ../libpurple/protocols/oscar/flap_connection.c:389
+#: ../libpurple/protocols/yahoo/yahoo.c:2471
+#: ../libpurple/protocols/yahoo/yahoo.c:2638
 #: ../libpurple/protocols/yahoo/ycht.c:481 ../libpurple/proxy.c:581
 #: ../libpurple/proxy.c:1116 ../libpurple/proxy.c:1225
 #: ../libpurple/proxy.c:1325 ../libpurple/proxy.c:1453
 msgid "Server closed the connection."
 msgstr "Server zrušil pripojenie."
 
-#: ../libpurple/protocols/oscar/flap_connection.c:389
-#: ../libpurple/protocols/yahoo/yahoo.c:2463
-#: ../libpurple/protocols/yahoo/yahoo.c:2630 ../libpurple/proxy.c:593
+#: ../libpurple/protocols/oscar/flap_connection.c:391
+#: ../libpurple/protocols/yahoo/yahoo.c:2465
+#: ../libpurple/protocols/yahoo/yahoo.c:2632 ../libpurple/proxy.c:593
 #: ../libpurple/proxy.c:1128 ../libpurple/proxy.c:1237
 #: ../libpurple/proxy.c:1337 ../libpurple/proxy.c:1465
 #, c-format
@@ -8081,7 +8087,7 @@
 "Pripojenie k servera bolo prerušené:\n"
 "%s"
 
-#: ../libpurple/protocols/oscar/flap_connection.c:392
+#: ../libpurple/protocols/oscar/flap_connection.c:394
 #: ../libpurple/proxy.c:1145 ../libpurple/proxy.c:1250
 #: ../libpurple/proxy.c:1349 ../libpurple/proxy.c:1421
 #: ../libpurple/proxy.c:1478
@@ -8119,36 +8125,44 @@
 msgstr "Modul protokolu ICQ"
 
 #: ../libpurple/protocols/oscar/libicq.c:147
-#: ../libpurple/protocols/yahoo/yahoo.c:4410
+#: ../libpurple/protocols/yahoo/yahoo.c:4412
 #: ../libpurple/protocols/zephyr/zephyr.c:2997
 msgid "Encoding"
 msgstr "Kódovanie"
 
-#: ../libpurple/protocols/oscar/odc.c:40
+#: ../libpurple/protocols/oscar/odc.c:42
 msgid "The remote user has closed the connection."
 msgstr "Vzdialený používateľ zrušil pripojenie."
 
-#: ../libpurple/protocols/oscar/odc.c:42
+#: ../libpurple/protocols/oscar/odc.c:44
 msgid "The remote user has declined your request."
 msgstr "Vzdialený použivateľ odmietol vašu požiadavku."
 
-#: ../libpurple/protocols/oscar/odc.c:44
+#: ../libpurple/protocols/oscar/odc.c:46
 #, c-format
 msgid "Lost connection with the remote user:<br>%s"
 msgstr "Pripojenie so vzidaleným použivateľom je prerušené:<br>%s"
 
-#: ../libpurple/protocols/oscar/odc.c:47
+#: ../libpurple/protocols/oscar/odc.c:49
 msgid "Received invalid data on connection with remote user."
 msgstr "Prijaté neplatné dáta pri spojení so vzdialeným používateľom."
 
-#: ../libpurple/protocols/oscar/odc.c:49
+#: ../libpurple/protocols/oscar/odc.c:51
 msgid "Could not establish a connection with the remote user."
 msgstr "Nepodarilo sa založiť pripojenie so vzdialeným používateľom."
 
-#: ../libpurple/protocols/oscar/odc.c:560
+#: ../libpurple/protocols/oscar/odc.c:562
 msgid "Direct IM established"
 msgstr "Bola založená priama komunikácia"
 
+#: ../libpurple/protocols/oscar/odc.c:600
+#, c-format
+msgid ""
+"%s tried to send you a %s file, but we only allow files up to %s over Direct "
+"IM.  Try using file transfer instead.\n"
+msgstr ""
+"Používateľ %s vám chcel poslať súbor %s, ale cez priame IM sú povolené súbory len do %s.  Skúste namiesto toho použiť prenos súborov.\n"
+
 #: ../libpurple/protocols/oscar/oft.c:656
 #, c-format
 msgid "File %s is %s, which is larger than the maximum size of %s."
@@ -8294,7 +8308,7 @@
 msgstr "Chat"
 
 #: ../libpurple/protocols/oscar/oscar.c:651
-#: ../libpurple/protocols/oscar/oscar.c:6010
+#: ../libpurple/protocols/oscar/oscar.c:6062
 msgid "Get File"
 msgstr "Získať súbor"
 
@@ -8367,49 +8381,43 @@
 msgstr "Kamera"
 
 #: ../libpurple/protocols/oscar/oscar.c:725
-#: ../libpurple/protocols/oscar/oscar.c:5780
-#, c-format
+#: ../libpurple/protocols/oscar/oscar.c:5832
 msgid "Free For Chat"
 msgstr "Voľný pre rozhovor"
 
 #: ../libpurple/protocols/oscar/oscar.c:729
-#: ../libpurple/protocols/oscar/oscar.c:5815
-#, c-format
+#: ../libpurple/protocols/oscar/oscar.c:5867
 msgid "Not Available"
 msgstr "Nedostupný"
 
 #: ../libpurple/protocols/oscar/oscar.c:731
-#: ../libpurple/protocols/oscar/oscar.c:5801
-#, c-format
+#: ../libpurple/protocols/oscar/oscar.c:5853
 msgid "Occupied"
 msgstr "Zaneprázdnený"
 
 #: ../libpurple/protocols/oscar/oscar.c:735
-#, c-format
 msgid "Web Aware"
 msgstr "Web aware"
 
 #: ../libpurple/protocols/oscar/oscar.c:737 ../libpurple/protocols/qq/qq.c:183
 #: ../libpurple/protocols/qq/qq.c:288
-#: ../libpurple/protocols/yahoo/yahoo.c:3095 ../libpurple/status.c:157
+#: ../libpurple/protocols/yahoo/yahoo.c:3097 ../libpurple/status.c:157
 #: ../pidgin/gtkdocklet.c:446 ../pidgin/gtkstatusbox.c:1060
-#, c-format
 msgid "Invisible"
 msgstr "Neviditeľný"
 
 #: ../libpurple/protocols/oscar/oscar.c:739
-#, c-format
 msgid "Online"
 msgstr "Pripojený"
 
 #: ../libpurple/protocols/oscar/oscar.c:838
-#: ../libpurple/protocols/oscar/oscar.c:3707
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:721 ../pidgin/gtkprefs.c:1126
+#: ../libpurple/protocols/oscar/oscar.c:3721
+#: ../libpurple/protocols/yahoo/yahoo_profile.c:721 ../pidgin/gtkprefs.c:1128
 msgid "IP Address"
 msgstr "IP adresa"
 
 #: ../libpurple/protocols/oscar/oscar.c:845
-#: ../libpurple/protocols/oscar/oscar.c:2891
+#: ../libpurple/protocols/oscar/oscar.c:2905
 msgid "Warning Level"
 msgstr "Úroveň upozornenia"
 
@@ -8461,14 +8469,14 @@
 "písmená, čísla a medzery."
 
 #: ../libpurple/protocols/oscar/oscar.c:1345
-#: ../libpurple/protocols/yahoo/yahoo.c:2105
+#: ../libpurple/protocols/yahoo/yahoo.c:2107
 msgid "Invalid screen name."
 msgstr "Chybné používateľské meno."
 
 #: ../libpurple/protocols/oscar/oscar.c:1352
-#: ../libpurple/protocols/qq/login_logout.c:483
-#: ../libpurple/protocols/simple/simple.c:1045
-#: ../libpurple/protocols/yahoo/yahoo.c:2126
+#: ../libpurple/protocols/qq/login_logout.c:485
+#: ../libpurple/protocols/simple/simple.c:1047
+#: ../libpurple/protocols/yahoo/yahoo.c:2128
 msgid "Incorrect password."
 msgstr "Nesprávne heslo."
 
@@ -8521,10 +8529,10 @@
 #. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons.
 #.
 #: ../libpurple/protocols/oscar/oscar.c:1452
-#: ../libpurple/protocols/oscar/oscar.c:2232
-#: ../libpurple/protocols/oscar/oscar.c:2281
-#: ../libpurple/protocols/oscar/oscar.c:5885
-#: ../libpurple/protocols/oscar/oscar.c:6166 ../libpurple/request.h:1388
+#: ../libpurple/protocols/oscar/oscar.c:2246
+#: ../libpurple/protocols/oscar/oscar.c:2295
+#: ../libpurple/protocols/oscar/oscar.c:5937
+#: ../libpurple/protocols/oscar/oscar.c:6218 ../libpurple/request.h:1388
 msgid "_OK"
 msgstr "_OK"
 
@@ -8560,33 +8568,33 @@
 msgid "Unable to initialize connection"
 msgstr "Spojenie sa nedá inicializovať"
 
-#: ../libpurple/protocols/oscar/oscar.c:2202
+#: ../libpurple/protocols/oscar/oscar.c:2204
 msgid "Please authorize me so I can add you to my buddy list."
 msgstr ""
 "Prosím, autorizujte ma, aby som si vás mohol pridať do svojho zoznamu "
 "priateľov."
 
-#: ../libpurple/protocols/oscar/oscar.c:2230
+#: ../libpurple/protocols/oscar/oscar.c:2244
 msgid "Authorization Request Message:"
 msgstr "Žiadosť o autorizáciu:"
 
-#: ../libpurple/protocols/oscar/oscar.c:2231
+#: ../libpurple/protocols/oscar/oscar.c:2245
 msgid "Please authorize me!"
 msgstr "Autorizujte ma, prosím!"
 
-#: ../libpurple/protocols/oscar/oscar.c:2272
-#: ../libpurple/protocols/oscar/oscar.c:2280
-#: ../libpurple/protocols/oscar/oscar.c:2407
-#: ../libpurple/protocols/oscar/oscar.c:5263
-#: ../libpurple/protocols/yahoo/yahoo.c:1030
+#: ../libpurple/protocols/oscar/oscar.c:2286
+#: ../libpurple/protocols/oscar/oscar.c:2294
+#: ../libpurple/protocols/oscar/oscar.c:2421
+#: ../libpurple/protocols/oscar/oscar.c:5313
+#: ../libpurple/protocols/yahoo/yahoo.c:1032
 msgid "No reason given."
 msgstr "Nebol uvedený dôvod."
 
-#: ../libpurple/protocols/oscar/oscar.c:2279
+#: ../libpurple/protocols/oscar/oscar.c:2293
 msgid "Authorization Denied Message:"
 msgstr "Správa zamietnutia autorizácie:"
 
-#: ../libpurple/protocols/oscar/oscar.c:2407
+#: ../libpurple/protocols/oscar/oscar.c:2421
 #, c-format
 msgid ""
 "The user %u has denied your request to add them to your buddy list for the "
@@ -8597,18 +8605,18 @@
 "nasledujúcich dôvodov:\n"
 "%s"
 
-#: ../libpurple/protocols/oscar/oscar.c:2408
+#: ../libpurple/protocols/oscar/oscar.c:2422
 msgid "ICQ authorization denied."
 msgstr "ICQ autorizácia zamietnutá."
 
 #. Someone has granted you authorization
-#: ../libpurple/protocols/oscar/oscar.c:2415
+#: ../libpurple/protocols/oscar/oscar.c:2429
 #, c-format
 msgid "The user %u has granted your request to add them to your buddy list."
 msgstr ""
 "Používateľ %u prijal vašu požiadavku o pridanie do vášho zoznamu priateľov."
 
-#: ../libpurple/protocols/oscar/oscar.c:2423
+#: ../libpurple/protocols/oscar/oscar.c:2437
 #, c-format
 msgid ""
 "You have received a special message\n"
@@ -8621,7 +8629,7 @@
 "od: %s [%s]\n"
 "%s"
 
-#: ../libpurple/protocols/oscar/oscar.c:2431
+#: ../libpurple/protocols/oscar/oscar.c:2445
 #, c-format
 msgid ""
 "You have received an ICQ page\n"
@@ -8634,7 +8642,7 @@
 "od: %s [%s]\n"
 "%s"
 
-#: ../libpurple/protocols/oscar/oscar.c:2439
+#: ../libpurple/protocols/oscar/oscar.c:2453
 #, c-format
 msgid ""
 "You have received an ICQ e-mail from %s [%s]\n"
@@ -8647,24 +8655,24 @@
 "Správa je:\n"
 "%s"
 
-#: ../libpurple/protocols/oscar/oscar.c:2460
+#: ../libpurple/protocols/oscar/oscar.c:2474
 #, c-format
 msgid "ICQ user %u has sent you a buddy: %s (%s)"
 msgstr "Používateľ protokolu ICQ, %u, vám poslal priateľa: %s (%s)"
 
-#: ../libpurple/protocols/oscar/oscar.c:2466
+#: ../libpurple/protocols/oscar/oscar.c:2480
 msgid "Do you want to add this buddy to your buddy list?"
 msgstr "Chcete pridať tohoto priateľa do svojho zoznamu priateľov?"
 
-#: ../libpurple/protocols/oscar/oscar.c:2471 ../pidgin/gtkroomlist.c:309
+#: ../libpurple/protocols/oscar/oscar.c:2485 ../pidgin/gtkroomlist.c:309
 msgid "_Add"
 msgstr "_Pridať"
 
-#: ../libpurple/protocols/oscar/oscar.c:2472
+#: ../libpurple/protocols/oscar/oscar.c:2486
 msgid "_Decline"
 msgstr "Odmietnuť"
 
-#: ../libpurple/protocols/oscar/oscar.c:2596
+#: ../libpurple/protocols/oscar/oscar.c:2610
 #, c-format
 msgid "You missed %hu message from %s because it was invalid."
 msgid_plural "You missed %hu messages from %s because they were invalid."
@@ -8672,7 +8680,7 @@
 msgstr[1] "Prišli ste o %hu správu od používateľa %s, pretože bola chybná."
 msgstr[2] "Prišli ste o %hu správy od používateľa %s, pretože boli chybné."
 
-#: ../libpurple/protocols/oscar/oscar.c:2605
+#: ../libpurple/protocols/oscar/oscar.c:2619
 #, c-format
 msgid "You missed %hu message from %s because it was too large."
 msgid_plural "You missed %hu messages from %s because they were too large."
@@ -8680,7 +8688,7 @@
 msgstr[1] "%hu správy od %s neboli prijaté, pretože boli príliš veľké."
 msgstr[2] "%hu správ od %s nebolo prijatých, pretože boli príliš veľké."
 
-#: ../libpurple/protocols/oscar/oscar.c:2614
+#: ../libpurple/protocols/oscar/oscar.c:2628
 #, c-format
 msgid ""
 "You missed %hu message from %s because the rate limit has been exceeded."
@@ -8696,7 +8704,7 @@
 "Prišli ste o %hu správy od používateľa %s, pretože bol prekročený limit "
 "hodnotenia."
 
-#: ../libpurple/protocols/oscar/oscar.c:2623
+#: ../libpurple/protocols/oscar/oscar.c:2637
 #, c-format
 msgid "You missed %hu message from %s because he/she was too evil."
 msgid_plural "You missed %hu messages from %s because he/she was too evil."
@@ -8704,7 +8712,7 @@
 msgstr[1] "Prišli ste o %hu správu od používateľa %s, pretože je príliš zlý."
 msgstr[2] "Prišli ste o %hu správy od používateľa %s, pretože je príliš zlý."
 
-#: ../libpurple/protocols/oscar/oscar.c:2632
+#: ../libpurple/protocols/oscar/oscar.c:2646
 #, c-format
 msgid "You missed %hu message from %s because you are too evil."
 msgid_plural "You missed %hu messages from %s because you are too evil."
@@ -8712,7 +8720,7 @@
 msgstr[1] "Prišli ste o %hu správu od používateľa %s, pretože ste príliš zlý."
 msgstr[2] "Prišli ste o %hu správy od používateľa %s, pretože ste príliš zlý."
 
-#: ../libpurple/protocols/oscar/oscar.c:2641
+#: ../libpurple/protocols/oscar/oscar.c:2655
 #, c-format
 msgid "You missed %hu message from %s for an unknown reason."
 msgid_plural "You missed %hu messages from %s for an unknown reason."
@@ -8721,47 +8729,47 @@
 msgstr[2] "Z neznámeho dôvodu ste prišli o %hu správy od používateľa %s."
 
 #. Data is assumed to be the destination sn
-#: ../libpurple/protocols/oscar/oscar.c:2796
+#: ../libpurple/protocols/oscar/oscar.c:2810
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Nemôžem odoslať správu: %s"
 
-#: ../libpurple/protocols/oscar/oscar.c:2796
-#: ../libpurple/protocols/oscar/oscar.c:2801
-#: ../libpurple/protocols/oscar/oscar.c:2865
+#: ../libpurple/protocols/oscar/oscar.c:2810
+#: ../libpurple/protocols/oscar/oscar.c:2815
+#: ../libpurple/protocols/oscar/oscar.c:2879
 msgid "Unknown reason."
 msgstr "Neznámy dôvod."
 
-#: ../libpurple/protocols/oscar/oscar.c:2799
+#: ../libpurple/protocols/oscar/oscar.c:2813
 #: ../libpurple/protocols/sametime/sametime.c:2409
 #, c-format
 msgid "Unable to send message to %s:"
 msgstr "Nemôžem poslať správu k %s:"
 
-#: ../libpurple/protocols/oscar/oscar.c:2865
+#: ../libpurple/protocols/oscar/oscar.c:2879
 #, c-format
 msgid "User information not available: %s"
 msgstr "Informácie o používateľovi sú nedostupné: %s"
 
-#: ../libpurple/protocols/oscar/oscar.c:2896
+#: ../libpurple/protocols/oscar/oscar.c:2910
 msgid "Online Since"
 msgstr "Pripojený od"
 
-#: ../libpurple/protocols/oscar/oscar.c:2901
+#: ../libpurple/protocols/oscar/oscar.c:2915
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1185
 msgid "Member Since"
 msgstr "Člen od"
 
-#: ../libpurple/protocols/oscar/oscar.c:2936
+#: ../libpurple/protocols/oscar/oscar.c:2950
 msgid "Available Message"
 msgstr "Dostupná správa"
 
-#: ../libpurple/protocols/oscar/oscar.c:3044
+#: ../libpurple/protocols/oscar/oscar.c:3058
 msgid "Your AIM connection may be lost."
 msgstr "Vaše AIM spojenie je zrejme prerušené."
 
 #. The conversion failed!
-#: ../libpurple/protocols/oscar/oscar.c:3232
+#: ../libpurple/protocols/oscar/oscar.c:3246
 msgid ""
 "[Unable to display a message from this user because it contained invalid "
 "characters.]"
@@ -8769,7 +8777,7 @@
 "[Správa od používateľa obsahovala nesprávne znaky, preto ju nebolo možné "
 "zobraziť.]"
 
-#: ../libpurple/protocols/oscar/oscar.c:3396
+#: ../libpurple/protocols/oscar/oscar.c:3410
 msgid ""
 "The last action you attempted could not be performed because you are over "
 "the rate limit. Please wait 10 seconds and try again."
@@ -8777,53 +8785,53 @@
 "Akciu nebolo možné vykonať, pretože ste prekročili limit hodnotenia. Prosím, "
 "počkajte 10 sekúnd a skúste to znovu."
 
-#: ../libpurple/protocols/oscar/oscar.c:3479
+#: ../libpurple/protocols/oscar/oscar.c:3493
 #: ../libpurple/protocols/toc/toc.c:977
 #, c-format
 msgid "You have been disconnected from chat room %s."
 msgstr "Boli ste odpojení z miestnosti %s."
 
-#: ../libpurple/protocols/oscar/oscar.c:3729
+#: ../libpurple/protocols/oscar/oscar.c:3743
 #: ../libpurple/protocols/silc/util.c:585
 #: ../libpurple/protocols/silc10/util.c:581
 msgid "Mobile Phone"
 msgstr "Mobilný telefón"
 
-#: ../libpurple/protocols/oscar/oscar.c:3759
+#: ../libpurple/protocols/oscar/oscar.c:3773
 msgid "Personal Web Page"
 msgstr "Osobná webová stránka"
 
-#: ../libpurple/protocols/oscar/oscar.c:3783
+#: ../libpurple/protocols/oscar/oscar.c:3797
 #: ../libpurple/protocols/qq/buddy_info.c:40
 msgid "Additional Information"
 msgstr "Ďoplňujúce informácie"
 
-#: ../libpurple/protocols/oscar/oscar.c:3791
-#: ../libpurple/protocols/oscar/oscar.c:3804
+#: ../libpurple/protocols/oscar/oscar.c:3805
+#: ../libpurple/protocols/oscar/oscar.c:3818
 msgid "Zip Code"
 msgstr "PSČ"
 
-#: ../libpurple/protocols/oscar/oscar.c:3815
+#: ../libpurple/protocols/oscar/oscar.c:3829
 msgid "Division"
 msgstr "Oddelenie"
 
-#: ../libpurple/protocols/oscar/oscar.c:3816
+#: ../libpurple/protocols/oscar/oscar.c:3830
 msgid "Position"
 msgstr "Pozícia"
 
-#: ../libpurple/protocols/oscar/oscar.c:3818
+#: ../libpurple/protocols/oscar/oscar.c:3832
 msgid "Web Page"
 msgstr "Webstránka"
 
-#: ../libpurple/protocols/oscar/oscar.c:3821
+#: ../libpurple/protocols/oscar/oscar.c:3835
 msgid "Work Information"
 msgstr "Pracovné informácie"
 
-#: ../libpurple/protocols/oscar/oscar.c:3877
+#: ../libpurple/protocols/oscar/oscar.c:3891
 msgid "Pop-Up Message"
 msgstr "Vyskakovacia správa"
 
-#: ../libpurple/protocols/oscar/oscar.c:3917
+#: ../libpurple/protocols/oscar/oscar.c:3931
 #, c-format
 msgid "The following screen name is associated with %s"
 msgid_plural "The following screen names are associated with %s"
@@ -8831,30 +8839,29 @@
 msgstr[1] "S %s je asociované nasledujúce používateľské meno"
 msgstr[2] "S %s sú asociované nasledujúce používateľské mená"
 
-#: ../libpurple/protocols/oscar/oscar.c:3922
+#: ../libpurple/protocols/oscar/oscar.c:3936
 msgid "Screen name"
 msgstr "Používateľské meno"
 
-#: ../libpurple/protocols/oscar/oscar.c:3948
+#: ../libpurple/protocols/oscar/oscar.c:3962
 #, c-format
 msgid "No results found for e-mail address %s"
 msgstr "Pre e-mailovú %s adresu neboli nájdené žiadne výsledky"
 
-#: ../libpurple/protocols/oscar/oscar.c:3969
+#: ../libpurple/protocols/oscar/oscar.c:3983
 #, c-format
 msgid "You should receive an e-mail asking to confirm %s."
 msgstr "Mali by ste prijať e-mail so žiadosťou o potvrdenie %s."
 
-#: ../libpurple/protocols/oscar/oscar.c:3971
+#: ../libpurple/protocols/oscar/oscar.c:3985
 msgid "Account Confirmation Requested"
 msgstr "Podvrdenie účtu bolo vyžiadané"
 
-#: ../libpurple/protocols/oscar/oscar.c:4002
-#, c-format
+#: ../libpurple/protocols/oscar/oscar.c:4016
 msgid "Error Changing Account Info"
 msgstr "Chyba pri zmene podrobností účtu"
 
-#: ../libpurple/protocols/oscar/oscar.c:4005
+#: ../libpurple/protocols/oscar/oscar.c:4019
 #, c-format
 msgid ""
 "Error 0x%04x: Unable to format screen name because the requested screen name "
@@ -8863,13 +8870,13 @@
 "Chyba 0x%04x: Nepodarilo sa formátovať používateľské meno, pretože "
 "požadované používateľské meno sa líši od pôvodného."
 
-#: ../libpurple/protocols/oscar/oscar.c:4008
+#: ../libpurple/protocols/oscar/oscar.c:4022
 #, c-format
 msgid "Error 0x%04x: Unable to format screen name because it is invalid."
 msgstr ""
 "Chyba 0x%04x: Nepodarilo sa formátovať používateľské meno, pretože je chybné."
 
-#: ../libpurple/protocols/oscar/oscar.c:4011
+#: ../libpurple/protocols/oscar/oscar.c:4025
 #, c-format
 msgid ""
 "Error 0x%04x: Unable to format screen name because the requested screen name "
@@ -8878,7 +8885,7 @@
 "Chyba 0x%04x: Nepodarilo sa formátovať používateľské meno, pretože "
 "požadované používateľské meno je príliš dlhé."
 
-#: ../libpurple/protocols/oscar/oscar.c:4014
+#: ../libpurple/protocols/oscar/oscar.c:4028
 #, c-format
 msgid ""
 "Error 0x%04x: Unable to change e-mail address because there is already a "
@@ -8887,7 +8894,7 @@
 "Chyba 0x%04x: Nepodarilo sa zmeniť e-mailovú adresu, pretože toto "
 "používateľské meno už má požiadavku."
 
-#: ../libpurple/protocols/oscar/oscar.c:4017
+#: ../libpurple/protocols/oscar/oscar.c:4031
 #, c-format
 msgid ""
 "Error 0x%04x: Unable to change e-mail address because the given address has "
@@ -8896,7 +8903,7 @@
 "Chyba 0x%04x: e-mailová adresa sa nedá zmeniť, pretože daná adresa má so "
 "sebou asociovaných veľmi veľa zobrazovaných mien."
 
-#: ../libpurple/protocols/oscar/oscar.c:4020
+#: ../libpurple/protocols/oscar/oscar.c:4034
 #, c-format
 msgid ""
 "Error 0x%04x: Unable to change e-mail address because the given address is "
@@ -8905,32 +8912,32 @@
 "Chyba 0x%04x: Nepodarilo sa zmeniť e-mailovú adresu, pretože zadaná adresa "
 "je chybná."
 
-#: ../libpurple/protocols/oscar/oscar.c:4023
+#: ../libpurple/protocols/oscar/oscar.c:4037
 #, c-format
 msgid "Error 0x%04x: Unknown error."
 msgstr "Chyba 0x%04x: Neznáma chyba."
 
-#: ../libpurple/protocols/oscar/oscar.c:4033
+#: ../libpurple/protocols/oscar/oscar.c:4047
 #, c-format
 msgid "The e-mail address for %s is %s"
 msgstr "E-mailová adresa používateľa %s je %s"
 
-#: ../libpurple/protocols/oscar/oscar.c:4035
+#: ../libpurple/protocols/oscar/oscar.c:4049
 msgid "Account Info"
 msgstr "Podrobnosti o účte"
 
-#: ../libpurple/protocols/oscar/oscar.c:4218
+#: ../libpurple/protocols/oscar/oscar.c:4232
 msgid ""
 "Your IM Image was not sent. You must be Direct Connected to send IM Images."
 msgstr ""
 "Váš obrázok nebol odoslaný. Na odosielanie obrázkov v správach musíte byť "
 "priamo pripojený."
 
-#: ../libpurple/protocols/oscar/oscar.c:4489
+#: ../libpurple/protocols/oscar/oscar.c:4503
 msgid "Unable to set AIM profile."
 msgstr "Nepodarilo sa odoslať AIM profil."
 
-#: ../libpurple/protocols/oscar/oscar.c:4490
+#: ../libpurple/protocols/oscar/oscar.c:4504
 msgid ""
 "You have probably requested to set your profile before the login procedure "
 "completed.  Your profile remains unset; try setting it again when you are "
@@ -8940,7 +8947,7 @@
 "procedúry prihlásenia. Váš profil zostáva nenastavený, skúste ho nastaviť "
 "znovu, keď budete plne pripojený."
 
-#: ../libpurple/protocols/oscar/oscar.c:4504
+#: ../libpurple/protocols/oscar/oscar.c:4518
 #, c-format
 msgid ""
 "The maximum profile length of %d byte has been exceeded.  It has been "
@@ -8958,11 +8965,11 @@
 "Maximálna dĺžka profilu, %d bajty, bola prekročená.  Profil bol automaticky "
 "skrátený."
 
-#: ../libpurple/protocols/oscar/oscar.c:4509
+#: ../libpurple/protocols/oscar/oscar.c:4523
 msgid "Profile too long."
 msgstr "Profil je príliš dlhý."
 
-#: ../libpurple/protocols/oscar/oscar.c:4554
+#: ../libpurple/protocols/oscar/oscar.c:4568
 #, c-format
 msgid ""
 "The maximum away message length of %d byte has been exceeded.  It has been "
@@ -8980,11 +8987,11 @@
 "Maximálna dĺžka správy neprítomnosti, %d bajty, bola prekročená.  Správa "
 "bola automaticky skrátená."
 
-#: ../libpurple/protocols/oscar/oscar.c:4559
+#: ../libpurple/protocols/oscar/oscar.c:4573
 msgid "Away message too long."
 msgstr "Správa neprítomnosti je príliš dlhá."
 
-#: ../libpurple/protocols/oscar/oscar.c:4628
+#: ../libpurple/protocols/oscar/oscar.c:4646
 #, c-format
 msgid ""
 "Could not add the buddy %s because the screen name is invalid.  Screen names "
@@ -8995,17 +9002,17 @@
 "Používateľské mená musia byť v tvare e-mailovej adresy, čísla, alebo musí "
 "byť prvý znak písmeno a ostatné znaky sú písmená, čísla a medzery."
 
-#: ../libpurple/protocols/oscar/oscar.c:4630
-#: ../libpurple/protocols/oscar/oscar.c:5060
-#: ../libpurple/protocols/oscar/oscar.c:5075
+#: ../libpurple/protocols/oscar/oscar.c:4648
+#: ../libpurple/protocols/oscar/oscar.c:5099
+#: ../libpurple/protocols/oscar/oscar.c:5114
 msgid "Unable To Add"
 msgstr "Nepodarilo sa pridať"
 
-#: ../libpurple/protocols/oscar/oscar.c:4739
+#: ../libpurple/protocols/oscar/oscar.c:4767
 msgid "Unable To Retrieve Buddy List"
 msgstr "Nepodarilo sa získať zoznam priateľov"
 
-#: ../libpurple/protocols/oscar/oscar.c:4740
+#: ../libpurple/protocols/oscar/oscar.c:4768
 msgid ""
 "The AIM servers were temporarily unable to send your buddy list.  Your buddy "
 "list is not lost, and will probably become available in a few hours."
@@ -9013,15 +9020,15 @@
 "AIM servery vám dočasne neposlali váš zoznam priateľov.  Váš zoznam "
 "priateľov nie je stratený, a mal by byť znovu dostupný o pár hodín."
 
-#: ../libpurple/protocols/oscar/oscar.c:4922
-#: ../libpurple/protocols/oscar/oscar.c:4924
-#: ../libpurple/protocols/oscar/oscar.c:5140
-#: ../libpurple/protocols/oscar/oscar.c:5141
-#: ../libpurple/protocols/oscar/oscar.c:5146
+#: ../libpurple/protocols/oscar/oscar.c:4950
+#: ../libpurple/protocols/oscar/oscar.c:4952
+#: ../libpurple/protocols/oscar/oscar.c:5179
+#: ../libpurple/protocols/oscar/oscar.c:5180
+#: ../libpurple/protocols/oscar/oscar.c:5185
 msgid "Orphans"
 msgstr "Siroty"
 
-#: ../libpurple/protocols/oscar/oscar.c:5058
+#: ../libpurple/protocols/oscar/oscar.c:5097
 #, c-format
 msgid ""
 "Could not add the buddy %s because you have too many buddies in your buddy "
@@ -9030,17 +9037,17 @@
 "Nepodarilo sa pridať priateľa %s, pretože vo vašom zozname priateľov máte "
 "príliš veľa priateľov.  Odstránte, prosím, jedného a skúste to znovu"
 
-#: ../libpurple/protocols/oscar/oscar.c:5058
-#: ../libpurple/protocols/oscar/oscar.c:5073
+#: ../libpurple/protocols/oscar/oscar.c:5097
+#: ../libpurple/protocols/oscar/oscar.c:5112
 msgid "(no name)"
 msgstr "(bez názvu)"
 
-#: ../libpurple/protocols/oscar/oscar.c:5072
+#: ../libpurple/protocols/oscar/oscar.c:5111
 #, c-format
 msgid "Could not add the buddy %s for an unknown reason."
 msgstr "Nebolo možné pridať priateľa %s z neznámeho dôvodu."
 
-#: ../libpurple/protocols/oscar/oscar.c:5178
+#: ../libpurple/protocols/oscar/oscar.c:5228
 #, c-format
 msgid ""
 "The user %s has given you permission to add you to their buddy list.  Do you "
@@ -9049,22 +9056,22 @@
 "Používateľ %s vám udelil oprávnenie, aby si vás mohol pridať do svojho "
 "zoznamu kamarátov. Chcete pridať jeho do svojho?"
 
-#: ../libpurple/protocols/oscar/oscar.c:5186
+#: ../libpurple/protocols/oscar/oscar.c:5236
 msgid "Authorization Given"
 msgstr "Autorizácia udelená"
 
 #. Granted
-#: ../libpurple/protocols/oscar/oscar.c:5259
+#: ../libpurple/protocols/oscar/oscar.c:5309
 #, c-format
 msgid "The user %s has granted your request to add them to your buddy list."
 msgstr "Používateľ %s vám dovolil pridať ho do vášho zoznamu priateľov."
 
-#: ../libpurple/protocols/oscar/oscar.c:5260
+#: ../libpurple/protocols/oscar/oscar.c:5310
 msgid "Authorization Granted"
 msgstr "Udelená autorizácia"
 
 #. Denied
-#: ../libpurple/protocols/oscar/oscar.c:5263
+#: ../libpurple/protocols/oscar/oscar.c:5313
 #, c-format
 msgid ""
 "The user %s has denied your request to add them to your buddy list for the "
@@ -9075,52 +9082,52 @@
 "nasledujúceho dôvodu:\n"
 "%s"
 
-#: ../libpurple/protocols/oscar/oscar.c:5264
+#: ../libpurple/protocols/oscar/oscar.c:5314
 msgid "Authorization Denied"
 msgstr "Autorizácia zamietnutá"
 
-#: ../libpurple/protocols/oscar/oscar.c:5300
+#: ../libpurple/protocols/oscar/oscar.c:5350
 #: ../libpurple/protocols/toc/toc.c:1371
 msgid "_Exchange:"
 msgstr "_Výmena:"
 
-#: ../libpurple/protocols/oscar/oscar.c:5340
+#: ../libpurple/protocols/oscar/oscar.c:5390
 msgid "Invalid chat name specified."
 msgstr "Bol zadaný chybný názov chatu."
 
-#: ../libpurple/protocols/oscar/oscar.c:5409
+#: ../libpurple/protocols/oscar/oscar.c:5459
 msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
 msgstr ""
 "Váš obrázok nebol odoslaný. V AIM chatoch nie je možné odosielať obrázky."
 
-#: ../libpurple/protocols/oscar/oscar.c:5569
-#: ../libpurple/protocols/oscar/oscar.c:5574
+#: ../libpurple/protocols/oscar/oscar.c:5621
+#: ../libpurple/protocols/oscar/oscar.c:5626
 msgid "Away Message"
 msgstr "Správa o neprítomnosti"
 
-#: ../libpurple/protocols/oscar/oscar.c:5574
+#: ../libpurple/protocols/oscar/oscar.c:5626
 msgid "<i>(retrieving)</i>"
 msgstr "<i>(prijíma sa)</i>"
 
-#: ../libpurple/protocols/oscar/oscar.c:5774
+#: ../libpurple/protocols/oscar/oscar.c:5826
 msgid "iTunes Music Store Link"
 msgstr "Odkaz na hudobný obchod iTunes"
 
-#: ../libpurple/protocols/oscar/oscar.c:5882
+#: ../libpurple/protocols/oscar/oscar.c:5934
 #, c-format
 msgid "Buddy Comment for %s"
 msgstr "Komentár priateľa %s"
 
-#: ../libpurple/protocols/oscar/oscar.c:5883
+#: ../libpurple/protocols/oscar/oscar.c:5935
 msgid "Buddy Comment:"
 msgstr "Komentár priateľa:"
 
-#: ../libpurple/protocols/oscar/oscar.c:5930
+#: ../libpurple/protocols/oscar/oscar.c:5982
 #, c-format
 msgid "You have selected to open a Direct IM connection with %s."
 msgstr "Rozhodli ste sa otvoriť Priame IM pripojenie s používateľom %s."
 
-#: ../libpurple/protocols/oscar/oscar.c:5934
+#: ../libpurple/protocols/oscar/oscar.c:5986
 msgid ""
 "Because this reveals your IP address, it may be considered a security risk.  "
 "Do you wish to continue?"
@@ -9128,65 +9135,65 @@
 "Táto akcia odhalí vašu IP adresu, a preto môže byť hodnotená ako "
 "bezpečnostné riziko.  Chcete pokračovať?"
 
-#: ../libpurple/protocols/oscar/oscar.c:5940
+#: ../libpurple/protocols/oscar/oscar.c:5992
 #: ../libpurple/protocols/oscar/peer.c:1045
 msgid "C_onnect"
 msgstr "Prip_ojiť"
 
-#: ../libpurple/protocols/oscar/oscar.c:5975
+#: ../libpurple/protocols/oscar/oscar.c:6027
 msgid "Get AIM Info"
 msgstr "Získať info AIM"
 
-#: ../libpurple/protocols/oscar/oscar.c:5981
+#: ../libpurple/protocols/oscar/oscar.c:6033
 msgid "Edit Buddy Comment"
 msgstr "Upraviť komentár priateľa"
 
-#: ../libpurple/protocols/oscar/oscar.c:5989
+#: ../libpurple/protocols/oscar/oscar.c:6041
 msgid "Get Status Msg"
 msgstr "Získať správu o stave"
 
-#: ../libpurple/protocols/oscar/oscar.c:6002
+#: ../libpurple/protocols/oscar/oscar.c:6054
 msgid "Direct IM"
 msgstr "Priama rýchla správa"
 
-#: ../libpurple/protocols/oscar/oscar.c:6024
+#: ../libpurple/protocols/oscar/oscar.c:6076
 msgid "Re-request Authorization"
 msgstr "Znovu požiadať o autorizáciu"
 
-#: ../libpurple/protocols/oscar/oscar.c:6083
+#: ../libpurple/protocols/oscar/oscar.c:6135
 msgid "Require authorization"
 msgstr "Vyžadovať autorizáciu"
 
-#: ../libpurple/protocols/oscar/oscar.c:6086
+#: ../libpurple/protocols/oscar/oscar.c:6138
 msgid "Web aware (enabling this will cause you to receive SPAM!)"
 msgstr "Web aware (zapnutie tejto možnosti spôsobí, že budete dostávať SPAM!)"
 
-#: ../libpurple/protocols/oscar/oscar.c:6091
+#: ../libpurple/protocols/oscar/oscar.c:6143
 msgid "ICQ Privacy Options"
 msgstr "Nastavenie súkromia ICQ"
 
-#: ../libpurple/protocols/oscar/oscar.c:6110
+#: ../libpurple/protocols/oscar/oscar.c:6162
 msgid "The new formatting is invalid."
 msgstr "Nové formátovanie je chybné."
 
-#: ../libpurple/protocols/oscar/oscar.c:6111
+#: ../libpurple/protocols/oscar/oscar.c:6163
 msgid "Screen name formatting can change only capitalization and whitespace."
 msgstr ""
 "Formátovanie používateľského mena smie obsahovať len písmená a medzery."
 
-#: ../libpurple/protocols/oscar/oscar.c:6164
+#: ../libpurple/protocols/oscar/oscar.c:6216
 msgid "Change Address To:"
 msgstr "Zmeniť adresu na:"
 
-#: ../libpurple/protocols/oscar/oscar.c:6210
+#: ../libpurple/protocols/oscar/oscar.c:6262
 msgid "<i>you are not waiting for authorization</i>"
 msgstr "<i>nečakáte na autorizáciu</i>"
 
-#: ../libpurple/protocols/oscar/oscar.c:6213
+#: ../libpurple/protocols/oscar/oscar.c:6265
 msgid "You are awaiting authorization from the following buddies"
 msgstr "Očakávate autorizáciu od nasledujúcich priateľov"
 
-#: ../libpurple/protocols/oscar/oscar.c:6214
+#: ../libpurple/protocols/oscar/oscar.c:6266
 msgid ""
 "You can re-request authorization from these buddies by right-clicking on "
 "them and selecting \"Re-request Authorization.\""
@@ -9194,73 +9201,73 @@
 "Týchto priateľov môžete znovu požiadať o autorizáciu, keď na nich kliknete "
 "pravým tlačidlom a vyberiete možnosť „Znovu požiadať o autorizáciu“."
 
-#: ../libpurple/protocols/oscar/oscar.c:6231
+#: ../libpurple/protocols/oscar/oscar.c:6283
 msgid "Find Buddy by E-Mail"
 msgstr "Nájsť priateľa podľa E-mailu"
 
-#: ../libpurple/protocols/oscar/oscar.c:6232
+#: ../libpurple/protocols/oscar/oscar.c:6284
 msgid "Search for a buddy by e-mail address"
 msgstr "Vyhľadávať priateľov podľa e-mailovej adresy"
 
-#: ../libpurple/protocols/oscar/oscar.c:6233
+#: ../libpurple/protocols/oscar/oscar.c:6285
 msgid "Type the e-mail address of the buddy you are searching for."
 msgstr "Zadajte e-mailovú adresu priateľa, ktorého hľadáte."
 
-#: ../libpurple/protocols/oscar/oscar.c:6236
+#: ../libpurple/protocols/oscar/oscar.c:6288
 msgid "_Search"
 msgstr "_Hľadať"
 
-#: ../libpurple/protocols/oscar/oscar.c:6394
+#: ../libpurple/protocols/oscar/oscar.c:6446
 msgid "Set User Info (URL)..."
 msgstr "Nastaviť podrobnosti používateľa (URL)..."
 
-#: ../libpurple/protocols/oscar/oscar.c:6405
+#: ../libpurple/protocols/oscar/oscar.c:6457
 msgid "Change Password (URL)"
 msgstr "Zmeniť heslo (URL)"
 
-#: ../libpurple/protocols/oscar/oscar.c:6409
+#: ../libpurple/protocols/oscar/oscar.c:6461
 msgid "Configure IM Forwarding (URL)"
 msgstr "Konfiguravať preposielanie správ (URL)"
 
 #. ICQ actions
-#: ../libpurple/protocols/oscar/oscar.c:6419
+#: ../libpurple/protocols/oscar/oscar.c:6471
 msgid "Set Privacy Options..."
 msgstr "Nastaviť možnosti súkromia..."
 
 #. AIM actions
-#: ../libpurple/protocols/oscar/oscar.c:6426
+#: ../libpurple/protocols/oscar/oscar.c:6478
 msgid "Confirm Account"
 msgstr "Potvrdiť účet"
 
-#: ../libpurple/protocols/oscar/oscar.c:6430
+#: ../libpurple/protocols/oscar/oscar.c:6482
 msgid "Display Currently Registered E-Mail Address"
 msgstr "Zobraziť momentálne registrovanú e-maiovú adresu"
 
-#: ../libpurple/protocols/oscar/oscar.c:6434
+#: ../libpurple/protocols/oscar/oscar.c:6486
 msgid "Change Currently Registered E-Mail Address..."
 msgstr "Zmeniť momentálne registrovanú e-maiovú adresu..."
 
-#: ../libpurple/protocols/oscar/oscar.c:6441
+#: ../libpurple/protocols/oscar/oscar.c:6493
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Zobraziť priateľov, ktorí čakajú na autorizáciu"
 
-#: ../libpurple/protocols/oscar/oscar.c:6447
+#: ../libpurple/protocols/oscar/oscar.c:6499
 msgid "Search for Buddy by E-Mail Address..."
 msgstr "Hľadať priateľa podľa e-maiovej adresy..."
 
-#: ../libpurple/protocols/oscar/oscar.c:6452
+#: ../libpurple/protocols/oscar/oscar.c:6504
 msgid "Search for Buddy by Information"
 msgstr "Hľadať priateľa podľa podrobností"
 
-#: ../libpurple/protocols/oscar/oscar.c:6520
+#: ../libpurple/protocols/oscar/oscar.c:6572
 msgid "Use recent buddies group"
 msgstr "Použiť naposledy použitú skupinu kamarátov"
 
-#: ../libpurple/protocols/oscar/oscar.c:6523
+#: ../libpurple/protocols/oscar/oscar.c:6575
 msgid "Show how long you have been idle"
 msgstr "Zobrazí ako dlho ste boli nečinní"
 
-#: ../libpurple/protocols/oscar/oscar.c:6678
+#: ../libpurple/protocols/oscar/oscar.c:6730
 msgid ""
 "Always use ICQ proxy server for file transfers\n"
 "(slower, but does not reveal your IP address)"
@@ -9279,7 +9286,6 @@
 msgstr "Pokúšame sa pripojiť ku %s:%hu."
 
 #: ../libpurple/protocols/oscar/peer.c:856
-#, c-format
 msgid "Attempting to connect via proxy server."
 msgstr "Pokúšame sa pripojiť cez proxy server."
 
@@ -9745,7 +9751,7 @@
 msgid "Error requesting login token"
 msgstr "Chyba pri požadovaní prihlasovacieho tokenu"
 
-#: ../libpurple/protocols/qq/login_logout.c:486
+#: ../libpurple/protocols/qq/login_logout.c:488
 msgid "Unable to login, check debug log"
 msgstr "Nepodarilo sa pripojiť, skontrolujte ladiaci záznam"
 
@@ -10121,7 +10127,7 @@
 msgid "Send TEST Announcement"
 msgstr "Poslať ohlásenie TEST"
 
-#: ../libpurple/protocols/sametime/sametime.c:3586 ../pidgin/gtkconv.c:4354
+#: ../libpurple/protocols/sametime/sametime.c:3586 ../pidgin/gtkconv.c:4417
 msgid "Topic:"
 msgstr "Téma:"
 
@@ -10146,7 +10152,7 @@
 msgid "No Sametime Community Server Specified"
 msgstr "Nebol určený žiadny server komunity rovnakého času"
 
-#: ../libpurple/protocols/sametime/sametime.c:3644 ../pidgin/gtkblist.c:4041
+#: ../libpurple/protocols/sametime/sametime.c:3644 ../pidgin/gtkblist.c:4323
 msgid "Connect"
 msgstr "Pripojiť"
 
@@ -10200,10 +10206,6 @@
 "Identifikátoru „%s“ nevyhovujú žiadni používatelia vo vašej Sametime "
 "komunite. Tento záznam bol odstránený z vášho zoznamu priateľov."
 
-#: ../libpurple/protocols/sametime/sametime.c:4425
-msgid "Unable to add user"
-msgstr "Nebolo možné priadať používateľa"
-
 #: ../libpurple/protocols/sametime/sametime.c:5011
 #, c-format
 msgid ""
@@ -10325,7 +10327,7 @@
 "ho pridať do vášho zoznamu priateľov, alebo mu odoslať správu pomocou "
 "tlačidiel, ktoré sú nižšie."
 
-#: ../libpurple/protocols/sametime/sametime.c:5538 ../pidgin/gtknotify.c:756
+#: ../libpurple/protocols/sametime/sametime.c:5538 ../pidgin/gtknotify.c:762
 msgid "Search Results"
 msgstr "Výsledky vyhľadávania"
 
@@ -10902,7 +10904,6 @@
 
 #: ../libpurple/protocols/silc/chat.c:153
 #: ../libpurple/protocols/silc10/chat.c:152
-#, c-format
 msgid "<br><b>Channel Modes:</b> "
 msgstr "<br><b>Režimy kanála:</b> "
 
@@ -10941,7 +10942,6 @@
 
 #: ../libpurple/protocols/silc/chat.c:435
 #: ../libpurple/protocols/silc10/chat.c:413
-#, c-format
 msgid ""
 "Channel authentication is used to secure the channel from unauthorized "
 "access. The authentication may be based on passphrase and digital "
@@ -11563,7 +11563,6 @@
 msgstr "Pripája sa na SILC server"
 
 #: ../libpurple/protocols/silc/silc.c:352
-#, c-format
 msgid "Could not load SILC key pair"
 msgstr "Nedá sa načítať pár kľúčov SILC"
 
@@ -11592,8 +11591,7 @@
 msgstr "Vaša aktuálna nálada"
 
 #: ../libpurple/protocols/silc/silc.c:741
-#: ../libpurple/protocols/silc10/silc.c:652 ../pidgin/gtkprefs.c:1641
-#, c-format
+#: ../libpurple/protocols/silc10/silc.c:652 ../pidgin/gtkprefs.c:1643
 msgid "Normal"
 msgstr "Normálna"
 
@@ -11988,7 +11986,7 @@
 msgstr "Protokol Secure Internet Live Conferencing (SILC)"
 
 #: ../libpurple/protocols/silc/silc.c:1910
-#: ../libpurple/protocols/silc10/silc.c:1853 ../pidgin/gtkprefs.c:2036
+#: ../libpurple/protocols/silc10/silc.c:1853 ../pidgin/gtkprefs.c:2038
 msgid "Network"
 msgstr "Sieť"
 
@@ -12166,7 +12164,7 @@
 #: ../libpurple/protocols/silc/wb.c:284 ../libpurple/protocols/silc10/wb.c:284
 #, c-format
 msgid "%s sent message to whiteboard. Would you like to open the whiteboard?"
-msgstr "Používateľ %s odoslal správu na tabuľu. Želáte si otvoriť tabuľu?"
+msgstr "Používateľ %s odoslal správu na tabuľu. Chcete otvoriť tabuľu?"
 
 #: ../libpurple/protocols/silc/wb.c:288 ../libpurple/protocols/silc10/wb.c:288
 #, c-format
@@ -12174,7 +12172,7 @@
 "%s sent message to whiteboard on %s channel. Would you like to open the "
 "whiteboard?"
 msgstr ""
-"Používateľ %s odoslal správu na tabuľu na kanáli %s. Želáte si otvoriť "
+"Používateľ %s odoslal správu na tabuľu na kanáli %s. Chcete otvoriť "
 "tabuľu?"
 
 #: ../libpurple/protocols/silc/wb.c:302 ../libpurple/protocols/silc10/wb.c:302
@@ -12186,53 +12184,43 @@
 msgstr "Nie sú dostupné žiadne štatistiky"
 
 #: ../libpurple/protocols/silc10/ops.c:1931
-#, c-format
 msgid "Failure: Version mismatch, upgrade your client"
 msgstr "Zlyhanie: Nezhoda verzií, aktualizujte vášho klienta"
 
 #: ../libpurple/protocols/silc10/ops.c:1934
-#, c-format
 msgid "Failure: Remote does not trust/support your public key"
 msgstr ""
 "Zlyhanie: Druhá strana nepodroruje alebo nedôveruje vášmu verejnému kľúču"
 
 #: ../libpurple/protocols/silc10/ops.c:1937
-#, c-format
 msgid "Failure: Remote does not support proposed KE group"
 msgstr "Zlyhanie: Druhá strana nepodroruje vyžiadanú KE skupinu"
 
 #: ../libpurple/protocols/silc10/ops.c:1940
-#, c-format
 msgid "Failure: Remote does not support proposed cipher"
 msgstr "Zlyhanie: Druhá strana nepodroruje vyžiadanú šifru"
 
 #: ../libpurple/protocols/silc10/ops.c:1943
-#, c-format
 msgid "Failure: Remote does not support proposed PKCS"
 msgstr "Zlyhanie: Druhá strana nepodroruje vyžiadané PKCS"
 
 #: ../libpurple/protocols/silc10/ops.c:1946
-#, c-format
 msgid "Failure: Remote does not support proposed hash function"
 msgstr "Chyba: Vzdialený nepodporuje ponúknutú hašovaciu funkciu"
 
 #: ../libpurple/protocols/silc10/ops.c:1949
-#, c-format
 msgid "Failure: Remote does not support proposed HMAC"
 msgstr "Chyba: Vzdialený nepodporuje ponúknutú HMAC"
 
 #: ../libpurple/protocols/silc10/ops.c:1951
-#, c-format
 msgid "Failure: Incorrect signature"
 msgstr "Chyba: Nesprávny podpis"
 
 #: ../libpurple/protocols/silc10/ops.c:1953
-#, c-format
 msgid "Failure: Invalid cookie"
 msgstr "Chyba: Neplatný koláčik (cookie)"
 
 #: ../libpurple/protocols/silc10/ops.c:1964
-#, c-format
 msgid "Failure: Authentication failed"
 msgstr "Chyba: Zlyhala antentifikácia"
 
@@ -12259,31 +12247,30 @@
 msgstr "Nepodarilo sa zapisovať"
 
 #: ../libpurple/protocols/simple/simple.c:438
-#: ../libpurple/protocols/simple/simple.c:1529
+#: ../libpurple/protocols/simple/simple.c:1531
 msgid "Could not connect"
 msgstr "Nepodarilo sa pripojiť"
 
-#: ../libpurple/protocols/simple/simple.c:1059
-#, fuzzy
+#: ../libpurple/protocols/simple/simple.c:1061
 msgid "Unknown server response."
-msgstr "Neznámy dôvod."
-
-#: ../libpurple/protocols/simple/simple.c:1563
-#: ../libpurple/protocols/simple/simple.c:1605
-#: ../libpurple/protocols/simple/simple.c:1618
-#: ../libpurple/protocols/simple/simple.c:1669
+msgstr "Neznáma odpoveď serveru."
+
+#: ../libpurple/protocols/simple/simple.c:1565
+#: ../libpurple/protocols/simple/simple.c:1607
+#: ../libpurple/protocols/simple/simple.c:1620
+#: ../libpurple/protocols/simple/simple.c:1671
 msgid "Could not create listen socket"
 msgstr "Nepodarilo sa vytvoriť socket pre príjem"
 
-#: ../libpurple/protocols/simple/simple.c:1586
+#: ../libpurple/protocols/simple/simple.c:1588
 msgid "Couldn't resolve host"
 msgstr "Nebolo možné preložiť názov hostiteľa"
 
-#: ../libpurple/protocols/simple/simple.c:1677
+#: ../libpurple/protocols/simple/simple.c:1679
 msgid "Could not resolve hostname"
 msgstr "Nebolo možné previesť názov hostiteľa na IP"
 
-#: ../libpurple/protocols/simple/simple.c:1694
+#: ../libpurple/protocols/simple/simple.c:1696
 msgid "SIP screen names may not contain whitespaces or @ symbols"
 msgstr "Používateľské mená SIP nemôžu obsahovať medzery alebo znaky @"
 
@@ -12295,36 +12282,36 @@
 #. *< id
 #. *< name
 #. *< version
-#: ../libpurple/protocols/simple/simple.c:1870
+#: ../libpurple/protocols/simple/simple.c:1872
 msgid "SIP/SIMPLE Protocol Plugin"
 msgstr "Modul protokolu SIP/SIMPLE"
 
 #. *  summary
-#: ../libpurple/protocols/simple/simple.c:1871
+#: ../libpurple/protocols/simple/simple.c:1873
 msgid "The SIP/SIMPLE Protocol Plugin"
 msgstr "Modul pre protokol SIP/SIMPLE"
 
-#: ../libpurple/protocols/simple/simple.c:1899
+#: ../libpurple/protocols/simple/simple.c:1901
 msgid "Publish status (note: everyone may watch you)"
 msgstr "Zverejniť stav (poznámka: ktokoľvek vás môže sledovať)"
 
-#: ../libpurple/protocols/simple/simple.c:1905
-msgid "Use UDP"
-msgstr "Používať UDP"
-
 #: ../libpurple/protocols/simple/simple.c:1907
+msgid "Use UDP"
+msgstr "Používať UDP"
+
+#: ../libpurple/protocols/simple/simple.c:1909
 msgid "Use proxy"
 msgstr "Používať proxy"
 
-#: ../libpurple/protocols/simple/simple.c:1909
+#: ../libpurple/protocols/simple/simple.c:1911
 msgid "Proxy"
 msgstr "Proxy"
 
-#: ../libpurple/protocols/simple/simple.c:1911
+#: ../libpurple/protocols/simple/simple.c:1913
 msgid "Auth User"
 msgstr "Autentifikačný používateľ"
 
-#: ../libpurple/protocols/simple/simple.c:1913
+#: ../libpurple/protocols/simple/simple.c:1915
 msgid "Auth Domain"
 msgstr "Autentifikačná doména"
 
@@ -12369,7 +12356,6 @@
 msgstr "Varovanie na %s nie je dovolené."
 
 #: ../libpurple/protocols/toc/toc.c:503
-#, c-format
 msgid "A message has been dropped, you are exceeding the server speed limit."
 msgstr "Správa bola zrušená, prekračujete rýchlostný limit servera"
 
@@ -12395,47 +12381,38 @@
 "Prišli ste o správu od používateľa %s, pretože bola odoslaná príliš rýchlo."
 
 #: ../libpurple/protocols/toc/toc.c:518
-#, c-format
 msgid "Failure."
 msgstr "Zlyhanie."
 
 #: ../libpurple/protocols/toc/toc.c:521
-#, c-format
 msgid "Too many matches."
 msgstr "Príliš veľa výskytov."
 
 #: ../libpurple/protocols/toc/toc.c:524
-#, c-format
 msgid "Need more qualifiers."
 msgstr "Vyžaduje viac parametrov."
 
 #: ../libpurple/protocols/toc/toc.c:527
-#, c-format
 msgid "Dir service temporarily unavailable."
 msgstr "Služba dir je dočasne nedostupná"
 
 #: ../libpurple/protocols/toc/toc.c:530
-#, c-format
 msgid "E-mail lookup restricted."
 msgstr "Vyhľadávanie e-mailu obmedzené."
 
 #: ../libpurple/protocols/toc/toc.c:533
-#, c-format
 msgid "Keyword ignored."
 msgstr "Kľúčové slovo bolo ignorované."
 
 #: ../libpurple/protocols/toc/toc.c:536
-#, c-format
 msgid "No keywords."
 msgstr "Žiadne kľúče."
 
 #: ../libpurple/protocols/toc/toc.c:539
-#, c-format
 msgid "User has no directory information."
 msgstr "Používateľ nemá žiadne podrobnosti v adresári."
 
 #: ../libpurple/protocols/toc/toc.c:543
-#, c-format
 msgid "Country not supported."
 msgstr "Krajina nie je podporovaná."
 
@@ -12445,24 +12422,20 @@
 msgstr "Neznáme zlyhanie: %s."
 
 #: ../libpurple/protocols/toc/toc.c:549
-#, c-format
 msgid "Incorrect screen name or password."
 msgstr "Nesprávne používateľské meno alebo heslo."
 
 #: ../libpurple/protocols/toc/toc.c:552
-#, c-format
 msgid "The service is temporarily unavailable."
 msgstr "Služba je dočasne nedostupná."
 
 #: ../libpurple/protocols/toc/toc.c:555
-#, c-format
 msgid "Your warning level is currently too high to log in."
 msgstr ""
 "Vaša úroveň upozornenia je momentálne príliš vysoká na to, aby ste sa mohli "
 "prihlásiť."
 
 #: ../libpurple/protocols/toc/toc.c:558
-#, c-format
 msgid ""
 "You have been connecting and disconnecting too frequently.  Wait ten minutes "
 "and try again.  If you continue to try, you will need to wait even longer."
@@ -12500,8 +12473,8 @@
 msgid "Password Change Successful"
 msgstr "Heslo bolo úspešne zmenené"
 
-#: ../libpurple/protocols/toc/toc.c:1366 ../pidgin/gtkblist.c:5582
-#: ../pidgin/gtkblist.c:5932
+#: ../libpurple/protocols/toc/toc.c:1366 ../pidgin/gtkblist.c:5871
+#: ../pidgin/gtkblist.c:6227
 msgid "_Group:"
 msgstr "_Skupina:"
 
@@ -12568,25 +12541,25 @@
 msgid "TOC Protocol Plugin"
 msgstr "Modul protokolu TOC"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:782
+#: ../libpurple/protocols/yahoo/yahoo.c:784
 #, c-format
 msgid "%s has sent you a webcam invite, which is not yet supported."
 msgstr "%s vám poslal pozvánku na webkameru, ktorá zatiaľ nie je podporovaná."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:838
+#: ../libpurple/protocols/yahoo/yahoo.c:840
 msgid "Your Yahoo! message did not get sent."
 msgstr "Vaša Yahoo! správa nebola odoslaná."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:960
+#: ../libpurple/protocols/yahoo/yahoo.c:962
 #, c-format
 msgid "Yahoo! system message for %s:"
 msgstr "Systémová správa Yahoo! pre %s:"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:1029
+#: ../libpurple/protocols/yahoo/yahoo.c:1031
 msgid "Authorization denied message:"
 msgstr "Správa odmietnutia autorizácie"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:1047
+#: ../libpurple/protocols/yahoo/yahoo.c:1049
 #, c-format
 msgid ""
 "%s has (retroactively) denied your request to add them to your list for the "
@@ -12595,18 +12568,18 @@
 "Používateľ %s (retroaktívne) zamietol vašu žiadosť o jeho pridanie do vášho "
 "zoznamu z nasledujúceho dôvodu: %s."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:1050
+#: ../libpurple/protocols/yahoo/yahoo.c:1052
 #, c-format
 msgid "%s has (retroactively) denied your request to add them to your list."
 msgstr ""
 "Používateľ %s (retroaktívne) zamietol vašu žiadosť o jeho pridanie do vášho "
 "zoznamu."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:1052
+#: ../libpurple/protocols/yahoo/yahoo.c:1054
 msgid "Add buddy rejected"
 msgstr "Pridanie kamaráta bolo odmietnuté"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:1994
+#: ../libpurple/protocols/yahoo/yahoo.c:1996
 #, c-format
 msgid ""
 "The Yahoo server has requested the use of an unrecognized authentication "
@@ -12616,11 +12589,11 @@
 "Yahoo server vyžaduje neznámy spôsob autentifikácie. Zrejme sa nebude dať "
 "úspešne prihlásiť na Yahoo.  Na adrese %s skontrolujte možnosť aktualizácie."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:1997
+#: ../libpurple/protocols/yahoo/yahoo.c:1999
 msgid "Failed Yahoo! Authentication"
 msgstr "Zlyhala Yahoo! autentifikácia"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2063
+#: ../libpurple/protocols/yahoo/yahoo.c:2065
 #, c-format
 msgid ""
 "You have tried to ignore %s, but the user is on your buddy list.  Clicking "
@@ -12630,51 +12603,51 @@
 "vašom zozname priateľov. Kliknutím „Áno“ odstránite používateľa zo zoznamu "
 "priateľov a ignorujete ho."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2066
+#: ../libpurple/protocols/yahoo/yahoo.c:2068
 msgid "Ignore buddy?"
 msgstr "Ignorovať priateľa?"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2129
+#: ../libpurple/protocols/yahoo/yahoo.c:2131
 msgid "Your account is locked, please log in to the Yahoo! website."
 msgstr "Váš účet je uzamknutý, prihláste sa, prosím, na webstránke Yahoo!."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2132
+#: ../libpurple/protocols/yahoo/yahoo.c:2134
 #, c-format
 msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
 msgstr ""
 "Neznáme číslo chyby %d. Prihlásenie sa na stránke Yahoo! to môže napraviť."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2186
+#: ../libpurple/protocols/yahoo/yahoo.c:2188
 #, c-format
 msgid "Could not add buddy %s to group %s to the server list on account %s."
 msgstr ""
 "Nepodarilo sa pridať kamaráta %s do skupiny %s do zoznamu na serveri na účte "
 "%s."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2189
+#: ../libpurple/protocols/yahoo/yahoo.c:2191
 msgid "Could not add buddy to server list"
 msgstr "Nepodarilo sa pridať priateľa do serverového zoznamu"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2308
+#: ../libpurple/protocols/yahoo/yahoo.c:2310
 #, c-format
 msgid "[ Audible %s/%s/%s.swf ] %s"
 msgstr "[ Počúvateľné %s/%s/%s.swf ] %s"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2651
+#: ../libpurple/protocols/yahoo/yahoo.c:2653
 msgid "Received unexpected HTTP response from server."
 msgstr "Zo servera bola prijatá neočakávaná HTTP odpoveď."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2675
-#: ../libpurple/protocols/yahoo/yahoo.c:2861
-#: ../libpurple/protocols/yahoo/yahoo.c:2964
-#: ../libpurple/protocols/yahoo/yahoo.c:2974
+#: ../libpurple/protocols/yahoo/yahoo.c:2677
+#: ../libpurple/protocols/yahoo/yahoo.c:2863
+#: ../libpurple/protocols/yahoo/yahoo.c:2966
+#: ../libpurple/protocols/yahoo/yahoo.c:2976
 #: ../libpurple/protocols/yahoo/yahoochat.c:1514
 #: ../libpurple/protocols/yahoo/yahoochat.c:1584
 #: ../libpurple/protocols/yahoo/ycht.c:585
 msgid "Connection problem"
 msgstr "Problém s pripojením"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2701
+#: ../libpurple/protocols/yahoo/yahoo.c:2703
 #, c-format
 msgid ""
 "Lost connection with %s:\n"
@@ -12683,7 +12656,7 @@
 "Prerušené pripojenie ku %s:\n"
 "%s"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2726
+#: ../libpurple/protocols/yahoo/yahoo.c:2728
 #, c-format
 msgid ""
 "Could not establish a connection with %s:\n"
@@ -12692,115 +12665,104 @@
 "Nebolo možné nadviazať spojenie s %s:\n"
 "%s"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3081
-#: ../libpurple/protocols/yahoo/yahoo.c:3767
+#: ../libpurple/protocols/yahoo/yahoo.c:3083
+#: ../libpurple/protocols/yahoo/yahoo.c:3769
 msgid "Not at Home"
 msgstr "Nie som doma"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3083
-#: ../libpurple/protocols/yahoo/yahoo.c:3770
+#: ../libpurple/protocols/yahoo/yahoo.c:3085
+#: ../libpurple/protocols/yahoo/yahoo.c:3772
 msgid "Not at Desk"
 msgstr "Nie som pri stole"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3085
-#: ../libpurple/protocols/yahoo/yahoo.c:3773
+#: ../libpurple/protocols/yahoo/yahoo.c:3087
+#: ../libpurple/protocols/yahoo/yahoo.c:3775
 msgid "Not in Office"
 msgstr "Nie som v kancelárii"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3089
-#: ../libpurple/protocols/yahoo/yahoo.c:3779
+#: ../libpurple/protocols/yahoo/yahoo.c:3091
+#: ../libpurple/protocols/yahoo/yahoo.c:3781
 msgid "On Vacation"
 msgstr "Na dovolenke"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3093
-#: ../libpurple/protocols/yahoo/yahoo.c:3785
+#: ../libpurple/protocols/yahoo/yahoo.c:3095
+#: ../libpurple/protocols/yahoo/yahoo.c:3787
 msgid "Stepped Out"
 msgstr "Vyrazil si von"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3186
-#: ../libpurple/protocols/yahoo/yahoo.c:3216
+#: ../libpurple/protocols/yahoo/yahoo.c:3188
+#: ../libpurple/protocols/yahoo/yahoo.c:3218
 msgid "Not on server list"
 msgstr "Nie je na zozname serverov"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3233
-#: ../libpurple/protocols/yahoo/yahoo.c:3291
+#: ../libpurple/protocols/yahoo/yahoo.c:3235
+#: ../libpurple/protocols/yahoo/yahoo.c:3293
 msgid "Appear Online"
 msgstr "Javí sa pripojený"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3236
-#: ../libpurple/protocols/yahoo/yahoo.c:3312
+#: ../libpurple/protocols/yahoo/yahoo.c:3238
+#: ../libpurple/protocols/yahoo/yahoo.c:3314
 msgid "Appear Permanently Offline"
 msgstr "Javí sa trvale odpojený"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3254
+#: ../libpurple/protocols/yahoo/yahoo.c:3256
 msgid "Presence"
 msgstr "Prítomnosť"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3297
+#: ../libpurple/protocols/yahoo/yahoo.c:3299
 msgid "Appear Offline"
 msgstr "Vyzerať odpojený"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3306
+#: ../libpurple/protocols/yahoo/yahoo.c:3308
 msgid "Don't Appear Permanently Offline"
 msgstr "Nevyzerať sa trvale odpojený"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3354
+#: ../libpurple/protocols/yahoo/yahoo.c:3356
 msgid "Join in Chat"
 msgstr "Pripojiť sa k rozhovoru"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3360
+#: ../libpurple/protocols/yahoo/yahoo.c:3362
 msgid "Initiate Conference"
 msgstr "Založiť konferenciu"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3388
+#: ../libpurple/protocols/yahoo/yahoo.c:3390
 msgid "Presence Settings"
 msgstr "Nastavenie prítomnosti"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3394
+#: ../libpurple/protocols/yahoo/yahoo.c:3396
 msgid "Start Doodling"
 msgstr "Začať Čmárať"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3495
+#: ../libpurple/protocols/yahoo/yahoo.c:3497
 msgid "Activate which ID?"
 msgstr "Aktivovať s ID?"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3506
-#, fuzzy
+#: ../libpurple/protocols/yahoo/yahoo.c:3508
 msgid "Join whom in chat?"
 msgstr "S kým sa spojiť v chate?"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3518
+#: ../libpurple/protocols/yahoo/yahoo.c:3520
 msgid "Activate ID..."
 msgstr "Aktivovať ID..."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3522
+#: ../libpurple/protocols/yahoo/yahoo.c:3524
 msgid "Join User in Chat..."
 msgstr "Spojiť sa s používateľom v chate..."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3527
+#: ../libpurple/protocols/yahoo/yahoo.c:3529
 msgid "Open Inbox"
 msgstr "Otvoriť schránku Inbox"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4119
-#, fuzzy
-msgid "Buzz"
-msgstr "bzzz"
-
-#: ../libpurple/protocols/yahoo/yahoo.c:4121
-#, fuzzy, c-format
-msgid "Buzzing %s..."
-msgstr "Poslané bzzz"
-
-#: ../libpurple/protocols/yahoo/yahoo.c:4136
+#: ../libpurple/protocols/yahoo/yahoo.c:4138
 msgid "join &lt;room&gt;:  Join a chat room on the Yahoo network"
 msgstr ""
 "join &lt;miestnosť&gt;:  Vstúpiť do chatovacej miestnosti na sieti Yahoo"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4141
+#: ../libpurple/protocols/yahoo/yahoo.c:4143
 msgid "list: List rooms on the Yahoo network"
 msgstr "list: Vypísať zoznam miestností na sieti Yahoo"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4149
+#: ../libpurple/protocols/yahoo/yahoo.c:4151
 msgid "doodle: Request user to start a Doodle session"
 msgstr "Čmáranie: Požiadať používateľa o reláciu Čmáranie"
 
@@ -12814,56 +12776,56 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/yahoo/yahoo.c:4358
 #: ../libpurple/protocols/yahoo/yahoo.c:4360
+#: ../libpurple/protocols/yahoo/yahoo.c:4362
 msgid "Yahoo Protocol Plugin"
 msgstr "Modul protokolu Yahoo"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4383
+#: ../libpurple/protocols/yahoo/yahoo.c:4385
 msgid "Yahoo Japan"
 msgstr "Yahoo Japonsko"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4386
+#: ../libpurple/protocols/yahoo/yahoo.c:4388
 msgid "Pager server"
 msgstr "Pager server"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4389
+#: ../libpurple/protocols/yahoo/yahoo.c:4391
 msgid "Japan Pager server"
 msgstr "Pager server pre Japonsko"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4392
+#: ../libpurple/protocols/yahoo/yahoo.c:4394
 msgid "Pager port"
 msgstr "Port pagera"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4395
+#: ../libpurple/protocols/yahoo/yahoo.c:4397
 msgid "File transfer server"
 msgstr "Server prenosu súborov"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4398
+#: ../libpurple/protocols/yahoo/yahoo.c:4400
 msgid "Japan file transfer server"
 msgstr "Japonský server prenosu súborov"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4401
+#: ../libpurple/protocols/yahoo/yahoo.c:4403
 msgid "File transfer port"
 msgstr "Port prenosu súborov"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4404
+#: ../libpurple/protocols/yahoo/yahoo.c:4406
 msgid "Chat room locale"
 msgstr "Jazyk chatovacej miestnosti"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4407
+#: ../libpurple/protocols/yahoo/yahoo.c:4409
 msgid "Ignore conference and chatroom invitations"
 msgstr "Ignorovať pozvánky na konferencie a chatovacie miestnosti"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4415
+#: ../libpurple/protocols/yahoo/yahoo.c:4417
 msgid "Chat room list URL"
 msgstr "URL zoznamu miestností chatu"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4418
+#: ../libpurple/protocols/yahoo/yahoo.c:4420
 msgid "Yahoo Chat server"
 msgstr "Server Yahoo chatu"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4421
+#: ../libpurple/protocols/yahoo/yahoo.c:4423
 msgid "Yahoo Chat port"
 msgstr "Port Yahoo chatu"
 
@@ -12906,7 +12868,7 @@
 "If you wish to view this profile, you will need to visit this link in your "
 "web browser:"
 msgstr ""
-"Ak si želáte vidieť tento profil, budete musieť navštíviť tento odkaz vo "
+"Ak chcete zobraziť tento profil, budete musieť navštíviť tento odkaz vo "
 "vašom webovom prehliadači."
 
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1034
@@ -13301,14 +13263,14 @@
 #: ../libpurple/server.c:302
 #, c-format
 msgid "Requesting %s's attention..."
-msgstr ""
+msgstr "Poprosili ste o pozornosť používateľa %s..."
 
 #: ../libpurple/server.c:347
 #, c-format
 msgid "%s has requested your attention!"
-msgstr ""
-
-#: ../libpurple/server.c:796
+msgstr "Používateľ %s vás poprosil o pozornosť!"
+
+#: ../libpurple/server.c:793
 #, c-format
 msgid ""
 "%s has invited %s to the chat room %s:\n"
@@ -13317,19 +13279,18 @@
 "Používateľ %s pozval používateľa %s do miestnosti %s:\n"
 "%s"
 
-#: ../libpurple/server.c:801
+#: ../libpurple/server.c:798
 #, c-format
 msgid "%s has invited %s to the chat room %s\n"
 msgstr "Používateľ %s pozval používateľa %s do miestnosti %s\n"
 
-#: ../libpurple/server.c:805
+#: ../libpurple/server.c:802
 msgid "Accept chat invitation?"
 msgstr "Prijať pozvanie na chat?"
 
 #: ../libpurple/sslconn.c:164
-#, fuzzy
 msgid "SSL Connection Failed"
-msgstr "Spojenie zlyhalo"
+msgstr "SSL spojenie zlyhalo"
 
 #: ../libpurple/sslconn.c:166
 msgid "SSL Handshake Failed"
@@ -13337,12 +13298,11 @@
 
 #: ../libpurple/sslconn.c:168
 msgid "SSL peer presented an invalid certificate"
-msgstr ""
+msgstr "SSL peer ponúkol neplatný certifikát"
 
 #: ../libpurple/sslconn.c:171
-#, fuzzy
 msgid "Unknown SSL error"
-msgstr "Neznáma chyba"
+msgstr "Neznáma chyba SSL"
 
 #: ../libpurple/status.c:153
 msgid "Unset"
@@ -13365,47 +13325,62 @@
 msgid "%s changed status from %s to %s"
 msgstr "Používateľ %s zmenil stav z %s na %s"
 
-#: ../libpurple/status.c:619
+#: ../libpurple/status.c:612
+#, c-format
+msgid "%s (%s) changed status from %s to %s"
+msgstr "Používateľ %s (%s) zmenil stav z %s na %s"
+
+#: ../libpurple/status.c:623
 #, c-format
 msgid "%s is now %s"
 msgstr "Používateľ %s je teraz %s"
 
-#: ../libpurple/status.c:624
+#: ../libpurple/status.c:625
+#, c-format
+msgid "%s (%s) is now %s"
+msgstr "Používateľ %s (%s) je teraz %s"
+
+#: ../libpurple/status.c:631
 #, c-format
 msgid "%s is no longer %s"
 msgstr "Používateľ %s už nie je %s"
 
-#: ../libpurple/status.c:1234
+#: ../libpurple/status.c:633
+#, c-format
+msgid "%s (%s) is no longer %s"
+msgstr "Používateľ %s (%s) už nie je %s"
+
+#: ../libpurple/status.c:1244
 #, c-format
 msgid "%s became idle"
 msgstr "Používateľ %s sa stal nečinným"
 
-#: ../libpurple/status.c:1251
+#: ../libpurple/status.c:1261
 #, c-format
 msgid "%s became unidle"
 msgstr "Používateľ %s prestal byť nečinný"
 
-#: ../libpurple/status.c:1314
+#: ../libpurple/status.c:1324
 #, c-format
 msgid "+++ %s became idle"
 msgstr "+++ Používateľ %s sa stal nečinným"
 
-#: ../libpurple/status.c:1316
+#: ../libpurple/status.c:1326
 #, c-format
 msgid "+++ %s became unidle"
 msgstr "+++ Používateľ %s prestal byť nečinný"
 
-#: ../libpurple/util.c:718
+#: ../libpurple/util.c:701
 #, c-format
 msgid "%x %X"
 msgstr "%x %X"
 
-#: ../libpurple/util.c:2722
+#: ../libpurple/util.c:2705
 #, c-format
 msgid "Error Reading %s"
 msgstr "Chyba počas čítania %s"
 
-#: ../libpurple/util.c:2723
+#: ../libpurple/util.c:2706
 #, c-format
 msgid ""
 "An error was encountered reading your %s.  They have not been loaded, and "
@@ -13414,15 +13389,15 @@
 "Počas načítavania vášho %s sa vyskytla chyba. Zoznam nebol načítaný a starý "
 "súbor bol premenovaný na %s~."
 
-#: ../libpurple/util.c:3223
+#: ../libpurple/util.c:3206
 msgid "Calculating..."
 msgstr "Počíta sa..."
 
-#: ../libpurple/util.c:3226
+#: ../libpurple/util.c:3209
 msgid "Unknown."
 msgstr "Neznáme."
 
-#: ../libpurple/util.c:3252
+#: ../libpurple/util.c:3235
 #, c-format
 msgid "%d second"
 msgid_plural "%d seconds"
@@ -13430,7 +13405,7 @@
 msgstr[1] "%d sekunda"
 msgstr[2] "%d sekundy"
 
-#: ../libpurple/util.c:3264
+#: ../libpurple/util.c:3247
 #, c-format
 msgid "%d day"
 msgid_plural "%d days"
@@ -13438,7 +13413,7 @@
 msgstr[1] "%d deň"
 msgstr[2] "%d dni"
 
-#: ../libpurple/util.c:3272
+#: ../libpurple/util.c:3255
 #, c-format
 msgid "%s, %d hour"
 msgid_plural "%s, %d hours"
@@ -13446,7 +13421,7 @@
 msgstr[1] "%s, %d hodina"
 msgstr[2] "%s, %d hodiny"
 
-#: ../libpurple/util.c:3278
+#: ../libpurple/util.c:3261
 #, c-format
 msgid "%d hour"
 msgid_plural "%d hours"
@@ -13454,7 +13429,7 @@
 msgstr[1] "%d hodina"
 msgstr[2] "%d hodiny"
 
-#: ../libpurple/util.c:3286
+#: ../libpurple/util.c:3269
 #, c-format
 msgid "%s, %d minute"
 msgid_plural "%s, %d minutes"
@@ -13462,7 +13437,7 @@
 msgstr[1] "%s, %d minúta"
 msgstr[2] "%s, %d minúty"
 
-#: ../libpurple/util.c:3292
+#: ../libpurple/util.c:3275
 #, c-format
 msgid "%d minute"
 msgid_plural "%d minutes"
@@ -13470,17 +13445,17 @@
 msgstr[1] "%d minúta"
 msgstr[2] "%d minúty"
 
-#: ../libpurple/util.c:3552
+#: ../libpurple/util.c:3535
 #, c-format
 msgid "Could not open %s: Redirected too many times"
 msgstr "Nepodarilo sa otvoriť %s: Presmerovaný príliš veľa kráť"
 
-#: ../libpurple/util.c:3589 ../libpurple/util.c:3885
+#: ../libpurple/util.c:3572 ../libpurple/util.c:3868
 #, c-format
 msgid "Unable to connect to %s"
 msgstr "Nepodarilo sa pripojiť na %s"
 
-#: ../libpurple/util.c:3712
+#: ../libpurple/util.c:3695
 #, c-format
 msgid ""
 "Unable to allocate enough memory to hold the contents from %s.  The web "
@@ -13489,17 +13464,17 @@
 "Nebolo možné rezervovať dostatok pamäťového priestoru pre údaje z %s.  "
 "Webový server sa možno pokúša o niečo nebezpečné."
 
-#: ../libpurple/util.c:3747
+#: ../libpurple/util.c:3730
 #, c-format
 msgid "Error reading from %s: %s"
 msgstr "Chyba pri čítaní z %s: %s"
 
-#: ../libpurple/util.c:3778
+#: ../libpurple/util.c:3761
 #, c-format
 msgid "Error writing to %s: %s"
 msgstr "Chyba pri zápise do %s: %s"
 
-#: ../libpurple/util.c:3803
+#: ../libpurple/util.c:3786
 #, c-format
 msgid "Unable to connect to %s: %s"
 msgstr "Nepodarilo sa pripojiť ku %s: %s"
@@ -13517,11 +13492,11 @@
 msgstr ""
 "Program na odosielanie okamžitých správ, ktorý podporuje viacero protokolov"
 
-#: ../pidgin/eggtrayicon.c:129
+#: ../pidgin/eggtrayicon.c:128
 msgid "Orientation"
 msgstr "Orientácia"
 
-#: ../pidgin/eggtrayicon.c:130
+#: ../pidgin/eggtrayicon.c:129
 msgid "The orientation of the tray."
 msgstr "Orientácia oznamovacej oblasti."
 
@@ -13590,7 +13565,7 @@
 msgid "SOCKS 5"
 msgstr "SOCKS 5"
 
-#: ../pidgin/gtkaccount.c:967 ../pidgin/gtkprefs.c:1211
+#: ../pidgin/gtkaccount.c:967 ../pidgin/gtkprefs.c:1213
 msgid "Use Environmental Settings"
 msgstr "Použiť nastavenie prostredia"
 
@@ -13612,15 +13587,15 @@
 msgid "Proxy Options"
 msgstr "Možnosti proxy"
 
-#: ../pidgin/gtkaccount.c:1044 ../pidgin/gtkprefs.c:1205
+#: ../pidgin/gtkaccount.c:1044 ../pidgin/gtkprefs.c:1207
 msgid "Proxy _type:"
 msgstr "_Typ proxy:"
 
-#: ../pidgin/gtkaccount.c:1053 ../pidgin/gtkprefs.c:1226
+#: ../pidgin/gtkaccount.c:1053 ../pidgin/gtkprefs.c:1228
 msgid "_Host:"
 msgstr "_Hostiteľ:"
 
-#: ../pidgin/gtkaccount.c:1057 ../pidgin/gtkprefs.c:1244
+#: ../pidgin/gtkaccount.c:1057 ../pidgin/gtkprefs.c:1246
 msgid "_Port:"
 msgstr "_Port:"
 
@@ -13628,7 +13603,7 @@
 msgid "_Username:"
 msgstr "Po_užívateľské meno:"
 
-#: ../pidgin/gtkaccount.c:1072 ../pidgin/gtkprefs.c:1281
+#: ../pidgin/gtkaccount.c:1072 ../pidgin/gtkprefs.c:1283
 msgid "Pa_ssword:"
 msgstr "He_slo:"
 
@@ -13688,11 +13663,30 @@
 "toto okno otvoríte v ponuke <b>Účty->Pridať/Upraviťt</b> v okne Zoznam "
 "priateľov"
 
-#: ../pidgin/gtkblist.c:767
-msgid "Join a Chat"
-msgstr "Pripojiť sa k chatu"
-
-#: ../pidgin/gtkblist.c:788
+#: ../pidgin/gtkblist.c:524
+#, c-format
+msgid "You have %d contact named %s. Would you like to merge them?"
+msgid_plural ""
+"You currently have %d contacts named %s. Would you like to merge them?"
+msgstr[0] "Máte %d kontaktov pomenovaných %s. Chceli by ste ich spojiť?"
+msgstr[1] "Máte %d kontakt pomenovaný %s. Chceli by ste ich spojiť?"
+msgstr[2] "Máte %d kontakty pomenované %s. Chceli by ste ich spojiť?"
+
+#: ../pidgin/gtkblist.c:525
+msgid ""
+"Merging these contacts will cause them to share a single entry on the buddy "
+"list and use a single conversation window. You can separate them again by "
+"choosing 'Expand' from the contact's context menu"
+msgstr ""
+"Po spojení budú zaberať jedno miesto v zozname kontaktov a budú využívať "
+"rovnaké okno konverzácie. Môžete ich znovu oddeliť tak, že vyberiete možnosť "
+"'Rozbaliť' z kontextovej ponuky"
+
+#: ../pidgin/gtkblist.c:527
+msgid "_Merge"
+msgstr "Spojiť"
+
+#: ../pidgin/gtkblist.c:945
 msgid ""
 "Please enter the appropriate information about the chat you would like to "
 "join.\n"
@@ -13700,95 +13694,108 @@
 "Prosím, zadajte zodpovedajúce informácie o chate, ku ktorému sa chcete "
 "pripojiť.\n"
 
-#. Set up stuff for the account box
-#: ../pidgin/gtkblist.c:799 ../pidgin/gtkblist.c:5530
-#: ../pidgin/gtkblist.c:5893 ../pidgin/gtkpounce.c:539
-#: ../pidgin/gtkroomlist.c:396
+#: ../pidgin/gtkblist.c:956 ../pidgin/gtkblist.c:6188
+#: ../pidgin/gtkpounce.c:546 ../pidgin/gtkroomlist.c:396
 msgid "_Account:"
 msgstr "_Účet:"
 
-#: ../pidgin/gtkblist.c:1088 ../pidgin/gtkprivacy.c:603
+#: ../pidgin/gtkblist.c:1245 ../pidgin/gtkprivacy.c:603
 #: ../pidgin/gtkprivacy.c:617
 msgid "_Block"
 msgstr "_Blokovať"
 
-#: ../pidgin/gtkblist.c:1088
+#: ../pidgin/gtkblist.c:1245
 msgid "Un_block"
 msgstr "Od_blokovať"
 
-#: ../pidgin/gtkblist.c:1139
+#: ../pidgin/gtkblist.c:1288
+msgid "Move to"
+msgstr "Presunúť do"
+
+#: ../pidgin/gtkblist.c:1328
 msgid "Get _Info"
-msgstr "Zobraziťo podrobnosti"
-
-#: ../pidgin/gtkblist.c:1142 ../pidgin/pidginstock.c:90
+msgstr "Zobraziť podrobnosti"
+
+#: ../pidgin/gtkblist.c:1331 ../pidgin/pidginstock.c:90
 msgid "I_M"
 msgstr "I_M"
 
-#: ../pidgin/gtkblist.c:1148
-#, fuzzy
-msgid "_Send File"
-msgstr "Odoslať súbor"
-
-#: ../pidgin/gtkblist.c:1155
-msgid "Add Buddy _Pounce"
-msgstr "Pridať _sledovanie priatela"
-
-#: ../pidgin/gtkblist.c:1160 ../pidgin/gtkblist.c:1164
-#: ../pidgin/gtkblist.c:1269 ../pidgin/gtkblist.c:1292
+#: ../pidgin/gtkblist.c:1337
+msgid "_Send File..."
+msgstr "Poslať _súbor..."
+
+#: ../pidgin/gtkblist.c:1344
+msgid "Add Buddy _Pounce..."
+msgstr "Pridať sledovanie _priateľa..."
+
+#: ../pidgin/gtkblist.c:1349 ../pidgin/gtkblist.c:1353
+#: ../pidgin/gtkblist.c:1468 ../pidgin/gtkblist.c:1491
 msgid "View _Log"
 msgstr "Zobraziť _záznam"
 
-#: ../pidgin/gtkblist.c:1177 ../pidgin/gtkblist.c:1186
-#: ../pidgin/gtkblist.c:1277 ../pidgin/gtkblist.c:1298
+#: ../pidgin/gtkblist.c:1359
+msgid "Hide when offline"
+msgstr "Skryť v odpojenom stave"
+
+#: ../pidgin/gtkblist.c:1359
+msgid "Show when offline"
+msgstr "Zobaziť v odpojenom stave"
+
+#: ../pidgin/gtkblist.c:1373 ../pidgin/gtkblist.c:1382
+#: ../pidgin/gtkblist.c:1476 ../pidgin/gtkblist.c:1497
 msgid "_Alias..."
 msgstr "_Prezývka..."
 
-#: ../pidgin/gtkblist.c:1180 ../pidgin/gtkblist.c:1188
-#: ../pidgin/gtkblist.c:1279 ../pidgin/gtkblist.c:1300
+#: ../pidgin/gtkblist.c:1376 ../pidgin/gtkblist.c:1384
+#: ../pidgin/gtkblist.c:1478 ../pidgin/gtkblist.c:1499
 msgid "_Remove"
 msgstr "Odst_rániť"
 
-#: ../pidgin/gtkblist.c:1238
-msgid "Add a _Buddy"
-msgstr "Pridať priateľa"
-
-#: ../pidgin/gtkblist.c:1241
-msgid "Add a C_hat"
-msgstr "Pridať chat"
-
-#: ../pidgin/gtkblist.c:1244
+#: ../pidgin/gtkblist.c:1434
+msgid "Add _Buddy..."
+msgstr "Pridať _priateľa..."
+
+#: ../pidgin/gtkblist.c:1437
+msgid "Add C_hat..."
+msgstr "Pridať c_hat..."
+
+#: ../pidgin/gtkblist.c:1440
 msgid "_Delete Group"
 msgstr "Odstrániť skupinu"
 
-#: ../pidgin/gtkblist.c:1246
+#: ../pidgin/gtkblist.c:1442
 msgid "_Rename"
 msgstr "Premenovať"
 
 #. join button
-#: ../pidgin/gtkblist.c:1265 ../pidgin/gtkroomlist.c:307
+#: ../pidgin/gtkblist.c:1462 ../pidgin/gtkroomlist.c:307
 #: ../pidgin/gtkroomlist.c:460 ../pidgin/pidginstock.c:88
 msgid "_Join"
 msgstr "Pripo_jiť"
 
-#: ../pidgin/gtkblist.c:1267
+#: ../pidgin/gtkblist.c:1464
 msgid "Auto-Join"
 msgstr "Automatické prihlasovanie"
 
-#: ../pidgin/gtkblist.c:1305 ../pidgin/gtkblist.c:1329
+#: ../pidgin/gtkblist.c:1466
+msgid "Persistent"
+msgstr "Trvalé"
+
+#: ../pidgin/gtkblist.c:1504 ../pidgin/gtkblist.c:1527
 msgid "_Collapse"
 msgstr "_Zbaliť"
 
-#: ../pidgin/gtkblist.c:1334
+#: ../pidgin/gtkblist.c:1532
 msgid "_Expand"
 msgstr "_Rozbaliť"
 
-#: ../pidgin/gtkblist.c:1585 ../pidgin/gtkblist.c:1597
-#: ../pidgin/gtkblist.c:4603 ../pidgin/gtkblist.c:4616
+#: ../pidgin/gtkblist.c:1783 ../pidgin/gtkblist.c:1795
+#: ../pidgin/gtkblist.c:4885 ../pidgin/gtkblist.c:4898
 msgid "/Tools/Mute Sounds"
 msgstr "/Nástroje/Vypnúť zvuky"
 
-#: ../pidgin/gtkblist.c:2057 ../pidgin/gtkconv.c:4840
-#: ../pidgin/gtkpounce.c:430
+#: ../pidgin/gtkblist.c:2255 ../pidgin/gtkconv.c:4903
+#: ../pidgin/gtkpounce.c:437
 msgid ""
 "You are not currently signed on with an account that can add that buddy."
 msgstr ""
@@ -13796,143 +13803,138 @@
 "priateľa."
 
 #. Buddies menu
-#: ../pidgin/gtkblist.c:2869
+#: ../pidgin/gtkblist.c:3067
 msgid "/_Buddies"
 msgstr "/_Priatelia"
 
-#: ../pidgin/gtkblist.c:2870
+#: ../pidgin/gtkblist.c:3068
 msgid "/Buddies/New Instant _Message..."
 msgstr "/Priatelia/Nová _správa..."
 
-#: ../pidgin/gtkblist.c:2871
+#: ../pidgin/gtkblist.c:3069
 msgid "/Buddies/Join a _Chat..."
 msgstr "/Priatelia/Pripojiť sa k _chatu..."
 
-#: ../pidgin/gtkblist.c:2872
+#: ../pidgin/gtkblist.c:3070
 msgid "/Buddies/Get User _Info..."
 msgstr "/Priatelia/_Podrobnosti o používateľovi..."
 
-#: ../pidgin/gtkblist.c:2873
+#: ../pidgin/gtkblist.c:3071
 msgid "/Buddies/View User _Log..."
 msgstr "/Priatelia/_Záznam používateľa..."
 
-#: ../pidgin/gtkblist.c:2875
+#: ../pidgin/gtkblist.c:3073
 msgid "/Buddies/Show"
 msgstr "/Priatelia/Zobraziť"
 
-#: ../pidgin/gtkblist.c:2876
-#, fuzzy
+#: ../pidgin/gtkblist.c:3074
 msgid "/Buddies/Show/_Offline Buddies"
-msgstr "/Priatelia/Zobraziť _nepripojených priateľov"
-
-#: ../pidgin/gtkblist.c:2877
-#, fuzzy
+msgstr "/Priatelia/Zobraziť/_Odpojených priateľov"
+
+#: ../pidgin/gtkblist.c:3075
 msgid "/Buddies/Show/_Empty Groups"
-msgstr "/Priateliai/Zobraziť prázdne s_kupiny"
-
-#: ../pidgin/gtkblist.c:2878
-#, fuzzy
+msgstr "/Priatelia/Zobraziť/_Prázdne skupiny"
+
+#: ../pidgin/gtkblist.c:3076
 msgid "/Buddies/Show/Buddy _Details"
-msgstr "/Priatelia/Zobraziť _detaily priateľov"
-
-#: ../pidgin/gtkblist.c:2879
-#, fuzzy
+msgstr "/Priatelia/Zobraziť/_Detaily priateľov"
+
+#: ../pidgin/gtkblist.c:3077
 msgid "/Buddies/Show/Idle _Times"
-msgstr "/Priatelia/Zobraziť č_asy nečinnosti"
-
-#: ../pidgin/gtkblist.c:2880
-#, fuzzy
+msgstr "/Priatelia/Zobraziť/Časy _nečinnosti"
+
+#: ../pidgin/gtkblist.c:3078
 msgid "/Buddies/Show/_Protocol Icons"
 msgstr "/Priatelia/Zobraziť/_Ikony protokolov"
 
-#: ../pidgin/gtkblist.c:2881
+#: ../pidgin/gtkblist.c:3079
 msgid "/Buddies/_Sort Buddies"
 msgstr "/Priatelia/Zo_radiť priateľov"
 
-#: ../pidgin/gtkblist.c:2883
+#: ../pidgin/gtkblist.c:3081
 msgid "/Buddies/_Add Buddy..."
 msgstr "/Priatelia/Pridať priat_eľa..."
 
-#: ../pidgin/gtkblist.c:2884
+#: ../pidgin/gtkblist.c:3082
 msgid "/Buddies/Add C_hat..."
 msgstr "/Priatelia/Pridať cha_t..."
 
-#: ../pidgin/gtkblist.c:2885
+#: ../pidgin/gtkblist.c:3083
 msgid "/Buddies/Add _Group..."
 msgstr "/Priatelia/Pridať sk_upinu..."
 
-#: ../pidgin/gtkblist.c:2887
+#: ../pidgin/gtkblist.c:3085
 msgid "/Buddies/_Quit"
 msgstr "/Priatelia/_Ukončiť"
 
 #. Accounts menu
-#: ../pidgin/gtkblist.c:2890
+#: ../pidgin/gtkblist.c:3088
 msgid "/_Accounts"
 msgstr "/Úč_ty"
 
-#: ../pidgin/gtkblist.c:2891 ../pidgin/gtkblist.c:6589
-msgid "/Accounts/Add\\/Edit"
-msgstr "/Účty/Pri_dať a upraviť"
+#: ../pidgin/gtkblist.c:3089 ../pidgin/gtkblist.c:6889
+msgid "/Accounts/Manage"
+msgstr "/Účty/Organizovať"
 
 #. Tools
-#: ../pidgin/gtkblist.c:2894
+#: ../pidgin/gtkblist.c:3092
 msgid "/_Tools"
 msgstr "/_Nástroje"
 
-#: ../pidgin/gtkblist.c:2895
+#: ../pidgin/gtkblist.c:3093
 msgid "/Tools/Buddy _Pounces"
 msgstr "/Nástroje/_Sledovanie priateľov"
 
-#: ../pidgin/gtkblist.c:2896
+#: ../pidgin/gtkblist.c:3094
 msgid "/Tools/_Certificates"
 msgstr "/Nástroje/_Certifikáty"
 
-#: ../pidgin/gtkblist.c:2897
+#: ../pidgin/gtkblist.c:3095
 msgid "/Tools/Plu_gins"
 msgstr "/Nástroje/_Moduly"
 
-#: ../pidgin/gtkblist.c:2898
+#: ../pidgin/gtkblist.c:3096
 msgid "/Tools/Pr_eferences"
 msgstr "/Nástroje/_Nastavenia"
 
-#: ../pidgin/gtkblist.c:2899
+#: ../pidgin/gtkblist.c:3097
 msgid "/Tools/Pr_ivacy"
 msgstr "/Nástroje/_Súkromie"
 
-#: ../pidgin/gtkblist.c:2901
+#: ../pidgin/gtkblist.c:3099
 msgid "/Tools/_File Transfers"
 msgstr "/Nástroje/_Prenosy súborov"
 
-#: ../pidgin/gtkblist.c:2902
+#: ../pidgin/gtkblist.c:3100
 msgid "/Tools/R_oom List"
 msgstr "/Nástroje/Zoznam _miestností"
 
-#: ../pidgin/gtkblist.c:2903
+#: ../pidgin/gtkblist.c:3101
 msgid "/Tools/System _Log"
 msgstr "/Nástroje/Systémový _záznam"
 
-#: ../pidgin/gtkblist.c:2905
+#: ../pidgin/gtkblist.c:3103
 msgid "/Tools/Mute _Sounds"
 msgstr "/Nástroje/Vypnúť _zvuky"
 
 #. Help
-#: ../pidgin/gtkblist.c:2907
+#: ../pidgin/gtkblist.c:3105
 msgid "/_Help"
 msgstr "/_Pomocník"
 
-#: ../pidgin/gtkblist.c:2908
+#: ../pidgin/gtkblist.c:3106
 msgid "/Help/Online _Help"
 msgstr "/Pomoc/Online _pomocník"
 
-#: ../pidgin/gtkblist.c:2909
+#: ../pidgin/gtkblist.c:3107
 msgid "/Help/_Debug Window"
 msgstr "/Pomoc/_Ladiace okno"
 
-#: ../pidgin/gtkblist.c:2911 ../pidgin/gtkblist.c:2913
+#: ../pidgin/gtkblist.c:3109 ../pidgin/gtkblist.c:3111
 msgid "/Help/_About"
 msgstr "/Pomoc/O _programe"
 
-#: ../pidgin/gtkblist.c:2942
+#: ../pidgin/gtkblist.c:3140
 #, c-format
 msgid ""
 "\n"
@@ -13941,78 +13943,78 @@
 "\n"
 "<b>Účet:</b> %s"
 
-#: ../pidgin/gtkblist.c:3020
+#: ../pidgin/gtkblist.c:3218
 msgid "Buddy Alias"
 msgstr "Prezývka priateľa"
 
-#: ../pidgin/gtkblist.c:3049
+#: ../pidgin/gtkblist.c:3247
 msgid "Logged In"
 msgstr "Prihlásený"
 
-#: ../pidgin/gtkblist.c:3095
+#: ../pidgin/gtkblist.c:3293
 msgid "Last Seen"
 msgstr "Naposledy videný"
 
-#: ../pidgin/gtkblist.c:3116
+#: ../pidgin/gtkblist.c:3314
 msgid "Spooky"
 msgstr "Strašidelné"
 
-#: ../pidgin/gtkblist.c:3118
+#: ../pidgin/gtkblist.c:3316
 msgid "Awesome"
 msgstr "Hrozné"
 
-#: ../pidgin/gtkblist.c:3120
+#: ../pidgin/gtkblist.c:3318
 msgid "Rockin'"
 msgstr "Super"
 
-#: ../pidgin/gtkblist.c:3453
+#: ../pidgin/gtkblist.c:3657
 #, c-format
 msgid "Idle %dd %dh %02dm"
 msgstr "Nečinný %dd %dh %02dm"
 
-#: ../pidgin/gtkblist.c:3455
+#: ../pidgin/gtkblist.c:3659
 #, c-format
 msgid "Idle %dh %02dm"
 msgstr "Nečinný %dh %02dm"
 
-#: ../pidgin/gtkblist.c:3457
+#: ../pidgin/gtkblist.c:3661
 #, c-format
 msgid "Idle %dm"
 msgstr "Nečinný %dm"
 
-#: ../pidgin/gtkblist.c:3602
+#: ../pidgin/gtkblist.c:3806
 msgid "/Buddies/New Instant Message..."
 msgstr "/Priatelia/Nová _správa..."
 
-#: ../pidgin/gtkblist.c:3603 ../pidgin/gtkblist.c:3636
+#: ../pidgin/gtkblist.c:3807 ../pidgin/gtkblist.c:3840
 msgid "/Buddies/Join a Chat..."
 msgstr "/Priatelia/Pripojiť sa k _chatu..."
 
-#: ../pidgin/gtkblist.c:3604
+#: ../pidgin/gtkblist.c:3808
 msgid "/Buddies/Get User Info..."
 msgstr "/Priatelia/Zobraziť podrobnosti..."
 
-#: ../pidgin/gtkblist.c:3605
+#: ../pidgin/gtkblist.c:3809
 msgid "/Buddies/Add Buddy..."
 msgstr "/Priatelia/Pridať priateľa..."
 
-#: ../pidgin/gtkblist.c:3606 ../pidgin/gtkblist.c:3639
+#: ../pidgin/gtkblist.c:3810 ../pidgin/gtkblist.c:3843
 msgid "/Buddies/Add Chat..."
 msgstr "/Priatelia/Pridať chat..."
 
-#: ../pidgin/gtkblist.c:3607
+#: ../pidgin/gtkblist.c:3811
 msgid "/Buddies/Add Group..."
 msgstr "/Priatelia/Pridať skupinu..."
 
-#: ../pidgin/gtkblist.c:3642
+#: ../pidgin/gtkblist.c:3846
 msgid "/Tools/Privacy"
 msgstr "/Nástroje/_Súkromie"
 
-#: ../pidgin/gtkblist.c:3645
+#: ../pidgin/gtkblist.c:3849
 msgid "/Tools/Room List"
 msgstr "/Nástroje/Zoznam _miestností"
 
-#: ../pidgin/gtkblist.c:3742 ../pidgin/gtkdocklet.c:153
+#: ../pidgin/gtkblist.c:3944 ../pidgin/gtkdocklet.c:153
 #, c-format
 msgid "%d unread message from %s\n"
 msgid_plural "%d unread messages from %s\n"
@@ -14020,94 +14022,86 @@
 msgstr[1] "%d neprečítaná správa od používateľa %s\n"
 msgstr[2] "%d neprečítané správy od používateľa %s\n"
 
-#: ../pidgin/gtkblist.c:3822
+#: ../pidgin/gtkblist.c:4104
 msgid "Manually"
 msgstr "Ručne"
 
-#: ../pidgin/gtkblist.c:3824
-msgid "Alphabetically"
-msgstr "Podľa abecedy"
-
-#: ../pidgin/gtkblist.c:3825
+#: ../pidgin/gtkblist.c:4107
 msgid "By status"
 msgstr "Podľa stavu"
 
-#: ../pidgin/gtkblist.c:3826
+#: ../pidgin/gtkblist.c:4108
 msgid "By log size"
 msgstr "Podľa veľkosti záznamu"
 
-#: ../pidgin/gtkblist.c:4031 ../pidgin/gtkconn.c:179
+#: ../pidgin/gtkblist.c:4313 ../pidgin/gtkconn.c:180
 #, c-format
 msgid "%s disconnected"
 msgstr "%s bol odpojený"
 
-#: ../pidgin/gtkblist.c:4067
+#: ../pidgin/gtkblist.c:4349
 #, c-format
 msgid "<span color=\"red\">%s disconnected: %s</span>"
 msgstr "<span color=\"red\">%s bol odpojený: %s</span>"
 
-#: ../pidgin/gtkblist.c:4219
+#: ../pidgin/gtkblist.c:4501
 msgid "<b>Username:</b>"
 msgstr "<b>Prihlasovacie meno:</b>"
 
-#: ../pidgin/gtkblist.c:4226
+#: ../pidgin/gtkblist.c:4508
 msgid "<b>Password:</b>"
 msgstr "<b>Heslo:</b>"
 
-#: ../pidgin/gtkblist.c:4237
+#: ../pidgin/gtkblist.c:4519
 msgid "_Login"
 msgstr "Prihlásiť"
 
-#: ../pidgin/gtkblist.c:4320
+#: ../pidgin/gtkblist.c:4602
 msgid "/Accounts"
 msgstr "/Účty"
 
 #. Translators: Please maintain the use of -> and <- to refer to menu heirarchy
-#: ../pidgin/gtkblist.c:4334
-#, fuzzy, c-format
+#: ../pidgin/gtkblist.c:4616
+#, c-format
 msgid ""
 "<span weight='bold' size='larger'>Welcome to %s!</span>\n"
 "\n"
 "You have no accounts enabled. Enable your IM accounts from the <b>Accounts</"
-"b> window at <b>Accounts->Add/Edit</b>. Once you enable accounts, you'll be "
+"b> window at <b>Accounts->Manage</b>. Once you enable accounts, you'll be "
 "able to sign on, set your status, and talk to your friends."
 msgstr ""
 "<span weight='bold' size='larger'>Vitajte v programe %s!</span>\n"
 "\n"
-"Zatiaľ nemáte pridané žiadne IM účty. Môžete ich pridať v okne <b>Účty</b> "
-"ktoré nájdete v ponuke <b>Účty->Pridať a upraviť</b>. Po tom, ako pridáte "
+"Zatiaľ nemáte adtivované žiadne IM účty. Môžete ich pridať v okne <b>Účty</"
+"b> ktoré nájdete v ponuke <b>Účty->Organizovať</b>. Po tom, ako aktivujete "
 "váš účet, budete sa môcť prihlásiť, zmeniť svoj stav a písať si s vašimi "
 "priateľmi."
 
+# SPRAVNE
 #. set the Show Offline Buddies option. must be done
 #. * after the treeview or faceprint gets mad. -Robot101
 #.
-#: ../pidgin/gtkblist.c:4597
-#, fuzzy
+#: ../pidgin/gtkblist.c:4879
 msgid "/Buddies/Show/Offline Buddies"
-msgstr "/Priatelia/Zobraziť _nepripojených priateľov"
-
-#: ../pidgin/gtkblist.c:4600
-#, fuzzy
+msgstr "/Priatelia/Zobraziť/Odpojených priateľov"
+
+#: ../pidgin/gtkblist.c:4882
 msgid "/Buddies/Show/Empty Groups"
-msgstr "/Priatelia/Zobraziť prázdne s_kupiny"
-
-#: ../pidgin/gtkblist.c:4606
-#, fuzzy
+msgstr "/Priatelia/Zobraziť/Prázdne skupiny"
+
+#: ../pidgin/gtkblist.c:4888
 msgid "/Buddies/Show/Buddy Details"
-msgstr "/Nástroje/Zobraziť _detaily priateľov"
-
-#: ../pidgin/gtkblist.c:4609
-#, fuzzy
+msgstr "/Priatelia/Zobraziť/Detaily priateľov"
+
+#: ../pidgin/gtkblist.c:4891
 msgid "/Buddies/Show/Idle Times"
-msgstr "/Priatelia/Zobraziť č_asy nečinnosti"
-
-#: ../pidgin/gtkblist.c:4612
-#, fuzzy
+msgstr "/Priatelia/Zobraziť/Časy nečinnosti"
+
+#: ../pidgin/gtkblist.c:4894
 msgid "/Buddies/Show/Protocol Icons"
 msgstr "/Priatelia/Zobraziť/Ikony protokolov"
 
-#: ../pidgin/gtkblist.c:5507
+#: ../pidgin/gtkblist.c:5796
 msgid ""
 "Please enter the screen name of the person you would like to add to your "
 "buddy list. You may optionally enter an alias, or nickname,  for the buddy. "
@@ -14117,26 +14111,31 @@
 "priateľov. Môžete vyplniť aj prezývku priateľa. Prezývka sa bude zobrazovať "
 "v zozname priateľov namiesto mena používateľa vždy, keď to bude možné.\n"
 
+#. Set up stuff for the account box
+#: ../pidgin/gtkblist.c:5819
+msgid "A_ccount:"
+msgstr "Úče_t:"
+
 #. End of account box
-#: ../pidgin/gtkblist.c:5542
+#: ../pidgin/gtkblist.c:5831
 msgid "_Screen name:"
 msgstr "_Používateľské meno:"
 
-#: ../pidgin/gtkblist.c:5564 ../pidgin/gtkblist.c:5914
+#: ../pidgin/gtkblist.c:5853 ../pidgin/gtkblist.c:6209
 msgid "A_lias:"
 msgstr "P_rezývka:"
 
-#: ../pidgin/gtkblist.c:5826
+#: ../pidgin/gtkblist.c:6121
 msgid "This protocol does not support chat rooms."
 msgstr "Tento protokol nepodporuje miestnosti chatu."
 
-#: ../pidgin/gtkblist.c:5842
+#: ../pidgin/gtkblist.c:6137
 msgid ""
 "You are not currently signed on with any protocols that have the ability to "
 "chat."
 msgstr "Momentálne nie ste pripojený na protokole, ktorý by podporoval chat."
 
-#: ../pidgin/gtkblist.c:5883
+#: ../pidgin/gtkblist.c:6178
 msgid ""
 "Please enter an alias, and the appropriate information about the chat you "
 "would like to add to your buddy list.\n"
@@ -14144,49 +14143,56 @@
 "Prosím, zadajte prezývku a príslušné informácie o chate, ktorý chcete pridať "
 "do vášho zoznamu priateľov.\n"
 
-#: ../pidgin/gtkblist.c:5964
+#: ../pidgin/gtkblist.c:6237
+msgid "Autojoin when account becomes online."
+msgstr "Znovu pripojiť keď sa prihlásite."
+
+#: ../pidgin/gtkblist.c:6238
+msgid "Hide chat when the window is closed."
+msgstr "Skryť chat keď je okno zatvorené."
+
+#: ../pidgin/gtkblist.c:6264
 msgid "Please enter the name of the group to be added."
 msgstr "Prosím, zadajte názov skupiny ktorú chcete pridať."
 
-#: ../pidgin/gtkblist.c:6609
+#: ../pidgin/gtkblist.c:6909
 msgid "<PurpleMain>/Accounts/"
 msgstr "<PurpleMain>/Účty/"
 
-#: ../pidgin/gtkblist.c:6633
+#: ../pidgin/gtkblist.c:6933
 msgid "_Edit Account"
 msgstr "_Upraviť účet"
 
-#: ../pidgin/gtkblist.c:6646 ../pidgin/gtkconv.c:3073
+#: ../pidgin/gtkblist.c:6946 ../pidgin/gtkconv.c:3136
 msgid "No actions available"
 msgstr "Nie sú dostupné žiadne akcie"
 
-#: ../pidgin/gtkblist.c:6654
+#: ../pidgin/gtkblist.c:6954
 msgid "_Disable"
 msgstr "_Vypnúť"
 
-#: ../pidgin/gtkblist.c:6666
+#: ../pidgin/gtkblist.c:6966
 msgid "Enable Account"
 msgstr "Povoliť účet"
 
-#: ../pidgin/gtkblist.c:6672
+#: ../pidgin/gtkblist.c:6972
 msgid "<PurpleMain>/Accounts/Enable Account"
 msgstr "<PurpleMain>/Účty/Povoliť účet"
 
-#: ../pidgin/gtkblist.c:6721
+#: ../pidgin/gtkblist.c:7021
 msgid "/Tools"
 msgstr "/Nástroje"
 
-#: ../pidgin/gtkblist.c:6791
+#: ../pidgin/gtkblist.c:7091
 msgid "/Buddies/Sort Buddies"
 msgstr "/Priatelia/Zoradiť priateľov"
 
 #. Widget creation function
 #: ../pidgin/gtkcertmgr.c:530
-#, fuzzy
 msgid "SSL Servers"
-msgstr "Server"
-
-#: ../pidgin/gtkconn.c:180
+msgstr "SSL servery"
+
+#: ../pidgin/gtkconn.c:181
 #, c-format
 msgid ""
 "%s\n"
@@ -14199,26 +14205,26 @@
 "%s sa nebude znovu pokúšať pripojiť na tento účet, kým neopravíte chybu a "
 "znovu nepovolíte tento účet."
 
-#: ../pidgin/gtkconv.c:482
+#: ../pidgin/gtkconv.c:523
 msgid "Unknown command."
 msgstr "Neznámy príkaz."
 
-#: ../pidgin/gtkconv.c:754 ../pidgin/gtkconv.c:780
+#: ../pidgin/gtkconv.c:795 ../pidgin/gtkconv.c:821
 msgid "That buddy is not on the same protocol as this chat."
 msgstr "Priateľ nie je na tom istom protokole ako tento chat"
 
-#: ../pidgin/gtkconv.c:774
+#: ../pidgin/gtkconv.c:815
 msgid ""
 "You are not currently signed on with an account that can invite that buddy."
 msgstr ""
 "Momentálne nie ste prihlásený v účte, ktorý dokáže pozvať tohoto priateľa."
 
-#: ../pidgin/gtkconv.c:827
+#: ../pidgin/gtkconv.c:868
 msgid "Invite Buddy Into Chat Room"
 msgstr "Pozvať priateľa do miestnosti chatu"
 
 #. Put our happy label in it.
-#: ../pidgin/gtkconv.c:857
+#: ../pidgin/gtkconv.c:898
 msgid ""
 "Please enter the name of the user you wish to invite, along with an optional "
 "invite message."
@@ -14226,188 +14232,183 @@
 "Zadajte, prosím, meno používateľa, ktorého chcete pozvať, spolu s nepovinnou "
 "pozývacou správou."
 
-#: ../pidgin/gtkconv.c:878
+#: ../pidgin/gtkconv.c:919
 msgid "_Buddy:"
 msgstr "_Priateľ:"
 
-#: ../pidgin/gtkconv.c:889 ../pidgin/gtksavedstatuses.c:1194
+#: ../pidgin/gtkconv.c:930 ../pidgin/gtksavedstatuses.c:1194
 #: ../pidgin/gtksavedstatuses.c:1528
 msgid "_Message:"
 msgstr "_Správa:"
 
-#: ../pidgin/gtkconv.c:947 ../pidgin/gtkconv.c:2598 ../pidgin/gtkdebug.c:219
-#: ../pidgin/gtkft.c:543
-msgid "Unable to open file."
-msgstr "Nepodarilo sa otvoriť súbor."
-
-#: ../pidgin/gtkconv.c:953
+#: ../pidgin/gtkconv.c:994
 #, c-format
 msgid "<h1>Conversation with %s</h1>\n"
 msgstr "<h1>Rozhovor s %s</h1>\n"
 
-#: ../pidgin/gtkconv.c:991
+#: ../pidgin/gtkconv.c:1032
 msgid "Save Conversation"
 msgstr "Uložiť konverzáciu"
 
-#: ../pidgin/gtkconv.c:1140 ../pidgin/gtkdebug.c:167 ../pidgin/gtkdebug.c:743
+#: ../pidgin/gtkconv.c:1178 ../pidgin/gtkdebug.c:167 ../pidgin/gtkdebug.c:743
 msgid "Find"
 msgstr "Nájsť"
 
-#: ../pidgin/gtkconv.c:1166 ../pidgin/gtkdebug.c:195
+#: ../pidgin/gtkconv.c:1204 ../pidgin/gtkdebug.c:195
 msgid "_Search for:"
 msgstr "Hľadať:"
 
-#: ../pidgin/gtkconv.c:1622
+#: ../pidgin/gtkconv.c:1675
 msgid "Un-Ignore"
 msgstr "Neignorovať"
 
-#: ../pidgin/gtkconv.c:1625
+#: ../pidgin/gtkconv.c:1678
 msgid "Ignore"
 msgstr "Ignorovať"
 
-#: ../pidgin/gtkconv.c:1645
+#: ../pidgin/gtkconv.c:1698
 msgid "Get Away Message"
 msgstr "Získať správu o neprítomnosti"
 
-#: ../pidgin/gtkconv.c:1668
+#: ../pidgin/gtkconv.c:1721
 msgid "Last said"
 msgstr "Naposledy povedal"
 
-#: ../pidgin/gtkconv.c:2606
+#: ../pidgin/gtkconv.c:2665
 msgid "Unable to save icon file to disk."
 msgstr "Nepodarilo sa uložiť súbor ikony na disk."
 
-#: ../pidgin/gtkconv.c:2657
+#: ../pidgin/gtkconv.c:2716
 msgid "Save Icon"
 msgstr "Uložiť ikonu"
 
-#: ../pidgin/gtkconv.c:2709
+#: ../pidgin/gtkconv.c:2768
 msgid "Animate"
 msgstr "Animovať"
 
-#: ../pidgin/gtkconv.c:2714
+#: ../pidgin/gtkconv.c:2773
 msgid "Hide Icon"
 msgstr "Skryť ikonu"
 
-#: ../pidgin/gtkconv.c:2717
+#: ../pidgin/gtkconv.c:2776
 msgid "Save Icon As..."
 msgstr "Uložiť ikonu ako..."
 
-#: ../pidgin/gtkconv.c:2721
+#: ../pidgin/gtkconv.c:2780
 msgid "Set Custom Icon..."
 msgstr "Nastaviť vlastnú ikonu..."
 
-#: ../pidgin/gtkconv.c:2734
+#: ../pidgin/gtkconv.c:2793
 msgid "Remove Custom Icon"
 msgstr "Odstrániť vlastnú ikonu"
 
-#: ../pidgin/gtkconv.c:2861
+#: ../pidgin/gtkconv.c:2924
 msgid "Show All"
-msgstr ""
+msgstr "Zobraziť všetko"
 
 #. Conversation menu
-#: ../pidgin/gtkconv.c:2880
+#: ../pidgin/gtkconv.c:2943
 msgid "/_Conversation"
 msgstr "/_Rozhovor"
 
-#: ../pidgin/gtkconv.c:2882
+#: ../pidgin/gtkconv.c:2945
 msgid "/Conversation/New Instant _Message..."
 msgstr "/Rozhovor/Nová správa..."
 
-#: ../pidgin/gtkconv.c:2887
+#: ../pidgin/gtkconv.c:2950
 msgid "/Conversation/_Find..."
 msgstr "/Rozhovor/_Hľadať..."
 
-#: ../pidgin/gtkconv.c:2889
+#: ../pidgin/gtkconv.c:2952
 msgid "/Conversation/View _Log"
 msgstr "/Rozhovor/Zobraziť _záznam"
 
-#: ../pidgin/gtkconv.c:2890
+#: ../pidgin/gtkconv.c:2953
 msgid "/Conversation/_Save As..."
 msgstr "/Rozhovor/_Uložiť ako..."
 
-#: ../pidgin/gtkconv.c:2892
+#: ../pidgin/gtkconv.c:2955
 msgid "/Conversation/Clea_r Scrollback"
 msgstr "/Rozhovor/Vymazať"
 
-#: ../pidgin/gtkconv.c:2896
+#: ../pidgin/gtkconv.c:2959
 msgid "/Conversation/Se_nd File..."
 msgstr "/Rozhovor/Odos_lať súbor..."
 
-#: ../pidgin/gtkconv.c:2897
+#: ../pidgin/gtkconv.c:2960
 msgid "/Conversation/Add Buddy _Pounce..."
 msgstr "/Rozhovor/Pridať _sledovanie priateľa..."
 
-#: ../pidgin/gtkconv.c:2899
+#: ../pidgin/gtkconv.c:2962
 msgid "/Conversation/_Get Info"
 msgstr "/Rozhovor/_Zobraziť podrobnosti"
 
-#: ../pidgin/gtkconv.c:2901
+#: ../pidgin/gtkconv.c:2964
 msgid "/Conversation/In_vite..."
 msgstr "/Rozhovor/Poz_vať..."
 
-#: ../pidgin/gtkconv.c:2903
+#: ../pidgin/gtkconv.c:2966
 msgid "/Conversation/M_ore"
 msgstr "/Conversation/Via_c"
 
-#: ../pidgin/gtkconv.c:2907
+#: ../pidgin/gtkconv.c:2970
 msgid "/Conversation/Al_ias..."
 msgstr "/Rozhovor/Pre_zývka..."
 
-#: ../pidgin/gtkconv.c:2909
+#: ../pidgin/gtkconv.c:2972
 msgid "/Conversation/_Block..."
 msgstr "/Rozhovor/_Blokovať..."
 
-#: ../pidgin/gtkconv.c:2911
+#: ../pidgin/gtkconv.c:2974
 msgid "/Conversation/_Unblock..."
 msgstr "/Rozhovor/_Odblokovať..."
 
-#: ../pidgin/gtkconv.c:2913
+#: ../pidgin/gtkconv.c:2976
 msgid "/Conversation/_Add..."
 msgstr "/Rozhovor/_Pridať..."
 
-#: ../pidgin/gtkconv.c:2915
+#: ../pidgin/gtkconv.c:2978
 msgid "/Conversation/_Remove..."
 msgstr "/Rozhovor/_Odstrániť..."
 
-#: ../pidgin/gtkconv.c:2920
+#: ../pidgin/gtkconv.c:2983
 msgid "/Conversation/Insert Lin_k..."
 msgstr "/Rozhovor/Vložiť od_kaz..."
 
-#: ../pidgin/gtkconv.c:2922
+#: ../pidgin/gtkconv.c:2985
 msgid "/Conversation/Insert Imag_e..."
 msgstr "/Rozhovor/Vložiť _obrázok..."
 
-#: ../pidgin/gtkconv.c:2928
+#: ../pidgin/gtkconv.c:2991
 msgid "/Conversation/_Close"
 msgstr "/Rozhovor/_Zavrieť"
 
 #. Options
-#: ../pidgin/gtkconv.c:2932
+#: ../pidgin/gtkconv.c:2995
 msgid "/_Options"
 msgstr "/_Možnosti"
 
-#: ../pidgin/gtkconv.c:2933
+#: ../pidgin/gtkconv.c:2996
 msgid "/Options/Enable _Logging"
 msgstr "/Možnosti/Povoliť zaz_namenávanie"
 
-#: ../pidgin/gtkconv.c:2934
+#: ../pidgin/gtkconv.c:2997
 msgid "/Options/Enable _Sounds"
 msgstr "/Možnosti/Povoliť _zvuky"
 
-#: ../pidgin/gtkconv.c:2936
+#: ../pidgin/gtkconv.c:2999
 msgid "/Options/Show Formatting _Toolbars"
 msgstr "/Možnosti/Zobraziť panely formá_tovania"
 
-#: ../pidgin/gtkconv.c:2937
+#: ../pidgin/gtkconv.c:3000
 msgid "/Options/Show Ti_mestamps"
 msgstr "/Možnosti/Zobrazovať ča_sové značky"
 
-#: ../pidgin/gtkconv.c:3061
+#: ../pidgin/gtkconv.c:3124
 msgid "/Conversation/More"
 msgstr "/Rozhovor/Viac"
 
-#: ../pidgin/gtkconv.c:3117
+#: ../pidgin/gtkconv.c:3180
 msgid "/Options"
 msgstr "/_Možnosti"
 
@@ -14416,97 +14417,97 @@
 #. Make sure the 'Conversation -> More' menuitems are regenerated whenever
 #. * the 'Conversation' menu pops up because the entries can change after the
 #. * conversation is created.
-#: ../pidgin/gtkconv.c:3152 ../pidgin/gtkconv.c:3184
+#: ../pidgin/gtkconv.c:3215 ../pidgin/gtkconv.c:3247
 msgid "/Conversation"
 msgstr "/Rozhovor"
 
-#: ../pidgin/gtkconv.c:3192
+#: ../pidgin/gtkconv.c:3255
 msgid "/Conversation/View Log"
 msgstr "/Rozhovor/Zobraziť _záznam"
 
-#: ../pidgin/gtkconv.c:3198
+#: ../pidgin/gtkconv.c:3261
 msgid "/Conversation/Send File..."
 msgstr "/Rozhovor/Odos_lať súbor..."
 
-#: ../pidgin/gtkconv.c:3202
+#: ../pidgin/gtkconv.c:3265
 msgid "/Conversation/Add Buddy Pounce..."
 msgstr "/Rozhovor/Pridať _sledovanie priateľa..."
 
-#: ../pidgin/gtkconv.c:3208
+#: ../pidgin/gtkconv.c:3271
 msgid "/Conversation/Get Info"
 msgstr "/Rozhovor/_Zobraziť podrobnosti"
 
-#: ../pidgin/gtkconv.c:3212
+#: ../pidgin/gtkconv.c:3275
 msgid "/Conversation/Invite..."
 msgstr "/Rozhovor/Poz_vať..."
 
-#: ../pidgin/gtkconv.c:3218
+#: ../pidgin/gtkconv.c:3281
 msgid "/Conversation/Alias..."
 msgstr "/Rozhovor/Pre_zývka..."
 
-#: ../pidgin/gtkconv.c:3222
+#: ../pidgin/gtkconv.c:3285
 msgid "/Conversation/Block..."
 msgstr "/Rozhovor/_Blokovať..."
 
-#: ../pidgin/gtkconv.c:3226
+#: ../pidgin/gtkconv.c:3289
 msgid "/Conversation/Unblock..."
 msgstr "/Rozhovor/_Odblokovať..."
 
-#: ../pidgin/gtkconv.c:3230
+#: ../pidgin/gtkconv.c:3293
 msgid "/Conversation/Add..."
 msgstr "/Rozhovor/_Pridať..."
 
-#: ../pidgin/gtkconv.c:3234
+#: ../pidgin/gtkconv.c:3297
 msgid "/Conversation/Remove..."
 msgstr "/Rozhovor/Odstrániť..."
 
-#: ../pidgin/gtkconv.c:3240
+#: ../pidgin/gtkconv.c:3303
 msgid "/Conversation/Insert Link..."
 msgstr "/Rozhovor/Vložiť odkaz..."
 
-#: ../pidgin/gtkconv.c:3244
+#: ../pidgin/gtkconv.c:3307
 msgid "/Conversation/Insert Image..."
 msgstr "/Rozhovor/Vložiť obrázok..."
 
-#: ../pidgin/gtkconv.c:3250
+#: ../pidgin/gtkconv.c:3313
 msgid "/Options/Enable Logging"
 msgstr "/Možnosti/Povoliť zaz_namenávanie"
 
-#: ../pidgin/gtkconv.c:3253
+#: ../pidgin/gtkconv.c:3316
 msgid "/Options/Enable Sounds"
 msgstr "/Možnosti/Povoliť _zvuky"
 
-#: ../pidgin/gtkconv.c:3266
+#: ../pidgin/gtkconv.c:3329
 msgid "/Options/Show Formatting Toolbars"
 msgstr "/Možnosti/Zobraziť panely formá_tovania"
 
-#: ../pidgin/gtkconv.c:3269
+#: ../pidgin/gtkconv.c:3332
 msgid "/Options/Show Timestamps"
 msgstr "/Možnosti/Zobrazovať ča_sové značky"
 
-#: ../pidgin/gtkconv.c:3346 ../pidgin/gtkconv.c:3388
+#: ../pidgin/gtkconv.c:3409 ../pidgin/gtkconv.c:3451
 msgid "User is typing..."
 msgstr "Používateľ píše..."
 
-#: ../pidgin/gtkconv.c:3391
+#: ../pidgin/gtkconv.c:3454
 msgid "User has typed something and stopped"
 msgstr "Používateľ niečo napísal a prestal"
 
 #. Build the Send To menu
-#: ../pidgin/gtkconv.c:3574 ../pidgin/gtkconv.c:8022
-msgid "_Send To"
-msgstr "Po_slať cez"
-
-#: ../pidgin/gtkconv.c:4286
+#: ../pidgin/gtkconv.c:3637 ../pidgin/gtkconv.c:8105
+msgid "S_end To"
+msgstr "Odoslať do"
+
+#: ../pidgin/gtkconv.c:4349
 msgid "_Send"
 msgstr "Odo_slať"
 
 #. Setup the label telling how many people are in the room.
-#: ../pidgin/gtkconv.c:4390
+#: ../pidgin/gtkconv.c:4453
 msgid "0 people in room"
 msgstr "V miestnosti je 0 osôb"
 
-#: ../pidgin/gtkconv.c:5759 ../pidgin/gtkconv.c:5880
+#: ../pidgin/gtkconv.c:5823 ../pidgin/gtkconv.c:5944
 #, c-format
 msgid "%d person in room"
 msgid_plural "%d people in room"
@@ -14514,75 +14515,75 @@
 msgstr[1] "V miestnosti je %d osoba"
 msgstr[2] "V miestnosti sú %d osoby"
 
-#: ../pidgin/gtkconv.c:6486 ../pidgin/gtkstatusbox.c:660
+#: ../pidgin/gtkconv.c:6550 ../pidgin/gtkstatusbox.c:660
 msgid "Typing"
 msgstr "Píše"
 
-#: ../pidgin/gtkconv.c:6490
+#: ../pidgin/gtkconv.c:6554
 msgid "Stopped Typing"
 msgstr "Prestal písať"
 
-#: ../pidgin/gtkconv.c:6493
+#: ../pidgin/gtkconv.c:6557
 msgid "Nick Said"
 msgstr "Používateľ napísal"
 
-#: ../pidgin/gtkconv.c:6496 ../pidgin/gtkdocklet.c:492
+#: ../pidgin/gtkconv.c:6560 ../pidgin/gtkdocklet.c:492
 msgid "Unread Messages"
 msgstr "Neprečítané správy"
 
-#: ../pidgin/gtkconv.c:6499
+#: ../pidgin/gtkconv.c:6563
 msgid "New Event"
 msgstr "Nová udalosť"
 
-#: ../pidgin/gtkconv.c:7572
+#: ../pidgin/gtkconv.c:7656
 msgid "clear: Clears all conversation scrollbacks."
 msgstr "clear: Vyčistí všetky záznamy konverzácie."
 
-#: ../pidgin/gtkconv.c:7736
+#: ../pidgin/gtkconv.c:7819
 msgid "Confirm close"
 msgstr "Potvrdenie uzavrenia"
 
-#: ../pidgin/gtkconv.c:7768
+#: ../pidgin/gtkconv.c:7851
 msgid "You have unread messages. Are you sure you want to close the window?"
 msgstr "Máte neprečítané správy. Naozaj chcete zavrieť toto okno?"
 
-#: ../pidgin/gtkconv.c:8355
+#: ../pidgin/gtkconv.c:8438
 msgid "Close other tabs"
 msgstr "Zavrieť ostatné karty"
 
-#: ../pidgin/gtkconv.c:8361
+#: ../pidgin/gtkconv.c:8444
 msgid "Close all tabs"
 msgstr "Zavrieť všetky karty"
 
-#: ../pidgin/gtkconv.c:8369
+#: ../pidgin/gtkconv.c:8452
 msgid "Detach this tab"
 msgstr "Odpojiť túto kartu"
 
-#: ../pidgin/gtkconv.c:8375
+#: ../pidgin/gtkconv.c:8458
 msgid "Close this tab"
 msgstr "Zavrieť túto kartu"
 
-#: ../pidgin/gtkconv.c:8875
+#: ../pidgin/gtkconv.c:8955
 msgid "Close conversation"
 msgstr "Zavrieť rozhovor"
 
-#: ../pidgin/gtkconv.c:9477
+#: ../pidgin/gtkconv.c:9557
 msgid "Last created window"
 msgstr "Naposledy otvorené okno"
 
-#: ../pidgin/gtkconv.c:9479
+#: ../pidgin/gtkconv.c:9559
 msgid "Separate IM and Chat windows"
 msgstr "Oddeľovať okná správ a chatov"
 
-#: ../pidgin/gtkconv.c:9481 ../pidgin/gtkprefs.c:1415
+#: ../pidgin/gtkconv.c:9561 ../pidgin/gtkprefs.c:1417
 msgid "New window"
 msgstr "V novom okne"
 
-#: ../pidgin/gtkconv.c:9483
+#: ../pidgin/gtkconv.c:9563
 msgid "By group"
 msgstr "Podľa skupiny"
 
-#: ../pidgin/gtkconv.c:9485
+#: ../pidgin/gtkconv.c:9565
 msgid "By account"
 msgstr "Podľa účtu"
 
@@ -14713,7 +14714,7 @@
 
 #: ../pidgin/gtkdialogs.c:135
 msgid "Belarusian Latin"
-msgstr ""
+msgstr "bieloruština, latinka"
 
 #: ../pidgin/gtkdialogs.c:136 ../pidgin/gtkdialogs.c:137
 #: ../pidgin/gtkdialogs.c:227
@@ -14736,7 +14737,7 @@
 
 #: ../pidgin/gtkdialogs.c:144 ../pidgin/gtkdialogs.c:145
 msgid "Valencian-Catalan"
-msgstr "katalánčina (Valencia)"
+msgstr "katalánčina, valencijčina"
 
 #: ../pidgin/gtkdialogs.c:146 ../pidgin/gtkdialogs.c:230
 msgid "Czech"
@@ -14809,15 +14810,15 @@
 #: ../pidgin/gtkdialogs.c:169 ../pidgin/gtkdialogs.c:170
 #: ../pidgin/gtkdialogs.c:242
 msgid "Galician"
-msgstr "Galícky"
+msgstr "galícijčina"
 
 #: ../pidgin/gtkdialogs.c:171 ../pidgin/gtkdialogs.c:172
 msgid "Gujarati"
-msgstr "Gudžarati"
+msgstr "gudžarátčina"
 
 #: ../pidgin/gtkdialogs.c:172
 msgid "Gujarati Language Team"
-msgstr "gudžarátsky jazykový tím"
+msgstr "gudžarátsky jazykový tým"
 
 #: ../pidgin/gtkdialogs.c:173 ../pidgin/gtkdialogs.c:243
 msgid "Hebrew"
@@ -14850,7 +14851,7 @@
 
 #: ../pidgin/gtkdialogs.c:179
 msgid "Ubuntu Georgian Translators"
-msgstr "Ubuntu gruzínsky prekladatelia"
+msgstr "Ubuntu gruzínski prekladatelia"
 
 #: ../pidgin/gtkdialogs.c:180
 msgid "Kannada"
@@ -14858,7 +14859,7 @@
 
 #: ../pidgin/gtkdialogs.c:180
 msgid "Kannada Translation team"
-msgstr "kanaadsky prekladateľký tím"
+msgstr "kannádsky prekladateľský tím"
 
 #: ../pidgin/gtkdialogs.c:181 ../pidgin/gtkdialogs.c:250
 #: ../pidgin/gtkdialogs.c:251
@@ -14871,9 +14872,8 @@
 msgstr "kurdčina"
 
 #: ../pidgin/gtkdialogs.c:185
-#, fuzzy
 msgid "Lao"
-msgstr "Lev"
+msgstr "laoština"
 
 #: ../pidgin/gtkdialogs.c:186 ../pidgin/gtkdialogs.c:252
 #: ../pidgin/gtkdialogs.c:253
@@ -15023,7 +15023,6 @@
 "„COPYRIGHT“. Na tento program vám neposkytujeme žiadnu záruku.<BR><BR>"
 
 #: ../pidgin/gtkdialogs.c:418
-#, c-format
 msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
 msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin na irc.freenode.net<BR><BR>"
 
@@ -15059,6 +15058,16 @@
 msgid "Debugging Information"
 msgstr "Ladiace informácie"
 
+#: ../pidgin/gtkdialogs.c:754 ../pidgin/gtkdialogs.c:893
+#: ../pidgin/gtkdialogs.c:974
+msgid "_Name"
+msgstr "_Meno"
+
+#: ../pidgin/gtkdialogs.c:759 ../pidgin/gtkdialogs.c:898
+#: ../pidgin/gtkdialogs.c:979
+msgid "_Account"
+msgstr "Úč_et"
+
 #: ../pidgin/gtkdialogs.c:906
 msgid "Get User Info"
 msgstr "Zobraziť podrobnosti o používateľovi"
@@ -15219,8 +15228,7 @@
 msgstr "Vypnúť zvuky"
 
 #: ../pidgin/gtkdocklet.c:535
-#, fuzzy
-msgid "Blink on new message"
+msgid "Blink on New Message"
 msgstr "Blikať pri novej správe"
 
 #: ../pidgin/gtkdocklet.c:542
@@ -15317,7 +15325,7 @@
 msgid "Paste as Plain _Text"
 msgstr "_Vložiť ako čistý text"
 
-#: ../pidgin/gtkimhtml.c:833 ../pidgin/gtkimhtmltoolbar.c:1194
+#: ../pidgin/gtkimhtml.c:833 ../pidgin/gtkimhtmltoolbar.c:1195
 msgid "_Reset formatting"
 msgstr "Vymazať formátovanie"
 
@@ -15396,7 +15404,6 @@
 msgstr "Uložiť obrázok"
 
 #: ../pidgin/gtkimhtml.c:3522
-#, c-format
 msgid "_Save Image..."
 msgstr "_Uložiť obrázok..."
 
@@ -15434,7 +15441,7 @@
 msgid "Insert Link"
 msgstr "Vložiť odkaz"
 
-#: ../pidgin/gtkimhtmltoolbar.c:434 ../pidgin/gtkimhtmltoolbar.c:1262
+#: ../pidgin/gtkimhtmltoolbar.c:434 ../pidgin/gtkimhtmltoolbar.c:1263
 msgid "_Insert"
 msgstr "_Vložiť"
 
@@ -15456,18 +15463,17 @@
 msgid "Smile!"
 msgstr "Smajlík!"
 
-#: ../pidgin/gtkimhtmltoolbar.c:846 ../pidgin/gtkimhtmltoolbar.c:1219
+#: ../pidgin/gtkimhtmltoolbar.c:846 ../pidgin/gtkimhtmltoolbar.c:1220
 msgid "_Font"
 msgstr "_Písmo"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1054
-#, fuzzy
 msgid "Group Items"
-msgstr "ID skupiny"
+msgstr "Zoskupiť položky"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1054
 msgid "Ungroup Items"
-msgstr ""
+msgstr "Nezoskupiť položky"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1088 ../pidgin/plugins/convcolors.c:287
 msgid "Bold"
@@ -15483,105 +15489,99 @@
 
 #: ../pidgin/gtkimhtmltoolbar.c:1091
 msgid "Strikethrough"
-msgstr ""
+msgstr "Prečiarknuté"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1093
 msgid "Increase Font Size"
-msgstr ""
+msgstr "Zväčšiť velkosť písma"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1094
 msgid "Decrease Font Size"
-msgstr ""
+msgstr "Zmenšiť velkosť písma"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1096
-#, fuzzy
 msgid "Font Face"
-msgstr "_Rez písma"
+msgstr "Rez písma"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1097
-#, fuzzy
 msgid "Background Color"
-msgstr "Farba po_zadia"
+msgstr "Farba pozadia"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1098
-#, fuzzy
 msgid "Foreground Color"
-msgstr "Farba _popredia"
+msgstr "Farba popredia"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1100
-#, fuzzy
 msgid "Reset Formatting"
 msgstr "Vymazať formátovanie"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1103
-#, fuzzy
 msgid "Insert IM Image"
 msgstr "Vložiť obrázok"
 
 #: ../pidgin/gtkimhtmltoolbar.c:1104
-#, fuzzy
 msgid "Insert Smiley"
-msgstr "Vložiť obrázok"
-
-#: ../pidgin/gtkimhtmltoolbar.c:1179
+msgstr "Vložiť smajlíka"
+
+#: ../pidgin/gtkimhtmltoolbar.c:1180
 msgid "<b>_Bold</b>"
 msgstr "<b>_Tučné:</b>"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1180
+#: ../pidgin/gtkimhtmltoolbar.c:1181
 msgid "<i>_Italic</i>"
 msgstr "<i>_Kurzíva</i>"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1181
+#: ../pidgin/gtkimhtmltoolbar.c:1182
 msgid "<u>_Underline</u>"
 msgstr "<u>_Podčiarknuté</u>"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1182
+#: ../pidgin/gtkimhtmltoolbar.c:1183
 msgid "<span strikethrough='true'>Strikethrough</span>"
 msgstr "<span size='larger'>Preškrtnuté</span>"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1183
+#: ../pidgin/gtkimhtmltoolbar.c:1184
 msgid "<span size='larger'>_Larger</span>"
 msgstr "<span size='larger'>_Väčšie</span>"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1185
+#: ../pidgin/gtkimhtmltoolbar.c:1186
 msgid "_Normal"
 msgstr "_Normálne"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1187
+#: ../pidgin/gtkimhtmltoolbar.c:1188
 msgid "<span size='smaller'>_Smaller</span>"
 msgstr "<span size='smaller'>_Menšie</span>"
 
 #. If we want to show the formatting for the following items, we would
 #. * need to update them when formatting changes. The above items don't need
 #. * no updating nor nothin'
-#: ../pidgin/gtkimhtmltoolbar.c:1191
+#: ../pidgin/gtkimhtmltoolbar.c:1192
 msgid "_Font face"
 msgstr "_Rez písma"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1192
+#: ../pidgin/gtkimhtmltoolbar.c:1193
 msgid "Foreground _color"
 msgstr "Farba _popredia"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1193
+#: ../pidgin/gtkimhtmltoolbar.c:1194
 msgid "Bac_kground color"
 msgstr "Farba po_zadia"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1270
-msgid "_Smiley"
-msgstr "_Smajlík"
-
-#: ../pidgin/gtkimhtmltoolbar.c:1276
+#: ../pidgin/gtkimhtmltoolbar.c:1271
 msgid "_Image"
 msgstr "O_brázok"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1282
+#: ../pidgin/gtkimhtmltoolbar.c:1277
 msgid "_Link"
 msgstr "_Odkaz"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1288
+#: ../pidgin/gtkimhtmltoolbar.c:1283
 msgid "_Horizontal rule"
 msgstr "_Vodorovná čiara"
 
+#: ../pidgin/gtkimhtmltoolbar.c:1305
+msgid "_Smile!"
+msgstr "_Smajlík!"
+
 #: ../pidgin/gtklog.c:293
 #, c-format
 msgid ""
@@ -15676,7 +15676,7 @@
 msgstr "%s %s. „%s -h“ zobrazí viac informácií.\n"
 
 #: ../pidgin/gtkmain.c:388
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "%s %s\n"
 "Usage: %s [OPTION]...\n"
@@ -15688,6 +15688,7 @@
 "  -n, --nologin       don't automatically login\n"
 "  -l, --login[=NAME]  automatically login (optional argument NAME specifies\n"
 "                      account(s) to use, separated by commas)\n"
+"  --display=DISPLAY   X display to use\n"
 "  -v, --version       display the current version and exit\n"
 msgstr ""
 "%s %s\n"
@@ -15696,16 +15697,18 @@
 "  -c, --config=DIR    pre konfiguračné súbory použije DIR\n"
 "  -d, --debug         vkladá ladiace informácie do stdout\n"
 "  -h, --help          zobrazí túto pomoc a skončí\n"
+"  -m, --multiple      neobmedzí počet inštancií na jednu\n"
 "  -n, --nologin       neprihlasovať automaticky\n"
 "  -l, --login[=MENO]  automatické prihlásenie (voliteľný argument MENO "
 "určuje\n"
 "                      účty oddeľované čiarkami)\n"
+"  --display=DISPLAY   X obrazovka, ktoru použiť\n"
 "  -v, --version       zobrazí verziu programu a skončí\n"
 
-#: ../pidgin/gtkmain.c:512
-#, fuzzy, c-format
-msgid ""
-"%s has segfaulted and attempted to dump a core file.\n"
+#: ../pidgin/gtkmain.c:516
+#, c-format
+msgid ""
+"%s %s has segfaulted and attempted to dump a core file.\n"
 "This is a bug in the software and has happened through\n"
 "no fault of your own.\n"
 "\n"
@@ -15723,16 +15726,17 @@
 "on other protocols is at\n"
 "%swiki/DeveloperPages\n"
 msgstr ""
-"Program %s vrátil chybu segmentácie a pokúsil o výpis pamäte súboru jadra.\n"
-"Je to spôsobené chybou v programe, a stalo sa tak bez vášho zavinenia.\n"
+"Program %s %s vrátil chybu segmentácie a pokúsil o výpis pamäte súboru "
+"jadra.\n"
+"Je to spôsobené chybou v programe, a stalo sa to aj bez vášho zavinenia.\n"
 "\n"
 "Ak dokážete túto chybu zopakovať, kontaktujte, prosím, vývojárov programu\n"
 "tak, že nahlásite chybu na:\n"
 "%ssimpleticket/\n"
 "\n"
 "V hlásení nezabudnite tiež napísať čo presne ste robili, a\n"
-"vložte aj backtrace zo súboru jadra.  Ak neviete, ako získať\n"
-"backtrace, prečítajte si, prosím, návod na adrese:\n"
+"vložte aj spätný výpis zo súboru jadra.  Ak neviete, ako získať\n"
+"spätný výpis, prečítajte si, prosím, návod na adrese:\n"
 "%swiki/GetABacktrace\n"
 "\n"
 "Ak potrebujete ďalšiu pomoc, napíšte buď SeanEgnovi alebo \n"
@@ -15742,7 +15746,7 @@
 
 #. Translators may want to transliterate the name.
 #. It is not to be translated.
-#: ../pidgin/gtkmain.c:699 ../pidgin/pidgin.h:51
+#: ../pidgin/gtkmain.c:706 ../pidgin/pidgin.h:51
 msgid "Pidgin"
 msgstr "Pidgin"
 
@@ -15754,7 +15758,7 @@
 msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
 msgstr "<span weight=\"bold\" size=\"larger\">Máte poštu!</span>"
 
-#: ../pidgin/gtknotify.c:540
+#: ../pidgin/gtknotify.c:545
 #, c-format
 msgid "%s has %d new message."
 msgid_plural "%s has %d new messages."
@@ -15762,30 +15766,30 @@
 msgstr[1] "Používateľ %s má %d novú správu."
 msgstr[2] "Používateľ %s má %d nové správy."
 
-#: ../pidgin/gtknotify.c:564
-#, fuzzy, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
-msgstr[0] "<b>Máte %d nových e-mailov.</b>"
-msgstr[1] "<b>Máte %d nový e-mail.</b>"
-msgstr[2] "<b>Máte %d nové e-maily.</b>"
-
-#: ../pidgin/gtknotify.c:989
+#: ../pidgin/gtknotify.c:569
+#, c-format
+msgid "<b>%d new e-mail.</b>"
+msgid_plural "<b>%d new e-mails.</b>"
+msgstr[0] "<b>%d nových e-mailov.</b>"
+msgstr[1] "<b>%d nový e-mail.</b>"
+msgstr[2] "<b>%d nové e-maily.</b>"
+
+#: ../pidgin/gtknotify.c:996
 #, c-format
 msgid "The browser command \"%s\" is invalid."
 msgstr "Príkaz prehliadača „%s“ je chybný."
 
-#: ../pidgin/gtknotify.c:991 ../pidgin/gtknotify.c:1003
-#: ../pidgin/gtknotify.c:1016 ../pidgin/gtknotify.c:1144
+#: ../pidgin/gtknotify.c:998 ../pidgin/gtknotify.c:1010
+#: ../pidgin/gtknotify.c:1023 ../pidgin/gtknotify.c:1151
 msgid "Unable to open URL"
 msgstr "Nepodarilo sa otvoriť URL"
 
-#: ../pidgin/gtknotify.c:1001 ../pidgin/gtknotify.c:1014
+#: ../pidgin/gtknotify.c:1008 ../pidgin/gtknotify.c:1021
 #, c-format
 msgid "Error launching \"%s\": %s"
 msgstr "Chyba počas spúšťania „%s“: %s"
 
-#: ../pidgin/gtknotify.c:1145
+#: ../pidgin/gtknotify.c:1152
 msgid ""
 "The 'Manual' browser command has been chosen, but no command has been set."
 msgstr "Vybrali ste možnosť „Ručne“, ale nenastavili ste príkaz prehliadača."
@@ -15837,95 +15841,95 @@
 msgstr "Vyberte súbor"
 
 #. Create the "Pounce on Whom" frame.
-#: ../pidgin/gtkpounce.c:532
+#: ../pidgin/gtkpounce.c:539
 msgid "Pounce on Whom"
 msgstr "Koho sledovať"
 
-#: ../pidgin/gtkpounce.c:559
+#: ../pidgin/gtkpounce.c:566
 msgid "_Buddy name:"
 msgstr "_Meno priateľa:"
 
-#: ../pidgin/gtkpounce.c:593
+#: ../pidgin/gtkpounce.c:600
 msgid "Si_gns on"
 msgstr "_Prihlási sa"
 
-#: ../pidgin/gtkpounce.c:595
+#: ../pidgin/gtkpounce.c:602
 msgid "Signs o_ff"
 msgstr "_Odhlási sa"
 
-#: ../pidgin/gtkpounce.c:597
+#: ../pidgin/gtkpounce.c:604
 msgid "Goes a_way"
 msgstr "Stane sa neprítomný"
 
-#: ../pidgin/gtkpounce.c:599
+#: ../pidgin/gtkpounce.c:606
 msgid "Ret_urns from away"
 msgstr "Prestane byť neprítomný"
 
-#: ../pidgin/gtkpounce.c:601
+#: ../pidgin/gtkpounce.c:608
 msgid "Becomes _idle"
 msgstr "Stane sa _nečinným"
 
-#: ../pidgin/gtkpounce.c:603
+#: ../pidgin/gtkpounce.c:610
 msgid "Is no longer i_dle"
 msgstr "Prestane byť n_ečinný"
 
-#: ../pidgin/gtkpounce.c:605
+#: ../pidgin/gtkpounce.c:612
 msgid "Starts _typing"
 msgstr "Začne _písať"
 
-#: ../pidgin/gtkpounce.c:607
+#: ../pidgin/gtkpounce.c:614
 msgid "P_auses while typing"
 msgstr "Preruší pís_anie"
 
-#: ../pidgin/gtkpounce.c:609
+#: ../pidgin/gtkpounce.c:616
 msgid "Stops t_yping"
 msgstr "Prestane pí_sať"
 
-#: ../pidgin/gtkpounce.c:611
+#: ../pidgin/gtkpounce.c:618
 msgid "Sends a _message"
 msgstr "Pošle _správu"
 
-#: ../pidgin/gtkpounce.c:654
+#: ../pidgin/gtkpounce.c:661
 msgid "Ope_n an IM window"
 msgstr "Ot_voriť okno správ"
 
-#: ../pidgin/gtkpounce.c:656
+#: ../pidgin/gtkpounce.c:663
 msgid "_Pop up a notification"
 msgstr "_Zobraziť upozornenie"
 
-#: ../pidgin/gtkpounce.c:658
+#: ../pidgin/gtkpounce.c:665
 msgid "Send a _message"
 msgstr "Odoslať _správu"
 
-#: ../pidgin/gtkpounce.c:660
+#: ../pidgin/gtkpounce.c:667
 msgid "E_xecute a command"
 msgstr "Spustiť _príkaz"
 
-#: ../pidgin/gtkpounce.c:662
+#: ../pidgin/gtkpounce.c:669
 msgid "P_lay a sound"
 msgstr "Prehrať _zvuk"
 
-#: ../pidgin/gtkpounce.c:668
+#: ../pidgin/gtkpounce.c:675
 msgid "Brows_e..."
 msgstr "P_rehľadávať..."
 
-#: ../pidgin/gtkpounce.c:670
+#: ../pidgin/gtkpounce.c:677
 msgid "Br_owse..."
 msgstr "Prehľadávať..."
 
-#: ../pidgin/gtkpounce.c:671
+#: ../pidgin/gtkpounce.c:678
 msgid "Pre_view"
 msgstr "_Náhľad"
 
-#: ../pidgin/gtkpounce.c:798
+#: ../pidgin/gtkpounce.c:805
 msgid "P_ounce only when my status is not Available"
 msgstr "Sledovať, len ak som neprítomný"
 
-#: ../pidgin/gtkpounce.c:803
+#: ../pidgin/gtkpounce.c:810
 msgid "_Recurring"
 msgstr "_Opakujúce sa"
 
-#: ../pidgin/gtkpounce.c:1246
+#: ../pidgin/gtkpounce.c:1253
 msgid "Pounce Target"
 msgstr "Cieľ sledovania"
 
@@ -15975,7 +15979,7 @@
 msgid "_Hide new IM conversations:"
 msgstr "_Skrývať nové rozhovory:"
 
-#: ../pidgin/gtkprefs.c:908 ../pidgin/gtkprefs.c:1944
+#: ../pidgin/gtkprefs.c:908 ../pidgin/gtkprefs.c:1946
 msgid "When away"
 msgstr "Pri neprítomnosti"
 
@@ -16028,55 +16032,59 @@
 msgid "Show _formatting on incoming messages"
 msgstr "Zobrazovať _formátovanie v prichádzajúcich správach"
 
-#: ../pidgin/gtkprefs.c:998
-msgid "Show _detailed information"
-msgstr "Zobraziť detailné informácie"
+#: ../pidgin/gtkprefs.c:997
+msgid "Close IMs immediately when the tab is closed"
+msgstr "Zavrieť rozhovory v momente, keď zavriete kartu"
 
 #: ../pidgin/gtkprefs.c:1000
+msgid "Show _detailed information"
+msgstr "Zobraziť detailné informácie"
+
+#: ../pidgin/gtkprefs.c:1002
 msgid "Enable buddy ic_on animation"
 msgstr "Povoliť _animované obrázky priateľov"
 
-#: ../pidgin/gtkprefs.c:1007
+#: ../pidgin/gtkprefs.c:1009
 msgid "_Notify buddies that you are typing to them"
 msgstr "_Zobrazovať priateľom, že im píšete"
 
-#: ../pidgin/gtkprefs.c:1010
+#: ../pidgin/gtkprefs.c:1012
 msgid "Highlight _misspelled words"
 msgstr "Zvýrazňovať _nesprávne napísané slová"
 
-#: ../pidgin/gtkprefs.c:1014
+#: ../pidgin/gtkprefs.c:1016
 msgid "Use smooth-scrolling"
 msgstr "Používať hladké posúvanie"
 
-#: ../pidgin/gtkprefs.c:1017
-msgid "F_lash window when IMs are received"
-msgstr "Blikanie okna po prijatí správy"
-
 #: ../pidgin/gtkprefs.c:1019
+msgid "F_lash window when IMs are received"
+msgstr "Blikanie okna po prijatí správy"
+
+#: ../pidgin/gtkprefs.c:1021
 msgid "Minimi_ze new conversation windows"
 msgstr "Minimali_zovať nové konverzácie"
 
-#: ../pidgin/gtkprefs.c:1023
+#: ../pidgin/gtkprefs.c:1025
 msgid "Font"
 msgstr "Písmo"
 
-#: ../pidgin/gtkprefs.c:1025
-msgid "Use document font from _theme"
-msgstr "Použiť písmo dokumentov _témy"
-
 #: ../pidgin/gtkprefs.c:1027
+msgid "Use document font from _theme"
+msgstr "Použiť písmo dokumentov _témy"
+
+#: ../pidgin/gtkprefs.c:1029
 msgid "Use font from _theme"
 msgstr "Použiť písmo _témy"
 
-#: ../pidgin/gtkprefs.c:1029
+#: ../pidgin/gtkprefs.c:1031
 msgid "Conversation _font:"
 msgstr "Písmo konverzácie:"
 
-#: ../pidgin/gtkprefs.c:1043
+#: ../pidgin/gtkprefs.c:1045
 msgid "Default Formatting"
 msgstr "Štandardné formátovanie"
 
-#: ../pidgin/gtkprefs.c:1062
+#: ../pidgin/gtkprefs.c:1064
 msgid ""
 "This is how your outgoing message text will appear when you use protocols "
 "that support formatting."
@@ -16084,119 +16092,119 @@
 "Takto bude vyzerať text odchádzajúcich správ pri použití protokolu, ktorý "
 "podporuje formátovanie."
 
-#: ../pidgin/gtkprefs.c:1128
+#: ../pidgin/gtkprefs.c:1130
 msgid "ST_UN server:"
 msgstr "ST_UN server:"
 
-#: ../pidgin/gtkprefs.c:1140
+#: ../pidgin/gtkprefs.c:1142
 msgid "<span style=\"italic\">Example: stunserver.org</span>"
 msgstr "<span style=\"italic\">Príklad: stunserver.org</span>"
 
-#: ../pidgin/gtkprefs.c:1144
+#: ../pidgin/gtkprefs.c:1146
 msgid "_Autodetect IP address"
 msgstr "_Automaticky zistiť IP adresu"
 
-#: ../pidgin/gtkprefs.c:1153
+#: ../pidgin/gtkprefs.c:1155
 msgid "Public _IP:"
 msgstr "Verejná _IP adresa:"
 
-#: ../pidgin/gtkprefs.c:1182
+#: ../pidgin/gtkprefs.c:1184
 msgid "Ports"
 msgstr "Porty"
 
-#: ../pidgin/gtkprefs.c:1185
+#: ../pidgin/gtkprefs.c:1187
 msgid "_Manually specify range of ports to listen on"
 msgstr "_Ručne určiť rozsah portov, na ktorých počúvať"
 
-#: ../pidgin/gtkprefs.c:1188
+#: ../pidgin/gtkprefs.c:1190
 msgid "_Start port:"
 msgstr "_Počiatočný port:"
 
-#: ../pidgin/gtkprefs.c:1195
+#: ../pidgin/gtkprefs.c:1197
 msgid "_End port:"
-msgstr "_Konečný port:"
-
-#: ../pidgin/gtkprefs.c:1203
+msgstr "_Koncový port:"
+
+#: ../pidgin/gtkprefs.c:1205
 msgid "Proxy Server"
 msgstr "Proxy server"
 
-#: ../pidgin/gtkprefs.c:1207
+#: ../pidgin/gtkprefs.c:1209
 msgid "No proxy"
 msgstr "Bez proxy"
 
-#: ../pidgin/gtkprefs.c:1263
+#: ../pidgin/gtkprefs.c:1265
 msgid "_User:"
-msgstr "Používateľ:"
-
-#: ../pidgin/gtkprefs.c:1328
+msgstr "Po_užívateľ:"
+
+#: ../pidgin/gtkprefs.c:1330
 msgid "Seamonkey"
 msgstr "Seamonkey"
 
-#: ../pidgin/gtkprefs.c:1329
-msgid "Opera"
-msgstr "Opera"
-
-#: ../pidgin/gtkprefs.c:1330
-msgid "Netscape"
-msgstr "Netscape"
-
 #: ../pidgin/gtkprefs.c:1331
-msgid "Mozilla"
-msgstr "Mozilla"
+msgid "Opera"
+msgstr "Opera"
 
 #: ../pidgin/gtkprefs.c:1332
-msgid "Konqueror"
-msgstr "Konqueror"
+msgid "Netscape"
+msgstr "Netscape"
 
 #: ../pidgin/gtkprefs.c:1333
-msgid "GNOME Default"
-msgstr "GNOME štandard"
+msgid "Mozilla"
+msgstr "Mozilla"
 
 #: ../pidgin/gtkprefs.c:1334
+msgid "Konqueror"
+msgstr "Konqueror"
+
+#: ../pidgin/gtkprefs.c:1335
+msgid "GNOME Default"
+msgstr "GNOME štandard"
+
+#: ../pidgin/gtkprefs.c:1336
 msgid "Galeon"
 msgstr "Galeon"
 
-#: ../pidgin/gtkprefs.c:1335
+#: ../pidgin/gtkprefs.c:1337
 msgid "Firefox"
 msgstr "Firefox"
 
-#: ../pidgin/gtkprefs.c:1336
+#: ../pidgin/gtkprefs.c:1338
 msgid "Firebird"
 msgstr "Firebird"
 
-#: ../pidgin/gtkprefs.c:1337
+#: ../pidgin/gtkprefs.c:1339
 msgid "Epiphany"
 msgstr "Epiphany"
 
-#: ../pidgin/gtkprefs.c:1346
+#: ../pidgin/gtkprefs.c:1348
 msgid "Manual"
 msgstr "Ručné"
 
-#: ../pidgin/gtkprefs.c:1399
+#: ../pidgin/gtkprefs.c:1401
 msgid "Browser Selection"
 msgstr "Výber prehliadača"
 
-#: ../pidgin/gtkprefs.c:1403
+#: ../pidgin/gtkprefs.c:1405
 msgid "_Browser:"
 msgstr "_Prehliadač:"
 
-#: ../pidgin/gtkprefs.c:1411
+#: ../pidgin/gtkprefs.c:1413
 msgid "_Open link in:"
 msgstr "_Otvoriť odkaz:"
 
-#: ../pidgin/gtkprefs.c:1413
+#: ../pidgin/gtkprefs.c:1415
 msgid "Browser default"
 msgstr "Podľa prehliadača"
 
-#: ../pidgin/gtkprefs.c:1414
+#: ../pidgin/gtkprefs.c:1416
 msgid "Existing window"
 msgstr "V otvorenom okne"
 
-#: ../pidgin/gtkprefs.c:1416
+#: ../pidgin/gtkprefs.c:1418
 msgid "New tab"
 msgstr "Na novej karte"
 
-#: ../pidgin/gtkprefs.c:1430
+#: ../pidgin/gtkprefs.c:1432
 #, c-format
 msgid ""
 "_Manual:\n"
@@ -16205,69 +16213,63 @@
 "_Ručne:\n"
 "(%s for URL)"
 
-#: ../pidgin/gtkprefs.c:1470
+#: ../pidgin/gtkprefs.c:1472
 msgid "Log _format:"
 msgstr "_Formát záznamu:"
 
-#: ../pidgin/gtkprefs.c:1475
+#: ../pidgin/gtkprefs.c:1477
 msgid "Log all _instant messages"
 msgstr "Zaznamenávať všetky _správy"
 
-#: ../pidgin/gtkprefs.c:1477
+#: ../pidgin/gtkprefs.c:1479
 msgid "Log all c_hats"
 msgstr "Zaznamenávať všetky c_haty"
 
-#: ../pidgin/gtkprefs.c:1479
+#: ../pidgin/gtkprefs.c:1481
 msgid "Log all _status changes to system log"
 msgstr "Zaznamenávať do systémového záznamu všetky zmeny _stavu"
 
-#: ../pidgin/gtkprefs.c:1625
+#: ../pidgin/gtkprefs.c:1627
 msgid "Sound Selection"
 msgstr "Výber zvuku"
 
-#: ../pidgin/gtkprefs.c:1635
-#, c-format
+#: ../pidgin/gtkprefs.c:1637
 msgid "Quietest"
 msgstr "Najtichšia"
 
-#: ../pidgin/gtkprefs.c:1637
-#, c-format
-msgid "Quieter"
-msgstr "Tichšia"
-
 #: ../pidgin/gtkprefs.c:1639
-#, c-format
+msgid "Quieter"
+msgstr "Tichšia"
+
+#: ../pidgin/gtkprefs.c:1641
 msgid "Quiet"
 msgstr "Tichá"
 
-#: ../pidgin/gtkprefs.c:1643
-#, c-format
+#: ../pidgin/gtkprefs.c:1645
 msgid "Loud"
 msgstr "Hlasná"
 
-#: ../pidgin/gtkprefs.c:1645
-#, c-format
-msgid "Louder"
-msgstr "Hlasnejšia"
-
 #: ../pidgin/gtkprefs.c:1647
-#, c-format
+msgid "Louder"
+msgstr "Hlasnejšia"
+
+#: ../pidgin/gtkprefs.c:1649
 msgid "Loudest"
 msgstr "Najhlasnejšia"
 
-#: ../pidgin/gtkprefs.c:1713
-msgid "_Method:"
-msgstr "_Spôsob:"
-
 #: ../pidgin/gtkprefs.c:1715
+msgid "_Method:"
+msgstr "_Spôsob:"
+
+#: ../pidgin/gtkprefs.c:1717
 msgid "Console beep"
 msgstr "Pípnutie konzoly"
 
-#: ../pidgin/gtkprefs.c:1722
+#: ../pidgin/gtkprefs.c:1724
 msgid "No sounds"
 msgstr "Žiadne zvuky"
 
-#: ../pidgin/gtkprefs.c:1730
+#: ../pidgin/gtkprefs.c:1732
 #, c-format
 msgid ""
 "Sound c_ommand:\n"
@@ -16276,81 +16278,81 @@
 "Príkaz zvuku:\n"
 "(%s pre názov súboru)"
 
-#: ../pidgin/gtkprefs.c:1757
+#: ../pidgin/gtkprefs.c:1759
 msgid "Sounds when conversation has _focus"
 msgstr "Prehrávať zvuky, keď je okno koverzácie _aktívne"
 
-#: ../pidgin/gtkprefs.c:1759
+#: ../pidgin/gtkprefs.c:1761
 msgid "Enable sounds:"
 msgstr "Povoliť zvuky:"
 
-#: ../pidgin/gtkprefs.c:1770
+#: ../pidgin/gtkprefs.c:1772
 msgid "Volume:"
 msgstr "Hlasitosť:"
 
-#: ../pidgin/gtkprefs.c:1850
+#: ../pidgin/gtkprefs.c:1852
 msgid "Play"
 msgstr "Prehrať"
 
-#: ../pidgin/gtkprefs.c:1927
+#: ../pidgin/gtkprefs.c:1929
 msgid "_Report idle time:"
 msgstr "_Oznamovať čas nečinnosti:"
 
-#: ../pidgin/gtkprefs.c:1932
+#: ../pidgin/gtkprefs.c:1934
 msgid "Based on keyboard or mouse use"
 msgstr "Podľa využitia klávesnice alebo myši"
 
-#: ../pidgin/gtkprefs.c:1941
+#: ../pidgin/gtkprefs.c:1943
 msgid "_Auto-reply:"
 msgstr "_Automatická odpoveď:"
 
-#: ../pidgin/gtkprefs.c:1945
+#: ../pidgin/gtkprefs.c:1947
 msgid "When both away and idle"
 msgstr "Pri neprítomnosti a nečinnosti"
 
 #. Auto-away stuff
-#: ../pidgin/gtkprefs.c:1951
+#: ../pidgin/gtkprefs.c:1953
 msgid "Auto-away"
 msgstr "Automatická neprítomnosť"
 
-#: ../pidgin/gtkprefs.c:1953
+#: ../pidgin/gtkprefs.c:1955
 msgid "Change status when _idle"
 msgstr "Zmeniť stav pri _nečinnosti"
 
-#: ../pidgin/gtkprefs.c:1957
+#: ../pidgin/gtkprefs.c:1959
 msgid "_Minutes before becoming idle:"
 msgstr "_Počet minút pred nečinnosťou:"
 
-#: ../pidgin/gtkprefs.c:1965
+#: ../pidgin/gtkprefs.c:1967
 msgid "Change _status to:"
 msgstr "Zmeniť _stav na:"
 
 #. Signon status stuff
-#: ../pidgin/gtkprefs.c:1986
+#: ../pidgin/gtkprefs.c:1988
 msgid "Status at Startup"
 msgstr "Stav pri spustení"
 
-#: ../pidgin/gtkprefs.c:1988
+#: ../pidgin/gtkprefs.c:1990
 msgid "Use status from last _exit at startup"
 msgstr "Po spustení použiť stav ako pred odhlásením"
 
-#: ../pidgin/gtkprefs.c:1994
+#: ../pidgin/gtkprefs.c:1996
 msgid "Status to a_pply at startup:"
 msgstr "Po spustení použiť stav:"
 
-#: ../pidgin/gtkprefs.c:2032
+#: ../pidgin/gtkprefs.c:2034
 msgid "Interface"
 msgstr "Rozhranie"
 
-#: ../pidgin/gtkprefs.c:2034
+#: ../pidgin/gtkprefs.c:2036
 msgid "Smiley Themes"
 msgstr "Témy smajlíkov"
 
-#: ../pidgin/gtkprefs.c:2041
+#: ../pidgin/gtkprefs.c:2043
 msgid "Browser"
 msgstr "Prehliadač"
 
-#: ../pidgin/gtkprefs.c:2045
+#: ../pidgin/gtkprefs.c:2047
 msgid "Status / Idle"
 msgstr "Stav / nečinný"
 
@@ -16424,7 +16426,7 @@
 
 #: ../pidgin/gtkprivacy.c:601
 msgid "Please enter the name of the user you wish to block."
-msgstr "Zadajte, prosím, meno používateľa, ktorého si želáte blokovať."
+msgstr "Zadajte, prosím, meno používateľa, ktorého chcete blokovať."
 
 #: ../pidgin/gtkprivacy.c:609
 #, c-format
@@ -16846,7 +16848,7 @@
 msgid "Received Messages"
 msgstr "Prijaté správy"
 
-#: ../pidgin/plugins/convcolors.c:210 ../pidgin/plugins/pidginrc.c:251
+#: ../pidgin/plugins/convcolors.c:210 ../pidgin/plugins/pidginrc.c:245
 #, c-format
 msgid "Select Color for %s"
 msgstr "Vyberte farbu pre %s"
@@ -17119,7 +17121,7 @@
 "\n"
 "<b>Poznámka priateľa:</b> %s"
 
-#: ../pidgin/plugins/history.c:188
+#: ../pidgin/plugins/history.c:192
 msgid "History"
 msgstr "História"
 
@@ -17374,45 +17376,36 @@
 msgid "GtkTreeView Horizontal Separation"
 msgstr "Vodorovná medzera v GtkTreeView"
 
-#: ../pidgin/plugins/pidginrc.c:73
+#: ../pidgin/plugins/pidginrc.c:69
 msgid "Conversation Entry"
 msgstr "Položka rozhovoru"
 
-#: ../pidgin/plugins/pidginrc.c:74
-msgid "Conversation History"
-msgstr "História rozhovoru"
-
-#: ../pidgin/plugins/pidginrc.c:75
-msgid "Log Viewer"
-msgstr "Zobrazovač záznamov"
-
-#: ../pidgin/plugins/pidginrc.c:76
+#: ../pidgin/plugins/pidginrc.c:70
 msgid "Request Dialog"
 msgstr "Dialóg požiadavku"
 
-#: ../pidgin/plugins/pidginrc.c:77
+#: ../pidgin/plugins/pidginrc.c:71
 msgid "Notify Dialog"
 msgstr "Dialóg upozornenia"
 
-#: ../pidgin/plugins/pidginrc.c:253
+#: ../pidgin/plugins/pidginrc.c:247
 msgid "Select Color"
 msgstr "Vyberte farbu"
 
-#: ../pidgin/plugins/pidginrc.c:300
-#, c-format
+#: ../pidgin/plugins/pidginrc.c:294
 msgid "Select Interface Font"
 msgstr "Vyberte písmo rozhrania"
 
-#: ../pidgin/plugins/pidginrc.c:303
+#: ../pidgin/plugins/pidginrc.c:297
 #, c-format
 msgid "Select Font for %s"
 msgstr "Vyberte písmo pre %s"
 
-#: ../pidgin/plugins/pidginrc.c:371
+#: ../pidgin/plugins/pidginrc.c:365
 msgid "GTK+ Interface Font"
 msgstr "Písmo rozhrania GTK+"
 
-#: ../pidgin/plugins/pidginrc.c:391
+#: ../pidgin/plugins/pidginrc.c:385
 msgid "GTK+ Text Shortcut Theme"
 msgstr "Textová téma odkazov GTK+"
 
@@ -17436,36 +17429,36 @@
 #. widget_bool_widgets[i]);
 #. }
 #.
-#: ../pidgin/plugins/pidginrc.c:428
+#: ../pidgin/plugins/pidginrc.c:422
 msgid "Interface colors"
 msgstr "Farby rozhrania"
 
-#: ../pidgin/plugins/pidginrc.c:452
+#: ../pidgin/plugins/pidginrc.c:446
 msgid "Widget Sizes"
 msgstr "Veľkosti ovládacích prvkov"
 
-#: ../pidgin/plugins/pidginrc.c:473
+#: ../pidgin/plugins/pidginrc.c:467
 msgid "Fonts"
 msgstr "Písma"
 
-#: ../pidgin/plugins/pidginrc.c:497
+#: ../pidgin/plugins/pidginrc.c:491
 msgid "Gtkrc File Tools"
 msgstr "Nástroje súboru Gtkrc"
 
-#: ../pidgin/plugins/pidginrc.c:502
+#: ../pidgin/plugins/pidginrc.c:496
 #, c-format
 msgid "Write settings to %s%sgtkrc-2.0"
 msgstr "Uložiť nastavenia do %s%sgtkrc-2.0"
 
-#: ../pidgin/plugins/pidginrc.c:511
+#: ../pidgin/plugins/pidginrc.c:505
 msgid "Re-read gtkrc files"
 msgstr "Znovu načítať súbory gtkrc"
 
-#: ../pidgin/plugins/pidginrc.c:544
+#: ../pidgin/plugins/pidginrc.c:538
 msgid "Pidgin GTK+ Theme Control"
 msgstr "Ovládánie témy GTK+ programu Pidgin"
 
-#: ../pidgin/plugins/pidginrc.c:546 ../pidgin/plugins/pidginrc.c:547
+#: ../pidgin/plugins/pidginrc.c:540 ../pidgin/plugins/pidginrc.c:541
 msgid "Provides access to commonly used gtkrc settings."
 msgstr "Umožňuje prístup ku najčastejšie používaným nastaveniam GTKrc."
 
@@ -17647,7 +17640,6 @@
 msgstr "Voľby formátu časovej značky"
 
 #: ../pidgin/plugins/timestamp_format.c:26
-#, c-format
 msgid "_Force 24-hour time format"
 msgstr "_Vynútiť 24-hodinový formát času"
 
@@ -17842,138 +17834,46 @@
 
 #: ../pidgin/plugins/xmppconsole.c:790
 msgid "Insert an <iq/> stanza."
-msgstr "Vložiť <iq/> stanza."
+msgstr "Vložiť <iq/> slohu."
 
 #: ../pidgin/plugins/xmppconsole.c:799
 msgid "Insert a <presence/> stanza."
-msgstr "Vložiť <presence/> stanza."
+msgstr "Vložiť <presence/> slohu."
 
 #: ../pidgin/plugins/xmppconsole.c:808
 msgid "Insert a <message/> stanza."
-msgstr "Vložiť <message/> stanza."
+msgstr "Vložiť <message/> slohu."
 
 #. *< name
 #. *< version
 #. *  summary
 #: ../pidgin/plugins/xmppconsole.c:863
 msgid "Send and receive raw XMPP stanzas."
-msgstr "Odosielať a prijímať nespracované XMPP stanzy."
+msgstr "Odosielať a prijímať nespracované XMPP slohy."
 
 #. *  description
 #: ../pidgin/plugins/xmppconsole.c:865
 msgid "This plugin is useful for debbuging XMPP servers or clients."
 msgstr "Tento plugin je vhodný pre ladenie XMPP serverov alebo klientov."
 
-#, fuzzy
-#~ msgid "Offline buddies"
-#~ msgstr "Zobraziť odpojených priateľov"
-
-#, fuzzy
-#~ msgid "Sort"
-#~ msgstr "Port"
-
-#, fuzzy
-#~ msgid "By Status"
-#~ msgstr "Podľa stavu"
-
-#, fuzzy
-#~ msgid "By Log Size"
-#~ msgstr "Podľa veľkosti záznamu"
-
-#, fuzzy
-#~ msgid "Unable to connect to contact server"
-#~ msgstr "Nepodarilo sa pripojiť na server."
-
-#, fuzzy
-#~ msgid "Unable to retrieve MSN Address Book"
-#~ msgstr "Vyberte Notes zoznam adries"
-
-#, fuzzy
-#~ msgid "Current media"
-#~ msgstr "Aktuálny token"
-
-#, fuzzy
-#~ msgid "Windows Live Messenger Protocol Plugin"
-#~ msgstr "Modul protokolu Novell GroupWise Messenger"
-
-#, fuzzy
-#~ msgid "Windows Live ID authentication Failed"
-#~ msgstr "Chyba: Zlyhala antentifikácia"
-
-#~ msgid "%s just sent you a Nudge!"
-#~ msgstr "%s vám práve poslal Nudge!"
-
-#, fuzzy
-#~ msgid "Unknown error (%d)"
-#~ msgstr "Neznáma chyba"
-
-#, fuzzy
-#~ msgid "Unable to connect to OIM server"
-#~ msgstr "Nepodarilo sa pripojiť na server."
-
-#, fuzzy
-#~ msgid "%s (%s) changed status from %s to %s"
-#~ msgstr "Používateľ %s zmenil stav z %s na %s"
-
-#, fuzzy
-#~ msgid "%s (%s) is now %s"
-#~ msgstr "Používateľ %s je teraz %s"
-
-#, fuzzy
-#~ msgid "%s (%s) is no longer %s"
-#~ msgstr "Používateľ %s už nie je %s"
-
-#, fuzzy
-#~ msgid "_Merge"
-#~ msgstr "_Správa:"
-
-#, fuzzy
-#~ msgid "_Send File..."
-#~ msgstr "Odoslať _súbor"
-
-#, fuzzy
-#~ msgid "Add Buddy _Pounce..."
-#~ msgstr "Pridať sledovanie priateľa..."
-
-#, fuzzy
-#~ msgid "Hide when offline"
-#~ msgstr "Nepovolené v odpojenom stave"
-
-#, fuzzy
-#~ msgid "Show when offline"
-#~ msgstr "Nepovolené v odpojenom stave"
-
-#, fuzzy
-#~ msgid "Add _Buddy..."
-#~ msgstr "Pridať priateľa"
-
-#, fuzzy
-#~ msgid "Add C_hat..."
-#~ msgstr "Pridať chat"
-
-#, fuzzy
-#~ msgid "Persistent"
-#~ msgstr "perzština"
-
-#, fuzzy
-#~ msgid "/Accounts/Manage"
-#~ msgstr "/Účty"
-
-#, fuzzy
-#~ msgid "A_ccount:"
-#~ msgstr "Účet:"
-
-#, fuzzy
-#~ msgid "S_end To"
-#~ msgstr "Odoslať do"
-
-#, fuzzy
-#~ msgid "_Smile!"
-#~ msgstr "Smajlík!"
+#~ msgid "Sort by status"
+#~ msgstr "Zoradiť podľa stavu"
+
+#~ msgid "Sort alphabetically"
+#~ msgstr "Zoradiť podľa abecedy"
+
+#~ msgid "Sort by log size"
+#~ msgstr "Zoradiť podľa veľkosti záznamu"
 
 #~ msgid "You have just sent a Nudge!"
 #~ msgstr "Práve ste odoslali štuchanec!"
 
+#~ msgid "Has you"
+#~ msgstr "Vás má"
+
+#~ msgid "MSN Protocol Plugin"
+#~ msgstr "Modul protokolu HTTP"
+
 #~ msgid "Would like to add him?"
 #~ msgstr "Chcete ho pridať?"
 
@@ -17983,6 +17883,18 @@
 #~ msgid "You have just sent a Buzz!"
 #~ msgstr "Práve ste odoslali bzzz!"
 
+#~ msgid "Add Buddy _Pounce"
+#~ msgstr "Pridať _sledovanie priatela"
+
+#~ msgid "Add a _Buddy"
+#~ msgstr "Pridať priateľa"
+
+#~ msgid "Add a C_hat"
+#~ msgstr "Pridať chat"
+
+#~ msgid "/Accounts/Add\\/Edit"
+#~ msgstr "/Účty/Pri_dať a upraviť"
+
 #~ msgid "/Help"
 #~ msgstr "/_Pomocník"
 
@@ -17992,6 +17904,9 @@
 #~ msgid "/Options/Show Buddy Icon"
 #~ msgstr "/Možnosti/Zobraziť ikonu priateľa"
 
+#~ msgid "_Send To"
+#~ msgstr "Po_slať cez"
+
 #~ msgid ""
 #~ "%s is a graphical modular messaging client based on libpurple which is "
 #~ "capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/"
@@ -18014,6 +17929,15 @@
 #~ "súbore 'COPYRIGHT'. Na tento program vám neposkytujeme žiadnu záruku."
 #~ "<BR><BR>"
 
+#~ msgid "_Smiley"
+#~ msgstr "_Smajlík"
+
+#~ msgid "Conversation History"
+#~ msgstr "História rozhovoru"
+
+#~ msgid "Log Viewer"
+#~ msgstr "Zobrazovač záznamov"
+
 #~ msgid "nudged"
 #~ msgstr "štuchnutý"
 
--- a/po/stats.pl	Tue Oct 23 17:05:12 2007 +0000
+++ b/po/stats.pl	Tue Oct 23 17:27:12 2007 +0000
@@ -32,7 +32,7 @@
 $lang{en_GB} = "English (British)";
 $lang{my_MM} = "Burmese (Myanmar)";
 $lang{pt_BR} = "Portuguese (Brazilian)";
-$lang{'sr@Latn'} = "Serbian (Latin)";
+$lang{'sr@latin'} = "Serbian (Latin)";
 $lang{zh_CN} = "Chinese (Simplified)";
 $lang{zh_HK} = "Chinese (Hong Kong)";
 $lang{zh_TW} = "Chinese (Traditional)";
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/share/ca-certs/Microsoft_Secure_Server_Authority.pem	Tue Oct 23 17:27:12 2007 +0000
@@ -0,0 +1,28 @@
+-----BEGIN CERTIFICATE-----
+MIIE1TCCA72gAwIBAgIKYSsApAADAAAAFDANBgkqhkiG9w0BAQUFADAnMSUwIwYD
+VQQDExxNaWNyb3NvZnQgSW50ZXJuZXQgQXV0aG9yaXR5MB4XDTA2MDQyMTE5MTEw
+NFoXDTA5MDQxOTIzNTkwMFowgYsxEzARBgoJkiaJk/IsZAEZFgNjb20xGTAXBgoJ
+kiaJk/IsZAEZFgltaWNyb3NvZnQxFDASBgoJkiaJk/IsZAEZFgRjb3JwMRcwFQYK
+CZImiZPyLGQBGRYHcmVkbW9uZDEqMCgGA1UEAxMhTWljcm9zb2Z0IFNlY3VyZSBT
+ZXJ2ZXIgQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
+syn2tJzCJKsQy98cYrzBT0qMSqTMibRel34u64jqd1GKP9cRMHagyNLZIb1rv8NZ
+XPdf2uI8hGc4lxRh4iprbFPOZSiHQIyq9zoqLS7Bh/KnqnRX4CCntCQbWVa/s5c5
+FbGD5XG5AvA8sjn56WPotYLGeWrSZ/k2bcH9YgvQ2Yrt8t1VxPQciSuX82KSn2Kx
+xxJKgQtAgZpyekR5QdIUUvQsEAPaCfWRsF/OMQoyc4UeAxAELavr2vlq869ye3Fu
+f3fUhVEk8kxtiVPYWYBTAhWts62pEwaKGPteMsGnvbX+BRgIwc55vfs6KWXxnBUL
+9Q8BfQQLbT8nQe7hO4XXMQIDAQABo4IBnDCCAZgwEgYDVR0TAQH/BAgwBgEB/wIB
+ATAdBgNVHQ4EFgQUp08F+9GOQVM3lcpL4UMfWutNzVAwCwYDVR0PBAQDAgGGMBIG
+CSsGAQQBgjcVAQQFAgMDAAMwIwYJKwYBBAGCNxUCBBYEFMnAnEM4ke3T6fpSclUI
+g7XN8o57MBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMB8GA1UdIwQYMBaAFDNf
+3Q+3nFzO7ofdcHCLX33PIry5MGYGA1UdHwRfMF0wW6BZoFeGNGh0dHA6Ly9jcmwu
+bWljcm9zb2Z0LmNvbS9wa2kvbXNjb3JwL2NybC9tc3d3dygzKS5jcmyGH2h0dHA6
+Ly9jb3JwcGtpL2NybC9tc3d3dygzKS5jcmwweQYIKwYBBQUHAQEEbTBrMDwGCCsG
+AQUFBzAChjBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL21zY29ycC9tc3d3
+dygzKS5jcnQwKwYIKwYBBQUHMAKGH2h0dHA6Ly9jb3JwcGtpL2FpYS9tc3d3dygz
+KS5jcnQwDQYJKoZIhvcNAQEFBQADggEBAIJDQpkqhodC3ZmKPB4dTveoFCpuc4C0
+qdXPLggvRiTnQJP/SRdnfQwkaulDS3771zWo3fO1/tTiCmVvtU4LNbISpQmrz41q
+AP2QIUl/d4Fjiaz0qchNxmTRlVLGsTrwkMMkOh9MUQEcNyk9RuGepf/1+66qeEnx
+eCgK09yIcbgdE9ffk5ueTX7TNfgoNZO9ORnRS1p7nra3b0Wi1kdGqDmbpw7We+M8
+6B8VpPa0QaofgRdl2dzOijd7hGN+cgRNMvdGpRxzkaWUA52rBOrEVyJLu2IUksPV
+0Q/0ZZMNZXJh8MmWW/o8ebQZJQshN5p4M7HiUN/cZ2onnrdZSpIwyAU=
+-----END CERTIFICATE-----