These are sample JavaScript includes that could be used for many sites. Some of the functions are specific for a server side environment with MS ASP and SQL Server. The "cs" and "ss" prefixes help ensure that the script scope variables are unique on the page.

Client Side

/*************************************************************************

This file should be included in the <head> of every page on this site via something like this:
    <script type="text/JavaScript" language="JavaScript" src="script/csJS.js">...

__TOC
Site Variables
DateTime Functions
    csFormatDtm(myDate, format)
    csWholeDaysUntil(yr, mo, dy)
Form Functions
    csValidDate(form)
    csValidEmail(form)
String Functions
    csEncodeSQL(str)
    csPad(str, intPlaces)
    String.prototype.trim = function()
Miscellany Functions
    csFlipImage(url)
    csInNewWindow(pstrFile, pstrWindowName, pstrWindowFeatures)

**************************************************************************/
/********* Site Variables ***********/

//DateTime variables
var cssecondinms = 1000;
var csminuteinms = cssecondinms * 60;
var cshourinms = csminuteinms * 60;
var csdayinms = cshourinms * 24;
var csweekinms = csdayinms * 7;
var csdayname = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var csdayname3 = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
var csmonthname = ["January","February","March","April","May","June","July","August","September","October","November","December"];
var csmonthname3 = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
var csnow = new Date(); //Date at time of page load
var csyearofthenow = csnow.getFullYear();
var csmonthofthenow = csnow.getMonth();
var csdayofmonthofthenow = csnow.getDate();
var csdayofweekofthenow = csnow.getDay();
var cshourofthenow = csnow.getHours();
var csminuteofthenow = csnow.getMinutes();
var cssecondofthenow = csnow.getSeconds();
var csmillisecondofthenow = csnow.getMilliseconds();
var csnowinms = csnow.getTime();
var csvalueofthenow = csnow.valueOf();
var csseedofthenow = csnow.getTime() % 0xfffffff;
var cstzdhoursofthenow= csnow.getTimezoneOffset()/60;
var cstzdminutesofthenow= csnow.getTimezoneOffset()%60;
var cstzd;
if (cstzdhoursofthenow>0) {
	cstzd="-"+ csPad(cstzdhoursofthenow,2) +":"+ csPad(cstzdminutesofthenow,2);
} else if (cstzdhoursofthenow<0) {
	cstzd="+"+ csPad(-cstzdhoursofthenow,2) +":"+ csPad(cstzdminutesofthenow,2);
}else cstzd="Z";

