﻿function toggleDiv(val) {
    var elem

    if (document.getElementById) // this is the way the standards work    
        elem = document.getElementById(val);
    else if (document.all) // this is the way old msie versions work      
        elem = document.all[val];
    else if (document.layers) // this is the way nn4 works    
        elem = document.layers[val];

    if (elem.style.display == 'none') {
        elem.style.display = 'block';
    }
    else {
        elem.style.display = 'none';
    }
}

function showHide(el, id) {
    var e = document.getElementById(id);

    if (el !== null) {
        if (el.checked === true) {
            e.style.display = '';
        }
        else {
            e.style.display = 'none';
        }
    }
}

function changeListView() {
    var e = document.getElementById('simple-results');
    var el = document.getElementById('search-content');
    var text = document.getElementById("view-links");

    if (e.style.display == 'none') {
        e.style.display = 'block';
        el.style.display = 'none';
        text.innerHTML = '<a onclick="changeListView();">Full View</a> &#8226; List View';
        document.getElementById('search-list').style.display = 'none';
        document.getElementById('search-list-b').style.display = 'none';
        
    }
    else {
        e.style.display = 'none';
        el.style.display = 'block';
        text.innerHTML = 'Full View &#8226; <a onclick="changeListView();">List View</a>';
        document.getElementById('search-list').style.display = '';
        document.getElementById('search-list-b').style.display = '';
    }
}

function JumpSelect(o) {
    if (o.value && o.value !== '') {
        document.location.href = o.value;
    }
}

function Trim(s) {
    return s.replace(/^\s+|\s+$/g, "");
}

function formshowhide(divname) {
    var elem
    var text = document.getElementById("adv-link");
    var ele = document.getElementById('searchform');

    if (document.getElementById) // this is the way the standards work    
        elem = document.getElementById(divname);
    else if (document.all) // this is the way old msie versions work      
        elem = document.all[divname];
    else if (document.layers) // this is the way nn4 works    
        elem = document.layers[divname];

    if (elem.style.display == 'none') {
        elem.style.display = 'block';
        text.innerHTML = "<a onclick=formshowhide('advanced-options');>Hide Advanced Options</a>";

        ele.city.value = '';
        ele.zip.value = '';
        ele.geocode.value = '';
        ele.radius.value = '';
        ele.language.value = '';
        document.getElementById("type-location").checked = false;
        document.getElementById("type-distance").checked = false;
        document.getElementById("gender1").checked = false;
        document.getElementById("gender2").checked = false;
        document.getElementById("gender3").checked = false;
    }
    else {
        elem.style.display = 'none';
        text.innerHTML = "<a onclick=formshowhide('advanced-options');>Show Advanced Options</a>";
    }
}


// 8-24-2006 : Kendall Beaman
// Function replaces all consecutive dashes with a single dash for a given form element
// frm is the form element you wish to process. Here's an example of how to call this function
// <form id="testForm" action="" method="post" onsubmit="filterDashes(getElementById('testForm'));">
// I recommend using the id attribute rather than name as name is deprecated and use the getElementById function.
// Could also use ' onsubmit="filterDashes(this);" which will work just fine

function filterDashes(frm) {
    var str;
    var pattern = /-{2,}/g
    var result;

    for (x = 0; x < frm.elements.length; x++) {
        str = frm.elements[x].value;

        if (pattern.test(str)) {

            frm.elements[x].value = str.replace(pattern, "-");
        }
    }
}

// Function searches the entire document for forms and then goes through them to remove dashes
// Not sure if this is needed but it's here in case anyone wants to use it.

function allFilterDashes() {
    var forms = document.getElementsByTagName("form");

    for (var x = 0; x < forms.length; x++)
        filterDashes(forms[x]);
}


function manual_reset() {
    document.searchform.reset();
    return false;
}

