/**
 * Checks if given email-address is valid and non-existant.
 * If so, a dummy account is created
 */
function addNewAccount() {
	$.ajax( {
		type: 'GET',
		url: baseUrl + 'user/check-email/email/' + $('input#email').val() + '/',
		success: function(response) {

			if (response === "already-exists") {
				// An account with this email already exists: search internally
				$('input#search').val($('input#email').val());
				search();
				$('input#email').val('');
				return;
			}
				
			if (response === "not-valid") {
				// No valid email given: alert and no further action
				alert("Je hebt geen geldig email-adres opgegeven.");
				$('input#email').val('');
				return;
			}

			// An (dummy) account need to be created for this email address
			$.ajax( {
				type: 'GET',
				url: baseUrl + 'user/check-username/username/' + $('input#email').val() + '/',
				success: function(response) {
					
					if(response == "false") {
						
						alert("Sorry, er is al een gebruiker met dit email-adres als nickname.");

					// The given email-address can be used both for email and username
					} else {
						
						$.ajax( {
							type: 'GET',
							url: baseUrl + 'user/create-dummy-account/email/' + $('input#email').val() + '/',
							success: function(response) {

								if (response != '' && parseInt(response)>0) {
									alert('Er is een email verstuurd om deze persoon uit te nodigen.');
									addToOthers(response, $('input#email').val());
									$('input#email').val('');
								} else {
									alert("Sorry, er is een fout opgetreden bij het uitnodigen. Probeer het later nog eens.");
								}
							}
						});
					}
				}
			});
		}
	});
}


/**
 * Performs a search for players (called from modal windows)
 */
function search() {
	if ($('#search').val() != "") {
		$.ajax( {
			type: 'POST',
			url: baseUrl + 'agenda/search-players/',
			data: 'q='+$('#search').val(),
			success: function(response) {
				if(response != "") {
					var players = eval(response);
					var html = '<div>gezocht op '+$('#search').val()+' - '+players.length+' resultaten</div>';
					html = html + '<ul class="groep_column">';

					for (var i=0; i<players.length; i++) {
						var item = '<li id="user_'+players[i]['id']+'" onclick="$(this).remove(); addToOthers('+players[i]['id']+', \''+players[i]['username']+'\')"><img class="groep_image" src="' + baseUrl + 'uploads/thumb_38/' + players[i]['avatar'] + '" alt=""/>'+
							'<div class="groep_text">'+players[i]['username']+'<br/><b>'+players[i]['av']+'</b> / '+players[i]['nog']+'</div>'+
							'</li>';
						html = html + item;
					}
					html = html + '</ul>';
				} else {
					var html = '<div>gezocht op '+$('#search').val()+' - geen resultaten</div>';
				}
				$('#searchResults').html(html);
				$('#search').val('');
			}
		});
	}
}


/**
 * Resets the blindstimer countdown
 */
function resetBlindstimer(newUntil)
{
    if ($('#startPauze').hasClass('playing')) {
    	$('#startPauze').removeClass('playing');
    }
    $('#blindstimer').countdown('destroy');
    $('#blindstimer').countdown({
        until: newUntil,
        layout: '<span class="countdown_row countdown_holding"><span class="countdown_section"><span class="countdown_amount">{mnn}:{snn}</span></span></span>',
        onExpiry: triggerNextLevel
    });

	$('#blindstimer').countdown('pause');
        
	// Reset toggle start/pauze
	$('#startPauze').unbind('click');
	$('#startPauze').click(function() {
		toggleCountdown();
	});
}


/**
 * Continues with the following level
 */
function triggerNextLevel()
{
    var next = parseInt($('#level').val()) + 1;
    var nr = parseInt($('#noLevels').val());  
    
    document.getElementById('nextLevelSound').Play();
    
    
    
    if (next <= nr) { 
        setTimeout('nextLevel();toggleCountdown();', 1000);
    } else {
        setTimeout('nextLevel();', 1000);
    }
}

/**
 * Toggles the blindstimer countdown
 */
