﻿var eventNameSort = false;
function SortByName(sortOn) {
    var dvEventMain = document.getElementById("dvEventMain");
    var nameTitleId = document.getElementById("sortname");
    if (dvEventMain != null) {
        //debugger;
        for (var i = 0; i < dvEventMain.childNodes.length; i++) {
            var small = i;
            if (eventNameSort == false)
                for (var j = i; j < dvEventMain.childNodes.length; j++) {
                dvRows1 = document.getElementById(sortOn + small);
                dvRows2 = document.getElementById(sortOn + j);
                nameTitleId.style.background = "url(images/bg_label_b.PNG) right 5px no-repeat";
                if (dvRows1 != null && dvRows2 != null) {
                    if (dvRows1.childNodes[0].innerHTML.toUpperCase() > dvRows2.childNodes[0].innerHTML.toUpperCase()) {
                        small = j;
                    }
                }
            }
            else
                for (var j = i; j < dvEventMain.childNodes.length; j++) {
                dvRows1 = document.getElementById(sortOn + small);
                dvRows2 = document.getElementById(sortOn + j);
                nameTitleId.style.background = "url(images/bg_label_a.PNG) right 5px no-repeat";
                
                if (dvRows1 != null && dvRows2 != null) {
                    if (dvRows1.childNodes[0].innerHTML.toUpperCase() < dvRows2.childNodes[0].innerHTML.toUpperCase()) {
                        small = j;
                    }
                }
            }
            
            if (small != i && document.getElementById("dvEventName" + i) != null && document.getElementById("dvEventName" + small) != null) {
                temp = document.getElementById("dvEventName" + i).innerHTML;
                tempDate = document.getElementById("dvEventDate" + i).innerHTML;
                tempCity = document.getElementById("dvEventCity" + i).innerHTML;
                tempState = document.getElementById("dvEventState" + i).innerHTML;
                document.getElementById("dvEventName" + i).innerHTML = document.getElementById("dvEventName" + small).innerHTML;
                document.getElementById("dvEventDate" + i).innerHTML = document.getElementById("dvEventDate" + small).innerHTML;
                document.getElementById("dvEventCity" + i).innerHTML = document.getElementById("dvEventCity" + small).innerHTML;
                document.getElementById("dvEventState" + i).innerHTML = document.getElementById("dvEventState" + small).innerHTML;
                document.getElementById("dvEventName" + small).innerHTML = temp;
                document.getElementById("dvEventDate" + small).innerHTML = tempDate;
                document.getElementById("dvEventCity" + small).innerHTML = tempCity;
                document.getElementById("dvEventState" + small).innerHTML = tempState;
            }
        }
    }
    eventNameSort = !eventNameSort;
}
function SortByDate(sortOn) {
    var dvEventMain = document.getElementById("dvEventMain");
    var titleId = document.getElementById("sortname");
    if (sortOn == "dvEventDate") {
        titleId = document.getElementById("sortdate");
    }
    if (sortOn == "dvEventCity") {
        titleId = document.getElementById("sortcity");
    }

    if (sortOn == "dvEventState") {
        titleId = document.getElementById("sortstate");
    }
    if (dvEventMain != null) {
        for (var i = 0; i < dvEventMain.childNodes.length; i++) {
            var small = i;
            if (eventNameSort == false)
                for (var j = i; j < dvEventMain.childNodes.length; j++) {
                dvRows1 = document.getElementById(sortOn + small);
                dvRows2 = document.getElementById(sortOn + j);
                titleId.style.background = "url(images/bg_label_b.PNG) right 5px no-repeat";
                if (dvRows1 != null && dvRows2 != null) {
                    if (sortOn == "dvEventDate") {
                        if (new Date(dvRows1.innerHTML) > new Date(dvRows2.innerHTML)) {
                            small = j;
                        }
                    }
                    else {
                        if (dvRows1.innerHTML > dvRows2.innerHTML) {
                            small = j;
                        }
                    }
                }
            }
            else
                for (var j = i; j < dvEventMain.childNodes.length; j++) {
                dvRows1 = document.getElementById(sortOn + small);
                dvRows2 = document.getElementById(sortOn + j);
                titleId.style.background = "url(images/bg_label_a.PNG) right 5px no-repeat";
                if (dvRows1 != null && dvRows2 != null) {
                    if (sortOn == "dvEventDate") {
                        if (new Date(dvRows1.innerHTML) < new Date(dvRows2.innerHTML)) {
                            small = j;
                        }
                    }
                    else {
                        if (dvRows1.innerHTML < dvRows2.innerHTML) {
                            small = j;
                        }
                    }
                }
            }
            if (small != i && document.getElementById("dvEventName" + i) != null && document.getElementById("dvEventName" + small) != null) {
                temp = document.getElementById("dvEventName" + i).innerHTML;
                tempDate = document.getElementById("dvEventDate" + i).innerHTML;
                tempCity = document.getElementById("dvEventCity" + i).innerHTML;
                tempState = document.getElementById("dvEventState" + i).innerHTML;
                document.getElementById("dvEventName" + i).innerHTML = document.getElementById("dvEventName" + small).innerHTML;
                document.getElementById("dvEventDate" + i).innerHTML = document.getElementById("dvEventDate" + small).innerHTML;
                document.getElementById("dvEventCity" + i).innerHTML = document.getElementById("dvEventCity" + small).innerHTML;
                document.getElementById("dvEventState" + i).innerHTML = document.getElementById("dvEventState" + small).innerHTML;
                document.getElementById("dvEventName" + small).innerHTML = temp;
                document.getElementById("dvEventDate" + small).innerHTML = tempDate;
                document.getElementById("dvEventCity" + small).innerHTML = tempCity;
                document.getElementById("dvEventState" + small).innerHTML = tempState;
            }
        }
    }
    eventNameSort = !eventNameSort;
}
function selectReplacement(obj) {
    // append a class to the select
    obj.className += ' replaced';
    // create list for styling
    var ul = document.createElement('ul');
    ul.className = 'selectReplacement';
    var opts = obj.options;
    for (var i = 0; i < opts.length; i++) {
        var selectedOpt;
        if (opts[i].selected) {
            selectedOpt = i;
            break;
        } else {
            selectedOpt = 0;
        }
    }
    for (var i = 0; i < opts.length; i++) {
        var li = document.createElement('li');
        var txt = document.createTextNode(opts[i].text);
        li.appendChild(txt);
        li.selIndex = opts[i].index;
        li.selectID = obj.id;
        li.onclick = function() {
            selectMe(this);
        }
        if (i == selectedOpt) {
            li.className = 'selected';
            li.onclick = function() {
                this.parentNode.className += ' selectOpen';
                this.onclick = function() {
                    selectMe(this);
                }
            }
        }
        if (window.attachEvent) {
            li.onmouseover = function() {
                this.className += ' hover';
            }
            li.onmouseout = function() {
                this.className =
              this.className.replace(new RegExp(" hover\\b"), '');
            }
        }
        ul.appendChild(li);
    }
    // add the input and the ul
    obj.parentNode.appendChild(ul);
}
function selectMe(obj) {
    var lis = obj.parentNode.getElementsByTagName('li');
    for (var i = 0; i < lis.length; i++) {
        if (lis[i] != obj) { // not the selected list item
            lis[i].className = '';
            lis[i].onclick = function() {
                selectMe(this);
            }
        } else {
            setVal(obj.selectID, obj.selIndex);
            obj.className = 'selected';
            obj.parentNode.className =
            obj.parentNode.className.replace(new RegExp(" selectOpen\\b"), '');
            obj.onclick = function() {
                obj.parentNode.className += ' selectOpen';
                this.onclick = function() {
                    selectMe(this);
                }
            }
        }
    }
}
function setVal(objID, selIndex) {
    var obj = document.getElementById(objID);
    obj.selectedIndex = selIndex;
}
function setForm() {
    var s = document.getElementsByTagName('select');
    for (var i = 0; i < s.length; i++) {
        selectReplacement(s[i]);
    }
}
function closeSel(obj) {
    // close the ul
}
window.onload = function() {
    (document.all && !window.print) ? null : setForm();
}

