String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

has_modal_frame = false;



var create_modal_frame = function(registration) {


	if (!has_modal_frame) {
		has_modal_frame = true;
		$body = $('body');
		
		var background = document.createElement("div"); var $background = jQuery(background);
		background.id = 'modal-blur';
	
		var container = document.createElement("div"); var $container = jQuery(container );
		container .id = 'modal-container';
	
		var cover = document.createElement("div"); var $cover = jQuery(cover);
		cover.id = 'modal-cover';

		var frame = document.createElement("div"); var $frame = jQuery(frame);
		frame.id = 'modal-frame';
		var inset = document.createElement("div"); var $inset = jQuery(inset);

		inset.id = 'modal-inset';

		$background.html("");
		$inset.html("hello");
		$frame.html(inset);
		$container .html(cover);
		$cover.html(frame);
		$body.css('overflow','hidden');
		$body.append(background);
		$body.append(container );
		
		var destroy_modal_frame = function() {
			if (has_modal_frame) {
	
				$body.css('overflow','auto');
				$background.remove();
				$container.remove();
				has_modal_frame = false;
			}
		};
		$(inset).html("<div style='position:absolute; left:0px; top:0px; height:700px; width:700px; background:#FBFBFB;'><img style='padding:6px; margin-left:100px;' src='" + themeDir + "/images/adorners/ajax-loader-light_gray.gif'/></div>");

		$.post( themeDir+'/modal.php', {action:'get_login'}, function(returned_data)
		{
			$inset.html(returned_data);
			create_controls(inset);
			create_carets(inset);
			create_stub_menus(inset);
			$inset.find('.destroy-modal').click(destroy_modal_frame);
			
		if (registration && regStatus != "") {
				status = regStatus;
							 
			  			$('#login-message').addClass('hidden');
	
						$('#modal-stub-menu').page('moveto', $('#page-register').get(0));
						
						$('#stub-login').addClass('_disabled');
						$('#stub-password').addClass('_disabled');
				  		$('#page-login').addClass('_disabled');
						$('#page-password').addClass('_disabled');
	
			  		if (status == 'new') {
						
				  		$('#stub-register-password').removeClass('hidden');
				  		$('#page-register-password').removeClass('hidden');
	
						$('#page-register-new').addClass('hidden');
				  		$('#stub-register-new').addClass('hidden');
				  		
				  		$('#register-stub-menu').page('moveto', $('#page-register-password').get(0));
	
					}
					else if (status == 'password_set') {
				  		$('#stub-register-social').removeClass('hidden');
				  		$('#page-register-social').removeClass('hidden');
				  		
				  		$('#page-register-new').addClass('hidden');
				  		$('#stub-register-new').addClass('hidden');
	
	
						$('#register-stub-menu').page('moveto', $('#page-register-social').get(0));
						
					}
					else if (status == 'social_sites_linked') {
				  		$('#stub-register-identity').removeClass('hidden');
				  		$('#page-register-identity').removeClass('hidden');
				  		
				  		$('#page-register-new').addClass('hidden');
				  		$('#stub-register-new').addClass('hidden');
				  
						$('#register-stub-menu').page('moveto', $('#page-register-identity').get(0));
						
					}

			
			}	
		
		});
		

	}

};

function do_register()
{
	create_modal_frame(true);
}

function do_login()
{
	create_modal_frame(false);
}

function get_start_section() {

	var start_section = "";
	var address = decodeURI(window.location);     
	var pound = address.indexOf("#");
	if (pound >= 0) start_section = address.substring(pound + 1).trim(); 
	return start_section;       
}

var start_section = get_start_section();


(function($){

	$(document).ready(function(){
	//	$('#hot-featured-stub-menu').html(document.cookie);
		if (location.hash == "#registration" && regStatus != "") {
				create_modal_frame(true);
		}
		if (location.hash == "#login" && loginUser == "") {
			create_modal_frame(false);
		}
	});	
})(jQuery);


