function show_loader(){
	YAHOO.util.Dom.removeClass('loader','hide');
}

function hide_loader(){
	YAHOO.util.Dom.addClass('loader','hide');
}

function update_paginator(path,uri_query){
	var sUrl = '/common/classes/ajax/Multimedia_Paginate_Ajax.class.php?'+uri_query+'&path='+path;
	var handleSuccess = function(o){
        try{
            content = YAHOO.lang.JSON.parse(o.responseText);
        }
        catch (x){
            alert("JSON Parse failed!");
			if(o.responseText !== undefined){
				alert(o.responseText);
			}
            return;
        }
			
		if(o.responseText !== undefined){
			document.getElementById('paginator_1').innerHTML=content[0]["content"];
			document.getElementById('paginator_2').innerHTML=content[0]["content"];
			hide_loader();
		}
	};
	
	var handleFailure = function(o){
		if(o.responseText !== undefined){
			hide_loader();
		}
	};
	
	var callback = {
	  success:handleSuccess,
	  failure: handleFailure
	};

	var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback); 
}

function multimedia_nav(e, matchedEl, container){
	show_loader();
	YAHOO.util.Event.preventDefault(e);
	var primary_node_list = container.childNodes;
	var total_node_list = primary_node_list.length;
	for(i=0;i<total_node_list;i++){
		YAHOO.util.Dom.removeClass(primary_node_list[i],'active');
	}

	YAHOO.util.Dom.addClass(matchedEl.parentNode,'active');
	
	var parent_id = (matchedEl.parentNode.parentNode.getAttribute('id'));
	if(parent_id == 'primary_nav'){
		var href_pieces = matchedEl.toString().split('?');
		var tag = href_pieces[1].split('=');
		YAHOO.util.Dom.setAttribute('tag','value',tag[1])
	}
	else if(parent_id == 'secondary_nav'){
		var href_pieces = matchedEl.toString().split('?');
		var view = href_pieces[1].split('=');
		YAHOO.util.Dom.setAttribute('view','value',view[2])
	}
	
	var query = getActiveLinks();
		window.location.hash = '/'+query.tag+'/'+query.view+'/'+query.page+'/';
	filter_media(href_pieces[0]);
}

function multimedia_paginate(e, matchedEl, container){
	show_loader();
	YAHOO.util.Event.preventDefault(e);
	var href_pieces = matchedEl.toString().split('?');
	var query = getActiveLinks();
	if( matchedEl.innerHTML == '&lt;' )
	{
		query.page = parseInt(query.page) - 1;
	}
	else if( matchedEl.innerHTML == '&gt;' ){
		query.page = parseInt(query.page) + 1;
	}
	else{
		query.page = matchedEl.innerHTML;
	}
	YAHOO.util.Dom.setAttribute('page','value',query.page);
	window.location.hash = '/'+query.tag+'/'+query.view+'/'+query.page+'/';

	filter_media(href_pieces[0]);
}

function filter_media(path){
	var sections = getSection();
	var query = getActiveLinks();

	switch(sections){
		case 'video':	
			filter_video(path,query);
			break;
		case 'audio':
			filter_audio(path,query);
			break;
		case 'photo_gallery':
			filter_gallery(path,query);
			break;
	}
	return;
}

//this can be refactored after we get the audio going
function filter_video(path,query){
	var sUrl = '/common/classes/ajax/Multimedia_Video_Ajax.class.php?tag='+query.tag+'&view='+query.view+'&page='+query.page+'&total='+query.total;
	filter_media_list(path,sUrl);
}

function filter_audio(path,query){
	var sUrl = '/common/classes/ajax/Multimedia_Audio_List_Ajax.class.php?tag='+query.tag+'&view='+query.view+'&page='+query.page+'&total='+query.total;
	filter_media_list(path,sUrl);
}

function filter_gallery(path,query){
	var sUrl = '/common/classes/ajax/Multimedia_Photo_Gallery_List_Ajax.class.php?tag='+query.tag+'&view='+query.view+'&page='+query.page+'&total='+query.total;
	filter_media_list(path,sUrl);
}

function filter_media_list(path,sUrl){
	var handleSuccess = function(o){
        try{
            content = YAHOO.lang.JSON.parse(o.responseText);
        }
        catch (x){
			alert("JSON Parse failed!");
			if(o.responseText !== undefined){
				alert(o.responseText);
			}
            return;
        }
			
		if(o.responseText !== undefined){
			var query = getActiveLinks();
			document.getElementById('results').innerHTML = content[0]["content"];
			YAHOO.util.Dom.setAttribute('total','value',Math.ceil(content[0]['total']));
			update_paginator(path,'?tag='+query.tag+'&view='+query.view+'&page='+query.page+'&total='+Math.ceil(content[0]['total']));
		}
	};
	
	var handleFailure = function(o){
		if(o.responseText !== undefined){
		}
	};
	
	var callback = {
	  success:handleSuccess,
	  failure: handleFailure
	};

	var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback); 
}

