/* #################################################################
Copyright © 2008 BBB Systems, LLC, All rights reserved
################################################################## */
var sGlobals = new Object( );
sGlobals.bScrollAmount = 20;
sGlobals.slowScroll = 15;
sGlobals.fastScroll = 40;
sGlobals.isScrollingR = false;
sGlobals.isScrollingL = false;

var bScrollAmount = 20;

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

var globals = new Array( );

var ajaxEnabled = false;
var bgzDDEnabled = true;

var stopProdRotator = false;
var allowedPRIndex = 1;

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

var is_safari = (document.childNodes)&&(!document.all)&&(!navigator.taintEnabled)&&(!navigator.accentColorName)?true:false;

//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.load_google_map) && 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( );

    initDirPhoneNumbers( );

    initA( );

    initEditors( );

    initSearchBObjects( );
    initObjects( );

    initMLSRecords( );

    initListingGallery( );
    //resizeOverlay( );

    initAppObjects( );

    appThink( );

    if(window.load_maps){
        loadGoogleMaps( );
    }
    else if(window.load_google_map){
        loadMLSGoogleMap( );
    }

    window.onresize = resizeOverlay;
}

window.xmlInit = function( ){
    initCalendarNav( );
    initAjaxTabs( );
    initListingGallery( );
    //resizeOverlay( );

    initA( );

    initMLSRecords( );

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

function initDirPhoneNumbers( ){
    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' || l_div.className == 'l_email_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];
            var c_id = l_inputs[2];

            if(l_div.className == 'l_phone_div'){
                l_span.phone_number = l_phone.value;
                l_span.l14m3 = false;
            }
            else{
                var tmp = l_phone.value.replace(/\+.*$/, '');
                var tmp2 = l_phone.value.replace(/^.*\+/, '');
                var tmp2a = tmp2.split(/\|/);
                tmp2 = '';
                for(var j = tmp2a.length - 1; j >= 0; j--){
                    tmp2 += tmp2==''?tmp+'@':'.';
                    tmp2 += tmp2a[j];
                }
                l_span.phone_number = tmp2;
                l_span.l14m3 = true;
            }

            l_span.listing_id = l_id.value;
            l_span.catid = c_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 + '&catid=' + this.catid;
                newHREF+=this.l14m3?'&l14m3=1':'';
                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;
            }
            else if(window.ActiveXObject && (inputs[i].type == 'checkbox' || inputs[i].type == 'radio')){
                inputs[i].style.border = '0px solid #ffffff';
                inputs[i].style.backgroundColor = 'transparent';
            }
        }
        var buttons = document.getElementsByTagName("button");
        for(var i = 0; i < buttons.length; i++){
            if((buttons[i].type == "submit" || buttons[i].type == "reset" || buttons[i].type == "button") && buttons[i].className == "button"){
                buttons[i].onmouseover = inputOver;
                buttons[i].onmouseout = inputOut;
            }
        }
    }
}

//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++){

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

            if(as[i].className == 'mls_listing_link'){
                as[i].onclick = function( ){ return false; }
                continue;
            }

            if(hostnm != window.location.hostname || as[i].href.match(/\/ad\.\php\?/) || as[i].href.match(/\/ldir\.\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( );
    }
}

function initEditors( ){
    var t_areaA = document.getElementsByTagName('textarea');
    var bgzObj = null;
    for(var i = 0; i < t_areaA.length; i++){
        var t_area = t_areaA[i];
        if(t_area.className == 'bgz_input'){
            var base_id = t_area.id.replace(/^bgz_input_/gi, '');
            buildEditor(base_id);
        }
    }
    bgzObj = null;
}

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

            if(obj.className == 'event_day_container'){
                obj.style.MozBorderRadius = '3px';
                obj.style.WebkitBorderRadius = '3px';
            }
            else if(obj.className == 'event_day_month'){
                obj.style.MozBorderRadius = '1px';
                obj.style.WebkitBorderRadius = '1px';
            }
        }
    }
}

function initSearchBObjects( ){
    var searchZipMiles = document.getElementById('searchZipMiles');
    var searchZipCode = document.getElementById('searchZipCode');
    var searchRefresh = document.getElementById('searchRefresh');

    if(!searchZipMiles || !searchZipCode || !searchRefresh){
        return;
    }

    searchZipMiles.onchange = function( ){
        var sval = this.options[this.selectedIndex].value;
        setCookie('searchZipMiles', sval);
        document.getElementById('searchRefresh').style.visibility = 'visible';
    }
    searchZipCode.onchange = function( ){
        setCookie('searchZipCode', this.value);
        document.getElementById('searchRefresh').style.visibility = 'visible';
    }

    searchRefresh.onclick = function( ){
        window.location.reload( false );
    }
}

function initAppObjects( ){
    var bBaseGallery = document.getElementById('bBaseGallery');
    var bbc = document.getElementById('bottomBase');

    if(!bbc){
        return;
    }

    var clientW = bbc.clientWidth;
    var scrollW = bbc.scrollWidth;
    var i;

    if(curNavPoint < 0){
        curNavPoint = 0;

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

        navHistory.push(newHREF);
    }

    if(bBaseGallery && bBaseGallery.clientWidth < bbc.scrollWidth){
        if(document.all){
            bBaseGallery.style.width = parseInt(bbc.scrollWidth + 32) + "px";
        }
        else{
            bBaseGallery.style.width = parseInt(bbc.scrollWidth) + "px";
        }
    }
    else if(bBaseGallery){
        bBaseGallery.style.width = "auto";
    }

    var bLeftArrow = document.getElementById('bLeftArrow');
    var bRightArrow = document.getElementById('bRightArrow');

    if(document.addEventListener){
        bbc.addEventListener('DOMMouseScroll', captureScroll, false);
    }
    //else{
        //make opera happy, it lies about addEventListener!
        bbc.onmousewheel = captureScroll;
    //}

    bLeftArrow.onmouseover = function( ){
        this.isScrolling = true;
        sGlobals.scrollTime = sGlobals.slowScroll;
        bScrollLeft( );
    }
    bLeftArrow.onmouseout = function( ){
        this.isScrolling = false;
        sGlobals.scrollTime = sGlobals.slowScroll;
    }
    bLeftArrow.onmousedown = function( ){
        if(is_safari){
            return false;
        }
        this.isScrolling = true;
        sGlobals.scrollTime = sGlobals.fastScroll;
        return true;
    }
    bLeftArrow.onmouseup = function( ){
        if(is_safari){
            return false;
        }
        this.isScrolling = true;
        sGlobals.scrollTime = sGlobals.slowScroll;
        return false;
    }
    bLeftArrow.onclick = function( ){ return false }


    bRightArrow.onmouseover = function( ){
        this.isScrolling = true;
        sGlobals.scrollTime = sGlobals.slowScroll;
        bScrollRight( );
    }
    bRightArrow.onmouseout = function( ){
        this.isScrolling = false;
        sGlobals.scrollTime = sGlobals.slowScroll;
    }
    bRightArrow.onmousedown = function( ){
        if(is_safari){
            return false;
        }
        this.isScrolling = true;
        sGlobals.scrollTime = sGlobals.fastScroll;
        return true;
    }
    bRightArrow.onmouseup = function( ){
        if(is_safari){
            return false;
        }

        this.isScrolling = true;
        sGlobals.scrollTime = sGlobals.slowScroll;
        return false;
    }
    bRightArrow.onclick = function( ){ return false }
}

