// ************************************************************************* Handlers

	
// JQuery Document Ready Function 

function handleDocumentReady() {
  initFormStyles();
  createNewWindowForExternalLinks();
	initializeNavigation();
	initPage();
	removeSinglePostBorder();
	roundCorners();
}

function handleFocus() {
  if (!aFormDefaultValues[this.id]) {
    aFormDefaultValues[this.id] = this.value;
  }

  if (this.value == aFormDefaultValues[this.id]) {
    this.value = '';
    this.style.color = active_color;
  }
    
}

function handleBlur() {
if (this.value == '') {
  this.style.color = inactive_color;
  this.value = aFormDefaultValues[this.id];
  }
}

			
// *************************************************************** Helper Methods
	
// ************************** Top Nav

function openShade(id) {
  	state = "opening";
  	$("#expanded" + oLookup[id]).slideDown("slow",handleNavOpen);
}

function closeShade(id) {
  	state = "closing";
  	$("#expanded" + oLookup[idSelected]).slideUp("slow",handleNavClosed);
}

function highlightNavTab(id) {
	  $("#" + oLookup[id] + "Btn").css("background-position", "bottom left");
}

function unhighlightNavTab(id) {
	  $("#" + oLookup[id] + "Btn").css("background-position", "top left");
}

function inTransition() {
	  return state == "opening" || state == "closing";
}
			
// **************************** Initialize

  function initializeNavigation (){
      var aBtns = new Array("contactBtn","directionsBtn","loginBtn");
    
      for (var i=0;i<aBtns.length;i++) {
          $("#" + aBtns[i]).click(handleNavClick);
      }
  }
  
  function initMessageWidget() {
      $("#exitFeedback").click(handleFeedbackFadeOut);
      $("#clearmsg").click(handleQuickMessageClear);
      $("#submit").click(handleMessageSubmit);
  }

  // Init Form Styles
  
  function initFormStyles() {
    $("input.default-value").css("color", inactive_color);
    $("input.default-value").focus(handleFocus);
    $("input.default-value").blur(handleBlur);
  }

