﻿this.tooltip = function () {
	xOffset = 5;
	yOffset = 5;

	$(".tooltip").hover(function (e) {
		this.t = this.title
		this.title = "";
		$("body").append("<p id='tooltip'>" + this.t + "</p>");
		$("#tooltip")
			.css("top", (e.pageY + yOffset) + "px")
			.css("left", (e.pageX + xOffset) + "px")
			.css("max-width","400px")
			.fadeIn("fast");
	},
	function () {
		this.title = this.t;
		$("#tooltip").remove();
	});
	$(".tooltip").mousemove(function (e) {
		$("#tooltip")
			.css("top", (e.pageY + yOffset) + "px")
			.css("left", (e.pageX + xOffset) + "px")
			.css("max-width", "400px");
	});
};


$(document).ready(function () {
	tooltip();
	$("#login_signup").bind("click", function () {
		showLogin();
		return false;
	});
	$("#loginPanelGoogleLink").bind("click", function () {
		openPopupWindow('https://www.google.com/accounts/o8/id');
		return false;
	});
	$("#loginPanelFBLink").bind("click", function () {
		var w = window.open('/services/facebook_start.aspx', 'fb_popup', 'width=1000,height=450,location=1,status=1,resizable=yes');
		return false;
	});

	// Search box prep
	setupTextboxDefault("#txtSearchName", "e.g. Carstairz Motor Sales");
	setupTextboxDefault("#txtSearchLocation", "e.g. Dayton, OH");
	setLinkButtonClickProperty("#btnSearch");
});

// ====== BEGIN LOGIN CODE ======
function roll(id, img) {
	document.getElementById(id).src = img;
}
function getCenteredCoords(width, height) {
	var xPos = null;
	var yPos = null;
	if (window.ActiveXObject) {
		xPos = window.event.screenX - (width / 2) + 100;
		yPos = window.event.screenY - (height / 2) - 100;
	} else {
		var parentSize = [window.outerWidth, window.outerHeight];
		var parentPos = [window.screenX, window.screenY];
		xPos = parentPos[0] +
			Math.max(0, Math.floor((parentSize[0] - width) / 2));
		yPos = parentPos[1] +
			Math.max(0, Math.floor((parentSize[1] - (height * 1.25)) / 2));
	}
	return [xPos, yPos];
}

function openPopupWindow(openid) {
	//document.getElementById('ops').style.display = 'none';
	//document.getElementById('bucket').innerHTML = 'Signing you in <img src="http://media.carfolks.com/images/ajax-loader-dark.gif"/>';
	if (openid != null && openid != "") {
		var w = window.open('/services/openid_start.aspx?openid_identifier=' + encodeURIComponent(openid), 'openid_popup', 'width=500,height=500,location=1,status=1,resizable=yes');

//        var coords = getCenteredCoords(500, 500);
//        w.screenX = coords[0];
//        w.screenY = coords[1];
	}
}

var openidguid;
function handleOpenIDResponse(openid_args, authResponse) {
	//$("[id='ops']").css("display", "none");
	//document.getElementById('bucket').innerHTML = authResponse;

	switch (authResponse.split('|')[0]) {
		case "AUTHENTICATED":
			//change the login status on the page to logged in
			//hide the login panel
			$('#loginDialog').jqmHide();
			$("[id$='litEmail']").html(authResponse.split('|')[1]);
			$("[id$='loginButton']").attr('onclick', '');
			$("[id$='spanLogin']").remove();
			$("[id$='spanAccount']").show();

			if (typeof onLoginComplete == 'function') {
				onLoginComplete();
			}

			break;
		case "AUTHENTICATED_NO_MATCH":
			var chunks = authResponse.split("|");
			$("#regular_email").val(chunks[1]);
			$('#loginPanel').animate({
				opacity: 0,
				height: 'toggle'
			}, 1000);
			openidguid = chunks[2];
			if (chunks.length > 3) {
				$("#regular_firstName").val(chunks[3]);
				$("#regular_lastName").val(chunks[4]);
			}
			reveal('firstTime');
			break;
		case "CANCELLED":
			$('#loginPanel').animate({
				opacity: 0.25
			}, 1000, function () {

			});
			$('#loginCancelled').css("display", "");
			$('#loginCancelled').css("opacity", "0");
			$('#loginCancelled').animate({
				opacity: 1
			}, 500, function () {

			});
		case "FAILED":
			showErrorMessage(authResponse.split('|')[1]);
			break;
		default:
			//something really bad happened
			break;
	}
}

