// @FILE		_tyler_mls.js

function number_format(a, b, c, d) {
	 a = Math.round(a * Math.pow(10, b)) / Math.pow(10, b);
	 var e = a + '';
	 var f = e.split('.');
	 var i;
	 var j;
	 var h;

	 if (!f[0]) {
	  f[0] = '0';
	 }
	 if (!f[1]) {
	  f[1] = '';
	 }
	 if (f[1].length < b) {
	 	g = f[1];
			for (i=f[1].length + 1; i <= b; i++) {
		    	g += '0';
	  		}
		f[1] = g;
	}
 	if(d != '' && f[0].length > 3) {
		h = f[0];
		f[0] = '';
		for(j = 3; j < h.length; j+=3) {
			i = h.slice(h.length - j, h.length - j + 3);
			f[0] = d + i +  f[0] + '';
		}
		j = h.substr(0, (h.length % 3 == 0) ? 3 : (h.length % 3));
		f[0] = j + f[0];
	}
	c = (b <= 0) ? '' : c;
return f[0] + c + f[1];
}


function send_request(url, qs, el)  {

	var url = url +'?'+ qs;

	new Request({
		'url': url,
		'evalScripts': true,
		'onRequest': function() {
			$(el).setStyle('opacity', .4);
		},
		'onComplete': function(responseText)  {
			$(el).set('html', responseText);
			$(el).setStyle('opacity', 1);
		}
	}).get();
}

function update_thumb(el, newsrc)  {
	$(el).setProperty('src', newsrc);
}

function thumbnail_focus(thumb) {
	$('mls_detail_image_large').setProperty('src', thumb);
}

function collapse_expand(el)  {
	var myEl = $(el);
	var myImg = $('img_'+el);

	if (myEl.getStyle('display') == 'none')  {
		myEl.setStyle('display', 'block');
		myImg.src = 'images/triangle_down.png';
	}  else  {
		myEl.setStyle('display', 'none');
		myImg.src = 'images/triangle_right.png';
	}
}



/*
	Cart Functions
*/
function add_cart_listing(mls_type, mlsID, imgSrc, price, address)  {
	var url = '/mls_ajax.php';
	var qs = 'op=add_cart_listing';
	qs += '&mls_type='+ mls_type;
	qs += '&mlsID='+ mlsID;
	qs += '&imgSrc='+ imgSrc;
	qs += '&price='+ price;
	qs += '&address='+ address;

	send_request(url, qs, 'wrapper_saved_listings');

	$('wrapper_saved_listings').className = 'mlsTextMed';
}

function remove_cart_property(idx)  {

	var url = '/mls_ajax.php';
	var qs = 'op=remove_cart_listing';
	qs += '&idx='+ idx;

	send_request(url, qs, 'wrapper_saved_listings');
}


function cart_contact()  {
	send_request('/mls_ajax.php', 'op=cart_contact', 'wrapper_saved_listings');
}

function mail_cart_request(el)  {

	if (!validate(el))  {
		return false;
	}  else  {

		var qs = $(el).toQueryString();

		if (el == 'clb')  {
			send_request('/mls_ajax.php', qs, 'details_contact_form');
		} else  {
			send_request('/mls_ajax.php', qs, 'wrapper_saved_listings');
		}
	}
}

function cancel_cart_contact()  {
	send_request('/mls_ajax.php', 'op=cancel_cart_contact', 'wrapper_saved_listings');
}

function refine_search_results(el, format, fprefix, nullval)  {

	if ($(el).value == '%')  {
		$('param_'+ el).set('html', '');
	} else  {
		if (format == 'true')  {
			$('param_'+ el).set('html', fprefix + number_format($(el).value, 0, '.', ','));;
		}  else  {
			$('param_'+ el).set('html', $(el).value);
		}
	}

	var qs = $('frm_refine_search').toQueryString();

	send_request('/mls_ajax.php', qs, 'search_results_container');
}

function update_custom_search()  {

	if ($('custom_search').value == '')  {
		$('custom_search').value='Enter Address or Street Name or MLS Number or Zip Code';
	}
}

