var httpRequest = getXMLHTTPRequest();

var page = 1;
var totalPages = 1;

var sortfield = 'date';
var sortorder = 'desc';

var education		= [];
var experience		= [];
var field			= [];
var functiontype	= [];
var contract		= [];
var hours			= [];

function getXMLHTTPRequest() {
	var request;
	
	try {
		request = new XMLHttpRequest();
	} catch(error) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(error) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(error) {
				request = false;
			}
		}
	}
	
	return request;
}

function getRequestURL() {
	var request = '';
	
	if (page > 1) {
		request += 'page:' + page;
	}
	
	if (sortfield != 'date') {
		if (request != '') request += '&';
		
		request += 'sortfield:' + sortfield;
	}
	
	if (sortorder != 'desc') {
		if (request != '') request += '&';
		
		request += 'sortorder:' + sortorder;
	}
	
	var filters = [
		'education',
		'experience',
		'field',
		'functiontype',
		'contract',
		'hours'
	];
	
	for (var i = 0; i < filters.length; i++) {		
		if (window[filters[i]].length != 0) {
			if (request != '') request += '&';
			
			var values = '';
			
			for (var j = 0; j < window[filters[i]].length; j++) {
				if (values != '') values += ',';
				
				values += window[filters[i]][j];
			}
			
			request += filters[i] + ':' + values;
		}
	}
	
	return '/search/results/' + request;
}

function refreshResults() {
	httpRequest.open('GET', getRequestURL(), true);
	httpRequest.onreadystatechange = displayResults;
	httpRequest.send(null);
}

function displayResults() {
	if (httpRequest.readyState == 4) {
		document.getElementById('searchresults').innerHTML = httpRequest.responseText;
		
		resultsInit(page);
	}
}

function updateFilter() {
	if (this.firstChild.name == '' || this.firstChild.name == null) {
		var filterValue = [];
		
		var inputElements = this.getElementsByTagName('input');
		
		var filterName = this.firstChild.nextSibling.value;
		
		for (var i = 0; i < inputElements.length; i++) {
			if (inputElements.item(i).name != null && inputElements.item(i).name != '') {
				filterValue[filterValue.length] = inputElements.item(i).value;
			}
		}
	} else {
		var filterName = this.firstChild.name;
		var filterValue = this.firstChild.value;
	}
	
	if (window[filterName] != filterValue) {
		window[filterName] = filterValue;
		
		if (filterName != 'page') page = 1;
		
		refreshResults();
	}
}

function nextPage() {
	page++;
	
	refreshResults();
}

function previousPage() {
	page--;
	
	if (page < 1) page = 1;
	
	refreshResults();
}