		google.load('ads', '1.0');
		
		var map;
		var xml;
		var a;
		var markers = new Array();
		var words = new Array();
		var find = new Array();
		var result = 0;
		var count;
		var category;
		var yt_width;
		var yt_height;		
	
        var baseIcon = new GIcon();
		baseIcon.image = "obama_icon.png";
        baseIcon.iconSize = new GSize(36, 33);
        baseIcon.iconAnchor = new GPoint(1, 33);
        baseIcon.infoWindowAnchor = new GPoint(13, 9);
        baseIcon.infoShadowAnchor = new GPoint(18, 25);

        var icon = new GIcon(baseIcon);				

		function fakeStopVideo(){//to stop audio playback issue in IE when infowindow is closed
			if(a==1) { 
				map.openInfoWindowHtml(map.getCenter(),'<P>');
				a=0;
			}
		}			
		
		function show_infowindow(i) {
	        var number = xml.documentElement.getElementsByTagName("video")[i].childNodes[0].nodeValue;
			var parts = '';
			var part;
			if(number != 1){ //if more than one video, create link for all parts
				parts = '<span id="currentPart" class="nolink">(playing part1)</span>';
				for(var p=0;p<number;p++){
					part = "part"+(p+1);
					parts += ' - <a class="link" href="#" onclick="document.getElementById(\'player\').src = xml.documentElement.getElementsByTagName(\'video\')['+i+'].getAttribute(\''+part+'\');document.getElementById(\'currentPart\').innerHTML = \'(playing part'+(p+1)+')\'">part'+(p+1)+'</a>';
				}
			}
			map.panTo(new GLatLng(xml.documentElement.getElementsByTagName("lat")[i].childNodes[0].nodeValue, xml.documentElement.getElementsByTagName("lng")[i].childNodes[0].nodeValue));
			markers[i].openInfoWindowHtml('<div align="center"><span><b>'+xml.documentElement.getElementsByTagName("title")[i].childNodes[0].nodeValue+'<br>'+xml.documentElement.getElementsByTagName("date")[i].childNodes[0].nodeValue+' - '+xml.documentElement.getElementsByTagName("location")[i].childNodes[0].nodeValue+'</b></span><br><embed id="player" src="'+xml.documentElement.getElementsByTagName("video")[i].getAttribute("part1")+'" type="application/x-shockwave-flash" width='+yt_width+' height='+yt_height+'></embed><br>'+parts+'</div>');
			a=1;
		}		
	
		function load_marker(i){
			markers[i] = new GMarker(new GLatLng(xml.documentElement.getElementsByTagName("lat")[i].childNodes[0].nodeValue, xml.documentElement.getElementsByTagName("lng")[i].childNodes[0].nodeValue),{icon:icon,title: xml.documentElement.getElementsByTagName("title")[i].childNodes[0].nodeValue});
			map.addOverlay(markers[i]);
			GEvent.addListener(markers[i], "click", function() { show_infowindow(i); });
			GEvent.addListener(markers[i],"infowindowclose", function() {fakeStopVideo();});
		}

		function show_latest(num) {
			map.clearOverlays();
			if (num == 0) num = xml.documentElement.getElementsByTagName("campaign").length;
			else num = num + 1;
			var panel_html = '<div style="border-top:1px dashed #888;border-bottom:1px dashed #888;padding:5px;background:#ddd;" class="nolink"><a class="link" href="#" onclick="show_latest(0)">All</a> | <a class="link" href="#" onclick="show_latest(25)">25</a> | <a class="link" href="#" onclick="show_latest(10)">10</a> recent videos</div>';
			for (var i = xml.documentElement.getElementsByTagName("campaign").length - 1; i > xml.documentElement.getElementsByTagName("campaign").length-num; i--) {
				load_marker(i);
				panel_html += '<div style="border-bottom:1px dashed #888;padding:5px;background:#'+xml.documentElement.getElementsByTagName("bgcolor")[i].childNodes[0].nodeValue+'"><a class="link" href="#" onclick="show_infowindow('+i+');a=1;">'+xml.documentElement.getElementsByTagName("title")[i].childNodes[0].nodeValue+'</a><br><span class="text3"><B>'+xml.documentElement.getElementsByTagName("date")[i].childNodes[0].nodeValue+':</B> '+xml.documentElement.getElementsByTagName("details")[i].childNodes[0].nodeValue+'</span></div>';
			}
			document.getElementById('panel').innerHTML = panel_html;	
		}
		
		function show_map(xmlfile, sidebar) {
			map.clearOverlays();
			if (sidebar == 1) {
				document.getElementById('panel').innerHTML = '<center class="text3">Loading...<center>';//show loading while parsing xml
			}	
			GDownloadUrl(xmlfile, function(data, responseCode) {
				xml = GXml.parse(data);
				var panel_html = '';
				var videos_option = '<select style="width:200px;background:#00527B;color:#dddddd;font:10pt Arial;" onchange="show_infowindow(this.options[this.selectedIndex].value);"><option value="" selected="selected">Select a video</option>';
			//	for (var i = 1; i < xml.documentElement.getElementsByTagName("campaign").length; i++) {
				for (var i = xml.documentElement.getElementsByTagName("campaign").length - 1; i > 0; i--) {	//marker and panel/option with latest first			
					load_marker(i);
					panel_html += '<div style="border-bottom:1px dashed #888;padding:5px;background:#'+xml.documentElement.getElementsByTagName("bgcolor")[i].childNodes[0].nodeValue+'"><a class="link" href="#" onclick="show_infowindow('+i+');a=1;">'+xml.documentElement.getElementsByTagName("title")[i].childNodes[0].nodeValue+'</a><br><span class="text3"><B>'+xml.documentElement.getElementsByTagName("date")[i].childNodes[0].nodeValue+':</B> '+xml.documentElement.getElementsByTagName("details")[i].childNodes[0].nodeValue+'</span></div>';
					videos_option += '<option value="'+i+'">'+xml.documentElement.getElementsByTagName("date")[i].childNodes[0].nodeValue+': '+xml.documentElement.getElementsByTagName("title")[i].childNodes[0].nodeValue+'</option>';				
				}
				if (sidebar == 1) {
					document.getElementById('panel').innerHTML = panel_html;
				} 
				else {
					document.getElementById('videos').innerHTML =  videos_option + '</select>';
				}	
				GEvent.addListener(map,"infowindowopen", function() { if(a==0) { map.closeInfoWindow();a=1;} });
			});
		}

		function load_search(count){//load markers and panel with most word matches first
			var panel_html = '';
			var match;
			for(var k=count;k>0;--k){
				match = 0;
				for (var i = 1; i < xml.documentElement.getElementsByTagName("campaign").length; i++){
					if(find[i] == k){
						match = 1;
						load_marker(i);
						panel_html += '<div style="border-bottom:1px dashed #888;padding:5px;background:#'+xml.documentElement.getElementsByTagName("bgcolor")[i].childNodes[0].nodeValue+'"><a class="link" href="#" onclick="show_infowindow('+i+');a=1;">'+xml.documentElement.getElementsByTagName("title")[i].childNodes[0].nodeValue+'</a><br><span class="text3"><B>'+xml.documentElement.getElementsByTagName("date")[i].childNodes[0].nodeValue+':</B> '+xml.documentElement.getElementsByTagName("details")[i].childNodes[0].nodeValue+'</span></div>';	
					}
				}
				if (match == 1 && k != 1) {// add spacer between results
					panel_html += '<div style="border-bottom:1px dashed #888;padding:4px;"></div>';
				}	
			}
			document.getElementById('panel').innerHTML = panel_html;
		}
		
		function search_node(node_value, count, i){//find number of word match in a node
			var word_start = 0;
			var word_end = 0;
			var word;
			var found = 0;
			find[i]= 0;
			for(var k=0;k<count;k++){//compare xml word with all search words	
				word_start = 0;
				for (var j=0;j<node_value.length+1;j++){//seperate words in xml
					if ((node_value.charAt(j) == " ") || (node_value.charAt(j) == "\"") || (node_value.charAt(j) == ".") || (node_value.charAt(j) == ":") || (node_value.charAt(j) == "'") || (node_value.charAt(j) == ",") || j == node_value.length){
						word_end = j;
						word = node_value.substring(word_start,word_end);
						word = word.toLowerCase();
						if (words[k] == word)	{
							result = 1;
							find[i] = ++found; //no. of search words found in a node
							j = node_value.length + 1; //if one word match found in node, then move to next word search in the node
						}
						word_start = j + 1;
					}	
				}
			}
		}
		
		function search_xml(count){
			result = 0;
			var xml_string;
			for (var i = 1; i < xml.documentElement.getElementsByTagName("campaign").length; i++) {//search node, if found in node move to next
				xml_string = xml.documentElement.getElementsByTagName("title")[i].childNodes[0].nodeValue + ' ' + xml.documentElement.getElementsByTagName("details")[i].childNodes[0].nodeValue + ' ' + xml.documentElement.getElementsByTagName("location")[i].childNodes[0].nodeValue + ' ' + xml.documentElement.getElementsByTagName("date")[i].childNodes[0].nodeValue;
				search_node(xml_string, count, i);
			}
			load_search(count);
			if (!result) {
				document.getElementById('panel').innerHTML = '<center class="text3">Search not found...<center>';
			}	
		}
		
		function search(string){			
			map.clearOverlays();
			document.getElementById('panel').innerHTML += '<hr size="1">';
			var string_start = 0;
			var string_end = 0;
			count = 0;
			for (var j=0;j<string.length+1;j++){//seperate words in search string and store in array
				if((string.charAt(j) == " ") || j == string.length){ //seperate words in search
					string_end = j; //alert (string_start);
					if(string_end - string_start != 0){//if not blank or space
						words[count] = string.substring(string_start,string_end); 
						words[count] = words[count].toLowerCase();//alert(words[count]);
						count++;
					}
					string_start = j + 1;
				}
			}//alert (count);
			if (string.length == 0){//if empty search, show all
				if (category == 2) {
					show_map('obama_video_campaign.xml',1);
				}	
				else if (category == 3) {
					show_map('obama_video_media.xml',1);
				}	
				else if (category == 1) {
					show_map('obama_video_endorse.xml',1);
				}	
			}
			else{//if search string has words
				if (category == 2) {
					document.getElementById('panel').innerHTML = '';
					search_xml(count);
				}
				else if (category == 3) {
					document.getElementById('panel').innerHTML = '';
					search_xml(count);
				}
				else if (category == 1) {
					document.getElementById('panel').innerHTML = '';
					search_xml(count);
				}		
			}
			return false;
		}

		function load_map(i){
			if (i == 1) {
				show_map('obama_video_endorse.xml',0);
			}	
			else if (i == 2) {
				show_map('obama_video_campaign.xml',0);
			}	
			else if (i == 3) {
				show_map('obama_video_media.xml',0);
			}	
		}
		
		function enableTab3(){//media
			document.getElementById('tab1').style.background = '#ffffff';
			document.getElementById('tab2').style.background = '#ffffff';
			document.getElementById('tab3').style.background = '#02245c';
			document.getElementById('tab1').innerHTML = '<B><a href="#" onclick="enableTab1()" class="text2">&nbsp;&nbsp;ENDORSEMENTS&nbsp;&nbsp;</a></B>';
			document.getElementById('tab2').innerHTML = '<B><a href="#" onclick="enableTab2()" class="text2">&nbsp;&nbsp;CAMPAIGN SPEECHES&nbsp;&nbsp;</a></B>';
			document.getElementById('tab3').innerHTML = '<B><a href="#" onclick="enableTab3()" class="text1">&nbsp;&nbsp;MEDIA&nbsp;&nbsp;</a></B>';

			show_map('obama_video_media.xml',1);
			category = 3;
		}

		function enableTab2(){//campaign1
			document.getElementById('tab1').style.background = '#ffffff';
			document.getElementById('tab2').style.background = '#02245c';
			document.getElementById('tab3').style.background = '#ffffff';			
			document.getElementById('tab1').innerHTML = '<B><a href="#" onclick="enableTab1()" class="text2">&nbsp;&nbsp;ENDORSEMENTS&nbsp;&nbsp;</a></B>';
			document.getElementById('tab2').innerHTML = '<B><a href="#" onclick="enableTab2()" class="text1">&nbsp;&nbsp;CAMPAIGN SPEECHES&nbsp;&nbsp;</a></B>';
			document.getElementById('tab3').innerHTML = '<B><a href="#" onclick="enableTab3()" class="text2">&nbsp;&nbsp;MEDIA&nbsp;&nbsp;</a></B>';
		
			show_map('obama_video_campaign.xml',1);
			category = 2;
			}
			
		function enableTab1(){ //endorse
			document.getElementById('tab1').style.background = '#02245c';
			document.getElementById('tab2').style.background = '#ffffff';
			document.getElementById('tab3').style.background = '#ffffff';			
			document.getElementById('tab1').innerHTML = '<B><a href="#" onclick="enableTab1()" class="text1">&nbsp;&nbsp;ENDORSEMENTS&nbsp;&nbsp;</a></B>';
			document.getElementById('tab2').innerHTML = '<B><a href="#" onclick="enableTab2()" class="text2">&nbsp;&nbsp;CAMPAIGN SPEECHES&nbsp;&nbsp;</a></B>';
			document.getElementById('tab3').innerHTML = '<B><a href="#" onclick="enableTab3()" class="text2">&nbsp;&nbsp;MEDIA&nbsp;&nbsp;</a></B>';
		
			show_map('obama_video_endorse.xml',1);
			category = 1;
		}	
		
		function load() {
		  if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById("map"));
			map.addControl(new GHierarchicalMapTypeControl());
			map.addMapType(G_PHYSICAL_MAP);
			map.addControl(new GSmallZoomControl());
			map.setCenter(new GLatLng(39,-96), 4); 
            var boxStyleOpts = { opacity: .2, border: "2px solid yellow" };
            var otherOpts = {
              buttonHTML: "<img src='zoom-control-inactive.png' title='Drag Zoom' />",
              buttonZoomingHTML: "<img src='zoom-control-active.png' title='Drag Zoom: Cancel' />",
              buttonStartingStyle: {width: '15px', height: '15px'},
              overlayRemoveTime: 0 };
            map.addControl(new DragZoomControl(boxStyleOpts, otherOpts, {}), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7,43)));
			map.enableGoogleBar(); 
			

			yt_width = 425;
			yt_height = 344;	

			document.getElementById("panel").style.height = (document.getElementById("win").offsetHeight - 520);
			document.getElementById("panel").style.overflow = "auto";
			
			enableTab2();			

			var options = {'ad_channel' : '2506679771', 'format': '125x125_as'};
			var insetAd = new google.ads.MapInsetAd(map, 'pub-2773616400896769', options); 
			
	
			
