// Show/hide on property page
$(document).ready(function(){
	var property = {};
	property.container = $("ul#collapsable");
	property.items = $("ul#collapsable li");
	property.hideable = "ul, div, address, img, p";

	if(property.container){
		property.items.find(property.hideable).hide();
		property.items.find("h1,h2,h3,h4,h5").toggle(
			function(){
				$(this).addClass("active").parent().find(property.hideable).show("blind");
			},
			function(){
				$(this).removeClass("active").parent().find(property.hideable).hide("blind");
			}
		);
		$("#show_all").click(function(){
			property.items.find(property.hideable).show("blind");
			return false;
		});
		$("#hide_all").click(function(){
			property.items.find(property.hideable).hide("blind");
			return false;
		});
	}
});

var image = { large: {}, small: {}, cache: [] };

function get_large_image_string(image){
	image.large.attr = [];
	image.large.attr = image.large.src.split("&");
	image.large.attr.shift();
	image.large.attr.shift();
	image.large.str = image.large.attr.join("&");
}

// Image preloading
$(document).ready(function(){
	image.large.src = $("div#large_image img").attr("src");
	if(image.large.src){
		get_large_image_string(image);
		$("ul.pictures li").each(function(){
			image.small.src = $(this).find("img").attr("src");
			image.small.attr = [];
			image.small.attr = image.small.src.split("&", 2);
			image.small.src = image.small.attr.join("&");
			var cacheImage = document.createElement('img');
      cacheImage.src = image.small.src+"&"+image.large.str;
			image.cache.push(image.small.src+"&"+image.large.str);
		});
	}
});

// This block provides the rollover image gallery functionality.
// It's slightly more complex than normal due to the query string Dezrez need.
$(document).ready(function(){
	image.large.src = $("div#large_image img").attr("src");
	if(image.large.src){
		get_large_image_string(image);
	}

	$("ul.pictures li").mouseenter(function(){
		image.small.src = $(this).find("img").attr("src");
		image.small.attr = [];
		image.small.attr = image.small.src.split("&", 2);
		image.small.src = image.small.attr.join("&");
		$(this).parent().parent().parent().find("div#large_image img").attr("src", image.small.src+"&"+image.large.str);
	}).mouseleave(function(){
		$(this).parent().parent().parent().find("div#large_image img").attr("src", image.large.src);
	});
});

$(document).ready(function() {
	var values = [];
	var trueValues = [];
	setValues($("[name=RentalPeriod]").val());

	var slider = $(".slider-range").slider({
		orientation: 'horizontal',
		range: true,
		min: values[0],
		max: values[values.length-1],
		values: [(placement[0] == 0 ? values[0] : values[trueValues.indexOf(placement[0])]), (placement[1] == 1 ? values[values.length-1] : values[trueValues.indexOf(placement[1])])],
		slide: function(event, ui) {
			var includeLeft = event.keyCode != $.ui.keyCode.RIGHT;
			var includeRight = event.keyCode != $.ui.keyCode.LEFT;
			var value = findNearest(includeLeft, includeRight, ui.value);
			if (ui.value == ui.values[0]) {
				slider.slider('values', 0, value);
				$(".MinPrice").val(getRealValue(slider.slider('values', 0))).addClass('changing');
			}
			else {
				slider.slider('values', 1, value);
				$(".MaxPrice").val(getRealValue(slider.slider('values', 1))).addClass('changing');
			}
			return false;
		},
		change: function(event, ui){
			$(".MinPrice").removeClass('changing');
			$(".MaxPrice").removeClass('changing');
		}
	});
	
	function findNearest(includeLeft, includeRight, value) {
		var nearest = null;
		var diff = null;
		for (var i = 0; i < values.length; i++) {
			if ((includeLeft && values[i] <= value) || (includeRight && values[i] >= value)) {
				var newDiff = Math.abs(value - values[i]);
				if (diff == null || newDiff < diff) {
					nearest = values[i];
					diff = newDiff;
				}
			}
		}
		return nearest;
	}
	function generateNumbers(from, to, increment){
		var numbers = [];
		for(var i = from; i <= to; i+= increment ){
			numbers.push( i );
		}
		return numbers;
	}
	function round_number(num, dec) {
		return Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
	}
	function getRealValue(sliderValue) {
    for (var i = 0; i < values.length; i++) {
      if (values[i] >= sliderValue) {
          return trueValues[i];
      }
    }
    return 0;
  }
	function setValues(type){
		if(type == 0 || type == 10){
			trueValues = [];
			trueValues = trueValues.concat(generateNumbers(0, 1000000, 25000));
			trueValues = trueValues.concat(generateNumbers(1000000, 3000000, 1000000));
		}
		else if (type == 11) {
			trueValues = [];
			trueValues = trueValues.concat(generateNumbers(200, 1000, 25));
			trueValues = trueValues.concat(generateNumbers(1000, 50000, 100));
		}
		else {
			trueValues = [];
			trueValues = trueValues.concat(generateNumbers(300, 1000, 25));
			trueValues = trueValues.concat(generateNumbers(1000, 3000, 100));
		}
		values = generateNumbers(0, 10000, 10000/(trueValues.length-1));
	}
	function reset(){
		slider.slider('option', {'min': values[0], 'max': values[values.length-1]});
		$(".MinPrice").val(trueValues[0]);
		slider.slider('values', 0, values[0]);
		$(".MaxPrice").val(trueValues[trueValues.length-1]);
		slider.slider('values', 1, values[values.length-1]);
	}
	$(".MinPrice").val(placement[0] == 0 ? trueValues[0] : placement[0]);
	$(".MaxPrice").val(placement[1] == 1 ? trueValues[trueValues.length-1] : placement[1]);
	$(".MinPrice").keyup(function(){
		slider.slider('values', 0, $(this).val());
	});
	$(".MaxPrice").keyup(function(){
		slider.slider('values', 1,$(this).val());
	});
	$("[name=RentalPeriod]").change(function(){
		var type = $(this).val();
		setValues(type);
		reset();
	});
});