function appThink( ){
    if(document.getElementById('bottomBaseContainer')){
        var bbc = document.getElementById('bottomBase');

        var bLeftArrow = document.getElementById('bLeftArrow');
        var bRightArrow = document.getElementById('bRightArrow');

        //alert(bbc.offsetWidth);
        //alert(bbc.clientWidth);
        //alert(bbc.scrollWidth);

        if(bbc.clientWidth < bbc.scrollWidth && bLeftArrow.style.display != "block"){
            bLeftArrow.style.display = "block";
            bRightArrow.style.display = "block";
        }
        else if(bbc.clientWidth == bbc.scrollWidth){
            //alert(bbc.offsetWidth);
            //alert(bbc.clientWidth);
            //alert(bbc.scrollWidth);
            bLeftArrow.style.display = "none";
            bRightArrow.style.display = "none";
        }
        else if(bbc.style.left != "0px"){
            bbc.style.left = "0px";
        }

    }
    setTimeout('appThink( )', 100);
}

//bottomBase scroll (-n goes left, +n goes right)
//(to the user it's the other way around -1 pushes <---, 1 pushes ---->)
function bottomBaseScroll(direction){
    var bbc = document.getElementById('bottomBase');
    var clientW = bbc.clientWidth;
    var scrollW = bbc.scrollWidth;
    var currentPos = bbc.scrollLeft;

    if(isNaN(currentPos)){
        currentPos = 0;
    }
    var newPos = currentPos;

    if(direction > 0){
        if(currentPos + direction > (scrollW - clientW)){
            newPos = scrollW - clientW;
        }
        else{
            newPos += direction;
        }
    }
    else if(direction < 0){
        if(scrollW + direction < 0){
            newPos = 0
        }
        else{
            newPos += direction;
        }
    }
    bbc.scrollLeft = newPos;
}

function captureScroll(e){
    //alert(e.detail);
    var direction = e.detail;
    if(direction < 0){
        bottomBaseScroll(-1 * bScrollAmount * 2);
    }
    else{
        bottomBaseScroll(bScrollAmount * 2);
    }
    e.stopPropagation( );
    e.preventDefault( );
}

function bScrollLeft( ){
    var bLeftArrow = document.getElementById('bLeftArrow');

    if(bLeftArrow.isScrolling){
        bottomBaseScroll(-1 * sGlobals.scrollTime);
        setTimeout('bScrollLeft( );', 50);
    }
}
function bScrollRight( ){
    var bRightArrow = document.getElementById('bRightArrow');
    if(bRightArrow.isScrolling){
        bottomBaseScroll(sGlobals.scrollTime);
        setTimeout('bScrollRight( );', 50);
    }
}

//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 generalPopUp2(loc, w, h){
    gPopUp = window.open(loc, "gpopup", "width=" + w + ",height=" + h + ", scrollbars=1, 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 classImageSelectPopUp(pwinvar, pimgvar){
    imgSelectPopUp = window.open("./c_imageselect.php?mode=1&fieldID=" + pwinvar + "&imgID=" + pimgvar, "ImageSelector", "width=780,height=480, scrollbars=0, status=no,toolbar=no,resizable=no");
    imgSelectPopUp.focus( );
}

//drop down menus ##################################################
function initTopMenuLinks( ){
    var tmenu = document.getElementById('tmenu');
    if(!tmenu){ return; }
    var tdA = tmenu.getElementsByTagName('td')
    for(var i = 0; i < tdA.length; i++){
        var td = tdA[i];
        if(bgzDDEnabled){
            var ul = td.getElementsByTagName('ul')[0];
            if(ul){
                td.bgzdd = new bgzDropDown( );
                td.bgzdd.init(td, ul, 'down');
            }
        }
    }
}
//############################################################

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){
    lCatPopUp = window.open("/include/category.php?lckey=" + pwinvar, "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 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 optionInfoPopUp(povar){
    poInfoPopUp = window.open("/view_poption.php?poid=" + povar, "ProductOptionInfo", "width=500,height=480, scrollbars=yes, status=yes,toolbar=no,resizable=yes");
    poInfoPopUp.focus( );

    var winX = screen.width/2 - 500/2;
    var winY = screen.height/2 - 480/2;

    poInfoPopUp.moveTo(winX, winY)
}

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 '';
    }
    else{
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1){
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

function convert2RGB(color) {
    var rgb1 = parseInt(color.substr(0, 2), 16);
    var rgb2 = parseInt(color.substr(2, 2), 16);
    var rgb3 = parseInt(color.substr(4, 2), 16);

    return "rgb(" + rgb1 + ", " + rgb2 + ", " + rgb3 + ")";
}

function hideFlash(skip){
    var flashObj = document.getElementById('hpFlash');
    var fpObj = document.getElementById('hfpMainC');
    var npObj = document.getElementById('hnProd');

    flashObj.style.display = 'none';
    flashObj.style.visibility = 'hidden';

    fpObj.style.display = 'inline';
    fpObj.style.visibility = 'visible';
    npObj.style.display = 'block';
    npObj.style.visibility = 'visible';

    //if(skip){
        setCookie('skipFlash', true);
    //}
}

/* GOOGLE MAPS */
function setDirections(toAddress, fromAddress){
    if(!fromAddress || !toAddress){
        return;
    }

    var mapObj = document.getElementById("google_map");
    if(!mapObj){
        mapObj = document.getElementById('map');

        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';
}

var map;
var myPano;
var panoClient;
function loadGoogleMaps( ){
    if(GBrowserIsCompatible( )){
        maps = document.getElementsByTagName("div");

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

                var address = map_inner.replace(/address\:/, '');

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

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

                    if(addA[2]){
                        eid = addA[2].replace(/^\s*|\s*$/, '');;
                    }
                }

                if(map_inner.match(/address\:/g)){
                    markAddress(address, curMap, info, eid);
                }
                else{
                    var coords = address.split(",");
                    if(!coords[1]){
                        return;
                    }

                    var map = new GMap2(curMap);
                    var point = new GLatLng(coords[0], coords[1]);

                    map.setCenter(point, 13);
                    map.addControl(new GSmallMapControl());
                    map.addControl(new GMapTypeControl());

                    var marker = new GMarker(point);
                    map.addOverlay(marker);

                    /*var sv_container = document.getElementById("google_pano");
                    if(sv_container){
                        var myPano = new GStreetviewPanorama(sv_container);
                        GEvent.addListener(myPano, "error", handleNoFlash);
                        svOverlay = new GStreetviewOverlay( );
                        map.addOverlay(svOverlay);
                        GEvent.addListener(map, "click", function(overlay,latlng) {
                            sv_container.style.display = 'block';
                            myPano.setLocationAndPOV(latlng);
                        });
                    }*/

                    var sv_container = document.getElementById("google_pano");
                    if(sv_container){
                        panoClient = new GStreetviewClient();

                        GEvent.addListener(map, "click", function(overlay,latlng) {
                            panoClient.getNearestPanorama(latlng, showPanoData);
                        });

                        myPano = new GStreetviewPanorama(sv_container);
                        svOverlay = new GStreetviewOverlay( );
                        map.addOverlay(svOverlay);
                        myPano.setLocationAndPOV(point);
                        GEvent.addListener(myPano, "error", handleNoFlash);
                        panoClient.getNearestPanorama(point, showPanoData);

                    }

                    GEvent.addListener(marker, "click", function(overlay,latlng){
                        map.openInfoWindowHtml(point, "<div style=\"line-height: 1.2em; font-size: .9em\">" + info + "</div>");
                    });

                    marker.openInfoWindowHtml("<div style=\"line-height: 1.2em; font-size: .9em\">" + info + "</div>");

                }
            }
        }
    }
}

