window.jhwweb={
    base:"",
    isIE:false,
    pageEvent:{
        loadHandlers:new Array(),
        unloadHandlers:new Array(),
        loaded:false,
        addLoadHandler:function(handler){
            if(this.loaded) handler();
            else this.loadHandlers.push(handler);
        },
        doLoad:function(){
            var ua=navigator.userAgent.toLowerCase();
            var z=ua.indexOf("msie");
            if(z!=-1){
                var ds=ua.substr(z).match(/\d+(\.\d+)?/);
                z=parseFloat(ds[0]);
                jhwweb.isIE=z<8;
            }
            var pe=jhwweb.pageEvent;
            pe.loaded=true;
            for(var i=0; i<pe.loadHandlers.length; i++){pe.loadHandlers[i]();}
        },
        addUnLoadHandler:function(handler){
            this.unloadHandlers.push(handler);
        },
        doUnLoad:function(){
            var pe=jhwweb.pageEvent;
            pe.loaded=false;
            while(pe.unloadHandlers.length>0){
                pe.unloadHandlers.pop()();
            }
        }
    }
}

window.jhwweb.dom={
    getClassName:function(el) //get html class name
    {
        if(el.className==undefined) return el.getAttribute("class");
        return el.className;
    },
    setClassName:function(el,className) //set html class name
    {
        if(el.className==undefined) el.setAttribute("class",className);
        else el.className=className;
    },
    addScript:function(scriptSource)          //load script file in document <HEAD>
    {
        var sc=document.createElement("script");
        with (sc)
        {
            setAttribute("language", "javascript");
            setAttribute("type", "text/javascript");
            setAttribute("src", scriptSource);
        }
        document.getElementsByTagName("head")[0].appendChild(sc);
        return sc;
    },
    removeScript:function(script){
        document.getElementsByTagName("head")[0].removeChild(script);
    },
    addEventListener:function(event,target,listener,useCapture)
    {
        if(!listener) listener=jhw.ui.event.mouseHandler;
        if(document.addEventListener==null) target.attachEvent("on"+event,listener);
        else target.addEventListener(event,listener,useCapture);
    },
    getWindowCoords:function (el){
        c=new Object();
        c.x=0;
        c.y=0;
        while(el){
            c.x+=el.offsetLeft-el.scrollLeft;
            c.y+=el.offsetTop-el.scrollTop;
            el=el.offsetParent;
        }
        return c;
    },
    getFirstChildNode:function(nd){
        var cn=nd.firstChild;
        while(cn && cn.nodeType!=1){cn=cn.nextSibling;}
        return cn;
    }
}

