
var isNS = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) >= 4);
var HIDDEN = (isNS) ? 'hide' : 'hidden';
var VISIBLE = (isNS) ? 'show' : 'visible';

    
//------ BEGIN: FOR ENLARGING IMAGES       ----------
/***********************************************
* Image Thumbnail viewer- © Dynamic Drive (www.dynamicdrive.com)
* Last updated Sept 26th, 03'. This notice must stay intact for use
* Visit http://www.dynamicdrive.com/ for full source code
* Place <div id="showimage"></div> on body of page
***********************************************/
var ie=document.all
var ns6=document.getElementById&&!document.all

function ietruebody()
{
	return (document.compatMode && document.compatMode!="BackCompat" && !window.opera)? document.documentElement : document.body
}

function enlarge(which, e, position, imgwidth, imgheight)
{
	if (ie||ns6){
		crossobj=document.getElementById? document.getElementById("showimage") : document.all.showimage
		if (position=="center"){
			pgyoffset=ns6? parseInt(pageYOffset) : parseInt(ietruebody().scrollTop)
			horzpos=ns6? pageXOffset+window.innerWidth/2-imgwidth/2 : ietruebody().scrollLeft+ietruebody().clientWidth/2-imgwidth/2
			vertpos=ns6? pgyoffset+window.innerHeight/2-imgheight/2 : pgyoffset+ietruebody().clientHeight/2-imgheight/2
			if (window.opera && window.innerHeight) //compensate for Opera toolbar
				vertpos=pgyoffset+window.innerHeight/2-imgheight/2
			vertpos=Math.max(pgyoffset, vertpos)
		}
		else{
			var horzpos=ns6? pageXOffset+e.clientX : ietruebody().scrollLeft+event.clientX
			var vertpos=ns6? pageYOffset+e.clientY : ietruebody().scrollTop+event.clientY
		}
	
		crossobj.style.left=horzpos+"px"
		crossobj.style.top=vertpos+"px"

		crossobj.innerHTML='<div align="right" id="dragbar"><span id="closetext" onClick="closepreview()">Close</span> </div><img src="'+which+'">'
		crossobj.style.visibility="visible"
	
		return false
	}
	else //if NOT IE 4+ or NS 6+, simply display image in full browser window
		return true
}

function closepreview(){
	crossobj.style.visibility="hidden"
}

function drag_drop(e){
	if (ie&&dragapproved){
		crossobj.style.left=tempx+event.clientX-offsetx+"px"
		crossobj.style.top=tempy+event.clientY-offsety+"px"
	}
	else if (ns6&&dragapproved){
		crossobj.style.left=tempx+e.clientX-offsetx+"px"
		crossobj.style.top=tempy+e.clientY-offsety+"px"
	}
	
	return false
}

function initializedrag(e){
	if (ie&&event.srcElement.id=="dragbar"||ns6&&e.target.id=="dragbar"){
		offsetx=ie? event.clientX : e.clientX
		offsety=ie? event.clientY : e.clientY

		tempx=parseInt(crossobj.style.left)
		tempy=parseInt(crossobj.style.top)

		dragapproved=true
		document.onmousemove=drag_drop
	}
}

document.onmousedown=initializedrag
document.onmouseup=new Function("dragapproved=false")

// ----- END: ENLARGING IMAGES

// ----- BEGIN: FOR OPENING GENERAL POPUP WINDOWS -----
function OpenPopup(sURL, iWidth, iHeight) {
	window.self.name = "main";
	var now = new Date();
	var sWinName = "popup" + now.getTime();
	var remote = window.open(
		(sURL.substring(0,4)=='http' ? sURL : addStdArgsToURL(sURL)),
		sWinName,
		"width=" + iWidth + ",height=" + iHeight + ",toolbar=0,location=0,directories=0,resizable=1,status=1,menubar=0,scrollbars=0"
	);
	return sWinName;
}

function OpenScrollingPopup(sURL, iWidth, iHeight) {
	window.self.name = "main";
	var now = new Date();
	var sWinName = "popup" + now.getTime();
	var remote = window.open(
		(sURL.substring(0,4)=='http' ? sURL : addStdArgsToURL(sURL)),
		sWinName,
		"width=" + iWidth + ",height=" + iHeight + ",toolbar=0,location=0,directories=0,resizable=1,status=1,menubar=0,scrollbars=1"
	);
	return sWinName;
}

function OpenNamedPopup(sURL, sWinName, iWidth, iHeight) {
	window.self.name = "main";
	var remote = window.open(
		(sURL.substring(0,4)=='http' ? sURL : addStdArgsToURL(sURL)),
		sWinName,
		"width=" + iWidth + ",height=" + iHeight + ",toolbar=0,location=0,directories=0,resizable=1,status=1,menubar=0,scrollbars=0"
	);
}

