Recmnd = {};

(function() {

	var jquery_loaded = false, api_initialized = false;

	if ('jQuery' in window) {
		var jquery_loaded = true;
	} else {
		// load jquery
		var script = document.createElement('script');
		script.setAttribute('type', 'text/javascript');
		script.setAttribute('src', 'https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js');
		script.onload = script.onreadystatechange = function() {
			jQuery.noConflict();
			jquery_loaded = true;
			check_ready();
		};
		document.getElementsByTagName("head")[0].appendChild(script);
	}

	var ready_queue = [];
	var check_ready = function() {
		if (!(api_initialized && jquery_loaded))
			return false;
		for (var i = 0; i < ready_queue.length; i++)
			ready_queue[i]();
		ready_queue = [];
		return true;
	};
	
	var when_ready = function(callback) {
		if (check_ready())
			callback();
		else
			ready_queue.push(callback);
	};

	var api_url, api_key, content_url, have_jquery;

	var api = function(method, params, callback) {
		return jQuery.get(api_url + method, params, callback, 'jsonp');
	};
	
	var api_cache = function(cache, method, params, callback) {
		params._url = api_url + method;
		return jQuery.get(cache, params, callback, 'jsonp');
	};

	Recmnd.init = function(init_api_url, init_api_key, init_content_url) {
		api_url = init_api_url;
		api_key = init_api_key;
		content_url = init_content_url || window.location.href;

		var renderWidget = function(data) {
			if (data.css) {
				// load recmnd static css
				var css = document.createElement('link');
				css.setAttribute('rel', 'stylesheet');
				css.setAttribute('type', 'text/css');
				css.setAttribute('href', 'https://api.recmnd.com/' + data.css);
				document.getElementsByTagName("head")[0].appendChild(css);
			}

			var widget = jQuery('#recmnd-widget');
			widget.html(data.html);
			
			if (data.track == 'js') {
				var logClick = function(id, title, href) {
					if (id.substr(0, 5) != 'item-')
						return true;
					api('click.json', {
						api_key: api_key,
						recmnd_id: data.recmnd_id,
						article_id: id.substr(5)
					}, function() {
						window.location = href;
					});
					return false;
				};

				var trackLinks = function(event) {
					if (((event.type == 'click') && ((event.which == 1) || (event.which == 2))) || ((event.type == 'keyup') && (keyCode == 13)))
						return logClick(this.id, this.title, this.href);
					return true;
				};

				var links = widget.find('ul li a');
				links.click(trackLinks);
				links.keyup(trackLinks);
			}
		};

		var placeholder_ready = false;

		Recmnd.showRecommendations = function(options) {
			Recmnd.prepContent();
			when_ready(function() {
				if ('cache' in options)
					api_cache(options.cache, 'recommendations/widget', {
						api_key: api_key,
						item_url: content_url,
						return_type: options['returnType'] || '',
						results_count: options['resultsCount'] || '',
						result_type: options['resultType'] || 'combined',
						debug: options['debug'] || 0
					}, function(data) {
						renderWidget(data);
					});
				else
					api('recommendations/widget', {
						api_key: api_key,
						item_url: content_url,
						return_type: options['returnType'] || '',
						results_count: options['resultsCount'] || '',
						result_type: options['resultType'] || 'combined',
						debug: options['debug'] || 0
					}, function(data) {
						renderWidget(data);
					});
			});
		};
		
		Recmnd.prepContent = function() {
			if (placeholder_ready)
				return;
			document.write('<div style="height: 1px; clear:both; overflow: hidden;"></div><div id="recmnd-widget"></div>');
			placeholder_ready = true;
		};
		
		api_initialized = true;
		check_ready();
	};

})();
Recmnd.init("https:\/\/api00001.recmnd.com\/api\/", "d404e7a630f2614c5d2826dac0848ccff2cf8464-d2c7f6a9d9bdd7cd7c9adb166fa7bff7");