function manual_reset2() {
    var ele = document.getElementById('searchform');

    ele.last.value = '';
    ele.first.value = '';
    ele.specialty.options[0].text = '- Select a specialty -';
    ele.specialty.options[0].selected = true;
    ele.specialty.options[0].value = '';
    ele.hospital.options[0].text = '- Select a hospital -';
    ele.hospital.options[0].selected = true;
    ele.hospital.options[0].value = '';
    ele.network.options[0].text = '- Select a service -';
    ele.network.options[0].selected = true;
    ele.network.options[0].value = '';
    ele.practice.options[0].text = '- Select a practice -';
    ele.practice.options[0].selected = true;
    ele.practice.options[0].value = '';
//    ele.keyword.value = '';
    ele.city.value = '';
    ele.zip.value = '';
    ele.geocode.value = '';
    ele.radius.value = '';
 //   ele.interest.options[0].text = '- Select an interest -';
 //   ele.interest.options[0].selected = true;
 //   ele.interest.options[0].value = '';
    ele.language.value = '';

    document.getElementById("type-location").checked = false;
    document.getElementById("type-distance").checked = false;
    document.getElementById("gender1").checked = false;
    document.getElementById("gender2").checked = false;
    document.getElementById("gender3").checked = false;

    return false;
}

function validate() {
    var ele = document.getElementById('searchform');

    if (ele !== null) {
        if (ele.radius.options[ele.radius.selectedIndex].value !== '' && ele.geocode.value === '') {
            alert('Please enter an address or zipcode when selecting a distance from location.');
            return false;
        }

        if (ele.radius.options[ele.radius.selectedIndex].value === '' && (ele.geocode.value.length > 0 && ele.geocode.value.length !== 5)) {
            alert('Please select a distance from location when specifying from your location.');
            return false;
        }       
    }

    return true;
}

