// JavaScript Document

	function buildings(form) {
		if (form.checked) {
			campus.show();
		} else {
			campus.hide();
		}
	}
	function ephonescheck(form) {
		if (form.checked) {
			ephones.show();
		} else {
			ephones.hide();
		}
	}
	
	function searchbox(form) {
		hide("all");
		var count = 0;
		var tabSearch = "";
		var catSearch = "";
		var searchfor = new RegExp(form.buildingSearch.value, "i");
		var mlen = gmarkers.length;
		for (var i = 0; i < mlen; i++) {
			if (searchfor.test(gmarkers[i].myname) || searchfor.test(gmarkers[i].myabbr) || searchfor.test(gmarkers[i].myadd)) {
				count++;
				gmarkers[i].show();//hide gmarker
				catSearch += '<li><a href="javascript:myclick(' + i + ')">' + gmarkers[i].myname + '</a></li>';
			}
		}
		tabSearch = "<ul>"+catSearch+"</ul>";
		document.getElementById("Search").innerHTML = tabSearch;
		document.getElementById("results").innerHTML = "("+count+")";
		sampleAccordion.openPanel(8);

	}
	  	  
	// A function to create the marker and set up the event window
      //function createMarker(point,name,opt,html,labels,category) {
      function createMarker(point,name,abbr,add,opt,html,category,tourcategory,el) {
        var marker = new GMarker(point,gicons[category]);
        // === Store the category and name info as a marker properties ===
        marker.mycategory = category;                                 
        marker.myname = name;
        marker.myabbr = abbr;
        marker.myadd = add;
        marker.mytour = tourcategory;
		var expandTitle = name + " - " + abbr;
		if (marker.mytour != "") {
			GEvent.addListener(marker, "click", function() {
				marker.openInfoWindowHtml(html,{maxTitle:expandTitle, maxContent:opt});
			});
		} else {
			GEvent.addListener(marker, "click", function() {
				marker.openInfoWindowHtml(html);
			});
		}
		marker.el = el;
        gmarkers.push(marker);
        return marker;
      }
	  
	  function findMarkerFromAbbr(abbr) {
	  	var mlen = gmarkers.length
		for(var i=0; i<mlen; i++) {
			if(gmarkers[i].myabbr == abbr) {
				return i;
			}
		}
		return false;
	  }

      // == shows all markers of a particular category, and ensures the checkbox is checked ==
      function show(category) {
		var mlen = gmarkers.length;
        for (var i=0; i<mlen; i++) {
          if (gmarkers[i].mycategory == category) {
            gmarkers[i].show();
          }
        }
        // == check the checkbox ==
		if (document.getElementById(category+"box")) {
        	document.getElementById(category+"box").checked = true;
		}
      }

      // == hides all markers of a particular category, and ensures the checkbox is cleared ==
      function hide(category) {
		var mlen = gmarkers.length;
        for (var i=0; i<mlen; i++) {
          if ((gmarkers[i].mycategory == category) || (category == "all")) {
            gmarkers[i].hide();
          }
        }
        // == clear the checkbox ==
		if (document.getElementById("act"+category)) {
        	document.getElementById("act"+category).checked = false;
		}
		if (category == "all") {
			if (document.getElementById("actAcad")) {
        		document.getElementById("actAcad").checked = false;
			}
			if (document.getElementById("actAdmin")) {
        		document.getElementById("actAdmin").checked = false;
			}
			if (document.getElementById("actPark")) {
        		document.getElementById("actPark").checked = false;
			}
			if (document.getElementById("actDiscovery")) {
        		document.getElementById("actDiscovery").checked = false;
			}
			if (document.getElementById("actResearch")) {
        		document.getElementById("actResearch").checked = false;
			}
			if (document.getElementById("actResHall")) {
        		document.getElementById("actResHall").checked = false;
			}
			if (document.getElementById("actVisit")) {
        		document.getElementById("actVisit").checked = false;
			}
		}
        // == close the info window, in case its open on a marker that we just hid
        map.closeInfoWindow();
      }
	  
	  var ShowStatus = true;
	  
	  
	  function CheckAll() {
	  	//List all categories in this array or they will not be hidden/shown
		var mycat = new Array()
		mycat[0] = "Tour"
		if (ShowStatus == true){
			for (i=0;i<mycat.length;i++){
				hide(mycat[i]);
			}
			ShowStatus = false;
			return
		} else {
			for (i=0;i<mycat.length;i++){
				show(mycat[i]);
			}
			ShowStatus = true;
			return
		}
	  }

      /// == a checkbox has been clicked ==
      function boxclick(box,category) {
        if (box.checked) {
          show(category);
        } else {
          hide(category);
        }
      }
	
	lastMarkerClicked = -1;
      function myclick(i) {
		if(gmarkers[i].el != null) {
			GEvent.removeListener(gmarkers[i].el);
			gmarkers[i].el = null;
		}
		GEvent.trigger(gmarkers[i],"click");
		//hide("All");
		if(lastMarkerClicked > 0) {
			gmarkers[lastMarkerClicked].hide();
		}
		gmarkers[i].show();
		lastMarkerClicked = i;
      }
	  
      function myexclick(i) {
		if(gmarkers[i].el != null) {
			GEvent.removeListener(gmarkers[i].el);
			gmarkers[i].el = null;
		}
		GEvent.trigger(gmarkers[i],"click");   
		gmarkers[i].el = GEvent.addListener(gmarkers[i],"infowindowopen",function() {
			expandinfo();
		});
      }


      // == rebuilds the sidebar to match the markers currently displayed ==
      function makeSidebar() {
		var tabVirtual = "";
		var tabAcad = "";
		var tabAdmin = "";
		var tabVisit = "";
		var tabPark = "";
		var tabResHall = "";
		var tabResearch = "";
		var tabDiscovery = "";
		var catHistoric = "";
		var catCampus = "";
		var catLandmark = "";
		var catAcad = "";
		var catAdmin = "";
		var catVisit = "";
		var catPark = "";
		var catResHall = "";
		var catResearch = "";
		var catDiscovery = "";
		var arr = [];
		var mlen = gmarkers.length;
        for (var i=0;i<mlen;i++) {
			var zz = '<li><a href="javascript:myclick('+i+')">'+gmarkers[i].myname+'</a></li>';
			switch(gmarkers[i].mytour) {
			case "": break;
			case "Historic":
				catHistoric += zz; break;
			case "Campus" :
				catCampus += zz; break;
			case "Landmark":
				catLandmark += zz; break;
			}
			switch(gmarkers[i].mycategory) {
			case "": break;
			case "acad":
				catAcad += zz; break;
			case "admin":
				catAdmin += zz; break;
			case "visit":
				catVisit += zz; break;
			case "park":
				catPark += zz; break;
			case "ResHall":
				catResHall += zz; break;
			case "Research":
				catResearch += zz; break;
			case "Discovery":
				catDiscovery += zz; break;
			}
        }
		tabVirtual = "<h3>Historic Buildings</h3><ul>"+catHistoric+"</ul><h3>Campus Buildings</h3><ul>"+catCampus+"</ul><h3>Campus Landmarks</h3><ul>"+catLandmark+"</ul>";
		tabAcad = "<ul>"+catAcad+"</ul>";
		tabAdmin = "<ul>"+catAdmin+"</ul>";
		tabPark = "<ul><li><a style='font-weight:bold;' href=\"http://www.purdue.edu/campus_map/athletic_football/index.html\">Football Parking</a></li>"+catPark+"</ul>";
		tabDiscovery = "<ul>"+catDiscovery+"</ul>";
		tabResearch = "<ul>"+catResearch+"</ul>";
		tabResHall = "<ul>"+catResHall+"</ul>";
		tabVisit = "<ul>"+catVisit+"</ul>";
		
		document.getElementById("VirtTour").innerHTML = tabVirtual;
		document.getElementById("Acad").innerHTML = tabAcad;
		document.getElementById("Visit").innerHTML = tabVisit;
		document.getElementById("Admin").innerHTML = tabAdmin;
		document.getElementById("ResHall").innerHTML = tabResHall;
		document.getElementById("Park").innerHTML = tabPark;
		document.getElementById("Research").innerHTML = tabResearch;
		document.getElementById("Discovery").innerHTML = tabDiscovery;
		openQueryId();
      }

	function expandinfo() {
		var infoWin = map.getInfoWindow();
		infoWin.maximize();
	}
		
	function hidepano() {
		var mapdiv = document.getElementById("map");
		var mcontdiv = document.getElementById("controlform");
		var panodiv = document.getElementById("panotest");
		var pcontdiv = document.getElementById("panocontrol");
		mapdiv.style.display="block";
		mcontdiv.style.display="block";
		panodiv.style.display="none";
		pcontdiv.style.display="none";
	}  
	function gotpano(panoData) {
		if (panoData.code != 200) {
			return;  
		}
		myPano.setLocationAndPOV(panoData.location.latlng);
		var mapdiv = document.getElementById("map");
		var mcontdiv = document.getElementById("controlform");
		var panodiv = document.getElementById("panotest");
		var pcontdiv = document.getElementById("panocontrol");
		mapdiv.style.display="none";
		mcontdiv.style.display="none";
		panodiv.style.display="block";
		pcontdiv.style.display="block";
		if (document.getElementById("HPanoBox")) {
        	document.getElementById("HPanoBox").checked = false;
		}
	}
	function getpano(lat,lng,pov) {
		if (!document.getElementById("panotest")) return false;
		var point = new GLatLng(lat,lng);
		var panoClient = new GStreetviewClient();
		myPano = new GStreetviewPanorama(document.getElementById("panotest"));
		myPano.setLocationAndPOV(point,{yaw:pov});
		GEvent.addListener(myPano, "error", handleNoFlash); 
		panoClient.getNearestPanorama(point, gotpano);
	}
	function handleNoFlash(errorCode) { 
		if (errorCode == 603) {    
			alert("Error: Flash doesn't appear to be supported by your browser");    
			return;  
		}
	}

	function getmarkers() {
// Read the data from .xml file
      GDownloadUrl("xml/MarkersAll5.xml", function(data) {
       var xmlDoc = GXml.parse(data);
       var markers = xmlDoc.documentElement.getElementsByTagName("marker");//192
	   var mlen = markers.length;
          
        for (var i=0; i<mlen; i++) {
		  var el = null;
          var lat = parseFloat(markers[i].getAttribute("lat"));
          var lng = parseFloat(markers[i].getAttribute("lng"));
          var point = new GLatLng(lat,lng);
		  var pov = 270;
          var streetaddress = markers[i].getAttribute("streetaddress");
		  var citystatezip = markers[i].getAttribute("citystatezip");
		  var phone = markers[i].getAttribute("phone");
          var name = markers[i].getAttribute("name");
          var abbr = markers[i].getAttribute("abbreviation");
		  if(!abbr || abbr=="" || abbr.substring(0,1)=="_") {var abbrtext = ""} else {var abbrtext = " ("+abbr+")";}
          var details = markers[i].getAttribute("details");
		  var image = markers[i].getAttribute("image");
		  var tourcategory = markers[i].getAttribute("tourcategory");
		  var linkvirtualtour = markers[i].getAttribute("linkvirtualtour");
		  var webpage = markers[i].getAttribute("webpage");
          var html = "<div class='popup'><img class='Building' src="+image+" width='200px'  height='135px'><br /><h3>"+name+abbrtext+"</h3>"+streetaddress+"<br />"+citystatezip;
		  if (tourcategory != "") {
		  	html += "<br /><br /><a href=\"javascript:myexclick("+i+")\">More Info</a>";
		  }
		  html += "</p></div>";
          var category = markers[i].getAttribute("category");
		  var tourcategory = markers[i].getAttribute("tourcategory");
		  var tc = Array('Historic','Campus','Landmark');
		  switch(tourcategory) {
			  case 'Historic': var tci = 0; break;
			  case 'Campus': var tci = 1; break;
			  case 'Landmark': var tci = 2; break;
		  }

		  if (tourcategory != "") {//if it's a virtual visit
		  	var j = i+1;
		  	while(markers[j].getAttribute('tourcategory')!=tc[tci]) {
				if(j==mlen-1) {
					j=0; tci = (tci+1)%3;
				} else {
					j++;
				}
			}
			nextMark = j;
			
			switch(tourcategory) {
			  case 'Historic': var tci = 0; break;
			  case 'Campus': var tci = 1; break;
			  case 'Landmark': var tci = 2; break;
		  	}
			if(i==0) {
				j=mlen-1; tci==0 ? tci=2 : tci--;
			} else {
				j = i-1;
			}
			while(markers[j].getAttribute('tourcategory')!=tc[tci]) {
				if(j<=0) {
					j=mlen-1; tci==0 ? tci=2 : tci--;
				} else {
					j--;
				}
			}
			prevMark = j;
		  }
		  opt = "<div id=\"detailwrapper\">";
		  opt += "	<!--********************NAV BAR***********************-->";
		  opt += "	<div id=\"detailnav\">";
		  opt += "		<div id=\"detailprevious\">";
		  opt += '			<a id="prevButton" href="javascript:myexclick('+prevMark+')">Previous</a>';
		  opt += "		</div><!--previous-->";
		  opt += "		<div id=\"detailtitle\">";
		  opt += "		</div><!--select-->";
		  opt += "		<div id=\"detailnext\">";
		  opt += '			<a id="nextButton" href="javascript:myexclick('+nextMark+')">Next</a>';
		  opt += "		</div><!--next-->";
		  opt += "	</div><!--end nav-->";
		  opt += "	<!--********************END NAV BAR***********************-->";
		  opt += "	<!--********************MAIN WINDOW***********************-->";
		  opt += "	<div id=\"detailmainpage\" tabindex=\"0\">";
		  opt += "		<!--********************MAIN CONTENT**********************-->";
		  opt += "		<div id=\"detailcol1\">";
		  opt += "			<div id=\"detailphoto\" style=\"display:block;\">";
		  var cn = markers[i].childNodes;
		  for(var j=0; j<cn.length; j++){
		  	if(cn[j].nodeName=='photo'){
		  		var introLoc = cn[j].getAttribute("location");
				var introName = cn[j].getAttribute("name");
		  		opt += "<img src=\""+introLoc+"\" alt=\""+introName+"\" width=\"300\" height=\"225\" id=\"detailplaceholder\" />";
				break;
		  	}
		  }//for

		  opt += "</div><!--photo-->";
		  opt += "<div id=\"detailpano\" style=\"display:none;\"></div><!--pano-->";
		  opt += "<div id=\"detailqtmov\" style=\"display:none;\"></div>";
		  opt += "<div class=\"detailcaption\"><p id=\"detaildescription\">Choose an Image.</p></div>";
		  opt += "<ul id=\"detailphotoGallery\">";
		  opt += "<li></li>";
		  for (var j=0; j<cn.length; j++) {
		  	if(cn[j].nodeName == 'photo'){
		  		var childLoc = cn[j].getAttribute("location");
				var childCap = cn[j].getAttribute("caption");
				var childName = cn[j].getAttribute("name");
		  		opt += "<li><a href=\""+childLoc+"\" title=\""+childCap+"\" class=\"gphoto\" onclick=\"showPic(this); return false\"><img src=\""+childLoc+"\" alt=\""+childName+"\" width=\"96\" height=\"75\" /></a></li>";
			}
		  	if(cn[j].nodeName=='pano'){
		  		var childLat = cn[j].getAttribute("lat");
				var childLng = cn[j].getAttribute("lng");
				var childPov = cn[j].getAttribute("pov");
				var childIcon = cn[j].getAttribute("icon");
				opt += "<li><a href=\"#\" id=\"detailgpano\" class=\"gphoto\" title=\"Panorama View\" onclick=\"getpano("+childLat+","+childLng+","+childPov+"); return false\"><img src=\""+childIcon+"\" alt=\""+name+" Panorama\" width=\"96\" height=\"75\" /></a></li>";
			}
			if(cn[j].nodeName=='qtmov'){
		  		var childCap = cn[j].getAttribute("caption");
				var childLoc = cn[j].getAttribute("location");
				var childIcon = cn[j].getAttribute("icon");
				opt += "<li><span src='"+childLoc+"' style='cursor:pointer;' class=\"gphoto\" title=\""+childCap+"\" onclick=\"showQT(this); return false\"><img src=\""+childIcon+"\" alt=\""+name+" Panorama\" width=\"96\" height=\"75\" /></span></li>";
			}
		  }//for

		  opt += "			</ul>";
		  opt += "		</div><!--col1-->";
		  opt += "		<div id=\"detailcol2\">";
		  opt += "			<h3>"+name+"</h3>";
		  opt += "			<p>"+details+"</p>";
		  opt += "		</div><!--col2-->";
		  opt += "	</div><!--mainPage-->";
		  opt += "	<!--********************END MAIN CONTENT***********************-->";
		  opt += "	<!--********************FOOTER***********************-->";
		  opt += "	<div id=\"detailfooter\"> </div><!--footer-->";
		  opt += "	<!--********************END FOOTER*******************-->";
		  opt += "</div><!--wrapper-->";

		  var marker = createMarker(point,name,abbr,streetaddress,opt,html,category,tourcategory,el);
		   map.addOverlay(marker);
		   marker.hide();
        }//for
        makeSidebar();
	});//function
}

