$(document).ready(function()
{
	/* Create sum' variables */
	window.lastLoadedContent = false;
	window.currentDom = false;
	window.yourBrowserSucks = false;
	window.fileVoted = false;
	
	/* Check for old browsers */
	if( browserSucks() )
	{
		$('#content').prepend('<p style="text-align: center; background-color: lightyellow; padding: 100px 0;"><span style="font-size: 200px; float: left;">!</span><span style="font-size: 200px; float: right;">!</span><span style="font-size: 32px;">Selaintasi ei tueta enää.<br />Päivitä nykyaikaiseen selaimeen.</span><br /><br /><em>Verkon selaaminen vanhalla selaimella muistuttaa ajamista höyryveturilla luotijunan kiskoja pitkin.<br />&mdash; YouTube</em></p>');
		window.yourBrowserSucks = true;
	};
	
	/* Click outside of the dom-box or the cross in it -> Close the box */
	$('#dom-hide-content').click(function()
	{
		closeDomBox();
	});
	
	/* Comment highlighting */
	if(window.location.hash)
	{
		if(window.location.hash.substr(0, 4) == "#hl_")
		{
			var cid = window.location.hash.substr(4);
			highlightComment(cid);
			window.location.hash = false;
		}
	}
});

/* Changing the pages with arrowkeys */
$(document).keydown(function(e)
{
	if( !$('input').is(':focus') && !$('textarea').is(':focus') && !$('select').is(':focus') )
	{
		switch(e.which)
		{
			case 37: //LeftKey
				if( $('#prevlink').attr('href') )
				{
					window.location = $('#prevlink').attr('href');
				}
				break;
			case 39: //RightKey
				if( $('#nextlink').attr('href') )
				{
					window.location = $('#nextlink').attr('href');
				}
				break;
		}
	}
});

/* DOM Login / Registration */
/* Loading content to DOM-box */
function loadForm(form, data)
{
	var url = false;
	if( form == 'login' )
	{
		url = '/ajax/forms/login.form.php';
	}
	else if( form == 'register' )
	{
		url = '/ajax/forms/register.form.php';
	}
	else if( form == 'verify' )
	{
		url = '/ajax/forms/verifyaccount.form.php';
	}
	else if( form == 'recover' )
	{
		url = '/ajax/forms/recover.form.php';
	}
	else if( form == 'search' )
	{
		url = '/ajax/forms/search.form.php';
	}
	else if( form == 'upload' )
	{
		//url = '/ajax/forms/upload.form.php';
		url = '/upload/true';
	}
	else if( form == 'changepwd' )
	{
		url = '/user/'+ data +'/changepassword/true';
	}
	else if( form == 'changeavatar' )
	{
		url = '/user/'+ data +'/changeavatar/true';
	}
	else if( form == 'report' )
	{
		url = '/ajax/forms/report.form.php?b='+ data;
	}
	else if( form == 'suggesttag' )
	{
		url = '/ajax/forms/suggesttag.form.php?b='+ data;
	}
	else if( form == 'notifications' )
	{
		url = '/notifications/true';
		
		setTimeout('updateUnreadNotifications();', 500);
	}
	
	if( url )
	{
		domBoxLoad(siteUrl + url);
	}
};

function domBoxLoad(url)
{
	if( window.lastDomBoxUrl != url )
	{
		var loading = setTimeout("$('#dom-box-content').html('<img src=\""+ siteUrl +"/img/loading.gif\" alt=\"Loading...\" />');", 250);
		$('#dom-box-content').load(url, '', function()
		{
			clearTimeout(loading);
			if( $('#dom-box-content input') )
			{
				$('#dom-box-content input').filter(":first").focus();
			}
		});
	}

	// Chrome seems to differ here... D'oh!
	if( $('body').scrollTop() == 0 )
		var scrollTop = $('html').scrollTop();
	else
		var scrollTop = $('body').scrollTop();

	// Opera is really slow with this, so let's just nerf it down a little.
	if( $.browser.opera )
	{
		$('#dom-hide-content').css({'height': $(document).height(), 'position': 'absolute'});
		$('#dom-hide-content').show();
	}
	else
	{
		$('#dom-hide-content').fadeIn();
	}
	$('#dom-center').show();
	$('#dom-box').css({'top': scrollTop +'px', 'left': '-50%'});
	
	window.lastDomBoxUrl = url;
};

