var ASUMaps = {
 	map:null,
 	point:new GLatLng(33.42053317, -111.9330312),
 	zoomlevel:15,
 	campuses:{},
 	shiftclick:false,
 	mastercodelist:null,
  	list:null,
  	node:null
};

$(document).ready(function() { 
	$(".tab_off").click(function() {
		var c = ASUMaps.campuses[$(this).attr("shortname")];
		if (!c.isFocused) {
			ASUMaps.node.className = 'asumaps-popup asumaps-popup-inactive';
			ASUMaps.search("");
			if (c) c.focus();
		}
	});
});

ASUMaps.init = function() {
  	ASUMaps.map = new GMap2(document.getElementById('map_canvas'));
  	ASUMaps.map.addControl(new GLargeMapControl());
  	ASUMaps.map.addControl(new GMapTypeControl());
  	ASUMaps.map.addControl(new GScaleControl());
  	ASUMaps.map.addControl(new GOverviewMapControl(new GSize(100,100)));
  	ASUMaps.map.setCenter(ASUMaps.point, ASUMaps.zoomlevel);
  
  	var c = ASUMaps.directLink;
  	
  	ASUMaps.mastercodelist = new Array();

  	ASUMaps.campuses = {
    	'tempe'        : new ASUMapCampus('tempe', c),
    	'west'         : new ASUMapCampus('west', c),
    	'polytechnic'  : new ASUMapCampus('polytechnic', c),
    	'downtown'     : new ASUMapCampus('downtown', c),
    	'researchpark' : new ASUMapCampus('researchpark', c),
    	'skysong'      : new ASUMapCampus('skysong', c)
  	}

  	document.onkeydown = function(e) {
      	if (!e) var e = window.event;
      	if (e.keyCode == 16) ASUMaps.shiftclick = true;
  	}

  	document.onkeyup = function(e) {
      	if (!e) var e = window.event;
      	if (e.keyCode == 16) ASUMaps.shiftclick = false;
  	}
  	
  	ASUMaps.node = document.createElement('div');
	ASUMaps.node.className = 'asumaps-popup asumaps-popup-inactive';
	ASUMaps.node.style.opacity = 0.97;
	ASUMaps.node.style.MozOpacity = 0.97;
	ASUMaps.node.style.KHTMLOpacity = 0.97;
	ASUMaps.node.style.filter = 'alpha(opacity:97)';
  	ASUMaps.node.appendChild(createTitleBar());

	ASUMaps.list = document.createElement('div');
	ASUMaps.list.className = 'asumaps-popup-list';
	ASUMaps.node.appendChild(ASUMaps.list);
	
	var d = document.body ? document.body : document.documentElement;
	d.appendChild(this.node);
	
	var searchField = $(".search_field");
	for (var i = 0; i < searchField.length; i++) {
		searchField[i].onkeyup = function(e) { ASUMaps.search(this.value); }
		searchField[i].onfocus = function() {
			 if (this.defaultValue && this.value == this.defaultValue) this.value = "";
			 ASUMaps.focus();
		}
		searchField[i].onblur = function() {
			if(this.value == "") {
				this.value = "Search...";
			}
		}
	}
	
	function createTitleBar() {
    	var t = document.createElement('div');
    	t.className = 'asumaps-popup-title';

    	var a = document.createElement('a');
    	a.className = 'asumaps-popup-closebutton';
    	a.href = '#';
    	a.onclick = function(e) { blur(); }
    	t.appendChild(a);
    	
    	var b = document.createElement('b');
    	b.className = 'asumaps-popup-titletext';
    	b.appendChild(document.createTextNode('Search Results'));
    	t.appendChild(b);
    	
    	return t;
  	}
  	
  	function blur() {
  		ASUMaps.node.className = 'asumaps-popup asumaps-popup-inactive';
  	}  	
}

