function getjson( url , container, vars, bookmark )
{

	var containers = container.split("/");
	
	if (bookmark != false) {
		// SET URL HASH FOR BOOKMARKS
		var requestUri = get_request_uri(url);
		window.location = '#' + requestUri; // + '/container/' + container;
		//$.history.load( requestUri );
	}
	
	if( vars == null )
	{
		var vars = '';
	}
	
	$('.ajax_loader').fadeIn('fast');
	
	try{
		$.post( url , vars , function( data ){
			
			var json = data;
			
			for( var i = 0 ; i < json.response.length; i++ )
			{
				
				switch( json.response[i].type )
				{
					case 'HTML':
						$(containers[i]).html(json.response[i].data);
						break;
					case 'SUCCESS':
						success( json.response[i].data );
						break;
					case 'WARNING':
						warn( json.response[i].data );
						break;
					case 'JSCRIPT':
						eval( json.response[i].data );
						break;
				}
				
			}
			
			// Google Analytics
//			if ( pageTracker != undefined && bookmark != false ) {
//				pageTracker._trackPageview(requestUri);
//			}
			
			$('.ajax_loader').hide();
			
		},'json');
	}
	catch(e){
		warn(e);
		$('.ajax_loader').hide();
	}
	
	return false;
	
}


function aj(url,container)
{
	$(".ajax_loader").show();
	
	$.get(url, function(data){
		$(container).html(data);
		$(".ajax_loader").hide();
	});
	return false;
}


function clearfield(elem){
	if(elem.value==elem.defaultValue){
		$(elem).val('');
		$(elem).removeClass('empty');
		$(elem).removeClass('inactive');
	}
}


function init_more_links()
{
	$('.more_links a').click(function(){
		var hidden_elem = $(this).parents('.search_links').children('.extra_search_links:hidden');
		var visible_elem = $(this).parents('.search_links').children('.extra_search_links:visible');
		var more_elem = $(this).parents('.search_links').children('.more');
		var less_elem = $(this).parents('.search_links').children('.less');
		
		if( hidden_elem.length > 0 )
		{
			$(hidden_elem).slideDown( function(){
				$(more_elem).hide();
				$(less_elem).css('display','block');
			});
		}
		else
		{
			if (visible_elem.length > 0) {
				$(visible_elem).slideUp(function(){
					$(less_elem).hide();
					$(more_elem).css('display','block');
				});
			}
		}
		
		return false;
	});
}

function init_more_authors()
{
	$('.extra_authors').hide();
	$('.less_authors').hide();
	
	$('.more_authors').click( function(){
		$('.more_authors').hide();
		$('.less_authors').show();
		$('.extra_authors').slideDown();
		return false;
	});

	$('.less_authors').click( function(){
		$('.more_authors').show();
		$('.less_authors').hide();
		$('.extra_authors').slideUp();
		return false;
	});
}


function tab_filter( url )
{
	var q_elem = $('#mini_search #mini_q');
	var topic_elem = $('#mini_search #mini_topic');
	
	var q = '';
	var topic = '';
	
	if (q_elem.length > 0) {
		
		q = encodeURIComponent( q_elem.val() );
		
		if (q == 'Search...') {
			q = '';
		}
		
	}

	if (topic_elem.length > 0) {
		topic = encodeURIComponent( topic_elem.val() );
	}

	return getjson( url + '?q=' + q + '&topic=' + topic, '#tabs' );
}


function share_email( url )
{
	var post_array = new Array();
	var ajax_url = url;
	
	$('#TB_window input, #TB_window textarea').each(function(){
		post_array.push( encodeURIComponent( $(this).attr('name') ) + '=' + encodeURIComponent( $(this).val() ));
	});
	
	getjson( url, '#TB_ajaxContent', post_array.join('&') );
	return false;
} 

function init_rss()
{
	
	$('div.rssfeed').each(function(){
		getjson( $(this).attr('title'), '#' + $(this).attr('id'), null, false );
		$(this).attr('title','');
	});
}


