/**
 * Generic script for Tab behaviour
 * @author joachim.kliemann, D. Deertz
 * @version 2008-12-08
 */


if (!YAHOO.hmmh) YAHOO.namespace("hmmh.resizeDefaultTabsDetail");
YAHOO.hmmh.resizeDefaultTabsDetail = function() {
	
	return { 
		tabCount : 7, // Max amount of visible tabs
		hiddenTabLayer : null,
		init: function() {
			// read external value for tab count
			if(typeof pageTabCount !="undefined" && pageTabCount >0) {
				YAHOO.hmmh.resizeDefaultTabsDetail.tabCount = pageTabCount;
			}
			
			/* Set Position of Thumb on Movieclip Detail Page*/ 
			var ourDiv = $D.get("liste");
			var getThumb = $D.getElementsByClassName('bgfilmstreifen')
			var getThumbElement = getThumb[0]; 
			var getThumbPosition = $D.getX(getThumbElement);
			if (ourDiv) {
				ourDiv.scrollLeft = getThumbPosition - 550;
			}
			var hiddenElements = [];
			//var newNodes = [];
			var imageTabHolder = $D.get('tabholderRight');
			//$D.setStyle(imageTabHolder,"visibility","hidden");
			var imageTabs = $D.getElementsByClassName('imagetab');
			
			// add hidden tab layer to body if necessary
			if($D.get("hiddenTabLayer")==null) {
				var divElement = document.createElement("DIV");
				divElement.id ="hiddenTabLayer";
				document.body.appendChild(divElement);
			}	
			
			$D.setStyle(imageTabHolder,"overflow","visible"); // do we need this?
			// Hiding tabs form on left hand side if more than tabCount
			if (imageTabs.length > YAHOO.hmmh.resizeDefaultTabsDetail.tabCount ) {
				if ($D.get("moreTab") && $D.getStyle("moreTab","display") != "none") return;
				var nodes = new Array();
				for( var i=0,j=imageTabs.length - YAHOO.hmmh.resizeDefaultTabsDetail.tabCount; i<j ; i++ ) {
					if (!$D.hasClass(imageTabs[i],"aktiv")) {
						hiddenElements.push(imageTabs[i]);
						$D.addClass(imageTabs[i],"hiddenTab");
						nodes.push(imageTabs[i]);
					}
					else {
						// show active tab on right end of tab row
						imageTabs[i].parentNode.appendChild(imageTabs[i]);
						j++; // hide one more tab if active tab is within hiding range
					}
        		}
		
        		if(nodes.length >0) {
        			if(!$D.get("moreTab")) {
	        			var moreTab = document.createElement('li');
				        moreTab.id = 'moreTab';
				        moreTab.innerHTML = "<a href='javascript:;'>...</a>";
						
						$D.insertBefore(moreTab,imageTabs[0].parentNode.firstChild);
						$E.on("moreTab", 'click', YAHOO.hmmh.resizeDefaultTabsDetail.showHiddenTabLayer, true);
        			}
        			$D.setStyle("moreTab","display","");
					if(YAHOO.hmmh.resizeDefaultTabsDetail.hiddenTabLayer == null) {
		        		YAHOO.hmmh.resizeDefaultTabsDetail.hiddenTabLayer = new YAHOO.widget.Panel("hiddenTabLayer", 
							{ 
							    close: false,
							    underlay: "shadow",  
							    visible: true,  
							    draggable: false,
							    zindex: "10000"
							} 
						);
					}
	        		
					//var nodes = YAHOO.util.Selector.query('ul li.hiddenTab');
					YAHOO.hmmh.resizeDefaultTabsDetail.hiddenTabLayer.setBody("");
					
					for( var i=0; i < nodes.length ; i++ ){
						var aTag = YAHOO.util.Selector.query("a",nodes[i])[0];
						aTag = aTag.cloneNode(true); // make a deep copy of link (does not copy js listeners!)
						$D.setStyle(aTag,"overflow","visible");
						$D.setStyle(aTag,"width","auto");
						$D.setStyle(aTag,"height","");
						$D.setStyle(aTag,"padding","4px");
						$D.setStyle(aTag,"display","block");
						$D.setStyle(aTag,"color","#666666");
						//$D.setStyle(aTag,"text-align","right");
						if(aTag.rel) {
							aTag.innerHTML = aTag.rel.toString();
						}
						YAHOO.hmmh.resizeDefaultTabsDetail.hiddenTabLayer.appendToBody(aTag);
					}
        		}	
			} else {
				YAHOO.hmmh.resizeDefaultTabsDetail.reset();
			}
			$D.setStyle(imageTabHolder,"visibility","visible"); // show tab layer AFTER rearranging it (performance)
		},
		
		/**
		 * Alle Tabs wieder anzeigen
		 */
		reset:function () {
			var nodes = YAHOO.util.Selector.query('ul li.hiddenTab');
			if(nodes.length >0) {
				var hiddenTabNodes = YAHOO.util.Selector.query('a',YAHOO.hmmh.resizeDefaultTabsDetail.hiddenTabLayer.body);
				for( var i=0,j=nodes.length; i<j ; i++ ) {
					$D.removeClass(nodes[i],"hiddenTab");
        		}
			}
			$D.setStyle("moreTab","display","none");
			return true;
		},
		/**
		 * neu anordnen der Tabs
		 */
		refresh:function () {
			YAHOO.hmmh.resizeDefaultTabsDetail.reset();
			YAHOO.hmmh.resizeDefaultTabsDetail.init();
			
		},
		showHiddenTabLayer: function(e){ 
			YAHOO.hmmh.resizeDefaultTabsDetail.hiddenTabLayer.render();
			YAHOO.hmmh.resizeDefaultTabsDetail.hiddenTabLayer.cfg.setProperty('context',['moreTab', 'tl', 'bl']);
			YAHOO.hmmh.resizeDefaultTabsDetail.hiddenTabLayer.show();
			
			$E.removeListener("moreTab",'click');
			$E.on("moreTab", 'click', YAHOO.hmmh.resizeDefaultTabsDetail.hideHiddenTabLayer, true);
			setTimeout(function(){
			    YAHOO.hmmh.resizeDefaultTabsDetail.hideHiddenTabLayer();
			},5000);
		},	
		hideHiddenTabLayer : function (e) {
			YAHOO.hmmh.resizeDefaultTabsDetail.hiddenTabLayer.hide();
			YAHOO.util.Event.removeListener("moreTab",'click');
			$E.on("moreTab", 'click', YAHOO.hmmh.resizeDefaultTabsDetail.showHiddenTabLayer, true);
		},	
			
		getText: function(node){ 
			alert(node);
			if(!node.hasChildNodes()){return false;}
			var reg=/^\s+$/;
			
			var tempObj=node.firstChild;
			while(tempObj.nodeType!=3 && tempObj.firstChild!=null || reg.test(tempObj.nodeValue)){
				tempObj=tempObj.firstChild;
			}
			return tempObj;
		}	
	};
}();

if(YAHOO.env.ua.ie >0) {
	$E.onContentReady("tabholderRight", YAHOO.hmmh.resizeDefaultTabsDetail.init, YAHOO.hmmh.resizeDefaultTabsDetail, true); 
}
else {
	//$E.onContentReady("tabholderRight", YAHOO.hmmh.resizeDefaultTabsDetail.init, YAHOO.hmmh.resizeDefaultTabsDetail, true); 
	$E.on(window, 'load', YAHOO.hmmh.resizeDefaultTabsDetail.init, YAHOO.hmmh.resizeDefaultTabsDetail, true); 
}
