﻿/// <reference path="jquery-1.4.1.js" />
function ConfigureImpersonate() {
	$('#Retailer').selectmenu({
		maxHeight: 200,
		width: 170,
		menuWidth: 170,
		style: 'dropdown',
		change: function(event, value) {
			var params = {
				term: value.index
			};
			$.ajax({
				url: '/Search/Impersonate',
				type: 'POST',
				cache: false,
				data: params,
				success: function(data) {
					location.reload();
				}
			});
		}
	});
}

var qiIsDirty = false;
var qiInitialValue;

function ConfigureQuickImpersonate() {
	$('#quickImpersonate').focus(function() {
		var quickImpersonate = $(this);
		qiIsDirty = false;
		qiInitialValue = quickImpersonate.val();
		quickImpersonate.select();
	});

	$('#quickImpersonate').autocomplete({
		source: function(request, response) {
			var data = {
				term: request.term
			};
			ajaxQuickImpersonateAutocompletion(response, '/Search/UserOutletsAutocomplete', data);
		},
		//		focus: function(event, ui) {
		//			qiIsDirty = true;
		//			$('#quickImpersonate').val(ui.item.Name);
		//			//return false;
		//		},
		select: function(event, ui) {
			var params = {
				term: ui.item.Id,
				retailer: ui.item.RetailerName,
				retailernumber: ui.item.RetailerNumber,
				outlet: ui.item.Name,
				outletnumber: ui.item.OutletNumber
			};
			$.ajax({
				url: '/Search/QuickImpersonate',
				type: 'POST',
				cache: false,
				data: params,
				success: function(data) {
					$('#quickImpersonate').val(ui.item.Name);
					location.reload();
				}
			});
			return false;
		},
		delay: 750,
		autoFocus: true,
		minLength: 2,
		position: {
			my: "right top",
			at: "right bottom"
		}
	})
	.keydown(function(event) {
		var quickImpersonate = $(this);
		var key = event.keyCode || event.which;
		if (key == '13' || key == '9') {
			var term = quickImpersonate.val();
			quickImpersonate.autocomplete("close");

			if (!qiIsDirty || qiInitialValue == quickImpersonate.val()) {
				return;
			}

			function _impersonate(results) {
				if (results == null || results.length == 0) {
					return;
				}
				var params = {
					term: results[0].Id,
					retailer: results[0].RetailerName,
					retailernumber: results[0].RetailerNumber,
					outlet: results[0].Name,
					outletnumber: results[0].OutletNumber
				};
				$.ajax({
					url: '/Search/QuickImpersonate',
					type: 'POST',
					cache: false,
					data: params,
					success: function(data) {
						quickImpersonate.val(results[0].Name);
						location.reload();
					}
				});
			};

			ajaxQuickImpersonateAutocompletion(_impersonate, '/Search/UserOutletsAutocomplete', { term: quickImpersonate.val() });
		} else {
			qiIsDirty = true;
		}
	})
	.data('autocomplete')._renderItem = function(ul, item) {
		var text = item.Name + ' (' + item.OutletNumber + ')<br/>';
		text += '&nbsp;&nbsp;&nbsp;<small style="color: grey;">' + item.RetailerName + ' (' + item.RetailerNumber + ')</small>';
		return $('<li></li>')
			.data('item.autocomplete', item)
			.append('<a>' + text + '</a>')
			.appendTo(ul);
	};
}

function ajaxQuickImpersonateAutocompletion(response, url, data) {
	$.ajax({
		url: url,
		dataType: 'json',
		data: data,
		type: 'POST',
		success: function(data) { response(data); }
	});
}


