$(document).ready(function() {
 	selectInstructionType("instruction_type", "minprice", "maxprice");
 	if (typeof ShowMap == "function") ShowMap();
 	if (typeof restore_search == "function") restore_search();
 	
 	// Form validation
	if ($("#form,#footerForm").length) {
    		$("#form,#footerForm").validate();
		}
		
	// Notify bar
	if ($("#form,#footerForm").length) {
			$("#form,#footerForm").submit(function(ev){
				ev.preventDefault();
					$.notifyBar({
						html: "Thank you for contacting us, we will respond shortly",
						delay: 7000
					});
					var $form = $(this); // performance optimisation
					$.post($form.attr("action"), $form.serialize())
					$("#form,#footerForm")[0].reset();
			  });
		}
		
	// Smooth scrolling for anchor links
	$(function() {
		function filterPath(string) {
			return string
			.replace(/^\//,'')
			.replace(/(index|default).[a-zA-Z]{3,4}$/,'')
			.replace(/\/$/,'');
		}
		var locationPath = filterPath(location.pathname);
		var scrollElem = scrollableElement('html', 'body');
	
		// Any links with hash tags in them (can't do ^= because of fully qualified URL potential)
		$('a[href*=#]').each(function() {
	
			// Ensure it's a same-page link
			var thisPath = filterPath(this.pathname) || locationPath;
			if (  locationPath == thisPath
				&& (location.hostname == this.hostname || !this.hostname)
				&& this.hash.replace(/#/,'') ) {
	
					// Ensure target exists
					var $target = $(this.hash), target = this.hash;
					if (target) {
	
						// Find location of target
						var targetOffset = $target.offset().top;
						$(this).click(function(event) {
	
							// Prevent jump-down
							event.preventDefault();
	
							// Animate to target
							$(scrollElem).animate({scrollTop: targetOffset}, 400, function() {
	
								// Set hash in URL after animation successful
								location.hash = target;
	
							});
						});
					}
			}
	
		});
		// Use the first element that is "scrollable"  (cross-browser fix?)
		function scrollableElement(els) {
			for (var i = 0, argLength = arguments.length; i <argLength; i++) {
				var el = arguments[i],
				$scrollElement = $(el);
				if ($scrollElement.scrollTop()> 0) {
					return el;
				} else {
					$scrollElement.scrollTop(1);
					var isScrollable = $scrollElement.scrollTop()> 0;
					$scrollElement.scrollTop(0);
					if (isScrollable) {
						return el;
					}
				}
			}
			return [];
		}
	
	});
	
	// Search and features properties slide effect
	if ($("#featuredSites").length) {
		    $('#featuredSites').cycle({
				fx: 'scrollLeft',
				delay: 10000
			});
		}
		
	// Slideshow fade effect
	if ($("#slideshow").length) {
		    $('#slideshow').cycle({
				fx: 'fade',
				delay: 4000,
				timeout: 8000
			});
		}
	
	// Back to top button
	$(function() {
	
	    var b = $('#backToTop');
	    b.css({opacity:0});
	
	    $(window).scroll(function() {
	        if ($(this).scrollTop() > 100) {
	            b.stop().css({
	                display: 'block'
	            }).animate({
	                opacity: 1
	            }, 150);
	        } else {
	            b.stop().animate({
	                opacity: 0
	            }, 150, function() {
	                $(this).css({
	                    display: 'none'
	                });
	            });
	        }
	    });
	
	    b.click(function() {
	        $('body,html').animate({
	            scrollTop: 0
	        }, 800);
	        return false;
	    });
	
	});
	
	// Portfolio tooltips
	if ($(".websiteImg").length) {
		$(function() {
			$(".websiteImg").tooltip({ offset: [-108, 2], effect: 'slide'});
		});
	}
});
