/* ##########################################################################
    Copyright 2005 BBB Systems, LLC, All rights reserved

    We don't mind if you learn from our scripts, or even use portions of
    them, but please be tactful and ethical.  If you find our scripts
    useful, let us know, we would like to hear from you.
    (www.bbbsystems.net has a contact form)

    AJAX Note:
    We got much of our information for fixing the broken back button here:
    http://www.contentwithstyle.co.uk/Articles/38/

########################################################################## */

if(!window.ajaxEnabled){
    ajaxEnabled = false;
}

var ajaxURL = window.location.href;

/*
var plusImg = new Image( );
plusImg.src = "/images/plus.gif";
var minusImg = new Image( );
minusImg.src = "/images/minus.gif";
*/
var sGlobals = new Object( );
sGlobals.bScrollAmount = 20;
sGlobals.slowScroll = 75;
sGlobals.fastScroll = 15;
sGlobals.isScrollingR = false;
sGlobals.isScrollingL = false;

var navHistory = new Array( );
var curNavPoint = -1;

var globals = new Array( );

var currentLocation = '';

var recursionCount = 0;//this is so we can better test recursive funtions.

var fieldLen = 0;//personalizedProduct
var infoBox = false;
//detect safari
//In my opinion, safari isn't quit up to speed with the other modern browsers,
//although I hate to have safari hacks, I think it's a necessity in this
//application.  Hopefully they will patch most of their bugs in the future.
var is_safari = (document.childNodes)&&(!document.all)&&(!navigator.taintEnabled)&&(!navigator.accentColorName)?true:false;

if(imgRotatorThinking == undefined){
    var imgRotatorThinking = false;
}

var run_init_prod_cnt = 0;

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);
    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( ); }
}

var productInitRun = false;
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.
    }
    //force ie < 6 to fail (we can't support ie5 forever)
    document.getElementsByTagName("a")[0].style.cursor = 'pointer';

    if(window.ajaxEnabled){
        ajaxCheck( );
    }
    else{
        window.ajaxEnabled = false;
        window.b_xml = false;
    }
    if(window.limitedAjax != true){
        window.limitedAjax = false;
    }

    initTopMenuLinks( );
    //initLeftMenuLinks( ); //but there is a left menu! uh... no there isn't uh... yes there is
    initA( );
    initAppObjects( );
    initObjects( );

    appThink( );

    updateCardImg( );

    initProduct( );

    editableEnabled = false;

    try{
        editorInit( );
    }
    catch(e){

    }

    initInputButtons( );
}

var forceProductInit = false;
function xmlInit( ){
    initA( );
    initAppObjects( );
    initObjects( );

    if(!productInitRun){
        forceProductInit = true;
    }
    initProduct( );

    editableEnabled = false;
    try{
        editorInit( );
    }
    catch(e){

    }

    initInputButtons( );
}

function initInputButtons( ){
    var inputs = document.getElementsByTagName("input");
    var inputsA = new Array( );

    //this is a necessary evil for what we are doing with the inputs.
    for(var i = 0; i < inputs.length; i++){
        inputsA[i] = inputs[i];
    }

    for(var i = 0; i < inputsA.length; i++){
        if((inputsA[i].type == "submit" || inputsA[i].type == "reset" || inputsA[i].type == "button") && inputsA[i].className == "button"){
            if(document.all && window.createPopup){
                //newBtn.style.width = newBtn.getElementsByTagName('table')[0].offsetWidth + 'px';
                inputsA[i].onmouseover = function( ){
                    this.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=80)";
                }

                inputsA[i].onmouseout = function( ){
                    this.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=100)";
                }
            }
        }
    }
}



