Fav XMLHttpRequest function

	var request = null;
	function InitAJAX()
	{
	    var objxml = null;
	    var ProgID = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];            

	    try {
	        objxml = new XMLHttpRequest();
	    }
	    catch(e) {
	        for (var i = 0; i < ProgID.length; i++){
	            try {
	                objxml = new ActiveXObject(ProgID[i]);
	            }
	            catch(e) {
	                continue;
	            }
	        }
	    }
	    return objxml;
	}

Usage:

request = InitAJAX();
// Do useful stuf with request

Rock solid javascript addEvent()

Rock solid addEvent() written, again, by Dustin Diaz (my internet super hero).

	function addEvent( obj, type, fn ) {
		if (obj.addEventListener) {
			obj.addEventListener( type, fn, false );
			EventCache.add(obj, type, fn);
		}
		else if (obj.attachEvent) {
			obj["e"+type+fn] = fn;
			obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
			obj.attachEvent( "on"+type, obj[type+fn] );
			EventCache.add(obj, type, fn);
		}
		else {
			obj["on"+type] = obj["e"+type+fn];
		}
	}

	var EventCache = function(){
		var listEvents = [];
		return {
			listEvents : listEvents,
			add : function(node, sEventName, fHandler){
				listEvents.push(arguments);
			},
			flush : function(){
				var i, item;
				for(i = listEvents.length - 1; i >= 0; i = i - 1){
					item = listEvents[i];
					if(item[0].removeEventListener){
						item[0].removeEventListener(item[1], item[2], item[3]);
					};
					if(item[1].substring(0, 2) != "on"){
						item[1] = "on" + item[1];
					};
					if(item[0].detachEvent){
						item[0].detachEvent(item[1], item[2]);
					};
					item[0][item[1]] = null;
				};
			}
		};
	}();
	addEvent(window,'unload',EventCache.flush);

It was posted on his blog in 2005 but I’m sure it ages well.. also I just wanted to post some more code.

Originally found here

Integer to Roman numeral

Changes and integer to a roman numeral.

	private function numberToRoman($num)
	{
	     $n = intval($num);
	     $result = '';

	     $lookup = array('M' => 1000, 'CM' => 900, 'D' => 500, 'CD' => 400,
	     'C' => 100, 'XC' => 90, 'L' => 50, 'XL' => 40,
	     'X' => 10, 'IX' => 9, 'V' => 5, 'IV' => 4, 'I' => 1);

	      foreach ($lookup as $roman => $value)
	     {
	            $matches = intval($n / $value);
	            $result .= str_repeat($roman, $matches);
	            $n = $n % $value;
	      }

	      return $result;
	}

Originally found here

Optimised AJAX Call

A nice way to manage AJAX calls written by Dustin Diaz.

	var asyncRequest = function() {
	  function handleReadyState(o, callback) {
	    if (o && o.readyState == 4 && o.status == 200) {
	      if (callback) {
	        callback(o);
	      }
	    }
	  }
	  var getXHR = function() {
	    var http;
	    try {
	      http = new XMLHttpRequest;
	        getXHR = function() {
	          return new XMLHttpRequest;
	        };
	    }
	    catch(e) {
	      var msxml = [
	        ‘MSXML2.XMLHTTP.3.0′,
	        ‘MSXML2.XMLHTTP’,
	        ‘Microsoft.XMLHTTP’
	      ];
	      for (var i=0, len = msxml.length; i < len; ++i) {
	        try {
	          http = new ActiveXObject(msxml[i]);
	          getXHR = function() {
	            return new ActiveXObject(msxml[i]);
	          };
	          break;
	        }
	        catch(e) {}
	      }
	    }
	    return http;
	  };
	  return function(method, uri, callback, postData) {
	    var http = getXHR();
	    http.open(method, uri, true);
	    handleReadyState(http, callback);
	    http.send(postData || null);
	    return http;
	  };
	}();

Originally found here

Disable the Firebug extension

Useful for pages containing a lot of javascript that might bring Firefox to a grinding halt if it’s not disabled.

	if (! ('console' in window) || !('firebug' in console)) {
	    var names = ['log', 'debug', 'info', 'warn', 'error', 'assert', 'dir', 'dirxml', 'group', 'groupEnd', 'time', 'timeEnd', 'count', 'trace', 'profile', 'profileEnd'];
	    window.console = {};
	    for (var i = 0; i < names.length; ++i) window.console[names[i]] = function() {};
	}

Originally found here