var playTries = 0;
var playFunction = null;

var siteUrl = 'http://www.decadeone.com/';
var videoPath = 'a/v/';

(function($) {
	//Define Variables
	var body = $(document.body),
		html = body.getParent(),
		page = $('page'),
		newsTicker,
		init;
	
	newsTicker = function() {
		var container = page.getElement('.news'),
			entries = container.getElements('article'),
			current = 0,
			max = entries.length,
			pagination = new Element('div.pagination', {
				'html': '<a class="prev">&lt;</a><span>1 / '+max+'</span><a class="next">&gt;</a>',
				'events': {
					'click:relay(a)': function(ev, clicked) {
						entries.removeClass('show');
						current = (clicked.hasClass('prev')) ? current-1 : current+1;
						if (current > max-1) {
							current = 0;
						}
						if (current < 0) {
							current = max-1;
						}
						entries[current].addClass('show');
						paginationText.set('text', current+1 + ' / ' + max);
					}
				}
			}),
			paginationText = pagination.getElement('span');
		pagination.inject(container.getElement('h2:first-child'), 'after');
		if(entries[0]) {
			entries[0].addClass('show');
		}
	};

	init = function() {
		//Dom is ready
		/* muss angepasst werden! */
		siteUrl = siteUrl = $('site').getAttribute('data-url');
		
		//console.log(Browser.firefox + ' - ' + Browser.version);
		if(Browser.firefox && Browser.version >= 3.0 && Browser.version < 3.6) {
			document.getElement('html').toggleClass('ff3');
		}
		if(Browser.Platform.ios || Browser.Platform.android || Browser.Platform.webos) {
			document.getElement('html').toggleClass('mobil');
		}
		
		if(html.hasClass('home')) {
			//Newsticker
			newsTicker();
		}
		
		if(html.hasClass('blog')) {
			/*
			if(fb_init !== undefined) {
				fb_init();
			}
			*/
		}
		
		if(html.hasClass('about')) {
		}
		
		if(html.hasClass('projects')) {
			/* Custom Slider */
			if(!Browser.Platform.ios && !Browser.Platform.android && !Browser.Platform.webos) {
			
				var projectList = $('projectList');
			
				projectList.addEvent('click:relay(a)', function(e, clicked){
					//console.log(clicked.getProperty('href'));
					//window.location.hash = 'sp=' + slider.step;
					//console.log(clicked.getProperty('href'));
					clicked.setProperty('href', clicked.getProperty('href') + '/sp=' + slider.step);
					//console.log(clicked.getProperty('href'));
					//window.location.href = clicked.getProperty('href') + '#sp=' + slider.step;
				
					//e.preventDefault();
				});
						
				/*
				var liElements = Array.from(projectList.getElements('li'));
				for(var i = 0; i < liElements.length; i++) {
					liElements[i].store('ListIndex', i);
				}
				*/
			
				projectList.setStyles({
					'overflow-x' : 'hidden',
					'overflow-y' : 'hidden',
					'right' : 10
				});
			
				var scrollSizeY = projectList.getScrollSize().y;
				var sizeY = projectList.getSize().y;
				var scrollHeight = scrollSizeY - sizeY;
			
				//var liLength = projectList.getElements('li').length;
				//var liAct = projectList.getElement('.act').getProperty('count');
				var liLength = 100;
				var liAct = 0;
			
				var regExp = /\/sp=(\d*)/ig;
				var regExpResult = regExp.exec(location.href);
				if(regExpResult) {
					//console.log(regExpResult[1]);
					liAct = regExpResult[1];
				}		
			
				var bar = new Element('div', {
					'class': 'bar'
				});
				    	
	    		var height;
	    		if(scrollHeight <= 0) {
	    			height = sizeY;
	    		}
	    		else {
	    			height = sizeY/(liLength/20);
	    		
	    			if(height < 30) {
	    				height = 30;
	    			}
	    		}
 
	    		var knob = new Element('div', {
					'class': 'knob'
				}).setStyle('height', height);  	
				
				var sliderElement = new Element('div', {
					'class': 'slider'
				});
			
				bar.inject(sliderElement);
				knob.inject(bar);
			
				sliderElement.inject(projectList, 'after');
			
				var slider = new Slider(bar, knob, {
					'wheel': true,
					'mode': 'vertical',
					'steps': liLength, //liLength-1,
					'initialStep': liAct, //liAct-1
					'snap': true
				}).addEvent('change', function(e) {
			 		var scrollPosition = e * scrollHeight / slider.options.steps;
			 		//console.log(scrollPosition + ' - ' + e + ' - ' + scrollHeight + ' - ' + slider.options.steps);
			 		projectList.scrollTo(0, scrollPosition);
			 		//console.log(-scrollPosition);
				});
			 
				slider.detach();
				slider.scrolledElement = function(event) {
					var mode = (this.options.mode == 'horizontal') ? (event.wheel < 0) : (event.wheel > 0);
					this.set(mode ? this.step - this.stepSize*4 : this.step + this.stepSize*4);
					event.stop();
				}.bind(slider);
				slider.attach();
			 
				slider.fireEvent('change', liAct);
			 
				projectList.addEvent('mousewheel', function(e){
					bar.fireEvent('mousewheel', e);
				}.bind(this));
				
			 	/*
					projectList.addEvent('mouseenter', function() {
						console.log(projectList.getScrollSize().x + ' - ' + projectList.getScrollSize().y);
					});
				*/
			}
		}
		
		if(html.hasClass('clients') || html.hasClass('awards')) {
			inhabitListWithToolTips($('page').getElement('.content ul'));
		}
		
		addVideo();
		//addVideoPreviewHandler();
	};

	$(window).addEvent('domready', init);
		
})(document.id);

