var previousTradeLabel = 'Select your trade';
var previousLocationLabel = 'Where do you operate?'

function pageLoaded() {
	document.getElementById('businesscategorysubmitbutton').style.display = 'none';
	document.getElementById('tradesubmitbutton').style.display = 'none';
	document.getElementById('jsEnabled').value = 1;
	deChrome();
}

function deChrome() {
	// Google Chrome will try and retain form selections after reloading a page but resets the JavaScript memory state, breaking the logic flow - beat it down by resetting everything manually onload
	document.getElementById('businesscategory').value = 0;
	document.getElementById('businesscategorysearch').value = '';
	document.getElementById('locationhome').checked = false;
	document.getElementById('locationbusiness').checked = false;
	document.getElementById('trade').value = 0;
	document.getElementById('tradesearch').value = '';
	disableLoctionsTrades();
}

function businessCategoryMenuItemSelected() {
	var value = document.getElementById('businesscategory').value;
	if (value == 0) {
		disableLoctionsTrades();
	} else {
		document.getElementById('businesscategorysearch').value = '';
		document.getElementById('bcSearchResultsWrapper').style.display = 'none';
		businessCategoryItemSelected(value);
	}
}

function businessCategoryRadioItemSelected(index) {
	businessCategoryItemSelected(document.getElementById('businesscategory'+index).value);
}

function businessCategoryItemSelected(bcid) {
	disableLoctionsTrades();
	advAJAX.get({
		url: '/json/business_category.json.php?id='+bcid,
		onSuccess : function(obj) {
			var response = eval(obj.responseText);
			if (response[0]['action'] == 'redirect') {
				window.location = response[0]['url'];
			} else if (response[0]['action'] == 'list') {
				previousTradeLabel = response[0]['trademenutext'];
				document.getElementById('tradeText').innerHTML = response[0]['trademenutext'];
				// IE won't let us just put new options in the select with innerHTML - we need to replace the whole thing
				var newXHTML = '<select name="trade" id="trade" onchange="tradeMenuItemSelected();">';
				newXHTML += '<option value="0">'+response[0]['trademenutext']+'</option>';
				for (var i = 0; i < response[0]['items'].length; i++) {
					newXHTML += '<option value="'+response[0]['items'][i]['id']+'">'+response[0]['items'][i]['name']+'</option>';
				}
				newXHTML += '</select>';
				document.getElementById('tradeWrapper').innerHTML = newXHTML;
				enableLoctionsTrades(bcid);
			} else {
				handleError();
			}
		},
		onError : function(obj) { handleError(); }
	});
}

function enableLoctionsTrades(businesscategory) {
	document.getElementById('businesscategoryHiddenWrapper').innerHTML = '<input type="hidden" name="businesscategory" id="businesscategoryhidden" value="'+businesscategory+'" />';
	document.getElementById('locationText').className = '';
	document.getElementById('tradeText').className = '';
	document.getElementById('locationhome').disabled = false;
	document.getElementById('locationhomeLabel').className = '';
	document.getElementById('locationbusiness').disabled = false;
	document.getElementById('locationbusinessLabel').className = '';
	document.getElementById('trade').disabled = false;
	document.getElementById('tradesearch').disabled = false;
	document.getElementById('tradeSearchButtonWrapper').className = '';
	document.getElementById('tradesearchbutton').src = '/i/pc_search.gif';
	document.getElementById('tradesearchbutton').disabled = false;
}

