var prevHillnumber = "";

var queryString = window.location.search.substring(1);

var maxRank = 443;

function SearchSubmit(form) {

   strSearch = form.txtSearch.value;
   lenSearch = strSearch.length;
   queryString = "qu=S";
   
   if (lenSearch == 0) {
      alert("Please enter search information");
      return;
   }

   switch (form.optType.selectedIndex) {
      case 0 :
         break;

      case 1 :
         if (lenSearch < 3) {
            alert("Please enter 3 or more characters for this search");
            return;
         }
         break;

      case 2 :
      case 3 :
         arrayHeight = strSearch.split("-");
         startHeight = parseInt(arrayHeight[0]);
         if (isNaN(startHeight) || startHeight < 1) {
            alert("Height must be numeric");
            return;
         }
         endHeight = (arrayHeight.length > 1) ? parseInt(arrayHeight[1]) : startHeight + 1;
         if (isNaN(endHeight) || endHeight < startHeight) {
            alert("Upper height must be numeric and greater than " + startHeight);
            return;
         }
         break;

      case 4 :
         arrayRank = strSearch.split("-");
         startRank = parseInt(arrayRank[0]);
         if (isNaN(startRank) || startRank < 1 || startRank > maxRank) {
            alert("Rank must be numeric between 1 and " + maxRank);
            return;
         }
         endRank = (arrayRank.length > 1) ? parseInt(arrayRank[1]) : startRank + 1;
         if (isNaN(endRank) || endRank < startRank) {
            alert("End rank must be numeric between " + startRank + " and " + maxRank);
            return;
         }
         break;

      case 5 :
	 	 if (lenSearch == 1) queryString = "qu=" + strSearch;
         break;

   }

   queryString += "&mp=uk&" + form.optType.options[form.optType.selectedIndex].value;
   queryString += "=" + form.txtSearch.value;
   
   window.location.search = queryString;
}

function SearchInit(form) {

   if (queryString.length == 0) return;

   switch (true) {
      case (queryString.indexOf("nm=") > -1) :
         form.optType[0].selected = true;
         form.txtSearch.value = queryString.substr(queryString.indexOf("nm=") + 3);
         break;
      case (queryString.indexOf("ni=") > -1) :
         form.optType[1].selected = true;
         form.txtSearch.value = queryString.substr(queryString.indexOf("ni=") + 3);
         break;
      case (queryString.indexOf("hm=") > -1) :
         form.optType[2].selected = true;
         form.txtSearch.value = queryString.substr(queryString.indexOf("hm=") + 3);
         break;
      case (queryString.indexOf("hf=") > -1) :
         form.optType[3].selected = true;
         form.txtSearch.value = queryString.substr(queryString.indexOf("hf=") + 3);
         break;
      case (queryString.indexOf("rk=") > -1) :
         form.optType[4].selected = true;
         form.txtSearch.value = queryString.substr(queryString.indexOf("rk=") + 3);
         break;
      case (queryString.indexOf("ty=") > -1) :
         form.optType[5].selected = true;
         form.txtSearch.value = queryString.substr(queryString.indexOf("ty=") + 3);
         break;
      default :
         form.optType[0].selected = true;
         form.txtSearch.value = "";  
   }
   
   posAmper = form.txtSearch.value.indexOf("&");
   if (posAmper > -1)
      form.txtSearch.value = form.txtSearch.value.substring(0, posAmper);
}

function RunQuery(queryString) {
   window.location.search = queryString;
}

function SelectGroup(form) {
   groupRef = form.optGroup.options[form.optGroup.selectedIndex].value;
   
   queryString = "gp=" + groupRef;
   
   window.location.search = queryString;
}

function YouAreHere(strHillnumber,strOnOff) {
   if (strOnOff == "On") {
      if (prevHillnumber != "") {
         oldSymbol = getSymbol(prevHillnumber);
         iPos = oldSymbol.lastIndexOf("/");
         if (oldSymbol.charAt(iPos + 1) == "F") {
            newSymbol = oldSymbol.substring(0, iPos + 1) + oldSymbol.substring(iPos + 2);
            setSymbol(prevHillnumber, newSymbol);
         }
         setLayer('S' + prevHillnumber,'4');
      }

      oldSymbol = getSymbol(strHillnumber);
      iPos = oldSymbol.lastIndexOf("/");
      if (oldSymbol.charAt(iPos + 1) != "F") {
         newSymbol = oldSymbol.substring(0, iPos + 1) + "F" + oldSymbol.substring(iPos + 1);
         setSymbol(strHillnumber, newSymbol);
      }
      setLayer('S' + strHillnumber,'5');

      prevHillnumber = strHillnumber;

   }
   else {
      if (strHillnumber != "") {
         oldSymbol = getSymbol(strHillnumber);
         iPos = oldSymbol.lastIndexOf("/");
         if (oldSymbol.charAt(iPos + 1) == "F") {
            newSymbol = oldSymbol.substring(0, iPos + 1) + oldSymbol.substring(iPos + 2);
            setSymbol(strHillnumber, newSymbol);
         }
         setLayer('S' + prevHillnumber,'4');
      }

      prevHillnumber = "";
   }
}