var addVideo = function() {
	var video_container = $('video_container');
	var video_settings = $('video_settings');
	var video_fallback = $('video_fallback');
	
	if(!video_container || !video_container || !video_fallback) return;
	
	var player_video_settings = $('video_settings');
	//var player_container = player_video_settings.getParent();
	var video_id = player_video_settings.getElementById('video_id').innerHTML;
	if(video_id == "") video_id = 'showreel_2010';

	var video_width = player_video_settings.getElementById('video_width').innerHTML;
	var video_height = player_video_settings.getElementById('video_height').innerHTML;
	
	//console.log(player_video_settings + ' - '+ video_id +' - '+ video_width +' - '+ video_height);
	player_video_settings.destroy();
	
	var videoPlayer = null;
	var videoUrl = siteUrl + videoPath + video_id;
	
	var params = {
		videoClass: 'video_player',
		videoId: video_id,
		fallbackId: 'video_fallback',
		injectionTarget: $('video_container'),
		siteUrl: siteUrl,
		videoPath: videoPath,
		sources: {
			/*
			'mp4': {
				'src_sd': 'http://decadeone.einserver.de/showreel_2010_hd.mp4',
				'src_hd': 'http://decadeone.einserver.de/showreel_2010_sd.mp4',
				//'src_sd': 'http://media.w3.org/2010/05/video/movie_300.mp4',
				//'src_hd': 'http://media.w3.org/2010/05/video/movie_300.mp4',
				'plattform': 'html',
				'type': 'video/mp4; codecs="avc1, mp4a'
			},
			'ogv': {
				'src_sd': 'http://media.w3.org/2010/05/video/movie_300.ogv',
				'src_hd': 'http://media.w3.org/2010/05/video/movie_300.ogv',
				'plattform': 'html',
				'type': 'video/ogg; codecs="theora, vorbis"'
			},
			'webm': {
				'src_sd': 'http://media.w3.org/2010/05/video/movie_300.webm',
				'src_hd': 'http://media.w3.org/2010/05/video/movie_300.webm',
				'plattform': 'html',
				'type': 'video/webm; codecs="vorbis,vp8"'
			},
			*/
			'mp4_mobil': {
				'src_sd': videoUrl + '_iPhone.mp4',
				'src_hd': videoUrl + '_iPhone.mp4',
				'plattform': 'html',
				'type': 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"'
			},
			'mp4_desktop': {
				'src_sd': videoUrl + '_sd.mp4',
				'src_hd': videoUrl + '_hd.mp4',
				'plattform': 'flash'
			}
		},
		poster: videoUrl + '.jpg',
		width: video_width,
		height: video_height	
	};

    params.params = {
        'quality': 'high',
        //'wMode': 'transparent',
        'allowFullScreen': 'true',
        'allowScriptAccess': 'always',
        'swLiveConnect': 'true',
        'bgcolor': '#000000'
        /*
        'width' : 940,
        'height' : 406,
        'src_hd' : params.sources.f4v.src_hd,
        'src_sd' : params.sources.f4v.src_sd,
        'src_poster' : params.poster,
        'src_application_assets' : 'a/v/f/a/ApplicationAssets.swf',
        'siteUrl' : '.',
        'hd_off' : 'true',
        'autoplay' : 'false'
        */
    }
	
	//console.dir(document);
	//$(document.body)
	if(document.html.hasClass('mobil') /*|| document.html.hasClass('video')*/) {
		videoPlayer = new HtmlPlayer(params);
		//$('vimeo_container').setProperty('html', '<iframe id="player_vimeo" src="http://player.vimeo.com/video/'+ video_id +'?title=0&amp;byline=0&amp;portrait=0&amp;color=7F70BA&amp;js_api=1&amp;js_swf_id=player_vimeo" width="'+ video_width +'" height="'+ video_height +'" frameborder="0"></iframe>');
	}
	else {
		videoPlayer = new FlashPlayer(params);			
	}
	
	/*
	var moogaloop = new Swiff('http://vimeo.com/moogaloop.swf', {
		id: 'player_vimeo',
		container: 'vimeo_container',
		width: video_width,
		height: video_height,
		params: {
			wMode: 'transparent',
			allowFullScreen: 'true',
			allowScriptAccess: 'always',
			scale: 'exactfit'
		},
		vars: {
			clip_id: video_id,
			server: 'vimeo.com',
			show_title: 1,
			show_byline: 1,
			show_portrait: 1,
			//color: ,
			fullscreen: 1,
			autoplay: 0,
			loop: 0,
			js_api: 1
			// required in order to use the Javascript API
			//js_onLoad: 'vimeo_player_loaded', // moogaloop will call this JS function when it's done loading (optional)
			//js_swf_id: 'moogaloop' // this will be passed into all event methods so you can keep track of multiple moogaloops (optional)
		}
	});
	*/
}