function initA( ){
    if(!document.getElementsByTagName){
        return;
    }

    var as = document.getElementsByTagName("a");
    for(var i = 0; i < as.length; i++){

        if(as[i].parentNode.id != ''){
            if(as[i].parentNode.id == 'bLeftArrow' || as[i].parentNode.id == 'bRightArrow'){

                //safari hack (it doesn't how to handle links with display block w/height: 100%)
                if(as[i].clientHeight == 0 && as[i].parentNode.clientHeight > 0){
                    as[i].style.height = as[i].parentNode.clientHeight + 'px';
                }

                as[i].onclick = function( ){
                    return false;
                }
                continue;
            }
        }

        var hostnm = as[i].href.replace(/http(s)?\:\/\//, "");
        hostnm = hostnm.replace(/\/.*/, "");

        if((hostnm != window.location.hostname && hostnm != '') || as[i].href.match(/\/ad\.\php\?/)){
            as[i].target = "_blank";
            continue;
        }

        if(ajaxEnabled && as[i].className != "noAJAX" && !as[i].href.match(/\/members\//) && !as[i].href.match(/feed\.php/)){
            if(b_xml){
                if( as[i].href.match(/(\#)$/) ){
                    continue;
                }

                as[i].onclick = aMenuAClick;
            }
        }
    }//end for
}

function aMenuAClick( ){

    if(b_xml.isCurrentRequest){
        return false;
    }

    //we need the protocol
    hostnm = window.location.hostname;

    var newHREF = this.href;

    newHREF = newHREF.replace(/^(http(s)?\:\/\/)([^\/]+)/, '');
    newHREF = newHREF.replace(/(\/\#)/, '');
    newHREF = newHREF.replace(/([\&\?]*refer\=.*)$/, '');

    this.href = '/#' + newHREF;

    if(document.all && window.ieHistoryHack != undefined){
        //add the anchor for our happy ie hack
        ieHistoryHack.src = '/iehack.php?' + newHREF.replace(/^(\/\#)/, '');
        ieHistoryHack.window.location = ieHistoryHack.src
    }

    currentLocation = newHREF;

    if(newHREF.match(/\?/)){
        newHREF += "&xmlOnly=1";
    }
    else{
        newHREF += "?xmlOnly=1";
    }

    //safari hack
    if(is_safari){
        //fakeHistory gets initialized by safari
        var tlen = window.history.length + 1;
        if(window.fakeHistory == undefined){
            window.fakeHistory = new Array( );
        }

        window.fakeHistory[tlen] = newHREF;
    }

    var tmenu = document.getElementById('tmenu');
    var tmenu_a = tmenu.getElementsByTagName('a');

    for(var i = 0; i < tmenu_a.length; i++){
        tmenu_a[i].className = '';
    }

    if(this.parentNode.parentNode){
        if(this.parentNode.parentNode.id == 'tmenu'){
            this.className = 'ta_cur';
        }
    }

    var tHREF = window.location.href.replace(/^(http(s)?\:\/\/)([^\/]+)/, '');
    //if(tHREF.match(/^\/\#/)){
        b_xml.request(newHREF);
    //}

    if(b_xml.isSupported){
        return true;
    }

    return true;
}

function initObjects( ){

    var objects = document.getElementsByTagName("div");
    var len = objects.length;

    var tLoc = window.location.href;

    var prot = 'http';
    if(document.all && tLoc.match(/^https/)){
        prot = 'https';
    }

    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="' + prot + '://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="' + prot + '://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="' + prot + '://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" ';
                    }
                    else{
                        embedStr += ' pluginspage="' + prot + '://www.apple.com/quicktime/download/" ';
                        objStr += ' classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" ';
                        objStr += ' codebase="' + prot + '://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';

                        if(document.all){
                            //for some reason flash transparency is screwing up on this site,
                            //if we ever figure it out, delete this code
                            //seems to work now *shrug* - hobbit
                            //continue;
                        }
                    }

                    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';
            obj.style.display = 'block';

        }//end if bgzobject
    }//end foreach object

}

function bScrollLeft( ){
    if(sGlobals.isScrollingL){
        bottomBaseScroll(-1 * sGlobals.bScrollAmount);
        setTimeout('bScrollLeft( );', sGlobals.scrollTime);
    }
}

function bScrollRight( ){
    if(sGlobals.isScrollingR){
        bottomBaseScroll(sGlobals.bScrollAmount);
        setTimeout('bScrollRight( );', sGlobals.scrollTime);
    }
}

function initAppObjects( ){
    var bBaseGallery = document.getElementById('bBaseGallery');
    var bbc = document.getElementById('prodScroll');

    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( ){
        sGlobals.isScrollingL = true;
        sGlobals.scrollTime = sGlobals.slowScroll;
        bScrollLeft( );
    }
    bLeftArrow.onmouseout = function( ){
        sGlobals.isScrollingL = false;
        sGlobals.scrollTime = sGlobals.slowScroll;
    }
    bLeftArrow.onmousedown = function( ){
        if(is_safari){
            return false;
        }
        sGlobals.isScrollingL = true;
        sGlobals.scrollTime = sGlobals.fastScroll;
    }
    bLeftArrow.onmouseup = function( ){
        if(is_safari){
            return false;
        }
        sGlobals.isScrollingL = true;
        sGlobals.scrollTime = sGlobals.slowScroll;
        return false;
    }
    bLeftArrow.onclick = function( ){ return false }


    bRightArrow.onmouseover = function( ){
        sGlobals.isScrollingR = true;
        sGlobals.scrollTime = sGlobals.slowScroll;
        bScrollRight( );
    }
    bRightArrow.onmouseout = function( ){
        sGlobals.isScrollingR = false;
        sGlobals.scrollTime = sGlobals.slowScroll;
    }
    bRightArrow.onmousedown = function( ){
        if(is_safari){
            return false;
        }
        sGlobals.isScrollingR = true;
        sGlobals.scrollTime = sGlobals.fastScroll;
    }
    bRightArrow.onmouseup = function( ){
        if(is_safari){
            return false;
        }

        sGlobals.isScrollingR = true;
        sGlobals.scrollTime = sGlobals.slowScroll;
        return false;
    }
    bRightArrow.onclick = function( ){ return false }


    //gallery caption box, onclick/contextmenu on the image will open it, click x will close it
    var gDisplayCloseBox = document.getElementById('gDisplayCloseBox');
    var gDisplayImage = document.getElementById('gDisplayImage');

    var gDisplayImageCaption = document.getElementById('gDisplayImageCaption');

    if(gDisplayImageCaption && gDisplayCloseBox && gDisplayImage){

        gDisplayImageCaption.style.opacity = '.65';
        if(document.all){
            gDisplayImageCaption.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=65)";
        }

        gDisplayImage.onclick = function( ){
            globals['dImageDir'] = 1;
            captionBoxRun( );
            return false;
        }
        gDisplayCloseBox.onclick = function( ){
            globals['dImageDir'] = -1;
            captionBoxRun( );
            return false;
        }
    }

    var navBack = document.getElementById('navBack');
    var navForward = document.getElementById('navForward');
    if(navBack && navForward && navHistory){
        if(curNavPoint == 0){ navBack.className = "navBackDisabled"; }
        else{ navBack.className = "navBack"; }

        if(curNavPoint == navHistory.length - 1){ navForward.className = "navForwardDisabled"; }
        else{ navForward.className = "navForward"; }
    }

    //init the thumbnails in bottom base: not needed here
    /*var aS = bbc.getElementsByTagName('a');
    var span1, span2, span3;

    for(i = 0; i < aS.length; i++){
        span1 = document.createElement('span');
        span1.className = 'tpMiddle';
        span2 = document.createElement('span');
        span2.className = 'tpLeft';
        span3 = document.createElement('span');
        span3.className = 'tpRight';

        if(document.insertAdjacentElement){
            aS[i].insertAdjacentElement("beforeEnd", span1);
            aS[i].insertAdjacentElement("beforeEnd", span2);
            aS[i].insertAdjacentElement("beforeEnd", span3);
        }
        else{
            aS[i].appendChild(span1);
            aS[i].appendChild(span2);
            aS[i].appendChild(span3);
        }
    }*/

}

function captionBoxRun( ){
    var gDisplayImageCaption = document.getElementById('gDisplayImageCaption');
    var alpha = parseInt(gDisplayImageCaption.style.opacity * 100)

    if(alpha > 0 && globals['dImageDir'] < 0){
        var newAlpha = alpha - 5;
        gDisplayImageCaption.style.opacity = (newAlpha)/100;

        if(document.all){
            gDisplayImageCaption.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + newAlpha + ")";
        }
        setTimeout('captionBoxRun( )', 50);
    }
    else if(alpha < 65 && globals['dImageDir'] > 0){
        var newAlpha = alpha + 5;
        gDisplayImageCaption.style.opacity = (newAlpha)/100;

         gDisplayImageCaption.style.display = 'block';

        if(document.all){
            gDisplayImageCaption.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + newAlpha + ")";
        }
        setTimeout('captionBoxRun( )', 50);
    }
    else if(alpha <= 0){
        gDisplayImageCaption.style.display = 'none';
    }
}

function initImgRotator( ){
    var jsIR = document.getElementById('jsImgRotate');
    if(!jsIR || !imgRotatorA){
        return;
    }

    jsIR.innerHTML = "";
    jsIR.curImg = -1;
    jsIR.lastImg = null;

    for(var i = 0; i < imgRotatorA.length; i++){
        var iObj = imgRotatorA[i];
        var gid = iObj.gid;
        var imgName = iObj.imgName;
        var pid = iObj.pid;
        var fullImg = iObj.fullImg;

        var img = document.createElement('img');

        img.srcStr = imgName;
        img.src = "/uimages/" + imgName

        img.gid = gid;
        img.pid = pid;
        img.fullImg = fullImg;

        img.className = 'noAJAX';

        jsIR.appendChild(img);

        if(img.complete == null){
            //safari needs to fix these little issues.
            img.complete = true;
            img.style.width = "290px";
            img.style.height = "200px";
        }

        img.style.opacity = 0;
        if(document.all){
            img.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=0)";
        }

        img.onclick = function( ){
            var anch = this.srcStr.replace(/\./, "_");

            var gHREF = "/content/?gid=" + this.gid + "&img=" + this.fullImg;

            if(ajaxEnabled){
                gHREF += "&xmlOnly=1";
                b_xml.request(gHREF);
            }
            else{
                window.location = gHREF;
            }
        }
    }

    if(!imgRotatorThinking){
        imgRotatorThinking = true;
        imgRotatorThink( );
    }
}

function imgRotatorThink( ){
    var jsIR = document.getElementById('jsImgRotate');

    if(!jsIR || !imgRotatorA){
        return;
    }

    //alert("cur" + jsIR.curImg);
    //alert("last" + jsIR.lastImg);
    //alert(jsIR.innerHTML);
    if(jsIR.curImg >= 0){
        jsIR.lastImg = jsIR.curImg;
    }
    jsIR.curImg++;
    if(jsIR.curImg >= imgRotatorA.length){
        jsIR.curImg = 0;
    }

    var jsImages = jsIR.getElementsByTagName('img');
    var curImgObj = jsImages[jsIR.curImg];

    if(!curImgObj){
        return;
    }

    if(curImgObj.complete){
        curImgObj.style.opacity = 0;
        if(document.all){
            curImgObj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=0)";
        }
        curImgObj.style.visibility = 'visible';
        //alert('initchange');
        imgRotatorChange( );
    }
    else{
       imgRotatorWait( );
    }
}

function imgRotatorChange( ){
    var jsIR = document.getElementById('jsImgRotate');
    if(!jsIR || jsIR == null){
        return;
    }

    var jsImages = jsIR.getElementsByTagName('img');

    if(jsIR.curImg < 0){
        jsIR.curImg = 0;
    }

    var curImgObj = jsImages[jsIR.curImg];
    var lastImgObj = null;

    if(!curImgObj){
        return;
    }

    if(jsIR.lastImg >= 0){
        lastImgObj = jsImages[jsIR.lastImg];
    }

    var alphaInc = 5;
    var speed = 80;

    var curAlpha = parseInt(curImgObj.style.opacity * 100);
    var newAlpha = curAlpha + alphaInc;

    if(newAlpha >= 100){
        newAlpha = 100;
    }

    curImgObj.style.opacity = newAlpha / 100;

    if(document.all){
        curImgObj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + newAlpha + ")";
    }

    if(lastImgObj){
        var lastAlpha = parseInt(lastImgObj.style.opacity * 100);
        var newLastAlpha = lastAlpha - alphaInc;

        if(lastAlpha <= 0){
            newLastAlpha = 0;
            lastImgObj.style.visibility = "hidden";
        }
        lastImgObj.style.opacity = newLastAlpha / 100;
        if(document.all){
            lastImgObj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + newLastAlpha + ")";
        }
    }

    if(newAlpha >= 100){
        if(lastImgObj){
            lastImgObj.style.visibility = "hidden";
        }
        //alert('think');
        imgRotatorThinking = true;
        setTimeout('imgRotatorThink( )', 3000);
    }
    else{
        setTimeout('imgRotatorChange( )', speed);
    }
}
function imgRotatorWait( ){
    var jsIR = document.getElementById('jsImgRotate');
    var jsImages = jsIR.getElementsByTagName('img');
    var curImgObj = jsImages[jsIR.curImg];
    var lastImgObj = jsImages[jsIR.lastImg];

    if(!curImgObj){
       return;
    }

    if(curImgObj.complete){
        curImgObj.style.opacity = 0;
        if(document.all){
            curImgObj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=0)";
        }
        curImgObj.style.visibility = 'visible';

        imgRotatorChange( );
    }
    else{
       setTimeout('imgRotatorWait( )', 50);
    }
}


function appThink( ){
    if(document.getElementById('prodScrollC')){
        var bbc = document.getElementById('prodScroll');

        var bLeftArrow = document.getElementById('bLeftArrow');
        var bRightArrow = document.getElementById('bRightArrow');

        //alert(bbc.offsetWidth);
        //alert(bbc.clientWidth);
        //alert(bbc.scrollWidth);
//*
        if(bbc.clientWidth < bbc.scrollWidth && bRightArrow.style.display != 'block'){
            bLeftArrow.style.display = "block";
            bRightArrow.style.display = "block";

            bLeftArrow.style.opacity = 1;
            bRightArrow.style.opacity = 1;
        }
        else if(bbc.clientWidth >= bbc.scrollWidth){
            bLeftArrow.style.display = "none";
            bRightArrow.style.display = "none";
            bbc.scrollLeft = 0;
        }
        else if(bbc.scrollWidth < bbc.scrollLeft){
            bbc.scrollLeft = 0;
        }

        //else if(bbc.style.left != "0px"){
        //    bbc.style.left = "0px";
        //}
// */
    }

    //from here down is all specificly ajax stuff

    if(ajaxEnabled && !window.limitedAjax){

        var newHREF = window.location.href;

        //the big ieHack, this is sick, don't try this at home
        var didIE = false;
        var windowHREF = newHREF;//another piece of the ie hack
        //and the all new Safari hack, w00t

        if(is_safari){
            var tlen = window.history.length;
            if(window.cHistoryLength == undefined){
                window.cHistoryLength = tlen;
                window.fakeHistory = new Array( );

                var sfh = getCookie('safariFakeHistory');
                var sfhl = getCookie('safariFakeHistoryLength');

                if(sfh && sfhl == tlen){
                    //Only for refreshing, it will bug up otherwise, not much we can do about it though
                    window.fakeHistory = sfh.split("|");
                }
                else{
                    //back will no longer work at this point, fair sacrifice though
                    window.fakeHistory[tlen] = window.location.href;
                }
            }

            if(window.cHistoryLength != tlen){
                if(window.fakeHistory[tlen] != undefined && tlen != window.cHistoryLength){
                    newHREF = window.fakeHistory[tlen];
                }
                window.cHistoryLength = window.history.length;
                window.fakeHistory[tlen] = newHREF;

                var cookStr = '';
                for(var i = 0; i < window.fakeHistory.length; i++){
                    cookStr += window.fakeHistory[i] + '|';
                }
                setcookie('safariFakeHistory', cookStr);
                setcookie('safariFakeHistoryLength', tlen);
            }
            else{
                newHREF = window.fakeHistory[tlen];
            }
        }
        else if((window.isNewIE || window.isOldIE) && ieHistoryHack.document && ieHistoryHack.document.body && ieHistoryHack.document.body.innerHTML != ''){
            windowHREF = windowHREF.replace(/^(http(s)?\:\/\/)([^\/]+)/, '');
            windowHREF = windowHREF.replace(/(\/\#)/, '');

            //if(ieHistoryHack.document.body.innerHTML != '/'){
                newHREF = ieHistoryHack.document.body.innerHTML;
                //alert(ieHistoryHack.document.body.innerHTML);
                //alert(document.getElementById('ieHistoryHack').contentWindow.document.body.innerHTML);
                didIE = true;
            //}
        }
        newHREF = newHREF.replace(/^(http(s)?\:\/\/)([^\/]+)/, '');

        var tHREF = newHREF;

        newHREF = newHREF.replace(/(\/\#)/, '');

    /*
        //debug information... pick an id, any id (it beats infinite alerts).
        var tvar = newHREF + ' - ' + currentLocation + '<br />hash: ' + window.location.hash + '<br />location: ' + window.location + '<br />doc-location:' + document.location;
        tvar += '<br />' + window.history.length;
        document.getElementById('bbb').innerHTML = tvar;
    */

        entityNewHREF = newHREF.replace(/&amp;/, '&');
        //alert(entityNewHREF);

        if(newHREF != '' && ( tHREF.match(/^\/#/) || tHREF == '/' || currentLocation == '' || (currentLocation != newHREF && currentLocation != entityNewHREF)) ){

            //if(recursionCount < 5){
            //    alert(newHREF + ' - ' + currentLocation + ' - ' + windowHREF);
            //    recursionCount++;
            //}

            //check to see if the location has changed
            if(newHREF != currentLocation && !b_xml.isCurrentRequest && window.location.protocol.toLowerCase( ) != 'https'){
                if(document.all && didIE){
                    //update the location in the address bar to complete the ie hack
                    var ieURL = '/';
                    if(newHREF != windowHREF){
                        ieURL = '/#' + newHREF;
                        if(newHREF == '/'){
                            window.location.href = '/';
                        }
                        else{
                            window.location.href = ieURL;
                        }
                    }
                }

                currentLocation = newHREF;
                //if(recursionCount < 5){
                //    alert(newHREF + ' - ' + currentLocation + ' - ' + windowHREF);
                //    recursionCount++;
                //}


                if(newHREF.match(/\?/)){
                    newHREF += "&xmlOnly=1";
                }
                else{
                    newHREF += "?xmlOnly=1";
                }
                b_xml.request(newHREF);
            }
        }
    }//End if ajaxEnabled

    //make the program think every 10th of a second
    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('prodScroll');
    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);
    if(!e){
        e = window.event;
    }
    //alert(e.wheelDelta);
    if(e.wheelDelta){
        var direction = e.wheelDelta / 40;
        if(!window.opera){
            direction = -1 * direction;
        }
    }
    else if(e.detail){
        var direction = e.detail;
    }
    //alert(direction);

    if(direction < 0){
        bottomBaseScroll(-1 * sGlobals.bScrollAmount * 2);
    }
    else{
        bottomBaseScroll(sGlobals.bScrollAmount * 2);
    }

    if(window.event){
        e.returnValue = true;
        e.cancelBubble = true;
    }
    else{
        e.stopPropagation( );
        e.preventDefault( );
    }
}

//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 generalPopUp2(loc, w, h){
    gPopUp = window.open(loc, "gpopup", "width=" + w + ",height=" + h + ", scrollbars=1, status=no,toolbar=no,resizable=yes,menubar=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 openUploader( ){
    var imgSelectPopUp = window.open("./imageselect.php", "ImageSelector", "width=780,height=680, 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=680, scrollbars=0, status=no,toolbar=no,resizable=no");
    imgSelectPopUp.focus( );
}

function openFUploader( ){
    var imgSelectPopUp = window.open("./fileselect.php", "FileSelector", "width=780,height=680, 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 hmenu = document.getElementById('tmenu');
    if(!hmenu){ return; }
    var liA = hmenu.getElementsByTagName('td')
    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, 'down');
            }
        }
        else{
            li.onmouseover = pageON;
            li.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.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){
    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 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 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 priceChk(rID, rClass, poiID, poiClass, poiPrice, newImg){
    var poiID = document.getElementById(poiID);
    var poiSpan = poiID.getElementsByTagName("span");
    var mainPrice = poiPrice;

    //update subtotal
    var radioID = document.getElementById(rID);
    var oldTotal = document.getElementById("total_price").innerHTML;
    var diff = poiSpan[0].innerHTML.replace(/\$/, "");

    var newTotal = parseFloat(oldTotal) + parseFloat(diff);
    var newTotal = newTotal.toFixed(2);
    document.getElementById("total_price").innerHTML = newTotal;

    inputs = document.getElementsByTagName("input");
    for(var z = 0; z < inputs.length; z++){
        var tmpin = inputs[z];
        if(tmpin.className == rClass){
            if(tmpin.id != radioID.id){
                //enable radio where it needs to be
                tmpin.disabled = false;
            }
            else{
                //disable radio so they can't keep clicking on it
                radioID.disabled = true;
            }
        }
    }
    spans = document.getElementsByTagName("span");
    for(var j = 0; j < spans.length; j++){
        var pois = spans[j];
        if(pois.className == poiClass){
            if(pois.id != poiID.id){
                //make sure everything is visibile where it needs to be
                pois.style.visibility = "visible";
                poiprices = pois.getElementsByTagName("span");

                for(var k = 0; k < poiprices.length; k++){
                    var prices = poiprices[k];
                    var pricesC = prices.className;

                    var otherPrice = pricesC.replace(/poi\_/, "");
                    var otherPrice = otherPrice.replace(/\_/, ".");

                    var totalp = otherPrice - mainPrice;
                    var total = totalp.toFixed(2);

                    if(total.match(/\-/)){
                        prices.innerHTML = total.replace(/\-/, "-$");
                    }
                    else{
                        //update prices
                        prices.innerHTML = "+$" + total;
                    }
                }
            }
            else{
                //hide the price
                poiID.style.visibility = "hidden";
            }
        }
    }

    if(newImg){
        var rcl1 = rClass.replace(/po/, "");
        var tmpid = rcl1.replace(/_radio/, "");
        var imgid = "img_" + tmpid;
        var img = document.getElementById(imgid);
        img.src = newImg;
    }
}

function setcookie(cookieName,cookieValue){
    //sets a cookie that expires at the end of the session
    document.cookie = cookieName + "=" + escape(cookieValue) + ";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 loadGoogleMaps( ){
    if(GBrowserIsCompatible( )){
        maps = document.getElementsByTagName("div");

        for(var i = 0; i < maps.length; i++){
            var curMap = maps[i];
            if(curMap.id == "googleMap"){
                var coords = curMap.innerHTML;

                if(coords.match(/address\:/g)){
                    var address = coords.replace(/address\:/, '');
                    markAddress(address, curMap);
                }
                else{
                    coords = coords.split(",");
                    if(!coords[1]){
                        return;
                    }

                    var lat = coords[0].replace(/\s/g, '');
                    var lng = coords[1].replace(/\s/g, '');

                    var map = new GMap2(curMap);
                    var point = new GLatLng(lat, lng);

                    map.setCenter(point, 14);
                    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 marker = new GMarker(point);
                    map.addOverlay(marker);
                }
            }
        }
    }
}

function markAddress(address, curMap){
    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);
                marker.openInfoWindowHtml("<div style=\"line-height: 1.2em; font-size: .9em\">The Law Office of James E. Novak<br />4500 South Lakeshore Drive<br />Tempe, Arizona 85282</div>");
            }
        }
    );

}

function popupDirections( ){
    var dirDiv = document.getElementById('drivingDirections');
    var dirA = document.getElementById('ddAddress');

    if(!dirDiv || !dirA){
        return;
    }

    var winLoc = dirA.getAttribute('href')

    drivingDirections = window.open(winLoc, "DrivingDirections", "menubar=yes,scrollbars=1,status=yes,toolbar=yes,resizable=yes");
    drivingDirections.focus( );
}

function checkShippingInfo() {
	var check_box = document.form.sSameAsBilling;
	if (check_box.checked) {
		document.form.sStreet1.disabled = true;
		document.form.sStreet2.disabled = true;
		document.form.sCity.disabled = true;
		document.form.sState.disabled = true;
		document.form.sZIP.disabled = true;
		document.form.sStreet1.style.backgroundColor = "#FAFAFA";
		document.form.sStreet2.style.backgroundColor = "#FAFAFA";
		document.form.sCity.style.backgroundColor = "#FAFAFA";
		document.form.sState.style.backgroundColor = "#FAFAFA";
		document.form.sZIP.style.backgroundColor = "#FAFAFA";
	}
	else {
		document.form.sStreet1.disabled = false;
		document.form.sStreet2.disabled = false;
		document.form.sCity.disabled = false;
		document.form.sState.disabled = false;
		document.form.sZIP.disabled = false;
		document.form.sStreet1.style.backgroundColor = "";
		document.form.sStreet2.style.backgroundColor = "";
		document.form.sCity.style.backgroundColor = "";
	    document.form.sState.style.backgroundColor = "";
		document.form.sZIP.style.backgroundColor = "";
    }
}

function personalizedProduct(inputField, optionCost, charCost, maxChar){
    var diff = 0;

    //alert("fieldLen " + fieldLen);
    //alert("inputField " + inputField.value.length);
    if(fieldLen > inputField.value.length){
        diff = (inputField.value.length - fieldLen) * charCost;

        if(inputField.value.length <= 0 && optionCost != 0){
            diff = diff - optionCost;
        }
    }
    else if(fieldLen < inputField.value.length){
        diff = (inputField.value.length - fieldLen) * charCost;

        if((inputField.value.length == 1 || (fieldLen == 0 && inputField.value.length > 0)) && optionCost != 0){
            diff = diff + optionCost;
        }
    }

    //alert(diff);

    fieldLen = inputField.value.length;

    var inputVal = inputField.value;
    if(inputVal.length > maxChar){
        inputField.value = inputVal.substring(0, maxChar);
    }
    else if(inputVal != "" || (inputVal == "" && diff != 0)){

        var oldTotal = document.getElementById("total_price").innerHTML;

        var newTotal = parseFloat(oldTotal) + parseFloat(diff);
        var newTotal = newTotal.toFixed(2);
        document.getElementById("total_price").innerHTML = newTotal;
    }

}
function loadGalleryImage(gID, imgID, imgSrc, imgWidth){
    var prodImgC = document.getElementById("prodImgContain");
    var prodImg = prodImgC.getElementsByTagName("img");

    if(prodImg.length == 0){
        return;
    }

    var newSrc = "/uimages/" + imgSrc;

    prodImg[0].src = newSrc;

    if(imgWidth > 550){
        prodImg[0].width = 550;
    }
    else{
        prodImg[0].width = imgWidth;
    }

    if(is_safari){
        generalPopUp('/view_image.php?gid=' + gID + '&img=' + imgSrc, 400, 400);
        //redir ie: /gimgid/123/The_Pink_Pillow
        /*var curLoc = new String(window.location);

        if(curLoc.match(/gimgid\/\d/)){
            alert(imgID);
            newLoc = curLoc.replace(/gimgid\/\d+/, "gimgid/" + imgID);
            alert(newLoc);
        }
        else{
            var curLocA = curLoc.split("/");
            var curLocALen = curLocA.length;
            var n = curLocALen - 1;

            var newLoc = '';
            for(i = 0; i < curLocALen; i++){
                if(i > 0){
                    newLoc = newLoc + "/";
                }
                if(i == n){
                    newLoc = newLoc + "gimgid/" + imgID + "/";
                }

                newLoc = newLoc + curLocA[i];
            }
        }

        var tlen = window.history.length + 1;
        if(window.fakeHistory == undefined){
            window.fakeHistory = new Array( );
        }

        currentLocation = newLoc;

        if(newLoc.match(/\?/)){
            newLoc += "&xmlOnly=1";
        }
        else{
            newLoc += "?xmlOnly=1";
        }

        window.fakeHistory[tlen] = newLoc;
        b_xml.request(newLoc);

        alert(newLoc);
        window.location = newLoc;*/
    }
}

function add2Cart(thisA, pid, qty){
    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; }
}

function removeFromCart(thisA, ckey){
    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; }
}

