// -----------------------------------------------------------------------------------
// Browser Detection
// -----------------------------------------------------------------------------------

   var agt=navigator.userAgent.toLowerCase();
   var appVer = navigator.appVersion.toLowerCase();

   var is_gecko = ((navigator.product)&&(navigator.product.toLowerCase()=="gecko"))?true:false;

   var is_moz = ((agt.indexOf('mozilla/5')!=-1) && (agt.indexOf('spoofer')==-1) &&
                (agt.indexOf('compatible')==-1) && (agt.indexOf('opera')==-1)  &&
                (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)     &&
                (is_gecko) && 
                ((navigator.vendor=="")||(navigator.vendor=="Mozilla")||(navigator.vendor=="Debian")));
   
   var is_fx =  ((agt.indexOf('mozilla/5')!=-1) && (agt.indexOf('spoofer')==-1) &&
                 (agt.indexOf('compatible')==-1) && (agt.indexOf('opera')==-1)  &&
                 (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)     &&
                 (is_gecko) && (navigator.vendor=="Firefox"));

// -----------------------------------------------------------------------------------
// Visibility Functions
// -----------------------------------------------------------------------------------

function ToggleMoreLocationMatches()
{
  var Scratch;
  var obj = document.getElementById('MoreLocationMatches');
  var objButton = document.getElementById('MoreLocationMatchesIMG');

  if(obj)
  {
    Scratch = obj.style.display;
    if((Scratch == 'block')  || (Scratch == ''))
    {
      obj.style.display = 'none';
      if(objButton) objButton.src = URLRoot + 'images/ModifySearchOff.gif';
    }
    else
    {
      obj.style.display = 'block';
      if(objButton) objButton.src = URLRoot + 'images/ModifySearchOn.gif';
    }
  }
}

function ToggleRelatedCategories()
{
  var Scratch;
  var obj = document.getElementById('RelatedCategories');
  var objButton = document.getElementById('RelatedCategoriesIMG');

  if(obj)
  {
    Scratch = obj.style.display;
    if((Scratch == 'block')  || (Scratch == ''))
    {
      obj.style.display = 'none';
      if(objButton) objButton.src = URLRoot + 'images/ModifySearchOff.gif';
    }
    else
    {
      obj.style.display = 'block';
      if(objButton) objButton.src = URLRoot + 'images/ModifySearchOn.gif';
    }
  }
}

function ToggleModifySearch()
{
  var Scratch;
  var obj = document.getElementById('ModifySearchTools');
  var objDistanceSort = document.getElementById('DistanceSortBox');
  var objButton = document.getElementById('ModifySearchButtonImage');

  if(obj)
  {
    Scratch = obj.style.display;
    if((Scratch == 'block')  || (Scratch == ''))
    {
      obj.style.display = 'none';
      if(objDistanceSort) objDistanceSort.style.display = 'none';
      if(objButton) objButton.src = URLRoot + 'images/ModifySearchOff.gif';
    }
    else
    {
      obj.style.display = 'block';
      if(objDistanceSort) objDistanceSort.style.dislpay = 'block';
      if(objButton) objButton.src = URLRoot + 'images/ModifySearchOn.gif';
    }
  }
}

function ToggleHeadingGroup(groupName)
{
	var Scratch;
	var objButton = document.getElementById('Img' + groupName);
	var objDiv = document.getElementById(groupName);

	if(objDiv)
	{
		Scratch = objDiv.style.display;
		if((Scratch == 'block') || (Scratch == ''))
		{
			objDiv.style.display = 'none';
			if(objButton) { objButton.src = URLRoot + 'images/ModifySearchOff.gif'; }
		}
		else
		{
			objDiv.style.display = 'block';
			if(objButton) { objButton.src = URLRoot + 'images/ModifySearchOn.gif'; }
		}
	}
}

function MakeModifyVisible(objName)
{
	var IEWin = false;
	var IEMac = false;
	
	if((navigator.appName == "Microsoft Internet Explorer") && !agt.match(/opera/))
	{
 		if(agt.match(/mac/))
		{
			IEMac = true;
		}
		else
		{
			IEWin = true;
		}
	}
	
	var obj = document.getElementById(objName);
	if(obj)
	{
		if(objName != 'FilterSearch')
		{
			MakeModifyHidden('FilterSearch');
		}
		if(objName != 'RelatedCategories')
		{
			MakeModifyHidden('RelatedCategories');
		}
		if(objName != 'StartsWith')
		{
			MakeModifyHidden('StartsWith');
		}
		if(objName != 'ExpandToTool')
		{
			MakeModifyHidden('ExpandToTool');
		}
		if(objName != 'SortBy')
		{
			MakeModifyHidden('SortBy');
		}

		if(!obj.YBLeft)
		{
			var left = obj.offsetLeft;
			var top = obj.offsetTop;
			obj.YBLeft = left;
			
			if(IEWin)
			{
				top = '1.9em';
				switch(objName)
				{
					case 'FilterSearch':
						left -= 132;
					break;
					case 'ExpandToTool':
						left -= 85;
					break;
					case 'RelatedCategories':
						left -= 138;
					break;
					case 'StartsWith':
						left -= 86;
					break;
					case 'SortBy':
						left -= 62;
					break;
				}
			}
			else
			{
				left -= 6;
				top = (top + 3) + 'px';
			}
			obj.style.top = top;
			obj.style.left = left + 'px';
		}
		obj.style.visibility = 'visible';
		
		obj = document.getElementById(objName + 'IMG');
		if(obj)
		{
			obj.src = 'images/ModifyToolOn.gif';
		}
		
		obj = document.getElementById(objName + 'DIV');
		if(obj)
		{
			//obj.style.background = "white url('" + URLRoot + "/images/ModifyToolBGHighlight.gif') bottom repeat-x;";
			obj.style.backgroundColor = "rgb(139,175,222)";
		}
	}
}

