function GetXMLHttpRequest() { 
    var object = null; 
    if (window.XMLHttpRequest) object = new XMLHttpRequest(); 
    else if (window.ActiveXObject) { 
        try { object = new ActiveXObject("Msxml2.XMLHTTP"); } 
        catch(e) { } 
        if (object == null) 
            try { object = new ActiveXObject("Microsoft.XMLHTTP"); } 
            catch(e) { } 
    } if (object == null) alert("Your browser does not support AJAX"); 
    return object; 
}

function agent(v) { return(Math.max(navigator.userAgent.toLowerCase().indexOf(v),0)); }
function AthenaBar()
{
    this.loaded = false;
}

AthenaBar.prototype = {
    Toggle: function() {
        if (document.getElementById('CommonHeaderAthenaLink').className == "open")
        {
            document.getElementById('CommonHeaderAthenaLink').className = "";
            document.getElementById('AthenaBar').style.display = "";
            document.getElementsByTagName('form')[0].removeAttribute("style");
        }
        else
        {
            document.getElementById('CommonHeaderAthenaLink').className = "open";
            document.getElementById('AthenaBar').style.display = "block";
            document.getElementsByTagName('form')[0].setAttribute('style', 'background-position: left ' + document.getElementById('AthenaBar').offsetHeight + 'px;');
        }
        return false;
    },
    ChangeBg: function(bg) {
    },
    ViewBg: function(bg) {
        document.getElementById('CommonHeader').setAttribute('style', "background-image: url(/Themes/Athena2008/api.ashx/2101/Background/Header/" + bg + ");");
    },
    ResetBg: function() {
        document.getElementById('CommonHeader').removeAttribute('style');
    }
};

function AthenaCSS()
{
    this.userid = 2101;
    this.CSS = null;
}

AthenaCSS.prototype = {
    Load: function() {
        if (!agent('msie') && this.CSS != null) document.getElementsByTagName("head")[0].removeChild(this.CSS);
        this.CSS = document.createElement('style');
        if (agent('msie')) {
            this.CSS = document.createStyleSheet();
            var a = this.CSS.owningElement || this.CSS.ownerNode;
            a.setAttribute('type', 'text/css');
        } else { this.CSS.setAttribute('type', 'text/css'); this.CSS.id = "AthenaCSS"; }
        var arra = document.getElementById('AthenaBarHeaderBackgrounds').getElementsByTagName('div')[1].getElementsByTagName('a');
        var x = Math.floor(Math.random() * arra.length);
        var img = arra[x].href.replace("javascript:Athena.Bar.ChangeBg('", "").replace("');", "");
        var s = "                 form { background-image: url(" + Athena.Root + "Themes/Athena2008/api.ashx/" + this.userid + "/Background/Form); }\n"
        s += "                  #CommonHeader { background-image: url(" + Athena.Root + "Themes/Athena2008/api.ashx/" + this.userid + "/Background/Header/" + img + "); }";
        if (agent('msie'))
        {
            ruleArray = s.split("}");
            for (i in ruleArray) {
                try {
                var currentRule = ruleArray[i].replace(/^\s*/, "").replace(/\s*$/, "");
                var nameValueArray = currentRule.split("{");
                var names = nameValueArray[0].replace(/^\s*/, "").replace(/\s*$/, "").split(',');
                var value = nameValueArray[1].replace(/^\s*/, "").replace(/\s*$/, "");
                for (n in names) this.CSS.addRule(names[n],value);
                } catch (e) { }
            }
        }
        else {
            this.CSS.appendChild(document.createTextNode(s));
            document.getElementsByTagName("head")[0].appendChild(this.CSS);
        }
    }
}
function AthenaSearch(searchboxid) {
    this.loaded = false;
    this.resultclick = false;
    this.requestObject = null;
    this.requestObject = GetXMLHttpRequest();
    this.requestObject.onreadystatechange = this.ProcessRequest;
    this.SearchTimeOut = null;
    if (searchboxid != "") {
        document.getElementById(searchboxid).setAttribute("onkeyup", "Athena.Search.SearchKey(this);");
        document.getElementById(searchboxid).parentNode.parentNode.parentNode.setAttribute("onclick", "if (document.getElementById('" + searchboxid + "').value != '') Athena.Search.Open();");
    }
}
AthenaSearch.prototype = {
    Close: function()
    {
        document.getElementById("SearchResults").style.display = "";
    },
    Open: function()
    {
        this.resultclick = true;
        document.getElementById("SearchResults").style.display = "block";
    },
    ProcessRequest: function() { 
        if (Athena.Search.requestObject.readyState == 4) { 
            if (Athena.Search.requestObject.status == 200) { 
                if (Athena.Search.requestObject.responseText != null) { 
                    var myObject = eval("(" + unescape(Athena.Search.requestObject.responseText) + ")");
                    if (myObject.results > 0)
                    {
                        if (myObject.results > 10)
                            document.getElementById("SearchResultsContent").innerHTML = "<div>Displaying Results 1-" + myObject.searchresults.length + " out of " + myObject.results + "</div>";
                        else document.getElementById("SearchResultsContent").innerHTML = "<div>Displaying Results 1-" + myObject.results + " of of " + myObject.results + "</div>";
                        var list = document.createElement("ul");
                        for (var x = 0; x < myObject.searchresults.length; x++) {
                            var item = document.createElement("li");
                            item.innerHTML = "<h1><a href=\"" + myObject.searchresults[x].url + "\"><b><b>" + myObject.searchresults[x].title + "</b></b></a></h1>\n";
                            item.innerHTML += "<div>" + Athena.Search.RemoveExtra(unescape(myObject.searchresults[x].body)) + "</div></li>\n";
                            list.appendChild(item);
                        }
                        document.getElementById("SearchResultsContent").appendChild(list);
                        
                    } else document.getElementById("SearchResultsContent").innerHTML = "No Results";
                }
            } else {  
                if (Athena.Search.requestObject.responseText) alert("AJAX Error: " + Athena.Search.requestObject.responseText);
                else alert("Unknown AJAX Error!");
            } 
        }
    },
    RemoveExtra: function(string)
    {
        string = string.replace(/<[^>]*>/gi, "");
        if (string.length > 300) string = string.substring(0, 300);
        return string;
    },
    SearchKey: function(o) {
        if (o.value == "") { 
            document.getElementById("SearchResults").style.display = "";
            clearTimeout(this.SearchTimeOut);
            return;
        }
        if (!this.loaded) {
            document.body.onclick = function() { if (!Athena.Search.resultclick) Athena.Search.Close(); Athena.Search.resultclick = false; };
            document.getElementById("SearchResults").onclick = function () { Athena.Search.resultclick = true; setTimeout('document.getElementById("SearchResults").style.display = "block";', 100); };
            this.loaded = true;
        }
        clearTimeout(this.SearchTimeOut);
        this.SearchTimeOut = setTimeout("Athena.Search.Search('" + o.value + "');", 500);

    },
    Search: function(value)
    {
        document.getElementById("SearchResultsContent").innerHTML = "Loading...";
        document.getElementById("SearchResults").style.display = "block";
        var url = "/Themes/Athena2008/api.ashx/Search/" + encodeURI(value.replace(" ", "+"));
        this.requestObject.open("GET", url, true); 
        this.requestObject.setRequestHeader("json", "put");
        this.requestObject.send("");
    }
};

var Athena = { Bar: new AthenaBar(), CSS: new AthenaCSS(), Root: '/', Search: new AthenaSearch('ctl00_bhcr_sr_SearchForm1_ctl00_TitleBarSearchText') };


Athena.CSS.Load();
