var map;
//var CurMapCenterID = 0;


$(document).ready(function() {

	var myPoint = null;
	var sMapIcon = '/campaigns/slc/172/images/mappin8.png';
	var yIconSize = new YSize(15, 30);
	if ($('#innerMap').length > 0) {
		buildMap('innerMap', 'Baltimore', -1, myPoint, sMapIcon, yIconSize);
	} else {
		if ($('#BCGVMap').length > 0) {
			sMapIcon = '/campaigns/slc/172/images/map_pin.png';
			yIconSize = new YSize(12, 24);
			myPoint = new YGeoPoint(49.169038, -122.903857);
			buildMap('BCGVMap', 'Vancouver', 10, myPoint, sMapIcon, yIconSize);
		}
	}

	$("#tabs").tabs();
	$("#tabs").bind('tabsshow', function(event, ui) {
		sMapIcon = '/campaigns/slc/172/images/map_pin.png';
		yIconSize = new YSize(12, 24);
		if (ui.panel.id == "BCGV") {
			myPoint = new YGeoPoint(49.169038, -122.903857);
			buildMap('BCGVMap', 'Vancouver', 10, myPoint, sMapIcon, yIconSize);
		}
		if (ui.panel.id == "BCVI") {
			myPoint = new YGeoPoint(49.169038, -122.903857);
			buildMap('BCVIMap', 'Vancouver', 12, myPoint, sMapIcon, yIconSize);
		}
		if (ui.panel.id == "BCIBC") {
			myPoint = new YGeoPoint(50.052084, -119.411216);
			buildMap('BCIBCMap', 'Vancouver', 10, myPoint, sMapIcon, yIconSize);
		}
	});


});

function PopUpCenter() {
    eval("pagepopup = window.open('/campaigns/slc/172/files/Auto-PPL-pop-up_v2.html?mapCampID=" + CurMapCenterID + "&temp=224303&phone=866-681-0476&mapping=Baltimore&clickid=', 'popup', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=425,height=500,left=200,top=200');");
}
function ReCenterMap(dLat, dLong, iZoom) {
    var cPoint = new YGeoPoint(dLat, dLong);
    map.drawZoomAndCenter(cPoint, iZoom);
}