function do_logout()
{	

	$('#modal-action-wait').html('<img src="'+themeDir+'/images/adorners/ajax-loader-white-smoke-small.gif"/>');

	$('#modal-action-wait').removeClass('hidden');
	
	var params = {
        action:'do_logout',
        cookie:encodeURIComponent(document.cookie)
    };

	$.post(themeDir+"/modal.php",
		params,
		function(returned_data)
		  {
		  	
		  	var returned_data = returned_data.trim();
			if (returned_data == "success")
			{
				$('body').css('overflow','auto');
				$('#login-message').addClass('hidden');
				$('#modal-blur').remove();
				$('#modal-container').remove();
				has_modal_frame = false;					
				location.reload(true);
		  	}
		  }
	  	
	  );

}

function user_password()
{
	var fields = $('#register_password_form').formSerialize();
	var params = {
            action:'do_password',
            cookie:encodeURIComponent(document.cookie)
        };
	params = fields + '&' + $.param(params);
	$('#register-password-message').addClass('hidden');
	$('#register-password-wait').html('<img src="'+themeDir+'/images/adorners/ajax-loader-small.gif"/>');
	$('#register-password-wait').removeClass('hidden');
	$.post(themeDir+"/modal.php",
		params,
		function(returned_data)
		  {
			$('#register-password-wait').addClass('hidden');
			var returned_data = returned_data.trim();
			if (returned_data == "success")
			{
		  		$('#stub-register-social').removeClass('hidden');
		  		$('#page-register-social').removeClass('hidden');


				$('#page-register-password').addClass('hidden');
		  		$('#stub-register-password').addClass('hidden');
		  		
		  		$('#register-stub-menu').page('moveto', $('#page-register-social').get(0));

			}
			else
			{
				var error_message = '';
		  
		  		if (returned_data == 'password_empty')
		  			error_message = 'The password field is empty.';
		  		else if (returned_data == 'retype_empty')
		  			error_message = 'You did not re-enter your password.';
		  		else if (returned_data == 'password_mismatch')
		  			error_message = 'The two fields you entered do not match.';
		  		else if (returned_data == 'fail')
		  			error_message = 'Did not recognize logon.';
		  		
		  		if (error_message.length > 0) error_message = '<span style="text-transform:uppercase; font-size:smaller;">Error:</span> ' + error_message;
		
		  		$('#register-password-message').html(error_message);
		  		if (error_message.length > 0) $('#register-password-message').removeClass('hidden');
		  		else $('#register-password-message').addClass('hidden');

			
			}
		  }
	);

}


function user_link_social()
{
	var fields = $('#register_social_form').formSerialize();
	var params = {
            action:'do_social',
            cookie:encodeURIComponent(document.cookie)
        };
	params = fields + '&' + $.param(params);
	$('#register-social-message').addClass('hidden');
	$('#register-social-wait').html('<img src="'+themeDir+'/images/adorners/ajax-loader-small.gif"/>');
	$('#register-social-wait').removeClass('hidden');
	$.post(themeDir+"/modal.php",
		params,
		function(returned_data)
		  {
			$('#register-social-wait').addClass('hidden');
			var returned_data = returned_data.trim();
			if (returned_data == "success")
			{
		  		$('#stub-register-identity').removeClass('hidden');
		  		$('#page-register-identity').removeClass('hidden');


				$('#page-register-social').addClass('hidden');
		  		$('#stub-register-social').addClass('hidden');
		  		
		  		$('#register-stub-menu').page('moveto', $('#page-register-identity').get(0));

			}
			else
			{
				var error_message = '';
		  
		  		
		  		if (error_message.length > 0) error_message = '<span style="text-transform:uppercase; font-size:smaller;">Error:</span> ' + error_message;
		
		  		$('#register-social-message').html(error_message);
		  		if (error_message.length > 0) $('#register-social-message').removeClass('hidden');
		  		else $('#register-social-message').addClass('hidden');

			
			}
		  }
	);


}