ASUMaps.focus = function(){
	var self = this;
	
  	var campuses = ASUMaps.campuses;
  	if(!ASUMaps.list.childNodes.length > 0) {
		for (var i in campuses) {
			var title = i.toUpperCase();
			if (title == "TEMPE") {
				title = "Tempe Campus";
			} else if (title == "POLYTECHNIC") {
				title = "Polytechnic Campus";
			} else if (title == "DOWNTOWN") {
				title = "Downtown Campus";
			} else if (title == "WEST") {
				title = "West Campus";
			} else if (title == "RESEARCHPARK") {
				title = "Research Park";
			} else if (title == "SKYSONG") {
				title = "Sky Song";
			}
			var campus = campuses[i].markersets;
			var searchCampus = document.createElement("div");
			searchCampus.className = "searchCampus";
			searchCampus.setAttribute("shortname", i);
			var searchCampusTitle = document.createElement("div");
			searchCampusTitle.className = "searchCampusTitle";
			searchCampusTitle.appendChild(document.createTextNode(title));
			searchCampus.appendChild(searchCampusTitle);
			ASUMaps.list.appendChild(searchCampus);
			for(var j in campus){
		  		var popup = campus[j].popup;
		  		var title = popup.type.toUpperCase();
				if (title == "BUILDING") {
					title = "BUILDINGS";
				} else if (title == "DECALPARKING") {
					title = "DECAL PARKING";
				} else if (title == "VISITORPARKING") {
					title = "VISITOR PARKING";
				}
		  		var searchCampusType = document.createElement("div");
		  		searchCampusType.className = "searchCampusType";
		  		searchCampusType.appendChild(document.createTextNode(title));
		  		searchCampus.appendChild(searchCampusType);
			  	if(popup.dirty) {
			 		if (popup.options.length > 0) {
			 			popup.options.sort(popup.sort);
			 			for (var k = 0; k < popup.options.length; k++) {
			 				searchCampusType.appendChild(popup.options[k].node);
			 			}
			  		} else {
			  			searchCampusType.appendChild(document.createTextNode('There are no landmarks defined for this type.'));
			  		}
			  		popup.dirty = false;
				}
			}
		}
	}
	
	var searchCampus = $(".searchCampus");
	var elements = new Array();
	for(var i = 0; i<searchCampus.length; i++){	
		if(searchCampus[i].getAttribute("shortname") == $(".tab_on").eq(0).attr("shortname")){
			elements.push(searchCampus[i]);		
		}
	}
	
	var tabs = $(".tab_off");
	
	for(var i = 0; i<tabs.length;i++){
		var tabSN = tabs[i].getAttribute("shortname"); 
		for(var j = 0; j<searchCampus.length;j++) {
			var campusSN = searchCampus[j].getAttribute("shortname");
			if(campusSN == tabSN) {
				elements.push(searchCampus[j]);
			}
		}
	}
	while(ASUMaps.list.hasChildNodes()){
		ASUMaps.list.removeChild(ASUMaps.list.firstChild);
	}
	
	for(var i = 0; i < elements.length; i++) {
		ASUMaps.list.appendChild(elements[i]);
	}
	
	ASUMaps.node.className = 'asumaps-popup asumaps-popup-active';
	$(".asumaps-popup-list")[0].scrollTop = 0;
}

