﻿function NavFade() {
	var els = $('.sub_content, .home_content');

	els.addClass('un-fade').fadeTo(200, '0.4');
	window.onunload = function () {
		els.removeClass('un-fade');
	}
	setTimeout(function () { $('.un-fade').css('opacity', '1'); }, 1000);
}

function WireUpPCsDropDown()
{
	var cbo = $('#cboPCs');
	var select = $('#aPCsSelect');
	var cancel = $('#aPCsCancel');
	var clear = $('#aPCsClear');

	SetJavascriptVoid(clear);
	SetJavascriptVoid(cancel);
	SetJavascriptVoid(select);

	clear.click(function () { ClearPCs(); });
	cbo.click(function () { TogglePCs(); });
	cancel.click(function () { TogglePCs(); });
	select.click(function () { TogglePCs(); SelectPCs(); });
}

function TogglePCs()
{
	var div = $('#divPCs');
	var cbo = $('#cboPCs');

	cbo.blur();

	if (cbo.hasClass('expanded'))
	{
		div.slideUp();
		cbo.removeClass('expanded');
	}
	else
	{
		cbo.addClass('expanded');
		ClearPCs();
		var pcs = $get('cboPCs').options[0].value.split(',');
		for (var i = 0; i < pcs.length; i++)
			$('#pc_' + pcs[i]).attr('checked', true);
		div.slideDown();
		SelectPCs();	
	}	
}

function ClearPCs()
{
	var chks = $('#divPCs input:checked');
	chks.each(function ()
	{
		this.checked = false;
	});
}

function SelectPCs()
{
	var v = '';
	var chks = $('#divPCs input:checked');
	chks.each(function ()
	{
		v += ',' + this.value;
	});

	if (v != '')
		v = v.substring(1, v.length);
	SetPCsOption(v);

}

function SetPCsOption(value)
{
	var cbo = $get('cboPCs');

	if (!value)
		value = '';

	var text = value.replace(/,/g, ', ');
	if (text == '')
		text = 'Select postcodes';
	cbo.options[0].text = text;
	cbo.options[0].value = value;
}

function DoPropertyMapSearch()
{
	_DoSearch('search-on-map', '#aSearchMap');
}
function DoPropertyListSearch()
{
	_DoSearch('search', '#aSearchList');
}
function _PreDoSearch(btnID) {
	NavFade();
	$(btnID)
		.addClass('med-btn-clicked');
	$(btnID + ' > span')
		.css('padding-left', '2px')
		.removeClass('list')
		.removeClass('map')
		.text('Searching...');
}
function _DoSearch(type, btnID) {
	_PreDoSearch(btnID);
	var base = ($('#cboType').val() == 'S') ? 'for-sale' : 'to-rent';
	document.location = '/properties-' + base + '/' + type + 
			'?ar=' + $('#cboArea').val() +
			'&pcs=' + $('#cboPCs').val() +
			'&min=' + _GetPriceVal('#txtPriceMin') +
			'&max=' + _GetPriceVal('#txtPriceMax') +
			'&st=' + _GetTextVal('#txtStreet');
}
function DoFaceBookSearch() {
	_PreDoSearch('#aSearchList');
	document.location.search = 
			'?tp=' + $('#cboType').val() +
			'&ar=' + $('#cboArea').val() +
			'&pcs=' + $('#cboPCs').val() +
			'&min=' + _GetPriceVal('#txtPriceMin') +
			'&max=' + _GetPriceVal('#txtPriceMax') +
			'&st=' + _GetTextVal('#txtStreet');
}

function _GetTextVal(txt)
{
	var t = $(txt);
	if (t.hasClass('txt_blank'))
		return '';
	return t.val();
}
function _GetPriceVal(txt)
{
	var v = _GetTextVal(txt);
	if (v == '')
		return v;

	var p = parseInt(v.replace(/,/g, ''));
	return isNaN(p) ? '' : p;
}

function ApplySearchQS()
{
	$('#cboArea').val(_GetQsValNotNull('ar'));
	$('#txtStreet').val(_GetQsValNotNull('st', 'Enter a street name'));
	$('#txtPriceMin').val(_GetQsValNotNull('min', 'Minimum'));
	$('#txtPriceMax').val(_GetQsValNotNull('max', 'Maximum'));
	SetPCsOption(_GetQsValNotNull('pcs'));
}
function _GetQsValNotNull(nm, blank)
{
	var v = GetQueryStringValue(nm);
	if (!v || v == null || v == blank)
		return '';
	return unescape(v);
}

function ApplyPropertyType()
{
	$('#spanPriceType').html(($('#cboType').val() == 'S') ? '(&pound;)' : '(&pound; per week)');
}

