// JavaScript Document

/**********************************
  Macromedia Javascript Functions
**********************************/

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function MM_changeProp(objName,x,theProp,theValue) { //v6.0
  var obj = MM_findObj(objName);
  if (obj && (theProp.indexOf("style.")==-1 || obj.style)){
    if (theValue == true || theValue == false)
      eval("obj."+theProp+"="+theValue);
    else eval("obj."+theProp+"='"+theValue+"'");
  }
}

function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}

/**********************************
  obj=form element -> Returns the form object that it's in
**********************************/

function getParentForm(obj) {
  var form = obj.parentNode;
  while (form.tagName.toLowerCase() != "form") {
    if (form.tagName.toLowerCase() == "html") {
      form = null;
      break;
    }
    form = form.parentNode;
  }
  return form;
}



/**********************************
  Changes the selected value of a
  drop-down menu 
**********************************/

function changeMenu(id, index) {
 var _menu = document.getElementById(id);
 _menu.selectedIndex = index;
}


/**********************************
  Email Obfuscator
   - prevents email addresses from 
     being read by spammers
**********************************/

function mail2(box, dom, tld, display) {
  var ref = box + "@" + dom + "." + tld;
  if(display.length == 0) display = ref;
  var cls = (arguments.length > 4) ? ' class="' + arguments[4] + '"' : '';
  var ico = (arguments.length > 5) ? '<img src="' + arguments[5] + '" alt="" border="0" align="bottom" /> ' : '';
  document.write('<a' + ' href="mail' + 'to:' + ref + '" title="' + ref + '"' + cls + '>' + ico + display + '</a>');
}


/**********************************
  Turn off and on content
**********************************/

function toggleDisplay(id) {
  var obj = document.getElementById(id);
  if (obj.style.display == 'none') {
    obj.style.display = "";
  } else {
    obj.style.display = "none";
  }  
}

var buyer_tools_current_tab = 1;
function toggleDisplayGroup(num, prefix, num_items) {
  // hides page content where the id= prefix+1,2,3... num_items
  // shows page content where the id=prefix+num
  var id = prefix+num;
  var element, current_id;
  for (var i=1; i<=num_items; i++) {
    current_id = prefix+i;
    element = document.getElementById(current_id);
    if (current_id == id) {
      toggleDisplay(id);
    } else {
      element.style.display = "none";
    }
  }
}

function toggleVisibility(id) {
  var obj = document.getElementById(id);
  if (obj.style.visibility == 'hidden') {
    obj.style.visibility = "visible";
  } else {
    obj.style.visibility = "hidden";
  }  
}

function toggleImage(id, on, off) {
  var obj = document.getElementById(id);
  if (obj.src == on) {
    MM_changeProp(id,'','src',off,'IMG');
  } else if (obj.src == off) {
    MM_changeProp(id,'','src',on,'IMG');
  }
}

function toggleImageGroup(num, prefix, num_items, image_on, image_off) {
  // turns back image whose id= prefix+1,2,3... num_items
  // toggles image whose the id=prefix+num
  var on = image_on;
  var off = image_off;
  var id = prefix+num;
  var current_id;
  for (var i=1; i<=num_items; i++) {
    current_id = prefix+i;
    if (current_id == id) {
      toggleImage(current_id, on, off);
    } else {
      MM_changeProp(current_id,'','src',off,'IMG');
    }
  }
}


/**********************************
  Find the x y coords of an element
   - http://www.quirksmode.org/js/findpos.html
**********************************/

function findPosX(obj) {
  var curleft = 0;
  if (obj.offsetParent) {
    while (obj.offsetParent) {
      curleft += obj.offsetLeft
      obj = obj.offsetParent;
    }
  }
  else if (obj.x)
    curleft += obj.x;
  return curleft;
}

function findPosY(obj) {
  var curtop = 0;
  if (obj.offsetParent) {
    while (obj.offsetParent) {
      curtop += obj.offsetTop
      obj = obj.offsetParent;
    }
  }
  else if (obj.y)
    curtop += obj.y;
  return curtop;
}

