/**
         * Formats the number according to the format string.
         * <div style="margin-left:40px">examples (123456.789):
         * <div style="margin-left:10px">
         * 0 - (123456) show only digits, no precision<br>
         * 0.00 - (123456.78) show only digits, 2 precision<br>
         * 0.0000 - (123456.7890) show only digits, 4 precision<br>
         * 0,000 - (123,456) show comma and digits, no precision<br>
         * 0,000.00 - (123,456.78) show comma and digits, 2 precision<br>
         * 0,0.00 - (123,456.78) shortcut method, show comma and digits, 2 precision<br>
         * To reverse the grouping (,) and decimal (.) for international numbers, add /i to the end.
         * For example: 0.000,00/i
         * </div></div>
         * @param {Number} v The number to format.
         * @param {String} format The way you would like to format this text.
         * @return {String} The formatted number.
*/
Ext.namespace('Kelda.Info'); 
Kelda.Info.NumberFormat = function(v, format) {
    if(!format){
        return v;
    }
    v = Ext.num(v, NaN);
    if (isNaN(v)){
        return '';
    }
    var comma = ',',
        dec = '.',
        i18n = false,
        neg = v < 0;

    v = Math.abs(v);
    if(format.substr(format.length - 2) == '/i'){
        format = format.substr(0, format.length - 2);
        i18n = true;
        comma = '.';
        dec = ',';
    }

    var hasComma = format.indexOf(comma) != -1, 
        psplit = (i18n ? format.replace(/[^\d\,]/g, '') : format.replace(/[^\d\.]/g, '')).split(dec);

    if(1 < psplit.length){
        v = v.toFixed(psplit[1].length);
    }else if(2 < psplit.length){
        throw ('NumberFormatException: invalid format, formats should have no more than 1 period: ' + format);
    }else{
        v = v.toFixed(0);
    }

    var fnum = v.toString();
    if(hasComma){
        psplit = fnum.split('.');

        var cnum = psplit[0], parr = [], j = cnum.length, m = Math.floor(j / 3), n = cnum.length % 3 || 3;

        for(var i = 0; i < j; i += n){
            if(i != 0){
                n = 3;
            }
            parr[parr.length] = cnum.substr(i, n);
            m -= 1;
        }
        fnum = parr.join(comma);
        if(psplit[1]){
            fnum += dec + psplit[1];
        }
    }

    return (neg ? '-' : '') + format.replace(/[\d,?\.?]+/, fnum);
}
Kelda.Info.ValueRendererNoPrec = function(val,lang) {
	if(lang=='is') {
		return Kelda.Info.NumberFormat(val,'0.000/i')
	}else {
		return Kelda.Info.NumberFormat(val,'0,000')
	}
}
Kelda.Info.ValueRendererOne = function(val,lang) {
	if(lang==='is')
		return Kelda.Info.NumberFormat(val,'0.000,0/i');
	else
		return Kelda.Info.NumberFormat(val,'0,0.0');
};
Kelda.Info.ValueRenderer = function(val,lang) {
	if(lang==='is')
		return Kelda.Info.NumberFormat(val,'0.000,00/i');
	else
		return Kelda.Info.NumberFormat(val,'0,0.00');
};
Kelda.Info.ValueRendererThree = function(val,lang) {
	if(lang==='is')
		return Kelda.Info.NumberFormat(val,'0.00,000/i');
	else
		return Kelda.Info.NumberFormat(val,'0,0.000');
	
};
Kelda.Info.ValueRendererFour = function(val,lang) {
	if(lang==='is')
		return Kelda.Info.NumberFormat(val,'0.000,0000/i');
	else
		return Kelda.Info.NumberFormat(val,'0,0.0000');
	
};
Kelda.Info.ValueRendererBig = function(val,lang) {
	if(lang==='is')
		return Kelda.Info.NumberFormat(val,'0.000/i');
	else
		return Kelda.Info.NumberFormat(val,'0,000');
};
Kelda.Info.DateRenderer = function() {
	if(keldan_lang=='is')
		return Ext.util.Format.dateRenderer('d/m/y');
	else
		return Ext.util.Format.dateRenderer('m/d/y');
};
Kelda.Info.DateFormat = function(val,lang) {
	if(lang==='is')
		return Ext.util.Format.date(val,'d/m/y');
	else 
		return Ext.util.Format.date(val,'m/d/y');
};
Kelda.Info.DateFormatLong = function(val,lang) {
	if(lang=='is')
		return Ext.util.Format.date(val,'d/m/Y');
	else
		return Ext.util.Format.date(val,'m/d/Y');
}
Kelda.Info.DateFormatFull = function(date,lang) {
	if(lang=='is') {
		var y = date.getUTCFullYear();
		var m = date.getUTCMonth();
		var d = date.getUTCDate();
		return d+'. '+Date.monthNames[m]+' '+y;
	}else {
		
	}
}
Kelda.Info.DateFormatFullShortM = function(date,lang) {
	if(lang=='is') {
		var y = date.getUTCFullYear();
		var m = date.getUTCMonth();
		var d = date.getUTCDate();
		return d+'. '+Date.monthNames[m].substr(0,3)+'. '+y;
	}else {
		
	}
}
Kelda.Info.DateFormatFullShortNoY = function(date,lang) {
	if(lang=='is') {
		var m = date.getUTCMonth();
		var d = date.getUTCDate();
		return d+'. '+Date.monthNames[m].substr(0,3)+'.';
	}else {
		
	}
}
Kelda.Info.DateFormatHour = function(date,lang) {
	if(lang=='is') {
		var h = date.getUTCHours();
		var m = date.getUTCMinutes();
		
		return Ext.util.Format.date(date,'H:i')
	}
}