function disableLoctionsTrades() {
	unhighlightLocation();
	unhighlightTrade();
	document.getElementById('businesscategoryHiddenWrapper').innerHTML = '';
	document.getElementById('locationText').className = 'disabled';
	document.getElementById('locationhome').disabled = true;
	document.getElementById('locationhomeLabel').className = 'disabled';
	document.getElementById('locationbusiness').disabled = true;
	document.getElementById('locationbusinessLabel').className = 'disabled';
	document.getElementById('tradeText').className = 'disabled';
	document.getElementById('trade').value = 0;
	document.getElementById('trade').disabled = true;
	document.getElementById('tradesearch').value = '';
	document.getElementById('tradesearch').disabled = true;
	document.getElementById('tradeSearchButtonWrapper').className = 'disabled';
	document.getElementById('tradesearchbutton').src = '/i/pc_search_disabled.gif';
	document.getElementById('tradesearchbutton').disabled = true;
	document.getElementById('tradeSearchResultsWrapper').innerHTML = '';
	document.getElementById('tradeSearchResultsWrapper').style.display = 'none';
}

function businessCategorySearchSubmit() {
	document.getElementById('businesscategory').value = 0;
	disableLoctionsTrades();
	var searchquery = document.getElementById('businesscategorysearch').value;
	if (searchquery.length > 0) {
		advAJAX.post({
			url: '/json/business_category_search.json.php',
			parameters : {'s' : searchquery},
			onSuccess : function(obj) {
				var response = eval(obj.responseText);
				if (response[0]['action'] == 'noresults') {
					document.getElementById('bcSearchResultsWrapper').innerHTML = '<strong>No business categories were found containing &quot;'+response[0]['s']+'&quot;</strong>';
					document.getElementById('bcSearchResultsWrapper').style.display = 'block';
				} else if (response[0]['action'] == 'list') {
					if (response[0]['items'].length > 1) {
						document.getElementById('bcSearchResultsWrapper').innerHTML = '<strong>'+response[0]['items'].length+' business categories were found containing &quot;'+response[0]['s']+'&quot;:</strong>';
					} else {
						document.getElementById('bcSearchResultsWrapper').innerHTML = '<strong>1 business category was found containing &quot;'+response[0]['s']+'&quot;:</strong>';
					}
					for (var i = 0; i < response[0]['items'].length; i++) {
						document.getElementById('bcSearchResultsWrapper').innerHTML += '<div class="floatWrapper"><input class="radio" type="radio" name="businesscategory" id="businesscategory'+i+'" value="'+response[0]['items'][i]['id']+'" onclick="businessCategoryRadioItemSelected('+i+');" /><label for="businesscategory'+i+'">'+response[0]['items'][i]['name']+'</label></div>';
					}
					document.getElementById('bcSearchResultsWrapper').style.display = 'block';
				} else {
					handleError();
				}
			},
			onError : function(obj) { handleError(); }
		});
	}
	return false;
}

function locationSelected() {
	unhighlightLocation();
	if (document.getElementById('trade').value != 0) {
		if (validation()) {
			document.getElementById('locationTradeForm').submit();
		}
	} else if (document.getElementById('tradeSearchResultsWrapper').style.display == 'block' && tradeRadioSelected()) {
		if (validation()) {
			document.getElementById('locationTradeForm').submit();
		}
	}
}

