クロスブラウザ対策用JSで一般的なEventなどの一般的なもの

browser判別のみjQueryを使用した。

            /* from jQuery */
            var userAgent = navigator.userAgent.toLowerCase();
            
            // Figure out what browser is being used
            var browser = {
                version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
                safari: /webkit/.test(userAgent),
                opera: /opera/.test(userAgent),
                msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
                mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
            };
			/* End: from jQuery*/
            
            function $(id){
                return document.getElementById(id);
            };
            function $t(tag){
                return document.getElementsByTagName(tag);
            };
            function $n(name){
                return document.getElementsByName(name);
            };
            function $body(){
                return document.getElementsByTagName('body')[0];
            };
            function log(str1, str2, some){
                if (window.console != undefined && console.log) {
                    for (var i = 0; i < arguments.length; i++) {
                        console.log(arguments[i]);
                    }
                }
            }
            
            // イベント伝達禁止
            function stopEvent(ev){
                if (ev.stopPropagation) 
                    ev.stopPropagation();
                else 
                    ev.cancelBubble = true;
            }
            
            // イベントキャンセル            
            function preventEvent(ev){
                if (ev.prevenDefault) 
                    ev.preventDefault();
                else 
                    returnValue = false;
            }
            
            // event observer
            var setEvent = function(obj, type, func){
                if (obj) {
                    if (obj.addEventListener) 
                        obj.addEventListener(type, func, false);
                    else 
                        if (obj.attachEvent) 
                            obj.attachEvent("on" + type, func);
                }
                else {
                    return false;
                }
            };
            
            // this の指定化
            function bindFunc(bind, func){
                return function(){
                    return func.apply(bind, arguments);
                };
            }