function submitForm(form, data)
{
	$('#dom-box-content .button').attr('disabled', 'disabled');
	$('#dom-error').show();
	var loading = setTimeout("$('#dom-error').html('<img src=\""+ siteUrl +"/img/loading.gif\" alt=\"Loading...\" />');", 500);
	
	if( form == 'login' )
	{
		var reload = true;
		var replaceBoxContent = true;
		var loadAfter = false;
		var closeAfter = true;
		var username = $('#dom_login_username').val();
		var password = $('#dom_login_password').val();
		if( $('#dom_login_remember').is(':checked') )
			var remember = 'on';
		else
			var remember = 'false';
			
		var url = '/scripts/login';
		var postData = {'username': username, 'password': password, 'remember': remember};
	}
	else if( form == 'register' )
	{
		var reload = false;
		var replaceBoxContent = true;
		var loadAfter = false;
		var closeAfter = false;
		var username = $('#dom_register_username').val();
		var password = $('#dom_register_password').val();
		var passwordre = $('#dom_register_passwordre').val();
		var gender = $('#dom_register_gender').val();
		var bday = $('#dom_register_bday').val();
		var bmonth = $('#dom_register_bmonth').val();
		var byear = $('#dom_register_byear').val();
		var email = $('#dom_register_email').val();
		var url = '/scripts/register';
		var postData = {'username': username, 'password': password, 'passwordre': passwordre, 'gender': gender, 'bday': bday, 'bmonth': bmonth, 'byear': byear, 'email': email};
	}
	else if( form == 'verify' )
	{
		var reload = true;
		var replaceBoxContent = true;
		var loadAfter = false;
		var closeAfter = true;
		var username = $('#dom_verify_username').val();
		var password = $('#dom_verify_password').val();
		var code = $('#dom_verify_code').val();
		var url = '/scripts/verify';
		var postData = {'username': username, 'password': password, 'verifycode': code};
	}
	else if( form == 'recovercode' )
	{
		var reload = false;
		var replaceBoxContent = false;
		var loadAfter = false;
		var closeAfter = false;
		var username = $('#dom_verify_username').val();
		var password = $('#dom_verify_password').val();
		var url = '/scripts/recovercode';
		var postData = {'username': username, 'password': password};
	}
	else if( form == 'recover' )
	{
		var reload = false;
		var replaceBoxContent = false;
		var loadAfter = 'login';
		var closeAfter = false;
		var email = $('#dom_recover_email').val();
		var code = $('#dom_recover_code').val();
		var url = '/scripts/recover';
		var postData = {'email': email, 'code': code};
	}
	else if( form == 'changepwd' )
	{
		var reload = true;
		var replaceBoxContent = true;
		var loadAfter = false;
		var closeAfter = true;
		var curpwd = $('#dom_curpassword').val();
		var pwd = $('#dom_password').val();
		var pwdre = $('#dom_passwordre').val();
		var url = '/user/'+ data +'/changepassword/true'
		var postData = {'curpassword': curpwd, 'password': pwd, 'passwordre': pwdre};
	}
	else if( form == 'report' )
	{
		var reload = false;
		var replaceBoxContent = true;
		var loadAfter = false;
		var closeAfter = true;
		var reason = $('#dom_reason').val();
		var url = '/report/'+ data +'/true'
		var postData = {'reason': reason};
	}
	else if( form == 'suggesttag' )
	{
		var reload = false;
		var replaceBoxContent = true;
		var loadAfter = false;
		var closeAfter = true;
		var reason = $('#dom_tags').val();
		var url = '/suggesttag/'+ data +'/true'
		var postData = {'tags': reason};
	}
	
	$.post(siteUrl + url, postData, function(data)
	{
		clearTimeout(loading);
		if( data.substr(0, 6) == 'ERROR:' )
		{
			$('#dom-box-content .button').blur();
			$('#dom-error').hide().html( data.substr(6) ).fadeIn().delay(2000).fadeOut(function() {
				$('#dom-box-content .button').removeAttr('disabled');
				$('#dom-error').html('');
			});
		}
		else
		{
			$('#dom-error').html('').hide();
			
			if( replaceBoxContent )
			{
				$('#dom-box-content').html(data);
				window.lastDomBoxUrl = false;
				
				if( closeAfter )
				{
					setTimeout("closeDomBox();", 1000);
				}
					
				if( reload )
				{
					setTimeout('window.location = window.location;', 1000);
				}
			}
			else
			{
				$('#dom-info').html(data).fadeIn().delay(2000).fadeOut(function() {
					$('#dom-box-content .button').removeAttr('disabled');
					$('#dom-info').html('');
				
					if( loadAfter )
					{
						loadForm(loadAfter);
					}
					
					if( closeAfter )
					{
						setTimeout("closeDomBox();", 1000);
					}
				
					if( reload )
					{
						window.location = window.location;
					}
				});
			}
		}
	});
	
};

