function TypeOf(v){ if(typeof v !='object')return(typeof v); if(v==null)return 'null'; var A=v.constructor.toString().match(/function (\w+)/); if(A && A[1]!="Object") return A[1]; A=v.toString().match(/\[object (\w+)\]/); if(A) return A[1]; return typeof(v); } function IsDefined(v) { return v!==null && v!==undefined; } function IsInteger(v) { return TypeOf(v).match(/number/i) && (v % 1 == 0); } function IsNumber(v) { return !!TypeOf(v).match(/number/i); } function IsString(v) { return !!TypeOf(v).match(/string/i); } function IsBoolean(v) { return !!TypeOf(v).match(/boolean/i); } function IsArray(v) { return TypeOf(v)=='Array'; } function IsImage(v) { return TypeOf(v)=='image'; } function IsSurface(v) { return TypeOf(v)=='surface'; } function IsFont(v) { return TypeOf(v)=='font'; } function IsColor(v) { return TypeOf(v)=='color'; } function IsColormatrix(v) { return TypeOf(v)=='colormatrix'; } function IsWindowStyle(v) { return TypeOf(v)=='windowstyle'; } function IsSpriteset(v) { return TypeOf(v)=='spriteset'; } function IsByteArray(v) { return TypeOf(v)=='byte_array'; } //todo: http://snipplr.com/view/1996/typeof--a-more-specific-typeof/