|
Server : Apache/2.4.62 System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64 User : www ( 80) PHP Version : 8.3.8 Disable Function : NONE Directory : /domains/gwsolutions/londontrains/ |
Upload File : |
//var myLatlng = new google.maps.LatLng(51.51162,-0.089378); // original
var myLatlng = new google.maps.LatLng(51.5069539,-0.019371); // poplar
if (!RESIZE) myLatlng = new google.maps.LatLng(51.51162,0.069378);
var map ;
var infowindow = null;
var lastValidCenter = myLatlng;
var voiceOnly = false;
var voiceFailurePins = [];
var packetFailurePins = [];
var packetFailure4GPins = [];
var stationFailurePins = [];
var trainLines = [];
var markerCluster = null;
var lastPolyline = null;
// bounds of the desired area
var restrictPanning = true;
var allowedBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(49.4221,2.2529),
new google.maps.LatLng(53.8479,2.0243)
);
var stationFailPin = new google.maps.MarkerImage('pins/pin-orange.png',
new google.maps.Size(19, 27),
new google.maps.Point(0, 0),
new google.maps.Point(10, 27));
var pin3 = new google.maps.MarkerImage('pins/pin-Three.png',
new google.maps.Size(19, 27),
new google.maps.Point(0, 0),
new google.maps.Point(10, 27));
var pino2 = new google.maps.MarkerImage('pins/pin-o2.png',
new google.maps.Size(19, 27),
new google.maps.Point(0, 0),
new google.maps.Point(10, 27));
var pinee = new google.maps.MarkerImage('pins/pin-EE.png',
new google.maps.Size(19, 27),
new google.maps.Point(0, 0),
new google.maps.Point(10, 27));
var pinvodafone = new google.maps.MarkerImage('pins/pin-Vodafone.png',
new google.maps.Size(19, 27),
new google.maps.Point(0, 0),
new google.maps.Point(10, 27));
var pinvoice = new google.maps.MarkerImage('pins/pin-blue.png',
new google.maps.Size(19, 27),
new google.maps.Point(0, 0),
new google.maps.Point(10, 27));
var pinpacket = new google.maps.MarkerImage('pins/pin-green.png',
new google.maps.Size(19, 27),
new google.maps.Point(0, 0),
new google.maps.Point(10, 27));
var noPin = new google.maps.MarkerImage('http://b59605efc3e2883ecdb3-449a8475b2ad35fb7f79a5acd883cfc2.r54.cf2.rackcdn.com/images/spacer.png',
new google.maps.Size(1, 1),
new google.maps.Point(0, 0),
new google.maps.Point(1, 1));
// google style
var trainsOnly = [
{
"featureType": "road.highway",
"stylers": [
{ "visibility": "off" }
]
},{
"featureType": "road.arterial",
"stylers": [
{ "visibility": "off" }
]
},{
"featureType": "road.local",
"stylers": [
{ "visibility": "off" }
]
},{
"featureType": "transit.line",
"stylers": [
{ "visibility": "on" },
{ "lightness": 0 },
{ "weight": 1.5 }
]
},{
"featureType": "landscape",
"stylers": [
{ "visibility": "on" },
{ "lightness": 5 },
]
},{
},{
"featureType": "poi",
"stylers": [
{ "visibility": "off" }
]
}
];
function buildCluster() {
var bundle = [];
//alert('clustering...');
//bundle = voiceFailurePins.concat(packetFailurePins).concat(packetFailure4GPins);
if (markerCluster != null) {
markerCluster.clearMarkers();
markerCluster.redraw();
}
for (var i =0; i < voiceFailurePins.length; i++)
{
//if (i < 10) alert(voiceFailurePins[i].getVisible());
if (voiceFailurePins[i].getVisible())
bundle.push(voiceFailurePins[i]);
}
for (var i =0; i < packetFailurePins.length; i++)
{
if (packetFailurePins[i].getVisible())
bundle.push(packetFailurePins[i]);
}
for (var i =0; i < packetFailure4GPins.length; i++)
{
//if (i < 10) alert(packetFailure4GPins[i].getVisible());
if (packetFailure4GPins[i].getVisible())
bundle.push(packetFailure4GPins[i]);
}
var styles = [{
url: 'images/clusterpinsmall-blue.png',
width: 59,
height: 60,
anchor: [0, 0],
textColor: '#ffffff',
textSize: 13
}
];
markerCluster = new MarkerClusterer(map, bundle, {
averageCenter: true,
minimumClusterSize: 10,
gridSize : 40,
styles: styles,
maxZoom: 16
});
}
function getMarker(color,result) {
// i.e. 'pins/Dropped_00008B_3D.png'
var basePath = 'pins/';
//color = '00008B';
var pinPath = basePath + result + '_' + color + '.png';
return new google.maps.MarkerImage(pinPath,
new google.maps.Size(18, 32),
new google.maps.Point(0, 0),
new google.maps.Point(9, 32));
}
function addStationFailure(data) {
var myLatlng = new google.maps.LatLng(data.latitude, data.longitude);
//bounds.extend(myLatlng);
var caption = data.station + ' : ' + data.total_failures + ' total failures';
var marker = new google.maps.Marker({
position : myLatlng,
map : map,
icon : stationFailPin,
title : caption
});
google.maps.event.addListener(marker, 'click', function () {
stationBalloon(map, marker, data);
});
stationFailurePins.push(marker);
return marker;
}
function addFailurePin(data,type) {
var myLatlng = new google.maps.LatLng(data.endlat, data.endlong);
//bounds.extend(myLatlng);
var color = 'Black';
var pin = null;
var carrier = '';
var packetType = '';
if (data.carrier.toLowerCase().indexOf('wcdma') > 0)
packetType = '3G'
else
packetType = '4G';
switch (data.carrier.toLowerCase()) {
case 'vodafone':
case 'vodafone (wcdma)':
case 'vodafone (lte)':
case 'vodafone (sp)':
carrier = 'Vodafone';
color = 'B90005';
pin = pinvodafone;
break;
case '3':
case '3 (wcdma)':
case '3 (lte)':
case '3 (sp)':
color = '2D2D2D';
carrier = '3';
pin = pin3;
break;
case 'ee':
case 'ee (wcdma)':
case 'ee (lte)':
case 'ee (sp)':
carrier = 'EE';
color = '019998';
pin = pinee;
break;
case 'o2':
case 'o2 (wcdma)':
case 'o2 (lte)':
case 'o2 (sp)':
carrier = 'O2';
color = '02387A';
pin = pino2;
break;
default:
color = 'MISSING' + data.carrier;
}
var result = 'GFail';
switch (data.failcategory) {
case 'Poor Signal Level': result = 'AccessFail'; break;
case 'No Service': result = 'NoService'; break;
case 'Assignment Failure': result = 'AccessFail'; break;
case 'Poor Coverage': result = 'AccessFail'; break;
case 'Call Failure': result = 'Dropped'; break;
case 'Access Timeout': result = 'AccessFail'; break;
case 'Poor Signal Qual': result = 'AccessFail'; break;
case 'Nbr Issue/Congestion': result = 'GFail'; break;
case 'Inconclusive': result = 'GFail'; break;
case 'Network Failure' : result = 'GFail'; break;
case 'Handover Failure' : result = 'GFail'; break;
case 'Interference': result = 'GFail'; break;
}
//var icon = getMarker(color, result); // old failure type based pins
var caption = data.carrier + ': ' + data.endresult;
var initialVisibility = true;
if (type != 'Voice') initialVisibility = false;
var marker = new google.maps.Marker({
position : myLatlng,
map : map,
icon : pin,
title : caption,
visible : initialVisibility
});
google.maps.event.addListener(marker, 'click', function () {
failureBalloon(map, marker, color, data,type);
});
marker.Carrier = carrier;
marker.CarrierIcon = pin;
if (type == 'Voice') {
marker.TypeIcon = pinvoice;
voiceFailurePins.push(marker);
}
else {
marker.TypeIcon = pinpacket;
if (packetType == '4G')
packetFailure4GPins.push(marker);
else
packetFailurePins.push(marker);
}
return marker;
}
function carrierCheckbox(obj,carrier) {
if (obj.checked) filterCarrier(carrier,true);
else filterCarrier(carrier,false);
buildCluster();
}
function stationCheckbox(obj) {
for (var i = 0; i < stationFailurePins.length; i++) {
stationFailurePins[i].setVisible(obj.checked);
}
}
function filterCarrier(carrier,flag) {
var voiceFlag = $('#rdoVoice').is(':checked') && flag;
var packetFlag = $('#rdo3G').is(':checked') && flag;
var packet4GFlag = $('#rdo4G').is(':checked') && flag;
for (var i =0; i < voiceFailurePins.length; i++)
{
if (voiceFailurePins[i].Carrier == carrier) voiceFailurePins[i].setVisible(voiceFlag);
}
for (var i =0; i < packetFailurePins.length; i++)
{
if (packetFailurePins[i].Carrier == carrier) packetFailurePins[i].setVisible(packetFlag);
}
for (var i =0; i < packetFailure4GPins.length; i++)
{
if (packetFailure4GPins[i].Carrier == carrier) packetFailure4GPins[i].setVisible(packet4GFlag);
}
}
function showHideVoiceFailures() {
var flag = false;
if ($("#showHideVoiceFailures").text() == 'Hide Voice Failures') {
flag = false;
$("#showHideVoiceFailures").text('Show Voice Failures')
}
else {
flag = true;
$("#showHideVoiceFailures").text('Hide Voice Failures')
}
for (var i =0; i < voiceFailurePins.length; i++)
voiceFailurePins[i].setVisible(flag);
buildCluster();
}
function showHidePacketFailures() {
var flag = false;
if ($("#showHidePacketFailures").text() == 'Hide 3G Packet Failures') {
flag = false;
$("#showHidePacketFailures").text('Show 3G Packet Failures')
}
else {
flag = true;
$("#showHidePacketFailures").text('Hide 3G Packet Failures')
}
for (var i =0; i < packetFailurePins.length; i++)
packetFailurePins[i].setVisible(flag);
buildCluster();
}
function showHidePacket4GFailures() {
var flag = false;
if ($("#showHidePacket4GFailures").text() == 'Hide 4G Packet Failures') {
flag = false;
$("#showHidePacket4GFailures").text('Show 4G Packet Failures')
}
else {
flag = true;
$("#showHidePacket4GFailures").text('Hide 4G Packet Failures')
}
for (var i =0; i < packetFailure4GPins.length; i++)
packetFailure4GPins[i].setVisible(flag);
buildCluster();
}
function hideAll() {
hidePacket4GFailures(false);
hidePacketFailures(false);
hideVoiceFailures(false);
buildCluster();
}
function isCarrierOn(carrier) {
switch (carrier) {
case 'EE': return $('#chkEE').is(':checked');
case '3': return $('#chkThree').is(':checked');
case 'O2': return $('#chkO2').is(':checked');
case 'Vodafone': return $('#chkVodafone').is(':checked');
}
}
function hideVoiceFailures() {
for (var i =0; i < voiceFailurePins.length; i++) {
voiceFailurePins[i].setVisible(false);
}
}
function hidePacketFailures() {
for (var i =0; i < packetFailurePins.length; i++)
packetFailurePins[i].setVisible(false);
}
function hidePacket4GFailures() {
for (var i =0; i < packetFailure4GPins.length; i++)
packetFailure4GPins[i].setVisible(false);
}
function showVoiceFailures() {
hidePacket4GFailures();
hidePacketFailures();
for (var i =0; i < voiceFailurePins.length; i++) {
if (isCarrierOn(voiceFailurePins[i].Carrier))
voiceFailurePins[i].setVisible(true);
}
buildCluster();
}
function showPacketFailures() {
hideVoiceFailures();
hidePacket4GFailures();
for (var i =0; i < packetFailurePins.length; i++) {
if (isCarrierOn(packetFailurePins[i].Carrier))
packetFailurePins[i].setVisible(true);
}
buildCluster();
}
function showPacket4GFailures() {
hideVoiceFailures();
hidePacketFailures();
for (var i =0; i < packetFailure4GPins.length; i++)
if (isCarrierOn(packetFailure4GPins[i].Carrier))
packetFailure4GPins[i].setVisible(true);
buildCluster();
}
function toOrdinal (value) {
var s = String(value),
len = s.length,
end = s.substr(len - 1, 1),
teen = len > 1 && s.substr(len - 2, 1) === "1",
ord = "th";
if (end === "1" && !teen) {
ord = "st";
} else if (end === "2" && !teen) {
ord = "nd";
} else if (end === "3" && !teen) {
ord = "rd";
}
return value + '' + ord;
}
function generateWinner(title,field,match) {
return ""; // no winner, just return blank
}
function generateGraphic(percent,value,label) {
var totalWidth = 63.00;
var shadedWidth = totalWidth * percent; // graphic is regular proportion
/*if (value == null) {
value = Math.round((percent * 100),2) + '%';
shadedWidth = (totalWidth * 2 * percent) - totalWidth; // so that the graphic goes from 50 to 100 instead of 0 to 100 (this is for actual percentages)
}*/
if (label == ' %' || label == '%')
value = (Math.round(value * 1000)/10);//Math.round(value * 100);
var output = '<div class=\"PPdatavalue\">' + value + label + '</div><div class=\"PPgraphic\"><div style="background-image: url(images/bar-grey.png); width: ' + totalWidth + 'px; height: 15px;">' +
'<div style="width: ' + shadedWidth + 'px; height: 15px; overflow: hidden; background-image: url(images/bar-green.png)"></div></div>' +
'</div>';
return output;
}
function lineBalloon(map, marker, jData) {
closePopup();
borderColor = jData.color;
captionColor = "#ffffff";
titleName = jData.Group;
if (jData.color == '#E9E73B' || jData.color == 'White' || jData.color == '#FFFFFF' || jData.color == '#EB9C22' || jData.color == '#95D2F3')
captionColor = "#000000";
var isiPhone = navigator.userAgent.match(/iPhone/i) != null;
var packetResults = "<div class=\"tabs-2\" style=\"display:none;\">" +
"<div class=\"PPclearfix\"><div><h2>3G DOWNLOAD</h2>" +
"<div class=\"PPclearfix PPcarrier\">3" + generateWinner(titleName,'3G_dl','3') + "</div>" + generateGraphic(jData['3_3g_dl_pct'],jData['3_3g_dl'],' Mbps') +
"<div class=\"PPclearfix PPcarrier\">EE" + generateWinner(titleName,'3G_dl','ee') + "</div>" + generateGraphic(jData['ee_3g_dl_pct'],jData['ee_3g_dl'],' Mbps') +
"<div class=\"PPclearfix PPcarrier\">O2" + generateWinner(titleName,'3G_dl','o2') + "</div>" + generateGraphic(jData['o2_3g_dl_pct'],jData['o2_3g_dl'],' Mbps') +
"<div class=\"PPclearfix PPcarrier\">Vodafone" + generateWinner(titleName,'3G_dl','vodafone') + "</div>" + generateGraphic(jData['vodafone_3g_dl_pct'],jData['vodafone_3g_dl'],' Mbps') +
"</div><div class=\"PPdividerline PPclearfix\"></div></div>" +
"<div class=\"PPclearfix\"><div><h2>3G UPLOAD</h2>" +
"<div class=\"PPclearfix PPcarrier\">3" + generateWinner(titleName,'3G_ul','3') + "</div>" + generateGraphic(jData['3_3g_ul_pct'],jData['3_3g_ul'],' Mbps') +
"<div class=\"PPclearfix PPcarrier\">EE" + generateWinner(titleName,'3G_ul','ee') + "</div>" + generateGraphic(jData['ee_3g_ul_pct'],jData['ee_3g_ul'],' Mbps') +
"<div class=\"PPclearfix PPcarrier\">O2" + generateWinner(titleName,'3G_ul','o2') + "</div>" + generateGraphic(jData['o2_3g_ul_pct'],jData['o2_3g_ul'],' Mbps') +
"<div class=\"PPclearfix PPcarrier\">Vodafone" + generateWinner(titleName,'3G_ul','vodafone') + "</div>" + generateGraphic(jData['vodafone_3g_ul_pct'],jData['vodafone_3g_ul'],' Mbps') +
"</div><div class=\"PPdividerline PPclearfix\"></div></div>" +
"<div class=\"PPclearfix\"><div><h2>3G TASK SUCCESS RATE</h2>" +
"<div class=\"PPclearfix PPcarrier\">3" + generateWinner(titleName,'3G_TSR','3') + "</div>" + generateGraphic(jData['3_3g_tsr_pct'],jData['3_3g_tsr'],' %') +
"<div class=\"PPclearfix PPcarrier\">EE" + generateWinner(titleName,'3G_TSR','ee') + "</div>" + generateGraphic(jData['ee_3g_tsr_pct'],jData['ee_3g_tsr'],' %') +
"<div class=\"PPclearfix PPcarrier\">O2" + generateWinner(titleName,'3G_TSR','o2') + "</div>" + generateGraphic(jData['o2_3g_tsr_pct'],jData['o2_3g_tsr'],' %') +
"<div class=\"PPclearfix PPcarrier\">Vodafone" + generateWinner(titleName,'3G_TSR','vodafone') + "</div>" + generateGraphic(jData['vodafone_3g_tsr_pct'],jData['vodafone_3g_tsr'],' %') +
"</div><div class=\"PPdividerline PPclearfix\"></div></div>" +
"</div>" +
"<div class=\"tabs-3\" style=\"display:none;\">" +
"<div class=\"PPclearfix\"><div><h2>4G DOWNLOAD</h2>" +
"<div class=\"PPclearfix PPcarrier\">3" + generateWinner(titleName,'4G_dl','3') + "</div>" + generateGraphic(jData['3_4g_dl_pct'],jData['3_4g_dl'],' Mbps') +
"<div class=\"PPclearfix PPcarrier\">EE" + generateWinner(titleName,'4G_dl','ee') + "</div>" + generateGraphic(jData['ee_4g_dl_pct'],jData['ee_4g_dl'],' Mbps') +
"<div class=\"PPclearfix PPcarrier\">O2" + generateWinner(titleName,'4G_dl','o2') + "</div>" + generateGraphic(jData['o2_4g_dl_pct'],jData['o2_4g_dl'],' Mbps') +
"<div class=\"PPclearfix PPcarrier\">Vodafone" + generateWinner(titleName,'4G_dl','vodafone') + "</div>" + generateGraphic(jData['vodafone_4g_dl_pct'],jData['vodafone_4g_dl'],' Mbps') +
"</div><div class=\"PPdividerline PPclearfix\"></div></div>" +
"<div class=\"PPclearfix\"><div><h2>4G UPLOAD</h2>" +
"<div class=\"PPclearfix PPcarrier\">3" + generateWinner(titleName,'4G_ul','3') + "</div>" + generateGraphic(jData['3_4g_ul_pct'],jData['3_4g_ul'],' Mbps') +
"<div class=\"PPclearfix PPcarrier\">EE" + generateWinner(titleName,'4G_ul','ee') + "</div>" + generateGraphic(jData['ee_4g_ul_pct'],jData['ee_4g_ul'],' Mbps') +
"<div class=\"PPclearfix PPcarrier\">O2" + generateWinner(titleName,'4G_ul','o2') + "</div>" + generateGraphic(jData['o2_4g_ul_pct'],jData['o2_4g_ul'],' Mbps') +
"<div class=\"PPclearfix PPcarrier\">Vodafone" + generateWinner(titleName,'4G_ul','vodafone') + "</div>" + generateGraphic(jData['vodafone_4g_ul_pct'],jData['vodafone_4g_ul'],' Mbps') +
"</div><div class=\"PPdividerline PPclearfix\"></div></div>" +
"<div class=\"PPclearfix\"><div><h2>4G TASK SUCCESS RATE</h2>" +
"<div class=\"PPclearfix PPcarrier\">3" + generateWinner(titleName,'4G_TSR','3') + "</div>" + generateGraphic(jData['3_4g_tsr_pct'],jData['3_4g_tsr'],' %') +
"<div class=\"PPclearfix PPcarrier\">EE" + generateWinner(titleName,'4G_TSR','ee') + "</div>" + generateGraphic(jData['ee_4g_tsr_pct'],jData['ee_4g_tsr'],' %') +
"<div class=\"PPclearfix PPcarrier\">O2" + generateWinner(titleName,'4G_TSR','o2') + "</div>" + generateGraphic(jData['o2_4g_tsr_pct'],jData['o2_4g_tsr'],' %') +
"<div class=\"PPclearfix PPcarrier\">Vodafone" + generateWinner(titleName,'4G_TSR','vodafone') + "</div>" + generateGraphic(jData['vodafone_4g_tsr_pct'],jData['vodafone_4g_tsr'],' %') +
"</div><div class=\"PPdividerline PPclearfix\"></div></div>" +
"</div>";
var voicePacketTabs = "<div class=\"PPtabs\"><ul>" +
"<li class=\"selected\"><a class=\"tab-1\" href=\"#tabs-1\" onclick=\"javascript:switchTab(1); return false;\">VOICE</a></li>" +
"<li><a class=\"tab-2\" href=\"#tabs-2\" onclick=\"javascript:switchTab(2); return false;\">3G DATA</a></li>" +
"<li><a class=\"tab-3\" href=\"#tabs-3\" onclick=\"javascript:switchTab(3); return false;\">4G DATA</a></li></ul></div>" +
"</div>"; // end of tabs
contentString = '<div class="PPwrapper"><div class="PPinner-wrapper"><div class="PPheaderframe"' +
'style="background-color: ' + borderColor + ' !important;" ><h1 style="color: ' +
captionColor + '">' + titleName + '</h1></div>' +
"<div class=\"PPbodyframe\">" +
"<div class=\"PPclearfix\">" +
(voiceOnly ? '' : voicePacketTabs) +
"<div class=\"PPborder\">" +
"<div class=\"tabs-1\">" +
"<div class=\"PPclearfix\"><div><h2>SUCCESSFUL CALL SETUP</h2>" +
"<div class=\"PPclearfix PPcarrier\">3" + generateWinner(titleName,'Accessibility','3') + "</div>" + generateGraphic(jData['3_accessibility_pct'],jData['3_accessibility'],' %') +
"<div class=\"PPclearfix PPcarrier\">EE" + generateWinner(titleName,'Accessibility','ee') + "</div>" + generateGraphic(jData['ee_accessibility_pct'],jData['ee_accessibility'],' %') +
"<div class=\"PPclearfix PPcarrier\">O2" + generateWinner(titleName,'Accessibility','o2') + "</div>" + generateGraphic(jData['o2_accessibility_pct'],jData['o2_accessibility'],' %') +
"<div class=\"PPclearfix PPcarrier\">Vodafone" + generateWinner(titleName,'Accessibility','vodafone') + "</div>" + generateGraphic(jData['vodafone_accessibility_pct'],jData['vodafone_accessibility'],' %') +
"</div><div class=\"PPdividerline PPclearfix\"></div></div>" +
"<div class=\"PPclearfix\"><div><h2>SUCCESSFUL CALL COMPLETION</h2>" +
"<div class=\"PPclearfix PPcarrier\">3" + generateWinner(titleName,'Retainability','3') + "</div>" + generateGraphic(jData['3_retainability_pct'],jData['3_retainability'],' %') +
"<div class=\"PPclearfix PPcarrier\">EE" + generateWinner(titleName,'Retainability','ee') + "</div>" + generateGraphic(jData['ee_retainability_pct'],jData['ee_retainability'],' %') +
"<div class=\"PPclearfix PPcarrier\">O2" + generateWinner(titleName,'Retainability','o2') + "</div>" + generateGraphic(jData['o2_retainability_pct'],jData['o2_retainability'],' %') +
"<div class=\"PPclearfix PPcarrier\">Vodafone" + generateWinner(titleName,'Retainability','vodafone') + "</div>" + generateGraphic(jData['vodafone_retainability_pct'],jData['vodafone_retainability'],' %') +
"</div><div class=\"PPdividerline PPclearfix\"></div></div>" +
"<div class=\"PPclearfix\"><div><h2>VOICE QUALITY</h2>" +
"<div class=\"PPclearfix PPcarrier\">3" + generateWinner(titleName,'Quality','3') + "</div>" + generateGraphic(jData['3_quality_pct'],jData['3_quality'],' %') +
"<div class=\"PPclearfix PPcarrier\">EE" + generateWinner(titleName,'Quality','ee') + "</div>" + generateGraphic(jData['ee_quality_pct'],jData['ee_quality'],' %') +
"<div class=\"PPclearfix PPcarrier\">O2" + generateWinner(titleName,'Quality','o2') + "</div>" + generateGraphic(jData['o2_quality_pct'],jData['o2_quality'],' %') +
"<div class=\"PPclearfix PPcarrier\">Vodafone" + generateWinner(titleName,'Quality','vodafone') + "</div>" + generateGraphic(jData['vodafone_quality_pct'],jData['vodafone_quality'],' %') +
"</div><div class=\"PPdividerline PPclearfix\"></div></div>" +
"</div>" +
( voiceOnly ? '' : packetResults) +
"</div>" + // PPborder
"<div class=\"PPclearfix PPmhlogo\"><a target=\"_blank\" href=\"http://www.maphook.com\">" +
"<img alight=\"left\" src=\"http://b59605efc3e2883ecdb3-449a8475b2ad35fb7f79a5acd883cfc2.r54.cf2.rackcdn.com/images/poweredby-maphook-tiny.png\" style=\"padding-top:10px\" width=\"110\" height=\"18\" alt=\"\" border=\"0\" /></a>" +
"<a target=\"_blank\" href=\"http://www.gwsolutions.com\"><img align=\"right\" src=\"gws-logo-forbubble.png\" width=\"43\" height=\"28\" border=\"0\" /></a>" +
"</div>" +
"</div></div></div>";
infowindow = new InfoBubble({
map : map,
content : contentString,
shadowStyle : 1,
padding : 0,
backgroundColor : 'rgb(255,255,255)',
borderRadius : 10,
arrowSize : 10,
borderWidth : 2,
borderColor : borderColor,
disableAutoPan : false,
hideCloseButton : false,
arrowPosition : 50,
backgroundClassName : 'popbubble',
arrowStyle : 0
});
infowindow.open(map, marker);
}
function switchTrainLegend() {
$("#li-tab-failures").removeClass("selected");
$("#li-tab-trains").addClass("selected");
$("#mobile_failure_legend").hide();
$("#mobile_train_legend").show();
$(".train_label").show();
}
function switchFailureLegend() {
$("#li-tab-failures").addClass("selected");
$("#li-tab-trains").removeClass("selected");
$("#mobile_failure_legend").show();
$("#mobile_train_legend").hide();
}
function switchTab(idx) {
if (idx == 1) {
$(".tabs-1").show();
$(".tabs-2").hide();
$(".tabs-3").hide();
$(".tab-1").parent().addClass("selected");
$(".tab-2").parent().removeClass("selected");
$(".tab-3").parent().removeClass("selected");
}
if (idx == 2) {
$(".tabs-2").show();
$(".tabs-1").hide();
$(".tabs-3").hide();
$(".tab-1").parent().removeClass("selected");
$(".tab-2").parent().addClass("selected");
$(".tab-3").parent().removeClass("selected");
}
if (idx == 3) {
$(".tabs-3").show();
$(".tabs-1").hide();
$(".tabs-2").hide();
$(".tab-1").parent().removeClass("selected");
$(".tab-2").parent().removeClass("selected");
$(".tab-3").parent().addClass("selected");
}
}
function stationBalloon(map, marker, data) {
closePopup();
var bgColor = '#FF7D27';
var borderColor = '#393939';
var captionColor = '#000000';
contentString = '<div class="PPwrapper"><div class="PPinner-wrapper"><div class="PPheaderframe"' +
'style="background-color: ' + bgColor + ' !important;" ><h1 style="color: ' +
captionColor + '">' + data.station + '</h1></div>' +
"<div class=\"PPbodyframe\">" +
"<div class=\"PPclearfix\">" +
"<div class=\"PPborder\">" +
"<div class=\"tabs-1\">" +
"<div class=\"PPclearfix\"><div class=\"PadBottom\"><h2>STATION FAILURES</h2></div>" +
"<div class=\"PPclearfix PPmetric ExtraTopPad\">Avg. Voice Failures<div class=\"PPdatavalue2\">" + data.voice_failures + "</div></div>" +
"<div class=\"PPclearfix PPmetric\">Avg. 4G Failures<div class=\"PPdatavalue2\">" + data.lte_failures + "</div></div>" +
"<div class=\"PPclearfix PPmetric\">Avg. 3G Failures<div class=\"PPdatavalue2\">" + data.wcdma_failures + "</div></div>" +
"<div class=\"PPclearfix PPmetric\">Avg. Total Failures<div class=\"PPdatavalue2\">" + data.total_failures + "</div></div>" +
"<div class=\"PPdividerline PPclearfix\"></div></div>" +
"</div>" +
"</div>" + // PPborder
"<div class=\"PPclearfix PPmhlogo\"><a target=\"_blank\" href=\"http://www.maphook.com\">" +
"<img alight=\"left\" src=\"http://b59605efc3e2883ecdb3-449a8475b2ad35fb7f79a5acd883cfc2.r54.cf2.rackcdn.com/images/poweredby-maphook-tiny.png\" style=\"padding-top:10px\" width=\"110\" height=\"18\" alt=\"\" border=\"0\" /></a>" +
"<a target=\"_blank\" href=\"http://www.gwsolutions.com\"><img align=\"right\" src=\"gws-logo-forbubble.png\" width=\"43\" height=\"28\" border=\"0\" /></a>" +
"</div>" +
"</div></div></div>";
infowindow = new InfoBubble({
map : map,
content : contentString,
shadowStyle : 1,
padding : 0,
backgroundColor : bgColor,
borderRadius : 10,
arrowSize : 10,
borderWidth : 2,
borderColor : borderColor,
disableAutoPan : false,
hideCloseButton : false,
arrowPosition : 50,
backgroundClassName : 'popbubble',
arrowStyle : 0
});
infowindow.open(map, marker);
}
function failureBalloon(map, marker, carrierColor, data,type) {
closePopup();
var bgColor = '#' + carrierColor;
var borderColor = '#' + carrierColor;
var captionColor = '#000000';
var details = '';
var displayResult = '';
if (type == 'Voice') {
if (data.initresult.toLowerCase() == 'blocked') {
displayResult = 'Blocked'
}
else {
displayResult = data.endresult;
}
}
else {
if (data.initresult.toLowerCase().indexOf('failed') >= 0) {
displayResult = 'Task Setup Failure';
}
else {
displayResult = 'Task Transfer Failure';
}
}
if (type == 'Voice') {
details = "<div class=\"PPclearfix PPmetric\">Carrier: <div class=\"PPdatavalue2\">" + data.carrier.replace(' (SP)','') + "</div></div>" +
"<div class=\"PPclearfix PPmetric\">Call Result: <div class=\"PPdatavalue2\">" + displayResult + "</div></div>";
//"<div class=\"PPclearfix PPmetric\">Train Speed (mph): <div class=\"PPdatavalue2\">" + Math.round(data.speedmph) + "</div></div>" +
//"<div class=\"PPclearfix PPmetric\">3G %: <div class=\"PPdatavalue2\">" + Math.round(data.pct_umts * 100) + "</div></div>" +
//"<div class=\"PPclearfix PPmetric\">2G %: <div class=\"PPdatavalue2\">" + Math.round(data.pct_gprs * 100) + "</div></div>";
}
else {
var callDirection = 'Unknown';
switch (data.CallDirection.toLowerCase()) {
case 'httpdl_large':
case 'httpdl': callDirection = 'Download'; break;
case 'httpdl_capacity': callDirection = 'Capacity Test'; break;
case 'httpul_large': callDirection = 'Upload'; break;
}
details = "<div class=\"PPclearfix PPmetric\">Carrier: <div class=\"PPdatavalue2\">" + data.carrier.replace(' (SP)','') + "</div></div>" +
"<div class=\"PPclearfix PPmetric\">Task Type: <div class=\"PPdatavalue2\">" + callDirection + "</div></div>" +
"<div class=\"PPclearfix PPmetric\">Result: <div class=\"PPdatavalue2\">" + displayResult + "</div></div>";
//"<div class=\"PPclearfix PPmetric\">Train Speed (mph): <div class=\"PPdatavalue2\">" + Math.round(data.SPEEDmph) + "</div></div>" +
//"<div class=\"PPclearfix PPmetric\">4G %: <div class=\"PPdatavalue2\">" + Math.round((data.pct_lte + data.pct_dchspa) * 100) + "</div></div>" +
//"<div class=\"PPclearfix PPmetric\">3G %: <div class=\"PPdatavalue2\">" + Math.round((data.pct_umts + data.pct_hspa + data.pct_hspaplus) * 100) + "</div></div>";
//"<div class=\"PPclearfix PPmetric\">2G %: <div class=\"PPdatavalue2\">" + Math.round((data.pct_gprs + data.pct_edge) * 100) + "</div></div>";
}
var contentString = '<div class="PPwrapper"><div class="PPinner-wrapper"><div class="PPheaderframe"' +
'style="background-color: ' + bgColor + ' !important;" ><h1 style="color: #' +
captionColor + '">' +
data.train + '</h1></div>' +
"<div class=\"PPbodyframe\">" +
"<div class=\"PPclearfix\">" +
"<div class=\"PPborder\">" +
"<div class=\"tabs-1\">" + details +
"</div><div class=\"PPdividerline PPclearfix\"></div></div>" +
"</div>" + // PPborder
"<div class=\"PPclearfix PPmhlogo\"><a target=\"_blank\" href=\"http://www.maphook.com\">" +
"<img alight=\"left\" src=\"http://b59605efc3e2883ecdb3-449a8475b2ad35fb7f79a5acd883cfc2.r54.cf2.rackcdn.com/images/poweredby-maphook-tiny.png\" style=\"padding-top:10px\" width=\"110\" height=\"18\" alt=\"\" border=\"0\" /></a>" +
"<a target=\"_blank\" href=\"http://www.gwsolutions.com\"><img align=\"right\" src=\"gws-logo-forbubble.png\" width=\"43\" height=\"28\" border=\"0\" /></a>" +
"</div>" +
"</div></div></div>";
infowindow = new InfoBubble({
map : map,
content : contentString,
shadowStyle : 1,
padding : 0,
backgroundColor : bgColor,
borderRadius : 10,
arrowSize : 10,
borderWidth : 2,
borderColor : borderColor,
disableAutoPan : false,
hideCloseButton : false,
arrowPosition : 50,
backgroundClassName : 'popbubble',
arrowStyle : 0
});
infowindow.open(map, marker);
}
function showByType() {
$("#divByType").show();
$("#divByCarrier").hide();
$("#showByType").css('text-decoration','underline');
$("#showByCarrier").css('text-decoration','none');
for (var i = 0; i < voiceFailurePins.length; i++) {
voiceFailurePins[i].setIcon(voiceFailurePins[i].TypeIcon);
}
for (var i = 0; i < packetFailurePins.length; i++) {
packetFailurePins[i].setIcon(packetFailurePins[i].TypeIcon);
}
}
function showByCarrier() {
$("#divByType").hide();
$("#divByCarrier").show();
$("#showByType").css('text-decoration','none');
$("#showByCarrier").css('text-decoration','underline');
for (var i = 0; i < voiceFailurePins.length; i++) {
voiceFailurePins[i].setIcon(voiceFailurePins[i].CarrierIcon);
}
for (var i = 0; i < packetFailurePins.length; i++) {
packetFailurePins[i].setIcon(packetFailurePins[i].CarrierIcon);
}
}
function initialize() {
// init map
var myOptions = {
mapTypeId: google.maps.MapTypeId.ROADMAP,
zoom : 10,
center : myLatlng,
mapTypeControl : false,
panControl: false,
zoomControl: false,
scaleControl: false,
streetViewControl: false,
styles: trainsOnly
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
if (RESIZE) {
doResize();
}
for (var i = 0; i < trainData.length; i++) {
//addPin(trainData[i]);
//var info = trainData[i].Color + ',' + trainData[i].Group + ';<br /';
//$("#info").append(info);
if (trainData[i].route != '')
renderPolyline(trainData[i]);
else
addDirectionsIdx(i);
}
for (var j = 0; j < voiceCDR.length; j++) {
addFailurePin(voiceCDR[j],'Voice',true);
}
for (var j = 0; j < packetCDR.length; j++) {
addFailurePin(packetCDR[j],'Packet',true);
}
for (var j = 0; j < stationFailures.length; j++) {
addStationFailure(stationFailures[j]);
}
buildCluster();
if (restrictPanning) {
google.maps.event.addListener(map, 'center_changed', function() {
if (allowedBounds.contains(map.getCenter())) {
//alert('allowed');
// still within valid bounds, so save the last valid position
lastValidCenter = map.getCenter();
return;
}
//alert('not allowed: ' + map.getCenter());
// not valid anymore => return to last valid position
map.setCenter(lastValidCenter);
});
}
google.maps.event.addListener(map, "click", function (e) {
closePopup();
});
}
function closePopup() {
{
if (infowindow != null)
infowindow.close();
if (lastPolyline != null)
lastPolyline.setOptions({
strokeOpacity: .5
});
}
}
function addDirectionsIdx(i) {
//if (i == 3 || i == 6) alert('loading more...');
//alert('adding ' + i);
addDirections(trainData[i]);
}
function addDirections(data) {
//alert('adding route for ' + data.Group);
var polylineOptions = {
strokeColor: data.Color,
strokeOpacity: 1.0,
strokeWeight: 6
};
var dirService = new google.maps.DirectionsService();
var dirRenderer = new google.maps.DirectionsRenderer(
{
suppressMarkers: true,
polylineOptions: polylineOptions,
suppressInfoWindows: true,
preserveViewport:true,
hideRouteList: true
});
dirRenderer.setMap(map);
var origin = data.start_Latitude + ',' + data.start_Longitude;
var destination = data.stop_Latitude + ',' + data.stop_Longitude;
var request = {
origin: origin,
destination: destination,
travelMode: google.maps.TravelMode.TRANSIT
};
dirService.route(request, function (response, status) {
if (status == google.maps.DirectionsStatus.OK) {
//document.getElementById('info').innerHTML += data.Group + '<br />' + JSON.stringify(response) + '<hr />';
//dirRenderer.setDirections(response);
var polyline = new google.maps.Polyline({
path: [],
strokeColor: data.Color,
strokeOpacity: 1.0,
strokeWeight: 6
});
var polylineJS = '[';
var legs = response.routes[0].legs;
for (i=0;i<legs.length;i++) {
var steps = legs[i].steps;
for (j=0;j<steps.length;j++) {
var nextSegment = steps[j].path;
for (k=0;k<nextSegment.length;k++) {
polyline.getPath().push(nextSegment[k]);
polylineJS += JSON.stringify(nextSegment[k]) + ',';
//bounds.extend(nextSegment[k]);
}
}
}
polylineJS += '];';
polyline.setMap(map);
document.getElementById('info').innerHTML += data.Group + '<br />' + polylineJS + '<hr />';
/*var legs = response.routes[0].legs;
for (i = 0; i < legs.length; i++) {
var steps = legs[i].steps;
for (j = 0; j < steps.length; j++) {
var transitMode = steps[j].travel_mode;
if (transitMode == "TRANSIT") {
var vehicle = steps[j].transit.line.vehicle.type;
if (vehicle == "HEAVY_RAIL") {
var nextSegment = steps[j].path;
for (k = 0; k < nextSegment.length; k++) {
// polyline.getPath().push(nextSegment[k]);
}
}
}
}
}*/
}
});
}
function displayTrainLine(id) {
for (var i = 0; i < trainLines.length; i++) {
if (trainLines[i].id == id) {
lastPolyline = trainLines[i];
var newCenter = new google.maps.LatLng(trainLines[i].Mid_Latitude,trainLines[i].Mid_Longitude);
map.setCenter(newCenter);
map.setZoom(11);
trainLinePopup(trainLines[i].Group,trainLines[i].Color,newCenter);
trainLines[i].setOptions({
strokeOpacity: 1
});
return;
}
}
}
function renderPolyline(data) {
var polyPath = [];
var firstLatLng = null;
for (var i = 0; i < data.route.length; i++) {
polyPath.push(new google.maps.LatLng(data.route[i].k, data.route[i].B));
if (firstLatLng == null) firstLatLng = new google.maps.LatLng(data.route[i].k, data.route[i].B)
}
var polyline = new google.maps.Polyline({
path: polyPath,
strokeColor: data.Color,
strokeOpacity: 0.5,
strokeWeight: data.Width
});
polyline.setMap(map);
polyline.id = data.id;
polyline.Group = data.Group;
polyline.Color = data.Color;
polyline.Mid_Latitude = data.Mid_Latitude;
polyline.Mid_Longitude = data.Mid_Longitude;
trainLines.push(polyline);
google.maps.event.addListener(polyline,'mouseover',function(event) {
this.setOptions({
strokeOpacity: 1
});
});
google.maps.event.addListener(polyline,'mouseout',function(event) {
this.setOptions({
strokeOpacity: .5
});
});
google.maps.event.addListener(polyline, 'click', function (event) {
trainLinePopup(data.Group,data.Color,event.latLng);
});
}
function trainLinePopup(line,color,position) {
var marker = new google.maps.Marker({
position : position,
map : map,
icon: noPin,
title : ''
});
var testData = {Group: 'Missing', Color: 'Black'};
for (var i = 0; i < trainDetails.length; i++)
{
if (trainDetails[i].title.toLowerCase() == line.toLowerCase())
testData = trainDetails[i];
}
testData.Group = line;
testData.color = color;
lineBalloon(map,marker,testData);
}
function renderRoute(data) {
var dirService = new google.maps.DirectionsService();
var dirRenderer = new google.maps.DirectionsRenderer({suppressMarkers: true, polylineOptions: polylineOptions, suppressInfoWindows: true});
dirRenderer.setMap(map);
dirRenderer.setDirections(data);
}
function clickEvent(data) {
//alert('There will be a popup for ' + data.Group);
//addDirections(data);
}
function addPin(data) {
var myLatlng = new google.maps.LatLng(data.Mid_Latitude, data.Mid_Longitude);
//var icon = getMarker(data.pin);
var caption = data.Group;
var marker = new google.maps.Marker({
position : myLatlng,
map : map,
icon: noPin,
title : caption
});
google.maps.event.addListener(marker, 'click', function () {
clickEvent(data);
});
return marker;
}
function recenter() {
if (map) {
map.setCenter(myLatlng);
map.setZoom(11);
}
closePopup();
}
function showMobileLegend() {
$("#mobile_legend").show();
}
function hideMobileLegend() {
$("#mobile_legend").hide();
}
function showHideContents() {
var isiPhone = navigator.userAgent.match(/iPhone/i) != null;
var ua = navigator.userAgent.toLowerCase();
var isAndroid = ua.indexOf("android") > -1;
if ($("#legend_contents").is(":visible")) {
$("#legend_contents").hide();
$("#toggle").hide();
$("#symbol_legend").height('12px');
$("#symbol_legend").width('28px');
}
else {
$("#toggle").show();
$("#legend_contents").show();
if (isAndroid || isiPhone) {
$("#symbol_legend").height('240px');
$("#symbol_legend").width('110px');
}
else {
$("#symbol_legend").height('532px');
$("#symbol_legend").width('165px');
}
}
}
function toggleFailuresTrains() {
if ($("#failure_legend").is(":visible")) {
$("#failure_legend").hide();
$("#train_legend").show();
$(".train_label").show();
}
else {
$("#failure_legend").show();
$("#train_legend").hide();
$(".train_label").hide();
}
}
window.onresize = function (event) {
if (RESIZE) {
doResize();
}
}
function doResize() {
var isiPhone = navigator.userAgent.match(/iPhone/i) != null;
var ua = navigator.userAgent.toLowerCase();
var isAndroid = ua.indexOf("android") > -1;
var dimensions = getSize();
var poweredL = dimensions.width - 105;
var poweredT = dimensions.height - 50;
var newHeight = dimensions.height;
if (isAndroid || isiPhone) {
$("#expander").show();
$("#toggle").show();
$("#train_legend").hide();
$(".train_label").hide();
$("#symbol_legend").height('240px');
$("#symbol_legend").width('110px');
$(".block50").css('clear','both');
$("#legend_caption").text('Failures:');
$("#station_caption").text('Stations');
}
var imgHeight = $("#header").height();
var recenterTop = imgHeight + 10;
var newHeight = newHeight - imgHeight;
$("#map_canvas").width(dimensions.width + 'px');
$("#map_canvas").height(newHeight + 'px');
$("#powered-by1").css('left',poweredL + 'px');
$("#powered-by1").css('top',poweredT + 'px');
/*$("#recenter").css('top',recenterTop + 'px');
$("#mobile_legend").css('top',imgHeight + 'px');
$("#symbol_legend").css('top',imgHeight + 'px');
$("#show_legend").css('top',imgHeight + 'px');*/
if (map) {
map.setCenter(myLatlng);
map.setZoom(11);
}
}
function getSize() {
var myWidth = 0, myHeight = 0;
if( typeof( window.innerWidth ) == 'number' ) {
//Non-IE
myWidth = window.innerWidth;
myHeight = window.innerHeight;
} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
//IE 6+ in 'standards compliant mode'
myWidth = document.documentElement.clientWidth;
myHeight = document.documentElement.clientHeight;
} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
//IE 4 compatible
myWidth = document.body.clientWidth;
myHeight = document.body.clientHeight;
}
//window.alert( 'Width = ' + myWidth );
if (myWidth == 0) myWidth = 620;
if (myHeight == 0) myHeight = 500;
return {height: myHeight, width: myWidth};
//window.alert( 'Height = ' + myHeight );
}