topModuleHandler = function(){

	$moduleItems 	= 0;
	$slideShowState = 0;	// 0 - no timer :: 1 - active timer :: 2 - timer on hold
	$slideShowDelay	= 4;
	$cache			= [];
	$activeItem		= 1;
	$activeItemChk	= 2;	
	$slideTimer		= null;
	$hideBlock		= 'a';	
	$activeBlock	= 'b';	

	return {
		init : function(_slideShowState,_moduleItems,_slideShowDelay){
			$T_tmh 			= this;
			$slideShowState = _slideShowState;
			$moduleItems 	= _moduleItems;
			$slideShowDelay	= _slideShowDelay * 1000;
			$E.onAvailable('topmodule',$T_tmh.generateLinks);
			$E.addListener(window,'load',function(){if($moduleItems > 1 & $slideShowDelay > 0) $T_tmh.slideShow(2);});
		},
		generateLinks : function(){
			if ($moduleItems < 2) return;
			var outPut = '<ul id="topmodule-count">';
			cn = '';
			for(i=1;i <= $moduleItems;i++){
				cn = (i==1) ? 'active' : ''; 
				outPut += '<li class="'+cn+'"><a href="#" onclick="'+nspace_str+'.topModule.clearSlideShow('+i+');'+nspace_str+'.topModule.queryModuleData('+i+');this.blur();return false;">'+i+'</a></li>';
			}
			outPut += '</ul>';
			$('topmodule').innerHTML += outPut;
		},
		queryModuleData : function(_moduleNum){
			$activeItem = _moduleNum;
			_els = $('topmodule-count').getElementsByTagName('LI');
			for(i =0;i < _els.length; i++){
				_els[i].className = '';}

//			($activeItem == $moduleItems)  ? $activeItem = 1: $activeItem = _render_obj.cacheKey + 1;
			if($cache[$activeItem]){
				$T_tmh.renderModule($cache[$activeItem],{cacheKey:$activeItem});
				return;
			}

			var connections_q = new Array({url: '/network/includes/promos/topModulesPromo'+$activeItem+'.html',connection: { htmlobj:'topmodule-content_b',render_e: $T_tmh.renderModule,render_fe: $T_tmh.loadFail,cacheKey: _moduleNum}});			
			YAHOO.networkLP.loadData(connections_q);
		},
		renderModule : function(_str,_render_obj){
			$('topmodule-content_'+$activeBlock).innerHTML 	= _str;
			var proceedFading = function(){
				$cache[_render_obj.cacheKey]	 		= _str;
				if($activeBlock == 'b'){ 
					$('topmodule').style.backgroundColor = '#fff';				
					$('topmodule-content_b').style.display = 'block';				
					var anim_a = new $A('topmodule-content_a', { opacity: { to: 0 } }, 1, YAHOO.util.Easing.easeOut);
					var anim_b = new $A('topmodule-content_b', { opacity: { to: 1 } }, 1, YAHOO.util.Easing.easeOut);
					$activeBlock	 = 'a';
					$hideBlock		= 'a';						
					for(i =0;i < _els.length; i++){
						_els[i].getElementsByTagName('A')[0].innerHTML = i+1;
						_els[i].className = '';}

					_els[$activeItem-1].className = 'active';
				}else{
					$('topmodule').style.backgroundColor = '#fff';				
					$('topmodule-content_a').style.display = 'block';								
					var anim_a = new $A('topmodule-content_a', { opacity: { to: 1 } }, 1, YAHOO.util.Easing.easeOut);
					var anim_b = new $A('topmodule-content_b', { opacity: { to: 0 } }, 1, YAHOO.util.Easing.easeOut);
					$activeBlock 	= 'b';
					$hideBlock		= 'b';

	//				($activeItem == $moduleItems)  ? $activeItem = 1: $activeItem = _render_obj.cacheKey + 1; 				
					for(i =0;i < _els.length; i++){
						_els[i].getElementsByTagName('A')[0].innerHTML = i+1;
						_els[i].className = '';}

					_els[$activeItem-1].className = 'active';
				} 
				var resetBlocks = function(){
					if($slideShowState == 1) $T_tmh.slideShow();
					$('topmodule-content_'+$hideBlock).style.display = 'none';
					_els = $('topmodule-count').getElementsByTagName('LI');
					$('topmodule').style.backgroundColor = '#000';
				}
				anim_b.onComplete.subscribe(resetBlocks);
				anim_a.animate();
				anim_b.animate();
			}			
			/*if(!$cache[_render_obj.cacheKey] && _render_obj.cacheKey != 1){
				try{
					proceedFading();
				}catch(err){ 
					proceedFading();	
				}	
			}else{
				proceedFading();
			}
			*/
			proceedFading();			
		},
		loadFail : function(){
			$('topmodule-count').style.display = 'none';
		},
		slideShow : function(){
			$slideTimer = window.setTimeout('if(($activeItem+1) > $moduleItems){ $activeItem = 1;}else{$activeItem = $activeItem+1;}	$T_tmh.queryModuleData($activeItem);',$slideShowDelay);
		},
		clearSlideShow : function(_blockNum){
			try{ window.clearTimeout($slideTimer);}catch(err){}
			$slideShowState = 2;
		}
	};
}();
