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])
	}
	
	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);
	filter_media(href_pieces[0]);
}

function filter_media(path){
	var sections = getSection();
	switch(sections){
		case 'video':	
			filter_video(path);
			break;
		case 'audio':
			filter_audio(path);
			break;
		case 'photo_gallery':
			filter_gallery(path);
			break;
	}
	return;
}

//this can be refactored after we get the audio going
function filter_video(path){
	var query = getActiveLinks();
	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){
	var query = getActiveLinks();
	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){
	var query = getActiveLinks();
	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"];
			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']);
			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"]);
			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');
}





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');