function init_checklist()
{	
	$('ul.tree_checklist li input').click(function(){
		var id = $(this).parent('li').attr('id');
		
		if (!$(this).attr('checked')) {
			$(this).parent('li').removeClass('visible');
			$(this).parent('li').addClass('hidden');
			$('ul.tree_checklist li#'+id+' input').attr('checked', '');
		}else{
			$(this).parent('li').addClass('visible');
			$(this).parent('li').removeClass('hidden');
			$('ul.tree_checklist li#'+id+' input').attr('checked', 'checked');
		}
	});
	
	$('ul.tree_checklist li input:checked').each(function(){
		$(this).parent('li').addClass('visible');
		$(this).parent('li').removeClass('hidden');
	});
	
}

function same_address()
{
	elem = $('#sameaddress');
	
	if (!$(elem).attr('checked')) {
		$('#delivery_address').slideDown();
	}else{
		$('#delivery_address').slideUp();
	}
}

function get_ajax_request_uri( url )
{
	url = url.replace("http://","");
	requestUriArray = url.split('/');
	requestUriArray.shift();
		
	return requestUriArray.join('/');
}

function get_request_uri( url )
{
	var requestUri = '';
	var elementPosition = -1;
	var qstring_array = url.split('?');
	var qstring = '';
	
	if (qstring_array.length > 1) {
		qstring = qstring_array[1];
	}
	
	url = url.replace("http://","");
			
	requestUriArray = url.split('/');
	requestUriArray.shift();
	
	for( var i = 0; i < requestUriArray.length; i++ )
	{
		if( requestUriArray[i] == 'element' || requestUriArray[i] == 'container' )
		{
			elementPosition = i + 1;
		}
		else
		{
			if( elementPosition != i )
			{
				requestUri += '/' + requestUriArray[i];
			}	
		}
	}
	
	return requestUri + ( qstring != '' ? '?' + qstring : '' );
}

function getContainers( url )
{
	var containerArray = url.split('/container/');
	return containerArray[1];
}

function getAjaxUrl( url )
{
	var containerArray = url.split('/container/');
	return containerArray[0];
}

function ajax_bookmark()
{
	var requestUrlArray = window.location.href.split('#');
	
	if (requestUrlArray.length > 1) {
		
		if (requestUrlArray[1].indexOf('/') == 0) {
			var requestUri = get_request_uri(requestUrlArray[0]);
			
			requestUrlArray.shift();
			
			var ajaxBookmark = requestUrlArray.join('#');
			var bookmark = get_request_uri(ajaxBookmark);
			
			var ajaxBookmarkUrl = get_request_uri(ajaxBookmark)
			var containers = getContainers(ajaxBookmark);
			
			if (requestUri != bookmark) {
				window.location = ajaxBookmark;
				//getjson( ajaxBookmarkUrl, containers )
				//console.log(requestUri + ' != ' + bookmark);
			}
		}
	}
	return false;
}

function get_hover_site_class(){
	var elem = $('a.site-tab-hover');
	var hover_colour_class = null;
	
	if( elem.length > 0 )
	{
		var hover_id_parts = elem.attr('id').split('site-tab-');
		var hover_colour_class = hover_id_parts[1];
	}
	
	return hover_colour_class;
}

function get_this_site_class(elem){
	var this_id_parts = $(elem).attr('id').split('site-tab-');
	var this_colour_class = this_id_parts[1];
	return this_colour_class;
}

function init_sitetabs()
{
	//$('#site-tabs a.site-tab').each(function(){
	//	var position = $(this).position();
	//	$($(this).attr('rel')).css({'left':position.left});
	//});
	
	$('a.site-tab').click(function(){
		$('.site-tab-active').removeClass('site-tab-active');
		$(this).addClass('site-tab-active');
	});
	
	$('a.site-tab').mouseover(function(){
		
		$(this).animate({
			'marginTop': '-5px'
		}, 50, function(){
			$($(this).attr('rel')).show();
		});
			
		if (!$(this).hasClass('site-tab-active')) {
			
			$('a.site-tab-active').animate({
				'marginTop': '-17px'
			}, 50, function(){
				$($(this).attr('rel')).hide();
			});
			
			$(this).addClass('site-tab-hover');
		}
	});
	
	$('.site-tab-wrapper').mouseleave(function(){
		if (!$(this).children('a.site-tab').hasClass('site-tab-active')) {
			
			$(this).children('a.site-tab').animate({
				'marginTop': '-17px'
			}, 50, function(){
				$($(this).attr('rel')).hide();
			});
		}
	});
	
	$('#site-tabs-wrapper').mouseleave(function(){
		$('a.site-tab-active').animate({
			'marginTop': '-5px'
		}, 50, function(){
			$('.site-dropdown').hide();
		});
	});
}