ASUMaps.search = function(value) {
	var self = this;
	if (value) {
		var text = value.toLowerCase();
		for (var i = 0; i < ASUMaps.list.childNodes.length; i++) {
			var searchCampus = ASUMaps.list.childNodes[i];
			searchCampus.style.display = "none";
			for(var j = 1; j < searchCampus.childNodes.length; j++) {
				var searchCampusType = searchCampus.childNodes[j];
				searchCampusType.style.display = "none";
				for(var k = 0; k < searchCampusType.childNodes.length; k++) {
					if (searchCampusType.childNodes[k].nodeValue == null) {
						var test = searchCampusType.childNodes[k].firstChild.nodeValue.toLowerCase();
						if (test.match(text)) {
							if(searchCampus.style.display == "none") searchCampus.style.display = "block";
							if(searchCampusType.style.display == "none") searchCampusType.style.display = "block";
							show(searchCampusType.childNodes[k]);
						} else {
							hide(searchCampusType.childNodes[k]);
						}
					}
				}
			}
		}
    } else {
    	for (var i = 0; i < ASUMaps.list.childNodes.length; i++) {
			var searchCampus = ASUMaps.list.childNodes[i];
			searchCampus.style.display = "block";
			for(var j = 0; j < searchCampus.childNodes.length; j++) {
				var searchCampusType = searchCampus.childNodes[j];
				searchCampusType.style.display = "block";
				for(var k = 0; k < searchCampusType.childNodes.length; k++) {
					if (searchCampusType.childNodes[k].nodeValue == null) {
						show(searchCampusType.childNodes[k]);
					}
				}
			}
    	}
    }

	function show(node) {
		node.className = 'asumaps-popup-option';
	}

	function hide(node) {
		node.className = 'asumaps-popup-option-hidden';
	}
}

var ASUMapCampus = function(id, callback) {
	var self = this;

	this.name = null;
	this.shortname = null;
	this.fullname = null;
	this.point = null;
	this.zoomlevel = null;
	this.url = null;
	this.imageurl = null;
	this.marker = null;
	this.overlays = null;
	this.markersets = null;
	this.navDiv = null;
	this.infoDiv = null;
	this.isFocused = false;
	this.clickhandler = null;
	
	GDownloadUrl('xml/' + id + '.xml', function(data, responseCode) {
		var xml = GXml.parse(data);
		var d = xml.documentElement; 
		if (d) {
			self.initialize(d);
		}
		if (callback) callback(self);
	});
}

ASUMaps.blurAllCampuses = function() {
	if (ASUMaps.campuses) {
		for (c in ASUMaps.campuses) {
			var campus = ASUMaps.campuses[c];
			if (campus.isFocused) {
				campus.blur();
			}
		}
	}
}

ASUMapCampus.prototype.blur = function() {
	if (this.clickhandler) {
		GEvent.removeListener(this.clickhandler);
	    this.clickhandler = null;
	}
	document.getElementById(this.shortname+"Btn").className="tab_off";
	this.navDiv.style.display = 'none';
	
	if (this.overlays['campus']) { this.overlays['campus'].hide(); }
	
	this.isFocused = false;
}

ASUMapCampus.prototype.findClosestLandmark = function(point) {
	var maxXrange = 0.0015; //degrees lon.
	var maxYrange = 0.001; //degrees lat.
	var minimumdist = 1000; //1 kilometer
	var bestLandmark = null;

	for (i in this.markersets) {
		var set = this.markersets[i];
	    for (j in set.landmarks) {
	    	var lm = set.landmarks[j];
	    	var candidate = lm.point;
	    	if ((Math.abs(point.x - candidate.x) < maxXrange) && (Math.abs(point.y - candidate.y) < maxYrange)) {
	    		var candidatedist = candidate.distanceFrom(point);
	    		if (candidatedist < minimumdist) {
	    			minimumdist = candidatedist;
	    			bestLandmark = lm;
	    		}
	    	}
	    }
	}
	if (bestLandmark) bestLandmark.focus();
}

