var UPCOMING_API_BASEURL = 'http://upcoming.yahooapis.com/services/rest/?format=json&'; var UPCOMING_API_KEY = 'dceb052b30'; var map = null; var URL_REGEX = /(^|[^'">])((ftp|http|https):\/\/(\S+))(\b|$)/gi; var EMAIL_REGEX = /(^|[^:])([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,})(\b|$)/gi; function load_gmap(){ if(document.getElementById("eventmap") != null){ if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("eventmap")); map.addControl(new GLargeMapControl3D() ); map.addControl(new GMenuMapTypeControl()); map.setCenter(new GLatLng(52,0), 5); } } } function doSearch(){ // clear map of all markers map.clearOverlays(); // get the form vals var params = {api_key: UPCOMING_API_KEY, method: 'event.search', callback:'doSearchCallback'}; var tracker = {what:'', where:''}; // search text if($('#search_text').val() != ''){ params.search_text = $('#search_text').val(); tracker.what = $('#search_text').val(); } // set the dates // min_date - always set to today var min_date = '2010-07-29'; params.min_date = min_date; // max_date var max_date = '2010-08-01'; if($('#when').val()== 7){ max_date = '2010-08-05'; } else if($('#when').val()== 31){ max_date = '2010-08-29'; } params.max_date = max_date; //search location if($('#location').val() != ''){ // lookup the lat/lng for the address var geocoder = new GClientGeocoder(); geocoder.getLatLng( $('#location').val(), function(point) { if (!point) { alert(address + " notfound"); } else { params.location = point.toString(); map.setCenter(point, 8); } var data = $.param(params); $.getScriptXS(UPCOMING_API_BASEURL + data); }); } else { // use the current map centre params.location = map.getCenter().lat() +','+map.getCenter().lng(); map.setCenter(map.getCenter(), 8); var data = $.param(params); $.getScriptXS(UPCOMING_API_BASEURL + data); } tracker.where = $('#location').val(); //call the tracker trackerLog(tracker); } function doSearchCallback(data){ if (data.rsp){ $.each(data.rsp.event, function(i,val) { addMarker(val); }); } else { alert("There are no events matching your search.\n\nPlease try again."); } } function addMarker(eventObj){ var point = new GLatLng(eventObj.latitude, eventObj.longitude); var marker = new GMarker(point, {title: eventObj.name}); map.addOverlay(marker); GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(displayEvent(eventObj)); }); } function displayEvent(eventObj){ var html=''; html += '
'; html += ''+eventObj.name+''; if (eventObj.start_date !=''){ html += '
Date & time: ' + formatDate(parseDate(eventObj.start_date),'E d MMM yyyy'); if (eventObj.start_time != ''){ html += ' ' + getTime(eventObj.start_time); } if (eventObj.end_date != '' || getTime(eventObj.end_time) != ''){ html += ' until '; if (eventObj.end_date !=''){ html += formatDate(parseDate(eventObj.end_date),'E d MMM yyyy'); } if (eventObj.end_time !=''){ html += ' ' + getTime(eventObj.end_time); } } } if (eventObj.venue_name != ''){ html += '
Venue: '+eventObj.venue_name; if (eventObj.venue_address != ''){ html += ', '+eventObj.venue_address; } if (eventObj.venue_zip != ''){ html += ', '+eventObj.venue_zip; } } if(eventObj.ticket_price != '' || eventObj.ticket_free == '1'){ html += '
Tickets: '; if (eventObj.ticket_free == '1'){ html += 'Free'; } if (eventObj.ticket_price != ''){ html += eventObj.ticket_price; } if (eventObj.ticket_url != ''){ html += ' (Book online)'; } } html += '

'+insertLinks(eventObj.description)+'
'; return html; } function insertLinks(inText){ var withurls = inText.replace(URL_REGEX ,"$1$2"); var withemails = withurls.replace(EMAIL_REGEX ,"$1$2"); return withemails; } function getTime(inT){ var outT=''; try { arr = inT.split(':'); outT= arr[0]+ ':' +arr[1]; } catch (err){ //do nothing } return outT; } function trackerLog(track){ var data = $.param(track); $.ajax({ url: './services/tracker.php?'+data, type: 'GET', dataType: 'xml', timeout: 1000, error: function(){ //alert('Error loading XML document'); }, success: function(xml){ // do something with xml //alert('added to tracker'); } }); }