$(document).ready(function() {

	$(form_elements).uniform(uni_options);

	$('.gotop').click(function(event){
		event.preventDefault();
		$('html, body').animate({scrollTop:0}, 'slow');
	});

	$('input[type=text], textarea').hint('ina');

	$("#top10 ul").jcarousel({
		scroll: 1,
		auto: 2,
		wrap: 'circular'
	});

	$('.register').fancybox(fancy_config);
	$('.forget').fancybox(fancy_config);
	$('.edit_profile').fancybox(fancy_config);
	$('.add_xml').fancybox(fancy_config);
	$('.abuse').fancybox(fancy_config);

	$('.panel_trigger').fancybox({
		modal: true,
		padding: 0,
		scrolling: 'no',
		centerOnScroll: true,
		titleShow: false,
		onComplete: function() {
			$('.popupblock').fadeTo('fast', 1);
		}
	});

    trigger();
	
	//$(".register").trigger('click');

	$("#register_form").live('submit', fancy_ajax);
	$("#forgot_form").live('submit', fancy_ajax);
	$("#xml_form").live('submit', fancy_ajax);
	$("#edit_profile_form").live('submit', fancy_ajax);
	$("#abuse_form").live('submit', fancy_ajax);


	$("#edit_profile_forma").live('submit', function(event) {
		event.preventDefault();
		$.fancybox.showActivity();
		$(this).ajaxSubmit({
			success: function(data) {
				if (data == 'reload')
				{
					window.location.reload();
				}
				else
				{
					$.fancybox(data, {modal: true, titleShow: false, centerOnScroll: true});
					$('.popupblock').find(form_elements).uniform(uni_options);
					mark_select_error();
					$('.popupblock').fadeTo('fast', 1);
					$.fancybox.resize();
					$.fancybox.hideActivity();
					$('.register-inner').fancybox(fancy_config);
				}
			}
		});
		return false;
	});

	$('.fancy_close').live('click', function(){
		$.fancybox.close();
		return false;
	});

	$('.dotted').click(function(){
		switch ($(this).text())
		{
			case 'Milano':
				select_location('lombardia', {name: 'Milano', uri: 'mi'}, {name: 'Milano', uri: 'milano'});
			break;
			case 'Roma':
				select_location('lazio', {name: 'Roma', uri: 'rm'}, {name: 'Roma', uri: 'roma'});
			break;
			case 'Napoli':
				select_location('campania', {name: 'Napoli', uri: 'na'}, {name: 'Napoli', uri: 'napoli'});
			break;
		}
	});

	$('#ad_category_id').change(function(){
		window.location = $(this).val() + '-aggiungi';
	});

	$('#category_switcher').click(function(){
		var category = $('select[name="category"]');
		window.location = category.val() + '-' + category.attr('class');
	});

	$('.region_id').live('change', function(){
		var region_id = $(this).val();
		var select = $(this).hasClass('uri') ? 'Tutte' : 'Seleziona';
		
		var form = $(this).closest('form');  // $(this).hasClass('register') ? $('#register_form') : $('#form');
		set_selects(select, 3, form);

		if (region_id.length)
		{
			$.getJSON(
				'/ajax/' + ($(this).hasClass('uri') ? 'uri/' : '') + 'provinces/' + region_id,
				{},
				function (data) {
					var html = '';
					$.each(data, function(id, name){
						html += '<option value="' + id + '">' + name + '</option>';
					});

					var province = $('.province_id', form);
					if (html)
					{
						province.html(html);
					}
					else
					{
						province.html('<option value="">'+select+'</option>');
					}
					$.uniform.update(province);

					var city = $('.city_id', form);
					city.html('<option value="">'+select+'</option>');
					$.uniform.update(city);

					var zone = $('.zone_id', form);
					if (select == 'Tutte')
					{
						select = 'Tutti';
					}
					zone.html('<option value="">'+select+'</option>');
					$.uniform.update(zone);
				}
			);
		}
		else
		{
			set_selects(select, 3, form);
		}
	});

	$('.province_id').live('change', function(){
		var province_id = $(this).val();
		var requestUrl;
		var select;
		var form = $(this).closest('form');  //$(this).hasClass('register') ? $('#register_form') : $('#form');

		if ($(this).hasClass('uri'))
		{
			select = 'Tutte';
			requestUrl = '/ajax/uri/cities/' + $('.region_id', form).val() + '/' + province_id;
		}
		else
		{
			select = 'Seleziona';
			requestUrl = '/ajax/cities/' + province_id;
		}

		set_selects(select, 2, form);

		if (province_id.length)
		{
			$.getJSON(
				requestUrl,
				{},
				function (data) {
					var html = '';
					$.each(data, function(id, name){
						html += '<option value="' + id + '">' + name + '</option>';
					});

					var city = $('.city_id', form);
					if (html)
					{
						city.html(html);
					}
					else
					{
						city.html('<option value="">'+select+'</option>');
					}
					$.uniform.update(city);

					var zone = $('.zone_id', form);
					if (select == 'Tutte')
					{
						select = 'Tutti';
					}
					zone.html('<option value="">'+select+'</option>');
					$.uniform.update(zone);
				}
			);
		}
		else
		{
			set_selects(select, 2, form)
		}
	});

	$('.city_id').live('change', function(){
		var city_id = $(this).val();
		var requestUrl;
		var select;
		var hide;
		var form = $(this).closest('form'); //$(this).hasClass('register') ? $('#register_form') : $('#form');

		if ($(this).hasClass('uri'))
		{
			hide = false;
			select = 'Tutte';
			requestUrl = '/ajax/uri/zones/' + $('.region_id', form).val() + '/' + $('.province_id', form).val() + '/' + city_id;
		}
		else
		{
			hide = true;
			select = 'Seleziona';
			requestUrl = '/ajax/zones/' + city_id;
		}

		set_selects(select, 1, form);

		if (city_id.length)
		{
			$.getJSON(
				requestUrl,
				{},
				function (data) {
					var html = '';
					var zone = $('.zone_id', form);

					if (data.length === 0)
					{
						if (hide)
						{
							zone.parent().parent().prev().hide();
							zone.parent().parent().hide();
						}
						else
						{
							zone.attr('disabled', 'disabled');
						}
					}
					else
					{
						if (hide)
						{
							zone.parent().parent().prev().show();
							zone.parent().parent().show();
						}
						else
						{
							zone.removeAttr('disabled');
						}
					}
					$.each(data, function(id, name){
						html += '<option value="' + id + '">' + name + '</option>';
					});
					if (html)
					{
						zone.html(html);
					}
					else
					{
						if (select == 'Tutte')
						{
							select = 'Tutti';
						}
						zone.html('<option value="">'+select+'</option>');
					}
					$.uniform.update(zone);
				}
			);
		}
		else
		{
			set_selects(select, 1, form)
		}
	});

	$('.zone_id').change(function(){
		$(this).prev().textOverflow('...', true);
	});

	$('.ellipsis').textOverflow('...');

	$('#order_list').change(function(){
		$('input[name="order"]').val($(this).val());
		$('input[name="order"]').closest('form').submit();
	});

	$('.confirm').live('click', function(event){
		event.preventDefault();
		var _this = $(this);
		fancyConfirm('Conferma', 'Sei sicuro di voler cancellare il tuo account?', function(ret) {
			if (ret)
			{
				window.location = _this.attr('href');
			}
		});
	});

	$('#panel_search').click(function(event){
		var form = $(this).closest('form');
		if (!$('.region_id', form).val())
		{
			event.preventDefault();
			event.stopPropagation();

			fancyConfirm('Errore', 'Per effettuare la ricerca è necessario selezionare almeno la regione', null, true);
		}
	});

	mark_select_error();

	$('.valid_form select').live('change', function(){
		if ($(this).hasClass('error') && $(this).val())
		{
			$(this).removeClass('error');
			$(this).prev().removeClass('error');
		}
	});

	$('.valid_form input, .valid_form textarea').live('change', function(){
		if ($(this).hasClass('error'))
			$(this).removeClass('error');
	});


	$('.fav_trigger').click(function(event){
		event.preventDefault();
		var link = $(this);
		if ($('img', link).attr('src') == '/images/fav_gray.png')
		{
			fancyConfirm('Success', 'Annuncio aggiunto alla lista dei preferiti', null, true);
		}
		else
		{
			fancyConfirm('Success', 'Annuncio eliminato dalla lista dei preferiti', null, true);
		}
		$.ajax({
			type: 'post',
			cache: false,
			url: link.attr('href'),
			success: function(data) {
				if (data && data.success)
				{
					var d = new Date();
					if (data.fav)
					{
						link.attr('title', 'Aggiungi ai preferiti');
						$('img', link).attr('src', '/images/fav_gray.png');
					}
					else
					{
						link.attr('title', 'Togliere dal preferiti');
						$('img', link).attr('src', '/images/fav.png');
					}
				}
			}
		});
	});

	$('#generate_num').click(function(event){
		event.preventDefault();
		var num = Math.floor(Math.random() * 1000000000);
		while (num == 1000000000 || num == 0)
		{
			num = Math.floor(Math.random() * 1000000000);
		}
		num = num.toString();
		while (num.length < 9)
		{
			num += Math.floor(Math.random() * 10) - 1;
		}
		$('input[name="reference"]').val(num.toString());
		$('input[name="reference"]').removeClass('error')
	});

	var default_map = $('.map img').attr('src');

	$('#italy_map area').bind('mouseover', function(){
		$('.map img').attr('src', ($(this).attr('image')));
	});

	$('#italy_map area').bind('mouseout', function(){
		$('.map img').attr('src', (default_map));
	});

	$('#italy_map area').click(function(event){
		event.preventDefault();
		var region = $('.region_id option:contains("'+$(this).attr('alt')+'")', $('#form'));
		if (region.length)
		{
			region.attr('selected', 'selected');
			region.change();
		}
	});

	$('#print').click(function(event){
		event.preventDefault();
		window.print();
	});

    $('.sessrem').live('click', function(event){
		$.post('/rimuovi-sessione');
	});


});