function dropdown_menu_hack(el) {
    if (el.runtimeStyle.behavior.toLowerCase() === "none") {
        return;
    }

    el.runtimeStyle.behavior = "none";

    var ie5 = (document.namespaces == null);
    el.ondblclick = function (e) {
        window.event.returnValue = false;
        return false;
    }

    if (window.createPopup === null) {
        var fid = "dropdown_menu_hack_" + Date.parse(new Date());
        window.createPopup = function () {
            if (window.createPopup.frameWindow === null) {
                el.insertAdjacentHTML("AfterEnd", "<iframe id='" + fid + "' name='" + fid + "' src='about:blank' frameborder='1' scrolling='no'></></iframe>");
                var f = document.frames[fid];
                f.document.open();
                f.document.write("<html><body></body></html>");
                f.document.close();
                f.fid = fid;

                var fwin = document.getElementById(fid);
                fwin.style.cssText = "position:absolute;top:0;left:0;display:none;z-index:99999;";

                f.show = function (px, py, pw, ph, baseElement) {
                    py = py + baseElement.getBoundingClientRect().top + Math.max(document.body.scrollTop, document.documentElement.scrollTop);
                    px = px + baseElement.getBoundingClientRect().left + Math.max(document.body.scrollLeft, document.documentElement.scrollLeft);
                    fwin.style.width = pw + "px";
                    fwin.style.height = ph + "px";
                    fwin.style.posLeft = px;
                    fwin.style.posTop = py;
                    fwin.style.display = "block";
                }

                f_hide = function (e) {
                    if (window.event && window.event.srcElement && window.event.srcElement.tagName && window.event.srcElement.tagName.toLowerCase() == "select") {
                        return true;
                    }

                    fwin.style.display = "none";
                }

                f.hide = f_hide;

                document.attachEvent("onclick", f_hide);
                document.attachEvent("onkeydown", f_hide);
            }
            return f;
        }
    }

    function showMenu() {

        function selectMenu(obj) {
            var o = document.createElement("option");
            o.innerHTML = obj.innerHTML;
            o.value = obj.getAttribute('v') || '';
            while (el.options.length > 0) {
                el.options[0].removeNode(true);
            }
            el.appendChild(o);
            el.title = o.innerHTML;
            el.contentIndex = obj.selectedIndex;
            el.menu.hide();
        }

        el.menu.show(0, el.offsetHeight, 10, 10, el);
        var mb = el.menu.document.body;

        mb.style.cssText = "border:solid 1px black;margin:0;padding:0;overflow-y:auto;overflow-x:auto;background:white;text-aligbn:center;font-family:Verdana;font-size:12px;";
        var t = el.contentHTML;
        t = t.replace(/<select/gi, '<ul');
        t = t.replace(/<option/gi, '<li');
        t = t.replace(/<\/option/gi, '</li');
        t = t.replace(/<\/select/gi, '</ul');
        t = t.replace(/\bvalue\s*=\s*\x22([\s\S]*?)\x22/gi, 'v="$1"');
        t = t.replace(/\bvalue\s*=([\s\S]+?)([\x20>])/gi, 'v="$1"$2');
        mb.innerHTML = t;

        el.select = mb.all.tags("ul")[0];
        el.select.style.cssText = "list-style:none;margin:0;padding:0;";
        mb.options = el.select.getElementsByTagName("li");

        for (var i = 0; i < mb.options.length; i++) {
            mb.options[i].selectedIndex = i;
            mb.options[i].style.cssText = "list-style:none;margin:0;padding:1px 2px;width/**/:100%;cursor:hand;cursor:pointer;white-space:nowrap;"
            mb.options[i].title = mb.options[i].innerHTML;
            mb.options[i].innerHTML = "<nobr>" + mb.options[i].innerHTML + "</nobr>";
            mb.options[i].onmouseover = function () {
                if (mb.options.selected) {
                    mb.options.selected.style.background = "white";
                    mb.options.selected.style.color = "black";
                }
                mb.options.selected = this;
                this.style.background = "#426DDE";
                this.style.color = "white";
            }

            mb.options[i].onmouseout = function () {
                this.style.background = "white";
                this.style.color = "black";
            }
            mb.options[i].onmousedown = function () {
                selectMenu(this);
            }
            mb.options[i].onkeydown = function () {
                selectMenu(this);
            }


            if (i == el.contentIndex) {
                mb.options[i].style.background = "#426DDE";
                mb.options[i].style.color = "white";
                mb.options.selected = mb.options[i];
            }
        }


        var mw = Math.max((el.select.offsetWidth + 22), el.offsetWidth + 22);
        mw = Math.max(mw, (mb.scrollWidth + 22));
        var mh = mb.options.length * 15 + 8;

        var mx = (ie5) ? -3 : 0;
        var my = el.offsetHeight - 2;
        var docH = document.documentElement.offsetHeight;
        var bottomH = docH - el.getBoundingClientRect().bottom;

        mh = Math.min(mh, Math.max((docH - el.getBoundingClientRect().top - 50), 100));

        if ((bottomH < mh)) {

            mh = Math.max((bottomH - 12), 10);
            if (mh < 100) {
                my = -100;

            }
            mh = Math.max(mh, 100);
        }


        self.focus();

        el.menu.show(mx, my, mw, mh, el);
        sync = null;
        if (mb.options.selected) {
            mb.scrollTop = mb.options.selected.offsetTop;
        }




        window.onresize = function () {
            el.menu.hide()
        };
    }

    function switchMenu() {
        if (event.keyCode) {
            if (event.keyCode == 40) {
                el.contentIndex++;
            }
            else if (event.keyCode == 38) {
                el.contentIndex--;
            }
        }
        else if (event.wheelDelta) {
            if (event.wheelDelta >= 120) el.contentIndex++;
            else if (event.wheelDelta <= -120) el.contentIndex--;
        } else {
            return true;
        }




        if (el.contentIndex > (el.contentOptions.length - 1)) {
            el.contentIndex = 0;
        }
        else if (el.contentIndex < 0) {
            el.contentIndex = el.contentOptions.length - 1;
        }

        var o = document.createElement("option");
        o.value = el.contentOptions[el.contentIndex].value;
        o.innerHTML = el.contentOptions[el.contentIndex].text;
        while (el.options.length > 0) {
            el.remove(0);
        }
        el.appendChild(o);
        el.title = o.innerHTML;
    }

    if (dropdown_menu_hack.menu == null) {
        dropdown_menu_hack.menu = window.createPopup();
        document.attachEvent("onkeydown", dropdown_menu_hack.menu.hide);
    }
    el.menu = dropdown_menu_hack.menu;
    el.contentOptions = new Array();
    el.contentIndex = el.selectedIndex;
    el.contentHTML = el.outerHTML;

    for (var i = 0; i < el.options.length; i++) {
        el.contentOptions[el.contentOptions.length] = {
            "value": el.options[i].value,
            "text": el.options[i].innerHTML
        }

        if (!el.options[i].selected) {
            el.options[i].removeNode(true);
            i--;
        };
    }


    el.onkeydown = switchMenu;
    el.onclick = showMenu;
    el.onmousewheel = switchMenu;

}