//applies the onclick function to each photo and the pano
function preparePhotos(){
	if (!document.getElementById) return false;
	if (!document.getElementsByTagName) return false;
	if (!document.getElementById("detailphotoGallery")) return false;
	var prepPano = document.getElementById("gpano");	
	prepPano.onclick=function() {
		showPano(this);
		return false;
		}
var Gallery = document.getElementById("detailphotoGallery");
	var links = Gallery.getElementsByTagName("a");
	for(var i=0; i<links.length; i++) {
		links[i].onclick = function() {
			return showPic(this);
			}
		}	
	var Map = document.getElementById("detailviewmap");
	var links = Map.getElementsByTagName("a");
	for(var i=0; i<links.length; i++) {
		links[i].onclick = function() {
			return showPic(this);
			}
		}	
	}
	
//applies the onclick function to each photo on pages that only have photos
function preparePhotosOnly(){
	if (!document.getElementById) return false;
	if (!document.getElementsByTagName) return false;
	if (!document.getElementById("detailphotoGallery")) return false;
var Gallery = document.getElementById("detailphotoGallery");
	var links = Gallery.getElementsByTagName("a");
	for(var i=0; i<links.length; i++) {
		links[i].onclick = function() {
			return showPicOnly(this);
			}
		}	
	var Map = document.getElementById("detailviewmap");
	var links = Map.getElementsByTagName("a");
	for(var i=0; i<links.length; i++) {
		links[i].onclick = function() {
			return showPicOnly(this);
			}
		}	
	}