var form_elements = 'select, input:text, input:password, input:checkbox, input:radio, input:file, textarea';

var uni_options = {
	fileBtnText: 'Seleziona',
	fileDefaultText: ''
};

var fancy_config = {
	modal: true,
	padding: 0,
	scrolling: 'no',
	titleShow: false,
	centerOnScroll: true,
	ajax: {cache : false},
	onComplete: function() {
		$('.register-inner').fancybox(fancy_config);
		$('.popupblock').find(form_elements).uniform(uni_options);
		mark_select_error();
		$('.popupblock').fadeTo('fast', 1);
	}
};

var fancy_ajax = function(event) {
	event.preventDefault();
	$.fancybox.showActivity();
	$(this).ajaxSubmit({
		success: function(data) {
			$.fancybox(data, {modal: true, titleShow: false, centerOnScroll: true, padding: 0});
			$('.popupblock').find(form_elements).uniform(uni_options);
			mark_select_error();
			$('.popupblock').fadeTo('fast', 1);
			$.fancybox.resize();
			$.fancybox.hideActivity();
			$('.register-inner').fancybox(fancy_config);
		}
	});
	return false;
};

function mark_select_error()
	{
		$('.valid_form .selector span').next().each(function(i){
			if ($(this).hasClass('error'))
				$(this).prev().addClass('error');
		})
	}