function user_identity()
{
	var fields = $('#register_identity_form').formSerialize();
	var params = {
            action:'do_identity',
            cookie:encodeURIComponent(document.cookie)
        };
	params = fields + '&' + $.param(params);
	$('#register-identity-message').addClass('hidden');
	$('#register-identity-wait').html('<img src="'+themeDir+'/images/adorners/ajax-loader-small.gif"/>');
	$('#register-identity-wait').removeClass('hidden');
	$.post(themeDir+"/modal.php",
		params,
		function(returned_data)
		  {
			$('#register-identity-wait').addClass('hidden');
			var returned_data = returned_data.trim();
			if (returned_data == "success")
			{
		  		$('#stub-register-complete').removeClass('hidden');
		  		$('#page-register-complete').removeClass('hidden');


				$('#page-register-identity').addClass('hidden');
		  		$('#stub-register-identity').addClass('hidden');
				$('#register-complete-wait').html('<img src="'+themeDir+'/images/adorners/ajax-loader-small.gif"/>');
				$('#register-complete-wait').removeClass('hidden');
			  		
		  		$('#register-stub-menu').page('moveto', $('#page-register-complete').get(0));
		  		
		  		
					location.hash = "";
					location.reload(true);

			}
			else
			{
				var error_message = '';
		  
		  		
		  		if (error_message.length > 0) error_message = '<span style="text-transform:uppercase; font-size:smaller;">Error:</span> ' + error_message;
		
		  		$('#register-identity-message').html(error_message);
		  		if (error_message.length > 0) $('#register-identity-message').removeClass('hidden');
		  		else $('#register-identity-message').addClass('hidden');

			
			}
		  }
	);


}


function user_register()
{
	var fields = $('#register_selection_form').formSerialize();
	var params = {
            action:'do_register',
            cookie:encodeURIComponent(document.cookie)
        };
	params = fields + '&' + $.param(params);
	$('#register-message').addClass('hidden');
	$('#register-wait').html('<img src="'+themeDir+'/images/adorners/ajax-loader-small.gif"/>');
	$('#register-wait').removeClass('hidden');
	$.post(themeDir+"/modal.php",
		params,
		function(returned_data)
		  {
		  	$('#register-wait').addClass('hidden');

		  	var returned_data = returned_data.trim();
			if (returned_data == "success")
			{
				$('#register-message').addClass('hidden');
				$('#login-message').html('Your user account has been created. Check your e-mail for a password to log in and continue with the registration process.');
				$('#login-message').removeClass('hidden');
				$('#modal-stub-menu').page('moveto', $('#page-login').get(0));

		  	}
		  	else
		  	{

		  		var error_message = '';
		  
		  		if (returned_data == 'username_exists')
		  			error_message = 'The username you provided already exists.';
		  		else if (returned_data == 'email_exists')
		  			error_message = 'The e-mail you provided is already registered with a user.';
		  		else if (returned_data == 'email_invalid')
		  			error_message = 'The e-mail you provided is invalid.';
		  		else if (returned_data == 'username_invalid')
		  			error_message = 'The username you provided is invalid.';
		  		else if (returned_data == 'empty_username')
		  			error_message = 'The username field is empty.';
		  		else if (returned_data == 'empty_email')
		  			error_message = 'The e-mail field is empty.';
		  		else if (returned_data == 'fail')
		  			error_message = 'A user is already logged in.';
		  		
		  		if (error_message.length > 0) error_message = '<span style="text-transform:uppercase; font-size:smaller;">Error:</span> ' + error_message;
		
		  		$('#register-message').html(error_message);
		  		if (error_message.length > 0) $('#register-message').removeClass('hidden');
		  		else $('#register-message').addClass('hidden');
		  	}
		  	
		  	
		  
		  }
	  	
	  );


}

function user_password_recover()
{
	var fields = $('#password_recover_selection_form').formSerialize();
	var params = {
            action:'do_password_recover',
            cookie:encodeURIComponent(document.cookie)
        };
	params = fields + '&' + $.param(params);

	$('#recover-password-message').addClass('hidden');
	$('#recover-password-wait').html('<img src="'+themeDir+'/images/adorners/ajax-loader-small.gif"/>');
	$('#recover-password-wait').removeClass('hidden');

	$.post(themeDir+"/modal.php",
		params,
		function(returned_data)
		  {
		  	$('#recover-password-wait').addClass('hidden');

		  	var returned_data = returned_data.trim();

			if (returned_data == "success" )
			{
				$('#recover-password-message').addClass('hidden');
				$('#login-message').removeClass('hidden');
				$('#login-message').html("Check your e-mail for the confirmation link.");
				$('#modal-stub-menu').page('moveto', $('#page-login').get(0));
		  	}
		  	else
		  	{
		  		var error_message = returned_data;
		  		
		  		if (error_message.length > 0) error_message = '<span style="text-transform:uppercase; font-size:smaller;">Error:</span> ' + error_message;
		  		$('#recover-password-message').html(error_message);
		  		if (error_message.length > 0) $('#recover-password-message').removeClass('hidden');
		  		else $('#recover-password-message').addClass('hidden');
		  	}
		  
		  }
	  	
	  );


}
			  		