function tryAgain() {
	$('#loginPanel').animate({
		opacity: 1,
		height: 'toggle'
	}, 1000);

	reveal('signInWAA');
}

function reveal(n) {
	$('#classicSignup').hide();
	$('#signInWAA').hide();
	$('#firstTime').hide();
	$('#forgotPassword').hide();
	$('#signedUp').hide();

	$('#' + n).show();
}

function createNewAccount() {
	reveal('classicSignup');
}

function disableLoginControl(disabled) {
	$('[id$="txtUsername"]').attr("disabled", disabled);
	$('[id$="txtPassword"]').attr("disabled", disabled);
	$('[id$="btnLogin"]').attr("disabled", disabled);
}

function resetForms() {
	var wipeInputs = ['txtEmail', 'txtPassword', 'classic_firstName', 'classic_lastName', 'classic_email', 'classic_password', 'regular_firstName', 'regular_lastName', 'regular_email'];

	for (var i = 0; i < wipeInputs.length; i++) {
		$("[id$='" + wipeInputs[i] + "']").val("");
	}

	var hide = ['rfvTxtEmail', 'signedUp', 'classic_checkbox_v', 'classic_emailInUse_v', 'classic_firstName_v', 'classic_lastName_v', 'classic_email_v', 'classic_password_v', 'regular_checkbox_v', 'regular_firstName_v', 'regular_lastName_v', 'regular_email_v'];

	for (i = 0; i < wipeInputs.length; i++) {
		$("[id$='" + hide[i] + "']").hide();
	}

	$("#regular_checkbox").attr("checked", "");
	$("#classic_checkbox").attr("checked", "");
}

function clickButton(e, buttonid) {
	var evt = e ? e : window.event;
	var bt = document.getElementById(buttonid);
	if (bt) {
		if (evt.keyCode == 13) {
			bt.click();
			return false;
		}
	}
}

function showErrorMessage(msg) {
	if (!msg || msg == "") {
		msg = "Error";
	}

	$('#errorMessage').html(msg);
	$('#errorMessage').css("display", "");
	$('#errorMessage').css("opacity", "0");
	$('#errorMessage').animate({
		opacity: 1
	}, 500)
}

function showLogin(msg) {
	resetForms();

	if (!msg || msg == "") {
		msg = "You are currently not signed in.";
	}

	$('#notLoggedInMessage').html(msg);
	$('#loggingIn').hide();
	$('#errorMessage').hide();
	reveal('signInWAA');

	disableLoginControl("");

	if ($("[id$='loggedIn']").val() != "true") {
		$('#loginDialog').jqmShow();
		hideMap();
	}
}

function showMap() {
	if (!$('#cfmap')) { return };
	$('#cfmap').css("width", "100%");
}

function hideMap() {
	if (!$('#cfmap')) { return };
	$('#cfmap').css("width", "0px");
}

function loginClose(hash) {
	hash.w.fadeOut('2000', function () { hash.o.remove(); });
	showMap();
}
$(document).ready(function () {
	openid.init('openid_identifier');
	$('#loginDialog').jqm({ onHide: loginClose });
	$('#forgotPassword').jqm({ toTop: true });
});

