------------------------------------------------------------------ formatDate (date_object, format) Returns a date in the output format specified. The format string uses the same abbreviations as in getDateFromFormat() ------------------------------------------------------------------
function formatDate(date,format) {
    format=format+'';
    var result='';
    var i_format=0;
    var c='';
    var token='';
    var y=date.getYear()+'';
    var M=date.getMonth()+1;
    var d=date.getDate();
    var E=date.getDay();
    var H=date.getHours();
    var m=date.getMinutes();
    var s=date.getSeconds();
    var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
    // Convert real date parts into formatted versions
    var value= {};
    if (y.length < 4) {y=''+(y-0+1900);}
    value['y']=''+y;
    value['yyyy']=y;
    value['yy']=y.substring(2,4);
    value['M']=M;
    value['MM']=LZ(M);
    value['MMM']=MONTH_NAMES[M-1];
    value['NNN']=MONTH_NAMES[M+11];
    value['d']=d;
    value['dd']=LZ(d);
    value['E']=DAY_NAMES[E+7];
    value['EE']=DAY_NAMES[E];
    value['H']=H;
    value['HH']=LZ(H);
    if (H===0){value['h']=12;}
    else if (H>12){value['h']=H-12;}
    else {value['h']=H;}
    value['hh']=LZ(value['h']);
    if (H>11){value['K']=H-12;} else {value['K']=H;}
    value['k']=H+1;
    value['KK']=LZ(value['K']);
    value['kk']=LZ(value['k']);
    if (H > 11) { value['a']='PM'; }
    else { value['a']='AM'; }
    value['m']=m;
    value['mm']=LZ(m);
    value['s']=s;
    value['ss']=LZ(s);
    while (i_format < format.length) {
        c=format.charAt(i_format);
        token='';
        while ((format.charAt(i_format)===c) && (i_format < format.length)) {
            token += format.charAt(i_format++);
        }
        if (value[token] != null) { result=result + value[token]; }
        else { result=result + token; }
    }
    return result;
}