function updatePrice(priceID, newTotal){
    updateID = document.getElementById(priceID);

    if(!updateID){
        return;
    }

    var newTotal = parseFloat(newTotal);
    updateID.innerHTML = '$' + newTotal.toFixed(2);
}

function openLoginForm(hst){

    //loc = '/members/?newlogin=1' + '&referer=' + escape(window.location.href);

    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=320,height=320, scrollbars=1, status=yes, toolbar=no, resizable=yes");

    loginPopup.focus( );

    //alert(window.location.hostname + ' - ' + window.location.hst);

    if(window.location.hostname != hst){
        var loc = window.location.href.replace(/^(https?\:\/\/[\w\d\-\.]+\/)/, '/');
        loc = 'https://' + hst + loc;
        //alert(loc);

        //window.location.href = 'https://' + hst + loc;
    }

    return true;
}

function submitComment(fieldID){
    var bgzFrame = document.getElementById('bgz');
    var hidField = document.getElementById(fieldID);

    /*if(bgzFrame.contentDocument){
        var frameSrc = bgzFrame.contentDocument.body.innerHTML;
    }
    else{
        var frameSrc = document.frames['bgz'].document.body.innerHTML;
    }*/

    var frameSrc = getDocHTML( );

    //inject frameSrc into hidField value
    hidField.value = frameSrc;
}

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 = '';

        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;

        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 fillBilling(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 = '';

        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;

        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 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');
    var amex = document.getElementById('amexCC');

    //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";
    amex.src = "/images/amex_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 disableButton(buttonID, msg){
   tButton = document.getElementById(buttonID);

   if(!tButton){
        return;
   }

   tButton.value = msg;
   tButton.style.color = "#606060";
   tButton.style.backgroundColor = "#C0C0C0";
   tButton.disabled = true;
}

