/* #################################################################
    Copyright 2005 BBB Systems, LLC, All rights reserved
################################################################## */

var navHistory = new Array( );
var curNavPoint = -1;

var globals = new Array( );

var ajaxEnabled = false;
var bgzDDEnabled = true;

//format: html_id > type
var ajaxTabList = new Array( );

//don't forget to update the number in the loop
for(var i = 0; i < 1; i++){ ajaxTabList[i] = new Object( ); }
ajaxTabList[0].html_id = 'dirTabs';
ajaxTabList[0].ajax_type = 'dir';

window.js_initialized = false;

if(window.special_init){
    window.load_function = special_init;
}
else{
    window.load_function = function( ){ init( ); }
}

if(document.addEventListener){
    document.addEventListener('DOMContentLoaded', function( ){ window.load_function( ); }, false);
    //just in case, if DomContentLoaded ran, load will quit right away
    document.addEventListener('load', function( ){ window.load_function( ); }, false);
}
else if(document.attachEvent){
    document.attachEvent('onreadystatechange', function( ){ window.load_function( ); });
}
else if(window.onload){
    window.onload = function( ){ window.load_function( ); }
}

if(window.load_maps && window.onunload){
    window.onunload = function( ){ GUnload( ); }
}

function init( ){
    if(window.js_initialized){ return; }
    window.js_initialized = true;

    if(!document.getElementsByTagName){
        return;//if it doesn't support this, it doesn't support a whole lot.
    }

    if(ajaxEnabled){
        ajaxCheck( );
    }

    initTopMenuLinks( );
    initInputButtons( );
    initA( );
    initTrainerGallery( );
    loadYouTubeVideos( );
    initObjects( );

    resizeOverlay( );

    if(window.load_maps){
        loadGoogleMaps( );
    }

    window.onresize = resizeOverlay;
}

window.xmlInit = function( ){
    initAjaxTabs( );
    initCalendarNav( );
    initDirPhoneNumbers( );
    initTrainerGallery( );
    loadYouTubeVideos( );
    resizeOverlay( );

    if(window.load_maps){
        loadGoogleMaps( );
    }
}

function resizeOverlay( ){
    var pop_overlay_dir = document.getElementById('pop_overlay_dir');
    var dirTabContent = document.getElementById('dirTabContent');
    var dirTabContentInner = document.getElementById('dirTabContentInner');

    var pad = 10;

    var default_height = 0;
    var dtc_inner_height = 0;
    var min_height = 350;

    var dtc_height = min_height;

    if(pop_overlay_dir && dirTabContent && dirTabContentInner){
        if(document.body.clientHeight && document.body.clientHeight > 0){
            default_height = parseInt(document.body.clientHeight - 200);
            dtc_inner_height = dirTabContentInner.clientHeight + pad;
        }
        else if(document.body.offsetHeight && document.body.offsetHeight > 0){
            default_height = parseInt(document.body.offsetHeight - 200);
            dtc_inner_height = dirTabContentInner.offsetHeight + pad;
        }

        if(dirTabContentInner.scrollHeight){
            dtc_inner_height = dirTabContentInner.scrollHeight + pad;
        }

        if(dtc_inner_height > default_height){
            dtc_height = default_height;
        }
        else if(dtc_inner_height > min_height){
            dtc_height = dtc_inner_height;
        }
        else{
            dtc_height = min_height;
        }

        dirTabContent.style.height = dtc_height + 'px';
        dirTabContent.style.minHeight = dtc_height + 'px';
    }
}