function user_login()
{

	var fields = $('#login_selection_form').formSerialize();
	var params = {
            action:'do_login',
            cookie:encodeURIComponent(document.cookie)
        };
	params = fields + '&' + $.param(params);
	$('#login-message').addClass('hidden');
	$('#login-wait').html('<img src="'+themeDir+'/images/adorners/ajax-loader-small.gif"/>');
	$('#login-wait').removeClass('hidden');
	$.post(themeDir+"/modal.php",
		params,
		function(returned_data)
		  {
		  	$('#login-wait').addClass('hidden');

		  	var returned_data = returned_data.trim();

			if (returned_data == "success" || returned_data.indexOf('registration_',0) > -1)
			{
				$('#login-message').addClass('hidden');
				$('#modal-blur').remove();
				$('#modal-container').remove();
				has_modal_frame = false;
				$('#modal-action-wait').html('<img src="'+themeDir+'/images/adorners/ajax-loader-white-smoke-small.gif"/>');
				$('#modal-action-wait').removeClass('hidden');
				if (returned_data.indexOf('registration_',0) > -1)
					location.hash = "#registration";
					location.reload(true);
		  	}
		  	else
		  	{
		  		var error_message = '';
		  		
		  		if (returned_data == 'incorrect_password')
		  			error_message = 'Incorrect password.';
		  		else if (returned_data == 'empty_password')
		  			error_message = 'The password field is empty.';
		  		else if (returned_data == 'empty_username')
		  			error_message = 'The username field is empty.';
		  		else if (returned_data == 'invalid_username')
		  			error_message = 'Invalid username.';
		  		else if (returned_data == 'fail')
		  			error_message = 'A user is already logged in.';

		  		if (error_message.length > 0) error_message = '<span style="text-transform:uppercase; font-size:smaller;">Error:</span> ' + error_message;
		  		$('#login-message').html(error_message);
		  		if (error_message.length > 0) $('#login-message').removeClass('hidden');
		  		else $('#login-message').addClass('hidden');
		  	}
		  
		  }
	  	
	  );

}

function loginget(page)
{

if (typeof(page) == 'undefined')
	page = 'login';
	var login = $('#user_login').val();
	var fields = $('#login_selection_form').formSerialize();
	var oldhtml = $('#login_selection').html();
	 
	 $('#login_selection').html("<img style='padding:6px;' src='" + themeDir + "/images/adorners/ajax-loader.gif'/>");
	
	
	var params = {
			page:page,
                        action:'get_login',
                        cookie:encodeURIComponent(document.cookie)
                };

                params = fields + '&' + $.param(params);
	$('#login_message').hide();
	$.post(themeDir+"/login-menu.php",
	params,
	function(returned_data)
	  {
	  	
	  	var returned_data = returned_data.trim();
		if (returned_data.substr(0, 4) == '<div')
		{
	  		$('#login_selection').html(returned_data);
	  		if (page == 'settings') $('#login_menu_title').html('User settings: <span class="active" id="login_menu_active">'+login+'</span>'); else $('#login_menu_title').html('Log in / Register');
	  	}
	  	else
	  	{
	  		 $('#login_selection').html(oldhtml);
	  		var error_message = '';
	  		if (returned_data == 'incorrect_password')
	  			error_message = 'Incorrect password.';
	  		else if (returned_data == 'empty_password')
	  			error_message = 'The password field is empty.';
	  		else if (returned_data == 'invalid_username')
	  			error_message = 'Invalid username.';
	  		if (error_message.length > 0) error_message = '<span style="text-transform:uppercase; font-size:12px;">Error:</span> ' + error_message;
	  		$('#login_message').html(error_message);
	  		if (error_message.length > 0) $('#login_message').show(); else $('#login_message').hide();
	  	}
		bind_focus();
	  	bind_keypress();
	  
	  }
	  	
	  );


}