var PB = {
    init: function () {
        this.ieselectfix();
        this.locationCheck();
    },

    ieselectfix: function () {
        var spec = document.getElementById('specialty');
        var hosp = document.getElementById('hospital');
        var inte = document.getElementById('interest');
        var prac = document.getElementById('practice');

        if (spec !== null) {
            spec.onactivate = function () { window.dropdown_menu_hack(this); };
        }

        if (hosp !== null) {
            hosp.onactivate = function () { window.dropdown_menu_hack(this); };
        }

        if (prac !== null) {
            prac.onactivate = function () { window.dropdown_menu_hack(this); };
        }

        if (inte !== null) {
            inte.onactivate = function () { window.dropdown_menu_hack(this); };
        }  
    },

    locationCheck: function () {
        var city = Dom.get('city'),
			zipcode = Dom.get('zip'),
			address = Dom.get('geocode'),
			radius = Dom.get('radius'),
			location = Dom.get('type-location'),
			distance = Dom.get('type-distance'),
			lcontainer = Dom.get('search-by-location'),
			dcontainer = Dom.get('search-by-distance'),
			citytext = Dom.get('citytext'),
			zipcodetext = Dom.get('zipcodetext'),
			addresstext = Dom.get('addresstext'),
			radiustext = Dom.get('radiustext');

        if (location !== null && distance !== null) {
            // Clear out the other fields of the other section if one of the radio buttons is selected
            if (location.checked === true) {
                address.value = '';
                radius.value = '';
                radius.options[0].text = '- Select distance -';
            }
            else if (distance.checked === true) {
                city.value = '';
                city.options[0].text = '- Select a city -';
                zipcode.value = '';
            }

            if (location.checked === true || zipcode.value.length > 0 || city.options[city.selectedIndex].value.length > 0) {
                if (location.checked !== true) { location.checked = true; }

                lcontainer.className = 'regular';
                dcontainer.className = 'normal-search-class';

                address.disabled = 'disabled';
                radius.disabled = 'disabled';

                city.disabled = '';
                zipcode.disabled = '';

                citytext.className = '';
                zipcodetext.className = '';

                addresstext.className = 'disabled';
                radiustext.className = 'disabled';
            }
            else if (distance.checked === true || address.value.length > 0 || radius.options[radius.selectedIndex].value.length > 0) {
                if (distance.checked !== true) { distance.checked = true; }

                dcontainer.className = 'regular';
                lcontainer.className = 'normal-search-class';

                city.disabled = 'disabled';
                zipcode.disabled = 'disabled';

                address.disabled = '';
                radius.disabled = '';

                citytext.className = 'disabled';
                zipcodetext.className = 'disabled';

                addresstext.className = '';
                radiustext.className = '';
            }
        }
    }
};

Event.onDOMReady(PB.init, PB, true);

