﻿/* Menu positioning code - mostly for IE */
var menuPositionTimer, menuWindowInterval;
var lastViewportSize;
var lastScrollOffsets;
var WindowChangedCounter = 0;

function updateHCDialog(title, content) {
	$("HCDialogTitle").innerHTML = title;
	$("HCDialogContent").innerHTML = content;
}
function isFixedSupported() {
	if (navigator.userAgent.indexOf("MSIE") > -1) {
		return false;
	} else {
		return true;
	}
}
function showConsumerDialog() {
	$("HCConsumerInfoDialog").setStyle({ top: "-" + $("HCConsumerInfoDialog").getHeight() + "px", overflow: "" });
	//$("HCConsumerInfoDialog").setStyle({ height: "350px" });
	$("HCConsumerInfoDialog").appear();
}
function hideConsumerDialog() {
	$("HCConsumerInfoDialog").fade();
	//Dont, the above effect hides the dialog anyway: $("HCConsumerInfoDialog").setStyle({ height: "0px", overflow: "hidden" });
}
function setupDialogForDisplay(menuItemId) {
	if (menuItemId == "saved") {
		updateHCDialog("Your Profile Overview", "<div id=\"ConsumerDataPanel\">Loading...</div>");
		showConsumerDialog();
		/*if (isFixedSupported() == false) {
		//$("HCConsumerInfoDialog").morph("height: 350px; top: " + ($("HCConsumerInfoDialog").cumulativeOffset().top - 350) + "px");
		showConsumerDialog();
		} else {
		//$("HCConsumerInfoDialog").morph("height: 350px;");
		}*/
	} else if (menuItemId == "stats") {
		updateHCDialog("Local Area Stats", "<div id=\"LocalAnalysisResults\">Loading...</div>");
		showConsumerDialog();
	}
	//ConsumerInfoDialog.show();
}
function fixHCConsumerInfoDialogPosition() {
	if (navigator.userAgent.toLowerCase().indexOf("webkit") > -1) {
		/* Chrome/Safari doesn't support our html structure for the dialog */
		$("HCConsumerInfoDialog").setStyle({ position: 'absolute', top: ((getViewportSize().height + document.viewport.getScrollOffsets().top) - 40 - $("HCConsumerInfoDialog").getHeight()) + 'px' });
	}
	if (navigator.userAgent.indexOf("MSIE") < 0) {
		return;
	}
	/***** DISABLED *****/
	var baseTop = 0;
	var baseLeft = 0;
	var myMenu = $(HCMenu.get_id());
	//if (!myMenu) { myMenu = $$(".m-arctic")[0].select("div")[0]; }

	baseTop = ($(myMenu).cumulativeOffset().top - ($("HCConsumerInfoDialog").getHeight() + $(myMenu).getHeight()));
	baseLeft = ($("HCToolbarTable").cumulativeOffset().left);
	if (baseTop < 0) { baseTop = 0; }
	if (baseLeft < 0) { baseLeft = 0; }
	if (getViewportSize().height < 450) { baseTop = 5; }

	if (isFixedSupported() == false) {
		/* IE doesn't support 'position: fixed' */
		$("HCConsumerInfoDialog").setStyle({ position: "absolute", top: baseTop + "px", left: baseLeft + "px" });
	} else {
		/* supports 'fixed' hopefully! */
		$("HCConsumerInfoDialog").setStyle({ position: "fixed", bottom: ($("HCToolbarTable").getHeight() + 8) + "px", left: baseLeft + "px" });
	}

}


function initHCMenuPosition() {
	/* only set the timeout for IE - other browsers support the CSS: 'position: fixed' */
	if (isFixedSupported() == false) {
		// make initial call to setHCMenuPosition()
		positionTimer = setTimeout("setHCMenuPosition(); fixHCConsumerInfoDialogPosition();", 500);
		menuWindowInterval = window.setInterval("checkForBrowserWindowChanges()", 1000);
	}
}
function initConsumerDialog() {
	$("HCConsumerInfoDialog").fade();

	//$("HCConsumerInfoDialog").getHeight()
}


