/* ================ TOOLTIP MOUSE OVERS ===================
 * @author Marco Alionso Ramirez, marco@onemarco.com
 * @url http://onemarco.com
 * This code is public domain
 * ================ TOOLTIP MOUSE OVERS =================== */
 
	function Tooltip(marker,  text, padding){
		this.marker_ = marker;
		this.text_ = text;
		this.padding_ = padding;
	}
	
	Tooltip.prototype = new GOverlay();
	
	Tooltip.prototype.initialize = function(map){
		var div = document.createElement("div");
		div.appendChild(document.createTextNode(this.text_));
		div.className = 'tooltip';
		div.style.position = 'absolute';
		div.style.visibility = 'hidden';
		map.getPane(G_MAP_FLOAT_PANE).appendChild(div);
		this.map_ = map;
		this.div_ = div;
	}
	
	Tooltip.prototype.remove = function(){
		this.div_.parentNode.removeChild(this.div_);
	}
	
	Tooltip.prototype.copy = function(){
		return new Tooltip(this.marker_,this.text_,this.padding_);
	}
	
	Tooltip.prototype.redraw = function(force){
		if (!force) return;
		var markerPos = this.map_.fromLatLngToDivPixel(this.marker_.getPoint());
		var iconAnchor = this.marker_.getIcon().iconAnchor;
		var xPos = Math.round(markerPos.x - this.div_.clientWidth / 2);
		var yPos = markerPos.y - iconAnchor.y - this.div_.clientHeight - this.padding_;
		this.div_.style.top = yPos + 'px';
		this.div_.style.left = xPos + 'px';
	}
	
	Tooltip.prototype.show = function(){
		this.div_.style.visibility = 'visible';
	}
	
	Tooltip.prototype.hide = function(){
		this.div_.style.visibility = 'hidden';
	}
	

/* ================ STREET VIEW ===================
 * Street view functions
 * ================ STREET VIEW =================== */
	function street_initialize(){
		panoClient = new GStreetviewClient(); 
		myPano = new GStreetviewPanorama(document.getElementById("ocpstreet"));
		myPano.setLocationAndPOV(univPoint, {yaw:30,pitch:-20});
		GEvent.addListener(myPano, "error", handleNoFlash); 
		panoLoaded = '1';
	}
	
	function show_street_view(lat,lng) {
		if(panoLoaded == '0')
			street_initialize();
		panoClient.getNearestPanorama(new GLatLng(lat,lng), showPanoData);
	}
	
	function showPanoData(panoData) {
		if (panoData.code != 200) {
	    	alert('Street View not available for this location');
	    	search_map();
	    	return;
		}
		document.getElementById("view_map").style.display = 'none';
		document.getElementById("view_listing").style.display = 'none';
		document.getElementById("view_street").style.display = 'block';
		myPano.setLocationAndPOV(panoData.location.latlng);
		
	}
	function handleNoFlash(errorCode) {
  		if (errorCode == 603) {
    		alert("Error: Flash doesn't appear to be supported by your browser");
    		return;
  		}
	}
 