function showPicOnly(whichpic){	
	if (!document.getElementById("detailphoto")) return false;
	if (!document.getElementById("detailplaceholder")) return true;
	var description = document.getElementById("detaildescription");
	var photo = document.getElementById("detailphoto");
	photo.style.display="block";
	var source = whichpic.getAttribute("href");
	var placeholder = document.getElementById("detailplaceholder");
	placeholder.setAttribute("src",source);
	var text3 = whichpic.getAttribute("title");
	description.firstChild.nodeValue = text3;
	return false;
}

function showPic(whichpic){	
	if (!document.getElementById("detailphoto")) return false; //300x225 div
	if (!document.getElementById("detailpano")) return false;
	if (!document.getElementById("detailplaceholder")) return true; //300x225 image
	var photo = document.getElementById("detailphoto");
	var pano = document.getElementById("detailpano");
	var qtmov = document.getElementById('detailqtmov');
	var description = document.getElementById("detaildescription");
	pano.style.display="none";
	photo.style.display="block";
	qtmov.style.display="none";
	var source = whichpic.getAttribute("href");
	var placeholder = document.getElementById("detailplaceholder");
	var text = whichpic.getAttribute("title");
	description.firstChild.nodeValue = text;
	placeholder.setAttribute("src",source);
	return false;
}

