				// run the email request
				function runEmail (q) {
							 // alert("Sending Mail");
							 var http = GXmlHttp.create();
								http.open("POST", 'mail.php?' , true)
								http.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"); 
			   				http.onreadystatechange = function () {
  								initial1 = 0; j=0;
        	 	 			if (http.readyState == 4) {
  											 var results = http.responseText;
												 document.getElementById("emaildv").innerHTML = results;
  								} // end if 
			          } // end function
        			  http.send("submitEmail=1&naam=" + escape(q.naam.value) + "&email=" + escape(q.email.value) + "&message=" + escape(q.message.value) + "&to=" + escape(q.stemail.value) + "&dirto=" + escape(q.diremail.value));
								// alert("Mail Sent");
				}

						function runMe() {
									// new Ajax.Updater('results','results.php', {});									
						}

						function loadUpcoming() {
									// upcoming = new GMap2(document.getElementById("map"));
									if ( document.search.upcoming.checked == true ) {
																				
										var marker = createMarkerOther (new GLatLng(40.765255,-73.979908), 'Carnegie Hall', 'Carnegie Hall<br>New York<br>New York - 10019', '2009 Gala', iconNAF);
										upcoming[1] = marker;
										map.addOverlay(marker);
										var marker = createMarkerOther (new GLatLng(33.683066,-111.967681), 'Marriott Desert Ridge', '5350 E Marriott Dr<br>Phoenix<br>Arizona - 85054', '2009 Institute', iconNAF);
										upcoming[2] = marker;
										map.addOverlay(marker);

									} else {
										// upcoming.clearOverlays();
										for ( var i = 0 ; i < upcoming.length; i++ ) {
												upcoming[i].hide();
										}
									}
						}


            function createMarkerOther (point, name, address, info, icon){
								// alert(icon);
                var marker = new GMarker(point, icon);
                GEvent.addListener(marker, 'click', function(){
										// direction = address.replace(/<.+?>/g, ' ');
										marker.openInfoWindow('<b>'+info+'</b><br>'+name+ '<br>'+address);
                });
								/*
								sideBarStr += '<a href="javascript:myclick('+arrayI+')">'+name+'</a><br />';
								arrayI++;
								*/
                return marker;
/**/
            }


						function uncheckRadios ( str ) {
									switch ( str ) {
												 case 'aoit':
												 			document.search.aof.checked = false;
												 			document.search.yop.checked = false;
												 			document.search.aoht.checked = false;
												 			document.search.aoe.checked = false;
															break;
												 case 'aof':
												 			document.search.aoht.checked = false;
												 			document.search.yop.checked = false;
												 			document.search.aoit.checked = false;
												 			document.search.aoe.checked = false;
															break;
												 case 'aoe':
												 			document.search.aof.checked = false;
												 			document.search.yop.checked = false;
												 			document.search.aoit.checked = false;
												 			document.search.aoht.checked = false;
															break;
												 case 'yop':
												 			document.search.aof.checked = false;
												 			document.search.aoht.checked = false;
												 			document.search.aoit.checked = false;
												 			document.search.aoe.checked = false;
															break;
												 case 'aoht':
												 			document.search.aof.checked = false;
												 			document.search.yop.checked = false;
												 			document.search.aoit.checked = false;
												 			document.search.aoe.checked = false;
															break;
									}
						}
						
						function stateBox ( str ) {
									return document.search.state.options[document.search.state.selectedIndex].value;
						}
						
            for (stateCode in states) {
              /*
          	var regex = new RegExp("(\\s|,|^)(" + stateCode + ")(\\s|,|$)");
              states[stateCode].matches = [];
              for (var row = 0; row < dataSimple.length; row++) {
                if (regex.test(dataSimple[row].address)) {
                  states[stateCode].matches.push(dataSimple[row]);
                }
              }
              */
          	// alert(stateCode);
            }

						var iconNAF = new GIcon();
            iconNAF.image = 'http://www.naf.org/maps/beta/naflogo.jpg';
            iconNAF.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
            iconNAF.iconSize = new GSize(23, 24);
            iconNAF.shadowSize = new GSize(22, 20);
            iconNAF.iconAnchor = new GPoint(6, 20);
            iconNAF.infoWindowAnchor = new GPoint(5, 1);
						
						var iconBlue = new GIcon();
            iconBlue.image = 'http://labs.google.com/ridefinder/images/mm_20_blue.png';
            iconBlue.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
            iconBlue.iconSize = new GSize(12, 20);
            iconBlue.shadowSize = new GSize(22, 20);
            iconBlue.iconAnchor = new GPoint(6, 20);
            iconBlue.infoWindowAnchor = new GPoint(5, 1);
            
            var iconRed = new GIcon();
            iconRed.image = 'http://labs.google.com/ridefinder/images/mm_20_red.png';
            iconRed.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
            iconRed.iconSize = new GSize(12, 20);
            iconRed.shadowSize = new GSize(22, 20);
            iconRed.iconAnchor = new GPoint(6, 20);
            iconRed.infoWindowAnchor = new GPoint(5, 1);
            
            var iconGreen = new GIcon();
            iconGreen.image = 'http://labs.google.com/ridefinder/images/mm_20_green.png';
            iconGreen.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
            iconGreen.iconSize = new GSize(12, 20);
            iconGreen.shadowSize = new GSize(22, 20);
            iconGreen.iconAnchor = new GPoint(6, 20);
            iconGreen.infoWindowAnchor = new GPoint(5, 1);
            
            var iconYellow = new GIcon();
            iconYellow.image = 'http://labs.google.com/ridefinder/images/mm_20_yellow.png';
            iconYellow.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
            iconYellow.iconSize = new GSize(12, 20);
            iconYellow.shadowSize = new GSize(22, 20);
            iconYellow.iconAnchor = new GPoint(6, 20);
            iconYellow.infoWindowAnchor = new GPoint(5, 1);
            
            var iconPurple = new GIcon();
            iconPurple.image = 'http://labs.google.com/ridefinder/images/mm_20_purple.png';
            iconPurple.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
            iconPurple.iconSize = new GSize(12, 20);
            iconPurple.shadowSize = new GSize(22, 20);
            iconPurple.iconAnchor = new GPoint(6, 20);
            iconPurple.infoWindowAnchor = new GPoint(5, 1);
            
            var customIcons = [];
            customIcons["YOP"] = iconBlue;
            customIcons["AOHT"] = iconRed;
            customIcons["AOF"] = iconGreen;
            customIcons["AOE"] = iconYellow;
            customIcons["AOIT"] = iconPurple;

            var map;
						var upcoming = [];
						var win;

						var arrayI         = 0;
						var arrayColours   = [];
						var directorID		 = [];
						var markerArray	   = [];
						var arrayPoint     = [];
						var academyName    = [];
						var academyAddress = [];
						var sideBarStr 		 = '';
						var highlight = null;
            
            function load(val){
								document.getElementById('results').innerHTML = '<img src="ajax-loader.gif" alt="">';						
    						arrayI         = 0;
    						arrayColours   = [];
    						markerArray	   = [];
    						arrayPoint     = [];
								directorID		 = [];
    						academyName    = [];
    						academyAddress = [];
    						sideBarStr 		 = '';
                if (val == 1) {
        						var highlight = null;
                    map.clearOverlays();
										var bool = false;
										if ( document.search.aof.checked ) {
											 bool = true;
										} 
										if ( document.search.aoit.checked ) {
											 bool = true;
										} 
										if ( document.search.aoht.checked ) {
											 bool = true;
										} 
										if ( document.search.aoe.checked ) {
											 bool = true;
										} 
										if ( document.search.yop.checked ) {
											 bool = true;
										} 
										if ( bool == true ) {} else {
											 alert("You need to choose at least one Academy Type");
											 return false;
										}	
                }
                else {
                    map = new GMap2(document.getElementById("map"));
                }

                map.addControl(new GSmallMapControl());
                map.addControl(new GMapTypeControl());

                if (val == 1) {
                }
                else {
                    map.setCenter(new GLatLng(47.614495, -95.341861), 5);
                }

                GDownloadUrl("format2.php", function(data){
                    var xml = GXml.parse(data);
                    var markers = xml.documentElement.getElementsByTagName("marker");
										var j = 0;
										var str = '';
										var typeoftheme = '';
										var inAOF  = true;
										var inAOHT = true;
										var inAOIT = true;
										var inAOE  = true;
										var inYOP  = true;
										var aoeCount = 0;
										var aohtCount = 0;
										var aoitCount = 0;
										var aofCount = 0;
										var yopCount = 0;
										var rows = 0;
										var stateSearch = stateBox();
										if ( ( val == 1 ) && ( stateSearch != '' ) ) {
										 // GClientGeocoder.getLatLng(address, callback)
											 var geocoder = new GClientGeocoder()
											 geocoder.getLatLng(stateSearch, function (loc) {
											 						map.setCenter(loc);
														}
												);
										}

                    for (var i = 0; i < markers.length; i++) {
												
                        if (val == 0) { // there is no filtering involved
                            var name = markers[i].getAttribute("name");
                            var address = markers[i].getAttribute("address");
                            var type = markers[i].getAttribute("type");

                            var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
													  academyName[i]   = name ;
														directorID[i]		 = markers[i].getAttribute("director");
														academyAddress[i]= address;
														arrayColours[i]  = type;
														arrayPoint[i]    = point;
                            var marker       = createMarker(point, name, address, type, directorID[i]);
														markerArray[i]   = marker;
                            map.addOverlay(marker);
														j = 'all';
                        }
                        /**/
                        else {
														var stateType = markers[i].getAttribute("stateID");
														var stateSearch = stateBox();
														// alert(stateType + ' ' + stateSearch);
														if ( ( stateType != stateSearch ) && ( stateSearch != '' ) ) {
															 continue;
														}
                            var type = markers[i].getAttribute("type");
                            switch (type) {
                                case 'AOF':
                                    if (document.search.aof.checked) {
                                    }
                                    else {
                                        continue;
                                    }
                                    break;
                                case 'AOIT':
                                    if (document.search.aoit.checked) {
                                    }
                                    else {
                                        continue;
                                    }
                                    break;
                                case 'AOHT':
                                    if (document.search.aoht.checked) {
                                    }
                                    else {
                                        continue;
                                    }
                                    break;
                                case 'AOE':
                                    if (document.search.aoe.checked) {
                                    }
                                    else {
                                        continue;
                                    }
                                    break;
                                case 'YOP':
                                    if (document.search.yop.checked) {
                                    }
                                    else {
                                        continue;
                                    }
                                    break;
                            } // end switch
                            var name = markers[i].getAttribute("name");
                            if (document.search.academy.value == "") {
                            }
                            else {
                                var expr = new RegExp(document.search.academy.value, "gi");
                                check = name.match(expr);
                                if (check == null) {
                                    continue;
                                }
                            }
                            var address = markers[i].getAttribute("address");
														var directorTemp = markers[i].getAttribute("director");
                            var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
														// alert(point);
                            var marker = createMarker(point, name, address, type, directorID[i]);
														var nameTemp = name;

														// alert(type);
														if ( name == undefined ) {} else {
															 // str += '<a href="#" onclick="'+createMarker(point, name, address, type)+'">'+name + '</a><br />';
														}
														j++;
														if ( ( type == 'AOF' )  ) {
															 if ( inAOF == true ) {
															 		typeoftheme += ' <a href="#" onclick="uncheckRadios(\'aof\');load(1);return false;">AOF</a> ';
															 		inAOF = false;
															 }
															 aofCount++;
														}
														if ( ( type == 'AOIT' )  ) {
															 if ( inAOIT == true ) {
    															 typeoftheme += ' <a href="#" onclick="uncheckRadios(\'aoit\');load(1);return false;">AOIT</a> ';
    															 inAOIT = false;
															 }
															 aoitCount++;
														}
														if ( ( type == 'AOHT' )  ) {
															 if ( inAOHT == true ) {
    															 typeoftheme += ' <a href="#" onclick="uncheckRadios(\'aoht\');load(1);return false;">AOHT</a> ';
    															 inAOHT = false;
															 }
															 aohtCount++;
														}
														if ( ( type == 'AOE' ) ) {
															 if ( inAOE == true ) {
    															 typeoftheme += ' <a href="#" onclick="uncheckRadios(\'aoe\');load(1);return false;">AOE</a> ';
    															 inAOE = false;
															 }
															 aoeCount++;
														}
														if ( ( type == 'YOP' )  ) {
															 if ( inYOP == true ) {
    															 typeoftheme += ' <a href="#" onclick="uncheckRadios(\'yop\');load(1);return false;">YOP</a> ';
    															 inYOP = false;
															 }
															 yopCount++;
														}
													  academyName[rows]   = name ;
														directorID[rows]		= markers[i].getAttribute("director");
														academyAddress[rows]= address;
														arrayColours[rows]  = type;
														arrayPoint[rows]    = point;
                            // var marker       = createMarker(point, name, address, type);
														markerArray[rows]   = marker;
														rows++;
                            map.addOverlay(marker);
                        }

                        /**/
                    }
        						if ( j == 1 ) {
											getStatePoly(address);
											direction = address.replace(/<.+?>/g, ' '); 
											infoTabs = [new GInfoWindowTab("Location", '<b>' + nameTemp + '</b><br>' + address + '<br><br> <a href="http://maps.google.com/maps?saddr=&daddr='+direction+'" class="black" target="_body">Directions</a> <br><br>') 
											, new GInfoWindowTab("Contact", emailForm(directorTemp, 1))
											// , new GInfoWindowTab("News", 'feed')
											];
                    	marker.openInfoWindowTabsHtml(infoTabs, {maxWidth: '350'});
        							map.setCenter(point);
											str = 'Found ' + j + ' academy<hr />' + sideBarStr;
											document.getElementById('results').innerHTML = str;
        						} else if ( j == 0 ) {
											alert('Unable to find any Academies');
											str = 'Found ' + j + ' academies';
											document.getElementById('results').innerHTML = str;
										} else {
											if ( j == 'all' ) {
												 str = 'Listing all academies<hr />'+ sideBarStr;
											} else {
											str = 'Found ' + j + ' academies ('+typeoftheme+')<hr />' + sideBarStr;
											}
											document.getElementById('results').innerHTML = str;
										}
                });
                /**/
            }
            
            function createMarker(point, name, address, type, director){
                var marker = new GMarker(point, customIcons[type]);
/**/
                var html = director+"<b>" + name + "</b> <br/>" + address;
                GEvent.addListener(marker, 'click', function(){
          					if (highlight) {
          						map.removeOverlay(highlight);
          					}
										direction = address.replace(/<.+?>/g, ' ');
                    infoTabs = [
														 	 		new GInfoWindowTab("Location", '<b>' + name + '</b><br>' + address + '<br><br> <a href="http://maps.google.com/maps?saddr=&daddr='+direction+'" class="black" target="_body">Directions</a> <br><br>') 
																	, new GInfoWindowTab("Contact", emailForm(director, 1))
																	// , new GInfoWindowTab("News", 'feed')
															 ];
                    marker.openInfoWindowTabsHtml(infoTabs, {
                        maxWidth: '350'
                    });
									  getStatePoly ( address );
                });
								sideBarStr += '<a href="javascript:myclick('+arrayI+')">'+name+'</a><br />';
								arrayI++;
                return marker;
/**/
            }

            function getStatePoly ( address ) {
          				var regex = new RegExp("<br>.+?, (.+?) ", "gi");
									var regex2 = new RegExp(".+?\- ", "gi");
									var staat = address.replace(/.+?,/gi, "");
									staat = staat.replace(/-.+/gi, "");
									switch ( staat ) {
											case ' New York ':
													 var st = 'ny';
													 break;
											case ' California ':
													 var st = 'ca';
													 break;
											case ' Alabama ':
													 var st = 'al';
													 break;
											case ' Florida ':
													 var st = 'fl';
													 break;
											case ' Alaska ':
													 var st = 'ak';
													 break;
											case ' Arizona ':
													 var st = 'az';
													 break;
											case ' Arkansas ':
													 var st = 'ar';
													 break;
											case ' Colorado ':
													 var st = 'co';
													 break;
											case ' Connecticut ':
													 var st = 'ct';
													 break;
											case ' Delaware ':
													 var st = 'de';
													 break;
											case ' Hawaii ':
													 var st = 'hi';
													 break;
											case ' Idaho ':
													 var st = 'id';
													 break;
											case ' Illinois ':
													 var st = 'il';
													 break;
											case ' District of Columbia ':
													 var st = 'dc';
													 break;
											case ' Indiana ':
													 var st = 'in';
													 break;
											case ' Iowa ':
													 var st = 'ia';
													 break;
											case ' Kansas ':
													 var st = 'ks';
													 break;
											case ' Kentucky ':
													 var st = 'ky';
													 break;
											case ' Louisiana ':
													 var st = 'la';
													 break;
											case ' Maine ':
													 var st = 'me';
													 break;
											case ' Maryland ':
													 var st = 'md';
													 break;
											case ' Massachusetts ':
													 var st = 'ma';
													 break;
											case ' Michigan ':
													 var st = 'mi';
													 break;
											case ' Minnesota ':
													 var st = 'mn';
													 break;
											case ' Mississippi ':
													 var st = 'ms';
													 break;
											case ' Missouri ':
													 var st = 'mo';
													 break;
											case ' Montana ':
													 var st = 'mt';
													 break;
											case ' Nebraska ':
													 var st = 'ne';
													 break;
											case ' Nevada ':
													 var st = 'nv';
													 break;
											case ' New Hampshire ':
													 var st = 'nh';
													 break;
											case ' New Jersey ':
													 var st = 'nj';
													 break;
											case ' New Mexico ':
													 var st = 'nm';
													 break;
											case ' North Carolina ':
													 var st = 'nc';
													 break;
											case ' North Dakota ':
													 var st = 'nd';
													 break;
											case ' Ohio ':
													 var st = 'oh';
													 break;
											case ' Oklahoma ':
													 var st = 'ok';
													 break;
											case ' Oregon ':
													 var st = 'or';
													 break;
											case ' Pennsylvania ':
													 var st = 'pa';
													 break;
											case ' Puerto Rico ':
													 var st = 'pr';
													 break;
											case ' Rhode Island ':
													 var st = 'ri';
													 break;
											case ' South Carolina ':
													 var st = 'sc';
													 break;
											case ' South Dakota ':
													 var st = 'sd';
													 break;
											case ' Tennessee ':
													 var st = 'tn';
													 break;
											case ' Texas ':
													 var st = 'tx';
													 break;
											case ' Utah ':
													 var st = 'ut';
													 break;
											case ' Vermont ':
													 var st = 'vt';
													 break;
											case ' Virginia ':
													 var st = 'va';
													 break;
											case ' West Virginia ':
													 var st = 'wv';
													 break;
											case ' Wisconsin ':
													 var st = 'wi';
													 break;
											case ' Wyoming ':
													 var st = 'wy';
													 break;
											case ' Washington ':
													 var st = 'wa';
													 break;
									}
									var k = 0;
          				for (stateCode in states) {
											if ( st == stateCode ) {
												 var latlngs = [];
												 for ( var i = 0 ; i < states[st].area.length ; i++ ) {
												 		 var latlngt = states[st].area[i];
												 		 latlngs.push(new GLatLng(latlngt[0], latlngt[1]));
												 }
												 highlight = new GPolygon(latlngs, "#4169FF", 1, 1, "#0000FF", .2);
												 map.addOverlay(highlight);
											}
          				}			
          	}

            function emailForm(dir, stl){
                formed = '<div id="emaildv">' +
                '<form onsubmit="runEmail(this); return false;" name="emailForm" method="post">' +
                '<input type="hidden" name="stemail" value="' +
                stl +
                '" />' +
                '<input type="hidden" name="diremail" value="' +
                dir +
                '" />' +
                '<strong>Contact Us</strong><hr />' +
                'Your Name:<br />' +
                '<input type="text" name="naam" style="width: 250px;" />' +
                '<br />' +
                'Your Email Address:<br />' +
                '<input type="text" name="email" style="width: 250px;" />' +
                '<br /><br />' +
                '<select name="typeEmail">' +
                '<option value="0">Providing Student Internship</option>' +
                '<option value="1">Advisory Board Membership</option>' +
                '<option value="2">Providing Financial Support</option>' +
                '<option value="3">Hosting a Site Visit</option>' +
                '<option value="4">Classroom Speaking</option>' +
                '<option value="5">Enrolling a Student</option>' +
                '</select><br/>' +
                'Your Message:<br />' +
                '' +
                '<textarea style="width: 250px;" name="message"></textarea>' +
                '<br />' +
                '<input type="submit" name="submitEmail" value="Send Message" />' +
                '</div>';
                return formed;
 
            }

						function myclick (i) {
                infoTabs = [
										 	 		new GInfoWindowTab("Location", '<b>' + academyName[i] + '</b><br>' + academyAddress[i] + '<br><br> <a href="http://maps.google.com/maps?saddr=&daddr='+academyAddress+'" class="black" target="_body">Directions</a> <br><br>') 
													, new GInfoWindowTab("Contact", emailForm(directorID[i], 1))
													// , new GInfoWindowTab("News", 'feed')
											 ];
                markerArray[i].openInfoWindowTabsHtml(infoTabs, {
                    maxWidth: '350'
                });
						}

