function Browser() {

  var ua, s, i;

  this.isIE	= false;
  this.isNS	= false;
  this.isSA	= false;
  this.version = null;

  ua = navigator.userAgent;

  s = "Safari";
  if ((i = ua.indexOf(s)) >= 0) {
  	this.isSA = true;
  	this.version = parseFloat(ua.substr(i + s.length));
  	return;
  }
 
 
  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
	this.isIE = true;
	this.version = parseFloat(ua.substr(i + s.length));
	return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
	this.isNS = true;
	this.version = parseFloat(ua.substr(i + s.length));
	return;
  }

  // Treat any other "Gecko" browser as NS 6.1.
  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
	this.isNS = true;
	this.version = 6.1;
	return;
  }
}

var browser = new Browser();


// will use anchor to set the values that should be chosen when someone comes to this page.
// this should fix the back button issue.
var originallocation;
var anchor_page;
var anchor_vars;

//rewrite the URL to contain the options selected after the # sign
function setAnchor(value, page){
	if (value)
		anchor_vars = value;
	else if (page)
		anchor_page = page;
	else
		anchor_vars = "";

	URL = location.pathname + location.search;

	location.replace(URL + getHashAnchor());
}

function getHashAnchor()
{
	var hash_anchor = "#";
	if(anchor_vars) hash_anchor += anchor_vars;

	if (anchor_page)
	{
		if(anchor_vars) hash_anchor += "|";
		hash_anchor += "page:" + anchor_page;
	}
	return hash_anchor;
}

var cache = new Array();

window.addOnLoadListener(function(){load_search();});

function setProcessing(newURL)
{
	var res = document.getElementById("results");
	if (res != null)
		res.style.display="none";

	var progress = document.getElementById("processing");
	if (progress != null)
		progress.style.display="block";
		
	if(newURL)
		window.location = newURL + getHashAnchor();
}


var nav_1_f_a;
var nav_1_p_a;
var nav_1_n_a;
var nav_1_l_a;
var nav_1_f_i;
var nav_1_p_i;
var nav_1_n_i;
var nav_1_l_i;

var nav_2_f_a;
var nav_2_p_a;
var nav_2_n_a;
var nav_2_l_a;
var nav_2_f_i;
var nav_2_p_i;
var nav_2_n_i;
var nav_2_l_i;
var nav_i;
var nav_p_1;
var nav_p_2;
var current_page = 1;
var max_page = ((sku.length - 1) / skuspp + "").split(".")[0] * 1 + 1;
var nav_res;
var nav_progress;

var waiting = false;

