// I18n is slightly modified version of babilu.js from Tore Darell

var I18n = I18n || (function() {
    // Replace {{foo}} with obj.foo
    function interpolate(string, object) {
        return string.replace(/\{\{([^}]+)\}\}/g, function() {
            return object[arguments[1]] || arguments[0];
        });
    };

    // Split "foo.bar" to ["foo", "bar"] if key is a string
    function keyToArray(key) {
        if(!key) {
            return [];
        }
        if(typeof key != "string") {
            return key;
        }
        return key.split('.');
    };

    // Looks up a translation using an array of strings where the last
    // is the key and any string before that define the scope. The
    // current locale is always prepended and does not need to be
    // provided. The second parameter is an array of strings used as
    // defaults if the key can not be found. If a key starts with ":"
    // it is used as a key for lookup.  This method does not perform
    // pluralization or interpolation.
    function lookup(keys, defaults) {
        var i = 0, value = I18n.translations;
        defaults = (typeof defaults === "string") ? [defaults] : (defaults || []);
        while(keys[i]) {
            value = value && value[keys[i]];
            i++;
        }
        if(value) {
            return value;
        } else {
            if(defaults.length === 0) {
                return null;
            } else if (defaults[0].substr(0,1) === ':') {
                return lookup(keys.slice(0, keys.length - 1).concat(keyToArray(defaults[0].substr(1))), defaults.slice(1));
            } else {
                return defaults[0];
            }
        }
    };

    // Returns other when 0 given
    function pluralize(value, count) {
        if(count === undefined) return value;
        return count === 1 ? value.one : value.other;
    };

    // Works mostly the same as the Ruby equivalent, except there are
    // no symbols in JavaScript, so keys are always strings. The only
    // time this makes a difference is when differentiating between
    // keys and values in the defaultValue option. Strings starting
    // with ":" will be considered to be keys and used for lookup,
    // while other strings are returned as-is.
    function translate(key, options) {
        if(typeof key != "string") {
            // Bulk lookup
            var a = [], i;
            for(i = 0; i < key.length; i++) {
                a.push(translate(key[i], options));
            }
            return a;
        } else {
            options = options || {};
            options.defaultValue = options.defaultValue || null;
            key = keyToArray(options.scope).concat(keyToArray(key));
            var value = lookup(key, options.defaultValue);
            if(typeof value !== "string" && value) {
                value = pluralize(value, options.count);
            }
            if(typeof value === "string") {
                value = interpolate(value, options);
            }
            return value;
        }
    }

    return {
        translate: translate,
        t: translate
    };
})();