function initAjaxTabs( ){

    var html_id;
    var ajax_type;
    var hObj = null;

    for(var cnt = 0; cnt < ajaxTabList.length; cnt++){

        html_id = ajaxTabList[cnt].html_id;
        ajax_type = ajaxTabList[cnt].ajax_type;

        hObj = document.getElementById(html_id);

        if(hObj){
            i = 0;
            as = hObj.getElementsByTagName("a");
            for(i = 0; i < as.length; i++){
                as[i].ajax_type = ajax_type;
                as[i].onclick = function( ){
                    if(this.ajax_type == 'dir' && this.innerHTML == 'Reviews' && (window.isOldIE)){
                        return true;
                    }

                    if(b_xml.isCurrentRequest){ return false; }
                    //ul = a->li->ul (this->parent->parent)
                    //table = a->td->tr->table (this->parent->parent-parent)
                    var table = this.parentNode.parentNode.parentNode;
                    var p_as = table.getElementsByTagName('a');

                    for(var j = 0; j < p_as.length; j++){ p_as[j].className = ''; }
                    this.className = 'cur';
                    var newHREF = this.href;
                    newHREF = newHREF.replace(/(\#.*)$/, '');
                    newHREF = newHREF.replace(/(\/content\/)/, '/ajax.php/');
                    newHREF = newHREF + '/type/' + this.ajax_type;
                    //alert('here');
                    //alert(newHREF);

                    b_xml.request(newHREF);

                    if(b_xml.isSupported){ return false; }

                    return true;
                }//end onclick
            }//end foreach a in homeArticlesMenu
        }

    }//end for each ajaxTabList
}

function initDirPhoneNumbers( ){
    /*
    var bizListings = document.getElementById('bizListings');
    if(!bizListings){
        return;
    }
    var l_divs = bizListings.getElementsByTagName('div');
    */

    var l_divs = document.getElementsByTagName('div');

    for(var i = 0; i < l_divs.length; i++){
        l_div = l_divs[i];

        if(l_div.className == 'l_phone_div'){
            var l_span = l_div.getElementsByTagName('span')[0];
            var l_inputs = l_div.getElementsByTagName('input');
            var l_phone = l_inputs[0];
            var l_id = l_inputs[1];

            l_span.phone_number = l_phone.value;
            l_span.listing_id = l_id.value;

            l_span.onclick = function( ){
                this.innerHTML = this.phone_number;
                this.style.cursor = 'default';

                if(b_xml.isCurrentRequest){ return false; }//this shouldn't ever happen on this page.

                var newHREF = '/phone_click.php?lid=' + this.listing_id;
                //alert(newHREF);
                b_xml.request(newHREF);
                if(b_xml.isSupported){ return false; }

                this.onclick = null;//only click once

                return true;
            }
        }
    }
}

function initInputButtons( ){
    if(document.getElementsByTagName){
        var inputs = document.getElementsByTagName("input");
        for(var i = 0; i < inputs.length; i++){
            if((inputs[i].type == "submit" || inputs[i].type == "reset" || inputs[i].type == "button") && inputs[i].className == "button"){
                inputs[i].onmouseover = inputOver;
                inputs[i].onmouseout = inputOut;

                inputs[i].style.borderRadius = '6px';
                inputs[i].style.MozBorderRadius = '6px';
                inputs[i].style.WebkitBorderRadius = '6px';
            }
            else if(window.ActiveXObject && (inputs[i].type == 'checkbox' || inputs[i].type == 'radio')){
                inputs[i].style.border = '0px solid #ffffff';
                inputs[i].style.backgroundColor = 'transparent';
            }
        }
    }
}

//val = the block number, mode = (1|0 -> open|closed)
function setBlockControls(val, mode){
    var bk_cookie = getCookie('bk_cookie');

    if(!bk_cookie){
        setCookie('bk_cookie', '');
        bk_cookie = '';
    }


    var bkA = bk_cookie.split(/\,/);

    var found = false;
    var newCookieStr = '';

    for(i = 0; i < bkA.length; i++){
        var bk = bkA[i];

        if(bk == val){
            found = true;

            if(mode == 0){
                continue;
            }
        }

        if(newCookieStr != ''){
            newCookieStr += ',';
        }
        newCookieStr += bk;
    }

    if(!found && mode == 1){
        if(newCookieStr != ''){
            newCookieStr += ',';
        }

        newCookieStr += val;
    }

    setCookie('bk_cookie', newCookieStr);
}

function initA( ){
    if(document.getElementsByTagName){
        var as = document.getElementsByTagName("a");
        for(var i = 0; i < as.length; i++){

            if(as[i].id && as[i].id.match(/^tmar?\_\d+$/)){
                as[i].style.MozBorderRadius = '10px';
                as[i].style.WebkitBorderRadius = '10px';
                as[i].style.borderRadius = '10px';//future support
            }

            var hostnm = as[i].href.replace(/http(s)?\:\/\//, "");
            hostnm = hostnm.replace(/\/.*/, "");

            if(hostnm != window.location.hostname || as[i].href.match(/\/ad\.\php\?/)){
                if(!as[i].target){
                    as[i].target = "_blank";
                    continue;
                }
            }

            if(ajaxEnabled){
                if(b_xml){
                    as[i].onclick = function( ){
                        var newHREF = this.href;

                        if(newHREF.match(/\?/)){
                            newHREF += "&xmlOnly=1";
                        }
                        else{
                            newHREF += "?xmlOnly=1";
                        }

                        if(newHREF == navHistory[curNavPoint]){
                            return false;
                        }

                        for(var i = navHistory.length - 1; i > curNavPoint; i--){
                            navHistory.pop( );
                        }

                        curNavPoint += 1;
                        navHistory.push(newHREF);

                        b_xml.request(newHREF);

                        if(b_xml.isSupported){
                            return false;
                        }
                        return true;
                    }
                }
            }
        }

        initAjaxTabs( );
        initCalendarNav( );
        initDirPhoneNumbers( );
    }
}

function initTrainerGallery( ){
    var trainer_gallery = document.getElementById('trainer_gallery');
    var trainer_gallery_image = document.getElementById('trainer_gallery_image');

    if(!trainer_gallery || !trainer_gallery_image){ return; }

    var lnks = trainer_gallery.getElementsByTagName('a');
    for(var i = 0; i < lnks.length; i++){
        lnks[i].onclick = function( ){ return false; }
    }

    var imgs = trainer_gallery.getElementsByTagName('img');
    for(var i = 0; i < imgs.length; i++){
        imgs[i].onclick = function( ){
            var img_src = this.src.replace(/\_t(\.\w+)$/, "$1");
            trainer_gallery_image.src = img_src;
            resizeOverlay( );
        }
    }
}

function loadYouTubeVideos( ){
    var divs = document.getElementsByTagName('div');

    for(var i = 0; i < divs.length; i++){
        if(divs[i].className && divs[i].className == 'trainer_youtube'){
            var lnk = divs[i].innerHTML;
            divs[i].innerHTML = '<div>&nbsp;</div><div style="text-align: center;"><object width="425" height="355"><param name="movie" value="' + lnk + '&rel=1"></param><param name="wmode" value="transparent"></param><embed src="' + lnk + '&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></div><div>&nbsp;</div>';
        }
    }
}

function initObjects( ){
    if(document.getElementsByTagName){
        var objects = document.getElementsByTagName("div");
        var len = objects.length;

        for(var i = 0; i < len; i++){
            var obj = objects[i];
            if(obj.className && obj.className == 'bgzobject'){
                var paramStr = '';
                var objStr = '\n<object ';
                var embedStr = '\n<embed ';
                var params = obj.getElementsByTagName('param');
                var plen = params.length;
                var o_type = '';
                var o_filename = '';
                var o_width = '';
                var o_height = '';
                //need o_type, it will be first or second in the list, but just in case.
                for(j = 0; j < plen; j++){
                    var param = params[j];
                    var pn = param.name;
                    var pv = param.value;
                    if(pn == 'o_type'){
                        o_type = pv;

                        //do this here because we have to force video type for wmv files
                        var isWindows = false;
                        //if( o_type != 'wmv' && !document.all){
                        //     isWindows = false;
                        //}else if(o_type == 'wmv' || navigator.userAgent.match(/windows/i)){
                        if(o_type == 'wmv' || navigator.userAgent.match(/windows/i)){
                            isWindows = true;
                        }

                        break;
                    }
                }
                for(j = 0; j < plen; j++){
                    var param = params[j];
                    var pn = param.name;
                    var pv = param.value;

                    switch(pn){
                    case 'o_type':
                        if(o_type == 'swf'){
                            embedStr += ' type="application/x-shockwave-flash" ';
                            objStr += ' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ';
                            objStr += ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" ';
                        }
                        else if(isWindows && o_type != 'mov'){

                            embedStr += ' type="application/x-mplayer2" ';
                            embedStr += '  pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/" ';
                            objStr += ' classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" ';
                            objStr += ' standby="Loading..." ';
                            objStr += ' type="application/x-oleobject" ';
                            objStr += ' codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" ';
                        }
                        else{
                            embedStr += ' pluginspage="http://www.apple.com/quicktime/download/" ';
                            objStr += ' classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" ';
                            objStr += ' codebase="http://www.apple.com/qtactivex/qtplugin.cab" ';
                        }
                        break;
                    case 'o_filename':
                        o_filename = pv;
                        if(o_type == 'swf'){
                            paramStr += ' <param name="movie" value="docs/' + pv + '" /> \n';
                        }
                        else if(isWindows && o_type != 'mov'){
                            paramStr += ' <param name="filename" value="docs/' + pv + '" /> \n';
                        }
                        else{
                            paramStr += ' <param name="src" value="docs/' + pv + '" /> \n';
                        }
                        embedStr += ' src="docs/' + pv + '" ';

                        break;
                    case 'o_width':
                        o_width = pv;
                        obj.width = pv;
                        embedStr += ' width="' + pv + '" ';
                        objStr += ' width="' + pv + '" ';
                        break;
                    case 'o_height':
                        o_height = pv;
                        obj.height = pv;
                        embedStr += ' height="' + pv + '" ';
                        objStr += ' height="' + pv + '" ';
                        break;
                    default:
                        pn = pn.replace(/^(o\_)/, '');

                        if(!isWindows && pn == 'showcontrols'){
                            pn = 'controller';
                        }

                        if(pn == 'transparency'){
                            pn = 'wmode';
                            pv = 'transparent';
                        }

                        paramStr += ' <param name="' + pn + '" value="' + pv + '" /> ';

                        if(pv.toLowerCase( ) == 'false'){
                            pv = '0';
                        }
                        else if(pv.toLowerCase( ) == 'true'){
                            pv = '1';
                        }

                        if(pn == 'showcontrols'){
                            if(pv == '0'){
                                paramStr += ' <param name="ShowStatusBar" value="false" /> \n';
                                embedStr += ' showstatusbar="0" ';
                            }
                            else{
                                paramStr += ' <param name="ShowStatusBar" value="true" /> \n';
                                embedStr += ' showstatusbar="1" ';
                            }
                        }

                        embedStr += ' ' + pn + '="' + pv + '" ';


                        break;
                    }
                }//end params

                embedStr += '></embed>\n';
                objStr += '>\n';
                //alert(objStr + paramStr + embedStr + '</object>');
                obj.innerHTML = objStr + paramStr + embedStr + '</object>\n';
                //alert(obj.innerHTML);
                obj.style.display = 'block';
            }//end if bgzobject
        }
    }
}

//Cool input effects
function inputOver(e){
    this.className = "buttonOver";
}

function inputOut(e){
    this.className = "button";
}

//Popups
function generalPopUp(loc, w, h){
    gPopUp = window.open(loc, "gpopup", "width=" + w + ",height=" + h + ", scrollbars=0, status=no,toolbar=no,resizable=yes");
    gPopUp.focus( );
}

function imageSelectPopUp(pwinvar){
    imgSelectPopUp = window.open("./imageselect.php?mode=1&fieldID=" + pwinvar, "ImageSelector", "width=780,height=480, scrollbars=0, status=no,toolbar=no,resizable=no");
    imgSelectPopUp.focus( );
}
function imageSelectPopUp2(pwinvar){
    imgSelectPopUp = window.open("./imageselect.php?mode=1&fieldID=" + pwinvar, "ImageSelector", "width=780,height=480, scrollbars=0, status=no,toolbar=no,resizable=no");
    imgSelectPopUp.focus( );
}

function openUploader( ){
    var imgSelectPopUp = window.open("./imageselect.php", "ImageSelector", "width=780,height=480, scrollbars=0, status=no,toolbar=no,resizable=no");
    imgSelectPopUp.focus( );

    return false;
}

function fileSelectPopUp(pwinvar){
    imgSelectPopUp = window.open("./fileselect.php?mode=1&fieldID=" + pwinvar, "FileSelector", "width=780,height=480, scrollbars=0, status=no,toolbar=no,resizable=no");
    imgSelectPopUp.focus( );
}

function openFUploader( ){
    var imgSelectPopUp = window.open("./fileselect.php", "FileSelector", "width=780,height=480, scrollbars=0, status=no,toolbar=no,resizable=no");
    imgSelectPopUp.focus( );

    if(document.all){
        window.event.cancelBubble = true;
    }
    else{
        e.stopPropagation( );
        e.preventDefault( );
    }
    return false;
}

//drop down menus ##################################################


var CurMenu = null;
var isDropped = false;
var isHideCheck = false;
var subCurMenu = null;
var subIsDropped = false;
var subIsHideCheck = false;

function initTopMenuLinks( ){
    var mbTable = document.getElementById('mbTable');
    var tblA = mbTable.getElementsByTagName('table');

    for(var tcnt = 0; tcnt < tblA.length; tcnt++){
        var hmenu = tblA[tcnt];

        if(!hmenu || hmenu.className != 'tmenu'){
            return;
        }

        var tdA = hmenu.getElementsByTagName('td')
        var len = tdA.length;

        for(var i = 0; i < len; i++){
            var td = tdA[i];
            if(bgzDDEnabled){
                td.bgzdd = new bgzDropDown( );
                var ul = td.getElementsByTagName('ul')[0];
                if(ul){
                    td.bgzdd.init(td, ul, 'down');
                }
            }
            else{
                td.onmouseover = pageON;
                td.onmouseout = pageOFF;
            }
        }
    }
}
function initLeftMenuLinks( ){
    var dleftmenu = document.getElementById('dleftmenu');
    var liA = dleftmenu.getElementsByTagName('li')
    var len = liA.length;

    for(var i = 0; i < len; i++){
        var li = liA[i];
        if(bgzDDEnabled){
            li.bgzdd = new bgzDropDown( );
            var ul = li.getElementsByTagName('ul')[0];
            if(ul){
                li.bgzdd.init(li, ul, 'right');
            }
        }
        else{
            li.onmouseover = pageON;
            li.onmouseout = pageOFF;
        }
    }
}
function pageON(index){
    var uls = this.getElementsByTagName('ul');
    if(uls.length > 0){
        show(uls[0]);
    }

}
function pageOFF(index){
    if(document.getElementById){
        if(!isHideCheck) hideMenu( );
    }
}
function show(menu){
    if(CurMenu)
        CurMenu.style.display = "none";
    menu.style.display = "block";
    isDropped = true;
    CurMenu = menu;
}
function hideMenu( ){
    if(CurMenu){
        isDropped = false;
        isHideCheck = true;
        setTimeout('checkDropped( );', 500);
        isHideCheck = false;
    }
}
function checkDropped( ){
    if(!isDropped && CurMenu != null) CurMenu.style.display = "none";
}
//############################################################

function printView(plink) {
    var plink2 = "/print/p/" + plink;
    window.open(plink2, "ShoppingList", "width=620,height=400,status=yes,toolbar=no,resizable=yes,raised=yes,scrollbars=yes");
}

function printPage(buttonID) {
    var printButton = document.getElementById(buttonID);
    printButton.style.visibility = "hidden";
    window.print();
    window.close();
}

var ipreviewWin = null;
function ipreview(lnk){
    ipreviewWin = window.open(lnk, "ipreviewWin", "width=780,height=480, menubar=yes, location=yes, scrollbars=yes, status=yes,toolbar=yes,resizable=yes");
    ipreviewWin.focus( );
    return false;
}

//category function
function lCategoryPopup(pwinvar, pkg){
    if(!pkg){ pkg = 0; }

    lCatPopUp = window.open("/include/category.php?lckey=" + pwinvar + "&pkg=" + pkg, "CategorySelect", "width=780,height=480, scrollbars=yes, status=yes,toolbar=no,resizable=yes");
    lCatPopUp.focus( );
}
function lCategoryPopupA(pwinvar){
    lCatPopUp = window.open("/include/category2.php?lckey=" + pwinvar, "CategorySelect", "width=780,height=480, scrollbars=yes, status=yes,toolbar=no,resizable=yes");
    lCatPopUp.focus( );
}
function lClassifiedPopup(pwinvar){
    lCatPopUp = window.open("/include/classified.php?lckey=" + pwinvar, "ClassifiedSelect", "width=780,height=480, scrollbars=yes, status=yes,toolbar=no,resizable=yes");
    lCatPopUp.focus( );
}
function wsbPopup(loc){
    lCatPopUp = window.open(loc, "wsb", "width=782,height=480, menubar=yes, location=yes, scrollbars=yes, status=yes,toolbar=yes,resizable=yes");
    lCatPopUp.focus( );
}

function whatisPopup(loc){
    whatisPopUp = window.open(loc, "whatis", "width=300,height=300, menubar=no, location=no, scrollbars=yes, status=no,toolbar=no,resizable=yes");
    whatisPopUp.focus( );
}

function disableBoxes(form, check){
    for(var i = 0; i < form.elements.length; i++){
        if(form.elements[i].type == 'checkbox' && form.elements[i].id != 'acheck'){
            form.elements[i].disabled = check;
            form.elements[i].checked = check;
        }
    }
}

function setCookie(cookieName,cookieValue){
    var dateNow = new Date( );
    var expire = new Date();
    expire.setTime(dateNow.getTime() + 7200000);
    document.cookie = cookieName + "=" + escape(cookieValue) + ";expires=" + expire.toGMTString( ) + ";path=/";
}

function getCookie(cname){
    var dc = document.cookie;
    var prefix = cname + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1){
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else{
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1){
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

function addslashes(str){
    str = str.replace(/\'/g, '\\\'');
    str = str.replace(/\"/g, '\\"');
    str = str.replace(/\\/g, '\\\\');
    str = str.replace(/\0/g, '\\0');
    return str;
}

function stripslashes(str){
    str=str.replace(/\\'/g, '\'');
    str=str.replace(/\\"/g, '"');
    str=str.replace(/\\\\/g, '\\');
    str=str.replace(/\\0/g, '\0');
    return str;
}

function refreshSImg(sImg){
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = 8;
	var randomStr = '';
	for (var i = 0; i < string_length; i++) {
		var rnum = Math.floor(Math.random( ) * chars.length);
		randomStr += chars.substring(rnum, rnum+1);
	}

	var sImgSrc = sImg.src;
	if(sImgSrc.match('&')){
	    sImgSrcA = sImgSrc.split('&');
	    sImgSrc = sImgSrcA[0];
	}

    sImg.src = sImgSrc + '&' + randomStr;
}

/* GOOGLE MAPS */

function setDirections(toAddress, fromAddress){
    if(!fromAddress || !toAddress){
        return;
    }

    var mapObj = document.getElementById("bizMap");
    if(!mapObj){
        return;
    }

    var directions = document.getElementById('directions');
    if(!directions){
        return;
    }

    var map = new GMap2(mapObj);
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());

    gdir = new GDirections(map, directions);
    GEvent.addListener(gdir, "load", onGDirectionsLoad);
    GEvent.addListener(gdir, "error", handleErrors);

    gdir.load("from: " + fromAddress + " to: " + toAddress);
}


function handleErrors( ){
    if (gdir.getStatus( ).code == G_GEO_UNKNOWN_ADDRESS)
        alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: " + gdir.getStatus().code);

    else if (gdir.getStatus( ).code == G_GEO_SERVER_ERROR)
        alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + gdir.getStatus().code);

    else if (gdir.getStatus( ).code == G_GEO_MISSING_QUERY)
        alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gdir.getStatus().code);

    else if (gdir.getStatus( ).code == G_GEO_BAD_KEY)
        alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code);

    else if (gdir.getStatus( ).code == G_GEO_BAD_REQUEST)
        alert("A directions request could not be successfully parsed.\n Error code: " + gdir.getStatus().code);

    else alert("An unknown error occurred.");
}

function onGDirectionsLoad( ){
    var directions = document.getElementById('directions');
    directions.style.display = 'block';
}

function loadGoogleMaps( ){
    if(GBrowserIsCompatible( )){
        maps = document.getElementsByTagName("div");

        for(var i = 0; i < maps.length; i++){
            var curMap = maps[i];
            if(curMap.id == "bizMap"){
                var coords = curMap.innerHTML;

                if(coords.match(/address\:/g)){
                    var address = coords.replace(/address\:/, '');

                    var info = '';
                    if(address.match(/\|\|info\:/g)){
                        var addA = address.split('||');
                        address = addA[0];

                        var info = addA[1].replace(/info\:/, '');
                    }

                    markAddress(address, curMap, info);
                }
                else if(coords.match(/^\d+\,\d+$/)){
                    coords = coords.split(",");
                    if(!coords[1]){
                        return;
                    }

                    var map = new GMap2(curMap);
                    map.setCenter(new GLatLng(coords[0], coords[1]), 16);
                    map.addControl(new GSmallMapControl());
                    map.addControl(new GMapTypeControl());

                    //map.openInfoWindowHtml(map.getCenter(),"html goes here");
                    //map.setMapType(G_HYBRID_MAP);

                    //Create Custom Icon
                    //var icon = new GIcon();
                    //icon.image = "/images/map_icon.png";
                    //icon.iconSize = new GSize(65, 31);
                    //icon.iconAnchor = new GPoint(32.5, 31);
                    //icon.infoWindowAnchor = new GPoint(5, 1);

                    var point = new GLatLng(coords[0], coords[1]);
                    map.addOverlay(new GMarker(point));

                }
            }
        }
    }
}

function markAddress(address, curMap, info){
    var map = new GMap2(curMap);
    var geocoder = new GClientGeocoder( );

    geocoder.getLatLng(address,
        function(point){
            if(!point){
                alert("Google was unable to find " + address + " at this time, please make sure the address provided, is correct.");
            }
            else{
                map.setCenter(point, 13);
                map.addControl(new GSmallMapControl());
                map.addControl(new GMapTypeControl());

                var marker = new GMarker(point);
                map.addOverlay(marker);
                map.openInfoWindowHtml(point, "<div style=\"line-height: 1.2em; font-size: .9em\">" + info + "</div>");
            }
        }
    );

}
/* END GOOGLE MAPS */

function initCalendarNav( ){
    //similar to tabs but for the calendar
    hObj = document.getElementById('ajaxCalNav');
    if(hObj){
        i = 0;
        as = hObj.getElementsByTagName("a");
        for(i = 0; i < as.length; i++){
            if(as[i].id == 'mainDate'){
                continue;
            }

            as[i].onclick = function( ){
                if(b_xml.isCurrentRequest){ return false; }

                var newHREF = this.href;
                newHREF = newHREF.replace(/(\#.*)$/, '');
                newHREF = newHREF.replace(/(\/content\/)/, '/ajax.php');

                newHREF = newHREF + '&type=calnav';
                //alert(newHREF);
                b_xml.request(newHREF);
                if(b_xml.isSupported){ return false; }

                return true;
            }//end onclick
        }
    }

    hObj = document.getElementById('ajaxCalNavMembers');
    if(hObj){
        i = 0;
        as = hObj.getElementsByTagName("a");
        for(i = 0; i < as.length; i++){
            if(as[i].id == 'mainDate'){
                continue;
            }

            as[i].onclick = function( ){
                if(b_xml.isCurrentRequest){ return false; }

                var newHREF = this.href;
                newHREF = newHREF.replace(/(\#.*)$/, '');
                newHREF = newHREF.replace(/(\/members\/)/, '/members/ajax.php');

                newHREF = newHREF + '&type=calnav';
                //alert(newHREF);
                b_xml.request(newHREF);
                if(b_xml.isSupported){ return false; }

                return true;
            }//end onclick
        }
    }
}

function overlayPopUp( ){
    var overlay = document.getElementById('pop_overlay_dir');
    var container = document.getElementById('pop_container_dir');

    if(!overlay || !container){
        return;
    }

    var cur_style = overlay.style.display;

    if(cur_style == 'none' || cur_style == ''){
        overlay.style.display = 'block';
        container.style.display = 'block';
    }
    else{
        overlay.style.display = 'none';
        container.style.display = 'none';
    }
}

function openSplash(tObj){
    var newHREF = tObj.href;

    //until the non-js part is done
    if(window.is_ie && tObj.innerHTML.match('Reviews')){
        window.location = newHREF;
    }

    newHREF = newHREF.replace(/(\#.*)$/, '');
    newHREF = newHREF.replace(/(\/content\/)/, '/ajax.php/');
    newHREF = newHREF + '?type=splash_dir';
    //alert(newHREF);
    b_xml.request(newHREF);

    overlayPopUp( );
    makeWindowed('pop_container_dir');

    if(b_xml.isSupported){ return false; }
}

//http://www.actionscript.org/forums/showthread.php3?t=132324
function makeWindowed(div){
    var p_div = document.getElementById(div);
    if(window.isOldIE){
        var html = "<iframe style=\"filter: Alpha(Opacity=60, FinishOpacity=60, Style=2); background-color: #000000; position: absolute; display: inline; z-index: -1; width: 100%; height: 854px; top: 0; left: 0; filter: mask( );\"></iframe>";

        if(p_div){
            p_div.innerHTML += html;
        }

        //force refresh of div
        var olddisplay = p_div.style.display;
        p_div.style.display = 'none';
        p_div.style.display = olddisplay;

        initAjaxTabs( );
        initCalendarNav( );
        initDirPhoneNumbers( );
        initInputButtons( );
    }
}

function replyToComment(cid, textStr){

    var under_comment = document.getElementById('under_comment');
    var under_comment_text = document.getElementById('under_comment_text');

    if(!under_comment || !under_comment_text){
        return;
    }

    under_comment.value = cid;
    under_comment_text.innerHTML = textStr + ' <button type="submit" class="button" name="clear" value="clear" onclick="clearReplyToComment( );return false;">Clear</button>';;
    window.location = "#rate";
}

function clearReplyToComment( ){
    var under_comment = document.getElementById('under_comment');
    var under_comment_text = document.getElementById('under_comment_text');

    if(!under_comment || !under_comment_text){
        return;
    }

    under_comment.value = "";
    under_comment_text.innerHTML = '';
}

function toggleCommentBlurb(cbid){
    var cb = document.getElementById(cbid);

    if(cb.style.display != 'block'){
        cb.style.display = 'block';
    }
    else{
        cb.style.display = 'none';
    }
}

/* star ratings */

//will happen onmouseover
//will swap out images of stars seamlessly
function changeRating(rating){
    var starObj = document.getElementById('starImg');

    starObj.src = '/images/stars_' + rating + 'full.gif';
}

//will happen onclick
//will take the value and set it to a hidden input field on the form
function saveRating(rating, tObj){
    var mapObj = document.getElementById('starMap');
    mapObj.onmouseout = function( ){ changeRating(rating); }

    var newHREF = tObj.href;
    newHREF = newHREF.replace(/(\#.*)$/, '');
    newHREF = newHREF.replace(/(\/content\/)/, '/ajax.php/');
    newHREF = newHREF + '/type/rate';
    b_xml.request(newHREF);

    if(b_xml.isSupported){ return false; }
}

function hideById(tid){
    tObj = document.getElementById(tid);

    tObj.style.display = 'none';
}
function showById(tid, dispType){
    tObj = document.getElementById(tid);

    if(!dispType || window.is_ie){
        dispType = 'block';
    }

    tObj.style.display = dispType;
}
function toggleById(tid, dispType){
    tObj = document.getElementById(tid);

    if(!dispType || window.is_ie){
        dispType = 'block';
    }

    if(tObj.style.display == dispType){
        tObj.style.display = 'none';
    }
    else{
        tObj.style.display = dispType;
    }
}

//******************
// FLash Functions *
//******************

//Requires javascript dom support, gracefully fails otherwise
//Loads flash movie in the specified location

//not done yet.
function loadFlashDocument(movieLocation){

}
