@@ -13,6 +13,8 @@ function PVPHelperFrame_OnLoad(self)
 	self:RegisterEvent("BATTLEFIELD_MGR_EJECT_PENDING");
 	self:RegisterEvent("BATTLEFIELD_MGR_EJECTED");
 	self:RegisterEvent("BATTLEFIELD_MGR_ENTERED");
+	self:RegisterEvent("BATTLEFIELD_MGR_DROP_TIMER_STARTED");
+	self:RegisterEvent("BATTLEFIELD_MGR_DROP_TIMER_CANCELED");
 	self:RegisterEvent("WARGAME_REQUESTED");
 	self:RegisterEvent("BATTLEFIELDS_SHOW");
 	self:RegisterEvent("PLAYER_ENTERING_WORLD");
@@ -21,23 +23,21 @@ function PVPHelperFrame_OnLoad(self)
 end
 
 function PVPHelperFrame_OnEvent(self, event, ...)
-	if ( event == "UPDATE_BATTLEFIELD_STATUS" or event == "ZONE_CHANGED_NEW_AREA" 
-			or event == "ZONE_CHANGED" or event == "PLAYER_ENTERING_WORLD") then
-		local arg1 = ...
+	if ( event == "UPDATE_BATTLEFIELD_STATUS" or event == "ZONE_CHANGED_NEW_AREA" or event == "ZONE_CHANGED" or event == "PLAYER_ENTERING_WORLD") then
 		PVP_UpdateStatus();
 	elseif ( event == "BATTLEFIELD_MGR_QUEUE_REQUEST_RESPONSE" ) then
 		local battleID, accepted, warmup, inArea, loggingIn, areaName = ...;
 		if(not loggingIn) then
 			if(accepted) then
 				if(warmup) then
-					StaticPopup_Show("BFMGR_CONFIRM_WORLD_PVP_QUEUED_WARMUP", areaName, nil, arg1);
+					StaticPopup_Show("BFMGR_CONFIRM_WORLD_PVP_QUEUED_WARMUP", areaName);
 				elseif (inArea) then
-					StaticPopup_Show("BFMGR_EJECT_PENDING", areaName, nil, arg1);
+					StaticPopup_Show("BFMGR_EJECT_PENDING", areaName);
 				else
-					StaticPopup_Show("BFMGR_CONFIRM_WORLD_PVP_QUEUED", areaName, nil, arg1);
+					StaticPopup_Show("BFMGR_CONFIRM_WORLD_PVP_QUEUED", areaName);
 				end
 			else
-				StaticPopup_Show("BFMGR_DENY_WORLD_PVP_QUEUED", areaName, nil, arg1);
+				StaticPopup_Show("BFMGR_DENY_WORLD_PVP_QUEUED", areaName);
 			end
 		end
 		PVP_UpdateStatus();
