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');
	}
}

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 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 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;
}

ajax_bookmark();

$(document).ready(function(){
	init_more_links();
	init_more_authors();
	init_rss();
	init_checklist();
	$('.js_highlight').glow('#FFFF99', 4000);
	//$('select.styled').sSelect({ddMaxHeight: '250px'});
	//$.history.init(ajax_bookmark);
});