//This function pulls a framed image, or pulls the product image if the
//frame id is 0, not found or not a valid product.  If no images are found
//it will load an image unavailable image (if available), otherwise it
//will display an ugly missing picture box.  But if you're not very nice,
//it will stick it's tongue out at you :P
function pullFramedImage(product_id, frame_id){
    /*
    var prodImg = document.getElementById('prodImg');
    product_id = parseInt(product_id);
    frame_id = parseInt(frame_id);

    prodImg.src = "/images/framed_image.php?product_id=" + product_id + "&frame_id=" + frame_id;
    */

    if(b_xml.isCurrentRequest){
        return false;
    }

    //figure out the option item id
    var poid = 0;

    var poption = document.getElementById('poptionselect');
    if(poption){
        poid = poption.options[poption.selectedIndex].value;
    }

    //we need the protocol
    hostnm = window.location.hostname;

    var newHREF = '/img_ajax.php?product_id=' + product_id + '&frame_id=' + frame_id + '&poid=' + poid;

    b_xml.request(newHREF);

    if(b_xml.isSupported){
        return true;
    }

    return true;
}

//only show prices if istatus = 1
function changeProducts(pimg, pimgprops, pname, pid, cid, pdesc, pprice, istatus){
    var fImgContainer = document.getElementById('featImg');
    var fDesc = document.getElementById('featDesc');
    var fDescInner = document.getElementById('featDescInner');
    var fhPID = document.getElementById('hpid');
    var fhCID = document.getElementById('hcatid');
    var fPrice = document.getElementById('featPrice');
    var fLnk = document.getElementById('featLnk');
    var hcart_buttons = document.getElementById('hcart_buttons');

    if(!fImgContainer || !fDesc || !fhPID || !fhCID || !fPrice || !fLnk){
        return;
    }

    var fImgsA = fImgContainer.getElementsByTagName('img');
    fImg = fImgsA[0];

    //set new image
    var oldHeight = fImg.height;

    fImg.src = pimg;
    fImg.setAttribute('style', pimgprops + 'border: 0px solid #FFF;');
    fImg.setAttribute('alt', pname);

    if(document.all){
        var imgPropsA = pimgprops.split('; ');

        var widthStr = imgPropsA[0];
        var widthStrA = widthStr.split(': ');

        var heightStr = imgPropsA[1];
        var heightStrA = heightStr.split(': ');

        var newWidth = widthStrA[1];
        var newHeight = heightStrA[1];

        newHeight = newHeight.replace(';', '');

        fImg.style.width = newWidth;
        fImg.style.height = newHeight;

        if(navigator.userAgent.match('MSIE 7')){
            //all for IE7
            var newHeight = fImg.height;
            var heightDiff = newHeight - oldHeight;
            var oldCHeight = document.getElementById('content').clientHeight;
            var newCHeight = oldCHeight + heightDiff - 26;
            document.getElementById('content').style.height = newCHeight + 'px';
        }
    }

    //set new description
    var hsA = fDesc.getElementsByTagName('h2')
    hsA[0].innerHTML = pname;

    fDescInner.innerHTML = pdesc;

    //set price
    if(istatus != 1){
        fPrice.innerHTML = '';
        hcart_buttons.innerHTML = '<div class="error">Please call 480.767.1800 for pricing and availability for this product.</div>';
    }
    else{
        fPrice.innerHTML = pprice;
        hcart_buttons.innerHTML = '<strong>QTY</strong>&nbsp;&nbsp;<input type="text" name="pqty" value="1" size="2" class="pqty" /> <input class="button" type="submit" name="add2cartbutton" value="Add to Cart" /> <input type="hidden" name="add2cartbutton" value="Add to Cart" />';
    }

    //set new link on image and after description
    var anchorA = fImgContainer.getElementsByTagName('a');
    var imgLnk = anchorA[0].href;

    newLnk = imgLnk.replace(/pid.+/, 'pid/' + pid);

    anchorA[0].href = newLnk;
    fLnk.href = newLnk;
    fLnk.innerHTML = 'Learn more about <em>' + pname + '</em>';

    //set hidden items
    fhPID.value = pid;
    fhCID.value = cid;
}

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;
}


