var TypeHelpers = new function(){

	// I use me instead of this.  For reasons why, please read:
	// http://w3future.com/html/stories/callbacks.xml
	var me = this;

	me.hasSmoothing = function(){

	    // IE has screen.fontSmoothingEnabled - sweet!
	    if (typeof(screen.fontSmoothingEnabled) != "undefined") {
		return screen.fontSmoothingEnabled;
	    } else {

		try {

		    // Create a 35x35 Canvas block.
		    var canvasNode = document.createElement('canvas');
		    canvasNode.width = "35";
            canvasNode.height = "35"

		    // We must put this node into the body, otherwise
		    // Safari Windows does not report correctly.
		    canvasNode.style.display = 'none';
		    document.body.appendChild(canvasNode);
		    var ctx = canvasNode.getContext('2d');

		    // draw a black letter 'O', 32px Arial.
		    ctx.textBaseline = "top";
		    ctx.font = "12px Arial";
		    ctx.fillStyle = "black";
		    ctx.strokeStyle = "black";

		    ctx.fillText("O", 0, 0);

		    // start at (8,1) and search the canvas from left to right,
		    // top to bottom to see if we can find a non-black pixel.  If
		    // so we return true.
		    for (var j = 8; j <= 32; j++) {
			for (var i = 1; i <= 32; i++) {

			    var imageData = ctx.getImageData(i, j, 1, 1).data;
			    var alpha = imageData[3];

			    if (alpha != 255 && alpha != 0) {
				return true; // font-smoothing must be on.
			    }
			}

		    }

		    // didn't find any non-black pixels - return false.
		    return false;
		}
		catch (ex) {
		    // Something went wrong (for example, Opera cannot use the
		    // canvas fillText() method.  Return null (unknown).
		    return null;
		}
	    }
	}

	    me.insertClasses = function(){
		var result = me.hasSmoothing();
		var htmlNode = document.getElementsByTagName('html')[0];
		if (result == true) {
		    htmlNode.className += " hasFontSmoothing-true";
		} else if (result == false) {
		    htmlNode.className += " hasFontSmoothing-false";
		} else { // result == null
		    htmlNode.className += " hasFontSmoothing-unknown";
		}
	    }

    }


    jQuery(document).ready(function(){
	    TypeHelpers.insertClasses();
	});
