$(document).ready(function(){
	
	$('ul.sf-menu').superfish({delay:200});
	
	$('a[rel*=facebox]').facebox();

	setLinkIcons();

	//SIDEBARS
	$("a[class^='sidebar']").click(function(){
		sidebarToggle($(this), $($(this).parent().get(0)));
	});
	//close sidebars depending on screen width
	var w = $(window).width();
	if(w<=800){
		//if 800px wide or smaller
		//close media and news
		sidebarToggle($('#media .sidebar_close'), $($('#media .sidebar_close').parent().get(0)));
		sidebarToggle($('#news .sidebar_close'), $($('#news .sidebar_close').parent().get(0)));		
	
	} else if(w<=1024){
		//if 1024 or less (but greater than 800)
		//close media
		sidebarToggle($('#media .sidebar_close'), $($('#media .sidebar_close').parent().get(0)));
	}
	
	//MEDIA SORT
	$('#media_sort').change(function(){
		//alert($('#media_sort :selected').attr('value'));
		$('#media_thumbs').html('<p>sorting, please wait...</p>');

		$.get("media_thumbs.php", { media_sort: $('#media_sort :selected').attr('value')}, function(data){
			$('#media_thumbs').html(data);
			$('#media_thumbs input[@type=radio].star').rating();
			$('.media_item').click(function() { mediaLaunch($(this).metadata()) });
		});

	});
	//equalheight the three columns
	$('.eh').equalHeight($('#main'), 550);
	//facebox the media items
	$('.media_item, .thumb_holder img.thumb').click(function() {
		mediaLaunch($(this).metadata());
	});

	//FAQ
	$('dl.faq').find('dd').hide().end().find('dt').click(function() {
		//equalheight the three columns
		$('.eh').equalHeight($('#main'));

         var answer = $(this).next();
         if (answer.is(':visible')) {
             answer.slideUp();
         } else {
             answer.slideDown();
         }
     });

	 $('.expand_collapse a').toggle(
		function(){
			//equalheight the three columns
			$('.eh').equalHeight($('#main'));
			$(this).text("collapse all");
			$('dl.faq dd').slideDown();
		},
		function(){
			//equalheight the three columns
			$('.eh').equalHeight($('#main'));
			$(this).text("expand all");
			$('dl.faq dd').slideUp();
		}
	 );


	 //FACEBOX SLIDESHOW
	 $('#facebox .next').bind('click',{dir:1}, fbSlideshow);
	 $('#facebox .prev').bind('click',{dir:-1}, fbSlideshow);
	 $('#facebox .play').bind('click.facebox', function() {
		$.facebox.settings['playing'] ? facebox_stop_slideshow() : facebox_start_slideshow()
		return false
	})
	$('#facebox').bgiframe();
	$('ul.sub').bgiframe();


});//end document load
function facebox_start_slideshow() {
	$('#facebox .play').attr('src', "facebox/ss_pause.png")
	$.facebox.settings['playing'] = setInterval(function() { $('#facebox .next').click() }, $.facebox.settings['slide_duration'] * 1000)
}

function facebox_stop_slideshow() {
    $('#facebox .play').attr('src', "facebox/ss_play.png")
    clearInterval($.facebox.settings['playing'])
    $.facebox.settings['playing'] = false
}

function fbSlideshow(dir){
	dir = dir.data.dir;
	//get the thumbs and cur from either the right side or the media page
	if($.facebox.settings['from_side']) {
		var thumbs = $('#media_thumbs .media_item');
		var cur_thumb = $('#media_id_'+cur_media_id);
	} else {
		var thumbs = $('.thumb_holder .thumb');
		var cur_thumb = $('#thumb_'+cur_media_id);
	}
	//get the numerical index of the cur item
	index = thumbs.index(cur_thumb);
	
	//loop around end and beginning
	if(index==thumbs.length-1 && dir==1)
		index=0;
	else if (index==0 && dir==-1)
		index = thumbs.length-1;
	else
		index = index + dir;
	
	//trigger the click event
	$(thumbs[index]).trigger('click');		
}