function MakeModifyHidden(objName)
{
	var obj = document.getElementById(objName);
	if(obj)
	{
		obj.style.visibility = 'hidden';

		obj = document.getElementById(objName + 'IMG');
		if(obj) { obj.src = 'images/ModifyToolOff.gif'; }

		obj = document.getElementById(objName + 'DIV');
		if(obj) { obj.style.background = ''; }
	}
}

function ToggleModify(objName)
{
	var obj = document.getElementById(objName);
	if(obj)
	{
		if(obj.style.visibility == 'visible')
		{ MakeModifyHidden(objName); }
		else
		{ MakeModifyVisible(objName); }
	}
}

function SetVisible(objName)
{
  var obj;

  obj  = document.getElementById(objName);
  if(obj) { obj.style.display = 'block'; }
}

function SetInVisible(objName)
{
  var obj;

  obj = document.getElementById(objName);
  if(obj) { obj.style.display = 'none'; }
}

// -----------------------------------------------------------------------------------
// Search Functions
// -----------------------------------------------------------------------------------

function KeepSearchInfo(element)
{
	KeepSearchInfo(element, element.href, false);
}

function KeepSearchInfo(element, href, goURL)
{
	if(window.RegExp && window.encodeURIComponent) 
	{
		var url=href; //element.href;
		var what='';
		if(document.SearchForm.Q)what=encodeURIComponent(document.SearchForm.Q.value);
		if(document.HeaderSearchForm) if(document.HeaderSearchForm.Q) if(document.HeaderSearchForm.Q.value.length > 0)what=encodeURIComponent(document.HeaderSearchForm.Q.value);
		var name='';
		if(document.SearchForm.BN)name=encodeURIComponent(document.SearchForm.BN.value);
		if(document.HeaderSearchForm) if(document.HeaderSearchForm.BN) if(document.HeaderSearchForm.BN.value.length > 0)name=encodeURIComponent(document.HeaderSearchForm.BN.value);
		var where='';
		if(document.SearchForm.WH)where=encodeURIComponent(document.SearchForm.WH.value);
		if(document.HeaderSearchForm) if(document.HeaderSearchForm.WH) if(document.HeaderSearchForm.WH.value.length > 0)where=encodeURIComponent(document.HeaderSearchForm.WH.value);
	  
		if(what.length > 0 || name.length > 0 || where.length > 0)
		{
			if(url.indexOf("?") ==-1) url=url+"?";

            url=url.replace(new RegExp(/Q=[^&$]*/i),"q="+what);
			if(url.indexOf("q=") ==-1)
			    {url=url+"&q="+what;}

            url=url.replace(new RegExp(/BN=[^&$]*/i),"bn="+name);
			if(url.indexOf("bn=") ==-1)
				{url=url+"&bn="+name;}

            url=url.replace(new RegExp(/WH=[^&$]*/i),"wh="+where);
			if(url.indexOf("wh=") ==-1)
				{url=url+"&wh="+where;}
		}

		element.href=url;
		if(goURL) { location.href = url; }
	}
	return 1;
}

function KeepWhereInfo(element)
{
  if(window.RegExp && window.encodeURIComponent) 
  {
    var url=element.href;
    var where='';
    if(document.SearchForm) if(document.SearchForm.WH)where=encodeURIComponent(document.SearchForm.WH.value);
    if(document.HeaderSearchForm) if(document.HeaderSearchForm.WH) if(document.HeaderSearchForm.WH.value.length > 0)where=encodeURIComponent(document.HeaderSearchForm.WH.value);
    
    if(where.length > 0)
    {
      if(url.indexOf("?") == -1) url = url + "?";

      url=url.replace(new RegExp(/WH=[^&$]*/i),"wh="+where);
      if(url.indexOf("wh=") ==-1)
        {url=url+"&wh="+where;}
      element.href=url;
    }
  }
  return 1;
}

function KeepBrowseCategory()
{
  var obj = document.getElementById('CurrentBrowseCategory');
  if(obj) { if(document.HeaderSearchForm) if(document.HeaderSearchForm.Q) if(document.HeaderSearchForm.Q.value=='')document.HeaderSearchForm.Q.value=obj.value; }
}

function CheckTab(e)
{
	if(e.keyCode == 9 && !e.shiftKey)
	{
		var obj = null;
		obj = document.getElementById("AD");
		if(!obj)
		{
			obj = document.getElementById("Where");
		}
		if(obj)
		{
			obj.focus();
			obj.select();
			return false;
		}
		else
		{
			obj = document.getElementById("BookState");
			if(!obj)
			{
				obj = document.getElementById("SAMC");
			}
			if(obj)
			{
				obj.focus();
				return false;
			}
		}
	}
}

function CheckShiftTab(e)
{
	if(e.keyCode == 9 && e.shiftKey)
	{
		var obj = document.getElementById("Q");
		
		if(obj && obj.value.length > 0)
		{
			obj.focus();
			obj.select();
			return false;
		}
	}
}

function ClearWhat()
{
	var ClearQ = false;
	var obj = document.forms["SearchForm"].elements["BN"]
	if(obj)
	{
		if(obj.value.length > 0)
		{
			ClearQ = true;
		} 
	}
	if(ClearQ)
	{
		obj = document.forms["SearchForm"].elements["Q"]
		if(obj)
		{
			obj.value = ''; 
		}
	}
}

function ClearBusinessName()
{
	var ClearBN = false;
	var obj = document.forms["SearchForm"].elements["Q"]
	if(obj)
	{
		if(obj.value.length > 0)
		{
			ClearBN = true;
		} 
	}
	if(ClearBN)
	{
		obj = document.forms["SearchForm"].elements["BN"]
		if(obj)
		{
			obj.value = ''; 
		}
	}
}

function SetWhatFocus()
{
  var obj = document.forms["SearchForm"].elements["Q"];
  if(obj) {
    if (obj.type != "hidden") {
      obj.focus();
    }
  }
  
  obj = document.forms["SearchForm"].elements["LN"];
  if(obj) {
    if (obj.type != "hidden") {
      obj.focus();
    }
  }
  
  obj = document.forms["SearchForm"].elements["PH"];
  if(obj) {
    if (obj.type != "hidden") {
      obj.focus();
    }
  }
}