//50 U.S. states, PR, DC, & Canadian provinces
var csstates =
    "<option value=\"AL\">Alabama</option>"+
    "<option value=\"AK\">Alaska</option>"+
    "<option value=\"AB\">Alberta</option>"+
    "<option value=\"AZ\">Arizona</option>"+
    "<option value=\"AR\">Arkansas</option>"+
    "<option value=\"BC\">British Columbia</option>"+
    "<option value=\"CA\">California</option>"+
    "<option value=\"CO\">Colorado</option>"+
    "<option value=\"CT\">Connecticut" +
    "<option value=\"DE\">Delaware</option>"+
    "<option value=\"DC\">District of Columbia</option>"+
    "<option value=\"FL\">Florida</option>"+
    "<option value=\"GA\">Georgia</option>"+
    "<option value=\"HI\">Hawaii</option>"+
    "<option value=\"ID\">Idaho</option>"+
    "<option value=\"IL\" selected=\"\">Illinois</option>"+
    "<option value=\"IN\">Indiana</option>"+
    "<option value=\"IA\">Iowa</option>"+
    "<option value=\"KS\">Kansas</option>"+
    "<option value=\"KY\">Kentucky</option>"+
    "<option value=\"LA\">Louisiana</option>"+
    "<option value=\"ME\">Maine</option>"+
    "<option value=\"MB\">Manitoba</option>"+
    "<option value=\"MD\">Maryland</option>"+
    "<option value=\"MA\">Massachusetts</option>"+
    "<option value=\"MI\">Michigan</option>"+
    "<option value=\"MN\">Minnesota</option>"+
    "<option value=\"MS\">Mississippi</option>"+
    "<option value=\"MO\">Missouri</option>"+
    "<option value=\"MT\">Montana</option>"+
    "<option value=\"NE\">Nebraska</option>"+
    "<option value=\"NV\">Nevada</option>"+
    "<option value=\"NB\">New Brunswick</option>"+
    "<option value=\"NH\">New Hampshire</option>"+
    "<option value=\"NJ\">New Jersey</option>"+
    "<option value=\"NM\">New Mexico</option>"+
    "<option value=\"NY\">New York</option>"+
    "<option value=\"NF\">Newfoundland</option>"+
    "<option value=\"NC\">North Carolina</option>"+
    "<option value=\"ND\">North Dakota</option>"+
    "<option value=\"NT\">Northwest Territories</option>"+
    "<option value=\"NS\">Nova Scotia</option>"+
    "<option value=\"OH\">Ohio</option>"+
    "<option value=\"OK\">Oklahoma</option>"+
    "<option value=\"ON\">Ontario</option>"+
    "<option value=\"OR\">Oregon</option>"+
    "<option value=\"PA\">Pennsylvania</option>"+
    "<option value=\"PE\">Prince Edward Island</option>"+
    "<option value=\"PQ\">Province of Quebec</option>"+
    "<option value=\"PR\">Puerto Rico</option>"+
    "<option value=\"RI\">Rhode Island</option>"+
    "<option value=\"SK\">Saskatchewan</option>"+
    "<option value=\"SC\">South Carolina</option>"+
    "<option value=\"SD\">South Dakota</option>"+
    "<option value=\"TN\">Tennessee</option>"+
    "<option value=\"TX\">Texas</option>"+
    "<option value=\"UT\">Utah</option>"+
    "<option value=\"VT\">Vermont</option>"+
    "<option value=\"VI\">Virgin Islands</option>"+
    "<option value=\"VA\">Virginia</option>"+
    "<option value=\"WA\">Washington</option>"+
    "<option value=\"WV\">West Virginia</option>"+
    "<option value=\"WI\">Wisconsin</option>"+
    "<option value=\"WY\">Wyoming</option>"+
    "<option value=\"YT\">Yukon Terr
/********* DateTime Variables ***********/