function ratingCallback(value, link){
	//alert('media_id: '+cur_media_id+"\nrating: "+value);
	$('p.stars_msg').hide()
		.html('saving your vote')
		.show('fast');

	$.ajax({
	   type: "GET",
	   url: "add_media_rating.php",
	   data: {rating:value, media_id:cur_media_id},
	   success: function(msg){
		 $('p.stars_msg').html(msg)
			.show(1500)
			.animate({opactiy:1.0},3000,
				function(){
					$(this).hide(2000);
				}
			);

	   }
	 });
}
var cur_media_id;
function mediaLaunch(media){
	var src;
	if(media.media_type=='VIDEO'){
		src = '<div id="media_player">'+html_entity_decode(media.src)+'</div>';
	} else {
		src = '<img class="border" src="media/'+media.src+'" />';
	}
	$('#facebox #added').html(media.added);
	$('#facebox #creator').html(media.creator);
	$('#facebox input[type="radio"].star:checked').removeAttr('checked');
	$('#facebox input[name="media_rating"]:eq('+(media.rating)+')').attr('checked','checked');

	//update the rating stars
	//taken from the events, couldn't just call the click because that would trigger the callback to update the rating
	$.rating.groups['media_rating'].current = $('#facebox div.star:eq('+(media.rating-1)+')');
	var lnk = $('#facebox div.star:eq('+(media.rating-1)+')').children('a'); val = lnk.text();
	// Set value
	$.rating.groups['media_rating'].valueElem.val(val);
	// Update display
	$.rating.event.drain('media_rating', $('#facebox div.star:eq('+(media.rating-1)+')'), $.rating);
	$.rating.event.reset('media_rating', $('#facebox div.star:eq('+(media.rating-1)+')'), $.rating);
	
	$.facebox.settings['from_side'] = media.from_side;

	$.facebox(src);

	cur_media_id = media.media_id;
}

function sidebarToggle(clicked, parent){
	//opening the sidebar
	if(clicked.hasClass('sidebar_open')){
		//swap the classes of clicked
		clicked
			.addClass('sidebar_close')
			.removeClass('sidebar_open')
			.attr('title','close');

		//switch the heading
		$('.heading',parent)
			.css('height','21px')
			.css('background','url("layout_imgs/'+parent.attr('id')+'_horiz.png") no-repeat')
			.css('top','0');
		//show the container
		parent.children().not('.heading').not("a[class^='sidebar']").show();
		parent.width($("div[class*='item']",parent).width())
		//reset the width of #side_bars due to IE suckness
		$('#side_bars').width( $('#media').width() + $('#news').width() + 55);
		//alter the main content's margins and whatnot
		$('#main').css('margin-right', $('#side_bars').width());


	} else {
		//swap the classes of clicked
		clicked
			.addClass('sidebar_open')
			.removeClass('sidebar_close')
			.attr('title','open');
		
		//switch the heading
		$('.heading',parent)
			.css('height','200px')
			.css('background','url("layout_imgs/'+parent.attr('id')+'_vert.png") top right no-repeat')
			.css('top','25px');
		//close the container
		parent.children().not('.heading').not("a[class^='sidebar']").hide();
		parent.width('23px');
		//reset the width of #side_bars due to IE suckness
		$('#side_bars').width( $('#media').width() + $('#news').width() + 55);
		//alter the main content's margins and whatnot
		$('#main').css('margin-right', $('#side_bars').width());
	}
}

//set class for links to external sites and other document types
function setLinkIcons(){
	$('a[href^="http://"]').addClass('external').attr('target', '_blank');
	$('#main a[href$=".pdf"]').addClass('pdf').attr('target','_blank');
	$('#main a[href$=".ppt"]').addClass('powerpoint').attr('target','_blank');
	$('#main a[href$=".doc"]').addClass('word').attr('target','_blank');
	$('#main a[href$=".docx"]').addClass('word').attr('target','_blank');
	$('#main a[href$=".xls"]').addClass('excel').attr('target','_blank');
	$('#main a[href$=".csv"]').addClass('excel').attr('target','_blank');
}