function SetDistanceSortFocus()
{
  var obj = document.forms["DistanceSortForm"].elements["DistanceSortAddress"];
  if(obj) obj.focus();
}

function SetOriginAddressFocus()
{
  var obj = document.forms["DirectionsRequestForm"].elements["OriginAddress"];
  if(obj) {
    if (obj.type != "hidden") {
      obj.focus();
    }
  }
}

function SetSelect(id, value, display)
{
	var obj = document.getElementById(id);
	if(obj)
	{
		obj.value = value;
		obj = document.getElementById(id + 'Display');
		if(obj) obj.innerHTML = display;
	}
	SetInVisible(id + 'Options');
}
 
 function RefreshBookList(StateID, BookID)
{
  var obj = document.getElementById('BookSelectFrame');
  if(obj) { makeRequest('GET', 'Tools.aspx?' + URLFlags + 'ToolTypeID=' + ToolTypesBookSelectList + '&PRID=' + PRID + '&S=' + StateID + '&B=' + BookID, null, true, "handleBookSelectFrame"); }
  return false;
}
 
 function RefreshBookMap(StateID, BookID)
{
	var obj = document.getElementById('BookMapFrame');
	if(obj) { makeRequest('GET', 'Tools.aspx?' + URLFlags + 'ToolTypeID=' + ToolTypesBookMap + '&PRID=' + PRID + '&S=' + StateID + '&B=' + BookID, null, true, "handleBookMapFrame"); }
  return false;
}
 
 function PickStateIDBookID(StateID, BookID)
{
  var i; var obj;
  
  obj = document.getElementById('BookSelectFrame');
  if(obj) {	makeRequest('GET', 'Tools.aspx?' + URLFlags + 'ToolTypeID=' + ToolTypesBookSelectList + '&PRID=' + PRID + '&S=' + StateID + '&B=' + BookID, null, true, "handleBookSelectFrame"); }

  obj = document.getElementById('BookState');
  if(obj)
  {
    if(StateID == 60) StateID = 36;
    if(StateID == 61) StateID = 36;
    for (i = 0; i < obj.length; i++)
      if (obj[i].value == StateID)
      {
        obj.selectedIndex = i;
        i = obj.length;
      }
  }

  obj = document.getElementById('MYYBLB');
  if(obj) { obj.value = BookID; }

  obj = document.getElementById('B'); if(obj) { obj.value = 0; }
  
  obj = document.getElementById('B');
  if(obj) { obj.value = BookID; }

  RefreshBookMap(StateID, BookID);
}
 
function PickBookStateID(StateID)
{
  var i; var obj;
  
  obj = document.getElementById('BookState');
  if(obj)
  {
    RefreshBookList(StateID, 0);
    RefreshBookMap(StateID, 0);
    if(StateID == 60) StateID = 36;
    if(StateID == 61) StateID = 36;
    if(StateID == 66) StateID = 36;
    if(StateID == 62) StateID = 6;
    if(StateID == 63) StateID = 6;
    if(StateID == 64) StateID = 9;
    if(StateID == 65) StateID = 9;
    
    for (i = 0; i < obj.length; i++)
      if (obj[i].value == StateID)
      {
        obj.selectedIndex = i;
        i = obj.length;
      }

    obj = document.getElementById('B'); if(obj) { obj.value = 0; }
  }
}
 
function PickBookID(BookID)
{
  var i;
  var j;
  var obj;
  var obj1;
  var StateID = 0;
  var BookValue;
  
  obj = document.getElementById('Book');
  if(obj) 
  {
    for (i = 0; i < obj.length; i++)
    {
      BookValue = obj[i].value;
      j = obj[i].value.indexOf(":"); if(j > 0) BookValue = obj[i].value.substring(0, j);
      if (BookValue == BookID)
      {
        obj.selectedIndex = i;
        i = obj.length;
      }
    }
  }
  
  obj = document.getElementById('MYYBLB');
  if(obj)
  {
    RefreshBookMap(0, BookID);
    obj.value = BookID;
  }

  obj = document.getElementById('S');
  if(obj)
  {
    i = obj.value;
    if (i > 0) {StateID = i;}
  }
  
  RefreshBookMap(StateID, BookID);
}

function setBookMapFrameSize(newHeight)
{
  var obj = document.getElementById('BookMapFrame');
  if(obj) obj.style.height = newHeight;
}
 
function FillBookSelectFrame(ToolURL)
{
	var obj = document.getElementById('BookSelectFrame');
	if(obj)	{	makeRequest('GET', ToolURL, null, true, "handleBookSelectFrame");	}
}

function handleBookSelectFrame(http_request)
{
	var obj = document.getElementById('BookSelectFrame');
	if(obj) obj.innerHTML = http_request.responseText;
	obj = document.getElementById('BookSelectFrame1');
	if(obj) obj.innerHTML = http_request.responseText;
}

function FillBookMapFrame(ToolURL)
{
	var obj = document.getElementById('BookMapFrame');
	if(obj)	{	makeRequest('GET', ToolURL, null, true, "handleBookMapFrame"); }
}

function handleBookMapFrame(http_request)
{
	var obj = document.getElementById('BookMapFrame');
	if(obj)	{	obj.innerHTML = http_request.responseText; }
}