/* Closing the DOM-box */
function closeDomBox()
{
	if( $.browser.opera )
	{
		$('#dom-hide-content').hide();
	}
	else
	{
		$('#dom-hide-content').fadeOut();
	}
	$('#dom-center').hide();
	window.currentDom = false;
};

/* File voting/flagging */
function voteFile(fileId, vote)
{
	$.get(siteUrl + '/scripts/votefile/'+ fileId +'/'+ vote +'/true', function(data)
	{
		if( data.substr(0, 3) == 'OK:' )
		{			
			var newCount = data.substr(3)
			newCount = newCount.split('|');
			posCount = newCount[0]*1;
			negCount = newCount[1]*1;
			voteSum = posCount - negCount;
			
			
			var graywidth = 0;
			if( posCount != 0 && negCount != 0 )
			{
				var poswidth = Math.round( posCount / ( posCount + negCount ) * 100 );
				var negwidth = 100 - poswidth;
			}
			else if( posCount != 0 )
			{
				var poswidth = 100;
				var negwidth = 0;
				var negCount = '0';
			}
			else if( negCount != 0 )
			{
				var posCount = '0';
				var poswidth = 0;
				var negwidth = 100;
			}
			else
			{
				var posCount = '0';
				var poswidth = 50;
				var negwidth = 50;
				var negCount = '0';
				graywidth = 100;
			}
			
			$('#positive').css({'width': poswidth +'px'});
			$('#negative').css({'width': negwidth +'px'});
			$('#graybar').css({'width': graywidth +'px'});
			$('#posvotesum').html(posCount);
			$('#negvotesum').html(negCount);
			
			if( voteSum > 0 )
			{
				voteSum = '+'+ voteSum;
				$('#votecount-'+ fileId).css({'color': '#00AA00'});
			}
			else if( voteSum < 0 )
			{
				$('#votecount-'+ fileId).css({'color': '#AA0000'});
			}
			else if( voteSum == 0 )
			{
				$('#votecount-'+ fileId).css({'color': ''});
			}
			$('#votecount-'+ fileId).html(voteSum);
		}
		else {
			alert(data);
		}
	});
};

function flagFile(fileId)
{
	if( confirm("Haluatko merkitä tämän tiedoston NSFW-sisällöksi?\r\n\r\nNSFW (=Not Safe For Work) tarkoittaa K-18 sisältöä, eli sisältöä, joka sisältää alastomuutta, seksiä ja muuta häiritsevää sisältöä, jota et haluaisi kymmenvuotiaan lapsesi näkevän.") )
	{
		$.get(siteUrl + '/scripts/flagfile/'+ fileId +'/true', function(data)
		{
			if( data == 'OK' )
			{
				// We don't want to spam the database.
				$('#flaglink').html('Tiedosto merkitty');
			}
			else {
				alert(data);
			}
		});
	}
};