// Google Maps
   
	function initializeGoogleMaps() {
		proxy = new ProxyGoogleMaps();
		
		var oInit = new Object();
		oInit.divMap = document.getElementById("map_canvas");
		oInit.long = longPCD;
		oInit.lat = latPCD;
		oInit.zoom = 12;
		
		proxy.initialize(oInit);
	
		var oMarker = new Object();
		oMarker.id = "pcd";
		oMarker.image = "/images/identity/logo_pcd_map.png";
		oMarker.shadow = "/images/identity/logo_pcd_mapShadow.png";
		oMarker.width = 43;
		oMarker.height = 57;
		oMarker.widthShadow = 70;
		oMarker.heightShadow= 57;
		oMarker.xReg = 0;
		oMarker.yReg = 40;
		oMarker.xInfoWindow = 5;
		oMarker.yInfoWindow = 1;
		oMarker.lat = latPCD;
		oMarker.long = longPCD;
		
		proxy.createMarker(oMarker);
		
		proxy.addControl(proxy.CONTROL_SMALL);
		
		var divDirections = document.getElementById("directionsRoute");
		proxy.createGDirections(divDirections);
		
		var inputTo = document.getElementById("fromAddress");
		var inputFrom = document.getElementById("toAddress");
		var inputSubmit = document.getElementById("btnSubmit");
		proxy.createInputForm(inputTo,inputFrom,inputSubmit);
		proxy.setDefaultDestination("2412 Harrison Street, San Francisco, CA 94110");
		// Creates Default Directions 
		// proxy.setDirections("94111", "2412 Harrison Street, San Francisco, CA 94110");
		
		GEvent.addListener(proxy.getMarker("pcd"),"click",handleMarkerClick);

		// Airport Buttons in Directions
  	$("li#sfo").click(function() { handleAirportDirections(sfo) });
  	$("li#oak").click(function() { handleAirportDirections(oak) });
  	$("li#sjc").click(function() { handleAirportDirections(sjc) });
  	
  	// Clear Directions
  	$("li#clearBtn").click(function() { handleClearDirections() });
	}

  //Check if map has already been loaded but is hidden
	function doesMapExist() {
		if (proxy == undefined){
			initMapLoader();
		} 
	}
   
  // Display the feedback message
  function showFeedback(message) {
      $(".feedback").fadeIn("normal", function() {
        $(".feedback_message").before(message);
        $("#exitFeedback").fadeIn("fast");
      });
  }

  function sendMessage(email, message) {
    $.post("/mail/sendmessage.php", { emailFrom: email, message: message });
  }
    
  // ******************************************* Utilities (Create a general js file?)

  function createNewWindowForExternalLinks() {
  	$("a[@href^=http]").each(
  	function(){
  		if(this.href.indexOf(location.hostname) == -1) { 
  			$(this).attr('target', '_blank');
  	  	}
  	})
  }
  
  function openPopupWindow(url, name, width, height)  
  {  
      //Remove special characters from name  
      name = name.replace(/\/|\-|\./gi, "");  
    
      //Remove whitespaces from name  
      var whitespace = new RegExp("\\s","g");  
      name = name.replace(whitespace,"");  
    
      //If it is already open  
      if (!myPopupWindow.closed && myPopupWindow.location)  
      {  
          myPopupWindow.location.href = encodeUrl(url);  
      }  
      else  
      {  
          myPopupWindow= window.open(encodeUrl(url),name, "location=no, scrollbars=no, resizable=no, toolbar=no, menubar=no, width=" + width + ", height=" + height);  
          if (!myPopupWindow.opener) myPopupWindow.opener = self;  
      }  
    
       //If my main window has focus - set it to the popup  
      if (window.focus) {myPopupWindow.focus()}  
  }
  
  
  function encodeUrl(url)  
  {  
      if (url.indexOf("?")>0)  
      {  
          encodedParams = "?";  
          parts = url.split("?");  
          params = parts[1].split("&");  
          for(i = 0; i < params.length; i++)  
          {  
              if (i > 0)  
              {  
                  encodedParams += "&";  
              }  
              if (params[i].indexOf("=")>0) //Avoid null values  
              {  
                  p = params[i].split("=");  
                  encodedParams += (p[0] + "=" + escape(encodeURI(p[1])));  
              }  
              else  
              {  
                  encodedParams += params[i];  
              }  
          }  
          url = parts[0] + encodedParams;  
      }  
      return url;  
  }
  
  function addLargeImageLinkforAlex(){
    
    $('.titleImage > p > *').wrap("<a class='thickbox' title='Stanley Interactive Demo' href='/standalone/stanley_interactive/stanley_interactive.html?height=345&amp;width=800&amp;modal=true'></a>");
  }
  
  
  // ***************************************** Top Nav

  // Top Nav Handlers

  function handleNavClick() {
    	var id = this.id;
    	if (!inTransition()) {
      		if (id == idSelected) {
        			closeShade();
      		} else {
        			if (idSelected == -1) {
          				highlightNavTab(id);
          				idPending = id;
          				openShade(id);
        			} else {
          				idPending = id;
          				closeShade();
        			}
      		}
    	}
  }

  function handleNavOpen() {
    	state = "open";
    	idSelected = idPending;
    	idPending = -1;
    	switch(oLookup[idSelected]){
        case "contact":
  			  break;    
  			case "directions":
  			  doesMapExist();
  			  break;
  			case "login":
  			  break;
  			default:
  			  break; 
		  }
  }

  function handleNavClosed(id) {
    	state = "closed";
    	idSelected = -1;

    	// unhighlight button
    	unhighlightNavTab(this.id);

    	if (idPending != -1) {
      		highlightNavTab(idPending);
      		openShade(idPending);
    	}
  }

  function handleCurrentState(navid){
    var item = navid.toLowerCase();
  }
  
  
  // Google Map Handlers

  // Add Google Maps API Dynamically to decrease page load time
  function initMapLoader() {
    var script = document.createElement("script");
        script.src = "http://www.google.com/jsapi?key=ABQIAAAAQsVNg6kut41H329rd9DGtRTwDmnpqNaLTV5wJuKBNHj9IE0vcxQMT1Z6NVhTlsJ0X358K_1qNeLVTA&callback=loadMapsAPI";
        script.type = "text/javascript";
        document.getElementsByTagName("head")[0].appendChild(script);
  }
  
  function loadMapsAPI() {
    //alert("api loaded");
    google.load("maps", "2", {"callback" : handleloadMap});
  }

  function handleloadMap() {
    //alert("maps api v2 loaded");
		initializeGoogleMaps();
	}

	function handleMarkerClick() {
		var marker = this;
	}
	
	function handleAirportDirections(airport) {
  	proxy.setDirections(airport, "2412 Harrison Street, San Francisco, CA 94110");
  }
  
  
  // Post CSS Handlers
  
  function removeSinglePostBorder() {
    if (getNumberPosts() == 1){
      $('.entryItem').css('border-bottom', 'none');
    }
  }
  
  function getNumberPosts(){
    var num = $('.entryItem').size();
    return num;
  }
  
  
  // Round Corners 
  
  function roundCorners(){
    $(".rounded").corners("5px");
  }
	
// ***************************** Variable Declarations


// Forms
var aFormDefaultValues = new Array();
var active_color = '#333333'; // Color of user provided text
var inactive_color = '#C7C7C7'; // Color of default text

// Top Nav
var idSelected = -1;
var idPending = -1;
var open = false;
var state = "closed"; //{"closed","open","closing","opening"}

var oLookup = new Object();
oLookup["contactBtn"] = "contact";
oLookup["directionsBtn"] = "directions";
oLookup["loginBtn"] = "login";
oLookup["expandedcontact"] = "contact";
oLookup["expandeddirections"] = "directions";
oLookup["expandedlogin"] = "login";

// Popups
var myPopupWindow = '';  

// Google Maps

var proxy;
var longPCD = 37.7583;
var latPCD = -122.4128;
var sfo = "sfo";
var oak = "oak";
var sjc = "sjc";


$(document).ready(handleDocumentReady);