/* ================ MARKER OPTIONS ===================
 * Marker definition, creation/ajax callback of marker data
 * ================ MARKER OPTIONS =================== */
 
	function createMarker(coordinates, pid, text, markerIcon, university_id){
		var marker 		= new GMarker(coordinates,{icon:markerIcon});
		var tooltip 	= new Tooltip(marker,text,5);
		marker.tooltip 	= tooltip;
		marker.pid		= pid;
		GEvent.addListener(marker,'mouseover',function(){
			this.tooltip.show();
		});
		GEvent.addListener(marker,'mouseout',function(){
			this.tooltip.hide();
		});
      	GEvent.addListener(marker, 'click', function(){ 
      		map.panTo(coordinates); 
        	marker.openExtInfoWindow(
          		map,
          		"opacity_window",
          		"<center><img style='padding-top: 4px;' src='/map/map_images/load.gif'></center>",
	              {
	                beakOffset: 10,
	                ajaxUrl: "/map/property_info.php?pid=" + pid + "&university_id=" + university_id + "&referback=" + referback
	              }

        	); 
     	});

		map.addOverlay(marker);
  		map.addOverlay(marker.tooltip);
	}

	var map;
	var myPano;   
	var panoClient;
		
	var mapLoaded 	= '0';
	var panoLoaded 	= '0';
	
	var initialContents = '<div style="height: 80px; width: 150px;"><img src="/map/map_images/throbber.gif"></div>';
	var lastMarker;
	var currentYaw = 0;

    // ICON:  University
	var univIcon = new GIcon(G_DEFAULT_ICON);
	univIcon.image = "/map/map_images/university.png";
	univIcon.shadow = "/map/map_images/shadow-home.png";
	univIcon.iconSize = new GSize(32, 45);
    univIcon.shadowSize = new GSize(51.0, 37.0);
    univIcon.iconAnchor = new GPoint(16.0, 25.0);
    univIcon.infoWindowAnchor = new GPoint(16.0, 5);  
    univIcon.imageMap = [29,0,30,1,31,2,31,3,31,4,31,5,31,6,31,7,31,8,31,9,31,10,31,11,31,12,31,13,31,14,31,15,31,16,31,17,31,18,31,19,31,20,31,21,31,22,31,23,31,24,31,25,31,26,31,27,31,28,31,29,30,30,29,31,23,32,22,33,21,34,20,35,19,36,12,36,11,35,10,34,9,33,8,32,2,31,1,30,0,29,0,28,0,27,0,26,0,25,0,24,0,23,0,22,0,21,0,20,0,19,0,18,0,17,0,16,0,15,0,14,0,13,0,12,0,11,0,10,0,9,0,8,0,7,0,6,0,5,0,4,0,3,0,2,1,1,2,0];
    
	
	var studentIcon = new GIcon();
	studentIcon.image = '/map/map_images/student.png';
	studentIcon.iconSize = new GSize(14,14);
	studentIcon.shadow = '/map/map_images/shadow.png';
	studentIcon.transparent = '/map/map_images/transparent.png';
	studentIcon.shadowSize = new GSize(21,14);
	studentIcon.iconAnchor = new GPoint(7,14);
	studentIcon.infoWindowAnchor = new GPoint(7,0);
	studentIcon.imageMap = [9,0,11,1,12,2,12,3,13,4,13,5,13,6,13,7,13,8,13,9,12,10,12,11,11,12,9,13,4,13,2,12,1,11,1,10,0,9,0,8,0,7,0,6,0,5,0,4,1,3,1,2,2,1,4,0];


	var commIcon = new GIcon();
	commIcon.image = '/map/map_images/community.png';
	commIcon.iconSize = new GSize(14,14);
	commIcon.shadow = '/map/map_images/shadow.png';
	commIcon.transparent = '/map/map_images/transparent.png';
	commIcon.shadowSize = new GSize(21,14);
	commIcon.iconAnchor = new GPoint(7,14);
	commIcon.infoWindowAnchor = new GPoint(7,0);
	commIcon.imageMap = [9,0,11,1,12,2,12,3,13,4,13,5,13,6,13,7,13,8,13,9,12,10,12,11,11,12,9,13,4,13,2,12,1,11,1,10,0,9,0,8,0,7,0,6,0,5,0,4,1,3,1,2,2,1,4,0];
	
	var propIcon = new GIcon();
	propIcon.image = '/map/map_images/propman.png';
	propIcon.iconSize = new GSize(14,14);
	propIcon.shadow = '/map/map_images/shadow.png';
	propIcon.transparent = '/map/map_images/transparent.png';
	propIcon.shadowSize = new GSize(21,14);
	propIcon.iconAnchor = new GPoint(7,14);
	propIcon.infoWindowAnchor = new GPoint(7,0);
	propIcon.imageMap = [9,0,11,1,12,2,12,3,13,4,13,5,13,6,13,7,13,8,13,9,12,10,12,11,11,12,9,13,4,13,2,12,1,11,1,10,0,9,0,8,0,7,0,6,0,5,0,4,1,3,1,2,2,1,4,0];
	
	// ICON:  House, Townhouse
	var homeIcon = new GIcon(G_DEFAULT_ICON);
	homeIcon.image = "/map/map_images/home.png";
	homeIcon.shadow = "/map/map_images/shadow-home.png";
	homeIcon.iconSize = new GSize(32, 45);
    homeIcon.shadowSize = new GSize(51.0, 37.0);
    homeIcon.iconAnchor = new GPoint(16.0, 25.0);
    homeIcon.infoWindowAnchor = new GPoint(16.0, 5);
    homeIcon.imageMap = [29,0,30,1,31,2,31,3,31,4,31,5,31,6,31,7,31,8,31,9,31,10,31,11,31,12,31,13,31,14,31,15,31,16,31,17,31,18,31,19,31,20,31,21,31,22,31,23,31,24,31,25,31,26,31,27,31,28,31,29,30,30,29,31,23,32,22,33,21,34,20,35,19,36,12,36,11,35,10,34,9,33,8,32,2,31,1,30,0,29,0,28,0,27,0,26,0,25,0,24,0,23,0,22,0,21,0,20,0,19,0,18,0,17,0,16,0,15,0,14,0,13,0,12,0,11,0,10,0,9,0,8,0,7,0,6,0,5,0,4,0,3,0,2,1,1,2,0];
    
    
    // ICON:  Apartment, Condo
	var aptIcon = new GIcon(G_DEFAULT_ICON);
	aptIcon.image = "/map/map_images/apartment.png";
	aptIcon.shadow = "/map/map_images/shadow-home.png";
	aptIcon.iconSize = new GSize(32, 45);
    aptIcon.shadowSize = new GSize(51.0, 37.0);
    aptIcon.iconAnchor = new GPoint(16.0, 25.0);
    aptIcon.infoWindowAnchor = new GPoint(16.0, 5);
    aptIcon.imageMap = [29,0,30,1,31,2,31,3,31,4,31,5,31,6,31,7,31,8,31,9,31,10,31,11,31,12,31,13,31,14,31,15,31,16,31,17,31,18,31,19,31,20,31,21,31,22,31,23,31,24,31,25,31,26,31,27,31,28,31,29,30,30,29,31,23,32,22,33,21,34,20,35,19,36,12,36,11,35,10,34,9,33,8,32,2,31,1,30,0,29,0,28,0,27,0,26,0,25,0,24,0,23,0,22,0,21,0,20,0,19,0,18,0,17,0,16,0,15,0,14,0,13,0,12,0,11,0,10,0,9,0,8,0,7,0,6,0,5,0,4,0,3,0,2,1,1,2,0];
    
    // ICON:  Room, Sublet    
	var roomIcon = new GIcon(G_DEFAULT_ICON);
	roomIcon.image = "/map/map_images/room.png";
	roomIcon.shadow = "/map/map_images/shadow-home.png";
	roomIcon.iconSize = new GSize(32, 45);
    roomIcon.shadowSize = new GSize(55.0, 45.0);
    roomIcon.iconAnchor = new GPoint(16.0, 45.0);
    roomIcon.infoWindowAnchor = new GPoint(16.0, 0);  
    roomIcon.imageMap = [29,0,30,1,31,2,31,3,31,4,31,5,31,6,31,7,31,8,31,9,31,10,31,11,31,12,31,13,31,14,31,15,31,16,31,17,31,18,31,19,31,20,31,21,31,22,31,23,31,24,31,25,31,26,31,27,31,28,31,29,30,30,29,31,23,32,22,33,21,34,20,35,19,36,12,36,11,35,10,34,9,33,8,32,2,31,1,30,0,29,0,28,0,27,0,26,0,25,0,24,0,23,0,22,0,21,0,20,0,19,0,18,0,17,0,16,0,15,0,14,0,13,0,12,0,11,0,10,0,9,0,8,0,7,0,6,0,5,0,4,0,3,0,2,1,1,2,0];

	function search_map(){
		document.getElementById("view_listing").style.display = 'none';
		document.getElementById("view_street").style.display = 'none';
		document.getElementById("view_map").style.display = 'block';
		update_map_state('1');
		if(mapLoaded == '0')
			initialize();
		
	}
	
	function search_directory(){
		document.getElementById("view_map").style.display = 'none';
		document.getElementById("view_street").style.display = 'none';
		document.getElementById("view_listing").style.display = 'block';
		update_map_state('0');
	}

	function createCampus(point, title){
		umarker = new GMarker(point,{icon:univIcon});
		var tooltip 	= new Tooltip(umarker,title,-60);
		umarker.tooltip 	= tooltip;
		GEvent.addListener(umarker,'mouseover',function(){
			this.tooltip.show();
		});
		GEvent.addListener(umarker,'mouseout',function(){
			this.tooltip.hide();
		});
		map.addOverlay(umarker);
		map.addOverlay(umarker.tooltip);
	}
	
	function createCampus2(point, title){
		umarker = new GMarker(point,{icon:univIcon});
		map.addOverlay(umarker);
	}