//##############################################################
//##############  Product Image Functions ######################
//##############################################################
//var framearray is set in the head of the document
//also displays info about the current selection

var oA = new Array( );
var curChecked;
var warned = false;
var curFrame = "";

var curOption = 0;
var curFrameLink = 0;

function initProduct( ){
    //alert('initProduct');
    if(!forceProductInit && b_xml && b_xml.skipWriteFPrice){ return; }
    if(!document.getElementById || !document.getElementsByTagName) return;
    if(!document.getElementById('poptionselectcontain')) return;

    var psc = document.getElementById('poptionselectcontain');
    psc.style.visibility = 'visible';

    var ps = document.getElementById('poptionselect');

    var pContain = document.getElementById('poptContain');
    var pDivs = pContain.getElementsByTagName('div');
    for(var i = 0; i < pDivs.length; i++){
        var p = pDivs[i];
        if(p.className == 'poptions'){
            p.style.position = 'absolute';
            p.style.left = '0px';
            p.style.top = '0px';
            if(i != 0){
                p.style.visibility = 'hidden';
            }
        }
    }

    ps.selectedIndex = 0;

    ps.onchange = selChange;
    //pContain.style.height = "380px";

    var iObj = ps.options[ps.selectedIndex];
    var indx = iObj.value;

    var curOption = 0;
    var curFrameLink = 0;
    var newOptionBlock = document.getElementById('poption_' + indx);
    var anodes = newOptionBlock.getElementsByTagName("a");
    for(var i = 0; i < anodes.length; i++){
        var a = anodes[i];

        if(i == 0 && a.innerHTML == "&lt;--"){ a.style.display = "none"; }
        if((i-1) == 0){
            a.style.color = "#DCAF5E";
        }
        else{
            a.style.color = "#FFFFFF";
        }
    }

    var selBlock = document.getElementById('paintingoption_' + indx);
    selBlock.selectedIndex = 0;

    writeInfoBox( );

    productInitRun = true;
}