function update_nav()
{
	if (nav_1_f_a == null)
	{
		nav_p_1 = document.getElementById("nav_page_1");
		nav_p_2 = document.getElementById("nav_page_2");		
		nav_i = document.getElementById("nav_items");
		nav_1_f_a = document.getElementById("nav_f_page_active_1");
		nav_1_p_a = document.getElementById("nav_p_page_active_1");
		nav_1_n_a = document.getElementById("nav_n_page_active_1");
		nav_1_l_a = document.getElementById("nav_l_page_active_1");
		nav_1_f_i = document.getElementById("nav_f_page_inactive_1");
		nav_1_p_i = document.getElementById("nav_p_page_inactive_1");
		nav_1_n_i = document.getElementById("nav_n_page_inactive_1");
		nav_1_l_i = document.getElementById("nav_l_page_inactive_1");

		nav_2_f_a = document.getElementById("nav_f_page_active_2");
		nav_2_p_a = document.getElementById("nav_p_page_active_2");
		nav_2_n_a = document.getElementById("nav_n_page_active_2");
		nav_2_l_a = document.getElementById("nav_l_page_active_2");
		nav_2_f_i = document.getElementById("nav_f_page_inactive_2");
		nav_2_p_i = document.getElementById("nav_p_page_inactive_2");
		nav_2_n_i = document.getElementById("nav_n_page_inactive_2");
		nav_2_l_i = document.getElementById("nav_l_page_inactive_2");

	}
	if (current_page == 1)
	{
		nav_1_f_a.style.display="none";
		nav_1_p_a.style.display="none";
		nav_1_n_a.style.display="block";
		nav_1_l_a.style.display="block";
		nav_1_f_i.style.display="block";
		nav_1_p_i.style.display="block";
		nav_1_n_i.style.display="none";
		nav_1_l_i.style.display="none";
		nav_1_f_a.style.display="none";

		nav_2_f_a.style.display="none";
		nav_2_p_a.style.display="none";
		nav_2_n_a.style.display="block";
		nav_2_l_a.style.display="block";
		nav_2_f_i.style.display="block";
		nav_2_p_i.style.display="block";
		nav_2_n_i.style.display="none";
		nav_2_l_i.style.display="none";
	}
	else if (current_page == max_page)
	{
		nav_1_f_a.style.display="block";
		nav_1_p_a.style.display="block";
		nav_1_n_a.style.display="none";
		nav_1_l_a.style.display="none";
		nav_1_f_i.style.display="none";
		nav_1_p_i.style.display="none";
		nav_1_n_i.style.display="block";
		nav_1_l_i.style.display="block";

		nav_2_f_a.style.display="block";
		nav_2_p_a.style.display="block";
		nav_2_n_a.style.display="none";
		nav_2_l_a.style.display="none";
		nav_2_f_i.style.display="none";
		nav_2_p_i.style.display="none";
		nav_2_n_i.style.display="block";
		nav_2_l_i.style.display="block";
	}
	else
	{
		nav_1_f_a.style.display="block";
		nav_1_p_a.style.display="block";
		nav_1_n_a.style.display="block";
		nav_1_l_a.style.display="block";
		nav_1_f_i.style.display="none";
		nav_1_p_i.style.display="none";
		nav_1_n_i.style.display="none";
		nav_1_l_i.style.display="none";

		nav_2_f_a.style.display="block";
		nav_2_p_a.style.display="block";
		nav_2_n_a.style.display="block";
		nav_2_l_a.style.display="block";
		nav_2_f_i.style.display="none";
		nav_2_p_i.style.display="none";
		nav_2_n_i.style.display="none";
		nav_2_l_i.style.display="none";
	}
	
	start_sku = skuspp * (current_page - 1) + 1;
	end_sku = skuspp * (current_page);
	if (end_sku > sku.length)
		end_sku = sku.length;
	insertFragment(nav_i, "Items " + start_sku + " - " + end_sku + " of " + sku.length + " Found");
	insertFragment(nav_p_1, "Page " + current_page + " of " + max_page + "&nbsp;&nbsp");
	insertFragment(nav_p_2, "Page " + current_page + " of " + max_page + "&nbsp;&nbsp");	
	
	// initialize quickview for advanced search paging
	// checks if initializeQuickview exists
	if (typeof(initializeQuickview) == "function")
		initializeQuickview();
}

function getfirstpage() {
	if (current_page == 1) return;
	if (waiting) return;
	waiting = true;
	current_page = 1;
	getpage();
}

function getpreviouspage() { 
	if (current_page == 1) return;
	if (waiting) return;
	waiting = true;
	current_page = current_page - 1;
	getpage();
}
function getnextpage() {
	if (current_page == max_page) return;
	if (waiting) return;
	waiting = true;
	current_page = current_page + 1;
	getpage();
}

function getlastpage() {
	if (current_page == max_page) return;
	if (waiting) return;
	waiting = true;
	current_page = max_page;
	getpage();
}

function getpage()
{
	page = current_page;
	
	if (! skuspp)
		skuspp=60;

	if (page > max_page || page < 1) 
		page = 1;

	setAnchor(null,page);
	ajax = getHTTPObject();
	var dv = document.getElementById('search_results');
	var lpc = get_last_page(page);
	if (lpc && lpc != "" && ! browser.isSA)
	{
		insertFragment(dv, lpc);
		dv.style.display="block";
		cache[page] == lpc;
		refreshNavHeight();
		if (nav_res != null)
			nav_res.style.display="block";
		if (nav_progress != null)
			nav_progress.style.display="none";
		waiting=false;
	}
	else if (cache[page] && ! browser.isSA)
	{
		scroll(0,0);
		insertFragment(dv, cache[page]);
		dv.style.display="block";
		set_last_page(page, cache[page]);
		refreshNavHeight();
		if (nav_res != null)
			nav_res.style.display="block";
		if (nav_progress != null)
			nav_progress.style.display="none";
		waiting=false;
	}
	else
	{
		scroll(0,0);
		var startat = (page - 1) * skuspp;
		var endat = startat + (skuspp * 1);		
		var listlen = sku.length;
		var actionURL = getPageActionURL;		
		actionURL += "&sku_list_len=" + listlen + "&page=" + page;
		
		if (endat > listlen) endat=listlen;
		var sz = "";
		for (i = startat; i < endat; i++){
			if (i > startat) sz += ","; 
			sz += "'" + sku[i] + "'";
		}
		if(sz == "") return;
		frmValues="sku_list=" + sz;
		
		postAjaxForm(frmValues, actionURL, function(){showpage(dv,page)});

	}
	
	update_nav();
	if (readCookie("CONTSHOPBTN") != null)
		createCookie("CONTSHOPBTN", document.location);
	
	// myBuys implementation to handle pagination.
	if (typeof(sz) != "undefined"){
		updateMyBuysSearchData(sz);
	}
}
function set_last_page(page_number, contents){
	if(!page_number || !contents) return;
	var lp = window.document.getElementById("last_page");
	var lc = window.document.getElementById("last_content");
	lp.value = page_number;
	lc.value = contents;
}

