/*
 * Subject to copyright.
 *
 * Web Development - LOOKsystems Limited
 * mailto:info@looksystems.ltd.uk
 * http://www.looksystems.ltd.uk
 *
 */

var site_prefix;
var stage_images;
var stage_delay;
var stage_interval;

var quick_open;
var quick_areas = {
	'7Bays / St Merryn': 'inc Constantine, Harlyn, Porthcothan Bays',
	'Newquay': 'inc adjacent bays & inland',
	'North Cornwall': 'inc Camelford, Tintagel, Bude, Bodmin Moor',
	'Padstow Area': 'inc Trevone, Little Petherick, estuary & beyond',
	'Padstow Town': 'inc town & outskirts',
	'Polzeath': 'inc, Rock, Daymer Bay, Port Isaac',
	'South Coast': 'inc Carlyon Bay, Fowey, Looe, Polperro',
	'St Austell Bay': 'inc, Carlyon Bay, St Austell, Eden area',
	// 'St Mawgan Vale': 'inc Mawgan Porth, St Mawgan, St Columb',
	'Wadebridge': 'inc St Kew, Chapel Amble, St Breock Downs',
	'Watergate Bay / Mawgan Porth': 'inc St Mawgan, St Columb, Retallack'
};

jQuery.fn.slideshow = function(slides, delay, interval) {

	if (!delay) delay = 5000;
	if (!interval) interval = 7500;
	return this.each(function() {

		var index = 0;
		var images = slides;
		var callback = false;
		var $target = $(this);
		var $source = $target.clone().insertAfter($target);

		function slideshow_preload(imgsrc, wait) {
			jQuery("<img>")
				.bind('load', function () {
					if (!callback) callback = setTimeout(slideshow_crossfade, wait);
				})
				.attr("src", imgsrc);
		}

		function slideshow_crossfade() {

			// crossfade images...

			++index;
			if (index >= images.length) index = 0;

			var imgcss = 'url('+images[index]+')';
			$target.css('background-image', imgcss);
			$source.animate({opacity: 0}, 1000, function() {
				$source
					.css('background-image', imgcss)
					.css('opacity', 1);
			});
			var next = index + 1;
			if (next >= images.length) next = 0;
			callback = false;

			// preload next image

			slideshow_preload(images[next], interval);

		}

		if (images.length > 1) slideshow_preload(images[1], delay);
		else callback = setTimeout(slideshow_crossfade, delay);

	});

}

function label2value(){

	var inactive = "inactive";
	var active = "active";
	var focused = "focused";

	$("form.waiform label").each(function(){
		obj = document.getElementById($(this).attr("for"));
		if(($(obj).attr("type") == "text") || (obj.tagName.toLowerCase() == "textarea") || (obj.tagName.toLowerCase() == "select")){
			var text = $(this).text();
			$(this).css("display","none");
			if ($(obj).val() != "" && $(obj).val() != text) $(obj).addClass(active);
			else {
				$(obj).val(text);
				$(obj).addClass(inactive);
			}
			$(obj).focus(function(){
				$(this).addClass(focused);
				$(this).removeClass(inactive);
				$(this).removeClass(active);
				if($(this).val() == text) $(this).val("");
			});
			$(obj).blur(function(){
				$(this).removeClass(focused);
				if($(this).val() == "") {
					$(this).val(text);
					$(this).addClass(inactive);
				} else {
					$(this).addClass(active);
				};
			});
		};
	});

	$("form.waiform").submit(function(e) {
		$(this).find('label').each(function() {
			if ($(this).css('display') != 'none') return;
			var text = $(this).text();
			var obj = document.getElementById($(this).attr("for"));
			if ($(obj).val() == text) $(obj).val('');
		});
	});

};

