// ======================================================================
// INIT
// ======================================================================
$(document).ready(function() {
	
	// calls all functions defined like App.init.observers.myObserver = function() { ... }
	App.initialize();
	
	// calls selected functions defined like App.observers.myObserver = function() { ... }
	// App.observer("myObserver")
	App.observe(
    "serpLinkTraker",
		"closeLink",
		"saveJobLink",
		"sendJobViaEmailLink",
		"moreJobOptionsLink",
		"sendToFriendForm",
		"jobAlertLink",
		"setMinHeaderWidth"
	);
	
});


// ======================================================================
// OBSERVERS
// ======================================================================
App.init.observers.distanceSelectBox = function() {
	$("h2 select").change(function() {
		var value = $(this).attr("value");
		var url = window.location.toString();
		if(url.match("radius=")) {
			window.location = url.replace(/(\&|\?)radius\=\d+/, "$1radius="+value);
		} else {
			var separator = url.indexOf('?') > -1 ? "&" : "?";
			window.location = url+separator+'radius='+value
		}
	});
}

App.init.observers.hideLeftColumnLink = function() {
	$(".hide-left-column a").click(function() {
		App.helpers.hideLeftColumn();
		return false;
	});
}

App.init.observers.showLeftColumnLink = function() {
	$(".show-left-column a").click(function() {
		App.helpers.showLeftColumn();
		return false;
	});
}

App.init.observers.clearSearchesLink = function() {
	$("dl#searches dd.filter-action a").click(function() {
		var url = $(this).attr("href");
		$("dl#searches").load(url);
		return false;
	});
}

// job alert
App.observers.jobAlertLink = function() {
	$("a.subscribe-to-job-alerts").click(function() {
		var link = $(this);
		var options = {
			url: link.attr('href'),
      type: "post",
      data: link.attr('remote-params'),
			complete: function(request, textStatus) {
				if (request.status == 200) { // saved
					link.parents("li").html(request.responseText);
				} else if (request.status == 202) { // need to register
					$('#subscribe-to-job-container').html(request.responseText).slideDown();
				}
			}
		};
		$.ajax(options);
		return false;
	});
};

App.observers.serpLinkTraker = function(){
  $('a.api-job').livequery('click', function(){
    var href = $(this).attr('href');
    var q = $('#q').val();
    var l = $('#l').val();
    var u = encodeURIComponent || escape;
    (new Image).src=[
         '/track/serp?h=' + u(href),
         'q='+u(q),
         'l='+u(l)
         ].join('&');
  }); 
};



// ======================================================================
// HELPERS
// ======================================================================
App.helpers.hideLeftColumn = function() {
	$("#left-column").hide().css({ "width": "0" });
	$("#content").css({ "border-left-color": "#fff", "margin-left": "0" });
	$("ul#content-top-links li.show-left-column").show();
	App.helpers.saveLeftColumnVisibilityToSession("collapsed");
};

App.helpers.showLeftColumn = function() {
	$("#content").css({ "border-left-color": "#ddd", "margin-left": "190px" });
	$("#left-column").css({ "width": "190px" }).show();
	$("ul#content-top-links li.show-left-column").hide();
	App.helpers.saveLeftColumnVisibilityToSession("expanded");
};

App.helpers.saveLeftColumnVisibilityToSession = function(visibility) {
	var id = visibility == "collapsed" ? "collapsed" : "expanded";
	$.get("/jobs/set_left_column_visibility/"+id);
};
