﻿// JScript File that contains all of the functions used on the /directory/default.asp (search) page

        function onLoad() {
            setCurrentTime();
        }
        
        function suggestCities( fld, evt ) {
            if( document.frmSearch.searchState.selectedIndex > 0 ) {
                ajax_showOptions( fld, '', evt, document.frmSearch.searchState.options[document.frmSearch.searchState.selectedIndex].value, 'search' );
            } else {
                alert( 'Please select a STATE first.' );
                document.frmSearch.searchCity.value = '';
                document.frmSearch.searchState.focus();
            }
        }        

        var rowIndex = 0;
        var cellIndex = 0;

        function setCriteriaFromSelect(obj, display, val) {
            if (obj.selectedIndex <= 0)
                removeCriteriaPrep(display, val)
            else {
                var strCriteria = new String('' + document.frmSearch.hdnCriteria.value);
                
                //this will be used to search the hdnCriteria var to replace it if needed
                if (display == 'Adult')
                    var dbColName = display.substr(0,1).toLowerCase() + display.substr(1, display.length);
                else
                    var dbColName = display.substr(0,1).toLowerCase() + display.substr(1, display.length) + 'ID';
                
                //build string that is to be replaced
                if (display == 'Adult')
                    var replacedDBColName = display;
                else
                    var replacedDBColName = display + 'ID';
                    
                var replacedValue = strCriteria.substr(strCriteria.indexOf(replacedDBColName) + replacedDBColName.length+2, 1);   //this'll give us actual value, so if val is cost=1, this'll give us 1
                var criteriaToReplace = dbColName + '=' + replacedValue;
                //    alert(replacedValue);     
                if (replacedValue.length > 1) {
                    strCriteria = strCriteria.replace(criteriaToReplace, val);
                    document.frmSearch.hdnCriteria.value = strCriteria;
                //    alert(strCriteria);
                } else 
                    showCriteria(obj, display, val); 
             }           
        }
        
        function showCriteria(obj, display, val) {
            if (1 == 2 ) {   //get rid of if statement to enable listing of criteria
            var table = document.getElementById('tblCriteria');
            var criteria = new String('');

            if (obj.checked || obj.selectedIndex > 0) {                
                if (cellIndex == 0)   //insert new row
                    var row = table.insertRow(rowIndex);
                else
                    var row = table.rows[rowIndex];
                                        
                var cell = row.insertCell(cellIndex);
                cell.innerHTML = display + '<a href="#" onclick="removeCriteria(\'' + obj.name + '\', ' + rowIndex + ', ' + cellIndex + ', \'' + val + '\')" class="crit-del">x</a>';
                
                cellIndex++;
                
                if (cellIndex == 4) {  //start new row
                    rowIndex++;
                    cellIndex = 0;
                }
                
                //now prepare data for results page
                criteria = val + ',';
                criteria = criteria.replace("=Y", "='Y'");
                document.frmSearch.hdnCriteria.value += criteria;    
            } else 
                removeCriteriaPrep(display, val)
        }
        }
        
        function removeCriteriaPrep(display, val) {
            var table = document.getElementById('tblCriteria');
            var numRows = table.rows.length;
            var numCells;
            
            for (var rowIndex1=0; rowIndex1<numRows; rowIndex1++) {
                numCells = table.rows[rowIndex1].cells.length;
                for (var cellIndex1=0; cellIndex1<numCells; cellIndex1++) {
                    criteria = table.rows[rowIndex1].cells[cellIndex1].innerText;
                    //alert(table.rows[rowIndex1].cells[cellIndex1].innerText);
                    if (criteria == display + 'x')
                        removeCriteria(rowIndex1, cellIndex1, val);
                }
            }

        }
        
        function removeCriteria(objName, row, cell, val) {
            var table = document.getElementById('tblCriteria');
            var criteria = new String(document.frmSearch.hdnCriteria.value);
            var criteriaToBeDeleted = new String('');
            var numCells = table.rows[row].cells.length;
            
            table.rows[row].cells[cell].innerHTML = '&nbsp;';
            
            criteriaToBeDeleted = val + ',';
            criteriaToBeDeleted = val.replace("=Y", "='Y'");
            criteria = criteria.replace(criteriaToBeDeleted, '');
            
            document.frmSearch.hdnCriteria.value = criteria; 

            //now uncheck selection or set selectedIndex = 0
            var obj = document.getElementById(objName);
            if (objName.indexOf('chk') >= 0)
                obj.checked = false;
            else
                obj.selectedIndex = 0;
                        
            //if all cells are empty in row, delete it
            var deleteRow = false;
            for (var x=0; x<numCells; x++)
                if (table.rows[row].cells[x].innerHTML == '&nbsp;')
                    deleteRow = true
                else {
                    deleteRow = false;
                    break;
                }
                    
            if (deleteRow) {
                table.deleteRow(row);
                cellIndex = 0;
                if (rowIndex > 0)
                    rowIndex--;
            }
        }
        
        function setCurrentTime() {
            var curDateTime = new Date();
            var hrs = curDateTime.getHours();
            var mins = curDateTime.getMinutes();
            var day = curDateTime.getDay();
            var newMins;
            
            if (hrs >= 12) {
                document.frmSearch.selOpenNowAmPm.selectedIndex = 1;    //set it to PM
                if ( hrs == 12 || hrs == 0 )
                    hrs = 1
                else
                    hrs = hrs - 12;
            }
          
            if (mins > 0)
                newMins = ':15';
            if (mins > 15)
                newMins = ':30';
            if (mins > 30)
                newMins = ':45';
            if (mins > 45) {
                newMins = ':00';
                hrs += 1;
            }
            
            for (var x=0;x<document.frmSearch.selOpenNowHours.length; x++) 
                if (hrs == document.frmSearch.selOpenNowHours.options[x].value)
                    document.frmSearch.selOpenNowHours.selectedIndex = x;
                    
            for (var x=0;x<document.frmSearch.selOpenNowMins.length; x++) 
                if (newMins == document.frmSearch.selOpenNowMins.options[x].value)
                    document.frmSearch.selOpenNowMins.selectedIndex = x;
            
            document.frmSearch.selOpenNowDay.selectedIndex = day + 1;                
        }    
        
        function doSearch() {
            var bCont = validateForRadiusSearch();
            
            if (bCont) {
                // get all checkboxes to pass to results page
                for( var counter = 0; counter < document.frmSearch.chkAddlCriteria.length; counter++ ) 
                    if( document.frmSearch.chkAddlCriteria[ counter ].checked )
                        document.frmSearch.hdnAddlCriteria.value += document.frmSearch.chkAddlCriteria[ counter ].value;
                
                // get all select boxes for additional criteria
                for( counter = 0; counter < document.frmSearch.selAddlCriteria.length; counter++ )
                    if( document.frmSearch.selAddlCriteria[ counter ].selectedIndex > 0 )
                        document.frmSearch.hdnAddlCriteria.value += document.frmSearch.selAddlCriteria[ counter ].options[document.frmSearch.selAddlCriteria[ counter ].selectedIndex].value
                
              
                if (document.frmSearch.chkOpenNow.checked) 
                    if (document.frmSearch.searchState.selectedIndex == 0) {
                        alert ('To use the Open Now feature, you must select a state.');
                        bCont = false;
                        document.frmSearch.searchState.focus();
                    } else
                        document.frmSearch.hdnOpenNow.value = 'Y';
            
                // get all select boxes for additional criteria
                for( counter = 0; counter < document.frmSearch.selAddlCriteria.length; counter++ )
                    if( document.frmSearch.selAddlCriteria[ counter ].selectedIndex > 0 )
                        document.frmSearch.hdnAddlCriteria.value += document.frmSearch.selAddlCriteria[ counter ].options[document.frmSearch.selAddlCriteria[ counter ].selectedIndex].value
                
                // set searchReview flag
                if( document.frmSearch.chkSearchReview.checked )
                    document.frmSearch.hdnSearchReview.value = 1;
                else
                    document.frmSearch.hdnSearchReview.value = 0;
                
                if (document.frmSearch.chkOpenNow.checked) 
                    if (document.frmSearch.searchState.selectedIndex == 0) {
                        alert ('To use the Open Now feature, you must select a state.');
                        bCont = false;
                        document.frmSearch.searchState.focus();
                    } else
                        document.frmSearch.hdnOpenNow.value = 'Y';
                
            }
            
            if (bCont) {
                document.frmSearch.action = 'results.asp';
                document.frmSearch.submit();
            }
        }
        
        function validateForRadiusSearch() {
            bCont = true;
            var msg = '';
            var theForm = document.frmSearch;
            
            if( theForm.chkRadius.checked == false ) {
                // means we're doing a radius search
                
                theForm.hdnDoRadiusSearch.value = 'Y';
                
                if( theForm.searchState.selectedIndex <= 0 && theForm.searchCity.value == '' && theForm.searchZip.value == '' ) {
                    msg = 'You must enter in a CITY/STATE or ZIP CODE in order to use radius searching.';
                    bCont = false;
                } else if( theForm.searchState.selectedIndex > 0 && theForm.searchCity.value == '' ) {
                    msg = 'You must enter in a CITY in order to use radius searching.';
                    bCont = false;
                } else if( theForm.searchState.selectedIndex <= 0 && theForm.searchCity.value != '' ) {
                    msg = 'You must enter in a STATE in order to use radius searching.';
                    bCont = false;
                }                    
                
                if( !bCont ) alert( msg );
            } else {
                theForm.hdnDoRadiusSearch.value = 'N';
            }
            
            return bCont;
        }
        
        function checkKeyPressed( evt ) {
             // if enter key is pressed anywhere, submit the damn form!
             if( evt.keyCode == 13 )
                doSearch();
        }
        
        var bCheckOnce = true;
        function enableRadiusSearch() {
            if( bCheckOnce ) {
                bCheckOnce = false;
                document.frmSearch.chkRadius.checked = false;
            }
        }