var scrollableFlags = {};

function init_scrollables(){
	// initialize scrollable together with the navigator plugin
	$(".scrollable").each(function(){
		
		// Fix Heights
		var newHeight = $(this).height();
		
		$(this).children('a, div').each(function(){
			var childHeight = $(this).outerHeight();
			newHeight = childHeight > newHeight ? childHeight : newHeight;
		});
		
		if( newHeight > $(this).height() ) $(this).height(newHeight);
			
		// Loop scrollables		
		var id = $(this).attr('id');
		scrollableFlags[id] = { seeking : false };
		
		$(this).scrollable({ 
			mousewheel: true,
			onBeforeSeek: function(){
				if( ( this.getSize() - 1 ) == this.getIndex() && !scrollableFlags[id].seeking ){
					scrollableFlags[id].seeking = true;
					this.seekTo(0);
				}else{
					scrollableFlags[id].seeking = false;
				}
			}
		})
		.navigator()
		.autoscroll({ 
			autoplay: true 
		});	
	});
}

var cur_cal = '';

function reload_cal(year,month) {											
	// Ajax
	
	$.get("ajax.php", { type: 'calendar', year: year, month: month }, function(data){	
		cur_cal = '';
		$('#calendar').html(data);
	});
}

function cal(year,month) {											
	// Ajax
	if($('#cal_pop').is(":visible")){
		$('#cal_pop').slideUp('slow',function(){
			reload_cal(year,month);
		});
	}else{
		reload_cal(year,month);
	}
}

function caltog_slide(new_cal){
	var day_entries = $('#'+new_cal).html();
	$('#cal_pop').html(day_entries);
	$('#cal_pop').slideDown();
}

function caltog(new_cal){
	
	if(new_cal != cur_cal){	
		if($('#cal_pop').is(":visible")){
			$('#cal_pop').slideUp('slow',function(){	  
					caltog_slide(new_cal);
					cur_cal = new_cal;
			});
		}else{
			caltog_slide(new_cal);
			cur_cal = new_cal;
		}
	}
	
}

function ajax_fetch(x,y){ 
	return true; 
}


function plasma( video_path , image_path , description )
{
	try
	{
		clearInterval(intervalId);
	}
	catch(e)
	{
	}
	
	$('select').hide();
	
	if( video_path.lastIndexOf(".flv") != -1 )
	{
		var so = new SWFObject('assets/flash/mediaplayer.swf','mpl','680','450','8');
		so.addParam('allowscriptaccess','always');
		so.addParam('allowfullscreen','true');
		so.addVariable('height','450');
		so.addVariable('width','680');
		so.addVariable('file',video_path);
		so.addVariable('image',image_path);
		so.addVariable('autostart','true');
		so.write('player');
		$('#plasma #panel_strap').html( '' );
		$('#plasma #description').html( description );
	}
	
	if( video_path.lastIndexOf(".mp3") != -1 )
	{
		var so = new SWFObject('assets/flash/mediaplayer.swf','mpl','680','20','8');
		so.addParam('allowscriptaccess','always');
		so.addParam('allowfullscreen','true');
		so.addVariable('height','20');
		so.addVariable('width','680');
		so.addVariable('file',video_path);
		so.addVariable('image',image_path);
		so.addVariable('autostart','true');
		so.write('player');
		$('#plasma #panel_strap').html( '<img src="/assets/images/mic.gif" /> ' + description );
		$('#plasma #description').html( '' );
	}
	
	$('#plasma').fadeIn('fast');
	
	return false;

}

function hideplasma()
{
	$('select').show();
	$('#plasma').fadeOut('slow');
	//$('#outer_wrapper').fadeTo('fast',1);
	return false;
}


$(document).ready(function(){
	// Show sublinks - uses a.active on parent
	
	var active_div = $('#right_col .main_links a.active');
	var parent_div = $(active_div).parent();
	
	// Only try to show if sublinks exist
	if($('.sub_link', parent_div).length > 0)
	{
		$(active_div).addClass('shown');
		$('.sub_link', parent_div).show();
	}
	
	$('.addappointment').hover(
		function () {
			$(this).css('background-position','0px -12px');
		},
		function () {
			$(this).css('background-position','0 0');
		}
	);
	
});