function display_media(e, matchedEl, container){
	YAHOO.util.Event.preventDefault(e);
	var media_id = matchedEl.toString().split('&id=');
	var sections = getSection();
	
	switch(sections){
		case 'video':
			get_video_by_id(media_id);
			break;
		case 'audio':
			get_audio_by_id(media_id);
			break;
		case 'photo_gallery':
			get_photos_by_gallery_id(media_id);
			break;
	}
}

function get_video_by_id(media_id){
	show_loader();
	var sUrl = '/common/classes/ajax/Multimedia_Video_Item_Ajax.class.php?id='+media_id[1];
	var handleSuccess = function(o){
        try{
            content = YAHOO.lang.JSON.parse(o.responseText);
        }
        catch (x){
            alert("JSON Parse failed!");
			if(o.responseText !== undefined){
				alert(o.responseText);
			}
            return;
        }
			
		if(o.responseText !== undefined){
			document.getElementById('video_player_info').innerHTML = content[0]["content"];
			var query = getActiveLinks();
			window.location.hash = '/'+query.tag+'/'+query.view+'/'+query.page+'/'+media_id[1]+'/';
			playVideo( content[0]["file"]);
			hide_loader();
		}
	};
	
	var handleFailure = function(o){
		if(o.responseText !== undefined){
		}
	};
	
	var callback = {
	  success:handleSuccess,
	  failure: handleFailure
	};

	var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback); 
}


function get_audio_by_id(media_id){
	show_loader();
	var sUrl = '/common/classes/ajax/Multimedia_Audio_Item_Ajax.class.php?id='+media_id[1];
	var handleSuccess = function(o){
        try{
            content = YAHOO.lang.JSON.parse(o.responseText);
        }
        catch (x){
            alert("JSON Parse failed!");
			if(o.responseText !== undefined){
				alert(o.responseText);
			}
            return;
        }
			
		if(o.responseText !== undefined){
			document.getElementById('audio_player_info').innerHTML = content[0]["content"];
			YAHOO.util.Dom.setAttribute('audio_player_still','src',content[0]['image']);
			
			var query = getActiveLinks();
			window.location.hash = '/'+query.tag+'/'+query.view+'/'+query.page+'/'+media_id[1]+'/';
			playAudio( content[0]["file"]);
			hide_loader();
		}
	};
	
	var handleFailure = function(o){
		if(o.responseText !== undefined){
		}
	};
	
	var callback = {
	  success:handleSuccess,
	  failure: handleFailure
	};

	var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback); 
}

function get_photos_by_gallery_id(media_id){
	show_loader();
	var sUrl = '/common/classes/ajax/Multimedia_Gallery_Photos_Ajax.class.php?id='+media_id[1];
	var handleSuccess = function(o){
        try{
            content = YAHOO.lang.JSON.parse(o.responseText);
        }
        catch (x){
            alert("JSON Parse failed!");
			if(o.responseText !== undefined){
				alert(o.responseText);
			}
            return;
        }
			
		if(o.responseText !== undefined){
			document.getElementById('photo_gallery_container').innerHTML = content[0]["content"];
			createNewSlider(content[0]["total_photos"]);
			createNewPhotoList();
			createNewPhotoCounter(content[0]["total_photos"]);
	
			var query = getActiveLinks();
			window.location.hash = '/'+query.tag+'/'+query.view+'/'+query.page+'/'+media_id[1]+'/';
			hide_loader();
		}
	};
	
	var handleFailure = function(o){
		if(o.responseText !== undefined){
		}
	};
	
	var callback = {
	  success:handleSuccess,
	  failure: handleFailure
	};

	var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback); 
}

function createNewSlider(total){
	var table_range = total * 87;

	var slider_width = 600/table_range * 676;

	if(slider_width > 676){
		slider_width = 676;
	}
	
	var slider_range = 676-slider_width;

	if(slider_range != 0){
		var slide_conversion = (table_range-600)/slider_range;
	}
	else{
		var slide_conversion = 1;
	}
	
	control_div = document.getElementById('controls');
	removeChildrenNodes(control_div);
	YAHOO.util.Event.removeListener('slide_toggle','click');
	createSlider(slider_range,slider_width,slide_conversion);
}

function createNewPhotoList(){
	galleryImages = new Array();
	galleryTitles = new Array();
	galleryPhotographer = new Array();
	galleryNumber = new Array();

	photos = YAHOO.util.Dom.getElementsByClassName('photo_list_item','a');
	photos_length = photos.length;

	for(i=0;i<photos_length;i++){
		photo_bits = YAHOO.util.Dom.getAttribute(photos[i],'id').split('_');
		photo_id = photo_bits[1];

		img = YAHOO.util.Dom.getChildren(photos[i]);
		img_src = YAHOO.util.Dom.getAttribute(img,'src');
		img_src_bits = img_src.toString().split('_s.jpg');
		title = YAHOO.util.Dom.getAttribute(img,'title');
		var photographer = YAHOO.util.Dom.getAttribute(photos[i],'rel');
		
		galleryImages[photo_id] = new Image();
		galleryImages[photo_id].src = img_src_bits[0]+'.jpg';
		galleryTitles[photo_id] = title;
		galleryPhotographer[photo_id] = photographer;
		galleryNumber[photo_id] = i+1;
		
		if(i == 0){
			var photo_1 = photo_id;
		}
	}
	changePhoto(photo_1);
	firstPic = photo_1;
}

