useGrafikpfad = 'images/shared/gbg/grafikpack-full';
useGrafikpfadLang = 'images/es/gbg/grafikpack-full';

var I18N = {
	'wordTable' : {
		'noObjInFrontOfAds' : 'Bitte die das Objekt nicht vor die Werbung schieben - auch DL braucht Werbung :/',
		'tavernTableEmpty' : 'Tisch {0} ist unbesetzt!',
		'tavernTableInfo' : 'Tischinfo',
		'tavernTableWithId' : 'Tisch {0}',
  		'DECIMAL_POINT' : ',',
  		'THOUSANDS_SEP' : '.',
  		'SECOND' : ['Segundo', 'Segundos'],
  		'MINUTE' : ['Minuto', 'Minutos'],
  		'HOUR' : ['hora', 'horas'],
  		'DAY' : ['día', 'días'],
  		'ABORT' : 'Cancelar',
  		'AREANAME_0' : 'Océano',
  		'AREANAME_7' : 'Bosque de los Murmullos',
  		'AREANAME_8' : 'Llanuras radiantes',
  		'AREANAME_9' : 'Nag\'rd Nöj',
  		'AREANAME_10' : 'Bosque de las Luz',
  		'AREANAME_11' : 'Valle de las Esmeraldas',
  		'AREANAME_12' : 'País de Damagra',
  		'AREANAME_13' : 'Moderia',
  		'AREANAME_14' : 'Desierto del Canto',
  		'AREANAME_15' : 'Glastal',
  		'HIRE_PACK_QUESTION' : '¿Deseáis reclutar realmente al equipo de mercenarios \'{0}\'?',
  		'JS_NO_MONSTERS_ON_FIELD' : 'Ningún monstruo',
  		'JS_MONSTER_DISPLAY_DEACTIVATED' : 'Mostrar monstruos deactivados',
  		'QUEUE_ENTRY_READY' : 'Listo',
		'BUILDING_PLACEMENT_INFO' : 'Colocad el edificio en la posición deseada en vuestro asentamiento desplazando el ratón. Haced clic con el botón izquierdo para comenzar la construcción. [color=tomato]Las áreas verdes se eliminan al colocar el edificio, las áreas rojas no se pueden eliminar.[/color] Si no deseáis construir el edificio, cerrad esta ventana y el proceso será cancelado.',
		'INFO_MENU_HH' : 'Edificios',
		'INFO_MENU_BIBO' : 'Biblioteca',
		'INFO_MENU_TEMPEL' : 'Templo',
		'INFO_MENU_HEXE' : 'Laboratorio',
		'INFO_MENU_KASERNE' : 'Cuartel',
		'INFO_MENU_FRIEDHOF' : 'Cementerio',
		'INFO_MENU_DRACHENHOF' : 'Granja de dragones',
		'INFO_MENU_SCHATTENPORTAL' : 'Portal de las sombras',
		'INFO_MENU_VERTEIDIGUNG' : 'Defensa',
		'INFO_MENU_MARKT' : 'Mercado',
		'INFO_MENU_HANDEL' : 'Comercio',
		'INFO_MENU_WAPPEN' : 'Escudos',
		'INFO_MENU_TRUPPEN' : 'Tropas',
		'INFO_MENU_EINHEITEN' : 'Unidades',
		'INFO_MENU_KARTE' : 'Mapa',
		'INFO_MENU_AREA' : 'Áreas',
		'INFO_MENU_GRUPPE' : 'Hermandad',
		'INFO_MENU_KRIEG' : 'Guerras',
		'INFO_MENU_TOPLIST1' : 'Ranking 1',
		'INFO_MENU_TOPLIST2' : 'Ranking 2',
		'INFO_MENU_TOPLIST3' : 'Ranking 3',
		'INFO_MENU_TOPLISTG' : 'Mejores hermandades',
		'INFO_MENU_IGM' : 'Mensajes',
		'INFO_MENU_HILFE' : 'Ayuda',
		'INFO_MENU_SONSTIGES' : 'Otros',
		'INFO_MENU_TAVERN' : 'Taberna',
		'INFO_MENU_COMMITMENT' : 'Encuestas',
		'INFO_MENU_TOURNEY' : 'INFO_MENU_TOURNEY',
		'INFO_MENU_SETTLESHOP' : 'INFO_MENU_SETTLESHOP',
		'INFO_MENU_JUICESHOP' : 'INFO_MENU_JUICESHOP',
		'INFO_MENU_QUESTBUILDING1' : 'INFO_MENU_QUESTBUILDING1',
		'INFO_MENU_FORUM' : 'INFO_MENU_FORUM',
		'GTYPE_ANARCHIE_BONUS' : 'Bajo una anarquía, se reparten dos veces al mes (día 1 y 15) todos los ministerios de manera aleatoria entre todos los miembros de la hermandad. En caso de que esto ocurra, se envía un mensaje informativo a los nuevos encargados.',
		'GTYPE_SCHATTENBRUT_BONUS' : 'En el nido de sombras, los cargos se reparten diariamente a las 4:30 según la fuerza de los miembros (número de habitantes). El miembro más fuerte obtiene el cargo de líder. Los puestos restantes se asignan de manera descendente: sucesor, general, ministro y mago.',
		'GTYPE_RITUALISTEN_BONUS' : 'Los ritualistas dan mucho valor a los sacrificios. Los cargos son asignados diariamente a las 4:30 según la cantidad de puntos de sacrificio entre los miembros de la hermandad. A más puntos de sacrificio, se obtendrá un puesto de mayor responsabilidad. Los cargos se van asignando de manera descendente según este criterio: líder, sucesor, general, ministro y mago.',
		'GTYPE_JAEGER_SAMMLER_BONUS' : 'En el caso de los cazadores-recolectores, el líder de la hermandad será aquel que presente la mayor cantidad de materias primas. Los restantes ministerios (sucesor, general, ministro, mago) serán asignados (diariamente a las 4:30) según la cantidad de materias primas producidas de manera descendente.',
		'MAX_TRADE_DIFF_X' : 'La diferencia de valor no puede superar el {0}%.',
		'TRADE_DIFF_OKAY' : 'Proporción de materias primas adecuada',
		'ORE' : 'Hierro',
		'GOLD' : 'Oro',
		'WOOD' : 'Madera',
		'FOOD' : 'Alimentos',
		'SILVER' : 'Plata',
		'DURATION_UNTIL_ENDTIME' : '{0} hasta {1}',
		'ENTER_TEMPLATE_NAME' : '¿Qué nombre deseáis darle al patrón?',
		'YES' : 'Sí',
		'NO' : 'NO',
		'MONSTERFIELD_TYPE_0' : 'Mezclado',
		'MONSTERFIELD_TYPE_1' : 'Combate cuerpo a cuerpo',
		'MONSTERFIELD_TYPE_2' : 'Combate a distancia',
		'MONSTERFIELD_TYPE_3' : 'Magia de combate',
		'MONSTERFIELD_TYPE_4' : 'Magia de apoyo',
		'MONSTERFIELD_CHALLENGE' : '(Reto)',
		'SAVE_NOTES' : 'Guardar notas',
		'CLOSE_NOTES' : 'Cerrar',
		'ITEM_COSTS_POPUP' : 'El objeto \'{0}\' modifica la capacidad de una unidad en [b]{1} Pc[/b] y se necesitan [b]{2} puntos de sacrificio[/b] para poder equiparla. Costará:\n\n[img]{3}/icons/20x20/erz.gif[/img][b] Hierro:[/b] {4} - [img]{3}/icons/20x20/gold.gif[/img][b] Oro:[/b] {5} - [img]{3}/icons/20x20/holz.gif[/img][b] Madera:[/b] {6} - [img]{3}/icons/20x20/nahrung_{7}.gif[/img][b] Alimentos:[/b] {8} - [img]{3}/icons/20x20/silber.gif[/img][b] Plata:[/b] {9}',
		'DO_REPAIR' : 'Reparar',
		'REPAIR_MARKET_RES' : 'Os faltan los siguientes recursos para llevar a cabo la [b]reparación[/b]:',
		'HEAL_UNITS' : 'Curar unidades',
		'HEAL_MARKET_RES' : 'Os faltan los siguientes recursos para la [b]sanación[/b]:',
		'CHANGE_LEADER_CONFIRMATION' : 'CHANGE_LEADER_CONFIRMATION',
		'MISSING_RES' : 'Materias primas faltantes',
		'FACEBOOK_FRIENDLIST' : 'FACEBOOK_FRIENDLIST',
		'FB_INVITE_NAME' : 'FB_INVITE_NAME',
		'FB_INVITE_ACTION_NAME' : 'FB_INVITE_ACTION_NAME',
		'FB_INVITE_DESC' : 'FB_INVITE_DESC',
		'FB_INVITE' : 'FB_INVITE',
		'MONDAY_SHORT' : 'MONDAY_SHORT',
		'TUESDAY_SHORT' : 'TUESDAY_SHORT',
		'WEDNESDAY_SHORT' : 'WEDNESDAY_SHORT',
		'THURSDAY_SHORT' : 'THURSDAY_SHORT',
		'FRIDAY_SHORT' : 'FRIDAY_SHORT',
		'SATURDAY_SHORT' : 'SATURDAY_SHORT',
		'SUNDAY_SHORT' : 'SUNDAY_SHORT',
		'DISTANCE_UNIT_SHORT' : 'km',
		'DISTANCE_UNIT' : 'kilómetro',
		'CREATE_DIPLOMACY_BUTTON' : 'Crear',
		'DIPLOMACY_ACCEPT' : 'Aceptar',
		'DIPLOMACY_REJECT' : 'Rechazar',
		'SPEEDUP_NO_QUEUEENTRIES_INFO' : 'SPEEDUP_NO_QUEUEENTRIES_INFO'
	},
	
	/**
	  * Format number according to the locale
	  *
	  * @param theNumber The number to be formatted
	  * @param decimalDigits The number of decimal digits can be passed to this functions, as it is not locale specific. Defaults to 0 decimal digits.
	  */
	'numberFormat' : function(theNumber, decimalDigits) {
		return(number_format(theNumber, decimalDigits, this.wordTable['DECIMAL_POINT'], this.wordTable['THOUSANDS_SEP']));
	},

	/**
	 * Format a duration according to the locale
	 *
	 * @param duration The duration to format
	 * @param showUnit (optional) If the unit shall be displayed, set this to true (default)
	 */
	 'durationFormat' : function(duration, showUnit) {
		if(duration < 60) {
		  multiplier = 1;
		  unitLangId = 'SECOND';
		} else if(duration < 3600) {
		  multiplier = 60;
		  unitLangId = 'MINUTE';
		} else if(duration < 86400) {
		  multiplier = 3600;
		  unitLangId = 'HOUR';
		} else {
		  multiplier = 86400;
		  unitLangId = 'DAY';
		}
		
		durationString = this.numberFormat(duration / multiplier, 1);
		if(durationString.indexOf(this.wordTable['DECIMAL_POINT']) != -1) { // If we have a fractionated number
			durationString = durationString.replace(/0+$/, '');						// Trim right zeroes
			if(durationString.substr(durationString.length - 1, 1) == this.wordTable['DECIMAL_POINT']) durationString = durationString.substr(0, durationString.length - 1);  // If, after trimming zeroes, the decimal point is the end of the string, remove it as well
		}
		return(durationString + (showUnit ? ' ' + this.pluralize(Math.round(duration / multiplier * 10) / 10, unitLangId) : ''));
	},
	
	/**
	  * Function to pluralize a given language object
	  *
	  * @param theNumber The number that we are seeking the plural form for
	  * @param langObjId The language object ID. This must refer to an array of objects inside this internationalization classes word table
	  */
	'pluralize' : function(theNumber, langObjId) {
		if(theNumber != 1) return(this.wordTable[langObjId][1]); // In german, everything with a count of 2 or more uses the plural
		return(this.wordTable[langObjId][0]);			// Otherwise return the singular
	},
	
	/**
	  * Returns a specific string
	  * In contrast to the PHP I18N function, this function is used rarely, only when JS strings have wildcards that must be replaced. Usually, the variables are accessed directly through the word table.
          *
	  * @param varName The variable name of the string
	  * @param params A number indexed array of values. The wildcard {0} in the string is replaced with the value at index 0 etc. If the array is empty, nothing is changed
	  */
	'getSpecificString' : function(varName, params) {
		var varVal = this.wordTable[varName];
		if(typeof(params) != 'undefined' && typeof(params.length) != 'undefined') {
			for(var i = 0, len = params.length; i < len; ++i) {
				var replacer = new RegExp('\\{' + String(i) + '\\}', 'g');
				varVal = varVal.replace(replacer, params[i]);
			}
		}
		return(varVal);
	}


}
