$(function() {
    // home made jQuery plugin to toggle the value of the text input fields on focus / blur
    // All it needs is a title attribute on the text input field with the relevant text to be shown / hidden, if there's nothing in the input value field 
    $.fn.toggleInputText = function() {
        var elements = this;
        return (elements.each(function() {
            var el = $(this), title = el.attr('title');
            if (el.val() == '') el.val(title);
            el.focus(function() {
                if (el.val() == title) el.val('');
            }).blur(function() {
                if (el.val() == '') el.val(title);
            });
        }));
    };
    jQuery('html').addClass('js');
    jQuery(function() {
        var actualWidth = 831;

        var mainSearchPresent = jQuery('.mainEstateSearch');

        var totalLIWidth = 0;

        var listItems = jQuery('ul.mainNav li');

        listItems.each(function() {
            totalLIWidth += jQuery(this).outerWidth(true);
        });

        var requiredPadding = Math.round(((actualWidth - totalLIWidth) / listItems.length) / 2);

        // To account for rounding errors, the error is going to be forced into the first tab.
        var roundingErrorFix = (requiredPadding * listItems.length * 2) + totalLIWidth - actualWidth;

        var roundingErrorLastFix = Math.round(((roundingErrorFix - totalLIWidth) / listItems.length) / 2);

        // Apply padding to list items

        listItems.each(function() {
            jQuery(this).find('span').css('padding-left', requiredPadding + 'px')
            .css('padding-right', requiredPadding + 'px');
        });

        if (jQuery(roundingErrorFix).length > 0) {
            jQuery("ul.mainNav li:last span").css('padding-right', requiredPadding - roundingErrorFix + 1 + 'px');
        }
        else
            jQuery("ul.mainNav li:last span").css('padding-right', requiredPadding + roundingErrorFix + 'px')
            .css('padding-left', requiredPadding + roundingErrorFix + 'px');
        if (jQuery(mainSearchPresent).length > 0 || (roundingErrorFix).length > 0) {
            jQuery("ul.mainNav li:last span").css('padding-right', requiredPadding - roundingErrorFix + 'px');
        }
    });
    Cufon.replace('.story .container h2, .story .container p');
    if ($('.accordion').length > 0) {
        $('.accordion').accordion({ header: '.control', animated: 'slide', fillSpace: true });
    }
    //$('.slideshow .story:visible .container .inner a').addClass('test');
    $('.mainNav li:last-child').addClass('last');
    $('.mainNav li:first-child').addClass('first');
    $('.generalNavigation li:last-child').addClass('last');
    $('.accordion .details input:text, #globalSearch fieldset .first input:text, #globalSearch fieldset .third input:text').toggleInputText();
    $('.article .content ul.noBullet, .tabSearch .smallCase ul.noBullet').click(function() {
        window.location = $(this).parent().find("a.preview").attr("href"); return false;
    }).css('cursor', 'pointer');
    $('.leadBack').click(function() {
        window.location = $(this).parent().find("a.leadBackLink").attr("href"); return false;
        //console.log(this);
    }).css('cursor', 'pointer');



    // Frontpage slideshow
    if ($('.mainFront .slideshow .isFlash').length > 0) {
        $('.mainFront .mediaFull').css('display', 'none');
    }
    else {
        $('.mainFront .mediaFull').click(function() {
            document.location.href = $(this).next().find('div:visible a').attr('href');
            $(this).next().cycle('pause');
        }).css('cursor', 'pointer');

        $('.mainFront .container').click(function() {
            document.location.href = $(this).find('a:visible').attr('href');
        }).css('cursor', 'pointer');
    }
});









/**
* Utils --------------------------------------------------------------
*/

/**
* Converts a querystring in the format 
* input format: name=value&name2=value2&name3=value3
* output formats: { name: value, name1: value1, name2: value2 }
* @param qs - the input querystring
*/
function extractObjectFromQS(qs) {
    var splitQS = qs.split('&'),
        formatted = new Object(),
        tempArr = new Array();

    for (var i = 0; i < splitQS.length; i++) {
        var tempArr = splitQS[i].split('=');
        formatted[tempArr[0]] = tempArr[1];
    }
    return formatted;
}