ASUMapCampus.prototype.focus = function(callback) {
	var self = this;
	document.getElementById(self.shortname+"Btn").className="tab_on";
	
	var searchFieldArray = $(".search_field");
	for(var i = 0; i < searchFieldArray.length - 1; i++) {
		searchFieldArray[i].value = "Search...";
	}
	
	ASUMaps.map.closeInfoWindow();
	ASUMaps.blurAllCampuses();
	this.isFocused = true;
	ASUMaps.map.setMapType(G_NORMAL_MAP);
	ASUMaps.map.setCenter(this.point, this.zoomlevel);
	ASUMaps.map.removeOverlay(this.marker);

	if (this.overlays['campus']) {
		this.overlays['campus'].show();
	}

	this.navDiv.style.display = 'block';

	if (!this.clickhandler) {
		this.clickhandler = GEvent.addListener(ASUMaps.map, 'click', function(overlay, point) {
			if (point) { //background clicked
				if (ASUMaps.shiftclick) {
					ASUMaps.shiftclick = false;
					var lm = new ASUMapUserLandmark(point, self.shortname);
					lm.focus();
				} else {
					self.findClosestLandmark(point);
				}
			}
		});
	}
	
	if (callback) callback(this);
}

ASUMapCampus.prototype.initialize = function(x) {
	var self = this;

	this.name = x.getAttribute('name');
	this.shortname = x.getAttribute('shortname');
	this.fullname = x.getAttribute('fullname');
	this.point = new GLatLng(parseFloat(x.getAttribute('lat')), parseFloat(x.getAttribute('lon')));
	this.zoomlevel = parseInt(x.getAttribute('zoomlevel'));
	this.url = x.getAttribute('url');
	this.imageurl = x.getAttribute('imageurl');

	this.marker = new GMarker(this.point, {title:this.name});

	this.parseOverlays(x.getElementsByTagName('overlay'));
	this.parseMarkerSets(x.getElementsByTagName('markerset'));
	this.createNavigationDiv();
}

ASUMapCampus.prototype.parseOverlays = function(a) {
	this.overlays = new Object();
	if (a) {
		for (var i = 0; i < a.length; i++) {
			var overlay = new ASUMapOverlay(a[i], this);
			this.overlays[overlay.type] = overlay;
		}
	}
}

ASUMapCampus.prototype.parseMarkerSets = function(a) {
	this.markersets = new Object();
	if (a) {
		for (var i = 0; i < a.length; i++) {
			var set = new ASUMapMarkerSet(this, a[i]);
			this.markersets[set.type] = set;
		}
	}
}

ASUMapCampus.prototype.selectLandmark = function(type, code) {
	var set = this.markersets[type];
	if (set) set.select(code);
}

ASUMapCampus.prototype.createNavigationDiv = function() {
	var self = this;

	this.navDiv = document.getElementById('asumaps_campus_' + this.shortname);
}

var ASUMapOverlay = function(xmlOverlay, campus) {
	var self = this;
	this.type = xmlOverlay.getAttribute('type');
	this.tilelayers = new Object();
	this.visible = false;

	var a = xmlOverlay.getElementsByTagName('tilelayer');
	if (a) {
		for (var i = 0; i < a.length; i++) {
			var layer = new Object();
			layer['zoomlevel'] = a[i].getAttribute('zoomlevel');
			layer['xmin'] = a[i].getAttribute('xmin');
			layer['xmax'] = a[i].getAttribute('xmax');
			layer['ymin'] = a[i].getAttribute('ymin');
			layer['ymax'] = a[i].getAttribute('ymax');

			this.tilelayers[layer['zoomlevel']] = layer;
		}
	}

	var tl = new GTileLayer(new GCopyrightCollection(), 0, 17);
	tl.getTileUrl = function(tile, zoom) {
		var layer = self.tilelayers[zoom];
	    if (layer && tile.x >= layer['xmin'] && tile.x <= layer['xmax'] &&
    		tile.y >= layer['ymin'] && tile.y <= layer['ymax']) {
	    	return 'tiles/' + campus.shortname + '/' + zoom + '/' + tile.x + '_' + tile.y + '_' + zoom + '.gif';
	    } else {
	    	return 'images/transparent.gif';
	    }
	}
	GEvent.addListener(ASUMaps.map, 'maptypechanged', function() {
		if (campus.isFocused) {
			var t = ASUMaps.map.getCurrentMapType();
			if (t == G_SATELLITE_MAP || t == G_HYBRID_MAP) {
				self.hide();
			} else {
				self.show();
			}
	    }
	});

	this.overlay = new GTileLayerOverlay(tl);

	this.show = function() {
		if (!this.visible) ASUMaps.map.addOverlay(self.overlay);
	    this.visible = true;

	    var cb = document.getElementById('asumaps-overlay-checkbox-' + campus.shortname);
	    if (cb) cb.checked = true;
	}

	this.hide = function() {
		if (this.visible) ASUMaps.map.removeOverlay(self.overlay);
	    this.visible = false;

	    var cb = document.getElementById('asumaps-overlay-checkbox-' + campus.shortname);
	    if (cb) cb.checked = false;
	}
}