function GetSynchronousJSONResponse(url, postData) {
	var xmlhttp = null;
	if (window.XMLHttpRequest)
		xmlhttp = new XMLHttpRequest();
	else if (window.ActiveXObject) {
		if (new ActiveXObject("Microsoft.XMLHTTP"))
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		else
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	// to be ensure non-cached version of response
	url = url + "?rnd=" + Math.random();

	xmlhttp.open("POST", url, false); //false means synchronous
	xmlhttp.setRequestHeader("Content-Type", "application/json; charset=utf-8");
	xmlhttp.send(postData);
	var responseText = xmlhttp.responseText;
	return eval('(' + responseText + ')');
}

var asyncXmlHttp;

function CallAsynchronousJSONResponse(url, postData, callback) {
	asyncXmlHttp = null;
	if (window.XMLHttpRequest)
		asyncXmlHttp = new XMLHttpRequest();
	else if (window.ActiveXObject) {
		if (new ActiveXObject("Microsoft.XMLHTTP"))
			asyncXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		else
			asyncXmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	// to be ensure non-cached version of response
	url = url + "?rnd=" + Math.random();

	asyncXmlHttp.onreadystatechange = callback;
	asyncXmlHttp.open("POST", url, true);
	asyncXmlHttp.setRequestHeader("Content-Type", "application/json; charset=utf-8");
	asyncXmlHttp.send(postData);
}

function showLoginBox() {
	disableLoginControl("disabled");
	$('#errorMessage').css("display", "none");
	$('#loggingIn').css("display", "");
	$('#loggingIn').css("opacity", "0");
	$('#loggingIn').animate({ opacity: 1 }, 0);
}
function loginDirect() {
	showLoginBox();

	var loggedinResponse = GetSynchronousJSONResponse('/services/login.asmx/Login', "{username:'" + $("[id$='txtUsername']").val() + "', password:'" + $("[id$='txtPassword']").val() + "'}").d;

	disableLoginControl("");
	$('#loggingIn').css("display", "none");
	$('#errorMessage').css("display", "none");

	if (loggedinResponse.success) {
		$('#loginDialog').jqmHide();
		//$("[id$='loggedIn']").val("true");
		$("[id$='litEmail']").html(loggedinResponse.email);
		$("[id$='loginButton']").attr('onclick', '');
		$("[id$='spanLogin']").remove();
		$("[id$='spanAccount']").show();

		if (typeof onLoginComplete == 'function') {
			onLoginComplete();
		}

	} else if (!loggedinResponse.success) {
		showErrorMessage(loggedinResponse.message);
	}
}

//-- PopUP 
var divPopUp = null

//--Mouse-------------------------------
function Get_MouseCoords(evt) {
	var evt = evt || window.event;
	var x = evt.x || evt.clientX;
	var y = evt.y || evt.clientY;
	return [x, y];
}
function Get_MouseCoord_X(event) {
	var coords = Get_MouseCoords(event);
	return coords[0];
}
function Get_MouseCoord_Y(event) {
	var coords = Get_MouseCoords(event);
	return coords[1];
}

//--My events----------------------------------
function ShowPopup(oEvent, id) {
	HidePopup();
	divPopUp = $get(id);
	oEvent = oEvent || window.event;
	var target = oEvent.target || oEvent.srcElement;

	VisiblePopUp(oEvent);
}

//-- Array
var arText = null;
var arID = null;

function VisiblePopUp(oEvent) {
	if (!divPopUp) {
		return;
	}
	//document.body.appendChild(divPopUp);
	var x = Get_MouseCoord_X(oEvent);
	var y = Get_MouseCoord_Y(oEvent);

	var rightedge = document.body.clientWidth - x;
	var bottomedge = document.body.clientHeight - y;

	var parentElement = document.body.parentElement || document.body.parentNode;

	if (rightedge < divPopUp.offsetWidth)
		divPopUp.style.left = parentElement.scrollLeft + x + 10 - divPopUp.offsetWidth + "px";
	else
		divPopUp.style.left = parentElement.scrollLeft + x + 10 + "px";

	if (bottomedge < divPopUp.offsetHeight) {
		divPopUp.style.top = parentElement.scrollTop + y - divPopUp.offsetHeight + "px";
	} else {
		divPopUp.style.top = parentElement.scrollTop + y + "px";
	}

	if (x != 0 && y != 0)
		divPopUp.style.display = 'block';
}

function HidePopup() {
	if (divPopUp) {
		divPopUp.style.display = 'none';
	}
}

function signupClassic() {
	var lobj = {};

	var validators = ["classic_firstName", "classic_lastName", "classic_email", "classic_password"];
	var failed = false;

	for (var i = 0; i < validators.length; i++) {
		if (!$("#" + validators[i]).val()) {
			$("#" + validators[i] + "_v").show();
			failed = true;
		} else {
			$("#" + validators[i] + "_v").hide();
		}
	}

	if (!($("#classic_checkbox").is(":checked"))) {
		failed = true;
		$("#classic_checkbox_v").show();
	} else {
		$("#classic_checkbox_v").hide();
	}

	if (failed) {
		return;
	}

	lobj.firstName = $("[id$='classic_firstName']").val();
	lobj.lastName = $("[id$='classic_lastName']").val();
	lobj.email = $("[id$='classic_email']").val();
	lobj.password = $("[id$='classic_password']").val();

	$("[id$='signupBtnClassic']").attr("disabled", "disabled");
	var signupResponse = GetSynchronousJSONResponse('/services/login.asmx/SignUp', JSON.stringify(lobj)).d;
	$("[id$='signupBtnClassic']").removeAttr("disabled");

	if (!signupResponse.success) {
		$("#classic_emailInUse_v").show();
	} else {
		resetForms();
		reveal('signedUp');
	}
}




function signup() {
	var lobj = {};

	var validators = ["regular_firstName", "regular_lastName", "regular_email"];
	var failed = false;
	for (var i = 0; i < validators.length; i++) {
		if (!$("#" + validators[i]).val()) {
			$("#" + validators[i] + "_v").show();
			failed = true;
		} else {
			$("#" + validators[i] + "_v").hide();
		}
	}

	if (!($("#regular_checkbox").is(":checked"))) {
		failed = true;
		$("#regular_checkbox_v").show();
	} else {
		$("#regular_checkbox_v").hide();
	}

	if (failed) {
		return;
	}
	lobj.openIDGuid = openidguid;
	lobj.firstName = $("[id$='regular_firstName']").val();
	lobj.lastName = $("[id$='regular_lastName']").val();
	lobj.email = $("[id$='regular_email']").val();

	$("[id$='btnSignup']").attr("disabled", "disabled");
	var signupResponse = GetSynchronousJSONResponse('/services/login.asmx/SignUpOpenID', JSON.stringify(lobj)).d;
	$("[id$='btnSignup']").removeAttr("disabled");

	if (!signupResponse.success) {
		$("#regular_emailInUse_v").show();
	} else {
		resetForms();
		reveal('signedUp');
	}
}

function submitForgottenPassword() {

	if (!$("[id$='txtEmail']").val() || $("[id$='txtEmail']").val() == "") {
		$('#rfvTxtEmail').show();
		return false;
	}
	$('#rfvTxtEmail').hide();

	if (GetSynchronousJSONResponse('/services/login.asmx/ForgotPassword', '{ "email":"' + $("[id$='txtEmail']").val() + '" }').d) {
		$("#lostPassword").hide();
		$("#passwordSent").fadeIn('normal');
	}
	else {
		alert("There was a problem sending your password reminder. Please contact us at support@carfolks.com");
	} 
	return false;
}

function retrievePassword() {
	$("#lostPassword").show();
	$("#passwordSent").hide();

	reveal("forgotPassword");
}

// ===== END LOGIN CODE =====

function roll(id, img) {
	document.getElementById(id).src = img;
}


/* DAVE'S JAVASCRIPT */

joinDealer_docready = function () {
	$("#consumerJoinLink").bind("click", function () {
		showLogin('Register below by either creating an account with us or using an accout on another website');
		return false;
	});
	setLinkButtonClickProperty(".joinButton");

	// Set focus on the next field to be entered
	if ($.trim($("#content_txtEmailAddress").val()) == "") $("#content_txtEmailAddress").focus();
	else if ($.trim($("#txtFirstName").val()) == "") $("#txtFirstName").focus();
	else if ($.trim($("#txtLastName").val()) == "") $("#txtLastName").focus();
	else if ($("#ddlJobTitle").val() == "-1") $("#ddlJobTitle").focus();
	else $("#content_txtPassword").focus();
}

joinProfessional_birthdateValidateRequired = function (source, args) {
	args.IsValid = $("#ddlMonth").val() != "-1"
				&& $("#ddlDay").val() != "-1"
				&& $("#ddlYear").val() != "-1";
}

joinProfessional_birthdateValidateDate = function (source, args) {
	args.IsValid = true;

	var month = $("#ddlMonth").val();
	var day = $("#ddlDay").val();
	var year = $("#ddlYear").val();

	// Check to make sure the required validator isn't going to fire
	if (month != "-1" && day != "-1" && year != "-1") {
		var test = new Date(year, month - 1, day);
		if ((test.getMonth() + 1 != month) || (test.getDate() != day) || (test.getFullYear() != year)) {
			args.IsValid = false;
		}
	}
}

joinDealerSelect_docready = function () {
	setLinkButtonClickProperty(".joinButton");
	$("#content_ctlDealerSearch_txtDealerSearchName").focus();

	// If the email is changed, send focus back to the dealer name search field.
	if ($("#registeringEmailView") != null) {
		$("#registeringEmailView").bind("emailChange", function (e) {
			$("#content_ctlDealerSearch_txtDealerSearchName").focus();
		});
	}
}

joinDealerConfirm_docready = function () {
	setLinkButtonClickProperty(".joinButton");

	// If the email is changed, update the email address in the details to be confirmed.
	if ($("#registeringEmailView") != null) {
		$("#registeringEmailView").bind("emailChange", function (e) {
			$("#confirmEmailAddress").text($("#registeringEmailLiteral").text());
		});
	}
}

// This function provides a click property for browsers that do not define it, e.g. Firefox.  This enables
// LinkButtons to be set as DefaultButtons in asp:Panel controls.
setLinkButtonClickProperty = function (sel) {
	$(sel).each(function () {
		if (this && typeof (this.click == 'undefined')) {
			this.click = function () {
				var result = true;
				if (this.onclick) result = this.onclick();
				if (typeof (result) == 'undefined' || result) {
					eval(this.href);
				}
			}
		}
	});
}

// Provide Ajax functionality for professional registration status usercontrol
professionalRegistrationStatus_docready = function () {
	$("#changeRegisteringEmail").bind("click", function () {
		$("#registeringEmailView").hide();
		$("#registeringEmailEdit .joinValidator").hide();
		$("#registeringEmailEdit").show();
		return false;
	});

	$("#txtRegisteringEmail").bind("keypress", function (event) {
		var keycode = (event.keyCode ? event.keyCode : event.which);
		if (keycode == "13") {
			return $("#applyChangeRegisteringEmail").click();
		}
	});

	$("#applyChangeRegisteringEmail").bind("click", function () {
		var entered = $.trim($("#txtRegisteringEmail").val()).toLowerCase();
		var current = $("#registeringEmailLiteral").text().toLowerCase();

		if (entered != "" && entered != current) {
			$.getJSON("/handlers/ProRegEmailChange.ashx", { e: entered }, function (data, textStatus, jqXHR) {
				$("#registeringEmailEdit .joinValidator").hide();
				if (data.invalid == "1") {
					$("#registeringEmailEdit #invalidEmailMessage").show();
				}
				else if (data.inuse == "1") {
					$("#registeringEmailEdit #alreadyUsedEmailMessage").show();
				}
				else {
					$("#registeringEmailLiteral").text(entered);
					$("#registeringEmailEdit").hide();
					$("#registeringEmailView").show();

					// Trigger a custom event indicating that the registration email address has changed
					$("#registeringEmailView").trigger("emailChange");
				}
			});
		}
		else {
			$("#registeringEmailEdit").hide();
			$("#registeringEmailView").show();
			$("#txtRegisteringEmail").val($("#registeringEmailLiteral").text());
		}

		return false;
	});

	$("#cancelChangeRegisteringEmail").bind("click", function () {
		$("#registeringEmailEdit").hide();
		$("#registeringEmailView").show();
		$("#txtRegisteringEmail").val($("#registeringEmailLiteral").text());
		return false;
	});
}

setupTextboxDefault = function (sel, defaultText) {
	$(sel).bind("focus", function () {
		if ($(this).val() == defaultText) {
			$(this).val("");
			$(this).removeClass("unfocused");
		}
	}).bind("blur", function () {
		if ($.trim($(this).val()) == "") {
			$(this).val(defaultText);
			$(this).addClass("unfocused");
		}
	});
}
