// <![CDATA[
// constants
var $BASEURL = "/testmanager/index.php";
var $fa = new Array();
$fa['SearchByTest'] = 'search.bytest';
$fa['displaytest'] = 'main.displaytest';
var xhr = null;
$.ajaxSetup( {
  global: false,
  timeout: 2000,
  type: "POST"
} );
$(document).ready(function() {
	// test name search submit event handler
	$("form#frmSearch").submit(function() {
		var testname = $('#testname', this).val();
		if (testname == ""){
			$('#testname').focus().addClass('invalid');
			$('#errormsg').remove();
			$('<span id="errormsg"></span>')
				.text('Please enter a test name or partial test name before searching')
				.addClass('invalid')
				.insertAfter(this);
			return false;	// stop default event handling
		}			
		return true;
	});
	// category search submit event handler
	$("#searchCategory").change(function() {
		$("form#frmCatSearch").trigger('submit');
		return true;
	});
	$("form#frmCatSearch").submit(function() {
		var catlist = document.getElementById("searchCategory");
		var catname = catlist[catlist.selectedIndex].text;
		if (catlist.selectedIndex < 1){
			$(catlist).focus().addClass('errorfld');
			$('#errormsg').remove();
			$('<span id="errormsg"></span>')
				.text('Select required category')
				.addClass('invalid')
				.insertAfter(this);
			return false;	// stop default event handling
		}
		else {
			$('#categoryname').val(catname);
			return true;
		}
	});
	// department search submit event handler
	$("#searchDepartment").change(function() {
		$("form#frmDeptSearch").trigger('submit');
		return true;
	});
	$("form#frmDeptSearch").submit(function() {
		var deptlist = document.getElementById("searchDepartment");
		var deptname = deptlist[deptlist.selectedIndex].text;
		if (deptlist.selectedIndex < 1){
			$(deptlist).focus().addClass('errorfld');
			$('#errormsg').remove();
			$('<span id="errormsg"></span>')
				.text('Select required department')
				.addClass('invalid')
				.insertAfter(this);
			return false;	// stop default event handling
		}
		else {
			$('#deptname').val(deptname);
			return true;
		}
	});
	
	// live search with ajax
	var $lastData = null;
	var $livesearch = $('<ul class="livesearch"></ul>').hide().insertAfter('#testname');
	var selectedItem = null;
	
	var setSelectedItem = function(item) {
		selectedItem = item;
		if (selectedItem == null) {
			$livesearch.hide();
			return;
		}
		if (selectedItem < 0) {
			selectedItem = 0;
			return;
		}
		var noItems = $livesearch.find('li').length;
		if (selectedItem >= noItems) {
			selectedItem = noItems - 1;
		}
		
		$livesearch.show();
	}
	$('#testname').attr('autocomplete', 'off').keyup(function(event) {
			
		if (event.keyCode > 40 || event.keyCode == 8) {
			if ($('#testname').val() == "") {
				return;
			}
			$partial = $('#testname').val();
			xhr = $.ajax({
//				'url': $BASEURL+"?AJAX="+$fa['SearchByTest']+"_"+$partial,
				'url': $BASEURL,
				'data': {'fuseaction': $fa['SearchByTest'],
					'id': $partial,
					'output': 'json'
				},
				'dataType': 'json',
				'type': 'GET',
				'success': function(data) {
					if (data.length){
						$livesearch.empty();
						$.each(data, function(index, result) {
							var a = $('<a></a>')
							.text(result.name)
							.click(function() {
								$livesearch.hide();
								location.href = $BASEURL + '?fuseaction='+$fa['displaytest']+"&testid="+result.testid;
							});
							// append hyperlink to livesearch ul
							var li = $('<li></li>').append(a).appendTo($livesearch);

						});
						$livesearch.show();
					}else {
						$livesearch.empty();
						$livesearch.show();
					}
				},	// end success
				'error': function(xhrobj, message, ex) {
					alert("AJAX call to "+$BASEURL + " failed. Status=" + " Message: " + message);
				}
				
			});
		}
		else if (event.keyCode == 27) {
			setSelectedItem(null);
		}
		// end keyup handler
	}).keypress(function(event) {
		// end keypress
	}).blur(function(event) {
		// setSelectedItem(null);
	});
// initialise shadowbox	
//	Shadowbox.init();		
});
// ]]> 