function InitPropertySearch(forceApplyQS)
{
	SetJavascriptVoid($('#aSearchList'));
	SetJavascriptVoid($('#aSearchMap'));
	SetNumbericBox('txtPriceMin', false, true);
	SetNumbericBox('txtPriceMax', false, true);

	SetBlankText('txtStreet', 'Enter a street name');
	SetBlankText('txtPriceMin', 'Minimum');
	SetBlankText('txtPriceMax', 'Maximum');

	WireUpPCsDropDown();

	if (forceApplyQS)
		ApplySearchQS();
	else {
		var searchUrls = ['/search', '/ref-', '/properties-for-sale-in-', '/properties-to-rent-in-'];
		for (var i = 0; i < searchUrls.length; i++)
			if (window.location.href.indexOf(searchUrls[i]) != -1) {
				ApplySearchQS();
				break;
			}
	}		

	ApplyPropertyType();

	$('#txtStreet').blur();
	$('#txtPriceMin').blur();
	$('#txtPriceMax').blur();
	$('#cboType').change(function () { ApplyPropertyType(); });
}

function WireUpNavigation()
{
	var links = $('div.top_nav div.link');
	links.each(function ()
	{
		$(this).hover(
			function () { ShowSubNav(this.id.replace('top-nav-', '')); },
			function () { HideSubNavs(); }
		);
	});
}

function HideSubNavs()
{
	$('div.sub_nav').fadeOut(100);
}
function ShowSubNav(i)
{
	$('#sub-nav-' + i).fadeIn(100);
}

function ZoomImage(src, type, delay) {
    var newSrc = src.src || src;
   
    $get('img-zoom').src = null;
    $get('img-zoom').src = newSrc;

    var div = $('#dialog-img-zoom');
    var img = $('#img-zoom');
    var gals = $('div.img-zoom-nav,#img-zoom-close,#img-zoom-msg');
    var navs = $('div.img-zoom-nav');
    var nav_prev = $('#img-zoom-prev');
    var nav_next = $('#img-zoom-next');
    var nav_prev_a = $('#img-zoom-prev a');
    var nav_next_a = $('#img-zoom-next a');
    var nav_close = $('#img-zoom-close');
    var nav_msg = $('#img-zoom-msg');

    var doc = $(document);
    var win = $(window);

    img
        .css('display', 'none')
        .css('width', 'auto')
        .css('height', 'auto');

    var img_w = img.width();
    var img_h = img.height();
    if ((img_w == 0 || img_h == 0) && !delay) {
        setTimeout(function () { ZoomImage(src, type, 1); }, 500);
        return;
    }

    var win_w = win.width();
    var win_h = win.height();
   
    var max_w = win_w - 300;
    var max_h = win_h - 100;

    if (img_w > max_w) {
        img_h = Math.floor(img_h * (max_w / img_w));
        img_w = max_w;
    }
    if (img_h > max_h) {
        img_w = Math.floor(img_w * (max_h / img_h));
        img_h = max_h;
    }
    img.css('width', img_w + 'px');
    img.css('height', img_h + 'px');

    var gal = MyGallery[type];
    var useGallery = (gal);
    if (useGallery) {

        var preLoad = false;
        this.plazaGalleryPreLoad = this.plazaGalleryPreLoad || new Object();
        if (!this.plazaGalleryPreLoad[type]) {
            this.plazaGalleryPreLoad[type] = true;
            preLoad = true;
        }

        useGallery = false;
        var curImg = newSrc.replace(location.protocol + '//' + location.host, '');
        for (var i = 0; i < gal.length; i++) {
            if (preLoad) {
                var preLoadImg = new Image();
                preLoadImg.src = location.protocol + '//' + location.host + gal[i];
            }
            if (gal[i] == curImg) {
                if (i == 0)
                    _ZoomImageHideNav(nav_prev, nav_prev_a);
                else
                    _ZoomImageShowNav(nav_prev, nav_prev_a, gal[i - 1], type);

                if (i == gal.length - 1)
                    _ZoomImageHideNav(nav_next, nav_next_a);
                else
                    _ZoomImageShowNav(nav_next, nav_next_a, gal[i + 1], type);

                nav_msg.html('Image ' + (i + 1) + ' of ' + gal.length);
                useGallery = true;
                break;
            }
        }
    }

    var marginTop = -parseInt(img_h / 2) - 10 + win.scrollTop();
    var marginNav = parseInt(img_w / 2);

    navs
        .css('margin-top', (marginTop + parseInt(img_h / 2) - 60) + 'px');
    nav_prev
        .css('margin-left', (-marginNav - 3 - 95) + 'px');
    nav_next
        .css('margin-left', (marginNav + 5) + 'px');
    nav_msg
        .css('margin-top', (marginTop + img_h + 25) + 'px')
        .css('margin-left', (-marginNav - 10) + 'px');
    nav_close
        .css('margin-top', (marginTop - 20) + 'px')
        .css('margin-left', (marginNav - 15) + 'px');
    img
        .css('margin-left', (-marginNav - 10) + 'px')
        .css('margin-top', marginTop + 'px');
    div
        .css('min-width', Math.max(doc.width(), win_w) + 'px')
        .css('min-height', Math.max(doc.height(), win_h) + 'px')
        .css('opacity', '0.7')
        .css('display', 'block');
    img
        .fadeIn('500');
    if (useGallery)
        gals.fadeIn('500');
    else
        gals.hide();
}