var ASUMapMarkerSet = function(campus, xmlMarkerSet) {
	var self = this;
	this.parent = campus;
	this.name = xmlMarkerSet.getAttribute('name');
	this.type = xmlMarkerSet.getAttribute('type');
	this.src = xmlMarkerSet.getAttribute('src');
	this.popup = new ASUMapsPopup(this.type);
	this.landmarks = parseLandmarks(xmlMarkerSet.getElementsByTagName('marker'));

	function parseLandmarks(a) {
		var hash = new Object();
	    if (a) {
	    	for (var i = 0; i < a.length; i++) {
		        var m = new ASUMapLandmark(a[i], self.type, self.parent);
		        hash[m.code] = m;

		        ASUMaps.mastercodelist.push(m);
		        
		        self.popup.addoption(m);
	    	}
	    }
	    return hash;
	}
	
	this.select = function(code) {		
		for (var i = 0; i < ASUMaps.mastercodelist.length; i++) {
			var opt = ASUMaps.mastercodelist[i];
			if (opt.code == code) {
				var opts = self.landmarks;
				if (opts && opts[opt.code]) {
					if (!self.parent.isFocused) {
						ASUMaps.campuses[self.parent.shortname].focus();
					}
					opts[opt.code].focus();
					break;
				}
			}
		}
	}
}

var ASUMapLandmark = function(xmlMarker, type, campus) {
	var self = this;
	this.campus = campus;
	this.name = xmlMarker.getAttribute('name');
	this.code = xmlMarker.getAttribute('code');
	this.type = type;
	this.imageurl = xmlMarker.getAttribute('imageurl');
	this.toururl = xmlMarker.getAttribute('toururl');
	this.point = new GLatLng(parseFloat(xmlMarker.getAttribute('lat')), parseFloat(xmlMarker.getAttribute('lon')));
	this.marker = createMarker();
	this.infoDiv = null;

	function createMarker() {
		var gmarker = new GMarker(self.point);
	    GEvent.addListener(gmarker, 'click', function() {self.getinfo();});
	    GEvent.addListener(gmarker, 'dblclick', function() {self.remove();});
	    return gmarker;
	}

	this.getinfo = function() {
		if (!self.infoDiv) {
			self.infoDiv = document.createElement('div');
			self.infoDiv.className = 'asumaps-landmark-info';

			if (self.imageurl) {
				var i = document.createElement('img');
				i.className = 'asumaps-landmark-info-image';
				i.src = self.imageurl;
				self.infoDiv.appendChild(i);
			}

			var t = document.createElement('span');
			t.className = 'asumaps-landmark-info-code';
			t.appendChild(document.createTextNode(self.code));
			self.infoDiv.appendChild(t);

			if (self.name != self.code) {
				t = document.createElement('span');
				t.className = 'asumaps-landmark-info-name';
	        	t.appendChild(document.createTextNode(self.name));
	        	self.infoDiv.appendChild(t);
			}

			t = document.createElement('a');
			t.className = 'asumaps-landmark-info-permalink';
			t.href = '?campus=' + escape(campus.shortname) + '&' + escape(self.type) + '=' + escape(self.code);
			t.appendChild(document.createTextNode('Permalink (Copy/Paste Link)'));
			self.infoDiv.appendChild(t);

			if (self.toururl) {
				t = document.createElement('a');
				t.className = 'asumaps-landmark-info-url';
				t.href = self.toururl;
				t.appendChild(document.createTextNode('Campus Tour site'));
				self.infoDiv.appendChild(t);
			}

			t = document.createElement('a');
			t.className = 'asumaps-landmark-info-removemarker';
	      	t.href = '#';
	      	t.appendChild(document.createTextNode('Remove marker'));
	      	t.onclick = function(e) {
	      		ASUMaps.map.removeOverlay(self.marker);
	      		ASUMaps.map.closeInfoWindow();
	      	}
	      	self.infoDiv.appendChild(t);
    	}
	    self.marker.openInfoWindow(self.infoDiv);
	}

	this.focus = function(callback) {
		ASUMaps.map.removeOverlay(self.marker);
	    ASUMaps.map.addOverlay(self.marker);
	    self.getinfo();

	    if (callback) {callback(self.campus);}
	}

	this.remove = function() {
		ASUMaps.map.closeInfoWindow();
	    ASUMaps.map.removeOverlay(self.marker);
	}
}