function validateBusinessSearchForm(form)
{
  var objQ = document.getElementById('Q');
  var objBN = document.getElementById('BN');
  var objWH = document.getElementById('Where');

  if((objQ.value == '' && objBN.value == '') && objWH.value == '')
  { 
		var obj = document.getElementById('SearchErrorBox'); 
		if(obj) { obj.innerHTML = '<br><div id=\"Feedback\" class=\"ErrorMessage\">Invalid search.<br />Provide <u><i>Product/Service</i></u> OR <u><i>Company Name</i></u> information AND<br /><u><i>Location</i></u> information to perform your search.</div>'; obj.style.display = 'block'; return false; }}
  else if(objQ.value == '' && objBN.value == '')
  {
		var obj = document.getElementById('SearchErrorBox'); 
		if(obj) { obj.innerHTML = '<br><div id=\"Feedback\" class=\"ErrorMessage\">Invalid search.<br />Provide <u><i>Product/Service</i></u> OR <u><i>Company Name</i></u> information AND<br /><u><i>Location</i></u> information to perform your search.</div>'; obj.style.display = 'block'; return false; }}
  else if(objQ.value != '' && objBN.value != '') 
  { 
		var obj = document.getElementById('SearchErrorBox'); 
		if(obj) { obj.innerHTML = '<br><div id=\"Feedback\" class=\"ErrorMessage\">Invalid search.<br />Can not search <u><i>Product/Service</i></u> AND <u><i>Company Name</i></u> at the same time.<br />Provide <u><i>Product/Service</i></u> OR <u><i>Company Name</i></u> to perform your search.</div>'; obj.style.display = 'block'; return false; }}
  else
  { return true; }
}

function validateDistanceSearchForm(form)
{
  var objAddress = document.getElementById('AD');
  var objCSZ = document.getElementById('WH');

  var obj = document.getElementById('SAMC');
  if(!obj)
  {
    if(objAddress.value == '' || objCSZ.value == '') { obj = document.getElementById('SearchErrorBox'); if(obj) { obj.innerHTML = '<br><div id=\"Feedback\" class=\"ErrorMessage\">Invalid search.<br />Provide a valid street address, city, state, and zip code information.</div>'; obj.style.display = 'block'; return false; }}
    else
    { return true; }
  }
  else
  { return true; }
}

function setDirectionsSubmitReverse()
{
	var obj = document.getElementById("Submit");
	if(obj)
	{
		obj.value = RouteDirectionReverse;
	}
}

function setDirectionsSubmitForward()
{
	var obj = document.getElementById("Submit");
	if(obj)
	{
		obj.value = RouteDirectionForward;
	}
}
  
function hideHint2(hint)
{
	var obj = document.getElementById(hint);
	if(obj)	{	obj.style.display = "none";	}
}
  
function hideHint(obj,input)
{
	obj.style.display = "none";
	var obj2 = document.getElementById(input);
	if(obj2) { obj2.focus(); }
}
  
function setWhatInputHint()
{
  var Q = document.getElementById('Q');
  var hint = document.getElementById('WhatHint');
  if(Q && hint)
  {
    var obj = document.getElementById('RadioBusinessType');
    if(obj)
    { if(obj.checked) hint.innerHTML = "( ex. Pizza, Hotels, Florist, New Car )"; }
    obj = document.getElementById('RadioBusinessName');
    if(obj)
    { if(obj.checked) hint.innerHTML = "( ex. Alfredo's Pizza, Main Street Books )"; }
  }

  Q = document.getElementById('PH');
  hint = document.getElementById('WhatHint');
  if(Q && hint) hint.innerHTML = "(212) 555-1212, 2125551212 or 212-555-1212";

  Q = document.getElementById('LN');
  hint = document.getElementById('LastNameHint');
  if(Q && hint) hint.innerHTML = "Smith";

  Q = document.getElementById('FN');
  hint = document.getElementById('FirstNameHint');
  if(Q && hint) hint.innerHTML = "John";
}


// -----------------------------------------------------------------------------------
// Results Functions
// -----------------------------------------------------------------------------------
var headerSearchTypeSelectorIconSRC = "images/SearchTypeIconSelector_Business.gif";

function storeHeaderSearchTypeSelectorIconSRC()
{
	var obj = document.getElementById('headerSearchTypeSelectorIcon');
	if(obj) headerSearchTypeSelectorIconSRC = obj.src;
}

function rolloverHeaderSearchTypeSelectorIcon(type)
{
	var obj = document.getElementById('headerSearchTypeSelectorIcon');
	if(obj) obj.src = "images/SearchTypeIconSelector_" + type + ".gif";
}

function revertHeaderSearchTypeSelectorIcon()
{
	var obj = document.getElementById('headerSearchTypeSelectorIcon');
	if(obj) obj.src = headerSearchTypeSelectorIconSRC;
}

function setMapSizeStyles(mapSize)
{
  var page_divs = document.getElementsByTagName("div");
  var obj;

  if(mapSize==ResultsMapSizeLarge)
  {
    for(var i = 0;i < page_divs.length;++i)
    {
      if(page_divs[i].className == "listingLink")
      { page_divs[i].className = "listingLinkTight"; }
			else if(page_divs[i].className == "distance")
			{ page_divs[i].className = "distanceTight"; }
			else if(page_divs[i].className == "adIcon")
			{ page_divs[i].className = "adIconHidden"; } 
    }
    obj = document.getElementById('leftResultsTD');
    if(obj)
    {
			obj.style.width="290px";
			if(agt.match(/opera/)) { obj.style.display = "table-cell"; }
		}
    obj = document.getElementById('localResultsHeaderBackgroundIMG');
    if(obj) { obj.style.width="290px"; }
    SetInVisible('alsoServingSection');
    SetInVisible('premiumBannerBox');
  }
  else
  {
    for(var i=0;i<page_divs.length;++i)
    {
      if(page_divs[i].className == "listingLinkTight")
      { page_divs[i].className = "listingLink"; }
			else if(page_divs[i].className == "distanceTight")
			{ page_divs[i].className = "distance"; }
			else if(page_divs[i].className == "adIconHidden")
			{ page_divs[i].className = "adIcon"; } 
    }
    obj = document.getElementById('leftResultsTD');
    if(obj)
    {
			obj.style.width="400px";
			if(agt.match(/opera/)) { obj.style.display = "table-cell"; }
		}
    obj = document.getElementById('localResultsHeaderBackgroundIMG');
    if(obj) { obj.style.width="400px"; }
    SetVisible('alsoServingSection');
    SetVisible('premiumBannerBox');
  }
}