function markAddress(address, curMap, info, eid){
    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);

                var sv_container = document.getElementById("google_pano");
                if(sv_container){
                    panoClient = new GStreetviewClient();

                    GEvent.addListener(map, "click", function(overlay,latlng) {
                        panoClient.getNearestPanorama(latlng, showPanoData);
                    });

                    myPano = new GStreetviewPanorama(sv_container);
                    svOverlay = new GStreetviewOverlay( );
                    map.addOverlay(svOverlay);
                    myPano.setLocationAndPOV(point);
                    GEvent.addListener(myPano, "error", handleNoFlash);
                    panoClient.getNearestPanorama(point, showPanoData);

                }

                GEvent.addListener(marker, "click", function(overlay,latlng){
                    map.openInfoWindowHtml(point, "<div style=\"line-height: 1.2em; font-size: .9em\">" + info + "</div>");
                });

                marker.openInfoWindowHtml("<div style=\"line-height: 1.2em; font-size: .9em\">" + info + "</div>");

                var lat_long = new String(point);
                var lat_long = lat_long.replace(/\)|\(/g, '');
                var lat_longA = lat_long.split(/,/);

                var lat = lat_longA[0].replace(/^\s*|\s*$/, '');
                var lon = lat_longA[1].replace(/^\s*|\s*$/, '');;

                if(eid > 0){
                    b_xml.request('/ajax.php/type/set_coords/eid/' + eid + '/lat/' + lat + '/lon/' + lon);
                }
            }
        }
    );

}

var map;
var active_markers = new Array( );
var old_markers = new Array( );
var old_location = new String( );
var cur_id;
var prop_type;
var myPano;
var panoClient;
function loadMLSGoogleMap( ){
    mls_id = window.google_map_mls;
    mls_type = window.google_map_ptype;
    if(GBrowserIsCompatible( )) {
        var addr_obj = document.getElementById('map_addr');
        var lat_obj = document.getElementById('map_lat');
        var lng_obj = document.getElementById('map_lng');
        var msg_obj = document.getElementById('map_msg');
        var msg2_obj = document.getElementById('map_msg2');

        if(!addr_obj || !lat_obj || !lng_obj || !msg_obj || !msg2_obj){ return; }

        var address = addr_obj.innerHTML;

        var lat = lat_obj.innerHTML;
        var lon = lng_obj.innerHTML;

        var msg = unescape(msg_obj.innerHTML);
        msg = msg.replace(/\+/g, ' ');

        var msg2 = unescape(msg2_obj.innerHTML);
        msg2 = msg2.replace(/\+/g, ' ');

        var infoTabs = [new GInfoWindowTab("Address", msg), new GInfoWindowTab("Details", msg2)];

        var google_map_div = document.getElementById("map");
        var google_map_width = google_map_div.style.width.replace('px', '');
        var google_map_height = google_map_div.style.height.replace('px', '');

        map = new GMap2(google_map_div);

        var point = new GLatLng(lat, lon);

        var prev_zoom = getCookie('gmap_zoom');
        prev_zoom = parseInt(prev_zoom);
        if(prev_zoom > 0){
            map.setCenter(point, prev_zoom);
        }
        else{
            map.setCenter(point, 14);
        }

        map.addControl(new ExtLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new GScaleControl());
        map.setMapType(G_HYBRID_MAP);

        var cur_icon = new GIcon( );
        cur_icon.image = "/images/mls/mls_blue.png";
        cur_icon.iconSize = new GSize(18, 35);
        cur_icon.iconAnchor = new GPoint(9, 34);

        marker_options = { icon:cur_icon, zIndexProcess:markerZIndex };

        var marker = new GMarker(point, marker_options);
        marker.importance = 1;
        map.addOverlay(marker);

        var sv_container = document.getElementById("google_pano");
        if(sv_container){
            panoClient = new GStreetviewClient( );

            myPano = new GStreetviewPanorama(sv_container);
            svOverlay = new GStreetviewOverlay( );
            map.addOverlay(svOverlay);
            myPano.setLocationAndPOV(point);
            GEvent.addListener(myPano, "error", handleNoFlash);
        }

        GEvent.addListener(marker, "click", function( ){
            if(sv_container){
                panoClient.getNearestPanorama(point, showPanoData);
            }

            document.getElementById('endAddress').value = address;
            document.getElementById('endAddressDisp').innerHTML = address;

            map.openInfoWindowTabsHtml(point, infoTabs);
        });

        cur_id = mls_id;
        prop_type = mls_type;

        googleMapsMove( );
        GEvent.addListener(map, "moveend", googleMapsMove);
    }
    else{
        alert("Your browser does not support Google Maps, it is recommended you download Firefox from http://www.mozilla.com.");
    }
}

function markerZIndex(marker, b){
    return GOverlay.getZIndex(marker.getPoint( ).lat( )) + marker.importance * 1000000;
}