AC = {

    loader: null,
    autocomplete: null,
    autocomplete2: null,
    autocomplete3: null,
    data: null,
    keywords: null,
    datasource: null,
    datasource2: null,
    datasource3: null,

    init: function () {
        this.build();
        return;

      

    },

    gup: function (name) {
        name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
        var regexS = "[\\?&]" + name + "=([^&#]*)";
        var regex = new RegExp(regexS);
        var results = regex.exec(window.location.href);
        if (results == null)
            return "";
        else
            return results[1];
    },

    build: function () {
        var callback =
		{
		    scope: this,

		    success: function (o) {
		        if (o.responseText !== null) {
		            this.data = YAHOO.lang.JSON.parse(o.responseText);

		            // Use a LocalDataSource
		            this.datasource = new YAHOO.util.LocalDataSource(this.data[0].rows);
		            this.datasource2 = new YAHOO.util.LocalDataSource(this.data[0].rows);
                    this.datasource3 = new YAHOO.util.LocalDataSource(this.data[1].rows);

		            // Optional to define fields for single-dimensional array
		            this.datasource.responseSchema = { fields: ["l", "f", "m", "p"] };
		            this.datasource2.responseSchema = { fields: ["f", "m", "l", "p"] };
                    this.datasource3.responseSchema = { fields: ["k"] };

		            // Instantiate the AutoComplete
		            this.autocomplete = new YAHOO.widget.AutoComplete("last", "lastNameContainer", this.datasource);
		            this.autocomplete.prehighlightClassName = "yui-ac-prehighlight";
		            this.autocomplete.useShadow = true;
		            this.autocomplete.useIFrame = true;
		            this.autocomplete.maxResultsDisplayed = 100;
		            this.autocomplete.allowBrowserAutocomplete = false;

		            this.autocomplete.formatResult = function (oResultData, sQuery, sResultMatch) {
		                var name = oResultData[0];

		                if (oResultData[1] !== undefined) { name += ', ' + oResultData[1]; }
		                if (oResultData[2] !== undefined && oResultData[2] !== null && oResultData[2] !== 'null') { name += ' ' + oResultData[2]; }

		                return (name);
		            };                           

		            this.autocomplete2 = new YAHOO.widget.AutoComplete("first", "firstNameContainer", this.datasource2);
		            this.autocomplete2.prehighlightClassName = "yui-ac-prehighlight";
		            this.autocomplete2.useShadow = true;
		            this.autocomplete2.useIFrame = true;
		            this.autocomplete2.maxResultsDisplayed = 100;
		            this.autocomplete2.allowBrowserAutocomplete = false;

		            this.autocomplete2.formatResult = function (oResultData, sQuery, sResultMatch) {
		                var name = oResultData[0];

		                if (oResultData[1] !== undefined && oResultData[1] !== null && oResultData[1] !== 'null') { name += ' ' + oResultData[1]; }
		                if (oResultData[2] !== undefined) { name += ' ' + oResultData[2]; }		                

		                return (name);
		            };
		           		           
		            this.autocomplete3 = new YAHOO.widget.AutoComplete("keyword", "keywordContainer", this.datasource3);
		            this.autocomplete3.prehighlightClassName = "yui-ac-prehighlight";
		            this.autocomplete3.useShadow = true;
		            this.autocomplete3.useIFrame = true;
		            this.autocomplete3.maxResultsDisplayed = 10;
		            this.autocomplete3.allowBrowserAutocomplete = false;

		            //define your itemSelect handler function:
		            var itemSelectHandler = function (sType, aArgs) {

		                var oMyAcInstance = aArgs[0]; // your AutoComplete instance
		                var elListItem = aArgs[1]; // the <li> element selected in the suggestion

		                // container
		                var oData = aArgs[2]; // aArgs[2] contains last, first, midinit and pict_id object literal of data for the result
		                var link = "/directory/profile.asp?dbase=main&setsize=10&pict_id=" + oData[3];
		                window.location = link;

		            };
		            //subscribe your handler to the event, assuming
		            this.autocomplete.itemSelectEvent.subscribe(itemSelectHandler);

		            //define your itemSelect handler function:
		            var itemSelectHandler2 = function (sType, aArgs) {

		                var oMyAcInstance2 = aArgs[0]; // your AutoComplete instance
		                var elListItem2 = aArgs[1]; // the <li> element selected in the suggestion

		                // container
		                var oData2 = aArgs[2]; // aArgs[2] contains last, first, midinit and pict_id object literal of data for the result
		                var link2 = "/directory/profile.asp?dbase=main&setsize=10&pict_id=" + oData2[3];
		                window.location = link2;

		            };
		            //subscribe your handler to the event, assuming
		            this.autocomplete2.itemSelectEvent.subscribe(itemSelectHandler2);
		        }
		    }
		};

		var view = this.gup('view');
		var cObj = YAHOO.util.Connect.asyncRequest('POST', '/load.asp?view=' + view, callback);
    }
}

Event.onDOMReady(AC.init, AC, true);
