var map = null;
var geocoder = null;
var gdir = null;
var streetViewClient = null;
var baseIcon = null;
var points = new Array();
var neighborhoods = new Array();
var polygonOverlays = new Array();
var qsParams = new Array();
var mapMarkers = new Array();
var debug = false;
var tmpCity = "";
var tmpState = "";
var tmpZip = "";
var currentPinPopupPoint = null;
var panIfOutOfBounds = false;
//var adsManager = null;
var hoverMarker = null;
var clickedMarker = null;
String.prototype.trim = function () {
return this.replace(/^\s+|\s+$/g, "");
};
var circlePoly = null;
var autocompleteGeoId=null;
var autocompleteWhere=null;
var lsRegExp = /\+/g;
var hasStreetView = false;
var MINIMUM_ZOOM_LEVEL = 2;
function updateIFrame(height) {
//alert('Updating IFrame height to ' + height);
var iframe = document.getElementById('rwframe');
iframe.setAttribute('height', height);
}
function getIframeSource( height ) {
var el = document.createElement("iframe");
el.setAttribute('id', 'inneriframeOnly');
el.setAttribute('src', unescape(baseurl) + "?iframeheight=" + height);
el.setAttribute('height', 0);
el.setAttribute('width', 0);
document.body.appendChild(el);
}
function adjustIFrameHeight() {
try {
if (qsParams["rwonly"] == "true") {
adjustHeight = 10;
if (document.getElementById("mapcanvas")) {
adjustHeight = adjustHeight + parseInt(document.getElementById("mapcanvas").scrollHeight); //227
adjustHeight = adjustHeight + parseInt(document.getElementById("mapHeading").scrollHeight); //28
}
if (document.getElementById("profileMapView") && document.getElementById("profileMapView").innerHTML.indexOf("Get Directions") > 0) {
adjustHeight = adjustHeight + 10;
}
if (document.getElementById("profileStreetView") && document.getElementById("profileStreetView").style.display != "none")
{
adjustHeight = adjustHeight + parseInt(document.getElementById("streetViewHeading").scrollHeight);
streetviewHeight = document.getElementById("streetview").style.height ? document.getElementById("streetview").style.height : "0";
if (streetviewHeight.indexOf("px") > 0) {
streetviewHeight = streetviewHeight.substring(0,streetviewHeight.indexOf("px"));
}
adjustHeight = adjustHeight + parseInt(streetviewHeight) + 10;
}
getIframeSource(adjustHeight);
}
} catch (err) { }
}
function renderMap() {
qs();	// load query params
if ((points.length > 0 || typeof(saPolygons)!="undefined") && $('mapcanvas') || geocentroid.length > 0) {
DexZoomControl = function() {}
DexZoomControl.prototype = new google.maps.Control();
DexZoomControl.prototype.initialize = function (map) {
var container = document.createElement("div");
var zoomInDiv = document.createElement("div");
this.setButtonStyle_(zoomInDiv);
container.appendChild(zoomInDiv);
var zoomInImg = document.createElement("img");
zoomInImg.src="/images/map/mapZoomIn.png";
zoomInDiv.appendChild(zoomInImg);
google.maps.Event.addDomListener(zoomInDiv, "click", function() {
zoomIn();
});
var zoomOutDiv = document.createElement("div");
this.setButtonStyle_(zoomOutDiv);
container.appendChild(zoomOutDiv);
var zoomOutImg = document.createElement("img");
zoomOutImg.src="/images/map/mapZoomOut.png";
zoomOutDiv.appendChild(zoomOutImg);
google.maps.Event.addDomListener(zoomOutDiv, "click", function() {
zoomOut();
});
map.getContainer().appendChild(container);
return container;
}
DexZoomControl.prototype.getDefaultPosition = function() {
return new google.maps.ControlPosition(G_ANCHOR_TOP_LEFT, new google.maps.Size(7, 7));
}
// Sets the proper CSS for the given button element.
DexZoomControl.prototype.setButtonStyle_ = function(button) {
button.style.width = "22px";
button.style.cursor = "pointer";
}
map = new google.maps.Map2(document.getElementById("mapcanvas"));
if (document.getElementById("directionscanvas")) {
gdir = new GDirections(map, document.getElementById("directionscanvas"));
} else if (document.getElementById("mapWell")) {
gdir = new GDirections(map, document.getElementById("mapWell"));
}
if (gdir!=null) {
GEvent.addListener(gdir, "load", onGDirectionsLoad);
GEvent.addListener(gdir, "error", handleDirectionsErrors);
}
map.setCenter(new google.maps.LatLng(37.4419, -122.1419), 13);
if ((typeof(viewmode)!="undefined" && viewmode == "map") || typeof(pgt)!="undefined" && pgt == "8") {
map.enableScrollWheelZoom();
google.maps.Event.addListener(map, "zoomend", function () {
var newpos = Math.round((map.getZoom()-4) * 6) + 12;
if (newpos >= 0 && newpos < 108 ) {
document.getElementById('zoomControlIndicator').style.left = newpos + "px";
if (currentPinPopupPoint!=null) {
showPinInfoWindow(currentPinPopupPoint);
}
}
});
google.maps.Event.addListener(map, "move", function () {
if (currentPinPopupPoint!=null) {
showPinInfoWindow(currentPinPopupPoint);
}
});
} else {
map.addControl(new DexZoomControl());
}
//map.addControl(new google.maps.LargeMapControl());
//map.addControl(new google.maps.MapTypeControl());
//map.addControl(new GSmallZoomControl());
//geocoder = new google.maps.ClientGeocoder();
// Create a base icon for all of our markers that specifies the
// shadow, icon dimensions, etc.
baseIcon = new google.maps.Icon();
baseIcon.shadow = "/images/map/mapPinShadow.png";
baseIcon.iconSize = new google.maps.Size(26, 39);
baseIcon.shadowSize = new google.maps.Size(26, 39);
baseIcon.iconAnchor = new google.maps.Point(0, 39);
baseIcon.infoWindowAnchor = new google.maps.Point(9, 2);
baseIcon.infoShadowAnchor = new google.maps.Point(18, 25);
if (typeof(pgt)!="undefined" && pgt == "8") {
map.setMapType(G_HYBRID_MAP)
//map.addOverlay(new GLayer("com.panoramio.all"));
//map.addOverlay(new GLayer("org.wikipedia.en"));
}
if (typeof(locationServiceType)!="undefined" && locationServiceType=="location" && points.length > 0) {
// Pin location present (and is location based) ?
renderPoints();
if (typeof(dkgeo) != "undefined" && dkgeo.indexOf("nh")==0) {
drawPolygons();
}
} else if (typeof(saPolygons)!="undefined" && saPolygons.length > 0) {
// Polygons available?
drawPolygons(); renderPoints();
} else if (points.length == 1){
// Center map at point
var ctr = new google.maps.LatLng(points[0].latitude, points[0].longitude);
map.setCenter(ctr, 13);
}
if (points.length==0 && !qsParams["z"] && typeof(saPolygons)=="undefined") {
$("#mapHeading").hide();
if ($("#mapcanvas").style) $("#mapcanvas").style.display="none";
if (geocentroid=="37.0902400,-95.7128910")
{
var gc = geocentroid.split(",");
var ctr = new google.maps.LatLng(parseFloat(gc[0]), parseFloat(gc[1]));
map.setCenter(ctr, parseInt(zoomlevel));
}
else if (geocentroid.length > 0) {
var gc = geocentroid.split(",");
var ctr = new google.maps.LatLng(parseFloat(gc[0]), parseFloat(gc[1]));
map.setCenter(ctr, 9);
}
}
// Prepare Street View
if (document.getElementById("streetview") && points.length==1) {
streetViewClient = new google.maps.StreetviewClient();
var latlng = new google.maps.LatLng(points[0].latitude, points[0].longitude);
var streetViewMap = new google.maps.StreetviewPanorama(document.getElementById("streetview"));
streetViewClient.getNearestPanorama(latlng, function(svData) {
if (svData.code == 500) {
// Server Error
document.getElementById("streetViewHeading").style.display = "none";
document.getElementById("streetview").style.display = "none";
} else if (svData.code == 600) {
// Pano not available
document.getElementById("streetViewHeading").style.display = "none";
document.getElementById("streetview").style.display = "none";
} else {
document.getElementById("streetview").style.height = "235px";
document.getElementById("streetview").style.width = "100%";
var vanlatlng = new google.maps.LatLng("" + svData.location.lat, "" + svData.location.lng);
var B = computeAngle(vanlatlng, latlng);
//GLog.write("Camera LatLng: " + latlng);
//GLog.write("Camera Yaw: " + B);
streetViewMap.setLocationAndPOV(latlng, { yaw: B, pitch: 0 });
if (qsParams["rwonly"] == "true") {
hasStreetView = true;
adjustIFrameHeight();
}
}
});
}
window.onunload=google.maps.Unload;
/*if (typeof(viewmode)!="undefined" && viewmode == "map") {
adsManager = new GAdsManager(map, "business");
adsManager.enable();
}*/
} else {
// points.length == 0
if (document.getElementById("profileMapView")) {
document.getElementById("mapHeading").style.display="none";
document.getElementById("profileMapView").style.display="none";
}
if (document.getElementById("profileStreetView")) {
document.getElementById("profileStreetView").style.display="none"; 
}
}
if (qsParams["rwonly"] == "true" && !hasStreetView) {
adjustIFrameHeight();
}
}
function loadMaps() {
google.load("maps", "2.x", {"callback" : renderMap, "other_params" : "client=" + mapsAPIClientId + "&sensor=false"});
}
function loadReviewRating(){
$('#starRating :radio.star').rating({
focus: function(value, link){
// 'this' is the hidden form element holding the current value
// 'value' is the value selected
// 'element' points to the link element that received the click.
var tip = $('#hoverText');
tip[0].data = tip[0].data || tip.html();
tip.html(link.title || 'value: '+value);
$('#hoverText').css({visibility: "visible"});
},
blur: function(value, link){
var tip = $('#hoverText');
$('#hoverText').html(tip[0].data || '');
$('#hoverText').css({visibility: "hidden"});
},
required: true
});
}
function togglePrintMap() {
$("#showMap").toggle( 
function() {
$("#mapcanvas").hide();
$(this).html("Include Large Map");
},
function() {
$("#mapcanvas").show();
$(this).html("Don't Include Large Map");
}
);
}
//google.setOnLoadCallback(load);
function initLoader() {
if (typeof(isVUrl)=="undefined" || !isVUrl) {
setMapListHeight();
var script = document.createElement("script");
script.src = "http://www.google.com/jsapi?callback=loadMaps";
script.type = "text/javascript";
document.getElementsByTagName("head")[0].appendChild(script);
}
if (location.href.indexOf("openReview") > 0 ) {
$("#writeReview").show();
}
$(".openReview").click(function() { $("#writeReview").show(); $("#noReview").hide(); });
$("#closeWriteReview").click(function() { $("#writeReview").hide(); $("#noReview").show(); });
loadReviewRating();
togglePrintMap();
}
function showSend2Phone(i) {
try {
document.getElementById("_phone" + i).style.display = 'block';
document.getElementById("phoneForm" + i).style.display = 'block';
document.getElementById("sent" + i).style.display = 'none';
var userphone = readCookie("userphone");
if (userphone==null) {
document.getElementById("phoneForm" + i).phone.value="";
document.getElementById("phoneForm" + i).phone.focus();
} else {
document.getElementById("phoneForm" + i).remember.checked = true;
document.getElementById("phoneForm" + i).phone.value=userphone;
}
} catch (err) {
}
return false;
}
function send2Phone(i) {
var phone = document.getElementById("phoneForm" + i).phone.value;
var bid = document.getElementById("phoneForm" + i).bid.value ;
var pdt = document.getElementById("phoneForm" + i).pdt.value ;
var adcatid = document.getElementById("phoneForm" + i).adcatid.value ;
var adgeoid = document.getElementById("phoneForm" + i).adgeoid.value ;
var dkzone = document.getElementById("phoneForm" + i).dkzone.value ;
var pass = document.getElementById("phoneForm" + i).pass.value ;
var relr = document.getElementById("phoneForm" + i).relr.value ;
var absr = document.getElementById("phoneForm" + i).absr.value ;
var dkitem = document.getElementById("phoneForm" + i).dkitem.value ;
var isRemember = document.getElementById("phoneForm" + i).remember.checked;
phone = phone.replace("(", "").replace(")", "").replace(" ", "").replace("-", "");
var pars = "to=" + phone + "&bid=" + bid + "&dkdt=" + dkdt + "&dkcat=" + dkcat + "&dkgeo=" + dkgeo;
pars += "&adcatid=" + adcatid + "&adgeoid=" + adgeoid + "&dkzone=" + dkzone + "&mkt=" + mkt;
pars += "&mkw=" + mkw + "&partner=" + partner + "&pass=" + pass + "&dkq=" + dkq; 
pars += "&baseurl=" + escape(baseurl) + "&referer=" + referer + "&dkitem=" + dkitem + "&pdt=" + pdt;
pars += "&pgt=" + pgt + "&absr=" + absr + "&relr=" + relr + "&dks=" + dks;
var url = "/service/send2phone.asp?" + pars;
if (isRemember) {
createCookie("userphone",phone,30);
} else {
eraseCookie("userphone");
}
$.getJSON(url,
function(response){
if (response.status == "success") {
document.getElementById("_phone" + i).style.display = 'block';
document.getElementById("phoneForm" + i).style.display = 'none';
document.getElementById("sent" + i).style.display = 'block';
document.getElementById("phoneMsg" + i).innerHTML = "";
} else if (response.status == "failed"){
document.getElementById("phoneMsg" + i).innerHTML = response.message;
} else {
alert(req.responseText);
}
});
}
function generateSendToPhoneForm(obj, i, businessName, bid, listingType, listingCategoryId, listingGeoId, listingZone, listingPass, listingRelr, listingAbsr, listingItemId, street, city, state, zipcode, phoneNumber, userphone) {
if (document.getElementById("Phone-html" + i) == null) {
formatPhone = "";
if (userphone != "") {
formatPhone = "(" + userphone.substring(0,3) + ") " + userphone.substring(3, 6) + "-" + userphone.substring(6, 10); 
}
var newPhoneForm = "    <div id=\"" + "Phone-html" + i + "\" class=\"highslide-html-content toolPop\" >";
var businessNameLocal = unescape(String(businessName).replace(lsRegExp, " "));
newPhoneForm = newPhoneForm + "    <div class=\"highslide-header highslide-move\" style=\"text-align:left\">";
newPhoneForm = newPhoneForm + "    <ul><li class=\"highslide-close\"><a href=\"#\" onclick=\"return hs.close(this)\"><img src=\"/images/close_x.png\" /></a></li></ul>";
newPhoneForm = newPhoneForm + "    </div><!--end heading-->";
newPhoneForm = newPhoneForm + "    <div class=\"highslide-body\">";
newPhoneForm = newPhoneForm + "    <img alt=\"phone icon\" class=\"popIcon\" src=\"/images/icon_send_to_phone.gif\"/>";
newPhoneForm = newPhoneForm + "    <h2 class=\"popHd\">Send To Phone<br></h2>";
newPhoneForm = newPhoneForm + "    <div id=\"phoneloading" + i + "\" style=\"display:none;text-align:center;padding-top:24px;\">";
newPhoneForm = newPhoneForm + "      <img src=\"/images/loadingAnim.gif\" alt=\"sending data, please wait...\">";
newPhoneForm = newPhoneForm + "      <br>Sending...";
newPhoneForm = newPhoneForm + "    </div>";
newPhoneForm = newPhoneForm + "    <div id=\"msgSend" + i + "\" style=\"display:none; text-align:left;\"><br/><br/>";
newPhoneForm = newPhoneForm + "	   <span style=\"font-size:1.0em;\"><b>Your text message was successfully sent!</b></span><br/>";
//newPhoneForm = newPhoneForm + "      <span id=\"clientSendInfo" + i + "\" style=\"font-size:1.0em;\">" + businessNameLocal + " was sent to " + formatPhone + "</span><br /><br />";
newPhoneForm = newPhoneForm + "     <br />";
newPhoneForm = newPhoneForm + "      <span class=\"smsNote\">DexKnows&#169; SMS: To opt out at any time, text STOP to 64628. To receive more information, text HELP to 64628.</span><br/><br/>";
newPhoneForm = newPhoneForm + "      <span class=\"smsNote\">Not all handset models are supported. Standard message charges apply. Account holder authorizes charges to appear on wireless bill or be deducted from prepaid balance.</span>";
//newPhoneForm = newPhoneForm + "      <span style=\"color:Gray;font-size:.7em; line-height:.9;\">To opt out at any time text STOP to DexNow (339669)</span><br />";
//newPhoneForm = newPhoneForm + "      <span style=\"color:Gray;font-size:.7em;line-height:.9;\">To receive more information, text HELP to DexNow (339669)</span>";
newPhoneForm = newPhoneForm + "    </div>";        
newPhoneForm = newPhoneForm + "    <div id=\"phoneMsgDetail" + i + "\" class=\"phoneMsgDetail\">";
newPhoneForm = newPhoneForm + "    <form id=\"phoneForm" + i + "\">";
newPhoneForm = newPhoneForm + "    <input type=\"hidden\" name=\"bid\" value=\"" + bid + "\"/>";
newPhoneForm = newPhoneForm + "    <input type=\"hidden\" name=\"pdt\" value=\"" + listingType + "\"/>";
newPhoneForm = newPhoneForm + "    <input type=\"hidden\" name=\"adcatid\" value=\"" + listingCategoryId + "\"/>";
newPhoneForm = newPhoneForm + "    <input type=\"hidden\" name=\"adgeoid\" value=\"" + listingGeoId + "\"/>";
newPhoneForm = newPhoneForm + "    <input type=\"hidden\" name=\"dkzone\" value=\"" + listingZone + "\"/>";
newPhoneForm = newPhoneForm + "    <input type=\"hidden\" name=\"pass\" value=\"\"/>";
newPhoneForm = newPhoneForm + "    <input type=\"hidden\" name=\"relr\" value=\"" + listingRelr + "\"/>";
newPhoneForm = newPhoneForm + "    <input type=\"hidden\" name=\"absr\" value=\"" + listingAbsr + "\"/>";
newPhoneForm = newPhoneForm + "    <input type=\"hidden\" name=\"dkitem\" value=\"" + listingItemId + "\"/>";
newPhoneForm = newPhoneForm + "    <input type=\"hidden\" id=\"businessNameForPhone\" value=\"" + businessNameLocal + "\"/>";
newPhoneForm = newPhoneForm + "    <span class=\"busName\">" + businessNameLocal + "</span>";
if (street != "" && city != "" && state != "") {
//http://support.dexknows.com/browse/DKCOM-599
street = unescape(String(street).replace(lsRegExp, " "));
newPhoneForm = newPhoneForm + "    <div>" + street;
if (zipcode != "") {
newPhoneForm = newPhoneForm + "<br/>" + city + ", " + state + " " + zipcode + "</div>";
}
else {
newPhoneForm = newPhoneForm + "<br/>" + city + ", " + state + "</div>";
}
}
if (phoneNumber != "") {
if (street == "" || city == "" || state == "") {
newPhoneForm = newPhoneForm + "<br/>"
}
newPhoneForm = newPhoneForm + "    <span class=\"phoneNum\">" + phoneNumber + "</span><br/>";
}
newPhoneForm = newPhoneForm + "    <div class=\"phoneMsg\" id=\"phoneMsg" + i + "\"></div>";
newPhoneForm = newPhoneForm + "        <div class=\"phoneTo\">";
newPhoneForm = newPhoneForm + "        <input type=\"text\" name=\"phone\" value=\" " + userphone + "\"/>";
newPhoneForm = newPhoneForm + "        </div>";
newPhoneForm = newPhoneForm + "      <span class=\"smsNote\">DexKnows&#169; SMS: To opt out at any time, text STOP to 64628. To receive more information, text HELP to 64628.</span><br/><br/>";
newPhoneForm = newPhoneForm + "      <span class=\"smsNote\">Not all handset models are supported. Standard message charges apply. Account holder authorizes charges to appear on wireless bill or be deducted from prepaid balance.</span><br/><br/>";
newPhoneForm = newPhoneForm + "      <span><input type=\"checkbox\" name=\"termOfUsePhone\" id=\"termOfUsePhone\" value=\"true\">&nbsp;I agree to the <a href=\"#\" onclick=\"window.open( '/info/site_use.asp', 'SiteUse', 'dependent=1,status=0,copyhistory=0,directories=0,location=0,menubar=0,resizeable=0,scrollbars=yes,width=1060,height=350'); return false;\" rel=\"site use\">Terms and Conditions.</a></span><br/><br />";
//newPhoneForm = newPhoneForm + "      <span>DexKnows&copy; SMS: To opt out at any time, text STOP to 64628. To receive more information, text HELP to 64628.</span><br/>";
//newPhoneForm = newPhoneForm + "      <span>Not all handset models are supported. Standard message charges apply. Account holder authorizes charges to appear on wireless bill or be deducted from prepaid balance.</span><br/><br/>";
newPhoneForm = newPhoneForm + "        <input id=\"sendBotton" + i + "\" style=\"display:block;\" type=\"image\" src=\"/images/but_sendphone.gif\" value=\"Send\" onClick=\"send2PhoneModify(" + i + ");return false;\"/>";
//newPhoneForm = newPhoneForm + "        <div class=\"smsNote\">The DexKnows&#0174; SMS features are free, but standard text charges may apply depending on your carrier and phone plan. Not all carriers are currently supported.</div>";
newPhoneForm = newPhoneForm + "        </form>";
newPhoneForm = newPhoneForm + "    </div>";
newPhoneForm = newPhoneForm + "    </div><!--end body-->";
newPhoneForm = newPhoneForm + "    <div class=\"highslide-footer\"><div><span class=\"highslide-resize\" title=\"Resize\"><span></span></span></div></div>";
newPhoneForm = newPhoneForm + "<br/>"    
newPhoneForm = newPhoneForm + "</div>"
$("#listing" + i).append(newPhoneForm);
//$("input[name=phone]").mask("(999) 999-9999");
//$("input[name=phone]").val( userphone );
//document.getElementById("listing" + i).innerHTML += newPhoneForm;
//document.getElementById("enter").innerHTML += newPhoneForm;
}
//using height:"auto" won't work on ie 7
//if not define height, it won't work on ie 6
hs.htmlExpand(obj, { contentId: "Phone-html" + i, height: 360 });
//hs.htmlExpand(obj, { contentId: "Phone-html" + i });
return false;
//hs.htmlExpand(this,{ numberPosition: 'none', objectType: 'iframe', width: 650, height: 400});
}
function send2PhoneModify(i) {
var formatPhone = document.getElementById("phoneForm" + i).phone.value;
var bid = document.getElementById("phoneForm" + i).bid.value;
var pdt = document.getElementById("phoneForm" + i).pdt.value;
var adcatid = document.getElementById("phoneForm" + i).adcatid.value;
var adgeoid = document.getElementById("phoneForm" + i).adgeoid.value;
var dkzone = document.getElementById("phoneForm" + i).dkzone.value;
var pass = document.getElementById("phoneForm" + i).pass.value;
var relr = document.getElementById("phoneForm" + i).relr.value;
var absr = document.getElementById("phoneForm" + i).absr.value;
var dkitem = document.getElementById("phoneForm" + i).dkitem.value;
var businessNameForPhone = document.getElementById("phoneForm" + i).businessNameForPhone.value;
//var isRemember = document.getElementById("phoneForm" + i).remember.checked;
var isAgree = document.getElementById("phoneForm" + i).termOfUsePhone.checked;
var phone = formatPhone.replace("(", "").replace(")", "").replace(" ", "").replace("-", "").replace("\s", "");
var errorMessage = "";
if ( phone.length != 10 )
{
errorMessage = "Please insert a valid cell phone number.<br>";
}
if ( !isAgree )
{
errorMessage = errorMessage + "You must agree to the Term and Conditions.";
}
if (errorMessage != "") {
document.getElementById("phoneMsg" + i).innerHTML = errorMessage;
return false;
}
$("#phoneMsg" + i ).html("");
$("#phoneMsg" + i).hide();
$("#phoneloading" + i).show();
$("#phoneMsgDetail" + i).hide();
//document.getElementById("phoneMsg" + i).innerHTML = "";
var pars = "to=" + phone + "&bid=" + bid + "&dkdt=" + dkdt + "&dkcat=" + dkcat + "&dkgeo=" + dkgeo;
pars += "&adcatid=" + adcatid + "&adgeoid=" + adgeoid + "&dkzone=" + dkzone + "&mkt=" + mkt;
pars += "&mkw=" + mkw + "&partner=" + partner + "&pass=" + pass + "&dkq=" + dkq;
pars += "&baseurl=" + escape(baseurl) + "&referer=" + referer + "&dkitem=" + dkitem + "&pdt=" + pdt;
pars += "&pgt=" + pgt + "&absr=" + absr + "&relr=" + relr + "&dks=" + dks;
var url = "/service/send2phone.asp?" + pars;
/*
if (isRemember) {
createCookie("userphone", phone, 30);
} else {
eraseCookie("userphone");
}
*/
createCookie("userphone", phone, 30);
var timeOut = setTimeout(function() {
errorMessage = "Send Fail, please try again later.";
$("#msgSend" + i).hide();
$("#phoneloading" + i).fadeOut("fast");
$("#phoneMsg" + i).html(errorMessage);
$("#phoneMsg" + i).show();
$("#phoneMsgDetail" + i).show();
}, 10000);
$.getJSON(url,
function(response) {
if (response.status == "success") {
window.clearTimeout(timeOut);
$("#phoneloading" + i).fadeOut("fast");
$("#phoneMsgDetail" + i).hide();
$("#msgSend" + i).show();
$("#clientSendInfo" + i).html(businessNameForPhone + " was sent to " + formatPhone);
$("#phoneMsg" + i).html("");
$("#phoneMsg" + i).hide();
} else if (response.status == "failed") {
window.clearTimeout(timeOut);
$("#msgSend" + i).hide();
$("#phoneloading" + i).fadeOut("fast");
$("#phoneMsg" + i).html(response.message);
$("#phoneMsg" + i).show();
$("#phoneMsgDetail" + i).show();
} else {
window.clearTimeout(timeOut);
$("#msgSend" + i).hide();
$("#phoneloading" + i).fadeOut("fast");
$("#phoneMsg" + i).html(response.message);
$("#phoneMsg" + i).show();
$("#phoneMsgDetail" + i).show();
//alert(req.responseText);
}
});
}
function mapViewSend2Phone() {
var formatPhone = $("#mapViewSend2Phone_to").val();
var phone = formatPhone.replace("(", "").replace(")", "").replace(" ", "").replace("-", "").replace("\s", "");    
var bid = currentPinPopupPoint.encoded_businessid;
//var pars = "to=" + phone + "&bid=" + bid;
//var url = "/service/send2phone.asp?" + pars;
var errorMessage = "";
if (phone.length != 10) {
alert("Please insert a valid cell phone number.");
return false;
}
var isAgree = $("#mapViewTermOfUsePhone").is(":checked");
if (!isAgree) {
alert("You must agree to the Term and Conditions.");
return false;
}
var pars = "to=" + phone + "&bid=" + bid + "&dkdt=" + dkdt + "&dkcat=" + dkcat + "&dkgeo=" + dkgeo;
pars += "&mkt=" + mkt;
pars += "&mkw=" + mkw + "&partner=" + partner + "&dkq=" + dkq;
pars += "&baseurl=" + escape(baseurl);
pars += "&pgt=" + pgt + "&dks=" + dks;
var url = "/service/send2phone.asp?" + pars;
$.getJSON(url,
function(response){
alert(response.status);
//          	if (response.status == "success") {
//				document.getElementById("_phone" + i).style.display = 'block';
//				document.getElementById("phoneForm" + i).style.display = 'none';
//				document.getElementById("sent" + i).style.display = 'block';
//				document.getElementById("phoneMsg" + i).innerHTML = "";
//			} else if (response.status == "failed"){
//				document.getElementById("phoneMsg" + i).innerHTML = response.message;
//			} else {
//				alert(req.responseText);
//			}
});
}
function profileSend2Phone() {
var phone = $("#profileSendToPhone_to").val();
var dkid = $("#dkid").val();
var pbizid = $("#pbizid").val();
var pgt = $("#pgt").val();
var pdt = $("#pdt").val();
var dkdt = $("#dkdt").val();
var dkcat = $("#dkcat").val();
var dkgeo = $("#dkgeo").val();
var dkzone = $("#dkzone").val();
var dkloc = $("#dkloc").val();
var mkt = $("#mkt").val();
var mkw = $("#mkw").val();
var partner = $("#partner").val();
var pass = $("#pass").val();
var dkq = $("#dkq").val();
var baseurl = $("#baseurl").val();
var dkitem = $("#dkitem").val();
var ref = $("#referer").val();
var pars = "to=" + phone + "&bid=" + businessId + "&pbizid=" + pbizid + "&pgt=" + pgt + "&pdt=" + pdt;
pars += "&dkcat=" + dkcat + "&dkgeo=" + dkgeo + "&dkzone=" + dkzone;
pars += "&dks=" + dks + "&dkloc=" + dkloc + "&mkt=" + mkt + "&dkdt=" + dkdt;
pars += "&mkw=" + mkw + "&partner=" + partner + "&pass=" + pass;
pars += "&dkq=" + dkq + "&baseurl=" + baseurl + "&dkitem=" + dkitem + "&ref=" + ref;
var url = "/service/send2phone.asp?" + pars;
$.getJSON(url,
function(response){
if (response.status=="success") {
hs.close();
} else {
alert("Error: " + response.message);
}
});
}
function profileSend2PhoneModify() {
var formatPhone = $("#profileSendToPhone_to").val();
var dkid = $("#dkid").val();
var pbizid = $("#pbizid").val();
var pgt = $("#pgt").val();
var pdt = $("#pdt").val();
var dkdt = $("#dkdt").val();
var dkzone = "7.mw.act.1";
var dkloc = $("#dkloc").val();
var mkt = $("#mkt").val();
var mkw = $("#mkw").val();
var partner = $("#partner").val();
var pass = $("#pass").val();
var dkq = $("#dkq").val();
var baseurl = $("#baseurl").val();
var dkitem = $("#dkitem").val();
var ref = referer;
var businessNameForPhone = $("#businessNameForPhone").val();
//var isRemember = $("#remember").is(":checked");
var isAgree = $("#termOfUsePhone").is(":checked");
var phone = formatPhone.replace("(", "").replace(")", "").replace(" ", "").replace("-", "");
var pars = "to=" + phone + "&bid=" + businessId + "&pbizid=" + pbizid + "&pgt=" + pgt + "&pdt=" + pdt;
pars += "&dkcat=" + dkcat + "&dkgeo=" + dkgeo + "&dkzone=" + dkzone;
pars += "&dks=" + dks + "&dkloc=" + dkloc + "&mkt=" + mkt + "&dkdt=" + dkdt;
pars += "&mkw=" + mkw + "&partner=" + partner + "&pass=" + pass;
pars += "&dkq=" + dkq + "&baseurl=" + baseurl + "&dkitem=" + dkitem + "&referer=" + ref;
var url = "/service/send2phone.asp?" + pars;    
var errorMessage = "";
if (phone.length != 10) {
errorMessage = "Please insert a valid cell phone number.<br>";
}
if (!isAgree) {
errorMessage = errorMessage + "You must agree to the Term and Conditions.";
}
if (errorMessage != "") {
$("#phoneMsg").html(errorMessage);
//document.getElementById("phoneMsg").innerHTML = errorMessage;
return false;
}
$("#phoneMsg").html("");
$("#phoneMsg").hide();
$("#phoneloading").show();
$("#phoneMsgDetail").hide();
//$("#phoneloading").visible();
createCookie("userphone", phone, 30);
var timeOut = setTimeout(function() {
errorMessage = "Send Fail, please try again later.";
$("#phoneloading").fadeOut("fast");
$("#msgSend").hide();
$("#phoneMsg").html(errorMessage);
$("#phoneMsg").show();
$("#phoneMsgDetail").show();
}, 10000);
$.getJSON(url,
function(response) {
if (response.status == "success") {
window.clearTimeout(timeOut);
//$("#sendBotton").css("display", "none");
$("#phoneMsgDetail").hide();
$("#msgSend").show();
$("#clientSendInfo").html(businessNameForPhone + " was sent to " + formatPhone);
$("#phoneMsg").html("");
$("#phoneMsg").hide();
$("#phoneloading").fadeOut("fast");
} else {
window.clearTimeout(timeOut);
$("#phoneloading").fadeOut("fast");
$("#msgSend").hide();
$("#phoneMsg").html(response.message);
$("#phoneMsg").show();
$("#phoneMsgDetail").show();
}
});  
}
function validate(email) {
var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
//var emailRegxp = /^([\w]+)(.[\w]+)*@([\w]+)(.[\w]{2,3}){1,2}$/;
return reg.test(email);
}
function rateReview() {
var rating = $("input[@name=star1]").val();    
var title = $("#reviewTitle").val();
var comments = $("#reviewComments").val();
var email = $("#reviewEmail").val();
var bid = $("#bid").val();
var lid = $("#lid").val();
var source = $("#source").val();
var alias = $("#alias").val();
var termOfUse = $("#termOfUse").is(":checked");
//$('#edit-checkbox-id:checked').val()
errorMessage = ""
if (rating == "") {
errorMessage = errorMessage + "\nA rating is required.  Please choose a star rating for this business."
$("#rateItRedAst").show();
$("#rateItNormalAst").hide();
}
else {
$("#rateItRedAst").hide();
$("#rateItNormalAst").show();
}
if (title == "") {
errorMessage = errorMessage + "\nMissing Title.";
$("#titleRedAst").show();
$("#titleNormalAst").hide();  
}
else {
$("#titleRedAst").hide();
$("#titleNormalAst").show();  
}
if (comments == "") {
errorMessage = errorMessage + "\nMissing Comments.";
$("#commentsRedAst").show();
$("#commentsNormalAst").hide();          
}
else {
$("#commentsRedAst").hide();
$("#commentsNormalAst").show();  
}
if (alias == "") {
errorMessage = errorMessage + "\nMissing Alias.";
$("#aliasRedAst").show();
$("#aliasNormalAst").hide();          
}
else {
$("#aliasRedAst").hide();
$("#aliasNormalAst").show();
}
if (!validate(email))
{
errorMessage = errorMessage + "\nInvalid email format.";
$("#emailRedAst").show();
$("#emailNormalAst").hide();           
}
else {
$("#emailRedAst").hide();
$("#emailNormalAst").show();
}
if (!jcapNoAlert())
{
errorMessage = errorMessage + "\nThe code you provided is incorrect.  Please try again.";
$("#codeRedAst").show();
$("#codeNormalAst").hide();           
}
else {
$("#codeRedAst").hide();
$("#codeNormalAst").show();
}
if (!termOfUse) {
errorMessage = errorMessage + "\nPlease agree to the review guidelines upon submission.";
$("#termOfUseRedAst").show();
$("#termOfUseNormalAst").hide();
}
else{
$("#termOfUseRedAst").hide();
$("#termOfUseNormalAst").show();
}     
if (errorMessage != "") {
$("#reviewFormErrors").html("<img alt=\"Error\" src=\"/images/misc_error.png\"/><span class=\"textTitle\">Required field(s) missing.\n<\/span><div class=\"clearer\"/><p class=\"textMessage\">" + errorMessage.replace(/(\n)(.+)/g, "$2<br/>") + "</p>").filter(":hidden").fadeIn("normal");
//$("#reviewFormErrors").html("<span>Required fields missing.</span>" ).fadeIn("normal");
$("#reviewFormErrors").focus();
/*
DispWin = window.open('', 'NewWin', 'toolbar=no,status=no,width=300,height=200,directories=no,location=no');
msg = "<h3>Please fill in the following fields:\n<\/h3><ul>" + errorMessage.replace(/(\n)(.+)/g, "<li>$2<\/li>") + "<\/ul>";
var myWidth = screen.width / 2;
var myHeight = screen.height / 2;
DispWin.moveTo(myWidth, myHeight);
DispWin.document.write(msg);
*/
return false;
}
$("#reviewFormErrors").html("");
$("#reviewFormErrors").hide();
var pars = "bid=" + bid + "&lid=" + lid + "&rating=" + rating + "&email=" + email + "&title=" + title + "&comments=" + comments + "&source=" + source + "&alias=" + alias;
var url = "/service/amsreviewproxy.asp?" + pars;
//alert (url);
//var url = "/service/amsreviewproxy.asp?"
$.ajax({
url: url,
type: 'GET',
timeout: 6000,
error: function() {
alert("Error: Unable to submit. Please try again later.");
},
success: function(xml) {
warningString = xml.substring(0, 7);
if (xml == "success") {
try { formComplete = true; } catch (e) { }
try { sjcap(); } catch (e) { }
$("#writeReview").hide();
document.location = "#openReview";
alert("Thank you for submitting your review! Your review will be posted within in a week upon adherence to the review quidelines.");
}
else if (xml.inst == "profanity") {
try { formComplete = true; } catch (e) { }
try { sjcap(); } catch (e) { }
$("#writeReview").hide();
document.location = "#openReview";
alert("Thank you for submitting your review! Your review will be posted within in a week upon adherence to the review quidelines.");
}
//add DKCOM-551
else if (warningString == "warning") {
returnMessage = xml.substring(xml.indexOf(" - ") + 3);
alert("Thank you for submitting your review! Your review will be posted within in a week upon adherence to the review quidelines.  " + returnMessage);
$("#writeReview").hide();
document.location = "#openReview";
}
//finish add DKCOM-551
else {
alert("Error: Unable to submit. Please try again later.");
}
}
});    
}
function checkAndClearTargetContent(textarea, targetId, targetDefaulText) {
var text = $.trim(textarea.value);
if (text.length > 0 && $('#' + targetId).val() == targetDefaulText) {
$('#' + targetId).val('');
}
}
function reviewCounter(textarea, tagId) {
var text = textarea.value;
var textlength = text.length;
var max = textarea.getAttribute('maxlength');
$('#' + tagId).html("<span style=\"color:blue;\">" + textlength + "</span>/" + max + "");
}
function profileSendVendorEmail() {
var name = $("#emailVendor_name").val();
var email = $("#emailVendor_email").val();
var message = $("#emailVendor_message").val();
var pdt = $("#pdt").val();
var pbizid = $("#pbizid").val();
var baseurl = $("#baseurl").val();
var ref = referer;
var baseurl = $("#baseurl").val();
var mkt = $("#mkt").val();
var mkw = $("#mkw").val();
var partner = $("#partner").val();
var pass = $("#pass").val();
var dkq = $("#dkq").val();
var dkdt = $("#dkdt").val();
var dkitem = $("#dkitem").val();
var businessName = $("#businessNameForEmail").val(); 
var dkzone = "7.mw.act.1";
var pars = "bid=" + businessId + "&email=" + email + "&name=" + name + "&message=" + message + "&pdt=" + pdt + "&dks=" + dks + "&partner=" + partner + "&dkdt=" + dkdt + "&pbizid=" + pbizid + "&ref=" + ref + "&baseurl=" + baseurl + "&mkt=" + mkt + "&mkw=" + mkw + "&dkitem=" + dkitem + "&dkq=" + dkq + "&pass=" + pass + "&dkzone=" + dkzone + "&dkloc=" + dkloc + "&dkcat=" + dkcat + "&dkgeo=" + dkgeo;	
var url = "/service/emailVendor.asp?" + pars;
var errorMessage = "";
if (name == "") {
errorMessage = errorMessage + "\nPlease enter your name.";
}
if (!validate(email)) {
errorMessage = errorMessage + "\nInvalid email format.";
}
if (message == "") {
errorMessage = errorMessage + "\nPlease type your message.";
}
if (errorMessage != "") {
$("#emailMsg").html(errorMessage.replace(/(\n)(.+)/g, "$2<br/>") + "</p>").filter(":hidden").fadeIn("normal");
$("#emailMsg").focus();	
//document.getElementById("phoneMsg").innerHTML = errorMessage;
return false;
}
$.getJSON(url, function(response) {
if (response.status=="success") {
$("#emailMsgDetail").hide();
$("#emailSend").show();
$("#emailMsg").html("");
$("#emailMsg").hide();
} else {
$("#phoneMsg").html(response.message);
alert("Error: " + response.message);
}
});
}
function qs() {
var query = window.location.search.substring(1);
var parms = query.split("&");
for (var i = 0; i < parms.length; i++) {
var pos = parms[i].indexOf("=");
if (pos > 0) {
var key = parms[i].substring(0, pos);
var val = parms[i].substring(pos + 1);
qsParams[key] = val;
}
}
}
function ajaxError(status, statusText, responseText) {
alert("Status: " + status + ", StatusText:" + statusText);
}
function markerAlwaysOnTop(marker, b) {
return 0;
}
function createMarker(i, point, isHoverMarker) {
var isMarkerOnTop = false;
if (typeof(isHoverMarker) != "undefined") {
isMarkerOnTop = isHoverMarker;
}
var latlng = new google.maps.LatLng(point.latitude, point.longitude);
var letter = String.fromCharCode("A".charCodeAt(0) + parseInt(point.index));
var letteredIcon = new google.maps.Icon(baseIcon);
if (point.type=="profile") {
letteredIcon.image = "/images/map/mapPinStar.PNG";
} else if (isMarkerOnTop){
letteredIcon.image = "/images/mapPinOn" + letter + ".png";
} else {
letteredIcon.image = "/images/mapPin" + letter + ".png";
}
// Set up our GMarkerOptions object
if (isMarkerOnTop) {
markerOptions = {icon:letteredIcon, zIndexProcess:markerAlwaysOnTop};
} else {
markerOptions = {icon:letteredIcon, zIndexProcess:markerAlwaysOnTop};
}
var marker = new google.maps.Marker(latlng, markerOptions);
marker.value = i;
if (point.type!="neighborhood" && !isMarkerOnTop) {
google.maps.Event.addListener(marker, "click", function () {
marker.setImage("/images/mapPinOn" + letter + ".png");
showPinInfoWindow(point);
});
if (point.type!="profile") {
google.maps.Event.addListener(marker, "mouseover", function () {
marker.setImage("/images/mapPinOn" + letter + ".png");
$('.listPin' + (parseInt(point.index)+1)).trigger("mouseover");
});
google.maps.Event.addListener(marker, "mouseout", function () {
marker.setImage("/images/mapPin" + letter + ".png");
$('.listPinOn' + (parseInt(point.index)+1)).trigger("mouseout");
});
if (viewmode=="map") {
google.maps.Event.addListener(marker, "click", function () {
marker.setImage("/images/mapPinOn" + letter + ".png");
showPinInfoWindow(point);
if (clickedMarker!=null) {
map.removeOverlay(clickedMarker);
}
clickedMarker = createMarker(i, points[i], true);
map.addOverlay(clickedMarker);
});
} else {
google.maps.Event.addListener(marker, "click", function () {
gt(false, 1, point.pdt , point.dkzone , point.dkid , point.dkitem , point.adcatid , point.adgeoid , '', point.pass , point.relr , point.absr, point.profileurl);
});
}
}
}
return marker;
}
function renderPoints() {
var bounds = new google.maps.LatLngBounds();
var pointsExist = false;
// Render points in reverse order so that points for listings 
// rendered first are always on top
for (i = points.length; i > -1; i--) {
if (points[i]!=null) {
pointsExist = true;
var point = new google.maps.LatLng(points[i].latitude, points[i].longitude);
var marker = new google.maps.Marker(point);
mapMarkers[i] = createMarker(i, points[i])
map.addOverlay(mapMarkers[i]);
// Extend it to cover all your points
bounds.extend(new google.maps.LatLng(points[i].latitude, points[i].longitude));
} else {
mapMarkers[i] = null;
}
}
if (pointsExist) {
if (qsParams["z"]) {
var ctr = new google.maps.LatLng(qsParams["clat"], qsParams["clng"]);
map.setCenter(ctr, parseInt(qsParams["z"]));
//alert("map Zoom Level: " + parseInt(map.getZoom()));
} else {
// Position map at centre of bounds and set zoom to include include them all
if (points.length > 1) {
map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
zoomOut();
} else {
if (typeof(saPolygons)!="undefined" && saPolygons.length > 0) {
if (locationServiceType == "location") {
map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds)-2);
}
} else {
// do not zoom to point
map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds)-2);
}
}
}
}
}
function renderNeighborhoods() {
for (i = 0; i < neighborhoods.length; i++) {
var latlng = new Array();
for (j = 0; j < neighborhoods[i].polygon.length; j++) {
latlng.push(new google.maps.LatLng(neighborhoods[i].polygon[j].latitude, neighborhoods[i].polygon[j].longitude));
}
var polygon = new google.maps.Polygon(latlng, "#3333ff", 2, 0.75, "#3366cc", 0.2);
polygonOverlays.push(polygon);
map.addOverlay(createNHMarker({'index': i, 'id': neighborhoods[i].id, 'name': neighborhoods[i].name, 'latitude': neighborhoods[i].latitude, 'longitude': neighborhoods[i].longitude}));
}
}
function drawPolygons(){
if (typeof(saPolygons)!="undefined") {
var bounds = new google.maps.LatLngBounds();
for (i = 0; i < saPolygons.length; i++) {
var latLngs = new Array();
var polyPoints = saPolygons[i]; 
for (j = 0; j < polyPoints.length; j++) {
var p = polyPoints[j];
var polyPoint = new google.maps.LatLng(parseFloat(p.lat), parseFloat(p.lng));
try {
latLngs.push(polyPoint);
bounds.extend(polyPoint);
} catch (err) {}
}
if (typeof(pgt)!="undefined" && pgt == "8") {
// Don't draw the polygon for sitemap pages-- just extend the bounds (above)
} else if (typeof(pgt)!="undefined" && pgt == "9") {
// Don't draw the polygon for metro pages
} else if (typeof(pgt)!="undefined" && typeof(dkgeo)!="undefined" && pgt == "3" && dkgeo.indexOf("m%2D") == 0) {
// Don't draw the polygon for metro fidget pages
} else if (typeof(pgt)!="undefined" && pgt == "7") {
// Dont draw polygons on profile page
} else {
try {
poly = new GPolygon(latLngs, "#0000ff", 1, 1, "#0000ff", 0.2);
if (saPolygons.length <= 20 || poly.getArea() > 10000000) {
drawMapPolygon(poly, i);
}
} catch (err) {}
}
}
try {
map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
} catch (err) {}
}
}
function drawMapPolygon(p, i) {
setTimeout(function() {map.addOverlay(p)}, (i * 10));
}
function addPoint(r) {
points.push(r);
}
function redoSearchInCurrentView() {
if (map) {
var zoom = map.getZoom();
var bounds = map.getBounds();
var sw = bounds.getSouthWest();
var ne = bounds.getNorthEast();
var c = map.getCenter();
if (zoom < 11) {
alert("Radius too high, please zoom in more!");
} else {
if (qsParams && qsParams["what"]) {
sParams = "what=" + qsParams["what"] + "&distance=" + qsParams["distance"] + "&view=map"; 
} else {
strUrl = document.location.href;
urlParts = strUrl.split("/");
var what = urlParts[4].replace(/\_/g, " ");
sParams = "what=" + what + "&distance=0&view=map"; 
}
var vbParams = "swlat=" + sw.lat() + "&swlng=" + sw.lng() + "&nelat=" + ne.lat() + "&nelng=" + ne.lng() + "&z=" + zoom;
var cParams = "clat=" + c.lat() + "&clng=" + c.lng();
var sUrl = "/search/?" + sParams + "&" + vbParams + "&" + cParams;
document.location.href=sUrl;
}
}
}
function updateMapStatus() {
if (map) {
var zoom = map.getZoom();
var bounds = map.getBounds();
var sw = bounds.getSouthWest();
var ne = bounds.getNorthEast();
var c = map.getCenter();
$('mapStatus').innerHTML = "z: " + zoom + "<br/>sw.lat: " + sw.lat() + "<br/>sw.lng: " + sw.lng() + "<br/>ne.lat: " + ne.lat() + "<br/>ne.lng: " + ne.lng();
} 
}
function newEventPassthru(obj, event) {
return function() { 
google.maps.Event.trigger(obj, event);
};
}
function addPolygonOverlay(i) {
map.addOverlay(polygonOverlays[i]);
}
function removePolygonOverlay(i) {
map.removeOverlay(polygonOverlays[i]);
}
computeAngle = function (T, O) {
//GLog.write("Computing Angle from " + T + " to " + O); 
var R = Math.PI / 180;
var J = 180 / Math.PI;
var K = O.lat() - T.lat();
var M = O.lng() - T.lng();
var yaw = Math.atan2(M * Math.cos(O.lat() * R), K) * J;
return wrapAngle(yaw);
};
wrapAngle = function (B) {
//GLog.write("Before WrapAngle: " + B);
if (B >= 360) {
B -= 360;
} else {
if (B < 0) {
B += 360;
}
}
//GLog.write("After WrapAngle: " + B);
return B;
};
function zoomOut() {
try {
if (map.getZoom() > MINIMUM_ZOOM_LEVEL) {
map.zoomOut();
}
} catch (err) {
}
}
function zoomIn() {
try {
map.zoomIn();
} catch (err) {
}
}
//SET POSITION OF MAP POPUP PROFILE BOX
function showPinInfoWindow(point) { /*takes the onclick event and the direction the arrow should poing (i.e. opposite of which side box is on)*/
try {
var latlng = new google.maps.LatLng(point.latitude, point.longitude);
currentPinPopupPoint = point;
// If latlng is outside the bounds of the map, pan map to that location using the current zoom
var sw = map.getBounds().getSouthWest();
var ne = map.getBounds().getNorthEast();
if (latlng.lng() < sw.lng() || latlng.lng() > ne.lng() || latlng.lat() < sw.lat() || latlng.lat() > ne.lat()) {
if (panIfOutOfBounds) {
map.setCenter(latlng, map.getZoom());
} else {
hidePinInfoWindow();
return;
}
}
var p = map.fromLatLngToContainerPixel(latlng);
var offset = document.getElementById('mapcanvas').offsetLeft;
x = p.x + offset;
y = p.y + getY(document.getElementById('mapcanvas')) -15;
if(document.getElementById) {
var arrow = document.getElementById("mapPopArrow");
var box = document.getElementById("mapPopBody");
//var shadow = document.getElementById("mapPopShdw");
/* get offset position of screen in case page has been scrolled */
var scrollTop = window.pageYOffset || document.documentElement.scrollTop || 0;
var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || 0;
//			GLog.write ("ScrollTop: " + scrollTop);
//			GLog.write ("ScrollLeft: " + scrollLeft);
//			GLog.write ("y: " + y);
//			GLog.write ("x: " + x);
//			GLog.write ("arrow.style.top: " + (y + scrollTop - 20));
var fnPGT = "gt(false, 1, '" + point.pdt + "', '" + point.dkzone + "', '" + point.dkid + "', '" + point.dkitem + "', '" + point.adcatid + "', '" + point.adgeoid + "', '', '" + point.pass + "', '" + point.relr + "', '" + point.absr + "', this.href)";
var fnWGT = "gt(true, 2, '" + point.pdt + "', '" + point.dkzone + "', '" + point.dkid + "', '" + point.dkitem + "', '" + point.adcatid + "', '" + point.adgeoid + "', '', '" + point.pass + "', '" + point.relr + "', '" + point.absr + "', this.href)";
var html =  "<span class='right' style='margin-bottom:3px;'><a href='' onclick='return hidePinInfoWindow(true)'><img src=\"/images/close_x.png\"/></a></span><br class='clear'/>";
if (point.logolocation.length > 0) html = html + "<img src=\"" + point.logolocation + "\" class=\"right\">"; 
html = html + "<a class=\"imprtnt\" onclick=\"return " + fnPGT + "\" href=\"" + point.profileurl + "\">"  + unescape(String(point.name).replace(lsRegExp, " ")) + "</a>";
if (point.rating > 0 ) {
html = html +  "<br><img src=\"/images/stars" + point.rating + ".gif\"> <a href=\"" + point.profileurl + "#reviews\">" + point.reviewscount + " Reviews</a>";
}
if (point.phone.length > 0) html = html + "<br><span class=\"imprtnt\">" + point.phone + "</span>";
if (point.street.length > 0) html = html + "<br>" + point.street;  
if (point.city.length > 0) html = html + "<br><b>Address:</b> " + point.city + ", " + point.state;
//if (point.specials.length > 0) html = html + "<br><span class=\"promo\">" + point.specials + "</span>";
//if (point.tagline.length > 0)  html = html + "<br>" + point.tagline;
// gt(openNewWindow, act, pdt, dkzone, dkid, dkitem, adcatid, adgeoid, pbizid, pass, relr, absr, dku)
noReview = (point.categoryprettyname != "" && (point.categoryprettyname.indexOf("Abortion") > -1 || point.categoryprettyname.indexOf("Adult Entertainment") > -1 ) ) ||
(baseurl != "" && (unescape(baseurl).indexOf("/abortion/") > -1 || unescape(baseurl).indexOf("/adult_entertainment/") > -1));
html = html + "<div id='mapWin_send2phone' style='display:none;width: 318px; margin-top:10px;'>" +
"<img class='popIcon vMid' src=\"/images/icon_phone.gif\" alt=\"phone icon\"/><h2 class='popHd'>Send To Phone</h2>" +
"<form onSubmit='mapViewSend2Phone(); return false;'><input type='text' id='mapViewSend2Phone_to' size='30' maxlength='14' style='padding:3px;'>" +
"<a class='ml6' href='#' id='mapWin_send2phoneCancel'>[Cancel]</a>" +
"<div class=\"smsNote\">DexKnows&#169; SMS: To opt out at any time, text STOP to 64628. To receive more information, text HELP to 64628.<br/><br/>" +
"Not all handset models are supported. Standard message charges apply. Account holder authorizes charges to appear on wireless bill or be deducted from prepaid balance.</div><br/>" +
"<span><input type=\"checkbox\" name=\"mapViewTermOfUsePhone\" id=\"mapViewTermOfUsePhone\" value=\"true\">&nbsp;I agree to the <a href=\"#\" onclick=\"window.open( '/info/site_use.asp', 'SiteUse', 'dependent=1,status=0,copyhistory=0,directories=0,location=0,menubar=0,resizeable=0,scrollbars=yes,width=1060,height=350'); return false;\" rel=\"site use\">Terms and Conditions.</a></span><br/>" +
"<br><input type='image' src=\"/images/but_sendphone.gif\"/> <br/>" +
"</form>" + 
//"<div class=\"smsNote\">The DexKnows&reg; SMS features are free, but standard text charges may apply depending on your carrier and phone plan. Not all carriers are currently supported.</div></form>" + 
"</div>" +
"<div id='mapWin_mapTools' class='mapTools' style='overflow: hidden; width:318px;'>";
if (noReview){
html = html + "  <p style=\"float:left; width:45%;\">"
}
else {
html = html + "  <p style=\"float:right; width:45%;\">"
}
if (point.websiteurl.length > 0) {
html = html + "     <img src=\"/images/icon_website.gif\"> <a onclick=\"return " + fnWGT + "\" href=\"" + point.websiteurl + "\">Website</a><br>";
}
html = html + "     <img src=\"/images/icon_phone.gif\"> <a id='mapWin_phone' href=\"#\">Send to Phone</a>" + "  </p>";
if (!noReview){
html = html +
"  <p style=\"float:left; width:45%;\">" +
"     <img src=\"/images/icon_reviews.gif\"> <a href=\"" + point.profileurl + "#reviews\">Reviews</a>" +
"     <br><img src=\"/images/icon_writeReviewBlue.gif\"> <a id='mapWin_review' href=\"" + point.profileurl + "#openReview\">Write a Review</a>" +
"  </p>";
}
html = html + "</div>";
$("#mapPopBody").html(html);
arrow.style.display = "block";
box.style.display = "block";
/* set shadow size to box size, then offset */
if (navigator.appName=="Microsoft Internet Explorer") {
/* set left position of box and arrow */
arrow.style.left = x - 24 + "px";
box.style.left = x - 384 + "px";
//shadow.style.left = x - 386 + "px";
/* set top position of box and arrow */
arrow.style.top = y - 20 + "px";
box.style.top = y - 80 + "px";
//shadow.style.top = y - 76 + "px";
//shadow.style.height = box.offsetHeight - 1 + "px";
//shadow.style.width = box.offsetWidth - 1 + "px";
} else {
/* set left position of box and arrow */
arrow.style.left = x - 24 + "px";
box.style.left = x - 384 + "px";
//shadow.style.left = x - 386 + "px";
/* set top position of box and arrow */
arrow.style.top = y - 20 + "px";
box.style.top = y - 80 + "px";
//shadow.style.top = y - 76 + "px";
//shadow.style.height = box.offsetHeight - 1 + "px";
//shadow.style.width = box.offsetWidth - 1 + "px";
}
//shadow.style.display = "block";
$("#mapWin_phone").click(function () {
$("#mapWin_mapTools").hide();
$("#mapWin_send2phone").show();
});
$("#mapWin_directions").click(function () {
$("#mapWin_mapTools").hide();
$("#mapWin_getDirections").show();
});
$("#mapWin_send2phoneCancel").click(function () {
$("#mapWin_send2phone").hide();
$("#mapWin_mapTools").show();
});
$("#mapWin_getDirectionsCancel").click(function () {
$("#mapWin_getDirections").hide();
$("#mapWin_mapTools").show();
});
$("#mapViewSend2Phone_to").mask("(999) 999-9999");
}
} catch (e) {
//alert(e.message + "point.type=" + point.type);
}
}
function listing_click(a,obj,iList,iPin) {
iPin = parseInt(iPin);
if (mapMarkers[iPin-1]!=null) {
panIfOutOfBounds = true;
GEvent.trigger(mapMarkers[iPin-1], "click");
panIfOutOfBounds = false;
}
}
function hidePinInfoWindow(isCloseEvent) { /*takes the onclick event and the direction the arrow should poing (i.e. opposite of which side box is on)*/
try {
if(document.getElementById) {
var arrow = document.getElementById("mapPopArrow");
var box = document.getElementById("mapPopBody");
//var shadow = document.getElementById("mapPopShdw");
arrow.style.display = "none";
box.style.display = "none";
//shadow.style.display = "none";
if (isCloseEvent) {
currentPinPopupPoint = null;
}
}
} catch (err) {
}
return false;
}
function getX(e){
var x = 0;
while (e) {
x += e.offsetLeft;
e = e.offsetParent;
}
return x;
}
function getY(e) {
var y = 0;
while(e) {
y += e.offsetTop;
e = e.offsetParent;
}
return y; 
}
function myTop(n){
var o=document.getElementById(n),r=o.offsetTop;
while(o=o.offsetParent)r+=o.offsetTop;
return r;
}
function showDirectionsForm() {
document.getElementById("directionsform").style.display="block";
}
function setDirections(fromAddress, toAddress) {
gdir.load(fromAddress + " to " + toAddress);
}
function loadDirectionsPage(direction, address) {
var thisURL = document.location.href;
if (typeof(direction)!="undefined" && direction=="to") {
// Directions To address
//http: //support.dexknows.com/browse/DKCOM-581
thisURL = thisURL.replace(/\#(openReview)?/, "");
directionsURL = thisURL.split("?")[0] + "?dTo=" + escape(address);
} else {
// Directions From address
//http://support.dexknows.com/browse/DKCOM-581
thisURL = thisURL.replace(/\#(openReview)?/, "");
directionsURL = thisURL.split("?")[0] + "?dFrom=" + escape(address);
}
directionsURL = directionsURL + "&refmkt=" + mkt;
directionsURL = directionsURL + "&refmkw=" + mkw;
directionsURL = directionsURL + "&refreferer=" + baseurl;
directionsURL = directionsURL + "&refdkq=" + dkq;
directionsURL = directionsURL + "&refdks=" + dks;
directionsURL = directionsURL + "&refdkdt=" + dkdt;
window.open(directionsURL);
return false;
}
function mapViewGetDirections() {
var p = currentPinPopupPoint;
var fromAddress = $("#mapViewGetDirections_from").val();
var toAddress = p.street + " " + p.city + ", " + p.state + " " + p.zipcode;
$('#mapWell').html("");
gdir.load("from: " + fromAddress + " to: " + toAddress,{ "locale": "en" });
hidePinInfoWindow();
return false;
}
function handleDirectionsErrors(){
if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: " + gdir.getStatus().code);
else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + gdir.getStatus().code);
else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gdir.getStatus().code);
//   else if (gdir.getStatus().code == G_UNAVAILABLE_ADDRESS)  <--- Doc bug... this is either not defined, or Doc is wrong
//     alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir.getStatus().code);
else if (gdir.getStatus().code == G_GEO_BAD_KEY)
alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code);
else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
alert("A directions request could not be successfully parsed.\n Error code: " + gdir.getStatus().code);
else alert("An unknown error occurred.");
}
function onGDirectionsLoad(){
// Use this function to access information about the latest load()
// results.
// e.g.
// document.getElementById("getStatus").innerHTML = gdir.getStatus().code;
// and yada yada yada...
var ver = renderVersion;
if (document.getElementById("directionscanvas")) {
document.getElementById("directionscanvas").style.display="block";
}
var directions_zone = pgt + ".rw.act.1";
var pars = "act=4&absr=0&relr=0&dkid=" + profile_dkid + "&pgt=" + profile_pgt + "&pdt=" + profile_pdt;
pars += "&dkcat=" + profile_dkcat + "&dkgeo=" + profile_dkgeo + "&dkzone=" + directions_zone;
pars += "&dks=" + profile_dks + "&dkloc=" + profile_dkloc + "&mkt=" + profile_mkt + "&dkdt=" + profile_dkdt;
pars += "&mkw=" + profile_mkw + "&partner=" + profile_partner + "&pass=" + profile_pass;
pars += "&dkq=" + profile_dkq + "&baseurl=" + profile_baseurl + "&referer=" + profile_ref + "&dkitem=" + profile_dkitem + "&pbizid=" + profile_pbizid;
pars += "&dkdirections=" + directionsFrom;
pars += "&ver=" + ver;
$.ajax({
url: '/rd/index.asp?' + pars,
type: 'GET',
timeout: 1000,
error: function() {
//alert('Error loading XML document');
},
success: function(xml) {
// do something with xml
}
});
}
// Detect if the browser is IE or not.
// If it is not IE, we assume that the browser is NS.
var IE = document.all ? true : false;
function gtc(onw, z, u) {
var partner = (typeof (partner) != undefined || partner != null) ? partner : "dk";
var rdURL = "/rd/index.asp";
var pars = "?dkzone=" + z + "&partner=" + partner + "&dku=" + escape(u) + "&dks=" + dks;
if (onw) {
window.open(rdURL + pars);
} else {
document.location.href=rdURL + pars;
}
return false;
}
function gt(openNewWindow, act, pdt, dkzone, dkid, dkitem, adcatid, adgeoid, pbizid, pass, relr, absr, dku) {
if (pdt=="free" || pdt == "localeze") {
pdt = ""; // to avoid CL sending requests
dkid="";  // to avoid CL sending requests
}
var rdURL = "/rd/index.asp";
var pars = "?act=" + act;
pars += "&pdt=" + pdt;
pars += "&dks=" + dks;
pars += "&cip=" + cip;
pars += "&useragent=" + useragent;
pars += "&referer=" + referer;
pars += "&pgt=" + pgt;
pars += "&dkzone=" + dkzone;
pars += "&partner=" + partner;
pars += "&ver=" + ver;
pars += "&mkt=" + mkt;
pars += "&mkw=" + mkw;
pars += "&dkdt=" + dkdt;
pars += "&dkid=" + dkid;
pars += "&dkitem=" + dkitem;
pars += "&adcatid=" + adcatid;
pars += "&adgeoid=" + adgeoid;
pars += "&pbizid=" + pbizid;
pars += "&dkcat=" + dkcat;
if (dkgeo.indexOf("nh%2") == 0) {
pars += "&dkgeo=" + dkparentgeo;
} else {
pars += "&dkgeo=" + dkgeo;
}
pars += "&dkq=" + dkq;
pars += "&dkloc=" + dkloc;
pars += "&baseurl=" + baseurl;
pars += "&pass=" + pass;
pars += "&relr=" + relr;
pars += "&absr=" + absr;
pars += "&dku=" + dku;
//		GLog.write (rdURL + pars);
//		return false;
// DKCOM 384
createCookie("ldkcat", dkcat);
createCookie("ldkgeo", dkgeo);
if (openNewWindow) {
window.open (rdURL + pars);
} else {
document.location.href = rdURL + pars;
}
return false;
}
function showNeighborhoodsRightFidget() {
if ($('#nhTab')) {
$('#nhTab').addClass('selected');
$('#map').hide();
$('#nhlist').fadeIn("slow");
$('#map').show();
}
if ($('#ctTab')) {
$('#ctTab').removeClass('selected');
$('#ctlist').hide();
}
}
function showCitiesRightFidget() {
if ($('#ctTab')) {
$('#ctTab').addClass('selected');
$('#map').hide();
$('#ctlist').fadeIn("slow");
$('#map').show();
}
if ($('#nhTab')) {
$('#nhTab').removeClass('selected');
$('#nhlist').hide();
}
}
function createCookie(name,value,intDays) {
var expires = "";
if (intDays) {
var date = new Date();
date.setTime(date.getTime()+(intDays*24*60*60*1000));
expires = "; expires="+date.toGMTString();
}
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
function sortCitiesByName(c1, c2) {
if (c1.prettyName < c2.prettyName) return -1;
if (c1.prettyName > c2.prettyName) return +1;
return 0;
}
$(document).ready(function() {
try {
// Begin jQuery Fade problem for IE
jQuery.fn.fadeIn = function(speed, callback) {
return this.animate({ opacity: 'show' }, speed, function() {
if (jQuery.browser.msie)
this.style.removeAttribute('filter');
if (jQuery.isFunction(callback))
callback();
});
};
jQuery.fn.fadeOut = function(speed, callback) {
return this.animate({ opacity: 'hide' }, speed, function() {
if (jQuery.browser.msie)
this.style.removeAttribute('filter');
if (jQuery.isFunction(callback))
callback();
});
};
jQuery.fn.fadeTo = function(speed, to, callback) {
return this.animate({ opacity: to }, speed, function() {
if (to == 1 && jQuery.browser.msie)
this.style.removeAttribute('filter');
if (jQuery.isFunction(callback))
callback();
});
};
// End jQuery Fade problem for IE
} catch (err) { }
try {
$("#what").autocomplete("/search_autocomplete_what.asp", { max: 100, selectFirst: false, scroll: true });
$("#where").autocomplete("/search_autocomplete_where.asp", { max: 100, selectFirst: false, scroll: true }).result(function(event, data, formatted) {
autocompleteWhere = data[0];
autocompleteGeoId = data[1];
}); ;
//document.search.what.focus();
// $("input[name=phone]").mask("(999) 999-9999");
$(".cpa .listing").hover(
function() {
$(this).css({ backgroundColor: "#B2D1E7" });
}, function() {
$(this).css({ backgroundColor: "white" });
}
);
// hides the slickbox as soon as the DOM is ready
// (a little sooner than page load)
$('#slickbox').hide();
// shows the slickbox on clicking the noted link 
$('a#slick-show').click(function() {
$('#slickbox').show();
$('a#slick-show').hide();
$('a#slick-hide').show();
return false;
});
// shows the slickbox on clicking the noted link 
$('a#slick-show-cities').click(function() {
// Assumption: cities are first sorted by rating
var topCities = new Array();
for (var i = 0; i < 5; i++) {
var city = citiesArray[i];
topCities.push(city);
}
citiesArray = citiesArray.sort(sortCitiesByName);
var sortedCitiesContent = "";
for (var i = 0; i < citiesArray.length; i++) {
var city = citiesArray[i];
var isInTopCities = false;
for (var j = 0; j < topCities.length; j++) {
if (topCities[j].prettyName == citiesArray[i].prettyName && topCities[j].rating == citiesArray[i].rating) {
isInTopCities = true;
}
}
if (isInTopCities) sortedCitiesContent += "<b>";
sortedCitiesContent += "<A href=\"" + city.url + "\" onclick=\"return gtc(false, '" + city.dkzone + "', this.href)\">" + city.prettyName + "</A>"
if (isInTopCities) sortedCitiesContent += "</b>";
if (i < citiesArray.length - 1) {
sortedCitiesContent += "<span class=\"fidgetSpacer\">|</span> ";
}
}
document.getElementById("citiesListFidget").innerHTML = sortedCitiesContent;
return false;
});
// hides the slickbox on clicking the noted link 
$('a#slick-hide').click(function() {
$('#slickbox').hide('fast');
$('a#slick-hide').hide();
$('a#slick-show').show();
return false;
});
// toggles the slickbox on clicking the noted link 
$('a#slick-toggle-2').click(function() {
$('#slickbox').toggle(400);
return false;
});
// hides the slickbox as soon as the DOM is ready
// (a little sooner than page load)
$('#slickbox-2').hide();
// shows the slickbox on clicking the noted link 
$('a#slick-show-2').click(function() {
$('#slickbox-2').show();
$('a#slick-show-2').hide();
$('a#slick-hide-2').show();
return false;
});
// hides the slickbox on clicking the noted link 
$('a#slick-hide-2').click(function() {
$('#slickbox-2').hide('fast');
$('a#slick-hide-2').hide();
$('a#slick-show-2').show();
return false;
});
// toggles the slickbox on clicking the noted link 
$('a#slick-toggle-2').click(function() {
$('#slickbox-2').toggle(400);
return false;
});
$('#slickboxSeeMoreRightRail').hide();
$('#slickbox-2SeeMoreRightRail').hide();
// shows the slickbox on clicking the noted link
$('a#slick-show-right-rail').click(function() {
$('#map').hide();
$('#slickboxSeeMoreRightRail').show();
$('#slickboxRightRail').hide();
$('#map').show();
return false;
});
// hides the slickbox on clicking the noted link
$('a#slick-hide-right-rail').click(function() {
$('#map').hide();
$('#slickboxSeeMoreRightRail').hide();
$('#slickboxRightRail').show();
$('#map').show();
return false;
});
// shows the slickbox on clicking the noted link
$('a#slick-show-2-right-rail').click(function() {
$('#map').hide();
$('#slickbox-2SeeMoreRightRail').show();
$('#slickbox-2RightRail').hide();
$('#map').show();
return false;
});
// hides the slickbox on clicking the noted link
$('a#slick-hide-2-right-rail').click(function() {
$('#map').hide();
$('#slickbox-2SeeMoreRightRail').hide();
$('#slickbox-2RightRail').show();
$('#map').show();
return false;
});
$(".listing").hover(
function() {
$(this).addClass("lHover");
var mpi = $(this).attr("mapPinIndex");
if (mpi.length != 0) {
try {  // trap for js error when mouse if hovering over listing while page is loading 
iPin = parseInt(mpi);
var iurl = mapMarkers[iPin].getIcon().image
iurl = iurl.replace(/mapPin/, "mapPinOn");
//mapMarkers[iPin].setImage(iurl); 
if (hoverMarker != null) {
map.removeOverlay(hoverMarker);
}
hoverMarker = createMarker(iPin, points[iPin], true);
map.addOverlay(hoverMarker);
} catch (e) { }
}
},
function() {
$(this).removeClass("lHover");
var mpi = $(this).attr("mapPinIndex");
if (mpi.length != 0) {
if (hoverMarker != null) {
map.removeOverlay(hoverMarker);
}
}
}
);
$(".listPin").click(
function () {
if (viewmode=="map") {
var mpi = $(this).attr("mapPinIndex");
if (mpi.length != 0) {
iPin = parseInt(mpi);
var iurl = mapMarkers[iPin].getIcon().image
hidePinInfoWindow();
if (clickedMarker!=null) {
map.removeOverlay(clickedMarker);
}
showPinInfoWindow(points[iPin]);
clickedMarker = createMarker(iPin, points[iPin], true);
map.addOverlay(clickedMarker);
}
}
}
);
} catch (err) { }
});