function SortTypeSelectChange(SortTypeAndURL)
{
	var SortTypeID = 0;
  var SortURL = '';

  if(SortTypeAndURL.indexOf(":") > 0) 
  {
    SortTypeID = SortTypeAndURL.substring(0, SortTypeAndURL.indexOf(":"));
    SortURL = SortTypeAndURL.substring(SortTypeAndURL.indexOf(":") + 1);
  }

  if(SortTypeID == SearchSortTypesDistanceSort)
  {
    var i = 0;
    var obj = document.getElementById('T');
    if(obj) { i = obj.value; }
    
    if(i == SearchTypesProximity)
    { window.location = SortURL; }
    else
    { SetVisible('DistanceSortBox'); }
  }
  else
  { window.location = SortURL; }
}

function SortTypeLoad()
{
	var obj = document.getElementById('ST');	
  var SortTypeID = 0;

  if(obj)
  {
		var SortTypeAndURL = obj.value;
		if(SortTypeAndURL.indexOf(":") > 0) { SortTypeID = SortTypeAndURL.substring(0, SortTypeAndURL.indexOf(":")); }
  }

	if(SortTypeID == 3) { SetVisible('DistanceSortBox'); }
}

  var distanceSortFormReady = false;

function validateDistanceSortForm(form)
{
  var objAddress = document.getElementById('DistanceSortAddress');

  var obj = document.getElementById('DSAMC');
  if(!obj)
  {
    if(!distanceSortFormReady) {
      if(objAddress.value == '') 
      { obj = document.getElementById('DistanceSortErrorBox'); if(obj) { obj.innerHTML = 'In order to sort by distance, you must provide an address to start from.'; obj.style.display = 'block'; }}
      else
      {
        obj = document.getElementById('DistanceSortErrorBox'); if(obj) { obj.style.display = 'none'; }
        makeRequest('GET', 'Tools.aspx?' + URLFlags + 'ToolTypeID=' + ToolTypesGeoCode + '&PRID=' + PRID + '&DSAD=' + objAddress.value, null, true, "handleDistanceSortGeoCode");
      }
    }
    return distanceSortFormReady;
  }
  else
  { return true; }
}

function handleDistanceSortGeoCode(http_request)
{
  var obj;
  var resultCode = parseInt(http_request.responseText.substring(0, 1));
  switch(resultCode)
  {
    case 1: { 
      obj = document.getElementById('DistanceMatchResult'); if(obj) obj.innerHTML = http_request.responseText;
      distanceSortFormReady = true;
      document.DistanceSortForm.submit();
      break;
      }
    case 2: {
      obj = document.getElementById('DistanceSortInputs');   if(obj) obj.innerHTML = http_request.responseText.substring(1);
      obj = document.getElementById('DistanceSortErrorBox'); if(obj) { obj.innerHTML = 'We found multiple matches for the address entered.<br>Please select the correct one and click Sort It to continue your search.';  obj.style.display = 'block'; }
      obj = document.getElementById('DistanceMatchResult');  if(obj) { obj.innerHTML = '&nbsp;<a href=\"javascript:resetDistanceSortForm();\" style=\"font-size:1.1em;\">Try a different address</a>'; obj.style.display = 'block'; }
      break;
      }
    default: {
      obj = document.getElementById('DistanceSortErrorBox'); if(obj) { obj.innerHTML = 'We are unable to locate the address entered.  You may need to enter more or less detailed information to conduct your search since some addresses may not be in our database.'; obj.style.display = 'block'; } 
      break; 
      }
  }
}

function resetDistanceSortForm()
{
  var obj = document.getElementById('DistanceSortInputs'); if(obj) obj.innerHTML = '<input type=\"text\" class=\"text\" id=\"DistanceSortAddress\" name=\"DSAD\" value=\"\">';
  obj = document.getElementById('DistanceSortErrorBox'); if(obj) obj.style.display = 'none';
  obj = document.getElementById('DistanceMatchResult'); if(obj) obj.style.display = 'none';
}

function clearResultsDirectionsDestinationLatLong()
{
  var obj;
	obj = document.getElementById('DestinationLat'); if(obj) obj.value = '';
	obj = document.getElementById('DestinationLong'); if(obj) obj.value = '';
}

function clearResultsDirectionsOriginLatLong()
{
  var obj;
	obj = document.getElementById('OriginLat'); if(obj) obj.value = '';
	obj = document.getElementById('OriginLong'); if(obj) obj.value = '';
}

var newResultsSearchType = null;
var headerWhatWhere = '';

function getCurrentSearchInputs()
{
  var scratch = '';
  if(document.HeaderSearchForm) if(document.HeaderSearchForm.Q)  if(document.HeaderSearchForm.Q.value.length > 0)  var what=encodeURIComponent(document.HeaderSearchForm.Q.value);
  if(document.HeaderSearchForm) if(document.HeaderSearchForm.BN)  if(document.HeaderSearchForm.BN.value.length > 0)  var name=encodeURIComponent(document.HeaderSearchForm.BN.value);
  if(document.HeaderSearchForm) if(document.HeaderSearchForm.WH) if(document.HeaderSearchForm.WH.value.length > 0) var where=encodeURIComponent(document.HeaderSearchForm.WH.value);
  if(what) scratch += "&Q="+what;
  if(name) scratch += "&BN="+name;
  if(where) scratch += "&WH="+where;
  headerWhatWhere = scratch;
}

function pickHeaderSearchType(type)
{
  newResultsSearchType = type;
  getCurrentSearchInputs();
  getSearchHeaderForm();
  setSearchTypeSelectorIcon(newResultsSearchType);
}

function getSearchHeaderForm()
{
  var tempurl = 'Tools.aspx?ToolTypeID=' + ToolTypesSearchFormHeader + '&T=' + newResultsSearchType + '&PRID=' + PRID + headerWhatWhere;
  makeRequest('GET', tempurl, null, true, "handleGetSearchHeaderForm");
}

function handleGetSearchHeaderForm(http_request)
{
  var obj = document.getElementById("headerSearchType");
  if(obj) 
  {
    obj.innerHTML = http_request.responseText;
    if((navigator.appName == "Microsoft Internet Explorer") && !agt.match(/opera/))  { obj.style.marginBottom = "0px"; }
  }

  var re = /<script\b[\s\S]*?>([\s\S]*?)<\//igm;
  var match;
  while (match = re.exec(http_request.responseText)) { eval(match[1]); }

  enableMenus();
}