function googleMapsMove( ){
    var google_map_div = document.getElementById("map");
    var google_map_width = google_map_div.style.width.replace('px', '');
    var google_map_height = google_map_div.style.height.replace('px', '');

    var tl_corner_px = new GPoint(0, 0);
    var tl_corner_ll = map.fromContainerPixelToLatLng(tl_corner_px, true);

    var tl_corner_ll = new String(tl_corner_ll);
    var tl_corner_ll = tl_corner_ll.replace(/\)|\(/g, '');
    var tl_corner_ll = tl_corner_ll.replace(/\s+/, '');

    var br_corner_px = new GPoint(google_map_width  - 5, google_map_height - 5);
    var br_corner_ll = map.fromContainerPixelToLatLng(br_corner_px, true);

    var br_corner_ll = new String(br_corner_ll);
    var br_corner_ll = br_corner_ll.replace(/\)|\(/g, '');
    var br_corner_ll = br_corner_ll.replace(/\s+/, '');

    cur_zoom = map.getZoom( );
    setCookie('gmap_zoom', cur_zoom);
    if(old_location != ''){
        var old_tl_llA = old_location.split(',');
        var old_tl_lat = parseFloat(old_tl_llA[0]);
        var old_tl_lng = parseFloat(old_tl_llA[1]);

        var new_tl_llA = tl_corner_ll.split(',');
        var new_tl_lat = parseFloat(new_tl_llA[0]);
        var new_tl_lng = parseFloat(new_tl_llA[1]);

        //only refresh the markers if they've moved far enough
        //alert(cur_zoom);
        //alert(old_tl_llA);
        //alert(new_tl_llA);
        //alert(Math.abs(old_tl_lat - new_tl_lat));
        //alert(Math.abs(old_tl_lng - new_tl_lng));
        if(cur_zoom <= 7 && Math.abs(old_tl_lat - new_tl_lat) < .384 && Math.abs(old_tl_lng - new_tl_lng) < .384){
            return;
        }
        if(cur_zoom == 8 && Math.abs(old_tl_lat - new_tl_lat) < .192 && Math.abs(old_tl_lng - new_tl_lng) < .192){
            return;
        }
        if(cur_zoom == 9 && Math.abs(old_tl_lat - new_tl_lat) < .096 && Math.abs(old_tl_lng - new_tl_lng) < .096){
            return;
        }
        if(cur_zoom == 10 && Math.abs(old_tl_lat - new_tl_lat) < .048 && Math.abs(old_tl_lng - new_tl_lng) < .048){
            return;
        }
        if(cur_zoom == 11 && Math.abs(old_tl_lat - new_tl_lat) < .024 && Math.abs(old_tl_lng - new_tl_lng) < .024){
            return;
        }
        if(cur_zoom == 12 && Math.abs(old_tl_lat - new_tl_lat) < .012 && Math.abs(old_tl_lng - new_tl_lng) < .012){
            return;
        }
        if(cur_zoom == 13 && Math.abs(old_tl_lat - new_tl_lat) < .006 && Math.abs(old_tl_lng - new_tl_lng) < .006){
            return;
        }
        if(cur_zoom == 14 && Math.abs(old_tl_lat - new_tl_lat) < .003 && Math.abs(old_tl_lng - new_tl_lng) < .003){
            return;
        }
        if(cur_zoom == 15 && Math.abs(old_tl_lat - new_tl_lat) < .001 && Math.abs(old_tl_lng - new_tl_lng) < .001){
            return;
        }
        if(cur_zoom == 16 && Math.abs(old_tl_lat - new_tl_lat) < .0005 && Math.abs(old_tl_lng - new_tl_lng) < .0005){
            return;
        }
        if(cur_zoom == 17 && Math.abs(old_tl_lat - new_tl_lat) < .00025 && Math.abs(old_tl_lng - new_tl_lng) < .00025){
            return;
        }
        if(cur_zoom == 18 && Math.abs(old_tl_lat - new_tl_lat) < .00012 && Math.abs(old_tl_lng - new_tl_lng) < .00012){
            return;
        }
        if(cur_zoom == 19 && Math.abs(old_tl_lat - new_tl_lat) < .00006 && Math.abs(old_tl_lng - new_tl_lng) < .00006){
            return;
        }
    }

    old_location = tl_corner_ll;

    //alert("/get_markers.php?tl=" + tl_corner_ll + "&br=" + br_corner_ll);

    var request = GXmlHttp.create( );
    request.open("GET", "/get_markers.php?tl=" + tl_corner_ll + "&br=" + br_corner_ll + "&cz=" + cur_zoom + "&id=" + cur_id + "&pt=" + prop_type, true);
    request.onreadystatechange = function() {
        if(request.readyState == 4){
            document.getElementById('map_loader').style.display = 'none';
            var xmlDoc = GXml.parse(request.responseText);
            var markers = xmlDoc.documentElement.getElementsByTagName("marker");

            old_markers = active_markers;
            active_markers = new Array( );
            for(var i = 0; i < markers.length; i++){
                var lat = parseFloat(markers[i].getAttribute("lat"));
                var lng = parseFloat(markers[i].getAttribute("lng"));

                var point = new GLatLng(lat, lng);

                var tabs = markers[i].getElementsByTagName('tab');
                var tab1 = unescape(markers[i].getAttribute("tab1"));
                tab1 = tab1.replace(/\+/g, ' ');
                var tab2 = unescape(markers[i].getAttribute("tab2"));
                tab2 = tab2.replace(/\+/g, ' ');

                var address = unescape(markers[i].getAttribute("address"));
                address = address.replace(/\+/g, ' ');

                if(!old_markers[point]){
                    var t_marker = createMLSMarker(point, tab1, tab2, address);
                    active_markers[point] = t_marker;
                }
                else{
                    active_markers[point] = old_markers[point];
                }
            }

            for(var k in old_markers){
                if(!active_markers[k]){
                    map.removeOverlay(old_markers[k]);
                    old_markers[k] = false;
                }
            }
        }
        else{
            document.getElementById('map_loader').style.display = 'block';
        }
    }
    request.send(null);
}

