diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp
index cb62e462713e7f4285ef25a1c76a0934362705f5..bf0e19473ee6bad521d1697bf11b5ddeb9c5610f 100644
--- a/indra/llplugin/llpluginclassmedia.cpp
+++ b/indra/llplugin/llpluginclassmedia.cpp
@@ -696,6 +696,20 @@ void LLPluginClassMedia::setLanguageCode(const std::string &language_code)
 	sendMessage(message);
 }
 
+void LLPluginClassMedia::setPluginsEnabled(const bool enabled)
+{
+	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "plugins_enabled");
+	message.setValueBoolean("enable", enabled);
+	sendMessage(message);
+}
+
+void LLPluginClassMedia::setJavascriptEnabled(const bool enabled)
+{
+	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "javascript_enabled");
+	message.setValueBoolean("enable", enabled);
+	sendMessage(message);
+}
+
 LLPluginClassMedia::ETargetType getTargetTypeFromLLQtWebkit(int target_type)
 {
 	// convert a LinkTargetType value from llqtwebkit to an ETargetType
@@ -1065,6 +1079,7 @@ void LLPluginClassMedia::clear_cookies()
 void LLPluginClassMedia::enable_cookies(bool enable)
 {
 	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "enable_cookies");
+	message.setValueBoolean("enable", enable);
 	sendMessage(message);
 }
 
diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h
index 6318c67f12673bc84b87a5906c846833cc5cd373..79356beb6843081048c2221d00dd035007eba878 100644
--- a/indra/llplugin/llpluginclassmedia.h
+++ b/indra/llplugin/llpluginclassmedia.h
@@ -179,6 +179,8 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner
 	// These can be called before init(), and they will be queued and sent before the media init message.
 	void	setUserDataPath(const std::string &user_data_path);
 	void	setLanguageCode(const std::string &language_code);
+	void	setPluginsEnabled(const bool enabled);
+	void	setJavascriptEnabled(const bool enabled);
 		
 	///////////////////////////////////
 	// media browser class functions
diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp
index 24c53638d2bd07744e0beb1b5e12b3e3b33d4d35..0462fce236273bf22fa727c5575a904d15b1189c 100644
--- a/indra/media_plugins/webkit/media_plugin_webkit.cpp
+++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp
@@ -89,6 +89,9 @@ class MediaPluginWebKit :
 
 	std::string mProfileDir;
 	std::string mHostLanguage;
+	bool mCookiesEnabled;
+	bool mJavascriptEnabled;
+	bool mPluginsEnabled;
 
 	enum
 	{
@@ -277,21 +280,18 @@ class MediaPluginWebKit :
 		{
 			LLQtWebKit::getInstance()->setHostLanguage(mHostLanguage);
 		}
+
+		// turn on/off cookies based on what host app tells us
+		LLQtWebKit::getInstance()->enableCookies( mCookiesEnabled );
+
+		// turn on/off plugins based on what host app tells us
+		LLQtWebKit::getInstance()->enablePlugins( mPluginsEnabled );
+
+		// turn on/off Javascript based on what host app tells us
+		LLQtWebKit::getInstance()->enableJavascript( mJavascriptEnabled );
 		
 		// create single browser window
 		mBrowserWindowId = LLQtWebKit::getInstance()->createBrowserWindow( mWidth, mHeight );
-#if LL_WINDOWS
-		// Enable plugins
-		LLQtWebKit::getInstance()->enablePlugins(true);
-#elif LL_DARWIN
-		// Enable plugins
-		LLQtWebKit::getInstance()->enablePlugins(true);
-#elif LL_LINUX
-		// Enable plugins
-		LLQtWebKit::getInstance()->enablePlugins(true);
-#endif
-		// Enable cookies
-		LLQtWebKit::getInstance()->enableCookies( true );
 
 		// tell LLQtWebKit about the size of the browser window
 		LLQtWebKit::getInstance()->setSize( mBrowserWindowId, mWidth, mHeight );
@@ -671,6 +671,10 @@ MediaPluginWebKit::MediaPluginWebKit(LLPluginInstance::sendMessageFunction host_
 	mBackgroundR = 0.0f;
 	mBackgroundG = 0.0f;
 	mBackgroundB = 0.0f;
+
+	mHostLanguage = "en";		// default to english
+	mJavascriptEnabled = true;	// default to on
+	mPluginsEnabled = true;		// default to on
 }
 
 MediaPluginWebKit::~MediaPluginWebKit()
@@ -825,6 +829,14 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
 
 				// FIXME: Should we do anything with this if it comes in after the browser has been initialized?
 			}
