Немного переделал функцию. теперь можно определить точно, что за элемент. Работает кроссбраузерно для всех основных типов данных, остальное (HTML элементы надо подходить индивидуально)
/**
* Определение типа обьекта. Баг IE: Элемент A возвращает как '', а не HTMLAnchorElement
* #param {any} o обьект для определения.
* #return null,undefined,"Object","Array","Function","String","Boolean","Number","Window","HTMLDocument","HTML*Element","HTMLCollection"="NodeList" и др.
*/
function typeOf(o){
if (o===null) return "null";
if (o===undefined) return "undefined";
var $=Object.prototype.toString.call(o);
if (o+''!=$ && 'ASNBF'.indexOf($[8])<0) $=o+'';
return $.slice(8,-1);
}