var JDTools = {
		
	start: function() {
		
		/* Match height of div tags */
		JDTools.setDivHeight();

		/* Accordion menu */
		new JDAccordionMenu('div#middle ul.menu li.toggler', 'ul.accordion', { accordion: 'slide' });

		/* Fancy menu */
		new JDFancyMenu($E('ul', 'menu'), { mode: 'move', transition: Fx.Transitions.Expo.easeOut, duration: 700 });

		/* Dropdown menu */
		new JDDropdownMenu('div#menu li.parent', { mode: 'height', transition: Fx.Transitions.Expo.easeOut });
		
		/* Morph: main menu (drop down) */
		switch (JdSettings.color) {
			case "black":		var enterColor = '#171717';
								var leaveColor = '#191919';
								break;
		 
			case "white": 		var enterColor = '#f7f7f7';
								var leaveColor = '#ffffff';
								break;
		 
			default: 			var enterColor = '#232323';
					 			var leaveColor = '#191919';
		}

		var menuEnter = { 'background-color': enterColor };
		var menuLeave = { 'background-color': leaveColor };

		new JDMorph('div#menu li.level2 a, div#menu li.level2 span.separator', menuEnter, menuLeave,
			{ transition: Fx.Transitions.linear, duration: 300 },
			{ transition: Fx.Transitions.sineIn, duration: 700 });
		
		var enterColor = '#f27237';
		var leaveColor = '#f0f0f0';

		var menuEnter = { 'color': enterColor };
		var menuLeave = { 'color': leaveColor };
		
		new JDMorph('div#menu li.level2 a, div#menu li.level2 span.separator', menuEnter, menuLeave,
			{ transition: Fx.Transitions.linear, duration: 0 },
			{ transition: Fx.Transitions.sineIn, duration: 700 });

		/* Morph: sub menu */
		var enterColor = '#f8f8f8';
		var leaveColor = '#ffffff';
		
		var submenuEnter = { 'background-color': enterColor};
		var submenuLeave = { 'background-color': leaveColor};

		new JDMorph('div#middle ul.menu a, div#middle ul.menu span.separator', submenuEnter, submenuLeave,
			{ transition: Fx.Transitions.expoOut, duration: 300 },
			{ transition: Fx.Transitions.sineIn, duration: 700 });
		
		var enterColor = '#974bbe';
		var leaveColor = '#323232';
		
		var submenuEnter = { 'color': enterColor};
		var submenuLeave = { 'color': leaveColor};

		new JDMorph('div#middle ul.menu a, div#middle ul.menu span.separator', submenuEnter, submenuLeave,
			{ transition: Fx.Transitions.expoOut, duration: 0 },
			{ transition: Fx.Transitions.sineIn, duration: 700 });

		/* Morph: module color */

		/* black */
		var moduleEnter = { 'background-color': '#0f0f0f'};
		var moduleLeave = { 'background-color': '#0f0f0f'};

		new JDMorph('div.mod-rounded div.black', moduleEnter, moduleLeave,
			{ transition: Fx.Transitions.sineIn, duration: 200 },
			{ transition: Fx.Transitions.expoOut, duration: 3000 });
		

		/* black2 */
		var moduleEnter = { 'background-color': '#191c1e'};
		var moduleLeave = { 'background-color': '#191c1e'};

		new JDMorph('div.mod-rounded div.black2', moduleEnter, moduleLeave,
			{ transition: Fx.Transitions.sineIn, duration: 200 },
			{ transition: Fx.Transitions.expoOut, duration: 3000 });
		
		/* white */
		var moduleEnter = { 'background-color': '#ffffff'};
		var moduleLeave = { 'background-color': '#ffffff'};

		new JDMorph('div.mod-rounded div.white', moduleEnter, moduleLeave,
			{ transition: Fx.Transitions.sineIn, duration: 200 },
			{ transition: Fx.Transitions.expoOut, duration: 3000 });
		
		/* grey */
		var moduleEnter = { 'background-color': '#0f0f0f'};
		var moduleLeave = { 'background-color': '#2a2c2d'};

		new JDMorph('div.mod-rounded div.grey', moduleEnter, moduleLeave,
			{ transition: Fx.Transitions.sineIn, duration: 200 },
			{ transition: Fx.Transitions.expoOut, duration: 3000 });
		
		/* black2white */
		var moduleEnter = { 'background-color': '#0f0f0f'};
		var moduleLeave = { 'background-color': '#ffffff'};

		new JDMorph('div.mod-rounded div.black2white', moduleEnter, moduleLeave,
			{ transition: Fx.Transitions.sineIn, duration: 200 },
			{ transition: Fx.Transitions.expoOut, duration: 3000 });
		
		/* black2grey */
		var moduleEnter = { 'background-color': '#0f0f0f'};
		var moduleLeave = { 'background-color': '#2a2c2d'};

		new JDMorph('div.mod-rounded div.black2grey', moduleEnter, moduleLeave,
			{ transition: Fx.Transitions.sineIn, duration: 200 },
			{ transition: Fx.Transitions.expoOut, duration: 3000 });
		
		/* black2orange */
		var moduleEnter = { 'background-color': '#0f0f0f'};
		var moduleLeave = { 'background-color': '#f46e30'};

		new JDMorph('div.mod-rounded div.black2orange', moduleEnter, moduleLeave,
			{ transition: Fx.Transitions.sineIn, duration: 200 },
			{ transition: Fx.Transitions.expoOut, duration: 3000 });
		
		/* black2purple */
		var moduleEnter = { 'background-color': '#0f0f0f'};
		var moduleLeave = { 'background-color': '#ae39da'};

		new JDMorph('div.mod-rounded div.black2purple', moduleEnter, moduleLeave,
			{ transition: Fx.Transitions.sineIn, duration: 200 },
			{ transition: Fx.Transitions.expoOut, duration: 3000 });
		
		/* purple2black */
		var moduleEnter = { 'background-color': '#ae39da'};
		var moduleLeave = { 'background-color': '#0f0f0f'};

		new JDMorph('div.mod-rounded div.purple2black', moduleEnter, moduleLeave,
			{ transition: Fx.Transitions.sineIn, duration: 200 },
			{ transition: Fx.Transitions.expoOut, duration: 3000 });
		
		/* white2black */
		var moduleEnter = { 'background-color': '#ffffff'};
		var moduleLeave = { 'background-color': '#0f0f0f'};

		new JDMorph('div.mod-rounded div.white2black', moduleEnter, moduleLeave,
			{ transition: Fx.Transitions.sineIn, duration: 200 },
			{ transition: Fx.Transitions.expoOut, duration: 3000 });
		
		/* white2orange */
		var moduleEnter = { 'background-color': '#ffffff'};
		var moduleLeave = { 'background-color': '#f46e30'};

		new JDMorph('div.mod-rounded div.pink', moduleEnter, moduleLeave,
			{ transition: Fx.Transitions.sineIn, duration: 200 },
			{ transition: Fx.Transitions.expoOut, duration: 3000 });


		/* Style switcher */
		new JDStyleSwitcher($ES('.wrapper'), { 
			widthDefault: JdSettings.widthDefault,
			widthThinPx: JdSettings.widthThinPx,
			widthWidePx: JdSettings.widthWidePx,
			widthFluidPx: JdSettings.widthFluidPx,
			afterSwitch: JDTools.setDivHeight,
			transition: Fx.Transitions.expoOut,
			duration: 500
		});		
		
		/* Smoothscroll */
		new SmoothScroll({ duration: 500, transition: Fx.Transitions.Expo.easeOut });
	},

	/* Include script */
	include: function(library) {
		$ES('script').each(function(s, i){
			var src  = s.getProperty('src');
			var path = '';
			if (src && src.match(/jd_tools\.js(\?.*)?$/)) path = src.replace(/jd_tools\.js(\?.*)?$/,'');
			if (src && src.match(/tpl\.js\.php(\?.*)?$/)) path = src.replace(/tpl\.js\.php(\?.*)?$/,'');
			if (path != '') document.write('<script language="javascript" src="' + path + library + '" type="text/javascript"></script>');
		});
	},

	/* Match height of div tags */
	setDivHeight: function() {
		JDBase.matchDivHeight('div.topbox div.inner', 0, 40);
		JDBase.matchDivHeight('div.bottombox div.inner', 0, 40);
		JDBase.matchDivHeight('div.usetopbox div.inner', 0, 40);
		JDBase.matchDivHeight('div.userbottombox div.inner', 0, 40);
		JDBase.matchDivHeight('div.adverttopbox div.inner', 0, 40);
		JDBase.matchDivHeight('div.advertbottombox div.inner', 0, 40);
	}

};

/* Add functions on window load */
window.addEvent('domready', JDTools.start);

/* Load IE6 fix */
if (window.ie6) {
	JDTools.include('addons/ie6fix.js');
	JDTools.include('jd_ie6fix.js');
}