//Returns a formatted string given "now" or a JS Date object
function csFormatDtm(myDate, format) {
	var strDate = "";
	if (myDate=="now") {
	    var jsdate = new Date();
	} else {
	    var jsdate = myDate;
	    //myDate EGs: new Date("Oct 22, 1968"), new Date(), dtmX
	}
    var fullyear = jsdate.getFullYear();
    var jsmonth = jsdate.getMonth(); //0-11
    var dayofthemonth = jsdate.getDate();
    var dayoftheweek = jsdate.getDay();
    var hour = jsdate.getHours();
    var minute = jsdate.getMinutes();
    var second = jsdate.getSeconds();
    var millisecon = jsdate.getMilliseconds();
    var dtminms = jsdate.getTime();
    var valueofthedtm = jsdate.valueOf();
    var tzdhour = jsdate.getTimezoneOffset()/60;
    var tzdminute = jsdate.getTimezoneOffset()%60;
    var tzd; 
    if (tzdhour>0) {
    	tzd = "-"+ csPad(tzdhour,2) +":"+ csPad(tzdminute,2);
    } else if (tzdhour<0) {
    	tzd="+"+ csPad(-tzdhour,2) +":"+ csPad(tzdminute,2);
    } else tzd = "Z";
    switch (format) {
    case "Mmmm d, yyyy":
        strDate = csMONTHNAME[jsmonth]+" "+dayofthemonth+", "+fullyear; break;
    case "Mmmm d, yyyy Z":
        strDate = csMONTHNAME[jsdate.getUTCMonth()] +" "+ jsdate.getUTCDate() +", "+ jsdate.getUTCFullYear(); break;
    case "MM/DD/YYYY":
        strDate = csPad(jsmonth+1,2)+"/"+csPad(dayofthemonth,2)+"/"+fullyear; break;
    case "MM/DD/YYYY Z":
        strDate = csPad(jsdate.getUTCMonth()+1,2) +"/"+ csPad(jsdate.getUTCDate(),2) +"/"+ jsdate.getUTCFullYear(); break;
    case "YYYY":
        strDate = fullyear; break;
    case "YYYY Z":
        strDate = jsdate.getUTCFullYear(); break;
    case "YYYY-MM":
        strDate = fullyear+"-"+csPad(jsmonth+1,2); break;
    case "YYYY-MM Z":
        strDate = jsdate.getUTCFullYear() +"-"+ csPad(jsdate.getUTCMonth()+1,2); break;
    case "YYYY-MM-DD":
        strDate = fullyear+"-"+csPad(jsmonth+1,2)+"-"+csPad(dayofthemonth,2); break;
    case "YYYY-MM-DD Z":
        strDate = jsdate.getUTCFullYear() +"-"+ csPad(jsdate.getUTCMonth()+1,2) +"-"+ csPad(jsdate.getUTCDate(),2); break;
    case "hh:mm":
        strDate = csPad(hour,2)+":"+csPad(minute,2); break;
    case "hh:mm tzd":
        strDate = csPad(hour,2)+":"+csPad(minute,2)+tzd; break;
    case "hh:mm Z":
        strDate = csPad(jsdate.getUTCHours(),2) +":"+ csPad(jsdate.getUTCMinutes(),2) +"Z"; break;
    case "hh:mm:ss":
        strDate = csPad(hour,2)+":"+csPad(minute,2)+":"+csPad(second,2); break;
    case "hh:mm:ss tzd":
        strDate = csPad(hour,2)+":"+csPad(minute,2)+":"+csPad(second,2)+tzd; break;
    case "hh:mm:ss Z":
        strDate = csPad(jsdate.getUTCHours(),2) +":"+ csPad(jsdate.getUTCMinutes(),2) +":"+ csPad(jsdate.getUTCSeconds(),2) +"Z"; break;
    case "LocaleString":   //Usual EG: Tuesday, June 10, 2003 08:25:22 PM
        strDate = jsdate.toLocaleString(); break;
    case "Ddd, dd Mmm YYYY hh:mm:ss": //RFC 822
        strDate = 
            csDAYNAME3[dayoftheweek]+", "+csPad(dayoftheweek,2)+" "+csMONTHNAME3[jsmonth]+" "+dayofthemonth+" "+
            csPad(hour,2)+":"+csPad(minute,2)+":"+csPad(second,2); break;
    case "Ddd, dd Mmm YYYY hh:mm:ss tzd":
        //strDate = jsdate.toUTCString();       //Don't use because lousy JS puts "UTC" on end by default.
        strDate = 
            csDAYNAME3[dayoftheweek]+", "+csPad(dayoftheweek,2)+" "+csMONTHNAME3[jsmonth]+" "+dayofthemonth+" "+
            csPad(hour,2)+":"+csPad(minute,2)+":"+csPad(second,2)+" "+tzd; break;
    case "Ddd, dd Mmm YYYY hh:mm:ss GMT": //GMT is preferred over Z or UTC for rss.
        strDate =
            csDAYNAME3[jsdate.getUTCDay()]+", "+csPad(jsdate.getUTCDate(),2)+" "+csMONTHNAME3[jsdate.getUTCMonth()]+" "+jsdate.getUTCFullYear()+" "+
            csPad(jsdate.getUTCHours(),2)+":"+csPad(jsdate.getUTCMinutes(),2)+":"+csPad(jsdate.getUTCSeconds(),2)+" GMT"; break;
    case "Ddd, dd Mmm YYYY hh:mm:ss Z":
        strDate =
            csDAYNAME3[jsdate.getUTCDay()]+", "+csPad(jsdate.getUTCDate(),2)+" "+csMONTHNAME3[jsdate.getUTCMonth()]+" "+jsdate.getUTCFullYear()+" "+
            csPad(jsdate.getUTCHours(),2)+":"+csPad(jsdate.getUTCMinutes(),2)+":"+csPad(jsdate.getUTCSeconds(),2)+" Z"; break;
    case "YYYY-MM-DDthh:mm:ss": //ISO 8601
        strDate = 
            fullyear+"-"+csPad(jsmonth+1,2)+"-"+csPad(dayofthemonth,2)+"t"+csPad(hour,2)+":"+csPad(minute,2)+":"+csPad(second,2); break;
    case "YYYY-MM-DDthh:mm:ss tzd":
        strDate = 
            fullyear+"-"+csPad(jsmonth+1,2)+"-"+csPad(dayofthemonth,2)+"t"+csPad(hour,2)+":"+csPad(minute,2)+":"+csPad(second,2)+tzd; break;
    case "YYYY-MM-DDthh:mm:ss Z":
        strDate = //'hi ISO';
            jsdate.getUTCFullYear() +"-"+ csPad(jsdate.getUTCMonth()+1,2) +"-"+ csPad(jsdate.getUTCDate(),2) +"t"+
            csPad(jsdate.getUTCHours(),2) +":"+ csPad(jsdate.getUTCMinutes(),2) +":"+ csPad(jsdate.getUTCSeconds(),2) +"Z"; break;
    }
    return strDate;
}