/* Random UI functions */
function pinTopbar(bool, user)
{

	if( bool == 'true' && $.browser.opera )
	{
		if( !confirm("Näyt käyttävän Operaa.\r\nOpera on hyvä selain, mutta jumittelee sivun vierityksessä todella pahasti, jos irrotat tämän palkin kiinnityksen.\r\n\r\nHaluatko varmasti irrottaa palkin kiinnityksen ja antaa sen rullata sivun mukana?\r\n\r\nVoit milloin tahansa kiinnittää palkin uudelleen ja kumota tämän vaikutuksen.\r\n") )
		{
			return false;
		}

	}
	if( bool == 'true' )
		var pin = '1';
	else
		var pin = '0';
	
	$.get(siteUrl + '/user/'+ user +'/pinbar/'+ pin +'/true', function(data)
	{
		if( pin == '1' )
		{
			$('#pintopbar').removeClass('unpinned');
			$('#topbar').removeClass('absolute');
			$('#pintopbar').addClass('pinned');
			$('#topbar').addClass('fixed');
			$('#pintopbar').attr('onclick', 'pinTopbar(\'false\', \''+ user +'\'); return false;');
		}
		else
		{
			$('#pintopbar').removeClass('pinned');
			$('#topbar').removeClass('fixed');
			$('#pintopbar').addClass('unpinned');
			$('#topbar').addClass('absolute');
			$('#pintopbar').attr('onclick', 'pinTopbar(\'true\', \''+ user +'\'); return false;');
		}
	});
};

function updateUnreadNotifications()
{

};

/* Comment functions */
function deleteComment(id, profile)
{
	var confirmation = "Haluatko varmasti poistaa kommentin id "+ id +"?";
	if( confirm(confirmation) )
	{
		$.get(siteUrl +'/scripts/deletecomment/'+ id +'/'+ profile +'/true', function(data)
		{
			if( data == 'OK' )
			{
				$('#comment-'+ id).remove();
			}
			else
			{
				alert(data);
			}
		});
	}
};

function addQuote(id)
{
	if( $('#commenttext'))
	{
		if( $('#commenttext').val().length == 0 )
		{
			$('#commenttext').val('>>'+ id +' ');
		}
		else
		{
			$('#commenttext').val($('#commenttext').val() +' >>'+ id +' ');
		
		}
	}
};

function highlightComment(id)
{
	if( $('#comment-'+ id) )
	{
		$('.highlighted').removeClass('highlighted');
		$('#comment-'+ id).addClass('highlighted');
		$.scrollTo( $('#comment-'+ id), 200, {offset: {top: -200}} );
	}
	else
	{
		window.location = siteUrl +'/scripts/redirect/'+ id;
	}
};

function loadMoreComments(fileId, userId, amount, profileComments)
{

	if( !profileComments )
		profileComments = 'false';

	var tmp = $('#omittedcomments').html();
	var omittedCount = $('#commentomittedcount').html();
	var timeout = setTimeout("$('#omittedcomments').html('<img src=\""+ siteUrl +"/img/loading.gif\" alt=\"Loading...\" />');", 200);
	
	if( !window.loadCommentsStartFrom )
		window.loadCommentsStartFrom = amount*1;
	else
		window.loadCommentsStartFrom = window.loadCommentsStartFrom + amount*1;
	
	$.get(siteUrl +'/scripts/getcomments/'+ fileId +'/'+ amount +'/'+ window.loadCommentsStartFrom +'/'+ userId +'/'+ profileComments, function(data)
	{
		clearTimeout(timeout);
		$('#morecomments').append(data);
	});
	
	var newOmittedCount = omittedCount*1 - amount*1;
	if( newOmittedCount > 0 )
	{
		$('#omittedcomments').html(tmp);
		$('#commentomittedcount').html(newOmittedCount);
	}
	else
	{
		$('#omittedcomments').remove();
	}
	
	
};

/* Old browser detection */
function browserSucks()
{
	// IE <= 7
	if($.browser.msie && parseInt($.browser.version) <= 7)
	{
		return true;
	}
	
	// Opera < 11
	if($.browser.opera && ($.browser.version *10) < 105)
	{
		return true;
	}
	
	// WebKit < 522
	if($.browser.webkit && ($.browser.version *10) < 5220)
	{
		return true;
	}
	
	return false;
};