function _ZoomImageShowNav(div, a, img, type) 
{
	div.removeClass('img-zoom-nav-disabled');
	a.attr('href', 'javascript:ZoomImage("' + img + '","' + type + '")');
}

function _ZoomImageHideNav(div, a)
{
	div.addClass('img-zoom-nav-disabled');
	a.attr('href', 'javascript:void(0)');
}

function ZoomImageClose()
{
	$('#img-zoom,#dialog-img-zoom,div.img-zoom-nav,div#img-zoom-msg,div#img-zoom-close')
		.css('display', 'none');
}

function WireUpZoomImages(css, type)
{
	$('img.' + css).each(function ()
	{
		$(this).click(function () { ZoomImage(this, type); });
	});

	var div = $('#dialog-img-zoom');
	var img = $('#img-zoom');

	if (!div.hasClass('wired'))
	{
		div.addClass('wired');
		img.addClass('wired');

		div.click(function () { ZoomImageClose(); });
		//img.click(function () { ZoomImageClose(); });
	}
}

function SetBtnMessage(btn, msg, clickedClass, revert, hasSpan)
{
	var el = $('#' + btn.id + (hasSpan ? ' > span' : ''));
	if (revert)
		el.attr('old-msg', el.text());

	el.text(msg);

	if (clickedClass && clickedClass != '')
		$(btn).addClass(clickedClass);

	if (revert)
		setTimeout("RevertBtnMessage('" + btn.id + "','" + clickedClass + "'," + (hasSpan? 1 : 0) + ")", 2000);
}

function RevertBtnMessage(btnID, clickedClass, hasSpan)
{
	var el = $('#' + btnID + (hasSpan ? ' > span' : ''));
	el.text(el.attr('old-msg'));

	if (clickedClass && clickedClass != '')
		$('#' + btnID).removeClass(clickedClass);
}

function CustomPopup(name, width, height, params)
{
	DialogShow(width, height, 0);
	var iframe = document.getElementById('iframeEdit0');
	iframe.src = "/Site/Custom/Popups/" + name + ".aspx?" + params;
}

function ShowBookmark(linkID) {
	_ApplyBookmark(linkID, false);
}
function ToggleBookmark(linkID) {
	_ApplyBookmark(linkID, true);
}
function _ApplyBookmark(linkID, toggle) {

	var hl = $('#' + linkID);
	var testId = '|' + hl.attr('bm-id') + '|';
	var bms = $.cookie('prop-bookmark') || '';
	var hasID = (bms.indexOf(testId) != -1);
	if (toggle) {
		// Remove / add test id
		bms = (hasID? bms.replace(testId, '|') : bms + testId)
			.replace(/\|\|/g, '|'); // remove any double up separators
		// set cookie
		$.cookie('prop-bookmark', bms, { expires: 365, path: '/' });
		// toggle hasID
		hasID = !hasID;
	}

	// Show & style link		
	hl.text((hasID ? 'bookmarked' : 'add bookmark'));
	hl.addClass(hasID? 'bookmark-on' : 'bookmark-off');
	hl.removeClass(hasID ? 'bookmark-off' : 'bookmark-on');
	hl.attr('title', hasID ? 'Remove bookmark' : 'Bookmark this property');
	hl.blur();
	ShowBookmarksLink(!toggle);
}
function ShowBookmarksLink(init) {
	var bms = ($.cookie('prop-bookmark') || '');
	var n = 0;
	if (bms.length > 0) 
		n = bms.split(':').length - 1;

	var hl = $('#hlBookmarksLink');
	var div = $('#bookmark_details');

	hl.text(n + ' Propert' + ((n == 1) ? 'y' : 'ies'));

	var hasBookmarks = (n > 0);
	var hadBookmarks = (div.css('display') == 'block');
	if (hasBookmarks != hadBookmarks) {
		if (init)
			div.css('display', hasBookmarks ? 'block' : 'none');
		else {
			if (hasBookmarks)
				div.fadeIn();
			else
				div.fadeOut();
		}
	}
}

function HasAttr(j, attrName) {
	var a = j.attr(attrName);
	return (a && typeof a !== undefined);
}
