dojo.require("dojo.cookie");

$(document).ready(function() {
	// form interaction
	$('form.box input').focusin(function() {
		$(this).addClass('active');
	});
	$('form.box input').focusout(function() {
		$(this).removeClass('active');
	});

	// table interaction
	$('table.data tbody tr').hover(function() {
		$(this).addClass('active');
	}, function() {
		$(this).removeClass('active');
	});

	$('ul.navigation, ul.menu').AddTreeClasses();
	initFontSizeSelector();
});
dojo.addOnLoad(function() {
	dojo.subscribe("/dojo/io/load", function(dfd, response){
				
		if (dfd.ioArgs.xhr && dfd.ioArgs.xhr.getResponseHeader) {
			var requiredModules = dfd.ioArgs.xhr.getResponseHeader('x-dojo-modules');
			if (requiredModules) {
				requiredModules = dojo.fromJson(requiredModules);
				for (var i = 0; i < requiredModules.length; i++) {
					dojo.require(requiredModules[i]);
				}
			}
			
			var requiredStylesheets = dfd.ioArgs.xhr.getResponseHeader('x-dojo-stylesheets');
			if ( requiredStylesheets ) {
				requiredStylesheets = dojo.fromJson(requiredStylesheets);
				for (var i = 0; i < requiredStylesheets.length; i++ ) {
					dojo.query("head").append("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + requiredStylesheets[i] + "\">");
				}
			}
									
			dfd.addCallback(function() {
				var onLoad = dfd.ioArgs.xhr.getResponseHeader('x-dojo-onload');
				if (onLoad) {
					onLoad = dojo.fromJson(onLoad);
					for (var i = 0; i < onLoad.length; i++) {
						dojo.eval('(' + onLoad[i] + ')();');
					}
				}
			});
		}
	});
	
});

$.fn.AddTreeClasses = function()
{
	this.addClass('level1');
	this.find('ul').each(function() {
		$(this).addClass('level' + ($(this).parentsUntil('.level1', 'li').length + 1));
	});
	this.find('li:has(ul)').addClass('has-children');
	this.find('li').hover(function() {
		$(this).addClass('hover');
	}, function() {
		$(this).removeClass('hover');
	});
    return this.each(function() {
        var deepest = null;
        $(this).find('.active').each(function() {
            if (!deepest || $(this).parentsUntil('.level1', 'li').length > deepest.parentsUntil('.level1', 'li').length) {
                deepest = $(this);
            }
        });
        if (deepest) {
            deepest.addClass('deepest-active');
        }
    });
};



function initFontSizeSelector() {
	if ( $('body').attr('data-wgv-original-font-size') == undefined ) {
		$('body').attr('data-wgv-original-font-size', parseFloat($('body').css('fontSize')) );
	}
	var scale = 1.0;
	$('div.topbar_fontresizer a').click( function() {
		scale = parseFloat($(this).attr('data-wgv-scale'));
		var base = $('body').attr('data-wgv-original-font-size');
		$('body').css('fontSize', Math.round(base*scale) + 'px');
		dojo.cookie('wgv-font-size-scale', scale, {
			path: '/'
		});
		$('div.topbar_fontresizer a').removeClass("selected");
		$(this).addClass("selected");		
	});
	if ( dojo.cookie('wgv-font-size-scale') != undefined ) {
		scale = parseFloat(dojo.cookie('wgv-font-size-scale'));
		var base = $('body').attr('data-wgv-original-font-size');
		$('body').css('fontSize', Math.round(base*scale) + 'px');
	}
	$('div.topbar_fontresizer a').each( function(index) {
		if ( (scale - parseFloat($(this).attr('data-wgv-scale'))) == 0 ) {
			$(this).addClass("selected");
		}
	});
}