/*
var addVideoPreviewHandler = function() {
	if(!$('player_preview') || !$('player_vimeo')) return;
	
	if(html.hasClass('mobil')) {
		$('player_preview').destroy();
	}
	else {
		$('player_preview').addEvent('click', function() {
			//$('player_vimeo').api('api_play');
			$('player_preview').destroy();
			var player_vimeo = $('player_vimeo');
			playFunction = tryToPlayVimeo.periodical(1000);
		});
	}
}
*/

var inhabitListWithToolTips = function(ulContainer) {
	var clientContainer = ulContainer;
	var clientBoxes = clientContainer.getElements('li');
	
	if(!clientBoxes || clientBoxes.length == 0) return;
	for(var i = 0; i < clientBoxes.length; i++) {			
		var toolTipContent = clientBoxes[i].getElement('.toolTipContent');
		var toolTipContentElements = null;
		if(toolTipContent) {
			toolTipContentElements = toolTipContent.getProperty('html');
			toolTipContent.destroy();
		}
		if(toolTipContentElements) {
			//console.log(toolTipContentElements);
			clientBoxes[i].setStyle('cursor', 'pointer');
			clientBoxes[i].store('toolTip', new ToolTip({injectionTarget: clientBoxes[i], text: toolTipContentElements}));
		} else {
			//clientBoxes[i].store('toolTip', new ToolTip({injectionTarget: clientBoxes[i]}));
		}
	}
	
	clientContainer.addEvent('mouseover:relay(li)', function(e, clientBox){
		//console.log('ShowToolTip');
		var toolTip = clientBox.retrieve('toolTip');
		if(toolTip) {
			toolTip.fadeToolTip(ToolTip.states.IN);
		}
	});
	clientContainer.addEvent('mouseleave:relay(li)', function(e, clientBox){
		//console.log('ShowToolTip');
		var toolTip = clientBox.retrieve('toolTip');
		if(toolTip) {
			toolTip.fadeToolTip(ToolTip.states.Out);
		}
	});
}

var flashTraceOnConsole = function(message) {
	console.log('FlashTrace: '+ message);
}

/*
var tryToPlayVimeo = function() {
	if(!this.playTries) {
		this.playTries = 0;
	}

	try {
		$('player_vimeo').api_addEventListener('onPlay', 'player_vimeo_playing');
		$('player_vimeo').api_play();
	}
	catch (err) {
		this.playTries++;
	}
	
	if(this.playTries > 10) {
		//console.log('cancel');
		clearInterval(playFunction);
		throw new Error('Video konnte nicht automatisch gestartet werden!');
	}
}

var player_vimeo_playing = function() {
	clearInterval(playFunction);
}
*/