//			var adsOptions = {maxAdsOnMap:10, minZoomLevel:2, channel:"4299003002"};
//			var ads = new GAdsManager(map,"ca-pub-2773616400896769", adsOptions);
//			ads.enable();
			}
		}
			
		function load_demo() {
		  if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById("map")); 
			map.addControl(new GSmallZoomControl());
			if(document.getElementById("map").offsetWidth < 640)
				map.setCenter(new GLatLng(39,-96), 3); 
			else
				map.setCenter(new GLatLng(39,-96), 4);
            var boxStyleOpts = { opacity: .2, border: "2px solid yellow" };			
            var otherOpts = {
              buttonHTML: "<img src='zoom-control-inactive.png' title='Drag Zoom' />",
              buttonZoomingHTML: "<img src='zoom-control-active.png' title='Drag Zoom: Cancel' />",
              buttonStartingStyle: {width: '15px', height: '15px'},
              overlayRemoveTime: 0 };
            map.addControl(new DragZoomControl(boxStyleOpts, otherOpts, {}), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7,43)));
			

			yt_width = 280;
			yt_height = 230;			
			show_map('obama_video_campaign.xml',0);
			
			var adsOptions = {maxAdsOnMap:10, minZoomLevel:2, channel:"6179674876"};
			var ads = new GAdsManager(map,"ca-pub-2773616400896769", adsOptions);
			ads.enable();
			}
		}
		
		function load_open() {
		  if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById("map")); 
			map.addControl(new GSmallZoomControl());
			if(document.getElementById("map").offsetWidth < 640)
				map.setCenter(new GLatLng(39,-96), 3); 
			else
				map.setCenter(new GLatLng(39,-96), 4);
            var boxStyleOpts = { opacity: .2, border: "2px solid yellow" };			
            var otherOpts = {
              buttonHTML: "<img src='zoom-control-inactive.png' title='Drag Zoom' />",
              buttonZoomingHTML: "<img src='zoom-control-active.png' title='Drag Zoom: Cancel' />",
              buttonStartingStyle: {width: '15px', height: '15px'},
              overlayRemoveTime: 0 };
            map.addControl(new DragZoomControl(boxStyleOpts, otherOpts, {}), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7,43)));

			yt_width = 280;
			yt_height = 230;			
			show_map('obama_video_campaign.xml',0);
			
			var adsOptions = {maxAdsOnMap:10, minZoomLevel:2, channel:"1331641592"};
			var ads = new GAdsManager(map,"ca-pub-2773616400896769", adsOptions);
			ads.enable();
			}			
		} 
		
		function load_gadget() {
		  if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById("map")); 
			map.addControl(new GSmallZoomControl());
			if(document.getElementById("map").offsetWidth < 640)
				map.setCenter(new GLatLng(39,-96), 3); 
			else
				map.setCenter(new GLatLng(39,-96), 4);
            var boxStyleOpts = { opacity: .2, border: "2px solid yellow" };			
            var otherOpts = {
              buttonHTML: "<img src='zoom-control-inactive.png' title='Drag Zoom' />",
              buttonZoomingHTML: "<img src='zoom-control-active.png' title='Drag Zoom: Cancel' />",
              buttonStartingStyle: {width: '15px', height: '15px'},
              overlayRemoveTime: 0 };
            map.addControl(new DragZoomControl(boxStyleOpts, otherOpts, {}), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7,43)));
			
			yt_width = 280;
			yt_height = 230;			
			show_map('obama_video_campaign.xml',0);
					
			var adsOptions = {maxAdsOnMap:10, minZoomLevel:2, channel:"9832833989"};
			var ads = new GAdsManager(map,"ca-pub-2773616400896769", adsOptions);
			ads.enable();
			}			
		} 	