I18n.locale = I18n.locale || "es";
I18n.translations = I18n.translations || {"activerecord": {"attributes": {"customer_message": {"contact_name": "Persona de contacto","fax_number": "Fax","name": "Nombre","phone_number": "Tel\u00e9fono","postal_address": "Direcci\u00f3n"},"customer_quote": {"arrival_at": "Fecha de regreso","arrival_place": "Lugar de llegada","departure_at": "Fecha de salida","departure_place": "Lugar de salida ","people_count": "N\u00famero de personas","round_trip": "Viaje Ida-Vuelta"},"customer_reclamation": {"line": "L\u00ednea","occured_at": "Fecha del incidente","stop_area": "Parada","vehicule_id": "N\u00famero de autob\u00fas"}},"errors": {"attributes": null,"messages": {"accepted": "debe ser aceptado","blank": "no puede estar en blanco","confirmation": "no coincide con la confirmaci\u00f3n","empty": "no puede estar vac\u00edo","equal_to": "debe ser igual a {{count}}","even": "debe ser par","exclusion": "est\u00e1 reservado","greater_than": "debe ser mayor que {{count}}","greater_than_or_equal_to": "debe ser mayor que o igual a {{count}}","inclusion": "no est\u00e1 incluido en la lista","invalid": "no es v\u00e1lido","less_than": "debe ser menor que {{count}}","less_than_or_equal_to": "debe ser menor que o igual a {{count}}","not_a_number": "no es un n\u00famero","odd": "debe ser impar","taken": "ya est\u00e1 en uso","too_long": "es demasiado largo ({{count}} caracteres m\u00e1ximo)","too_short": "es demasiado corto ({{count}} caracteres m\u00ednimo)","wrong_length": "no tiene la longitud correcta ({{count}} caracteres exactos)"},"models": null,"template": {"body": "Se encontraron problemas con los siguientes campos:","header": {"one": "no se pudo guardar este {{model}} porque se encontr\u00f3 1 error","other": "no se pudo guardar este {{model}} porque se encontraron {{count}} errores"}}},"models": {"customer_message": "Mensaje","customer_quote": "Solicitud de presupuesto","customer_reclamation": "Reclamaci\u00f3n","customer_suggestion": "Sugerencia"}},"customer_messages": {"create": {"flash": {"error": "Por favor, complete las informaciones","success": "Gracias, su mensaje ha sido enviado"}},"new": {"header": "Este formulario le permite solicitar una informaci\u00f3n, comunicarnos un incidente o solicitarnos un presupuesto para un \"servicio especial\".\n\nCumplim\u00e9ntelo detalladamente para que podamos enviarle una respuesta precisa lo antes posible.","object_name": "su mensaje","quote": {"header": "Desea beneficiarse de un servicio espec\u00edfico. Ponemos toda nuestra profesionalidad a su servicio para aportarle una completa satisfacci\u00f3n.\n"},"reclamation": {"header": "Desea informarnos de un incidente o un contratiempo producido en nuestra red\n","pre_message": "Por favor, describa el incidente detalladamente"},"submit": "Enviar   ","suggestion": {"header": "Desea hacernos una sugerencia o solicitar documentaci\u00f3n \u2026\n"},"title": "Escribirnos"}},"date": {"abbr_day_names": ["Dom","Lun","Mar","Mie","Jue","Vie","Sab"],"abbr_month_names": [null,"Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Set","Oct","Nov","Dic"],"day_names": ["Domingo","Lunes","Martes","Mi\u00e9rcoles","Jueves","Viernes","S\u00e1bado"],"formats": {"default": "%e/%m/%Y","long": "%d de %B de %Y","short": "%d de %b"},"month_names": [null,"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Setiembre","Octubre","Noviembre","Diciembre"],"order": ["year","month","day"]},"datetime": {"distance_in_words": {"about_x_hours": {"one": "alrededor de 1 hora","other": "alrededor de {{count}} horas"},"about_x_months": {"one": "alrededor de 1 mes","other": "alrededor de {{count}} meses"},"about_x_years": {"one": "alrededor de 1 a\u00f1o","other": "alrededor de {{count}} a\u00f1os"},"half_a_minute": "medio minuto","less_than_x_minutes": {"one": "menos de 1 minuto","other": "menos de {{count}} minutos"},"less_than_x_seconds": {"one": "menos de 1 segundo","other": "menos de {{count}} segundos"},"over_x_years": {"one": "m\u00e1s de 1 a\u00f1o","other": "m\u00e1s de {{count}} a\u00f1os"},"x_days": {"one": "1 d\u00eda","other": "{{count}} d\u00edas"},"x_minutes": {"one": "1 minuto","other": "{{count}} minutos"},"x_months": {"one": "1 mes","other": "{{count}} meses"},"x_seconds": {"one": "1 segundo","other": "{{count}} segundos"}}},"itineraries": {"form": {"arrival": "Llegada","arrival_sample": "ej.: Gare","default_message": "Por favor, cumplimente el formulario","departure": "Salida","departure_sample": "ej.: Mairie","invalid": "Requ\u00eate invalide","missing_arrival": "Indique su destino","missing_departure": "Indique un punto de salida","unknown_arrival": "Lo sentimos, no se reconoce su destino","unknown_departure": "Lo sentimos, no se reconoce su punto de salida"},"helper": {"mailto": {"header": "El siguiente enlace lleva a una b\u00fasqueda de itinerario entre {{departure}} y {{arrival}}:","subject": "B\u00fasqueda de itinerario"},"select_hour": {"format": "en % H horas","symbolic": {"afternoon": "por la tarde","evening": "por la noche","morning": "por la ma\u00f1ana"}},"transport_mode": {"name_for_-1": "Cambio","name_for_0": "Desconocido","name_for_1": "Autocar","name_for_10": "Taxi","name_for_11": "Tren expreso regional","name_for_12": "Tren","name_for_13": "Tren de Larga Distancia","name_for_14": "Tranv\u00eda","name_for_15": "Troleb\u00fas","name_for_16": "Coche particular","name_for_17": "Bicicleta","name_for_18": "Otro","name_for_2": "Avi\u00f3n","name_for_3": "Transbordador","name_for_4": "Autob\u00fas","name_for_5": "Ferry","name_for_6": "a pie","name_for_7": "Metro","name_for_8": "Transporte de ida y vuelta","name_for_9": "Red de Expreso Regional"}},"map": {"from_place": "A partir de este lugar","from_stop": "A partir de esta parada","itinerary": "Itinerario","to_place": "hacia este lugar","to_stop": "Hacia esta parada"},"new": {"arrival_on": "Llegar","at": "a","departure_on": "Salir","flash": {"no_result": "Lo sentimos, ning\u00fan itinerario corresponde a su solicitud","retry": "Int\u00e9ntelo de nuevo modificando sus criterios de b\u00fasqueda.","unavailable_service": "El servicio de b\u00fasqueda de itinerario no est\u00e1 disponible en este momento. Repita su b\u00fasqueda dentro de un minuto.","via_stop_place": "Le proponemos intentarlo de nuevo pasando por la estaci\u00f3n m\u00e1s cercana"},"on_day": "el  ","or": "o ","submit": "Buscar","title": "Su trayecto a medida"},"show": {"arrival": "Llegada","at": "a","correspondence": "Enlace","departure": "Salida","direction": "Destino  ","duration": "Duraci\u00f3n","from": "de","long_correspondence_in_feet": "Trayecto a Pie","long_correspondence_in_taxi": "Trayecto en taxi","next_results": "resultados siguientes","of_walk": "a pie","print": "Imprimir","send_email": "Enviar por e-mail","title": "Resultados de su b\u00fasqueda","to": "a","transport_mode": "Modo de transporte","trip_details": "Detalles del trayecto","wait_time": "Espera"}},"number": {"currency": {"format": {"delimiter": ".","format": "%n %u","precision": 2,"separator": ",","unit": "\u20ac"}},"format": {"delimiter": ".","precision": 3,"separator": ","},"human": {"format": {"delimiter": "","precision": 1},"storage_units": {"format": "%n %u","units": {"byte": {"one": "Byte","other": "Bytes"},"gb": "GB","kb": "KB","mb": "MB","tb": "TB"}}},"percentage": {"format": {"delimiter": ""}},"precision": {"format": {"delimiter": ""}}},"places": {"nearest_stations": "Estaciones cercanas"},"process": {"busy": "buscando\u2026"},"stop_area_line_search": {"lines": "Debe seleccionar una l\u00ednea para ver sus pasos en la parada {{stop}}"},"stop_area_search": {"cancel": "cancelar","example_stop": "ej.: gare","invalid": "Introduzca como m\u00ednimo 2 letras","no_result": "Ninguna parada corresponde a su b\u00fasqueda","select_line": "Debe seleccionar la estaci\u00f3n y la l\u00ednea para ver los horarios de paso","stop_input_label": "Parada","submit": "buscar","success": "La b\u00fasqueda ha tenido \u00e9xito","title": "Los horarios de su parada"},"support": {"array": {"last_word_connector": " y ","two_words_connector": " y ","words_connector": ", "}},"time": {"am": "am","formats": {"default": "%A, %d de %B de %Y %H:%M:%S %z","long": "%d de %B de %Y %H:%M","short": "%d de %b %H:%M"},"pm": "pm"},"timetable_at_stop_search": {"connected_lines": "Otras l\u00edneas de enlace","date_field_label": "Fecha","destination": "Destino","destination_note": "con destino {{location}}","direction": "Destino","get_from": "Salir de la parada","get_to": "Venir a la parada","itinerary_link_guide_text": "Ver c\u00f3mo\u2026","line": "L\u00ednea","no_connected_lines": "\u00danicamente la l\u00ednea {{line}} est\u00e1 comunicada en la parada {{stop}}. No hay l\u00ednea de enlace.","no_result": "No hay paso en esta parada, en esta l\u00ednea, este d\u00eda.","on_day": "el  ","or": "o ","print_friendly": "Versi\u00f3n imprimible","print_friendly_title": "Horarios de paso - versi\u00f3n imprimible ","print_guide_text": "Los horarios correspondientes a los dem\u00e1s destinos est\u00e1n se\u00f1alados con un asterisco","stop": "Parada","submit_date": "Actualizar","timetable_guide_text": "Haga clic en el horario para conocer el servicio","title": "Horarios de paso de la l\u00ednea {{line}} en la parada {{stop}}","updated": "El cuadro de los horarios ha sido actualizado"}};
