﻿var prevent = false;

function runSearch(withSubmit, idHidden, idDropDown, IdDropDownDefault, idMessage, idMessageDefault, idPanel, idDefaultSearch, idSubmit, idSearchModule, idCulture, searchType) {
	if (doGetSubmitButton(idSubmit) != null) {
		err = 0;
		var query = true;
		var guid = $('#' + idHidden).val();
		var txt_searchBoxLocality = $('#' + idDropDown);
		//var txt_searchBoxDefault = $('#'+idDropDownDefault);
		var searchBoxLocality_validator = $('#' + idMessage);
		//var searchBoxDefault_validator = $('#'+idMessageDefault);
		var localitySearchPanel = $('#' + idPanel);
		//var defaultSearch = $('#'+idDefaultSearch);
		//var country = $('#' + idHiddenCountry);
		var locality = false;
		var tbx = null;
		var msg = null;
		var e;

		if (localitySearchPanel && localitySearchPanel.css('display') == 'block') {
			tbx = txt_searchBoxLocality;
			msg = searchBoxLocality_validator;
			locality = true;
		}
		else if (defaultSearch && defaultSearch.css('display') == 'block') {
			tbx = txt_searchBoxDefault;
			msg = searchBoxDefault_validator;
			locality = true;
		}
		if (locality) {
			msg.css('display', 'none');
			if (!tbx.val()) {
				msg.css('display', 'block');
				return false;
			}
			try {
				verifyLocality(guid, withSubmit, idCulture, idSubmit, idSearchModule, searchType);
			}
			catch (e) {
				return false;
			}
		}
		else {
			var allSelected = true;
			guid.val('');
			if (msg) { msg.css('display', 'none'); }
			if (withSubmit)
				SubmitSearch(idSubmit, null, null, idCulture);
		}
	}
}

function SubmitSearch(idSubmit, idSearchModule, searchType, idCulture) {
	$('#' + idSearchModule).val('submit');
	PO_setFormActionType(searchType);
	PO_setCookie('ulps', 'ulps', false);
	doGetSubmitButton(idSubmit, idCulture).form.submit();
}

function ValidateForm(form, idCulture) {
	var result;
	$.ajax({
		type: 'POST',
		url: '/' + idCulture + '/Search/ValidateForm/',
		data: $("#" + form).serialize(),
		async: false,
		success: function(pResult) {
			result = IsFormValid(pResult);
		},
		error: function(pResult) {
			result = false;
		}
	});

	return result;
}

function IsFormValid(pResult) {
	if ("string" == typeof (pResult)) {
		var key;
		var result = eval('(' + pResult + ')');
		for (key in result) {
			switch (key) {
				case "message":
					$("#validationSummary").html(result[key]);
					return result[key].length == 0;
					break;
				default:
					break;
			}
		}
	}
	else {
		var messageKeyName = "message";
		$("#validationSummary").html(pResult[messageKeyName]);
		return (0 == pResult[messageKeyName].length);
	}
	return true;
}

function doGetSubmitButton(idSubmit) {
	return $('#' + idSubmit)[0];
}

function verifyLocality(id, withSubmit, idCulture, idSubmit, idSearchModule, searchType) {
	$.ajax({
		type: 'GET',
		url: '/' + idCulture + '/Search/CheckLocality/' + id,
		success: function(pResult) {
			onCheckLocationSuccess(pResult, withSubmit, idSubmit, idSearchModule, searchType, idCulture);
		},
		error: function(pResult) {
			onWCFFailure(pResult);
		},
		async: false
	});
}

function onCheckLocationSuccess(result, withSubmit, idSubmit, idSearchModule, searchType, idCulture) {
	if (result != null) {
		switch (parseInt(result)) {
			case 0:
				$('#SearchLocalityValidator').css('display', 'block');
				break;
			case 1:
				if (withSubmit) {
					if (ValidateForm(doGetSubmitButton(idSubmit).form.id, idCulture)) {
						SubmitSearch(idSubmit, idSearchModule, searchType, idCulture);
					}
				}
				break;
			default:
				$('#TooManyLocalitiesError').css('display', 'block')
				break;
		}
	}
}

function doSubmit(sender, idHidden, withSubmit, idCulture, idSearchModule, searchType) {
	if (prevent) {
		return false;
	}
	var guid = $('#' + idHidden).val();
	if ($("#HiddenTypeOfSearch").val() == "Locality" && (!$('#SearchLocalityDropDown').val() || guid == "")) {
		$('#SearchLocalityValidator').css('display', 'block');
	} else if (guid == "" && searchType == 'search') {
		if (ValidateForm(doGetSubmitButton(sender.id).form.id, idCulture)) {
			SubmitSearch(sender.id, idSearchModule, searchType, idCulture);
		}
	} else {
		verifyLocality(guid, withSubmit, idCulture, sender.id, idSearchModule, searchType);
	}
}

function autoCompleteLocalityAndZIP(idDropDown, idHidden, culture, country) {
	var url = "/" + culture + "/Search/AutoCompleteLocationsWithZIPs/" + country + "/";
	var input = $('#' + idDropDown);
	input.flushCache();
	input.autocomplete(url,
		{
			cacheLength: 1,
			minChars: 3,
			extraParams: { count: 10, prefixText: input.val() },
			dataType: 'json',
			parse: parseZIPData,
			formatItem: getZIPText
		}).result(function(event, item) { input.val(getZIPText(item)); $('#' + idHidden).val(getZIPGuid(item)) });
}

function getZIPText(item) {
	return eval(item).Key;
}

function getZIPGuid(item) {
	return eval(item).Value;
}

function parseZIPData(data) {
	var rows = new Array();
	for (var i = 0; i < data.length; i++) {
		rows[i] = { data: data[i], value: data[i].Key, result: data[i].Value };
	}
	return rows;
}