function setSearchTypeSelectorIcon(type)
{
  var scratch = URLRoot + 'images/SearchTypeIconSelector_';
  var objHeader = document.getElementById('headerSearchTypeSelectorIcon');
  switch(type)
  {
    case SearchTypeBusiness: if(objHeader) objHeader.src = scratch + 'Business.gif'; break;
    case SearchTypeWhitePages: if(objHeader) objHeader.src = scratch + 'People.gif'; break;
    case SearchTypeReversePhone: if(objHeader) objHeader.src = scratch + 'Phone.gif'; break;
    case SearchTypeProximity: if(objHeader) objHeader.src = scratch + 'Distance.gif'; break;
  }
	storeHeaderSearchTypeSelectorIconSRC();
}
  
// -----------------------------------------------------------------------------------
// Toolbar Functions
// -----------------------------------------------------------------------------------

function validateToolbar(form) 
{
  if (form.Accept.checked)
    {return true;}
  else 
  {
    alert("Please read and accept the terms of use before proceeding.");
    return false;
  }
}

function install(url, icon)
{
	var params = new Array();
	params['YBToolbar'] = {
		URL: url,
    IconURL: icon,
		toString: function () {return this.URL;}
	};
	InstallTrigger.install(params);
	return false;
}

// -----------------------------------------------------------------------------------
// ContactUs Functions
// -----------------------------------------------------------------------------------
function getcheckeditem(form) {
    var val = "";
    for (var i=0; i < form.SubjectID.length; i++)  { 
        if (form.SubjectID[i].checked)  {
            val = form.SubjectID[i].value
        } 
    }
    return val;
}

function ContactUsValidateForm(form)
{
	var result  = true;
	var missing = "Please fill in the following fields before submitting:\n\n";
  //if(!form.SubjectID[0].checked && !form.SubjectID[1].checked && !form.SubjectID[2].checked && !form.SubjectID[3].checked && !form.SubjectID[4].checked && !form.SubjectID[5].checked && !form.SubjectID[6].checked && !form.SubjectID[7].checked && !form.SubjectID[8].checked && !form.SubjectID[9].checked)
  if(getcheckeditem(form)=="")
  {
		missing += "- Subject of contact request\n";
		result = false;
  }
  //if(form.SubjectID[5].checked && (form.B.selectedIndex == 0))
  if(getcheckeditem(form) == "6" && (form.B.selectedIndex == 0))
  {
		missing += "- Directory\n";
		result = false;
  }
  if(form.Name.value == "")
  {
		missing += "- Name\n";
		result = false;
  }
  if(form.EMailAddress.value == "")
  {
		missing += "- Email Address\n";
		result = false;
  }
  if(form.Address.value == "")
  {
		missing += "- Address\n";
		result = false;
  }
  if(form.City.value == "")
  {
		missing += "- City\n";
		result = false;
  }
  if(form.State.value == "")
  {
		missing += "- State\n";
		result = false;
  }
  if(form.Zip.value == "")
  {
		missing += "- Zip Code\n";
		result = false;
  }
  if(form.Phone.value == "")
  {
		missing += "- Phone Number\n";
		result = false;
  }
  if(!form.HowHeard[0].checked && !form.HowHeard[1].checked && !form.HowHeard[2].checked && !form.HowHeard[3].checked && !form.HowHeard[4].checked && !form.HowHeard[5].checked && !form.HowHeard[6].checked)
  {
		missing += "- What directed you to our website\n";
		result = false;
  }
  if((form.SubjectID[1].checked || form.SubjectID[2].checked || form.SubjectID[7].checked || form.SubjectID[8].checked || form.SubjectID[9].checked) && (form.Comments.value == ""))
  {
		missing += "- Comments\n";
		result = false;
  }
  if(!result)
  {
		alert(missing);
  }
  return result;
}

function OrderADirectoryValidateForm(form)
{
  var result  = true;
	var missing = "Please fill in the following fields before submitting:\n\n";
	
	if(form.B.selectedIndex == 0)
  {
		missing += "- Directory\n";
		result = false;
  }
	if(form.Name.value == "")
  {
		missing += "- Name\n";
		result = false;
  }
  if(form.EMailAddress.value == "")
  {
		missing += "- Email Address\n";
		result = false;
  }
  if(form.Address.value == "")
  {
		missing += "- Address\n";
		result = false;
  }
  if(form.City.value == "")
  {
		missing += "- City\n";
		result = false;
  }
  if(form.State.value == "")
  {
		missing += "- State\n";
		result = false;
  }
  if(form.Zip.value == "")
  {
		missing += "- Zip Code\n";
		result = false;
  }
  if(form.Phone.value == "")
  {
		missing += "- Phone Number\n";
		result = false;
  }
  if(!form.HowHeard[0].checked && !form.HowHeard[1].checked && !form.HowHeard[2].checked && !form.HowHeard[3].checked && !form.HowHeard[4].checked && !form.HowHeard[5].checked && !form.HowHeard[6].checked)
  {
		missing += "- What directed you to our website\n";
		result = false;
  }
  if(!result)
  {
		alert(missing);
  }
  return result;
}