function locationTradeSubmit() {
	var searchquery = document.getElementById('tradesearch').value;
	if (searchquery.length > 0) {
		document.getElementById('trade').value = 0;
		advAJAX.post({
			url: '/json/trade_search.json.php',
			parameters : {'s' : searchquery, 'bcid' : document.getElementById('businesscategoryhidden').value},
			onSuccess : function(obj) {
				var response = eval(obj.responseText);
				if (response[0]['action'] == 'noresults') {
					document.getElementById('tradeSearchResultsWrapper').innerHTML = '<strong>No trades were found containing &quot;'+response[0]['s']+'&quot;</strong>';
					document.getElementById('tradeSearchResultsWrapper').style.display = 'block';
				} else if (response[0]['action'] == 'list' || response[0]['action'] == 'alternatelist') {
					document.getElementById('tradeSearchResultsWrapper').innerHTML = '<input type="hidden" name="traderadioCount" id="traderadioCount" value="'+response[0]['items'].length+'" />';
					if (response[0]['action'] == 'list') {
						if (response[0]['items'].length > 1) {
							document.getElementById('tradeSearchResultsWrapper').innerHTML += '<strong>'+response[0]['items'].length+' trades were found containing &quot;'+response[0]['s']+'&quot;:</strong>';
						} else {
							document.getElementById('tradeSearchResultsWrapper').innerHTML += '<strong>1 trade was found containing &quot;'+response[0]['s']+'&quot;:</strong>';
						}
					} else { // alternatelist
						if (response[0]['items'].length > 1) {
							document.getElementById('tradeSearchResultsWrapper').innerHTML += '<strong>No trades were found containing &quot;'+response[0]['s']+'&quot;<br /><br />'+response[0]['items'].length+' similar items were found:</strong>';
						} else {
							document.getElementById('tradeSearchResultsWrapper').innerHTML += '<strong>No trades were found containing &quot;'+response[0]['s']+'&quot;<br /><br />1 similar item was found:</strong>';
						}
					}
					for (var i = 0; i < response[0]['items'].length; i++) {
						document.getElementById('tradeSearchResultsWrapper').innerHTML += '<div class="floatWrapper"><input class="radio" type="radio" name="traderadio" id="traderadio'+i+'" value="'+response[0]['items'][i]['id']+'" onclick="tradeRadioItemSelected('+i+');" /><label for="traderadio'+i+'">'+response[0]['items'][i]['name']+'</label></div>';
					}
					document.getElementById('tradeSearchResultsWrapper').style.display = 'block';
				} else {
					handleError();
				}
			},
			onError : function(obj) { handleError(); }
		});
		return false;
	} else {
		return validation();
	}
}

function tradeMenuItemSelected() {
	if (document.getElementById('trade').value != 0) {
		document.getElementById('tradeSearchResultsWrapper').innerHTML = '';
		document.getElementById('tradeSearchResultsWrapper').style.display = 'none';
		if (validation()) {
			document.getElementById('locationTradeForm').submit();
		}
	}
}

function tradeRadioItemSelected() {
	document.getElementById('trade').value = 0;
	if (validation()) {
		document.getElementById('locationTradeForm').submit();
	}
}

function tradeRadioSelected() {
	var tradeRadioSelected = false;
	if (document.getElementById('traderadioCount').value) {
		var itemCount = document.getElementById('traderadioCount').value;
		for (var i = 0; i < itemCount; i++) {
			if (document.getElementById('traderadio'+i).checked) {
				tradeRadioSelected = true;
			}
		}
	}
	return tradeRadioSelected;
}

function highlightLocation() {
	document.getElementById('locationText').innerHTML = 'Please select where you operate from';
	document.getElementById('locationText').className = 'error';
}

function unhighlightLocation() {
	document.getElementById('locationText').innerHTML = previousLocationLabel;
	document.getElementById('locationText').className = '';
}

function highlightTrade() {
	document.getElementById('tradeText').innerHTML = document.getElementById('tradeText').innerHTML.replace('Select', 'Please select');
	document.getElementById('tradeText').className = 'error';
}

function unhighlightTrade() {
	document.getElementById('tradeText').innerHTML = previousTradeLabel;
	document.getElementById('tradeText').className = '';
}

function validation() {
	var error = false;
	if (document.getElementById('locationhome').checked == false && document.getElementById('locationbusiness').checked == false) {
		error = true;
		highlightLocation();
	} else {
		unhighlightLocation();
	}
	if (document.getElementById('trade').value == 0 && document.getElementById('tradeSearchResultsWrapper').style.display == 'none') {
		error = true;
		highlightTrade();
	} else if (document.getElementById('tradeSearchResultsWrapper').style.display == 'block' && !tradeRadioSelected()) {
		error = true;
		highlightTrade();
	} else {
		unhighlightTrade();
	}
	return (!error);
}

function handleError() {
	window.location = '/Product-Chooser';
}
