function formatCurrency(num) {
    num = isNaN(num) || num === '' || num === null ? 0.00 : num;
    return parseFloat(num).formatMoney(2, '.', ',');
}

Number.prototype.formatMoney = function(c, d, t){
var n = this, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "", i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
   return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
 };

$j(function(){
	$j('input[name=price_min]').change(function(e){
		$j('input[name=price_max]').attr('min', $j(this).val());
		$j('.price_min_value').html('$' + formatCurrency($j(this).val()));
	});

	$j('input[name=price_max]').change(function(e){
		$j('input[name=price_min]').attr('max', $j(this).val());
		$j('.price_max_value').html('$' + formatCurrency($j(this).val()));
		if($j(this).val() == $j(this).attr('max')) {
			$j(this).attr('max',16000000)
		}
	});

	if($j('input[name=price_max]').val() < 1) {
		$j('input[name=price_max]').val(1000000);
	}

	if($j('input[name=price_min]').val() < 1) {
		$j('input[name=price_min]').val(1000000);
	}

	$j('input[name=price_max]').change();
	$j('input[name=price_min]').change();

	$j('a.next, a.previous').live('click', function(e) {
		e.preventDefault();
		$j('.search-params .offset').val($j(this).attr('rel'));
		$j('.search-params select').first().change();
	});

	var request, processing = false;

	$j('.search-params input, .search-params select').change(function(e) {
		if (!processing) {
			processing = true;

			var form = $j(this).parents().find('form'),
				data = form.serializeArray();

			if(form.attr('action')) {
				request = $j.get(
					form.attr('action'),
					data,
					function (results){
						processing = false;
						//success callback
						$j('.search-results').html(results);
					}
				);
			}
		}
	});

	$j('.search-params select').first().change();

	imageNumber = 0;
	autoScroll = true;


	function nextImage() {
		if(autoScroll) {
			$j('.property-details .images .image').removeClass('active');

			var currentImage = $j('.property-details .images .clickable').eq(imageNumber);

			currentImage.addClass('active');

			$j('.property-details .remark .image').attr('src',currentImage.attr('src'));

			imageNumber++;

			if(imageNumber >= $j('.property-details .images').children().size()) {
				imageNumber = 0;
			}
		}
	}

	nextImage();

	setInterval(nextImage,3000);

	$j('.property-details .images .image').click(function() {
		autoScroll = false;
		imageNumber = $j(this).index();

		// TODO - Refactor to DRY function calls

		$j('.property-details .images .image').removeClass('active');

		var currentImage = $j('.property-details .images .image.clickable').eq(imageNumber);

		currentImage.addClass('active');

		$j('.property-details .remark .image').attr('src',currentImage.attr('src'));
	});
});