function googlemap(streetview){
	var lat = $("#lat").text();
	var lng = $("#lng").text();
	var geocoder = new google.maps.Geocoder();
	var latlng = new google.maps.LatLng(lat, lng);
	var myOptions = {
		zoom: 13,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		streetViewControl: true
	}
	map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
	var marker = new google.maps.Marker({
		map: map,
		position: latlng
	});
	if(streetview) {
		var panoramaOptions = {
			position: latlng,
			pov: {
				heading: 34,
				pitch: 10,
				zoom: 1
			}
		};
		panorama = new google.maps.StreetViewPanorama(document.getElementById("pano"), panoramaOptions);
		map.setStreetView(panorama);
	}
}

$(document).ready(function(){
	$("li.colourbox a").colorbox({
		inline: true,
		href: $(this).attr('href'),
		innerWidth: "440px",
		innerHeight: "440px",
		onComplete:function(){
			var target = $(this).attr('href');
			$(target).show();
			if(target === "#location") googlemap();
			else if(target === "#street_view") googlemap(true);
		},
		onCleanup:function(){ $($(this).attr('href')).hide() }
	});
});
$(document).ready(function(){
	$("li.colourbox-small a").colorbox({
		inline: true,
		href: $(this).attr('href'),
		innerWidth: "450px",
		innerHeight: "450px",
		onComplete:function(){
			var target = $(this).attr('href');
			$(target).show();
			if(target === "#location") googlemap();
			else if(target === "#street_view") googlemap(true);
		},
		onCleanup:function(){ $($(this).attr('href')).hide() }
	});
});

$(document).ready(function() {

	$('#properties li').hover(function() {
    $(this).stop().animate({backgroundColor:'#3A2313', color: '#ffffff'}, 500);
  }, function() {
    $(this).stop().animate({backgroundColor:'#FFFBD3', color: '#3A2313'}, 500);
	});
	
		//$('#properties li').hover(function() {
    //$(this).stop().animate({backgroundColor:'#FFFBD3', color: '#3A2313'}, 500);
  //}, function() {
   // $(this).stop().animate({backgroundColor:'#3A2313', color: '#ffffff'}, 500);
	//});
	
	
	$('#property-promo a').hover(function() {
  	$(this).stop().animate({backgroundColor:'#3A2216'}, 500);
  }, function() {
  	$(this).stop().animate({backgroundColor:'#FBE515'}, 500);
  });
		  
	$("#properties li").click(function(){
		window.location = $(this).find("a").attr("href");
	});
});