function showQT(mov) {
	var photo = document.getElementById("detailphoto");
	var pano = document.getElementById("detailpano");
	pano.style.display="none";
	photo.style.display="none";
	var dqm = document.getElementById('detailqtmov');
	var description = document.getElementById("detaildescription");
	dqm.style.display="block";
	var source = mov.getAttribute('src');
	var text = mov.getAttribute('title');
	description.firstChild.nodeValue = text;
	if(navigator.appName == "Microsoft Internet Explorer" || (navigator.platform == "MacIntel" && navigator.vendor == "Apple Computer, Inc.")) {
		dqm.innerHTML = "<object classid='clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B' codebase='http://www.apple.com/qtactivex/qtplugin.cab' height='225' width='300'><param name='src' value='"+source+"'/></object>";
	} else {
		dqm.innerHTML = "<object type='video/quicktime' height='225' width='300' data='"+source+"'></object>";
	}
}

function showPano(){	
	if (!document.getElementById("detailphoto")) return false;
	if (!document.getElementById("detailpano")) return false;
	var photo = document.getElementById("detailphoto");
	var pano = document.getElementById("detailpano");
	var gpano = document.getElementById("detailgpano");
	var qtmov = document.getElementById('detailqtmov');
	var description = document.getElementById("detaildescription");
	var text2 = gpano.getAttribute("title");
	description.firstChild.nodeValue = text2;
	pano.style.display="block";
	photo.style.display="none";
	qtmov.style.display="none";
}