var index=-1;
var suggest_div;
var input_field;

function suggest_keyup(event, div, field) {
	suggest_div = $(div);
	input_field = $(field);

	if (event.shiftKey || event.ctrlKey || event.altKey) {
    		return true;
  	}

	switch (event.keyCode) {
//		case 8 : // Backspace
//      		break;
    		case 9 : // Tab
      		Element.hide(div);
      		break;
    		case 13: //Enter
      		return false;
      		break;
    		case 27 : // Escape
      		Element.hide(div);
      		return false;
    		case 33 : // Page up
      		if (Element.visible(div)) {
        			suggest_move(-99);
        			return false;
      		}
      		break;
    		case 34 : // Page down
      		if (Element.visible(div)) {
        			suggest_move(+99);
        			return false;
      		}
      		break;
    		case 38 : // Arrow up
      		if (Element.visible(div)) {
        			suggest_move(-1);
        			return false;
      		}
      		break;
    		case 40 : // Arrow down
      		if (Element.visible(div)) {
        			suggest_move(+1);
        			return false;
      		}
      		break;
	    case 36 : // Home
	    case 35 : // End
	    case 37 : // Arrow left
	    case 39 : // Arrow right
	    case 45 : // Insert
	    		break;
    		default:
	        var ajax = new Ajax.Updater(div, 'ajax_responder.php', {method: 'post', parameters: 'case=suggest&task=' + field + '&search=' + input_field.value});
	        Element.show(div);
	        index=-1;
	}
	return true;
}

function suggest_keypress(event) {

	if (event.ctrlKey || event.altKey) {
    		return true;
  	}

  	switch (event.keyCode) {
    		case 13 : // Enter
      		if (Element.visible(suggest_div) && index != -1) {
        			suggest_select(index);
        			return false;
      		}
      		break;
  		}
  	return true;
}

function suggest_move(amount) {
	index = index + amount;
	var divs = suggest_div.getElementsByTagName('div');

	if (index >= divs.length) {
        index = divs.length - 1;
  	}

  	if (index < 0) {
        index = 0;
  	}

	var i;
  	for (i = 0; i < divs.length; i++) {
   	    divs.item(i).className='suggest_link';
  	}

	var selected_item = divs.item(index);
	selected_item.className='suggest_link_over';
}

function suggest_select(index) {
	var divs = suggest_div.getElementsByTagName('div');
	if (index < 0 || index >= divs.length) {
		return;
	}
  	var selected = document.getElementsByClassName("suggest_link_over");
  	input_field.value = selected[0].innerHTML.replace("&amp;", "&");
  	suggest_div.innerHTML = '';
  	Element.hide(suggest_div);
	count_result();
}

function zipcode_changed(zipcode) {
	var dropdown = $('province_dropdown')
	if(zipcode.value != '') {
		dropdown.disabled=true;
		dropdown.style.background="#dedede";
	} else {
		dropdown.disabled=false;
		dropdown.style.background="#fff";
	}
}

function set_province() {
	var zipcode = $('zipcode_input');

	if(zipcode.value != '') {
		$('zipcode').value=zipcode.value;
		$('distance').value=$('distance_drop').value;
		$('province').value='';
	} else {
		$('province').value=$('province_dropdown').value;
		$('zipcode').value='';
		$('distance').value='';
	}
	Element.hide('searchChooseProvince');
	count_result();
}

function show_province_select() {
	var ajax = new Ajax.Updater('searchChooseProvince', '/ajax_responder.php', {method: 'get', parameters: 'case=province&zipcode=' + $('zipcode').value  + '&distance=' + $('distance').value});
	Element.show('searchChooseProvince');
}

function empty_search_form() {
	$('search_words').value='';
	$('TOL_category').value='';
	$('province').value='';
	$('zipcode').value='';
	$('distance').value='';
	$('companySearchCounter').innerHTML = '&nbsp;';
}

function count_result() {
/*	var params = '&search_words=' + URLEncode($F('search_words'))
			+ '&TOL_category=' + URLEncode($F('TOL_category'))
			+ '&province=' + URLEncode($F('province'))
			+ '&zipcode=' + URLEncode($F('zipcode'))
			+ '&distance=' + URLEncode($F('distance'));

	var ajax = new Ajax.Updater('companySearchCounter', '/ajax_responder.php?case=search_count',
		{method: 'post',
		postBody: params
		}
	);
*/}

function URLEncode(url)
{
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";

	var plaintext = url;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} // for

	return encoded;
}