function getSymbol(strHillnumber) {
   divID = "mapsymbol";
   if (document.layers && divID)
      {
         return eval("document.layers[divID].document.M" + strHillnumber + ".src");
      }
   else if (document.images)
      {
         return eval("document.M" + strHillnumber + ".src");
      }
}

function setSymbol(strHillnumber,strSymbol) {
   divID = "mapsymbol";
   if (document.layers && divID)
      {
         eval("document.layers[divID].document.M" + strHillnumber + ".src='" + strSymbol + "'");
      }
   else if (document.images)
      {
         eval("document.M" + strHillnumber + ".src='" + strSymbol + "'");
      }
}

function showList(form) {
   switch (form.optList.options[form.optList.selectedIndex].value) {
   case "Nuttalls" :
      setVisibility('listNuttalls','visible');
      setVisibility('listHewitts','hidden');
      setVisibility('listWainwrights','hidden');
      setVisibility('listMarilyns','hidden');
      setVisibility('listDeweys','hidden');
      break;

   case "Hewitts" :
      setVisibility('listNuttalls','hidden');
      setVisibility('listHewitts','visible');
      setVisibility('listWainwrights','hidden');
      setVisibility('listMarilyns','hidden');
      setVisibility('listDeweys','hidden');
      break;

   case "Wainwrights" :
      setVisibility('listNuttalls','hidden');
      setVisibility('listHewitts','hidden');
      setVisibility('listWainwrights','visible');
      setVisibility('listMarilyns','hidden');
      setVisibility('listDeweys','hidden');
      break;

   case "Marilyns" :
      setVisibility('listNuttalls','hidden');
      setVisibility('listHewitts','hidden');
      setVisibility('listWainwrights','hidden');
      setVisibility('listMarilyns','visible');
      setVisibility('listDeweys','hidden');
      break;

   case "Deweys" :
      setVisibility('listNuttalls','hidden');
      setVisibility('listHewitts','hidden');
      setVisibility('listWainwrights','hidden');
      setVisibility('listMarilyns','hidden');
      setVisibility('listDeweys','visible');
      break;

   default :
      setVisibility('listNuttalls','visible');
      setVisibility('listHewitts','hidden');
      setVisibility('listWainwrights','hidden');
      setVisibility('listMarilyns','hidden');
      setVisibility('listDeweys','hidden');
   }
}

function setCookie(varName, varValue) {
   var expDate = new Date();
   expDate.setFullYear(expDate.getFullYear() + 1);

   document.cookie = varName + '=' + varValue + '; expires=' + expDate.toGMTString() + '; path=/;';
}

function getCookie(varName) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f
	
	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );
		
		
		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
	
		// if the extracted name matches passed varName
		if ( cookie_name == varName )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
}

function deleteCookie(varName, varValue) {
   var expDate = new Date();
   expDate.setFullYear(expDate.getFullYear() - 1);

   document.cookie = varName + '=' + varValue + '; expires=' + expDate.toGMTString() + '; path=/;';
}

function PrefsSubmit(form) {

   hiClimbed = (form.chkClimbed.checked == true) ? "Y" : "N";
   
   //if (form.cboSource.selectedIndex == 0) mapSource = "Multimap";
   //if (form.cboSource.selectedIndex == 1) mapSource = "Streetmap";
   //if (form.cboSource.selectedIndex == 2) mapSource = "Getamap";

   homeGridref = form.txtGridref.value;
   
   setCookie("hiClimbed",escape(hiClimbed));
   //setCookie("mapSource",escape(mapSource));
   setCookie("mapSource","Getamap");
   setCookie("homeGridref",escape(homeGridref));
   
   //setCookie("homeLat",escape(homeLat));
   //setCookie("homeLng",escape(homeLng));
   
   window.location.reload(false);
}

function resetMapvars() {
   
   deleteCookie("hiClimbed", "");
   deleteCookie("mapSource", "");
   deleteCookie("homeGridref", "");
   //deleteCookie("homeLat", "");
   //deleteCookie("homeLng", "");
      
   window.location.reload(false);
}

