//Format a date
var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
function LZ(x){return(x<0||x>9?"":"0")+x}
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;
    var value = new Object();
    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;
}

//calendar
function showCalendar(obj, dateFormat) {
    if (self.gfPop) {
        var numberOfDateFormat = getNumberOfDateFormat(dateFormat);
        gfPop.showPopCalendar(dateFormat, numberOfDateFormat, obj);
    }
    return false;
}
/* This method gets the right parameter for the user selected date format for showing the calendar
 * based on the selected date format by the user.
 *
 */
function getNumberOfDateFormat(dateFormat) {
    var numberOfDateFormat = 0;
    var dayStart, monthStart, yearStart;
    //determine the positions of "dd", "MM" and "YY" strings
    //maybe some error checking and message should be used; get *End also and if dayEnd != dayStart + 1
    dayStart = dateFormat.indexOf("d");
    monthStart = dateFormat.indexOf("M");
    yearStart = dateFormat.indexOf("y");

    //check to order in which "dd", "MM" and "yy" appear
    if (dayStart < monthStart && monthStart < yearStart) {
        numberOfDateFormat = 0; // ddMMyy format
    } else if (monthStart < dayStart && dayStart < yearStart) {
        numberOfDateFormat = 1; // MMddyy format
    } else if (yearStart < monthStart && monthStart < dayStart) {
        numberOfDateFormat = 2; // yyMMdd format
    } // else use the default value of 0 = ddMMyy format (see variable declaration)

    return numberOfDateFormat;
}