function updatePaintingOption( ){
    //alert('updatePaintingOption');
    var pObj = document.getElementById('poptionselect');
    var poObj = pObj.options[pObj.selectedIndex];
    var pindx = poObj.value;

    var dObj = document.getElementById('paintingoption_' + pindx);
    var poiObj = dObj.options[dObj.selectedIndex];
    var indx = poiObj.value;

    var paintingoption = document.getElementById("paintingoption");
    paintingoption.value = indx;
    //alert(paintingoption.value);

    var poiIndxA = poiObj.innerHTML.split(/\:\s*/);
    document.getElementById('tpo_edition').innerHTML = poiIndxA[0];
    document.getElementById('tpo_price').innerHTML = poiIndxA[1];
}

var isClassic = false;

function selChange( ){
    //alert('selChange');
    var iObj = this.options[this.selectedIndex];
    var indx = iObj.value;

    if(iObj.innerHTML.match(/Canvas/i)){
        if(isClassic){
            isClassic = false;
        }
    }
    else{
        isClassic = true;
    }

    hideSelects( );
    var newOptionBlock = document.getElementById('poption_' + indx);
    newOptionBlock.style.visibility = "visible";

    curOption = parseInt(indx);
    curFrameLink = 0;

    var indxA = iObj.innerHTML.split(/\:\s*/);
    document.getElementById('tpo_lithography').innerHTML = indxA[0];
    document.getElementById('tpo_size').innerHTML = indxA[1];

    updatePaintingOption( );
}