function AdvertiseValidateForm(form)
{
  var result  = true;
	var missing = "Please fill in the following fields before submitting:<br /><br />";

	if(form.FirstName.value == "")
  {
		missing += "- First Name<br />";
		result = false;
  }
  if(form.LastName.value == "")
  {
		missing += "- Last Name<br />";
		result = false;
  }
  if(form.BusinessName.value == "")
  {
		missing += "- Business Name<br />";
		result = false;
  }
  if(form.Address1.value == "")
  {
		missing += "- Address 1<br />";
		result = false;
  }
  if(form.City.value == "")
  {
		missing += "- City<br />";
		result = false;
  }
  if(form.State.selectedIndex == 0)
  {
		missing += "- State<br />";
		result = false;
  }
  if(form.Zip.value == "")
  {
		missing += "- Zip Code<br />";
		result = false;
  }
  var objBestPhone = document.getElementById('BestByPhone')
  var objBestEmail = document.getElementById('BestByEmail')
  if(objBestPhone && objBestEmail)
  {
		if(!objBestPhone.checked && !objBestEmail.checked)
		{
			missing += "- Best way to reach you<br />";
			result = false;
		}
  }

	if(form.phone1.value == "" || form.phone2.value == "" || form.phone3.value == "")
	{
		missing += "- Complete phone number with area code<br />";
		result = false;
	}

  if(objBestEmail)
  {
		if(objBestEmail.checked)
		{
			if(form.EMailAddress.value == "")
			{
				missing += "- Email Address<br />";
				result = false;
			}
		}
  }
  if(form.EMailAddress.value != "")
  {
		if ((form.EMailAddress.value.length < 5) || (!form.EMailAddress.value.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)))
		{
			missing += "- Valid Email Address<br />";
			result = false;
		}
  }
  if(form.BusinessType.value == "")
  {
		missing += "- Type of Business<br />";
		result = false;
  }
  if(!result)
  {
		var obj = document.getElementById('ContentEngineErrorInstr');
		if(obj)
			obj.innerHTML = missing;
		else
		{
			missing = missing.replace(/<br \/>/g,"\n")
			alert(missing);
		}
  }
  return result;
}

function DisplayCampaignCode () 
{
	var howHear = document.getElementById("howdidyoulearn");
	var campaignCode = document.getElementById("campaign_code_block");

	if (howHear[howHear.selectedIndex].value == "DirectMail") {
		campaignCode.style.display = "block";
	} else {
		campaignCode.style.display = "none";
	}	
}

function CorporateLinkValidateForm(form)
{
  var result  = true;
	var missing = "Please fill in the following fields before submitting:\n\n";

	if(form.Name.value == "")
  {
		missing += "- Name\n";
		result = false;
  }
  if(form.BusinessName.value == "")
  {
		missing += "- Business Name\n";
		result = false;
  }
  if(form.Address.value == "")
  {
		missing += "- Address\n";
		result = false;
  }
  if(form.City.value == "")
  {
		missing += "- City\n";
		result = false;
  }
  if(form.State.value == "")
  {
		missing += "- State\n";
		result = false;
  }
  if(form.Zip.value == "")
  {
		missing += "- Zip Code\n";
		result = false;
  }
  if(form.BusinessType.value == "")
  {
		missing += "- Type Of Business\n";
		result = false;
  }
  if(form.EMailAddress.value == "")
  {
		missing += "- Email Address\n";
		result = false;
  }
  if(form.WebsiteAddress.value == "")
  {
		missing += "- Website Address\n";
		result = false;
  }
  if(!result)
  {
		alert(missing);
  }
  return result;
}

// -----------------------------------------------------------------------------------
// MyYellowbook Functions
// -----------------------------------------------------------------------------------

function SetLoginFocus()
{  
  var obj = document.forms["LoginForm"].elements["EMail"];
  if(obj) { if(obj.type != "hidden") { obj.focus(); } }
}

function SetFirstNameFocus()
{  
  var obj = document.forms["RegisterMyYellowbook"].elements["FirstName"];
  if(obj) { if(obj.type != "hidden") { obj.focus(); } }
}

function setDescriptionFocus()
{
  var obj = document.forms["Location"].elements["Description"];if(obj)obj.focus();
}

function MyYBKeywordType()
{
  var obj = document.getElementById('MYYBKT');
  if(obj)
  {
    var KeywordTypeID = parseInt(obj[obj.selectedIndex].value);
    obj = document.getElementById('KeywordsHeader');
    SetInVisible('FirstNameLabel'); SetInVisible('FirstNameInput');
    switch(KeywordTypeID)
    {
      case KeywordTypeDefault: { obj.innerHTML = "Keyword(s):"; break; }
      case KeywordTypeBusinessName: { obj.innerHTML = "Keyword(s):"; break; }
      case KeywordTypeCategory: { obj.innerHTML = "Keyword(s):"; break; }
      case KeywordTypeListingContains: { obj.innerHTML = "Keyword(s):"; break; }
      case KeywordTypePersonsName: { SetVisible('FirstNameLabel'); SetVisible('FirstNameInput');  obj.innerHTML = "Last Name:";  break; }
    }
  }
}

function MyYBLocationType()
{
  var obj = document.getElementById('MYYBLT');
  if(obj)
  {
    var LocationTypeID;
    if(obj.type != "hidden")LocationTypeID = parseInt(obj[obj.selectedIndex].value);
    else {LocationTypeID = parseInt(obj.value);}
    obj = document.getElementById('WhereHeader');
    SetInVisible('AddressRow');
    SetInVisible('RadiusRow');
    SetInVisible('BookRow');
    SetInVisible('BookRow1');
    SetInVisible('WhereRow');
    SetInVisible('DisclaimerRow');
    switch(LocationTypeID)
    {
      case LocationTypeDefault: { SetVisible('WhereRow'); SetVisible('DisclaimerRow'); if(obj)obj.innerHTML = "Where:"; break; }
      case LocationTypeDirectory: { SetVisible('BookRow'); SetVisible('BookRow1'); break; }
      case LocationTypeDistance: { SetVisible('AddressRow'); SetVisible('RadiusRow'); SetVisible('WhereRow'); SetVisible('DisclaimerRow'); if(obj)obj.innerHTML = "City, State, or Zip Code:"; break; }
    }
  }
}

function validateMyYellowbookSavedKeywordEditForm(form)
{
  if(form.MYYBK == "")
  {
    alert("Please fill in the keyword(s) before submitting.");
    return false;
  }
  else
  {
    var obj = document.getElementById('MYYBKT');
    if(obj)
    {
      var KeywordTypeID = parseInt(obj[obj.selectedIndex].value);
      switch(KeywordTypeID)
      {
        case KeywordTypeDefault: { break; }
        case KeywordTypeBusinessName: { form.Q.value = KeywordTagBusinessName + form.Q.value; break; }
        case KeywordTypeListingContains: { form.Q.value = KeywordTagListingContains + form.Q.value; break; }
        case KeywordTypePersonsName: { form.Q.value = KeywordTagPersonsName + form.Q.value + (form.FN.value.length > 0?', '+form.FN.value:''); break; }
      }
    }
    return true;
  }
}

