/*
-------------------------------------------------------------
---
--- ZDNetBox -- archive box based on mootools 
---
-------------------------------------------------------------
---
--- $Revision: 1.4 $ - $Date: 2009/01/19 15:22:55 $
---
--- $Log: ZDNetBox.js,v $
---
-------------------------------------------------------------
*/

ZDNetBox = function(){};

ZDNetBox.loadBoxContent = function(divName, currentURL, boxType, chkSum, page){
		if(!($(divName+'_content')))
			return false;
		
		if(!page)
			page = 1;
			
		// see if we can change some Tabs... 
		var tabs = $$('li.'+divName+'_tab');
		
		$each(tabs, function(tab) {
			if (tab.hasClass('selected')) {
				tab.removeClass('selected');
				tab.addClass('unselected');
			}
			if(tab.id == boxType+'_tab'){
				tab.addClass('selected');
				tab.removeClass('unselected');
			}
		});
		
		var dimensions = $(divName+'_content').getScrollSize();
		$(divName+'_content').setStyle('height', dimensions.y);
		$(divName+'_content').setStyle('width', dimensions.x);
		$(divName+'_inner_content').setStyle('height', dimensions.y);
		$(divName+'_inner_content').setStyle('width', dimensions.x);
		$(divName+'_inner_content').setStyle('cursor', 'loading');
		$(divName+'_inner_content').set('html', '');
		$(divName+'_inner_content').setStyle('background', 'url(http://www.zdnet.de/i/g/z/bg/ajax_spinner.gif) 50% 50% no-repeat transparent');
		
		var heightEffect = new Fx.Morph($(divName+'_content'), {duration: 'normal'});

		
		var ajaxRequest = new Request.HTML({
			url: currentURL,
			update: $(divName+'_inner_content'),
			evalScripts: true,
			evalResponse: true,
			onSuccess: function(){
				$(divName+'_inner_content').setStyle('height', 'auto');
				var newDimensions = $(divName+'_inner_content').getScrollSize();
				
				heightEffect.start({
									'height': [dimensions.y, newDimensions.y]});
									
				$(divName+'_content').setStyle('cursor', 'auto');
				$(divName+'_inner_content').setStyle('background', 'transparent');
			},
			onFailure: function(){
				$(divName+'_content').setStyle('height', 'auto');
				$(divName+'_content').setStyle('cursor', 'auto');
				$(divName+'_content').setStyle('background', 'none');
				return false;
			},
			onCancel: function() {
				$(divName+'_content').setStyle('height', 'auto');
				$(divName+'_content').setStyle('cursor', 'auto');
				$(divName+'_content').setStyle('background', 'none');
				return false;
			}
	}).get({
		'boxType': boxType,
		'page': page,
		'chk': chkSum,
		'rnd': ($time() + $random(0, 100))
		});
		
	return false;
};

ZDNetBox.hotareaBoxNav = function(name){
	
	var currentPage = 1;
	var currentURL = $(name+'_fetchURL').innerHTML;
	var currentChannel = $(name+'_channel').innerHTML;
	var currentChkSum = $(name+'_chk').innerHTML;
	var size = $(name+'_innercontainer_center').getScrollSize();
	var width = size.x;
	
	var activeDotImage = $(name+'_NavImage_1').getProperty('src');
	var inActiveCircleImage = $(name+'_NavImage_2').getProperty('src');
	
	$(name+'_NavPrev').removeEvents('click');
	$(name+'_NavPrev').addEvent('click', function(){
			ZDNetBox.hotareaBoxNav.loadPage(name, 'left', currentURL, currentChannel, 3, currentChkSum, width, activeDotImage, inActiveCircleImage);
		});
	
	
	$(name+'_NavButton_2').removeEvents('click');
	$(name+'_NavButton_2').addEvent('click', function(){
		ZDNetBox.hotareaBoxNav.loadPage(name, 'right', currentURL, currentChannel, 2, currentChkSum, width, activeDotImage, inActiveCircleImage);
	});
	
	$(name+'_NavButton_3').removeEvents('click');
	$(name+'_NavButton_3').addEvent('click', function(){
		ZDNetBox.hotareaBoxNav.loadPage(name, 'right', currentURL, currentChannel, 3, currentChkSum, width, activeDotImage, inActiveCircleImage);
	});	
	
	$(name+'_NavNext').removeEvents('click');
	$(name+'_NavNext').addEvent('click', function(){
			ZDNetBox.hotareaBoxNav.loadPage(name, 'right', currentURL, currentChannel, 2, currentChkSum, width, activeDotImage, inActiveCircleImage);
		});
	
	var centerslider = new Fx.Scroll($(name+'_content'));
	centerslider.set(width, 0);
	$(name+'_innercontainer_left').setStyle('display', '');
	
	$(name).setStyle('display', '');
	
	return false;
};

