var tomcode = tomcode || {};

tomcode.template = {
	
	description:function(data) {

		var descriptionEl = document.querySelector('footer'),
			videoHash = data.videoHash,
			description = data.description;
			
		// if('console' in window) console.log('description', data);
		
		descriptionEl.innerHTML = '<p>' +description +'</p>';
	},
	
	message:function(data) {
		
		var content,
			header,
			contentNode,
			headerNode,
			containerEl = document.getElementById('playList'),
			messageEl = document.getElementById('messageBox'),
			wrapperEl = document.getElementById('msgWrapper'),
			headerEl = document.getElementById('msgHeader'),
			contentEl = document.getElementById('msgContent');
			
		if( ! messageEl) {
			
			messageEl = document.createElement('div');
			messageEl.setAttribute('id', 'messageBox');
			
			wrapperEl = document.createElement('div');
			wrapperEl.setAttribute('id', 'msgWrapper');

			headerEl = document.createElement('h3');
			contentEl = document.createElement('p');


			wrapperEl.appendChild(headerEl);
			wrapperEl.appendChild(contentEl);
			
			messageEl.appendChild(wrapperEl);
			containerEl.appendChild(messageEl);
		}
		
		
		switch(true) {
			
			case !! data.errorCode :
			header = tomcode.player.lang('error.title.' +data.errorCode);
			content = tomcode.player.lang('error.message.' +data.errorCode);
			break;
			
			default :
			header = data.toString();
			content = data.toString();
			break;
		}
		
		contentNode = document.createTextNode(content);
		headerNode = document.createTextNode(header);
		
		headerEl.appendChild(headerNode);
		contentEl.appendChild(contentNode);
	},
	
	embedFlash:function(data) {
		
		// console.log('embedFlash', data);
		
		var containerEl = document.getElementById('playList'),
			sourceStr = data.sourceStr,
			types = {
				ogg:'ogg',
				mp4:'mp4',
				m4v:'mp4',
				webm:'webm'
			},
			embedEl = document.createElement('embed'),
			flashVars = ['controlbar=over', 'autostart=true', 'backcolor=222222', 'frontcolor=AAAAAA'],
			flashVarsSrcString = 'file=' +sourceStr;

		flashVars.push(flashVarsSrcString);
		
		embedEl.setAttribute('flashVars', flashVars.join('&'));
		embedEl.setAttribute('allowfullscreen', 'true');
		embedEl.setAttribute('allowscriptaccess', 'always');
		embedEl.setAttribute('src', 'assets/mediaplayer-5.6/player.swf');
		embedEl.setAttribute('width', '864');
		embedEl.setAttribute('height', '486');
		embedEl.setAttribute('id', 'videoEl');
		embedEl.setAttribute('class', 'canplaythrough');
		
		containerEl.appendChild(embedEl);
	},
	
	video:function(data) {

		var containerEl = document.getElementById('playList'),
			videoHash = data.videoHash,
			sources = data.sources,
			sourceCount = 0,
			types = {
				ogg:'ogg',
				mp4:'mp4',
				m4v:'mp4',
				webm:'webm'
			},
			i, j,
			videoEl = document.createElement('video');

		function appendSourcesOrdered(order) {

			var file, fileTypes, fileType,
				computerFiles = [],
				iPhoneFiles = [];
			
			for (i = 0; i < order.length; i++) {
				
				for (j = 0; j < sources.length; j++) {

					fileTypes = sources[j].split('.');
					
					file = fileTypes.pop();
					fileType = fileTypes.pop();
					
					if(file === order[i]) {
						
						fileType = fileType.split('-').pop();

						if(fileType === 'desktop') {

							computerFiles.push(sourceEl(sources[j]));

						} else {

							iPhoneFiles.push(sourceEl(sources[j]));
						}
					}
				}
			}

			for(i = 0; i < computerFiles.length; i++) {

				videoEl.appendChild(computerFiles[i]);
			
				sourceCount++;
			}

			for(i = 0; i < iPhoneFiles.length; i++) {

				videoEl.appendChild(iPhoneFiles[i]);
			
				sourceCount++;
			}
		}
			
		function sourceEl(path) {

			var el = document.createElement('source');

			type = path.split('.').pop();
			
			el.setAttribute('src', tomcode.player.mediaPath +videoHash +'/' +path);
			el.setAttribute('type', 'video/' +types[type]);

			return el;
		}

		videoEl.setAttribute('id', 'videoEl');
		videoEl.setAttribute('width', 864);
		videoEl.setAttribute('height', 486);
		videoEl.setAttribute('controls', '');
		videoEl.setAttribute('class', 'loading');

		appendSourcesOrdered(['mp4', 'webm', 'ogg']);
		
		tomcode.error.register(sourceCount, 'errorSrcHandler', tomcode.player.tryFlash);
		
		tomcode.events.add(videoEl, 'videoEl');

		containerEl.appendChild(videoEl);

		setTimeout(function() { videoEl.load(); }, 100);
	}
};