function OpenNamedScrollingPopup(sURL, sWinName, iWidth, iHeight) {
	window.self.name = "main";
	var remote = window.open(
		(sURL.substring(0,4)=='http' ? sURL : addStdArgsToURL(sURL)),
		sWinName,
		"width=" + iWidth + ",height=" + iHeight + ",toolbar=0,location=0,directories=0,resizable=1,status=1,menubar=0,scrollbars=1"
	);
}
// ----- END: FOR OPENING GENERAL POPUP WINDOWS -----



// ----- BEGIN: FOR OPENING SPECIAL POPUP WINDOWS -----
function openPopUnder() {
	if(getCookie('PopUnder') == ''  &&  getCookie('HSID') != ''  &&  parseInt(navigator.appVersion) >= 4) {
		var dtmExp = new Date();
		dtmExp.setTime(dtmExp.getTime() + (2 * 60 * 60 * 1000));  // 2-hour expiry
		setCookieWithPath('PopUnder', 'true', '/', dtmExp.toGMTString());

		var strURL = addStdArgsToURL('/Ads/PopUnderPop.asp');

		var winPopUnder = window.open(strURL, 'PopUnder', 'resizable=yes,status=no,toolbar=no,location=no,menu=no,scrollbars=no,width=730,height=310');

		if(navigator.appName.indexOf('Microsoft') == -1 || parseInt(navigator.appVersion) > 4)
			winPopUnder.blur();
		window.self.focus();
	}
}

function openMessenger(agentID,agentScreenName,emailURL,promoURL,ftmlsid,ftmlsalias,fthsid,ftspg,ftsid,ftaid,ftlid,ftctype){
	var url = "http://homestoreimlink.facetime.net/messengerLaunch.html" + "?agentID=" + agentID + "&agentScreenName=" + escape(agentScreenName) + "&emailURL=\"" + emailURL + "\"" + "&promoURL=\"" + promoURL + "\"" + "&mlsid=" + escape(ftmlsid) + "&mlsalias=" + escape(ftmlsalias) + "&aid=" + escape(ftaid) + "&lid="  + escape(ftlid) + "&ctype=" + escape(ftctype) + "&spg="  + escape(ftspg) + "&HSID=" + escape(fthsid) + "&sid=" + escape(ftsid);

	var urlRD = addStdArgsToURL("/Redir/Redir.asp?target=" + escape(url) );
	window.open(urlRD,'_blank','width=3,height=3');

}

function softpop() { }
function softpopUReg(strURL) { }
// ----- END: FOR OPENING SPECIAL POPUP WINDOWS -----



// ----- BEGIN: FOR HIDING/SHOWING LAYERS -----
function showLayer(strLayerName) {
	if(document.all)
		document.all[strLayerName].style.display = 'block';
	else if(document.layers)
		document.layers[strLayerName].display = 'block';
}
function hideLayer(strLayerName) {
	if(document.all)
		document.all[strLayerName].style.display = 'none';
	else if(document.layers)
		document.layers[strLayerName].display = 'none';
}
// ----- END: FOR HIDING/SHOWING LAYERS -----



function swapImage(strImgName, strImgSrc) {
	if(document.images)
		document.images[strImgName].src = strImgSrc;
}



function getQSParam(strName) {
	var strValue = '';
	var strQS = document.location.search;
	var intStart = strQS.indexOf(strName + '=');

	if(intStart != -1) {
		var intEnd = strQS.indexOf('&', intStart);
		if(intEnd == -1) intEnd = strQS.length;
		strValue = strQS.substring(intStart + strName.length + 1, intEnd);
	}
	return unescape(strValue);
}

function addArgToQS(strURL, strArg) {
	if(strURL.indexOf('?') == -1)
		return strURL + '?' + strArg;
	else
		return strURL + '&' + strArg;
}

function addStdArgsToURL(strOrigURL) {
	var strValue, strURL = strOrigURL

	strValue = getQSParam('gate')
	if(strValue != '' && strOrigURL.indexOf('gate=') == -1)
		strURL = addArgToQS(strURL, 'gate=' + strValue);

	strValue = getQSParam('source')
	if(strValue != '' && strOrigURL.indexOf('source=') == -1)
		strURL = addArgToQS(strURL, 'source=' + strValue);

	strValue = getQSParam('poe')
	if(strValue != '' && strOrigURL.indexOf('poe=') == -1)
		strURL = addArgToQS(strURL, 'poe=' + strValue);

	strValue = getQSParam('nnv')
	if(strValue != '' && strOrigURL.indexOf('nnv=') == -1)
		strURL = addArgToQS(strURL, 'nnv=' + strValue);

	return strURL;
}



