if (typeof(Effect) != 'undefined'){

		var subnav = new Array();
		
		
		var Utilities = 
		{ 
			hideMenu: function(element, timeout) 
			{
				element = $(element);
				element.status = 'hide';
				
				clearTimeout (element.timeout);
				if (timeout)
				{
					element.timeout = setTimeout (element.fxAnimate.bind(element), timeout);				
				}else{
					element.fxAnimate();
				}
			},
				
			showMenu: function(element,timeout) 
			{
				element = $(element);
				element.status = 'show';
								
				clearTimeout (element.timeout);
				if (timeout)
				{
					//element.timeout = setTimeout (element.fxBlindDown.bind(element), timeout);
					element.timeout = setTimeout (element.fxAnimate.bind(element), timeout);
				}else{
					element.fxAnimate();
				}
			},

			setActive: function (element) {
				element = $(element);
				element.addClassName('sfhover');
			},

			setDeactive: function (element) {
				element = $(element);
				element.removeClassName('sfhover');
			},
	
			fxAnimate: function(element){
			
				//console.log("fxAnim: "+ element.status +" ,hidding " + element.hidding + " right "+ element.style.right);
								
				if ((element.status == 'hide' && element.style.right != 'auto')	|| (element.status == 'show' && element.style.right == 'auto' && !element.hidding)) return;			

				element.setStyle({'overflow': 'hidden'});
				
				if (element.status == 'show') {	
					element.hidding = 0;
					element.hideAll();
				}

				if (element.status == 'hide')
				{
					element.hidding = 1;
					element.myFx2.cancel();
					if (element.parent._id)
					{
						element.myFx2 = new Effect.Morph(element, {
							style: 'width:'+ element.mw+'px;',
							from: 1.0,
							to: 0.0,
							duration: .5,
							afterFinish: function(effect) {
								effect.element.animComp.bind(element)();
								element.setStyle({'width': '0px'});
							}							
						})
					}
					else
					{
						element.setStyle({'right': ''});
						element.myFx2.cancel();
						
						element.myFx2 = new Effect.Morph(element, {
							style: 'width:'+ element.mw+'px;',
							from: 1.0,
							to: 0.0,
							duration: .5,
							afterFinish: function(effect) {
								effect.element.animComp.bind(element)();
								element.setStyle({'width': '0px'});
							}							
						})
					}	
				} 
				else 
				{
					element.setStyle({'right': 'auto'});
					element.myFx2.cancel();
					
					if (element.parent._id)
					{
						element.myFx2 = new Effect.Morph(element, {
							style: 'width:'+ element.mw+'px;',
							from: 0.0,
							to: 1.0,
							duration: .5,
							afterFinish: function(effect) {
								effect.element.animComp.bind(element)();
							}							
						})
					}
					else
					{
						element.myFx2.cancel();
						
						element.myFx2 = new Effect.Morph(element, {
							style: 'width:'+ element.mw+'px;',
							from: 0.0,
							to: 1.0,
							duration: .5,
							afterFinish: function(effect) {
								effect.element.animComp.bind(element)();
							}							
						})
					}					
				}	
			},
			
			init: function(element) 
			{
				element = $(element);
				element.mw = element.getWidth(); //this.clientWidth;
				element.mh = element.getHeight(); //this.clientHeight;
				element.setStyle({'right':'-999em'});
				
				if (element.parent._id)
				{
					element.myFx2 = new Effect.Morph(element, {	style: 'width: 0px', duration: 0.0});
				}
				else
				{
					element.myFx2 = new Effect.Morph(element, {	style: 'width: 0px',duration: 0.0});
				}
			},
			
			animComp : function(element){
				element = $(element);
				if (element.status == 'hide')
				{
					element.setStyle({'right': '-999em'});
					element.hidding = 0;
				}
				
				element.setStyle({'overflow':''});
				//console.log("animComp: "+ element.status +" ,hidding " + element.hidding + " right "+ element.style.right);
			},
			
			hideAll: function(element) {
				element = $(element);
				for(var i=0;i<subnav.length; i++) {
					if (!element.isChild(subnav[i]))
					{
						subnav[i].hideMenu(0);
					}
				}
			},

			isChild: function(element) {
				element = $(element);
				while (element.parent)
				{
					if (element._id == element._id)
					{
						return true;
					}
					element = element.parent;
				}
				return false;
			}		  
		}
		
		Element.addMethods(Utilities);
		
		
		var DropdownMenu = new Class.create({	
			initialize: function(rootEl)
			{
				$(rootEl).childElements().each(function(el)
				{
					if(el.tagName.toLowerCase() == 'li')
					{
						$(el).childElements().each(function(el2)
						{
							if(el2.tagName.toLowerCase() == 'ul')
							{
								$(el2)._id = subnav.length+1;
								$(el2).parent = $(rootEl);
								subnav.push ($(el2));
								el2.init();
								el.observe('mouseover', function()
								{
									el.setActive();
									el2.showMenu(0);
									return false;
								});
								el.observe('mouseout', function()
								{
									el.setDeactive();
									el2.hideMenu(20);
								});
								new DropdownMenu(el2);
								el.hasSub = 1;
							}
						});
						if (!el.hasSub)
						{
							el.observe('mouseover', function()
							{
								el.setActive();
								//return false;
							});

							el.observe('mouseout', function()
							{
								el.setDeactive();
							});
						}
					}
				});
				return this;
			}
		});
		
		document.observe('dom:loaded', function(){
			new DropdownMenu('ittsc-menu2') ;
			new DropdownMenu('ittsc-menu') ;
		});
	
	}else {
		sfHover = function(element_id) {
		var sfEls = document.getElementById(element_id).getElementsByTagName("li");
		for (var i=0; i<sfEls.length; ++i) {
			sfEls[i].onmouseover=function() {
				this.className+="sfhover";
			}
			sfEls[i].onmouseout=function() {
				this.className=this.className.replace(new RegExp("sfhover\\b"), "");
			}
		}
	}
	if (window.attachEvent) window.attachEvent("onload", 
		function()
		{
			sfHover('ittsc-menu');
			sfHover('ittsc-menu2');
		});
}