function checkForBrowserWindowChanges() {
	if (!lastViewportSize) { lastViewportSize = getViewportSize(); }
	if (!lastScrollOffsets) { lastScrollOffsets = document.viewport.getScrollOffsets(); }
	/* check if the values have changed */
	if ((lastViewportSize.height != getViewportSize().height) || (lastScrollOffsets.top != document.viewport.getScrollOffsets().top)) {
		lastViewportSize = getViewportSize();
		lastScrollOffsets = document.viewport.getScrollOffsets();
		WindowChangedCounter += 1;
		/* Check for excess hits to this function */
		if (WindowChangedCounter > 50) {
			// slow the interval
			window.clearInterval(menuWindowInterval);
			menuWindowInterval = window.setInterval("checkForBrowserWindowChanges()", 2500);
		}
		// changed viewport!
		setHCMenuPosition();
	}
}

function setHCMenuPosition() {
	if ($$(".HCToolbar") && $$(".HCToolbar")[0]) {
		if (isFixedSupported() == false) {
			/* IE doesn't support 'position: fixed' */
			$$(".HCToolbar")[0].setStyle({ position: 'absolute', top: ((getViewportSize().height + document.viewport.getScrollOffsets().top) - 40) + 'px' });
		} else {
			/* supports 'fixed' hopefully! */
			$$(".HCToolbar")[0].setStyle({ position: 'fixed', bottom: '5px' });
		}
	}
}

function isCurrentlyFullviewPage() {
	/** Note: Temporarily disabled for Chrome/Safari **/
	if (navigator.userAgent.toLowerCase().indexOf("webkit") > -1) { return false; }
	/** Note: Temporarily disabled for Chrome/Safari **/
	if (navigator.userAgent.indexOf("MSIE") < 0) { return false; }

	if (location.href.toLowerCase().indexOf("fullview") > -1) {
		return true;
	} else {
		return false;
	}
}

/* Menu ctor/building functions */
function HCMenu_Load(sender, eventArgs) {
	if (isCurrentlyFullviewPage()) {
		buildMenu();
	}
}

function buildMenu() {
	HCMenu.beginUpdate();
	initMenu();
	populateMenu();
	HCMenu.endUpdate();
}

function initMenu() {
	HCMenu.set_cssClass('menu-arctic');
	HCMenu.set_defaultGroupCssClass('grp-arctic');
	HCMenu.set_defaultItemLookId('ItemLook');
	//HCMenu.set_topGroupItemSpacing(1);
	//HCMenu.set_defaultGroupItemSpacing(1);
	//HCMenu.set_imagesBaseUrl('images/');
	HCMenu.set_expandDelay(100);
}