function archiveget(id)
{
	var rawid = id;
	var truncate_suffix = "-truncate";
	var trunclen = truncate_suffix.length;
	var truncate = false;

	if (id.substr(id.length - trunclen, trunclen) == "-truncate") {
		id = id.substr(0, id.length - trunclen);
		truncate = true;
	}
	
	var prefix = "archive-selection-";
	var prefixlen = prefix.length;
	
	var postfix = id.substr(prefixlen, id.length - prefixlen);
	var parts = postfix.split('-');
	
	archive_selection_first = $('#'+rawid).get(0);
	var archive_selection = $(archive_selection_first).children().get(0);

		
		$(archive_selection).html("<div style='position:absolute; left:0px; top:0px; height:800px; width:750px; background:#FBFBFB;'><img style='padding:6px; margin-left:100px;' src='" + themeDir + "/images/adorners/ajax-loader-light_gray.gif'/></div>");

	
	var input = {};
	
	if (parts.length == 1)
	{
		if (truncate)
			input = {year:parts[0], action:'get_archive', truncate:1};
		else
			input = {year:parts[0], action:'get_archive'};
	}
	else if (parts.length == 2)
	{
		if (truncate)
			input = {year:parts[0], month:parts[1], action:'get_archive', truncate:1};
		else
			input = {year:parts[0], month:parts[1], action:'get_archive'};
	}
	else if (parts.length == 3)
		input = {year:parts[0], month:parts[1], week:parts[2], action:'get_archive'};
	else if (parts.length == 4)
		input = {year:parts[0], month:parts[1], week:parts[2], day:parts[3], action:'get_archive'};
		

		
		$.post(themeDir+"/page-menu.php",
			input,
			function(returned_data)
			{
				archive_selection_first = $('#'+rawid).get(0);
				var archive_selection = $(archive_selection_first).children().get(0);
				
				$(archive_selection).html(returned_data);
				create_carets(archive_selection_first);
				create_stub_menus(archive_selection_first);
			});

}


function archiveload()
{
	var yearstubmenu = $("#year-archive-stub-menu").get(0);
	var parent  = $(yearstubmenu).parents().get(0);

	var truncate = $(yearstubmenu).hasClass('truncate');
	if (truncate)
		input = {truncate:1, action:'get_archive'};
	else
		input = {action:'get_archive'};
		
		$(yearstubmenu).html("<div style='position:absolute; left:0px; top:0px; height:800px; width:750px; background:#FBFBFB;'><img style='padding:6px; margin-left:100px;' src='" + themeDir + "/images/adorners/ajax-loader-light_gray.gif'/></div>");

		$.post(themeDir+"/page-menu.php",
			input,
			function(returned_data)
			{
		
				$(yearstubmenu).html(returned_data);
				create_carets(parent);
				create_stub_menus(parent);
			});

}



function blogrollget(slug)
{

$('#link_category_selector').children().removeClass("selected_item");
$('#link_category_selector_'+slug).addClass("selected_item");
if (typeof(slug) == 'undefined')
	$('#link_category_selector_').addClass("selected_item");
else	$('#link_category_selector_'+slug).addClass("selected_item");

$('#blogroll_selection').html("<img style='padding:6px; margin-left:100px;' src='" + themeDir + "/images/adorners/ajax-loader.gif'/>");
$.post(themeDir+"/page-menu.php",
	{slug:slug, action:'get_blogroll'},
	function(returned_data)
	  {
	
	  	$('#blogroll_selection').html(returned_data);
	  
	  });

}

