//<![CDATA[
// Global Variables
var detail_message_offset;
var det_last_tab = '1';

// Animation Constants
var SHOWSIGNINFORMAPPEARDURATION = 1.2;
var SHOWSIGNINFORMHIGHLIGHTDURATION = 2.2;
var PROCESSSIGNINFADEDURATION = 1.2;
var PROCESSSIGNINAPPEARDURATION = 1.2;
var PROCESSSIGNINHIGHLIGHTDURATION = 2.2;
var DETAIL_REQUEST_MORE_INFOAPPEARDURATION = 1.2;
var DETAIL_REQUEST_MORE_INFOHIGHLIGHTDURATION = 2.2;
var DETAIL_REQUEST_MORE_INFO_SENDHIGHLIGHTDURATION = 2.2;
var DETAIL_REQUEST_MORE_INFO_SENDFADEDURATION = 1.2;
var DETAIL_REQUEST_CANCELFADEDURATION = 1.0;
var DETAIL_SCHEDULE_SHOWINGAPPEARDURATION = 1.2;
var DETAIL_SCHEDULE_SHOWINGHIGHLIGHTDURATION = 2.2;
var DETAIL_SCHEDULE_SHOWING_SENDFADEDURATION = 1.2;
var DETAIL_SCHEDULE_SHOWING_SENDHIGHLIGHTDURATION = 2.2;
var DETAIL_EMAIL_LISTINGAPPEARDURATION = 1.2;
var DETAIL_EMAIL_LISTINGHIGHLIGHTDURATION = 2.2;
var DETAIL_EMAIL_LISTING_SENDHIGHLIGHTDURATION = 2.2;
var DETAIL_EMAIL_LISTING_SENDFADEDURATION = 1.2;
var DETAIL_MORTGAGE_CALCULATORAPPEARDURATION = 1.1;
var DETAIL_MORTGAGE_CALCULATORHIGHLIGHTDURATION = 1.8;

////////////////////////////////////////////////////////////////////////////////////////////////
// ON LOAD FUNCTIONS
////////////////////////////////////////////////////////////////////////////////////////////////
//dojo.addOnLoad(function() {
Event.observe( window, 'load', function() {	
	loadUser();
	addOnLoad()
} );

function addOnLoad(){
	runSlideShow();
	if ($('detail_message')) {
		$('detail_message').show();
		var coords = cumulativeOffset($('detail_message'));
		detail_message_offset = coords[1];
		$('detail_message').hide();
	} 
	else 
		detail_message_offset = '';

	if ((!signedin) && (!loggedin))
		showSignInForm();	
}