function populateMenu() {
	var newItem = new ComponentArt.Web.UI.MenuItem();
	newItem.set_text('Saved Listings');
	newItem.set_lookId('TopItemLook');
	newItem.set_id('saved');
	if (CurrentConsumer && CurrentConsumer.ConsumerID > 10000) {
		//We have a valid consumer
		newItem.set_clientSideCommand("GetConsumerData()");
	} else {
		//Make item a shortcut to login modal
		newItem.set_clientSideCommand("showModalSignup()");
	}
	HCMenu.get_items().add(newItem);

	newItem = new ComponentArt.Web.UI.MenuItem();
	newItem.set_text('Saved Properties');
	newItem.setProperty('ClientTemplateId', 'BlankTemplate');
	newItem.setProperty('Height', '275px');
	HCMenu.findItemById('saved').get_items().add(newItem);

	/* Check for CurrentProperty */
	if (CurrentProperty && CurrentProperty.lat) {
		newItem = new ComponentArt.Web.UI.MenuItem();
		newItem.set_text('View Surrounding Area Stats');
		newItem.set_lookId('TopItemLook');
		newItem.set_id('stats');
		//newItem.setProperty('ClientTemplateId', 'BlankTemplate');
		newItem.set_clientSideCommand("GetLocalStats(CurrentProperty, 3)");
		HCMenu.get_items().add(newItem);

		newItem = new ComponentArt.Web.UI.MenuItem();
		newItem.set_text('Stats');
		/*if (CurrentProperty.lat == -1 || CurrentProperty.lat == -1.1 || CurrentProperty.lat == 0) {
			newItem.setProperty('ClientTemplateId', 'LocalStatsNotAvailableTemplate');
		} else {
			newItem.setProperty('ClientTemplateId', 'BlankTemplate');
			newItem.set_clientSideCommand("GetLocalStats(CurrentProperty, 3)");
		}*/
		//newItem.setProperty('Height', '135px');
		HCMenu.findItemById('stats').get_items().add(newItem);
	}
}
/*ID, Created, MLSNum, Price, Status, Ad, Cmy, Notes
ID, RevID, DateTime, MLS, Price, Status, Ad, Cmy, Rating, Notes*/
function GetConsumerData() {
	setupDialogForDisplay("saved");
	$("ConsumerDataPanel").innerHTML = "<div align='center'>Loading...<br /><img src=\"images/Loading-Glass-Small.gif\" border=0 alt=\"Loading...\" /></div>";
	var strUrl = "AjaxHandler.aspx?wID=" + CurrentAgent.WebID + "&Action=GetConsumerData&Output=JSON";
	new Ajax.Request(strUrl, { method: 'get', onSuccess: GetConsumerData_onAjaxResponse, onFailure: GetConsumerData_onAjaxError, on500: GetConsumerData_onAjaxError });
}
function GetConsumerData_onAjaxResponse(response) {
	var strHTML;
	var strJSON = response.responseText;
	if (strJSON.indexOf("ConsumerData") > -1) {
		eval(strJSON);
	}

	strHTML = "<div class=\"ConsDataTitle\">Saved Properties</div>\n";
	//ConsumerData.Bookmarks & ConsumerData.PropertyAlerts
	for (var i = 0; i < ConsumerData.Bookmarks.length; i++) {
		strHTML += "	<div class=\"ConsDataRow\">" + ConsumerData.Bookmarks[i][1] + " - MLS#: " + ConsumerData.Bookmarks[i][2] + " - " + ConsumerData.Bookmarks[i][5] + "</div>\n";
	}
	if (ConsumerData.Bookmarks.length <= 0) {
		strHTML += "	<div class=\"ConsDataMsg\">You don't have any saved properties currently.</div>\n";
	} else {
		strHTML += "	<div class=\"ConsDataRow\"><a href=\"BookShow.aspx?wID=" + CurrentAgent.WebID + "\">View your Saved Properties &raquo;</a></div>\n";
	}

	/* Now append the Alerts */
	strHTML += "<div class=\"ConsDataTitle\">Property Alerts</div>\n";
	//ConsumerData.Bookmarks & ConsumerData.PropertyAlerts
	for (var i = 0; i < ConsumerData.PropertyAlerts.length; i++) {
		strHTML += "	<div class=\"ConsDataRow\">" + ConsumerData.PropertyAlerts[i][2] + " - " + ConsumerData.PropertyAlerts[i][6] + " - $" + ConsumerData.PropertyAlerts[i][4] + "</div>\n";
	}
	if (ConsumerData.Bookmarks.length <= 0) {
		strHTML += "	<div class=\"ConsDataMsg\">You don't have any matching Property Alerts currently.</div>\n";
	} else {
		strHTML += "	<div class=\"ConsDataRow\"><a href=\"Prospects.aspx?wID=" + CurrentAgent.WebID + "\">View your Property Alerts &raquo;</a></div>\n";
	}

	$("ConsumerDataPanel").innerHTML = strHTML;
}
function GetConsumerData_onAjaxError(response) {
	$("ConsumerDataPanel").innerHTML = ('Error: ' + err.status, '<b>Error:</b> ' + err.status + '<br /><b>StatusText:</b> ' + err.statusText);
}


function GetLocalStats(PropertyData, Miles) {
	setupDialogForDisplay("stats");
	if (CurrentProperty.lat == -1 || CurrentProperty.lat == -1.1 || CurrentProperty.lat == 0) {
		/* Property location could not be found... */
		$("LocalAnalysisResults").innerHTML = "<div id=\"NotAvailableMsg\">No accurate location information could be found for this property. Please check again later.</div>";
		return;
	}
	$("LocalAnalysisResults").innerHTML = "<div align='center'>Loading...<br /><img src=\"images/Loading-Glass-Small.gif\" border=0 alt=\"Loading...\" /></div>";
	var strUrl = "AjaxHandler.aspx?Action=GetLocalStats&Lat=" + PropertyData.lat + "&Lon=" + PropertyData.lon + "&Radius=" + Miles + "&MLS=" + PropertyData.Board + "&Output=HTML&FieldData=Type|" + PropertyData.type + "";
	new Ajax.Request(strUrl, { method: 'get', onSuccess: GetLocalStats_onAjaxResponse, onFailure: GetLocalStats_onAjaxError });
}
function GetLocalStats_onAjaxResponse(response) {
	var strHTML = response.responseText;

	$("LocalAnalysisResults").innerHTML = strHTML;
}
function GetLocalStats_onAjaxError(response) {
	$("LocalAnalysisResults").innerHTML = ('Error: ' + err.status, '<b>Error:</b> ' + err.status + '<br /><b>StatusText:</b> ' + err.statusText);
}


