﻿/// <reference path="jquery-1.3.2-vsdoc2.js"/>

Cufon.replace('#header h1, #header h2', { fontFamily: 'Arial', textShadow: '#333 1px 1px' });
Cufon.replace('#navPrimary li a, #navPrimary label', { fontFamily: 'Arial', textShadow: '#333 1px 1px', separate: 'none' });
Cufon.replace('.panel:not(.save-changes) h2', { fontFamily: 'Arial', textShadow: '#fff 1px 1px' });
Cufon.replace('.save-changes h2', { fontFamily: 'Arial', textShadow: '#333 1px 1px' });

// for one northeast
Cufon.replace('.one #header h1, .one #header h2', { fontFamily: 'Arial' });
Cufon.replace('.one .panel:not(.save-changes) h2', { fontFamily: 'Arial', textShadow: '#111 -1px -1px' });    
    
document.createElement("abbr");

$(document).ready(function()
{
    $(document).externalLinks();

    $('.labeltovalue').labelToValue();

    $('.datepicker').datepicker(
    {
        buttonImage: $.assetsRoot() + '/css/images/ico_datepicker.png',
        buttonImageOnly: true,
        showOn: 'button',
        dateFormat: 'dd/mm/yy',
        defaultDate: +0,
        //yearRange: '1900:2050',
        yearRange: '-10:+25', // from now until 5 years in the future
        minDate: '-10y',
        maxDate: '+25y',
        changeMonth: true,
        changeYear: true,
        duration: '', // show immediatley
        onChangeMonthYear: function(y, m, jq)
        {
            if (jq.currentDay)
            {
                $(this).datepicker('setDate', $.datepicker.parseDate('d/m/yy', jq.currentDay + '/' + m + '/' + y));
            }
        }
    });

    // auto complete
    $('.ac_search').autocomplete("/autocomplete.aspx?type=search");
    $('.ac_location').autocomplete("/autocomplete.aspx?type=location");

    if ($.browser.msie && $.browser.version <= 8)
    {
        // IE6 + IE7 fix for incorrect clearing behaviour on DD
        $('#page dl:not(.steps) dd').each(function(i)
        {
            $('<div class="clear"/>').insertAfter($(this));
        });

        // IE6 + IE7 fix for dropshadow render glitch when using cufon in header
        $('#header').css('zoom', '1');
    }
});

$.assetsRoot = function()
{
    var scr = $('script[src*="/global.js"]');
    return (scr.length) ? scr.attr('src').replace(/\/js\/global\.js.*?$/gi, '') : '';
}

$.fn.externalLinks = function()
{
    return this.find('a[href^=http]:not([href*=' + location.hostname + ']), a:[rel=external]').attr('target', '_blank')/*.append('<em class="ext"> [this link opens in a new window] </em>')*/.end();
};

$.fn.bigLink = function(/**String*/selector)
{
    var self = this;
    var selector = selector || 'a[@href]:eq(0)';

    this.click(function(e)
    {
        var link = $(this).find(selector);

        // the first link within the supplied element
        var prevent_default = false;

        //
        var target_is_link = (e.target.nodeName == 'A');

        // check through all click events for preventDefault command (so we know whether to redirect or not)
        var all_events = link.data('events');
        var click_events;

        if (all_events && all_events.click)
        {
            click_events = all_events.click;

            for (var k in click_events)
            {
                if (/\.preventDefault\(\)/.test(click_events[k].toString()))
                {
                    prevent_default = true;
                }
            }
        }

        // trigger all jquery assigned events
        link.triggerHandler('click');

        // if preventDefault has never been assigned to this link then it is safe to do a standard redirect
        if (!prevent_default)
        {
            //document.location = link.attr('href');
            return !window.open(link.attr('href'), link.attr('target') || '_self');
        }
    })
	.hover(function()
	{
	    $(this).addClass('hover');
	},
	function()
	{
	    $(this).removeClass('hover');
	})
	.css('cursor', 'pointer');

    return self;
}

$.fn.labelToValue = function()
{
    var self = this;

    self.focus(function()
    {
        var field = $(this);

        if (this.id)
        {
            var label = $.trim($('label[for="' + this.id + '"]:last').hide().text());
        }
        else
        {
            return;
        }

        if (field.val() == label)
        {
            field
			.val('')
			.removeClass('label');
        }
        else
        {
            field
			.removeClass('label');
        }
    })
	.blur(function()
	{
	    var field = $(this);

	    if (this.id)
	    {
	        var label = $.trim($('label[for="' + this.id + '"]:last').hide().text());
	    }
	    else
	    {
	        return;
	    }

	    if (field.val() == label || field.val() == '')
	    {
	        field
			.val(label)
			.addClass('label');
	    }
	})
	.blur()
	.parents('form').submit(function(e)
	{
	    var current = $(':focus');
	    var scrollY = $(document).scrollTop();

	    // trigger the focus event to remove label text from field
	    self.focus();
	    // remove all bound events
	    self.unbind();

	    current.get(0).focus();

	    $(document).scrollTop(scrollY);
	});

    return self;
}