//Returns whole days until a provided date.
function csWholeDaysUntil(yr, mo, dy) {
	var nDate = new Date(); // current date (local)
	var nTime = nDate.getTime(); // current time (UTC)
	var dTime = Date.UTC(yr, mo - 1, dy); // specified time (UTC)
	var bTime = Math.abs(nTime - dTime)  // time difference
	return Math.round(bTime / DAY);
}
/********* Form Variables ***********/

//Validates existence and format of a date. This is a template of what would actually be on a form.
function csValidDate(form){
    var fld1=form.date
    var str1=fld1.value
    if (!str1){
        alert("You must enter a date.");
        fld1.focus();
        fld1.select();
        return false;
    }else{
        var dtm1=new Date(str1);
        if (isNaN(dtm1)){
            alert("Improper date format.");
            fld1.focus();
            fld1.select();
            return false; 
        }
    }
    //alert("You entered: " + dtm1);
    return true;
}
//Validates existence and format of an email. This is a template of what would actually be on a form.
function csValidEmail(form) {
    var fld1=form.email
    var str1=fld1.value
    if (!str1) {
        alert("You must enter an Email Address.");
        fld1.focus();
        fld1.select();
        return false;       
    } else if (window.RegExp) { //For browsers that support RegExp
        var strReg1 = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
        var strReg2 = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
        var reg1 = new RegExp(strReg1);
        var reg2 = new RegExp(strReg2);
        if (!reg1.test(str1) && reg2.test(str1)) {
            form;
        } else {
            alert("Improper email format.");
            fld1.focus();
            fld1.select();
            return false;
        }
    } else { //For browsers that don't support RegExp
        if (str1.indexOf("@") >= 0) {
            form;
        } else {
            alert("Improper email format.");
            fld1.focus();
            fld1.select();
            return false;
        }
    }
}
/********* String Functions ***********/