function get_last_page(compare_with_page){
	var lp = window.document.getElementById("last_page");
	var lc = window.document.getElementById("last_content");

	if(!lp.value || !lc.value) return;

	page_number = lp.value;
	contents = lc.value;
	if (page_number != "" && page_number == compare_with_page)
		return contents;
	else
		return "";
}

//when retreiving a page from cache, the browser may not resize properly unless it's forced to recalculate the height of the left nav.
function refreshNavHeight(){
	filter_showhide('filters');
	filter_showhide('filters');
	
}
function showpage(cont, page) {
	var container = new Object();
	container = cont;
	switch (ajax.readyState)
	{
		case 1:
			setProcessing();
			break;
		case 2:
			break;
		case 3:
			break;				
		case 4:
   			if (ajax.status != 200) 
   			{
   				insertFragment(container,ajax.responseText);
   				break;
   			}	
   			var status = getFieldFromContent("status",ajax.responseText);
   			var content = getFieldFromContent("content",ajax.responseText);
			if (status != "OK")
				window.location.reload();

			insertFragment(container,content);
			container.style.display="block";
			if (nav_res != null)
				nav_res.style.display="block";
			if (nav_progress != null)
				nav_progress.style.display="none";
			if (! browser.isSA)
   			{
   				cache[page] = content;
   				set_last_page(page, content);
   			}
   			refreshNavHeight();
   			waiting=false;
			// initialize quickview for advanced search paging
			// checks if initializeQuickview exists
			if (typeof(initializeQuickview) == "function")
				initializeQuickview();
	}
}
function filter_showhide(group){
	var d = document.getElementById('group_' + group);
	var s = document.getElementById('selected_' + group);
	if(d.style.display != "none")
	{
		d.style.display = "none";
		if (document.getElementById('selected_' + group))
			s.style.display = "block";
	}	
	else
	{
		d.style.display = "block";
		if (document.getElementById('selected_' + group))
			s.style.display = "none";
	}
}

function load_search(){
	nav_res = document.getElementById("results");
	nav_progress = document.getElementById("processing");

	needsupdate=false;
	if (location.hash && location.hash.length > 1)
	{
		urlAnchor = location.hash.substring(1,location.hash.length);
		gp=urlAnchor.split(":");
		if(gp.length == 2)
			if (gp[0] == "page") 
				current_page=gp[1] * 1;
	}
	
	var dv = document.getElementById('search_results');
	cache[1] = dv.innerHTML;
	if (current_page > 1)
	{
		waiting=true;
		getpage();
	}
	else
	{
		dv.style.display="block";
		if (nav_res != null)
			nav_res.style.display="block";
		if (nav_progress != null)
			nav_progress.style.display="none";		
	}
}

function updateMyBuysSearchData(skuList){
	if (typeof(mbKeywords) != "undefined"){
		var mbSkuList = skuList.split("','");
		 if (typeof(mbPageType) != "undefined" && mbPageType == "BRAND"){
			mybuys.setPageType("BRAND");
			mybuys.set("brandname", mbKeywords);
		}else{
			mybuys.setPageType("SEARCH_RESULTS");
			mybuys.set("keywords", mbKeywords);
		}
		for (var I = 0; I < mbSkuList.length; I++){
			mybuys.addItemPresentOnPage(mbSkuList[I].replace("'", ""));
		}
		mybuys.initPage();
	}
}
