(function($) {

var _xhr;
var l10n = {
	es: {
		loading: 'Cargando...',
		selectZone: 'Seleccione provincia',
		noResults: 'No hay coincidencias'
	},
	en: {
		loading: 'Loading...',
		selectZone: 'Select Province',
		noResults: 'No coincidences'
	}
};

var locale = 'es';

function init() {

	locale = $('html').attr('lang');

	$('div.form-buttons').hide();

	$('#icountry')
		.bind('change', country_change);

}


function country_change(e) {

	var nvalue = $(this).find(':selected').val();

	if (!nvalue) {
		$('#iregion').attr('disabled', 'disabled');
		return;
	}

	$('#iregion').empty().append('<option>'+l10n[locale].loading+'</option>').attr('disabled', 'disabled');
	$('#addresses')
		.hide()
		.empty();
	$(this).parents('form').addClass('loading');

	try {
		_xhr.abort();
	} catch(e) {};

	_xhr = $.ajax({
		url: '/ajax-prensa.php?cmd=get-press&locale=' + locale,
		data: {
			country: $('#icountry :selected').val()
		},
		type: 'post',
		dataType: 'json',
		success: function(r) {
			if (r == 'null') {
				insertShops([]);
			} else {
				insertShops(r);
			}
			$('form').removeClass('loading');
		}
	});

}

var _lastRegionValue = '';

function region_change(e) {

	var nvalue = $(this).find(':selected').val();
	if (!nvalue || nvalue == _lastRegionValue) {
		return;
	}

	var cvalue = $('#icountry').val();

	if (!cvalue)
		return;

	_lastRegionValue = nvalue;

	$('#addresses')
		.hide()
		.empty();

	$(this).parents('form').addClass('loading');

	try {
		_xhr.abort();
	} catch(e) {};

	_xhr = $.ajax({
		url: '/ajax.php?cmd=get-shops&locale=' + locale,
		data: {
			country: $('#icountry :selected').val(),
			region: $('#iregion :selected').val()
		},
		type: 'post',
		dataType: 'json',
		success: function(r) {
			if (r == 'null') {
				insertShops([]);
			} else {
				insertShops(r);
			}
			$('form').removeClass('loading');
		}
	});

}


function insertRegions(regions) {
	var $region = $('#iregion');
	if (!$region.length) {
		var h =	'<div class="form-item">'
				    + '<label for="iregion">Zona</label>'
						+ '<select name="region" id="iregion"><option></option></select>'
						+ '</div>';
		$(h).appendTo('#localizanos-form');
		$region = $('#iregion');
		$region.bind('change', region_change);
	}

	$region.empty();

	if (regions.length) {
		$region.append('<option value="">'+ l10n[locale].selectZone +'</option>');

		$.each(regions, function(k, v) {
			$region.append('<option value="' + v.region + '">' + v.region + '</option>');
		});

		$region.removeAttr('disabled')[0].focus();

	}
	else {
		$region.append('<option value="">'+ l10n[locale].noResults +'</option>');
	}


}

function insertShops(shops) {
	var $addresses = $('#addresses');
	if (!$addresses.length) {
		$addresses = $('#localizanos-form').after('<div id="addresses" style="display: none;"></div>').next();
	}

	$addresses.empty();

	// $addresses.append('<h3>' + shops.title + '</h3>');
	var append;
	$.each(shops, function(k, v) {
		append = '<div class="address">'
            + '<strong>' + (v.nombre || '') + '</strong>'
			+ '<br />'
			+ (v.direccion || '')
			+ '<br />'
			+ (v.cp || '')
			+ ' '
			+ (v.localidad || '')
			+ '<br />'
			+ (v.telefono || '')
            + '<br />'
			+ '<a href="mailto:' + (v.correo || '') + '">' + (v.correo || '') + '</a>'
			+ '</div>'
		  + '<hr />';

		$addresses.append(append);
	});

	$addresses.slideDown('fast');
}


$(init);

})(jQuery);