function cTD(v) {
    var rx = /\/Date\((-?[0-9]+)(\+[0-9]+)?\)\//g;
    if (rx.test(v)) {
        var milli = Number(v.replace(rx, '$1'));
        if (!isNaN(milli)) {
            v = new Date(Number(v.replace(rx, '$1')));
        }
        else
            throw new Error("Date format not recognised.");
    }
    return v;
}

String.prototype.DateFormat = function() {
    var str = 'yyyy/mm/dd'; 
    var obj = cTD(this);
    if (obj == '' || obj == null) {
        return '';
    }
    var m = "0" + (obj.getMonth() + 1).toString();
    var d = "0" + obj.getDate().toString();
    str = str.replace(/yyyy/g, obj.getFullYear());
    str = str.replace(/yy/g, obj.getFullYear().toString().slice(2));
    str = str.replace(/mm/g, m.substring(m.length - 2));
    str = str.replace(/dd/g, d.substring(d.length - 2));
    str = str.replace(/wk/g, obj.getDay());
    str = str.replace(/hh/g, obj.getHours());
    str = str.replace(/mi/g, obj.getMinutes());
    str = str.replace(/ss/g, obj.getSeconds());
    str = str.replace(/ms/g, obj.getMilliseconds());

    if (str == "1-01-01" || str == "1900-01-01") {
        str = "";
    }
    return str;
}

String.prototype.trim = function() {
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

Date.prototype.Format = function() {
var str = 'yyyy/mm/dd';
    var obj = this;
    if (obj == '' || obj == null) {
        return '';
    }
    var m = "0" + (obj.getMonth() + 1).toString();
    var d = "0" + obj.getDate().toString();
    str = str.replace(/yyyy/g, obj.getFullYear());
    str = str.replace(/yy/g, obj.getFullYear().toString().slice(2));
    str = str.replace(/mm/g, m.substring(m.length - 2));
    str = str.replace(/dd/g, d.substring(d.length - 2));
    str = str.replace(/wk/g, obj.getDay());
    str = str.replace(/hh/g, obj.getHours());
    str = str.replace(/mi/g, obj.getMinutes());
    str = str.replace(/ss/g, obj.getSeconds());
    str = str.replace(/ms/g, obj.getMilliseconds());
    return str;
}