function buildMap(dMapLocation, sCampaignName, zoomLevel, yPoint, sMapIcon, yIconSize) {

	// Create a map object 
	map = new YMap(document.getElementById(dMapLocation));

	// Add a pan control 
	map.addPanControl();

	// Add a slider zoom control 
	map.addZoomLong();

	//disabling keys
	map.disableKeyControls();

	// Display the map centered on a latitude and longitude 
	var Environment = "prod";

	// Set map type to either of: YAHOO_MAP_SAT YAHOO_MAP_HYB YAHOO_MAP_REG
	map.setMapType(YAHOO_MAP_REG);

	//Get valid map types, returns array [YAHOO_MAP_REG, YAHOO_MAP_SAT, YAHOO_MAP_HYB]
	var myMapTypes = map.getMapTypes();
	
	//an ajax call to get the campaign
	$.ajax({
		url: '/campaigns/slc/172/XML/GetSLCPPRJSON.aspx/GetCampaign',
		type: "POST",
		data: '{CampaignName: "' + sCampaignName + '"}',
		contentType: "application/json; charset=utf-8",
		dataType: "json",
		async: false,
		success: function(data) {

			//data is actually in .d
			var campaign = data.d;
			
			if(campaign != null) {
				//showing main portion of the map
				var mapPostal = campaign.MapPostalCode;
				zoomLevel = (zoomLevel > -1) ? zoomLevel : campaign.MapZoomLevel;
				var mapCenterPoint;
				if (yPoint == null) {
					if (campaign.MapLatitude != null && campaign.MapLongitude != null)
						mapCenterPoint = new YGeoPoint(campaign.MapLatitude, campaign.MapLongitude);
					else
						mapCenterPoint = mapPostal;
				} else {
					mapCenterPoint = yPoint;
				}
				map.drawZoomAndCenter(mapCenterPoint, zoomLevel);
				
				//setting map id
				CurMapCenterID = campaign.PPRCampaignID;

				//another ajax call to get the centers
				$.ajax({
					url: '/campaigns/slc/172/XML/GetSLCPPRJSON.aspx/GetCampaignCenters',
					type: "POST",
					data: '{PPRCampaignID: ' + campaign.PPRCampaignID + '}',
					contentType: "application/json; charset=utf-8",
					dataType: "json",
					async: false,
					success: function(data2) {

						//data is actually in .d
						var centers = data2.d;
						var iCent = 0;

						//iterating centers
						for (iCent = 0; iCent < centers.length; iCent++) {

							centerRec = centers[iCent];

							//getting address
							var sAddress1 = centerRec.Center.address1;
							var sAddress2 = centerRec.Center.address2;
							var sCity = centerRec.Center.city;
							var sState = centerRec.Center.stateAbbr;
							var sZipcode = centerRec.Center.postalCode;
							//var sHours = centerRec.Center.;
							//var sPrograms = $('Programs', this).text();
							var sLat = centerRec.CenterDirection.latitude;
							var sLong = centerRec.CenterDirection.longitude;

							var x = 12;
							var y = 0;

							// adding marker
							var strAddress = sAddress1 + ", " + sCity + ", " + sState + " " + sZipcode;
							var strCenterInfo = sAddress1 + "<br>";
							if (sAddress2.length > 0) { strCenterInfo += sAddress2 + "<br>"; }
							strCenterInfo += sCity + ", " + sState + " " + sZipcode + "<br>"; // +"<b>H:</b>&nbsp;" + sHours + "<br><b>P:</b>&nbsp;866-747-9942";
							//if(sPrograms.length > 0){ strCenterInfo += "<br>Programs: " + sPrograms; }

							strCenterInfo += "<br><a href='javascript:webVoicePop(\"Template=" + 224303 + "\");'>Click to Call</a>";

							var thisMarker = new YMarker(strAddress);

							var marker = createYahooMarker(strAddress, strCenterInfo, 0, x, y, sLat, sLong, sMapIcon, yIconSize);

							map.addOverlay(marker);
						}

					},
					error: function(XMLHttpRequest, textStatus, errorThrown) {
		
					// Boil the ASP.NET AJAX error down to JSON.
					var err = eval("(" + XMLHttpRequest.responseText + ")");

					// Display the specific error raised by the server
					if(confirm(err.Message + "\n\nHit 'OK' to see more details about this error."))
						alert("Error Message: " + err.Message + "\n\nStack Trace: " + err.StackTrace);
					

					}
				});
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
		
			// Boil the ASP.NET AJAX error down to JSON.
			var err = eval("(" + XMLHttpRequest.responseText + ")");

			// Display the specific error raised by the server
			if(confirm(err.Message + "\n\nHit 'OK' to see more details about this error."))
				alert("Error Message: " + err.Message + "\n\nStack Trace: " + err.StackTrace);
		}
	});

	bMapLoaded = true;
}

function createYahooMarker(geopoint, info, num, x, y, sLat, sLong, sMapIcon, yIconSize) {

    var myImage = new YImage();
    myImage.src = sMapIcon;
    myImage.size = yIconSize;
    myImage.offsetSmartWindow = new YCoordPoint(x, y);
    if (sLat.length > 0 && sLong.length > 0) {
        var ExactPoint = new YGeoPoint(parseFloat(sLat), parseFloat(sLong));
        var marker = new YMarker(ExactPoint, myImage);
    } else {
        var marker = new YMarker(geopoint, myImage);
    }
    //marker.addAutoExpand("<p>" + info + "</p>");
    YEvent.Capture(marker, EventsList.MouseClick, function() { marker.openSmartWindow("<p>" + info + "</p>"); });

    return marker;
}