var ASUMapUserLandmark = function(point, campusshortname, text) {
  	var self = this;
  	this.id = '[' + point.x + ',' + point.y + ']';
  	this.campusshortname = campusshortname;
  	this.text = text;
  	this.marker = createMarker(point);
  	this.infoDiv = null;

  	function createMarker(p) {
    	var gmarker = new GMarker(p,
        {icon:new GIcon(G_DEFAULT_ICON, 'images/sparkymarker.png'), draggable:true, bouncy:true}
    	);
    	GEvent.addListener(gmarker, 'click', function() {self.getinfo();});
    	GEvent.addListener(gmarker, 'dragend', function() {self.sethref();});
    	return gmarker;
  	}

  	this.settext = function() {
    	var elm = document.getElementById('asumaps-userlandmark-info-text-' + self.id);
    	while (elm.childNodes.length) elm.removeChild(elm.childNodes[0]);
    	elm.appendChild(self.gettext());
  	}

  	this.gettext = function() {
    	var s = document.createElement('span');
    	s.appendChild(document.createTextNode(self.text));
    	return s;
  	}

  	this.sethref = function() {
    	var elm = document.getElementById('asumaps-userlandmark-info-permalink-' + self.id);
    	if (elm) elm.href = self.gethref();
  	}

  	this.gethref = function() {
    	var spot = self.marker.getPoint();
    	var href = '?';
    	if (self.campusshortname && ASUMaps.campuses[self.campusshortname]) {
      		href += 'campus=' + escape(self.campusshortname) + '&';
    	}
    	href += 'lon=' + spot.x + '&lat=' + spot.y
    	if (self.text) {
      		href += '&info=' + escape(self.text);
    	}
    	return href;
  	}

  	this.getinfo = function() {
	if (!self.infoDiv) {
      	self.infoDiv = document.createElement('div');
      	self.infoDiv.className = 'asumaps-userlandmark-info';

      	var d = document.createElement('div');
      	d.id = 'asumaps-userlandmark-info-text-' + self.id;
      	d.className = 'asumaps-userlandmark-info-text';

      	if (self.text) {
        	d.appendChild(self.gettext());
      	} else {
	        var s = document.createElement('input');
	        s.setAttribute('type', 'text');
	        s.setAttribute('size', '15');
	        s.onkeyup = function(e) { 
	            if (!e) var e = window.event;
	            if (e.keyCode == 13) { //enter
	              	self.text = this.value;
	              	self.settext();
	              	self.sethref();
	            }
        	}
			d.appendChild(s);
      	}
      	self.infoDiv.appendChild(d);

      	var t = document.createElement('a');
      	t.id = 'asumaps-userlandmark-info-permalink-' + self.id;
      	t.className = 'asumaps-userlandmark-info-permalink';
      	t.href = self.gethref();
      	t.appendChild(document.createTextNode('Map Permalink (Copy/Paste Link)'));
      	self.infoDiv.appendChild(t);

      	t = document.createElement('a');
      	t.className = 'asumaps-userlandmark-info-removemarker';
      	t.href = '#';
      	t.appendChild(document.createTextNode('Remove marker'));
      	t.onclick = function(e) {self.remove();}
      	self.infoDiv.appendChild(t);

      	self.marker.openInfoWindow(self.infoDiv);

		} else {
      		self.marker.openInfoWindow(self.infoDiv);
      		self.sethref();
    	}
	}

  	this.focus = function(callback) {
    	ASUMaps.map.removeOverlay(self.marker);
    	ASUMaps.map.addOverlay(self.marker);
    	self.getinfo();

    	if (callback) {callback(self.campus);}
  	}

  	this.remove = function() {
    	ASUMaps.map.closeInfoWindow();
    	ASUMaps.map.removeOverlay(self.marker);
  	}
}