$.fn.equalHeight = function(equalizer, min){
	var tallest = min ? min : 0;

	if(equalizer){
		//if there is an equalizer thats the height we want
		tallest = equalizer.height() > min ? equalizer.height() : min ;
	} else {
		//loop through the passed elements
		$(this).each(function(){
			if ($(this).height() > tallest) { tallest = $(this).height(); }
		});
	}

	$(this).each(function(){
		// for ie6, set height since min-height isn't supported
		if ($.browser.msie && $.browser.version == 6.0) { $(this).css({'height': tallest}); }
		$(this).css({'min-height': tallest}); 
	});
	
	
	return this;
}


//FROM http://phpjs.org/functions/view/424
function html_entity_decode( string, quote_style ) {
// Convert all HTML entities to their applicable characters  
// 
// version: 901.714
// discuss at: http://phpjs.org/functions/html_entity_decode
// +   original by: john (http://www.jd-tech.net)
// +      input by: ger
// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// +   bugfixed by: Onno Marsman
// +   improved by: marc andreu
// +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// -    depends on: get_html_translation_table
// *     example 1: html_entity_decode('Kevin &amp; van Zonneveld');
// *     returns 1: 'Kevin & van Zonneveld'
// *     example 2: html_entity_decode('&amp;lt;');
// *     returns 2: '&lt;'
var histogram = {}, symbol = '', tmp_str = '', entity = '';
tmp_str = string.toString();
if (false === (histogram = get_html_translation_table('HTML_ENTITIES', quote_style))) {
return false;
}
// &amp; must be the last character when decoding!
delete(histogram['&']);
histogram['&'] = '&amp;';
for (symbol in histogram) {
entity = histogram[symbol];
tmp_str = tmp_str.split(entity).join(symbol);
}
return tmp_str;
}
function get_html_translation_table(table, quote_style) {
// Returns the internal translation table used by htmlspecialchars and htmlentities  
// 
// version: 903.1614
// discuss at: http://phpjs.org/functions/get_html_translation_table
// +   original by: Philip Peterson
// +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// +   bugfixed by: noname
// +   bugfixed by: Alex
// +   bugfixed by: Marco
// +   bugfixed by: madipta
// %          note: It has been decided that we're not going to add global
// %          note: dependencies to php.js. Meaning the constants are not
// %          note: real constants, but strings instead. integers are also supported if someone
// %          note: chooses to create the constants themselves.
// %          note: Table from http://www.the-art-of-web.com/html/character-codes/
// *     example 1: get_html_translation_table('HTML_SPECIALCHARS');
// *     returns 1: {'"': '&quot;', '&': '&amp;', '<': '&lt;', '>': '&gt;'}
var entities = {}, histogram = {}, decimal = 0, symbol = '';
var constMappingTable = {}, constMappingQuoteStyle = {};
var useTable = {}, useQuoteStyle = {};
useTable      = (table ? table.toUpperCase() : 'HTML_SPECIALCHARS');
useQuoteStyle = (quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT');
// Translate arguments
constMappingTable[0]      = 'HTML_SPECIALCHARS';
constMappingTable[1]      = 'HTML_ENTITIES';
constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
constMappingQuoteStyle[2] = 'ENT_COMPAT';
constMappingQuoteStyle[3] = 'ENT_QUOTES';
// Map numbers to strings for compatibilty with PHP constants
if (!isNaN(useTable)) {
useTable = constMappingTable[useTable];
}
if (!isNaN(useQuoteStyle)) {
useQuoteStyle = constMappingQuoteStyle[useQuoteStyle];
}
if (useTable == 'HTML_SPECIALCHARS') {
// ascii decimals for better compatibility
entities['38'] = '&amp;';
if (useQuoteStyle != 'ENT_NOQUOTES') {
entities['34'] = '&quot;';
}
if (useQuoteStyle == 'ENT_QUOTES') {
entities['39'] = '&#039;';
}
entities['60'] = '&lt;';
entities['62'] = '&gt;';
} else if (useTable == 'HTML_ENTITIES') {
// ascii decimals for better compatibility
entities['38']  = '&amp;';
if (useQuoteStyle != 'ENT_NOQUOTES') {
entities['34'] = '&quot;';
}
if (useQuoteStyle == 'ENT_QUOTES') {
entities['39'] = '&#039;';
}
entities['60']  = '&lt;';
entities['62']  = '&gt;';
entities['160'] = '&nbsp;';
entities['161'] = '&iexcl;';
entities['162'] = '&cent;';
entities['163'] = '&pound;';
entities['164'] = '&curren;';
entities['165'] = '&yen;';
entities['166'] = '&brvbar;';
entities['167'] = '&sect;';
entities['168'] = '&uml;';
entities['169'] = '&copy;';
entities['170'] = '&ordf;';
entities['171'] = '&laquo;';
entities['172'] = '&not;';
entities['173'] = '&shy;';
entities['174'] = '&reg;';
entities['175'] = '&macr;';
entities['176'] = '&deg;';
entities['177'] = '&plusmn;';
entities['178'] = '&sup2;';
entities['179'] = '&sup3;';
entities['180'] = '&acute;';
entities['181'] = '&micro;';
entities['182'] = '&para;';
entities['183'] = '&middot;';
entities['184'] = '&cedil;';
entities['185'] = '&sup1;';
entities['186'] = '&ordm;';
entities['187'] = '&raquo;';
entities['188'] = '&frac14;';
entities['189'] = '&frac12;';
entities['190'] = '&frac34;';
entities['191'] = '&iquest;';
entities['192'] = '&Agrave;';
entities['193'] = '&Aacute;';
entities['194'] = '&Acirc;';
entities['195'] = '&Atilde;';
entities['196'] = '&Auml;';
entities['197'] = '&Aring;';
entities['198'] = '&AElig;';
entities['199'] = '&Ccedil;';
entities['200'] = '&Egrave;';
entities['201'] = '&Eacute;';
entities['202'] = '&Ecirc;';
entities['203'] = '&Euml;';
entities['204'] = '&Igrave;';
entities['205'] = '&Iacute;';
entities['206'] = '&Icirc;';
entities['207'] = '&Iuml;';
entities['208'] = '&ETH;';
entities['209'] = '&Ntilde;';
entities['210'] = '&Ograve;';
entities['211'] = '&Oacute;';
entities['212'] = '&Ocirc;';
entities['213'] = '&Otilde;';
entities['214'] = '&Ouml;';
entities['215'] = '&times;';
entities['216'] = '&Oslash;';
entities['217'] = '&Ugrave;';
entities['218'] = '&Uacute;';
entities['219'] = '&Ucirc;';
entities['220'] = '&Uuml;';
entities['221'] = '&Yacute;';
entities['222'] = '&THORN;';
entities['223'] = '&szlig;';
entities['224'] = '&agrave;';
entities['225'] = '&aacute;';
entities['226'] = '&acirc;';
entities['227'] = '&atilde;';
entities['228'] = '&auml;';
entities['229'] = '&aring;';
entities['230'] = '&aelig;';
entities['231'] = '&ccedil;';
entities['232'] = '&egrave;';
entities['233'] = '&eacute;';
entities['234'] = '&ecirc;';
entities['235'] = '&euml;';
entities['236'] = '&igrave;';
entities['237'] = '&iacute;';
entities['238'] = '&icirc;';
entities['239'] = '&iuml;';
entities['240'] = '&eth;';
entities['241'] = '&ntilde;';
entities['242'] = '&ograve;';
entities['243'] = '&oacute;';
entities['244'] = '&ocirc;';
entities['245'] = '&otilde;';
entities['246'] = '&ouml;';
entities['247'] = '&divide;';
entities['248'] = '&oslash;';
entities['249'] = '&ugrave;';
entities['250'] = '&uacute;';
entities['251'] = '&ucirc;';
entities['252'] = '&uuml;';
entities['253'] = '&yacute;';
entities['254'] = '&thorn;';
entities['255'] = '&yuml;';
} else {
throw Error("Table: "+useTable+' not supported');
return false;
}
// ascii decimals to real symbols
for (decimal in entities) {
symbol = String.fromCharCode(decimal);
histogram[symbol] = entities[decimal];
}
return histogram;
}