function hideSelects( ){
    //alert('hideSelects');
    var pc = document.getElementById('poptContain');
    var pd = pc.getElementsByTagName('div');

    for(var i = 0; i < pd.length; i++){
        if(pd[i].className == 'poptions'){
            pd[i].style.visibility = 'hidden';
        }
    }
}

function writeInfoBox(tpo_size, tpo_frame, tpo_lithography, tpo_edition, tpo_price, tpo_fprice){
    var prod_info_box = document.getElementById('prod_info_box');
    if(!prod_info_box || !infoBox || (b_xml && b_xml.skipWriteFPrice)){ return; }

    tpo_size = infoBox.tpo_size;
    tpo_frame = infoBox.tpo_frame;
    tpo_lithography = infoBox.tpo_lithography;
    tpo_edition = infoBox.tpo_edition;
    tpo_price = infoBox.tpo_price;
    tpo_fprice = infoBox.tpo_fprice;

    prod_info_box.innerHTML = '<br /><br /><h4 style="white-space: nowrap;">Selected Information</h4><div><table border="0" cellpadding="0" cellspacing="0" style="width: 160px; white-space: normal;"><tr><td>Size:</td><td style="padding-left: 8px;"><div id="tpo_size" class="bold">' + tpo_size + '</div></td></tr><tr><td>Frame:</td><td style="padding-left: 8px;"><div id="tpo_frame" class="bold">' + tpo_frame + '</div></td></tr><tr><td>Lithography:</td><td style="padding-left: 8px;"><div id="tpo_lithography" class="bold">' + tpo_lithography + '</div></td></tr><tr><td>Edition:</td><td style="padding-left: 8px;"><div id="tpo_edition" class="bold">' + tpo_edition + '</div></td></tr><tr><td>Price:</td><td style="padding-left: 8px;"><div id="tpo_price" class="bold">$' + tpo_price + '</div></td></tr><tr><td style="white-space: nowrap;">Frame Price:</td><td style="padding-left: 8px;"><div id="tpo_fprice" class="bold">$' + tpo_fprice + '</div></td></tr></table></div>';
}

var couponWin;
function openCoupon( ){
    couponWin = window.open("/coupon.php", "CouponWindow", "width=420,height=600,scrollbars=yes,status=no,toolbar=no,resizable=no,alwaysRaised=yes");
    return false;

}