function collapseMenu()
{
document.getElementById('islbtoggle').checked = '';
}
function submitByEnterKey(event, button_to_action) {
var code = (event.keyCode ? event.keyCode : event.which);
if (code == 13) {
document.getElementById(button_to_action).click();
}
return;
}
function changeSubcatList(tok, ssn, app_code, category)
{
if (window.XMLHttpRequest)
{
//IE7+, Firefox, Chrome, Opera, Safari
var xmlhttp_subcat_list=new XMLHttpRequest();
}
else
{
//IE6, IE5
var xmlhttp_subcat_list=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp_subcat_list.open("POST","create_page.php", true);
//Send the proper header information along with the request
xmlhttp_subcat_list.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp_subcat_list.onreadystatechange=function() {
if (xmlhttp_subcat_list.readyState==4 && xmlhttp_subcat_list.status==200) {
document.getElementById("subcategory_list").innerHTML=xmlhttp_subcat_list.responseText;
}
}
xmlhttp_subcat_list.send("page=index&tok="+tok+"&ssn="+ssn+"&app_code="+app_code+"&func=subcat_change&type="+category);
}
function setStartupMap(location) {
if(location != "")
{
var GEOCODING = 'https://maps.googleapis.com/maps/api/geocode/json?latlng=' + location.coords.latitude + '%2C' + location.coords.longitude + '&language=en&key=AIzaSyDhZ6LZt8nAupnIgM7tshldG87EyA-wFY4';
$.getJSON(GEOCODING).done(function(location) {
document.getElementById("addressInput").value = location.results[0].formatted_address;
})
}
searchBusNearPos(location, "true");
return;
}
function setUserStartupMap(location) {
if(location != "")
{
var GEOCODING = 'https://maps.googleapis.com/maps/api/geocode/json?latlng=' + location.lat() + '%2C' + location.lng() + '&language=en&key=AIzaSyDhZ6LZt8nAupnIgM7tshldG87EyA-wFY4';
}
searchBusNearPos(location, "");
return;
}
function currentLocationMap(location) {
searchBusNearPos(location, "true");
return;
}
function loadMap(address) {
if(address == "")
{
navigator.geolocation.getCurrentPosition(
setStartupMap,
function(){
setStartupMap("");
},
{
enableHighAccuracy: true,
timeout : 500
}
);
}
else
{
//load the map with the intial location setting
var geocoder = new google.maps.Geocoder();
geocoder.geocode({address: address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
setUserStartupMap(results[0].geometry.location);
} else {
setUserStartupMap("");
}
});
}
map = new google.maps.Map(document.getElementById("map"), {
center: {lat:46.327908, lng:-79.497185},
zoom: 3,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}
});
infoWindow = new google.maps.InfoWindow();
locationSelect = document.getElementById("locationSelect");
locationSelect.onchange = function() {
var markerNum = locationSelect.options[locationSelect.selectedIndex].value;
if (markerNum != "none"){
google.maps.event.trigger(markers[markerNum], 'click');
}
};
}
function clearLocations() {
infoWindow.close();
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(null);
}
markers.length = 0;
locationSelect.innerHTML = "";
document.getElementById("search_results").innerHTML = "";
}
function searchLocations() {
var address = document.getElementById("addressInput").value.toLowerCase();
if(address == "current location")
{
navigator.geolocation.getCurrentPosition(currentLocationMap);
return;
}
else
{
var geocoder = new google.maps.Geocoder();
geocoder.geocode({address: address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
searchBusNearPos(results[0].geometry.location, "");
} else {
searchBusNearPos("", "true");
}
});
}
}
function searchBusNearPos(center, init_map) {
var map_radius = 250;
var bus_type = "";
var bus_subcat = "";
if(center == "")
{
var map_radius = 1000;
var bus_type = document.getElementById('site_bus_type').value;
var bus_subcat = document.getElementById('site_bus_subcat').value;
//headquarters
var center_lat = 45.42153;
var center_lng = -75.697193;
clearLocations();
}
else
{
if(init_map == "true")
{
clearLocations();
var center_lat = center.coords.latitude;
var center_lng = center.coords.longitude;
}
else
{
clearLocations();
var map_radius = document.getElementById('radiusSelect').value;
var bus_type = document.getElementById('site_bus_type').value;
var bus_subcat = document.getElementById('site_bus_subcat').value;
var center_lat = center.lat();
var center_lng = center.lng();
}
}
//parse the url string
var SearchString = window.location.search.substring(1);
var VariableArray = SearchString.split('&');
var ssn = '';
var app_code = 0;
var tok = 0;
if(VariableArray.length > 0)
{
for(var i = 0; i < VariableArray.length; i++){
var KeyValuePair = VariableArray[i].split('=');
if(KeyValuePair[0] == "tok"){
tok = KeyValuePair[1];
if(tok == "")
{
tok = 0;
}
}
if(KeyValuePair[0] == "ssn"){
ssn = KeyValuePair[1];
if(ssn == "")
{
ssn = '';
}
}
if(KeyValuePair[0] == "app_code"){
app_code = KeyValuePair[1];
if(app_code == "")
{
app_code = 0;
}
}
}
}
encoded_addr = encodeURIComponent(document.getElementById("addressInput").value);
var searchUrl = 'create_map.php?tok='+tok+'&ssn='+ssn+'&app_code='+app_code+'&lat='+center_lat+'&lng='+center_lng+"&radius="+map_radius+"&type="+bus_type+"&subcat="+bus_subcat+"&addr="+encoded_addr;
downloadUrl(searchUrl, function(data) {
var farthest_point = map_radius;
var xml = parseXml(data);
var markerNodes = xml.documentElement.getElementsByTagName("marker");
var bounds = new google.maps.LatLngBounds();
if(markerNodes.length > 0)
{
for (var i = 0; i < markerNodes.length; i++) {
var tok = markerNodes[i].getAttribute("tok");
var ssn = markerNodes[i].getAttribute("ssn");
var app_code = markerNodes[i].getAttribute("app_code");
var name = markerNodes[i].getAttribute("name");
var address = markerNodes[i].getAttribute("address");
var site_url = markerNodes[i].getAttribute("site_url");
var tel = markerNodes[i].getAttribute("tel");
var id = markerNodes[i].getAttribute("id");
var warning_text = markerNodes[i].getAttribute("warning");
var distance = parseFloat(markerNodes[i].getAttribute("distance"));
if(distance > farthest_point)
{
farthest_point = distance;
}
var lat_lng = new google.maps.LatLng(
parseFloat(markerNodes[i].getAttribute("lat")),
parseFloat(markerNodes[i].getAttribute("lng")));
generateMapMarker(tok, ssn, app_code, lat_lng, name, tel, address, site_url, id);
createOption(name, distance, i);
bounds.extend(lat_lng);
}
}
else
{
var errData = xml.documentElement.getElementsByTagName("error");
for (var i = 0; i < errData.length; i++) {
var warning_text = errData[i].getAttribute("warning");
}
}
center_latLng = new google.maps.LatLng(center_lat, center_lng);
//center on the center location and radius given
var circ = new google.maps.Circle(
{
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.35,
radius: farthest_point*600,
center: center_latLng
}
);
map.setCenter(center_latLng);
map.fitBounds(circ.getBounds());
// updates markers
google.maps.event.trigger(map,'dragend');
locationSelect.style.visibility = "visible";
locationSelect.onchange = function() {
var markerNum = locationSelect.options[locationSelect.selectedIndex].value;
google.maps.event.trigger(markers[markerNum], 'click');
};
//dynamic_details approach
if (window.XMLHttpRequest)
{
//IE7+, Firefox, Chrome, Opera, Safari
var xmlhttp_results=new XMLHttpRequest();
}
else
{
//IE6, IE5
var xmlhttp_results=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp_results.open("POST","create_page.php", true);
//Send the proper header information along with the request
xmlhttp_results.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp_results.onreadystatechange=function() {
if (xmlhttp_results.readyState==4 && xmlhttp_results.status==200) {
document.getElementById("search_results").innerHTML=xmlhttp_results.responseText;
if(warning_text != "")
{
openModal(warning_text);
}
}
}
xmlhttp_results.send("page=index&tok="+tok+"&ssn="+ssn+"&func=listing_results");
});
}
function generateMapMarker(tok, ssn, app_code, lat_lng, name, tel, address, site_url, id) {
if(site_url !="")
{
var html = " " + name + "
" + address +"
"+tel+"
GO TO SITE
";
}
else
{
var html = " " + name + "
" + address +"
"+tel+"
";
}
var marker = new google.maps.Marker({
map: map,
position: lat_lng,
});
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(html);
infoWindow.open(map, marker);
});
google.maps.event.addListener(marker, 'mouseover', function() {
infoWindow.setContent(html);
infoWindow.open(map, marker);
});
markers.push(marker);
}
function createOption(name, distance, num) {
var option = document.createElement("option");
option.value = num;
option.innerHTML = name + " (" + distance.toFixed(1) + " km)";
locationSelect.appendChild(option);
}
function downloadUrl(url, callback) {
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState == 4) {
request.onreadystatechange = emptyFunc();
callback(request.responseText, request.status);
}
};
request.open('GET', url, true);
request.send(null);
}
function parseXml(str) {
if (window.ActiveXObject) {
var doc = new ActiveXObject('Microsoft.XMLDOM');
doc.loadXML(str);
return doc;
} else if (window.DOMParser) {
return (new DOMParser).parseFromString(str, 'text/xml');
}
}
function emptyFunc() {}
var check_counter = 0;
function checkCount(element_id, is_checked)
{
if(is_checked)
{
//increase the check count
check_counter++;
}
else
{
if(check_counter == 1)
{
document.getElementById(element_id).checked = true;
return false;
}
else
{
check_counter--;
}
}
}
function closeModal(reload,clear_contents)
{
if(clear_contents)
{
document.getElementById("system_modal").innerHTML="";
}
document.getElementById("system_overlay").style.visibility = "hidden";
document.getElementById("system_modal").style.visibility = "hidden";
if(reload)
{
current_href = window.location.href;
current_href = str_replace("alert","reload");
window.location.assign(current_href);
}
}
function openModal(content)
{
document.getElementById("system_modal").innerHTML=content;
document.getElementById("system_overlay").style.visibility = "visible";
document.getElementById("system_modal").style.visibility = "visible";
}