function show_sublinks(div)
{
	if($(div).hasClass('shown'))
	{
		// Hide all open sublinks
		$('#right_col .main_links .sub_link').hide();
		
		// Remove any instances of shown class
		$('#right_col .main_link a.shown').removeClass('shown');
	}
	else
	{
		// Hide all open sublinks
		$('#right_col .main_links .sub_link').hide();
		
		// Remove any instances of shown class
		$('#right_col .main_link a.shown').removeClass('shown');
		
		// Add shown to triggered class
		$(div).addClass('shown');
		
		var target_div = $(div).parent();
		$('.sub_link',target_div).show();
	}
	
	
}

function init_marquee(){
	$('.ticker-pad').each(function(){
		var tWidth = $(this).width();
		var h1Width = 0;
		
		$(this).find('h1').each(function(){
			h1Width += $(this).outerWidth();
		});
		
		var h1MenuWrapper = $(this).find('.marquee-menu');
		
		if( h1MenuWrapper.length > 0 )
			h1MenuWrapper.width(h1Width);
		
		var mWidth = tWidth - h1Width - 5;
		$(this).find('marquee').width(mWidth);
	});
	
	$('.ticker-pad marquee').attr('scrollamount',5);
	
	$('.ticker-pad marquee').mouseover(function(){
		this.stop();
	});
	
	$('.ticker-pad marquee').mouseout(function(){
		this.start();
	});
}

function reply( comment_id )
{
	if( comment_id == '' )
	{
		$('#response').hide();
		$('#response_comment').html('');
	}
	else
	{
		var html = $('#comment_' + comment_id).html();
		$('#response').show();
		$('#response_comment').html(html);
	}
	
	$('input#parent_comment').val(comment_id);
	
}

function add_user(id)
{
	var user_title = $('.link_'+id).html();
	
	if ($('#user_link_' + id).length == 0 ) {
		var html = '<div class="link left" id="user_link_' + id + '"><p><a class="left close" href="#" onclick="return remove_user(\'' + id + '\');"></a>'+ user_title +'</p></div>';
		var field = '<input name="recipient[]" type="hidden" value="'+id+'" id="user_link_field_'+id+'" />';
		$('div#linked_user_items').append(html);
		$('div#linked_user_fields').append(field);
		
	}
	else
	{
		warn('"' + user_title + '" has already been linked');
	}
	
	return false;
}

function remove_user(id)
{
	$('#user_link_'+id).remove();
	$('#user_link_field_'+id).remove();
	return false;
}

function init_stylish_selects()
{
	if( $.browser.msie && $.browser.version.substr(0,1)<7 )
		return true;
		
	$('select.stylish-select').each(function(){
		
		var containerId = 'dd-container-' + $(this).attr('id');
		var valId = 'dd-val-' + $(this).attr('id');
		var ddWidth = parseInt($(this).outerWidth());
		
		$(this).css({
				'position':'absolute', 
				'top':'0', 
				'left':'0', 
				'z-index':'100', 
				'width':'auto' 
			});
		
		$(this).fadeTo(0,0);
		
		$(this).before('<div id="' + containerId + '" class="stylish-select-container"></div>');
		
		$(this).change(function(){
			$('#' + valId + ' .select-val').html($(this).find('option:selected').html());
		});
				
		$('#'+containerId).append('<div class="stylish-select" id="' + valId + '"><div class="select-val-wrapper"><div class="select-val">' + $(this).find('option:selected').html() + '</div></div></div>');
		$('#'+containerId).append($(this));
		
		var	valElem = $('#' + valId);
		var ddPadding = parseInt(valElem.css('paddingLeft')) + parseInt(valElem.css('paddingRight'));
				
		$('#' + valId).width((ddWidth-ddPadding)+'px');
		$('#' + valId + ' .select-val-wrapper').width((ddWidth-ddPadding)+'px');
			
	});
}

ajax_bookmark();

$(document).ready(function(){
	init_more_links();
	init_more_authors();
	init_rss();
	init_checklist();
	init_marquee();
	init_sitetabs();
	init_scrollables();
	init_stylish_selects();
});
