$(document).ready(function () {
  
  var Page = new Page_Class();
  
});

function Page_Class() {

	this._init();
	
}

Page_Class.prototype._init = function() {
	
	this._attachPhotoSelectorEvents();
	this._attachMapEvents();
	
}

Page_Class.prototype._attachPhotoSelectorEvents = function() {
	
	var $photoSelect = $("#ctPhotoSelect");
  
	if($photoSelect.length) {
	
		$("li", "#ctPhotoSelect").click(this._handlePhotoSelector);
	
	}
	
}

Page_Class.prototype._handlePhotoSelector = function(oEvent) {

	var oEl = oEvent.currentTarget;
	var oParent = $(oEl).closest("ul");
	
	var oImg = $("#imgHomePhoto").get(0);
	var sNumber = oEl.getAttribute("number");
	
	$("li", oParent).removeClass("active");
	$(oEl).addClass("active");
	
	oImg.src = "/img/homePhoto" + sNumber + ".jpg";

}

Page_Class.prototype._attachMapEvents = function() {
	
	var $mapLinks = $("a.lbViewMap");
	var $lbCloseMap = $("a.lbCloseMap", "#ctMap");
	
	$($mapLinks).click(this._showMap);
	$($lbCloseMap).click(this._closeMap);
	
	$("#ctMap").draggable({handle:"div.caption"});
	$("#ctMap").centerElement();

}

Page_Class.prototype._showMap = function(oEvent) {
	
	oEvent.preventDefault();

	var oEl = oEvent.currentTarget;
	var oPosition = $(oEl).position();
	var sLocation = oEl.getAttribute("location");
	var nMapHeight = 526;

	var oCoords;
	var sTitle;

	if(sLocation == "boulder") {
		
		oCoords = {
			lat:40.016346
			,lng:-105.262780
		}
		
		sTitle = "Boulder Office";
		
	} else if (sLocation == "brighton") {
		
		oCoords = {
			lat:39.979051
			,lng:-104.818326
		}
		
		sTitle = "Brighton Office";
		
	} else {
		return;
	}
	
	var oMapContainer = $("#ctMap").get(0);
	var oMapCaption = $("div.caption span", "#ctMap").get(0);
	$(oMapCaption).html(sTitle);
	
	var latlng = new google.maps.LatLng(oCoords.lat, oCoords.lng);
	
	var myOptions = {
		zoom: 15,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};

	var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
	
	var marker = new google.maps.Marker({
		position: latlng, 
		map: map,
		title:"Boulder Office"
	});
	
	var nTop = (oPosition.top - nMapHeight - 50);
	nTop = Math.max(nTop, 50);
	
	$(oMapContainer).css("top", nTop + "px");
	$(oMapContainer).removeClass("noDisplay");

}

Page_Class.prototype._closeMap = function(oEvent){
	
	oEvent.preventDefault();
	
	$("#ctMap").addClass("noDisplay");
		
}

//jQuery addons

jQuery.fn.centerElement = function() {
	//this.css("position","absolute");
	this.css("top", ( $(window).height() - this.height() ) / 2+$(window).scrollTop() + "px");
	this.css("left", ( $(window).width() - this.width() ) / 2+$(window).scrollLeft() + "px");
	return this;
}