//Drop Down/ Overlapping Content: http://www.dynamicdrive.com
//**Updated: Dec 19th, 07': Added ability to dynamically populate a Drop Down content using an external file (Ajax feature)
//**Updated: Feb 29th, 08':
//1) Added ability to reveal drop down content via "click" of anchor link (instead of default "mouseover")
//2) Added ability to disable drop down content from auto hiding when mouse rolls out of it
//3) Added hidediv(id) public function to directly hide drop down div dynamically

//**Updated: Sept 11th, 08': Fixed bug whereby drop down content isn't revealed onClick of anchor in Safari/ Google Chrome

var dropdowncontent = {
    disableanchorlink: true, //when user clicks on anchor link, should link itself be disabled (always true if "revealbehavior" above set to "click")
    hidedivmouseout: [true, 200], //Set hiding behavior within Drop Down DIV itself: [hide_div_onmouseover?, miliseconds_before_hiding]
    ajaxloadingmsg: "Loading content. Please wait...", //HTML to show while ajax page is being feched, if applicable
    ajaxbustcache: true, //Bust cache when fetching Ajax pages?

    getposOffset: function(what, offsettype) {
        return (what.offsetParent) ? what[offsettype] + this.getposOffset(what.offsetParent, offsettype) : what[offsettype]
    },

    isContained: function(m, e) {
        var e = window.event || e
        var c = e.relatedTarget || ((e.type == "mouseover") ? e.fromElement : e.toElement)
        while (c && c != m) try { c = c.parentNode } catch (e) { c = m }
        if (c == m)
            return true
        else
            return false
    },

    show: function(anchorobj, subobj, e) {
        if (!this.isContained(anchorobj, e) || (e && e.type == "click")) {
            var e = window.event || e
            if (e.type == "click" && subobj.style.visibility == "visible") {
                subobj.style.visibility = "hidden"
                return
            }
            var horizontaloffset = (subobj.dropposition[0] == "right") ? -(subobj.offsetWidth - anchorobj.offsetWidth) : 0 //calculate user added horizontal offset
            var verticaloffset = (subobj.dropposition[1] == "top") ? -subobj.offsetHeight : anchorobj.offsetHeight //calculate user added vertical offset
            subobj.style.left = this.getposOffset(anchorobj, "offsetLeft") + horizontaloffset + "px"
            subobj.style.top = this.getposOffset(anchorobj, "offsetTop") + verticaloffset + "px"
            subobj.style.clip = (subobj.dropposition[1] == "top") ? "rect(auto auto auto 0)" : "rect(0 auto 0 0)" //hide drop down box initially via clipping
            subobj.style.visibility = "visible"
            subobj.startTime = new Date().getTime()
            subobj.contentheight = parseInt(subobj.offsetHeight)
            if (typeof window["hidetimer_" + subobj.id] != "undefined") //clear timer that hides drop down box?
                clearTimeout(window["hidetimer_" + subobj.id])
            this.slideengine(subobj, (subobj.dropposition[1] == "top") ? "up" : "down")
        }
    },

    curveincrement: function(percent) {
        return (1 - Math.cos(percent * Math.PI)) / 2 //return cos curve based value from a percentage input
    },

    slideengine: function(obj, direction) {
        var elapsed = new Date().getTime() - obj.startTime //get time animation has run
        if (elapsed < obj.glidetime) { //if time run is less than specified length
            var distancepercent = (direction == "down") ? this.curveincrement(elapsed / obj.glidetime) : 1 - this.curveincrement(elapsed / obj.glidetime)
            var currentclip = (distancepercent * obj.contentheight) + "px"
            obj.style.clip = (direction == "down") ? "rect(0 auto " + currentclip + " 0)" : "rect(" + currentclip + " auto auto 0)"
            window["glidetimer_" + obj.id] = setTimeout(function() { dropdowncontent.slideengine(obj, direction) }, 10)
        }
        else { //if animation finished
            obj.style.clip = "rect(0 auto auto 0)"
        }
    },

    hide: function(activeobj, subobj, e) {
        if (!dropdowncontent.isContained(activeobj, e)) {
            window["hidetimer_" + subobj.id] = setTimeout(function() {
                subobj.style.visibility = "hidden"
                subobj.style.left = subobj.style.top = 0
                clearTimeout(window["glidetimer_" + subobj.id])
            }, dropdowncontent.hidedivmouseout[1])
        }
    },

    hidediv: function(subobjid) {
        document.getElementById(subobjid).style.visibility = "hidden"
    },

    ajaxconnect: function(pageurl, divId) {
        var page_request = false
        var bustcacheparameter = ""
        if (window.XMLHttpRequest) // if Mozilla, IE7, Safari etc
            page_request = new XMLHttpRequest()
        else if (window.ActiveXObject) { // if IE6 or below
            try {
                page_request = new ActiveXObject("Msxml2.XMLHTTP")
            }
            catch (e) {
                try {
                    page_request = new ActiveXObject("Microsoft.XMLHTTP")
                }
                catch (e) { }
            }
        }
        else
            return false
        document.getElementById(divId).innerHTML = this.ajaxloadingmsg //Display "fetching page message"
        page_request.onreadystatechange = function() { dropdowncontent.loadpage(page_request, divId) }
        if (this.ajaxbustcache) //if bust caching of external page
            bustcacheparameter = (pageurl.indexOf("?") != -1) ? "&" + new Date().getTime() : "?" + new Date().getTime()
        page_request.open('GET', pageurl + bustcacheparameter, true)
        page_request.send(null)
    },

    loadpage: function(page_request, divId) {
        if (page_request.readyState == 4 && (page_request.status == 200 || window.location.href.indexOf("http") == -1)) {
            document.getElementById(divId).innerHTML = page_request.responseText
        }
    },

    init: function(anchorid, pos, glidetime, revealbehavior) {
        var anchorobj = document.getElementById(anchorid)
        if (anchorobj != null) {
            var subobj = document.getElementById(anchorobj.getAttribute("rel"))
            if (subobj != null) {
                var subobjsource = anchorobj.getAttribute("rev")
                if (subobjsource != null && subobjsource != "")
                    this.ajaxconnect(subobjsource, anchorobj.getAttribute("rel"))
                subobj.dropposition = pos.split("-")
                subobj.glidetime = glidetime || 1000
                subobj.style.left = subobj.style.top = 0
                if (typeof revealbehavior == "undefined" || revealbehavior == "mouseover") {
                    anchorobj.onmouseover = function(e) { dropdowncontent.show(this, subobj, e) }
                    anchorobj.onmouseout = function(e) { dropdowncontent.hide(subobj, subobj, e) }
                    if (this.disableanchorlink) anchorobj.onclick = function() { return false }
                }
                else
                    anchorobj.onclick = function(e) { dropdowncontent.show(this, subobj, e); return false }
                if (this.hidedivmouseout[0] == true) //hide drop down DIV when mouse rolls out of it?
                    subobj.onmouseout = function(e) { dropdowncontent.hide(this, subobj, e) }
            } 
        }
    }
}