var ASUMapsPopup = function(type) {
	var self = this;
	this.type = type;
	this.dirty = true;
	this.options = new Array();
  	
  	self.sort = function(a, b) {
  		return (a.name > b.name ? 1 : -1);
  	}

  	this.addoption = function(landmark) {
	    self.options.push(new ASUMapsPopupOption(self, landmark));
	    self.dirty = true;
  	}
  	
  	this.blur = function() {
    	ASUMaps.node.className = 'asumaps-popup asumaps-popup-inactive';
  	}
}

var ASUMapsPopupOption = function(parent, landmark) {
	var self = this;
	this.name = landmark.name.toLowerCase();
	this.node = createOption(landmark);
	    	
	function createOption(lm) {
		var a = document.createElement('a');
		a.lm = lm;
	    a.className = 'asumaps-popup-option';
	    a.href = '#';
	    a.onclick = function(e) {
	        lm.campus.selectLandmark(lm.type, lm.code);
	        parent.blur();
	    }
	    a.appendChild(document.createTextNode(lm.name + (lm.name != lm.code ? ' (' + lm.code + ')' : '')));

	    return a;
	}
}

var ASUMapQuery = new Object();
ASUMapQuery.parse = function() {
	var query = document.location.search.substring(1);
	var parms = query.split('&');
	for (var i = 0; i < parms.length; i++) {
		var pos = parms[i].indexOf('=');
		if (pos > 0) ASUMapQuery[parms[i].substring(0, pos)] = unescape(parms[i].substring(pos+1));
	}
}
ASUMapQuery.parse();

ASUMaps.directLink = function(campus) {
  	var c = ASUMapQuery['campus'];
  	if(!c){
	  	c = "tempe";
  	}
  	if (c == campus.shortname) {
    	campus.focus(ASUMaps.directLandmarkLink);

    	var lat = ASUMapQuery['lat'];
    	var lon = ASUMapQuery['lon'];

    	if (lat && lon) {
      		var p = new GLatLng(parseFloat(lat), parseFloat(lon));
      		var lm = new ASUMapUserLandmark(p, c, (ASUMapQuery['info'] ? ASUMapQuery['info'] : null));
      		lm.focus();
    	}
  	}
}

ASUMaps.directLandmarkLink = function(campus) {
  	var b = ASUMapQuery['building'];
  	var m = campus.markersets['building'];
  	if (b && m && m.landmarks && m.landmarks[b]) {
  		m.landmarks[b].focus();
  	}

  	var d = ASUMapQuery['decalparking'];
  	var m = campus.markersets['decalparking'];
  	if (d && m && m.landmarks && m.landmarks[d]) {
    	m.landmarks[d].focus();
  	}

  	var v = ASUMapQuery['visitorparking'];
  	var m = campus.markersets['visitorparking'];
  	if (v && m && m.landmarks && m.landmarks[v]) {
    	m.landmarks[v].focus();
  	}
}
