function hide_other_options(objname,ok){

    var obj = eval("document.opts."+objname);

    for (var i=0; i<obj.length; i++ ) {
        if (obj[i].value != ok) {
            MM_showHideLayers('option_'+obj[i].value,'','hide');
            //alert ('option '+obj[i].value+' hides? '+hides[obj[i].value]);
            //does this option have dependent checkboxes?
            if (hides[obj[i].value]) {
                //alert ("in hide_other_options" + hides[obj[i].value] + " length: "+hides[obj[i].value].length);
                if (isNaN (hides[obj[i].value]) && (hides[obj[i].value].length)>0) {
                    for (var j=0; j<hides[obj[i].value].length; j++) {
                        var index=hides[obj[i].value][j];
                        //alert (index);
                        var chk = eval("document.opts.opt_"+index);
                        chk.checked=false;
                        MM_showHideLayers('option_'+chk.value,'','hide');
                    }
                }else{
                    var index=hides[obj[i].value];
                    //alert (index);
                    var chk = eval("document.opts.opt_"+index);
                    chk.checked=false;
                    MM_showHideLayers('option_'+chk.value,'','hide');
                }
            }
        }
    }
}
function hide_radio_option(objname,ok){

    var obj = eval("document.opts."+objname);

    //alert ("in hide_radio_options");
    
    for (var i=0; i<obj.length; i++ ) {
        if (obj[i].value == ok) {
            MM_showHideLayers('option_'+obj[i].value,'','hide');
            obj[i].checked=false;
            // need to hide other options that require this one!
            hide_option(obj[i]);
        }
    }
}
function show_radio_option(objname,ok){

    var obj = eval("document.opts."+objname);

    //alert ("in show_radio_option");

    for (var i=0; i<obj.length; i++ ) {
        if (obj[i].value == ok) {
            obj[i].checked=true;
            MM_showHideLayers('option_'+obj[i].value,'','show');
        }else{
            obj[i].checked=false;
            MM_showHideLayers('option_'+obj[i].value,'','hide');
            
            //alert ('option '+obj[i].value+' shows?'+shows[obj[i].value]);
            //does this option have dependent checkboxes?
            if (shows[obj[i].value]) {
                //alert ("Got shows: "+shows[obj.value]+' length = '+shows[obj.value].length);
                for (var i=0; i<shows[obj[i].value].length; i++) {
                    var index=shows[obj[i].value][i];
                    //alert (index);
                    var chk = eval("document.opts.opt_"+index);
                    chk.checked=false;
                    MM_showHideLayers('option_'+chk.value,'','hide');
                }
            }
        }
    }
}
function show_option(obj){
    
    //alert ("in show_option");
    
    obj.checked=true;
    MM_showHideLayers('option_'+obj.value,'','show');
    
    if (obj.type=='radio') {
        hide_other_options(obj.name,obj.value);
    }

    if (shows[obj.value]) {
        //alert ("Got shows: "+shows[obj.value]+' length = '+shows[obj.value].length);
        for (var i=0; i<shows[obj.value].length; i++) {
            var index=shows[obj.value][i];
            //alert (index);
            if (index.length) {
                // this is a radio button...
                var rad = eval("document.opts.opt_"+index[0]);
                //alert (rad + ' ' + rad.length);
                for (var j=0; j<rad.length; j++) {
                    if (rad[j].value==index[1]) {
                        show_radio_option(rad[j].name,rad[j].value);
                        break;
                    }
                }
            }else{
                // this is a checkbox...
                var chk = eval("document.opts.opt_"+index);
                chk.checked=true;
                MM_showHideLayers('option_'+chk.value,'','show');
            }
        }
    }
}
function hide_option(obj){

    //alert ("in hide_option: "+obj.name);
    
    obj.checked=false;
    MM_showHideLayers('option_'+obj.value,'','hide');

    if (hides[obj.value] && hides[obj.value].length) {
        //alert ("Got shows: "+shows[obj.value]+' length = '+shows[obj.value].length);
        for (var i=0; i<hides[obj.value].length; i++) {
            var index=hides[obj.value][i];
            if (index.length) {
                // this is a radio button...
                var rad = eval("document.opts.opt_"+index[0]);
                //alert (rad + ' ' + rad.length);
                for (var j=0; j<rad.length; j++) {
                    if (rad[j].value==index[1]) {
                        //alert ('Need to hide #'+index[1]);
                        hide_radio_option(rad[j].name,index[1]);
                        break;
                    }
                }
            }else{
                // this is a checkbox...
                var chk = eval("document.opts.opt_"+index);
                chk.checked=false;
                MM_showHideLayers('option_'+chk.value,'','hide');
            }
        }
    }
}
function reset_model_info(f){

    var totalsqft=basesqft;
    var totalprice=baseprice;

    for (var i=0; i<optnames.length; i++) {
        var opt = eval("f.opt_"+optnames[i]);
        if (opt.length) {
            for (var j=0; j<opt.length; j++) {
                if (opt[j].checked) {
                   totalsqft += opt[j].sqft;
                   totalprice += opt[j].price;
                }
            }
        }else if(opt.type == "checkbox"){
            if (opt.checked) {
               totalsqft += opt.sqft;
               totalprice += opt.price;
            }
        }
    }
    f.sqft.value = totalsqft;
    f.price.value = '$'+commify(totalprice);
}
function set_range(low,lowobject,highobject){
   lowindex=lowobject.selectedIndex;
   highindex=highobject.selectedIndex;
   if(low == "low"){
      highobject.options[lowindex].selected=true;
   }else{
      if(lowindex==0){
         alert("Please choose a low value first.");
         highobject.options[0].selected=true;
         lowobject.options[0].selected=true;
         lowobject.focus();
      }else{
         if (lowindex>0) {
            if(lowobject.options[lowindex].value >= highobject.options[highindex].value){
               highobject.options[lowindex].selected=true;
            }
         }
      }
   }
}
function commify (num){
   var strnum = num.toString();
   var pattern = /^([\-\+]?\d+)(\d{3})/;
   while ( pattern.test(strnum) ) {
      strnum=strnum.replace(pattern,"$1,$2");
   }
   return strnum;
}
function reset_options (f){
    for (var i=0; i<optnames.length; i++) {
        var opt = eval("f.opt_"+optnames[i]);
        //alert (optnames[i] + ' ' + opt.name + ' ' + opt.type);
        if(opt.type == "checkbox"){
            if (opt.checked) {
                opt.checked==false;
                hide_option(opt);
            }
        }else if (opt.length) {
            for (var j=0; j<opt.length; j++) {
                if (opt[j].checked) {
                    opt[j].checked=false;
                    hide_radio_option(opt[j].name,opt[j].value);
                }
            }
        }
    }
    f.sqft.value = basesqft;
    f.price.value = '$'+commify(baseprice);
}