function createMLSMarker(point, tab1, tab2, address){
    if(GBrowserIsCompatible( )) {
        var infoTabs = [new GInfoWindowTab("Address", tab1), new GInfoWindowTab("Details", tab2)];

        var icon = new GIcon( );
        icon.image = "/images/mls/mls_orange.png";
        icon.iconSize = new GSize(18, 35);
        icon.iconAnchor = new GPoint(9, 35);

        var marker = new GMarker(point, icon);
        map.addOverlay(marker);

        var sv_container = document.getElementById("google_pano");
        GEvent.addListener(marker, "click", function( ){
            map.openInfoWindowTabsHtml(point, infoTabs);

            document.getElementById('endAddress').value = address;
            document.getElementById('endAddressDisp').innerHTML = address;

            if(sv_container){
                panoClient.getNearestPanorama(point, showPanoData);
            }
        });

        return marker;
    }
    else{
        alert("Your browser does not support Google Maps, it is recommended you download Firefox from http://www.mozilla.com.");
        return false;
    }
}

function showPanoData(panoData) {
    if (panoData.code != 200) {
        //GLog.write('showPanoData: Server rejected with code: ' + panoData.code);
        return;
    }

    var sv_container = document.getElementById("google_pano");
    sv_container.style.display = 'block';

    myPano.setLocationAndPOV(panoData.location.latlng);
}

function handleNoFlash(errorCode){
    if(errorCode == 603){
        //alert("Error: Flash doesn't appear to be supported by your browser");
        return;
    }
}

/* END GOOGLE MAPS */

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; }
    return true;
}

//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( );
        initDirPhoneNumbers( );
        initInputButtons( );
    }
}

function disableButton(buttonID, msg){
   tButton = document.getElementById(buttonID);

   if(!tButton){
        return;
   }

   tButton.value = msg;
   tButton.style.color = "#606060";
   tButton.style.backgroundColor = "#C0C0C0";
   tButton.disabled = true;
}

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;
    }
}

function clearBilling( ){
    document.getElementById('saved_billing').value = 'new billing';
    document.getElementById('billing_name').value = '';

    var ccnum = document.getElementById('cc_num');
    if(ccnum.value.match(/\*/)){
        ccnum.value = '';
    }
}

function fillBilling(newVal){
    if(newVal == 'new billing'){
        if(document.getElementById('billing_name')){
            document.getElementById('billing_name').value = '';
        }

        document.getElementById('cc_name').value = '';
        document.getElementById('cc_num').value = '';
        document.getElementById('cc_mon').value = '';
        document.getElementById('cc_year').value = '';

        document.getElementById('billing_street').value = '';
        document.getElementById('billing_street2').value = '';
        document.getElementById('billing_city').value = '';
        document.getElementById('billing_state').value = '';
        document.getElementById('billing_zip').value = '';

        document.getElementById('save_billing').checked = '';
    }
    else{
        if(!billA[newVal]){
            return;
        }

        var thisBilling = billA[newVal];

        if(document.getElementById('billing_name')){
            document.getElementById('billing_name').value = thisBilling.billing_name;
        }

        if(thisBilling.cc_num){
            document.getElementById('cc_name').value = thisBilling.cc_name;
            document.getElementById('cc_num').value = thisBilling.cc_num;
            document.getElementById('cc_mon').value = thisBilling.cc_mon;
            document.getElementById('cc_year').value = thisBilling.cc_year;
        }
        else if(thisBilling.ach_account){
            document.getElementById('cc_name').value = '';
            document.getElementById('cc_num').value = '';
            document.getElementById('cc_mon').value = '';
            document.getElementById('cc_year').value = '';
        }

        document.getElementById('billing_street').value = thisBilling.billing_street;
        document.getElementById('billing_street2').value = thisBilling.billing_street2;
        document.getElementById('billing_city').value = thisBilling.billing_city;
        document.getElementById('billing_state').value = thisBilling.billing_state;
        document.getElementById('billing_zip').value = thisBilling.billing_zip;

        document.getElementById('save_billing').checked = 'checked';
    }
}

function fillCartBilling(newVal){
    var chkbox = document.getElementById('sameAsShipping');

    if(newVal == 'new card'){
        document.getElementById('billingName').value = '';
        document.getElementById('CCName').value = '';
        document.getElementById('CCNum').value = '';
        document.getElementById('expMonth').value = '';
        document.getElementById('expYear').value = '';
        document.getElementById('saveBilling').checked = '';

        if(!chkbox.checked){
            document.getElementById('bStreet1').value = '';
            document.getElementById('bStreet2').value = '';
            document.getElementById('bCity').value = '';
            document.getElementById('bState').value = '';
            document.getElementById('bZipCode').value = '';
            document.getElementById('bPhoneNumber').value = '';
        }

        updateCardImg( );
    }
    else{
        if(!billA[newVal]){
            return;
        }

        var thisBilling = billA[newVal];

        document.getElementById('billingName').value = thisBilling.billingName;
        document.getElementById('CCName').value = thisBilling.CCName;
        document.getElementById('CCNum').value = thisBilling.CCNum;
        document.getElementById('expMonth').value = thisBilling.expMonth;
        document.getElementById('expYear').value = thisBilling.expYear;
        document.getElementById('saveBilling').checked = 'checked';

        if(!chkbox.checked){
            document.getElementById('bStreet1').value = thisBilling.bStreet1;
            document.getElementById('bStreet2').value = thisBilling.bStreet2;
            document.getElementById('bCity').value = thisBilling.bCity;
            document.getElementById('bState').value = thisBilling.bState;
            document.getElementById('bZipCode').value = thisBilling.bZipCode;
            document.getElementById('bPhoneNumber').value = thisBilling.bPhoneNumber;
        }

        updateCardImg( );
    }
}

function setAttendeeInfo(new_val){
    if(new_val <= 0){
        document.getElementById('first_name').value = '';
        document.getElementById('last_name').value = '';
        document.getElementById('company_name').value = '';
        document.getElementById('street1').value = '';
        document.getElementById('street2').value = '';
        document.getElementById('city').value = '';
        document.getElementById('state').value = '';
        document.getElementById('zip').value = '';
        document.getElementById('email_address').value = '';
    }
    else{
        if(!attendeeA[new_val]){
            return;
        }

        var this_attendee = attendeeA[new_val];

        document.getElementById('first_name').value = this_attendee.first_name;
        document.getElementById('last_name').value = this_attendee.last_name;
        document.getElementById('company_name').value = this_attendee.company_name;
        document.getElementById('street1').value = this_attendee.street1;
        document.getElementById('street2').value = this_attendee.street2;
        document.getElementById('city').value = this_attendee.city;
        document.getElementById('state').value = this_attendee.state;
        document.getElementById('zip').value = this_attendee.zip;
        document.getElementById('email_address').value = this_attendee.email;
    }
}

