/*
* Author(s)   : Jordi Raya
* Date        : 19/02/2003
* Version     : 1.0
* Last update : 06/03/2003
* File        : formato.js
* Description : Objetos Formato e Idioma
*   Objeto Formato
*     El objeto formato abstrae los formatos de presentación de números y fechas de cada idioma. Incluye un objeto Idioma.
*     Se recomienda que cada objeto de este tipo se nombre según el siguiente formato: codigo de pais_codigo de idioma
*   Objeto Idioma
*     El objeto Idioma contiene los caracteres del alfabeto de cada idioma, el nombre de los días de la semana, meses, etc.
*     Se recomienda que cada objeto de este tipo se nombre según su código de idioma 
*     
*   Se recomienda seguir los códigos de idioma ISO 639:1988 (E/F) 
*     http://ftp.ics.uci.edu/pub/ietf/http/related/iso639.txt
*   Se recomienda seguir los códigos de país ISO 3166/MA
*     http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html
*/

function Formato(){
  this.ident           = "formatoGenerico";
  this.idioma          = new Idioma();
  this.simboloDecimal  = '.';
  this.separadorMiles  = null;
  this.numeroDecimales = 2;
  this.separadorFecha  = '/';
  this.posicionDia     = 1; // indica la posición del día en una cadena del tipo dd/mm/aaaa al hacer un split()
  this.posicionMes     = 0; // indica la posición del mes en una cadena del tipo dd/mm/aaaa al hacer un split()
  this.posicionAnyo    = 2; // indica la posición del año en una cadena del tipo dd/mm/aaaa al hacer un split()
  this.minLongitudDia  = 1;
  this.maxLongitudDia  = 2;
  this.minLongitudMes  = 1;
  this.maxLongitudMes  = 2;
  this.minLongitudAnyo = 2;
  this.maxLongitudAnyo = 4;
  
  this.getIdent           = getIdent;    
  this.getIdioma	  = getIdioma;
  this.getSimboloDecimal  = getSimboloDecimal;    
  this.getSeparadorMiles  = getSeparadorMiles;  
  this.getNumeroDecimales = getNumeroDecimales;
  this.getSeparadorFecha  = getSeparadorFecha;
  this.getPosicionDia     = getPosicionDia;
  this.getPosicionMes     = getPosicionMes;
  this.getPosicionAnyo    = getPosicionAnyo;
  
  this.getMinLongitudDia  = getMinLongitudDia;
  this.getMaxLongitudDia  = getMaxLongitudDia;
  this.getMinLongitudMes  = getMinLongitudMes;
  this.getMaxLongitudMes  = getMaxLongitudMes;
  this.getMinLongitudAnyo = getMinLongitudAnyo;
  this.getMaxLongitudAnyo = getMaxLongitudAnyo;

  function getIdent()          { return this.ident; }
  function getIdioma()         { return this.idioma; }
  function getSimboloDecimal() { return this.simboloDecimal; }
  function getSeparadorMiles() { return this.separadorMiles; }  
  function getNumeroDecimales(){ return this.numeroDecimales; }
  function getSeparadorFecha() { return this.separadorFecha; } 
  function getPosicionDia()    { return this.posicionDia; }
  function getPosicionMes()    { return this.posicionMes; }
  function getPosicionAnyo()   { return this.posicionAnyo; } 
  function getMinLongitudDia() { return this.minLongitudDia; }
  function getMaxLongitudDia() { return this.maxLongitudDia; }
  function getMinLongitudMes() { return this.minLongitudMes; }
  function getMaxLongitudMes() { return this.maxLongitudMes; }
  function getMinLongitudAnyo(){ return this.minLongitudAnyo; }
  function getMaxLongitudAnyo(){ return this.maxLongitudAnyo; }     
}