function categoryget(type, slug, trunc)
{	
	var truncate = false;
	if (typeof(trunc) != 'undefined')
		truncate = true;
	
	if (typeof(type) == 'undefined' || type == false)
	{ 
		$('#category_select_message').show();
		$('#category_select_return').hide();
	
	var items = {};
	if (truncate) items = {type:null, action:'get_category', truncate:1};
	else items = {type:null, action:'get_category'};
	$('#category_selection').html("<img style='padding:6px; margin-left:100px;' src='" + themeDir + "/images/adorners/ajax-loader.gif'/>");
	$.post(themeDir+"/page-menu.php",
	items,
	function(returned_data)
	  {
		var category_selection = $('#category_selection').get(0);
	  	$('#category_selection').html(returned_data);
	  	create_carets(category_selection);
	  });		
	}
	else
	{ 
		$('#category_select_message').hide();
		$('#category_select_return').show();
		var category_selection = $('#category_selection').get(0);
		
	var items = {};
	if (truncate) items = {type:type, slug:slug, action:'get_category', truncate:1};
	else items = {type:type, slug:slug, action:'get_category'};
	$('#category_selection').html("<img style='padding:6px; margin-left:100px;' src='" + themeDir + "/images/adorners/ajax-loader.gif'/>");
	$.post(themeDir+"/page-menu.php",
	items,
	function(returned_data)
	  {
	
		category_selection = $('#category_selection').get(0);
	  	$('#category_selection').html(returned_data);

	  	create_carets(category_selection);
	  });		
	
	}

}

function categoryload()
{
	var category_selection = $('#category_selection').get(0);
	var truncate = $(category_selection).hasClass('truncate');
	if (truncate)
		categoryget(false,null,1);
	else
		categoryget(false,null);
}

(function($){

	$(document).ready(function(){
		archiveload();
		categoryload();	
	});	
})(jQuery);


function trendsget(type, slug, trunc)
{	
	var truncate = false;
	if (typeof(trunc) != 'undefined')
		truncate = true;


	if (typeof(type) == 'undefined' || type == false)
	{ 
		$('#trends_select_message').show();
		$('#trends_select_return').hide();
		
	var items = {};
	if (truncate) items = {type:null, action:'get_trends', truncate:1};
	else items = {type:null, action:'get_trends'};

	$('#trends_selection').html("<img style='padding:6px; margin-left:100px;' src='" + themeDir + "/images/adorners/ajax-loader.gif'/>");
	$.post(themeDir+"/page-menu.php",
	items,
	function(returned_data)
	  {
		var trends_selection = $('#trends_selection').get(0);
	  	$('#trends_selection').html(returned_data);
	  	create_carets(trends_selection);
	  });		
	}
	else
	{ 
		$('#trends_select_message').hide();
		$('#trends_select_return').show();
		var trends_selection = $('#trends_selection').get(0);
		
			var items = {};
	if (truncate) items = {type:type, slug:slug, action:'get_trends', truncate:1};
	else items = {type:type, slug:slug, action:'get_trends'};

	$('#trends_selection').html("<img style='padding:6px; margin-left:100px;' src='" + themeDir + "/images/adorners/ajax-loader.gif'/>");
	$.post(themeDir+"/page-menu.php",
	items,
	function(returned_data)
	  {
	
		var trends_selection = $('#trends_selection').get(0);
	  	$('#trends_selection').html(returned_data);

	  	create_carets(trends_selection);
	  });		
	
	}

}


var stop_hide = false;
var menu_over = false;
function bind_focus() {
		$('.menu input').focus(function () {
			
			stop_hide = true;
			$(this).addClass('selected');
			
		});
		$('.menu input').blur(function (ev) {
			stop_hide = false;
			$(this).removeClass('selected');
			if (!menu_over)
			 {
			 	
			   	$($(this).parents('.menu').get(0)).children('.menu_title').removeClass('selected');
				$($(this).parents('.menu').get(0)).children('.popup').hide();
			 }
				
		});	

}

function bind_keypress() {

		$('form').keypress(function () {
			if (window.event.keyCode == 13) {
				$('form a.submit').click();
				stop_hide = false;
				return !(window.event && window.event.keyCode == 13);
			}
		});

}

(function ($) {

	$(document).ready(function() {
		

		
		
	
		$('.menu').mouseenter(function () {
		
			if (!stop_hide) {
			
				
				$(this).children('.menu_title').addClass('selected');
				$(this).children('.popup').show();
			}
			menu_over = true;
			
		});

		$('.menu').mouseleave(function () {
			
			if (!stop_hide) {
				
				$(this).children('.menu_title').removeClass('selected');
				$(this).children('.popup').hide();
			}
			menu_over = false;
			
		});
		
		bind_focus();
		bind_keypress();
	
	});
	
})(jQuery);
