var sticker;
var sticker_top=0;
addEvent(window, "scroll", function() {
	if (window.XMLHttpRequest && sticker_top>0 && !$("index-page") && !$("awu") && !$("profile_header")) {
		if (document.documentElement.scrollTop>sticker_top-2) {
			if (sticker.style.position!="fixed") {
				sticker.style.position="fixed"; 
				sticker.style.top="2px";
			}
		}
		else {
			if (sticker.style.position!="absolute") {
				sticker.style.position="absolute"; 
				sticker.style.top="auto";
			}
		}
	}
});
addEvent(window, "load", function() {
	externalLinks();
	sticker=$("side_right");
	if (sticker) sticker_top=sticker.offsetTop;
	if ($("search")) {
		function findPos(obj) {
			var curleft=curtop=0;
			if (obj.offsetParent) {
				do {
					curleft+=obj.offsetLeft;
					curtop+=obj.offsetTop;
				}
				while (obj=obj.offsetParent);
			}
			return [curleft, curtop];
		}
		var ol_results=document.createElement("ol");
		ol_results.id="results";
		ol_results.style.left=findPos($("n_query"))[0]+"px";
		ol_results.style.top=(findPos($("n_query"))[1]+$("n_query").offsetHeight)+"px";
		$("search").getElementsByTagName("fieldset")[0].insertBefore(ol_results, $("n_query").nextSibling);
		$("n_query").value=($("n_query").value=="")?"Enter zip / city":$("n_query").value;
		addEvent($("n_query"), "focus", function() {
			this.value=(this.value=="Enter zip / city")?"":this.value;
		});
		addEvent($("n_query"), "blur", function() {
			this.value=(this.value=="")?"Enter zip / city":this.value;
		});
		$("results").style.display="none";
		$("n_query").setAttribute("autocomplete", "off");
		addEvent($("n_query"), "keyup", function(e) {
			if (/^\d+$/.test(this.value)) $("n_query").maxLength="5";
			else {
				$("n_query").maxLength="200";
				var keyPressed=(window.event)?event.keyCode:e.keyCode;
				var results=$("results").getElementsByTagName("li");
				var results_length=results.length;
				if (keyPressed=="40" || keyPressed=="38") {
					if ($("results").getElementsByTagName("li").length>0) {
						if (!$("hover")) $("results").getElementsByTagName("li")[0].getElementsByTagName("a")[0].id="hover";
						else {
							for (var i=0; i<results_length; i++) {
								if (results[i].getElementsByTagName("a")[0].id=="hover") var current_hover=i;
							}
							results[current_hover].getElementsByTagName("a")[0].id="";
							if (keyPressed=="40") {
								if (current_hover==results_length-1) results[0].getElementsByTagName("a")[0].id="hover";
								else results[current_hover+1].getElementsByTagName("a")[0].id="hover";
							}
							if (keyPressed=="38") {
								if (current_hover==0) results[results_length-1].getElementsByTagName("a")[0].id="hover";
								else results[current_hover-1].getElementsByTagName("a")[0].id="hover";
							}
						}
						$("n_query").value=$("hover").firstChild.data;
					}
				}
				else {
					for (var i=results_length-1; i>=0; i--) {
						results[i].removeChild(results[i].getElementsByTagName("a")[0]);
						$("results").removeChild(results[i]);
					}
					ajax.perform(this.value);
				}
				/*e.preventDefault();
				e.stopPropagation();*/
			}
		});
		addEvent($("results"), "keydown", function(e) {
			var keyPressed=(window.event)?event.keyCode:e.keyCode;
			if (keyPressed=="40" || keyPressed=="38") {
				var results=$("results").getElementsByTagName("li");
				var results_len=results.length;
				for (var i=0; i<results_len; i++) {
					if ($("results").getElementsByTagName("li")[i].getElementsByTagName("a")[0].id=="hover") {
						$("results").getElementsByTagName("li")[i].getElementsByTagName("a")[0].id="";
						if (keyPressed=="38") var new_hover=(i==0)?results_len-1:i-1;
						else var new_hover=(i==results_len-1)?0:i+1;
					}
				}
				$("results").getElementsByTagName("li")[new_hover].getElementsByTagName("a")[0].id="hover";
				//$("hover").focus();
				e.preventDefault();
				e.stopPropagation();
				return false;
			}
		});
		addEvent(document.getElementsByTagName("body")[0], "click", function() {
			if ($("results").style.display=="block") $("results").style.display="none";
		});
		addEvent($("search"), "submit", function() {
			if ($("n_query").value=="" || $("n_query").value=="Enter Zip Code" || $("n_query").value=="Enter City & State") return false;
			else return true;
		});
	}
	if ($("awu")) {
		var legend_txt=$("ems_form").getElementsByTagName("legend")[0].innerHTML;
		function hide_awu_form() {
			$("ems_fname").className="";
			$("ems_lname").className="";
			$("ems_phone_1").className="";
			$("ems_phone_2").className="";
			$("ems_phone_3").className="";
			$("ems_email").className="";
			$("ems_city_from").className="";
			$("ems_zip_from").className="";
			$("opacity_overlay").style.display="none";
			$("awu_form").style.display="none";
			$("ems_form").getElementsByTagName("h2")[0].innerHTML=legend_txt;
			$("ems_aid").value="0";
			$("emis_side_placeholder").appendChild($("ems_form"));
		}
		addEvent($("ems_cancel"), "click", function() {
			hide_awu_form();
		});
		addEvent(document, "keyup", function(e) {
			if ($("awu_form").style.display=="block") {
				var keyPressed=(window.event)?event.keyCode:e.keyCode;
				if (keyPressed=="27") {hide_awu_form();}
			}
		});
		var awu_lis=$("awu").getElementsByTagName("li");
		for (var i=0, awu_lisLength=awu_lis.length; i<awu_lisLength; i++) {
			if (awu_lis[i].className=="business" || awu_lis[i].className=="business last") {
				//addEvent(awu_lis[i].getElementsByTagName("div")[0].getElementsByTagName("a")[0], "click", function() {
				awu_lis[i].getElementsByTagName("div")[0].getElementsByTagName("a")[0].onclick=function() {
					var business_name=this.parentNode.parentNode.getElementsByTagName("h4")[0];
					if (business_name.getElementsByTagName("a")[0]) business_name=business_name.getElementsByTagName("a")[0];
					$("ems_form").getElementsByTagName("h2")[0].innerHTML="Get a quote from "+business_name.innerHTML;
					var sendto=this.href.indexOf("sendto=")+7;
					$("ems_aid").value=this.href.substring(sendto), this.href.length;
					$("emis_placeholder").appendChild($("ems_form"));
					$("awu_form").style.display="block";
					$("opacity_overlay").style.display="block";
					$("ems_state_from").focus();
					return false;
				}
				//});
			}
		}
		var ads_up=$("awu").getElementsByTagName("li");
		for (var i=0, l=ads_up.length; i<l; i++) {
			if ((ads_up[i].className=="business" || ads_up[i].className=="business last") && ads_up[i].getElementsByTagName("p")[1] && ads_up[i].getElementsByTagName("p")[1].getElementsByTagName("a")[0]) {
				ads_up[i].getElementsByTagName("p")[1].getElementsByTagName("a")[0].onmousedown=function() {
					var link_href=this.parentNode.parentNode.getElementsByTagName("div")[0].getElementsByTagName("a")[0].href;
					var sendto=link_href.indexOf("sendto=")+7;
					this.href="/go_to_ad_url.php?eid="+link_href.substring(sendto, link_href.length);
					return true;
				}
			}
		}
	}
	if ($("listingsfree")) {
		var phone_spans=$("listingsfree").getElementsByTagName("span");
		for (var i=0, k=phone_spans.length; i<k; i++) {
			phone_spans[i].onclick=function() {
				ajax.getPhone(this.parentNode.parentNode.id.substring(3));
			}
		}
	}
	function hideMoreShowHidden(elms, countMany, removeElm) {
		for (var i=countMany; i<elms.length; i++) {
			elms[i].className="";
		}
		removeElm.parentNode.removeChild(removeElm);
	}
	function collapseMany(elms, countMany, elmType) {
		if (elms.length>countMany) {
			var elmType2Create=(elmType=="li")?"p":"span";
			for (var i=countMany; i<elms.length; i++) elms[i].className="more";
			var more=document.createElement(elmType2Create);
			more.id="more_"+elmType;
			var elmClickOn=(elmType=="li")?document.createElement("p"):more;
			elmClickOn.appendChild(document.createTextNode("More..."));
			//elms[0].parentNode.appendChild(more); IE is stupid and hides pre-created element, so taking a different approach
			elms[0].parentNode.insertBefore(more, elms[countMany]);
			if (elmType=="li") more.appendChild(elmClickOn);
			addEvent(elmClickOn, "click", function() {hideMoreShowHidden(elms, countMany, more);});
		}
	}
	if ($("additional_requests")) {
		collapseMany($("additional_requests").getElementsByTagName("li"), 5, "li");
	}
	if ($("services_area_zipcodes")) {
		collapseMany($("services_area_zipcodes").getElementsByTagName("span"), 22, "span");
	}
	var ajax={
		request:function() {
			if (window.XMLHttpRequest) {return new XMLHttpRequest();}
			else if (window.ActiveXObject) {
				try {return new ActiveXObject("Msxml2.XMLHTTP");}
				catch (e) {
					try {return new ActiveXObject("Microsoft.XMLHTTP");}
					catch (e) {}
				}
			}
			else return false;
		},
		get:function(url, fn, ogirinal_q) {
			http_request=new this.request();
			if (http_request) {
				http_request.onreadystatechange=function() {
					if (http_request.readyState==4) {
						if (http_request.status==200) {if (fn) fn(http_request.responseXML, ogirinal_q)}
						else {/*alert("Error occurred.");*/}
					}
				};
				http_request.open("GET", url, true);
				http_request.send(null);
			}
		},
		syncget:function(url, fn, ogirinal_q) {
			http_request=new this.request();
			if (http_request) {
				http_request.onreadystatechange=function() {
					if (http_request.readyState==4) {
						if (http_request.status==200) {if (fn) fn(http_request.responseXML, ogirinal_q)}
					}
				};
				http_request.open("GET", url, false);
				http_request.send(null);
			}
		},
		perform:function(q) {
			if (q.length>0) {
				this.get("http://www.moving-rates.com/search_by_str.php?q="+q, this.handle, q);
			}
			else $("results").style.display="none";
		},
		handle:function(obj, ogirinal_q) {
			if (ogirinal_q==$("n_query").value) {
				var xml=obj.documentElement;
				if (xml.hasChildNodes()) {
					var urls=obj.getElementsByTagName("url");
					var txts=obj.getElementsByTagName("txt");
					var a="";
					var result=obj.getElementsByTagName("result");
					for (var i=0, j=result.length; i<j; i++) {
						var new_li_a=document.createElement("a");
						new_li_a.href=urls[i].firstChild.data;
						new_li_a.appendChild(document.createTextNode(txts[i].firstChild.data));
						addEvent(new_li_a, "mouseover", function() {
							var results=$("results").getElementsByTagName("li");
							var results_length=results.length;
							for (var i=0; i<results_length; i++) {
								if (results[i].getElementsByTagName("a")[0].id=="hover") results[i].getElementsByTagName("a")[0].id="";
							}
							this.id="hover";
						});
						var new_li=document.createElement("li");
						new_li.appendChild(new_li_a);
						$("results").appendChild(new_li);
					}
					$("results").style.display="block";
				}
			}
		},
		getPhone:function(id) {
			this.get("http://www.moving-rates.com/phone_by_id.php?id="+id, this.insertPhone, id);
		},
		insertPhone:function(obj, id) {
			var xml=obj.documentElement;
			if (xml.hasChildNodes()) {
				var ad_phone=document.createTextNode(obj.getElementsByTagName("phone")[0].firstChild.data);
				$("ad_"+id).getElementsByTagName("div")[0].insertBefore(ad_phone, $("ad_"+id).getElementsByTagName("span")[0]);
				$("ad_"+id).getElementsByTagName("div")[0].removeChild($("ad_"+id).getElementsByTagName("span")[0]);
			}
		}
	}
});
function addEvent(obj, type, fn) {
	if (obj.attachEvent) {
		obj["e"+type+fn]=fn;
		obj[type+fn]=function() {obj["e"+type+fn](window.event);}
		obj.attachEvent("on"+type, obj[type+fn]);
	}
	else obj.addEventListener(type, fn, false);
}
function $(id) {return document.getElementById(id);}
function contains(a, obj) {
	for (var i=0; i<a.length; i++) {
		if (a[i]===obj) {
			return true;
		}
	}
	return false;
}
function externalLinks() {
	var link_rel;
	for (var i=0; i<document.links.length; i++) {
		if (document.links[i].getAttribute("rel")) {
			link_rel=document.links[i].getAttribute("rel").split(" ");
			if (contains(link_rel, "external")) {
				//addEvent(document.links[i], "click", function() {
				document.links[i].onclick=function() {
					window.open(this.href);
					return false;
				}
				//});
			}
		}
	}
}