function Idioma(){
  this.ident       = "idiomaGenerico";
  this.nombre      = "default";
  this.codigo      = "xx";
  this.alfabeto    = "ABCÇDEFGHIJKLMNÑOPQRSTUVWXYZabcçdefghijklmnñopqrstuvwxyzÁÉÍÓÚÀÈÌÒÌÙÄËÏÖÜÂÊÎÔÛáéíóúàèìòìäëïöüâêîôû";
  this.nombreMeses = null;
  this.nombreDias  = null;
  
  this.getIdent       = getIdent;    
  this.getNombre      = getNombre; 
  this.getCodigo      = getCodigo;   
  this.getAlfabeto    = getAlfabeto;  
  this.getNombreMeses = getNombreMeses;
  this.getNombreDias  = getNombreDias;
  
  function getIdent()      { return this.ident; }
  function getNombre()     { return this.nombre; } 
  function getCodigo()     { return this.codigo; }
  function getAlfabeto()   { return this.alfabeto; }
  function getNombreMeses(){ return this.nombreMeses; }
  function getNombreDias() { return this.nombreDias; }
}

// idiomas
ca = new Idioma();
ca.ident       = "catalan"; 
ca.nombre      = "català";
ca.codigo      = "ca";
ca.alfabeto    = "ABCÇDEFGHIJKLMNOPQRSTUVWXYZabcçdefghijklmnopqrstuvwxyzÁÉÍÓÚÀÈÒÓÜáéíóúàèòöü";
ca.nombreMeses = new Array ("gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre");
ca.nombreDias  = new Array ("dilluns","dimars","dimecres","dijous","divendres","dissabte","diumenge");

es = new Idioma();
es.ident       = "spanish";
es.nombre      = "español";
es.codigo      = "es";
es.alfabeto    = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyzÁÉÍÓÚÖÜáéíóúöü";
es.nombreMeses = new Array ("enero","febrero","marzo","abril","mayo","junio","julio","agosto","setiembre","octubre","noviembre","diciembre");
es.nombreDias  = new Array ("lunes","martes","miércoles","jueves","viernes","sábado", "domingo");

en = new Idioma();
en.ident       = "english";
en.nombre      = "english";
en.codigo      = "en";
en.alfabeto    = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
en.nombreMeses = new Array ("january","february","march","april","may","june","july","august","september","october","november","december");
en.nombreDias  = new Array ("monday","tuestday","wednesday","thursday","friday","saturday","sunday");

// formatos
ES_ca = new Formato();
ES_ca.ident           = "ES_ca";
ES_ca.idioma          = ca;
ES_ca.simboloDecimal  = ',';
ES_ca.separadorMiles  = '.';
ES_ca.numeroDecimales = 2;
ES_ca.separadorFecha  = '/';
ES_ca.posicionDia     = 0;
ES_ca.posicionMes     = 1;
ES_ca.posicionAnyo    = 2;
ES_ca.minLongitudDia  = 2;
ES_ca.maxLongitudDia  = 2;
ES_ca.minLongitudMes  = 2;
ES_ca.maxLongitudMes  = 2;
ES_ca.minLongitudAnyo = 4;
ES_ca.maxLongitudAnyo = 4;

ES_es = new Formato();
ES_es.ident           = "ES_es";
ES_es.idioma          = es;
ES_es.simboloDecimal  = ',';
ES_es.separadorMiles  = '.';
ES_es.numeroDecimales = 2;
ES_es.separadorFecha  = '/';
ES_es.posicionDia     = 0;
ES_es.posicionMes     = 1;
ES_es.posicionAnyo    = 2;
ES_es.minLongitudDia  = 2;
ES_es.maxLongitudDia  = 2;
ES_es.minLongitudMes  = 2;
ES_es.maxLongitudMes  = 2;
ES_es.minLongitudAnyo = 4;
ES_es.maxLongitudAnyo = 4;

US_en = new Formato();
US_en.ident           = "US_en";
US_en.idioma          = en;
US_en.simboloDecimal  = '.';
US_en.separadorMiles  = ',';
US_en.numeroDecimales = 2;
US_en.separadorFecha  = '/';
US_en.posicionDia     = 1;
US_en.posicionMes     = 0;
US_en.posicionAnyo    = 2;
US_en.minLongitudDia  = 2;
US_en.maxLongitudDia  = 2;
US_en.minLongitudMes  = 2;
US_en.maxLongitudMes  = 2;
US_en.minLongitudAnyo = 4;
US_en.maxLongitudAnyo = 4;