function select_location(region, province, city)
{
	var form = $('#form');

	var _region = $('.region_id', form);
	_region.val(region);
	$.uniform.update(_region);

	var _province = $('.province_id', form);
	_province.html('<option value=""'+province.uri+'">'+province.name+'</option>');
	$.uniform.update(_province);

	var _city = $('.city_id', form);
	_city.html('<option value=""'+city.uri+'">'+city.name+'</option>');
	$.uniform.update(_city);

	var options = '';

	$.getJSON(
		'/ajax/uri/location/'+region+'/'+province.uri+'/'+city.uri,
		{},
		function (data) {
			$.each(data.provinces, function(id, name){
				options += '<option value="' + id + '">' + name + '</option>';
			});
			if (options)
			{
				_province.html(options);
				_province.val(province.uri);
				$.uniform.update(_province);
			}
			options = '';
			$.each(data.cities, function(id, name){
				options += '<option value="' + id + '">' + name + '</option>';
			});
			if (options)
			{
				_city.html(options);
				_city.val(city.uri);
				$.uniform.update(_city);
			}
			options = '';
			if (data.zones.length !== 0)
			{
				$.each(data.zones, function(id, name){
					options += '<option value="' + id + '">' + name + '</option>';
				});
				if (options)
				{
					var _zone = $('.zone_id', form);

					_zone.html(options);
					_zone.removeAttr('disabled');
					$.uniform.update(_zone);
				}
			}
		}
	);
}

function fancyConfirm(title, msg, callback, only_ok)
{
	var ret;
	$.fancybox({
		showCloseButton: false,
		padding: 0,
		centerOnScroll: true,
		titleShow: false,
		content: '<div class="popupblock" style="opacity:1;"><div class="head"><span class="arr">'+title+'</span><a class="fancy_close darr" href="#">Chiudi</a></div><div class="sform"><div class="f12" style="width:400px;padding-top:10px;">'+msg+'</div>'+ (only_ok == undefined ? '<div class="submit"><span id="fancyConfirm_ok" class="button sbut"><span class="br"></span><span class="bl">Si</span><input type="button" value=""></span>&nbsp;<span id="fancyConfirm_cancel" class="button sbut"><span class="br"></span><span class="bl">No</span><input type="button" value=""></span></div>' : '')+'</div><div class="clear"></div></div>',
		onComplete : function() {
			$("#fancyConfirm_cancel").click(function() {
				ret = false;
				$.fancybox.close();
			});
			$("#fancyConfirm_ok").click(function() {
				ret = true;
				$.fancybox.close();
			});
		},
		onClosed : function() {
			if (callback)
				callback.call(this,ret);
		}
	});
}

function set_selects(select, val, form)
{
	var zone = $('.zone_id', form);

	zone.html('<option value="">'+(select == 'Tutte' ? 'Tutti' : select)+'</option>');

	if (zone.hasClass('hide'))
	{
		zone.parent().parent().prev().hide();
		zone.parent().parent().hide();
	}
	else
	{
		zone.attr('disabled', 'disabled');
		$.uniform.update(zone);
	}

	if (val > 1)
	{
		var city = $('.city_id', form);
		city.html('<option value="">'+select+'</option>');
		$.uniform.update(city);
	}
	if (val > 2)
	{
		var province = $('.province_id', form);
		province.html('<option value="">'+select+'</option>');
		$.uniform.update(province);
	}
}

function regForm()
{
	$(".register").trigger('click');
}

function trigger()
{
    $(".trigger").fancybox(fancy_config).trigger('click');
}
