KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /domains/gwsolutions/londontrains/embed2.js
//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 );
	}
	
	

Anon7 - 2021