function toggle_help()  {
	if ($('help_tooltip').getStyle('display') == 'block')  {
		$('help_tooltip').setStyle('display', 'none');
	}  else  {
		$('help_tooltip').setStyle('display', 'block');
	}
}

function update_property_type(url, qs, ud)  {

	var url = url +"?"+ qs;

	new Request({
		'url': url,
		'evalScripts': true,
		'onRequest': function()  {

		},
		'onComplete': function(responseText)  {
			var r = eval("("+ responseText +")");

			$(ud).set('html', r.html);
			$('pp_wrapper').set('html', r.pp);
		}
	}).get();
}

function bookmark(url,title){
	if ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4)) {
		window.external.AddFavorite(url,title);
	} else {
		FFbookmark(url, title);
	}
}

function FFbookmark(url, title) {

	if (window.sidebar && window.sidebar.addPanel)  {
   		window.sidebar.addPanel(title, url,"");
	}
}

function map_listing(mls_type, mls_id)  {

	var url = '/mls_ajax.php?op=display_map&mls_type='+ mls_type +'&mls_id='+ mls_id;

	new Request({
		'url': url,
		'evalScripts': true,
		'onRequest': function()  {
			$('map_container').setStyle('opacity', 0.4);
		},
		'onComplete': function(responseText)  {

			var mls = eval('('+ responseText +')');

			$('map_container').setStyle('opacity', 1);
			$('map_container').setStyle('height', '250px');

			if (mls.geocode_status != 200)  {
				$('map_container').setStyle('padding-left', '0px');
				$('map_container').set('html', mls.error);
			}  else  {


				if (GBrowserIsCompatible()) {
					var map = new GMap2($('map_container'));
					map.setCenter(new GLatLng(mls.lat, mls.lon), 13);

					var point = new GLatLng(mls.lat, mls.lon);

					var marker = new GMarker(point);
						GEvent.addListener(marker, "click", function() {
							marker.openInfoWindowHtml('<div class="map_tooltip">'+ mls.tooltip +'</div>');
					});

					function CloseControl() {
					}

					CloseControl.prototype = new GControl();

					CloseControl.prototype.initialize = function(map) {
						var container = document.createElement("div");

						var closeDiv = document.createElement("div");
						this.setButtonStyle_(closeDiv);
						container.appendChild(closeDiv);
						closeDiv.appendChild(document.createTextNode("Close"));
						GEvent.addDomListener(closeDiv, "click", function() {
							closeMap(mls_type, mls_id);
						});

					  	map.getContainer().appendChild(container);
					  	return container;
					}

					CloseControl.prototype.getDefaultPosition = function() {
					  return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 7));
					}

					// Sets the proper CSS for the given button element.
					CloseControl.prototype.setButtonStyle_ = function(button) {
					  button.style.textDecoration = "underline";
					  button.style.color = "#0000cc";
					  button.style.backgroundColor = "white";
					  button.style.font = "small Arial";
					  button.style.border = "1px solid black";
					  button.style.padding = "2px";
					  button.style.marginBottom = "3px";
					  button.style.textAlign = "center";
					  button.style.width = "6em";
					  button.style.cursor = "pointer";
					}

					map.addOverlay(marker);
					map.addControl(new GSmallMapControl());
					map.addControl(new CloseControl());

				}
			}
		}
	}).get();
}


function closeMap(mls_type, mls_id)  {

	$('map_container').setStyles({'background': '#FFF', 'height': '30px', 'padding-left': '40px'});
	$('map_container').set('html', '<a class="mls_link" href="#" onclick="map_listing(\''+ mls_type +'\', \''+ mls_id +'\');">Map This Listing</a>');

}


