

var months = ["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
var convertDate = function(str) {
	if(str!="") {
		var yr = str.substr(0,4);
		var mo = months[parseInt(str.substr(5,2),10)];
		var dt = parseInt(str.substr(8,2),10);
		return mo +" "+ dt +", "+yr; 
		}
	else return str;
}
var convertTime = function(str) {
	if(str!="") {
		var hr = parseInt(str.substr(0,2),10);
		var ap = (hr>11)?"pm":"am";
		if(hr==0 || hr%12==0)hr=12;
		else hr=hr%12;
		var mn = str.substr(3,2);
		return hr+":"+mn+ap;
		}
	else return str;
}

ymap = new YMap('event_map');
ymap.addPanControl();
ymap.addZoomLong();
ymap.addTypeControl();
ymap.disableKeyControls();
YEvent.Capture(ymap, EventsList.changeZoom, function() { displaySideNav() } );
YEvent.Capture(ymap, EventsList.endPan,     function() { displaySideNav() } );
var geoPoints = [];
var currentOpenMarker = null;
var searchText_ = "";
var urlExtra = "";
var currentMarkers = [];

var glblMrkr;
var glblEventList;

function initMarker(data){
	var point = new YGeoPoint(data.lat,data.long);
	geoPoints.push(point);
	var marker = new YMarker(point, customMarker());
	marker._uid = data.id;
	var markerData = data.id;	
	YEvent.Capture(marker, EventsList.MouseClick, function() { getUpcomingData(markerData); glblMrkr = marker; });
	return marker;
}

function customMarker(){
	var myImage = new YImage();  
	myImage.src = 'http://l.yimg.com/us.yimg.com/i/mntl/ww/events/08july4/icon_dropsh.png';
	myImage.size = new YSize(21,22);
	return myImage;
}


function initMap(event_list){
	document.getElementById("loading").style.display="block";
   glblEventList = event_list;

   ymap.drawZoomAndCenter("40.84706035607122,-99.4921875", 15);
   setTimeout("initializeMap()", 3500);
}

function initializeMap() {
   var event_list = glblEventList;
   for(var itor = 0; itor < event_list.length; itor++){
       var data = event_list[itor];
       var marker = initMarker(data);
       currentMarkers.push(marker);
       ymap.addOverlay(marker);
   }
   document.getElementById("loading").style.display="none";
   
}



function getUpcomingData(id){
	upcomingData("upcoming.php?_callback=showUpcomingBubble&uid="+id);
	//trackMisc('getUpcomingBubbleData/'+id);
}

function showUpcomingBubble(bubbleData){
	var data = bubbleData[0];
	glblMrkr.openSmartWindow('<div class="my_map_flags" id="mapflags"><p class="name"><a target="_blank" href="http://us.rd.yahoo.com/events/08july4/map/searchres/map/*http://upcoming.yahoo.com/event/'+data.ID+'/">'+data.NAME+'<'+'/a><'+'/p><p class="date">'+convertDate(data.START_DATE)+' '+convertTime(data.START_TIME)+'<'+'/p><p class="addr">'+data.VENUE_ADDRESS+'<br />'+data.VENUE_CITY+', '+data.VENUE_STATE_NAME+'<'+'/p><p><b>Directions:<'+'/b> <a href="http://maps.yahoo.com/dd?taddr='+encodeURI(data.VENUE_ADDRESS+','+data.VENUE_CITY+','+data.VENUE_STATE_NAME)+'&amp;tlt='+data.LATITUDE+'&amp;tln='+data.LONGITUDE+'&amp;tname='+encodeURI(data.NAME)+'" target="_blank">To here<'+'/a> - <a href="http://maps.yahoo.com/dd?newaddr='+encodeURI(data.VENUE_ADDRESS+','+data.VENUE_CITY+','+data.VENUE_STATE_NAME)+'&amp;slt='+data.LATITUDE+'&amp;sln='+data.LONGITUDE+'&amp;tname='+encodeURI(data.NAME)+'" target="_blank">From here<'+'/div>');
}

function searchEvents(locationType){
	var searchString = (document.getElementById('search_text_id').value) ? document.getElementById('search_text_id').value : "USA";
	document.getElementById("search_listing").innerHTML = "processing...";
	ymap.drawZoomAndCenter(searchString, 9);
	//document.getElementById("search_listing").innerHTML = searchString;
}

function displaySideNav() {
	var tmpCenter = ymap.getCenterLatLon();
	var mapCenter = new YGeoPoint(tmpCenter.Lat, tmpCenter.Lon);
	
	var allMarkerIDs = ymap.getMarkerIDs();
	var uid = [];
	var limit = (ymap.getOuterRadius() * ymap.getUnitsPerPixel(ymap.getZoomLevel()).miles);
	if(limit > 500) { limit = 500; }
	for(var itor = 0; itor < allMarkerIDs.length; itor++) {
		if(mapCenter.distance(ymap.getMarkerObject(allMarkerIDs[itor]).YGeoPoint).miles < limit ){
			uid.push(ymap.getMarkerObject(allMarkerIDs[itor])._uid);
		}
	}
	var url = "upcoming.php?uid="+uid.join(",");
	upcomingData(url);
	trackMisc('display_side_nav/'+uid.join("_"));
}

function buildSideNavigation(set){
	var divStuff = document.getElementById("search_listing");
	divStuff.innerHTML = "";

	for(var itor = 0; itor < set.length; itor++){ 
		data = set[itor];

		var allMarkerIDs = ymap.getMarkerIDs();
		var marker = "";
		for(var itor2 = 0; itor2 < allMarkerIDs.length; itor2++) {
			if(ymap.getMarkerObject(allMarkerIDs[itor2]).YGeoPoint.Lat == data.LATITUDE && 
			   ymap.getMarkerObject(allMarkerIDs[itor2]).YGeoPoint.Lon == data.LONGITUDE){
				marker = ymap.getMarkerObject(allMarkerIDs[itor2]);
				break;
			}
		}

		var outerDiv = document.createElement("div");
		try {
			marker.addAutoExpand(data.NAME);
			outerDiv._marker = marker;
			outerDiv.onmouseover = function() { 
				if(currentOpenMarker != null) { try { currentOpenMarker.closeAutoExpand(); } catch (e) {} }
				this._marker.openAutoExpand();
				currentOpenMarker = this._marker;
			};
		} catch (e) {}
		outerDiv.id = "search_listing_"+itor;
		outerDiv.className = "result";
		outerDiv.innerHTML = '<div class="result_details"><ul><li><span class="res_name">'+data.NAME+'</span> <span class="res_date">'+convertDate(data.START_DATE)+'  '+convertTime(data.START_TIME)+'<'+'/li><li>'+data.VENUE_CITY+', '+data.VENUE_STATE_NAME+'<'+'/li><li><a target="_blank" href="http://us.rd.yahoo.com/events/08july4/map/searchres/*http://upcoming.yahoo.com/event/'+data.ID+'/">More Info<'+'/a><'+'/li><'+'/ul><'+'/div>';
		divStuff.appendChild(outerDiv);
	}
	document.getElementById("num_results").innerHTML = set.length;
}

function upcomingData(url){
//	document.getElementById("search_listing").innerHTML = "processing...";
	var _docHead = document.getElementsByTagName("head")[0];
	var myScript = document.createElement("script");
	var searchString = (document.getElementById('search_text_id').value) ? document.getElementById('search_text_id').value : "USA";
	myScript.id = "_newScript_"+(new Date().getTime());
	myScript.type = "text/javascript";
	myScript.src = url;
	_docHead.appendChild(myScript);
	searchText_ = searchString;
	//document.getElementById("search_listing").innerHTML = searchString;
	trackMisc('search/'+searchString);
}