function createNewPhotoCounter(total){
	document.getElementById('gallery_item_number').innerHTML = '<span><em id="gallery_item_current_number">1</em> of '+total+'</span>';
}

function getSection(){
	var sections = (document.location.toString().split('multimedia/'));
	if(sections[1].indexOf('video',0) == 0){
		return 'video'
	}
	else if(sections[1].indexOf('audio',0) == 0){
		return 'audio';
	}
	else if(sections[1].indexOf('photo_gallery',0) == 0){
		return 'photo_gallery';
	}
}

function getActiveLinks(){
	//get the hidden input values
	var query = {
	  tag:YAHOO.util.Dom.getAttribute('tag','value'),
	  view: YAHOO.util.Dom.getAttribute('view','value'),
	  page: YAHOO.util.Dom.getAttribute('page','value'),
	  total: YAHOO.util.Dom.getAttribute('total','value')
	};
	return query;
}

function playVideo(f){
	so.addVariable('file',f);
	so.write('video_player');
}

function playAudio(f){
	so.addVariable('file',f);
	so.write('audio_player');
}

function initNavAndItem(){
YAHOO.util.Event.delegate('primary_nav', 'click', multimedia_nav, 'a');
YAHOO.util.Event.delegate('secondary_nav', 'click', multimedia_nav, 'a');
YAHOO.util.Event.delegate('paginator_1', 'click', multimedia_paginate, 'a');
YAHOO.util.Event.delegate('paginator_2', 'click', multimedia_paginate, 'a');
YAHOO.util.Event.delegate('results', 'click', display_media, 'a');

	var hash_pieces = window.location.hash.split('/');

	if(hash_pieces != ''){
		//set default tab
		YAHOO.util.Event.onContentReady('primary_nav', handleTagOnAvailable, this); 
		//set default view
		YAHOO.util.Event.onContentReady('secondary_nav', handleViewOnAvailable, this); 
		//set default page
		YAHOO.util.Event.onAvailable('results', handlePageOnAvailable, this); 
		//set default item
		
		if(hash_pieces[4] != ''){
			
			var media_id = Array(0,hash_pieces[4]);
			var sections = getSection();
			
			switch(sections){
				case 'video':
					YAHOO.util.Event.onAvailable('video_player_info',get_video_by_id,media_id);
					break;
				case 'audio':
					YAHOO.util.Event.onAvailable('audio_player_container',get_audio_by_id,media_id);
					break;
				case 'photo_gallery':
					YAHOO.util.Event.onAvailable('photo_image_box',get_photos_by_gallery_id,media_id);
					break;
			}
		}

		YAHOO.util.Event.onContentReady('results', finishInit, this); 

	}
	
	function finishInit(){
		var path = (window.location.toString().split('#'));
		filter_media(path[0]);
	}
	
	function handleTagOnAvailable(){
		//turn off the current active tab. There is only one, so no need to select multiple
		var tag_list = this.getElementsByTagName('li');
		var list_length = tag_list.length;
		
		for(i=0;i<list_length;i++){
			var pieces = tag_list[i].getElementsByTagName('a')[0].href.toString().split('?');
			var tag_piece = pieces[1].split('=');
			
			if(tag_piece[1] == hash_pieces[1]){
				YAHOO.util.Dom.addClass(tag_list[i], 'active');				
			}
			else{
				YAHOO.util.Dom.removeClass(tag_list[i], 'active');
			}
		}
		
		document.getElementById('tag').value = hash_pieces[1];
	}
	
	function handleViewOnAvailable(){
		var view_list = this.getElementsByTagName('li');
		var list_length = view_list.length;

		for(i=0;i<list_length;i++){

			var view_anchor = view_list[i].getElementsByTagName('a');
			if(view_anchor.length > 0){

				var view_pieces = view_anchor[0].href.toString().split('?')
				var view_piece = view_pieces[1].split('=');
				
				if(view_piece[2] == hash_pieces[2]){
					YAHOO.util.Dom.addClass(view_list[i], 'active');				
				}
				else{
					YAHOO.util.Dom.removeClass(view_list[i], 'active');
				}
			}
		}

		document.getElementById('view').value = hash_pieces[2];
	}
	
	function handlePageOnAvailable(){
		
		var page_list = this.getElementsByTagName('li');
		var list_length = page_list.length - 1;

		for(i=0;i<list_length;i++){

			var page_anchor = page_list[i].getElementsByTagName('a');
			if(page_anchor.length > 0){

				var page_pieces = page_anchor[0].href.toString().split('?')[1].split('&')[2].split('=');

				if(page_pieces[1] == hash_pieces[3]){
					YAHOO.util.Dom.addClass(page_list[i], 'active');				
				}
				else{
					YAHOO.util.Dom.removeClass(page_list[i], 'active');
				}
			}
		}
		
		document.getElementById('page').value = hash_pieces[3];

	}
	
}

initNavAndItem();

