﻿// Results Page UI

// Toggle results layout (use cookie to maintain selection between result pages)
var layoutStyle;
function toggleLayout(layout)
{
	var gridIcon = "url(/images/icons/grid_view_icon.png) no-repeat left top";
	var linearIcon="url(/images/icons/grid_view_icon.png) no-repeat left -14px";
	if (layout!="grid") {
		$.cookie('layout_style', 'grid', {path: '/'});
		$('.switchLayout').css("background",linearIcon);
		return "grid";
	} else {
		$.cookie('layout_style', null, {path: '/'});
		$('.switchLayout').css("background",gridIcon);
		return "linear";
	}
}
$(document).ready(function() {
	if ($.cookie('layout_style')=="grid") {  
		$('.results').toggleClass('results-grid');
		layoutStyle=toggleLayout("linear"); //switch to grid.
	} else { layoutStyle="linear"; }
	
	$('.switchLayout').click( function() { $('.results').toggleClass('results-grid');layoutStyle=toggleLayout(layoutStyle); } );
	
	$('#linkmenuSpecsBrand').click( function(){ $(this).toggleMenu('#menuSpecsBrand','#linkMenuSearch'); } );
	$('#menuSearchWithin > a').click( function(){ selectSearchValue(this,'#menuSearchWithin','#linkMenuSearch'); } );
	// refine search.
	$("#refineResultsSearch_refineq").keydown( function(e) { handleRefineSearch(this,e,'search'); } );
	$("#refineResults_refineq").keydown( function(e) { handleRefineSearch(this,e,'results'); } );
	$("#refineResultsSearch_refinego").click( function(e) { return clickRefineSearch($('#refineResultsSearch_refineq').val(),'search'); } );
	$("#refineResults_refinego").click( function(e) { return clickRefineSearch($('#refineResults_refineq').val(),'results'); } );
	
	// refine by price.
	$("#refineResults_linkGoPrice").click(function() { return clickPriceRange(this,'refineResults_'); });
	$("#refineResultsSearch_linkGoPrice").click(function() { return clickPriceRange(this,'refineResultsSearch_'); });
	
	// display all.
	$("#refineResults_showAllManf").click(function() { displayAll("#refineResults_showAllManf_li","#refineManfLinks","#refineManfLinksCont"); } );
	$("#refineResults_showAllCat").click(function() { displayAll("#refineResults_showAllCat_li","#refineCatLinks","#refineCatLinksCont"); } );
	
 });


//Display all Links
function displayAll(linkc,divParent,divContent)
{
	$(linkc).remove();
	$(divParent).addClass("refine-scroll");
	// append half & half.
	var content = {};
	$(divContent+" ul").each(function(index) { content[index] = $(this).html(); });
	$(divParent+" ul").each( function(index) {
		$(this).append(content[index]);
		if (index > 0 && index<content.length) { for (i=1;i<content.length+1;i++) { $(this).append(content[i]); } }
		});
}

// Refine Search Select.
var searchWithinValue = "";
function selectSearchValue(listItem,menuDiv,linkMenu)
{
	// update queryValues.
	// label: listItem.innerText
	// value: listItem.title
	var _value = (listItem.title ? listItem.title:"");
	var _label = (listItem.innerHTML ? listItem.innerHTML:"");
	if (_value != "" || _label != "")
	{
		$(linkMenu+" > span").text(_label);
		searchWithinValue = _value;
		// hide menu.
		$.hideMenuExt(menuDiv);
	}
}

var handleRefineSearch = function(field, event, page) {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (keyCode == 13) {
		if (field.value != '') { 
			clickRefineSearch(field.value,page);
		}
		 return false;
  	} else { return true; }
}

var clickRefineSearch = function(searchterm,page) {
	if (searchterm != '') { 
		if (page=="search")
		{
			var url = '/search/{0}.aspx'; // default url: /search/{0}.aspx
			if (searchWithinValue=="New Search") { gotoSearch(url,searchterm); return false; }
			var currentUrl = window.location.pathname;
			var qstring = window.location.search!="" ? window.location.search:"";
			if (qstring !="")
			{
				var qm = qstring.match(/(((order|display|pr1|pr2)=[a-zA-Z0-9\.]+))/g); // only keep order,display,p1,p2 in query.
				if (qm && qm.length > 0) { qstring = "?"+qm.join("&"); } else { qstring=""; }
			}
			var currentSearch = "", ex = "";
			if (currentUrl.lastIndexOf("/") > 0) {
				if (searchWithinValue=="Expand Results") {  
					ex="|"; // expand results with an 'or' condition.
					//url = currentUrl.substring(0,currentUrl.lastIndexOf("/")+1) + "{0}.aspx" + qstring; // replace search term but keep filters.
				}
				// Default: Search within (keep filters as they are).
				url = currentUrl;
				if (currentUrl.lastIndexOf(".") > currentUrl.lastIndexOf("/")+1) {
					currentSearch = currentUrl.substring(currentUrl.lastIndexOf("/")+1,currentUrl.lastIndexOf("."));
				}
				if (searchterm!=currentSearch) {
					url = currentUrl + qstring + (qstring!="" ? "&":"?") + "q="+ex+"{0}";
				} else { // keep current search.
					url = currentUrl + qstring;
				}
			}
			gotoSearch(url,searchterm); return false;
		} 
		else if (page=="results")
		{
			var url = window.location.pathname; // default url: /search/{0}.aspx
			if (searchWithinValue=="New Search") { gotoSearch('/search/{0}.aspx',searchterm); return false; }
			var currentSearch = "";
			var qstring = window.location.search!="" ? window.location.search:"";
			if (qstring !="")
			{
				if (searchWithinValue!="Expand Results") {  // replace search term but keep filters.
					var qm = qstring.match(/q=([^a-zA-Z0-9-_,\|~.\(\) ]+)&?/g); // get current search term.
					if (qm && qm.length > 0) { currentSearch = qm.join(""); }
				}
				qstring = qstring.replace(/(q|n|r|p)=[a-zA-Z0-9-_~.\|\(\) ]+&?/g,''); // remove q from query.
				if (qstring="?") { qstring=""; }
			}
			url += qstring + (qstring!="" ? "&":"?") + "q={0}" + (currentSearch!="" ? ","+currentSearch:"");
			
			gotoSearch(url,searchterm); return false;
		}
	}
	return false;
}

// Compare functions.
function getCompare(categoryID,attrib,awebcode) {
	var webcodes = new Array();
	$('input.compare').each(function(index){
		if (this.value==awebcode) { this.checked = true; }
		if (this.checked) { webcodes[webcodes.length] = this.value; }
	});
	if (webcodes.length > 0 && categoryID != "" && attrib!="") {
		buildCompareUrl(categoryID,attrib,webcodes);
	}
}
// Go to CompareUrl.  string categoryID, string attrib, array webcodes
function buildCompareUrl(categoryID,attrib,webcodes) {
	if (categoryID!="" && attrib != "" && webcodes.length > 0)
	{
		var url = "/compare/" + categoryID + "/" + attrib.toLowerCase() + "/" + webcodes.join("-") + ".aspx";
		window.setTimeout(function() {
			window.location.assign(url); },10);
	}
}