function showAttachedLayer(id_of_layer, obj, offset_x, offset_y) {
  // REQUIRES: findPosY, findPosX
  var layer = document.getElementById(id_of_layer);
  var _x = findPosX(obj);
  var _y = findPosY(obj);
  _x += (arguments.length > 2) ? arguments[2] : 0;
  _y += (arguments.length > 3) ? arguments[3] : 0;
  // alert('x: '+_x+' y: '+_y);
  layer.style.top = _y + 'px';
  layer.style.left = _x + 'px';
  // alert('x: '+layer.style.left+' y: '+layer.style.top);
  layer.style.visibility = "visible";
}

function hideAttachedLayer(id_of_layer) {
  var layer = document.getElementById(id_of_layer);
  layer.style.visibility = "hidden";
}


function openMap() {
  var browser_height = (screen.availHeight < 700) ? screen.availHeight - 80 : 700;  
  var browser_width = screen.availWidth - 80;
  window.open('/search/results_map.phtml','mapsearchwindow','toolbar=yes,location=yes,status=yes,scrollbars=yes,resizable=yes,width=' + browser_width + ',height=' + browser_height);
}

/**********************************
  Enlarge photo pop up
   - prevents window focus from 
     hiding behind the main window
**********************************/

var photoWin;
function openBrWindow(theURL,winName,features) {
  photoWin=window.open(theURL,winName,features);
  if (window.focus) {photoWin.focus()}
}

/*********************************
  Shortcut for navigation
 ********************************/
function nvOver(id) {
  nav_on = true;
  MM_swapImage(id,'','/images/nav/left_on.gif',0);
}

function nvOut() {
  MM_swapImgRestore();
}

/**********************************
  Control the "Modify Location, Style" button bar rollovers
**********************************/

var modify_state  = 0;
var modify_off    = '/images/buttons/modify_location_off.gif';
var modify_on     = '/images/buttons/modify_location_on.gif';
var modify_off_up = '/images/buttons/modify_location_off_up.gif';
var modify_on_up  = '/images/buttons/modify_location_on_up.gif';
function swapModifyOn(id) {
  var img = document.getElementById(id);
  if (modify_state == 0) {
    img.src = modify_on;
  } else if (modify_state == 1) {
    img.src = modify_on_up;
  }
}
function swapModifyOff(id) {
  var img = document.getElementById(id);
  if (modify_state == 0) {
    img.src = modify_off;
  } else if (modify_state == 1) {
    img.src = modify_off_up;
  }
}
function clickModify(id) {
  var img = document.getElementById(id);
  modify_state = (modify_state == 0) ? 1 : 0;
}

function toggleSortOrder(id) {
  document.form_search.page_number.value = 0;
  if(id.value.toLowerCase() == 'asc') {
    id.value = 'desc';
  }
  else if(id.value.toLowerCase() == 'desc') {
    id.value = 'asc';
  }
  else if(id.value.toLowerCase() == '') {
    id.value = 'desc';
  }
  return true;       
}

function toggleSortOrderMap(id) {
  document.form_map_search.page_number.value = 0;
  if(id.value.toLowerCase() == 'asc') {
    id.value = 'desc';
  }
  else if(id.value.toLowerCase() == 'desc') {
    id.value = 'asc';
  }
  else if(id.value.toLowerCase() == '') {
    id.value = 'desc';
  }
  return true;       
}

/******************************
  Mortgage Calculators
*******************************/
 // Financial Calculators, ©1998-2004 KJE Computer Solutions, LLC.
 // For more information please see:
 // <A HREF="http://www.dinkytown.net">http://www.dinkytown.net</A>