// ----- BEGIN: FOR GETTING GATEWAY FLAGS -----
function getGateway() {
	return getQSParam('gate');
}
function getGatewayQS() {
	var strGate = getGateway();
	if(strGate == '')
		return '';
	else
		return 'gate=' + strGate;
}
// ----- END: FOR GETTING GATEWAY FLAGS -----



// ----- BEGIN: FOR GETTING COOKIES -----
function getCookie(strName) {
	var strCookie = document.cookie;
	if(strCookie.length == 0) return '';
	var strValue = '';
	var intStart = strCookie.indexOf(strName + '=');
	if(intStart > -1) {
		intStart += strName.length + 1;
		var intEnd = strCookie.indexOf(';', intStart + 1);
		if(intEnd == -1) intEnd = strCookie.length;
		strValue = strCookie.substring(intStart, intEnd);
	}
	return strValue;
}

function setCookie(strName, strValue, strExp) {
	document.cookie = strName + '=' + strValue
			+ (document.location.hostname == 'www.realtor.com' ? ';domain=.realtor.com' : '')
			+ (strExp == '' ? '' : ';expires=' + strExp);
}

function setCookieWithPath(strName, strValue, strPath, strExp) {
	document.cookie = strName + '=' + strValue
			+ (document.location.hostname == 'www.realtor.com' ? ';domain=.realtor.com' : '')
			+ (strPath == '' ? '' : ';path=' + strPath)
			+ (strExp == '' ? '' : ';expires=' + strExp);
}

function deleteCookie(strName) {
	var dtmExp = new Date();
	dtmExp.setTime(dtmExp.getTime() - 3600000); // 1 hr ago
	setCookieWithPath(strName, '', '/', dtmExp.toGMTString())
}
// ----- END: FOR GETTING COOKIES -----



function isLoggedOn() { return ( document.cookie.indexOf('FormsAuth=') != -1 ); }
function logOffPlanner() {
	deleteCookie('FormsAuth');
	deleteCookie('MEMUSER');
	deleteCookie('NAME');
}



// ----- BEGIN: FOR STRING/NUMBER CONVERSIONS -----
function isNumericString(strOrig) {
	if(strOrig.length==0) return false;

	var strChar;
	var strValidChars = "1234567890$,";
	for (var i = 0; i < strOrig.length; i++) {
		strChar = strOrig.substring(i, i+1);
		if (strValidChars.indexOf(strChar, 0) == -1)
			return false;
	}
	return true;
}

function isValidEmail(strEmail) {
	var strBadChars, strChar, strSuffix, intNumBadChars, intCount, intPos, intPosPeriod

	// --- CHECKING FOR BAD CHARACTERS ---
	strBadChars = ' /:,#\'"`$~!%^&*();<>?\\|{}[]';
	intNumBadChars = strBadChars.length
	for(intCount = 0;  intCount < intNumBadChars;  ++intCount) {
		strChar = strBadChars.substring(intCount, 1);
		if(strEmail.indexOf(strChar) > 0)
			return false;
	}

	// --- CHECKING FOR THE @ SIGN ---
	intPos = strEmail.indexOf('@')
	if(intPos == -1)
		return false;

	// --- CHECKING FOR A . AFTER THE @ SIGN ---
	intPosPeriod = strEmail.indexOf('.', intPos);
	if(intPosPeriod == -1)
		return false;

	// --- CHECKING FOR AT LEAST 2 AFTER THE PERIOD ---
	if(strEmail.length - intPosPeriod < 3)
		return false;

	// --- ALL CHECKS OUT - MUST BE OKAY ---
	return true;
}

