Array.prototype.exists = function (x) {

    for (var i = 0; i < this.length; i++) {

        if (this[i] == x) return true;

    }

    return false;

}



Date.prototype.formatDate = function (input,time) {

    // formatDate :

    // a PHP date like function, for formatting date strings

    // See: http://www.php.net/date

    //

    // input : format string

    // time : epoch time (seconds, and optional)

    //

    // if time is not passed, formatting is based on 

    // the current "this" date object's set time.

    //

    // supported:

    // a, A, B, d, D, F, g, G, h, H, i, j, l (lowercase L), L, 

    // m, M, n, O, r, s, S, t, U, w, W, y, Y, z

    //

    // unsupported:

    // I (capital i), T, Z    



    var switches =    ["a", "A", "B", "d", "D", "F", "g", "G", "h", "H", 

                       "i", "j", "l", "L", "m", "M", "n", "O", "r", "s", 

                       "S", "t", "U", "w", "W", "y", "Y", "z"];

    var daysLong =    ["Sunday", "Monday", "Tuesday", "Wednesday", 

                       "Thursday", "Friday", "Saturday"];

    var daysShort =   ["Sun", "Mon", "Tue", "Wed", 

                       "Thu", "Fri", "Sat"];

    var monthsShort = ["Jan", "Feb", "Mar", "Apr",

                       "May", "Jun", "Jul", "Aug", "Sep",

                       "Oct", "Nov", "Dec"];

    var monthsLong =  ["January", "February", "March", "April",

                       "May", "June", "July", "August", "September",

                       "October", "November", "December"];

    var daysSuffix = ["st", "nd", "rd", "th", "th", "th", "th", // 1st - 7th

                      "th", "th", "th", "th", "th", "th", "th", // 8th - 14th

                      "th", "th", "th", "th", "th", "th", "st", // 15th - 21st

                      "nd", "rd", "th", "th", "th", "th", "th", // 22nd - 28th

                      "th", "th", "st"];                        // 29th - 31st

  

    function Y() {

        // A full numeric representation of a year, 4 digits



        // we first check, if getFullYear is supported. if it

        // is, we just use that. ppks code is nice, but wont

        // work with dates outside 1900-2038, or something like that

        if (self.getFullYear) {

            var newDate = new Date("January 1 2001 00:00:00 +0000");

            var x = newDate .getFullYear();

            if (x == 2001) {              

                // i trust the method now

                return self.getFullYear();

            }

        }

        // else, do this:

        // codes thanks to ppk:

        // http://www.xs4all.nl/~ppk/js/introdate.html

        var x = self.getYear();

        var y = x % 100;

        y += (y < 38) ? 2000 : 1900;

        return y;

    }

        

    var self = this;

    if (time) {

        // save time

        var prevTime = self.getTime();

        self.setTime(time);

    }

    

    var ia = input.split("");

    var ij = 0;

    while (ia[ij]) {

        if (ia[ij] == "\\") {

            // this is our way of allowing users to escape stuff

            ia.splice(ij,1);

        } else {

            if (switches.exists(ia[ij])) {

                ia[ij] = eval(ia[ij] + "()");

            }

        }

        ij++;

    }

    // reset time, back to what it was

    if (prevTime) {

        self.setTime(prevTime);

    }

    return ia.join("");

}



d = new Date("April 16 1981 01:30:00");

now = new Date();



document.write("&copy;");

document.write(now.formatDate("Y"));
