﻿FormatHelper = function() {}

FormatHelper.prototype = {
    parseUTCDate: function(dateStr) {
        var match = /(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}).(\d{3})Z/;
        if(((r= match.exec(dateStr))) != null) {
            var date = new Date(Date.UTC(r[1],r[2] - 1,r[3],r[4],r[5],r[6]));
            return date;
        }
        else
            return null;
    },

    convert: function(vStr, type) {
        if (!type) return vStr.toString();
            
        switch(type.toLowerCase()) {
            case "date":
                return new Date(Date.parse(vStr));
            case "utcdate":
                return this.parseUTCDate(vStr);
            case "int":
                return parseInt(vStr);
            case "float":
                return parseFloat(vStr);
            default:
                return vStr.toString();
        }
    },

    format: function(value, type, format) {
        if (!value) return "";
        if (!type) return value.toString();
        
        switch (type.toLowerCase()){
            case "date":
                return this.formatDate(value, format);
            default:
                return value.toString();
        }    
    },

    formatDate: function(date, format) {
        var o = {
            "M+" : date.getMonth()+1, //month
            "d+" : date.getDate(),    //day
            "h+" : date.getHours(),   //hour
            "m+" : date.getMinutes(), //minute
            "s+" : date.getSeconds(), //second
            "q+" : Math.floor((date.getMonth()+3)/3),  //quarter
            "S"  : date.getMilliseconds() //millisecond
        }
        
        var result;
        if(/(y+)/.test(format))
            result = format.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length));
        for(var k in o) {
            if(new RegExp("("+ k +")").test(format))
                result = result.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] :("00"+ o[k]).substr((""+ o[k]).length));
        }
        return result;
    }
}