function showbuttons() {   

    var agt       = navigator.userAgent.toLowerCase();
    var IEMAC     = ((agt.indexOf("msie") != -1) && agt.indexOf("mac")!=-1);
    var N6        = (agt.indexOf("netscape6") != -1 || (agt.indexOf("netscape/6") !=-1 ));

    if ( N6 ) {
      return "Netscape 6 is unable to support our detailed reports.  Please upgrade to Nescape 7.<P>";
    }
    if ( IEMAC ) {
      return "<P>";
    }
    return "<P><FORM><INPUT TYPE='image' img src='/images/buttons/calculate.gif' width='84' height='28' value='Calculate' Name='btnCallCalc' onClick='document.calculator.calculate();return false;'><INPUT TYPE='image' img src='/images/buttons/view_report.gif' width='100' height='28' value='View Report' Name='btnOpenNote' onClick='openNote();return false;'></FORM>";
}

function openNote()
 { 
 
 var agt=navigator.userAgent.toLowerCase(); 
 var is_aol   = (agt.indexOf("aol") != -1);

 leftpos=0;
 if (screen) {
   leftpos=screen.width/2 - 300;
 } 

 if (is_aol) {
   var s = " ";
   s=document.calculator.sJavaScriptReport('HTML');
    document.write(s);
 }
 else {
   var OpenWindow=window.open("","newwin","toolbar=yes,menubar=yes,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,copyhistory=no,width=600,height=380,left="+leftpos+",top=20");
   var s = " ";
   s=document.calculator.sJavaScriptReport('HTML');
   OpenWindow.document.write(s);
   OpenWindow.document.close(); 
   OpenWindow.focus();
 }
}

var is_map_showing_tracker = false;
function flipModifyBar() {
  if (is_map_showing_tracker) {
    is_map_showing_tracker = false;
    document.getElementById('modify_search').style.background="#FFFFFF url(/images/bg/modify_search_bg.gif) repeat-x scroll top";
  } else {
    is_map_showing_tracker = true;
    document.getElementById('modify_search').style.background="#FFFFFF url(/images/bg/modify_search_org_bg.gif) repeat-x scroll top";
  }
}


/*******************************
  Flash Object Usage:
  
  <script type="text/javascript">
    var flash_obj = new Flash(file, width, height, [version, [no_flash_html, [query string]]]);
    flash_obj.displayFlash();
  </script>

*******************************/

var flashVersion = 0; // required