@@ -58,9 +58,9 @@ function PVPHelperFrame_OnEvent(self, ev
 	elseif ( event == "BATTLEFIELD_MGR_EJECT_PENDING" ) then
 		local battleID, remote, areaName = ...;
 		if(remote) then
-			StaticPopup_Show("BFMGR_EJECT_PENDING_REMOTE", areaName, nil, arg1);
+			StaticPopup_Show("BFMGR_EJECT_PENDING_REMOTE", areaName);
 		else
-		StaticPopup_Show("BFMGR_EJECT_PENDING", areaName, nil, arg1);
+		StaticPopup_Show("BFMGR_EJECT_PENDING", areaName);
 		end
 		PVP_UpdateStatus();
 	elseif ( event == "BATTLEFIELD_MGR_EJECTED" ) then
@@ -69,10 +69,11 @@ function PVPHelperFrame_OnEvent(self, ev
 		StaticPopup_Hide("BFMGR_INVITED_TO_QUEUE_WARMUP");
 		StaticPopup_Hide("BFMGR_INVITED_TO_ENTER");
 		StaticPopup_Hide("BFMGR_EJECT_PENDING");
+		StaticPopup_Hide("BATTLEFIELD_BORDER_WARNING");
 		if(lowLevel) then
-			StaticPopup_Show("BFMGR_PLAYER_LOW_LEVEL", areaName, nil, arg1);
+			StaticPopup_Show("BFMGR_PLAYER_LOW_LEVEL", areaName);
 		elseif (playerExited and battleActive and not relocated) then
-			StaticPopup_Show("BFMGR_PLAYER_EXITED_BATTLE", areaName, nil, arg1);
+			StaticPopup_Show("BFMGR_PLAYER_EXITED_BATTLE", areaName);
 		end
 		PVP_UpdateStatus();
 	elseif ( event == "BATTLEFIELD_MGR_ENTERED" ) then
@@ -81,12 +82,17 @@ function PVPHelperFrame_OnEvent(self, ev
 		StaticPopup_Hide("BFMGR_INVITED_TO_ENTER");
 		StaticPopup_Hide("BFMGR_EJECT_PENDING");
 		PVP_UpdateStatus();
+	elseif ( event == "BATTLEFIELD_MGR_DROP_TIMER_STARTED" ) then
+		local areaName, seconds = ...;
+		StaticPopup_Show("BATTLEFIELD_BORDER_WARNING", nil, nil, {name = areaName, timer = seconds});
+	elseif ( event == "BATTLEFIELD_MGR_DROP_TIMER_CANCELED" ) then
+		StaticPopup_Hide("BATTLEFIELD_BORDER_WARNING");
 	elseif ( event == "WARGAME_REQUESTED" ) then
-		local challengerName, bgName, timeout = ...;
-		PVPFramePopup_SetupPopUp(event, challengerName, bgName, timeout);
+		local challengerName, bgName, timeout, tournamentRules = ...;
+		PVPFramePopup_SetupPopUp(event, challengerName, bgName, timeout, tournamentRules);
 	elseif ( event == "BATTLEFIELDS_SHOW" ) then
-		if ( not PVPUIFrame) then
-			PVP_LoadUI();
+		if ( not PVPUIFrame ) then
+			PVEFrame_ShowFrame("PVPUIFrame");
 			PVPQueueFrame_OnEvent(PVPQueueFrame, event, ...);
 		end
 	end
@@ -143,7 +149,7 @@ function PVPFramePopup_OnUpdate(self, el
 end
 
 
-function PVPFramePopup_SetupPopUp(event, challengerName, bgName, timeout)
+function PVPFramePopup_SetupPopUp(event, challengerName, bgName, timeout, tournamentRules)
 	PVPFramePopup.title:SetFormattedText(WARGAME_CHALLENGED, challengerName, bgName);
 	PVPFramePopup.type = event;
 	PVPFramePopup.timeout = timeout  - 3;  -- add a 3 second buffer
@@ -386,13 +392,15 @@ function PVPReadyDialog_Display(self, in
 		self.roleLabel:Hide();
 		self.roleIcon:Hide();
 	end
-
+	
 	local showTitle = true;
+	self.leaveButton:Show()
 	if ( queueType == "BATTLEGROUND" ) then
 		if ( isRated ) then
 			self.background:SetTexCoord(0, 1, 0, 102/128);
 			self.background:SetTexture("Interface\\PVPFrame\\PvpBg-AlteracValley-ToastBG");
 			self.label:SetText(RATED_BATTLEGROUND_IS_READY);
+			self.leaveButton:Hide();
 		else
 			self.background:SetTexCoord(0, 1, 0, 1);
 			self.background:SetTexture("Interface\\LFGFrame\\UI-PVP-BACKGROUND-"..(factionGroup or "Alliance"));
@@ -403,6 +411,7 @@ function PVPReadyDialog_Display(self, in
 		self.background:SetTexture("Interface\\PVPFrame\\PvpBg-NagrandArena-ToastBG");
 		showTitle = false;
 		self.label:SetText(ARENA_IS_READY);
+		self.leaveButton:Hide();
 	elseif ( queueType == "WARGAME" ) then
 		self.background:SetTexCoord(0, 1, 0, 102/128);
 		self.background:SetTexture("Interface\\PVPFrame\\PvpBg-AlteracValley-ToastBG");
@@ -410,6 +419,13 @@ function PVPReadyDialog_Display(self, in
 	else
 		self.label:SetText(BATTLEGROUND_IS_READY);
 	end
+	
+	self.enterButton:ClearAllPoints();
+	if (self.leaveButton:IsShown()) then
+		self.enterButton:SetPoint("BOTTOMRIGHT", self, "BOTTOM", -7, 25)
+	else
+		self.enterButton:SetPoint("BOTTOM", self, "BOTTOM", 0, 25)
+	end
 
 	if ( showTitle ) then
 		self.instanceInfo:Show();