function toggleCountdown()
{
    if ($('#startPauze').hasClass('playing')) {
    	$('#blindstimer').countdown('pause'); 
    	$('#startPauze').removeClass('playing');
    } else {
    	$('#blindstimer').countdown('resume'); 
    	$('#startPauze').addClass('playing');
    }
}


/**
 * Updates the big blind after the small blind has been changed
 */
function updateBig(id) {
	var html = '/&nbsp;';
	var big = 2*parseInt($('#level_'+id+'_small').val());

	// add extra space for alignment
	if (big < 1000) html = html + "&nbsp;&nbsp;";
	if (big < 100) html = html + "&nbsp;&nbsp;";

	html = html + big;

	$('#level_'+id+'_big').html(html);
}


/**
 * Add another level to the event
 */
function addLevel()
{
	// Get and set number of feature elements
	var numberHolder = $('#noLevels');
	var number = parseInt(numberHolder.val()) + 1;	// increase by one
	numberHolder.val(number);

	// Create and insert the new elemens
	var lastItem = $('fieldset#fieldset-level'+(number-1));
	var newItem = $('<fieldset id="fieldset-level'+number+'"><legend>level '+number+'</legend><li><input id="level_'+number+'_minutes" class="text small_text3" type="text" value="10" name="level_'+number+'_minutes"/><span class="hint">min</span><input id="level_'+number+'_small" class="text small_text3" type="text" value="50" name="level_'+number+'_small"/><span id="level_'+number+'_big" class="hint">/ 100</span><input id="level_'+number+'_ante" class="text small_text3" type="text" value="0" name="level_'+number+'_ante"/></li></fieldset>');
	lastItem.after(newItem);

	$('#level_'+number+'_small').bind("change", function() {
    	updateBig(number);
	});
	
	toggleIdentical();
	removeLevelButton(false);
}


/**
 * Add a level to the event, used in presets
 */
function addVirtualLevel(min, small, ante)
{
	var numberHolder = $('#noLevels');
	var number = parseInt(numberHolder.val()) + 1;	// increase by one
	numberHolder.val(number);
	
	var lastItem;
	if (number > 1) {
	    lastItem = $('input#level_' + (number - 1) + '_ante');
	} else {
	    lastItem = numberHolder;
	}
	
	var newItem = $('<input id="level_' + number + '_minutes" type="hidden" value="' + min + '" name="level_' + number + '_minutes"/><input id="level_'+number+'_small" type="hidden" value="' + small + '" name="level_' + number + '_small"/><input id="level_' + number + '_ante" type="hidden" value="' + ante + '" name="level_' + number + '_ante"/>');
	lastItem.after(newItem);
}


/**
 * Toggles the identical setting
 */
function toggleIdentical()
{
    var identical = $('#identical').attr('checked');
    
    if (identical) {
        $('.blinds_list input[type="text"]').each(function(i, e) {
            if (($(this).attr('id').substr(0, 8) != 'level_1_')) {
                $(this).attr('disabled', true);
                
                var corespondent = $(this).attr('id').split('_');
                corespondent[1] = '1';
                corespondent = corespondent.join('_');
                
                $(this).val($('#' + corespondent).val());
            }
        });
        
        for (var i=1; i<=$('input#noLevels').val(); i++) {
            updateBig(i);
        }
    } else {
        $('.blinds_list input').each(function(i, e) {
            $(this).attr('disabled', false);
        });
    }
}


/**
 * Places the remove level button and, optionally, removes the last level
 */
function removeLevelButton(performRemove)
{
    performRemove = typeof(performRemove) != 'undefined' ? performRemove : true;

	var numberHolder = $('#noLevels');
	var number = parseInt(numberHolder.val());
	var lastItem = $('fieldset#fieldset-level' + number);
	
	$('#removeLevel').remove();
	
	if (performRemove) {
	    lastItem.remove();
	    number = number - 1;  
	    numberHolder.val(number);
	    lastItem = $('fieldset#fieldset-level' + number);
	}
	
	if (number > 1) {
    	var removeButton = $('<a id="removeLevel" href="#"><img src="' + baseUrl + 'img/levelRemove.png"></a>');
    	lastItem.append(removeButton);
    	removeButton.click(removeLevelButton);
    }
}
