function CurrencyMap()
{
this.currencyCodeToFormatMap= new Object();
this.currencyCodeToFormatMap['ARS'] = 'eur_style'; 
this.currencyCodeToFormatMap['AUD'] = 'us_style'; 
this.currencyCodeToFormatMap['BRL'] = 'eur_style'; 
this.currencyCodeToFormatMap['CAD'] = 'us_style'; 
this.currencyCodeToFormatMap['CHF'] = 'eur_style'; 
this.currencyCodeToFormatMap['DKK'] = 'eur_style'; 
this.currencyCodeToFormatMap['EUR'] = 'eur_style'; 
this.currencyCodeToFormatMap['FRF'] = 'fr_style'; 
this.currencyCodeToFormatMap['GBP'] = 'us_style'; 
this.currencyCodeToFormatMap['HKD'] = 'eur_style'; 
this.currencyCodeToFormatMap['ILS'] = 'eur_style'; 
this.currencyCodeToFormatMap['JPY'] = 'us_style'; 
this.currencyCodeToFormatMap['KRW'] = 'eur_style'; 
this.currencyCodeToFormatMap['MXN'] = 'eur_style'; 
this.currencyCodeToFormatMap['NOK'] = 'eur_style'; 
this.currencyCodeToFormatMap['NZD'] = 'us_style'; 
this.currencyCodeToFormatMap['SEK'] = 'fr_style'; 
this.currencyCodeToFormatMap['TRL'] = 'eur_style'; 
this.currencyCodeToFormatMap['TWD'] = 'us_style'; 
this.currencyCodeToFormatMap['USD'] = 'us_style'; 
this.currencyCodeToFormatMap['ZAR'] = 'eur_style';
this.currencyCodeToFormatMap['INR'] = 'ind_style';
this.getFormat = function (currencyCode)
{
return this.currencyCodeToFormatMap[currencyCode];
}
this.currencyCodeToSymbolMap= new Object();
this.currencyCodeToSymbolMap['ARS'] = 'ARS '; 
this.currencyCodeToSymbolMap['AUD'] = 'AUD$ '; 
this.currencyCodeToSymbolMap['BRL'] = 'BRL '; 
this.currencyCodeToSymbolMap['CAD'] = 'CDN$ '; 
this.currencyCodeToSymbolMap['CHF'] = 'SFR. '; 
this.currencyCodeToSymbolMap['DKK'] = 'kr. '; 
this.currencyCodeToSymbolMap['EUR'] = 'EUR '; 
this.currencyCodeToSymbolMap['FRF'] = ' FF'; 
this.currencyCodeToSymbolMap['GBP'] = '&pound;'; 
this.currencyCodeToSymbolMap['HKD'] = 'HKD$ '; 
this.currencyCodeToSymbolMap['ILS'] = 'ILS '; 
this.currencyCodeToSymbolMap['JPY'] = '&#xFFE5; ';
this.currencyCodeToSymbolMap['KRW'] = 'KRW '; 
this.currencyCodeToSymbolMap['MXN'] = 'MXN '; 
this.currencyCodeToSymbolMap['NOK'] = 'NOK '; 
this.currencyCodeToSymbolMap['NZD'] = 'NZD$ '; 
this.currencyCodeToSymbolMap['SEK'] = 'kr '; 
this.currencyCodeToSymbolMap['TRL'] = 'TRL '; 
this.currencyCodeToSymbolMap['TWD'] = 'TWD$ '; 
this.currencyCodeToSymbolMap['USD'] = '$'; 
this.currencyCodeToSymbolMap['ZAR'] = 'SAR ';
this.currencyCodeToSymbolMap['INR'] = 'Rs.';
this.getSymbol = function (currencyCode)
{
return this.currencyCodeToSymbolMap[currencyCode];
}
}
var goCurrencyMap = new CurrencyMap();
function getCurrencyMap() 
{
return goCurrencyMap;
}
function FormatInfo()
{
this.currency= null;
this.decimalLength= null;
this.isFixedLenSep= null;
this.sepLength = null;
this.deci = null;
this.format = null;
this.sepArray = null;
this.getNextSep = function (j)
{
if(this.isFixedLenSep)
{
return this.sepLength;
}
else
{
return this.sepArray[j];
}
}
this.init = function (countryCode)
{
var format = getCurrencyMap().getFormat(countryCode);
this.format = format;
var currency = getCurrencyMap().getSymbol(countryCode);
if(null == currency)
{
currency = '';
}
this.currency = currency;
var decimalLength = 2;
if(countryCode == 'JPY')
{
decimalLength = 0;
}
this.decimalLength = decimalLength;
var deci = ',';
var comma = '';
this.isFixedLenSep =true;
this.sepLength = 3; 
switch(format)
{
case 'us_style' : 
deci = '.';
comma = ',';
break;
case 'eur_style' :
deci =',';
comma ='.' 
break;
case 'fr_style' : 
deci =',';
comma =' ' 
break;
case 'ind_style' : 
deci = '.';
comma = ',';
info.isFixedLenSep =false;
info.sepArray = new Array();
info.sepArray[0] = 3;
for(iii=1;iii<8;iii++)
{
info.sepArray[iii] = 2;
} 
break;
}
this.deci = deci;
this.comma = comma;
}
}
function CurrencyFormatter(countryCode)
{
this.countryCode = countryCode;
this.currencyMap = getCurrencyMap();
this.setCurrencyCode = function (code)
{
this.countryCode = code;
}
this.adjustNumber = function (number , decimal)
{
var x = Math.pow(10,decimal);
var m = Math.abs(number) * x;
if(decimal == 0)
{
if ( number == 0 )
return "0";
var fl = Math.floor(number);
var fx = number.toFixed(0);
var s = number - fx;
if(50 == Math.abs(Math.round(s*100)))
{
m = Math.abs(Math.floor(number));
if(fl == 1)
m = 2;
else if(fl == 0 || fl == -1)
m = 0;
}
return m.toFixed(0);
}
var n = number;
if ( m != 0 )
n = Math.floor(Math.round(m)) / x;
var num = n.toFixed(decimal);
return num; 
}
this.formatPrice= function (amount)
{
if(null == amount) return '';
var ret ='';
var parts;
var info = new FormatInfo();
info.init(this.countryCode);
var sign = amount < 0 ? '-':'';
var num = this.adjustNumber(amount,info.decimalLength);
if (num == 0) 
{
sign = '';
}
var parts = num.split('.');
var frontPart =parts[0];
var i=0;
var length = frontPart.length ;
var j =0;
var seplen = info.getNextSep(j);
for(i=0;i<length;i++)
{
var currentChar = frontPart.charAt(length-1-i);
if((i == seplen) && (currentChar !='-'))
{
ret = info.comma + ret;
j++;
seplen = seplen + info.getNextSep(j);
}
ret = currentChar + ret;
}
if (parts.length==2)
{
ret = ret + info.deci + parts[1];
}
if(this.countryCode == 'FRF')
{
ret = sign + ret  + info.currency ;
}
else
{
ret = info.currency + sign + ret ;
}
return ret;  
}
}