/**
 * Gettext vertaal implementatie voor Javascript
 * 
 * De DigiCode Applicatie beheerd DigiCodes en laat gebruikers deze activeren, direct op de applicatie site
 * maar ook via een SOAP koppeling
 * 
 * @package DigiCodeApplicatie
 * @subpackage Javascript
 * 
 * @copyright Uitgeverij Edu'Actief b.v. 2009-2010
 * @author Elze Kool <e.kool@edu-actief.nl>
 * @version $Id: gettext.js 149 2010-11-03 08:11:37Z elkoo $ 
 * 
 */

/**
 * Gettext vertaal implementatie voor Javascript
 * 
 * De DigiCode Applicatie beheerd DigiCodes en laat gebruikers deze activeren, direct op de applicatie site
 * maar ook via een SOAP koppeling
 * 
 * @package DigiCodeApplicatie
 * @subpackage Javascript
 * 
 * @copyright Uitgeverij Edu'Actief b.v. 2009-2010
 * @author Elze Kool <e.kool@edu-actief.nl>
 * @version $Id: gettext.js 149 2010-11-03 08:11:37Z elkoo $ 
 * 
 */
var DigiCodeGetText = {

	/**
	 * Controleer of locale geladen is
	 * 
	 * @return boolean True indien geladen anders false 
	 */
	locale_loaded : function() {
		if (typeof LocaleData != "undefined") {
			return true;
		} else {
			return false;
		}
	},
	
	/**
	 * Zoek voor vertaling
	 * 
	 * @true Array|undefined
	 */
	search_translation : function(originial) {
		
		// Controleer of er wel een vertaalbestand is
		if (DigiCodeGetText.locale_loaded()) {
			
			var cnt = LocaleData.translations.length;
			for(var i = 0; i < cnt; i++) {
				if (LocaleData.translations[i].original == originial) {
					return LocaleData.translations[i].translation;
				}
			}
		}
		
		return undefined;
	},
	
	/**
	 * Verkrijg de offset van de plural
	 * 
	 * @param n Aantal
	 * 
	 * @return int
	 */
	plural_ofset : function(n) {
		
		if (DigiCodeGetText.locale_loaded()) {
			var nplurals = 2;
			var plural = (n == 1) ? 0 : 1;
			eval(LocaleData.plural);
			if (plural == false) {
				plural = 0;
			} else if (plural == true){
				plural = 1;
			}
			return plural;
		} else {
			return (n == 1) ? 0 : 1;
		}
		
	},
	
	/**
	 * Vertaal tekst en geef dit terug. 
	 * 
	 * @param string text Onvertaalde tekst
	 * 
	 * @return string Vertaalde tekst
	 */
	singular : function(text) {
		// @todo Gebruikt intern sprintf, eventuele formateer opties daarvan zijn te gebruiken. 
		var translated_text = DigiCodeGetText.search_translation(text);		
		if (translated_text != undefined) {
			return translated_text[0];
		} else {
			return text;
		}
	},
	
	/**
	 * Vertaal tekst en geef dit terug. Welke tekst gebruikt wordt is afhankelijk van $count. 
	 * 
	 * 
	 * @param string singular Onvertaalde tekst, enkelvoud
	 * @param string plural   Onvertaalde tekst, meervoud
	 * @param int    count    Aantal om te gebruiken bij keuze enkelvoud/meervoud
	 * 
	 * @return string Vertaalde tekst
	 */
	plural : function(singular, plural, count) {
		
		// @todo Gebruikt intern sprintf, eventuele formateer opties daarvan zijn te gebruiken.
		var translated_text = DigiCodeGetText.search_translation(singular + "\u0000" + plural);		
		if (translated_text != undefined) {
			return translated_text[DigiCodeGetText.plural_ofset(count)];
		} else {
			return singular;
		}
		
	}
}

/**
 * Vertaal tekst en geef dit terug. Gebruikt intern sprintf, eventuele formateer opties daarvan zijn te gebruiken. 
 * 
 * @param string text Onvertaalde tekst
 * 
 * @return string Vertaalde tekst
 */
function __(text) {
	return DigiCodeGetText.singular.apply(this, arguments);
}

/**
 * Vertaal tekst en geef dit terug. Welke tekst gebruikt wordt is afhankelijk van $count. 
 * Gebruikt intern sprintf, eventuele formateer opties daarvan zijn te gebruiken.
 * 
 * @param string singular Onvertaalde tekst, enkelvoud
 * @param string plural   Onvertaalde tekst, meervoud
 * @param int    count    Aantal om te gebruiken bij keuze enkelvoud/meervoud
 * 
 * @return string Vertaalde tekst
 */
function __n(singular, plural, count) {
	return DigiCodeGetText.plural.apply(this, arguments);
}
