function changeLIAll(id, toAdd, callFavCheck) {
	for(var i=0 ; i<5 ; i++) {
		changeLI(id, i, toAdd);
	}
	
	if(callFavCheck == null || callFavCheck == true)
		favoritesCheck();
}

function changeLI(id, unique, toAdd) {
	var aLink = document.getElementById("favA"+id+"u"+unique);
	var aIcon = document.getElementById("favI"+id+"u"+unique);
	if(aLink) {
		if(!toAdd) {
			aIcon.src = "images/remfav.png";
			aIcon.title = "Remove from favorites.";
			aLink.href = "javascript:loglink('remfav:"+id+"'); removeFav("+id+")";
		} else {
			aIcon.src = "images/addtofav.png";
			aIcon.title = "Add to favorites.";
			aLink.href = "javascript:loglink('addfav:"+this.id+"'); addToFav("+id+")";
		}
	}
}

function addToFav(id, checkFav) {
	var added = false;
	var favs = getFavs();
	
	added = favs.contains(id);
	
	if(!added) {
		favs.push(id);
		eraseCookie('favs');
		createCookie('favs', favs.getCSV(), false);
		added = true;
	}
	
	changeIdToFavIcon(id, true);
	changeLIAll(id, false, checkFav);
}

function removeFav(id) {	
	var favs = getFavs();
	var erased = false;
	var newFavs = new Array();
	
	for(var i=0 ; i<favs.length ; i++) {
		if(favs[i] == id) {
			erased = true;
		} else {
			newFavs.push(favs[i]);
		}
	}
	
	if(erased) {
		eraseCookie('favs');
		createCookie('favs', newFavs.getCSV(), false);
	}

	changeIdToFavIcon(id, false);
	changeLIAll(id, true, true);
}

function getFavs() {
	var val = readCookie('favs');
	var favs = new Array();
	
	if(val != null)
		favs = val.split(",");
	
	return favs;
}

function resetFavs() {
	var favs = getFavs();
	
	for(var i=0 ; i<favs.length ; i++) {
		changeIdToFavIcon(favs[i], false);
		changeLIAll(favs[i], true, false);
	}
	
	eraseCookie('favs');
	favoritesCheck();
}

function getFavsHTML(unique) {
	var favs = getFavs();
	
	var htmlstr = "";
	
	if(unique == 3) {
		htmlstr = "<div align=center class='smallFont' style='color: black;'>[ <a class='smallFont' style='color: black;' href='javascript:resetFavs(); favoritesCheck();'>Clear Favorites</a> | <a class='smallFont' style='color: black;' href='javascript:locToggle(5);'>Map Favorites Only</a> ]</div><hr>"
	}
	
	if(favs == 0) {
		htmlstr += "<b>You currently have no locations in your favorites.</b><br>";
		htmlstr += "To add locations to your favorites simply click the <img src='images/addtofav.png'> when you see a location you like.";
		return htmlstr;
	}
	
	for(var i=0 ; i<favs.length ; i++) {
		var id = favs[i];
		if(id != null && id>0) {
			var loc = getLocationWithID(id);
			if(loc != null) {
				htmlstr += loc.getSummaryHTML(unique, false)+"<hr>";
			} else {
				alert("Bad ID '"+id+"' for favorite "+i);
			}
		}
	}
	
	return htmlstr;
}

function isInFav(id) {
	var favs = getFavs();
	
	return favs.contains(id);
}

function favoritesCheck() {
	favoritesCheckFirstTime(false);
}

function favoritesCheckFirstTime(firstTime) {
	var favs = getFavs();
	if(favs != null && favs.length > 0) {
		if(firstTime) {
			for(var i=0 ; i<favs.length ; i++) {
				changeIdToFavIcon(favs[i], true);
			}
		}
		showFavsNextToMap();
		map.checkResize();
		resizePano();
	} else {
		hideDiv(document.getElementById('favsNextToMapDiv'));
		map.checkResize();
		resizePano();
	}
}

function showFavsNextToMap() {
	var favsNTMDiv = document.getElementById('favsNextToMapDiv');
	if(favsNTMDiv != null) {
		favsNTMDiv.innerHTML = "<table border=0 cellspacing=0 cellpadding=0 style='font-family: arial; font-size: 8px;'><tr><td width=300 style='padding: 5px;'>"+getFavsHTML(3)+"</td></tr></table>";
		showDiv(favsNTMDiv);
	} else {
		alert("An unknown error occurred, please report this error (code 'f1').");
	}
}