function validate(e)  {

	var error = 'false';
	var ary_frm = $(e).getElements('input');

	for(i=0; i<ary_frm.length; i++)  {
		if (ary_frm[i].name == 'username' && ary_frm[i].value == 'USERNAME') {
				ary_frm[i].value = '';
		}

		if (ary_frm[i].name == 'password' && ary_frm[i].value == 'PASSWORD')  {
			ary_frm[i].value = '';
		}

		if (ary_frm[i].name == 'date_month' && ary_frm[i].value == 'MM')  {
			ary_frm[i].value = '';
		}

		if (ary_frm[i].name == 'date_day' && ary_frm[i].value == 'DD')  {
			ary_frm[i].value = '';
		}

		if (ary_frm[i].name == 'date_year' && ary_frm[i].value == 'YYYY')  {
			ary_frm[i].value = '';
		}

		if (ary_frm[i].value == '' || ary_frm[i].value == '--')  {
			if (ary_frm[i].getAttribute('rel') == 'required')  {
				ary_frm[i].setStyle('background', '#FFCCCC');
				error = 'true';
			}
		}  else  {
			ary_frm[i].setStyle('background', '#FFFFFF');
		}
	}

	var ary_frm_selects = $(e).getElements('select');

	for (b=0; b<ary_frm_selects.length; b++)  {

		if (ary_frm_selects[b].getAttribute('rel') == 'required')  {
			if (ary_frm_selects[b].value == "--")  {
				ary_frm_selects[b].setStyle('background', '#FFCCCC');
				error = 'true';
			}  else  {
				ary_frm_selects[b].setStyle('background', '#FFFFFF');
			}
		}  else  {
			ary_frm_selects[b].setStyle('background', '#FFFFFF');
		}
	}

	var ary_frm_textarea = $(e).getElements('textarea');

		for (c=0; c<ary_frm_textarea.length; c++)  {

			if (ary_frm_textarea[c].getAttribute('rel') == 'required')  {
				if (ary_frm_textarea[c].value == '')  {
					ary_frm_textarea[c].setStyle('background', '#FFCCCC');
					error = 'true';
				}  else {
					ary_frm_textarea[c].setStyle('background', '#FFFFFF');
				}
			}  else  {
				ary_frm_textarea[c].setStyle('background', '#FFFFFF');
			}
		}


	if (error == 'true')  {
		alert('You have not entered all the required fields.\r\nRequired fields are highlighted in red.');
		return false;
	}  else  {
		return true;
	}
}


function schedule_showing(mls_type, mls_id)  {

	var url = '/mls_ajax.php';
	var qs = 'op=schedule_showing&mls_type='+ mls_type +'&mls_id='+ mls_id;
	var el = 'schedule_showing';

	send_request(url, qs, el);

	$(el).setStyle('padding', '0px');
}


function cancel_showing(mls_type, mls_id)  {
	var html = "<a class=\"mls_link\" href=\"#\" onclick=\"schedule_showing('"+ mls_type +"', '"+ mls_id +"'); return false;\">Schedule Showing</a>";
	$('schedule_showing').className = 'toolbox_button';
	$('schedule_showing').setStyle('padding-left', '40px');
	$('schedule_showing').set('html', html);
}


function send_schedule_showing()  {

	if (!validate('frm_schedule_showing'))  {
		return false;
	}  else  {

		var url = '/mls_ajax.php';
		var qs = $('frm_schedule_showing').toQueryString();
		var el = 'schedule_showing';

		send_request(url, qs, el);

		$(el).className = 'mlsTextMed';
		$(el).setStyle('border-bottom', '2px dotted #EFEFEF');
		$(el).setStyle('background-color', '#FFEFAF');
	}
}


function display_tabs(tabID)  {

	var tabs = $('tab_content_wrapper').getElements('div[id^=tab]');

	for(a=0; a<tabs.length; a++)  {
		var tmp = tabs[a].getAttribute('id')
		if (tmp == tabID)  {
			tabs[a].setStyle('display', 'block');
		}  else  {
			tabs[a].setStyle('display', 'none');
		}
	}
}

function emailAgent()  {

	var url = '/admin/features/mls_tyler/mls_ajax.php';
	var qs = $('frm_email_agent').toQueryString();
	var el = 'agent_contact_form';

	send_request(url, qs, el);
}


function emailFriend(propType, mlsID)  {

	var contents = new Ajax('/mls_ajax.php?op=toolbox&tb=email_friend&mls_type='+ propType +'&mls_id='+ mlsID +'', { method: 'get', update: 'toolbox_wrapper' }).request();
	$('toolbox_wrapper').setHTML(contents);
	$('toolbox_wrapper').setStyles({ 'visibility': 'visible' });

}