﻿var site = 
{
	search : function (q)
	{
		if (jQuery.trim(q) != "" && jQuery.inArray(q, companyNamesList) >= 0)
		{
			//go to company
			
			document.location.href = "/companies/search/?name=" + encodeURI(jQuery.trim(q));
			return false;
		}
		
		return true;
	}
	, wasWindowBlocked : function (poppedWindow) {
		var result = false;

		try {
			if (typeof poppedWindow == 'undefined') {
				// Safari with popup blocker... leaves the popup window handle undefined
				result = true;
			}
			else if (poppedWindow && poppedWindow.closed) {
				result = false;
			}
			else if (poppedWindow && poppedWindow.test) {
				// This is the actual test. The client window should be fine.
				result = false;
			}
			else {
				// Else we'll assume the window is not OK
				result = true;
			}

		} catch (err) {
		
		}

		return result;
	}
	, tryOpenWindow : function (url)
	{
		//Tries to open a new window, if fails changes the current location
		var newWindow = window.open(url);
		if (wasWindowBlocked(newWindow))
		{
			document.location.href = url;
		}
	}
	, trackEvent : function(category, action, opt_label, opt_value)
	{
		_gaq.push(["_trackEvent", category, action, opt_label, opt_value]);
	}
	, trackOutboundLink : function(outboundType, url)
	{
		try 
		{
			site.trackEvent("outbound", outboundType, url);
			setTimeout('site.tryOpenWindow("' + url + '");', 100)
		}
		catch(err)
		{
		
		}
	}
	, initAutocomplete: function (element, url) {
		var cache = {}, lastXhr;
			$(element).autocomplete({
				minLength: 2,
				source: function( request, response ) {
					var term = request.term;
					term = term.toLowerCase();
					if ( term in cache ) {
						response( cache[ term ] );
						return;
					}
					lastXhr = $.getJSON(url, {name:request.term}, function( data, status, xhr ) {
						cache[ term ] = data;
						if ( xhr === lastXhr ) {
							response( data );
						}
					});
				},
				focus: function( event, ui ) {
					$(element).val( ui.item.Value );
					return false;
				},
				select: function( event, ui ) {
					$(element).val( ui.item.Value );
					return false;
				}
			}).data("autocomplete")._renderItem = function( ul, item ){
				return $( "<li></li>" )
					.data( "item.autocomplete", item )
					.append( "<a>" + item.Value + "</a>" )
					.appendTo( ul );
			};
	}
	, getResource: function(message, replacement1, replacement2)
	{
		if (!message)
		{
			throw "Message is not defined";
		}
		var result = message.replace("{0}", replacement1);
		if (replacement2)
		{
			result = message.replace("{1}", replacement2);
		}
		return result;
	}
}
