(function(){

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

    function addEventListener(obj, event, func)
    {
        if (obj.addEventListener) {
            obj.addEventListener(event, func, false);
        } else if (obj.attachEvent){
            obj.attachEvent('on' + event, func);
        } else {
            alert('missing event handler');
        }
    }
    
    function str_trim(str)
    {
        return str.replace(/^\s+|\s+$/g, '');
    }
    
    function getElementsByClassName(node, classname)
    {
        if (typeof(node.getElementsByClassName) != "undefined")
        {
            return node.getElementsByClassName(classname);
        }
        else
        {
            var a = [];
            var re = new RegExp('\\b' + classname + '\\b');
            var els = node.getElementsByTagName("*");
            for(var i=0,j=els.length; i<j; i++)
                if(re.test(els[i].className))a.push(els[i]);
            return a;
        }
    }
    
    function setClass(node, classname)
    {
        if (BrowserDetect.browser == "Explorer") { node.setAttribute("className", classname); } else { node.setAttribute("class", classname); }
    }
    
    function getText(node)
    {
        if (typeof(node.text) != 'undefined')
            return node.text;
            
        if (typeof(node.textContent) != 'undefined')
            return node.textContent;
            
        if (typeof(node.innerText) != 'undefined')
            return node.innerText;
            
        return "undefined";
    }
    
    function makeChurchNewsSpecial()
    {
        var items_mainlevel = getElementsByClassName(document, 'mainlevel');
        for (var i = 0; i < items_mainlevel.length; ++i)
        {
            var item = items_mainlevel[i];
            var text = getText(item);
            if
            (
                text == "教會消息"
                ||
                text == "Church News"
                ||
                text == "事工消息"
            )
            {
                if
                (
                    item.parentNode.childNodes.length == 1
                    &&
                    item.parentNode.parentNode.childNodes.length == 1
                )
                {
                    setClass(item.parentNode.parentNode, "church-news");
                }
                break;
            }
        }
    }

    /*
     * Code to run when page is loaded
     */
    addEventListener(window, 'load',function(){
        makeChurchNewsSpecial();
        
        var menu_items = getElementsByClassName(document, "sublevel");
        for (var i = 0; i < menu_items.length; ++i)
        {
            if (menu_items[i].tagName == "A")
            {
                addEventListener(menu_items[i], 'mouseover', 
                    function(e)
                    {
                        var newClass = "sublevel_sel";
                        if (typeof(document.attachEvent) != "undefined") { setClass(e.srcElement, newClass); } else { setClass(this, newClass); }
                    }
                );
                addEventListener(menu_items[i], 'mouseout', 
                    function(e)
                    {
                        var newClass = "sublevel";
                        if (typeof(document.attachEvent) != "undefined") { setClass(e.srcElement, newClass); } else { setClass(this, newClass); }
                    }
                );
            }
        }
        
        var menu_items = getElementsByClassName(document, "mainlevel-nav");
        for (var i = 0; i < menu_items.length; ++i)
        {
            if (menu_items[i].tagName == "A")
            {
                addEventListener(menu_items[i], 'mouseover', 
                    function(e)
                    {
                        var newClass = "mainlevel-nav_sel";
                        if (typeof(document.attachEvent) != "undefined") { setClass(e.srcElement, newClass); } else { setClass(this, newClass); }
                    }
                );
                addEventListener(menu_items[i], 'mouseout', 
                    function(e)
                    {
                        var newClass = "mainlevel-nav";
                        if (typeof(document.attachEvent) != "undefined") { setClass(e.srcElement, newClass); } else { setClass(this, newClass); }
                    }
                );
            }
        }

        var menu_items = getElementsByClassName(document, "mainlevel");
        for (var i = 0; i < menu_items.length; ++i)
        {
            if (menu_items[i].tagName == "A")
            {
                addEventListener(menu_items[i], 'mouseover', 
                    function(e)
                    {
                        var newClass = "mainlevel_sel";
                        if (typeof(document.attachEvent) != "undefined") { setClass(e.srcElement, newClass); } else { setClass(this, newClass); }
                    }
                );
                addEventListener(menu_items[i], 'mouseout', 
                    function(e)
                    {
                        var newClass = "mainlevel";
                        if (typeof(document.attachEvent) != "undefined") { setClass(e.srcElement, newClass); } else { setClass(this, newClass); }
                    }
                );
            }
        }

    });
    
})();