function isValidPostalCode(strOrigPostalCode) {
	var arrValidAlphaNumerics = new Array('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '0123456789');
	var strPostalCode = strOrigPostalCode.replace(' ', '');
	switch(strPostalCode.length) {
		case 3:
		case 6:
			var blnReturn = true;
			var strChar;
			for(var i = 0;  i < strPostalCode.length;  ++i) {
				strChar = strPostalCode.substr(i, 1);
				blnReturn = blnReturn && ( arrValidAlphaNumerics[i%2].indexOf(strChar) != -1 );
			}
			break;
		case 5:
			blnReturn = !isNaN(strPostalCode)
			break;
		default:
			blnReturn = false;
	}
	return blnReturn;
}
// ----- END: FOR STRING/NUMBER CONVERSIONS -----



function clickLinkByID(strLinkID) {
	var lnkTarget = null;

	if(document.getElementById)
		lnkTarget = document.getElementById(strLinkID);
	else if(document.all)
		lnkTarget = document.all(strLinkID);

	if(lnkTarget != null)
		if(lnkTarget.click)
			// browser supports anchor object click method -- use it!
			lnkTarget.click();
		else
			// browser does not support click method -- set new href directly
			window.location.href = addStdArgsToURL(lnkTarget.href);
	else
		// can't find the named anchor object -- don't do anything
		{ }
}

function emailAddress(email) {
  var results = '';
  for (i = 0; i < email.length; i++) {
    var letter = email.charAt(i);
    if (letter == '#') {
      letter = '.';
    } else if (letter == '$') {
      letter = '@';
    }
    results += letter;
  }
  return(results);
}


function mailto(email) {
var emailAddr = emailAddress(email);
  document.write('<a href="mailto:' + emailAddr + '">' + emailAddr + '</a>');
  return true;
}

function highlightText(blnChecked, divName){
	//alert(divName);
	if(blnChecked){
		document.getElementById(divName).className = 'cbHighlight';
	}
	else{
		document.getElementById(divName).className = 'lightText';
	}
}

//------ BEGIN: Validating MLS Numbers       ----------
/***********************************************
* Validates the MLS numbers for searches
***********************************************/
function MlsNumValidate(mlsobject){
  var RegEq = /[^\d\,\ ]/g,
  SpaceChk = /\s+/g,
  storeArray = Array(),	               // Holds our number array
  index = 0;

  if (typeof(bMlsLetters) != "undefined") {
    RegEq = /[^a-zA-Z0-9,]/g;
  }
  
	var checkMlsNum = new String(mlsobject.value );
  checkMlsNum = checkMlsNum.replace(/ /g,'');//strip out space characters
  checkMlsNum = checkMlsNum.replace(/\r\n/g,',');//strip out newline characters and replace with commas
  checkMlsNum = checkMlsNum.replace(/\t/g,','); //strip out tab characters and replace with commas
	checkMlsNum = checkMlsNum.replace(/[^a-z0-9,]/gi,'');//get rid of anything else

  while( checkMlsNum.indexOf(',,')>-1 ){
      checkMlsNum = checkMlsNum.replace(/,,/g,','); //get rid of excess commas
  }

      //remove comma at beginning of string
      if ( checkMlsNum.indexOf(',')==0) checkMlsNum=checkMlsNum.substr(1);
      
      //remove comma at end of string
      if ( checkMlsNum.length - checkMlsNum.lastIndexOf(',') < 2 ) checkMlsNum = checkMlsNum.substring(0,checkMlsNum.lastIndexOf(','));  

  mlsobject.value = checkMlsNum;

  mlsobject.value = StripNonPrint(mlsobject.value);
  var orig = String(mlsobject.value);

  if (orig.match(RegEq) != null)	{
		// Add test for alpha MLS#; VI # 41452 ~ pbs ~ 2004-01-09
	  if (typeof(bMlsLetters) != "undefined") {
    	alert('You can only enter letters, numbers, and commas into this box.');
			}
		else {
			alert('You can only enter numbers, and commas into this box.');
			}
   	return false;
  }

  orig = orig.replace(SpaceChk,',');
  orig = orig.split(',');

  for (var iter=0; iter < orig.length; iter++)	{
    if (orig[iter].length > 10 ) {
      alert("At least one MLSNumber is too long.  Please check list.");
      return false;
    }
    if ( ! isNaN(parseInt(orig[iter])) ) {
      //if(parseInt(orig[iter]) > 9999999)hope to clarify mls number input with the following jkw
      storeArray[index++] = orig[iter];
    }
    else if (typeof(bMlsLetters) != "undefined") {
      storeArray[index++] = orig[iter];
    }
  }

  mlsobject.value = storeArray.join(',');
  return true;
}/// end function  MlsNumValidate()

// ------------------------------------------------------------------ 
// StripNonPrint()
//
// Strip out non printable characters
// ------------------------------------------------------------------ 
function StripNonPrint(szIn) {
   var i;
	var szTmp = new String(szIn),
	    szOut = new String();
	
	for (i = 0; i < szTmp.length; i++) {
		if ( (szTmp.charCodeAt(i) <  32) ||
		     (szTmp.charCodeAt(i) > 126)   ) {
			szOut += ' ';
			}
	   else {
			szOut += szTmp.charAt(i);
			}
		}
		
	return szOut;
}///end function StripNonPrint
//********************************************************************************


function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '<object ';
  for (var i in objAttrs)
    str += i + '="' + objAttrs[i] + '" ';
  str += '>';
  for (var i in params)
    str += '<param name="' + i + '" value="' + params[i] + '" /> ';
  str += '<embed ';
  for (var i in embedAttrs)
    str += i + '="' + embedAttrs[i] + '" ';
  str += ' ></embed></object>';

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "id":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}