/* ================ DETAIL PAGE =================== */

function detail_map(){
		document.getElementById("view_map").style.display = 'block';
		document.getElementById("view_image").style.display = 'none';
		if(customRefer == 1)
			document.getElementById('backlink').href = "javascript:history.go(-2)";
}

function detail_image(){
		document.getElementById("view_map").style.display = 'none';
		document.getElementById("view_image").style.display = 'block';
}
	
	
function check_map_state(){
	var xmlhttp;
	if (window.XMLHttpRequest)
	  {
	  // code for IE7+, Firefox, Chrome, Opera, Safari
	  xmlhttp=new XMLHttpRequest();
	  }
	else if (window.ActiveXObject)
	  {
	  // code for IE6, IE5
	  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	  }
	else
	  {
	  alert("Your browser does not support XMLHTTP!");
	  }
	xmlhttp.onreadystatechange=function()
	{
	if(xmlhttp.readyState==4)
	  {
	   if(xmlhttp.responseText == 1){
			search_map();
	   }
	  }
	}
	xmlhttp.open("GET","/map/map_state.php",true);
	xmlhttp.send(null);
}

function update_map_state(state){
	var xmlhttp;
	if (window.XMLHttpRequest)
	  {
	  // code for IE7+, Firefox, Chrome, Opera, Safari
	  xmlhttp=new XMLHttpRequest();
	  }
	else if (window.ActiveXObject)
	  {
	  // code for IE6, IE5
	  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	  }
	else
	  {
	  alert("Your browser does not support XMLHTTP!");
	  }
	xmlhttp.onreadystatechange=function()
	{
	if(xmlhttp.readyState==4)
	  {
			state_changed_iz_a_okay = true;
	  }
	}
	
	xmlhttp.open("GET","/map/map_state.php?map_state=" + state,true);
	xmlhttp.send(null);
}