jQuery.fn.delegate = function(eventType, rules) {
  return this.bind(eventType, function(e) {
    var target = $(e.target);
    for(var selector in rules)
      if(target.is(selector)) 
        return rules[selector].apply(this, arguments);
  })
};

jQuery.fn.realOffset = function() {
	var that = this[0];
	var x = 0;
	var y = 0;
	do {
		x += that.offsetLeft;
		y += that.offsetTop;
	} while (that = that.offsetParent);
	return {left: x, top: y};
}

function shortlist(e) {
	var $target = $(e.target);
    var $link = $target.closest('a');
	var chunks = $link.attr('href').split('/');
	action = chunks[2];
	if (false != action && (action == 'add' || action == 'remove'))
	{
		$.get($link.attr('href'), function(data) {
			if (data.result) {
				$('a[href='+$link.attr('href')+'].shortlist:not(:has(*)), a[href='+$link.attr('href')+'].shortlist *:not(:has(*))').text(data.message.content);
				$('a[href='+$link.attr('href')+'].shortlist').attr('href', data.message.href).toggleClass('remove');
			};
		}, {}, 'json');
	}
}


function lxModalFormSetup(url) {
	$("#simplemodal-container form").ajaxForm({
		target: $("#simplemodal-data"),
		url: url,
		success: function() {
			$.modal.impl.setPosition();
			lxModalFormSetup(url);
		}
	});	
}




$(function() {
    
	$("a[href^=/shortlist/]").live('click', function(e) {
		shortlist(e);
		e.preventDefault();
	});
	
	$("a[href=#]").click(function(e) {
		e.preventDefault();
	});
	
	$("a.modal").live('click', function(e) {
		e.preventDefault();
		var $this = $(this);
		$.get($this.attr("href"), "", function(data) {
			var modal = $.modal(data,{
				onShow: function(dialog) {
					$.modal.impl.setPosition();
				}
			});
			lxModalFormSetup($this.attr("href"));
		});
	});
	
	$("form.modal").ajaxForm({
		success: function(response, status) {
			$.modal(response);
			lxModalFormSetup(this.url);
		}
	});
	
	$('.simplemodal-close').live('click', function(){
		window.location.reload();
		// e.preventDefault();
		// modal.close();
	});
});


$.modal.defaults.appendTo = "#outer-wrapper";
$.modal.defaults.onShow = function(dialog) {
		$.modal.impl.setPosition();
}
// $.modal.defaults.autoResize = true;
// $.modal.defaults.minHeight = 100;