////////////////////////////////////////////////////////////////////////////////////////////////
// SIGN IN SEARCH FUNCTIONS
////////////////////////////////////////////////////////////////////////////////////////////////
//
// Shows the sign in form
//
function showSignInForm() {
	
	var sign_in = $('sign_in');	
	var detail_container_inner = $('detail_container_inner');
	
	$(sign_in).show();
	$(detail_container_inner).hide();
	
	sign_in.innerHTML='<div style="margin-top: 20px; margin-bottom: 40px;  font-size: 12px; font-weight: bold;"><img src="/agent_site/res/images/loading_big.gif" align="absmiddle"><strong> Loading. Please wait....</strong></div>';	
	
	var bindArgs = {
	method: 'get',	
	onFailure: function(){
		sign_in.innerHTML='';
		$(sign_in).hide();
		$(detail_container_inner).show();
	},
	onSuccess: function(t){
		sign_in.innerHTML=t.responseText;
		new Effect.Appear(sign_in, {queue: 'end', duration: SHOWSIGNINFORMAPPEARDURATION});
		new Effect.Highlight(sign_in, {queue: 'end', duration: SHOWSIGNINFORMHIGHLIGHTDURATION});						
	}
	};
	
	new Ajax.Request('/' + agent_folder + '/pages/sign_in.asp', bindArgs);	
}
//
// Processes the sign in form
//
function processSignIn() {
	
	var sign_in = $('sign_in');	
	var detail_container_inner = $('detail_container_inner');	
	var signin_message = $('signin_message');
	
	var params = Form.serialize($('frmRegister'));
	
	var bindArgs = {
	method: 'post',
	parameters: params,
	onFailure: function(){
		sign_in.innerHTML='';
		$(sign_in).hide();
		$(detail_container_inner).show();
	},
	onSuccess: function(t){
		var returnVal = parseFloat(t.responseText);
		if (returnVal == 1) {
			signedin = true;
			createCookie('siSignedIn','true',730);											
		} 
	
		signin_message.innerHTML = '<strong>Thank you for signing in.</strong>&nbsp;&nbsp;And don\'t forget to sign up for Property Tracker to get the new listings you want emailed daily.';
		var coords = cumulativeOffset(detail_container_inner);
		window.scrollTo(0, coords[1]-40);					
		new Effect.Fade(sign_in, {queue: 'end', afterFinish: sign_in.hide(), duration: PROCESSSIGNINFADEDURATION});
		new Effect.Appear(detail_container_inner, {queue: 'end', afterFinish: detail_container_inner.show(), duration: PROCESSSIGNINAPPEARDURATION});
		new Effect.Appear(signin_message, {queue: 'end', afterFinish: signin_message.show(), duration: PROCESSSIGNINAPPEARDURATION});
		new Effect.Highlight(signin_message, {queue: 'end', duration: PROCESSSIGNINHIGHLIGHTDURATION});
	}
	};	
	
	// Validate the form contents before submitting
	var email = IsValidEmail($('registeremail'));
	var emailIsEmpty = IsEmpty($('registeremail'))
	var first = IsEmpty($('registerfirstname'));
	if (!first){
		$('registerfirstname').value = Trim($('registerfirstname'));
		$('registerfirstname').value = ucFirst($('registerfirstname'));
	}
	var last = IsEmpty($('registerlastname'));
	if (!last){
		$('registerlastname').value = Trim($('registerlastname'));
		$('registerlastname').value = ucFirst($('registerlastname'));
	}
	
	// Check to see if this site wants phone number to be a required field (set in si_client.js)
	var phone = true;
	
	if (require_phone_number) {
		phone = IsValidPhoneNumber($('requestDayPhone'));
	}

	// if all data is valid, form is processed... else error message is displayed
	if (email && !first && !last && phone) {
			$('registersubmit').value = 'Processing Info...';
			$('registersubmit').style.width = '145px';	
			new Ajax.Request('/' + agent_folder + '/pages/sign_in_process.asp', bindArgs);
	} 
	else if (emailIsEmpty || first || last || !phone)
		alert('Please enter all of the required fields.');
	else if (!phone) {
		alert('Please enter a valid ten digit phone number.');
		$('registerphone').focus();
	}
	else if (!email) {
		alert('Please enter a valid email address.');
		$('registeremail').focus();
	}
}
//
// Changes tabs on detail page
//
function change_det_tab(tab, site) {
  if (det_last_tab != tab) 
	document.getElementById('det_set_'+det_last_tab).style.display = 'none';
	
  document.getElementById('det_set_'+tab).style.display = 'block';
  det_selected_form = tab;

  document.getElementById('det_tab_'+det_last_tab).className = 'det_tab_inactive';
  document.getElementById('det_tab_'+det_last_tab).style.position = '';
  document.getElementById('det_tab_'+tab).className = 'det_tab_active';
  document.getElementById('det_tab_'+tab).style.position = 'relative';
  det_last_tab = tab;
}
//
// map for detail page tab
//
function mapDetail(lat,lon) {
	if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("mapdetail"));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(lat,lon), 14);
		map.enableContinuousZoom();

		var point = new GLatLng(lat,lon);	
		baseIcon = new GIcon();
		baseIcon.shadow = "";
		baseIcon.iconSize = new GSize(18, 19);
		baseIcon.shadowSize = new GSize(18, 19);
		baseIcon.iconAnchor = new GPoint(9, 10);
		baseIcon.infoWindowAnchor = new GPoint(9, 7);


		var icon = new GIcon(baseIcon);
		icon.image = "/agent_site/res/images/maps/house-main.png";
		var marker = new GMarker(point, icon);

		map.addOverlay(marker);
	}
	else
		write('Sorry, but your browser is not compatible with our maps.');
}
//
// Goes back to Search Results or Map Results from Detail view
//
function backtoSummary(searchType, newoffset, listingid) {
	$('detoffset').value = '';
	$('listingid').value = listingid;
	
	clearTimeout(m_intTimeOut);
	
	// If the user has paged through enough detail listings to be on a different search results page
	// we need to load the new results page into the Search Results and Map Results tabs
	if (newoffset != $('offset').value)
		$('offset').value = newoffset;
	
	full_search(searchType);
}
//
// Page back or forward through detail pages
//
function changeDetailPage(det_offset) {
	$('detoffset').value=det_offset;
	$('listingid').value='';

	clearTimeout(m_intTimeOut);
	
	full_search('4');
}
////////////////////////////////////////////////////////////////////////////////////////////////
// SLIDE SHOW FUNCTIONS
////////////////////////////////////////////////////////////////////////////////////////////////
var slideShowSpeed;
var crossFadeDuration;
var	Pic = new Array(); 
var	PicCaption = new Array();
var m_intTimeOut;
var m_intCurrentIndex;
var m_intArrayLen;
var preLoad;
//
// Adjust image size
//
function adjustImageSize() {
	var intStandardWidth = 300;
	var intWidth = 0;
	var intHeight = 0;
	var intPercentDif = 0;
	var intCurrentHeight = 0;
	var intTallestHeight = 0;
	var intCurrentHeight = 0;		
	var objImageArea = document.getElementById('ImageArea');
	
	for (i = 0; i < preLoad.length; i++) {//loop through images
		intHeight = preLoad[i].height; //get unaltered height
		intWidth = preLoad[i].width; //get unaltered width
		intPercentDif = intStandardWidth / intWidth; // make it the right size
		intHeight = intHeight * intPercentDif;
															
		if (intTallestHeight < intHeight)					
			intTallestHeight = intHeight;				
	}
	
	if (intTallestHeight > objImageArea.height)
		objImageArea.height = intTallestHeight + 5;	 //add 5 to avoid popping				
}
//
// Run the slide show
//
function runSlideShow() {
	
	//if there is more than one pic
	if (m_intArrayLen > 1)
		adjustImageSize();
		
	// if there is a SLIDE SHOW
	if (m_intArrayLen > 0) { 				
		m_intCurrentIndex = m_intCurrentIndex + 1;
		
		// reset back
		if (m_intCurrentIndex > (m_intArrayLen-1))
			m_intCurrentIndex = 0;
						
		displaySlide();	
		
		// reset first
		clearTimeout(m_intTimeOut);
		m_intTimeOut = setTimeout('runSlideShow()', slideShowSpeed);
	}
}
//
// Shows the previous slide
//
function showPrevSlide() {
	//if there is more than one pic
	if (m_intArrayLen > 1)
		adjustImageSize();
		
	// if there is a SLIDE SHOW
	if (m_intArrayLen > 0) {
		m_intCurrentIndex = m_intCurrentIndex - 1;
		
		// reset back
		if (m_intCurrentIndex < 0)
			m_intCurrentIndex=(m_intArrayLen-1);
		
		displaySlide();	
		
		// reset first
		clearTimeout(m_intTimeOut); 
	}
}
//
// Shows the next slide
//
function showNextSlide() {
	//if there is more than one pic
	if (m_intArrayLen > 1)
		adjustImageSize();

	// if there is a SLIDE SHOW
	if (m_intArrayLen > 0) {
		m_intCurrentIndex = m_intCurrentIndex + 1;
		
		// reset back
		if (m_intCurrentIndex > (m_intArrayLen-1))
			m_intCurrentIndex=0;
	
		displaySlide();	
		
		// reset first
		clearTimeout(m_intTimeOut);
	}
}
//
// Displays the slide
//
function displaySlide() {
	//if (document.all) {
	//	$('PictureBox').style.filter="blendTrans(duration=2)";
	//	$('PictureBox').style.filter="blendTrans(duration=crossFadeDuration)";
	//	$('PictureBox').filters.blendTrans.Apply();      
	//}
	
	$('PictureBox').src = preLoad[m_intCurrentIndex].src;
	//document.all.SlideShowCaption.InnerText= PicCaption[m_intCurrentIndex];
	
	$('ss_caption').innerHTML = PicCaption[m_intCurrentIndex];
	//window.status= PicCaption[m_intCurrentIndex];
	
	//if (document.all) {
	//	document.PictureBox.filters.blendTrans.Play();
	//}
}
////////////////////////////////////////////////////////////////////////////////////////////////
// DETAIL VIEW: REQUEST MORE INFO FORM FUNCTIONS
////////////////////////////////////////////////////////////////////////////////////////////////
//
// Request more information from the details page
//
function detail_request_more_info(listingid, mlsregionid) {
	var detail_message = $('detail_message');
	
	//detail_message.innerHTML='<img src="/agent_site/res/images/loading_big.gif" align="absmiddle"> <span style="font-size: 12px; font-weight: bold;">Loading Form...</span>';
	//new Effect.Opacity(detail_message);	
	//new Effect.Appear(detail_message, {duration: DETAIL_REQUEST_MORE_INFOAPPEARDURATION});
	
	if (detail_message_offset.length == 0) {
		//$(detail_message).show();
		var coords = cumulativeOffset($(detail_message));
		window.scrollTo(0, coords[1]-140);
		//$(detail_message).hide();
	} 
	else
		window.scrollTo(0, detail_message_offset-140);
	
	var params = $H({
		requestlistingid: listingid,
		requestmlsregionid: mlsregionid
		}).toQueryString();
	
	var bindArgs = {
	method: 'get',
	parameters: params,		
	onFailure: function(){
		alert('An error occurred and we could not retrieve the request more info form.  Please try again.');
	},
	onSuccess: function(t){	
		detail_message.innerHTML=t.responseText;
		new Effect.BlindDown(detail_message, {queue: 'end', duration: DETAIL_REQUEST_MORE_INFOAPPEARDURATION});
		new Effect.Highlight(detail_message, {queue: 'end', duration: DETAIL_REQUEST_MORE_INFOHIGHLIGHTDURATION})	
	}
	};
	
	new Ajax.Request('/' + agent_folder + '/pages/request_more_info.asp', bindArgs);
}
//
// Sends the request more information from the details page
//
function detail_request_more_info_send() {
	var detail_message = $('detail_message');
	
	var params = Form.serialize($('requestmoreinfo'));
	
	var bindArgs = {
	method: 'post',
	parameters: params,
	onFailure: function(){
		alert('An error occurred and we could not send your request.  Please try again.');
	},
	onSuccess: function(t){
		detail_message.innerHTML='<fieldset><legend>Request More Info about This Listing</legend><strong>' + t.responseText + '</strong></fieldset>';			
		
		new Effect.Highlight(detail_message, {queue: 'end', duration: DETAIL_REQUEST_MORE_INFO_SENDHIGHLIGHTDURATION});
		new Effect.BlindUp(detail_message, {queue: 'end', duration: DETAIL_REQUEST_MORE_INFO_SENDFADEDURATION});
		if (detail_message_offset.length >= 1)
			window.scrollTo(0, detail_message_offset + 80);	
		else
			window.scrollBy(0, -275);
	}
	};	
	
	// Validate the form contents before submitting
	var name = IsEmpty($('requestName'));
	if (!name)
		$('requestName').value = ReadableName($('requestName'));
	var email = IsValidEmail($('requestEmail'));
	
	// Check to see if this site wants phone number to be a required field (set in si_client.js)
	var phone = true;
	
	if (require_phone_number) {
		phone = IsValidPhoneNumber($('requestDayPhone'));
	}
	
	if (email && phone && !name) {	
		$('requestsubmit').value = 'Please Wait...';
		$('requestsubmit').style.width = '125px';	
		new Ajax.Request('/' + agent_folder + '/pages/request_more_info.asp', bindArgs);
	} 
	else if (name) {
		alert('Please enter your name.');
		$('requestName').focus();
		}
	else if (!phone) {
		alert('Please enter a valid ten digit phone number.');
		$('requestDayPhone').focus();
		}
	else if (!email) {
		alert('Please enter a valid email address.');
		$('requestEmail').focus();
	}
}
//
// Cancels any / all detail request forms
//
function detail_request_cancel() {
	var detail_message = $('detail_message');
	new Effect.BlindUp(detail_message, {duration: DETAIL_REQUEST_CANCELFADEDURATION});
	new Effect.Fade(detail_message,{
		duration: DETAIL_REQUEST_CANCELFADEDURATION,
		afterFinish: function() {
			detail_message.innerHTML = '';
			var coords = cumulativeOffset($('detail_top_info'));
			window.scrollTo(0, coords[1]-90);}
		});	
}
////////////////////////////////////////////////////////////////////////////////////////////////
// DETAIL VIEW: SHEDULE SHOWING FORM FUNCTIONS
////////////////////////////////////////////////////////////////////////////////////////////////
//
// Details of the showing schedule
//
function detail_schedule_showing(listingid, mlsregionid) {
	
	var detail_message = $('detail_message');
	//detail_message.innerHTML='<img src="/agent_site/res/images/loading_big.gif" align="absmiddle"> <span style="font-size: 12px; font-weight: bold;">Loading Form...</span>';
	
	if (detail_message_offset.length == 0) {
		var coords = cumulativeOffset($(detail_message));
		window.scrollTo(0, coords[1]-80);
	} 
	else
		window.scrollTo(0, detail_message_offset-80);
	
	var params = $H({
		requestlistingid: listingid,
		requestmlsregionid: mlsregionid
		}).toQueryString();
		
	var bindArgs = {
	method: 'get',
	parameters: params,		
	onFailure: function(){
		alert('An error occurred and we could not retrieve the request more info form.  Please try again.');
	},
	onSuccess: function(t){
		detail_message.innerHTML=t.responseText;
		new Effect.BlindDown(detail_message, {queue: 'end', duration: DETAIL_SCHEDULE_SHOWINGAPPEARDURATION});
		new Effect.Highlight(detail_message, {queue: 'end', duration: DETAIL_SCHEDULE_SHOWINGHIGHLIGHTDURATION});
	}
	};
	
	new Ajax.Request('/' + agent_folder + '/pages/schedule_a_showing.asp', bindArgs);
}
//
// Sends the detail showing schedule
//
function detail_schedule_showing_send() {
	var detail_message = $('detail_message');
	
	var params = Form.serialize($('scheduleashowing'));
	
	var bindArgs = {
	method: 'post',
	parameters: params,
	onFailure: function(t){
		alert('An error occurred and we could not send your request.  Please try again.');
		alert(t.responseText);
		$('requestsubmit').value = 'Submit';
	},
	onSuccess: function(t){
		detail_message.innerHTML='<fieldset><legend>Schedule a Showing</legend><strong>' + t.responseText + '</strong></fieldset>';			
		
		new Effect.Highlight(detail_message, {queue: 'end', duration: DETAIL_SCHEDULE_SHOWING_SENDHIGHLIGHTDURATION});
		new Effect.BlindUp(detail_message, {queue: 'end', duration: DETAIL_SCHEDULE_SHOWING_SENDFADEDURATION});
		if (detail_message_offset.length >= 1) {
			window.scrollTo(0, detail_message_offset + 80);	
		}
		else
			window.scrollBy(0, -275);
	}
	};	
	
	// Validate the form contents before submitting
	var name = IsEmpty($('requestName'));
	if (!name){
		$('requestName').value = Trim($('requestName'));
		$('requestName').value = ReadableName($('requestName'));
	}
	var email = IsValidEmail($('requestEmail'));
	
	// Check to see if this site wants phone number to be a required field (set in si_client.js)
	var phone = true;
	
	if (require_phone_number) {
		phone = IsValidPhoneNumber($('requestDayPhone'));
	}
	
	// Processes form
	if (!name && email && phone) {	
		$('requestsubmit').value = 'Please Wait...';
		$('requestsubmit').style.width = '125px';	
		new Ajax.Request('/' + agent_folder + '/pages/schedule_a_showing.asp', bindArgs);
	} 
	else if (name) {
		alert('Please enter your name.');
		$('requestName').focus();
	} 
	else if (!email) {
		alert('Please enter a valid email address.');
		$('requestEmail').focus();
	}
	else if (!phone) {
		alert('Please enter a valid ten digit phone number.');
		$('requestDayPhone').focus();
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////
// DETAIL VIEW: EMAIL LISTING FORM FUNCTIONS
////////////////////////////////////////////////////////////////////////////////////////////////
//
// Loads the email to friend form from the details page
//
function detail_email_listing(listingid, mlsregionid) {
	var detail_message = $('detail_message');
	//detail_message.innerHTML='<img src="res/images/loading_big.gif" align="absmiddle"> <span style="font-size: 12px; font-weight: bold;">Loading Form...</span>';
		
	if (detail_message_offset.length == 0) {
		//$(detail_message).show();
		var coords = cumulativeOffset($(detail_message));
		window.scrollTo(0, coords[1]-80);
		//$(detail_message).hide();
	} 
	else
		window.scrollTo(0, detail_message_offset-80);
	
	var params = $H({
		requestlistingid: listingid,
		requestmlsregionid: mlsregionid
		}).toQueryString();
	
	var bindArgs = {
	method: 'get',
	parameters: params,		
	onFailure: function(){
		alert('An error occurred and we could not retrieve the request more info form.  Please try again.');
	},
	onSuccess: function(t){
		detail_message.innerHTML=t.responseText;
		new Effect.BlindDown(detail_message, {queue: 'end', duration: DETAIL_EMAIL_LISTINGAPPEARDURATION});
		new Effect.Highlight(detail_message, {queue: 'end', duration: DETAIL_EMAIL_LISTINGHIGHLIGHTDURATION});
	}
	};
	
	new Ajax.Request('/' + agent_folder + '/pages/email_to_friend.asp', bindArgs);
}
//
// Sends the listing details to a friend from the details page
//
function detail_email_listing_send() {
	var detail_message = $('detail_message');
	
	var params = Form.serialize($('emaillisting'));
	
	var bindArgs = {
	method: 'post',
	parameters: params,
	onFailure: function(){
		alert('An error occurred and we could not send your request.  Please try again.');
	},
	onSuccess: function(t){
		detail_message.innerHTML='<fieldset><legend>Email Listing to a Friend</legend><strong>' + t.responseText + '</strong></fieldset>';			
		
		new Effect.Highlight(detail_message, {queue: 'end', duration: DETAIL_EMAIL_LISTING_SENDHIGHLIGHTDURATION});
		new Effect.BlindUp(detail_message, {queue: 'end', duration: DETAIL_EMAIL_LISTING_SENDFADEDURATION});
		if (detail_message_offset.length >= 1) {
			window.scrollTo(0, detail_message_offset + 140);	
		} 
		else
			window.scrollBy(0, -215);
	}
	};	
	
	// Validate the form contents before submitting
	var reqName = IsEmpty($('requestName'));
	if (!reqName){
		$('requestName').value = Trim($('requestName'));
		$('requestName').value = ReadableName($('requestName'));
	}
	var reqEmail = IsValidEmail($('requestEmail'));
	var recpName = IsEmpty($('recipientName'));
	if (!recpName){
		$('recipientName').value = Trim($('recipientName'));
		$('recipientName').value = ReadableName($('recipientName'));
	}
	var recpEmail = IsValidEmail($('recipientEmail'));
	if ($('requestComments').length > 0)
		$('requestComments').value = Trim($('requestComments'));

	// Processes the request if valid...else focuses invalid fields if possible
	if (!reqName && !recpName && reqEmail && recpEmail) {	
		$('requestsubmit').value = 'Please Wait...';
		$('requestsubmit').style.width = '125px';	
		new Ajax.Request('/' + agent_folder + '/pages/email_to_friend.asp', bindArgs);
	} 
	else if (!(!reqName && !recpName && reqEmail && recpEmail)) {
		alert('Please enter all of the required fields.');
		return false;
	} 
	else if (!reqEmail) {
		alert('Please enter a valid email address for yourself.');
		$('requestEmail').focus();
	} 
	else if (!recpEmail) {
		alert('Please enter a valid email address for the recipient.');
		$('recipientEmail').focus();		
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////
// DETAIL VIEW: MORTGAGE CALCULATOR FORM FUNCTIONS
////////////////////////////////////////////////////////////////////////////////////////////////
//
// Loads the mortgage calculator
//
function detail_mortgage_calculator(price) {
	var detail_message = $('detail_message');
	
	if (detail_message_offset.length == 0) {
		var coords = cumulativeOffset($(detail_message));
		window.scrollTo(0, coords[1]-140);
	} 
	else
		window.scrollTo(0, detail_message_offset-140);
	
	var params = $H({
		price: price
		}).toQueryString();
	
	var bindArgs = {
	method: 'get',
	parameters: params,		
	onFailure: function(){
		alert('An error occurred and we could not retrieve the request more info form.  Please try again.');
	},
	onSuccess: function(t){
		detail_message.innerHTML=t.responseText;
		new Effect.BlindDown(detail_message, {queue: 'end', duration: DETAIL_MORTGAGE_CALCULATORAPPEARDURATION});
		new Effect.Highlight(detail_message, {queue: 'end', duration: DETAIL_MORTGAGE_CALCULATORHIGHLIGHTDURATION});
		domortgageCalculate();
	}
	};
	
	new Ajax.Request('/' + agent_folder + '/pages/mortgage_calculator.asp', bindArgs);
}
//
// Access numbers only as input
//
function numberOnly(e) {
	var charCode = (navigator.appName == "Netscape") ? e.which : e.keyCode
	// status = charCode 
	// see ASCII character value!
	if (charCode > 31 && (charCode < 48 || charCode > 57)) {  
		alert("number only");
		return false;
	}
	return true;
}
//
// clears downpayment value on percentage change
//
function OnPercentChange(){
	document.mortgagecalculator.downpayment.value = "";
}
//
// Clears downpayment percent on downpayment change
//
function OnDownPaymentChange() {
	document.mortgagecalculator.downpaymentpercent.value = "";
}
//
// Returns price with commas inserted
//
function domortgageCalculate() {
	document.mortgagecalculator.price.value = InsertComma(document.mortgagecalculator.price.value);
}
//
// Mortgage calculator function
//
function MakeCurrency() {
	var fPrinc, fDownp, fInter, fPymnt, fPeriod,fPrincVal , fDownpVal;
	var cntr, NumOfPays , MIntrst, Cmpnd, Prncpl, MPayment, Downpymnt;
	var PriceRegExp="^[\\d]+[\\d\,]*[\.]?[\\d]*$";
	var regexpPrice=new RegExp(PriceRegExp);

	fPrinc = CleanNumber(document.mortgagecalculator.price.value);
	if(document.mortgagecalculator.downpaymentpercent.value.length > 0 && document.mortgagecalculator.downpayment.value.length <= 0) {
		fDownpPer = document.mortgagecalculator.downpaymentpercent.value.replace('%','');
		var result3 = regexpPrice.test(fDownpPer);
		if (result3 == false) {
			alert("Please enter a valid percentage for the Down Payment.");
			document.mortgagecalculator.downpaymentpercent.focus();
			return false;
		}
		else {
			if(fDownpPer < 0 || fDownpPer > 100) {
				alert("Please enter a valid percentage between 0% and 100% for the Down Payment.");
				document.mortgagecalculator.downpaymentpercent.focus();
				return false;
			}				
		}
		document.mortgagecalculator.downpayment.value = InsertComma(Math.round(fPrinc * (fDownpPer/100)));
	}
	fDownp = CleanNumber(document.mortgagecalculator.downpayment.value);
	//Netscape returns NaN for call a value of object directly, so I used Options below. -May Zhang
	fInter = document.mortgagecalculator.loanrate.value.replace('%','');
	var result4 = regexpPrice.test(fInter);
	if (result4 == false) {
		alert("Please enter a valid percentage for the Loan Rate.");
		document.mortgagecalculator.loanrate.focus();
		return false;
	}
	else {
		if(fInter < 0 || fInter > 100) {
			alert("Please enter a valid percentage between 0% and 100% for the Loan Rate.");
			document.mortgagecalculator.loanrate.focus();
			return false;
		}				
	}
	fPeriod = parseFloat(document.mortgagecalculator.loanterm.options[document.mortgagecalculator.loanterm.selectedIndex].value);
	fPymnt = document.mortgagecalculator.payments;

	var result1 = regexpPrice.test(fPrinc);
	var result2 = regexpPrice.test(fDownp);

	if (result1 == false) {
		alert("Please enter a valid dollar amount for the price.");
		return false;
	}
	if (result2 == false) {
		alert("Please enter a valid dollar amount for the down payment.");
		return false;
	}
	document.mortgagecalculator.downpaymentpercent.value = Math.round((fDownp / fPrinc) * 10000)/100;
	fPrincVal = CleanNumber(fPrinc);
	fDownpVal = CleanNumber(fDownp);
	Prncpl = fPrincVal.length == 0 ? 0 : parseFloat(fPrincVal);
	Downpymnt = fDownpVal.length == 0 ? 0.2 * parseFloat(Prncpl) : parseFloat(fDownpVal);

	if (Downpymnt > Prncpl) {
		alert("To use this calculator your Principal amount has to be higher than your Downpayment!");
		return;
	}

	Prncpl = Prncpl - Downpymnt ;    /* amount borrowed */
	
	NumOfPays = fPeriod * 12;    /* number of payments in the loan period */
	MIntrst = fInter / 1200 ;   /* Monthly interest */
	Cmpnd = 1 ;  /* compounded interest */
	for (cntr=0; cntr < NumOfPays; cntr++) 
		Cmpnd = Cmpnd * ( 1 + MIntrst );            
	
	MPayment = (Prncpl * Cmpnd * MIntrst)/(Cmpnd - 1);
	if (isNaN(parseInt(MPayment, 10 ))) 
		fPymnt.value = 0;
	else
		fPymnt.value = InsertComma(parseInt(MPayment, 10 ));
}
//
// Inserts commas into passed in currency value
//
function InsertComma(Num) {
	var ret = "";
	var sNum = Num.toString();
	sNum = removeCommas(sNum);
	sNum = addCommas(sNum);
	return sNum;
}
//
// removes commas from dollar amounts
// 
function CleanNumber(Dollar) {
	var nInd
	var strLeft, strRight , strFormat;
	var DLen = Dollar.length;
	nInd = Dollar.indexOf(",",0)
	strLeft = "" ;
	strRight = Dollar.substring(0);
	
	if (nInd == -1) 
		return Dollar;
		
	while (nInd != -1) {
		strLeft = strLeft + strRight.substring(0, nInd  );
		strRight = strRight.substring(nInd + 1);
		nInd = strRight.indexOf(",",0)
	}
           
	strFormat = strLeft + strRight;
	return strFormat;
}
////////////////////////////////////////////////////////////////////////////////////////////////
// CONVERSION AND VALIDATION FUNCTIONS
////////////////////////////////////////////////////////////////////////////////////////////////
//
// Replaces special characters with HTML equivalent
//
function htmlspecialchars(str) {
    return str.replace(/&/g, "&amp;").replace(/</g,"&lt;").replace(/>/g, "&gt;").replace(/'/g, "&#039;").replace(/"/g, "&quot;");
} 
//
// Validates currency
//
function validateCurrency( strValue)  {
  var objRegExp = /(^\$\d{1,3}(,\d{3})*\.\d{2}$)|(^\(\$\d{1,3}(,\d{3})*\.\d{2}\)$)/;

  return objRegExp.test( strValue );
}
//
// Validates value as numeric
//
function  validateNumeric( strValue ) {
  var objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;

  return objRegExp.test(strValue);
}
//
// Validates value as integer
//
function validateInteger( strValue ) {
  var objRegExp  = /(^-?\d\d*$)/;

  return objRegExp.test(strValue);
}
//
// If string is less than four characters, returns true
//
function validateNotlessfour( strValue ) {
   var strTemp = strValue;
   strTemp = trimAll(strTemp);
   if(strTemp.length < 4){
     return true;
   }
   return false;
}
//
// If string is not empty, returns true
//
function validateNotEmpty( strValue ) {
   var strTemp = strValue;
   strTemp = trimAll(strTemp);
   if(strTemp.length > 0){
     return true;
   }
   return false;
}
//
// Validates value to pattern
//
function validateValue( strValue, strMatchPattern ) {
var objRegExp = new RegExp( strMatchPattern);
 return objRegExp.test(strValue);
}
//
// ???
//
function rightTrim( strValue ) {
	var objRegExp = /^([\w\W]*)(\b\s*)$/;

	if(objRegExp.test(strValue))
		strValue = strValue.replace(objRegExp, '$1');
    
  return strValue;
}
//
// ???
//
function leftTrim( strValue ) {
var objRegExp = /^(\s*)(\b[\w\W]*)$/;

      if(objRegExp.test(strValue)) {
       strValue = strValue.replace(objRegExp, '$2');
    }
  return strValue;
}
//
// ???
//
function trimAll( strValue ) {
 var objRegExp = /^(\s*)$/;

    if(objRegExp.test(strValue)) {
       strValue = strValue.replace(objRegExp, '');
       if( strValue.length == 0)
          return strValue;
    }

   objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
   if(objRegExp.test(strValue)) {
       strValue = strValue.replace(objRegExp, '$2');
    }
  return strValue;
}
//
// Removes the currency format
//
function removeCurrency( strValue ) {
  var objRegExp = /\(/;
  var strMinus = '';

  if(objRegExp.test(strValue)){
    strMinus = '-';
  }

  objRegExp = /\)|\(|[,]/g;
  strValue = strValue.replace(objRegExp,'');
  if(strValue.indexOf('$') >= 0){
    strValue = strValue.substring(1, strValue.length);
  }
  return strMinus + strValue;
}
//
// Adds the currency format
//
function addCurrency( strValue ) {
  var objRegExp = /-?[0-9]+(\.[0-9]{2})?$/;
	var s = new String(strValue);

    if( objRegExp.test(s)) {
      objRegExp.compile('^-');
      s = addCommas(s);
      if (objRegExp.test(s)){
        s = '($' + s.replace(objRegExp,'') + ')';
      }
      else {
        s = '$' + s;
      }
      return  s;
    }
    else
      return s;
}
//
// Removes currency commas
//
function removeCommas( strValue ) {
  var objRegExp = /,/g; //search for commas globally

  return strValue.replace(objRegExp,'');
}
//
// Adds currency commas
//
function addCommas( strValue ) {
  var objRegExp  = /(-?[0-9]+)([0-9]{3})/;

	var s = new String(strValue);

    while(objRegExp.test(s)) {
       s = s.replace(objRegExp, '$1,$2');
    }
  return s;
}
//
// ???
//
function removeCharacters( strValue, strMatchPattern ) {
 var objRegExp =  new RegExp( strMatchPattern, 'gi' );

  return strValue.replace(objRegExp,'');
}
//]]>