function convGridRef(inGridRef) {
   osGrid = inGridRef.substring(0, 2);
   e1 = inGridRef.substring(2, 3);
   e2 = inGridRef.substring(3, 8);
   n1 = inGridRef.substring(8, 9);
   n2 = inGridRef.substring(9, 14);

   if (osGrid == "??") {
      switch (e1.toString() + n1.toString()) {
         case "25" : return("NX" + e1 + e2 + n1 + n2); break;
         case "35" : return("NY" + e1 + e2 + n1 + n2); break;
         case "45" : return("NZ" + e1 + e2 + n1 + n2); break;
         case "24" : return("SC" + e1 + e2 + n1 + n2); break;
         case "34" : return("SD" + e1 + e2 + n1 + n2); break;
         case "44" : return("SE" + e1 + e2 + n1 + n2); break;
         case "54" : return("TA" + e1 + e2 + n1 + n2); break;
         case "23" : return("SH" + e1 + e2 + n1 + n2); break;
         case "33" : return("SJ" + e1 + e2 + n1 + n2); break;
         case "43" : return("SK" + e1 + e2 + n1 + n2); break;
         case "53" : return("TF" + e1 + e2 + n1 + n2); break;
         case "63" : return("TG" + e1 + e2 + n1 + n2); break;
         case "12" : return("SM" + e1 + e2 + n1 + n2); break;
         case "22" : return("SN" + e1 + e2 + n1 + n2); break;
         case "32" : return("SO" + e1 + e2 + n1 + n2); break;
         case "42" : return("SP" + e1 + e2 + n1 + n2); break;
         case "52" : return("TL" + e1 + e2 + n1 + n2); break;
         case "62" : return("TM" + e1 + e2 + n1 + n2); break;
         case "11" : return("SR" + e1 + e2 + n1 + n2); break;
         case "21" : return("SS" + e1 + e2 + n1 + n2); break;
         case "31" : return("ST" + e1 + e2 + n1 + n2); break;
         case "41" : return("SU" + e1 + e2 + n1 + n2); break;
         case "51" : return("TQ" + e1 + e2 + n1 + n2); break;
         case "61" : return("TR" + e1 + e2 + n1 + n2); break;
         case "00" : return("SV" + e1 + e2 + n1 + n2); break;
         case "10" : return("SW" + e1 + e2 + n1 + n2); break;
         case "20" : return("SX" + e1 + e2 + n1 + n2); break;
         case "30" : return("SY" + e1 + e2 + n1 + n2); break;
         case "40" : return("SZ" + e1 + e2 + n1 + n2); break;
         case "50" : return("TV" + e1 + e2 + n1 + n2); break;
         default : return(dfHomeGridRef);
      }
   }
   else {
      switch (osGrid) {
         case "NX" : return(osGrid + "2" + e2 + "5" + n2); break;
         case "NY" : return(osGrid + "3" + e2 + "5" + n2); break;
         case "NZ" : return(osGrid + "4" + e2 + "5" + n2); break;
         case "SC" : return(osGrid + "2" + e2 + "4" + n2); break;
         case "SD" : return(osGrid + "3" + e2 + "4" + n2); break;
         case "SE" : return(osGrid + "4" + e2 + "4" + n2); break;
         case "TA" : return(osGrid + "5" + e2 + "4" + n2); break;
         case "SH" : return(osGrid + "2" + e2 + "3" + n2); break;
         case "SJ" : return(osGrid + "3" + e2 + "3" + n2); break;
         case "SK" : return(osGrid + "4" + e2 + "3" + n2); break;
         case "TF" : return(osGrid + "5" + e2 + "3" + n2); break;
         case "TG" : return(osGrid + "6" + e2 + "3" + n2); break;
         case "SM" : return(osGrid + "1" + e2 + "2" + n2); break;
         case "SN" : return(osGrid + "2" + e2 + "2" + n2); break;
         case "SO" : return(osGrid + "3" + e2 + "2" + n2); break;
         case "SP" : return(osGrid + "4" + e2 + "2" + n2); break;
         case "TL" : return(osGrid + "5" + e2 + "2" + n2); break;
         case "TM" : return(osGrid + "6" + e2 + "2" + n2); break;
         case "SR" : return(osGrid + "1" + e2 + "1" + n2); break;
         case "SS" : return(osGrid + "2" + e2 + "1" + n2); break;
         case "ST" : return(osGrid + "3" + e2 + "1" + n2); break;
         case "SU" : return(osGrid + "4" + e2 + "1" + n2); break;
         case "TQ" : return(osGrid + "5" + e2 + "1" + n2); break;
         case "TR" : return(osGrid + "6" + e2 + "1" + n2); break;
         case "SV" : return(osGrid + "0" + e2 + "0" + n2); break;
         case "SW" : return(osGrid + "1" + e2 + "0" + n2); break;
         case "SX" : return(osGrid + "2" + e2 + "0" + n2); break;
         case "SY" : return(osGrid + "3" + e2 + "0" + n2); break;
         case "SZ" : return(osGrid + "4" + e2 + "0" + n2); break;
         case "TV" : return(osGrid + "5" + e2 + "0" + n2); break;
         default : return(inGridRef);
      }
   }
}
