/* Tsapper (c) Rens van Dongen, LinkU Internet Media 2007 <rens@linku.nl> */

function ucFirst(str)
{
	return str.substr(0,1).toUpperCase() + str.substr(1,str.length);
}

// "foo!" => "!"
function substringMinus(str, minus)
{
	return str.substring(str.length-minus)
}

// "dit is een mooie zin" => "Dit is een mooie zin."
function hoofdletterEnPuntje(str)
{
	return ucFirst('.?!)>'.indexOf(substringMinus(str, 1)) >= 0 ? str : str+'.');
}

// dumpt str als HTML in de body
function debug(str)
{
	$('body').prepend('<div class="debugJs">'+str+'</div>');
}

// opent element
function showElement(elementId)
{
	$("#"+elementId).show("slow");
	document.location.href = '#'+elementId;
	return false;
}

// vervangt FindString met ReplaceString, zo vaak FindString voorkomt
function replaceAll(OldString,FindString,ReplaceString)
{
	var SearchIndex = 0;
	var NewString = "";
	while (OldString.indexOf(FindString,SearchIndex) != -1)
	{
		NewString += OldString.substring(SearchIndex,OldString.indexOf(FindString,SearchIndex));
		NewString += ReplaceString;
		SearchIndex = (OldString.indexOf(FindString,SearchIndex) + FindString.length);
	}
	NewString += OldString.substring(SearchIndex,OldString.length);
	return NewString;
}

// geef waardes,van,checkboxes,terug,als,string
function returnCheckboxValues(name)
{
	var str = '';

	$("input[@name='"+name+"']:checked").each(function()
	{
		if ( str.length > 0)
		{
			str += ',';
		}
		str += this.value;
	});
	return str;
}

// haal waarde uit form element en trim het
function varGet(varId)
{
	return $.trim($(varId).val());
}

// 2, woord, woorden => 2 woorden
function meervoud(aantal, enkelvoud, meervoud)
{
	if ( isNaN(aantal) )
	{
		laatsteletter = aantal.substr(aantal.length-1, aantal.length);
		return laatsteletter == 's' || laatsteletter == 'en' ?  meervoud : enkelvoud;
	}
	else
	{
		return aantal == 1 ? enkelvoud : meervoud;
	}
}

// (de)selecteert alle checkboxjes met zijn naam
function activateCheckboxAll()
{
	var checkedVal = this.checked;
	$("input[@name='"+this.name+"']").each(function()
	{
		this.checked = checkedVal;
	});
}

// checkt of nu alle boxjes met zijn naam zijn gecheckt, en toggled dan ook de "selecteer alle" checkbox met zijn naam
function checkSerieCheckboxAll()
{
	if ( this.checked )
	{
		if ( parseInt($("input[@name='"+this.name+"']:checked").length)+1 == parseInt($("input[@name='"+this.name+"']").length) )
		{
			$("input[@name='"+this.name+"']:first").attr('checked', true);
		}
	}
	else
	{
		$("input[@name='"+this.name+"']:first").attr('checked', false);
	}
}

// controleer of er al een maximaal aantal checkboxjes zijn getickt
function checkMaxCheckboxes(obj, max)
{
	if ( obj.checked )
	{
		if ( $("input[@name='"+obj.name+"']:checked").length > max )
		{
			obj.checked = false;
			
			showErrorMsg('je mag niet meer dan '+max+' keuzes maken', '');
		}
	}
}

/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}