function validateMyYellowbookSavedLocationEditForm(form)
{
  if(form.Description.value == "")
  { alert("Please fill in the Location Name before submitting."); return false; }
  else
  {
    var obj = document.getElementById('SAMC');
    if(!obj)
    {
      obj = document.getElementById('MYYBLT');
      if(obj)
      {
        var LocationTypeID = parseInt(obj[obj.selectedIndex].value);
        switch(LocationTypeID)
        {
          case LocationTypeDefault:
            {
              if(form.WH.value == "")
              {
                alert("Please fill in the Location before submitting.");
                return false;
              }
              else { return true; }
              break;
            }
          case LocationTypeDirectory:
            {
              if(form.MYYBLB.value == "0")
              {
                alert("Please choose a Yellow Book Directory before submitting.");
                return false;
              }
              else 
              { 
								obj = document.getElementById('Book');
								if(obj) { form.WH.value = obj.options[obj.selectedIndex].text; }
                return true;
              }
              break;
            }
          case LocationTypeDistance:
            {
              if((form.AD.value == "") || (form.WH.value == ""))
              {
                alert("Please fill in the Address field and the City, State or Zip field before submitting.");
                return false;
              }
              else { return true; }
              break;
            }
        }
      }
      else
      { return false; }
    }
    else
    { return true; }
  }
}

function handleSaveSearch(http_request) {
  var obj = document.getElementById('SaveSearchLink');
  if(obj) { obj.innerHTML = http_request.responseText; }
}

function handleSaveKeyword(http_request) {
  var obj = document.getElementById('SaveKeywordLink');
  if(obj) { obj.innerHTML = http_request.responseText; }
}

function handleSaveLocation(http_request) {
  var obj = document.getElementById('SaveLocationLink');
  if(obj) { obj.innerHTML = http_request.responseText; }
}

var SaveListingSender = '';

function saveListing(ListingSender, url) {
  SaveListingSender = ListingSender;
  makeRequest('GET', url, null, true, "handleSaveListing");
}

function handleSaveListing(http_request) {
  var obj = document.getElementById(SaveListingSender);
  if(obj) { obj.innerHTML = http_request.responseText; }
}

function goToCoupon()
{
	location.hash = 'Coupon';
	var obj = document.getElementById("HeaderGoBack1");
	if(obj)
	{
		obj.href = "javascript:history.go(-2);";
	}
	obj = document.getElementById("HeaderGoBack2");
	if(obj)
	{
		obj.href = "javascript:history.go(-3);";
	}
	obj = document.getElementById("FooterGoBack1");
	if(obj)
	{
		obj.href = "javascript:history.go(-2);";
	}
	obj = document.getElementById("FooterGoBack2");
	if(obj)
	{
		obj.href = "javascript:history.go(-3);";
	}
}

// -----------------------------------------------------------------------------------
// Common Functions
// -----------------------------------------------------------------------------------
function SwapImage(obj,which) {
  obj.src=obj.getAttribute(which||"origsrc");
}

function SetupSwapImages()
{
  var obj = document.getElementsByTagName("img");
  for (var i=0;i<obj.length;i++)
  {
    var hoversrc = obj[i].getAttribute("hoversrc");
    if (!hoversrc) continue;
    // preload image
    obj[i].hoversrc_img = new Image();
    obj[i].hoversrc_img.src=hoversrc;
    // set event handlers
    obj[i].onmouseover = new Function("SwapImage(this,'hoversrc');");
    obj[i].onmouseout = new Function("SwapImage(this);");
    // save original src
    obj[i].setAttribute("origsrc",obj[i].src);
  }
}

function getOffsetX(obj) {
	var result = 0;
	if(obj != document.body && obj != null)	{ result = obj.offsetLeft + getOffsetX(obj.offsetParent); }
	return result;
}

function getOffsetY(obj) {
	var result = 0;
	if(obj != document.body && obj != null) { result = obj.offsetTop + getOffsetY(obj.offsetParent); }
	return result;
}

function makeRequest(HTTPRequestMethod, url, params, RequestIsAsynchronous, FunctionHandlingResponse)
{
	var http_request = false;

  if (window.XMLHttpRequest) { // Mozilla, Safari,...
      http_request = new XMLHttpRequest();
      if (http_request.overrideMimeType) {
          http_request.overrideMimeType('text/xml');
      }
  } else if (window.ActiveXObject) { // IE
      try {
          http_request = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
          try {
              http_request = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (e) {}
      }
  }

  if(!http_request) { return false; }

  // If the reqeusted url does not give the FQDN, Opera isn't happy
  var regex = /^https?:\/\//;
	if(!regex.test(url))
	{
		var fullurl = URLRoot;
		url = fullurl + url;
  }

  http_request.open(HTTPRequestMethod, url, RequestIsAsynchronous);
  if(HTTPRequestMethod == 'POST') { http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); }
  http_request.onreadystatechange = function(aEvt)
  {
		if(http_request.readyState == 4)
		{ if(http_request.status == 200) { eval(FunctionHandlingResponse+"(http_request);"); } }
  }
  http_request.send(params);
}

String.prototype.trim = function() {a = this.replace(/^\s+/, ''); return a.replace(/\s+$/, '');};

var cookieDate = new Date();

function checkCookieExpiration(cookiename)
{
	var now = new Date();
	var diff = now.getTime() - cookieDate.getTime();
	if(diff>1000*60*30)
	{
		try { document.cookie = cookiename += "=; expires=" + now.toLocaleTimeString(); }
		catch (e) {}
	}
	else
	{
		setTimeout("checkCookieExpiration('" + cookiename + "')",1000*60);
	}
}