window.jhwweb.menus={
    menus:null,
    activeMenu:null,
    activeEl:null,
    menuTimer:null,
    loaded:false,
    clickHandler:null,
    setLoaded:function(){jhwweb.menus.loaded=true;},

    showMenu:function(evt){
        var me=jhwweb.menus;
        var dom=jhwweb.dom;
        clearTimeout(me.menuTimer);
        if(!evt) evt=window.event;
        var el=evt.srcElement;
        if(!el) el=evt.currentTarget;
        if(el.tagName.toUpperCase()=="A") el=el.parentNode;
        var m=me.menus[el.id];
        me.clearMenus();
        if(m && me.activeMenu!=m){
            me.activeMenu=m;
            me.activeEl=el;
            if(me.loaded){
                dom.setClassName(el,"activemenu");
                var cc=dom.getWindowCoords(el);
                var minw=el.clientWidth;
                if(me.activeMenu.clientWidth<minw) me.activeMenu.style.width=(minw-4)+"px";
                var ms=me.activeMenu.style;
                ms.left=cc.x+(jhwweb.isIE?2:0)+"px";   //correct for IE offsetLeft bug
                ms.top=cc.y+el.offsetHeight+"px";
                ms.visibility="";
            }
        }
        if(!me.loaded) me.menuTimer=setTimeout("jhwweb.menus.setLoaded()",200);
    },

    clicked:function(evt){
        var me=jhwweb.menus;
        me.clearMenus()
        if(me.clickHandler) me.clickHandler(evt);
    },

    clearMenus:function(){
        var me=jhwweb.menus;
        if(me.activeMenu){
            me.activeMenu.style.visibility="hidden";
            jhwweb.dom.setClassName(me.activeEl,"passivemenu");
            me.activeEl=null;
            me.activeMenu=null;
        }
    },

    leaveMenu:function(evt){
        var me=jhwweb.menus;
        if(me.activeMenu) me.menuTimer=setTimeout("jhwweb.menus.clearMenus()",200);
    },

    holdMenu:function (){clearTimeout(jhwweb.menus.menuTimer);},

    addSearch:function(){
        var nr=jhwweb.dom.getFirstChildNode(document.getElementById("navbar"));
        while(nr && nr.tagName!="TR"){nr=jhwweb.dom.getFirstChildNode(nr)};
        if(nr){
            var sd=document.createElement("td");
            sd.style.border="none";
            sd.style.margin="0px";
            sd.style.padding="0px";
            var sh="<input id=\"srch\" type=\"text\" style=\"width:11em;font-size:0.8em;\"></input>";
            sd.innerHTML=sh;
            nr.appendChild(sd);
            sd=document.createElement("td");
            sd.style.border="none";
            sd.style.margin="0px";
            sd.style.padding="0px";
            sh="<button style=\"font-size:0.8em;\" onclick=\"jhwweb.menus.doSearch()\">Search</button>";
            sd.innerHTML=sh;
            nr.appendChild(sd);
            c=document.getElementById("srch");
            jhwweb.dom.addEventListener("keydown",c,jhwweb.menus.chkKey,true);
        }
    },

    chkKey:function(evt){
        if(!evt) evt=window.event;
        if(evt.keyCode==13) jhwweb.menus.doSearch();
    },

    doSearch:function(){
        var sh=document.getElementById("srch");
        var ss=sh.value;
        if(ss){
//            ss=jhwweb.base+"noindex/search.htm?search="+encodeURIComponent(ss+" site:stmaryswoodbridge.org")+"&start=1";
//            ss=jhwweb.base+"noindex/search_google.htm?search="+encodeURIComponent(ss+"+site:stmaryswoodbridge.org")+"&start=1";
            ss=jhwweb.base+"search/search.php?search="+encodeURIComponent(ss);
            document.location=ss;
        }
    },

    doUpdates:function(){
// Example of use
//        <script type="text/javascript">
//            //<!--
//            jhwweb.upd=[
//                "Sun, 26 Apr 2009",
//                ["w1","w2"]
//            ]
//            //-->
//        </script>
        if(jhwweb.upd && jhwweb.upd.length>1){
            var updData=jhwweb.upd;
            cd=new Date(updData[0]);
            if(new Date()>cd){
                for(i=1;i<updData.length;i++)
                    {
                        var updItem=updData[i];
                        if(updItem[0]) document.getElementById(updItem[0]).style.display="none";
                        if(updItem[1]) document.getElementById(updItem[1]).style.display="";
                   }
                jhwweb.menus.setDates(cd);
            }
        }
    },

    init:function(){
        var me=jhwweb.menus;
        var dom=jhwweb.dom;
        if(location.pathname.indexOf("search")==-1) me.addSearch();
        var z=menuDefs.length;
        me.menus=new Array(z);
        var shortMenu=document.getElementById("topFrame")!=null;
        while(z-- >0){
            var an=menuDefs[z][0];
            var c=document.getElementById(an);
            var sml=menuDefs[z].length-1;
            if(c!=null){
                dom.setClassName(c,"passivemenu");
                c.firstChild.style.textDecoration="none";
                if(sml>2){
                    var mpop=document.createElement("div");
                    document.getElementById("navbar").appendChild(mpop);
                    dom.addEventListener("mouseover",c,jhwweb.menus.showMenu,true);
                    dom.addEventListener("mouseout",c,jhwweb.menus.leaveMenu,true);
                    dom.addEventListener("mouseover",mpop,jhwweb.menus.holdMenu,true);
                    dom.addEventListener("mouseout",mpop,jhwweb.menus.leaveMenu,true);
                    dom.addEventListener("click",document,jhwweb.menus.clicked,true);
                    me.menus[an]=mpop;
                    dom.setClassName(mpop,"popup");
                    var html="<table class=\"menutab\">\r\n";
                    for(var i=3; i<=sml; i++){
                        var tg=(menuDefs[z][i].length>2)?" target='_blank'":"";
                        var hr=menuDefs[z][i][1];
                        if(hr.indexOf('http')==-1) hr=jhwweb.base+hr;
                        if(shortMenu && sml>5){
                            html+="<tr><td class=\"menucell\" style=\"border-right:1px solid #0000FF;padding-right:4px;\"><a style='text-decoration:none;' href='"+jhwweb.base+menuDefs[z][i][1]+"'"+tg+">"+menuDefs[z][i][0].replace(/ /g,"&nbsp;")+"</a></td>\r\n"
                            if(i++ <sml) html+="<td class=\"menucell\"><a style='text-decoration:none;' href='"+hr+"'"+tg+">"+menuDefs[z][i][0].replace(/ /g,"&nbsp;")+"</a></td>"
                            html+="</tr>\r\n";
                        }
                        else html+="<tr><td class=\"menucell\"><a style='text-decoration:none;' href='"+hr+"'"+tg+">"+menuDefs[z][i][0].replace(/ /g,"&nbsp;")+"</a></td></tr>\r\n"
                    }
                    html+="</table>";
                    mpop.innerHTML=html;
                    mpop.style.visibility="hidden";
                }
            }
            me.menuTimer=setTimeout("jhwweb.menus.setLoaded()",200);
        }
        me.setDates(new Date(document.lastModified));
        me.doUpdates();
    },
    setDates:function(lm){
        var lms="Copyright &copy; St. Mary's PCC, 2007-";
        lms+=new Date().getFullYear().toString();
        lms+="<br>(contributors reserve their individual copyrights)";
        var d=lm.getDate();
        if(!isNaN(d)){
        lms+="<br>Page updated: "+d+"<sup>";
        switch(d){
            case 1:
            case 21:
            case 31:
                lms+="st"
                break;
            case 2:
            case 22:
                lms+="nd"
                break;
            case 3:
            case 23:
                lms+="rd"
                break;
            default:
                lms+="th"
            }
        lms+="</sup> "
        d=lm.getMonth();
        switch(d){
            case 0:
                lms+="January"
                break;
            case 1:
                lms+="February"
                break;
            case 2:
                lms+="March"
                break;
            case 3:
                lms+="April"
                break;
            case 4:
                lms+="May"
                break;
            case 5:
                lms+="June"
                break;
            case 6:
                lms+="July"
                break;
            case 7:
                lms+="August"
                break;
            case 8:
                lms+="September"
                break;
            case 9:
                lms+="October"
                break;
            case 10:
                lms+="November"
                break;
            case 11:
                lms+="December"
                break;
            }
        lms+=" "+lm.getFullYear();
        }
        var p=document.getElementById("footcentre");
        p.innerHTML=lms;
    }
}

jhwweb.pageEvent.addLoadHandler(jhwweb.menus.init);
window.onload=jhwweb.pageEvent.doLoad;

