﻿/// <reference path="jquery-1.4.1-vsdoc.js" />
/// <reference path="jquery-1.4.4.js" />
/// <reference path="jquery.autocomplete.js" />
/// <reference path="jquery.tools.min.js" />
var SearchResults = function () {
	var dom = {
		searchResults: 'table#dgSearchResults',
		selectStorePositionPrompt: '#applybutton #selectStore',
		applyForPosition: '#applybutton #btnApplyTop',
		checkedCheckboxes: ':checkbox:checked',
		checkboxesNotChecked: ':checkbox:not(:checked)',
		oddRows: 'tr:odd',
		evenRows: 'tr:even'
	}

	var colours = {
		white: 'white',
		grey: '\#F1F1F1'
	};

	var selectedPositions = 0;

	var highlightCss = {
		'background-color': '\#00b3ed'
	};

	var toggleApply = function () {
		$('#applybutton #btnApplyTop').hide();
	};

	var highlightSearchResult = function () {
		// highlight hovered row
		var searchTable = $(dom.searchResults);

		var oddRows = searchTable.find(dom.oddRows).hover(
            function () { $(this).css(highlightCss); },                       // on mouse on
            function () { $(this).css('background-color', colours.white); }   // on mouse off
        );
		var evenRows = searchTable.find(dom.evenRows).hover(
            function () { $(this).css(highlightCss); },
            function () { $(this).css('background-color', colours.grey); }
        );
	};

	var init = function () {

		// limit store selections to 3
		var storeCheck = $('.postioncheckbox');
		storeCheck.click(function () {
			//console.log('checked');
			if ($(this).is(':checked')) {
				selectedPositions++;
				if (selectedPositions === 1) {
					$(dom.applyForPosition).show();
					$(dom.selectStorePositionPrompt).hide();
				}
			}
			else {
				selectedPositions--;
			}
			var selectedCount = $(dom.checkedCheckboxes).length;

			//console.log(selectedCount);
			if (selectedPositions === 3) {
				//console.log('unchecking checkboxes');
				// disable the other checkboxes so that the user cannot choose another
				$(dom.checkboxesNotChecked).attr('disabled', true);
			}
			else {
				$(dom.checkboxesNotChecked).attr('disabled', false);
			}
		});

		highlightSearchResult();

		toggleApply();
	};

	return {
		init: init
	};
} ();

var SuburbAutoComplete = function () {

	var dom = {

	};

	var endpoints = {
		findSuburbs: "/search/searchResults.aspx/FindSuburbs"
	};



	var bindSuburbs = function (result) {
		//console.log('binding suburbs');
		if (result.hasOwnProperty("d")) {
			result = result.d;
		}
		//console.log(result);
		//console.log($("[id$='_searchDrivers']"));

		// set the autocomplete for all of the apply now entry fields
		var searchEntry = $(".autofillcontrol");
		searchEntry.autocomplete(result, {
			formatItem: function (item) {
				return item.Suburb + ', ' + item.PostCode;
			},
			formatResult: function (item) {
				return item.PostCode;
			},
			width: 190

		});

		//searchEntry.tooltip(tooltipSettings);
	};

	var displayErrors = function () {
		//console.log('error occured retrieving suburbs');
	};

	var retrieveSuburbs = function () {
		//console.log('retrieving suburbs');
		$.ajax({
			type: "POST",
			contentType: "application/json; charset=utf-8",
			url: endpoints.findSuburbs,
			data: "{ }",
			dataType: "json",
			success: bindSuburbs,
			failure: displayErrors

		});
	};

	var init = function () {
		retrieveSuburbs()
	};

	return {
		init: init
	};
} ();


$(document).ready(function () {
	//onLoad();
	SuburbAutoComplete.init();
	SearchResults.init();
});
