$(document).ready(function() {

    // customize input:text fields
    $('input:text, input:password').not('.hidden, [class^=ms-]')
		.wrap('<div class="custom clearfix"></div>');

    // customize input:radio fields
    $('input:radio').not('.hidden, .no-custom').uniform({
        radioClass: 'custom-radio'
    });

    // customize input:checkbox fields
    $('input:checkbox').not('.hidden, .no-custom').uniform({
        checkboxClass: 'custom-checkbox'
    });

    // customize input:checkbox fields
    $('select').not('.hidden, .no-custom').uniform({
        selectClass: 'custom-select'
    });

    //**** common boxes styling ****

    // box_error, box_type-1
    $('.box_error.jsbox,.box_type-1.jsbox').each(function() {
        $(this)
			.wrapInner('<div class="body">')
			.append('<div class="bottom"/>')
			.prepend('<div class="top">');
    });

    // box_type-3
    $('.box_type-3.jsbox').each(function() {
        var $t = $(this), t;

        $t.wrapInner('<div class="body">')
			.append('<div class="bottom"/>')
			.prepend(t = $('<div class="top">'));

        t.append('<div class="icon ' + /icon[^ ]+/.exec($t.attr('className')) + '">');
        $t.find('span.title').appendTo(t);
        $t.find('a.info').appendTo(t).append('<span class="info-image">');
    });

    // close info and message boxes
    $('.box_info_wide a.close, .box_message_wide a.close').click(function() {
        $(this).parents('.box_info_wide:first, .box_message_wide:first').slideUp();
    });

    // tooltip
	$('a.info, a.local-numbers, .traffic-light, a.enable, a.full').tooltip( {
        top: 15,
        left: -100,
        delay: 100,
        track: true,
        showURL: false,
        bodyHandler: function() {

            var $tooltip = $('#tooltip-container').clone(); // ...

            if ($(this).hasClass('address'))
                $('.box_type-14', $tooltip).addClass('wide');
                
            var content = (!$(this).hasClass('info')) ?
				$(this).find('.info *[class='+ $(this).attr('class').split(' ')[1] +']').html() : $(this).html();

            $('.middle', $tooltip).html(content);

            return $tooltip.html();

        }
    });

    //carousel

    $('.traffic-light').click(function() {
        popupItem('wpMaxHyp');
    });
    
    // tabs
    $('.tabs a').not('.custom-tabs a').click(function() {

        var $tabs = $(this).closest('div');
        var $tabContent = $('~ .tab-content', $tabs);

        var tabIndex = $('> ul > li', $tabs).index($(this).parent());

        if ($tabs.hasClass('disabled'))
            return true;

        $('> li.active', $tabContent).trigger('tabHidden');

        $('> ul > li', $tabs).removeClass('active');
        $('> li', $tabContent).removeClass('active');

        $(this).parent().addClass('active');
        $('> li:eq(' + tabIndex + ')', $tabContent).addClass('active').trigger('tabShown');

        $('.custom-select').each(function() {
            $(this).replaceWith($(this).find('select'));
        });

        $('select').not('.hidden, .no-custom').uniform({
            selectClass: 'custom-select'
        });

    });

    $('.tab-content > li:active').not('.custom-tab-content > li').trigger('tabShown');

    // toggle ...
    $('.toggle a').click(function() {

        var toggleIndex = $('.toggle > ul > li').index($(this).parent());

        $('.toggle > ul > li, .toggle-content > li').removeClass('active');

        $(this).parent().addClass('active');

        $('.toggle-content > li:eq(' + toggleIndex + ')').addClass('active');

    });

    // tree control ...
    $('.conditional-tree dt input').click(function() {

        if ($(this).is(':radio') && $(this).closest('dt').next('dd').is(':visible'))
            return false;

        $(this).closest('dl').find(':radio:not(:checked)').each(function() {
            $(this).closest('dt').next('dd').hide('slow').find('dd').hide();
        });

        $(this).closest('dt').next('dd').toggle('slow').clearForm();

    });
	// text toggle
	$('.text-toggle a').click( function() {
		$(this).toggleClass('expanded').next().toggle();
	} );

    $.fn.popupLayer = function(clickEvent) {
        return this.each(function() {
            var $t = $(this),
			dw = 0, dh = 0,
			wWidth = $(window).width(),
			wHeight = $(window).height(),
			cTop = clickEvent.clientY,
			cLeft = clickEvent.clientX,
			width = $t.width(),
			height = $t.height(),
			scrOfY = document.body.scrollTop,
			scrOfX = document.body.scrollLeft,
			top, left;

            if (cLeft + width > wWidth) {
                dw = wWidth - (cLeft + width);
            } else if (cLeft < 0) {
                dw = -cLeft;
            }
            if (cTop + height > wHeight) {
                dh = wHeight - (cTop + height);
            } else if (cTop < 0) {
                dh = -cTop;
            }
            top = clickEvent.pageY + dh;
            left = clickEvent.pageX + dw;
            if (top < 0) top = 0;
            if (left < 0) left = 0;

            $t.css({ top: top, left: left }).slideDown();
        })
    };

    $('.popup-dialog').click(function(e) {
        var instanceName = $(this).metadata().instanceName;
        (window.console && console.log('popuping', instanceName, $('.' + instanceName).find('.box-layer, .box-popup')));
        $('.' + instanceName).find('.box-layer, .box-popup').popupDialog(e);
    });

    $.fn.popupDialog = function(clickEvent) {
        return this.each(function() {
            var $t = $(this),
			dw = 0, dh = 0,
			wWidth = $(window).width(),
			wHeight = $(window).height(),
			cTop = clickEvent.clientY,
			cLeft = clickEvent.clientX,
			width = $t.width(),
			height = $t.height(),
			scrOfY = document.body.scrollTop,
			scrOfX = document.body.scrollLeft,
			top, left;

            if (cLeft + width > wWidth) {
                dw = wWidth - (cLeft + width);
            } else if (cLeft < 0) {
                dw = -cLeft;
            }
            if (cTop + height > wHeight) {
                dh = wHeight - (cTop + height);
            } else if (cTop < 0) {
                dh = -cTop;
            }
            top = clickEvent.pageY + dh;
            left = clickEvent.pageX + dw;
            if (top < 0) top = 0;
            if (left < 0) left = 0;

            var parentOffset = $(this).parent().offset();

            //$t.css({position: 'relative', top:top-parentOffset.top, left:left-parentOffset.left}).slideDown();
            $t.css({ top: top, left: left }).slideDown();
        })
    };

    $.fn.clearForm = function() {
        $(this).
			find(':text, :password, textarea').
				attr('value', '').end().
			find(':checkbox, :radio').
				attr('checked', false).end().
			find('select').
				attr('selectedIndex', -1);

        $(this).find('span').removeClass('checked');

    };

    // Print
    $('.print a').click(function() {
        window.print();
    });

    // replace all but \d
    $('.number').bind('keydown keyup', function() {
        $(this).val(
			$(this).val().replace(/[^\d]/, '')
		);
    });

    // maxlength textarea
    $('textarea[maxlength]').bind('keydown keyup', function() {

        var max = parseInt($(this).attr('maxlength'));

        if ($(this).val().length > max)
            $(this).val($(this).val().substr(0, $(this).attr('maxlength')));

    });

    var pageRefreshed = document.getElementById('refreshed');
    if (pageRefreshed.value == 'no') {
        if ($.cookie(COOKIE_NAME) != null) {
            var visitData = decodeURIComponent($.cookie(COOKIE_NAME)).split(';');
            var visitNumber = parseInt(visitData[0]);
            var visitDate = new Date(visitData[1]);
            var currentDate = new Date();
            visitDate.setTime(visitDate.getTime() + 2 * 60 * 60 * 1000);
            if (currentDate > visitDate) {
                visitNumber += 1;
                visitData = visitNumber + ';' + currentDate.toGMTString();
                $.cookie(COOKIE_NAME, visitData, COOKIE_OPTIONS);
            }
        }
        else {
            var currentDate = new Date().toGMTString();
            var newData = '1;' + currentDate;
            $.cookie(COOKIE_NAME, newData, COOKIE_OPTIONS);
        }
    }
	
	// Autofocus to a webpart
	if ( window.webPartToFocus ) {
		window.location.hash = webPartToFocus;
	}
	

});

function GetDynamicContentWebPartIds() {
    var retval = '';

    $('input[id*=hdnContentBlockId]').each(function() {
        if ($(this).val().length > 0) {
            retval += ';' + $(this).val() + ',';
        }
    });

    if (retval.length > 0) {
        retval = retval.substring(0, retval.length - 1);
    }
    
    return retval;
}

var COOKIE_NAME = 'iBlueVisitData';
var COOKIE_OPTIONS = { path: '/', expires: 365 * 50 };