+			else if(message_name == "plugins_enabled")
+			{
+				mPluginsEnabled = message_in.getValueBoolean("enable");
+			}
+			else if(message_name == "javascript_enabled")
+			{
+				mJavascriptEnabled = message_in.getValueBoolean("enable");
+			}
 			else if(message_name == "size_change")
 			{
 				std::string name = message_in.getValue("name");
@@ -1026,8 +1038,18 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
 			}
 			else if(message_name == "enable_cookies")
 			{
-				bool val = message_in.getValueBoolean("enable");
-				LLQtWebKit::getInstance()->enableCookies( val );
+				mCookiesEnabled = message_in.getValueBoolean("enable");
+				LLQtWebKit::getInstance()->enableCookies( mCookiesEnabled );
+			}
+			else if(message_name == "enable_plugins")
+			{
+				mPluginsEnabled = message_in.getValueBoolean("enable");
+				LLQtWebKit::getInstance()->enablePlugins( mPluginsEnabled );
+			}
+			else if(message_name == "enable_javascript")
+			{
+				mJavascriptEnabled = message_in.getValueBoolean("enable");
+				//LLQtWebKit::getInstance()->enableJavascript( mJavascriptEnabled );
 			}
 			else if(message_name == "proxy_setup")
 			{
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 8edf766132ff07fc4adba854856756dd4b695adf..f8d556bb808f16abeed70819a3c2bbb7855d06a1 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -1563,6 +1563,28 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+    <key>BrowserJavascriptEnabled</key>
+    <map>
+      <key>Comment</key>
+      <string>Enable Javascript in the built-in Web browser?</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
+    </map>
+    <key>BrowserPluginsEnabled</key>
+    <map>
+      <key>Comment</key>
+      <string>Enable Web plugins in the built-in Web browser?</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
+    </map>
     <key>CreateToolCopyCenters</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index b9509a98f5052b01f40f00f65389effad31bc0d4..99bfad9b45784f71ea211d97281f9cc143f34250 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -1260,6 +1260,19 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
 			media_source->setSize(default_width, default_height);
 			media_source->setUserDataPath(user_data_path);
 			media_source->setLanguageCode(LLUI::getLanguage());
+
+			// collect 'cookies enabled' setting from prefs and send to embedded browser
+			bool cookies_enabled = gSavedSettings.getBOOL( "CookiesEnabled" );
+			media_source->enable_cookies( cookies_enabled );
+
+			// collect 'plugins enabled' setting from prefs and send to embedded browser
+			bool plugins_enabled = gSavedSettings.getBOOL( "BrowserPluginsEnabled" );
+			media_source->setPluginsEnabled( plugins_enabled );
+
+			// collect 'javascript enabled' setting from prefs and send to embedded browser
+			bool javascript_enabled = gSavedSettings.getBOOL( "BrowserJavascriptEnabled" );
+			media_source->setJavascriptEnabled( javascript_enabled );
+
 			if (media_source->init(launcher_name, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins")))
 			{
 				return media_source;
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
index f232a694829add3c769e751177d0564c27d0be99..3d7f3924046808f3c23e7ead09c5dfed52068924 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
@@ -68,15 +68,6 @@
      left="30"
      name="auto_disengage_mic_check"
      top_pad="10"
-     width="350" />
-    <check_box
-     control_name="CookiesEnabled"
-     height="16"
-     label="Accept cookies"
-     layout="topleft"
-     left="30"
-     name="cookies_enabled"
-     top_pad="10"
      width="350" />
 	<text
       type="string"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
index fe882730f418f4b321752e7e2a11c7e2145566d0..96b9b459dd269dd678bdd07650dc5958203a6517 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
@@ -265,18 +265,8 @@
    layout="topleft"
    left_delta="50"
    name="use_external_browser"
-   top_pad="4"
+   top_pad="-2"
    width="480">
-    <radio_item
-      height="20"
-      label="Use built-in browser"
-      layout="topleft"
-      left="0"
-      name="internal"
-      value=""
-      tool_tip="Use the built-in web browser for help, web links, etc. This browser opens as a new window inside [APP_NAME]."
-      top="0"
-      width="480" />
     <radio_item
       height="20"
       label="Use my browser (IE, Firefox, Safari)"
@@ -284,16 +274,71 @@
       left_delta="0"
       name="external"
       value="1"
+      top="0"
       tool_tip="Use the default system web browser for help, web links, etc. Not recommended if running full screen."
+      width="480" />
+    <radio_item
+      height="20"
+      label="Use built-in browser"
+      layout="topleft"
+      left="0"
+      name="internal"
+      value=""
+      tool_tip="Use the built-in web browser for help, web links, etc. This browser opens as a new window inside [APP_NAME]."
       top_delta="20"
       width="480" />
   </radio_group>
 
+  <check_box
+    top_delta="2"
+    enabled="true"
+    follows="left|top"
+    height="18"
+    initial_value="true"
+    control_name="BrowserPluginsEnabled"
+    label="Enable plugins"
+    left_delta="20"
+    mouse_opaque="true"
+    name="browser_plugins_enabled"
+    radio_style="false"
+    width="400"
+    top_pad="5"/>
+
+  <check_box
+   top_delta="4"
+   enabled="true"
+   follows="left|top"
+   height="14"
+   initial_value="true"
+   control_name="CookiesEnabled"
+   label="Accept cookies"
+   left_delta="0"
+   mouse_opaque="true" 
+   name="cookies_enabled"
+   radio_style="false"
+   width="400"
+   top_pad="5"/>
+  
   <check_box
     top_delta="4"
     enabled="true"
     follows="left|top"
-    height="16"
+    height="14"
+    initial_value="true"
+    control_name="BrowserJavascriptEnabled"
+    label="Enable Javascript"
+    left_delta="0"
+    mouse_opaque="true"
+    name="browser_javascript_enabled"
+    radio_style="false"
+    width="400"
+    top_pad="5"/>
+
+  <check_box
+    top_delta="4"
+    enabled="true"
+    follows="left|top"
+    height="14"
     initial_value="false"
     control_name="BrowserProxyEnabled"
     label="Enable Web Proxy"
@@ -308,9 +353,9 @@
    follows="left|top"
    height="10"
    layout="topleft"
-   left_delta="1"
+   left_delta="20"
    name="Proxy location"
-   top_delta="20"
+   top_delta="16"
    width="300">
     Proxy location:
   </text>
@@ -335,7 +380,7 @@
    increment="1"
    initial_value="80"
    label="Port number:"
-   label_width="75"
+   label_width="70"
    layout="topleft"
    left_delta="230"
    max_val="12000"
diff --git a/install.xml b/install.xml
index 7337241cf8e405746aa4b59e084b14fce3b14e33..e8f0e5d3189d4f61a8e842b85fe148478ea0af25 100644
--- a/install.xml
+++ b/install.xml
@@ -962,9 +962,9 @@ anguage Infrstructure (CLI) international standard</string>
           <key>windows</key>
           <map>
             <key>md5sum</key>
-            <string>ee5d242ea468ba9a82d2bf8581aa308d</string>
+            <string>93b49cfea365fe082eda3e466a9beec3</string>
             <key>url</key>
-            <uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.6-20100312.tar.bz2</uri>
+            <uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.6-20100318.tar.bz2</uri>
           </map>
         </map>
       </map>