function fillAddress(t_obj, pull_from, fill_to){
    if(!t_obj){ return; }

    if(t_obj.checked){
        var business_street1 = document.getElementById('Street1').value;
        var business_street2 = document.getElementById('Street2').value;
        var business_city = document.getElementById('City').value;
        var business_state = document.getElementById('State').value;
        var business_zip = document.getElementById('ZIP').value;

        var billing_street1 = document.getElementById('reg_street1').value;
        var billing_street2 = document.getElementById('reg_street2').value;
        var billing_city = document.getElementById('reg_city').value;
        var billing_state = document.getElementById('reg_state').value;
        var billing_zip = document.getElementById('reg_zip').value;

        if(pull_from == 'billing'){
            document.getElementById('reg_mailing_street1').value = billing_street1;
            document.getElementById('reg_mailing_street2').value = billing_street2;
            document.getElementById('reg_mailing_city').value = billing_city;
            document.getElementById('reg_mailing_state').value = billing_state;
            document.getElementById('reg_mailing_zip').value = billing_zip;
        }
        else if(pull_from == 'business' && fill_to == 'mailing'){
            document.getElementById('reg_mailing_street1').value = business_street1;
            document.getElementById('reg_mailing_street2').value = business_street2;
            document.getElementById('reg_mailing_city').value = business_city;
            document.getElementById('reg_mailing_state').value = business_state;
            document.getElementById('reg_mailing_zip').value = business_zip;
        }
        else if(pull_from == 'business' && fill_to == 'billing'){
            document.getElementById('reg_street1').value = business_street1;
            document.getElementById('reg_street2').value = business_street2;
            document.getElementById('reg_city').value = business_city;
            document.getElementById('reg_state').value = business_state;
            document.getElementById('reg_zip').value = business_zip;
        }
    }
    else if(fill_to == 'billing'){
        document.getElementById('reg_street1').value = '';
        document.getElementById('reg_street2').value = '';
        document.getElementById('reg_city').value = '';
        document.getElementById('reg_state').value = '';
        document.getElementById('reg_zip').value = '';
    }
    else if(fill_to == 'mailing'){
        document.getElementById('reg_mailing_street1').value = '';
        document.getElementById('reg_mailing_street2').value = '';
        document.getElementById('reg_mailing_city').value = '';
        document.getElementById('reg_mailing_state').value = '';
        document.getElementById('reg_mailing_zip').value = '';
    }
}

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' && window.is_ie && this.innerHTML == 'Reviews'){
                        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 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(/(\#.*)$/, '');

                if(newHREF.match(/\/members\//)){
                    newHREF = newHREF.replace(/(\/members\/)/, '/members/ajax.php');
                }
                else if(newHREF.match(/content/)){
                    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
        }
    }
}

function openLoginForm(hst){
    var referer = escape(window.location.href);

    var prot = 'http';
    if(window.location.href.match(/^https/)){
        prot = 'https';
    }
    var loginPopup = window.open("/members/login.php?prot=" + prot + "&referer=" + referer, "LoginForm", "width=325,height=325, scrollbars=1, status=yes, toolbar=no, resizable=yes");

    loginPopup.focus( );

    if(window.location.hostname != hst){
        var loc = window.location.href.replace(/^(https?\:\/\/[\w\d\-\.]+\/)/, '/');
        loc = 'https://' + hst + loc;
    }

    return true;
}

function submitComment(fieldID){
    var bgzFrame = document.getElementById('bgz');
    var hidField = document.getElementById(fieldID);
    var frameSrc = getDocHTML( );
    hidField.value = frameSrc;
}

function initListingGallery( ){
    var listing_gallery = document.getElementById('listing_gallery');
    var listing_gallery_image = document.getElementById('listing_gallery_image');

    if(!listing_gallery || !listing_gallery_image){ return; }

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

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

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 checkListingTextLength(numChars){
    ListingTextArea = document.getElementById('ListingTextArea');
    if(ListingTextArea.value.length >= numChars){
        ListingTextArea.value = ListingTextArea.value.substr(0, numChars);
    }
}

function disableBilling(t_obj){
    var event_form = document.getElementById('event_billing_form');
    var member_form = document.getElementById('member_signup_form');
    if(event_form){
        var d_flag = false;
        if(t_obj.checked){
            d_flag = true;
        }

        var event_form_len = event_form.elements.length;
        for(var i = 0; i < event_form_len; i++){
            if(event_form.elements[i] == t_obj || event_form.elements[i].type == 'submit' || event_form.elements[i].type == 'hidden'){
                continue;
            }

            event_form.elements[i].disabled = d_flag;
        }
    }
    else if(member_form){
        var d_flag = false;
        if(t_obj.checked){
            d_flag = true;
        }

        var member_form_len = member_form.elements.length;
        for(var i = 0; i < member_form_len; i++){
            if(member_form.elements[i] == t_obj || member_form.elements[i].id == 'reg_fee_override' || member_form.elements[i].type == 'submit' || member_form.elements[i].type == 'checkbox' || member_form.elements[i].type == 'hidden'){
                continue;
            }

            member_form.elements[i].disabled = d_flag;
        }
    }
}

//********************
//*******ARMLS********
//********************

function initMLSRecords( ){
    if(document.getElementsByTagName){
        var search_container = document.getElementById('search_mls');
        if(search_container){
            var search_link = document.getElementById('mls_search_link');
            //search_container.style.display = 'none';
            search_link.onclick = function( ){
                if(search_container.style.display == 'none'){
                    search_container.style.display = 'block';
                }
                else{
                    search_container.style.display = 'none';
                }

                return false;
            }
        }

        var tbls = document.getElementsByTagName('table');
        var tlen = tbls.length;

        mlsHashA = new Array( );
        //
        var mlsCookie = getCookie("vMLS");
        if(mlsCookie != ''){
            var mlsCA = mlsCookie.split(/\|/);
            var mlsCLen = mlsCA.length;

            //alert(mlsCLen);
            for(var i = 0; i < mlsCLen; i++){
                mlsHashA["-" + mlsCA[i] + "-"] = new Object;
                mlsHashA["-" + mlsCA[i] + "-"].num = mlsCA[i];
            }
        }
        //

        wl_mlsHashA = new Array( );
        //
        var mlsCookie = getCookie("wlMLS");
        if(mlsCookie != ''){
            var mlsCA = mlsCookie.split(/\|/);
            var mlsCLen = mlsCA.length;

            //alert(mlsCLen);
            for(var i = 0; i < mlsCLen; i++){
                wl_mlsHashA["++" + mlsCA[i] + "++"] = new Object;
                wl_mlsHashA["++" + mlsCA[i] + "++"].num = mlsCA[i];
            }
        }

        for(var i = 0; i < tlen; i++){
            var tbl = tbls[i];
            if(tbl.className != 'mls_show'){
                continue;
            }

            var trs = tbl.getElementsByTagName("tr");
            var len = trs.length;

            for(var j = 0; j < len; j++){
                var tr = trs[j];

                //
                var trID = tr.id;
                var idA = trID.split(/\-/);
                var mlsNum = idA[1];

                for(var m in mlsHashA){
                    mls = m.replace(/\-/g, '');
                    if(mlsNum == mls){
                        tr.className = "cellVisited";
                    }
                }
                //

                for(var m in wl_mlsHashA){
                    m = m.replace(/\+\+/g, '');
                    var mlsA = m.split(/\-/g);
                    //alert(m);

                    var mls = '';
                    if(mlsA[2]){
                        var mls = mlsA[2];
                        //alert(mls);
                    }

                    if(mlsNum == mls){
                        tr.className = "cellWishlist";
                    }
                }

                var tds = tr.getElementsByTagName("td");
                var tdlen = tds.length;

                for(var k = 0; k < tdlen; k++){
                    var td = tds[k];
                    if(tr.id != ''){

                        tr.onmouseover = function( ){
                            var tId = this.id;
                            this.classNameBak = this.className;
                            this.className = "cellOver";
                        }
                        tr.onmouseout = function( ){
                            this.className = this.classNameBak;
                        }
                        td.onclick = function( ){
                            //alert(this.className + " " + k);
                            if(this.className != 'mapLnk'){
                                //cid=489807&mlnum=1825375&ALLMLS=Y&class=2&themecolor=29048C&sTYPE=0&PUBLICID=
                                //http://www.har.com/search/idx/DispSearch.cfm?cid=489807&mlnum=2529844&ALLMLS=Y&class=2&themecolor=29048C&sTYPE=0&PUBLICID=
                                //http://www.har.com/search/idx/DispSearch.cfm?cid=489807&mlnum=1595059&ALLMLS=Y&class=2&themecolor=29048C&sTYPE=0&PUBLICID=


                                var trId = (this.parentNode.id);
                                //alert(trId);
                                var idA = trId.split(/\-/);

                                //
                                this.parentNode.classNameBak = "cellVisited";
                                this.parentNode.className = "cellVisited";
                                var mlsCookie = getCookie("vMLS");

                                setCookie("vMLS", mlsCookie + idA[1] + "|");
                                //

                                if(idA.length == 3){
                                    var t_type = idA[0].toLowerCase( );
                                    var t_id = idA[1];
                                    var t_class = null;

                                    //var lnk = "/mls/az/view_mls_" + t_type + ".php?mls=" + t_id;
                                    var lnk = "/text/view-arizona-mls-listing.html?propType=" + t_type + "&mls=" + t_id;

                                    mlsPopup(lnk);
                                }
                            }
                        }
                    }
                }
            }//end for each trs
        }//end foreach table
    }
}

function mlsPopup(lnk){
    if(!lnk){ return false; }

    var mlsPop = window.open(lnk, "mlsPopUp", "width=820,height=580,menubar=yes,toolbar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes");
    mlsPop.focus( );

    return false;
}

function mlsPopUp(loc, w, h, scrollB){
    if(!scrollB){
        scrollB = 0;
    }

    mlsPopUpWin = window.open(loc, "gpopup", "width=" + w + ",height=" + h + ", scrollbars=" + scrollB + ", status=no,toolbar=no,resizable=yes");
    mlsPopUpWin.focus( );
}

function changeMLSImg(imgIndex){
    var imgC = document.getElementById('imgMain');
    var imgD = document.getElementById('imgDesc');

    if(!imgC || !imgD || !imgA || !imgDescA){
        return;
    }

    imgC.src = imgA[imgIndex].src;
    imgD.innerHTML = imgDescA[imgIndex];
}

function changeGalleryImg(imgSrc, imgDesc){
    var imgC = document.getElementById('mainImage');
    var imgD = document.getElementById('mainImageDesc');

    if(!imgC || !imgD || !imgSrc){
        return;
    }

    imgC.getElementsByTagName('img')[0].src = imgSrc;
    imgD.innerHTML = imgDesc;
}

//***********************
//Google Map Properties *
//***********************

function getMap(mlsID, m_type){
    if(!m_type || m_type == ''){
        m_type = 'res';
    }

    var mapPopup = window.open('/mls/az/mls_map_' + m_type + '.php?id=' + mlsID + '&pt=' + m_type, "MLSMap", "width=600,height=500, menubar=no, location=no, scrollbars=yes, status=no,toolbar=no,resizable=yes");
    mapPopup.focus( );
}

//***************************
//END Google Map Properties *
//***************************

function add2Cart(thisA, pid, qty){
    if(!ajaxEnabled){ return true; }
    if(b_xml.isCurrentRequest){ return false; }

    //alert('/ajax.php/pid/' + pid + '/qty/' + qty + '/ctype/p/type/add2cart');
    b_xml.request('/ajax.php/pid/' + pid + '/qty/' + qty + '/ctype/p/type/add2cart');
    if(b_xml.isSupported){ return false; }
    return true;
}

function removeFromCart(thisA, ckey){
    if(!ajaxEnabled){ return true; }
    if(b_xml.isCurrentRequest){ return false; }

    var cartItems = getCookie('cartItems');

    //alert('/ajax.php/remove/1/ckey/' + ckey + '/type/remove/items/' + cartItems);
    b_xml.request('/ajax.php/remove/1/ckey/' + ckey + '/type/remove/items/' + cartItems);
    if(b_xml.isSupported){ return false; }
    return true;
}


function copyShipping(){
    var thisForm = document.getElementById('infoForm');
    var chkbox = document.getElementById('sameAsShipping');

    if(!chkbox){
        return;
    }

    if(chkbox.checked){
        //populate/update billing fields
        var sStreet1 = document.getElementById('sStreet1');
        var sStreet2 = document.getElementById('sStreet2');
        var sCity = document.getElementById('sCity');
        var sState = document.getElementById('sState');
        var sZipCode = document.getElementById('sZipCode');
        var sPhoneNumber = document.getElementById('sPhoneNumber');

        var bStreet1 = document.getElementById('bStreet1');
        var bStreet2 = document.getElementById('bStreet2');
        var bCity = document.getElementById('bCity');
        var bState = document.getElementById('bState');
        var bZipCode = document.getElementById('bZipCode');
        var bPhoneNumber = document.getElementById('bPhoneNumber');

        bStreet1.value = sStreet1.value;
        bStreet2.value = sStreet2.value;
        bCity.value = sCity.value;
        bState.value = sState.value;
        bZipCode.value = sZipCode.value;
        bPhoneNumber.value = sPhoneNumber.value;
    }
    else{
        var bStreet1 = document.getElementById('bStreet1');
        var bStreet2 = document.getElementById('bStreet2');
        var bCity = document.getElementById('bCity');
        var bState = document.getElementById('bState');
        var bZipCode = document.getElementById('bZipCode');
        var bPhoneNumber = document.getElementById('bPhoneNumber');

        //clear billing fields
        bStreet1.value = '';
        bStreet2.value = '';
        bCity.value = '';
        bState.value = '';
        bZipCode.value = '';
        bPhoneNumber.value = '';
    }
}

function updateBilling(srcVal, dest){
    var destId = document.getElementById(dest);
    var chkbox = document.getElementById('sameAsShipping');

    if(!chkbox){
        return;
    }

    if(chkbox.checked){
        destId.value = srcVal;
    }
}

function fillShipping(newVal){
    var chkbox = document.getElementById('sameAsShipping');

    if(newVal == 'new address'){
        document.getElementById('shippingName').value = '';
        document.getElementById('sFirstName').value = '';
        document.getElementById('sMiddleInitial').value = '';
        document.getElementById('sLastName').value = '';
        document.getElementById('sCompanyName').value = '';
        document.getElementById('sStreet1').value = '';
        document.getElementById('sStreet2').value = '';
        document.getElementById('sCity').value = '';
        document.getElementById('sState').value = '';
        document.getElementById('sZipCode').value = '';
        document.getElementById('sPhoneNumber').value = '';
        document.getElementById('sComments').value = '';
        document.getElementById('saveShipping').checked = '';

        if(chkbox.checked){
            document.getElementById('bStreet1').value = '';
            document.getElementById('bStreet2').value = '';
            document.getElementById('bCity').value = '';
            document.getElementById('bState').value = '';
            document.getElementById('bZipCode').value = '';
            document.getElementById('bPhoneNumber').value = '';
        }
    }
    else{
        if(!shipA[newVal]){
            return;
        }

        var thisShipping = shipA[newVal];

        document.getElementById('shippingName').value = thisShipping.shippingName;
        document.getElementById('sFirstName').value = thisShipping.sFirstName;
        document.getElementById('sMiddleInitial').value = thisShipping.sMiddleInitial;
        document.getElementById('sLastName').value = thisShipping.sLastName;
        document.getElementById('sCompanyName').value = thisShipping.sCompanyName;
        document.getElementById('sStreet1').value = thisShipping.sStreet1;
        document.getElementById('sStreet2').value = thisShipping.sStreet2;
        document.getElementById('sCity').value = thisShipping.sCity;
        document.getElementById('sState').value = thisShipping.sState;
        document.getElementById('sZipCode').value = thisShipping.sZipCode;
        document.getElementById('sPhoneNumber').value = thisShipping.sPhoneNumber;
        document.getElementById('sComments').value = thisShipping.sComments;
        document.getElementById('saveShipping').checked = 'checked';

        if(chkbox.checked){
            document.getElementById('bStreet1').value = thisShipping.sStreet1;
            document.getElementById('bStreet2').value = thisShipping.sStreet2;
            document.getElementById('bCity').value = thisShipping.sCity;
            document.getElementById('bState').value = thisShipping.sState;
            document.getElementById('bZipCode').value = thisShipping.sZipCode;
            document.getElementById('bPhoneNumber').value = thisShipping.sPhoneNumber;
        }
    }
}

function updateCardImg( ){
    var ccField = document.getElementById('CCNum');

    if(!ccField){
        return;
    }

    //add jcb and diners if and when supported
    var discover = document.getElementById('discCC');
    var mastercard = document.getElementById('masterCC');
    var visa = document.getElementById('visaCC');

    //does not accept amex
    //var amex = document.getElementById('amexCC');

    discover.src = "/images/discover_gray.gif";
    mastercard.src = "/images/mastercard_gray.gif";
    visa.src = "/images/visa_gray.gif";

    //does not accept amex
    //amex.src = "/images/amex_gray.gif";

    if(ccField.value == ''){
        return;
    }

    var ccnum = ccField.value;

    ccLen = ccnum.length;
    ccnum = ccnum.replace(/\*/g, '');
    //we have to base it off of the first digit and length because we don't know the rest of the #s
    if(ccnum.substr(0, 1) == 6 && ccLen == 16){
        discover.src = '/images/discover.gif';
    }
    else if(ccnum.substr(0, 1) == 5 && ccLen == 16){
        mastercard.src = '/images/mastercard.gif';
    }
    else if(ccnum.substr(0, 1) == 4 && (ccLen == 16 || ccLen == 13)){
        visa.src = '/images/visa.gif';
    }
    else if(ccnum.substr(0, 1) == 3 && ccLen == 15){
        amex.src = '/images/amex.gif';
    }
    else if((ccnum.substr(0, 1) == 3 && ccLen == 16) || (ccLen == 15 && (ccnum.substr(0, 4) == 2131 || ccnum.substr(0, 4) == 1800))){
        //jcb
    }
    else if(ccLen == 14 && ccnum.substr(0, 3) >= 300 && ccnum.substr(0, 3) <= 305){
        //diners 1
    }
    else if(ccLen == 14 && (ccnum.substr(0, 2) == 36 || ccnum.substr(0, 2) == 38)){
        //diners 2
    }


   /*
    if(ccnum.substr(0, 4) == 6011 && ccLen == 16){
        discover.src = '/images/discover.gif';
    }
    else if(ccnum.substr(0, 2)  && ccLen == 16){
        mastercard.src = '/images/mastercard.gif';
    }
    else if(ccnum.substr(0, 1) == 4 && (ccLen == 16 || ccLen == 13)){
        visa.src = '/images/visa.gif';
    }
    else if(ccnum.substr(0, 1) == 3 && ccLen == 15){
        amex.src = '/images/amex.gif';
    }
    else if((ccnum.substr(0, 1) == 3 && ccLen == 16) || (ccLen == 15 && (ccnum.substr(0, 4) == 2131 || ccnum.substr(0, 4) == 1800))){
        //jcb
    }
    else if(ccLen == 14 && ccnum.substr(0, 3) >= 300 && ccnum.substr(0, 3) <= 305){
        //diners 1
    }
    else if(ccLen == 14 && (ccnum.substr(0, 2) == 36 || ccnum.substr(0, 2) == 38)){
        //diners 2
    }
   */
}

function clearCartBilling( ){
    document.getElementById('savedBilling').value = 'new card';
    document.getElementById('billingName').value = '';

    var ccnum = document.getElementById('CCNum');
    if(ccnum.value.match(/\*/)){
        ccnum.value = '';
    }
}

function clearCartShipping( ){
    document.getElementById('savedShipping').value = 'new address';
    document.getElementById('shippingName').value = '';
}

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;
}