function Flash(_file, _width, _height, _version, _no_flash, _query) {
  this.file = _file;
  this.width = _width;
  this.height = _height;
  this.default_version = 6;
  this.default_query = '';
  this.required_version = (arguments.length > 3) ? arguments[3] : this.default_version;
  this.query = (arguments.length > 5) ? arguments[5] : this.default_query;
  this.latest_flash_version = 12;
  this.agent = navigator.userAgent.toLowerCase(); 
  this.flashVersion_DONTKNOW = -1;
  this.flash_detected = false;
  this.default_no_flash = '';
  this.default_no_flash += '<table border="0" align="left" cellpadding="0" cellspacing="0" style="width:'+this.width+'px; height:'+this.height+'px; text-align:center; vertical-align:middle;">'+"\n";
  this.default_no_flash += '  <tr>'+"\n";
  this.default_no_flash += '    <td>'+"\n";
  this.default_no_flash += '      <h2>The Flash Player '+this.required_version+' or higher <br />is needed to display this content.</h2>'+"\n";
  this.default_no_flash += '      <p><a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&promoid=BIOW" target="_blank">Download the Flash Player here.</a> <br />'+"\n";
  this.default_no_flash += '      It will only take a minute :)</p>'+"\n";
  this.default_no_flash += '    </td>'+"\n";
  this.default_no_flash += '  </tr>'+"\n";
  this.default_no_flash += '</table>'+"\n";
  this.flash_content = '';
  this.flash_content += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="'+this.width+'" height="'+this.height+'">'+"\n";
  this.flash_content += '  <param name="movie" value="'+this.file+this.query+'" />'+"\n";
  this.flash_content += '  <param name="quality" value="high" />'+"\n";
  this.flash_content += '  <param name="wmode" value="transparent" />'+"\n";
  this.flash_content += '  <embed wmode="transparent" src="'+this.file+this.query+'" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'+this.width+'" height="'+this.height+'"></embed>'+"\n";
  this.flash_content += '</object>'+"\n";
  if (arguments.length > 4) {
    if (arguments[4] != "") {
      this.no_flash = arguments[4];
    } else {
      this.no_flash = this.default_no_flash;
    }
  }
  
  // Flash Version Detector  v1.2.1
  // documentation: http://www.dithered.com/javascript/flash_detect/index.html
  // license: http://creativecommons.org/licenses/by/1.0/
  // code by Chris Nott (chris[at]dithered[dot]com)
  // with VBScript code from Alastair Hamilton (now somewhat modified)
  this.getFlashVersion = function() {
    // NS3+, Opera3+, IE5+ Mac (support plugin array):  check for Flash plugin in plugin array
    if (navigator.plugins != null && navigator.plugins.length > 0) {
      var flashPlugin = navigator.plugins['Shockwave Flash'];
      if (typeof(flashPlugin) == 'object') { 
        for (var i = this.latest_flash_version; i >= 3; i--) {
          if (flashPlugin.description.indexOf(i + '.') != -1) {
            flashVersion = i;
            break;
          }
        }
      }
    } // IE4+ Win32:  attempt to create an ActiveX object using VBScript
    else if (this.agent.indexOf("msie") != -1 && parseInt(navigator.appVersion) >= 4 && this.agent.indexOf("win")!=-1 && this.agent.indexOf("16bit")==-1) {
       var doc = '<scr' + 'ipt language="VBScript"\> \n';
        doc += 'On Error Resume Next \n';
        doc += 'Dim obFlash \n';
        doc += 'For i = ' + this.latest_flash_version + ' To 3 Step -1 \n';
        doc += '   Set obFlash = CreateObject("ShockwaveFlash.ShockwaveFlash." & i) \n';
        doc += '   If IsObject(obFlash) Then \n';
        doc += '      flashVersion = i \n';
        doc += '      Exit For \n';
        doc += '   End If \n';
        doc += 'Next \n';
        doc += '</scr' + 'ipt\> \n';
        document.writeln(doc);
    }
    else if (this.agent.indexOf("webtv/2.5") != -1) flashVersion = 3;  // WebTV 2.5 supports flash 3
    else if (this.agent.indexOf("webtv") != -1) flashVersion = 2; // older WebTV supports flash 2
    else {
      flashVersion = this.flashVersion_DONTKNOW;  // Can't detect in all other cases
    }
    return flashVersion;
  }

  this.flashFound = function(_version, _required) {
    if (_version >= _required) {
      this.flash_detected = true;
      return true;
    } else {
      return false;
    }
  }

  this.displayFlash = function() { 
    if (this.flash_detected) {
      document.writeln( this.flash_content );
    } else {
      document.writeln( this.no_flash );
    }
  }
  
  this.flash_version = this.getFlashVersion();
  this.flash_detected = this.flashFound(this.flash_version, this.required_version);
  
} // end flash object

//////////////////////////
// Email Obfuscator
// <a href="/site_map.phtml" onMouseOver="SetHREF(this, 'kyle', 'firstnetimpressions', 'com', 'FNI - Website Inquiry')" onFocus="SetHREF(this, 'kyle', 'firstnetimpressions', 'com', 'FNI - Website Inquiry')"><script>address("kyle", "firstnetimpressions", "com");< /script></a>
//////////////////////////

function address(name, dom, tld)
{
  var addr = name + '@' + dom + '.' + tld;
  document.write(addr);
}

function SetHREF(obj, box, dom, tld, sbj)
{
  var addr = 'mailto:' + box + '@' + dom + '.' + tld;
  addr = (sbj != null) ? addr + '?subject=' + sbj : addr;
  obj.href = addr;
}

