function confirmSubmit(mess) {
	return confirm(mess) ? true : false;
}
function showDialog(url, params, dontClose) {
	$.post(url, params,
			function(data) {
				if (data.ok) {
					jQuery.facebox(data.dialog);
					if (typeof(data.callback) == "undefined") {
						data.callback = 'defaultCallback';
					}
					var options = {
							dataType: data.datatype, 
							beforeSubmit: function() { if ((typeof dontClose == 'undefined') || !dontClose) showWorking(); }, 
							success: function(d) { 
								eval(data.callback + "(d)"); 
							}
					};
					$('#facebox .ajaxSubmit').ajaxForm(options);
				} else {
					jQuery.facebox(data.message);
				}
			}, 'json'
	);
}
function showWorking() {
	$.facebox('<div class="c"><img src="/images/working.gif"/></div>');
}
function hideDialog() {
	$.facebox.close();
}
function showMessage(msg) {
	$.facebox(msg + '<div class="footer"><button onclick="hideDialog()">OK</button></div>');
}
function defaultCallback(data) {
	if (typeof(data.message) != 'undefined') {
		showMessage(data.message);
	}
	if (typeof(data.ok) == 'undefined' || !data.ok) {
		return;
	}
	if (typeof(data.eval) != 'undefined') {
		eval(data.eval);
	}
}
function asyncFormCallback(data) {
	$("input").removeClass("error-hl");
	$("input").removeAttr('title');
	if (typeof(data.ok) == 'undefined' || !data.ok) {
		for (var i in data.errors) {
			var e = data.errors[i];
			var x = $("input[name=\"" + e.field + "\"]");
			x.addClass("error-hl");
			x.attr("title", e.msg);
		}
	}
	if (typeof(data.eval) != 'undefined' && !!data.eval) {
		eval(data.eval);
	}	
	if (typeof(data.redirect) != 'undefined' && !!data.redirect) {
		window.location = data.redirect;
	}	
}
function deleteContact(id) {
	if (!confirmSubmit("Удалить контакт?")) {
		return;
	}
	$.post('/utils/delete-contact', {id: id}, deleteContactCallback(id), 'json');
	deleteContactCallback(id)({ok: true});
}
function deleteContactCallback(id) {
	return function(data) {
		if (data.ok) {
			$('#contact' + id).css("background-color", "#f59595").fadeOut("slow");
			if (data.count == 0) {
				$('#noContacts').show();
			}		
		}
	}
}
function contactSaved(data) {
	$('#noContacts').hide();
	if (data.newContact) {
		$('#contactsList').append(data.display);
		$('.new').removeClass('new').addClass('grn').css("background-color", "#a5ffa5").fadeIn("slow");
		setTimeout(function() {$('.grn').removeClass('grn').css("background-color", '');}, 5000);		
	} else {
		$('#contactsList').children("#contact" + data.id).replaceWith(data.display);
		$('.edited').removeClass('edited').addClass('grn2').css("background-color", "#a5ffa5").fadeIn("slow");
		setTimeout(function() {$('.grn2').removeClass('grn2').css("background-color", '');}, 5000);		
	}
}