//Encode a string for storing in a field in SQL
function csEncodeSQL(str) {
    var result;
    if (str=="undefined" || str=="null") result = "";
    else {
        var str1 = new String(str);
        str=str1.replace(/'/g, "''");
        result = str.trim();
    }
    return result;
}
//Pad ID (str or int) with zeros on its left.
function csPad(ID,intPlaces) {
    //assumes that places >= length
    var str = String(ID);
    var intLength = str.length;
    var intDifference = intPlaces-intLength;
    while (intDifference>0) {
        str = "0"+str;
        intDifference--;
    }
    return str;
}
//Add trim() to String object
String.prototype.trim = function() {
    return this.replace(/^\s*(\b.*\b|)\s*$/, "$1");
}
//Changes an image with another.
function csFlipImage(url) {	
    window.event.srcElement.src = url;
}

//Opens a file in a new window with provided features.
function csInNewWindow(pstrFile, pstrWindowName, pstrWindowFeatures) {
    var intName;
    var intFeatures;
    var strWindowName = new String(pstrWindowName);
    var strWindowFeatures = new String(pstrWindowFeatures);
    intName = strWindowName.length;
    intFeatures = strWindowFeatures.length;
    if ((intName == 0) && (intFeatures == 0)) {
        window.open(pstrFile);
    } else if (intName == 0) {
        window.open(pstrFile, '', strWindowFeatures);
    } else if (intFeatures == 0) {
        window.open(pstrFile, strWindowName);
    } else {
        window.open(pstrFile, strWindowName, strWindowFeatures);
    }
    return false;
}

Server Side

<% %><%//Stick '@ language="JavaScript" ' while while developing for correct color coding 

Response.Buffer = true;
/*******************************************************************************************
This file should be included on the second line of every ASP page in this site 
(after <%@ language="JavaScript" %>) via something like this:
    #INCLUDE VIRTUAL = "/ic/includes/ssJS.asp"
    
__TOC
Site wide variables
Run on every page
Database Functions
    ssCloseConnection()
    ssOpenConnection()
DateTime Functions
    ssFormatDtm(dtm)
String Functions
    ssSTRtoSQL(str)
    ssSQLtoSQL(str)
    ssPad(ID,intPlaces)
    String.prototype.trim = function()
*******************************************************************************************/
/********* Site wide variables ***********/

var ssintServerNumber = 0; //Change this to 0-N depending on the server the database is on.
var gstrServerArray = ["SERVER0", "SERVER1", "SERVER2", "SERVER3"];
var gstrServer = gstrServerArray[gintServerNumber];
var gstrHTTPS;
if (gintServerNumber!=2) {  //Production Server (currently SERVER2)
    gstrHTTPS = "/aa/login/index.asp";
} else {
    gstrHTTPS = "https://www.somesite.com/aa/login/index.asp";
}

var ssSql, ssCnn, ssRst;

var ssSECONDinMS = 1000; // the number of milliseconds in a second
var ssMINUTEinMS = ssSECONDinMS * 60;
var ssHOURinMS = ssMINUTEinMS * 60;
var ssDAYinMS = ssHOURinMS * 24;
var ssWEEKinMS = ssDAYinMS * 7;
var ssDAYNAME = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var ssDAYNAME3 = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
var ssMONTHNAME = ["January","February","March","April","May","June","July","August","September","October","November","December"];
var ssMONTHNAME3 = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];

var ssNOW = new Date(); //Date at time of page load
var ssYEARoftheNOW = ssNOW.getFullYear();
var ssMONTHoftheNOW = ssNOW.getMonth(); //0-11
var ssDAYOFMONTHoftheNOW = ssNOW.getDate();
var ssDAYOFWEEKoftheNOW = ssNOW.getDay();
var ssHOURoftheNOW = ssNOW.getHours();
var ssMINUTEoftheNOW = ssNOW.getMinutes();
var ssSECONDoftheNOW = ssNOW.getSeconds();
var ssMILLISECONDoftheNOW = ssNOW.getMilliseconds();
var ssNOWinMS = ssNOW.getTime();
var ssHOURSFROMGMToftheNOW = ssNOW.getTimezoneOffset()/60;
var sstzdhour = ssNOW.getTimezoneOffset()/60;
var sstzdminute = ssNOW.getTimezoneOffset()%60;
var ssVALUEOFtheNOW = ssNOW.valueOf();
var ssSEEDoftheNOW = ssNOW.getTime() % 0xfffffff;
/********* Run on every page ************/

//This chunk logs each page visit
var sqlVisit;
ssOpenConnection();
sqlVisit = 
    "INSERT INTO WebSession (" +
    	"UserWinLogin,"+
        "UserHost,"+
        "UserAddress,"+
        "UserBrowser,"+
        "URL,"+
        "ServerHost,"+
        "ServerAddress,"+
        "Stamp,Note"+
    ") VALUES (" +
        "'" + Request.ServerVariables("REMOTE_USER") + "'," +
        "'" + Request.ServerVariables("REMOTE_HOST") + "'," +
        "'" + Request.ServerVariables("REMOTE_ADDR") + "'," +
        "'" + Request.ServerVariables("HTTP_USER_AGENT") + "'," +
        "'" + Request.ServerVariables("URL") + "'," +
        "'" + Request.ServerVariables("HTTP_HOST") + "'," +
        "'" + Request.ServerVariables("LOCAL_ADDR") + "'," +
        "'" + ssformatDtm('now', 'MM/DD/YYYY') + "'," +
        "'page visit'" +
    ")";
ssCnn.Execute(sqlVisit);
ssCloseConnection();
/********* Database Functions ***********/