$(document).ready(function(){

	// hide form labels
	label2value();

	// initialise legacy script
	if (typeof(init) == 'function') {
		init();
		// tariff actions
		$('.tariff_actions').change(function(e) {
			  var $this = $(this);
			  var $parent = $this.parent().parent().find('.a').val($this.val());
		});
	} else {
		var submitonce = false;
		$(this).find("input[type='submit']").attr("disabled", false);
		$('form').submit(function() {
			if (submitonce) return false;
			$("input[type='submit']").attr("disabled", true);
			submitonce = true;
			return true;
		});
	}

	// initialise lightbox
	if (typeof($.fn.prettyPhoto) == 'function') {

		$("a[rel^='lightbox']").prettyPhoto({theme: 'light_square'});

		$(".lightwindow").prettyPhoto({
			width: 760,
			height: 600,
			theme: 'light_square',
			iframe: true
		});

		$(".lightbox-start").click(function() {
			$("a[rel^='lightbox']:first").click();
			return false;
		});
	}

	// set-up slideshows
	var delay = (typeof(stage_delay) != 'undefined') ? stage_delay : 5000;
	var interval = (typeof(stage_interval) != 'undefined') ? stage_interval : 7000;
	var step = interval;

	if ($('#stage span').length) {
		if (typeof(stage_images) != 'undefined' && stage_images.length > 1) {
			$('#stage span').slideshow(stage_images, delay, interval);
			delay += step;
		}
	}

	// listings click
	$('.listing li')
		.click(
			function() {
				var href = $(this).find('a').attr('href');
				if (href) document.location = href;
			}
		)
		.css({cursor:'pointer'});


	// property slideshow
	$('.propertypreview,.gallery').each(function() {
		
		var scroll = 199;
		var $this = $(this);
		var $propertylist = $this.find('.viewport ul.images');
		var end = 2 * scroll - parseInt($propertylist.css('width'));
		$this.find('.prevpic').click(function(e) {
			e.preventDefault();
			var offset = parseInt($propertylist.css('left'));
			if (!offset) offset = 0;
			offset += scroll;
			if (offset > scroll) offset = scroll;
			$propertylist.animate({left: offset+'px'}, 'fast');

		});
		$this.find('.nextpic').click(function(e) {
			e.preventDefault();
			var offset = parseInt($propertylist.css('left'));
			if (!offset) offset = 0;
			offset -= scroll;
			if (offset < end) offset = end;
			$propertylist.animate({left: offset+'px'}, 'fast');
		});

	});

	// guest list
	$('.canhide').addClass('hidden').hide();
	$('.addguest').show();
	$('.addguest a').click(function(e) {
		e.preventDefault();
		$('.hidden').eq(0).removeClass('hidden').show();
		if (!$('.hidden').length) $('.addguest').hide();
	});

	// first guest
	var guestchanged = false;
	$('#enquiryform #title,#enquiryform #forename,#enquiryform #surname')
		.change(function() {
			if (guestchanged) return;
			$('#enquiryform #guest1_'+this.id).val($(this).val());
		});
	$('#enquiryform #guest1_title,#enquiryform #guest1_forename,#enquiryform #guest1_surname')
		.change(function() {
			guestchanged = true;
		});

	// date pickers
	$(".quick-pick").datepicker({
		minDate: new Date,
		dateFormat: 'dd/mm/yy',
		duration: '',
		firstDay: 6,
		showOn: '',
		buttonText: '',
		numberOfMonths: 2,
		buttonImageOnly: true
	});

	$(".date-pick").datepicker({
		minDate: new Date,
		dateFormat: 'dd/mm/yy',
		duration: '',
		firstDay: 6,
		showOn: 'button',
		buttonImage: site_prefix+'img/calendar.gif',
		numberOfMonths: 2,
		buttonImageOnly: true
	});

	// date picker tiggers
	$('#hacal_arrival').click(function() {
		$('#quick_arrival').datepicker('show');
	});
	$('#hacal_departure').click(function() {
		$('#quick_departure').datepicker('show');
	});


	// print page
	$(".print-start").click(function() {
		if (typeof trackProperty == 'function') trackProperty('print');
		window.print();
		return false;
	});

	// quick search options
	$('#more-options').click(function(e) {
		e.preventDefault();
		$(this).parent().toggleClass('minimum');
		$(this).toggleClass('clicked');
		if ($(this).hasClass('clicked')) {
			$('.upper_search .search').hide();
			$('input[name=searchopts]').val(1);
			$(this).text('Fewer options');
		} else {
			$('.upper_search .search').show();
			$('input[name=searchopts]').val(0);
			$(this).text('More options');
		}
	});

	// set default value for expand search
	$('label[for="quick_expand"]').attr('defValue', '3');

	// highlight quick search

	function doHighlight() {
		var $this = $(this);
		var $label = $("label[for='"+this.id+"']");
		var val = $this.val();
		if (
			!val
			|| val == $label.html()
			|| val == $label.attr('defValue')
		) {
			$this.removeClass('select');
		} else {
			$this.addClass('select');
		}
	};
	$('#quickSearch input[type="text"]')
		.change(doHighlight)
		.keypress(doHighlight)
		.each(doHighlight);

	function doChecked() {
		var $this = $(this);
		if (!$this.attr('checked')) $this.parent().removeClass('select');
		else $this.parent().addClass('select');
	}
	$('#quickSearch input[type="checkbox"]')
		.change(doChecked)
		.each(doChecked);

	// quick search select
	if (jQuery.browser.msie && jQuery.browser.version < 7) {

		$('#quickSearch select')
			.change(doHighlight)
			.keypress(doHighlight)
			.each(doHighlight);

	} else {

		$('#quickSearch select, #bookonline select').each(function() {

			var $this = $(this);
			var value = $this.val();
			if (!value) value = '';

			var id = this.id;
			var isArea = (id == 'quick_area');
			var list = '';
			var selected = '';
			var defValue = $("label[for='"+this.id+"']").attr('defValue');
			$this.find('option').each(function() {

				var $option = $(this);
				var val = $option.val();
				if (!val) val = '';

				if (isArea && typeof quick_areas[val] != 'undefined') append = '<i>'+quick_areas[val]+'</i>';
				else append = '';

				list += '<li';
				if (value == val) {
					selected = $option.html();
					if (val) list += ' class="s"';
				}
				if (!val) list += ' class="f"';
				list += '><a href="#" rel="'+$option.val()+'" defValue="'+defValue+'"><span>'+$option.html()+'</span><br/>'+append+'</a></li>';
			});


			var cls = (value && value != defValue) ? ' class="select"' : '';
			var html = 
				  '<div class="quick_dropdown '+id+'">'+
				  '<div><p'+cls+'>'+selected+'</p></div>'+
				  '<ul>'+list+'</ul>'+
				  '<input type="hidden" id="'+id+'" name="'+id+'" value="'+value+'"/>'
				  '</div>';

			$(this).after(html);
			$(this).remove();

		});
		$('.quick_dropdown div').click(function(e) {
			var open = $(this).parent().find('ul:visible').length;
			$('.quick_dropdown ul').hide();
			if (open) quick_open = false;
			else {
				quick_open = $(this).parent().find('ul');
				quick_open.show();
			}
			e.stopPropagation();
		});
		$('.quick_dropdown a').click(function(e) {
			e.preventDefault();
			var $this = $(this);
			var $dropdown = $this.parent().parent().parent();
			$dropdown.find('ul').hide();
			if ($this.parent().hasClass('select')) return;
			var defValue = $this.attr('defValue');
			var value = $this.attr('rel');
			var text = $this.find('span').text();
			$dropdown.find('li.s').removeClass('s');
			if (value) $this.parent().addClass('s');
			$dropdown.find('p').text(text);
			if (value && value != defValue) $dropdown.find('p').addClass('select');
			else $dropdown.find('p').removeClass('select');
			$dropdown.find('input').val(value);
			$('#quickSearch').change();
		});
		$('body').click(function() {
			if (!quick_open) return;
			quick_open.hide();
			quick_open = false;
		});

	}

	// ajax search
	var propertyCount = $('#quick_count strong').html();
	$('#quickSearch').change(function() {
		$.post(
			site_prefix+'ajax_search',
			$('#quickSearch').serializeArray(),
			function(data) {
				$('#quick_count strong').html(data);
				if (data < propertyCount) $('#quick_count span').html('properties found');
				else  $('#quick_count span').html('Properties In Total');
			}
		);
	});
	if ($('#quickSearch .select').length) $('#quickSearch').change();

});
