@@ -73,21 +73,6 @@ function ArchaeologyFrame_OnLoad(self)
 	self:RegisterEvent("BAG_UPDATE_DELAYED");
 	self:RegisterEvent("GET_ITEM_INFO_RECEIVED");
 	
-	
-	local numRaces = GetNumArchaeologyRaces();
-	local raceButton;
-	for i=1,ARCHAEOLOGY_MAX_RACES do
-		raceButton = self.summaryPage["race"..i];
-		if i <= numRaces then		
-			local _, texture =  GetArchaeologyRaceInfo(i);
-			if texture and texture ~= "" then
-				raceButton:GetNormalTexture():SetTexture(texture);
-				raceButton:GetHighlightTexture():SetTexture(texture);
-				raceButton.glow:SetTexture(texture);
-			end
-		end
-	end	
-	
 	local factionGroup = UnitFactionGroup("player");
 	if ( factionGroup and factionGroup ~= "Neutral" ) then
 		if ( factionGroup == "Alliance" ) then
@@ -113,7 +98,8 @@ function ArchaeologyFrame_OnLoad(self)
 	
 
 	self.currentFrame = self.summaryPage;
-	
+	self.currentFrame.currentPage = 1;
+
 	UIDropDownMenu_SetWidth(self.raceFilterDropDown, 95);
 	UIDropDownMenu_JustifyText(self.raceFilterDropDown, "LEFT");
 	UIDropDownMenu_Initialize(self.raceFilterDropDown, ArchaeologyFrame_InitRaceFilter);
@@ -196,6 +182,7 @@ function ArchaeologyFrame_OnEvent(self,
 			self.completedPage.currData.onRare = true;
 			RequestArtifactCompletionHistory();
 		else
+			self.currentFrame.currentPage = 1;
 			self.currentFrame:UpdateFrame();
 		end
 	end
@@ -208,11 +195,19 @@ function ArchaeologyFrame_UpdateSummary(
 	local raceButton;
 	for i=1,ARCHAEOLOGY_MAX_RACES do
 		raceButton = self["race"..i];
-		if i <= numRaces then
-			local name, _, _, currencyAmount, projectAmount =  GetArchaeologyRaceInfo(i);
-			
-			local numProjects = GetNumArtifactsByRace(i);
+		local raceIndex = i + (ARCHAEOLOGY_MAX_RACES * (self.currentPage-1));
+		if raceIndex <= numRaces then
+			local name, texture, _, currencyAmount, projectAmount =  GetArchaeologyRaceInfo(raceIndex);
+
+			if texture and texture ~= "" then
+				raceButton:GetNormalTexture():SetTexture(texture);
+				raceButton:GetHighlightTexture():SetTexture(texture);
+				raceButton.glow:SetTexture(texture);
+			end
+
+			local numProjects = GetNumArtifactsByRace(raceIndex);
 			if numProjects==0 then
+				raceButton.readyAnim:Stop();
 				raceButton:Disable();
 			else
 				raceButton:Enable();
@@ -225,10 +220,25 @@ function ArchaeologyFrame_UpdateSummary(
 				end
 				raceButton.raceName:SetText(name.."|n"..currencyAmount.."/"..projectAmount);
 			end
+			raceButton:Show();
 		else
-			self["race"..i]:Hide();
+			raceButton:Hide();
 		end
-	end	
+	end
+
+	self.pageText:SetFormattedText(PAGE_NUMBER, self.currentPage);
+	if self.currentPage == 1 then
+		self.prevPageButon:SetButtonState("NORMAL");
+		self.prevPageButon:Disable();
+	else	
+		self.prevPageButon:Enable();
+	end
+	if (ARCHAEOLOGY_MAX_RACES+ARCHAEOLOGY_MAX_RACES*(self.currentPage-1) >= numRaces) then
+		self.nextPageButon:SetButtonState("NORMAL");
+		self.nextPageButon:Disable();
+	else	
+		self.nextPageButon:Enable();
+	end
 end
 
 
@@ -577,6 +587,7 @@ function ArchaeologyFrame_OnTabClick(sel
 		archFrame.summaryPage:Show();
 		archFrame.currentFrame = archFrame.summaryPage;
 		archFrame.currentFrame.raceFilter = 0;
+		archFrame.currentFrame.currentPage = 1;
 		ArchaeologyFrame.raceFilterDropDown:Hide();
 		ArchaeologyFrame.factionIcon:Show();
 		archFrame.currentFrame:UpdateFrame();
@@ -629,6 +640,14 @@ function ArchaeologyFrame_PageClick(self
 	end
 end
 
+function ArchaeologyFrameSummary_PageClick(self, nextPage)
+	if nextPage then
+		ArchaeologyFrame.currentFrame.currentPage = ArchaeologyFrame.currentFrame.currentPage + 1;
+	else
+		ArchaeologyFrame.currentFrame.currentPage = ArchaeologyFrame.currentFrame.currentPage - 1;
+	end
+	ArchaeologyFrame.currentFrame:UpdateFrame();
+end
 
 
 function ArchaeologyFrame_RaceFilterSet(self, arg1)