// ----- 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
		{ }
}