ZDNetBox.hotareaBoxNav.loadPage = function(name, direction, currentURL, currentChannel, page, chkSum, width, activeDotImage, inActiveCircleImage){
	
	$(name+'_NavPrev').removeEvents('click');

	if(page == 1)
		var prevpage = 3;
	if(page == 2)
		var prevpage = 1;
	if(page == 3)
		var prevpage = 2;
	
	$(name+'_NavPrev').addEvent('click', function(){
			ZDNetBox.hotareaBoxNav.loadPage(name, 'left', currentURL, currentChannel, prevpage, chkSum, width, activeDotImage, inActiveCircleImage);
		});
	
	if(page == 1)
	{
		$(name+'_NavButton_1').removeEvents();
		$(name+'_NavImage_1').setProperty('src', activeDotImage);
	}
	else
	{
		$(name+'_NavImage_1').setProperty('src', inActiveCircleImage);
		$(name+'_NavButton_1').removeEvents('click');
		
		$(name+'_NavButton_1').addEvent('click', function(){
			ZDNetBox.hotareaBoxNav.loadPage(name, 'left', currentURL, currentChannel, 1, chkSum, width, activeDotImage, inActiveCircleImage);
		});
	}
	
	if(page == 2)
	{
		$(name+'_NavButton_2').removeEvents();
		$(name+'_NavImage_2').setProperty('src', activeDotImage);
	}
	else
	{
		$(name+'_NavImage_2').setProperty('src', inActiveCircleImage);
		$(name+'_NavButton_2').removeEvents('click');
		
		if(page > 2)
		{
			$(name+'_NavButton_2').addEvent('click', function(){
				ZDNetBox.hotareaBoxNav.loadPage(name, 'left', currentURL, currentChannel, 2, chkSum, width, activeDotImage, inActiveCircleImage);
			});
		}
		else
		{
			$(name+'_NavButton_2').addEvent('click', function(){
				ZDNetBox.hotareaBoxNav.loadPage(name, 'right', currentURL, currentChannel, 2, chkSum, width, activeDotImage, inActiveCircleImage);
			});
		}
	}
	
	if(page == 3)
	{
		$(name+'_NavButton_3').removeEvents();
		$(name+'_NavImage_3').setProperty('src', activeDotImage);
	}
	else
	{
		$(name+'_NavImage_3').setProperty('src', inActiveCircleImage);
		$(name+'_NavButton_3').removeEvents('click');
		
		$(name+'_NavButton_3').addEvent('click', function(){
			ZDNetBox.hotareaBoxNav.loadPage(name, 'right', currentURL, currentChannel, 3, chkSum, width, activeDotImage, inActiveCircleImage);
		});
	}

	$(name+'_NavNext').removeEvents('click');
	
	var nextPage = (page+1)
	
	if(page == 3)
		var nextPage = 1;
	
	$(name+'_NavNext').addEvent('click', function(){
			ZDNetBox.hotareaBoxNav.loadPage(name, 'right', currentURL, currentChannel, nextPage, chkSum, width, activeDotImage, inActiveCircleImage);
		});
	
	$(name).setStyle('cursor', 'progress');
	$(name+'_innercontainer_center').setStyle('cursor', 'progress');
		
	var ajaxRequest = new Request.HTML({
		url: currentURL,
		update: name+'_innercontainer_'+direction,
			
			onSuccess: function(){
				if(direction == 'left')
					var scrollTo = 0;
				
				if(direction == 'right')
					var scrollTo = (width*2);
				
				$(name).setStyle('cursor', 'auto');
				$(name+'_innercontainer_center').setStyle('cursor', 'auto');
				
				var slider = new Fx.Scroll($(name+'_content')).start(scrollTo, 0).chain(
					function(){
						$(name+'_innercontainer_center').innerHTML = $(name+'_innercontainer_'+direction).innerHTML;
						
						var centerslider = new Fx.Scroll($(name+'_content'));
						centerslider.set(width, 0);
						$(name+'_innercontainer_'+direction).innerHTML = '<br/>';
					}
				);
			},
			onFailure: function(){
				$(name).setStyle('cursor', 'hand');
				$(name+'_innercontainer_center').setStyle('cursor', 'auto');
				return false;
			},
			onCancel: function() {
				$(name).setStyle('cursor', 'hand');
				$(name+'_innercontainer_center').setStyle('cursor', 'auto');
				return false;
			}
	}).get({
		'boxType': currentChannel,
		'page': page,
		'chk': chkSum,
		'rnd': ($time() + $random(0, 100))
		});
};