//Close the connection
function ssCloseConnection() {
    //if (typeof(ssRst)=="object") {
    //  if (ssRst.State == 1) ssRst.Close();
    //  //ssRst = null;
    //}
    ssCnn.Close();
    ssCnn = null;
}
//Open a connection.
function ssOpenConnection() {
    var strConnection = "Provider=SQLOLEDB; Server="+gstrServer+"; Database=myDatabase; User ID=george; Password=notArealPassword;";
    ssCnn = Server.CreateObject("ADODB.Connection");
    ssCnn.Open(strConnection)
}
/********* DateTime Functions ***********/

function ssFormatDtm(myDate,format) {
    var strDate = "";
    if (myDate=="now") {
        var jsdate = new Date();
    } else {
        var jsdate = myDate;
        //myDate EGs: new Date("Oct 22, 1968"), new Date(), dtmX
    }
    var fullyear = jsdate.getFullYear();
    var jsmonth = jsdate.getMonth(); //0-11
    var dayofthemonth = jsdate.getDate();
    var dayoftheweek = jsdate.getDay();
    var hour = jsdate.getHours();
    var minute = jsdate.getMinutes();
    var second = jsdate.getSeconds();
    var millisecon = jsdate.getMilliseconds();
    var dtminms = jsdate.getTime();
    var valueofthedtm = jsdate.valueOf();
    var tzdhour = jsdate.getTimezoneOffset()/60;
    var tzdminute = jsdate.getTimezoneOffset()%60;
    var tzd; 
    if (tzdhour>0) {
        tzd = "-"+ gPad(tzdhour,2) +":"+ gPad(tzdminute,2);
    } else if (tzdhour<0) {
        tzd="+"+ gPad(-tzdhour,2) +":"+ gPad(tzdminute,2);
    } else tzd = "Z";
    switch (format) {
    case "Mmmm d, yyyy":
        strDate = ssMONTHNAME[jsmonth]+" "+dayofthemonth+", "+fullyear; break;
    case "Mmmm d, yyyy Z":
        strDate = ssMONTHNAME[jsdate.getUTCMonth()] +" "+ jsdate.getUTCDate() +", "+ jsdate.getUTCFullYear(); break;
    case "MM/DD/YYYY":
        strDate = gPad(jsmonth+1,2)+"/"+gPad(dayofthemonth,2)+"/"+fullyear; break;
    case "MM/DD/YYYY Z":
        strDate = gPad(jsdate.getUTCMonth()+1,2) +"/"+ gPad(jsdate.getUTCDate(),2) +"/"+ jsdate.getUTCFullYear(); break;
    case "YYYY":
        strDate = fullyear; break;
    case "YYYY Z":
        strDate = jsdate.getUTCFullYear(); break;
    case "YYYY-MM":
        strDate = fullyear+"-"+gPad(jsmonth+1,2); break;
    case "YYYY-MM Z":
        strDate = jsdate.getUTCFullYear() +"-"+ gPad(jsdate.getUTCMonth()+1,2); break;
    case "YYYY-MM-DD":
        strDate = fullyear+"-"+gPad(jsmonth+1,2)+"-"+gPad(dayofthemonth,2); break;
    case "YYYY-MM-DD Z":
        strDate = jsdate.getUTCFullYear() +"-"+ gPad(jsdate.getUTCMonth()+1,2) +"-"+ gPad(jsdate.getUTCDate(),2); break;
    case "hh:mm":
        strDate = gPad(hour,2)+":"+gPad(minute,2); break;
    case "hh:mm tzd":
        strDate = gPad(hour,2)+":"+gPad(minute,2)+tzd; break;
    case "hh:mm Z":
        strDate = gPad(jsdate.getUTCHours(),2) +":"+ gPad(jsdate.getUTCMinutes(),2) +"Z"; break;
    case "hh:mm:ss":
        strDate = gPad(hour,2)+":"+gPad(minute,2)+":"+gPad(second,2); break;
    case "hh:mm:ss tzd":
        strDate = gPad(hour,2)+":"+gPad(minute,2)+":"+gPad(second,2)+tzd; break;
    case "hh:mm:ss Z":
        strDate = gPad(jsdate.getUTCHours(),2) +":"+ gPad(jsdate.getUTCMinutes(),2) +":"+ gPad(jsdate.getUTCSeconds(),2) +"Z"; break;
    case "LocaleString":   //Usual EG: Tuesday, June 10, 2003 08:25:22 PM
        strDate = jsdate.toLocaleString(); break;
    case "Ddd, dd Mmm YYYY hh:mm:ss": //RFC 822
        strDate = 
            ssDAYNAME3[dayoftheweek]+", "+gPad(dayoftheweek,2)+" "+ssMONTHNAME3[jsmonth]+" "+dayofthemonth+" "+
            gPad(hour,2)+":"+gPad(minute,2)+":"+gPad(second,2); break;
    case "Ddd, dd Mmm YYYY hh:mm:ss tzd":
        //strDate = jsdate.toUTCString();       //Don't use because lousy JS puts "UTC" on end by default.
        strDate = 
            ssDAYNAME3[dayoftheweek]+", "+gPad(dayoftheweek,2)+" "+ssMONTHNAME3[jsmonth]+" "+dayofthemonth+" "+
            gPad(hour,2)+":"+gPad(minute,2)+":"+gPad(second,2)+" "+tzd; break;
    case "Ddd, dd Mmm YYYY hh:mm:ss GMT": //GMT is preferred over Z or UTC for rss.
        strDate =
            ssDAYNAME3[jsdate.getUTCDay()]+", "+gPad(jsdate.getUTCDate(),2)+" "+ssMONTHNAME3[jsdate.getUTCMonth()]+" "+jsdate.getUTCFullYear()+" "+
            gPad(jsdate.getUTCHours(),2)+":"+gPad(jsdate.getUTCMinutes(),2)+":"+gPad(jsdate.getUTCSeconds(),2)+" GMT"; break;
    case "Ddd, dd Mmm YYYY hh:mm:ss Z":
        strDate =
            ssDAYNAME3[jsdate.getUTCDay()]+", "+gPad(jsdate.getUTCDate(),2)+" "+ssMONTHNAME3[jsdate.getUTCMonth()]+" "+jsdate.getUTCFullYear()+" "+
            gPad(jsdate.getUTCHours(),2)+":"+gPad(jsdate.getUTCMinutes(),2)+":"+gPad(jsdate.getUTCSeconds(),2)+" Z"; break;
    case "YYYY-MM-DDthh:mm:ss": //ISO 8601
        strDate = 
            fullyear+"-"+gPad(jsmonth+1,2)+"-"+gPad(dayofthemonth,2)+"t"+gPad(hour,2)+":"+gPad(minute,2)+":"+gPad(second,2); break;
    case "YYYY-MM-DDthh:mm:ss tzd":
        strDate = 
            fullyear+"-"+gPad(jsmonth+1,2)+"-"+gPad(dayofthemonth,2)+"t"+gPad(hour,2)+":"+gPad(minute,2)+":"+gPad(second,2)+tzd; break;
    case "YYYY-MM-DDthh:mm:ss Z":
        strDate = //'hi ISO';
            jsdate.getUTCFullYear() +"-"+ gPad(jsdate.getUTCMonth()+1,2) +"-"+ gPad(jsdate.getUTCDate(),2) +"t"+
            gPad(jsdate.getUTCHours(),2) +":"+ gPad(jsdate.getUTCMinutes(),2) +":"+ gPad(jsdate.getUTCSeconds(),2) +"Z"; break;
    }
    return strDate;
}
/********* String Functions ***********/

//Encode a string for storing in a field in SQL
function ssSTRtoSQL(str) {
    var str1 = new String(str);
    str1=str1.replace(/'/g, "''");
    return str1.trim();
}
//Take a field from SQL and puts it back
function ssSQLtoSQL(str) {
    if (str=="") return "'\'";
    else {
        var str1 = new String(str);
        str=str1.replace(/'/g, "''");
        if (str.toLowerCase().trim()=="null") return "NULL";
        else return "'"+str.trim()+"'";
    }
}
//Pad ID (str or int) with zeros on its left.
function ssPad(ID,intPlaces) {
    //assumes that places >= length
    var str = String(ID);
    var intLength = str.length;
    var intDifference = intPlaces-intLength;
    while (intDifference>0) {
        str = "0"+str;
        intDifference--;
    }
    return str;
}
//Add trim() to String object
String.prototype.trim = function() {
    return this.replace(/^\s*(\b.*\b|)\s*$/, "$1");
}
%>

2005-02-21 21:36:53Z