ZDNetBox.rotateDivs = new Class({
	initialize: function(divName){
		
		this.divName = divName;
		this.childs = $(divName).getChildren('div.rotator');
		var parentSize = $(divName).getScrollSize();
		$(divName).setStyle('height', (parentSize.y+20));
		
		$each(this.childs, function(currentChild){
			if(currentChild.getStyle('display') != 'none') {
				position = currentChild.getCoordinates();
			}
			
		});
		this.distanceTop = position.top;
		this.distanceleft = position.left;
		
		var i = 0;
		$each(this.childs, function(currentChild){
			currentChild.setStyle('position', 'absolute');
			currentChild.setStyle('z-index', i);
			currentChild.setStyle('width', parentSize.x);
 			currentChild.setStyle('top', this.distanceTop);
			currentChild.setStyle('left', this.distanceleft); 
			
			if(currentChild.getStyle('display') == 'none') {
				currentChild.setStyle('opacity', '0');
				currentChild.setStyle('display', 'block');
			}
			
			currentChild.set('tween', {duration: 3000});

			i++;
		});
		
		this.currentActive = 0;
		if(i > 1)
			this.nextActive = 1;
			
		this.totalElements = i;
	},
	fetchNext: function()
	{
		if (!this.childs[this.currentActive]) {
			return false;
		}
		if (!this.childs[this.nextActive]) {
			return false;
		}
		
		this.childs[this.currentActive].tween('opacity', 1, 0);
		this.childs[this.nextActive].tween('opacity', 0, 1);
			
		this.currentActive = this.nextActive;
		this.nextActive = this.nextActive + 1;
		
		if (this.totalElements == this.nextActive) {
			this.currentActive = this.totalElements-1;
			this.nextActive = 0;
		}
	},
	run: function()
	{
		var periodical;
		$clear(periodical);
		periodical = this.fetchNext.periodical(7000, this);
	}
});

ZDNetBox.zoomImage = function(imageURL, imageBU)
{
	var img = new Asset.images([imageURL], {
		onComplete: function(img){
					
			overlayBoxInnerTable.empty();
			
			var img = new Element('img', {
				id : 'overlayZoomImage',
				src : imageURL
			});
			
			var imageContainer = new Element('div', {
				'style' : 'float:left; margin:30px 20px 10px 20px; text-align:center'
			});
			
			var nofloat = new Element('div');
			nofloat.addClass("nofloat");
			
			if(img.width)
				imageWidth = img.width;
			else
				mageWidth = 250;
				
			if(imageWidth.toInt() < 200)
				imageWidth = 250;
				
			var bu = new Element('div', {
				id : 'overlayZoomImageBU',
				text: imageBU,
				'style' : 'float:left; width:'+imageWidth+'px; margin-top:10px; text-align:left;'
			});
								
			imageContainer.adopt(img);
			imageContainer.adopt(nofloat);
			imageContainer.adopt(bu);
			
			overlayBoxInnerTable.adopt(imageContainer);
				
			overlayBoxInnerTable.setStyles({width: "auto", height: "auto", overflow: "auto"});
			overlayBoxOuterTable.setStyles({width: "auto", height: "auto", overflow: "hidden"});
			
			darkLayerPosition();
			OverlayBoxSetup(true);
			overlayOpacity = '0.6';
			
			layerPositions();
			
			overlayBoxFX.overlayBoxDarkOverlay.start(overlayOpacity);
			overlayBoxFX.closeButtonDiv.start(1);
			overlayBoxState = 1;
		}
	});
	
}

ZDNetBox.scan4divs = function() {

	var rotateBoxes = $$('div.ZDNetBoxRotate'); 
	var rotators = new Object;
	$each(rotateBoxes, function(rotateBox) {
			var name = rotateBox.id;
			var nameLayer = $(rotateBox.id);
			if (nameLayer) {
				rotators[name] = new ZDNetBox.rotateDivs(name);
				rotators[name].run();
			}	
		});
	
	
	var zoomImages = $$('a.zoomImage'); 
	$each(zoomImages, function(zoomImage) {
			var altText = zoomImage.get('rel');
			zoomImage.removeEvents('click');
			zoomImage.addEvent('click', function(){
				ZDNetBox.zoomImage(zoomImage.get('href'), altText)
				return false;
				});
		});
		
	var ajaxBoxes = $$('div.hotareaBoxNav'); 
	$each(ajaxBoxes, function(ajaxBox) {
			var name = ajaxBox.id;
			var nameLayer = $(ajaxBox.id);
			if( ($(name+'_fetchURL')) && (nameLayer) )
				ZDNetBox.hotareaBoxNav(name);
		});
	
	var ajaxBoxes = $$('div.boxNav'); 
	$each(ajaxBoxes, function(ajaxBox) {
			var name = ajaxBox.id;
			var nameLayer = $(ajaxBox.id);
			if( ($(name+'_fetchURL')) && (nameLayer) )
				ZDNetBox.hotareaBoxNav(name);
		});
};

ZDNetBox.addTooltips = function(){
	
	var tipBoxes = $$('.boxTip'); 
	$each(tipBoxes, function(tipBox) {
		
		var ratingDescription = new Tips(tipBox, {
			'className':  'toolTipBox'
			});
		
		ratingDescription.removeEvents('show');
		ratingDescription.addEvent('show', function(tip){
	    		tip.fade('in');
		});
		ratingDescription.removeEvents('hide');
		ratingDescription.addEvent('hide', function(tip){
	    		tip.fade('out');
		});
	});
};
var load_method = (window.ie ? 'load' : 'domready'); 
window.addEvent(load_method, ZDNetBox.scan4divs);
window.addEvent(load_method, ZDNetBox.addTooltips);
